@crewlethq/ui 0.62.0 → 0.64.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 +1 -1
- package/dist/AppShell/index.js +1 -1
- package/dist/ArtifactBar/index.js +5 -5
- package/dist/ArtifactCard/index.js +3 -3
- package/dist/AttachmentChip/AttachmentChip.d.ts +37 -0
- package/dist/AttachmentChip/index.d.ts +3 -0
- package/dist/AttachmentChip/index.js +6 -0
- package/dist/AttachmentChip-XF4KPQ3G.css +16 -0
- package/dist/AvatarPicker/index.js +6 -6
- package/dist/Canvas/index.js +1 -1
- package/dist/CanvasBoard/index.js +1 -1
- package/dist/CanvasToolbar/index.js +1 -1
- package/dist/ChangeList/ChangeList.d.ts +26 -4
- package/dist/ChangeList/index.d.ts +1 -1
- package/dist/ChangeList/index.js +1 -1
- package/dist/{ChangeList-CB2DLR5S.css → ChangeList-KQVD46IC.css} +41 -0
- package/dist/CommandPalette/index.js +1 -1
- package/dist/CommentThread/index.js +1 -1
- package/dist/ContrastBadge/index.js +2 -2
- package/dist/ContrastHelp/index.js +3 -3
- package/dist/DataTable/index.js +1 -1
- package/dist/DataView/index.js +1 -1
- package/dist/DateTimePicker/index.js +1 -1
- package/dist/DeepWorkCard/DeepWorkCard.d.ts +85 -0
- package/dist/DeepWorkCard/index.d.ts +3 -0
- package/dist/DeepWorkCard/index.js +17 -0
- package/dist/DeepWorkCard-DGHRIQDM.css +80 -0
- package/dist/DocTabsEditor/index.js +1 -1
- package/dist/DownloadButton/DownloadButton.d.ts +7 -1
- package/dist/DownloadButton/index.js +1 -1
- package/dist/FileList/FileList.d.ts +42 -0
- package/dist/FileList/index.d.ts +3 -0
- package/dist/FileList/index.js +3 -0
- package/dist/FileList-TGDNV2QS.css +89 -0
- package/dist/FollowBanner/index.js +1 -1
- package/dist/HuePicker/index.js +5 -5
- package/dist/InlineEditor/index.js +1 -1
- package/dist/LinkInterstitial/index.js +1 -1
- package/dist/ListInput/index.js +1 -1
- package/dist/LogoSlot/index.js +3 -3
- package/dist/MarkdownEditor/index.js +5 -5
- package/dist/Menu/index.js +1 -1
- package/dist/MergeConflicts/index.js +5 -5
- package/dist/Modal/index.js +1 -1
- package/dist/OpenInAppCard/index.js +2 -2
- package/dist/PeekRail/index.js +1 -1
- package/dist/PresenterView/index.js +1 -1
- package/dist/ProposalCard/index.js +2 -2
- package/dist/ResultTableCard/index.js +3 -3
- package/dist/RichEditor/index.js +1 -1
- package/dist/SegmentedControl/index.js +4 -4
- package/dist/SelectionBar/index.js +1 -1
- package/dist/SetupWizard/index.js +2 -2
- package/dist/ShareDialog/index.js +1 -1
- package/dist/SheetColumnEditor/index.js +6 -6
- package/dist/SheetGrid/index.js +3 -3
- package/dist/SlideCompare/index.js +1 -1
- package/dist/SlideFilmstrip/index.js +1 -1
- package/dist/Switcher/index.js +1 -1
- package/dist/Tabs/index.js +3 -3
- package/dist/ThemeGallery/index.js +1 -1
- package/dist/ThemeSwitcher/index.js +5 -5
- package/dist/TimeRangePicker/index.js +5 -5
- package/dist/TimeWindowPicker/index.js +1 -1
- package/dist/TreeCanvas/index.js +1 -1
- package/dist/VersionCompare/index.js +5 -5
- package/dist/{chunk-53NTMTRM.js → chunk-6IGIYOTV.js} +1 -1
- package/dist/chunk-CZXF6EFK.js +52 -0
- package/dist/{chunk-5ZGJ22CO.js → chunk-DHIO6Q75.js} +1 -1
- package/dist/{chunk-3BQWARG2.js → chunk-F7VBYCW2.js} +1 -1
- package/dist/{chunk-5G76O23M.js → chunk-IJIC4COR.js} +1 -1
- package/dist/{chunk-NL72YZWF.js → chunk-ISHLFPNN.js} +1 -1
- package/dist/{chunk-5KW63GZ3.js → chunk-JAOJLEYB.js} +1 -1
- package/dist/{chunk-MOW65OIJ.js → chunk-JPVORBWC.js} +1 -1
- package/dist/chunk-KYTOEWJD.js +56 -0
- package/dist/chunk-LA4PX7Z6.js +118 -0
- package/dist/{chunk-PFXUEEHT.js → chunk-LAXXWJ2Z.js} +1 -1
- package/dist/{chunk-ZH5F2PXC.js → chunk-NOSHT6FL.js} +42 -4
- package/dist/{chunk-LG6TUGET.js → chunk-NSCYGUDG.js} +2 -0
- package/dist/{chunk-OM6CPZB7.js → chunk-OIMWGV2N.js} +1 -1
- package/dist/{chunk-5PMFRAGL.js → chunk-OU4FLGOZ.js} +1 -1
- package/dist/{chunk-5MN2HISF.js → chunk-PHQPQZUX.js} +1 -1
- package/dist/{chunk-NRMXUNLR.js → chunk-QCVAVAF6.js} +1 -1
- package/dist/{chunk-LND6XSXN.js → chunk-S2VMOITT.js} +1 -1
- package/dist/{chunk-VRPDQSXZ.js → chunk-SELUJSTZ.js} +2 -2
- package/dist/{chunk-3633T7EJ.js → chunk-WSV3MBOE.js} +1 -1
- package/dist/generated/index.d.ts +3 -0
- package/dist/generated/index.js +84 -81
- package/dist/index.js +84 -81
- package/dist/styles.css +236 -1
- package/package.json +3 -3
- package/dist/{Editor-DM7X24B7.js → Editor-GHHWWXXL.js} +1 -1
- package/dist/{chunk-VN3DCUED.js → chunk-27JCHL64.js} +1 -1
- package/dist/{chunk-T4THNJ6E.js → chunk-5DCY2QUY.js} +1 -1
- package/dist/{chunk-WDRYUMN6.js → chunk-BSAQE7PO.js} +1 -1
- package/dist/{chunk-I43D5K6A.js → chunk-CT6I36FH.js} +1 -1
- package/dist/{chunk-MHFTG2LO.js → chunk-EBCH3MRX.js} +1 -1
- package/dist/{chunk-UOTNQV6D.js → chunk-TXQNWGUD.js} +0 -0
- package/dist/{chunk-WXSGCYZO.js → chunk-VVVB3OBW.js} +1 -1
|
@@ -14,9 +14,9 @@ import '../chunk-PQADV6P6.js';
|
|
|
14
14
|
import '../chunk-2G355KDJ.js';
|
|
15
15
|
import '../chunk-PIYJNCN7.js';
|
|
16
16
|
import '../chunk-7QTPJDRF.js';
|
|
17
|
-
import '../chunk-XSPCITPN.js';
|
|
18
17
|
import '../chunk-OMV5W53A.js';
|
|
19
18
|
import '../chunk-2YTOOH3A.js';
|
|
19
|
+
import '../chunk-XSPCITPN.js';
|
|
20
20
|
import '../chunk-H5XTJ7GJ.js';
|
|
21
21
|
import '../chunk-2XWFWNDT.js';
|
|
22
22
|
import '../chunk-NUZHC6MM.js';
|
package/dist/AppShell/index.js
CHANGED
|
@@ -3,9 +3,9 @@ import '../chunk-RTPQDNW3.js';
|
|
|
3
3
|
import '../chunk-LODRX4FU.js';
|
|
4
4
|
export { RESIZE_HANDLE_LARGE_STEP, RESIZE_HANDLE_STEP, ResizeHandle, clampSize, useAppShellAside, useAppShellPeek } from '../chunk-PIYJNCN7.js';
|
|
5
5
|
import '../chunk-7QTPJDRF.js';
|
|
6
|
-
import '../chunk-XSPCITPN.js';
|
|
7
6
|
import '../chunk-OMV5W53A.js';
|
|
8
7
|
import '../chunk-2YTOOH3A.js';
|
|
8
|
+
import '../chunk-XSPCITPN.js';
|
|
9
9
|
import '../chunk-H5XTJ7GJ.js';
|
|
10
10
|
import '../chunk-2XWFWNDT.js';
|
|
11
11
|
import '../chunk-NUZHC6MM.js';
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
export { ARTIFACT_BAR_LABELS, ArtifactBar, ArtifactVersionChip } from '../chunk-
|
|
1
|
+
export { ARTIFACT_BAR_LABELS, ArtifactBar, ArtifactVersionChip } from '../chunk-JAOJLEYB.js';
|
|
2
2
|
import '../chunk-OOC7Q67K.js';
|
|
3
3
|
import '../chunk-I33UIUZD.js';
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-WIATRXEJ.js';
|
|
4
|
+
import '../chunk-F7VBYCW2.js';
|
|
5
|
+
import '../chunk-27JCHL64.js';
|
|
7
6
|
import '../chunk-EGMQURBR.js';
|
|
8
7
|
import '../chunk-AVL52EME.js';
|
|
8
|
+
import '../chunk-WIATRXEJ.js';
|
|
9
9
|
import '../chunk-RSKW25Y5.js';
|
|
10
10
|
import '../chunk-ACRRRPWT.js';
|
|
11
11
|
import '../chunk-5KRRJNQO.js';
|
|
12
12
|
import '../chunk-LODRX4FU.js';
|
|
13
13
|
import '../chunk-7QTPJDRF.js';
|
|
14
|
-
import '../chunk-XSPCITPN.js';
|
|
15
14
|
import '../chunk-OMV5W53A.js';
|
|
16
15
|
import '../chunk-2YTOOH3A.js';
|
|
16
|
+
import '../chunk-XSPCITPN.js';
|
|
17
17
|
import '../chunk-H5XTJ7GJ.js';
|
|
18
18
|
import '../chunk-2XWFWNDT.js';
|
|
19
19
|
import '../chunk-NUZHC6MM.js';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export { ArtifactCard, ArtifactCardSkeleton, ArtifactPreviewGlyph } from '../chunk-
|
|
1
|
+
export { ArtifactCard, ArtifactCardSkeleton, ArtifactPreviewGlyph } from '../chunk-EBCH3MRX.js';
|
|
2
2
|
import '../chunk-QBI5ETKY.js';
|
|
3
3
|
import '../chunk-CI3VPIJN.js';
|
|
4
4
|
import '../chunk-L6NG7CUA.js';
|
|
5
5
|
import '../chunk-RE3FBGQQ.js';
|
|
6
|
+
import '../chunk-MKKX6N7C.js';
|
|
7
|
+
import '../chunk-AV2DXAEL.js';
|
|
6
8
|
import '../chunk-5AQBPHZD.js';
|
|
7
9
|
import '../chunk-PZKHBB7D.js';
|
|
8
10
|
import '../chunk-QZLNKLYD.js';
|
|
9
|
-
import '../chunk-MKKX6N7C.js';
|
|
10
|
-
import '../chunk-AV2DXAEL.js';
|
|
11
11
|
import '../chunk-KIPAFCVS.js';
|
|
12
12
|
import '../chunk-BGLKLXL3.js';
|
|
13
13
|
export { ARTIFACT_KINDS, ArtifactKindGlyph } from '../chunk-RSKW25Y5.js';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type HTMLAttributes } from 'react';
|
|
2
|
+
/** Where an attached file stands: on its way up, ready to send, or refused. */
|
|
3
|
+
export type AttachmentChipState = 'uploading' | 'ready' | 'failed';
|
|
4
|
+
/** The words a state is said with after the file's name, for a screen reader. */
|
|
5
|
+
export interface AttachmentChipLabels {
|
|
6
|
+
uploading: string;
|
|
7
|
+
failed: string;
|
|
8
|
+
/** Names the remove control, by the file's name. */
|
|
9
|
+
remove: (name: string) => string;
|
|
10
|
+
}
|
|
11
|
+
export declare const ATTACHMENT_CHIP_LABELS: AttachmentChipLabels;
|
|
12
|
+
export interface AttachmentChipProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
|
|
13
|
+
/** The file's name. */
|
|
14
|
+
name: string;
|
|
15
|
+
/**
|
|
16
|
+
* The address of an image to draw as the chip's thumbnail, or nothing for
|
|
17
|
+
* the image mark. DRAWN ONLY AS AN `<img>`, so a picture never runs what it
|
|
18
|
+
* carries; one that fails to load falls back to the mark.
|
|
19
|
+
*/
|
|
20
|
+
preview?: string | undefined;
|
|
21
|
+
state?: AttachmentChipState | undefined;
|
|
22
|
+
/** Takes the file off what is being sent. Without it, the chip only shows what was sent. */
|
|
23
|
+
onRemove?: (() => void) | undefined;
|
|
24
|
+
labels?: Partial<AttachmentChipLabels> | undefined;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A file attached to a message, as the chip in a composer's attachments row
|
|
28
|
+
* and under the message it was sent with: a thumbnail, the file's name, and
|
|
29
|
+
* a remove control while it can still be taken off.
|
|
30
|
+
*
|
|
31
|
+
* A `Tag`, SO IT STANDS IN ONE ROW with the other things a message carries
|
|
32
|
+
* (the page a question is asked about) at the same height and in the same
|
|
33
|
+
* outline. Uploading, the thumbnail gives way to the spinner; refused, the
|
|
34
|
+
* chip takes the danger tone and the alert mark, and its state is said in
|
|
35
|
+
* words after the name, because the mark is a picture of it.
|
|
36
|
+
*/
|
|
37
|
+
export declare function AttachmentChip({ name, preview, state, onRemove, labels: overrides, className, ...rest }: AttachmentChipProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A file attached to a message: a Tag whose leading mark is the file's
|
|
3
|
+
* thumbnail, at the glyph's own box so the pill keeps its height, with the
|
|
4
|
+
* name cut short rather than widening the composer's row.
|
|
5
|
+
*/
|
|
6
|
+
.crewlet-attachment-chip {
|
|
7
|
+
max-width: 14rem;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.crewlet-attachment-chip__thumb {
|
|
11
|
+
display: block;
|
|
12
|
+
width: var(--font-size-md);
|
|
13
|
+
height: var(--font-size-md);
|
|
14
|
+
border-radius: var(--radius-xs);
|
|
15
|
+
object-fit: cover;
|
|
16
|
+
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
export { AvatarPicker } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { AvatarPicker } from '../chunk-DHIO6Q75.js';
|
|
2
|
+
import '../chunk-QCVAVAF6.js';
|
|
3
3
|
import '../chunk-KHJIEPZV.js';
|
|
4
4
|
import '../chunk-AYKXMIOR.js';
|
|
5
5
|
import '../chunk-SNQRGH4A.js';
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-WIATRXEJ.js';
|
|
6
|
+
import '../chunk-F7VBYCW2.js';
|
|
7
|
+
import '../chunk-27JCHL64.js';
|
|
9
8
|
import '../chunk-EGMQURBR.js';
|
|
9
|
+
import '../chunk-WIATRXEJ.js';
|
|
10
10
|
import '../chunk-PZKHBB7D.js';
|
|
11
11
|
import '../chunk-5KRRJNQO.js';
|
|
12
12
|
import '../chunk-LODRX4FU.js';
|
|
13
13
|
import '../chunk-7QTPJDRF.js';
|
|
14
|
-
import '../chunk-XSPCITPN.js';
|
|
15
14
|
import '../chunk-OMV5W53A.js';
|
|
16
15
|
import '../chunk-2YTOOH3A.js';
|
|
16
|
+
import '../chunk-XSPCITPN.js';
|
|
17
17
|
import '../chunk-H5XTJ7GJ.js';
|
|
18
18
|
import '../chunk-2XWFWNDT.js';
|
|
19
19
|
import '../chunk-NUZHC6MM.js';
|
package/dist/Canvas/index.js
CHANGED
|
@@ -3,8 +3,8 @@ import '../chunk-LM3ISVJA.js';
|
|
|
3
3
|
import '../chunk-I33UIUZD.js';
|
|
4
4
|
import '../chunk-ACRRRPWT.js';
|
|
5
5
|
import '../chunk-7QTPJDRF.js';
|
|
6
|
-
import '../chunk-XSPCITPN.js';
|
|
7
6
|
import '../chunk-OMV5W53A.js';
|
|
7
|
+
import '../chunk-XSPCITPN.js';
|
|
8
8
|
import '../chunk-H5XTJ7GJ.js';
|
|
9
9
|
import '../chunk-2XWFWNDT.js';
|
|
10
10
|
import '../chunk-NUZHC6MM.js';
|
|
@@ -7,8 +7,8 @@ import '../chunk-LM3ISVJA.js';
|
|
|
7
7
|
import '../chunk-I33UIUZD.js';
|
|
8
8
|
import '../chunk-ACRRRPWT.js';
|
|
9
9
|
import '../chunk-7QTPJDRF.js';
|
|
10
|
-
import '../chunk-XSPCITPN.js';
|
|
11
10
|
import '../chunk-OMV5W53A.js';
|
|
11
|
+
import '../chunk-XSPCITPN.js';
|
|
12
12
|
import '../chunk-H5XTJ7GJ.js';
|
|
13
13
|
import '../chunk-2XWFWNDT.js';
|
|
14
14
|
import '../chunk-NUZHC6MM.js';
|
|
@@ -5,8 +5,8 @@ import '../chunk-LM3ISVJA.js';
|
|
|
5
5
|
import '../chunk-I33UIUZD.js';
|
|
6
6
|
import '../chunk-ACRRRPWT.js';
|
|
7
7
|
import '../chunk-7QTPJDRF.js';
|
|
8
|
-
import '../chunk-XSPCITPN.js';
|
|
9
8
|
import '../chunk-OMV5W53A.js';
|
|
9
|
+
import '../chunk-XSPCITPN.js';
|
|
10
10
|
import '../chunk-H5XTJ7GJ.js';
|
|
11
11
|
import '../chunk-2XWFWNDT.js';
|
|
12
12
|
import '../chunk-NUZHC6MM.js';
|
|
@@ -11,19 +11,28 @@ interface RowBase {
|
|
|
11
11
|
/** A consequence under the value, in the smallest tertiary type: "No open task matches this title". Never the current value, which the pair shows. */
|
|
12
12
|
note?: ReactNode;
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* A value that is more than a line: a list (`ChangeListItems`), a page of
|
|
16
|
+
* text, a preview. It takes the row's whole width under its label, and its
|
|
17
|
+
* tint is a block rather than a highlight, because a list or paragraphs drawn
|
|
18
|
+
* inside a highlighted run of words read as one run-on line.
|
|
19
|
+
*/
|
|
20
|
+
interface BlockValue {
|
|
21
|
+
block?: boolean | undefined;
|
|
22
|
+
}
|
|
14
23
|
/** A fact that does not change, such as the page being edited. */
|
|
15
|
-
export interface ChangeListFactRow extends RowBase {
|
|
24
|
+
export interface ChangeListFactRow extends RowBase, BlockValue {
|
|
16
25
|
kind: 'fact';
|
|
17
26
|
value: ReactNode;
|
|
18
27
|
}
|
|
19
28
|
/** A value that changes from one thing to another. */
|
|
20
|
-
export interface ChangeListChangedRow extends RowBase {
|
|
29
|
+
export interface ChangeListChangedRow extends RowBase, BlockValue {
|
|
21
30
|
kind: 'changed';
|
|
22
31
|
from: ReactNode;
|
|
23
32
|
to: ReactNode;
|
|
24
33
|
}
|
|
25
34
|
/** A value set where there was none. */
|
|
26
|
-
export interface ChangeListAddedRow extends RowBase {
|
|
35
|
+
export interface ChangeListAddedRow extends RowBase, BlockValue {
|
|
27
36
|
kind: 'added';
|
|
28
37
|
to: ReactNode;
|
|
29
38
|
/**
|
|
@@ -34,7 +43,7 @@ export interface ChangeListAddedRow extends RowBase {
|
|
|
34
43
|
isNew?: boolean | undefined;
|
|
35
44
|
}
|
|
36
45
|
/** A value taken away. */
|
|
37
|
-
export interface ChangeListRemovedRow extends RowBase {
|
|
46
|
+
export interface ChangeListRemovedRow extends RowBase, BlockValue {
|
|
38
47
|
kind: 'removed';
|
|
39
48
|
from: ReactNode;
|
|
40
49
|
}
|
|
@@ -93,6 +102,19 @@ export declare const CHANGE_LIST_COLLAPSE_OVER = 80;
|
|
|
93
102
|
* reader needs from unchanged text is the words that touch the change.
|
|
94
103
|
*/
|
|
95
104
|
export declare function shortenUnchanged(text: string, place: 'first' | 'middle' | 'last', max?: number): string;
|
|
105
|
+
/**
|
|
106
|
+
* A list value, one item a line: what a block row holds for a field that is a
|
|
107
|
+
* list (a seat's responsibilities, a voice's rules), rather than its items
|
|
108
|
+
* joined into one line.
|
|
109
|
+
*/
|
|
110
|
+
export declare function ChangeListItems({ items }: {
|
|
111
|
+
items: readonly ReactNode[];
|
|
112
|
+
}): import("react").JSX.Element;
|
|
113
|
+
/** A block value: the same words and tints as a line's, stacked across the row. */
|
|
114
|
+
declare function BlockValue({ row, labels }: {
|
|
115
|
+
row: Exclude<ChangeListRow, ChangeListTextRow>;
|
|
116
|
+
labels: ChangeListLabels;
|
|
117
|
+
}): import("react").JSX.Element;
|
|
96
118
|
/**
|
|
97
119
|
* What a change will do, field by field, as a before and after.
|
|
98
120
|
*
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import './ChangeList.css';
|
|
2
|
-
export { CHANGE_LIST_COLLAPSE_OVER, CHANGE_LIST_LABELS, ChangeList, shortenUnchanged } from './ChangeList.js';
|
|
2
|
+
export { CHANGE_LIST_COLLAPSE_OVER, CHANGE_LIST_LABELS, ChangeList, ChangeListItems, shortenUnchanged } from './ChangeList.js';
|
|
3
3
|
export type { ChangeListAddedRow, ChangeListChangedRow, ChangeListFactRow, ChangeListLabels, ChangeListProps, ChangeListRemovedRow, ChangeListRow, ChangeListTextRow, WordDiffPart, } from './ChangeList.js';
|
package/dist/ChangeList/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { CHANGE_LIST_COLLAPSE_OVER, CHANGE_LIST_LABELS, ChangeList, shortenUnchanged } from '../chunk-
|
|
1
|
+
export { CHANGE_LIST_COLLAPSE_OVER, CHANGE_LIST_LABELS, ChangeList, ChangeListItems, shortenUnchanged } from '../chunk-NOSHT6FL.js';
|
|
2
2
|
import '../chunk-RO2MZZ66.js';
|
|
3
3
|
import '../chunk-KYIAFNU7.js';
|
|
4
4
|
import '../chunk-WIATRXEJ.js';
|
|
@@ -57,6 +57,47 @@
|
|
|
57
57
|
gap: var(--spacing-1);
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
/* A block value takes the row's whole width under its label, as long text does. */
|
|
61
|
+
.crewlet-change-list__row--block > .crewlet-change-list__value {
|
|
62
|
+
grid-column: 1 / -1;
|
|
63
|
+
display: flex;
|
|
64
|
+
flex-direction: column;
|
|
65
|
+
align-items: flex-start;
|
|
66
|
+
gap: var(--spacing-1);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/*
|
|
70
|
+
* The tint of a block value is the block itself: a list or paragraphs keep
|
|
71
|
+
* their own layout inside it, and line breaks in plain text are kept.
|
|
72
|
+
*/
|
|
73
|
+
.crewlet-change-list__block {
|
|
74
|
+
display: block;
|
|
75
|
+
align-self: stretch;
|
|
76
|
+
min-width: 0;
|
|
77
|
+
padding: var(--spacing-1) var(--spacing-2);
|
|
78
|
+
border-radius: var(--radius-sm);
|
|
79
|
+
white-space: pre-line;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* A fact needs no tint, only the block's layout. */
|
|
83
|
+
.crewlet-change-list__block--plain {
|
|
84
|
+
padding: 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* Elements inside a block value lay out as themselves, not as kept line breaks. */
|
|
88
|
+
.crewlet-change-list__block > * {
|
|
89
|
+
white-space: normal;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.crewlet-change-list__items {
|
|
93
|
+
display: flex;
|
|
94
|
+
flex-direction: column;
|
|
95
|
+
gap: var(--spacing-1);
|
|
96
|
+
margin: 0;
|
|
97
|
+
padding-inline-start: var(--spacing-4);
|
|
98
|
+
list-style: disc;
|
|
99
|
+
}
|
|
100
|
+
|
|
60
101
|
.crewlet-change-list__fact {
|
|
61
102
|
font-weight: var(--font-weight-medium);
|
|
62
103
|
}
|
|
@@ -8,9 +8,9 @@ import '../chunk-5KRRJNQO.js';
|
|
|
8
8
|
import '../chunk-PQADV6P6.js';
|
|
9
9
|
import '../chunk-2G355KDJ.js';
|
|
10
10
|
import '../chunk-7QTPJDRF.js';
|
|
11
|
-
import '../chunk-XSPCITPN.js';
|
|
12
11
|
import '../chunk-OMV5W53A.js';
|
|
13
12
|
import '../chunk-2YTOOH3A.js';
|
|
13
|
+
import '../chunk-XSPCITPN.js';
|
|
14
14
|
import '../chunk-H5XTJ7GJ.js';
|
|
15
15
|
import '../chunk-2XWFWNDT.js';
|
|
16
16
|
import '../chunk-NUZHC6MM.js';
|
|
@@ -13,8 +13,8 @@ import '../chunk-5KRRJNQO.js';
|
|
|
13
13
|
import '../chunk-PQADV6P6.js';
|
|
14
14
|
import '../chunk-2G355KDJ.js';
|
|
15
15
|
import '../chunk-7QTPJDRF.js';
|
|
16
|
-
import '../chunk-XSPCITPN.js';
|
|
17
16
|
import '../chunk-OMV5W53A.js';
|
|
17
|
+
import '../chunk-XSPCITPN.js';
|
|
18
18
|
import '../chunk-H5XTJ7GJ.js';
|
|
19
19
|
import '../chunk-2XWFWNDT.js';
|
|
20
20
|
import '../chunk-NUZHC6MM.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { ContrastBadge, ContrastLevelTag, contrastLevel, contrastRatio, formatContrastRatio } from '../chunk-
|
|
2
|
-
import '../chunk-KYIAFNU7.js';
|
|
1
|
+
export { ContrastBadge, ContrastLevelTag, contrastLevel, contrastRatio, formatContrastRatio } from '../chunk-BSAQE7PO.js';
|
|
3
2
|
import '../chunk-7W3LYIOC.js';
|
|
3
|
+
import '../chunk-KYIAFNU7.js';
|
|
4
4
|
import '../chunk-WIATRXEJ.js';
|
|
5
5
|
import '../chunk-UT6CW3C7.js';
|
|
6
6
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { ContrastHelp } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-KYIAFNU7.js';
|
|
1
|
+
export { ContrastHelp } from '../chunk-WSV3MBOE.js';
|
|
2
|
+
import '../chunk-BSAQE7PO.js';
|
|
4
3
|
import '../chunk-KHJIEPZV.js';
|
|
5
4
|
import '../chunk-7W3LYIOC.js';
|
|
5
|
+
import '../chunk-KYIAFNU7.js';
|
|
6
6
|
import '../chunk-WIATRXEJ.js';
|
|
7
7
|
import '../chunk-OMV5W53A.js';
|
|
8
8
|
import '../chunk-H5XTJ7GJ.js';
|
package/dist/DataTable/index.js
CHANGED
|
@@ -11,8 +11,8 @@ import '../chunk-PQADV6P6.js';
|
|
|
11
11
|
import '../chunk-2G355KDJ.js';
|
|
12
12
|
import '../chunk-LODRX4FU.js';
|
|
13
13
|
import '../chunk-7QTPJDRF.js';
|
|
14
|
-
import '../chunk-XSPCITPN.js';
|
|
15
14
|
import '../chunk-OMV5W53A.js';
|
|
15
|
+
import '../chunk-XSPCITPN.js';
|
|
16
16
|
import '../chunk-H5XTJ7GJ.js';
|
|
17
17
|
import '../chunk-2XWFWNDT.js';
|
|
18
18
|
import '../chunk-NUZHC6MM.js';
|
package/dist/DataView/index.js
CHANGED
|
@@ -21,8 +21,8 @@ import '../chunk-PQADV6P6.js';
|
|
|
21
21
|
import '../chunk-2G355KDJ.js';
|
|
22
22
|
import '../chunk-LODRX4FU.js';
|
|
23
23
|
import '../chunk-7QTPJDRF.js';
|
|
24
|
-
import '../chunk-XSPCITPN.js';
|
|
25
24
|
import '../chunk-OMV5W53A.js';
|
|
25
|
+
import '../chunk-XSPCITPN.js';
|
|
26
26
|
import '../chunk-H5XTJ7GJ.js';
|
|
27
27
|
import '../chunk-2XWFWNDT.js';
|
|
28
28
|
import '../chunk-NUZHC6MM.js';
|
|
@@ -2,8 +2,8 @@ export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-2BDPR4
|
|
|
2
2
|
import '../chunk-GXQ3B46I.js';
|
|
3
3
|
import '../chunk-KHJIEPZV.js';
|
|
4
4
|
import '../chunk-7QTPJDRF.js';
|
|
5
|
-
import '../chunk-XSPCITPN.js';
|
|
6
5
|
import '../chunk-OMV5W53A.js';
|
|
6
|
+
import '../chunk-XSPCITPN.js';
|
|
7
7
|
import '../chunk-H5XTJ7GJ.js';
|
|
8
8
|
import '../chunk-2XWFWNDT.js';
|
|
9
9
|
import '../chunk-NUZHC6MM.js';
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import { type StepListStep } from '../Stepper/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Where a long, bounded run stands: `starting` before its first step,
|
|
5
|
+
* `running` while it works, `waiting` on the person's approval of a change it
|
|
6
|
+
* prepared, `finished`, `stopped` (by the person, or at one of its limits)
|
|
7
|
+
* and `failed` (the system could not finish it).
|
|
8
|
+
*/
|
|
9
|
+
export type DeepWorkState = 'starting' | 'running' | 'waiting' | 'finished' | 'stopped' | 'failed';
|
|
10
|
+
export declare const DEEP_WORK_STATES: readonly ["starting", "running", "waiting", "finished", "stopped", "failed"];
|
|
11
|
+
/** The words each state is said with, on the card's state tag. */
|
|
12
|
+
export type DeepWorkStateLabels = Record<DeepWorkState, string>;
|
|
13
|
+
export declare const DEEP_WORK_STATE_LABELS: DeepWorkStateLabels;
|
|
14
|
+
/** One of the run's limits, as a meter: time against its deadline, calls against their cap, budget used. */
|
|
15
|
+
export interface DeepWorkMeasure {
|
|
16
|
+
/** What tells two measures apart, unique within the card. */
|
|
17
|
+
key: string;
|
|
18
|
+
/** What is measured, in a word or two: "Time", "Crewlet calls", "Budget used". */
|
|
19
|
+
label: string;
|
|
20
|
+
value: number;
|
|
21
|
+
/** The limit. A run's measure always has one. */
|
|
22
|
+
max: number;
|
|
23
|
+
/** The reading in words, at the legend's end: "4m of 20m", "12 of 60", "34%". */
|
|
24
|
+
hint: string;
|
|
25
|
+
/** The reading for a screen reader, where the hint abbreviates: "4 minutes of 20". Defaults to `hint`. */
|
|
26
|
+
valueText?: string | undefined;
|
|
27
|
+
}
|
|
28
|
+
export interface DeepWorkCardLabels {
|
|
29
|
+
/** The card's title. */
|
|
30
|
+
title: string;
|
|
31
|
+
/** Names the activity lines for a screen reader. */
|
|
32
|
+
activity: string;
|
|
33
|
+
/** Names the nested steps for a screen reader. */
|
|
34
|
+
steps: string;
|
|
35
|
+
/** The folded steps' title, by their count. */
|
|
36
|
+
stepCount: (count: number) => string;
|
|
37
|
+
}
|
|
38
|
+
export declare const DEEP_WORK_CARD_LABELS: DeepWorkCardLabels;
|
|
39
|
+
export interface DeepWorkCardProps extends Omit<HTMLAttributes<HTMLElement>, 'title' | 'children'> {
|
|
40
|
+
state: DeepWorkState;
|
|
41
|
+
/** What the run was asked to do, in the person's or the assistant's words. */
|
|
42
|
+
goal: ReactNode;
|
|
43
|
+
/** The run's limits, each drawn as a compact meter in the order given. */
|
|
44
|
+
measures?: readonly DeepWorkMeasure[] | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* The run's own latest account of itself, oldest first: a command it ran,
|
|
47
|
+
* a file it wrote. Drawn in the mono face, one line each, never wrapped
|
|
48
|
+
* into a paragraph. The consumer bounds how many it keeps.
|
|
49
|
+
*/
|
|
50
|
+
activity?: readonly string[] | undefined;
|
|
51
|
+
/** The steps the run took, nested under it. */
|
|
52
|
+
steps?: readonly StepListStep[] | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Up to this many steps are drawn open; more fold behind one disclosure
|
|
55
|
+
* named by their count, so a long run stays one card. 3 by default.
|
|
56
|
+
*/
|
|
57
|
+
stepsOpenAt?: number | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* One sentence at the card's foot, in the state's tone: why a run stopped
|
|
60
|
+
* or failed, or what a waiting run waits on.
|
|
61
|
+
*/
|
|
62
|
+
note?: ReactNode;
|
|
63
|
+
/** The state words on the card's tag. */
|
|
64
|
+
stateLabels?: Partial<DeepWorkStateLabels> | undefined;
|
|
65
|
+
labels?: Partial<DeepWorkCardLabels> | undefined;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* A long, bounded run an assistant switched to: its goal, where it stands,
|
|
69
|
+
* how much of each limit it has used, what it is doing now and the steps it
|
|
70
|
+
* took, on the product's `StatusCard`.
|
|
71
|
+
*
|
|
72
|
+
* UPDATED IN PLACE. The run is re-sent as it moves, so every part is drawn
|
|
73
|
+
* from props and nothing animates on arrival: a meter's fill moves, a line of
|
|
74
|
+
* activity is added at the end, and the reader's open or closed steps stay as
|
|
75
|
+
* they left them.
|
|
76
|
+
*
|
|
77
|
+
* NOT A LIVE REGION. The card changes every second while the run works, so
|
|
78
|
+
* it announces nothing itself; the note at its foot is the strip's own status
|
|
79
|
+
* (an alert for a failure), which changes only when the run's state does.
|
|
80
|
+
*
|
|
81
|
+
* THE LIMITS ARE METERS ON THE SPENT RAMP: time, calls and budget are all
|
|
82
|
+
* spent towards a ceiling, so a run near one reads as near it without the
|
|
83
|
+
* consumer judging the number.
|
|
84
|
+
*/
|
|
85
|
+
export declare function DeepWorkCard({ state, goal, measures, activity, steps, stepsOpenAt, note, stateLabels, labels: labelOverrides, className, ...rest }: DeepWorkCardProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import './DeepWorkCard.css';
|
|
2
|
+
export { DEEP_WORK_CARD_LABELS, DEEP_WORK_STATE_LABELS, DEEP_WORK_STATES, DeepWorkCard } from './DeepWorkCard.js';
|
|
3
|
+
export type { DeepWorkCardLabels, DeepWorkCardProps, DeepWorkMeasure, DeepWorkState, DeepWorkStateLabels, } from './DeepWorkCard.js';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { DEEP_WORK_CARD_LABELS, DEEP_WORK_STATES, DEEP_WORK_STATE_LABELS, DeepWorkCard } from '../chunk-LA4PX7Z6.js';
|
|
2
|
+
import '../chunk-Z4EKUMZW.js';
|
|
3
|
+
import '../chunk-RQFRRPV6.js';
|
|
4
|
+
import '../chunk-NLI7OVO2.js';
|
|
5
|
+
import '../chunk-WW4E5EUS.js';
|
|
6
|
+
import '../chunk-KYIAFNU7.js';
|
|
7
|
+
import '../chunk-WIATRXEJ.js';
|
|
8
|
+
import '../chunk-MKKX6N7C.js';
|
|
9
|
+
import '../chunk-AV2DXAEL.js';
|
|
10
|
+
import '../chunk-P4YORMRZ.js';
|
|
11
|
+
import '../chunk-ZYO2QFU6.js';
|
|
12
|
+
import '../chunk-5KRRJNQO.js';
|
|
13
|
+
import '../chunk-PQADV6P6.js';
|
|
14
|
+
import '../chunk-7QTPJDRF.js';
|
|
15
|
+
import '../chunk-XSPCITPN.js';
|
|
16
|
+
import '../chunk-UT6CW3C7.js';
|
|
17
|
+
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A deep run on the product's StatusCard: the goal with its mark, the limits
|
|
3
|
+
* as compact meters on a two-column grid that folds to one, the latest
|
|
4
|
+
* activity as mono lines in an inset well, then the steps. Only the body's
|
|
5
|
+
* own parts are said here; the card, its head, its tag and its strip are
|
|
6
|
+
* StatusCard's.
|
|
7
|
+
*/
|
|
8
|
+
.crewlet-deep-work-card .crewlet-status-card__body {
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
gap: var(--spacing-3);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* The goal: the mark on the first line, the words wrapping beside it. */
|
|
15
|
+
.crewlet-deep-work-card__goal {
|
|
16
|
+
display: grid;
|
|
17
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
18
|
+
align-items: start;
|
|
19
|
+
gap: var(--spacing-2);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.crewlet-deep-work-card__goal-mark {
|
|
23
|
+
height: calc(var(--font-size-compact) * var(--font-line-height-normal));
|
|
24
|
+
color: var(--color-text-tertiary);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.crewlet-deep-work-card__goal-text {
|
|
28
|
+
margin: 0;
|
|
29
|
+
font-size: var(--font-size-compact);
|
|
30
|
+
line-height: var(--font-line-height-normal);
|
|
31
|
+
color: var(--color-text-primary);
|
|
32
|
+
overflow-wrap: anywhere;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* THE LIMITS SIDE BY SIDE where the card has room, one under another in a
|
|
36
|
+
narrow drawer, so no legend is cut to fit. */
|
|
37
|
+
.crewlet-deep-work-card__measures {
|
|
38
|
+
display: grid;
|
|
39
|
+
grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
|
|
40
|
+
gap: var(--spacing-2) var(--spacing-4);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* THE LATEST ACTIVITY: one line each, never wrapped into a paragraph, cut
|
|
44
|
+
with an ellipsis rather than widening the card; the whole line is its
|
|
45
|
+
title for a pointer and its text for a screen reader. */
|
|
46
|
+
.crewlet-deep-work-card__activity {
|
|
47
|
+
display: flex;
|
|
48
|
+
flex-direction: column;
|
|
49
|
+
gap: var(--spacing-1);
|
|
50
|
+
min-width: 0;
|
|
51
|
+
margin: 0;
|
|
52
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
53
|
+
border-radius: var(--radius-md);
|
|
54
|
+
background: var(--color-surface-inset);
|
|
55
|
+
list-style: none;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.crewlet-deep-work-card__line {
|
|
59
|
+
min-width: 0;
|
|
60
|
+
overflow: hidden;
|
|
61
|
+
font-family: var(--font-family-mono);
|
|
62
|
+
font-size: var(--font-size-xs);
|
|
63
|
+
line-height: var(--font-line-height-normal);
|
|
64
|
+
color: var(--color-text-secondary);
|
|
65
|
+
text-overflow: ellipsis;
|
|
66
|
+
white-space: nowrap;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* The newest line is what the run is doing now, in the primary ink. */
|
|
70
|
+
.crewlet-deep-work-card__line:last-child {
|
|
71
|
+
color: var(--color-text-primary);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.crewlet-deep-work-card__line code {
|
|
75
|
+
font: inherit;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.crewlet-deep-work-card__steps {
|
|
79
|
+
min-width: 0;
|
|
80
|
+
}
|
|
@@ -6,8 +6,8 @@ import '../chunk-PQADV6P6.js';
|
|
|
6
6
|
import '../chunk-2G355KDJ.js';
|
|
7
7
|
import '../chunk-LODRX4FU.js';
|
|
8
8
|
import '../chunk-7QTPJDRF.js';
|
|
9
|
-
import '../chunk-XSPCITPN.js';
|
|
10
9
|
import '../chunk-OMV5W53A.js';
|
|
10
|
+
import '../chunk-XSPCITPN.js';
|
|
11
11
|
import '../chunk-H5XTJ7GJ.js';
|
|
12
12
|
import '../chunk-2XWFWNDT.js';
|
|
13
13
|
import '../chunk-NUZHC6MM.js';
|
|
@@ -39,6 +39,12 @@ export interface DownloadButtonBaseProps {
|
|
|
39
39
|
size?: ButtonSize | undefined;
|
|
40
40
|
variant?: ButtonVariant | undefined;
|
|
41
41
|
title?: string | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* The control's name where several stand side by side, such as one per
|
|
44
|
+
* file in a list: "Download report.csv". It must contain the visible label,
|
|
45
|
+
* so a reader who says the label to a voice control still finds it.
|
|
46
|
+
*/
|
|
47
|
+
'aria-label'?: string | undefined;
|
|
42
48
|
/**
|
|
43
49
|
* Nothing to offer yet, such as an export of an empty table. Give a `title`
|
|
44
50
|
* that says why, so the control is never a dead button with no reason.
|
|
@@ -66,4 +72,4 @@ export type DownloadButtonProps = DownloadButtonBaseProps & DownloadButtonSource
|
|
|
66
72
|
* refusal holds until the next press, and every attempt replaces the status
|
|
67
73
|
* message, so a second identical refusal is still announced.
|
|
68
74
|
*/
|
|
69
|
-
export declare function DownloadButton({ text, file, filename, mime, label, startedLabel, failedLabel, startedMessage, failedMessage, size, variant, title, disabled, resetMs, failedResetMs, className, }: DownloadButtonProps): import("react").JSX.Element;
|
|
75
|
+
export declare function DownloadButton({ text, file, filename, mime, label, startedLabel, failedLabel, startedMessage, failedMessage, size, variant, title, 'aria-label': ariaLabel, disabled, resetMs, failedResetMs, className, }: DownloadButtonProps): import("react").JSX.Element;
|