@crewlethq/ui 0.68.0 → 0.70.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 (174) hide show
  1. package/README.md +24 -2
  2. package/dist/AgentHandoffPanel/index.js +5 -5
  3. package/dist/AppShell/index.js +4 -4
  4. package/dist/ArrangeList/index.js +4 -4
  5. package/dist/ArtifactBar/index.js +7 -7
  6. package/dist/ArtifactCard/index.js +4 -4
  7. package/dist/ArtifactPanel/index.js +1 -1
  8. package/dist/AvatarPicker/index.js +7 -7
  9. package/dist/BriefCard/BriefCard.d.ts +80 -0
  10. package/dist/BriefCard/index.d.ts +3 -0
  11. package/dist/BriefCard/index.js +13 -0
  12. package/dist/BriefCard-L66R5U32.css +127 -0
  13. package/dist/Button/Button.d.ts +10 -0
  14. package/dist/Button/index.js +1 -1
  15. package/dist/{Button-VRRYSXFN.css → Button-GDEBGBX6.css} +30 -3
  16. package/dist/Canvas/index.js +3 -3
  17. package/dist/CanvasBoard/index.js +5 -5
  18. package/dist/CanvasToolbar/index.js +4 -4
  19. package/dist/ChatThread/index.js +2 -2
  20. package/dist/Checkbox/index.js +3 -3
  21. package/dist/CodeBlock/index.js +3 -3
  22. package/dist/ColorField/index.js +3 -3
  23. package/dist/ColorSwatch/index.js +3 -3
  24. package/dist/Combobox/index.js +3 -3
  25. package/dist/CommandPalette/index.js +5 -5
  26. package/dist/CommentThread/index.js +6 -6
  27. package/dist/Composer/index.js +3 -3
  28. package/dist/ConfirmField/index.js +3 -3
  29. package/dist/ConflictNote/index.js +2 -2
  30. package/dist/ContrastHelp/index.js +1 -1
  31. package/dist/Copyable/index.js +2 -2
  32. package/dist/DataGrid/DataGrid.d.ts +50 -4
  33. package/dist/DataGrid/index.d.ts +2 -2
  34. package/dist/DataGrid/index.js +5 -5
  35. package/dist/{DataGrid-NHIN2I42.css → DataGrid-Q26F2V5Q.css} +145 -24
  36. package/dist/DataTable/index.js +7 -7
  37. package/dist/DataView/index.js +10 -9
  38. package/dist/{DataView-RH5UDA5F.css → DataView-L7HLNW7C.css} +1 -112
  39. package/dist/DateTimePicker/index.js +3 -3
  40. package/dist/DeepWorkCard/index.js +3 -3
  41. package/dist/DocTabsEditor/index.js +5 -5
  42. package/dist/DownloadButton/index.js +2 -2
  43. package/dist/{Editor-2MZDDSJF.js → Editor-NNQEALNT.js} +4 -4
  44. package/dist/ErrorBoundary/index.js +2 -2
  45. package/dist/FileDrop/index.js +2 -2
  46. package/dist/FilterPill/FilterPill.d.ts +63 -0
  47. package/dist/FilterPill/index.d.ts +3 -0
  48. package/dist/FilterPill/index.js +4 -0
  49. package/dist/FilterPill-4GMNFZND.css +134 -0
  50. package/dist/FollowBanner/index.js +2 -2
  51. package/dist/HuePicker/index.js +6 -6
  52. package/dist/InlineEditor/index.js +2 -2
  53. package/dist/Input/index.js +2 -2
  54. package/dist/LinkInterstitial/index.js +4 -4
  55. package/dist/ListInput/index.js +4 -4
  56. package/dist/LogoSlot/index.js +3 -3
  57. package/dist/MarkdownEditor/index.js +6 -6
  58. package/dist/Menu/Menu.d.ts +10 -1
  59. package/dist/Menu/index.js +3 -3
  60. package/dist/{Menu-OLUGHX56.css → Menu-I4SNXHOT.css} +12 -0
  61. package/dist/MergeConflicts/index.js +6 -6
  62. package/dist/Modal/index.js +3 -3
  63. package/dist/OpenInAppCard/index.js +3 -3
  64. package/dist/OrgTable/index.js +1 -1
  65. package/dist/PeekRail/index.js +2 -2
  66. package/dist/PeopleRail/index.js +2 -2
  67. package/dist/PresenterView/index.js +3 -3
  68. package/dist/PrincipalPicker/index.js +4 -4
  69. package/dist/ProposalCard/index.js +7 -7
  70. package/dist/ReceiptStrip/index.js +2 -2
  71. package/dist/ResultTableCard/index.js +4 -4
  72. package/dist/RichEditor/index.js +2 -2
  73. package/dist/SandboxedFrame/index.js +2 -2
  74. package/dist/SegmentedControl/index.js +5 -5
  75. package/dist/SelectionBar/index.js +2 -2
  76. package/dist/SetupWizard/index.js +2 -2
  77. package/dist/ShareDialog/index.js +5 -5
  78. package/dist/SheetColumnEditor/index.js +9 -9
  79. package/dist/SheetGrid/index.js +4 -4
  80. package/dist/SidePanel/index.js +1 -1
  81. package/dist/SlideCompare/index.js +2 -2
  82. package/dist/SlideFilmstrip/index.js +4 -4
  83. package/dist/Switcher/index.js +5 -5
  84. package/dist/TableCells/index.js +1 -1
  85. package/dist/{TableCells-F6MUV572.css → TableCells-TKSNLRK3.css} +1 -0
  86. package/dist/Tabs/index.js +4 -4
  87. package/dist/TagsInput/index.js +2 -2
  88. package/dist/ThemeSwitcher/index.js +6 -6
  89. package/dist/TimeRangePicker/index.js +8 -8
  90. package/dist/TimeWindowPicker/index.js +4 -4
  91. package/dist/TreeCanvas/index.js +4 -4
  92. package/dist/TreeGrid/index.js +1 -1
  93. package/dist/ValueField/index.js +4 -4
  94. package/dist/VersionCompare/index.js +6 -6
  95. package/dist/VersionTimeline/index.js +2 -2
  96. package/dist/{chunk-XI56IJGI.js → chunk-3EETQFAM.js} +1 -1
  97. package/dist/{chunk-5FFZED4X.js → chunk-3EY5SEGH.js} +4 -4
  98. package/dist/{chunk-2QMUOUXN.js → chunk-3LP3VPLT.js} +2 -2
  99. package/dist/{chunk-DGG2A6XG.js → chunk-3WN5HUAK.js} +2 -2
  100. package/dist/{chunk-QBWNGNF7.js → chunk-4DL2BQJE.js} +1 -1
  101. package/dist/{chunk-XNYMMLCY.js → chunk-4MVLED6E.js} +4 -4
  102. package/dist/{chunk-OXEWUAND.js → chunk-5OFRDX66.js} +1 -1
  103. package/dist/{chunk-QRKDP7RQ.js → chunk-6C6YK75K.js} +2 -2
  104. package/dist/{chunk-2A6DL3K5.js → chunk-6FBPFG3C.js} +1 -1
  105. package/dist/{chunk-WWXIGN4O.js → chunk-73SAOOR5.js} +3 -3
  106. package/dist/{chunk-CMTLQOJY.js → chunk-7LSSYHOT.js} +1 -1
  107. package/dist/{chunk-COAK5MIF.js → chunk-ADSOY7UM.js} +3 -3
  108. package/dist/{chunk-GNDKUSCG.js → chunk-AGLONIVV.js} +1 -1
  109. package/dist/{chunk-YDXX5UB7.js → chunk-AQIFKLXY.js} +1 -1
  110. package/dist/{chunk-SUJO3AHN.js → chunk-B3PK2LND.js} +1 -1
  111. package/dist/{chunk-IU5J6BY5.js → chunk-BWAUL5MB.js} +2 -2
  112. package/dist/{chunk-ZFFQMRPJ.js → chunk-BWFJB5JD.js} +4 -4
  113. package/dist/{chunk-I24FI46B.js → chunk-C667GCU7.js} +1 -1
  114. package/dist/{chunk-CWYU7DNT.js → chunk-CDNZTCP2.js} +1 -1
  115. package/dist/{chunk-MVQSTBLQ.js → chunk-DB7UVFOY.js} +1 -1
  116. package/dist/{chunk-OJGI4XJH.js → chunk-DGSK4LLS.js} +1 -1
  117. package/dist/{chunk-7QTPJDRF.js → chunk-DGXZ635L.js} +7 -4
  118. package/dist/{chunk-2SU735S3.js → chunk-DV5L2GRY.js} +1 -1
  119. package/dist/{chunk-NSCYGUDG.js → chunk-EHFQMY3B.js} +1 -1
  120. package/dist/{chunk-FPTJMNI3.js → chunk-EN4UJQ63.js} +2 -2
  121. package/dist/{chunk-O3WH7OJE.js → chunk-EOXI3CRG.js} +1 -1
  122. package/dist/{chunk-LUSRKTX6.js → chunk-ERFXYGRF.js} +2 -2
  123. package/dist/{chunk-MCMPQBEV.js → chunk-FQI62PIZ.js} +2 -2
  124. package/dist/{chunk-CLJHQHPS.js → chunk-FURJVZCT.js} +73 -27
  125. package/dist/{chunk-5K7GGQNX.js → chunk-G4QZWVAB.js} +2 -2
  126. package/dist/{chunk-KZ3UXNN7.js → chunk-H32JW6CZ.js} +2 -2
  127. package/dist/{chunk-7DD2GR7I.js → chunk-HPI5J6AR.js} +2 -2
  128. package/dist/{chunk-ZEPUKRO7.js → chunk-IJ7KLXUZ.js} +1 -1
  129. package/dist/{chunk-MVQLCSAC.js → chunk-IPUEVTRJ.js} +1 -1
  130. package/dist/{chunk-4VPDY7AD.js → chunk-J5WWMC35.js} +45 -46
  131. package/dist/{chunk-KQGOVBGF.js → chunk-JD7P2GJP.js} +1 -1
  132. package/dist/{chunk-VMEUY672.js → chunk-JQEXAH7G.js} +1 -1
  133. package/dist/{chunk-K4IVKHKU.js → chunk-JT7WRPZ6.js} +1 -1
  134. package/dist/{chunk-CFXDWGQI.js → chunk-JVII5264.js} +1 -1
  135. package/dist/chunk-K4LZXSKZ.js +62 -0
  136. package/dist/{chunk-JII74OTJ.js → chunk-KAA3GFTP.js} +5 -5
  137. package/dist/{chunk-WYXUDDTY.js → chunk-KL6A7JGH.js} +1 -1
  138. package/dist/{chunk-2JHGPXYG.js → chunk-KQWJWTED.js} +1 -1
  139. package/dist/{chunk-WU5JDEEY.js → chunk-L4HHWG4V.js} +1 -1
  140. package/dist/{chunk-RCHJBKD3.js → chunk-LQWORB5B.js} +2 -2
  141. package/dist/{chunk-2DSHMV6B.js → chunk-MFQPGMJT.js} +1 -1
  142. package/dist/{chunk-XDVQ72BE.js → chunk-NXNLAZPK.js} +2 -2
  143. package/dist/{chunk-WPMZKZUH.js → chunk-O3HCFM3D.js} +1 -1
  144. package/dist/{chunk-NBOFBSVD.js → chunk-OBPINJNO.js} +2 -2
  145. package/dist/{chunk-2566PSQ3.js → chunk-OQG4P5KU.js} +18 -4
  146. package/dist/{chunk-UWOYDHVW.js → chunk-P64MIA7C.js} +1 -1
  147. package/dist/{chunk-EAR2F5OA.js → chunk-PBCNINMB.js} +1 -1
  148. package/dist/{chunk-KHHDCNYM.js → chunk-PRN5IP2R.js} +1 -1
  149. package/dist/{chunk-DMK2A4IK.js → chunk-QSWQJX27.js} +1 -1
  150. package/dist/{chunk-D2ZXIQ23.js → chunk-R5OATXWU.js} +1 -1
  151. package/dist/{chunk-OFABBAUR.js → chunk-SMZPUHBL.js} +1 -1
  152. package/dist/{chunk-7QTJO3PV.js → chunk-SO5SXSTP.js} +1 -1
  153. package/dist/{chunk-IYG4ETAQ.js → chunk-T5GBTXNC.js} +1 -1
  154. package/dist/{chunk-DMY4XEDS.js → chunk-TKBFRGUV.js} +4 -4
  155. package/dist/{chunk-DFU6JGJV.js → chunk-TPCBPGSB.js} +1 -1
  156. package/dist/{chunk-GAUBP247.js → chunk-TWJERLT3.js} +1 -1
  157. package/dist/{chunk-MJTBINIY.js → chunk-TYIHFDMP.js} +1 -1
  158. package/dist/{chunk-PHBMSXVE.js → chunk-UY3FWQWG.js} +2 -2
  159. package/dist/chunk-VBA5FSWV.js +87 -0
  160. package/dist/{chunk-SZEKOW2X.js → chunk-VWMB3CJN.js} +1 -1
  161. package/dist/{chunk-UKYVLQAE.js → chunk-W5AXJWOW.js} +2 -2
  162. package/dist/{chunk-HHZ5ZXYO.js → chunk-YGWIWDXE.js} +3 -3
  163. package/dist/{chunk-2T32N2WD.js → chunk-YUHKRRWO.js} +2 -2
  164. package/dist/{chunk-IQQSMK4E.js → chunk-ZUBFVK6B.js} +1 -1
  165. package/dist/{chunk-M25IV5MH.js → chunk-ZWCK4N4L.js} +1 -1
  166. package/dist/generated/index.d.ts +2 -0
  167. package/dist/generated/index.js +104 -102
  168. package/dist/index.js +104 -102
  169. package/dist/styles.css +463 -146
  170. package/package.json +3 -3
  171. package/dist/{chunk-TXQNWGUD.js → chunk-ABZC3NLM.js} +0 -0
  172. package/dist/{chunk-DCQ2VTBB.js → chunk-ETSF7SU6.js} +1 -1
  173. package/dist/{chunk-BAHLBMCH.js → chunk-HEIOLITO.js} +1 -1
  174. package/dist/{chunk-R2YHKVWN.js → chunk-SBHAKX2T.js} +1 -1
