@crewlethq/ui 0.59.0 → 0.61.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 (183) hide show
  1. package/dist/AgentHandoffPanel/index.js +8 -8
  2. package/dist/AppShell/index.js +4 -4
  3. package/dist/ArrangeFrame/index.js +2 -2
  4. package/dist/ArrangeList/index.js +4 -4
  5. package/dist/ArtifactBar/index.js +6 -6
  6. package/dist/ArtifactCard/index.js +4 -4
  7. package/dist/ArtifactPanel/index.js +3 -3
  8. package/dist/AvatarPicker/index.js +7 -7
  9. package/dist/Button/index.js +1 -1
  10. package/dist/{Button-VXJ7M5XF.css → Button-VRRYSXFN.css} +4 -0
  11. package/dist/Canvas/index.js +3 -3
  12. package/dist/CanvasBoard/index.js +5 -5
  13. package/dist/CanvasToolbar/index.js +4 -4
  14. package/dist/ChatThread/index.js +2 -2
  15. package/dist/Checkbox/index.js +3 -3
  16. package/dist/CodeBlock/index.js +4 -4
  17. package/dist/ColorField/index.js +3 -3
  18. package/dist/ColorSwatch/index.js +4 -4
  19. package/dist/Combobox/index.js +3 -3
  20. package/dist/CommandPalette/index.js +5 -5
  21. package/dist/CommentThread/index.js +6 -6
  22. package/dist/Composer/index.js +3 -3
  23. package/dist/ConfirmField/index.js +3 -3
  24. package/dist/ConflictNote/index.js +2 -2
  25. package/dist/ContrastHelp/index.js +2 -2
  26. package/dist/Copyable/index.js +3 -3
  27. package/dist/DataGrid/index.js +5 -5
  28. package/dist/DataTable/index.js +7 -7
  29. package/dist/DataView/index.js +9 -9
  30. package/dist/DateTimePicker/index.js +3 -3
  31. package/dist/DocTabsEditor/index.js +5 -5
  32. package/dist/DownloadButton/index.js +2 -2
  33. package/dist/{Editor-ZO5CCXOJ.js → Editor-DM7X24B7.js} +5 -5
  34. package/dist/ErrorBoundary/index.js +2 -2
  35. package/dist/FileDrop/index.js +2 -2
  36. package/dist/FollowBanner/index.js +2 -2
  37. package/dist/HuePicker/index.js +6 -6
  38. package/dist/IconButton/index.js +1 -1
  39. package/dist/{IconButton-6WA7UEBJ.css → IconButton-2D2PZ6GU.css} +4 -0
  40. package/dist/IndicatorAnchor/IndicatorAnchor.d.ts +29 -0
  41. package/dist/IndicatorAnchor/index.d.ts +3 -0
  42. package/dist/IndicatorAnchor/index.js +2 -0
  43. package/dist/IndicatorAnchor-ZVP47Q4T.css +33 -0
  44. package/dist/InlineEditor/index.js +2 -2
  45. package/dist/Input/index.js +2 -2
  46. package/dist/LinkInterstitial/index.js +4 -4
  47. package/dist/ListInput/index.js +4 -4
  48. package/dist/LogoSlot/index.js +3 -3
  49. package/dist/MarkdownEditor/index.js +6 -6
  50. package/dist/Menu/index.js +3 -3
  51. package/dist/MergeConflicts/index.js +6 -6
  52. package/dist/Modal/index.js +3 -3
  53. package/dist/OpenInAppCard/index.js +3 -3
  54. package/dist/OrgTable/index.js +3 -3
  55. package/dist/PeekRail/index.js +3 -3
  56. package/dist/PeopleRail/index.js +3 -3
  57. package/dist/PinTile/index.js +2 -2
  58. package/dist/PresenterView/index.js +4 -4
  59. package/dist/PrincipalPicker/index.js +4 -4
  60. package/dist/ProposalCard/index.js +3 -3
  61. package/dist/Prose/Prose.d.ts +5 -2
  62. package/dist/Prose/index.js +1 -1
  63. package/dist/{Prose-BTXNFT2Q.css → Prose-OMV2T6NT.css} +19 -2
  64. package/dist/ReceiptStrip/index.js +2 -2
  65. package/dist/ResultTableCard/index.js +3 -3
  66. package/dist/RichEditor/index.js +2 -2
  67. package/dist/SandboxedFrame/index.js +2 -2
  68. package/dist/SegmentedControl/index.js +5 -5
  69. package/dist/SelectionBar/index.js +2 -2
  70. package/dist/SendButton/SendButton.d.ts +25 -11
  71. package/dist/SendButton/index.d.ts +1 -0
  72. package/dist/SendButton/index.js +2 -2
  73. package/dist/SendButton-L4UX54XS.css +173 -0
  74. package/dist/ShareDialog/index.js +5 -5
  75. package/dist/SheetColumnEditor/index.js +9 -9
  76. package/dist/SheetGrid/index.js +4 -4
  77. package/dist/SidePanel/index.js +2 -2
  78. package/dist/SlideCompare/index.js +2 -2
  79. package/dist/SlideFilmstrip/index.js +4 -4
  80. package/dist/SlideNav/index.js +2 -2
  81. package/dist/Switcher/index.js +5 -5
  82. package/dist/Tabs/index.js +4 -4
  83. package/dist/TagsInput/index.js +2 -2
  84. package/dist/ThemeSwitcher/index.js +6 -6
  85. package/dist/ThemeToggle/index.js +2 -2
  86. package/dist/ThinkingIndicator/ThinkingIndicator.d.ts +37 -0
  87. package/dist/ThinkingIndicator/index.d.ts +3 -0
  88. package/dist/ThinkingIndicator/index.js +3 -0
  89. package/dist/ThinkingIndicator-QJMX2TXC.css +122 -0
  90. package/dist/TimeRangePicker/index.js +8 -8
  91. package/dist/TimeWindowPicker/index.js +4 -4
  92. package/dist/TreeCanvas/index.js +4 -4
  93. package/dist/TreeGrid/index.js +2 -2
  94. package/dist/VersionCompare/index.js +6 -6
  95. package/dist/VersionTimeline/index.js +2 -2
  96. package/dist/chunk-27MJPU7G.js +13 -0
  97. package/dist/{chunk-V3RW7FRQ.js → chunk-2BDPR4I3.js} +2 -2
  98. package/dist/{chunk-M2S5LG2H.js → chunk-2JHGPXYG.js} +1 -1
  99. package/dist/{chunk-2PNUEIN3.js → chunk-2NNGOCWM.js} +2 -2
  100. package/dist/{chunk-2GIUKIFV.js → chunk-2XWFWNDT.js} +1 -1
  101. package/dist/{chunk-CZCZLEDD.js → chunk-3633T7EJ.js} +1 -1
  102. package/dist/{chunk-KMWQLO4M.js → chunk-3BQWARG2.js} +1 -1
  103. package/dist/{chunk-SEPFBDSS.js → chunk-3OV26XP4.js} +1 -1
  104. package/dist/{chunk-VSDHSSKA.js → chunk-3PJHUDXD.js} +3 -3
  105. package/dist/{chunk-WRNDXYXK.js → chunk-3Q6N6FJL.js} +2 -2
  106. package/dist/{chunk-YDVINM4N.js → chunk-46VE5TVS.js} +1 -1
  107. package/dist/{chunk-O3K5H6CP.js → chunk-53NTMTRM.js} +1 -1
  108. package/dist/{chunk-AQDQGCRB.js → chunk-5CY6BW4Y.js} +1 -1
  109. package/dist/{chunk-QMIDBQCK.js → chunk-5FTJNKNX.js} +1 -1
  110. package/dist/{chunk-365RJTJW.js → chunk-5G76O23M.js} +2 -2
  111. package/dist/{chunk-JW5EFD4R.js → chunk-5KW63GZ3.js} +4 -4
  112. package/dist/{chunk-5ZZRSTLQ.js → chunk-5MN2HISF.js} +2 -2
  113. package/dist/{chunk-LBWFAVV4.js → chunk-5NJ4BIUA.js} +1 -1
  114. package/dist/{chunk-PNGE2N6F.js → chunk-5PMFRAGL.js} +6 -6
  115. package/dist/{chunk-CPOU5TA7.js → chunk-5UPWU6ZJ.js} +4 -4
  116. package/dist/{chunk-OE3UUHXO.js → chunk-5YIL4WJP.js} +1 -1
  117. package/dist/{chunk-TIXAEVYX.js → chunk-5ZGJ22CO.js} +1 -1
  118. package/dist/{chunk-ZECQEJUE.js → chunk-6Z4JZHRB.js} +1 -1
  119. package/dist/{chunk-IPAIGCWB.js → chunk-7QTPJDRF.js} +1 -1
  120. package/dist/{chunk-HV6XDLUM.js → chunk-7SRSPU4O.js} +2 -2
  121. package/dist/{chunk-4Q4MS7DQ.js → chunk-B5ZHJWAZ.js} +4 -4
  122. package/dist/{chunk-AVTQ6CIX.js → chunk-DEAFAK3U.js} +1 -1
  123. package/dist/{chunk-HQDEZNVJ.js → chunk-DMI4QJDY.js} +1 -1
  124. package/dist/{chunk-JCSA3XVH.js → chunk-DVVP27OD.js} +1 -1
  125. package/dist/chunk-E2MIUNUU.js +19 -0
  126. package/dist/{chunk-YUQHMGEY.js → chunk-EFIURN3U.js} +2 -2
  127. package/dist/{chunk-RIMDUTL6.js → chunk-EQHJTGLY.js} +1 -1
  128. package/dist/{chunk-6CARUBNX.js → chunk-F2IYVVA3.js} +1 -1
  129. package/dist/{chunk-VSZP3YRV.js → chunk-GWPWLVN3.js} +1 -1
  130. package/dist/{chunk-YDVEFGLP.js → chunk-I43D5K6A.js} +2 -2
  131. package/dist/{chunk-BMFA4G5D.js → chunk-I74C4TM6.js} +2 -2
  132. package/dist/{chunk-HTEFROIZ.js → chunk-IOTN23FZ.js} +2 -2
  133. package/dist/{chunk-IC6HNMTD.js → chunk-K4IVKHKU.js} +1 -1
  134. package/dist/{chunk-JMF5UXUG.js → chunk-KA2GAB3N.js} +1 -1
  135. package/dist/{chunk-NMT4A46R.js → chunk-KBTJMJPX.js} +1 -1
  136. package/dist/{chunk-RNULFW4V.js → chunk-KIPAFCVS.js} +1 -1
  137. package/dist/{chunk-DNKK6PIR.js → chunk-KVWZDCTQ.js} +2 -2
  138. package/dist/{chunk-DTVLZ2HZ.js → chunk-KWTRRS7E.js} +2 -2
  139. package/dist/{chunk-POUCKFMQ.js → chunk-LG6TUGET.js} +1 -1
  140. package/dist/{chunk-DBV7U54M.js → chunk-LND6XSXN.js} +4 -4
  141. package/dist/{chunk-D2R65FBU.js → chunk-LODRX4FU.js} +2 -2
  142. package/dist/{chunk-WR5CTBAE.js → chunk-MHFTG2LO.js} +1 -1
  143. package/dist/{chunk-XDHILOXS.js → chunk-MOW65OIJ.js} +2 -2
  144. package/dist/{chunk-UC7SEKT5.js → chunk-NL72YZWF.js} +1 -1
  145. package/dist/{chunk-PR7MFMDZ.js → chunk-NLI7OVO2.js} +1 -1
  146. package/dist/{chunk-FCM5YD37.js → chunk-NM6RR2GA.js} +6 -6
  147. package/dist/{chunk-BJ4LMNXZ.js → chunk-NRMXUNLR.js} +1 -1
  148. package/dist/{chunk-RECXPH7X.js → chunk-O7VXE4TO.js} +3 -3
  149. package/dist/{chunk-OVVMNUZD.js → chunk-OM6CPZB7.js} +1 -1
  150. package/dist/{chunk-LEB3FOSA.js → chunk-P5S2SPTK.js} +2 -2
  151. package/dist/chunk-PBR5C5MX.js +33 -0
  152. package/dist/{chunk-5FSTYJUU.js → chunk-PFXUEEHT.js} +2 -2
  153. package/dist/{chunk-YCBIM4XO.js → chunk-PGKETYGL.js} +2 -2
  154. package/dist/{chunk-74UPBUD6.js → chunk-PUJUWLCX.js} +1 -1
  155. package/dist/{chunk-VRL2YMYT.js → chunk-Q4DNAO3O.js} +1 -1
  156. package/dist/{chunk-GWCOPRXL.js → chunk-RLFPBRN4.js} +1 -1
  157. package/dist/{chunk-YND37ZPE.js → chunk-RPHQNXE5.js} +1 -1
  158. package/dist/{chunk-KNABA7D4.js → chunk-SG2375ZY.js} +3 -3
  159. package/dist/{chunk-HKQUOIL5.js → chunk-SPCSFJNY.js} +1 -1
  160. package/dist/{chunk-FWWHPUHZ.js → chunk-TLIJG4TP.js} +1 -1
  161. package/dist/{chunk-V6HG3GG4.js → chunk-TUNEMQXF.js} +1 -1
  162. package/dist/{chunk-Z7CD4HLH.js → chunk-TXA3HMWP.js} +2 -2
  163. package/dist/{chunk-7ZKTYBWW.js → chunk-UTBCDOGP.js} +3 -3
  164. package/dist/{chunk-UTIZFLI3.js → chunk-VBO2GYWX.js} +2 -2
  165. package/dist/{chunk-MTIVWCO3.js → chunk-VC2M2E7N.js} +1 -1
  166. package/dist/{chunk-4H5H67CB.js → chunk-VN3DCUED.js} +1 -1
  167. package/dist/{chunk-54HTAN33.js → chunk-VRPDQSXZ.js} +3 -3
  168. package/dist/{chunk-JUOKHJA3.js → chunk-VSTD65SL.js} +1 -1
  169. package/dist/{chunk-EQYNFXUO.js → chunk-W2Q5DZJB.js} +1 -1
  170. package/dist/{chunk-XCT6P7LB.js → chunk-WDPREXOL.js} +5 -5
  171. package/dist/{chunk-BAUJ3NLC.js → chunk-WR7UDG7U.js} +1 -1
  172. package/dist/{chunk-2N7OPHD4.js → chunk-WXSGCYZO.js} +3 -3
  173. package/dist/{chunk-722PJA72.js → chunk-XLJPLCK6.js} +1 -1
  174. package/dist/{chunk-Z4DYKDD6.js → chunk-YSHQQNB6.js} +4 -4
  175. package/dist/{chunk-3M7UZ43L.js → chunk-ZEPUKRO7.js} +1 -1
  176. package/dist/{chunk-7V7EBBVF.js → chunk-ZRKUTFYE.js} +2 -2
  177. package/dist/generated/index.d.ts +2 -0
  178. package/dist/generated/index.js +102 -100
  179. package/dist/index.js +102 -100
  180. package/dist/styles.css +367 -5
  181. package/package.json +3 -3
  182. package/dist/chunk-P7QDOKTP.js +0 -27
  183. /package/dist/{chunk-EWTPXRRM.js → chunk-OXZKRUGM.js} +0 -0
