@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.
- package/dist/AgentHandoffPanel/index.js +8 -8
- package/dist/AppShell/index.js +4 -4
- package/dist/ArrangeFrame/index.js +2 -2
- package/dist/ArrangeList/index.js +4 -4
- package/dist/ArtifactBar/index.js +6 -6
- package/dist/ArtifactCard/index.js +4 -4
- package/dist/ArtifactPanel/index.js +3 -3
- package/dist/AvatarPicker/index.js +7 -7
- package/dist/Button/index.js +1 -1
- package/dist/{Button-VXJ7M5XF.css → Button-VRRYSXFN.css} +4 -0
- package/dist/Canvas/index.js +3 -3
- package/dist/CanvasBoard/index.js +5 -5
- package/dist/CanvasToolbar/index.js +4 -4
- package/dist/ChatThread/index.js +2 -2
- package/dist/Checkbox/index.js +3 -3
- package/dist/CodeBlock/index.js +4 -4
- package/dist/ColorField/index.js +3 -3
- package/dist/ColorSwatch/index.js +4 -4
- package/dist/Combobox/index.js +3 -3
- package/dist/CommandPalette/index.js +5 -5
- package/dist/CommentThread/index.js +6 -6
- package/dist/Composer/index.js +3 -3
- package/dist/ConfirmField/index.js +3 -3
- package/dist/ConflictNote/index.js +2 -2
- package/dist/ContrastHelp/index.js +2 -2
- package/dist/Copyable/index.js +3 -3
- package/dist/DataGrid/index.js +5 -5
- package/dist/DataTable/index.js +7 -7
- package/dist/DataView/index.js +9 -9
- package/dist/DateTimePicker/index.js +3 -3
- package/dist/DocTabsEditor/index.js +5 -5
- package/dist/DownloadButton/index.js +2 -2
- package/dist/{Editor-ZO5CCXOJ.js → Editor-DM7X24B7.js} +5 -5
- package/dist/ErrorBoundary/index.js +2 -2
- package/dist/FileDrop/index.js +2 -2
- package/dist/FollowBanner/index.js +2 -2
- package/dist/HuePicker/index.js +6 -6
- package/dist/IconButton/index.js +1 -1
- package/dist/{IconButton-6WA7UEBJ.css → IconButton-2D2PZ6GU.css} +4 -0
- package/dist/IndicatorAnchor/IndicatorAnchor.d.ts +29 -0
- package/dist/IndicatorAnchor/index.d.ts +3 -0
- package/dist/IndicatorAnchor/index.js +2 -0
- package/dist/IndicatorAnchor-ZVP47Q4T.css +33 -0
- package/dist/InlineEditor/index.js +2 -2
- package/dist/Input/index.js +2 -2
- package/dist/LinkInterstitial/index.js +4 -4
- package/dist/ListInput/index.js +4 -4
- package/dist/LogoSlot/index.js +3 -3
- package/dist/MarkdownEditor/index.js +6 -6
- package/dist/Menu/index.js +3 -3
- package/dist/MergeConflicts/index.js +6 -6
- package/dist/Modal/index.js +3 -3
- package/dist/OpenInAppCard/index.js +3 -3
- package/dist/OrgTable/index.js +3 -3
- package/dist/PeekRail/index.js +3 -3
- package/dist/PeopleRail/index.js +3 -3
- package/dist/PinTile/index.js +2 -2
- package/dist/PresenterView/index.js +4 -4
- package/dist/PrincipalPicker/index.js +4 -4
- package/dist/ProposalCard/index.js +3 -3
- package/dist/Prose/Prose.d.ts +5 -2
- package/dist/Prose/index.js +1 -1
- package/dist/{Prose-BTXNFT2Q.css → Prose-OMV2T6NT.css} +19 -2
- package/dist/ReceiptStrip/index.js +2 -2
- package/dist/ResultTableCard/index.js +3 -3
- package/dist/RichEditor/index.js +2 -2
- package/dist/SandboxedFrame/index.js +2 -2
- package/dist/SegmentedControl/index.js +5 -5
- package/dist/SelectionBar/index.js +2 -2
- package/dist/SendButton/SendButton.d.ts +25 -11
- package/dist/SendButton/index.d.ts +1 -0
- package/dist/SendButton/index.js +2 -2
- package/dist/SendButton-L4UX54XS.css +173 -0
- package/dist/ShareDialog/index.js +5 -5
- package/dist/SheetColumnEditor/index.js +9 -9
- package/dist/SheetGrid/index.js +4 -4
- package/dist/SidePanel/index.js +2 -2
- package/dist/SlideCompare/index.js +2 -2
- package/dist/SlideFilmstrip/index.js +4 -4
- package/dist/SlideNav/index.js +2 -2
- package/dist/Switcher/index.js +5 -5
- package/dist/Tabs/index.js +4 -4
- package/dist/TagsInput/index.js +2 -2
- package/dist/ThemeSwitcher/index.js +6 -6
- package/dist/ThemeToggle/index.js +2 -2
- package/dist/ThinkingIndicator/ThinkingIndicator.d.ts +37 -0
- package/dist/ThinkingIndicator/index.d.ts +3 -0
- package/dist/ThinkingIndicator/index.js +3 -0
- package/dist/ThinkingIndicator-QJMX2TXC.css +122 -0
- package/dist/TimeRangePicker/index.js +8 -8
- package/dist/TimeWindowPicker/index.js +4 -4
- package/dist/TreeCanvas/index.js +4 -4
- package/dist/TreeGrid/index.js +2 -2
- package/dist/VersionCompare/index.js +6 -6
- package/dist/VersionTimeline/index.js +2 -2
- package/dist/chunk-27MJPU7G.js +13 -0
- package/dist/{chunk-V3RW7FRQ.js → chunk-2BDPR4I3.js} +2 -2
- package/dist/{chunk-M2S5LG2H.js → chunk-2JHGPXYG.js} +1 -1
- package/dist/{chunk-2PNUEIN3.js → chunk-2NNGOCWM.js} +2 -2
- package/dist/{chunk-2GIUKIFV.js → chunk-2XWFWNDT.js} +1 -1
- package/dist/{chunk-CZCZLEDD.js → chunk-3633T7EJ.js} +1 -1
- package/dist/{chunk-KMWQLO4M.js → chunk-3BQWARG2.js} +1 -1
- package/dist/{chunk-SEPFBDSS.js → chunk-3OV26XP4.js} +1 -1
- package/dist/{chunk-VSDHSSKA.js → chunk-3PJHUDXD.js} +3 -3
- package/dist/{chunk-WRNDXYXK.js → chunk-3Q6N6FJL.js} +2 -2
- package/dist/{chunk-YDVINM4N.js → chunk-46VE5TVS.js} +1 -1
- package/dist/{chunk-O3K5H6CP.js → chunk-53NTMTRM.js} +1 -1
- package/dist/{chunk-AQDQGCRB.js → chunk-5CY6BW4Y.js} +1 -1
- package/dist/{chunk-QMIDBQCK.js → chunk-5FTJNKNX.js} +1 -1
- package/dist/{chunk-365RJTJW.js → chunk-5G76O23M.js} +2 -2
- package/dist/{chunk-JW5EFD4R.js → chunk-5KW63GZ3.js} +4 -4
- package/dist/{chunk-5ZZRSTLQ.js → chunk-5MN2HISF.js} +2 -2
- package/dist/{chunk-LBWFAVV4.js → chunk-5NJ4BIUA.js} +1 -1
- package/dist/{chunk-PNGE2N6F.js → chunk-5PMFRAGL.js} +6 -6
- package/dist/{chunk-CPOU5TA7.js → chunk-5UPWU6ZJ.js} +4 -4
- package/dist/{chunk-OE3UUHXO.js → chunk-5YIL4WJP.js} +1 -1
- package/dist/{chunk-TIXAEVYX.js → chunk-5ZGJ22CO.js} +1 -1
- package/dist/{chunk-ZECQEJUE.js → chunk-6Z4JZHRB.js} +1 -1
- package/dist/{chunk-IPAIGCWB.js → chunk-7QTPJDRF.js} +1 -1
- package/dist/{chunk-HV6XDLUM.js → chunk-7SRSPU4O.js} +2 -2
- package/dist/{chunk-4Q4MS7DQ.js → chunk-B5ZHJWAZ.js} +4 -4
- package/dist/{chunk-AVTQ6CIX.js → chunk-DEAFAK3U.js} +1 -1
- package/dist/{chunk-HQDEZNVJ.js → chunk-DMI4QJDY.js} +1 -1
- package/dist/{chunk-JCSA3XVH.js → chunk-DVVP27OD.js} +1 -1
- package/dist/chunk-E2MIUNUU.js +19 -0
- package/dist/{chunk-YUQHMGEY.js → chunk-EFIURN3U.js} +2 -2
- package/dist/{chunk-RIMDUTL6.js → chunk-EQHJTGLY.js} +1 -1
- package/dist/{chunk-6CARUBNX.js → chunk-F2IYVVA3.js} +1 -1
- package/dist/{chunk-VSZP3YRV.js → chunk-GWPWLVN3.js} +1 -1
- package/dist/{chunk-YDVEFGLP.js → chunk-I43D5K6A.js} +2 -2
- package/dist/{chunk-BMFA4G5D.js → chunk-I74C4TM6.js} +2 -2
- package/dist/{chunk-HTEFROIZ.js → chunk-IOTN23FZ.js} +2 -2
- package/dist/{chunk-IC6HNMTD.js → chunk-K4IVKHKU.js} +1 -1
- package/dist/{chunk-JMF5UXUG.js → chunk-KA2GAB3N.js} +1 -1
- package/dist/{chunk-NMT4A46R.js → chunk-KBTJMJPX.js} +1 -1
- package/dist/{chunk-RNULFW4V.js → chunk-KIPAFCVS.js} +1 -1
- package/dist/{chunk-DNKK6PIR.js → chunk-KVWZDCTQ.js} +2 -2
- package/dist/{chunk-DTVLZ2HZ.js → chunk-KWTRRS7E.js} +2 -2
- package/dist/{chunk-POUCKFMQ.js → chunk-LG6TUGET.js} +1 -1
- package/dist/{chunk-DBV7U54M.js → chunk-LND6XSXN.js} +4 -4
- package/dist/{chunk-D2R65FBU.js → chunk-LODRX4FU.js} +2 -2
- package/dist/{chunk-WR5CTBAE.js → chunk-MHFTG2LO.js} +1 -1
- package/dist/{chunk-XDHILOXS.js → chunk-MOW65OIJ.js} +2 -2
- package/dist/{chunk-UC7SEKT5.js → chunk-NL72YZWF.js} +1 -1
- package/dist/{chunk-PR7MFMDZ.js → chunk-NLI7OVO2.js} +1 -1
- package/dist/{chunk-FCM5YD37.js → chunk-NM6RR2GA.js} +6 -6
- package/dist/{chunk-BJ4LMNXZ.js → chunk-NRMXUNLR.js} +1 -1
- package/dist/{chunk-RECXPH7X.js → chunk-O7VXE4TO.js} +3 -3
- package/dist/{chunk-OVVMNUZD.js → chunk-OM6CPZB7.js} +1 -1
- package/dist/{chunk-LEB3FOSA.js → chunk-P5S2SPTK.js} +2 -2
- package/dist/chunk-PBR5C5MX.js +33 -0
- package/dist/{chunk-5FSTYJUU.js → chunk-PFXUEEHT.js} +2 -2
- package/dist/{chunk-YCBIM4XO.js → chunk-PGKETYGL.js} +2 -2
- package/dist/{chunk-74UPBUD6.js → chunk-PUJUWLCX.js} +1 -1
- package/dist/{chunk-VRL2YMYT.js → chunk-Q4DNAO3O.js} +1 -1
- package/dist/{chunk-GWCOPRXL.js → chunk-RLFPBRN4.js} +1 -1
- package/dist/{chunk-YND37ZPE.js → chunk-RPHQNXE5.js} +1 -1
- package/dist/{chunk-KNABA7D4.js → chunk-SG2375ZY.js} +3 -3
- package/dist/{chunk-HKQUOIL5.js → chunk-SPCSFJNY.js} +1 -1
- package/dist/{chunk-FWWHPUHZ.js → chunk-TLIJG4TP.js} +1 -1
- package/dist/{chunk-V6HG3GG4.js → chunk-TUNEMQXF.js} +1 -1
- package/dist/{chunk-Z7CD4HLH.js → chunk-TXA3HMWP.js} +2 -2
- package/dist/{chunk-7ZKTYBWW.js → chunk-UTBCDOGP.js} +3 -3
- package/dist/{chunk-UTIZFLI3.js → chunk-VBO2GYWX.js} +2 -2
- package/dist/{chunk-MTIVWCO3.js → chunk-VC2M2E7N.js} +1 -1
- package/dist/{chunk-4H5H67CB.js → chunk-VN3DCUED.js} +1 -1
- package/dist/{chunk-54HTAN33.js → chunk-VRPDQSXZ.js} +3 -3
- package/dist/{chunk-JUOKHJA3.js → chunk-VSTD65SL.js} +1 -1
- package/dist/{chunk-EQYNFXUO.js → chunk-W2Q5DZJB.js} +1 -1
- package/dist/{chunk-XCT6P7LB.js → chunk-WDPREXOL.js} +5 -5
- package/dist/{chunk-BAUJ3NLC.js → chunk-WR7UDG7U.js} +1 -1
- package/dist/{chunk-2N7OPHD4.js → chunk-WXSGCYZO.js} +3 -3
- package/dist/{chunk-722PJA72.js → chunk-XLJPLCK6.js} +1 -1
- package/dist/{chunk-Z4DYKDD6.js → chunk-YSHQQNB6.js} +4 -4
- package/dist/{chunk-3M7UZ43L.js → chunk-ZEPUKRO7.js} +1 -1
- package/dist/{chunk-7V7EBBVF.js → chunk-ZRKUTFYE.js} +2 -2
- package/dist/generated/index.d.ts +2 -0
- package/dist/generated/index.js +102 -100
- package/dist/index.js +102 -100
- package/dist/styles.css +367 -5
- package/package.json +3 -3
- package/dist/chunk-P7QDOKTP.js +0 -27
- /package/dist/{chunk-EWTPXRRM.js → chunk-OXZKRUGM.js} +0 -0
package/dist/styles.css
CHANGED
|
@@ -5419,7 +5419,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5419
5419
|
}
|
|
5420
5420
|
|
|
5421
5421
|
|
|
5422
|
-
/* Button-
|
|
5422
|
+
/* Button-VRRYSXFN.css */
|
|
5423
5423
|
/*
|
|
5424
5424
|
* The button, and the link drawn as one.
|
|
5425
5425
|
*
|
|
@@ -5630,17 +5630,20 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5630
5630
|
*/
|
|
5631
5631
|
.crewlet-btn--secondary {
|
|
5632
5632
|
background: var(--color-surface-subtle);
|
|
5633
|
+
--crewlet-indicator-ring: var(--color-surface-subtle);
|
|
5633
5634
|
color: var(--color-text-primary);
|
|
5634
5635
|
border-color: var(--color-border-strong);
|
|
5635
5636
|
}
|
|
5636
5637
|
|
|
5637
5638
|
.crewlet-btn--secondary:hover:not(:disabled):not([aria-disabled='true']) {
|
|
5638
5639
|
background: var(--color-surface-elevated);
|
|
5640
|
+
--crewlet-indicator-ring: var(--color-surface-elevated);
|
|
5639
5641
|
border-color: var(--color-border-strong-hover);
|
|
5640
5642
|
}
|
|
5641
5643
|
|
|
5642
5644
|
.crewlet-btn--secondary:active:not(:disabled):not([aria-disabled='true']) {
|
|
5643
5645
|
background: var(--color-surface-pressed);
|
|
5646
|
+
--crewlet-indicator-ring: var(--color-surface-pressed);
|
|
5644
5647
|
}
|
|
5645
5648
|
|
|
5646
5649
|
/* Outline: the branded secondary. Its ink is the accent's text step, never
|
|
@@ -5708,6 +5711,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
|
|
|
5708
5711
|
about, so the two cannot disagree. */
|
|
5709
5712
|
.crewlet-btn[aria-pressed='true'] {
|
|
5710
5713
|
background: var(--color-brand-accent-soft);
|
|
5714
|
+
--crewlet-indicator-ring: var(--color-brand-accent-soft);
|
|
5711
5715
|
color: var(--color-brand-accent-ink);
|
|
5712
5716
|
border-color: var(--color-brand-accent-soft-strong);
|
|
5713
5717
|
}
|
|
@@ -17596,7 +17600,7 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
17596
17600
|
}
|
|
17597
17601
|
|
|
17598
17602
|
|
|
17599
|
-
/* IconButton-
|
|
17603
|
+
/* IconButton-2D2PZ6GU.css */
|
|
17600
17604
|
/*
|
|
17601
17605
|
* IconButton: a square icon-only control.
|
|
17602
17606
|
*
|
|
@@ -17720,17 +17724,20 @@ button.crewlet-finding-list__row:focus-visible {
|
|
|
17720
17724
|
*/
|
|
17721
17725
|
.crewlet-icon-btn--secondary {
|
|
17722
17726
|
background: var(--color-surface-subtle);
|
|
17727
|
+
--crewlet-indicator-ring: var(--color-surface-subtle);
|
|
17723
17728
|
border-color: var(--color-border-strong);
|
|
17724
17729
|
color: var(--color-text-primary);
|
|
17725
17730
|
}
|
|
17726
17731
|
|
|
17727
17732
|
.crewlet-icon-btn--secondary:hover:not(:disabled):not([aria-disabled='true']) {
|
|
17728
17733
|
background: var(--color-surface-elevated);
|
|
17734
|
+
--crewlet-indicator-ring: var(--color-surface-elevated);
|
|
17729
17735
|
border-color: var(--color-border-strong-hover);
|
|
17730
17736
|
}
|
|
17731
17737
|
|
|
17732
17738
|
.crewlet-icon-btn--secondary:active:not(:disabled):not([aria-disabled='true']) {
|
|
17733
17739
|
background: var(--color-surface-pressed);
|
|
17740
|
+
--crewlet-indicator-ring: var(--color-surface-pressed);
|
|
17734
17741
|
}
|
|
17735
17742
|
|
|
17736
17743
|
/* ghost: transparent, neutral ink, a mild tint on hover. */
|
|
@@ -17806,6 +17813,7 @@ a.crewlet-icon-btn {
|
|
|
17806
17813
|
/* A toggle that is on, drawn from the state a screen reader is already told. */
|
|
17807
17814
|
.crewlet-icon-btn[aria-pressed='true'] {
|
|
17808
17815
|
background: var(--color-brand-accent-soft);
|
|
17816
|
+
--crewlet-indicator-ring: var(--color-brand-accent-soft);
|
|
17809
17817
|
color: var(--color-brand-accent-ink);
|
|
17810
17818
|
}
|
|
17811
17819
|
|
|
@@ -18316,6 +18324,42 @@ a.crewlet-icon-btn {
|
|
|
18316
18324
|
}
|
|
18317
18325
|
|
|
18318
18326
|
|
|
18327
|
+
/* IndicatorAnchor-ZVP47Q4T.css */
|
|
18328
|
+
/*
|
|
18329
|
+
* A mark with an indicator at its top end corner. The anchor is as large as
|
|
18330
|
+
* the mark, so the corner is the mark's; the indicator's centre stands on it.
|
|
18331
|
+
*/
|
|
18332
|
+
.crewlet-indicator-anchor {
|
|
18333
|
+
position: relative;
|
|
18334
|
+
display: inline-flex;
|
|
18335
|
+
flex: none;
|
|
18336
|
+
align-items: center;
|
|
18337
|
+
justify-content: center;
|
|
18338
|
+
line-height: 0;
|
|
18339
|
+
}
|
|
18340
|
+
|
|
18341
|
+
/*
|
|
18342
|
+
* The indicator's box is the dot's own size (the line height is zero, so an
|
|
18343
|
+
* inline dot adds no strut), centred on the corner by translating half of
|
|
18344
|
+
* itself out, and ringed in the ground's colour so it parts from the mark.
|
|
18345
|
+
*/
|
|
18346
|
+
.crewlet-indicator-anchor__indicator {
|
|
18347
|
+
position: absolute;
|
|
18348
|
+
inset-block-start: 0;
|
|
18349
|
+
inset-inline-end: 0;
|
|
18350
|
+
display: inline-flex;
|
|
18351
|
+
line-height: 0;
|
|
18352
|
+
border-radius: var(--radius-circle);
|
|
18353
|
+
box-shadow: 0 0 0 2px var(--crewlet-indicator-ring, var(--color-surface-background));
|
|
18354
|
+
transform: translate(50%, -50%);
|
|
18355
|
+
pointer-events: none;
|
|
18356
|
+
}
|
|
18357
|
+
|
|
18358
|
+
[dir='rtl'] .crewlet-indicator-anchor__indicator {
|
|
18359
|
+
transform: translate(-50%, -50%);
|
|
18360
|
+
}
|
|
18361
|
+
|
|
18362
|
+
|
|
18319
18363
|
/* InlineCode-ASYHLN3E.css */
|
|
18320
18364
|
/*
|
|
18321
18365
|
* One identifier inside a sentence: a mono chip on the inset surface.
|
|
@@ -25310,7 +25354,7 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
25310
25354
|
}
|
|
25311
25355
|
|
|
25312
25356
|
|
|
25313
|
-
/* Prose-
|
|
25357
|
+
/* Prose-OMV2T6NT.css */
|
|
25314
25358
|
/*
|
|
25315
25359
|
* Natural language: the proportional face, real leading, a bounded measure.
|
|
25316
25360
|
*/
|
|
@@ -25374,7 +25418,23 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
25374
25418
|
transition: color var(--motion-duration-slow) var(--motion-easing-default);
|
|
25375
25419
|
}
|
|
25376
25420
|
|
|
25377
|
-
|
|
25421
|
+
/*
|
|
25422
|
+
* THE CARET ENDS THE LAST LINE OF TEXT, never a line of its own. On a block
|
|
25423
|
+
* that holds rendered Markdown, the block's own ::after came after its last
|
|
25424
|
+
* paragraph or list, so the caret stood alone on a new line; and on a reply
|
|
25425
|
+
* with no words yet it stood alone at the start. So: no caret on an empty
|
|
25426
|
+
* block, none on the block itself when its children are blocks, and the caret
|
|
25427
|
+
* after the last child instead when that child is a paragraph or a heading,
|
|
25428
|
+
* whose last line it then ends. A list, a table or code last draws none: a
|
|
25429
|
+
* caret after its final row reads as a stray mark, not as the end of a line.
|
|
25430
|
+
*/
|
|
25431
|
+
.crewlet-prose--streaming:empty::after,
|
|
25432
|
+
.crewlet-prose--streaming:has(> :is(p, div, ul, ol, pre, table, blockquote, h1, h2, h3, h4, h5, h6))::after {
|
|
25433
|
+
content: none;
|
|
25434
|
+
}
|
|
25435
|
+
|
|
25436
|
+
.crewlet-prose--streaming::after,
|
|
25437
|
+
.crewlet-prose--streaming > :is(p, h1, h2, h3, h4, h5, h6):last-child::after {
|
|
25378
25438
|
content: '';
|
|
25379
25439
|
display: inline-block;
|
|
25380
25440
|
width: 2px;
|
|
@@ -25406,7 +25466,8 @@ button.crewlet-presence-stack__member:focus-visible {
|
|
|
25406
25466
|
transition: none;
|
|
25407
25467
|
}
|
|
25408
25468
|
|
|
25409
|
-
.crewlet-prose--streaming::after
|
|
25469
|
+
.crewlet-prose--streaming::after,
|
|
25470
|
+
.crewlet-prose--streaming > :is(p, h1, h2, h3, h4, h5, h6):last-child::after {
|
|
25410
25471
|
animation: none;
|
|
25411
25472
|
}
|
|
25412
25473
|
}
|
|
@@ -27861,6 +27922,182 @@ svg.crewlet-select__chevron {
|
|
|
27861
27922
|
}
|
|
27862
27923
|
|
|
27863
27924
|
|
|
27925
|
+
/* SendButton-L4UX54XS.css */
|
|
27926
|
+
/*
|
|
27927
|
+
* A chat composer's Send, which becomes Stop. See SendButton.tsx for what each
|
|
27928
|
+
* state says. The surfaces, edges and hover and press inks are IconButton's
|
|
27929
|
+
* primary and secondary squares; this sheet adds the glyph cross fade, the
|
|
27930
|
+
* quiet held state, the press and the running arc.
|
|
27931
|
+
*/
|
|
27932
|
+
|
|
27933
|
+
/*
|
|
27934
|
+
* THE ARC'S ANGLE, registered so it can turn. An unregistered custom property
|
|
27935
|
+
* animates in one step at the halfway point, which would make the arc jump
|
|
27936
|
+
* between two places rather than travel.
|
|
27937
|
+
*/
|
|
27938
|
+
@property --crewlet-send-button-arc {
|
|
27939
|
+
syntax: '<angle>';
|
|
27940
|
+
inherits: false;
|
|
27941
|
+
initial-value: 0deg;
|
|
27942
|
+
}
|
|
27943
|
+
|
|
27944
|
+
.crewlet-send-button {
|
|
27945
|
+
position: relative;
|
|
27946
|
+
transition:
|
|
27947
|
+
background var(--motion-duration-fast) var(--motion-easing-default),
|
|
27948
|
+
border-color var(--motion-duration-fast) var(--motion-easing-default),
|
|
27949
|
+
color var(--motion-duration-fast) var(--motion-easing-default),
|
|
27950
|
+
transform var(--motion-duration-instant) var(--motion-easing-out);
|
|
27951
|
+
}
|
|
27952
|
+
|
|
27953
|
+
/* A press sinks the square a little, so the pointer feels it land. */
|
|
27954
|
+
.crewlet-send-button:active:not([aria-disabled='true']) {
|
|
27955
|
+
transform: scale(0.94);
|
|
27956
|
+
}
|
|
27957
|
+
|
|
27958
|
+
/*
|
|
27959
|
+
* BOTH GLYPHS IN ONE CELL. The one in use stands at full size; the other is
|
|
27960
|
+
* faded and scaled to half, and the two trade places on the base step with
|
|
27961
|
+
* the entering surface's ease, so Send turning into Stop reads as one control
|
|
27962
|
+
* changing its mind rather than as two buttons swapping.
|
|
27963
|
+
*/
|
|
27964
|
+
.crewlet-send-button__glyphs {
|
|
27965
|
+
display: grid;
|
|
27966
|
+
place-items: center;
|
|
27967
|
+
}
|
|
27968
|
+
|
|
27969
|
+
.crewlet-send-button__glyph {
|
|
27970
|
+
grid-area: 1 / 1;
|
|
27971
|
+
transition:
|
|
27972
|
+
opacity var(--motion-duration-base) var(--motion-easing-default),
|
|
27973
|
+
transform var(--motion-duration-base) var(--motion-easing-emphasized);
|
|
27974
|
+
}
|
|
27975
|
+
|
|
27976
|
+
.crewlet-send-button--send .crewlet-send-button__glyph--stop,
|
|
27977
|
+
.crewlet-send-button--stop .crewlet-send-button__glyph--send {
|
|
27978
|
+
opacity: 0;
|
|
27979
|
+
transform: scale(0.5);
|
|
27980
|
+
}
|
|
27981
|
+
|
|
27982
|
+
/*
|
|
27983
|
+
* THE STOP SQUARE IS SMALLER THAN THE ARROW: a filled block at the arrow's
|
|
27984
|
+
* 14px was the heaviest mark on the panel. At the 12px step its square is
|
|
27985
|
+
* nine pixels, crisp on the pixel grid and the weight of the arrow's stroke.
|
|
27986
|
+
*/
|
|
27987
|
+
.crewlet-send-button.crewlet-icon-btn--md .crewlet-send-button__glyph--stop {
|
|
27988
|
+
width: var(--font-size-xs);
|
|
27989
|
+
height: var(--font-size-xs);
|
|
27990
|
+
}
|
|
27991
|
+
|
|
27992
|
+
/*
|
|
27993
|
+
* HELD, AT FULL OPACITY, with the glyph in the tertiary ink. A faded accent
|
|
27994
|
+
* block read as a muddy, broken button on the dark ground, and the composer's
|
|
27995
|
+
* own fade multiplied it further. Send held is the accent's soft tint, so it
|
|
27996
|
+
* is still the purple control that lights up the moment there is something
|
|
27997
|
+
* to send; Stop held (a stop already under way) is the neutral hover overlay,
|
|
27998
|
+
* since nothing about it is waiting to light up.
|
|
27999
|
+
*/
|
|
28000
|
+
.crewlet-send-button.crewlet-icon-btn[aria-disabled='true'] {
|
|
28001
|
+
opacity: 1;
|
|
28002
|
+
border-color: transparent;
|
|
28003
|
+
color: var(--color-text-tertiary);
|
|
28004
|
+
}
|
|
28005
|
+
|
|
28006
|
+
.crewlet-send-button--send.crewlet-icon-btn[aria-disabled='true'] {
|
|
28007
|
+
background: var(--color-brand-accent-soft);
|
|
28008
|
+
}
|
|
28009
|
+
|
|
28010
|
+
.crewlet-send-button--stop.crewlet-icon-btn[aria-disabled='true'] {
|
|
28011
|
+
background: var(--color-surface-hover);
|
|
28012
|
+
}
|
|
28013
|
+
|
|
28014
|
+
/*
|
|
28015
|
+
* THE RUNNING ARC: a band of the accent travelling round Stop's edge, over its
|
|
28016
|
+
* own 1px border, with a tail that fades behind it. The band is a conic
|
|
28017
|
+
* gradient cut to a 2px ring by a mask (a mask reads only alpha, so its black
|
|
28018
|
+
* is opacity rather than a colour), so it follows the rounded corner exactly.
|
|
28019
|
+
* One round is the working ring's sweep period, and it fades in on the
|
|
28020
|
+
* moderate step as Stop arrives.
|
|
28021
|
+
*/
|
|
28022
|
+
.crewlet-send-button--stop::before {
|
|
28023
|
+
content: '';
|
|
28024
|
+
position: absolute;
|
|
28025
|
+
inset: -1px;
|
|
28026
|
+
padding: 2px;
|
|
28027
|
+
border-radius: inherit;
|
|
28028
|
+
background: conic-gradient(
|
|
28029
|
+
from var(--crewlet-send-button-arc),
|
|
28030
|
+
transparent 0turn,
|
|
28031
|
+
transparent 0.55turn,
|
|
28032
|
+
var(--color-brand-accent) 1turn
|
|
28033
|
+
);
|
|
28034
|
+
-webkit-mask:
|
|
28035
|
+
linear-gradient(#000 0 0) content-box,
|
|
28036
|
+
linear-gradient(#000 0 0);
|
|
28037
|
+
-webkit-mask-composite: xor;
|
|
28038
|
+
mask:
|
|
28039
|
+
linear-gradient(#000 0 0) content-box exclude,
|
|
28040
|
+
linear-gradient(#000 0 0);
|
|
28041
|
+
/* Paint, never a target. */
|
|
28042
|
+
pointer-events: none;
|
|
28043
|
+
animation:
|
|
28044
|
+
crewlet-send-button-arc var(--motion-duration-sweep) linear infinite,
|
|
28045
|
+
crewlet-send-button-arc-in var(--motion-duration-moderate) var(--motion-easing-out);
|
|
28046
|
+
}
|
|
28047
|
+
|
|
28048
|
+
/* A stop already under way has nothing left to show running. */
|
|
28049
|
+
.crewlet-send-button--stop[aria-disabled='true']::before {
|
|
28050
|
+
display: none;
|
|
28051
|
+
}
|
|
28052
|
+
|
|
28053
|
+
@keyframes crewlet-send-button-arc {
|
|
28054
|
+
to {
|
|
28055
|
+
--crewlet-send-button-arc: 360deg;
|
|
28056
|
+
}
|
|
28057
|
+
}
|
|
28058
|
+
|
|
28059
|
+
@keyframes crewlet-send-button-arc-in {
|
|
28060
|
+
from {
|
|
28061
|
+
opacity: 0;
|
|
28062
|
+
}
|
|
28063
|
+
|
|
28064
|
+
to {
|
|
28065
|
+
opacity: 1;
|
|
28066
|
+
}
|
|
28067
|
+
}
|
|
28068
|
+
|
|
28069
|
+
/*
|
|
28070
|
+
* UNDER REDUCED MOTION nothing travels or scales: the glyphs change in place,
|
|
28071
|
+
* and the arc becomes the whole edge in the accent, still and still saying
|
|
28072
|
+
* that something runs.
|
|
28073
|
+
*/
|
|
28074
|
+
@media (prefers-reduced-motion: reduce) {
|
|
28075
|
+
.crewlet-send-button {
|
|
28076
|
+
transition: none;
|
|
28077
|
+
}
|
|
28078
|
+
|
|
28079
|
+
.crewlet-send-button:active:not([aria-disabled='true']) {
|
|
28080
|
+
transform: none;
|
|
28081
|
+
}
|
|
28082
|
+
|
|
28083
|
+
.crewlet-send-button__glyph {
|
|
28084
|
+
transition: none;
|
|
28085
|
+
}
|
|
28086
|
+
|
|
28087
|
+
.crewlet-send-button--stop::before {
|
|
28088
|
+
background: var(--color-brand-accent);
|
|
28089
|
+
animation: none;
|
|
28090
|
+
}
|
|
28091
|
+
}
|
|
28092
|
+
|
|
28093
|
+
/* The system draws its own edge; a masked gradient is not repainted there. */
|
|
28094
|
+
@media (forced-colors: active) {
|
|
28095
|
+
.crewlet-send-button--stop::before {
|
|
28096
|
+
display: none;
|
|
28097
|
+
}
|
|
28098
|
+
}
|
|
28099
|
+
|
|
28100
|
+
|
|
27864
28101
|
/* SettingsTable-6DUFAFXG.css */
|
|
27865
28102
|
/*
|
|
27866
28103
|
* SettingsTable: a read-only table of settings, one row each, on one grid.
|
|
@@ -35564,6 +35801,131 @@ b.crewlet-switcher__match {
|
|
|
35564
35801
|
}
|
|
35565
35802
|
|
|
35566
35803
|
|
|
35804
|
+
/* ThinkingIndicator-QJMX2TXC.css */
|
|
35805
|
+
/*
|
|
35806
|
+
* The assistant at work: the Assistant's mark, its blades turning, and a line
|
|
35807
|
+
* of status under a shimmer. See ThinkingIndicator.tsx for why it replaces a
|
|
35808
|
+
* caret and how it is announced.
|
|
35809
|
+
*/
|
|
35810
|
+
|
|
35811
|
+
/*
|
|
35812
|
+
* ONE LINE OF PROSE TALL, at every state: the mark alone, the mark with a
|
|
35813
|
+
* status line, and the line changing from one step to the next all keep the
|
|
35814
|
+
* same height, so the thread never moves while the assistant works.
|
|
35815
|
+
*/
|
|
35816
|
+
.crewlet-thinking {
|
|
35817
|
+
display: flex;
|
|
35818
|
+
align-items: center;
|
|
35819
|
+
gap: var(--spacing-2);
|
|
35820
|
+
min-width: 0;
|
|
35821
|
+
min-height: calc(var(--font-size-compact) * var(--font-line-height-relaxed));
|
|
35822
|
+
font-family: var(--font-family-sans);
|
|
35823
|
+
font-size: var(--font-size-compact);
|
|
35824
|
+
line-height: var(--font-line-height-relaxed);
|
|
35825
|
+
}
|
|
35826
|
+
|
|
35827
|
+
/*
|
|
35828
|
+
* THE BLADES TURN A QUARTER, THEN REST. The figure is four blades around a
|
|
35829
|
+
* core, the same after a quarter turn, so each round ends where the next
|
|
35830
|
+
* begins and the loop never shows a seam. One round is the breath period
|
|
35831
|
+
* (2.2s): the turn takes its first half on the in-out ease and the second
|
|
35832
|
+
* half is still, which reads as steady thought rather than as a spinner. The
|
|
35833
|
+
* core holds still, as the mark's own description promises.
|
|
35834
|
+
*/
|
|
35835
|
+
.crewlet-thinking__mark [data-motion='turn'] {
|
|
35836
|
+
transform-box: view-box;
|
|
35837
|
+
transform-origin: 50% 50%;
|
|
35838
|
+
animation: crewlet-thinking-turn var(--motion-duration-breath) var(--motion-easing-in-out) infinite;
|
|
35839
|
+
}
|
|
35840
|
+
|
|
35841
|
+
@keyframes crewlet-thinking-turn {
|
|
35842
|
+
0% {
|
|
35843
|
+
transform: rotate(0deg);
|
|
35844
|
+
}
|
|
35845
|
+
|
|
35846
|
+
50%,
|
|
35847
|
+
100% {
|
|
35848
|
+
transform: rotate(90deg);
|
|
35849
|
+
}
|
|
35850
|
+
}
|
|
35851
|
+
|
|
35852
|
+
/*
|
|
35853
|
+
* THE SHIMMER IS A LIGHTER BAND CROSSING THE WORDS, the band Skeleton sweeps
|
|
35854
|
+
* across a placeholder, set in ink rather than in surface: the words are the
|
|
35855
|
+
* secondary ink at rest, so they read at every point of the sweep, and the
|
|
35856
|
+
* band is the primary ink. The gradient is clipped to the glyphs and is three
|
|
35857
|
+
* times the line's width, so the band crosses it rather than standing in it.
|
|
35858
|
+
*/
|
|
35859
|
+
.crewlet-thinking__status {
|
|
35860
|
+
min-width: 0;
|
|
35861
|
+
overflow: hidden;
|
|
35862
|
+
color: var(--color-text-secondary);
|
|
35863
|
+
text-overflow: ellipsis;
|
|
35864
|
+
white-space: nowrap;
|
|
35865
|
+
animation: crewlet-thinking-enter var(--motion-duration-moderate) var(--motion-easing-out);
|
|
35866
|
+
}
|
|
35867
|
+
|
|
35868
|
+
@supports (background-clip: text) or (-webkit-background-clip: text) {
|
|
35869
|
+
.crewlet-thinking__status {
|
|
35870
|
+
background-image: linear-gradient(
|
|
35871
|
+
90deg,
|
|
35872
|
+
var(--color-text-secondary) 0%,
|
|
35873
|
+
var(--color-text-secondary) 40%,
|
|
35874
|
+
var(--color-text-primary) 50%,
|
|
35875
|
+
var(--color-text-secondary) 60%,
|
|
35876
|
+
var(--color-text-secondary) 100%
|
|
35877
|
+
);
|
|
35878
|
+
background-size: 300% 100%;
|
|
35879
|
+
-webkit-background-clip: text;
|
|
35880
|
+
background-clip: text;
|
|
35881
|
+
color: transparent;
|
|
35882
|
+
animation:
|
|
35883
|
+
crewlet-thinking-enter var(--motion-duration-moderate) var(--motion-easing-out),
|
|
35884
|
+
crewlet-thinking-shimmer var(--motion-duration-breath) linear infinite;
|
|
35885
|
+
}
|
|
35886
|
+
}
|
|
35887
|
+
|
|
35888
|
+
@keyframes crewlet-thinking-shimmer {
|
|
35889
|
+
from {
|
|
35890
|
+
background-position: 100% 50%;
|
|
35891
|
+
}
|
|
35892
|
+
|
|
35893
|
+
to {
|
|
35894
|
+
background-position: 0 50%;
|
|
35895
|
+
}
|
|
35896
|
+
}
|
|
35897
|
+
|
|
35898
|
+
@keyframes crewlet-thinking-enter {
|
|
35899
|
+
from {
|
|
35900
|
+
opacity: 0;
|
|
35901
|
+
}
|
|
35902
|
+
|
|
35903
|
+
to {
|
|
35904
|
+
opacity: 1;
|
|
35905
|
+
}
|
|
35906
|
+
}
|
|
35907
|
+
|
|
35908
|
+
@media (prefers-reduced-motion: reduce) {
|
|
35909
|
+
.crewlet-thinking__mark [data-motion='turn'] {
|
|
35910
|
+
animation: none;
|
|
35911
|
+
}
|
|
35912
|
+
|
|
35913
|
+
.crewlet-thinking__status {
|
|
35914
|
+
background-image: none;
|
|
35915
|
+
color: var(--color-text-secondary);
|
|
35916
|
+
animation: none;
|
|
35917
|
+
}
|
|
35918
|
+
}
|
|
35919
|
+
|
|
35920
|
+
/* The system's own ink: a gradient clipped to text is dropped there. */
|
|
35921
|
+
@media (forced-colors: active) {
|
|
35922
|
+
.crewlet-thinking__status {
|
|
35923
|
+
background-image: none;
|
|
35924
|
+
color: CanvasText;
|
|
35925
|
+
}
|
|
35926
|
+
}
|
|
35927
|
+
|
|
35928
|
+
|
|
35567
35929
|
/* TileGrid-UYMVVVJK.css */
|
|
35568
35930
|
/*
|
|
35569
35931
|
* TileGrid: tiles on a fixed track count that folds by the grid's own width.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crewlethq/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.61.0",
|
|
4
4
|
"description": "Crewlet shared React components built on @crewlethq/tokens and @crewlethq/icons.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"clean": "rm -rf dist src/generated"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@crewlethq/icons": "0.
|
|
46
|
-
"@crewlethq/tokens": "0.
|
|
45
|
+
"@crewlethq/icons": "0.61.0",
|
|
46
|
+
"@crewlethq/tokens": "0.61.0",
|
|
47
47
|
"prosemirror-commands": "1.7.2",
|
|
48
48
|
"prosemirror-gapcursor": "1.4.1",
|
|
49
49
|
"prosemirror-history": "1.5.1",
|
package/dist/chunk-P7QDOKTP.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { IconButton } from './chunk-2GIUKIFV.js';
|
|
2
|
-
import { cx } from './chunk-ODEQTPFM.js';
|
|
3
|
-
import { forwardRef } from 'react';
|
|
4
|
-
import { SquareGlyph, ArrowUpGlyph } from '@crewlethq/icons/glyphs';
|
|
5
|
-
import { jsx } from 'react/jsx-runtime';
|
|
6
|
-
|
|
7
|
-
var SEND_BUTTON_LABELS = { send: "Send", stop: "Stop" };
|
|
8
|
-
var SendButton = forwardRef(function SendButton2({ mode, onPress, disabledReason, labels: overrides, className, ...rest }, ref) {
|
|
9
|
-
const labels = overrides ? { ...SEND_BUTTON_LABELS, ...overrides } : SEND_BUTTON_LABELS;
|
|
10
|
-
const stopping = mode === "stop";
|
|
11
|
-
return /* @__PURE__ */ jsx(
|
|
12
|
-
IconButton,
|
|
13
|
-
{
|
|
14
|
-
...rest,
|
|
15
|
-
ref,
|
|
16
|
-
size: "md",
|
|
17
|
-
variant: stopping ? "secondary" : "primary",
|
|
18
|
-
label: stopping ? labels.stop : labels.send,
|
|
19
|
-
icon: stopping ? /* @__PURE__ */ jsx(SquareGlyph, { filled: true }) : /* @__PURE__ */ jsx(ArrowUpGlyph, {}),
|
|
20
|
-
disabledReason: stopping ? void 0 : disabledReason,
|
|
21
|
-
className: cx("crewlet-send-button", `crewlet-send-button--${mode}`, className),
|
|
22
|
-
onClick: onPress
|
|
23
|
-
}
|
|
24
|
-
);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
export { SEND_BUTTON_LABELS, SendButton };
|
|
File without changes
|