@crewlethq/ui 0.23.0 → 0.25.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 +75 -3
- package/dist/ArrangeList/index.js +2 -2
- package/dist/ArtifactCard/ArtifactCard.d.ts +3 -2
- package/dist/ArtifactCard/index.js +1 -1
- 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 +3 -3
- 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 +3 -3
- 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 +11 -7
- 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-TODND5AD.js → chunk-6J35F334.js} +7 -4
- 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 +92 -79
- package/dist/index.js +92 -79
- 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
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* SlideCompare: two versions of a deck, slide by slide.
|
|
3
|
+
*
|
|
4
|
+
* A row that changed carries its change in words beside a glyph; the side a
|
|
5
|
+
* version lacks is a dashed, empty box of the slide's shape, so the pairing
|
|
6
|
+
* still reads at a glance.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
.crewlet-slide-compare {
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
gap: var(--spacing-3);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.crewlet-slide-compare__summary {
|
|
16
|
+
margin: 0;
|
|
17
|
+
color: var(--color-text-secondary);
|
|
18
|
+
font-size: var(--font-size-sm);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.crewlet-slide-compare__list {
|
|
22
|
+
display: flex;
|
|
23
|
+
flex-direction: column;
|
|
24
|
+
gap: var(--spacing-4);
|
|
25
|
+
margin: 0;
|
|
26
|
+
padding: 0;
|
|
27
|
+
list-style: none;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.crewlet-slide-compare__head {
|
|
31
|
+
display: flex;
|
|
32
|
+
flex-wrap: wrap;
|
|
33
|
+
align-items: center;
|
|
34
|
+
gap: var(--spacing-2) var(--spacing-3);
|
|
35
|
+
margin-bottom: var(--spacing-2);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.crewlet-slide-compare__title {
|
|
39
|
+
font-weight: var(--font-weight-semibold);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.crewlet-slide-compare__change {
|
|
43
|
+
display: inline-flex;
|
|
44
|
+
align-items: center;
|
|
45
|
+
gap: var(--spacing-1);
|
|
46
|
+
padding: 0 var(--spacing-2);
|
|
47
|
+
border: 1px solid var(--color-border-default);
|
|
48
|
+
border-radius: var(--radius-pill);
|
|
49
|
+
color: var(--color-text-secondary);
|
|
50
|
+
font-size: var(--font-size-xs);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.crewlet-slide-compare__sides {
|
|
54
|
+
display: grid;
|
|
55
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
56
|
+
gap: var(--spacing-3);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.crewlet-slide-compare__side .crewlet-slide-stage {
|
|
60
|
+
border-radius: var(--radius-sm);
|
|
61
|
+
outline: 1px solid var(--color-border-default);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.crewlet-slide-compare__missing {
|
|
65
|
+
display: flex;
|
|
66
|
+
align-items: center;
|
|
67
|
+
justify-content: center;
|
|
68
|
+
aspect-ratio: 16 / 9;
|
|
69
|
+
margin: 0;
|
|
70
|
+
border: 1px dashed var(--color-border-strong);
|
|
71
|
+
border-radius: var(--radius-sm);
|
|
72
|
+
color: var(--color-text-tertiary);
|
|
73
|
+
font-size: var(--font-size-sm);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@media (width < 640px) {
|
|
77
|
+
.crewlet-slide-compare__sides {
|
|
78
|
+
grid-template-columns: minmax(0, 1fr);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/** One slide as the filmstrip lists it. */
|
|
3
|
+
export interface FilmstripSlide {
|
|
4
|
+
id: string;
|
|
5
|
+
/** What a reader calls it: its first heading. */
|
|
6
|
+
title: string;
|
|
7
|
+
/** Skipped when presenting; drawn dimmed here. */
|
|
8
|
+
hidden?: boolean | undefined;
|
|
9
|
+
}
|
|
10
|
+
export interface SlideFilmstripLabels {
|
|
11
|
+
/** The list's name. */
|
|
12
|
+
list: string;
|
|
13
|
+
/** A thumbnail's name: "Slide 4, The plan". */
|
|
14
|
+
slide: (position: number, title: string) => string;
|
|
15
|
+
hidden: string;
|
|
16
|
+
untitled: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SlideFilmstripProps {
|
|
19
|
+
slides: readonly FilmstripSlide[];
|
|
20
|
+
/** The slide on the stage. */
|
|
21
|
+
selected: string;
|
|
22
|
+
onSelect: (id: string) => void;
|
|
23
|
+
/** Draws one slide for its thumbnail. */
|
|
24
|
+
renderSlide: (id: string) => ReactNode;
|
|
25
|
+
/**
|
|
26
|
+
* A new order, by a drag or by the arrow keys on a slide's handle. Left
|
|
27
|
+
* out, the filmstrip is read only and draws no handles.
|
|
28
|
+
*/
|
|
29
|
+
onReorder?: ((ids: string[]) => void) | undefined;
|
|
30
|
+
className?: string | undefined;
|
|
31
|
+
labels?: Partial<SlideFilmstripLabels> | undefined;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The column of slide thumbnails beside a deck's stage: the slide on the stage
|
|
35
|
+
* marked, each one a press away, and, where the reader may edit, a handle that
|
|
36
|
+
* moves it.
|
|
37
|
+
*
|
|
38
|
+
* ONE STOP IN THE TAB ORDER for the thumbnails: each is a button marked
|
|
39
|
+
* `aria-current` when its slide is on the stage, and only that one is in the
|
|
40
|
+
* tab order; Up and Down move to the next or previous slide, Home and End to
|
|
41
|
+
* the ends, and the stage follows. A handle is its own control beside its
|
|
42
|
+
* thumbnail, since moving a slide is a different act from looking at it; its
|
|
43
|
+
* arrow keys move the slide, and the move is announced with where it landed.
|
|
44
|
+
* (A listbox would hold the handles inside its options, which a listbox may
|
|
45
|
+
* not.)
|
|
46
|
+
*
|
|
47
|
+
* THUMBNAILS ARE THE SLIDES THEMSELVES, drawn by the caller at the slide's own
|
|
48
|
+
* size and scaled by `SlideStage`, so what the strip shows is what presents.
|
|
49
|
+
*/
|
|
50
|
+
export declare function SlideFilmstrip({ slides, selected, onSelect, renderSlide, onReorder, className, labels, }: SlideFilmstripProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { SlideFilmstrip } from '../chunk-KSSSFLE2.js';
|
|
2
|
+
import '../chunk-KNLJL3VP.js';
|
|
3
|
+
import '../chunk-XJ2QEBMM.js';
|
|
4
|
+
import '../chunk-HMPFGIWM.js';
|
|
5
|
+
import '../chunk-R25RGPUB.js';
|
|
6
|
+
import '../chunk-RSAQOKH3.js';
|
|
7
|
+
import '../chunk-BZFWDIV6.js';
|
|
8
|
+
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* SlideFilmstrip: the column of slide thumbnails beside a deck's stage.
|
|
3
|
+
*
|
|
4
|
+
* The selected slide is ringed in the brand accent rather than filled, so its
|
|
5
|
+
* thumbnail still shows the slide's own colours.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
.crewlet-slide-filmstrip__list {
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
gap: var(--spacing-2);
|
|
12
|
+
margin: 0;
|
|
13
|
+
padding: var(--spacing-1);
|
|
14
|
+
list-style: none;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.crewlet-slide-filmstrip__item {
|
|
18
|
+
display: grid;
|
|
19
|
+
grid-template-columns: var(--spacing-5) minmax(0, 1fr) auto;
|
|
20
|
+
align-items: start;
|
|
21
|
+
gap: var(--spacing-1);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.crewlet-slide-filmstrip__number {
|
|
25
|
+
padding-top: var(--spacing-1);
|
|
26
|
+
color: var(--color-text-tertiary);
|
|
27
|
+
font-size: var(--font-size-xs);
|
|
28
|
+
font-variant-numeric: tabular-nums;
|
|
29
|
+
text-align: right;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.crewlet-slide-filmstrip__thumb {
|
|
33
|
+
position: relative;
|
|
34
|
+
display: block;
|
|
35
|
+
width: 100%;
|
|
36
|
+
padding: 0;
|
|
37
|
+
border: 0;
|
|
38
|
+
background: transparent;
|
|
39
|
+
border-radius: var(--radius-sm);
|
|
40
|
+
outline: 1px solid var(--color-border-default);
|
|
41
|
+
cursor: pointer;
|
|
42
|
+
overflow: hidden;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.crewlet-slide-filmstrip__thumb:hover {
|
|
46
|
+
outline-color: var(--color-border-hover);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.crewlet-slide-filmstrip__item[data-selected='true'] .crewlet-slide-filmstrip__thumb {
|
|
50
|
+
outline: 2px solid var(--color-brand-accent);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* ONE RING, OVER THE THUMBNAIL'S OWN EDGE: the focus outline takes the place
|
|
54
|
+
of the edge rather than standing off it as a second one. */
|
|
55
|
+
.crewlet-slide-filmstrip__thumb:focus-visible {
|
|
56
|
+
outline: 2px solid var(--color-focus);
|
|
57
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.crewlet-slide-filmstrip__item[data-hidden='true'] .crewlet-slide-stage {
|
|
61
|
+
opacity: 0.45;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.crewlet-slide-filmstrip__hidden {
|
|
65
|
+
position: absolute;
|
|
66
|
+
right: var(--spacing-1);
|
|
67
|
+
bottom: var(--spacing-1);
|
|
68
|
+
display: inline-flex;
|
|
69
|
+
padding: var(--spacing-0);
|
|
70
|
+
border-radius: var(--radius-xs);
|
|
71
|
+
background: var(--color-surface-elevated);
|
|
72
|
+
color: var(--color-text-secondary);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.crewlet-slide-filmstrip__handle {
|
|
76
|
+
display: inline-flex;
|
|
77
|
+
align-items: center;
|
|
78
|
+
justify-content: center;
|
|
79
|
+
min-width: var(--size-target-min);
|
|
80
|
+
min-height: var(--size-target-min);
|
|
81
|
+
padding: 0;
|
|
82
|
+
border: 0;
|
|
83
|
+
border-radius: var(--radius-sm);
|
|
84
|
+
background: transparent;
|
|
85
|
+
color: var(--color-text-tertiary);
|
|
86
|
+
cursor: grab;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.crewlet-slide-filmstrip__handle:hover {
|
|
90
|
+
background: var(--color-surface-hover);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.crewlet-slide-filmstrip__handle:focus-visible {
|
|
94
|
+
outline: 2px solid var(--color-focus);
|
|
95
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.crewlet-slide-filmstrip__item[data-reorder='dragging'] {
|
|
99
|
+
opacity: 0.4;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.crewlet-slide-filmstrip__item[data-reorder-target='before'] .crewlet-slide-filmstrip__thumb {
|
|
103
|
+
box-shadow: 0 calc(var(--spacing-1) * -1) 0 var(--color-brand-accent);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.crewlet-slide-filmstrip__item[data-reorder-target='after'] .crewlet-slide-filmstrip__thumb {
|
|
107
|
+
box-shadow: 0 var(--spacing-1) 0 var(--color-brand-accent);
|
|
108
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { FilmstripSlide } from '../SlideFilmstrip/index.js';
|
|
3
|
+
/** A run of the deck's outline and the slides it holds, in order. */
|
|
4
|
+
export interface SlideGridSection {
|
|
5
|
+
/** The section's sentence; empty for slides before the first section. */
|
|
6
|
+
title: string;
|
|
7
|
+
slides: readonly FilmstripSlide[];
|
|
8
|
+
}
|
|
9
|
+
export interface SlideGridLabels {
|
|
10
|
+
slide: (position: number, title: string) => string;
|
|
11
|
+
hidden: string;
|
|
12
|
+
untitled: string;
|
|
13
|
+
}
|
|
14
|
+
export interface SlideGridProps {
|
|
15
|
+
sections: readonly SlideGridSection[];
|
|
16
|
+
renderSlide: (id: string) => ReactNode;
|
|
17
|
+
/** Open a slide: the editor's stage, or Present from it. */
|
|
18
|
+
onOpen: (id: string) => void;
|
|
19
|
+
/** The slide to mark as current, if any. */
|
|
20
|
+
current?: string | undefined;
|
|
21
|
+
className?: string | undefined;
|
|
22
|
+
labels?: Partial<SlideGridLabels> | undefined;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Every slide of a deck at once, laid out by its outline's sections: the view
|
|
26
|
+
* for finding a slide, checking the rhythm of a deck, or reviewing it whole.
|
|
27
|
+
*
|
|
28
|
+
* NUMBERED ACROSS THE DECK, not within a section, since a presenter says
|
|
29
|
+
* "slide 7" whatever section it sits in. Each card is a button naming its
|
|
30
|
+
* slide, so the grid is a list of choices to a screen reader.
|
|
31
|
+
*/
|
|
32
|
+
export declare function SlideGrid({ sections, renderSlide, onOpen, current, className, labels }: SlideGridProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* SlideGrid: every slide of a deck at once, by its outline's sections.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
.crewlet-slide-grid {
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
gap: var(--spacing-6);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.crewlet-slide-grid__heading {
|
|
12
|
+
margin: 0 0 var(--spacing-3);
|
|
13
|
+
color: var(--color-text-secondary);
|
|
14
|
+
font-size: var(--font-size-sm);
|
|
15
|
+
font-weight: var(--font-weight-semibold);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.crewlet-slide-grid__list {
|
|
19
|
+
display: grid;
|
|
20
|
+
grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr));
|
|
21
|
+
gap: var(--spacing-4);
|
|
22
|
+
margin: 0;
|
|
23
|
+
padding: 0;
|
|
24
|
+
list-style: none;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.crewlet-slide-grid__card {
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: column;
|
|
30
|
+
gap: var(--spacing-2);
|
|
31
|
+
width: 100%;
|
|
32
|
+
padding: 0;
|
|
33
|
+
border: 0;
|
|
34
|
+
background: transparent;
|
|
35
|
+
color: inherit;
|
|
36
|
+
font: inherit;
|
|
37
|
+
text-align: left;
|
|
38
|
+
cursor: pointer;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.crewlet-slide-grid__card .crewlet-slide-stage {
|
|
42
|
+
border-radius: var(--radius-sm);
|
|
43
|
+
outline: 1px solid var(--color-border-default);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.crewlet-slide-grid__card:hover .crewlet-slide-stage {
|
|
47
|
+
outline-color: var(--color-border-hover);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.crewlet-slide-grid__card[aria-current='true'] .crewlet-slide-stage {
|
|
51
|
+
outline: 2px solid var(--color-brand-accent);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* ONE RING, round the whole card (its slide and its caption), on the inset
|
|
55
|
+
offset so it does not stand off the slide's own edge as a second line. */
|
|
56
|
+
.crewlet-slide-grid__card:focus-visible {
|
|
57
|
+
outline: 2px solid var(--color-focus);
|
|
58
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.crewlet-slide-grid__card[data-hidden='true'] .crewlet-slide-stage {
|
|
62
|
+
opacity: 0.45;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.crewlet-slide-grid__caption {
|
|
66
|
+
display: flex;
|
|
67
|
+
align-items: center;
|
|
68
|
+
gap: var(--spacing-2);
|
|
69
|
+
color: var(--color-text-secondary);
|
|
70
|
+
font-size: var(--font-size-xs);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.crewlet-slide-grid__number {
|
|
74
|
+
color: var(--color-text-tertiary);
|
|
75
|
+
font-variant-numeric: tabular-nums;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.crewlet-slide-grid__title {
|
|
79
|
+
overflow: hidden;
|
|
80
|
+
text-overflow: ellipsis;
|
|
81
|
+
white-space: nowrap;
|
|
82
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/** A presentation's stage: 1920 by 1080 CSS pixels, 16:9. */
|
|
3
|
+
export declare const SLIDE_WIDTH = 1920;
|
|
4
|
+
export declare const SLIDE_HEIGHT = 1080;
|
|
5
|
+
/**
|
|
6
|
+
* How a stage fills its box.
|
|
7
|
+
*
|
|
8
|
+
* - `width`: as wide as its container, as tall as 16:9 makes it. A filmstrip
|
|
9
|
+
* thumbnail, a grid card, the editor's slide.
|
|
10
|
+
* - `contain`: as large as fits inside its container both ways, centred, the
|
|
11
|
+
* rest letterboxed. Present, full screen.
|
|
12
|
+
*/
|
|
13
|
+
export type SlideStageFit = 'width' | 'contain';
|
|
14
|
+
export interface SlideStageProps {
|
|
15
|
+
/** The slide, laid out at the stage's own size (1920 by 1080 by default). */
|
|
16
|
+
children: ReactNode;
|
|
17
|
+
/** The slide's accessible name: "Slide 4 of 12, The plan". */
|
|
18
|
+
label: string;
|
|
19
|
+
fit?: SlideStageFit | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* A fixed scale instead of one measured from the box: print, where the page
|
|
22
|
+
* is known and a measurement taken on screen would be the wrong one.
|
|
23
|
+
*/
|
|
24
|
+
scale?: number | undefined;
|
|
25
|
+
/** The stage's own size, for a format other than 16:9 at 1920. */
|
|
26
|
+
width?: number | undefined;
|
|
27
|
+
height?: number | undefined;
|
|
28
|
+
className?: string | undefined;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A slide drawn at its authored size and scaled to whatever box it is given.
|
|
32
|
+
*
|
|
33
|
+
* ONE LAYOUT AT EVERY SIZE. A slide is authored on a fixed 1920 by 1080 stage,
|
|
34
|
+
* with pixel font sizes and pinned positions, so it is laid out at exactly that
|
|
35
|
+
* size and then scaled as a whole: a thumbnail, the editor and a projector all
|
|
36
|
+
* show the same line breaks. Reflowing it to the box would move every pinned
|
|
37
|
+
* element relative to the text beside it.
|
|
38
|
+
*
|
|
39
|
+
* MEASURED, NOT GUESSED: the scale is the box's own size over the stage's,
|
|
40
|
+
* read whenever the box resizes, so a filmstrip that narrows or a window that
|
|
41
|
+
* goes full screen redraws at the new size. A `scale` given outright is used
|
|
42
|
+
* as is, for print.
|
|
43
|
+
*
|
|
44
|
+
* A GROUP NAMED AS A SLIDE, so a screen reader announces "slide" with its
|
|
45
|
+
* name and reads its text in source order, which is the slide's reading order.
|
|
46
|
+
*/
|
|
47
|
+
export declare function SlideStage({ children, label, fit, scale, width, height, className, }: SlideStageProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import './SlideStage.css';
|
|
2
|
+
export { SlideStage, SLIDE_WIDTH, SLIDE_HEIGHT } from './SlideStage.js';
|
|
3
|
+
export type { SlideStageFit, SlideStageProps } from './SlideStage.js';
|
|
4
|
+
export { useSlideKeys } from './useSlideKeys.js';
|
|
5
|
+
export type { SlideKeys } from './useSlideKeys.js';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface SlideKeys {
|
|
2
|
+
onNext: () => void;
|
|
3
|
+
onPrevious: () => void;
|
|
4
|
+
onFirst?: (() => void) | undefined;
|
|
5
|
+
onLast?: (() => void) | undefined;
|
|
6
|
+
/** Escape: leave the show. */
|
|
7
|
+
onExit?: (() => void) | undefined;
|
|
8
|
+
/** Listen only while the show is on. */
|
|
9
|
+
enabled?: boolean | undefined;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The keys every presentation answers, the ones a clicker sends too: Right,
|
|
13
|
+
* Down, Page Down, Space and Enter go forward; Left, Up, Page Up and Backspace
|
|
14
|
+
* go back; Home and End go to the ends; Escape leaves.
|
|
15
|
+
*
|
|
16
|
+
* AT THE DOCUMENT, because a show has no field to focus and a clicker sends
|
|
17
|
+
* its key wherever focus is. A key a field is typing, a composition is using,
|
|
18
|
+
* or a nearer surface (a menu, a dialog) already handled is left alone, and
|
|
19
|
+
* modified keys are the browser's.
|
|
20
|
+
*/
|
|
21
|
+
export declare function useSlideKeys({ onNext, onPrevious, onFirst, onLast, onExit, enabled }: SlideKeys): void;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* SlideStage: a slide laid out at its authored size and scaled to its box.
|
|
3
|
+
*
|
|
4
|
+
* The box clips: a pinned element authored past the stage's edge is cut there,
|
|
5
|
+
* as it is on a projector, rather than spilling over the next thumbnail.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
.crewlet-slide-stage {
|
|
9
|
+
position: relative;
|
|
10
|
+
overflow: hidden;
|
|
11
|
+
width: 100%;
|
|
12
|
+
background: var(--color-surface-inset);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.crewlet-slide-stage--contain {
|
|
16
|
+
height: 100%;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.crewlet-slide-stage__frame {
|
|
20
|
+
position: absolute;
|
|
21
|
+
top: 0;
|
|
22
|
+
left: 0;
|
|
23
|
+
transform-origin: 0 0;
|
|
24
|
+
overflow: hidden;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@media print {
|
|
28
|
+
.crewlet-slide-stage {
|
|
29
|
+
break-inside: avoid;
|
|
30
|
+
background: transparent;
|
|
31
|
+
}
|
|
32
|
+
}
|
package/dist/Switcher/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { Switcher } from '../chunk-
|
|
1
|
+
export { Switcher } from '../chunk-5OY4LJFH.js';
|
|
2
2
|
import '../chunk-W5J7R5EB.js';
|
|
3
3
|
import '../chunk-F4DPAJCN.js';
|
|
4
4
|
import '../chunk-F73MC7EZ.js';
|
|
5
|
+
import '../chunk-FYTIJM2T.js';
|
|
5
6
|
import '../chunk-6QFAK2WV.js';
|
|
6
7
|
import '../chunk-BWRGFKJP.js';
|
|
7
|
-
import '../chunk-FYTIJM2T.js';
|
|
8
8
|
import '../chunk-PQADV6P6.js';
|
|
9
9
|
import '../chunk-IG75YMUN.js';
|
|
10
10
|
import '../chunk-OG6CL3EB.js';
|
package/dist/TableCells/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from '../chunk-
|
|
1
|
+
export { TABLE_TAGS_CELL_LABELS, TableDateCell, TableEntityCell, TableKeyCell, TableNumberCell, TableStatusCell, TableTagsCell, TableTextCell } from '../chunk-LFNUH4GY.js';
|
|
2
|
+
import '../chunk-FBSEJO2C.js';
|
|
2
3
|
import '../chunk-GFV4LJHH.js';
|
|
3
4
|
import '../chunk-WIATRXEJ.js';
|
|
4
|
-
import '../chunk-FBSEJO2C.js';
|
|
5
5
|
import '../chunk-3CZ7XAVY.js';
|
|
6
6
|
import '../chunk-EUCC37WY.js';
|
|
7
7
|
import '../chunk-UAN5NE7M.js';
|
package/dist/Tabs/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { TabPanel, Tabs, tabId } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { TabPanel, Tabs, tabId } from '../chunk-HJEVSQN6.js';
|
|
2
|
+
import '../chunk-RKKO7QHH.js';
|
|
3
3
|
import '../chunk-BHHIIK3M.js';
|
|
4
4
|
import '../chunk-BZFWDIV6.js';
|
|
5
5
|
import '../chunk-ODEQTPFM.js';
|
package/dist/Tabs/roving.d.ts
CHANGED
|
@@ -71,5 +71,6 @@ export declare function useRoving(count: number, select: ((index: number) => voi
|
|
|
71
71
|
buttons: import("react").RefObject<(HTMLButtonElement | null)[]>;
|
|
72
72
|
onKeyDown: (event: KeyboardEvent<HTMLElement>, vertical: boolean) => void;
|
|
73
73
|
onFocusAt: (index: number) => void;
|
|
74
|
+
reset: () => void;
|
|
74
75
|
focused: number | null;
|
|
75
76
|
};
|
|
@@ -13,8 +13,23 @@ export interface TagGroupProps {
|
|
|
13
13
|
* thirty-six service accounts.
|
|
14
14
|
*/
|
|
15
15
|
max?: number | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* What happens to the tags that do not fit.
|
|
18
|
+
*
|
|
19
|
+
* `expand` (the default) folds everything past `max` behind a "+N more"
|
|
20
|
+
* button that shows them in place.
|
|
21
|
+
*
|
|
22
|
+
* `fit` keeps the group on ONE LINE in whatever width it is given: the tags
|
|
23
|
+
* that would wrap are left out and counted in a static "+N" chip, so a tag is
|
|
24
|
+
* never cut mid-glyph by the box it sits in. It is for a dense row (a sheet
|
|
25
|
+
* cell, a table) where a button per row would be a tab stop per row; the
|
|
26
|
+
* group's name still says how many there are.
|
|
27
|
+
*/
|
|
28
|
+
overflow?: 'expand' | 'fit' | undefined;
|
|
16
29
|
/** The overflow control's label. */
|
|
17
30
|
moreLabel?: ((hidden: number) => string) | undefined;
|
|
31
|
+
/** The `fit` count chip's text. */
|
|
32
|
+
countLabel?: ((hidden: number) => string) | undefined;
|
|
18
33
|
/** What is said once the rest are shown. */
|
|
19
34
|
expandedMessage?: ((total: number) => string) | undefined;
|
|
20
35
|
className?: string | undefined;
|
|
@@ -38,4 +53,4 @@ export interface TagGroupProps {
|
|
|
38
53
|
* expansion still works and the announcer says loudly that nothing was said,
|
|
39
54
|
* which is the point of it being one region rather than one per component.
|
|
40
55
|
*/
|
|
41
|
-
export declare function TagGroup({ label, max, moreLabel, expandedMessage, className, children, }: TagGroupProps): import("react").JSX.Element;
|
|
56
|
+
export declare function TagGroup({ label, max, overflow, moreLabel, countLabel, expandedMessage, className, children, }: TagGroupProps): import("react").JSX.Element;
|
package/dist/TagGroup/index.js
CHANGED
|
@@ -25,6 +25,28 @@
|
|
|
25
25
|
outline-offset: 2px;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
/* ONE LINE (overflow="fit"): what wraps is measured and left out, so the
|
|
29
|
+
line is clipped only for the instant before the count replaces it. */
|
|
30
|
+
.crewlet-tag-group--fit {
|
|
31
|
+
flex-wrap: wrap;
|
|
32
|
+
overflow: hidden;
|
|
33
|
+
max-height: max(24px, calc(24px * var(--density, 1)));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.crewlet-tag-group__count {
|
|
37
|
+
display: inline-flex;
|
|
38
|
+
align-items: center;
|
|
39
|
+
height: max(20px, calc(20px * var(--density, 1)));
|
|
40
|
+
padding: 0 var(--spacing-1);
|
|
41
|
+
border-radius: var(--radius-xs);
|
|
42
|
+
background: var(--color-surface-subtle);
|
|
43
|
+
color: var(--color-text-secondary);
|
|
44
|
+
font-family: var(--font-family-sans);
|
|
45
|
+
font-size: var(--font-size-2xs);
|
|
46
|
+
font-weight: var(--font-weight-medium);
|
|
47
|
+
white-space: nowrap;
|
|
48
|
+
}
|
|
49
|
+
|
|
28
50
|
.crewlet-tag-group__item {
|
|
29
51
|
display: inline-flex;
|
|
30
52
|
min-width: 0;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { ThemeGallery } from '../chunk-
|
|
1
|
+
export { ThemeGallery } from '../chunk-C2FRTWKO.js';
|
|
2
2
|
import '../chunk-MNFU2RNT.js';
|
|
3
3
|
import '../chunk-F73MC7EZ.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-RKKO7QHH.js';
|
|
5
5
|
import '../chunk-R25RGPUB.js';
|
|
6
6
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { DensitySwitcher, ThemeSwitcher } from '../chunk-
|
|
1
|
+
export { DensitySwitcher, ThemeSwitcher } from '../chunk-WJDQ7XQA.js';
|
|
2
2
|
export { applyStoredPreferences, resolveTheme, useDensityPreference, useSystemTheme, useThemePreference } from '../chunk-Z24ZUSTX.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-FQCLKD7U.js';
|
|
4
4
|
export { DENSITY_PREFERENCES, PALETTE_ID, THEME_PREFERENCES, applyDensity, applyPalette, applyTheme, isDensityPreference, isPaletteId, isThemePreference } from '../chunk-ZXXDZJQN.js';
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-RCQXUT5K.js';
|
|
6
|
+
import '../chunk-HJEVSQN6.js';
|
|
7
|
+
import '../chunk-RKKO7QHH.js';
|
|
8
8
|
import '../chunk-BHHIIK3M.js';
|
|
9
9
|
import '../chunk-BZFWDIV6.js';
|
|
10
10
|
import '../chunk-ODEQTPFM.js';
|
package/dist/TreeCanvas/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { TreeCanvas } from '../chunk-
|
|
1
|
+
export { TreeCanvas } from '../chunk-RSC7UJCR.js';
|
|
2
2
|
import '../chunk-MY374UUD.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-KZOGQXSP.js';
|
|
4
4
|
import '../chunk-VYOKRN2I.js';
|
|
5
5
|
import '../chunk-OG6CL3EB.js';
|
|
6
6
|
import '../chunk-HMPFGIWM.js';
|
|
@@ -43,6 +43,13 @@ export interface VersionCompareProps {
|
|
|
43
43
|
from?: ReactNode;
|
|
44
44
|
/** The newer version, drawn for the versions lens. With `from` left out it is drawn alone. */
|
|
45
45
|
to?: ReactNode;
|
|
46
|
+
/**
|
|
47
|
+
* The versions lens, drawn by the host in place of the two panes: content
|
|
48
|
+
* compared item by item, where two independent panes could not line the
|
|
49
|
+
* items up (a deck's slides, paired by id, with added and removed ones in
|
|
50
|
+
* place).
|
|
51
|
+
*/
|
|
52
|
+
versions?: ReactNode;
|
|
46
53
|
/** A sentence over the versions lens: "Both versions show today's data." */
|
|
47
54
|
note?: ReactNode;
|
|
48
55
|
/** Controls at the end of the head, after the lens switch: "Back to the page". */
|
|
@@ -67,4 +74,4 @@ export interface VersionCompareProps {
|
|
|
67
74
|
* A LENS THAT CANNOT BE DRAWN IS ABSENT, not offered and then empty: a first
|
|
68
75
|
* version has nothing to compare with, and a sheet has no side by side.
|
|
69
76
|
*/
|
|
70
|
-
export declare function VersionCompare({ fromLabel, toLabel, title, description, lens, onLensChange, before, after, changes, context, from, to, note, actions, labels: overrides, className, }: VersionCompareProps): import("react").JSX.Element;
|
|
77
|
+
export declare function VersionCompare({ fromLabel, toLabel, title, description, lens, onLensChange, before, after, changes, context, from, to, versions, note, actions, labels: overrides, className, }: VersionCompareProps): import("react").JSX.Element;
|