@@ -1,7 +1,7 @@
1
- export { SelectionBar } from '../chunk-ZECQEJUE.js';
1
+ export { SelectionBar } from '../chunk-6Z4JZHRB.js';
2
2
  import '../chunk-NR4CPM4T.js';
3
3
  import '../chunk-2G355KDJ.js';
4
- import '../chunk-IPAIGCWB.js';
4
+ import '../chunk-7QTPJDRF.js';
5
5
  import '../chunk-XSPCITPN.js';
6
6
  import '../chunk-OMV5W53A.js';
7
7
  import '../chunk-H5XTJ7GJ.js';
@@ -2,9 +2,9 @@ import { type IconButtonProps } from '../IconButton/index.js';
2
2
  /** Whether the button sends the message or stops the request already running. */
3
3
  export type SendButtonMode = 'send' | 'stop';
4
4
  export interface SendButtonLabels {
5
- /** The send button's name and tooltip. */
5
+ /** The send button's name. */
6
6
  send: string;
7
- /** The stop button's name and tooltip. */
7
+ /** The stop button's name. */
8
8
  stop: string;
9
9
  }
10
10
  export declare const SEND_BUTTON_LABELS: SendButtonLabels;
@@ -14,10 +14,14 @@ export interface SendButtonProps extends Omit<IconButtonProps, 'label' | 'icon'
14
14
  /** Called on a press in either mode: the caller sends, or stops what is running. */
