@crewlethq/ui 0.65.1 → 0.67.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.
Files changed (46) hide show
  1. package/README.md +16 -0
  2. package/dist/AppShell/index.js +1 -1
  3. package/dist/{AppShell-LZQA3XU4.css → AppShell-2IBUS4TH.css} +6 -1
  4. package/dist/ArtifactCard/index.js +3 -3
  5. package/dist/ChatThread/ChatThread.d.ts +9 -0
  6. package/dist/ChatThread/index.js +1 -1
  7. package/dist/{ChatThread-FGXVDLI2.css → ChatThread-2KO3FZKQ.css} +12 -9
  8. package/dist/CommentThread/index.js +2 -2
  9. package/dist/DataView/index.js +2 -2
  10. package/dist/DatasetSource/index.js +2 -2
  11. package/dist/EditingStatus/index.js +2 -2
  12. package/dist/InlineEditor/index.js +3 -3
  13. package/dist/ProposalCard/ProposalCard.d.ts +58 -1
  14. package/dist/ProposalCard/index.d.ts +2 -2
  15. package/dist/ProposalCard/index.js +8 -1
  16. package/dist/{ProposalCard-VTTCDXYK.css → ProposalCard-SF332W4E.css} +22 -0
  17. package/dist/RelativeTime/index.js +1 -1
  18. package/dist/RichEditor/index.js +1 -1
  19. package/dist/StatusCard/StatusCard.d.ts +10 -3
  20. package/dist/TableCells/index.js +2 -2
  21. package/dist/ThinkingIndicator/ThinkingIndicator.d.ts +9 -6
  22. package/dist/ThinkingIndicator/index.js +1 -1
  23. package/dist/ThinkingIndicator-JVF52N7L.css +193 -0
  24. package/dist/VersionTimeline/index.js +2 -2
  25. package/dist/WidgetFrame/index.js +2 -2
  26. package/dist/{chunk-FZUDUNCK.js → chunk-2AQMXGWA.js} +63 -6
  27. package/dist/{chunk-UBIPDEFV.js → chunk-3EETQFAM.js} +2 -2
  28. package/dist/{chunk-DS5NBENV.js → chunk-BVNFNFA6.js} +1 -1
  29. package/dist/{chunk-F2IYVVA3.js → chunk-D2ZXIQ23.js} +31 -4
  30. package/dist/{chunk-L6NG7CUA.js → chunk-EJNJMHQG.js} +1 -1
  31. package/dist/{chunk-E55DKVY7.js → chunk-GJ7VIQWL.js} +1 -1
  32. package/dist/{chunk-NWTHGZBH.js → chunk-GNDKUSCG.js} +1 -1
  33. package/dist/{chunk-XGBGEI6V.js → chunk-J5BIKMQY.js} +1 -1
  34. package/dist/{chunk-E2MIUNUU.js → chunk-M73MMEZY.js} +1 -1
  35. package/dist/{chunk-VVOFJFRT.js → chunk-QBWNGNF7.js} +1 -1
  36. package/dist/{chunk-VRG2ZXNK.js → chunk-R6K62EXV.js} +1 -1
  37. package/dist/{chunk-4EDSEX7U.js → chunk-S5QJZOPL.js} +1 -1
  38. package/dist/{chunk-DKJJ434E.js → chunk-UBJ32EO2.js} +1 -1
  39. package/dist/{chunk-B76OKJMX.js → chunk-VLGGLLKH.js} +1 -1
  40. package/dist/{chunk-SRSE7FGL.js → chunk-WPMZKZUH.js} +1 -1
  41. package/dist/generated/index.js +23 -23
  42. package/dist/index.js +23 -23
  43. package/dist/styles.css +130 -29
  44. package/package.json +3 -3
  45. package/dist/ThinkingIndicator-QJMX2TXC.css +0 -122
  46. package/dist/{Editor-NZRUKWB4.js → Editor-URGZOK2S.js} +1 -1
@@ -1,12 +1,14 @@
1
1
  import { RefusalStrip, ReceiptStrip } from './chunk-M25IV5MH.js';
