@crewlethq/ui 0.65.0 → 0.66.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 +8 -0
- package/dist/AppShell/index.js +1 -1
- package/dist/{AppShell-LZQA3XU4.css → AppShell-2IBUS4TH.css} +6 -1
- package/dist/ArtifactCard/index.js +3 -3
- package/dist/AuthLayout/index.js +2 -2
- package/dist/Card/index.js +1 -1
- package/dist/ChatThread/ChatThread.d.ts +9 -0
- package/dist/ChatThread/index.js +1 -1
- package/dist/{ChatThread-FGXVDLI2.css → ChatThread-2KO3FZKQ.css} +12 -9
- package/dist/CommentThread/index.js +2 -2
- package/dist/DataView/index.js +2 -2
- package/dist/DatasetSource/index.js +2 -2
- package/dist/DeepWorkCard/index.js +3 -3
- package/dist/EditingStatus/index.js +2 -2
- package/dist/EntityList/index.js +3 -3
- package/dist/FolderTile/index.js +2 -2
- package/dist/InlineEditor/index.js +3 -3
- package/dist/OpenInAppCard/index.js +3 -3
- package/dist/ProposalCard/ProposalCard.d.ts +58 -1
- package/dist/ProposalCard/index.d.ts +2 -2
- package/dist/ProposalCard/index.js +10 -3
- package/dist/{ProposalCard-VTTCDXYK.css → ProposalCard-SF332W4E.css} +22 -0
- package/dist/RefusalCard/index.js +3 -3
- package/dist/RelatedRow/index.js +2 -2
- package/dist/RelativeTime/index.js +1 -1
- package/dist/ResultTableCard/index.js +3 -3
- package/dist/SetupWizard/index.js +2 -2
- package/dist/StatusCard/StatusCard.d.ts +10 -3
- package/dist/StatusCard/index.js +2 -2
- package/dist/{StatusCard-FCJN7SXJ.css → StatusCard-72STCSWY.css} +6 -6
- package/dist/TableCells/index.js +2 -2
- package/dist/VersionTimeline/index.js +2 -2
- package/dist/WidgetFrame/index.js +2 -2
- package/dist/{chunk-4WKOLL7C.js → chunk-2AQMXGWA.js} +64 -7
- package/dist/{chunk-N7PXGOZP.js → chunk-3EETQFAM.js} +2 -2
- package/dist/{chunk-7XKDPTZ5.js → chunk-4AUTALJA.js} +5 -6
- package/dist/{chunk-ZFN4IBVC.js → chunk-5K7GGQNX.js} +1 -1
- package/dist/{chunk-ISBKJOLI.js → chunk-7IW3P6FH.js} +1 -1
- package/dist/{chunk-RPX3WICJ.js → chunk-7QTJO3PV.js} +1 -1
- package/dist/{chunk-OGRMOWMO.js → chunk-CNEHFH2A.js} +1 -1
- package/dist/{chunk-F2IYVVA3.js → chunk-D2ZXIQ23.js} +31 -4
- package/dist/{chunk-L6NG7CUA.js → chunk-EJNJMHQG.js} +1 -1
- package/dist/{chunk-E55DKVY7.js → chunk-GJ7VIQWL.js} +1 -1
- package/dist/{chunk-NWTHGZBH.js → chunk-GNDKUSCG.js} +1 -1
- package/dist/{chunk-XGBGEI6V.js → chunk-J5BIKMQY.js} +1 -1
- package/dist/{chunk-G4234OIG.js → chunk-NTQPJJAN.js} +4 -4
- package/dist/{chunk-VVOFJFRT.js → chunk-QBWNGNF7.js} +1 -1
- package/dist/{chunk-VRG2ZXNK.js → chunk-R6K62EXV.js} +1 -1
- package/dist/{chunk-YBKZJBKM.js → chunk-RQHN4J5P.js} +1 -1
- package/dist/{chunk-4EDSEX7U.js → chunk-S5QJZOPL.js} +1 -1
- package/dist/{chunk-DKJJ434E.js → chunk-UBJ32EO2.js} +1 -1
- package/dist/{chunk-RHL4OMQ3.js → chunk-UWOYDHVW.js} +1 -1
- package/dist/{chunk-B76OKJMX.js → chunk-VLGGLLKH.js} +1 -1
- package/dist/{chunk-JAFWGVX2.js → chunk-WKKWF277.js} +1 -1
- package/dist/{chunk-SRSE7FGL.js → chunk-WPMZKZUH.js} +1 -1
- package/dist/{chunk-6MTJWQ3V.js → chunk-WTXCK46H.js} +1 -1
- package/dist/generated/index.js +39 -39
- package/dist/index.js +39 -39
- package/dist/styles.css +50 -20
- package/package.json +3 -3
- package/dist/{chunk-R2YHKVWN.js → chunk-SBHAKX2T.js} +1 -1
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { RefusalStrip, ReceiptStrip } from './chunk-M25IV5MH.js';
|
|
2
|
-
import { StatusCard } from './chunk-
|
|
2
|
+
import { StatusCard } from './chunk-NTQPJJAN.js';
|
|
3
3
|
import { ChangeList } from './chunk-WQRSZMN4.js';
|
|
4
|
+
import { Checkbox } from './chunk-PBCNINMB.js';
|
|
5
|
+
import { Disclosure } from './chunk-222VILSP.js';
|
|
4
6
|
import { Button } from './chunk-7QTPJDRF.js';
|
|
5
7
|
import { Spinner } from './chunk-XSPCITPN.js';
|
|
6
8
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
7
9
|
import './VisuallyHidden-AOEXU5EB.css';
|
|
8
|
-
import './ProposalCard-
|
|
9
|
-
import { useId, useRef, useLayoutEffect } from 'react';
|
|
10
|
+
import './ProposalCard-SF332W4E.css';
|
|
11
|
+
import { useId, useRef, useLayoutEffect, useState, useEffect } from 'react';
|
|
10
12
|
import { RefreshCwGlyph, LockGlyph, BanGlyph, ClockGlyph, CircleAlertGlyph, CircleCheckGlyph } from '@crewlethq/icons/glyphs';
|
|
11
13
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
12
14
|
|
|
@@ -21,6 +23,7 @@ var PROPOSAL_STATES = [
|
|
|
21
23
|
"failed"
|
|
22
24
|
];
|
|
23
25
|
var PROPOSAL_FAILURE_OUTCOMES = ["unchanged", "unknown"];
|
|
26
|
+
var PROPOSAL_TONES = ["default", "danger"];
|
|
24
27
|
var PROPOSAL_CARD_LABELS = {
|
|
25
28
|
needsApproval: "Needs your approval",
|
|
26
29
|
needsSignIn: "Needs sign-in",
|
|
@@ -48,9 +51,12 @@ var PROPOSAL_CARD_LABELS = {
|
|
|
48
51
|
staleNotice: "What this would change moved after it was prepared, so it was not applied. Nothing changed.",
|
|
49
52
|
nothingChanged: "Nothing changed.",
|
|
50
53
|
unknownNotice: "Could not confirm whether this was applied. It may have landed.",
|
|
51
|
-
busy: "The approved change is being carried out"
|
|
54
|
+
busy: "The approved change is being carried out",
|
|
55
|
+
confirmationNeeded: "Check the confirmation above first",
|
|
56
|
+
details: "Technical details"
|
|
52
57
|
};
|
|
53
58
|
var SETTLED = /* @__PURE__ */ new Set(["applied", "declined", "expired", "stale", "failed"]);
|
|
59
|
+
var ARMING_MS = 500;
|
|
54
60
|
function statusOf(state, scope, outcome, labels) {
|
|
55
61
|
switch (state) {
|
|
56
62
|
case "pending":
|
|
@@ -90,6 +96,9 @@ function ProposalCard({
|
|
|
90
96
|
changes,
|
|
91
97
|
changesHeading,
|
|
92
98
|
note,
|
|
99
|
+
details,
|
|
100
|
+
tone = "default",
|
|
101
|
+
confirmation,
|
|
93
102
|
approveLabel,
|
|
94
103
|
onApprove,
|
|
95
104
|
onDecline,
|
|
@@ -132,6 +141,23 @@ function ProposalCard({
|
|
|
132
141
|
const deciding = state === "pending" || state === "stepup";
|
|
133
142
|
const blocked = deciding && approveBlocked ? approveBlocked : void 0;
|
|
134
143
|
const refusal = deciding ? decisionRefusal : void 0;
|
|
144
|
+
const danger = tone === "danger" && !settled;
|
|
145
|
+
const identity = `${title}\0${approveLabel}`;
|
|
146
|
+
const [tickedFor, setTickedFor] = useState(void 0);
|
|
147
|
+
if (settled && tickedFor !== void 0) setTickedFor(void 0);
|
|
148
|
+
const unconfirmed = deciding && confirmation !== void 0 && tickedFor !== identity ? labels.confirmationNeeded : void 0;
|
|
149
|
+
const armKey = deciding ? `${state}\0${identity}` : void 0;
|
|
150
|
+
const [arm, setArm] = useState({ key: armKey, armed: false });
|
|
151
|
+
if (arm.key !== armKey) setArm({ key: armKey, armed: false });
|
|
152
|
+
useEffect(() => {
|
|
153
|
+
if (armKey === void 0) return;
|
|
154
|
+
const timer = setTimeout(
|
|
155
|
+
() => setArm((current) => current.key === armKey ? { key: armKey, armed: true } : current),
|
|
156
|
+
ARMING_MS
|
|
157
|
+
);
|
|
158
|
+
return () => clearTimeout(timer);
|
|
159
|
+
}, [armKey]);
|
|
160
|
+
const arming = armKey !== void 0 && !(arm.key === armKey && arm.armed);
|
|
135
161
|
const decision = deciding || state === "applying" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
136
162
|
/* @__PURE__ */ jsx(
|
|
137
163
|
"div",
|
|
@@ -142,6 +168,18 @@ function ProposalCard({
|
|
|
142
168
|
}
|
|
143
169
|
),
|
|
144
170
|
blocked === void 0 ? null : /* @__PURE__ */ jsx("p", { className: "crewlet-proposal-card__blocked", "aria-hidden": "true", children: blocked }),
|
|
171
|
+
confirmation === void 0 ? null : /* @__PURE__ */ jsx(
|
|
172
|
+
Checkbox,
|
|
173
|
+
{
|
|
174
|
+
className: "crewlet-proposal-card__confirmation",
|
|
175
|
+
size: "sm",
|
|
176
|
+
tone: danger ? "danger" : "default",
|
|
177
|
+
label: confirmation.label,
|
|
178
|
+
checked: tickedFor === identity,
|
|
179
|
+
disabled: state === "applying",
|
|
180
|
+
onCheckedChange: (checked) => setTickedFor(checked ? identity : void 0)
|
|
181
|
+
}
|
|
182
|
+
),
|
|
145
183
|
/* @__PURE__ */ jsx(
|
|
146
184
|
Button,
|
|
147
185
|
{
|
|
@@ -151,7 +189,18 @@ function ProposalCard({
|
|
|
151
189
|
children: labels.decline
|
|
152
190
|
}
|
|
153
191
|
),
|
|
154
|
-
/* @__PURE__ */ jsx(
|
|
192
|
+
/* @__PURE__ */ jsx(
|
|
193
|
+
Button,
|
|
194
|
+
{
|
|
195
|
+
variant: danger ? "danger" : "primary",
|
|
196
|
+
className: "crewlet-proposal-card__approve",
|
|
197
|
+
loading: state === "applying",
|
|
198
|
+
disabledReason: blocked ?? unconfirmed,
|
|
199
|
+
"data-arming": arming || void 0,
|
|
200
|
+
onClick: onApprove,
|
|
201
|
+
children: state === "stepup" ? labels.confirmIdentity : approveLabel
|
|
202
|
+
}
|
|
203
|
+
)
|
|
155
204
|
] }) : void 0;
|
|
156
205
|
const again = (state === "expired" || state === "stale") && onPrepareAgain ? /* @__PURE__ */ jsx(Button, { variant: "secondary", size: "small", leadingIcon: /* @__PURE__ */ jsx(RefreshCwGlyph, {}), onClick: onPrepareAgain, children: labels.prepareAgain }) : void 0;
|
|
157
206
|
const strip = state === "stepup" ? /* @__PURE__ */ jsx(ReceiptStrip, { tone: "neutral", icon: /* @__PURE__ */ jsx(LockGlyph, { size: "md" }), children: notice ?? labels.stepUpNotice }) : state === "applied" && receipt !== void 0 ? /* @__PURE__ */ jsx(ReceiptStrip, { ...landing, tone: "success", children: receipt }) : state === "declined" ? /* @__PURE__ */ jsx(ReceiptStrip, { ...landing, tone: "neutral", icon: /* @__PURE__ */ jsx(BanGlyph, { size: "md" }), children: notice ?? labels.declinedNotice }) : state === "expired" ? /* @__PURE__ */ jsx(ReceiptStrip, { ...landing, tone: "neutral", icon: /* @__PURE__ */ jsx(ClockGlyph, { size: "md" }), children: notice ?? labels.expiredNotice }) : state === "stale" ? /* @__PURE__ */ jsx(ReceiptStrip, { ...landing, tone: "neutral", icon: /* @__PURE__ */ jsx(ClockGlyph, { size: "md" }), children: notice ?? labels.staleNotice }) : state === "failed" ? /* @__PURE__ */ jsx(
|
|
@@ -182,8 +231,15 @@ function ProposalCard({
|
|
|
182
231
|
strip,
|
|
183
232
|
actions: decision ?? again,
|
|
184
233
|
actionsAlign: decision ? "end" : "start",
|
|
185
|
-
|
|
234
|
+
rail: danger ? "danger" : void 0,
|
|
235
|
+
className: cx(
|
|
236
|
+
"crewlet-proposal-card",
|
|
237
|
+
`crewlet-proposal-card--${state}`,
|
|
238
|
+
danger && "crewlet-proposal-card--danger",
|
|
239
|
+
className
|
|
240
|
+
),
|
|
186
241
|
"data-state": state,
|
|
242
|
+
"data-tone": danger ? "danger" : void 0,
|
|
187
243
|
"data-outcome": state === "failed" ? failureOutcome : void 0,
|
|
188
244
|
children: [
|
|
189
245
|
summary === void 0 || summary === null ? null : /* @__PURE__ */ jsx("p", { className: "crewlet-proposal-card__summary", children: summary }),
|
|
@@ -197,10 +253,11 @@ function ProposalCard({
|
|
|
197
253
|
diffLabels
|
|
198
254
|
}
|
|
199
255
|
),
|
|
256
|
+
details === void 0 || details === null ? null : /* @__PURE__ */ jsx(Disclosure, { className: "crewlet-proposal-card__details", title: labels.details, size: "compact", lazy: true, children: details }),
|
|
200
257
|
note === void 0 || note === null ? null : /* @__PURE__ */ jsx("p", { className: "crewlet-proposal-card__note", children: note })
|
|
201
258
|
]
|
|
202
259
|
}
|
|
203
260
|
);
|
|
204
261
|
}
|
|
205
262
|
|
|
206
|
-
export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard };
|
|
263
|
+
export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, PROPOSAL_TONES, ProposalCard };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Skeleton } from './chunk-BRLZXYPA.js';
|
|
2
2
|
import { PrincipalAvatar } from './chunk-CI3VPIJN.js';
|
|
3
|
-
import { RelativeTime } from './chunk-
|
|
4
|
-
import { Card } from './chunk-
|
|
3
|
+
import { RelativeTime } from './chunk-EJNJMHQG.js';
|
|
4
|
+
import { Card } from './chunk-4AUTALJA.js';
|
|
5
5
|
import { AvatarStack } from './chunk-BKP6XCAJ.js';
|
|
6
6
|
import { ArtifactKindGround } from './chunk-NHLNHH4J.js';
|
|
7
7
|
import { Checkbox } from './chunk-PBCNINMB.js';
|
|
@@ -121,12 +121,11 @@ var CardRoot = ({
|
|
|
121
121
|
}),
|
|
122
122
|
[slots.header, chromeNode, claimChrome, releaseChrome]
|
|
123
123
|
);
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
titleId,
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
};
|
|
124
|
+
const registerTitle = useCallback(() => setHasTitle(true), []);
|
|
125
|
+
const context = useMemo(
|
|
126
|
+
() => ({ titleLevel: level, titleId, registerTitle, hostChrome }),
|
|
127
|
+
[level, titleId, registerTitle, hostChrome]
|
|
128
|
+
);
|
|
130
129
|
const body = /* @__PURE__ */ jsx(CardContext.Provider, { value: context, children: /* @__PURE__ */ jsx(CardHeaderSlotContext.Provider, { value: headerSlot, children: /* @__PURE__ */ jsx(HeadingLevelProvider, { level: nextHeadingLevel(level), children: content }) }) });
|
|
131
130
|
if (asChild) {
|
|
132
131
|
const child = Children.only(children);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { safeHref } from './chunk-BAKPMH3S.js';
|
|
2
2
|
import { IconTile } from './chunk-3LI4TRUR.js';
|
|
3
3
|
import { ReceiptStrip } from './chunk-M25IV5MH.js';
|
|
4
|
-
import { StatusCard } from './chunk-
|
|
4
|
+
import { StatusCard } from './chunk-NTQPJJAN.js';
|
|
5
5
|
import { ButtonLink, Button } from './chunk-7QTPJDRF.js';
|
|
6
6
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
7
7
|
import './OpenInAppCard-CKHCK7DO.css';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Table } from './chunk-5DJMFRSZ.js';
|
|
2
2
|
import { DownloadButton } from './chunk-NSCYGUDG.js';
|
|
3
|
-
import { StatusCard } from './chunk-
|
|
3
|
+
import { StatusCard } from './chunk-NTQPJJAN.js';
|
|
4
4
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
5
5
|
import './ResultTableCard-AP355LQM.css';
|
|
6
6
|
import { useState } from 'react';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Text } from './chunk-QP2P6GDQ.js';
|
|
2
2
|
import { Inline, Stack, Spacer } from './chunk-ZAC7SKUN.js';
|
|
3
|
-
import { Card } from './chunk-
|
|
3
|
+
import { Card } from './chunk-4AUTALJA.js';
|
|
4
4
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
5
5
|
import './RelatedRow-IZ22XCLP.css';
|
|
6
6
|
import { ChevronRightGlyph } from '@crewlethq/icons/glyphs';
|
|
@@ -2,8 +2,8 @@ import { useMediaMatch } from './chunk-RTPQDNW3.js';
|
|
|
2
2
|
import { Button } from './chunk-7QTPJDRF.js';
|
|
3
3
|
import { VisuallyHidden } from './chunk-UT6CW3C7.js';
|
|
4
4
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
5
|
-
import './ChatThread-
|
|
6
|
-
import { forwardRef, useRef, Children, useState, useCallback,
|
|
5
|
+
import './ChatThread-2KO3FZKQ.css';
|
|
6
|
+
import { forwardRef, useRef, Children, useState, useCallback, useEffect, useLayoutEffect, useImperativeHandle } from 'react';
|
|
7
7
|
import { ArrowDownGlyph } from '@crewlethq/icons/glyphs';
|
|
8
8
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
9
9
|
|
|
@@ -19,6 +19,7 @@ var ChatThread = forwardRef(function ChatThread2({ label, busy = false, follow =
|
|
|
19
19
|
const reduced = useMediaMatch("(prefers-reduced-motion: reduce)");
|
|
20
20
|
const count = Children.toArray(children).length;
|
|
21
21
|
const atEnd = useRef(true);
|
|
22
|
+
const jumping = useRef(false);
|
|
22
23
|
const [detachedAt, setDetachedAt] = useState(null);
|
|
23
24
|
const countRef = useRef(count);
|
|
24
25
|
countRef.current = count;
|
|
@@ -27,8 +28,13 @@ var ChatThread = forwardRef(function ChatThread2({ label, busy = false, follow =
|
|
|
27
28
|
const el = scroller.current;
|
|
28
29
|
if (!el) return;
|
|
29
30
|
const top = el.scrollHeight - el.clientHeight;
|
|
30
|
-
if (smooth && !reduced && typeof el.scrollTo === "function")
|
|
31
|
-
|
|
31
|
+
if (smooth && !reduced && typeof el.scrollTo === "function") {
|
|
32
|
+
jumping.current = true;
|
|
33
|
+
el.scrollTo({ top, behavior: "smooth" });
|
|
34
|
+
} else {
|
|
35
|
+
jumping.current = false;
|
|
36
|
+
el.scrollTop = top;
|
|
37
|
+
}
|
|
32
38
|
atEnd.current = true;
|
|
33
39
|
setDetachedAt(null);
|
|
34
40
|
},
|
|
@@ -38,9 +44,30 @@ var ChatThread = forwardRef(function ChatThread2({ label, busy = false, follow =
|
|
|
38
44
|
const el = scroller.current;
|
|
39
45
|
if (!el) return;
|
|
40
46
|
const end = el.scrollHeight - el.scrollTop - el.clientHeight <= CHAT_THREAD_FOLLOW_WITHIN;
|
|
47
|
+
if (jumping.current) {
|
|
48
|
+
if (end) jumping.current = false;
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
41
51
|
atEnd.current = end;
|
|
42
52
|
setDetachedAt((prior) => end ? null : prior ?? countRef.current);
|
|
43
53
|
}, []);
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
const el = scroller.current;
|
|
56
|
+
if (!el) return;
|
|
57
|
+
const interrupt = () => {
|
|
58
|
+
jumping.current = false;
|
|
59
|
+
};
|
|
60
|
+
const settled = () => {
|
|
61
|
+
if (jumping.current) toEnd(false);
|
|
62
|
+
};
|
|
63
|
+
const intents = ["wheel", "touchstart", "keydown"];
|
|
64
|
+
el.addEventListener("scrollend", settled);
|
|
65
|
+
for (const intent of intents) el.addEventListener(intent, interrupt, { passive: true });
|
|
66
|
+
return () => {
|
|
67
|
+
el.removeEventListener("scrollend", settled);
|
|
68
|
+
for (const intent of intents) el.removeEventListener(intent, interrupt);
|
|
69
|
+
};
|
|
70
|
+
}, [toEnd]);
|
|
44
71
|
useLayoutEffect(() => {
|
|
45
72
|
if (follow && atEnd.current) toEnd(false);
|
|
46
73
|
}, [children, follow, toEnd]);
|
|
@@ -74,8 +74,8 @@ function formatRelative(value, now2) {
|
|
|
74
74
|
const at = toInstant(value);
|
|
75
75
|
if (at === null) return null;
|
|
76
76
|
const seconds = Math.round((now2 - at) / SECOND);
|
|
77
|
+
if (Math.abs(seconds) < 5) return "just now";
|
|
77
78
|
if (seconds < 0) return formatUntil(value, now2);
|
|
78
|
-
if (seconds < 5) return "just now";
|
|
79
79
|
if (seconds < MINUTE) return `${seconds}s ago`;
|
|
80
80
|
const minutes = Math.floor(seconds / MINUTE);
|
|
81
81
|
if (minutes < MINUTE) return `${minutes}m ago`;
|
|
@@ -8,7 +8,7 @@ import { returnFocus } from './chunk-NUZHC6MM.js';
|
|
|
8
8
|
import { VisuallyHidden } from './chunk-UT6CW3C7.js';
|
|
9
9
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
10
10
|
import './HitArea-QUOS6ZDJ.css';
|
|
11
|
-
import './AppShell-
|
|
11
|
+
import './AppShell-2IBUS4TH.css';
|
|
12
12
|
import './ResizeHandle-2UNSZ4ZQ.css';
|
|
13
13
|
import { createContext, forwardRef, useContext, useSyncExternalStore, useCallback, useId, useState, useRef, useEffect, useLayoutEffect } from 'react';
|
|
14
14
|
import { breakpoint } from '@crewlethq/tokens';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Link } from './chunk-QF5UNP4T.js';
|
|
2
2
|
import { Tag } from './chunk-I5OIKDX2.js';
|
|
3
|
-
import { RelativeTime } from './chunk-
|
|
3
|
+
import { RelativeTime } from './chunk-EJNJMHQG.js';
|
|
4
4
|
import { EmptyValue } from './chunk-RE3FBGQQ.js';
|
|
5
5
|
import { Avatar } from './chunk-PZKHBB7D.js';
|
|
6
6
|
import { VisuallyHidden } from './chunk-UT6CW3C7.js';
|
|
@@ -4,7 +4,7 @@ import { DateTimePicker } from './chunk-PX54PALQ.js';
|
|
|
4
4
|
import { useListbox, useOptionKeys } from './chunk-7KHM2FZH.js';
|
|
5
5
|
import { Toolbar } from './chunk-NR4CPM4T.js';
|
|
6
6
|
import { Popover } from './chunk-KHJIEPZV.js';
|
|
7
|
-
import { RelativeTime } from './chunk-
|
|
7
|
+
import { RelativeTime } from './chunk-EJNJMHQG.js';
|
|
8
8
|
import { Kbd } from './chunk-ANTAQAR4.js';
|
|
9
9
|
import { Input } from './chunk-ETSF7SU6.js';
|
|
10
10
|
import { Count } from './chunk-MLDTLZAO.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Tag } from './chunk-I5OIKDX2.js';
|
|
2
|
-
import { Card } from './chunk-
|
|
2
|
+
import { Card } from './chunk-4AUTALJA.js';
|
|
3
3
|
import { VisuallyHidden } from './chunk-UT6CW3C7.js';
|
|
4
4
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
5
|
-
import './StatusCard-
|
|
5
|
+
import './StatusCard-72STCSWY.css';
|
|
6
6
|
import { useId, useState } from 'react';
|
|
7
7
|
import { ChevronDownGlyph } from '@crewlethq/icons/glyphs';
|
|
8
8
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -41,7 +41,7 @@ function StatusCard({
|
|
|
41
41
|
const hasActions = !(actions === void 0 || actions === null || actions === false);
|
|
42
42
|
const hasSummary = !(summary === void 0 || summary === null || summary === false || summary === "");
|
|
43
43
|
const tag = status ? /* @__PURE__ */ jsx(Tag, { id: statusId, size: "sm", variant: status.tone, leadingIcon: status.icon, children: status.label }) : null;
|
|
44
|
-
const headActions =
|
|
44
|
+
const headActions = collapsible && hasActions ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
45
45
|
tag,
|
|
46
46
|
/* @__PURE__ */ jsx("span", { className: "crewlet-status-card__head-actions", children: actions })
|
|
47
47
|
] }) : tag ?? void 0;
|
|
@@ -109,7 +109,7 @@ function StatusCard({
|
|
|
109
109
|
}
|
|
110
110
|
) : null,
|
|
111
111
|
folded || strip === void 0 || strip === null || strip === false ? null : /* @__PURE__ */ jsx(Card.Footer, { padding: "none", className: "crewlet-status-card__strip", children: strip }),
|
|
112
|
-
|
|
112
|
+
collapsible || !hasActions ? null : /* @__PURE__ */ jsx(Card.Footer, { className: cx("crewlet-status-card__actions", `crewlet-status-card__actions--${actionsAlign}`), children: actions })
|
|
113
113
|
]
|
|
114
114
|
}
|
|
115
115
|
);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Tag } from './chunk-I5OIKDX2.js';
|
|
2
|
-
import { RelativeTime } from './chunk-
|
|
2
|
+
import { RelativeTime } from './chunk-EJNJMHQG.js';
|
|
3
3
|
import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
|
|
4
4
|
import { VisuallyHidden } from './chunk-UT6CW3C7.js';
|
|
5
5
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Skeleton } from './chunk-BRLZXYPA.js';
|
|
2
|
-
import { RelativeTime } from './chunk-
|
|
2
|
+
import { RelativeTime } from './chunk-EJNJMHQG.js';
|
|
3
3
|
import { VisuallyHidden } from './chunk-UT6CW3C7.js';
|
|
4
4
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
5
5
|
import './WidgetFrame-WXYFYAAH.css';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PrincipalAvatar } from './chunk-CI3VPIJN.js';
|
|
2
|
-
import { toInstant, RelativeTime, formatExact, toISO } from './chunk-
|
|
2
|
+
import { toInstant, RelativeTime, formatExact, toISO } from './chunk-EJNJMHQG.js';
|
|
3
3
|
import { Document } from './chunk-BXCL6P5Z.js';
|
|
4
4
|
import { Composer } from './chunk-5OFRDX66.js';
|
|
5
5
|
import { Count } from './chunk-MLDTLZAO.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { StepList } from './chunk-HJBHP66O.js';
|
|
2
2
|
import { Meter } from './chunk-RQFRRPV6.js';
|
|
3
3
|
import { ReceiptStrip } from './chunk-M25IV5MH.js';
|
|
4
|
-
import { StatusCard } from './chunk-
|
|
4
|
+
import { StatusCard } from './chunk-NTQPJJAN.js';
|
|
5
5
|
import { Disclosure } from './chunk-222VILSP.js';
|
|
6
6
|
import { Spinner } from './chunk-XSPCITPN.js';
|
|
7
7
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { StatusDot } from './chunk-WIATRXEJ.js';
|
|
2
|
-
import { toISO, useNow, formatRelative } from './chunk-
|
|
2
|
+
import { toISO, useNow, formatRelative } from './chunk-EJNJMHQG.js';
|
|
3
3
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
4
4
|
import './EditingStatus-TMGT265J.css';
|
|
5
5
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PrincipalAvatar } from './chunk-CI3VPIJN.js';
|
|
2
|
-
import { RelativeTime } from './chunk-
|
|
2
|
+
import { RelativeTime } from './chunk-EJNJMHQG.js';
|
|
3
3
|
import { Timeline } from './chunk-4MJN2KN6.js';
|
|
4
4
|
import { Button } from './chunk-7QTPJDRF.js';
|
|
5
5
|
import { cx } from './chunk-ODEQTPFM.js';
|