15
15
  onPress: () => void;
16
16
  /**
17
- * Why it cannot send right now ("Write a question first", "Offline"). Soft
18
- * disabled, as every disabled control here is: it keeps its place in the
19
- * tab order and says why. Ignored while stopping, because Stop is always
20
- * available while something runs.
17
+ * Why it cannot be pressed right now, in a few words. Soft disabled, as
18
+ * every disabled control here is: it keeps its place in the tab order, a
19
+ * screen reader is told the reason, and the pointer's tooltip says it.
20
+ *
21
+ * In `send` mode it is why there is nothing to send ("Type a question
22
+ * first", "Offline"). In `stop` mode it is a stop already under way
23
+ * ("Stopping"), which a second press could not hurry; leave it out while
24
+ * the request runs and Stop is always available.
21
25
  */
22
26
  disabledReason?: string | undefined;
23
27
  labels?: Partial<SendButtonLabels> | undefined;
@@ -27,12 +31,22 @@ export interface SendButtonProps extends Omit<IconButtonProps, 'label' | 'icon'
27
31
  *
28
32
  * ONE ELEMENT IN BOTH MODES, so the button a keyboard reader is on stays
29
33
  * focused when the request starts or ends: it changes what it says ("Send",
30
- * "Stop") and how it looks, never which element it is.
34
+ * "Stop") and how it looks, never which element it is. Both glyphs are drawn
35
+ * in one cell and the one not in use is faded and scaled away, so the change
36
+ * is a short cross fade in place rather than a swap.
37
+ *
38
+ * SEND is the accent square with the arrow, the one decision in the composer.
39
+ * With nothing to send it is not a faded accent, which read as a muddy block
40
+ * on the dark ground: it is the accent's soft tint with the arrow in the
41
+ * tertiary ink, and it lights up in the accent the moment there is something
42
+ * to send.
43
+ *
44
+ * STOP is the bordered square with a small filled square in the primary ink,
45
+ * the mark every media control uses for "stop", and an accent arc travelling
46
+ * round its edge while the request runs: the button says both that something
47
+ * is under way and how to end it. Stop is quieter than Send on purpose, a way
48
+ * out rather than the decision.
31
49
  *