2
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-VTTCDXYK.css';
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(Button, { variant: "primary", loading: state === "applying", disabledReason: blocked, onClick: onApprove, children: state === "stepup" ? labels.confirmIdentity : approveLabel })
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
- className: cx("crewlet-proposal-card", `crewlet-proposal-card--${state}`, className),
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,11 +1,11 @@
1
1
  import { Skeleton } from './chunk-BRLZXYPA.js';
2
2
  import { PrincipalAvatar } from './chunk-CI3VPIJN.js';
3
- import { RelativeTime } from './chunk-L6NG7CUA.js';
3
+ import { RelativeTime } from './chunk-EJNJMHQG.js';
4
4
  import { Card } from './chunk-4AUTALJA.js';
5
5
  import { AvatarStack } from './chunk-BKP6XCAJ.js';
6
6
  import { ArtifactKindGround } from './chunk-NHLNHH4J.js';
7
- import { ArtifactAccessGlyph } from './chunk-DOY3KC6I.js';
8
7
  import { Checkbox } from './chunk-PBCNINMB.js';
8
+ import { ArtifactAccessGlyph } from './chunk-DOY3KC6I.js';
9
9
  import { ArtifactKindGlyph } from './chunk-RSKW25Y5.js';
10
10
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
11
11
  import { cx } from './chunk-ODEQTPFM.js';
@@ -9,7 +9,7 @@ import { jsx } from 'react/jsx-runtime';
9
9
  var engine = null;
10
10
  var loading = null;