@@ -1,7 +1,7 @@
1
1
  import { useRoving, tabStop } from './chunk-EGMQURBR.js';
2
2
  import { StatusDot } from './chunk-WIATRXEJ.js';
3
3
  import { Count } from './chunk-MLDTLZAO.js';
4
- import { Menu } from './chunk-2566PSQ3.js';
4
+ import { Menu } from './chunk-OQG4P5KU.js';
5
5
  import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
6
6
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
7
7
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,19 +1,20 @@
1
1
  import { PageHeader } from './chunk-FPDIHEM4.js';
2
- import { DataTable } from './chunk-ZFFQMRPJ.js';
3
- import { DateTimePicker } from './chunk-7DD2GR7I.js';
2
+ import { FilterPill } from './chunk-K4LZXSKZ.js';
3
+ import { DataTable } from './chunk-BWFJB5JD.js';
4
+ import { DateTimePicker } from './chunk-HPI5J6AR.js';
4
5
  import { useListbox, useOptionKeys } from './chunk-7KHM2FZH.js';
5
6
  import { Toolbar } from './chunk-NR4CPM4T.js';
6
7
  import { Popover } from './chunk-KHJIEPZV.js';
7
8
  import { RelativeTime } from './chunk-EJNJMHQG.js';
8
9
  import { Kbd } from './chunk-ANTAQAR4.js';