32
- * SEND is the accent square (IconButton `primary`) with the arrow; STOP is the
33
- * bordered square (IconButton `secondary`) with a filled square in the primary
34
- * ink. Stop is quieter than Send on purpose: an inverse block was the loudest
35
- * thing on the panel in dark mode, and Stop is a way out, not the decision.
36
50
  * Inside a `Composer`'s `trailing` slot its corner nests in the composer's.
37
51
  */
38
52
  export declare const SendButton: import("react").ForwardRefExoticComponent<SendButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -1,2 +1,3 @@
1
+ import './SendButton.css';
1
2
  export { SEND_BUTTON_LABELS, SendButton } from './SendButton.js';
2
3
  export type { SendButtonLabels, SendButtonMode, SendButtonProps } from './SendButton.js';
@@ -1,4 +1,4 @@
1
- export { SEND_BUTTON_LABELS, SendButton } from '../chunk-P7QDOKTP.js';
2
- import '../chunk-2GIUKIFV.js';
1
+ export { SEND_BUTTON_LABELS, SendButton } from '../chunk-PBR5C5MX.js';
2
+ import '../chunk-2XWFWNDT.js';
3
3
  import '../chunk-UT6CW3C7.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,173 @@
1
+ /*
2
+ * A chat composer's Send, which becomes Stop. See SendButton.tsx for what each
3
+ * state says. The surfaces, edges and hover and press inks are IconButton's
4
+ * primary and secondary squares; this sheet adds the glyph cross fade, the
5
+ * quiet held state, the press and the running arc.
6
+ */
7
+
8
+ /*
9
+ * THE ARC'S ANGLE, registered so it can turn. An unregistered custom property
10
+ * animates in one step at the halfway point, which would make the arc jump
11
+ * between two places rather than travel.
12
+ */
13
+ @property --crewlet-send-button-arc {
14
+ syntax: '<angle>';
15
+ inherits: false;
16
+ initial-value: 0deg;
17
+ }
18
+
19
+ .crewlet-send-button {
20
+ position: relative;
21
+ transition:
22
+ background var(--motion-duration-fast) var(--motion-easing-default),
23
+ border-color var(--motion-duration-fast) var(--motion-easing-default),
24
+ color var(--motion-duration-fast) var(--motion-easing-default),
25
+ transform var(--motion-duration-instant) var(--motion-easing-out);
26
+ }
27
+
28
+ /* A press sinks the square a little, so the pointer feels it land. */
29
+ .crewlet-send-button:active:not([aria-disabled='true']) {
30
+ transform: scale(0.94);
31
+ }
32
+
33
+ /*
34
+ * BOTH GLYPHS IN ONE CELL. The one in use stands at full size; the other is
35
+ * faded and scaled to half, and the two trade places on the base step with
36
+ * the entering surface's ease, so Send turning into Stop reads as one control
37
+ * changing its mind rather than as two buttons swapping.
38
+ */
39
+ .crewlet-send-button__glyphs {
40
+ display: grid;
41
+ place-items: center;
42
+ }
43
+
44
+ .crewlet-send-button__glyph {
45
+ grid-area: 1 / 1;
46
+ transition:
47
+ opacity var(--motion-duration-base) var(--motion-easing-default),
48
+ transform var(--motion-duration-base) var(--motion-easing-emphasized);
49
+ }
50
+
51
+ .crewlet-send-button--send .crewlet-send-button__glyph--stop,
52
+ .crewlet-send-button--stop .crewlet-send-button__glyph--send {
53
+ opacity: 0;
54
+ transform: scale(0.5);
55
+ }
56
+
57
+ /*
58
+ * THE STOP SQUARE IS SMALLER THAN THE ARROW: a filled block at the arrow's
59
+ * 14px was the heaviest mark on the panel. At the 12px step its square is
60
+ * nine pixels, crisp on the pixel grid and the weight of the arrow's stroke.
61
+ */
62
+ .crewlet-send-button.crewlet-icon-btn--md .crewlet-send-button__glyph--stop {
63
+ width: var(--font-size-xs);
64
+ height: var(--font-size-xs);
65
+ }
66
+
67
+ /*
68
+ * HELD, AT FULL OPACITY, with the glyph in the tertiary ink. A faded accent
69
+ * block read as a muddy, broken button on the dark ground, and the composer's
70
+ * own fade multiplied it further. Send held is the accent's soft tint, so it
71
+ * is still the purple control that lights up the moment there is something
72
+ * to send; Stop held (a stop already under way) is the neutral hover overlay,
73
+ * since nothing about it is waiting to light up.
74
+ */
75
+ .crewlet-send-button.crewlet-icon-btn[aria-disabled='true'] {
76
+ opacity: 1;
77
+ border-color: transparent;
78
+ color: var(--color-text-tertiary);
79
+ }
80
+
81
+ .crewlet-send-button--send.crewlet-icon-btn[aria-disabled='true'] {
82
+ background: var(--color-brand-accent-soft);
83
+ }
84
+
85
+ .crewlet-send-button--stop.crewlet-icon-btn[aria-disabled='true'] {
86
+ background: var(--color-surface-hover);
87
+ }
88
+
89
+ /*
90
+ * THE RUNNING ARC: a band of the accent travelling round Stop's edge, over its
91
+ * own 1px border, with a tail that fades behind it. The band is a conic
92
+ * gradient cut to a 2px ring by a mask (a mask reads only alpha, so its black
93
+ * is opacity rather than a colour), so it follows the rounded corner exactly.
94
+ * One round is the working ring's sweep period, and it fades in on the
95
+ * moderate step as Stop arrives.
96
+ */
97
+ .crewlet-send-button--stop::before {
98
+ content: '';
99
+ position: absolute;
100
+ inset: -1px;
101
+ padding: 2px;
102
+ border-radius: inherit;
103
+ background: conic-gradient(
104
+ from var(--crewlet-send-button-arc),
105
+ transparent 0turn,
106
+ transparent 0.55turn,
107
+ var(--color-brand-accent) 1turn
108
+ );
109
+ -webkit-mask:
110
+ linear-gradient(#000 0 0) content-box,
111
+ linear-gradient(#000 0 0);
112
+ -webkit-mask-composite: xor;
113
+ mask:
114
+ linear-gradient(#000 0 0) content-box exclude,
115
+ linear-gradient(#000 0 0);
116
+ /* Paint, never a target. */
117
+ pointer-events: none;
118
+ animation:
119
+ crewlet-send-button-arc var(--motion-duration-sweep) linear infinite,
120
+ crewlet-send-button-arc-in var(--motion-duration-moderate) var(--motion-easing-out);
121
+ }
122
+
123
+ /* A stop already under way has nothing left to show running. */
124
+ .crewlet-send-button--stop[aria-disabled='true']::before {
125
+ display: none;
126
+ }
127
+
128
+ @keyframes crewlet-send-button-arc {
129
+ to {
130
+ --crewlet-send-button-arc: 360deg;
131
+ }
132
+ }
133
+
134
+ @keyframes crewlet-send-button-arc-in {
135
+ from {
136
+ opacity: 0;
137
+ }
138
+
139
+ to {
140
+ opacity: 1;
141
+ }
142
+ }
143
+
144
+ /*
145
+ * UNDER REDUCED MOTION nothing travels or scales: the glyphs change in place,
146
+ * and the arc becomes the whole edge in the accent, still and still saying
147
+ * that something runs.
148
+ */
149
+ @media (prefers-reduced-motion: reduce) {
150
+ .crewlet-send-button {
151
+ transition: none;
152
+ }
153
+
154
+ .crewlet-send-button:active:not([aria-disabled='true']) {
155
+ transform: none;
156
+ }
157
+
158
+ .crewlet-send-button__glyph {
159
+ transition: none;
160
+ }
161
+
162
+ .crewlet-send-button--stop::before {
163
+ background: var(--color-brand-accent);
164
+ animation: none;
165
+ }
166
+ }
167
+
168
+ /* The system draws its own edge; a masked gradient is not repainted there. */
169
+ @media (forced-colors: active) {
170
+ .crewlet-send-button--stop::before {
171
+ display: none;
172
+ }
173
+ }
@@ -1,9 +1,9 @@
1
- export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from '../chunk-4Q4MS7DQ.js';
1
+ export { ARTIFACT_ROLES, SHAREABLE_ROLES, ShareDialog, roleAtLeast } from '../chunk-B5ZHJWAZ.js';
2
2
  import '../chunk-XQZ6EWOE.js';
3
- import '../chunk-HTEFROIZ.js';
3
+ import '../chunk-IOTN23FZ.js';
4
4
  import '../chunk-STJ7QBC3.js';
5
5
  import '../chunk-DTIW4CHZ.js';
6
- import '../chunk-DNKK6PIR.js';
6
+ import '../chunk-KVWZDCTQ.js';
7
7
  import '../chunk-7KHM2FZH.js';
8
8
  import '../chunk-BPCY7ZID.js';
9
9
  import '../chunk-CI3VPIJN.js';
@@ -11,12 +11,12 @@ import '../chunk-5AQBPHZD.js';
11
11
  import '../chunk-PZKHBB7D.js';
12
12
  import '../chunk-PQADV6P6.js';
13
13
  import '../chunk-RTPQDNW3.js';
14
- import '../chunk-IPAIGCWB.js';
14
+ import '../chunk-7QTPJDRF.js';
15
15
  import '../chunk-XSPCITPN.js';
16
16
  import '../chunk-OMV5W53A.js';
17
17
  import '../chunk-2YTOOH3A.js';
18
18
  import '../chunk-H5XTJ7GJ.js';
19
+ import '../chunk-2XWFWNDT.js';
19
20
  import '../chunk-NUZHC6MM.js';
20
- import '../chunk-2GIUKIFV.js';
21
21
  import '../chunk-UT6CW3C7.js';
22
22
  import '../chunk-ODEQTPFM.js';
@@ -1,29 +1,29 @@
1
- export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from '../chunk-PNGE2N6F.js';
1
+ export { SHEET_COLUMN_EDITOR_LABELS, SheetColumnEditor, SheetColumnTypeGlyph } from '../chunk-5PMFRAGL.js';
2
2
  import '../chunk-XQZ6EWOE.js';
3
3
  import '../chunk-FFMCMSJB.js';
4
4
  import '../chunk-7KHM2FZH.js';
5
5
  import '../chunk-LFSIKGRQ.js';
6
6
  import '../chunk-Z7JYG5TF.js';
7
- import '../chunk-BJ4LMNXZ.js';
7
+ import '../chunk-NRMXUNLR.js';
8
8
  import '../chunk-AYKXMIOR.js';
9
- import '../chunk-KMWQLO4M.js';
10
- import '../chunk-4H5H67CB.js';
9
+ import '../chunk-3BQWARG2.js';
10
+ import '../chunk-VN3DCUED.js';
11
11
  import '../chunk-WIATRXEJ.js';
12
12
  import '../chunk-EGMQURBR.js';
13
- import '../chunk-RNULFW4V.js';
13
+ import '../chunk-KIPAFCVS.js';
14
14
  import '../chunk-ACRRRPWT.js';
15
- import '../chunk-FWWHPUHZ.js';
15
+ import '../chunk-TLIJG4TP.js';
16
16
  import '../chunk-PGCLHYVP.js';
17
17
  import '../chunk-5KRRJNQO.js';
18
18
  import '../chunk-PQADV6P6.js';
19
19
  import '../chunk-2G355KDJ.js';
20
- import '../chunk-D2R65FBU.js';
21
- import '../chunk-IPAIGCWB.js';
20
+ import '../chunk-LODRX4FU.js';
21
+ import '../chunk-7QTPJDRF.js';
22
22
  import '../chunk-XSPCITPN.js';
23
23
  import '../chunk-OMV5W53A.js';
24
24
  import '../chunk-2YTOOH3A.js';
25
25
  import '../chunk-H5XTJ7GJ.js';
26
+ import '../chunk-2XWFWNDT.js';
26
27
  import '../chunk-NUZHC6MM.js';
27
- import '../chunk-2GIUKIFV.js';
28
28
  import '../chunk-UT6CW3C7.js';
29
29
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from '../chunk-2N7OPHD4.js';
1
+ export { CellDisplay, CellEditor, CheckboxCell, DateCell, LongTextCell, MultiSelectCell, NumberCell, PersonCell, RatingCell, SelectCell, SheetCell, SheetGrid, StatusCell, TextCell, UrlCell } from '../chunk-WXSGCYZO.js';
2
2
  import '../chunk-4U2D6BPR.js';
3
3
  import '../chunk-CENOOTAV.js';
4
4
  import '../chunk-3BYIWOTV.js';
@@ -14,12 +14,12 @@ import '../chunk-WIATRXEJ.js';
14
14
  import '../chunk-5AQBPHZD.js';
15
15
  import '../chunk-PZKHBB7D.js';
16
16
  import '../chunk-2G355KDJ.js';
17
- import '../chunk-D2R65FBU.js';
18
- import '../chunk-IPAIGCWB.js';
17
+ import '../chunk-LODRX4FU.js';
18
+ import '../chunk-7QTPJDRF.js';
19
19
  import '../chunk-XSPCITPN.js';
20
20
  import '../chunk-OMV5W53A.js';
21
21
  import '../chunk-H5XTJ7GJ.js';
22
+ import '../chunk-2XWFWNDT.js';
22
23
  import '../chunk-NUZHC6MM.js';
23
- import '../chunk-2GIUKIFV.js';
24
24
  import '../chunk-UT6CW3C7.js';
25
25
  import '../chunk-ODEQTPFM.js';
@@ -1,11 +1,11 @@
1
1
  import '../chunk-73GUXYYE.js';
2
- export { SIDE_PANEL_LABELS, SIDE_PANEL_MAX_WIDTH, SIDE_PANEL_MIN_WIDTH, SIDE_PANEL_WIDTH, SidePanel, SidePanelFrame } from '../chunk-74UPBUD6.js';
2
+ export { SIDE_PANEL_LABELS, SIDE_PANEL_MAX_WIDTH, SIDE_PANEL_MIN_WIDTH, SIDE_PANEL_WIDTH, SidePanel, SidePanelFrame } from '../chunk-PUJUWLCX.js';
3
3
  import '../chunk-PQADV6P6.js';
4
4
  import '../chunk-PIYJNCN7.js';
5
5
  import '../chunk-OMV5W53A.js';
6
6
  import '../chunk-2YTOOH3A.js';
7
7
  import '../chunk-H5XTJ7GJ.js';
8
+ import '../chunk-2XWFWNDT.js';
8
9
  import '../chunk-NUZHC6MM.js';
9
- import '../chunk-2GIUKIFV.js';
10
10
  import '../chunk-UT6CW3C7.js';
11
11
  import '../chunk-ODEQTPFM.js';
@@ -1,6 +1,6 @@
1
- export { SLIDE_COMPARE_LABELS, SlideCompare } from '../chunk-EQYNFXUO.js';
1
+ export { SLIDE_COMPARE_LABELS, SlideCompare } from '../chunk-W2Q5DZJB.js';
2
2
  import '../chunk-RMEBFYL7.js';
3
- import '../chunk-IPAIGCWB.js';
3
+ import '../chunk-7QTPJDRF.js';
4
4
  import '../chunk-XSPCITPN.js';
5
5
  import '../chunk-OMV5W53A.js';
6
6
  import '../chunk-H5XTJ7GJ.js';
@@ -1,14 +1,14 @@
1
- export { SlideFilmstrip } from '../chunk-722PJA72.js';
1
+ export { SlideFilmstrip } from '../chunk-XLJPLCK6.js';
2
2
  import '../chunk-RMEBFYL7.js';
3
3
  import '../chunk-MPVMB2DV.js';
4
4
  import '../chunk-ACRRRPWT.js';
5
5
  import '../chunk-2G355KDJ.js';
6
- import '../chunk-D2R65FBU.js';
7
- import '../chunk-IPAIGCWB.js';
6
+ import '../chunk-LODRX4FU.js';
7
+ import '../chunk-7QTPJDRF.js';
8
8
  import '../chunk-XSPCITPN.js';
9
9
  import '../chunk-OMV5W53A.js';
10
10
  import '../chunk-H5XTJ7GJ.js';
11
+ import '../chunk-2XWFWNDT.js';
11
12
  import '../chunk-NUZHC6MM.js';
12
- import '../chunk-2GIUKIFV.js';
13
13
  import '../chunk-UT6CW3C7.js';
14
14
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- export { SLIDE_NAV_LABELS, SlideNav } from '../chunk-AVTQ6CIX.js';
2
- import '../chunk-2GIUKIFV.js';
1
+ export { SLIDE_NAV_LABELS, SlideNav } from '../chunk-DEAFAK3U.js';
2
+ import '../chunk-2XWFWNDT.js';
3
3
  import '../chunk-UT6CW3C7.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -1,19 +1,19 @@
1
- export { Switcher } from '../chunk-7V7EBBVF.js';
2
- import '../chunk-DNKK6PIR.js';
1
+ export { Switcher } from '../chunk-ZRKUTFYE.js';
2
+ import '../chunk-KVWZDCTQ.js';
3
3
  import '../chunk-7KHM2FZH.js';
4
4
  import '../chunk-KHJIEPZV.js';
5
5
  import '../chunk-FYTIJM2T.js';
6
6
  import '../chunk-QBI5ETKY.js';
7
- import '../chunk-FWWHPUHZ.js';
7
+ import '../chunk-TLIJG4TP.js';
8
8
  import '../chunk-PGCLHYVP.js';
9
9
  import '../chunk-PQADV6P6.js';
10
10
  import '../chunk-2G355KDJ.js';
11
11
  import '../chunk-RTPQDNW3.js';
12
- import '../chunk-IPAIGCWB.js';
12
+ import '../chunk-7QTPJDRF.js';
13
13
  import '../chunk-XSPCITPN.js';
14
14
  import '../chunk-OMV5W53A.js';
15
15
  import '../chunk-H5XTJ7GJ.js';
16
+ import '../chunk-2XWFWNDT.js';
16
17
  import '../chunk-NUZHC6MM.js';
17
- import '../chunk-2GIUKIFV.js';
18
18
  import '../chunk-UT6CW3C7.js';
19
19
  import '../chunk-ODEQTPFM.js';
@@ -1,14 +1,14 @@
1
- export { TabPanel, Tabs, tabId } from '../chunk-4H5H67CB.js';
1
+ export { TabPanel, Tabs, tabId } from '../chunk-VN3DCUED.js';
2
2
  import '../chunk-WIATRXEJ.js';
3
3
  import '../chunk-EGMQURBR.js';
4
4
  import '../chunk-5KRRJNQO.js';
5
- import '../chunk-D2R65FBU.js';
6
- import '../chunk-IPAIGCWB.js';
5
+ import '../chunk-LODRX4FU.js';
6
+ import '../chunk-7QTPJDRF.js';
7
7
  import '../chunk-XSPCITPN.js';
8
8
  import '../chunk-OMV5W53A.js';
9
9
  import '../chunk-2YTOOH3A.js';
10
10
  import '../chunk-H5XTJ7GJ.js';
11
+ import '../chunk-2XWFWNDT.js';
11
12
  import '../chunk-NUZHC6MM.js';
12
- import '../chunk-2GIUKIFV.js';
13
13
  import '../chunk-UT6CW3C7.js';
14
14
  import '../chunk-ODEQTPFM.js';
@@ -1,11 +1,11 @@
1
- export { TagsInput } from '../chunk-JUOKHJA3.js';
1
+ export { TagsInput } from '../chunk-VSTD65SL.js';
2
2
  import '../chunk-7KHM2FZH.js';
3
3
  import '../chunk-KYIAFNU7.js';
4
4
  import '../chunk-WIATRXEJ.js';
5
5
  import '../chunk-2G355KDJ.js';
6
6
  import '../chunk-OMV5W53A.js';
7
7
  import '../chunk-H5XTJ7GJ.js';
8
+ import '../chunk-2XWFWNDT.js';
8
9
  import '../chunk-NUZHC6MM.js';
9
- import '../chunk-2GIUKIFV.js';
10
10
  import '../chunk-UT6CW3C7.js';
11
11
  import '../chunk-ODEQTPFM.js';
@@ -1,19 +1,19 @@
1
- export { DensitySwitcher, ThemeSwitcher } from '../chunk-O3K5H6CP.js';
1
+ export { DensitySwitcher, ThemeSwitcher } from '../chunk-53NTMTRM.js';
2
2
  export { applyStoredPreferences, resolveTheme, useDensityPreference, useSystemTheme, useThemePreference } from '../chunk-Z24ZUSTX.js';
3
3
  export { DENSITY_PREFERENCES, PALETTE_ID, THEME_PREFERENCES, applyDensity, applyPalette, applyTheme, isDensityPreference, isPaletteId, isThemePreference } from '../chunk-ZXXDZJQN.js';
4
4
  import '../chunk-OOC7Q67K.js';
5
- import '../chunk-KMWQLO4M.js';
6
- import '../chunk-4H5H67CB.js';
5
+ import '../chunk-3BQWARG2.js';
6
+ import '../chunk-VN3DCUED.js';
7
7
  import '../chunk-WIATRXEJ.js';
8
8
  import '../chunk-EGMQURBR.js';
9
9
  import '../chunk-5KRRJNQO.js';
10
- import '../chunk-D2R65FBU.js';
11
- import '../chunk-IPAIGCWB.js';
10
+ import '../chunk-LODRX4FU.js';
11
+ import '../chunk-7QTPJDRF.js';
12
12
  import '../chunk-XSPCITPN.js';
13
13
  import '../chunk-OMV5W53A.js';
14
14
  import '../chunk-2YTOOH3A.js';
15
15
  import '../chunk-H5XTJ7GJ.js';
16
+ import '../chunk-2XWFWNDT.js';
16
17
  import '../chunk-NUZHC6MM.js';
17
- import '../chunk-2GIUKIFV.js';
18
18
  import '../chunk-UT6CW3C7.js';
19
19
  import '../chunk-ODEQTPFM.js';
@@ -1,6 +1,6 @@
1
- export { ThemeToggle } from '../chunk-GWCOPRXL.js';
1
+ export { ThemeToggle } from '../chunk-RLFPBRN4.js';
2
2
  import '../chunk-Z24ZUSTX.js';
3
3
  import '../chunk-ZXXDZJQN.js';
4
- import '../chunk-2GIUKIFV.js';
4
+ import '../chunk-2XWFWNDT.js';
5
5
  import '../chunk-UT6CW3C7.js';
6
6
  import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,37 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export interface ThinkingIndicatorProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
3
+ /**
4
+ * What the assistant is doing now, beside the mark, under a slow shimmer:
5
+ * "Thinking", then the step that runs ("Listing the agents"). Left out, the
6
+ * mark stands alone, as it does while an answer's words arrive.
7
+ */
8
+ status?: string | undefined;
9
+ /**
10
+ * What a screen reader is told, once, when the indicator appears.
11
+ * "Thinking" by default. It never changes with `status`, so a reader is not
12
+ * told every step the assistant takes while they read.
13
+ */
14
+ label?: string | undefined;
15
+ }
16
+ /**
17
+ * The assistant at work, drawn where its answer will be: the Assistant's mark
18
+ * with its four blades turning a quarter at a time around a still core, and,
19
+ * while nothing of the answer is on screen yet, a line saying what it is doing
20
+ * under a slow shimmer.
21
+ *
22
+ * IN PLACE OF A CARET. A blinking bar after streamed text lands wherever the
23
+ * last block ends, on a line of its own under a list or at the start of an
24
+ * empty reply. The mark is a block of its own after the answer, one line of
25
+ * prose tall, so it never sits inside the words, and nothing moves when the
26
+ * first of them arrive: they are written above it, and it keeps its height.
27
+ *
28
+ * ONE ANNOUNCEMENT. `label` is said once, through a status region that keeps
29
+ * the same words for as long as the indicator stands; the visible line, which
30
+ * changes with every step, is hidden from assistive technology, where the
31
+ * steps are read from their own list.
32
+ *
33
+ * UNDER REDUCED MOTION the blades hold still and the line is drawn in the
34
+ * secondary ink without the shimmer: the mark and the words still say that
35
+ * work is under way.
36
+ */
37
+ export declare function ThinkingIndicator({ status, label, className, ...rest }: ThinkingIndicatorProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import './ThinkingIndicator.css';
2
+ export { ThinkingIndicator } from './ThinkingIndicator.js';
3
+ export type { ThinkingIndicatorProps } from './ThinkingIndicator.js';
@@ -0,0 +1,3 @@
1
+ export { ThinkingIndicator } from '../chunk-E2MIUNUU.js';
2
+ import '../chunk-UT6CW3C7.js';
3
+ import '../chunk-ODEQTPFM.js';