11
11
  function loadEngine() {
12
- loading ??= import('./Editor-NZRUKWB4.js').then(
12
+ loading ??= import('./Editor-URGZOK2S.js').then(
13
13
  (module) => {
14
14
  engine = module.Editor;
15
15
  return engine;
@@ -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-FGXVDLI2.css';
6
- import { forwardRef, useRef, Children, useState, useCallback, useLayoutEffect, useEffect, useImperativeHandle } from 'react';
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") el.scrollTo({ top, behavior: "smooth" });
31
- else el.scrollTop = top;
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-LZQA3XU4.css';
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-L6NG7CUA.js';
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-L6NG7CUA.js';
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,6 +1,6 @@
1
1
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
- import './ThinkingIndicator-QJMX2TXC.css';
3
+ import './ThinkingIndicator-JVF52N7L.css';
4
4
  import { ProductMark } from '@crewlethq/icons/product-mark';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
6
6
 
@@ -1,4 +1,4 @@
1
- import { EditingStatus } from './chunk-B76OKJMX.js';
1
+ import { EditingStatus } from './chunk-VLGGLLKH.js';
2
2
  import { Kbd } from './chunk-ANTAQAR4.js';
3
3
  import { Button } from './chunk-7QTPJDRF.js';
4
4
  import { isComposing } from './chunk-H5XTJ7GJ.js';
@@ -1,5 +1,5 @@
1
1
  import { Tag } from './chunk-I5OIKDX2.js';
2
- import { RelativeTime } from './chunk-L6NG7CUA.js';
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-L6NG7CUA.js';
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-L6NG7CUA.js';
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,5 +1,5 @@
1
1
  import { StatusDot } from './chunk-WIATRXEJ.js';
2
- import { toISO, useNow, formatRelative } from './chunk-L6NG7CUA.js';
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-L6NG7CUA.js';
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';
@@ -2,8 +2,8 @@ import '../chunk-TXQNWGUD.js';
2
2
  export { TypeSpecimen } from '../chunk-JKAFEFFC.js';
3
3
  export { REFERENCE_NAME_PATTERN, ValueField, completeReference, isWholeReference, rankReferences, referenceAt, urlSchemeOf } from '../chunk-BWAUL5MB.js';
4
4
  export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from '../chunk-6ID4DVML.js';
5
- export { VersionTimeline } from '../chunk-SRSE7FGL.js';
6
- export { WidgetFrame } from '../chunk-4EDSEX7U.js';
5
+ export { VersionTimeline } from '../chunk-WPMZKZUH.js';
6
+ export { WidgetFrame } from '../chunk-S5QJZOPL.js';
7
7
  export { ElementToPngError, elementToPng, parseCsv, serializeElement, toCsv } from '../chunk-FEJANUZK.js';
8
8
  export { DEFAULT_TIME_WINDOW_LABELS, TIME_WINDOW_SPANS, TimeWindowPicker, describeTimeWindow, isTimeWindowSet, parseTimeWindowDuration, resolveTimeWindow, timeWindowMatchesPreset } from '../chunk-WXLQJUGO.js';
9
9
  export { ToastProvider, Toaster, toasterInsetStyle, useToast } from '../chunk-SZFKGH2W.js';
@@ -13,11 +13,11 @@ export { ThemeSwatch } from '../chunk-3XQUEF5C.js';
13
13
  export { DensitySwitcher, ThemeSwitcher } from '../chunk-7EOUVWGQ.js';
14
14
  export { ThemeToggle } from '../chunk-IPMJGK2Q.js';
15
15
  export { applyStoredPreferences, resolveTheme, useDensityPreference, useSystemTheme, useThemePreference } from '../chunk-Z24ZUSTX.js';
16
- export { ThinkingIndicator } from '../chunk-E2MIUNUU.js';
16
+ export { ThinkingIndicator } from '../chunk-M73MMEZY.js';
17
17
  export { TileGrid } from '../chunk-Q6CQMS6R.js';
18
18
  export { TIME_RANGE_CUSTOM, TIME_RANGE_PICKER_LABELS, TimeRangePicker, timeRangeFieldKey, timeRangeProblem } from '../chunk-PQWNK3N7.js';
19
19
  export { Switcher } from '../chunk-GDDVI4US.js';
20
- export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from '../chunk-NWTHGZBH.js';
20
+ export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from '../chunk-GNDKUSCG.js';
21
21
  export { TagsInput } from '../chunk-HEIOLITO.js';
22
22
  export { StatCard } from '../chunk-G5IZGAWS.js';
23
23
  export { StatGroup } from '../chunk-OUD75UB2.js';
@@ -35,9 +35,9 @@ export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSel
35
35
  export { TagGroup } from '../chunk-UEOEBOBR.js';
36
36
  export { matchesShortcut, useShortcut } from '../chunk-AYHIF6DH.js';
37
37
  import '../chunk-73GUXYYE.js';
38
+ export { SearchTrigger } from '../chunk-ERNT3UTB.js';
38
39
  export { SectionFrame, SectionFrameBody, SectionFrameNav } from '../chunk-G4CGDUCP.js';
39
40
  export { NavGroup, NavItem, SidebarNav } from '../chunk-WCDPFTJZ.js';
40
- export { SearchTrigger } from '../chunk-ERNT3UTB.js';
41
41
  export { SegmentedMeter, segmentedMeterLabel } from '../chunk-4AK52VHB.js';
42
42
  export { Select } from '../chunk-VK45YJLH.js';
43
43
  export { SelectionBar } from '../chunk-WU5JDEEY.js';
@@ -45,16 +45,16 @@ export { SEND_BUTTON_LABELS, SendButton } from '../chunk-T2GC7UAP.js';
45
45
  export { RESULT_TABLE_CARD_LABELS, RESULT_TABLE_COLLAPSED_ROWS, RESULT_TABLE_MAX_ROWS, ResultTableCard } from '../chunk-7QTJO3PV.js';
46
46
  export { Table } from '../chunk-5DJMFRSZ.js';
47
47
  export { ReviewList } from '../chunk-DO4J4TBZ.js';
48
+ export { RichEditor, preloadRichEditor } from '../chunk-BVNFNFA6.js';
49
+ export { RICH_EDITOR_LABELS, richEditorLabels } from '../chunk-CSQTDGTS.js';
48
50
  export { canonicalMarkdown, roundTripMarkdown } from '../chunk-SWD4QBL6.js';
49
51
  import '../chunk-QH6VYJ3X.js';
50
52
  export { RUN_STATES, RunChip } from '../chunk-PIAGTZY3.js';
51
53
  export { FRAME_HELLO_TIMEOUT_MS, FRAME_LOAD_GRACE_MS, SandboxedFrame, SandboxedFrameNotice, SandboxedFramePlaceholder } from '../chunk-OJGI4XJH.js';
52
- export { RichEditor, preloadRichEditor } from '../chunk-DS5NBENV.js';
53
- export { RICH_EDITOR_LABELS, richEditorLabels } from '../chunk-CSQTDGTS.js';
54
54
  export { PropertyList } from '../chunk-HIWPPWNY.js';
55
- export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, ProposalCard } from '../chunk-FZUDUNCK.js';
56
- export { QR_DARK, QR_LIGHT, QR_QUIET_ZONE, QrCode, qrModulePath, qrModules } from '../chunk-Y56FM3K4.js';
55
+ export { PROPOSAL_CARD_LABELS, PROPOSAL_FAILURE_OUTCOMES, PROPOSAL_STATES, PROPOSAL_TONES, ProposalCard } from '../chunk-2AQMXGWA.js';
57
56
  export { Prose } from '../chunk-DVVP27OD.js';
57
+ export { QR_DARK, QR_LIGHT, QR_QUIET_ZONE, QrCode, qrModulePath, qrModules } from '../chunk-Y56FM3K4.js';
58
58
  export { ReadingPane, ReadingPaneByline, ReadingPaneLead, ReadingPaneOutcome, ReadingPaneQuote, ReadingPaneReasoning, ReadingPaneSection, ReadingPaneTitle } from '../chunk-ZAJHGDAW.js';
59
59
  export { REFUSAL_CARD_LABELS, RefusalCard } from '../chunk-RQHN4J5P.js';
60
60
  export { RelatedRow } from '../chunk-CNEHFH2A.js';
@@ -94,7 +94,7 @@ export { ListDetail } from '../chunk-YBC2CYPD.js';
94
94
  export { ListInput, withDraft } from '../chunk-MNTUIAQT.js';
95
95
  export { LIVE_CURSOR_HIDE_MS, LIVE_CURSOR_REST_MS, LiveCursor } from '../chunk-DPNVKWJX.js';
96
96
  export { IndicatorAnchor } from '../chunk-27MJPU7G.js';
97
- export { INLINE_EDITOR_LABELS, InlineEditor } from '../chunk-VVOFJFRT.js';
97
+ export { INLINE_EDITOR_LABELS, InlineEditor } from '../chunk-QBWNGNF7.js';
98
98
  export { LAYERS_LIST_LABELS, LayersList } from '../chunk-VUYNNILP.js';
99
99
  export { IDLE_AFTER_MS, useFullscreen, useIdle } from '../chunk-W5XCNEZC.js';
100
100
  export { Highlight, highlightRanges, highlightTerms } from '../chunk-H6VKCIWV.js';
@@ -104,8 +104,8 @@ export { IconTile } from '../chunk-3LI4TRUR.js';
104
104
  export { ImageUpload } from '../chunk-56IFLQGF.js';
105
105
  export { InboxGroup, InboxList, InboxMore, InboxRow, InboxToggle } from '../chunk-62DBFNOK.js';
106
106
  export { FactList } from '../chunk-CSXJIIO4.js';
107
- export { FileDrop, FilePickButton, droppedFiles, pickedFiles } from '../chunk-2JHGPXYG.js';
108
107
  export { FileList } from '../chunk-5WRWBDML.js';
108
+ export { FileDrop, FilePickButton, droppedFiles, pickedFiles } from '../chunk-2JHGPXYG.js';
109
109
  export { FILTER_CHIP_ATTRIBUTE, FilterChip, FilterChipGroup } from '../chunk-IWZG7NPV.js';
110
110
  export { FindingList } from '../chunk-LSRQ2A6B.js';
111
111
  export { FolderTile, describeFolderContents, folderContentsParts } from '../chunk-WTXCK46H.js';
@@ -114,7 +114,7 @@ export { DEFAULT_FRAME_THEME, EXTERNAL_URL_MAX, FRAME_BRIDGE, FRAME_MESSAGE, FRA
114
114
  export { DENSITY_PREFERENCES, PALETTE_ID, THEME_PREFERENCES, applyDensity, applyPalette, applyTheme, isDensityPreference, isPaletteId, isThemePreference } from '../chunk-ZXXDZJQN.js';
115
115
  export { DownloadButton } from '../chunk-NSCYGUDG.js';
116
116
  export { downloadBlob, downloadText, safeFilename, useDownload } from '../chunk-YNRKVY7X.js';
117
- export { EditingStatus } from '../chunk-B76OKJMX.js';
117
+ export { EditingStatus } from '../chunk-VLGGLLKH.js';
118
118
  export { EntityChip } from '../chunk-OSKJZNBT.js';
119
119
  export { EntityList } from '../chunk-7IW3P6FH.js';
120
120
  export { ErrorBoundary } from '../chunk-ZEPUKRO7.js';
@@ -127,17 +127,17 @@ export { DOC_TABS_EDITOR_LABELS, DocTabsEditor } from '../chunk-CX6QT4CH.js';
127
127
  export { CursorFlag } from '../chunk-MMCYH5LB.js';
128
128
  export { PresenceRing, presenceHueClass } from '../chunk-EFX2YC5T.js';
129
129
  export { ChooserList, ColumnChooser, DataGrid, columnChoicesOf, countDataGridRows, fitGridColumns, parseGridSort, useAnyDataGridDriving, useDataGridDriving } from '../chunk-ELLRZ5XR.js';
130
- export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-XGBGEI6V.js';
130
+ export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-J5BIKMQY.js';
131
131
  export { PageHeader } from '../chunk-FPDIHEM4.js';
132
132
  export { ALL_ITEMS, CopyableCell, DATA_TABLE_LABELS, DataTable, RowActionsMenu } from '../chunk-CFY257ND.js';
133
- export { DATASET_SOURCE_KINDS, DatasetSource, DatasetSourceList } from '../chunk-VRG2ZXNK.js';
133
+ export { DATASET_SOURCE_KINDS, DatasetSource, DatasetSourceList } from '../chunk-R6K62EXV.js';
134
134
  export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-PX54PALQ.js';
135
135
  export { DEEP_WORK_CARD_LABELS, DEEP_WORK_STATES, DEEP_WORK_STATE_LABELS, DeepWorkCard } from '../chunk-UWOYDHVW.js';
136
136
  export { STEP_STATES, STEP_STATE_LABELS, StepList, StepStateMark, Stepper, stepDetailPieces } from '../chunk-HJBHP66O.js';
137
137
  export { DEFAULT_METER_THRESHOLDS, METER_STATES, Meter, meterState, meterStateTone, meterTone, progressTone } from '../chunk-RQFRRPV6.js';
138
138
  export { REFUSAL_STRIP_LABELS, ReceiptStrip, RefusalStrip } from '../chunk-M25IV5MH.js';
139
139
  export { StatusCard } from '../chunk-NTQPJJAN.js';
140
- export { COMMENT_THREAD_LABELS, CommentThread } from '../chunk-DKJJ434E.js';
140
+ export { COMMENT_THREAD_LABELS, CommentThread } from '../chunk-UBJ32EO2.js';
141
141
  export { ConfirmField, confirmMatches } from '../chunk-JVII5264.js';
142
142
  export { InlineCode } from '../chunk-PLL7ZJHY.js';
143
143
  export { CONFLICT_NOTE_LABELS, ConflictNote } from '../chunk-SUJO3AHN.js';
@@ -165,7 +165,7 @@ export { LONGTEXT_MAX_DEFAULT, RATING_MAX_CEILING, RATING_MAX_DEFAULT, SHEET_COL
165
165
  export { PRESENCE_ACTIVITIES, PRESENCE_HUES, PRESENCE_LABELS, assignPresenceHues, collapseSessions, joinNames, presenceLabels, presenceOrder } from '../chunk-Z7JYG5TF.js';
166
166
  import '../chunk-3L5NHASN.js';
167
167
  export { ActivityStrip, BarList, ChartEmpty, ChartTooltip, DATA_COLORS, DATA_COLOR_OTHER, Histogram, Legend, Sparkline, StackedBar, StackedColumns, TimeSeries, dataColor, histogramTicks, niceScale, useChartHover } from '../chunk-YWVT7B6N.js';
168
- export { CHAT_THREAD_FOLLOW_WITHIN, CHAT_THREAD_LABELS, ChatThread } from '../chunk-F2IYVVA3.js';
168
+ export { CHAT_THREAD_FOLLOW_WITHIN, CHAT_THREAD_LABELS, ChatThread } from '../chunk-D2ZXIQ23.js';
169
169
  export { CalendarGrid, compareDays, daysInMonth, sameDay, shiftDay, shiftMonth, today } from '../chunk-EE3DJMSQ.js';
170
170
  export { Callout } from '../chunk-BPCY7ZID.js';
171
171
  export { BOARD_NAME_MIN_CHARS, CANVAS_BOARD_MAX_LIVE, CANVAS_BOARD_MIN_LIVE_WIDTH, CANVAS_BOARD_MIN_ZOOM, CANVAS_NOTE_COLORS, CanvasBoard, TITLE_GLYPH_EM, boardName, boardRoom, liveBoards, titleSize } from '../chunk-JEA5OX54.js';
@@ -184,18 +184,18 @@ export { CHARACTER_PICKER_COLUMNS, CharacterPicker } from '../chunk-SNQRGH4A.js'
184
184
  export { BrandChip } from '../chunk-UH44L7OJ.js';
185
185
  export { BrandLockup } from '../chunk-7KBNFFM3.js';
186
186
  export { BrandSample } from '../chunk-AVMQMY66.js';
187
- export { Breadcrumb } from '../chunk-M52HLPOG.js';
188
- export { KeyChip } from '../chunk-HBDA76EZ.js';
189
187
  export { BrandScope, brandScopeInputs } from '../chunk-X7WEE3EK.js';
190
188
  import '../chunk-5SGHW42B.js';
191
189
  import '../chunk-7W3LYIOC.js';
190
+ export { Breadcrumb } from '../chunk-M52HLPOG.js';
191
+ export { KeyChip } from '../chunk-HBDA76EZ.js';
192
192
  export { ArtifactMakeRow } from '../chunk-37U3Z65B.js';
193
193
  export { ArtifactNameCell } from '../chunk-4MRFLHJC.js';
194
194
  export { AsideLayout } from '../chunk-QOXLP5PE.js';
195
195
  export { ATTACHMENT_CHIP_LABELS, AttachmentChip } from '../chunk-3N36CYTU.js';
196
196
  export { Tag } from '../chunk-I5OIKDX2.js';
197
- export { ArrangeFrame, useGridResize } from '../chunk-PLNJEDGI.js';
198
197
  export { ArrangeGrid } from '../chunk-QBA5B2Z5.js';
198
+ export { ArrangeFrame, useGridResize } from '../chunk-PLNJEDGI.js';
199
199
  export { ArrangeGroup } from '../chunk-CYYBE2MM.js';
200
200
  export { ArrangeList, DEFAULT_ARRANGE_LABELS } from '../chunk-TWJERLT3.js';
201
201
  export { Switch } from '../chunk-3XDT5ZWL.js';
@@ -208,18 +208,18 @@ export { TabPanel, Tabs, tabId } from '../chunk-PVZOP3QK.js';
208
208
  import '../chunk-EGMQURBR.js';
209
209
  export { ARTIFACT_ICON_WORDS, ArtifactIcon, artifactIconGlyph } from '../chunk-AVL52EME.js';
210
210
  export { StatusDot } from '../chunk-WIATRXEJ.js';
211
- export { ArtifactCard, ArtifactCardSkeleton, ArtifactPreviewGlyph } from '../chunk-UBIPDEFV.js';
211
+ export { ArtifactCard, ArtifactCardSkeleton, ArtifactPreviewGlyph } from '../chunk-3EETQFAM.js';
212
212
  export { Skeleton } from '../chunk-BRLZXYPA.js';
213
213
  export { PRINCIPAL_KINDS, PrincipalAvatar } from '../chunk-CI3VPIJN.js';
214
- export { RelativeTime, currentNow, formatElapsed, formatExact, formatRelative, formatUntil, toISO, toInstant, useNow } from '../chunk-L6NG7CUA.js';
214
+ export { RelativeTime, currentNow, formatElapsed, formatExact, formatRelative, formatUntil, toISO, toInstant, useNow } from '../chunk-EJNJMHQG.js';
215
215
  export { EMPTY_VALUE, EmptyValue } from '../chunk-RE3FBGQQ.js';
216
216
  export { Card } from '../chunk-4AUTALJA.js';
217
217
  export { useCardHeaderSlot } from '../chunk-AV2DXAEL.js';
218
218
  export { AvatarStack, avatarStackLabel } from '../chunk-BKP6XCAJ.js';
219
219
  export { AVATAR_CHARACTER_FULL_DETAIL, AVATAR_CORNER_RATIO, AVATAR_SIZES, AVATAR_STATUSES, AVATAR_STATUS_LABELS, Avatar, avatarCorner, avatarInitialsName, avatarPixels, avatarTint, getInitials } from '../chunk-PZKHBB7D.js';
220
220
  export { ArtifactKindGround, ArtifactKindIllustration, ArtifactKindTile } from '../chunk-NHLNHH4J.js';
221
- export { ARTIFACT_ACCESSES, ARTIFACT_ACCESS_LABELS, ArtifactAccessGlyph, ArtifactAccessLabel } from '../chunk-DOY3KC6I.js';
222
221
  export { Checkbox, CheckboxGroup } from '../chunk-PBCNINMB.js';
222
+ export { ARTIFACT_ACCESSES, ARTIFACT_ACCESS_LABELS, ArtifactAccessGlyph, ArtifactAccessLabel } from '../chunk-DOY3KC6I.js';
223
223
  export { DashboardCover, DocCover, SHEET_COVER_COLUMNS, SHEET_COVER_ROWS, SheetCover } from '../chunk-R45VM5EX.js';
224
224
  export { Document, DocumentTitle, DocumentTitleField } from '../chunk-BXCL6P5Z.js';
225
225
  export { ARTIFACT_KINDS, ArtifactKindGlyph } from '../chunk-RSKW25Y5.js';
@@ -241,7 +241,7 @@ export { DisclosureAnatomy } from '../chunk-IVTQWOXV.js';
241
241
  export { Count } from '../chunk-MLDTLZAO.js';
242
242
  export { HeadingLevelProvider, headingTag, nextHeadingLevel, useHeadingLevel } from '../chunk-PQADV6P6.js';
243
243
  export { Announcer, announce, useAnnouncer } from '../chunk-2G355KDJ.js';
244
- export { APP_SHELL_ASIDE_WIDTH, AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, readStoredWidth, useAppShell, useScreenBelow, useScreenWidth, useStoredWidth } from '../chunk-E55DKVY7.js';
244
+ export { APP_SHELL_ASIDE_WIDTH, AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, readStoredWidth, useAppShell, useScreenBelow, useScreenWidth, useStoredWidth } from '../chunk-GJ7VIQWL.js';
245
245
  export { useMediaMatch } from '../chunk-RTPQDNW3.js';
246
246
  export { Menu } from '../chunk-T73DMDU4.js';
247
247
  export { RESIZE_HANDLE_LARGE_STEP, RESIZE_HANDLE_STEP, ResizeHandle, clampSize, useAppShellAside, useAppShellPeek } from '../chunk-PIYJNCN7.js';