9
- import { Input } from './chunk-DCQ2VTBB.js';
10
+ import { Input } from './chunk-ETSF7SU6.js';
10
11
  import { Count } from './chunk-MLDTLZAO.js';
11
- import { Menu } from './chunk-2566PSQ3.js';
12
- import { Button } from './chunk-7QTPJDRF.js';
12
+ import { Menu } from './chunk-OQG4P5KU.js';
13
+ import { Button } from './chunk-DGXZ635L.js';
13
14
  import { IconButton } from './chunk-UAUP6XGK.js';
14
15
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
15
16
  import { cx } from './chunk-ODEQTPFM.js';
16
- import './DataView-RH5UDA5F.css';
17
+ import './DataView-L7HLNW7C.css';
17
18
  import { useMemo, useState, useEffect, useCallback, useRef, useId } from 'react';
18
19
  import { SearchGlyph, ChevronDownGlyph, SlidersVerticalGlyph, ArrowUpGlyph, ArrowDownGlyph, XGlyph, ArrowUpDownGlyph, EyeGlyph, EyeOffGlyph, HashGlyph, ClockGlyph, ListGlyph, CheckGlyph } from '@crewlethq/icons/glyphs';
19
20
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -362,31 +363,34 @@ var isMultiple = (def) => def.kind === "select" && def.multiple === true;
362
363
  var chosenValues = (value) => Array.isArray(value) ? [...value] : [];
363
364
  var sameValue = (a, b) => String(a) === String(b);
364
365
  function formatFilterValue(def, value, labels) {
365
- const operator = operatorOf(def);
366
+ const { operator, answer } = filterAnswer(def, value, labels);
367
+ return operator ? `${operator} ${answer}` : answer;
368
+ }
369
+ function filterAnswer(def, value, labels) {
366
370
  const unusual = def.operator !== void 0 && def.operator !== defaultOperator(def);
367
- const prefix = unusual ? `${labels.operator[operator]} ` : "";
371
+ const compared = (answer) => unusual ? { operator: labels.operator[operatorOf(def)], answer } : { answer };
368
372
  if (isMultiple(def)) {
369
373
  const held = chosenValues(value);
370
- if (held.length === 0) return labels.any;
374
+ if (held.length === 0) return { answer: labels.any };
371
375
  if (held.length === 1) {
372
376
  const option = def.options?.find((candidate) => sameValue(candidate.value, held[0]));
373
- return `${prefix}${option ? option.label : String(held[0])}`;
377
+ return compared(option ? option.label : String(held[0]));
374
378
  }
375
- return labels.selected(held.length);
379
+ return { answer: labels.selected(held.length) };
376
380
  }
377
381
  if (value === void 0 || value === null || value === "") {
378
382
  const option = def.options?.find((candidate) => String(candidate.value) === "");
379
- return option ? option.label : labels.any;
383
+ return { answer: option ? option.label : labels.any };
380
384
  }
381
385
  if (def.kind === "select") {
382
386
  const option = def.options?.find((candidate) => sameValue(candidate.value, value));
383
- return `${prefix}${option ? option.label : String(value)}`;
387
+ return compared(option ? option.label : String(value));
384
388
  }
385
389
  if (def.kind === "datetime") {
386
390
  const at = new Date(String(value));
387
- if (!Number.isNaN(at.getTime())) return `${prefix}${at.toLocaleString()}`;
391
+ if (!Number.isNaN(at.getTime())) return compared(at.toLocaleString());
388
392
  }
389
- return `${prefix}${String(value)}`;
393
+ return compared(String(value));
390
394
  }
