@crewlethq/ui 0.54.1 → 0.56.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 -7
- package/dist/Accordion/index.js +2 -2
- package/dist/AgentHandoffPanel/index.js +13 -8
- package/dist/AppShell/AppShell.d.ts +74 -1
- package/dist/AppShell/ResizeHandle.d.ts +74 -0
- package/dist/AppShell/index.d.ts +7 -2
- package/dist/AppShell/index.js +6 -4
- package/dist/AppShell/regions.d.ts +34 -0
- package/dist/AppShell/storedWidth.d.ts +47 -0
- package/dist/{AppShell-5LPXYUV3.css → AppShell-ZVCJRGXH.css} +172 -1
- package/dist/ArrangeFrame/index.js +2 -2
- package/dist/ArrangeList/index.js +4 -4
- package/dist/ArtifactBar/ArtifactBar.d.ts +13 -2
- package/dist/ArtifactBar/index.js +7 -6
- package/dist/{ArtifactBar-UMZCTARR.css → ArtifactBar-LEBMR35Y.css} +19 -1
- package/dist/ArtifactCard/index.js +5 -5
- package/dist/ArtifactNameCell/ArtifactNameCell.d.ts +7 -1
- package/dist/ArtifactNameCell/index.js +1 -1
- package/dist/ArtifactPanel/ArtifactPanel.d.ts +11 -17
- package/dist/ArtifactPanel/index.d.ts +3 -0
- package/dist/ArtifactPanel/index.js +8 -2
- package/dist/ArtifactPanel-TN4FFK2F.css +43 -0
- package/dist/AvatarPicker/index.js +8 -7
- package/dist/Breadcrumb/index.js +1 -1
- package/dist/Button/index.js +2 -1
- package/dist/{Button-UWKBTKYD.css → Button-VXJ7M5XF.css} +9 -32
- package/dist/Canvas/index.js +4 -3
- package/dist/CanvasBoard/index.js +6 -5
- package/dist/CanvasToolbar/index.js +5 -4
- package/dist/ChangeList/ChangeList.d.ts +114 -0
- package/dist/ChangeList/index.d.ts +3 -0
- package/dist/ChangeList/index.js +10 -0
- package/dist/ChangeList-CB2DLR5S.css +151 -0
- package/dist/ChatThread/ChatThread.d.ts +53 -0
- package/dist/ChatThread/index.d.ts +3 -0
- package/dist/ChatThread/index.js +6 -0
- package/dist/ChatThread-52KMDXHB.css +58 -0
- package/dist/Checkbox/index.js +3 -3
- package/dist/CodeBlock/index.js +5 -4
- package/dist/ColorField/index.js +3 -3
- package/dist/ColorSwatch/index.js +5 -4
- package/dist/Combobox/index.js +3 -3
- package/dist/CommandPalette/index.js +6 -5
- package/dist/CommentThread/index.js +8 -6
- package/dist/Composer/Composer.d.ts +39 -2
- package/dist/Composer/index.js +4 -3
- package/dist/Composer-JSGTOW3F.css +192 -0
- package/dist/ConfirmField/index.js +3 -3
- package/dist/ConflictNote/index.js +3 -2
- package/dist/ContrastHelp/index.js +2 -2
- package/dist/Copyable/index.js +4 -3
- package/dist/DataGrid/driving.d.ts +48 -0
- package/dist/DataGrid/index.d.ts +2 -0
- package/dist/DataGrid/index.js +6 -5
- package/dist/DataTable/index.js +8 -7
- package/dist/DataView/index.js +12 -11
- package/dist/DatasetSource/index.js +2 -2
- package/dist/DateTimePicker/index.js +4 -3
- package/dist/DiffList/DiffList.d.ts +12 -3
- package/dist/DiffList/index.d.ts +1 -1
- package/dist/DiffList/index.js +1 -1
- package/dist/{DiffList-3EX64AAE.css → DiffList-GE6YBRLJ.css} +53 -0
- package/dist/Disclosure/anatomy.d.ts +14 -1
- package/dist/Disclosure/index.js +2 -2
- package/dist/{Disclosure-P4FH3C35.css → Disclosure-FVMA4RW2.css} +36 -0
- package/dist/DocTabsEditor/index.js +6 -5
- package/dist/DownloadButton/DownloadButton.d.ts +21 -4
- package/dist/DownloadButton/index.d.ts +1 -1
- package/dist/DownloadButton/index.js +4 -3
- package/dist/EditingStatus/index.js +2 -2
- package/dist/{Editor-FEKMRFBK.js → Editor-X2J47LPD.js} +5 -4
- package/dist/EntityList/EntityList.d.ts +37 -0
- package/dist/EntityList/index.d.ts +3 -0
- package/dist/EntityList/index.js +10 -0
- package/dist/EntityList-XIICECVC.css +55 -0
- package/dist/ErrorBoundary/index.js +3 -2
- package/dist/FileDrop/index.js +3 -2
- package/dist/FollowBanner/index.js +3 -2
- package/dist/HuePicker/index.js +7 -6
- package/dist/IconButton/IconButton.d.ts +6 -1
- package/dist/IconButton/index.js +1 -1
- package/dist/{IconButton-K24JQHLF.css → IconButton-6WA7UEBJ.css} +44 -21
- package/dist/IconTile/IconTile.d.ts +8 -2
- package/dist/IconTile/index.js +1 -1
- package/dist/{IconTile-4GNWTLAW.css → IconTile-G52XZVR4.css} +3 -0
- package/dist/InlineEditor/index.js +5 -4
- package/dist/Input/index.js +2 -2
- package/dist/LinkInterstitial/index.js +5 -4
- package/dist/ListInput/index.js +5 -4
- package/dist/LogoSlot/index.js +4 -3
- package/dist/Markdown/grammar.d.ts +1 -1
- package/dist/MarkdownEditor/index.js +7 -6
- package/dist/Menu/index.js +4 -3
- package/dist/MergeConflicts/index.js +7 -6
- package/dist/MessageBubble/MessageBubble.d.ts +34 -0
- package/dist/MessageBubble/index.d.ts +3 -0
- package/dist/MessageBubble/index.js +2 -0
- package/dist/MessageBubble-GKO6X3QG.css +71 -0
- package/dist/Modal/index.js +4 -3
- package/dist/OpenInAppCard/OpenInAppCard.d.ts +44 -0
- package/dist/OpenInAppCard/index.d.ts +3 -0
- package/dist/OpenInAppCard/index.js +15 -0
- package/dist/OpenInAppCard-CKHCK7DO.css +24 -0
- package/dist/OrgTable/index.js +3 -3
- package/dist/PeekRail/PeekHost.d.ts +90 -0
- package/dist/PeekRail/PeekRail.d.ts +83 -0
- package/dist/PeekRail/activation.d.ts +30 -0
- package/dist/PeekRail/index.d.ts +8 -0
- package/dist/PeekRail/index.js +8 -0
- package/dist/PeekRail-4L5YUQMW.css +95 -0
- package/dist/PeopleRail/index.js +4 -3
- package/dist/PinTile/index.js +2 -2
- package/dist/PresenterView/index.js +5 -4
- package/dist/PrincipalPicker/index.js +4 -4
- package/dist/ProposalCard/ProposalCard.d.ts +134 -0
- package/dist/ProposalCard/index.d.ts +3 -0
- package/dist/ProposalCard/index.js +17 -0
- package/dist/ProposalCard-HLB3FNLA.css +19 -0
- package/dist/ReceiptStrip/ReceiptStrip.d.ts +66 -0
- package/dist/ReceiptStrip/index.d.ts +3 -0
- package/dist/ReceiptStrip/index.js +5 -0
- package/dist/ReceiptStrip-IIRKRTBG.css +93 -0
- package/dist/RefusalCard/RefusalCard.d.ts +34 -0
- package/dist/RefusalCard/index.d.ts +3 -0
- package/dist/RefusalCard/index.js +10 -0
- package/dist/RefusalCard-UM67F5HB.css +8 -0
- package/dist/RelativeTime/clock.d.ts +0 -6
- package/dist/RelativeTime/index.js +1 -1
- package/dist/ResizeHandle-2UNSZ4ZQ.css +59 -0
- package/dist/ResultTableCard/ResultTableCard.d.ts +64 -0
- package/dist/ResultTableCard/index.d.ts +3 -0
- package/dist/ResultTableCard/index.js +16 -0
- package/dist/ResultTableCard-HZRUDNTX.css +40 -0
- package/dist/ReviewList/index.js +2 -2
- package/dist/RichEditor/codec.d.ts +1 -1
- package/dist/RichEditor/index.js +3 -2
- package/dist/RichEditor/roundtrip.d.ts +1 -1
- package/dist/RunChip/RunChip.d.ts +53 -0
- package/dist/RunChip/index.d.ts +3 -0
- package/dist/RunChip/index.js +10 -0
- package/dist/RunChip-I2S4VZ3R.css +43 -0
- package/dist/SandboxedFrame/index.js +3 -2
- package/dist/SegmentedControl/index.js +6 -5
- package/dist/SelectionBar/index.js +3 -2
- package/dist/SendButton/SendButton.d.ts +38 -0
- package/dist/SendButton/index.d.ts +2 -0
- package/dist/SendButton/index.js +4 -0
- package/dist/SetupWizard/index.js +5 -4
- package/dist/ShareDialog/index.js +7 -6
- package/dist/SheetColumnEditor/index.js +10 -9
- package/dist/SheetGrid/index.js +6 -5
- package/dist/SidePanel/SidePanel.d.ts +137 -0
- package/dist/SidePanel/SidePanelBase.d.ts +59 -0
- package/dist/SidePanel/index.d.ts +5 -0
- package/dist/SidePanel/index.js +11 -0
- package/dist/SidePanel-ERBUIELD.css +235 -0
- package/dist/SlideCompare/index.js +3 -2
- package/dist/SlideFilmstrip/index.js +5 -4
- package/dist/SlideNav/index.js +2 -2
- package/dist/Spinner/Spinner.d.ts +35 -0
- package/dist/Spinner/index.d.ts +3 -0
- package/dist/Spinner/index.js +2 -0
- package/dist/Spinner-XZ2TVYE5.css +46 -0
- package/dist/StatusCard/StatusCard.d.ts +59 -0
- package/dist/StatusCard/index.d.ts +3 -0
- package/dist/StatusCard/index.js +9 -0
- package/dist/StatusCard-6RPEE6UU.css +62 -0
- package/dist/StepList-A4YVU4JI.css +119 -0
- package/dist/Stepper/StepList.d.ts +72 -0
- package/dist/Stepper/index.d.ts +3 -0
- package/dist/Stepper/index.js +2 -1
- package/dist/SuggestionRow/SuggestionRow.d.ts +45 -0
- package/dist/SuggestionRow/index.d.ts +3 -0
- package/dist/SuggestionRow/index.js +3 -0
- package/dist/SuggestionRow-OKBGNHSS.css +102 -0
- package/dist/Switcher/index.js +6 -5
- package/dist/Table/Table.d.ts +23 -2
- package/dist/Table/index.d.ts +1 -1
- package/dist/Table/index.js +1 -1
- package/dist/{Table-TGCS4C3F.css → Table-RUYMMWXT.css} +49 -0
- package/dist/TableCells/index.js +2 -2
- package/dist/Tabs/index.js +5 -4
- package/dist/TagsInput/index.js +3 -3
- package/dist/ThemeGallery/index.js +2 -2
- package/dist/ThemeSwitcher/index.js +7 -6
- package/dist/ThemeToggle/index.js +2 -2
- package/dist/TimeRangePicker/TimeRangePicker.d.ts +121 -0
- package/dist/TimeRangePicker/index.d.ts +2 -0
- package/dist/TimeRangePicker/index.js +23 -0
- package/dist/TimeWindowPicker/index.js +5 -4
- package/dist/Toaster/Toaster.d.ts +27 -3
- package/dist/Toaster/index.d.ts +2 -2
- package/dist/Toaster/index.js +1 -1
- package/dist/{Toaster-C6BQ7L6I.css → Toaster-MX7TBMC3.css} +32 -11
- package/dist/TreeCanvas/index.js +5 -4
- package/dist/TreeGrid/index.js +2 -2
- package/dist/VersionCompare/index.js +7 -6
- package/dist/VersionTimeline/index.js +4 -3
- package/dist/WidgetFrame/index.js +2 -2
- package/dist/{chunk-SS4XCUUJ.js → chunk-272Y3YMV.js} +3 -3
- package/dist/{chunk-LACA4JGC.js → chunk-2BQYODY3.js} +1 -1
- package/dist/{chunk-XS2FJVMT.js → chunk-2TTFDRR3.js} +2 -2
- package/dist/{chunk-4BJK7FE5.js → chunk-3EYSYEXP.js} +1 -1
- package/dist/chunk-3LI4TRUR.js +22 -0
- package/dist/{chunk-5WYPSVRX.js → chunk-3NQS6KYG.js} +1 -1
- package/dist/{chunk-V2N3BMOT.js → chunk-45KMH3E3.js} +11 -4
- package/dist/{chunk-2GIWL7IS.js → chunk-4CBGIRVU.js} +1 -1
- package/dist/{chunk-3QSKDZR5.js → chunk-4OINEWR4.js} +1 -1
- package/dist/{chunk-EZ43L6T7.js → chunk-56P72ZBE.js} +4 -4
- package/dist/{chunk-J24Q4HTD.js → chunk-5NT6OIPP.js} +13 -3
- package/dist/{chunk-FNPZ3LLQ.js → chunk-5OMV75GE.js} +3 -3
- package/dist/{chunk-6RMZH7P7.js → chunk-672GLRBU.js} +2 -2
- package/dist/{chunk-GPZXBJFU.js → chunk-67F2AM4R.js} +2 -2
- package/dist/{chunk-NQCY44B3.js → chunk-67MW366X.js} +2 -2
- package/dist/{chunk-SSHDQBHR.js → chunk-6KLK7E76.js} +2 -2
- package/dist/{chunk-ZFM5L7M4.js → chunk-6NJW5KSX.js} +2 -2
- package/dist/{chunk-A4GFEMVI.js → chunk-6T6V5565.js} +1 -1
- package/dist/{chunk-THDGBD6Y.js → chunk-AKFHMLEX.js} +1 -1
- package/dist/{chunk-6FVGSWLS.js → chunk-AWSFK2IK.js} +1 -1
- package/dist/{chunk-HQJ24WPM.js → chunk-AZ5BKSGV.js} +1 -1
- package/dist/chunk-BLPT6GHV.js +31 -0
- package/dist/chunk-C3FX7ZSU.js +30 -0
- package/dist/{chunk-LDGQIDIZ.js → chunk-CGT4R7LW.js} +64 -2
- package/dist/{chunk-WXWMHYKW.js → chunk-D5OSP3KI.js} +2 -2
- package/dist/{chunk-CQEYF3UW.js → chunk-DOPPU6TZ.js} +3 -3
- package/dist/{chunk-AC22RZKC.js → chunk-DRT4L4WC.js} +17 -5
- package/dist/chunk-E4DZOE55.js +162 -0
- package/dist/chunk-EA23JG6R.js +9 -0
- package/dist/{chunk-J53T2QAH.js → chunk-EBG3V4MK.js} +6 -6
- package/dist/{chunk-7PE56HHD.js → chunk-EDNZHW4K.js} +57 -7
- package/dist/{chunk-E6HXFFWO.js → chunk-EGL24VY5.js} +2 -2
- package/dist/{chunk-7SHAFLEX.js → chunk-ES4HR34Y.js} +2 -2
- package/dist/chunk-EVWTLFKI.js +102 -0
- package/dist/chunk-FA44M2YT.js +25 -0
- package/dist/{chunk-VWYT3GVV.js → chunk-FLTMDSC3.js} +1 -1
- package/dist/{chunk-LJHH4WWB.js → chunk-FXQLNETQ.js} +1 -1
- package/dist/{chunk-3NXWH5NC.js → chunk-GCASX3FD.js} +4 -4
- package/dist/{chunk-OGXHZHRX.js → chunk-GG4QZWMQ.js} +2 -2
- package/dist/{chunk-XP7EXNKF.js → chunk-GPW4M4OI.js} +2 -2
- package/dist/chunk-GZMEWWXW.js +78 -0
- package/dist/{chunk-OG6CL3EB.js → chunk-HD4QJ2SI.js} +3 -2
- package/dist/{chunk-SYY26XBX.js → chunk-HGCDJOEF.js} +2 -2
- package/dist/chunk-HGYHWWA5.js +54 -0
- package/dist/{chunk-GRKGLZFM.js → chunk-HL4CPLEK.js} +7 -7
- package/dist/{chunk-BEHFTRMZ.js → chunk-HNK43Z3P.js} +23 -5
- package/dist/{chunk-UO7JZVCO.js → chunk-HVEDVKXL.js} +1 -1
- package/dist/{chunk-ILFEWRLG.js → chunk-I7VG6RQE.js} +1 -1
- package/dist/{chunk-3RCHEFIL.js → chunk-ICJRP6QW.js} +2 -2
- package/dist/{chunk-CUL5XV6O.js → chunk-IDQBSMMZ.js} +2 -2
- package/dist/chunk-JILNCBBS.js +27 -0
- package/dist/{chunk-5O72FSOK.js → chunk-JJ3NOBJ6.js} +5 -5
- package/dist/chunk-JLRXCKTS.js +97 -0
- package/dist/{chunk-OJCVVCAZ.js → chunk-JMMS2PQU.js} +1 -1
- package/dist/{chunk-SXBJMBSV.js → chunk-JS2TRHBF.js} +2 -2
- package/dist/{chunk-3CZ7XAVY.js → chunk-KS7YIJ4S.js} +10 -6
- package/dist/{chunk-VWNC2L6W.js → chunk-KW6KCVM7.js} +1 -1
- package/dist/{chunk-X4NIE7CI.js → chunk-LQ6AGUDL.js} +2 -2
- package/dist/chunk-LXYSWQNE.js +214 -0
- package/dist/{chunk-6VQA2LZC.js → chunk-MYX4XABB.js} +3 -3
- package/dist/{chunk-PM3JVNRY.js → chunk-N3ISZVLK.js} +1 -1
- package/dist/chunk-NEHSV55H.js +119 -0
- package/dist/{chunk-RQI43UJ7.js → chunk-NHJQXDHA.js} +1 -1
- package/dist/{chunk-VVOPDWLX.js → chunk-NI7WUPH3.js} +2 -2
- package/dist/{chunk-OCRVY42T.js → chunk-NK3D66PB.js} +1 -1
- package/dist/{chunk-RHPBTE3F.js → chunk-NQGZRMUG.js} +1 -1
- package/dist/chunk-NVZCANJ5.js +3 -0
- package/dist/{chunk-RRO7UEYU.js → chunk-OHBXOEP3.js} +1 -1
- package/dist/{chunk-RFPCHMSX.js → chunk-OHG7762N.js} +1 -1
- package/dist/{chunk-OBUQVGEG.js → chunk-OJ2QULVH.js} +1 -1
- package/dist/{chunk-PGYIDNGG.js → chunk-OOZ5AGPS.js} +4 -4
- package/dist/{chunk-34RMTXDZ.js → chunk-OYAXKHVW.js} +1 -1
- package/dist/{chunk-WQQ5T5SA.js → chunk-OZIBNFLO.js} +1 -1
- package/dist/{chunk-DFK5EQTU.js → chunk-PDTEPN4D.js} +1 -1
- package/dist/chunk-PIYJNCN7.js +124 -0
- package/dist/{chunk-VP2ODUCC.js → chunk-Q6R6EUQ4.js} +3 -3
- package/dist/chunk-QYEOGGVS.js +161 -0
- package/dist/{chunk-YCC2S7DF.js → chunk-QZ4B72FP.js} +2 -2
- package/dist/chunk-RV2FGESF.js +98 -0
- package/dist/{chunk-SEPSXOGJ.js → chunk-S5C64PTT.js} +1 -1
- package/dist/chunk-SDSBVVLL.js +45 -0
- package/dist/{chunk-ZNOXQACX.js → chunk-T4D7RZNI.js} +2 -2
- package/dist/{chunk-G5SUSCWL.js → chunk-TA72CURM.js} +1 -1
- package/dist/{chunk-WXOYHVWG.js → chunk-TD3UHDFY.js} +4 -4
- package/dist/{chunk-VN47PYUF.js → chunk-TDQZ4LB5.js} +8 -6
- package/dist/chunk-TFGCNBWP.js +64 -0
- package/dist/{chunk-TMM32U7D.js → chunk-TKS7FTTO.js} +2 -2
- package/dist/{chunk-C6Z3MLSA.js → chunk-U5PJSGHG.js} +1 -1
- package/dist/{chunk-7CGPPAYR.js → chunk-UV4LOQ3E.js} +1 -1
- package/dist/{chunk-34ANLQW2.js → chunk-UVYGMCJ4.js} +173 -8
- package/dist/{chunk-ON2E46DX.js → chunk-VRNUKH2W.js} +1 -1
- package/dist/{chunk-XX2VQE55.js → chunk-WBRC3MNE.js} +1 -1
- package/dist/chunk-WDIVALLP.js +51 -0
- package/dist/{chunk-SQ4JFHO7.js → chunk-WOW5SCEK.js} +1 -1
- package/dist/chunk-XODESBSR.js +250 -0
- package/dist/chunk-XQI2OUV4.js +59 -0
- package/dist/{chunk-EJWPYEG4.js → chunk-XRZGGB6I.js} +1 -1
- package/dist/{chunk-34C7NYIQ.js → chunk-Y73BQL74.js} +1 -1
- package/dist/{chunk-KIRQZG3G.js → chunk-YCGZK2E4.js} +1 -1
- package/dist/{chunk-CAVWDJF4.js → chunk-YCZ2FBKA.js} +1 -1
- package/dist/{chunk-D7Q5MQRF.js → chunk-YEURM24I.js} +2 -2
- package/dist/{chunk-IW55G7XG.js → chunk-YNRKVY7X.js} +11 -1
- package/dist/chunk-YY445YFQ.js +55 -0
- package/dist/{chunk-LFHCXZO5.js → chunk-Z3GDMNMU.js} +3 -3
- package/dist/{chunk-NMR7AJSB.js → chunk-Z7PJF6F3.js} +2 -2
- package/dist/{chunk-U3LNU4B2.js → chunk-ZH4MJM73.js} +1 -1
- package/dist/generated/index.d.ts +17 -0
- package/dist/generated/index.js +138 -119
- package/dist/index.js +138 -119
- package/dist/styles.css +1877 -218
- package/dist/utils/index.js +1 -1
- package/dist/utils/useDownload.d.ts +6 -0
- package/package.json +3 -3
- package/dist/ArtifactPanel-KKUUIPEU.css +0 -159
- package/dist/Composer-TXULCPPV.css +0 -99
- package/dist/chunk-FZVJDJFN.js +0 -54
- package/dist/chunk-IXJHTFXG.js +0 -17
- package/dist/chunk-NBDN5JZV.js +0 -123
- package/dist/chunk-UJ4VVK7R.js +0 -48
- package/dist/{chunk-UTESMBPL.js → chunk-ESUZ27TS.js} +1 -1
- /package/dist/{chunk-55MPFB2U.js → chunk-EWTPXRRM.js} +0 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* One message: the bubble on its writer's side, and what it carried and its
|
|
3
|
+
* quiet foot under it, on the same side, a spacing step below.
|
|
4
|
+
*/
|
|
5
|
+
.crewlet-message {
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
gap: var(--spacing-1);
|
|
9
|
+
min-width: 0;
|
|
10
|
+
max-width: 85%;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.crewlet-message--self {
|
|
14
|
+
align-self: flex-end;
|
|
15
|
+
align-items: flex-end;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.crewlet-message--other {
|
|
19
|
+
align-self: flex-start;
|
|
20
|
+
align-items: flex-start;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.crewlet-message__bubble {
|
|
24
|
+
max-width: 100%;
|
|
25
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
26
|
+
font-size: var(--font-size-compact);
|
|
27
|
+
line-height: var(--font-line-height-normal);
|
|
28
|
+
color: var(--color-text-primary);
|
|
29
|
+
overflow-wrap: anywhere;
|
|
30
|
+
white-space: pre-wrap;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* The reader's own: the raised ground, no edge, the tail at the end corner. */
|
|
34
|
+
.crewlet-message--self .crewlet-message__bubble {
|
|
35
|
+
border-radius: var(--radius-lg) var(--radius-lg) var(--radius-xs) var(--radius-lg);
|
|
36
|
+
background: var(--color-surface-elevated);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Anybody else's: the card ground inside a hairline, the tail at the start corner. */
|
|
40
|
+
.crewlet-message--other .crewlet-message__bubble {
|
|
41
|
+
border: 1px solid var(--color-border-default);
|
|
42
|
+
border-radius: var(--radius-lg) var(--radius-lg) var(--radius-lg) var(--radius-xs);
|
|
43
|
+
background: var(--color-surface-subtle);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.crewlet-message__attachment,
|
|
47
|
+
.crewlet-message__footer {
|
|
48
|
+
display: flex;
|
|
49
|
+
flex-wrap: wrap;
|
|
50
|
+
align-items: center;
|
|
51
|
+
gap: var(--spacing-2);
|
|
52
|
+
font-size: var(--font-size-xs);
|
|
53
|
+
color: var(--color-text-tertiary);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.crewlet-message--enter {
|
|
57
|
+
animation: crewlet-message-enter var(--motion-duration-moderate) var(--motion-easing-out);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@keyframes crewlet-message-enter {
|
|
61
|
+
from {
|
|
62
|
+
opacity: 0;
|
|
63
|
+
transform: translateY(var(--spacing-1));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@media (prefers-reduced-motion: reduce) {
|
|
68
|
+
.crewlet-message--enter {
|
|
69
|
+
animation: none;
|
|
70
|
+
}
|
|
71
|
+
}
|
package/dist/Modal/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
export { ConfirmModal, Modal } from '../chunk-
|
|
1
|
+
export { ConfirmModal, Modal } from '../chunk-QZ4B72FP.js';
|
|
2
2
|
import '../chunk-PQADV6P6.js';
|
|
3
|
+
import '../chunk-HD4QJ2SI.js';
|
|
4
|
+
import '../chunk-EA23JG6R.js';
|
|
3
5
|
import '../chunk-OMV5W53A.js';
|
|
4
|
-
import '../chunk-OG6CL3EB.js';
|
|
5
6
|
import '../chunk-H5XTJ7GJ.js';
|
|
6
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-2BQYODY3.js';
|
|
7
8
|
import '../chunk-NUZHC6MM.js';
|
|
8
9
|
import '../chunk-BZFWDIV6.js';
|
|
9
10
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
/** Whether the place has been opened from the card yet. */
|
|
3
|
+
export type OpenInAppState = 'ready' | 'opened';
|
|
4
|
+
export interface OpenInAppCardLabels {
|
|
5
|
+
/** The card's title. */
|
|
6
|
+
heading: string;
|
|
7
|
+
openHere: string;
|
|
8
|
+
openInNewTab: string;
|
|
9
|
+
/** The Tag once opened. */
|
|
10
|
+
opened: string;
|
|
11
|
+
/** The strip once opened. */
|
|
12
|
+
openedNotice: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const OPEN_IN_APP_CARD_LABELS: OpenInAppCardLabels;
|
|
15
|
+
export interface OpenInAppCardProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
|
|
16
|
+
/** The place's glyph, drawn on a neutral tile. */
|
|
17
|
+
icon: ReactNode;
|
|
18
|
+
/** The record's own name: "Fix the flaky sign-in test". */
|
|
19
|
+
title: string;
|
|
20
|
+
/** Where it lives, as its last two crumbs: "Tasks › ENG-156". */
|
|
21
|
+
path: string;
|
|
22
|
+
/**
|
|
23
|
+
* The address, for Open in new tab. Only a same-application route (`#/...`)
|
|
24
|
+
* or an http, https or mailto address is drawn as a link; anything else
|
|
25
|
+
* draws no new-tab link at all.
|
|
26
|
+
*/
|
|
27
|
+
href: string;
|
|
28
|
+
/** Opens the place beside the conversation. */
|
|
29
|
+
onOpenHere: () => void;
|
|
30
|
+
state?: OpenInAppState | undefined;
|
|
31
|
+
labels?: Partial<OpenInAppCardLabels> | undefined;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A place in the product the answer points to, opened only by the person's
|
|
35
|
+
* press: the record's glyph on a neutral tile, its name and where it lives,
|
|
36
|
+
* then Open in new tab and Open here. Once opened, a success Tag in the head
|
|
37
|
+
* and a strip that says where it opened.
|
|
38
|
+
*
|
|
39
|
+
* THE ONLY WAY AN ANSWER NAVIGATES. Links written into an answer's prose are
|
|
40
|
+
* never live; a place is reached through this card, whose address the host
|
|
41
|
+
* built and checked. The address is checked again here: a scheme other than
|
|
42
|
+
* the application's own routes, http, https or mailto draws no link.
|
|
43
|
+
*/
|
|
44
|
+
export declare function OpenInAppCard({ icon, title, path, href, onOpenHere, state, labels: overrides, className, ...rest }: OpenInAppCardProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { OPEN_IN_APP_CARD_LABELS, OpenInAppCard } from '../chunk-YY445YFQ.js';
|
|
2
|
+
import '../chunk-XQI2OUV4.js';
|
|
3
|
+
import '../chunk-BAKPMH3S.js';
|
|
4
|
+
import '../chunk-3LI4TRUR.js';
|
|
5
|
+
import '../chunk-WDIVALLP.js';
|
|
6
|
+
import '../chunk-KYIAFNU7.js';
|
|
7
|
+
import '../chunk-WIATRXEJ.js';
|
|
8
|
+
import '../chunk-INHXF2CL.js';
|
|
9
|
+
import '../chunk-AV2DXAEL.js';
|
|
10
|
+
import '../chunk-BHHIIK3M.js';
|
|
11
|
+
import '../chunk-PQADV6P6.js';
|
|
12
|
+
import '../chunk-HD4QJ2SI.js';
|
|
13
|
+
import '../chunk-EA23JG6R.js';
|
|
14
|
+
import '../chunk-BZFWDIV6.js';
|
|
15
|
+
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* The place: its tile, then its name over where it lives. */
|
|
2
|
+
.crewlet-open-in-app-card__place {
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
gap: var(--spacing-3);
|
|
6
|
+
min-width: 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.crewlet-open-in-app-card__words {
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
min-width: 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.crewlet-open-in-app-card__title {
|
|
16
|
+
overflow-wrap: anywhere;
|
|
17
|
+
font-weight: var(--font-weight-medium);
|
|
18
|
+
color: var(--color-text-primary);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.crewlet-open-in-app-card__path {
|
|
22
|
+
font-size: var(--font-size-xs);
|
|
23
|
+
color: var(--color-text-tertiary);
|
|
24
|
+
}
|
package/dist/OrgTable/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { OrgTable, OrgTableActions, OrgTableAdd, OrgTableName } from '../chunk-GPW4M4OI.js';
|
|
2
|
+
import '../chunk-VRNUKH2W.js';
|
|
3
3
|
import '../chunk-MY374UUD.js';
|
|
4
4
|
import '../chunk-ONQKKHON.js';
|
|
5
5
|
import '../chunk-LM3ISVJA.js';
|
|
@@ -8,7 +8,7 @@ import '../chunk-PZKHBB7D.js';
|
|
|
8
8
|
import '../chunk-TROLVEZY.js';
|
|
9
9
|
import '../chunk-OMV5W53A.js';
|
|
10
10
|
import '../chunk-H5XTJ7GJ.js';
|
|
11
|
-
import '../chunk-
|
|
11
|
+
import '../chunk-2BQYODY3.js';
|
|
12
12
|
import '../chunk-NUZHC6MM.js';
|
|
13
13
|
import '../chunk-BZFWDIV6.js';
|
|
14
14
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one peek in an application, mounted by its frame, and the order a list
|
|
3
|
+
* publishes for it to step through.
|
|
4
|
+
*
|
|
5
|
+
* # Why the frame and not the screen
|
|
6
|
+
*
|
|
7
|
+
* A rail rendered by whichever screen wanted one meant exactly one screen had
|
|
8
|
+
* one. Mounted by the frame it is the opposite: no screen renders a peek and
|
|
9
|
+
* every screen has one. A list opens it by naming what it points at, and an
|
|
10
|
+
* address that names a peek opens the same thing on arrival.
|
|
11
|
+
*
|
|
12
|
+
* # Stepping belongs to the list, not to the rail
|
|
13
|
+
*
|
|
14
|
+
* Previous and Next walk the rows the reader is actually looking at (sorted,
|
|
15
|
+
* filtered and paged as they left them), and only the list knows that order.
|
|
16
|
+
* So a list PUBLISHES its order with `usePeekNeighbours` and the rail steps
|
|
17
|
+
* through it; a list that publishes nothing gets a rail with no stepper
|
|
18
|
+
* rather than one that steps through something else.
|
|
19
|
+
*
|
|
20
|
+
* The order is a list of TOKENS, the host's own identity for an object (kind
|
|
21
|
+
* and id, say), rather than the rows themselves: the rail needs identity and
|
|
22
|
+
* nothing else, and handing it rows would make every list's row type part of
|
|
23
|
+
* the frame's contract.
|
|
24
|
+
*/
|
|
25
|
+
import { type ReactNode } from 'react';
|
|
26
|
+
import { type PeekRailProps } from './PeekRail.js';
|
|
27
|
+
/** What a list publishes: the order it draws, and what its rows' own pages carry. */
|
|
28
|
+
export interface PeekOrder {
|
|
29
|
+
tokens: readonly string[];
|
|
30
|
+
/**
|
|
31
|
+
* The query a page opened from this list carries, such as the list's own
|
|
32
|
+
* filter, which is what lets an object's page say "3 of 18" and step to the
|
|
33
|
+
* next. Only an object IN the list carries it.
|
|
34
|
+
*/
|
|
35
|
+
query?: Readonly<Record<string, string>> | undefined;
|
|
36
|
+
}
|
|
37
|
+
/** Holds the order the list on screen published. Mounted once, around the frame. */
|
|
38
|
+
export declare function PeekNeighbours({ children }: {
|
|
39
|
+
children: ReactNode;
|
|
40
|
+
}): import("react").JSX.Element;
|
|
41
|
+
/** The order the list on screen published; empty where none did. */
|
|
42
|
+
export declare function usePeekOrder(): PeekOrder;
|
|
43
|
+
/**
|
|
44
|
+
* Publish the order Previous and Next should walk.
|
|
45
|
+
*
|
|
46
|
+
* KEYED ON THE TOKENS rather than on the array, because a list rebuilds its
|
|
47
|
+
* rows on every push: an effect depending on the array itself would republish
|
|
48
|
+
* several times a second and re-render the rail with it. The list that
|
|
49
|
+
* published last owns the stepper, and unmounting clears it, so a rail opened
|
|
50
|
+
* from the next screen does not step through the last one's rows.
|
|
51
|
+
*/
|
|
52
|
+
export declare function usePeekNeighbours(tokens: readonly string[], query?: Readonly<Record<string, string>>): void;
|
|
53
|
+
/**
|
|
54
|
+
* The step Previous and Next take from `current` through the published
|
|
55
|
+
* order, or undefined where there is nothing to step through: no list
|
|
56
|
+
* published an order, `current` is not in it, or it is the only row.
|
|
57
|
+
*
|
|
58
|
+
* A STEP MOVES THE PEEK, it does not open another: the host's `move` should
|
|
59
|
+
* REPLACE its address entry, so four objects walked through one open rail are
|
|
60
|
+
* one place the reader has been and Back leaves the list.
|
|
61
|
+
*
|
|
62
|
+
* Exported for a list whose own widget takes the keys (a tree that reads every
|
|
63
|
+
* printable key as type-ahead), so there is one stepper and one order.
|
|
64
|
+
*/
|
|
65
|
+
export declare function usePeekStep(current: string | null, move: (token: string) => void): ((delta: -1 | 1) => void) | undefined;
|
|
66
|
+
export interface PeekHostProps extends Omit<PeekRailProps, 'label' | 'onStep' | 'openHref' | 'onClose' | 'children'> {
|
|
67
|
+
/** The token of the object the peek is open on, read from the host's address; null when closed. */
|
|
68
|
+
current: string | null;
|
|
69
|
+
/**
|
|
70
|
+
* The body for an object, or undefined where this build has none for its
|
|
71
|
+
* kind (a hand-edited or out-of-date address), which closes the rail rather
|
|
72
|
+
* than opening it empty.
|
|
73
|
+
*/
|
|
74
|
+
render: (token: string) => ReactNode | undefined;
|
|
75
|
+
/** Names the rail for an object: "Task detail". */
|
|
76
|
+
label: (token: string) => string;
|
|
77
|
+
/** Closes the peek: the host removes it from its address. */
|
|
78
|
+
onClose: () => void;
|
|
79
|
+
/** Moves the peek to another object: the host REPLACES its address entry. */
|
|
80
|
+
onMove: (token: string) => void;
|
|
81
|
+
/**
|
|
82
|
+
* The object's own page for the Open link, with the query of the list it
|
|
83
|
+
* was opened from when it is in that list; undefined for no Open (an object
|
|
84
|
+
* whose page is the list under the rail).
|
|
85
|
+
*/
|
|
86
|
+
openHref?: ((token: string, query: Readonly<Record<string, string>> | undefined) => string | undefined) | undefined;
|
|
87
|
+
/** Wraps the body, keyed on the object, in the host's own error boundary. */
|
|
88
|
+
boundary?: ((token: string, body: ReactNode) => ReactNode) | undefined;
|
|
89
|
+
}
|
|
90
|
+
export declare function PeekHost({ current, render, label, onClose, onMove, openHref, boundary, ...rail }: PeekHostProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The peek: one object, beside whatever list the reader found it in.
|
|
3
|
+
*
|
|
4
|
+
* A list opens it by naming what it points at, and it shows that object's
|
|
5
|
+
* facts in a rail beside the list rather than sending the reader away to read
|
|
6
|
+
* one title. The rail has a bar (step to the previous or next row, open the
|
|
7
|
+
* object's own page, close) and a scrolling body.
|
|
8
|
+
*
|
|
9
|
+
* # Where it stands
|
|
10
|
+
*
|
|
11
|
+
* A column of the shell's sheet beside the scroller (`AppShell` `peek`) while
|
|
12
|
+
* the window holds the list at its floor beside it, and a drawer over the
|
|
13
|
+
* page below that, behind a veil a press on which closes it. Which one is the
|
|
14
|
+
* host's arithmetic (`AppShell` `peekShape`), never a media query: the width
|
|
15
|
+
* that leaves the list its floor depends on everything else in the frame and
|
|
16
|
+
* on the density. The drawer is not modal: the list under it stays live, as
|
|
17
|
+
* it is beside the column.
|
|
18
|
+
*
|
|
19
|
+
* # Width
|
|
20
|
+
*
|
|
21
|
+
* The width is the host's (`width`), dragged on the grip between `minWidth`
|
|
22
|
+
* and `maxWidth` and kept per viewer with `useStoredWidth`. As a column it is
|
|
23
|
+
* capped at what leaves the list `reserve` wide, so a width dragged on a wide
|
|
24
|
+
* window never takes a narrower one's list away. The grip is a separator with
|
|
25
|
+
* a value, so the keyboard sizes it as well as the pointer.
|
|
26
|
+
*
|
|
27
|
+
* # What the host keeps
|
|
28
|
+
*
|
|
29
|
+
* The address (which object, opening pushes and stepping replaces), the
|
|
30
|
+
* keys that step and close from anywhere on the page, and the body for each
|
|
31
|
+
* kind of object. `PeekHost` wires the generic half of that; the rail itself
|
|
32
|
+
* draws and closes.
|
|
33
|
+
*/
|
|
34
|
+
import { type ReactNode } from 'react';
|
|
35
|
+
import { type AppShellPeekShape } from '../AppShell/regions.js';
|
|
36
|
+
/** The rail's resting width, in px, beside a list. */
|
|
37
|
+
export declare const PEEK_RAIL_WIDTH = 420;
|
|
38
|
+
/** The narrowest a reader may drag it, in px. */
|
|
39
|
+
export declare const PEEK_RAIL_MIN_WIDTH = 330;
|
|
40
|
+
/** The widest, in px. */
|
|
41
|
+
export declare const PEEK_RAIL_MAX_WIDTH = 640;
|
|
42
|
+
export interface PeekRailLabels {
|
|
43
|
+
previous: string;
|
|
44
|
+
next: string;
|
|
45
|
+
close: string;
|
|
46
|
+
open: string;
|
|
47
|
+
resize: string;
|
|
48
|
+
/** The tooltip on Previous, where it says more than the name: "Previous ([)". */
|
|
49
|
+
previousHint?: string | undefined;
|
|
50
|
+
/** The tooltip on Next: "Next (])". */
|
|
51
|
+
nextHint?: string | undefined;
|
|
52
|
+
/** The tooltip on Close: "Close (esc)". */
|
|
53
|
+
closeHint?: string | undefined;
|
|
54
|
+
}
|
|
55
|
+
export declare const PEEK_RAIL_LABELS: PeekRailLabels;
|
|
56
|
+
export interface PeekRailProps {
|
|
57
|
+
/** Names the rail: "Task detail". */
|
|
58
|
+
label: string;
|
|
59
|
+
/** Where it stands; in the shell's peek slot the shell's `peekShape` is the default. */
|
|
60
|
+
shape?: AppShellPeekShape | undefined;
|
|
61
|
+
/** The width, in px. */
|
|
62
|
+
width?: number | undefined;
|
|
63
|
+
minWidth?: number | undefined;
|
|
64
|
+
maxWidth?: number | undefined;
|
|
65
|
+
/** The resting width a reset (Enter on the grip, a double press) returns to. */
|
|
66
|
+
defaultWidth?: number | undefined;
|
|
67
|
+
/** The list's floor beside a column, in px: the rail is capped at what leaves the list this wide. */
|
|
68
|
+
reserve?: number | undefined;
|
|
69
|
+
/** Every change of width while a drag or a key moves it. Given one, the column draws its grip. */
|
|
70
|
+
onWidthChange?: ((width: number) => void) | undefined;
|
|
71
|
+
/** Where a resize ends: the moment to keep the reader's width. */
|
|
72
|
+
onWidthCommit?: ((width: number) => void) | undefined;
|
|
73
|
+
/** Closes the rail: its Close, the veil behind a drawer, Escape from inside it. */
|
|
74
|
+
onClose: () => void;
|
|
75
|
+
/** Steps to the previous or next row of the list it was opened from; without it there is no stepper. */
|
|
76
|
+
onStep?: ((delta: -1 | 1) => void) | undefined;
|
|
77
|
+
/** The object's own page, for the bar's Open link. Without it there is no Open. */
|
|
78
|
+
openHref?: string | undefined;
|
|
79
|
+
labels?: Partial<PeekRailLabels> | undefined;
|
|
80
|
+
className?: string | undefined;
|
|
81
|
+
children: ReactNode;
|
|
82
|
+
}
|
|
83
|
+
export declare function PeekRail({ label, shape: asked, width, minWidth, maxWidth, defaultWidth, reserve, onWidthChange, onWidthCommit, onClose, onStep, openHref, labels, className, children, }: PeekRailProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which clicks on a row mean "peek here" and which mean "open elsewhere".
|
|
3
|
+
*
|
|
4
|
+
* A ROW IS A REAL LINK EITHER WAY: its `href` is the object's page, so a
|
|
5
|
+
* middle press and a modified press open a tab and the status bar says where
|
|
6
|
+
* it goes. A plain primary press is intercepted and peeks instead, because the
|
|
7
|
+
* list is where the reader is.
|
|
8
|
+
*
|
|
9
|
+
* ONE COPY, because two spellings of "which clicks mean elsewhere" is how one
|
|
10
|
+
* of them comes to forget the middle button.
|
|
11
|
+
*/
|
|
12
|
+
import type { MouseEvent as ReactMouseEvent } from 'react';
|
|
13
|
+
import type { DataGridActivationEvent } from '../DataGrid/index.js';
|
|
14
|
+
/** Whether a press is a plain primary press, the one a row answers in place. */
|
|
15
|
+
export declare function isPlainPress(event: Pick<MouseEvent, 'button' | 'metaKey' | 'ctrlKey' | 'shiftKey' | 'altKey' | 'defaultPrevented'>): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* A row's click, for a row that is an anchor: a plain press calls `open` and
|
|
18
|
+
* prevents the navigation, and every way a reader opens a tab is left to the
|
|
19
|
+
* browser. Undefined where there is nothing to open.
|
|
20
|
+
*/
|
|
21
|
+
export declare function peekClickHandler(open?: () => void): ((event: ReactMouseEvent) => void) | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* A `DataGrid` row's `onRowActivate`, wired to peek.
|
|
24
|
+
*
|
|
25
|
+
* A KEYBOARD ACTIVATION HAS NO BUTTON TO READ, so it opens unconditionally:
|
|
26
|
+
* Enter on a row is the reader saying "this row" with nothing to say
|
|
27
|
+
* "elsewhere" with. Read through `isPlainPress`, its missing button would read
|
|
28
|
+
* as a press of another button and the keyboard path would open nothing.
|
|
29
|
+
*/
|
|
30
|
+
export declare function peekRowActivation<T>(open: (row: T) => void): (row: T, event: DataGridActivationEvent) => void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import '../HitArea/HitArea.css';
|
|
2
|
+
import '../AppShell/ResizeHandle.css';
|
|
3
|
+
import './PeekRail.css';
|
|
4
|
+
export { PEEK_RAIL_LABELS, PEEK_RAIL_MAX_WIDTH, PEEK_RAIL_MIN_WIDTH, PEEK_RAIL_WIDTH, PeekRail } from './PeekRail.js';
|
|
5
|
+
export type { PeekRailLabels, PeekRailProps } from './PeekRail.js';
|
|
6
|
+
export { PeekHost, PeekNeighbours, usePeekNeighbours, usePeekOrder, usePeekStep } from './PeekHost.js';
|
|
7
|
+
export type { PeekHostProps, PeekOrder } from './PeekHost.js';
|
|
8
|
+
export { isPlainPress, peekClickHandler, peekRowActivation } from './activation.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { PEEK_RAIL_LABELS, PEEK_RAIL_MAX_WIDTH, PEEK_RAIL_MIN_WIDTH, PEEK_RAIL_WIDTH, PeekHost, PeekNeighbours, PeekRail, isPlainPress, peekClickHandler, peekRowActivation, usePeekNeighbours, usePeekOrder, usePeekStep } from '../chunk-LXYSWQNE.js';
|
|
2
|
+
import '../chunk-PIYJNCN7.js';
|
|
3
|
+
import '../chunk-HD4QJ2SI.js';
|
|
4
|
+
import '../chunk-EA23JG6R.js';
|
|
5
|
+
import '../chunk-2YTOOH3A.js';
|
|
6
|
+
import '../chunk-2BQYODY3.js';
|
|
7
|
+
import '../chunk-BZFWDIV6.js';
|
|
8
|
+
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The peek (`PeekRail`): a rail beside the list it was opened from, on the
|
|
3
|
+
* subtle ground, with a bar at the page bar's height and a scrolling body.
|
|
4
|
+
*
|
|
5
|
+
* Its shape is an attribute with one value (`data-shape`), decided by the
|
|
6
|
+
* host, so there is no width at which it is both a column and a drawer, or
|
|
7
|
+
* neither. Its width is one variable (`--crewlet-peek-rail-width`), written
|
|
8
|
+
* on the rail by the component, so the column and the drawer read the same
|
|
9
|
+
* value and cannot disagree about how wide it is.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
.crewlet-peek-rail {
|
|
13
|
+
position: relative;
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
min-width: 0;
|
|
17
|
+
min-height: 0;
|
|
18
|
+
background: var(--color-surface-subtle);
|
|
19
|
+
border-left: 1px solid var(--color-border-hover);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/*
|
|
23
|
+
* A COLUMN beside the scroller: the reader's width, capped at what leaves the
|
|
24
|
+
* list its floor (`--crewlet-peek-rail-reserve`, the gutter, the padding, any
|
|
25
|
+
* section column and the list). At the threshold the host decided the column
|
|
26
|
+
* at, the cap is exactly the resting width, so the column never opens
|
|
27
|
+
* narrower than the width it was decided at.
|
|
28
|
+
*/
|
|
29
|
+
.crewlet-peek-rail[data-shape='column'] {
|
|
30
|
+
flex: none;
|
|
31
|
+
width: min(var(--crewlet-peek-rail-width), max(0px, 100% - var(--crewlet-peek-rail-reserve, 0px)));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* The grip straddles the rail's hairline, a little narrower than the frame's
|
|
35
|
+
seam, since it stands over one line rather than in a gap. */
|
|
36
|
+
.crewlet-peek-rail > .crewlet-resize-handle--left {
|
|
37
|
+
--crewlet-resize-handle-width: calc(var(--spacing-1) + var(--spacing-1) / 2);
|
|
38
|
+
left: calc(var(--crewlet-resize-handle-width) / -2);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* The bar stands at the page bar's height, so the two lines meet. */
|
|
42
|
+
.crewlet-peek-rail__bar {
|
|
43
|
+
display: flex;
|
|
44
|
+
flex: none;
|
|
45
|
+
align-items: center;
|
|
46
|
+
gap: var(--spacing-1);
|
|
47
|
+
height: var(--size-shell-topbar);
|
|
48
|
+
padding: 0 var(--spacing-2);
|
|
49
|
+
border-bottom: 1px solid var(--color-border-hover);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.crewlet-peek-rail__spacer {
|
|
53
|
+
flex: 1 1 auto;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* THE PEEK'S OWN SCROLLER, and a SIZE container for the reason the shell's
|
|
57
|
+
`main` is one: a record inside a peek is bounded by what the peek shows
|
|
58
|
+
(`100cqb`), and with no size container between it and the root `cqb`
|
|
59
|
+
falls back to the viewport, which counts the peek's bar as view. Its
|
|
60
|
+
height is the flex column's, never its content's, so containing it costs
|
|
61
|
+
nothing. */
|
|
62
|
+
.crewlet-peek-rail__body {
|
|
63
|
+
container: crewlet-peek-rail / size;
|
|
64
|
+
flex: 1 1 auto;
|
|
65
|
+
min-height: 0;
|
|
66
|
+
overflow-y: auto;
|
|
67
|
+
padding: 0 var(--spacing-4) var(--spacing-6);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/*
|
|
71
|
+
* THE DRAWER: below the host's threshold the rail slides over the page
|
|
72
|
+
* behind a veil, and a fixed box takes no room, so the page stays one column
|
|
73
|
+
* under it. No grip: there is no list beside it to give way.
|
|
74
|
+
*/
|
|
75
|
+
/*
|
|
76
|
+
* Beside an aside column the drawer and its veil stop at the page sheet's
|
|
77
|
+
* edge (`--crewlet-app-shell-aside-occupied`, measured by the shell), so the
|
|
78
|
+
* peek stands over the page, next to the aside, rather than over the aside.
|
|
79
|
+
*/
|
|
80
|
+
.crewlet-peek-rail[data-shape='drawer'] {
|
|
81
|
+
position: fixed;
|
|
82
|
+
top: 0;
|
|
83
|
+
right: var(--crewlet-app-shell-aside-occupied, 0px);
|
|
84
|
+
bottom: 0;
|
|
85
|
+
z-index: var(--z-index-overlay);
|
|
86
|
+
width: min(var(--crewlet-peek-rail-width), 92vw);
|
|
87
|
+
box-shadow: var(--shadow-md);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.crewlet-peek-rail__veil {
|
|
91
|
+
position: fixed;
|
|
92
|
+
inset: 0 var(--crewlet-app-shell-aside-occupied, 0px) 0 0;
|
|
93
|
+
z-index: calc(var(--z-index-overlay) - 1);
|
|
94
|
+
background: var(--color-surface-veil);
|
|
95
|
+
}
|
package/dist/PeopleRail/index.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
export { PEOPLE_RAIL_LABELS, PeopleRail, peopleRailKey } from '../chunk-
|
|
1
|
+
export { PEOPLE_RAIL_LABELS, PeopleRail, peopleRailKey } from '../chunk-ICJRP6QW.js';
|
|
2
2
|
import '../chunk-CENOOTAV.js';
|
|
3
3
|
import '../chunk-Z7JYG5TF.js';
|
|
4
4
|
import '../chunk-AYKXMIOR.js';
|
|
5
5
|
import '../chunk-5AQBPHZD.js';
|
|
6
6
|
import '../chunk-PZKHBB7D.js';
|
|
7
7
|
import '../chunk-PQADV6P6.js';
|
|
8
|
-
import '../chunk-
|
|
9
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-HD4QJ2SI.js';
|
|
9
|
+
import '../chunk-EA23JG6R.js';
|
|
10
|
+
import '../chunk-2BQYODY3.js';
|
|
10
11
|
import '../chunk-BZFWDIV6.js';
|
|
11
12
|
import '../chunk-ODEQTPFM.js';
|
package/dist/PinTile/index.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
export { PresenterView, formatStopwatch } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { PresenterView, formatStopwatch } from '../chunk-EGL24VY5.js';
|
|
2
|
+
import '../chunk-OHBXOEP3.js';
|
|
3
3
|
import '../chunk-RMEBFYL7.js';
|
|
4
4
|
import '../chunk-RK4XPHVG.js';
|
|
5
|
+
import '../chunk-HD4QJ2SI.js';
|
|
6
|
+
import '../chunk-EA23JG6R.js';
|
|
5
7
|
import '../chunk-OMV5W53A.js';
|
|
6
|
-
import '../chunk-OG6CL3EB.js';
|
|
7
8
|
import '../chunk-H5XTJ7GJ.js';
|
|
8
|
-
import '../chunk-
|
|
9
|
+
import '../chunk-2BQYODY3.js';
|
|
9
10
|
import '../chunk-NUZHC6MM.js';
|
|
10
11
|
import '../chunk-BZFWDIV6.js';
|
|
11
12
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
export { PrincipalPicker } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { PrincipalPicker } from '../chunk-TA72CURM.js';
|
|
2
|
+
import '../chunk-U5PJSGHG.js';
|
|
3
3
|
import '../chunk-7KHM2FZH.js';
|
|
4
4
|
import '../chunk-CI3VPIJN.js';
|
|
5
5
|
import '../chunk-5AQBPHZD.js';
|
|
6
6
|
import '../chunk-PZKHBB7D.js';
|
|
7
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-FXQLNETQ.js';
|
|
8
8
|
import '../chunk-XCUUI7E7.js';
|
|
9
9
|
import '../chunk-PQADV6P6.js';
|
|
10
10
|
import '../chunk-RSAQOKH3.js';
|
|
11
11
|
import '../chunk-2YTOOH3A.js';
|
|
12
12
|
import '../chunk-H5XTJ7GJ.js';
|
|
13
|
-
import '../chunk-
|
|
13
|
+
import '../chunk-2BQYODY3.js';
|
|
14
14
|
import '../chunk-NUZHC6MM.js';
|
|
15
15
|
import '../chunk-BZFWDIV6.js';
|
|
16
16
|
import '../chunk-ODEQTPFM.js';
|