@crewlethq/ui 0.24.0 → 0.26.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/README.md +85 -3
- package/dist/ArrangeList/index.js +2 -2
- package/dist/ArtifactCover/ArtifactCover.d.ts +37 -0
- package/dist/ArtifactCover/DashboardCover.d.ts +46 -0
- package/dist/ArtifactCover/index.d.ts +6 -0
- package/dist/ArtifactCover/index.js +14 -0
- package/dist/ArtifactCover-D4MBEJ5H.css +67 -0
- package/dist/ArtifactIcon/ArtifactIcon.d.ts +29 -0
- package/dist/ArtifactIcon/index.d.ts +2 -0
- package/dist/ArtifactIcon/index.js +13 -0
- package/dist/AvatarPicker/index.js +6 -6
- package/dist/Canvas/Canvas.d.ts +13 -2
- package/dist/Canvas/index.js +1 -1
- package/dist/CanvasBoard/CanvasBoard.d.ts +117 -0
- package/dist/CanvasBoard/budget.d.ts +38 -0
- package/dist/CanvasBoard/index.d.ts +5 -0
- package/dist/CanvasBoard/index.js +10 -0
- package/dist/CanvasBoard-ZLPDINSM.css +236 -0
- package/dist/CanvasSchematic/CanvasSchematic.d.ts +31 -0
- package/dist/CanvasSchematic/index.d.ts +3 -0
- package/dist/CanvasSchematic/index.js +2 -0
- package/dist/CanvasSchematic-PLB3N46J.css +36 -0
- package/dist/ChangeMark/index.js +3 -3
- package/dist/CharacterPicker/index.js +2 -2
- package/dist/Checkbox/Checkbox.d.ts +6 -0
- package/dist/Checkbox/index.js +1 -1
- package/dist/{Checkbox-KT7RS6QQ.css → Checkbox-5UORUG3F.css} +16 -0
- package/dist/CommentThread/index.js +2 -2
- package/dist/DashboardCover-RMINBODB.css +143 -0
- package/dist/DataTable/index.js +3 -3
- package/dist/DataView/index.js +5 -5
- package/dist/DatasetSource/DatasetSource.d.ts +83 -0
- package/dist/DatasetSource/index.d.ts +3 -0
- package/dist/DatasetSource/index.js +7 -0
- package/dist/DatasetSource-47LBDMPR.css +129 -0
- package/dist/DocTabsEditor/DocTabsEditor.d.ts +60 -0
- package/dist/DocTabsEditor/index.d.ts +3 -0
- package/dist/DocTabsEditor/index.js +9 -0
- package/dist/DocTabsEditor-RCOWHX5J.css +78 -0
- package/dist/DownloadButton/index.js +2 -2
- package/dist/HuePicker/index.js +4 -4
- package/dist/LinkInterstitial/index.js +2 -2
- package/dist/MarkdownEditor/index.js +5 -5
- package/dist/MergeConflicts/MergeConflicts.d.ts +51 -0
- package/dist/MergeConflicts/index.d.ts +3 -0
- package/dist/MergeConflicts/index.js +9 -0
- package/dist/MergeConflicts-O44ESH4T.css +77 -0
- package/dist/Meter/index.js +1 -1
- package/dist/{Meter-5VCSFMZW.css → Meter-ZZRFUEOH.css} +15 -0
- package/dist/ObjectHeader/ObjectHeader.d.ts +7 -1
- package/dist/ObjectHeader/index.js +1 -1
- package/dist/{ObjectHeader-UNVYM2KD.css → ObjectHeader-D7GU7QNI.css} +15 -0
- package/dist/PeopleRail/index.js +2 -2
- package/dist/PresenceModel/index.d.ts +1 -1
- package/dist/PresenceModel/index.js +1 -1
- package/dist/PresenceModel/presence.d.ts +10 -2
- package/dist/PresenceStack/index.js +2 -2
- package/dist/PresenterView/PresenterView.d.ts +52 -0
- package/dist/PresenterView/index.d.ts +3 -0
- package/dist/PresenterView/index.js +8 -0
- package/dist/PresenterView-T2C6ZZ3N.css +103 -0
- package/dist/Section/index.js +1 -1
- package/dist/{Section-QRUPRIQ2.css → Section-QR3ILQVK.css} +4 -1
- package/dist/SegmentedControl/SegmentedControl.d.ts +17 -0
- package/dist/SegmentedControl/index.js +4 -4
- package/dist/{SegmentedControl-PKBLJVSA.css → SegmentedControl-FLI45IOW.css} +13 -0
- package/dist/ShareDialog/index.js +3 -3
- package/dist/SheetGrid/SheetGrid.d.ts +24 -2
- package/dist/SheetGrid/index.js +10 -6
- package/dist/{SheetGrid-4HOXDVIB.css → SheetGrid-J3TKKXZL.css} +87 -17
- package/dist/SheetModel/edits.d.ts +7 -1
- package/dist/SheetModel/index.js +2 -2
- package/dist/SheetModel/labels.d.ts +9 -0
- package/dist/SheetModel/types.d.ts +6 -0
- package/dist/SlideCompare/SlideCompare.d.ts +52 -0
- package/dist/SlideCompare/index.d.ts +3 -0
- package/dist/SlideCompare/index.js +7 -0
- package/dist/SlideCompare-MGM3U2ME.css +80 -0
- package/dist/SlideFilmstrip/SlideFilmstrip.d.ts +50 -0
- package/dist/SlideFilmstrip/index.d.ts +3 -0
- package/dist/SlideFilmstrip/index.js +8 -0
- package/dist/SlideFilmstrip-BCLNAHFX.css +108 -0
- package/dist/SlideGrid/SlideGrid.d.ts +32 -0
- package/dist/SlideGrid/index.d.ts +3 -0
- package/dist/SlideGrid/index.js +5 -0
- package/dist/SlideGrid-RT6QEQEE.css +82 -0
- package/dist/SlideStage/SlideStage.d.ts +47 -0
- package/dist/SlideStage/index.d.ts +5 -0
- package/dist/SlideStage/index.js +4 -0
- package/dist/SlideStage/useSlideKeys.d.ts +21 -0
- package/dist/SlideStage-XIOTMMRU.css +32 -0
- package/dist/Switcher/index.js +2 -2
- package/dist/TableCells/index.js +2 -2
- package/dist/Tabs/index.js +2 -2
- package/dist/Tabs/roving.d.ts +1 -0
- package/dist/TagGroup/TagGroup.d.ts +16 -1
- package/dist/TagGroup/index.js +1 -1
- package/dist/{TagGroup-BCQZD7ZD.css → TagGroup-NAXTJHDS.css} +22 -0
- package/dist/ThemeGallery/index.js +2 -2
- package/dist/ThemeSwitcher/index.js +5 -5
- package/dist/TreeCanvas/index.js +2 -2
- package/dist/VersionCompare/VersionCompare.d.ts +8 -1
- package/dist/VersionCompare/index.js +5 -5
- package/dist/VersionTimeline/index.js +1 -1
- package/dist/{VersionTimeline-EBJ6MIPJ.css → VersionTimeline-6KRXEEOO.css} +7 -7
- package/dist/WidgetFrame/WidgetFrame.d.ts +73 -0
- package/dist/WidgetFrame/index.d.ts +3 -0
- package/dist/WidgetFrame/index.js +6 -0
- package/dist/WidgetFrame-4EFJOJMW.css +127 -0
- package/dist/chunk-3D7PSL2L.js +438 -0
- package/dist/{chunk-SJCKMSQK.js → chunk-5LUI3WQP.js} +1 -1
- package/dist/{chunk-IASV5UCP.js → chunk-7T42VQQT.js} +3 -1
- package/dist/{chunk-BJCFNRGH.js → chunk-BEHFTRMZ.js} +1 -1
- package/dist/chunk-BQYQWJPK.js +80 -0
- package/dist/{chunk-KLIEPFEZ.js → chunk-C2FRTWKO.js} +1 -1
- package/dist/{chunk-APS747CR.js → chunk-EHQTPVV4.js} +5 -3
- package/dist/{chunk-A2UXBCLO.js → chunk-FAQGGX2Z.js} +1 -1
- package/dist/chunk-FQCLKD7U.js +2 -0
- package/dist/{chunk-J4OKGJQ6.js → chunk-FVLCTCMV.js} +1 -1
- package/dist/{chunk-XJFOOXCF.js → chunk-HJEVSQN6.js} +1 -1
- package/dist/chunk-HONZQ4UR.js +107 -0
- package/dist/{chunk-5PSXBL73.js → chunk-HVIX5ECM.js} +1 -1
- package/dist/{chunk-36CWC2NH.js → chunk-INTEH4F3.js} +271 -143
- package/dist/{chunk-F6NZOVWL.js → chunk-IW55G7XG.js} +6 -2
- package/dist/chunk-KNLJL3VP.js +101 -0
- package/dist/chunk-KSSSFLE2.js +105 -0
- package/dist/{chunk-TXAFKH2A.js → chunk-KZOGQXSP.js} +6 -0
- package/dist/{chunk-CS65QSIJ.js → chunk-LZHLSQYK.js} +2 -2
- package/dist/chunk-MQEEQVG6.js +62 -0
- package/dist/chunk-NBWNLYWZ.js +62 -0
- package/dist/{chunk-YYZRLLLY.js → chunk-NHBP2XS5.js} +19 -3
- package/dist/chunk-O2EGEONV.js +90 -0
- package/dist/{chunk-YM3GJHGW.js → chunk-ODT5H4MN.js} +1 -1
- package/dist/{chunk-JCSXFAXG.js → chunk-OJRDEVHV.js} +1 -1
- package/dist/{chunk-U63Y5OCW.js → chunk-PRNX5AFE.js} +2 -2
- package/dist/chunk-Q4A5CGUB.js +43 -0
- package/dist/{chunk-7QL2OFP6.js → chunk-RCQXUT5K.js} +25 -9
- package/dist/{chunk-CBOICT64.js → chunk-RKKO7QHH.js} +2 -0
- package/dist/{chunk-TBIZSQHB.js → chunk-RSC7UJCR.js} +1 -1
- package/dist/chunk-RWA4H2TV.js +73 -0
- package/dist/{chunk-OQT7GSKJ.js → chunk-SGIQCI6Y.js} +1 -1
- package/dist/{chunk-35UKQ33X.js → chunk-SVW3VG72.js} +2 -2
- package/dist/{chunk-4PZ6FJKW.js → chunk-UGNUUVRI.js} +2 -2
- package/dist/chunk-UOR7TOAU.js +191 -0
- package/dist/{chunk-XMGB3ZAT.js → chunk-URUGEAFB.js} +3 -2
- package/dist/chunk-UZ7ZUSLH.js +179 -0
- package/dist/chunk-V2Z24W2Z.js +75 -0
- package/dist/{chunk-I7WXZOWA.js → chunk-VGE3G3T4.js} +3 -1
- package/dist/{chunk-UNZ7TVV5.js → chunk-W4XYY73O.js} +7 -9
- package/dist/{chunk-IPM2E6UI.js → chunk-WJDQ7XQA.js} +1 -1
- package/dist/{chunk-PPAQFGS2.js → chunk-YEKYVJQR.js} +1 -1
- package/dist/chunk-Z54BPRL6.js +74 -0
- package/dist/{chunk-S35G6PNC.js → chunk-Z7JYG5TF.js} +5 -4
- package/dist/chunk-ZZDY4XL7.js +112 -0
- package/dist/generated/index.d.ts +13 -0
- package/dist/generated/index.js +84 -71
- package/dist/index.js +84 -71
- package/dist/styles.css +1644 -153
- package/dist/utils/csv.d.ts +18 -0
- package/dist/utils/elementToPng.d.ts +49 -0
- package/dist/utils/index.d.ts +4 -1
- package/dist/utils/index.js +2 -2
- package/dist/utils/useDownload.d.ts +14 -4
- package/package.json +3 -3
- package/dist/chunk-E6UWRXNM.js +0 -52
- package/dist/chunk-M54K52ZU.js +0 -2
- package/dist/chunk-U5LQ2AS5.js +0 -1
- package/dist/{chunk-KG6XRG5Z.js → chunk-5OY4LJFH.js} +1 -1
- package/dist/{chunk-ZM7HLFOA.js → chunk-L2OQRPXJ.js} +1 -1
- package/dist/{chunk-MUGM7SEG.js → chunk-LFNUH4GY.js} +1 -1
- package/dist/{chunk-PBNP7H2C.js → chunk-M2VJGNCD.js} +1 -1
- /package/dist/{chunk-MSSZHDZI.js → chunk-SLRKS5PF.js} +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { VERSION_COMPARE_LABELS, VERSION_COMPARE_LENSES, VersionCompare } from '../chunk-EHQTPVV4.js';
|
|
2
|
+
import '../chunk-FQCLKD7U.js';
|
|
3
3
|
import '../chunk-BVWSLXTY.js';
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-RCQXUT5K.js';
|
|
5
|
+
import '../chunk-HJEVSQN6.js';
|
|
6
|
+
import '../chunk-RKKO7QHH.js';
|
|
7
7
|
import '../chunk-RA2ULG6H.js';
|
|
8
8
|
import '../chunk-PQADV6P6.js';
|
|
9
9
|
import '../chunk-BHHIIK3M.js';
|
|
@@ -32,11 +32,11 @@
|
|
|
32
32
|
background: var(--color-surface-hover);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
/* The version on show
|
|
36
|
-
|
|
35
|
+
/* The version on show, as a FILL only: the timeline's rail is the row's one
|
|
36
|
+
vertical line, and an accent bar beside it drew two. The accent means
|
|
37
|
+
"where the reader is", which is exactly what this row is. */
|
|
37
38
|
.crewlet-version-timeline__select[aria-current='true'] {
|
|
38
39
|
background: var(--color-brand-accent-soft);
|
|
39
|
-
box-shadow: inset 2px 0 0 var(--color-brand-accent);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
.crewlet-version-timeline__head {
|
|
@@ -91,11 +91,11 @@
|
|
|
91
91
|
padding-inline: var(--spacing-1);
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
/* The version compared against
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
/* The version compared against is ringed in the strong neutral: it is the
|
|
95
|
+
other side of the comparison, not where the reader is, so it takes neither
|
|
96
|
+
the accent nor a second vertical bar beside the rail. */
|
|
97
97
|
.is-compared > .crewlet-timeline__body > .crewlet-version-timeline__select {
|
|
98
|
-
box-shadow: inset
|
|
98
|
+
box-shadow: inset 0 0 0 1px var(--color-border-strong);
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
.crewlet-version-timeline__gap {
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import { type TimeValue } from '../RelativeTime/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Where a figure's data stands.
|
|
5
|
+
*
|
|
6
|
+
* - `loading`: not read yet.
|
|
7
|
+
* - `live`: kept current as it changes (a datastore collection on the socket).
|
|
8
|
+
* - `ready`: read, and true as of `asOf`.
|
|
9
|
+
* - `stale`: read, and older than its source promises; still drawn, and marked.
|
|
10
|
+
* - `refused`: the reader may not read the data behind it. The figure is not
|
|
11
|
+
* drawn at all, and `detail` says why.
|
|
12
|
+
* - `failed`: the read did not complete. The figure is not drawn, and `detail`
|
|
13
|
+
* says what happened.
|
|
14
|
+
*/
|
|
15
|
+
export type DatasetStatus = 'loading' | 'live' | 'ready' | 'stale' | 'refused' | 'failed';
|
|
16
|
+
/** What a widget's figure is drawn from, and when it was true. */
|
|
17
|
+
export interface WidgetSource {
|
|
18
|
+
/** The dataset's title: what the figure cites. */
|
|
19
|
+
label: string;
|
|
20
|
+
/** When the figure was true. Unset for a live source or one not read yet. */
|
|
21
|
+
asOf?: TimeValue | undefined;
|
|
22
|
+
status: DatasetStatus;
|
|
23
|
+
/** The refusal or failure sentence, for `refused` and `failed`. */
|
|
24
|
+
detail?: string | undefined;
|
|
25
|
+
}
|
|
26
|
+
export interface WidgetFrameLabels {
|
|
27
|
+
live: string;
|
|
28
|
+
asOf: string;
|
|
29
|
+
stale: string;
|
|
30
|
+
loading: (title: string) => string;
|
|
31
|
+
/** The sentence drawn for `refused` or `failed` when the host gave no detail. */
|
|
32
|
+
refused: string;
|
|
33
|
+
failed: string;
|
|
34
|
+
/** Said before the citation to a screen reader: "Source: Open tasks, as of 2m ago". */
|
|
35
|
+
cite: string;
|
|
36
|
+
}
|
|
37
|
+
export interface WidgetFrameProps extends Omit<HTMLAttributes<HTMLElement>, 'title' | 'children'> {
|
|
38
|
+
title: string;
|
|
39
|
+
source: WidgetSource;
|
|
40
|
+
/**
|
|
41
|
+
* Opens the host's Sources rail at this figure's dataset. Given, the
|
|
42
|
+
* citation is a button; without it, plain text.
|
|
43
|
+
*/
|
|
44
|
+
onCite?: (() => void) | undefined;
|
|
45
|
+
/** The host's controls for this figure, such as a menu offering CSV and PNG. */
|
|
46
|
+
actions?: ReactNode;
|
|
47
|
+
/** The heading level of the title. Default 3, under a board's own heading. */
|
|
48
|
+
headingLevel?: 2 | 3 | 4 | undefined;
|
|
49
|
+
/** Overrides the shared clock, for a story or a suite. */
|
|
50
|
+
now?: number | undefined;
|
|
51
|
+
labels?: Partial<WidgetFrameLabels> | undefined;
|
|
52
|
+
children: ReactNode;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* One figure on a dashboard: its title, the figure, and the line that says
|
|
56
|
+
* what it is drawn from and when that was true.
|
|
57
|
+
*
|
|
58
|
+
* EVERY FIGURE CITES ITS SOURCE. A number with no provenance is a number
|
|
59
|
+
* nobody can check, so the citation is part of the frame rather than
|
|
60
|
+
* something a host may forget: the dataset's title, then "live" or "as of" a
|
|
61
|
+
* relative time (the exact instant on hover). With `onCite` the citation is a
|
|
62
|
+
* button that opens the host's Sources rail at that dataset.
|
|
63
|
+
*
|
|
64
|
+
* A REFUSAL IS NOT AN ALARM. A reader who may not read the tracker opening a
|
|
65
|
+
* dashboard that cites it is an ordinary state, so `refused` draws a calm
|
|
66
|
+
* sentence in place of the figure, never an error colour, and draws nothing
|
|
67
|
+
* of the figure itself: a host that passed rows by mistake still shows none.
|
|
68
|
+
* `failed` reads the same way with its own sentence.
|
|
69
|
+
*
|
|
70
|
+
* Sits inside the host's `ArrangeFrame`, which owns the grid, the drag and
|
|
71
|
+
* the resize; this owns what is inside the card.
|
|
72
|
+
*/
|
|
73
|
+
export declare function WidgetFrame({ title, source, onCite, actions, headingLevel, now, labels, className, children, ...rest }: WidgetFrameProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* WidgetFrame: one figure on a dashboard. A title row, the figure filling the
|
|
3
|
+
* height the host's frame gives it, and the citation line at the foot.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
.crewlet-widget-frame {
|
|
7
|
+
box-sizing: border-box;
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
gap: var(--spacing-2);
|
|
11
|
+
min-width: 0;
|
|
12
|
+
height: 100%;
|
|
13
|
+
min-height: 0;
|
|
14
|
+
padding: var(--spacing-3) var(--spacing-4);
|
|
15
|
+
border: 1px solid var(--color-border-default);
|
|
16
|
+
border-radius: var(--radius-lg);
|
|
17
|
+
background: var(--color-surface-elevated);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.crewlet-widget-frame__head {
|
|
21
|
+
display: flex;
|
|
22
|
+
align-items: center;
|
|
23
|
+
gap: var(--spacing-2);
|
|
24
|
+
min-width: 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.crewlet-widget-frame__title {
|
|
28
|
+
flex: 1;
|
|
29
|
+
min-width: 0;
|
|
30
|
+
margin: 0;
|
|
31
|
+
overflow: hidden;
|
|
32
|
+
color: var(--color-text-primary);
|
|
33
|
+
font-size: var(--font-size-sm);
|
|
34
|
+
font-weight: var(--font-weight-semibold);
|
|
35
|
+
line-height: var(--font-line-height-snug);
|
|
36
|
+
text-overflow: ellipsis;
|
|
37
|
+
white-space: nowrap;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.crewlet-widget-frame__actions {
|
|
41
|
+
display: inline-flex;
|
|
42
|
+
flex: none;
|
|
43
|
+
align-items: center;
|
|
44
|
+
gap: var(--spacing-1);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.crewlet-widget-frame__body {
|
|
48
|
+
flex: 1;
|
|
49
|
+
min-width: 0;
|
|
50
|
+
min-height: 0;
|
|
51
|
+
overflow: auto;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.crewlet-widget-frame__blocked {
|
|
55
|
+
display: flex;
|
|
56
|
+
align-items: flex-start;
|
|
57
|
+
gap: var(--spacing-2);
|
|
58
|
+
margin: 0;
|
|
59
|
+
color: var(--color-text-secondary);
|
|
60
|
+
font-size: var(--font-size-sm);
|
|
61
|
+
line-height: var(--font-line-height-normal);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.crewlet-widget-frame__blocked-glyph {
|
|
65
|
+
display: inline-flex;
|
|
66
|
+
flex: none;
|
|
67
|
+
padding-top: 2px;
|
|
68
|
+
color: var(--color-text-tertiary);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.crewlet-widget-frame__cite {
|
|
72
|
+
display: flex;
|
|
73
|
+
min-width: 0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.crewlet-widget-frame__cite-text,
|
|
77
|
+
.crewlet-widget-frame__cite-button {
|
|
78
|
+
display: inline-flex;
|
|
79
|
+
flex-wrap: wrap;
|
|
80
|
+
align-items: center;
|
|
81
|
+
gap: 0 var(--spacing-1);
|
|
82
|
+
min-width: 0;
|
|
83
|
+
color: var(--color-text-tertiary);
|
|
84
|
+
font-size: var(--font-size-xs);
|
|
85
|
+
line-height: var(--font-line-height-snug);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.crewlet-widget-frame__cite-button {
|
|
89
|
+
margin: 0;
|
|
90
|
+
padding: 0;
|
|
91
|
+
border: 0;
|
|
92
|
+
border-radius: var(--radius-xs);
|
|
93
|
+
background: none;
|
|
94
|
+
font: inherit;
|
|
95
|
+
font-size: var(--font-size-xs);
|
|
96
|
+
text-align: start;
|
|
97
|
+
cursor: pointer;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.crewlet-widget-frame__cite-button:hover .crewlet-widget-frame__source {
|
|
101
|
+
color: var(--color-text-primary);
|
|
102
|
+
text-decoration: underline;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.crewlet-widget-frame__cite-button:focus-visible {
|
|
106
|
+
outline: 2px solid var(--color-focus);
|
|
107
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.crewlet-widget-frame__source {
|
|
111
|
+
overflow: hidden;
|
|
112
|
+
color: var(--color-text-secondary);
|
|
113
|
+
font-weight: var(--font-weight-medium);
|
|
114
|
+
text-overflow: ellipsis;
|
|
115
|
+
white-space: nowrap;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* The separator is drawn, not typed, so a screen reader hears the facts alone. */
|
|
119
|
+
.crewlet-widget-frame__when::before {
|
|
120
|
+
content: '\00b7' / '';
|
|
121
|
+
margin-inline-end: var(--spacing-1);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.crewlet-widget-frame__stale {
|
|
125
|
+
display: inline-flex;
|
|
126
|
+
color: var(--color-feedback-warning-ink);
|
|
127
|
+
}
|