391
395
  function OptionListEditor({ def, value, labels, onCommit }) {
392
396
  const id = useId();
@@ -563,38 +567,33 @@ function FilterAxisChip({
563
567
  if (def.kind === "datetime") return /* @__PURE__ */ jsx(MomentEditor, { ...props });
564
568
  return /* @__PURE__ */ jsx(TextEditor, { ...props });
565
569
  };
566
- return /* @__PURE__ */ jsxs("div", { className: cx("crewlet-filter-axis-chip", className), children: [
567
- /* @__PURE__ */ jsx(
568
- Popover,
569
- {
570
- align: "start",
571
- role: "dialog",
572
- label: labels.editor(def.label),
573
- defaultOpen: autoOpen,
574
- className: "crewlet-filter-axis__popover",
575
- trigger: (open, toggle) => /* @__PURE__ */ jsxs("button", { type: "button", className: cx("crewlet-filter-axis-chip__trigger", open && "is-open"), onClick: toggle, children: [
576
- /* @__PURE__ */ jsxs("span", { className: "crewlet-filter-axis-chip__label", children: [
577
- def.label,
578
- ":"
570
+ const { operator, answer } = filterAnswer(def, value, labels);
571
+ return /* @__PURE__ */ jsx(
572
+ FilterPill,
573
+ {
574
+ className: cx("crewlet-filter-axis-chip", className),
575
+ field: def.label,
576
+ operator,
577
+ value: answer,
578
+ onRemove,
579
+ removeLabel: labels.remove(def.label),
580
+ renderWords: (words, wordsClass) => /* @__PURE__ */ jsx(
581
+ Popover,
582
+ {
583
+ align: "start",
584
+ role: "dialog",
585
+ label: labels.editor(def.label),
586
+ defaultOpen: autoOpen,
587
+ className: "crewlet-filter-axis__popover",
588
+ trigger: (open, toggle) => /* @__PURE__ */ jsxs("button", { type: "button", className: cx(wordsClass, open && "is-open"), onClick: toggle, children: [
589
+ words,
590
+ /* @__PURE__ */ jsx(ChevronDownGlyph, { size: "xs" })
579
591
  ] }),
580
- /* @__PURE__ */ jsx("span", { className: "crewlet-filter-axis-chip__value", children: formatFilterValue(def, value, labels) }),
581
- /* @__PURE__ */ jsx(ChevronDownGlyph, { className: "crewlet-filter-axis-chip__chevron", size: "xs" })
582
- ] }),
583
- children: editor
584
- }
585
- ),
586
- onRemove ? /* @__PURE__ */ jsx(
587
- IconButton,
588
- {
589
- className: "crewlet-filter-axis-chip__remove",
590
- size: "sm",
591
- variant: "ghost",
592
- label: labels.remove(def.label),
593
- icon: /* @__PURE__ */ jsx(XGlyph, { size: "xs" }),
594
- onClick: onRemove
595
- }
596
- ) : null
597
- ] });
592
+ children: editor
593
+ }
594
+ )
595
+ }
596
+ );
598
597
  }
599
598
  function FilterAxisBar({
600
599
  filters,
@@ -1,5 +1,5 @@
1
+ import { ConfirmModal } from './chunk-C667GCU7.js';
1
2
  import { InlineCode } from './chunk-PLL7ZJHY.js';
2
- import { ConfirmModal } from './chunk-I24FI46B.js';
3
3
  import { Callout } from './chunk-BPCY7ZID.js';
4
4
  import './LinkInterstitial-ET4MSVSV.css';
5
5
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  import { useTreeState, useMeasuredSizes, layoutForest, treeAncestors, useLayoutAnchor, treeExpandable, layoutConnectors, treeItemAction, treeStep, treePosInSet, treeSetSize, treeLevel, placeGroups } from './chunk-MY374UUD.js';
2
- import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-NBOFBSVD.js';
2
+ import { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, Canvas } from './chunk-OBPINJNO.js';
3
3
  import { focusables } from './chunk-H5XTJ7GJ.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './TreeCanvas-5FPK4CII.css';
@@ -1,5 +1,5 @@
1
1
  import { Callout } from './chunk-BPCY7ZID.js';
2
- import { Button } from './chunk-7QTPJDRF.js';
2
+ import { Button } from './chunk-DGXZ635L.js';
3
3
  import { isComposing } from './chunk-H5XTJ7GJ.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import { useEffect } from 'react';
@@ -1,5 +1,5 @@
1
1
  import { InlineCode } from './chunk-PLL7ZJHY.js';
2
- import { FormField, Input } from './chunk-DCQ2VTBB.js';
2
+ import { FormField, Input } from './chunk-ETSF7SU6.js';
3
3
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
4
 
5
5
  function confirmMatches(typed, phrase) {
@@ -0,0 +1,62 @@
1
+ import { IconButton } from './chunk-UAUP6XGK.js';
2
+ import { cx } from './chunk-ODEQTPFM.js';
3
+ import './FilterPill-4GMNFZND.css';
4
+ import { XGlyph } from '@crewlethq/icons/glyphs';
5
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
6
+
7
+ var FILTER_PILL_LABELS = {
8
+ remove: (sentence) => `Remove the ${sentence} filter`,
9
+ removeUnnamed: "Remove this filter",
10
+ fieldEnd: ":"
11
+ };
12
+ var FILTER_PILL_WORDS_CLASS = "crewlet-filter-pill__words";
13
+ function filterPillSentence(field, operator, value) {
14
+ const parts = [field, operator, value].filter((part) => part !== void 0 && part !== null && part !== "");
15
+ if (!parts.every((part) => typeof part === "string" || typeof part === "number")) return void 0;
16
+ return parts.join(" ");
17
+ }
18
+ function FilterPill({
19
+ field,
20
+ operator,
21
+ value,
22
+ onRemove,
23
+ removeLabel,
24
+ renderWords,
25
+ labels,
26
+ className
27
+ }) {
28
+ const text = { ...FILTER_PILL_LABELS, ...labels };
29
+ const hasValue = value !== void 0 && value !== null && value !== "";
30
+ const hasOperator = operator !== void 0 && operator !== null && operator !== "";
31
+ const words = /* @__PURE__ */ jsxs(Fragment, { children: [
32
+ /* @__PURE__ */ jsxs("span", { className: "crewlet-filter-pill__field", children: [
33
+ field,
34
+ hasValue && !hasOperator ? text.fieldEnd : null
35
+ ] }),
36
+ hasOperator ? /* @__PURE__ */ jsxs(Fragment, { children: [
37
+ " ",
38
+ /* @__PURE__ */ jsx("span", { className: "crewlet-filter-pill__operator", children: operator })
39
+ ] }) : null,
40
+ hasValue ? /* @__PURE__ */ jsxs(Fragment, { children: [
41
+ " ",
42
+ /* @__PURE__ */ jsx("span", { className: "crewlet-filter-pill__value", children: value })
43
+ ] }) : null
44
+ ] });
45
+ const sentence = filterPillSentence(field, hasOperator ? operator : void 0, hasValue ? value : void 0);
46
+ return /* @__PURE__ */ jsxs("div", { className: cx("crewlet-filter-pill", className), children: [
47
+ renderWords ? renderWords(words, FILTER_PILL_WORDS_CLASS) : /* @__PURE__ */ jsx("span", { className: FILTER_PILL_WORDS_CLASS, children: words }),
48
+ onRemove ? /* @__PURE__ */ jsx(
49
+ IconButton,
50
+ {
51
+ className: "crewlet-filter-pill__remove",
52
+ size: "sm",
53
+ variant: "ghost",
54
+ label: removeLabel ?? (sentence ? text.remove(sentence) : text.removeUnnamed),
55
+ icon: /* @__PURE__ */ jsx(XGlyph, { size: "xs" }),
56
+ onClick: onRemove
57
+ }
58
+ ) : null
59
+ ] });
60
+ }
61
+
62
+ export { FILTER_PILL_LABELS, FILTER_PILL_WORDS_CLASS, FilterPill, filterPillSentence };
@@ -1,12 +1,12 @@
1
1
  import { Select } from './chunk-VK45YJLH.js';
2
2
  import { SHEET_LABELS, SHEET_COLUMN_TYPES, optionHue, retypeColumn } from './chunk-LFSIKGRQ.js';
3
- import { HueSwatch } from './chunk-YDXX5UB7.js';
3
+ import { HueSwatch } from './chunk-AQIFKLXY.js';
4
4
  import { NODE_HUES, NODE_HUE_NAMES } from './chunk-AYKXMIOR.js';
5
- import { Checkbox } from './chunk-EAR2F5OA.js';
5
+ import { Checkbox } from './chunk-PBCNINMB.js';
6
6
  import { Kbd } from './chunk-ANTAQAR4.js';
7
- import { FormField, Input } from './chunk-DCQ2VTBB.js';
8
- import { Menu } from './chunk-2566PSQ3.js';
9
- import { Button } from './chunk-7QTPJDRF.js';
7
+ import { FormField, Input } from './chunk-ETSF7SU6.js';
8
+ import { Menu } from './chunk-OQG4P5KU.js';
9
+ import { Button } from './chunk-DGXZ635L.js';
10
10
  import { IconButton } from './chunk-UAUP6XGK.js';
11
11
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
12
12
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,5 +1,5 @@
1
1
  import { Toolbar } from './chunk-NR4CPM4T.js';
2
- import { ShortcutTip } from './chunk-NBOFBSVD.js';
2
+ import { ShortcutTip } from './chunk-OBPINJNO.js';
3
3
  import { IconButton } from './chunk-UAUP6XGK.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './CanvasToolbar-EM5EVZED.css';
@@ -1,4 +1,4 @@
1
- import { Button } from './chunk-7QTPJDRF.js';
1
+ import { Button } from './chunk-DGXZ635L.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './FileDrop-WE7BNZGV.css';
4
4
  import { forwardRef, useRef, useState } from 'react';
@@ -1,6 +1,6 @@
1
1
  import { Toolbar } from './chunk-NR4CPM4T.js';
2
2
  import { announce } from './chunk-2G355KDJ.js';
3
- import { Button } from './chunk-7QTPJDRF.js';
3
+ import { Button } from './chunk-DGXZ635L.js';
4
4
  import { returnFocus } from './chunk-NUZHC6MM.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './SelectionBar-SCAU6EBY.css';
@@ -1,9 +1,9 @@
1
- import { Modal } from './chunk-I24FI46B.js';
1
+ import { Modal } from './chunk-C667GCU7.js';
2
2
  import { useListbox, useOptionKeys } from './chunk-7KHM2FZH.js';
3
3
  import { Popover } from './chunk-KHJIEPZV.js';
4
4
  import { KeyChip, highlightMatch } from './chunk-HBDA76EZ.js';
5
5
  import { Skeleton } from './chunk-BRLZXYPA.js';
6
- import { Input } from './chunk-DCQ2VTBB.js';
6
+ import { Input } from './chunk-ETSF7SU6.js';
7
7
  import { announce } from './chunk-2G355KDJ.js';
8
8
  import { useMediaMatch } from './chunk-RTPQDNW3.js';
9
9
  import { focusables, isComposing } from './chunk-H5XTJ7GJ.js';
@@ -1,4 +1,4 @@
1
- import { Combobox } from './chunk-IQQSMK4E.js';
1
+ import { Combobox } from './chunk-ZUBFVK6B.js';
2
2
  import { PRINCIPAL_KINDS, PrincipalAvatar } from './chunk-CI3VPIJN.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './PrincipalPicker-P6UYHDJR.css';
@@ -1,7 +1,7 @@
1
- import { Modal } from './chunk-I24FI46B.js';
1
+ import { Modal } from './chunk-C667GCU7.js';
2
2
  import { useListbox, useHighlightRest } from './chunk-7KHM2FZH.js';
3
3
  import { Kbd } from './chunk-ANTAQAR4.js';
4
- import { Input } from './chunk-DCQ2VTBB.js';
4
+ import { Input } from './chunk-ETSF7SU6.js';
5
5
  import { Count } from './chunk-MLDTLZAO.js';
6
6
  import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
7
7
  import { isComposing } from './chunk-H5XTJ7GJ.js';
@@ -1,7 +1,7 @@
1
1
  import { PrincipalAvatar } from './chunk-CI3VPIJN.js';
2
2
  import { RelativeTime } from './chunk-EJNJMHQG.js';
3
3
  import { Timeline } from './chunk-4MJN2KN6.js';
4
- import { Button } from './chunk-7QTPJDRF.js';
4
+ import { Button } from './chunk-DGXZ635L.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './VersionTimeline-DEAQ7CJG.css';
7
7
  import { RotateCcwClockGlyph, PencilGlyph, ShieldGlyph, DatabaseGlyph, UploadGlyph } from '@crewlethq/icons/glyphs';
@@ -1,10 +1,10 @@
1
1
  import { LayerNodeBridge } from './chunk-LM3ISVJA.js';
2
2
  import { Tooltip } from './chunk-I33UIUZD.js';
3
3
  import { Kbd } from './chunk-ANTAQAR4.js';
4
- import { Button } from './chunk-7QTPJDRF.js';
4
+ import { Button } from './chunk-DGXZ635L.js';
5
5
  import { LAYER_REPOSITION_EVENT, LayerHost } from './chunk-OMV5W53A.js';
6
- import { returnFocus } from './chunk-NUZHC6MM.js';
7
6
  import { IconButton } from './chunk-UAUP6XGK.js';
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 './Canvas-4QJHVLJ4.css';
@@ -1,10 +1,10 @@
1
- import { Button } from './chunk-7QTPJDRF.js';
1
+ import { Button } from './chunk-DGXZ635L.js';
2
2
  import { useLayerContainer, viewportBounds, LAYER_GAP, anchorGone, placePopup, LAYER_REPOSITION_EVENT } from './chunk-OMV5W53A.js';
3
3
  import { usePopupLayer } from './chunk-H5XTJ7GJ.js';
4
- import { returnFocus } from './chunk-NUZHC6MM.js';
5
4
  import { IconButton } from './chunk-UAUP6XGK.js';
5
+ import { returnFocus } from './chunk-NUZHC6MM.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
- import './Menu-OLUGHX56.css';
7
+ import './Menu-I4SNXHOT.css';
8
8
  import { useId, useState, useRef, useCallback, useLayoutEffect, useEffect } from 'react';
9
9
  import { createPortal } from 'react-dom';
10
10
  import { EllipsisVerticalGlyph, CheckGlyph } from '@crewlethq/icons/glyphs';
@@ -32,6 +32,7 @@ function Menu({
32
32
  trigger,
33
33
  trailingIcon,
34
34
  triggerVariant = "ghost",
35
+ valueTrigger = false,
35
36
  triggerTabIndex,
36
37
  open: controlled,
37
38
  onOpenChange,
@@ -280,7 +281,20 @@ function Menu({
280
281
  onKeyDown: onTriggerKeyDown
281
282
  };
282
283
  return /* @__PURE__ */ jsxs("span", { className: "crewlet-menu-anchor", children: [
283
- renderTrigger ? renderTrigger(shared) : trigger === void 0 ? /* @__PURE__ */ jsx(IconButton, { ...shared, label, icon: icon ?? /* @__PURE__ */ jsx(EllipsisVerticalGlyph, {}), size: "sm" }) : /* @__PURE__ */ jsx(Button, { ...shared, "aria-label": label, variant: triggerVariant, size: "small", leadingIcon: icon, trailingIcon, children: trigger }),
284
+ renderTrigger ? renderTrigger(shared) : trigger === void 0 ? /* @__PURE__ */ jsx(IconButton, { ...shared, label, icon: icon ?? /* @__PURE__ */ jsx(EllipsisVerticalGlyph, {}), size: "sm" }) : /* @__PURE__ */ jsx(
285
+ Button,
286
+ {
287
+ ...shared,
288
+ "aria-label": label,
289
+ variant: triggerVariant,
290
+ size: "small",
291
+ flush: valueTrigger,
292
+ className: valueTrigger ? "crewlet-menu__value-trigger" : void 0,
293
+ leadingIcon: icon,
294
+ trailingIcon,
295
+ children: trigger
296
+ }
297
+ ),
284
298
  list && container ? createPortal(list, container) : null
285
299
  ] });
286
300
  }
@@ -1,6 +1,6 @@
1
1
  import { StepList } from './chunk-HJBHP66O.js';
2
+ import { ReceiptStrip } from './chunk-ZWCK4N4L.js';
2
3
  import { Meter } from './chunk-RQFRRPV6.js';
3
- import { ReceiptStrip } from './chunk-M25IV5MH.js';
4
4
  import { StatusCard } from './chunk-NTQPJJAN.js';
5
5
  import { Disclosure } from './chunk-222VILSP.js';
6
6
  import { Spinner } from './chunk-XSPCITPN.js';
@@ -1,4 +1,4 @@
1
- import { FormField } from './chunk-DCQ2VTBB.js';
1
+ import { FormField } from './chunk-ETSF7SU6.js';
2
2
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
3
3
  import { cx } from './chunk-ODEQTPFM.js';
4
4
  import './Checkbox-GAMV2XD7.css';
@@ -1,7 +1,7 @@
1
1
  import { SlideNav } from './chunk-5AJR6X75.js';
2
2
  import { SlideStage, SLIDE_WIDTH, SLIDE_HEIGHT } from './chunk-RMEBFYL7.js';
3
3
  import { Eyebrow } from './chunk-RK4XPHVG.js';
4
- import { Button } from './chunk-7QTPJDRF.js';
4
+ import { Button } from './chunk-DGXZ635L.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
6
6
  import './PresenterView-RKYEK27N.css';
7
7
  import { useRef, useState, useEffect } from 'react';
@@ -1,4 +1,4 @@
1
- import { CopyButton } from './chunk-IYG4ETAQ.js';
1
+ import { CopyButton } from './chunk-T5GBTXNC.js';
2
2
  import { cx } from './chunk-ODEQTPFM.js';
3
3
  import './CodeBlock-T47UA5GM.css';
4
4
  import { forwardRef, useRef, useState, useLayoutEffect } from 'react';
@@ -1,5 +1,5 @@
1
1
  import { useMediaMatch } from './chunk-RTPQDNW3.js';
2
- import { Button } from './chunk-7QTPJDRF.js';
2
+ import { Button } from './chunk-DGXZ635L.js';
3
3
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './ChatThread-2KO3FZKQ.css';
@@ -1,7 +1,7 @@
1
1
  import { PRESENCE_LABELS, presenceOrder, collapseSessions } from './chunk-Z7JYG5TF.js';
2
2
  import { Avatar } from './chunk-PZKHBB7D.js';
3
3
  import { headingTag, useHeadingLevel } from './chunk-PQADV6P6.js';
4
- import { Button } from './chunk-7QTPJDRF.js';
4
+ import { Button } from './chunk-DGXZ635L.js';
5
5
  import { IconButton } from './chunk-UAUP6XGK.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './PeopleRail-MRUSDGCZ.css';
@@ -1,5 +1,5 @@
1
1
  import { Table } from './chunk-5DJMFRSZ.js';
2
- import { DownloadButton } from './chunk-NSCYGUDG.js';
2
+ import { DownloadButton } from './chunk-EHFQMY3B.js';
3
3
  import { StatusCard } from './chunk-NTQPJJAN.js';
4
4
  import { cx } from './chunk-ODEQTPFM.js';
5
5
  import './ResultTableCard-AP355LQM.css';
@@ -1,5 +1,5 @@
1
1
  import { useClipboard } from './chunk-STJ7QBC3.js';
2
- import { Button } from './chunk-7QTPJDRF.js';
2
+ import { Button } from './chunk-DGXZ635L.js';
3
3
  import { IconButton } from './chunk-UAUP6XGK.js';
4
4
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
5
5
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,11 +1,11 @@
1
1
  import { Tooltip } from './chunk-I33UIUZD.js';
2
- import { SegmentedControl } from './chunk-MJTBINIY.js';
2
+ import { SegmentedControl } from './chunk-TYIHFDMP.js';
3
3
  import { ArtifactIcon } from './chunk-AVL52EME.js';
4
4
  import { isApplePlatform, Kbd } from './chunk-ANTAQAR4.js';
5
- import { Menu } from './chunk-2566PSQ3.js';
6
- import { Button } from './chunk-7QTPJDRF.js';
7
- import { returnFocus } from './chunk-NUZHC6MM.js';
5
+ import { Menu } from './chunk-OQG4P5KU.js';
6
+ import { Button } from './chunk-DGXZ635L.js';
8
7
  import { IconButton } from './chunk-UAUP6XGK.js';
8
+ import { returnFocus } from './chunk-NUZHC6MM.js';
9
9
  import { cx } from './chunk-ODEQTPFM.js';
10
10
  import './ArtifactKinds-O3CALPVX.css';
11
11
  import './ArtifactBar-X46WJNW7.css';
@@ -1,7 +1,7 @@
1
1
  import { SlideStage } from './chunk-RMEBFYL7.js';
2
2
  import { useReorder } from './chunk-MPVMB2DV.js';
3
3
  import { Kbd, isApplePlatform } from './chunk-ANTAQAR4.js';
4
- import { Menu } from './chunk-2566PSQ3.js';
4
+ import { Menu } from './chunk-OQG4P5KU.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
7
7
  import './SlideFilmstrip-BLGBCLEU.css';
@@ -1,6 +1,6 @@
1
1
  import { Switch } from './chunk-3XDT5ZWL.js';
2
2
  import { useReorder } from './chunk-MPVMB2DV.js';
3
- import { Checkbox } from './chunk-EAR2F5OA.js';
3
+ import { Checkbox } from './chunk-PBCNINMB.js';
4
4
  import { IconButton } from './chunk-UAUP6XGK.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- import { tabId } from './chunk-MVQLCSAC.js';
1
+ import { tabId } from './chunk-IPUEVTRJ.js';
2
2
  import { useRoving, tabStop } from './chunk-EGMQURBR.js';
3
3
  import { Count } from './chunk-MLDTLZAO.js';
4
4
  import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
@@ -1,10 +1,10 @@
1
1
  import { useMediaMatch } from './chunk-RTPQDNW3.js';
2
- import { Menu } from './chunk-2566PSQ3.js';
2
+ import { Menu } from './chunk-OQG4P5KU.js';
3
3
  import { PeekContext, AsideContext, ResizeHandle, clampSize } from './chunk-PIYJNCN7.js';
4
4
  import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
5
5
  import { focusables, useModalLayer, isComposing, layerCount } from './chunk-H5XTJ7GJ.js';
6
- import { returnFocus } from './chunk-NUZHC6MM.js';
7
6
  import { IconButton } from './chunk-UAUP6XGK.js';
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';
@@ -0,0 +1,87 @@
1
+ import { SuggestionList, SuggestionRow } from './chunk-Y7PVLEZJ.js';
2
+ import { StatusCard } from './chunk-NTQPJJAN.js';
3
+ import { StatusDot } from './chunk-WIATRXEJ.js';
4
+ import { Button } from './chunk-DGXZ635L.js';
5
+ import { cx } from './chunk-ODEQTPFM.js';
6
+ import './BriefCard-L66R5U32.css';
7
+ import { useId } from 'react';
8
+ import { CircleCheckGlyph, ArrowRightGlyph, MessageCircleQuestionMarkGlyph } from '@crewlethq/icons/glyphs';
9
+ import { jsx, jsxs } from 'react/jsx-runtime';
10
+
11
+ var BRIEF_CARD_MAX_NEEDS = 3;
12
+ var BRIEF_CARD_LABELS = {
13
+ heading: "Brief",
14
+ needs: "Needs you",
15
+ clear: "Nothing needs you.",
16
+ recommended: "Recommended",
17
+ followUps: "Ask next",
18
+ count: (n) => n === 1 ? "1 needs you" : `${n} need you`,
19
+ allClear: "All clear"
20
+ };
21
+ function BriefCard({
22
+ scope,
23
+ asOf,
24
+ summary,
25
+ needs,
26
+ recommended,
27
+ followUps,
28
+ labels: overrides,
29
+ className,
30
+ ...rest
31
+ }) {
32
+ const labels = overrides ? { ...BRIEF_CARD_LABELS, ...overrides } : BRIEF_CARD_LABELS;
33
+ const id = useId();
34
+ const rows = needs.slice(0, BRIEF_CARD_MAX_NEEDS);
35
+ const hasScope = !(scope === void 0 || scope === null || scope === "");
36
+ const hasAsOf = !(asOf === void 0 || asOf === null || asOf === "");
37
+ const subtitle = hasScope || hasAsOf ? /* @__PURE__ */ jsxs("span", { className: "crewlet-brief-card__where", children: [
38
+ hasScope ? /* @__PURE__ */ jsx("span", { children: scope }) : null,
39
+ hasScope && hasAsOf ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\xB7" }) : null,
40
+ hasAsOf ? /* @__PURE__ */ jsx("span", { className: "crewlet-brief-card__asof", children: asOf }) : null
41
+ ] }) : void 0;
42
+ return /* @__PURE__ */ jsx(
43
+ StatusCard,
44
+ {
45
+ ...rest,
46
+ title: labels.heading,
47
+ subtitle,
48
+ status: rows.length > 0 ? { label: labels.count(rows.length), tone: "warning" } : { label: labels.allClear, tone: "success", icon: /* @__PURE__ */ jsx(CircleCheckGlyph, { size: "xs" }) },
49
+ className: cx("crewlet-brief-card", className),
50
+ children: /* @__PURE__ */ jsxs("div", { className: "crewlet-brief-card__body", children: [
51
+ /* @__PURE__ */ jsx("p", { className: "crewlet-brief-card__summary", children: summary }),
52
+ /* @__PURE__ */ jsxs("section", { className: "crewlet-brief-card__block", "aria-labelledby": `${id}-needs`, children: [
53
+ /* @__PURE__ */ jsx("h4", { className: "crewlet-brief-card__label", id: `${id}-needs`, children: labels.needs }),
54
+ rows.length === 0 ? /* @__PURE__ */ jsxs("p", { className: "crewlet-brief-card__clear", children: [
55
+ /* @__PURE__ */ jsx(CircleCheckGlyph, { size: "sm", "aria-hidden": "true" }),
56
+ labels.clear
57
+ ] }) : (
58
+ // A list the reader moves through by item; Safari drops the role of a list styled without markers.
59
+ // eslint-disable-next-line jsx-a11y/no-redundant-roles
60
+ /* @__PURE__ */ jsx("ul", { role: "list", className: "crewlet-brief-card__needs", children: rows.map((need) => /* @__PURE__ */ jsxs("li", { className: "crewlet-brief-card__need", children: [
61
+ /* @__PURE__ */ jsx("span", { className: "crewlet-brief-card__dot", children: /* @__PURE__ */ jsx(StatusDot, { tone: need.tone ?? "warning" }) }),
62
+ /* @__PURE__ */ jsxs("span", { className: "crewlet-brief-card__words", children: [
63
+ /* @__PURE__ */ jsx("span", { children: need.text }),
64
+ need.detail === void 0 || need.detail === null ? null : /* @__PURE__ */ jsx("span", { className: "crewlet-brief-card__detail", children: need.detail })
65
+ ] }),
66
+ need.action ? /* @__PURE__ */ jsx(Button, { size: "small", variant: "secondary", onClick: need.action.onSelect, children: need.action.label }) : null
67
+ ] }, need.key)) })
68
+ )
69
+ ] }),
70
+ recommended === null ? null : /* @__PURE__ */ jsxs("section", { className: "crewlet-brief-card__block", "aria-labelledby": `${id}-next`, children: [
71
+ /* @__PURE__ */ jsx("h4", { className: "crewlet-brief-card__label", id: `${id}-next`, children: labels.recommended }),
72
+ /* @__PURE__ */ jsxs("div", { className: "crewlet-brief-card__next", children: [
73
+ /* @__PURE__ */ jsx(ArrowRightGlyph, { size: "sm", "aria-hidden": "true", className: "crewlet-brief-card__arrow" }),
74
+ /* @__PURE__ */ jsx("span", { children: recommended.text }),
75
+ recommended.action ? /* @__PURE__ */ jsx(Button, { size: "small", variant: "primary", onClick: recommended.action.onSelect, children: recommended.action.label }) : null
76
+ ] })
77
+ ] }),
78
+ followUps && followUps.length > 0 ? /* @__PURE__ */ jsxs("section", { className: "crewlet-brief-card__block", "aria-labelledby": `${id}-ask`, children: [
79
+ /* @__PURE__ */ jsx("h4", { className: "crewlet-brief-card__label", id: `${id}-ask`, children: labels.followUps }),
80
+ /* @__PURE__ */ jsx(SuggestionList, { className: "crewlet-brief-card__follow-ups", children: followUps.map((f) => /* @__PURE__ */ jsx(SuggestionRow, { icon: /* @__PURE__ */ jsx(MessageCircleQuestionMarkGlyph, { size: "sm" }), onSelect: f.onSelect, children: f.question }, f.key)) })
81
+ ] }) : null
82
+ ] })
83
+ }
84
+ );
85
+ }
86
+
87
+ export { BRIEF_CARD_LABELS, BRIEF_CARD_MAX_NEEDS, BriefCard };
@@ -1,5 +1,5 @@
1
1
  import { useThemePreference, useDensityPreference } from './chunk-Z24ZUSTX.js';
2
- import { SegmentedControl } from './chunk-MJTBINIY.js';
2
+ import { SegmentedControl } from './chunk-TYIHFDMP.js';
3
3
  import { SunGlyph, MonitorGlyph, MoonGlyph } from '@crewlethq/icons/glyphs';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1,6 +1,6 @@
1
1
  import { useReorder } from './chunk-MPVMB2DV.js';
2
- import { Input } from './chunk-DCQ2VTBB.js';
3
- import { Menu } from './chunk-2566PSQ3.js';
2
+ import { Input } from './chunk-ETSF7SU6.js';
3
+ import { Menu } from './chunk-OQG4P5KU.js';
4
4
  import { IconButton } from './chunk-UAUP6XGK.js';
5
5
  import { VisuallyHidden } from './chunk-UT6CW3C7.js';
6
6
  import { cx } from './chunk-ODEQTPFM.js';