@crewlethq/ui 0.35.1 → 0.37.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 +90 -1
- package/dist/AgentHandoffPanel/AgentHandoffPanel.d.ts +99 -0
- package/dist/AgentHandoffPanel/index.d.ts +3 -0
- package/dist/AgentHandoffPanel/index.js +16 -0
- package/dist/AgentHandoffPanel-JWSW62GU.css +151 -0
- package/dist/ArrangeFrame/index.js +1 -1
- package/dist/{ArrangeFrame-3PLZAG22.css → ArrangeFrame-QXOQTFAH.css} +22 -5
- package/dist/ArrangeList/index.js +4 -3
- package/dist/ArtifactAccess/ArtifactAccess.d.ts +40 -0
- package/dist/ArtifactAccess/index.d.ts +3 -0
- package/dist/ArtifactAccess/index.js +2 -0
- package/dist/ArtifactAccess-Y53ZTRFS.css +31 -0
- package/dist/ArtifactBar/ArtifactBar.d.ts +2 -1
- package/dist/ArtifactBar/index.js +2 -2
- package/dist/{ArtifactBar-HV5AT4RG.css → ArtifactBar-FWPBBKQ5.css} +8 -0
- package/dist/ArtifactCard/ArtifactCard.d.ts +1 -6
- package/dist/ArtifactCard/index.d.ts +2 -1
- package/dist/ArtifactCard/index.js +4 -3
- package/dist/ArtifactCover/index.js +3 -2
- package/dist/ArtifactKindIllustration/ArtifactKindIllustration.d.ts +16 -7
- package/dist/ArtifactKindIllustration/index.js +1 -1
- package/dist/{ArtifactKindIllustration-5FPRJQ3P.css → ArtifactKindIllustration-KLFL7KBG.css} +37 -1
- package/dist/ArtifactMakeRow/ArtifactMakeRow.d.ts +39 -0
- package/dist/ArtifactMakeRow/index.d.ts +4 -0
- package/dist/ArtifactMakeRow/index.js +4 -0
- package/dist/ArtifactMakeRow-XBA2MPSY.css +167 -0
- package/dist/ArtifactNameCell/ArtifactNameCell.d.ts +37 -0
- package/dist/ArtifactNameCell/index.d.ts +4 -0
- package/dist/ArtifactNameCell/index.js +4 -0
- package/dist/ArtifactNameCell-RTVP4LO4.css +104 -0
- package/dist/ArtifactPanel/ArtifactPanel.d.ts +8 -1
- package/dist/ArtifactPanel/index.js +1 -1
- package/dist/{ArtifactPanel-HW3SU7CP.css → ArtifactPanel-KKUUIPEU.css} +9 -0
- package/dist/AuthLayout/index.js +2 -2
- package/dist/AvatarPicker/index.js +2 -2
- package/dist/Canvas/index.js +2 -2
- package/dist/CanvasBoard/CanvasBoard.d.ts +27 -13
- package/dist/CanvasBoard/index.d.ts +1 -1
- package/dist/CanvasBoard/index.js +4 -4
- package/dist/{CanvasBoard-5NNSKY6A.css → CanvasBoard-TS4P356F.css} +13 -6
- package/dist/CanvasToolbar/index.js +3 -3
- package/dist/Card/index.js +1 -1
- package/dist/{Card-KJOYHDTJ.css → Card-QOVASQNU.css} +17 -12
- package/dist/Checkbox/index.js +3 -2
- package/dist/ChoiceButtons/index.js +1 -1
- package/dist/{ChoiceButtons-DJ5EOGUA.css → ChoiceButtons-FLIFXFFS.css} +10 -0
- package/dist/ChoiceList/index.js +1 -1
- package/dist/{ChoiceList-RBL7FNQL.css → ChoiceList-EA2W6MOS.css} +36 -5
- package/dist/Combobox/index.js +3 -2
- package/dist/CommandPalette/index.js +3 -2
- package/dist/CommentThread/index.js +6 -5
- package/dist/Composer/Composer.d.ts +4 -0
- package/dist/Composer/index.js +3 -2
- package/dist/{Composer-ABGJIAIR.css → Composer-PXITWNEK.css} +26 -15
- package/dist/ConfirmField/index.js +3 -2
- package/dist/DataTable/index.js +4 -3
- package/dist/DataView/index.js +7 -6
- package/dist/DatasetSource/DatasetSource.d.ts +4 -0
- package/dist/DatasetSource/index.js +1 -1
- package/dist/{DatasetSource-XFPZBRXL.css → DatasetSource-SMGX4PS5.css} +38 -4
- package/dist/DateTimePicker/index.js +2 -1
- package/dist/{DateTimePicker-HG2KQXQ6.css → DateTimePicker-2IVTKFV2.css} +15 -2
- package/dist/DocTabsEditor/index.js +3 -2
- package/dist/Document/Document.d.ts +15 -3
- package/dist/Document/index.js +2 -1
- package/dist/{Document-JUGCSQ4L.css → Document-YFWTWXJP.css} +34 -2
- package/dist/{Editor-BVQHBF7L.js → Editor-HORWMUM3.js} +2 -1
- package/dist/FilterChip/index.js +1 -1
- package/dist/{FilterChip-EZ4QMW4E.css → FilterChip-VL33P3JL.css} +5 -1
- package/dist/Input/index.js +2 -1
- package/dist/{Input-GBZSFXLU.css → Input-ABGOFENS.css} +46 -10
- package/dist/LayersList/index.js +1 -1
- package/dist/{LayersList-NQZEIPZB.css → LayersList-TBNF4XGL.css} +16 -3
- package/dist/LinkInterstitial/index.js +2 -2
- package/dist/ListInput/index.js +3 -2
- package/dist/LivePreview/LivePreview.d.ts +120 -28
- package/dist/LivePreview/budget.d.ts +64 -20
- package/dist/LivePreview/index.d.ts +6 -4
- package/dist/LivePreview/index.js +1 -1
- package/dist/LivePreview/stills.d.ts +57 -0
- package/dist/LivePreview-BROGKR4N.css +113 -0
- package/dist/PresenterView/index.js +2 -2
- package/dist/PrincipalPicker/index.js +4 -3
- package/dist/RichEditor/index.js +1 -1
- package/dist/Select/index.js +2 -1
- package/dist/{Select-A54YS5EP.css → Select-W3CHTZXP.css} +18 -2
- package/dist/ShareDialog/index.js +3 -2
- package/dist/SheetColumnEditor/index.js +6 -5
- package/dist/SheetGrid/index.js +3 -3
- package/dist/SlideCompare/index.js +2 -2
- package/dist/SlideFilmstrip/index.js +2 -2
- package/dist/{SlideFilmstrip-4ITZLMO4.css → SlideFilmstrip-PAT7P4OG.css} +26 -7
- package/dist/SlideGrid/index.js +2 -2
- package/dist/{SlideGrid-S4LTJ4UU.css → SlideGrid-FJA33DV4.css} +11 -1
- package/dist/SlideStage/index.js +1 -1
- package/dist/{SlideStage-S2FISF4C.css → SlideStage-ZTTEQSS2.css} +4 -2
- package/dist/SourceEditor/index.js +2 -1
- package/dist/{SourceEditor-G2C3STPX.css → SourceEditor-QAYE2JS6.css} +19 -12
- package/dist/Switcher/index.js +4 -3
- package/dist/TagsInput/index.js +2 -1
- package/dist/{TagsInput-XMXTI5Q4.css → TagsInput-7EGBBXHS.css} +7 -1
- package/dist/ThemeGallery/index.js +1 -1
- package/dist/{ThemeGallery-HSUKBDWY.css → ThemeGallery-X35Y25EX.css} +26 -5
- package/dist/TimeWindowPicker/index.js +4 -3
- package/dist/{TimeWindowPicker-T763GLXH.css → TimeWindowPicker-DEFDV77Z.css} +15 -2
- package/dist/TreeCanvas/index.js +3 -3
- package/dist/VersionTimeline/index.js +2 -2
- package/dist/{chunk-V43UVX4H.js → chunk-27GD7LVR.js} +1 -1
- package/dist/{chunk-6JVRY5DQ.js → chunk-44WJLPQS.js} +2 -2
- package/dist/{chunk-ONL54WMH.js → chunk-46RL3E54.js} +1 -1
- package/dist/{chunk-UHJQDFKQ.js → chunk-4ZJLOKSS.js} +1 -1
- package/dist/{chunk-ACA27MZH.js → chunk-5QXRI35B.js} +1 -1
- package/dist/{chunk-LL5AFXU7.js → chunk-5RT5O4JR.js} +1 -1
- package/dist/{chunk-GMU6SQ6B.js → chunk-66NGUD5S.js} +2 -2
- package/dist/{chunk-3Y56GQPM.js → chunk-7VAUGG6B.js} +1 -1
- package/dist/{chunk-2CQLNML5.js → chunk-AOLCZDZ6.js} +3 -1
- package/dist/{chunk-NKZCJRKO.js → chunk-APDKUGSH.js} +2 -2
- package/dist/chunk-BGLKLXL3.js +29 -0
- package/dist/{chunk-Z6VW6CXX.js → chunk-BIQDJOJZ.js} +1 -1
- package/dist/{chunk-YSJC7AZC.js → chunk-BWOIUOO3.js} +1 -1
- package/dist/{chunk-PI7HKLIT.js → chunk-D7GNNID2.js} +3 -1
- package/dist/chunk-EAKC24BW.js +51 -0
- package/dist/{chunk-CCLNGVCM.js → chunk-EARDAJQY.js} +1 -1
- package/dist/chunk-EOQFPZEE.js +138 -0
- package/dist/{chunk-THROPJZC.js → chunk-F23N4MVU.js} +1 -1
- package/dist/{chunk-J6YZ4IYV.js → chunk-FG4O64DV.js} +3 -3
- package/dist/{chunk-E35CMI5D.js → chunk-FHHYXZSP.js} +31 -13
- package/dist/{chunk-AYB6AYNH.js → chunk-GMLAKNFY.js} +1 -1
- package/dist/{chunk-ZB5O3ELS.js → chunk-GRYZ5EP3.js} +4 -2
- package/dist/{chunk-QFNWMWWY.js → chunk-GS7ZTHPF.js} +4 -4
- package/dist/{chunk-ILAEBSLJ.js → chunk-H5NOLRGH.js} +2 -2
- package/dist/{chunk-W3UVOZKL.js → chunk-IPAU6FLH.js} +6 -2
- package/dist/{chunk-6QFAK2WV.js → chunk-IUYUS2SO.js} +4 -1
- package/dist/{chunk-22CQQDFW.js → chunk-JML75PGJ.js} +1 -1
- package/dist/{chunk-AXBRWRGV.js → chunk-JQLS3MZB.js} +1 -1
- package/dist/{chunk-FGYET26P.js → chunk-KJW2AS57.js} +1 -1
- package/dist/{chunk-QIXMNOBD.js → chunk-KYZMN6I6.js} +2 -2
- package/dist/{chunk-73A7D5CE.js → chunk-L4WZSVMT.js} +3 -1
- package/dist/{chunk-ULPL26BU.js → chunk-N5SKHIAP.js} +1 -1
- package/dist/{chunk-LV4APO72.js → chunk-NQGPD6NX.js} +1 -1
- package/dist/{chunk-7UYONN6K.js → chunk-OHA6WSAG.js} +6 -11
- package/dist/chunk-P5VGSVWG.js +39 -0
- package/dist/chunk-P6WFZDKS.js +111 -0
- package/dist/{chunk-CPEPST4S.js → chunk-PJIPUEJ3.js} +1 -1
- package/dist/{chunk-QS4ZGTEU.js → chunk-PPFX6GRK.js} +1 -1
- package/dist/{chunk-7DZDSSJS.js → chunk-RH2NCQBZ.js} +5 -4
- package/dist/{chunk-3VD3G3IL.js → chunk-T5RQGI6O.js} +1 -1
- package/dist/{chunk-F2KY4RLI.js → chunk-TVRBQMIX.js} +5 -3
- package/dist/{chunk-W7QBBKUE.js → chunk-UBZDYOCA.js} +7 -3
- package/dist/{chunk-QEFHYUCY.js → chunk-UWGUKMBK.js} +1 -1
- package/dist/{chunk-5YLON2PW.js → chunk-UYZZV4DZ.js} +1 -1
- package/dist/{chunk-BQ7AKL2N.js → chunk-VKKUGZ3G.js} +3 -1
- package/dist/{chunk-DEJHAOC5.js → chunk-WMXAX6VA.js} +1 -1
- package/dist/{chunk-VDPJGP4Q.js → chunk-WX2NIG4G.js} +1 -1
- package/dist/chunk-WYKWXRJ4.js +456 -0
- package/dist/{chunk-ZU3DUXD2.js → chunk-WZGYIVYH.js} +1 -1
- package/dist/{chunk-HUVG2FFT.js → chunk-Y5BD4MTE.js} +4 -2
- package/dist/chunk-YSGLEHND.js +56 -0
- package/dist/generated/index.d.ts +4 -0
- package/dist/generated/index.js +105 -100
- package/dist/index.js +105 -100
- package/dist/styles.css +1036 -163
- package/dist/utils/focusModality.d.ts +41 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +2 -1
- package/package.json +3 -3
- package/dist/LivePreview-SRO7KHO4.css +0 -65
- package/dist/chunk-KF6YGL4B.js +0 -160
- package/dist/chunk-TYKQ33CL.js +0 -35
- package/dist/{chunk-3P4Y5RX6.js → chunk-4BYHAOHH.js} +1 -1
- package/dist/{chunk-KD2IRYCT.js → chunk-5WDXPHEW.js} +1 -1
- package/dist/{chunk-OSFA5ROT.js → chunk-FEJANUZK.js} +0 -0
- package/dist/{chunk-FJJHD73S.js → chunk-GYBDPCRC.js} +1 -1
- package/dist/{chunk-VHZ3AXJD.js → chunk-NQCY44B3.js} +1 -1
- package/dist/{chunk-3WCNHYXE.js → chunk-PNNYVN52.js} +0 -0
- package/dist/{chunk-FF5OZV77.js → chunk-W3HYWD63.js} +2 -2
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
export { ArtifactCard, ArtifactCardSkeleton, ArtifactPreviewGlyph } from '../chunk-
|
|
1
|
+
export { ArtifactCard, ArtifactCardSkeleton, ArtifactPreviewGlyph } from '../chunk-OHA6WSAG.js';
|
|
2
2
|
import '../chunk-TEUQWOWZ.js';
|
|
3
3
|
import '../chunk-CI3VPIJN.js';
|
|
4
4
|
import '../chunk-3CZ7XAVY.js';
|
|
5
5
|
import '../chunk-EUCC37WY.js';
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-UBZDYOCA.js';
|
|
7
|
+
import '../chunk-5QXRI35B.js';
|
|
8
8
|
import '../chunk-AV2DXAEL.js';
|
|
9
9
|
import '../chunk-5AQBPHZD.js';
|
|
10
10
|
import '../chunk-PZKHBB7D.js';
|
|
11
|
+
import '../chunk-BGLKLXL3.js';
|
|
11
12
|
export { ARTIFACT_KINDS, ArtifactKindGlyph } from '../chunk-CE2THTQR.js';
|
|
12
13
|
import '../chunk-BHHIIK3M.js';
|
|
13
14
|
import '../chunk-PQADV6P6.js';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { DashboardCover, DocCover, SHEET_COVER_COLUMNS, SHEET_COVER_ROWS, SheetCover } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { DashboardCover, DocCover, SHEET_COVER_COLUMNS, SHEET_COVER_ROWS, SheetCover } from '../chunk-JQLS3MZB.js';
|
|
2
|
+
import '../chunk-P6WFZDKS.js';
|
|
3
3
|
import '../chunk-CE2THTQR.js';
|
|
4
|
+
import '../chunk-YSGLEHND.js';
|
|
4
5
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -20,8 +20,8 @@ export declare function ArtifactKindIllustration({ kind, className }: {
|
|
|
20
20
|
}): import("react").JSX.Element;
|
|
21
21
|
/**
|
|
22
22
|
* A kind's drawing on its tinted ground: the stand-in a preview shows while
|
|
23
|
-
* nothing live is drawn (
|
|
24
|
-
* failed or empty), and the face of a
|
|
23
|
+
* nothing live is drawn (never yet near, still loading, over the live budget,
|
|
24
|
+
* failed or empty), and the face of a kind tile.
|
|
25
25
|
*/
|
|
26
26
|
export declare function ArtifactKindGround({ kind, className, children, }: {
|
|
27
27
|
kind: ArtifactKind;
|
|
@@ -31,7 +31,7 @@ export declare function ArtifactKindGround({ kind, className, children, }: {
|
|
|
31
31
|
}): import("react").JSX.Element;
|
|
32
32
|
export interface ArtifactKindTileProps {
|
|
33
33
|
kind: ArtifactKind;
|
|
34
|
-
/** The
|
|
34
|
+
/** The name under the tile: "Docs", or a starting point's "Landing page". */
|
|
35
35
|
label: string;
|
|
36
36
|
/** Where starting one goes. Left out with `disabledReason`, the tile starts nothing. */
|
|
37
37
|
href?: string | undefined;
|
|
@@ -41,6 +41,13 @@ export interface ArtifactKindTileProps {
|
|
|
41
41
|
* button. `href` wins where both are given.
|
|
42
42
|
*/
|
|
43
43
|
onSelect?: (() => void) | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* For a tile that is a button: whether it is the one chosen (a starting
|
|
46
|
+
* layout already picked). Drawn as every chosen option is, the selected
|
|
47
|
+
* edge over the selected fill with a check beside the name, and announced
|
|
48
|
+
* as a pressed button. Left out, the tile is an action with no state.
|
|
49
|
+
*/
|
|
50
|
+
selected?: boolean | undefined;
|
|
44
51
|
/**
|
|
45
52
|
* Drawn on the kind's ground in place of its drawing: a picture of this
|
|
46
53
|
* particular starting point, such as a design layout's schematic.
|
|
@@ -55,12 +62,14 @@ export interface ArtifactKindTileProps {
|
|
|
55
62
|
className?: string | undefined;
|
|
56
63
|
}
|
|
57
64
|
/**
|
|
58
|
-
* One kind
|
|
59
|
-
*
|
|
60
|
-
*
|
|
65
|
+
* One kind, or one starting point of a kind, as a tile: the kind's drawing on
|
|
66
|
+
* its tinted ground (or the starting point's own `face`), framed, with its
|
|
67
|
+
* name under it, such as a create page's starting layouts. The whole tile is
|
|
68
|
+
* one link or button named by the name. The gallery's "Start a new artifact" row
|
|
69
|
+
* is the quieter `ArtifactMakeRow`, a toolbar of glyphs rather than pictures.
|
|
61
70
|
*
|
|
62
71
|
* A TILE THAT CANNOT START is still a stop on the row, so a reader moving
|
|
63
72
|
* through it by keyboard hears why (`disabledReason`) rather than finding a
|
|
64
73
|
* kind missing.
|
|
65
74
|
*/
|
|
66
|
-
export declare function ArtifactKindTile({ kind, label, href, onSelect, face, detail, badge, disabledReason, className, }: ArtifactKindTileProps): import("react").JSX.Element;
|
|
75
|
+
export declare function ArtifactKindTile({ kind, label, href, onSelect, selected, face, detail, badge, disabledReason, className, }: ArtifactKindTileProps): import("react").JSX.Element;
|
package/dist/{ArtifactKindIllustration-5FPRJQ3P.css → ArtifactKindIllustration-KLFL7KBG.css}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* A kind's drawing, its tinted ground and the
|
|
2
|
+
* A kind's drawing, its tinted ground and the "Start a new artifact" tile.
|
|
3
3
|
*
|
|
4
4
|
* Every colour is the kind's token, `--color-artifact-kind-<kind>` and its
|
|
5
5
|
* Fill and Line steps, set once per kind on `--crewlet-kind-*`
|
|
@@ -201,6 +201,42 @@ a.crewlet-kind-tile:hover .crewlet-kind-tile__frame,
|
|
|
201
201
|
outline-offset: var(--size-focus-ring-inset-offset);
|
|
202
202
|
}
|
|
203
203
|
|
|
204
|
+
/*
|
|
205
|
+
* A TILE THAT STARTS SOMETHING IN PLACE (a create page's starting layouts)
|
|
206
|
+
* DRAWS ONE EDGE. Its face is a picture of the layout, with boards of its
|
|
207
|
+
* own, so the ground's tinted inner line was a second outline a few pixels
|
|
208
|
+
* inside the frame's, and with the focus ring over the frame the tile read as
|
|
209
|
+
* three nested rings. The frame is the tile's one edge; the ground keeps its
|
|
210
|
+
* tint.
|
|
211
|
+
*/
|
|
212
|
+
.crewlet-kind-tile--button .crewlet-kind-tile__ground {
|
|
213
|
+
box-shadow: none;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/*
|
|
217
|
+
* CHOSEN, as every chosen option is drawn: the selected edge (the accent
|
|
218
|
+
* mixed toward the page) on the frame, over the selected fill, and a check
|
|
219
|
+
* beside the name, the mark that clears 3:1. Under the pointer it keeps its
|
|
220
|
+
* edge, and the focus ring is drawn over it for the keyboard alone.
|
|
221
|
+
*/
|
|
222
|
+
.crewlet-kind-tile--button.is-selected .crewlet-kind-tile__frame,
|
|
223
|
+
.crewlet-kind-tile--button.is-selected:hover .crewlet-kind-tile__frame {
|
|
224
|
+
border-color: var(--color-border-selected);
|
|
225
|
+
background-image: linear-gradient(var(--color-surface-selected), var(--color-surface-selected));
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.crewlet-kind-tile__check {
|
|
229
|
+
flex: none;
|
|
230
|
+
margin-inline-start: auto;
|
|
231
|
+
color: var(--color-brand-accent-ink);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
@media (forced-colors: active) {
|
|
235
|
+
.crewlet-kind-tile--button.is-selected .crewlet-kind-tile__frame {
|
|
236
|
+
border-color: Highlight;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
204
240
|
.crewlet-kind-tile--disabled {
|
|
205
241
|
cursor: not-allowed;
|
|
206
242
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type ArtifactKind } from '../ArtifactKindGlyph/index.js';
|
|
2
|
+
/** One kind a reader can start from the row. */
|
|
3
|
+
export interface ArtifactMakeRowItem {
|
|
4
|
+
kind: ArtifactKind;
|
|
5
|
+
/** The kind's name, as what one makes: "Docs". */
|
|
6
|
+
label: string;
|
|
7
|
+
/** What the kind is for, in a few words under its name: "Live company figures". */
|
|
8
|
+
detail?: string | undefined;
|
|
9
|
+
/** Where starting one goes. Left out with `disabledReason`, the item starts nothing. */
|
|
10
|
+
href?: string | undefined;
|
|
11
|
+
/** Why this reader cannot start one. The item stays focusable and says so. */
|
|
12
|
+
disabledReason?: string | undefined;
|
|
13
|
+
}
|
|
14
|
+
export interface ArtifactMakeRowProps {
|
|
15
|
+
/** The kinds, in the order they are offered. */
|
|
16
|
+
items: readonly ArtifactMakeRowItem[];
|
|
17
|
+
/** What the row is called for assistive technology, when no heading names it. */
|
|
18
|
+
'aria-label'?: string | undefined;
|
|
19
|
+
/** The id of the heading that names the row. */
|
|
20
|
+
'aria-labelledby'?: string | undefined;
|
|
21
|
+
className?: string | undefined;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The kinds a reader can start, as one quiet tray above their work: each
|
|
25
|
+
* kind's glyph on its own tint, its name and what it is for, the whole item
|
|
26
|
+
* one link. A toolbar for making things rather than a hero: one line high on
|
|
27
|
+
* a wide page, the details dropped before a name is cut, and three across on
|
|
28
|
+
* a phone.
|
|
29
|
+
*
|
|
30
|
+
* THE TRAY IS A WORKBENCH, Crewlet's dotted field under the kinds the way the
|
|
31
|
+
* org chart's canvas sits under its seats, and an item lifts off it as a card
|
|
32
|
+
* under the pointer. The glyph is the one coloured thing in each item, so six
|
|
33
|
+
* hues read as six kinds and never as six coloured boxes.
|
|
34
|
+
*
|
|
35
|
+
* AN ITEM THAT CANNOT START is still a stop, so a reader moving through the
|
|
36
|
+
* row by keyboard hears why (`disabledReason`) rather than finding a kind
|
|
37
|
+
* missing.
|
|
38
|
+
*/
|
|
39
|
+
export declare function ArtifactMakeRow({ items, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, className, }: ArtifactMakeRowProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The "Start a new artifact" tray.
|
|
3
|
+
*
|
|
4
|
+
* Every colour is a token: the tray's ground, its dots and its hairlines are
|
|
5
|
+
* the surface and border steps, and each kind's mark reads the kind's own
|
|
6
|
+
* Fill, Line and Ink (`ArtifactKinds.css`), so the tray repaints with the
|
|
7
|
+
* theme and holds no colour of its own.
|
|
8
|
+
*
|
|
9
|
+
* THE TRAY SIZES ITSELF BY ITS OWN WIDTH, never the window's: it sits in a
|
|
10
|
+
* page column a sidebar narrows, so three steps are container queries on the
|
|
11
|
+
* tray. Under 560px three across in two lines; from 560px the six in one
|
|
12
|
+
* line, each its mark over its name, so a long name is never cut; from 920px
|
|
13
|
+
* the mark beside the name and what the kind is for under it.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
.crewlet-make-row {
|
|
17
|
+
container-type: inline-size;
|
|
18
|
+
/* A WORKBENCH: the canvas's dotted field on the sheet itself, one step
|
|
19
|
+
quieter than a canvas that pans, inside a hairline ring. */
|
|
20
|
+
border: 1px solid var(--color-border-default);
|
|
21
|
+
border-radius: var(--radius-lg);
|
|
22
|
+
background-color: var(--color-surface-background);
|
|
23
|
+
background-image: radial-gradient(var(--color-border-default) 1px, transparent 1.2px);
|
|
24
|
+
background-size: var(--spacing-4) var(--spacing-4);
|
|
25
|
+
background-position: calc(var(--spacing-4) / 2) calc(var(--spacing-4) / 2);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.crewlet-make-row__list {
|
|
29
|
+
display: grid;
|
|
30
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
31
|
+
gap: var(--spacing-1);
|
|
32
|
+
margin: 0;
|
|
33
|
+
padding: var(--spacing-1);
|
|
34
|
+
list-style: none;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.crewlet-make-row__cell {
|
|
38
|
+
display: flex;
|
|
39
|
+
min-width: 0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.crewlet-make-row__item {
|
|
43
|
+
display: flex;
|
|
44
|
+
flex: 1;
|
|
45
|
+
flex-direction: column;
|
|
46
|
+
align-items: center;
|
|
47
|
+
gap: var(--spacing-2);
|
|
48
|
+
min-width: 0;
|
|
49
|
+
box-sizing: border-box;
|
|
50
|
+
padding: var(--spacing-3) var(--spacing-2);
|
|
51
|
+
border: 1px solid transparent;
|
|
52
|
+
border-radius: var(--radius-md);
|
|
53
|
+
color: var(--color-text-primary);
|
|
54
|
+
text-decoration: none;
|
|
55
|
+
outline: none;
|
|
56
|
+
transition:
|
|
57
|
+
background-color var(--motion-duration-fast) var(--motion-easing-out),
|
|
58
|
+
border-color var(--motion-duration-fast) var(--motion-easing-out),
|
|
59
|
+
box-shadow var(--motion-duration-fast) var(--motion-easing-out);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* THE GLYPH ON ITS KIND'S TINT, the one coloured thing in the item. */
|
|
63
|
+
.crewlet-make-row__mark {
|
|
64
|
+
display: inline-flex;
|
|
65
|
+
flex: none;
|
|
66
|
+
align-items: center;
|
|
67
|
+
justify-content: center;
|
|
68
|
+
width: 32px;
|
|
69
|
+
height: 32px;
|
|
70
|
+
border-radius: var(--radius-md);
|
|
71
|
+
background: var(--crewlet-kind-fill);
|
|
72
|
+
box-shadow: inset 0 0 0 1px var(--crewlet-kind-line);
|
|
73
|
+
color: var(--crewlet-kind-ink);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.crewlet-make-row__words {
|
|
77
|
+
display: flex;
|
|
78
|
+
flex-direction: column;
|
|
79
|
+
align-items: center;
|
|
80
|
+
min-width: 0;
|
|
81
|
+
max-width: 100%;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.crewlet-make-row__name,
|
|
85
|
+
.crewlet-make-row__detail {
|
|
86
|
+
max-width: 100%;
|
|
87
|
+
overflow: hidden;
|
|
88
|
+
text-overflow: ellipsis;
|
|
89
|
+
white-space: nowrap;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.crewlet-make-row__name {
|
|
93
|
+
font-size: var(--font-size-sm);
|
|
94
|
+
font-weight: var(--font-weight-medium);
|
|
95
|
+
line-height: 1.3;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* WHAT IT IS FOR is the widest step's: on a narrower tray the name alone
|
|
99
|
+
says it, and the details are kept as the item's description. */
|
|
100
|
+
.crewlet-make-row__detail {
|
|
101
|
+
display: none;
|
|
102
|
+
color: var(--color-text-tertiary);
|
|
103
|
+
font-size: var(--font-size-xs);
|
|
104
|
+
line-height: 1.35;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@container (width >= 560px) {
|
|
108
|
+
.crewlet-make-row__list {
|
|
109
|
+
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.crewlet-make-row__item {
|
|
113
|
+
padding: var(--spacing-2) var(--spacing-1);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
@container (width >= 920px) {
|
|
118
|
+
.crewlet-make-row__item {
|
|
119
|
+
flex-direction: row;
|
|
120
|
+
gap: var(--spacing-3);
|
|
121
|
+
padding: var(--spacing-2);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.crewlet-make-row__words {
|
|
125
|
+
align-items: flex-start;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.crewlet-make-row__detail {
|
|
129
|
+
display: block;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* AN ITEM LIFTS OFF THE BENCH under the pointer as a card: the card's
|
|
134
|
+
ground, the hairline a card is found by and the lightest shadow, and
|
|
135
|
+
nothing inside it moves. */
|
|
136
|
+
a.crewlet-make-row__item:hover {
|
|
137
|
+
border-color: var(--color-border-default);
|
|
138
|
+
background-color: var(--color-surface-subtle);
|
|
139
|
+
box-shadow: var(--shadow-xs);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
a.crewlet-make-row__item:active {
|
|
143
|
+
background-color: var(--color-surface-pressed);
|
|
144
|
+
box-shadow: none;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/* ON ITS OWN EDGE: an item draws a hairline once lifted, so the ring sits on
|
|
148
|
+
it rather than standing off it with a gap between two edges. */
|
|
149
|
+
.crewlet-make-row__item:focus-visible {
|
|
150
|
+
outline: 2px solid var(--color-focus);
|
|
151
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.crewlet-make-row__item--disabled {
|
|
155
|
+
cursor: not-allowed;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.crewlet-make-row__item--disabled .crewlet-make-row__mark,
|
|
159
|
+
.crewlet-make-row__item--disabled .crewlet-make-row__words {
|
|
160
|
+
opacity: 0.55;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
@media (prefers-reduced-motion: reduce) {
|
|
164
|
+
.crewlet-make-row__item {
|
|
165
|
+
transition: none;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type ArtifactKind } from '../ArtifactKindGlyph/index.js';
|
|
2
|
+
export interface ArtifactNameCellLabels {
|
|
3
|
+
kinds: Record<ArtifactKind, string>;
|
|
4
|
+
pinned: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ArtifactNameCellProps {
|
|
7
|
+
kind: ArtifactKind;
|
|
8
|
+
title: string;
|
|
9
|
+
/**
|
|
10
|
+
* What it is about, in a line under the title after the kind's word: the
|
|
11
|
+
* artifact's own description. Left out, the kind's word stands alone.
|
|
12
|
+
*/
|
|
13
|
+
detail?: string | undefined;
|
|
14
|
+
pinned?: boolean | undefined;
|
|
15
|
+
/** It is in the trash: its mark is drawn without its kind's tint. */
|
|
16
|
+
trashed?: boolean | undefined;
|
|
17
|
+
className?: string | undefined;
|
|
18
|
+
labels?: Partial<ArtifactNameCellLabels> | undefined;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* An artifact's name in a list: its kind's glyph on the kind's tint, the
|
|
22
|
+
* title, and under it the kind's word and what it is about.
|
|
23
|
+
*
|
|
24
|
+
* THE SAME MARK AS THE MAKE ROW'S, so a reader who started a doc from the
|
|
25
|
+
* tray finds it in the list by the same tile in the same colour, and the
|
|
26
|
+
* grid's badge and the list's mark name one kind one way. The mark is the one
|
|
27
|
+
* coloured thing on the row; the words are the text steps.
|
|
28
|
+
*
|
|
29
|
+
* TWO LINES, ONE NAME. The title is the row's name and the line under it is
|
|
30
|
+
* its description, each cut on one line with the whole of it on hover, so a
|
|
31
|
+
* list of long titles keeps one row height. The kind's word is printed rather
|
|
32
|
+
* than only drawn, which is what lets the list drop a Type column of its own.
|
|
33
|
+
*
|
|
34
|
+
* Not a link: the row it sits in is. The mark is decorative because the kind
|
|
35
|
+
* is printed beside it.
|
|
36
|
+
*/
|
|
37
|
+
export declare function ArtifactNameCell({ kind, title, detail, pinned, trashed, className, labels }: ArtifactNameCellProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* An artifact's name in a list: the kind's mark on its tint, the title over
|
|
3
|
+
* one quiet line. Every colour is a token: the mark reads the kind's own Fill,
|
|
4
|
+
* Line and Ink (`ArtifactKinds.css`), the words the text steps.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
.crewlet-artifact-name {
|
|
8
|
+
display: flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
gap: var(--spacing-3);
|
|
11
|
+
min-width: 0;
|
|
12
|
+
max-width: 100%;
|
|
13
|
+
padding-block: var(--spacing-1);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* THE MARK, the Make row's tile at a list's size: the kind's glyph on its
|
|
17
|
+
tint inside the kind's hairline. */
|
|
18
|
+
.crewlet-artifact-name__mark {
|
|
19
|
+
display: inline-flex;
|
|
20
|
+
flex: none;
|
|
21
|
+
align-items: center;
|
|
22
|
+
justify-content: center;
|
|
23
|
+
width: 32px;
|
|
24
|
+
height: 32px;
|
|
25
|
+
box-sizing: border-box;
|
|
26
|
+
border-radius: var(--radius-md);
|
|
27
|
+
background: var(--crewlet-kind-fill);
|
|
28
|
+
box-shadow: inset 0 0 0 1px var(--crewlet-kind-line);
|
|
29
|
+
color: var(--crewlet-kind-ink);
|
|
30
|
+
transition: box-shadow var(--motion-duration-fast) var(--motion-easing-out);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* UNDER THE POINTER the row's ground moves (the row's own hover), and the
|
|
34
|
+
mark's hairline takes the kind's hue, so the one coloured thing on the row
|
|
35
|
+
answers too. No lift and no movement: a list is read down, not played. */
|
|
36
|
+
:is(tr, [role='row']):hover .crewlet-artifact-name__mark {
|
|
37
|
+
box-shadow: inset 0 0 0 1px var(--crewlet-kind-hue);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.crewlet-artifact-name--trashed .crewlet-artifact-name__mark {
|
|
41
|
+
background: var(--color-surface-inset);
|
|
42
|
+
box-shadow: inset 0 0 0 1px var(--color-border-default);
|
|
43
|
+
color: var(--color-text-tertiary);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.crewlet-artifact-name__words {
|
|
47
|
+
display: flex;
|
|
48
|
+
flex-direction: column;
|
|
49
|
+
gap: 2px;
|
|
50
|
+
min-width: 0;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.crewlet-artifact-name__title-row {
|
|
54
|
+
display: flex;
|
|
55
|
+
align-items: center;
|
|
56
|
+
gap: var(--spacing-1);
|
|
57
|
+
min-width: 0;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.crewlet-artifact-name__title {
|
|
61
|
+
min-width: 0;
|
|
62
|
+
overflow: hidden;
|
|
63
|
+
text-overflow: ellipsis;
|
|
64
|
+
white-space: nowrap;
|
|
65
|
+
color: var(--color-text-primary);
|
|
66
|
+
font-size: var(--font-size-sm);
|
|
67
|
+
font-weight: var(--font-weight-medium);
|
|
68
|
+
line-height: 1.35;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.crewlet-artifact-name__pin {
|
|
72
|
+
display: inline-flex;
|
|
73
|
+
flex: none;
|
|
74
|
+
color: var(--color-text-tertiary);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.crewlet-artifact-name__detail {
|
|
78
|
+
display: flex;
|
|
79
|
+
align-items: baseline;
|
|
80
|
+
gap: var(--spacing-1);
|
|
81
|
+
min-width: 0;
|
|
82
|
+
overflow: hidden;
|
|
83
|
+
white-space: nowrap;
|
|
84
|
+
color: var(--color-text-tertiary);
|
|
85
|
+
font-size: var(--font-size-xs);
|
|
86
|
+
line-height: 1.35;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.crewlet-artifact-name__kind,
|
|
90
|
+
.crewlet-artifact-name__dot {
|
|
91
|
+
flex: none;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.crewlet-artifact-name__about {
|
|
95
|
+
min-width: 0;
|
|
96
|
+
overflow: hidden;
|
|
97
|
+
text-overflow: ellipsis;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
@media (prefers-reduced-motion: reduce) {
|
|
101
|
+
.crewlet-artifact-name__mark {
|
|
102
|
+
transition: none;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -26,6 +26,13 @@ export interface ArtifactPanelProps {
|
|
|
26
26
|
onExpandedChange?: ((expanded: boolean) => void) | undefined;
|
|
27
27
|
/** Controls in the head, before expand and close. */
|
|
28
28
|
actions?: ReactNode;
|
|
29
|
+
/**
|
|
30
|
+
* What stays under the body however far it scrolls: the panel's own
|
|
31
|
+
* commit, such as a hand-off's Send. Drawn on a hairline at the panel's
|
|
32
|
+
* foot, never inside the scrolling body, so it is in reach while the
|
|
33
|
+
* reader is at the top of a long form.
|
|
34
|
+
*/
|
|
35
|
+
footer?: ReactNode;
|
|
29
36
|
/**
|
|
30
37
|
* Whether focus moves to the panel's heading when it opens. True when the
|
|
31
38
|
* reader opened it; false for a panel a link opened on arrival, which must
|
|
@@ -56,7 +63,7 @@ export interface ArtifactPanelProps {
|
|
|
56
63
|
* portalled out of it, and the press that closes one of them never reaches
|
|
57
64
|
* this.
|
|
58
65
|
*/
|
|
59
|
-
export declare function ArtifactPanel({ title, icon, onClose, size, expanded, onExpandedChange, actions, focusOnOpen, labels, className, children, }: ArtifactPanelProps): import("react").JSX.Element;
|
|
66
|
+
export declare function ArtifactPanel({ title, icon, onClose, size, expanded, onExpandedChange, actions, footer, focusOnOpen, labels, className, children, }: ArtifactPanelProps): import("react").JSX.Element;
|
|
60
67
|
export interface ArtifactWorkspaceProps {
|
|
61
68
|
/** The open panel, if any: an [ArtifactPanel]. */
|
|
62
69
|
panel?: ReactNode;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ARTIFACT_PANEL_LABELS, ArtifactPanel, ArtifactWorkspace } from '../chunk-
|
|
1
|
+
export { ARTIFACT_PANEL_LABELS, ArtifactPanel, ArtifactWorkspace } from '../chunk-Y5BD4MTE.js';
|
|
2
2
|
import '../chunk-PQADV6P6.js';
|
|
3
3
|
import '../chunk-4FQT6ZAY.js';
|
|
4
4
|
import '../chunk-BZFWDIV6.js';
|
|
@@ -117,6 +117,15 @@
|
|
|
117
117
|
overscroll-behavior: contain;
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
+
/* THE FOOT holds the panel's own commit, outside the scrolling body, so it
|
|
121
|
+
stays in reach at every scroll. Its inset is the body's. */
|
|
122
|
+
.crewlet-artifact-panel__foot {
|
|
123
|
+
flex: none;
|
|
124
|
+
padding: var(--spacing-3) var(--spacing-4);
|
|
125
|
+
border-top: 1px solid var(--color-border-default);
|
|
126
|
+
background: var(--color-surface-background);
|
|
127
|
+
}
|
|
128
|
+
|
|
120
129
|
/* NOT ROOM FOR TWO COLUMNS: the panel slides over the artifact's end edge,
|
|
121
130
|
raised off it, rather than squeezing the artifact under a useful width. */
|
|
122
131
|
@container crewlet-artifact-workspace (width < 960px) {
|
package/dist/AuthLayout/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { AuthLayout } from '../chunk-
|
|
1
|
+
export { AuthLayout } from '../chunk-WX2NIG4G.js';
|
|
2
2
|
import '../chunk-7KBNFFM3.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-5QXRI35B.js';
|
|
4
4
|
import '../chunk-AV2DXAEL.js';
|
|
5
5
|
import '../chunk-BHHIIK3M.js';
|
|
6
6
|
import '../chunk-PQADV6P6.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { AvatarPicker } from '../chunk-
|
|
1
|
+
export { AvatarPicker } from '../chunk-GYBDPCRC.js';
|
|
2
2
|
import '../chunk-SUXP4OBT.js';
|
|
3
3
|
import '../chunk-K3IJQNB7.js';
|
|
4
|
-
import '../chunk-YEVG2X5R.js';
|
|
5
4
|
import '../chunk-AYKXMIOR.js';
|
|
5
|
+
import '../chunk-YEVG2X5R.js';
|
|
6
6
|
import '../chunk-CCAXYHQS.js';
|
|
7
7
|
import '../chunk-VL6CUNSX.js';
|
|
8
8
|
import '../chunk-RKKO7QHH.js';
|
package/dist/Canvas/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, CANVAS_FIT_PADDING, CANVAS_FOCUS_CONTEXT, CANVAS_MAX_ZOOM, CANVAS_MIN_ZOOM, CANVAS_PAN_MARGIN, CANVAS_PAN_STEP, CANVAS_REVEAL_PADDING, CANVAS_TAP_SLOP, CANVAS_WHEEL_LINE_PX, CANVAS_WHEEL_ZOOM_PER_PIXEL, CANVAS_ZOOM_CEILING, CANVAS_ZOOM_LIMITS, CANVAS_ZOOM_STEP, Canvas, IDENTITY_VIEW, ShortcutTip, anchorView, beyondSlop, clampPan, clampZoom, fitView, gridOf, panBy, pinchView, regionView, revealView, screenRect, toScreen, toWorld, wheelPixels, wheelZoomFactor, zoomAt, zoomLimits } from '../chunk-
|
|
1
|
+
export { CANVAS_COMPOSE_CONTEXT, CANVAS_FIT_MAX_ZOOM, CANVAS_FIT_PADDING, CANVAS_FOCUS_CONTEXT, CANVAS_MAX_ZOOM, CANVAS_MIN_ZOOM, CANVAS_PAN_MARGIN, CANVAS_PAN_STEP, CANVAS_REVEAL_PADDING, CANVAS_TAP_SLOP, CANVAS_WHEEL_LINE_PX, CANVAS_WHEEL_ZOOM_PER_PIXEL, CANVAS_ZOOM_CEILING, CANVAS_ZOOM_LIMITS, CANVAS_ZOOM_STEP, Canvas, IDENTITY_VIEW, ShortcutTip, anchorView, beyondSlop, clampPan, clampZoom, fitView, gridOf, panBy, pinchView, regionView, revealView, screenRect, toScreen, toWorld, wheelPixels, wheelZoomFactor, zoomAt, zoomLimits } from '../chunk-4BYHAOHH.js';
|
|
2
2
|
import '../chunk-LM3ISVJA.js';
|
|
3
|
-
import '../chunk-SMBKXWML.js';
|
|
4
3
|
import '../chunk-6ZJ3N7QI.js';
|
|
4
|
+
import '../chunk-SMBKXWML.js';
|
|
5
5
|
import '../chunk-OMV5W53A.js';
|
|
6
6
|
import '../chunk-R25RGPUB.js';
|
|
7
7
|
import '../chunk-OG6CL3EB.js';
|
|
@@ -48,9 +48,10 @@
|
|
|
48
48
|
* are counter-scaled by the zoom, so a board's label is readable, its edge is
|
|
49
49
|
* a hairline and its handle is a full pointer target whatever the zoom, while
|
|
50
50
|
* the board itself scales with the canvas. What a board says is held to the
|
|
51
|
-
* room it is drawn in
|
|
51
|
+
* room it is drawn in: a name with too little room is shortened to a few
|
|
52
|
+
* letters, then to the board's number, and only then left out (`boardName`),
|
|
52
53
|
* and a placeholder drops the lines it has no room for rather than spill them
|
|
53
|
-
* over the boards beside it.
|
|
54
|
+
* over the boards beside it (`boardRoom`).
|
|
54
55
|
*/
|
|
55
56
|
import { type ReactNode, type Ref } from 'react';
|
|
56
57
|
import { type CanvasHandle, type CanvasLabels, type CanvasPoint } from '../Canvas/index.js';
|
|
@@ -215,19 +216,32 @@ export interface CanvasBoardProps {
|
|
|
215
216
|
className?: string | undefined;
|
|
216
217
|
}
|
|
217
218
|
/**
|
|
218
|
-
* WHAT A BOARD HAS ROOM TO SAY, from its size on screen
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
*
|
|
222
|
-
* [BOARD_TITLE_MIN_WIDTH] goes unnamed until it is zoomed into. `lines` is how
|
|
223
|
-
* many of a placeholder's two lines (its size, then why it is not running) fit
|
|
224
|
-
* inside it at the chrome's own type, so the lines it has no room for are left
|
|
225
|
-
* out rather than clipped at both ends.
|
|
219
|
+
* WHAT A BOARD'S PLACEHOLDER HAS ROOM TO SAY, from its size on screen: how
|
|
220
|
+
* many of its two lines (its size, then why it is not running) fit inside it
|
|
221
|
+
* at the chrome's own type, so the lines it has no room for are left out
|
|
222
|
+
* rather than clipped at both ends.
|
|
226
223
|
*/
|
|
227
224
|
export declare function boardRoom(width: number, height: number): {
|
|
228
|
-
title: boolean;
|
|
229
225
|
lines: 0 | 1 | 2;
|
|
230
226
|
};
|
|
231
|
-
/**
|
|
232
|
-
|
|
227
|
+
/**
|
|
228
|
+
* WHAT A BOARD IS CALLED ABOVE IT, from the room its name row has on screen
|
|
229
|
+
* (`room`, in screen pixels: the board's width, less what the row's other
|
|
230
|
+
* controls take).
|
|
231
|
+
*
|
|
232
|
+
* Its name, while at least [BOARD_NAME_MIN_CHARS] letters and an ellipsis
|
|
233
|
+
* fit, so a shortened name still says which board it is ("Hom..." rather than
|
|
234
|
+
* "H..." or a lone ellipsis); `whole` is false once the name may be shortened,
|
|
235
|
+
* so the full name can be offered as a tooltip. Narrower than that, its place
|
|
236
|
+
* in the design ("3"), which a reader can count to and which stays legible
|
|
237
|
+
* down to a single digit's width. Narrower still, nothing: a mark that narrow
|
|
238
|
+
* reads as a stray scratch. The name row is counter-scaled, so the type is the
|
|
239
|
+
* same size at every zoom and only the room changes.
|
|
240
|
+
*/
|
|
241
|
+
export declare function boardName(title: string, position: number, room: number): {
|
|
242
|
+
text: string;
|
|
243
|
+
whole: boolean;
|
|
244
|
+
} | null;
|
|
245
|
+
/** The fewest letters a shortened board name keeps before its ellipsis. */
|
|
246
|
+
export declare const BOARD_NAME_MIN_CHARS = 3;
|
|
233
247
|
export declare function CanvasBoard({ label, boards, notes, renderBoard, maxLive, minLiveWidth, editable, minSide, maxSide, onBoardChange, onNoteChange, onNoteRemove, onNoteCreate, onBoardCreate, onBoardRemove, onOpen, onActivate, selected: heldSelection, onSelectedChange, controlsExtra, toolbar, labels, canvasLabels, canvasRef, className, }: CanvasBoardProps): import("react").JSX.Element;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import './CanvasBoard.css';
|
|
2
|
-
export {
|
|
2
|
+
export { BOARD_NAME_MIN_CHARS, CanvasBoard, CANVAS_BOARD_MIN_ZOOM, CANVAS_NOTE_COLORS, TITLE_GLYPH_EM, boardName, boardRoom, titleSize, } from './CanvasBoard.js';
|
|
3
3
|
export type { CanvasBoardItem, CanvasBoardLabels, CanvasBoardNote, CanvasBoardProps, CanvasBoardRect, CanvasBoardSelection, CanvasBoardTool, CanvasNoteColor, } from './CanvasBoard.js';
|
|
4
4
|
export { CANVAS_BOARD_MAX_LIVE, CANVAS_BOARD_MIN_LIVE_WIDTH, liveBoards } from './budget.js';
|
|
5
5
|
export type { BoardFrame } from './budget.js';
|