@crewlethq/ui 0.81.1 → 0.82.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 +61 -4
- package/dist/Accordion/index.js +3 -3
- package/dist/ActionCard/ActionCard.d.ts +49 -0
- package/dist/ActionCard/index.d.ts +4 -0
- package/dist/ActionCard/index.js +2 -0
- package/dist/ActionCard-47WSZ2O5.css +110 -0
- package/dist/ActivityLine/ActivityLine.d.ts +27 -0
- package/dist/ActivityLine/index.d.ts +4 -0
- package/dist/ActivityLine/index.js +4 -0
- package/dist/ActivityLine-AMSERTOB.css +74 -0
- package/dist/AgentHandoffPanel/index.js +15 -15
- package/dist/AppShell/AccountRow.d.ts +14 -1
- package/dist/AppShell/AppShell.d.ts +53 -4
- package/dist/AppShell/ResizeHandle.d.ts +1 -1
- package/dist/AppShell/index.d.ts +1 -1
- package/dist/AppShell/index.js +8 -5
- package/dist/AppShell/railShape.d.ts +17 -0
- package/dist/{AppShell-2IBUS4TH.css → AppShell-F7RID4P4.css} +150 -0
- package/dist/ArrangeFrame/index.js +2 -2
- package/dist/ArrangeGroup/index.js +2 -2
- package/dist/ArrangeList/index.js +6 -6
- package/dist/ArtifactBar/index.js +11 -11
- package/dist/ArtifactCard/index.js +13 -13
- package/dist/ArtifactCover/index.js +3 -3
- package/dist/ArtifactKindIllustration/index.js +1 -1
- package/dist/ArtifactKinds-3EH4KR3F.css +18 -0
- package/dist/ArtifactMakeRow/index.js +1 -1
- package/dist/ArtifactNameCell/index.js +1 -1
- package/dist/ArtifactPanel/index.js +5 -5
- package/dist/AttachmentChip/index.js +2 -2
- package/dist/AuthLayout/index.js +5 -4
- package/dist/Avatar/Avatar.d.ts +30 -28
- package/dist/Avatar/AvatarStack.d.ts +2 -2
- package/dist/Avatar/index.d.ts +1 -1
- package/dist/Avatar/index.js +2 -2
- package/dist/{Avatar-VJSJGFRG.css → Avatar-MNE3WBZO.css} +56 -54
- package/dist/AvatarPicker/index.js +12 -12
- package/dist/{AvatarStack-7I3P7LCK.css → AvatarStack-KEHD3GWY.css} +16 -4
- package/dist/BrandLockup/BrandLockup.d.ts +6 -0
- package/dist/BrandLockup/index.js +2 -1
- package/dist/BriefCard/BriefCard.d.ts +23 -1
- package/dist/BriefCard/index.d.ts +2 -2
- package/dist/BriefCard/index.js +7 -7
- package/dist/{BriefCard-VKTH3BSW.css → BriefCard-QCL7MVUV.css} +26 -0
- package/dist/Canvas/index.js +6 -6
- package/dist/CanvasBoard/index.js +9 -9
- package/dist/CanvasToolbar/index.js +8 -8
- package/dist/Card/index.js +2 -2
- package/dist/ChangeList/index.js +5 -5
- package/dist/ChangeMark/index.js +4 -4
- package/dist/CharacterPicker/index.js +2 -2
- package/dist/ChatDay/ChatDay.d.ts +53 -0
- package/dist/ChatDay/index.d.ts +5 -0
- package/dist/ChatDay/index.js +3 -0
- package/dist/ChatDay-E3FF5HWF.css +116 -0
- package/dist/ChatDivider/ChatDivider.d.ts +31 -0
- package/dist/ChatDivider/index.d.ts +4 -0
- package/dist/ChatDivider/index.js +2 -0
- package/dist/ChatDivider-7ZNDL2PZ.css +76 -0
- package/dist/ChatMessage/ChatMessage.d.ts +111 -0
- package/dist/ChatMessage/index.d.ts +4 -0
- package/dist/ChatMessage/index.js +5 -0
- package/dist/ChatMessage-FH7VRVCH.css +304 -0
- package/dist/ChatScale-L4SIHSKL.css +42 -0
- package/dist/ChatThread/ChatThread.d.ts +33 -4
- package/dist/ChatThread/index.d.ts +1 -1
- package/dist/ChatThread/index.js +1 -1
- package/dist/{ChatThread-2KO3FZKQ.css → ChatThread-HAECJMP6.css} +17 -0
- package/dist/CheckGrid/index.js +6 -6
- package/dist/Checkbox/index.js +5 -5
- package/dist/ChipField/ChipField.d.ts +82 -0
- package/dist/ChipField/index.d.ts +4 -0
- package/dist/ChipField/index.js +9 -0
- package/dist/ChipField-D4CW6XFA.css +108 -0
- package/dist/ColorField/index.js +5 -5
- package/dist/Combobox/index.js +7 -7
- package/dist/CommandPalette/index.js +11 -11
- package/dist/CommentThread/index.js +14 -14
- package/dist/CompactNav/CompactNav.d.ts +175 -0
- package/dist/CompactNav/index.d.ts +4 -0
- package/dist/CompactNav/index.js +8 -0
- package/dist/CompactNav-CU2AQXBC.css +322 -0
- package/dist/Composer/Composer.d.ts +26 -2
- package/dist/Composer/index.d.ts +2 -1
- package/dist/Composer/index.js +7 -7
- package/dist/{Composer-HQIMTMRC.css → Composer-ZEGHEAFE.css} +71 -0
- package/dist/ConfirmField/index.js +5 -5
- package/dist/ContrastBadge/index.js +2 -2
- package/dist/ContrastHelp/index.js +6 -6
- package/dist/Count/Count.d.ts +24 -6
- package/dist/Count/index.d.ts +1 -1
- package/dist/Count/index.js +1 -1
- package/dist/{Count-ZJ6ID4ZU.css → Count-2HXBBYPO.css} +19 -0
- package/dist/DataGrid/index.js +8 -8
- package/dist/DataTable/index.js +10 -10
- package/dist/DataView/index.js +17 -17
- package/dist/DatasetSource/index.js +3 -3
- package/dist/DateTimePicker/index.js +5 -5
- package/dist/DeepWorkCard/index.js +10 -10
- package/dist/Disclosure/index.js +3 -3
- package/dist/DocTabsEditor/index.js +8 -8
- package/dist/Document/index.js +2 -2
- package/dist/EditingStatus/index.js +2 -2
- package/dist/{Editor-BXOWAV46.js → Editor-7EQWP3RN.js} +8 -8
- package/dist/EmojiPicker/EmojiPicker.d.ts +51 -0
- package/dist/EmojiPicker/emoji.d.ts +24 -0
- package/dist/EmojiPicker/index.d.ts +5 -0
- package/dist/EmojiPicker/index.js +13 -0
- package/dist/EmojiPicker-FMWYN2WX.css +63 -0
- package/dist/EntityChip/index.js +3 -3
- package/dist/EntityList/index.js +6 -6
- package/dist/FactList/index.js +4 -4
- package/dist/FolderTile/index.js +3 -3
- package/dist/FollowBanner/index.js +4 -4
- package/dist/HuePicker/index.js +8 -8
- package/dist/ImageUpload/ImageUpload.d.ts +6 -7
- package/dist/ImageUpload/index.js +3 -3
- package/dist/{ImageUpload-OWI7CCG7.css → ImageUpload-IFXZROFZ.css} +6 -37
- package/dist/InlineEditor/index.js +7 -7
- package/dist/Input/index.js +4 -4
- package/dist/Kbd/Kbd.d.ts +9 -0
- package/dist/Kbd/index.d.ts +1 -1
- package/dist/Kbd/index.js +1 -1
- package/dist/Layer/index.js +2 -2
- package/dist/LinkCard/LinkCard.d.ts +64 -0
- package/dist/LinkCard/index.d.ts +5 -0
- package/dist/LinkCard/index.js +5 -0
- package/dist/LinkCard-5I4MYU6I.css +155 -0
- package/dist/LinkInterstitial/index.js +6 -6
- package/dist/ListInput/index.js +8 -8
- package/dist/Listbox/index.js +3 -3
- package/dist/LogoSlot/index.js +3 -3
- package/dist/MarkdownEditor/format.d.ts +9 -1
- package/dist/MarkdownEditor/index.d.ts +2 -2
- package/dist/MarkdownEditor/index.js +9 -9
- package/dist/MentionChip/MentionChip.d.ts +25 -0
- package/dist/MentionChip/index.d.ts +3 -0
- package/dist/MentionChip/index.js +2 -0
- package/dist/MentionChip-W7MZZVRZ.css +42 -0
- package/dist/MentionMenu/MentionMenu.d.ts +82 -0
- package/dist/MentionMenu/index.d.ts +4 -0
- package/dist/MentionMenu/index.js +3 -0
- package/dist/MentionMenu-4NAQ45S4.css +65 -0
- package/dist/Menu/index.js +4 -4
- package/dist/MergeConflicts/index.js +8 -8
- package/dist/MessageActions/MessageActions.d.ts +58 -0
- package/dist/MessageActions/index.d.ts +4 -0
- package/dist/MessageActions/index.js +16 -0
- package/dist/MessageActions-Q4F5UH3S.css +73 -0
- package/dist/Modal/Modal.d.ts +12 -0
- package/dist/Modal/index.js +5 -5
- package/dist/{Modal-FYQYEI3N.css → Modal-GKUOO7PZ.css} +26 -1
- package/dist/OpenInAppCard/index.js +7 -7
- package/dist/OrgLabel/index.js +3 -3
- package/dist/OrgNode/index.js +4 -4
- package/dist/OrgTable/index.js +7 -7
- package/dist/PeekRail/index.js +1 -1
- package/dist/PeopleRail/index.js +4 -4
- package/dist/PersonRow/PersonRow.d.ts +70 -0
- package/dist/PersonRow/index.d.ts +3 -0
- package/dist/PersonRow/index.js +2 -0
- package/dist/PersonRow-V5GTPNVP.css +161 -0
- package/dist/Popover/index.js +3 -3
- package/dist/PresenceStack/index.js +3 -3
- package/dist/{PresenceStack-ZV67BH4V.css → PresenceStack-2DTYRADY.css} +4 -6
- package/dist/PresenterView/index.js +5 -5
- package/dist/PricingCard/index.js +2 -2
- package/dist/Principal/index.js +3 -3
- package/dist/PrincipalPicker/index.js +11 -11
- package/dist/ProposalCard/index.js +15 -15
- package/dist/ReactionBar/ReactionBar.d.ts +84 -0
- package/dist/ReactionBar/index.d.ts +4 -0
- package/dist/ReactionBar/index.js +15 -0
- package/dist/ReactionBar-XXI4V7XG.css +93 -0
- package/dist/RecordChip/index.js +4 -4
- package/dist/RefusalCard/index.js +6 -6
- package/dist/RelatedRow/index.js +3 -3
- package/dist/ResultTableCard/index.js +7 -7
- package/dist/ReviewList/index.js +2 -2
- package/dist/RichEditor/index.js +2 -2
- package/dist/RunChip/index.js +5 -5
- package/dist/SandboxedFrame/index.js +2 -2
- package/dist/SectionFrame/index.js +2 -2
- package/dist/SegmentedControl/index.js +7 -7
- package/dist/Select/index.js +4 -4
- package/dist/SelectionBar/index.js +6 -6
- package/dist/SetupWizard/index.js +6 -6
- package/dist/ShareDialog/index.js +11 -11
- package/dist/SheetColumnEditor/index.js +16 -16
- package/dist/SheetGrid/index.js +12 -12
- package/dist/Shortcut/index.js +3 -3
- package/dist/SidePanel/SidePanel.d.ts +10 -3
- package/dist/SidePanel/SidePanelBase.d.ts +3 -1
- package/dist/SidePanel/index.js +5 -5
- package/dist/{SidePanel-VXKUKLOJ.css → SidePanel-BKWT6Q6Z.css} +36 -0
- package/dist/SidebarNav/SidebarNav.d.ts +52 -3
- package/dist/SidebarNav/index.js +1 -1
- package/dist/{SidebarNav-VTQ3G4AE.css → SidebarNav-E7PZGGA6.css} +132 -7
- package/dist/Skeleton/index.js +1 -1
- package/dist/{Skeleton-7ZA5ETJM.css → Skeleton-GIXV3KK5.css} +3 -1
- package/dist/SlideCompare/index.js +5 -5
- package/dist/SlideFilmstrip/index.js +8 -8
- package/dist/SlideGrid/index.js +4 -4
- package/dist/SlideStage/index.js +3 -3
- package/dist/SourceEditor/index.js +2 -2
- package/dist/StatusCard/index.js +5 -5
- package/dist/Switcher/index.js +12 -12
- package/dist/TableCells/index.js +5 -5
- package/dist/Tabs/index.js +6 -6
- package/dist/Tag/Tag.d.ts +9 -2
- package/dist/Tag/index.js +1 -1
- package/dist/{Tag-JTJVZM2D.css → Tag-WLDOROB5.css} +24 -0
- package/dist/TagsInput/index.js +6 -6
- package/dist/ThemeGallery/index.js +5 -5
- package/dist/ThemeSwitcher/index.js +8 -8
- package/dist/ThinkingIndicator/ThinkingIndicator.d.ts +1 -1
- package/dist/ThinkingIndicator/index.js +1 -1
- package/dist/{ThinkingIndicator-JVF52N7L.css → ThinkingIndicator-S7ZL2C77.css} +10 -2
- package/dist/ThreadSummary/ThreadSummary.d.ts +43 -0
- package/dist/ThreadSummary/index.d.ts +4 -0
- package/dist/ThreadSummary/index.js +6 -0
- package/dist/ThreadSummary-AGR4NDMD.css +90 -0
- package/dist/TimeRangePicker/index.js +12 -12
- package/dist/TimeWindowPicker/index.js +10 -10
- package/dist/Toaster/index.js +2 -2
- package/dist/Toolbar/index.js +3 -3
- package/dist/Tooltip/Tooltip.d.ts +30 -3
- package/dist/Tooltip/index.js +3 -3
- package/dist/TreeCanvas/index.js +7 -7
- package/dist/TreeGrid/index.js +3 -3
- package/dist/ValueField/index.js +9 -9
- package/dist/VersionCompare/index.js +9 -9
- package/dist/VersionTimeline/index.js +4 -4
- package/dist/WidgetFrame/index.js +2 -2
- package/dist/{chunk-WCDPFTJZ.js → chunk-25JQNHTC.js} +92 -28
- package/dist/{chunk-ZKLEAK7M.js → chunk-2H6YDUR5.js} +7 -7
- package/dist/{chunk-7FF6CZW5.js → chunk-2KJCUCVE.js} +36 -8
- package/dist/{chunk-6LXS3X7A.js → chunk-2L4WHYMT.js} +1 -1
- package/dist/{chunk-6G6WHTC7.js → chunk-2O5CMV76.js} +1 -1
- package/dist/chunk-2TOGGCDM.js +50 -0
- package/dist/{chunk-7PJFUQMY.js → chunk-2ZSCHQOA.js} +1 -1
- package/dist/chunk-3BRXEMYT.js +46 -0
- package/dist/{chunk-H22SR76M.js → chunk-3H6OZUZ3.js} +1 -1
- package/dist/{chunk-VK45YJLH.js → chunk-3IWZVEXA.js} +2 -2
- package/dist/{chunk-I33UIUZD.js → chunk-3QQIGMY3.js} +49 -14
- package/dist/{chunk-NUZHC6MM.js → chunk-4ITETIGZ.js} +12 -1
- package/dist/{chunk-FQI62PIZ.js → chunk-4RYELYWG.js} +2 -2
- package/dist/{chunk-LCZULGMB.js → chunk-57BFL323.js} +2 -2
- package/dist/{chunk-73GUXYYE.js → chunk-5AHNW5CP.js} +1 -1
- package/dist/{chunk-FFGEJUAP.js → chunk-5ILRWUE7.js} +2 -2
- package/dist/{chunk-S5QJZOPL.js → chunk-5K5SZGBI.js} +1 -1
- package/dist/{chunk-LM6VYJTV.js → chunk-5YXMKZUA.js} +1 -1
- package/dist/{chunk-5XBNJNSO.js → chunk-65RFU7LF.js} +1 -1
- package/dist/{chunk-WKKWF277.js → chunk-6IOQWMYJ.js} +2 -2
- package/dist/{chunk-7MGXHCVK.js → chunk-6M2N6ETA.js} +1 -1
- package/dist/{chunk-OWHETZIU.js → chunk-6SFDL4QH.js} +1 -1
- package/dist/{chunk-JD7P2GJP.js → chunk-6YBBQAEM.js} +1 -1
- package/dist/{chunk-WK4FQPYW.js → chunk-77VOASOY.js} +5 -5
- package/dist/{chunk-UYF2B2TH.js → chunk-7ELFH3RJ.js} +1 -1
- package/dist/{chunk-CYYBE2MM.js → chunk-7U6PK242.js} +1 -1
- package/dist/{chunk-VG3SIJ3M.js → chunk-AFLS26AC.js} +2 -2
- package/dist/{chunk-JQEXAH7G.js → chunk-AMUXSJ2A.js} +2 -2
- package/dist/{chunk-4XF7ENQA.js → chunk-AOJ6ZA77.js} +2 -2
- package/dist/{chunk-TJIBTHWJ.js → chunk-B3X4DHRB.js} +2 -2
- package/dist/{chunk-BFM5G2Z6.js → chunk-BSAU7QRW.js} +1 -1
- package/dist/chunk-C4256UXE.js +21 -0
- package/dist/{chunk-4MRFLHJC.js → chunk-C46DDVTK.js} +1 -1
- package/dist/{chunk-5EFLA6BW.js → chunk-C75WZMXG.js} +2 -2
- package/dist/{chunk-YB64PWIN.js → chunk-C7UHDM7Y.js} +1 -1
- package/dist/{chunk-5BOFC5OP.js → chunk-CF4M6N6A.js} +20 -4
- package/dist/{chunk-ANTAQAR4.js → chunk-CMAZZY2I.js} +7 -1
- package/dist/{chunk-MLDTLZAO.js → chunk-D2GT3CR4.js} +3 -3
- package/dist/{chunk-57AKYFML.js → chunk-DD7RBNT4.js} +3 -3
- package/dist/{chunk-MUFBHVCT.js → chunk-DWQYV5AV.js} +2 -2
- package/dist/{chunk-CNEHFH2A.js → chunk-EAHEJNVJ.js} +1 -1
- package/dist/chunk-EALRMP7N.js +69 -0
- package/dist/{chunk-E35HYQMK.js → chunk-EBVZHVPD.js} +12 -5
- package/dist/{chunk-M73MMEZY.js → chunk-ED4A6Q24.js} +1 -1
- package/dist/{chunk-6LN64KGG.js → chunk-F7HZYTZT.js} +6 -3
- package/dist/{chunk-YQDRJZ5J.js → chunk-FKAJBN6G.js} +8 -8
- package/dist/{chunk-RTMNULTL.js → chunk-FLW5U7YS.js} +2 -2
- package/dist/{chunk-JMTBK55P.js → chunk-FVZPSTL2.js} +1 -1
- package/dist/{chunk-GHQG4VZA.js → chunk-G3CACE5L.js} +3 -3
- package/dist/{chunk-SNIPM6K7.js → chunk-G6ZFSUIH.js} +3 -3
- package/dist/chunk-GP5TNTZH.js +386 -0
- package/dist/{chunk-7KBNFFM3.js → chunk-GVPUCEWH.js} +6 -3
- package/dist/{chunk-6R334YT3.js → chunk-GZVAZ3LL.js} +2 -2
- package/dist/{chunk-KL6A7JGH.js → chunk-HA2PL7PA.js} +2 -2
- package/dist/{chunk-2IIHMJMZ.js → chunk-HCUECVZ3.js} +2 -2
- package/dist/{chunk-N2BF272H.js → chunk-HF5L56YQ.js} +1 -1
- package/dist/{chunk-Q2T4L6ML.js → chunk-HFOTRZFU.js} +4 -4
- package/dist/{chunk-2STOSJT3.js → chunk-HQFOZJQ4.js} +7 -7
- package/dist/chunk-HTBTAIH6.js +37 -0
- package/dist/{chunk-BRLZXYPA.js → chunk-I4IUX3JF.js} +1 -1
- package/dist/{chunk-BXCL6P5Z.js → chunk-I4PBFJGX.js} +1 -1
- package/dist/{chunk-ADGNISEI.js → chunk-IAP7APOX.js} +5 -5
- package/dist/{chunk-BT3GB7HC.js → chunk-IRONPJB4.js} +3 -3
- package/dist/chunk-ISQANI6Q.js +9 -0
- package/dist/chunk-IUBOLGHG.js +140 -0
- package/dist/{chunk-O222F2IX.js → chunk-IUWP2LSE.js} +6 -6
- package/dist/{chunk-3JXX5S3Z.js → chunk-IYI6HWKN.js} +3 -3
- package/dist/{chunk-R5OATXWU.js → chunk-JHQGNFN3.js} +36 -13
- package/dist/{chunk-CSXJIIO4.js → chunk-JV6JM6W6.js} +1 -1
- package/dist/{chunk-ZQEJSEPS.js → chunk-K6Y6CDEZ.js} +2 -2
- package/dist/chunk-K774LUN3.js +20 -0
- package/dist/{chunk-LOWQK2PB.js → chunk-KJR5X4II.js} +4 -4
- package/dist/{chunk-45M73G5A.js → chunk-KLAVEJIO.js} +4 -4
- package/dist/{chunk-53J2YNQA.js → chunk-L5VU3LZT.js} +1 -1
- package/dist/{chunk-VERJCAJ4.js → chunk-LBGKLYBY.js} +1 -1
- package/dist/{chunk-PRN5IP2R.js → chunk-LMEMH6DO.js} +1 -1
- package/dist/{chunk-I22MUEG7.js → chunk-LNQSNXGJ.js} +1 -1
- package/dist/chunk-LQRN2XZK.js +87 -0
- package/dist/{chunk-HEA6TERQ.js → chunk-LSOR77RZ.js} +1 -1
- package/dist/{chunk-222VILSP.js → chunk-LVJGN5II.js} +1 -1
- package/dist/{chunk-AYHIF6DH.js → chunk-LZNPL266.js} +1 -1
- package/dist/{chunk-R45VM5EX.js → chunk-MMV7NEAC.js} +1 -1
- package/dist/chunk-MPYRC3GO.js +244 -0
- package/dist/{chunk-37U3Z65B.js → chunk-MVMVMHYI.js} +1 -1
- package/dist/{chunk-MP7DGKB6.js → chunk-N2T7Y5KR.js} +2 -2
- package/dist/{chunk-NKBKQEKS.js → chunk-NFXCJGHG.js} +1 -1
- package/dist/{chunk-OZAZHM55.js → chunk-NKBKHOMU.js} +1 -1
- package/dist/{chunk-MGQKF7GK.js → chunk-NN475NAP.js} +1 -1
- package/dist/{chunk-6EWNMSS4.js → chunk-NNZRTR5M.js} +2 -2
- package/dist/{chunk-JT7WRPZ6.js → chunk-NTRKC2JV.js} +1 -1
- package/dist/{chunk-63GBSOLU.js → chunk-NXBCAXP5.js} +2 -2
- package/dist/{chunk-NR4CPM4T.js → chunk-NXFTCPF6.js} +1 -1
- package/dist/chunk-O3MYBNRO.js +80 -0
- package/dist/{chunk-RMEBFYL7.js → chunk-O6EV6GKI.js} +1 -1
- package/dist/{chunk-YL7AR6PR.js → chunk-O7KG4CXB.js} +3 -3
- package/dist/{chunk-FB3TCNQP.js → chunk-O7N6W52M.js} +3 -3
- package/dist/{chunk-2FMBZCFR.js → chunk-OAHRMR4U.js} +1 -1
- package/dist/chunk-ONHYFU7D.js +25 -0
- package/dist/{chunk-Z2MZTI3H.js → chunk-ONNXUS5Y.js} +1 -1
- package/dist/{chunk-T24HBEU6.js → chunk-OOOVL77Y.js} +1 -1
- package/dist/{chunk-CZQ7UITX.js → chunk-P6F3PE4V.js} +3 -3
- package/dist/{chunk-BLGBD2D2.js → chunk-P7HMY3BQ.js} +4 -4
- package/dist/{chunk-TPIMOGOZ.js → chunk-PEBQMX5X.js} +1 -1
- package/dist/{chunk-4TMBAOXK.js → chunk-PW57R4BN.js} +1 -1
- package/dist/chunk-PX5BOALQ.js +13 -0
- package/dist/{chunk-HQOEAUDJ.js → chunk-PXLS6JKL.js} +2 -2
- package/dist/{chunk-CFTBESST.js → chunk-Q6TCUSQA.js} +2 -2
- package/dist/{chunk-ZWXHTXZO.js → chunk-QGEDXYLB.js} +2 -2
- package/dist/{chunk-WTXCK46H.js → chunk-R2QBQ6NO.js} +1 -1
- package/dist/{chunk-OBPINJNO.js → chunk-SEKO6P3Y.js} +3 -3
- package/dist/{chunk-CLJGFOTV.js → chunk-SKGOKLJD.js} +31 -18
- package/dist/{chunk-KHJIEPZV.js → chunk-SM4P2SHB.js} +2 -2
- package/dist/{chunk-B2YSFWUG.js → chunk-SYVQXMLO.js} +9 -9
- package/dist/{chunk-UY3FWQWG.js → chunk-T4IEESXN.js} +128 -12
- package/dist/{chunk-TPCBPGSB.js → chunk-T7WESRZF.js} +3 -3
- package/dist/chunk-TDFLCUBE.js +6 -0
- package/dist/{chunk-Z6JKZI4E.js → chunk-TGCGLKD4.js} +1 -1
- package/dist/chunk-TRXTO3WC.js +114 -0
- package/dist/{chunk-H5XTJ7GJ.js → chunk-TUEM2XIW.js} +1 -1
- package/dist/{chunk-4AUTALJA.js → chunk-U2IQNDDR.js} +1 -1
- package/dist/{chunk-IVTQWOXV.js → chunk-ULYHDP7U.js} +1 -1
- package/dist/{chunk-DGSK4LLS.js → chunk-V6WDJUYK.js} +1 -1
- package/dist/{chunk-5CEQ3HLH.js → chunk-VGOWSOUA.js} +6 -6
- package/dist/{chunk-TKUAGWNR.js → chunk-WT3B76MG.js} +1 -1
- package/dist/{chunk-D7G2QGET.js → chunk-X3US25XJ.js} +1 -1
- package/dist/{chunk-GPFYITOF.js → chunk-X7VZQKIW.js} +1 -1
- package/dist/{chunk-L4HHWG4V.js → chunk-XA2QKGBJ.js} +3 -3
- package/dist/{chunk-HPI5J6AR.js → chunk-XGLMPPDW.js} +2 -2
- package/dist/{chunk-DV5L2GRY.js → chunk-XJMES7AE.js} +1 -1
- package/dist/{chunk-5NJMSYDZ.js → chunk-XNC3M4IN.js} +1 -1
- package/dist/{chunk-C667GCU7.js → chunk-XXDB6KPV.js} +6 -3
- package/dist/{chunk-EAIOXW2W.js → chunk-XY4O2XMR.js} +8 -14
- package/dist/{chunk-KTIQSSME.js → chunk-XZY6S3UC.js} +6 -3
- package/dist/{chunk-7KHM2FZH.js → chunk-YGRTX67J.js} +1 -1
- package/dist/{chunk-RIAPCEB5.js → chunk-YM77TZ7Q.js} +5 -5
- package/dist/{chunk-OQG4P5KU.js → chunk-YOJAGKTS.js} +2 -2
- package/dist/chunk-YP2FS6SH.js +54 -0
- package/dist/{chunk-LMQG3VPG.js → chunk-YQ7Q52XU.js} +1 -1
- package/dist/{chunk-G4CGDUCP.js → chunk-YRNNUCQP.js} +1 -1
- package/dist/{chunk-NHLNHH4J.js → chunk-ZB3E2Z4Y.js} +1 -1
- package/dist/{chunk-IL3XLDW7.js → chunk-ZDWAIVWL.js} +1 -1
- package/dist/{chunk-2PIH6JHJ.js → chunk-ZXTDWTXS.js} +1 -1
- package/dist/generated/index.d.ts +15 -0
- package/dist/generated/index.js +181 -164
- package/dist/index.js +181 -164
- package/dist/styles.css +2566 -138
- package/dist/utils/focusModality.d.ts +14 -0
- package/dist/utils/heldHint.d.ts +6 -0
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +1 -1
- package/package.json +3 -3
- package/dist/ArtifactKinds-O3CALPVX.css +0 -16
- package/dist/{chunk-PLNJEDGI.js → chunk-I4IO56EY.js} +1 -1
- package/dist/{chunk-CDFQ7MQK.js → chunk-KLWWNV25.js} +0 -0
- package/dist/{chunk-624X3RVA.js → chunk-O55JQ7BE.js} +1 -1
package/README.md
CHANGED
|
@@ -42,18 +42,18 @@ import { Button } from '@crewlethq/ui/Button'; // 8 KB of CSS, not 182 KB
|
|
|
42
42
|
| ---- | ---------- |
|
|
43
43
|
| Actions | `Button` and `ButtonLink` (variants `primary`, `secondary`, `outline`, `ghost`, `accent`, `danger`; sizes `small`, `medium`, `large`; shapes `square`, `pill`), `IconButton`, `Menu`, `Link`, `Copyable`, `CopyButton`, `DownloadButton`, `Kbd` |
|
|
44
44
|
| Content and text | `Text` (the eight registers and `inherit`), `Prose`, `Statement`, `Document`, `DocumentTitle` and `DocumentTitleField`, the Markdown grammar (`parseMarkdown`, `parseMarkdownSpans`, `markdownInline`, `safeHref` and the line readers, with no React in it), `Highlight`, `InlineCode`, `List` and `ListItem`, `DescriptionList`, `Timeline`, `RelativeTime`, `Note`, `Divider` |
|
|
45
|
-
| Forms | `Input`, `Textarea`, `Label`, `FormField`, `FormRow`, `Checkbox`, `CheckboxGroup`, `ConfirmField`, `Select`, `Tag`, `TagsInput`, `DateTimePicker`, `TimeWindowPicker`, `TimeRangePicker`, `ImageUpload`, `CharacterPicker`, `HuePicker`, `AvatarPicker`, `FactList`, `ChoiceList`, `ChoiceCards`, `Composer`, `MarkdownEditor`, `RichEditor` (with `preloadRichEditor`, and the round trip `roundTripMarkdown` and `canonicalMarkdown` from `@crewlethq/ui/RichEditorMarkdown`) |
|
|
45
|
+
| Forms | `Input`, `Textarea`, `Label`, `FormField`, `FormRow`, `Checkbox`, `CheckboxGroup`, `ConfirmField`, `Select`, `Tag`, `TagsInput`, `DateTimePicker`, `TimeWindowPicker`, `TimeRangePicker`, `ImageUpload`, `CharacterPicker`, `HuePicker`, `AvatarPicker`, `FactList`, `ChoiceList`, `ChoiceCards`, `ChipField` (chosen items as chips inside the field), `PersonRow` (a person or an agent as one row of a list), `Composer`, `MarkdownEditor`, `RichEditor` (with `preloadRichEditor`, and the round trip `roundTripMarkdown` and `canonicalMarkdown` from `@crewlethq/ui/RichEditorMarkdown`) |
|
|
46
46
|
| Data display | `DataGrid` (with `useDataGridDriving`, `useAnyDataGridDriving` and `countDataGridRows`), `DataTable`, `CopyableCell`, `Table`, the read-only table cells (`TableKeyCell`, `TableNumberCell`, `TableDateCell`, `TableEntityCell`, `TableStatusCell`, `TableTagsCell`, `TableTextCell`), `StatCard`, `Meter`, `SegmentedMeter`, `Stepper`, `PricingCard`, `Avatar`, `AvatarStack`, `EntityChip`, `CodeBlock`, `QrCode`, `ObjectHeader`, `FactLine`, `SetByLine`, `Skeleton`, `Eyebrow`, `StatGroup`, `PinTile`, `IconTile`, `SettingsTable` (with `SettingsTable.Row`), `CatalogTile` |
|
|
47
47
|
| List screens | `DataView`, and its parts on their own: `DataViewToolbar`, `FilterAxisBar`, `FilterAxisChip`, `FilterPill`, plus the filter model (`filterDefsFromColumns`, `applyColumnFilters`, `filterPredicate`, `blankFilterValue`) |
|
|
48
48
|
| Feedback and overlays | `Callout`, `ConflictNote`, `EditingStatus`, `Toaster`, `Modal` (with `variant="sheet"`), `ConfirmModal`, `CommandPalette`, `Tooltip`, `Popover`, `Announcer` |
|
|
49
49
|
| Documents and review | `DiffView` and `DiffSummary` with the line diff they draw (`diffLines`, `diffStat`, `collapseDiff`, `firstChangedLines`, `splitLines`, `MAX_DIFF_LINES`, with no React in it), `DiffList`, `VersionCompare`, `CommentThread` |
|
|
50
|
-
| Conversations and the assistant | `ChatThread` (with `ChatThreadHandle`), `MessageBubble`, `RunChip`, `StepList` and `StepStateMark`, `ProposalCard`, `ChangeList` (with `shortenUnchanged`), `StatusCard`, `ReceiptStrip`, `RefusalStrip`, `ResultTableCard`, `OpenInAppCard`, `BriefCard`, `EntityList`, `RecordChip` and `RecordChipList` (a record named in a sentence, opening a peek, and the Also read line), `RefusalCard`, `SuggestionRow` and `SuggestionList`, `SendButton` |
|
|
50
|
+
| Conversations and the assistant | `ChatThread` (with `ChatThreadHandle`), `ChatMessage` and `ChatMessageFailure`, `MessageActions` (with `MessageAction`, `QuickReaction` and `ActionDivider`), `ReactionBar` and `AddReaction` (with `reactionWho`), `EmojiPicker` (with `EMOJI_GROUPS`, `emojiName` and `searchEmoji`), `ThreadSummary`, `ActivityLine`, `MentionChip`, `MessageBubble`, `RunChip`, `StepList` and `StepStateMark`, `ProposalCard`, `ChangeList` (with `shortenUnchanged`), `StatusCard`, `ReceiptStrip`, `RefusalStrip`, `ResultTableCard`, `OpenInAppCard`, `BriefCard` (with `points`, what was said, each citing its message), `EntityList`, `RecordChip` and `RecordChipList` (a record named in a sentence, opening a peek, and the Also read line), `RefusalCard`, `SuggestionRow` and `SuggestionList`, `SendButton`, a transcript's timeline (`ChatDay` with `ChatDayPill`, `ChatDivider`), `LinkCard` (a link unfurled under its message), `MentionMenu` (with `mentionQuery`), `ActionCard` and `ActionCardRow` |
|
|
51
51
|
| Charts | `Legend`, `BarList`, `StackedBar`, `StackedColumns`, `ActivityStrip`, `TimeSeries`, `Sparkline`, the reading layer they share (`ChartTooltip`, `useChartHover`), and the ramp (`DATA_COLORS`, `DATA_COLOR_OTHER`, `dataColor`) |
|
|
52
|
-
| Marks | `Count
|
|
52
|
+
| Marks | `Count` (with `tone="attention"`), `StatusDot`, `Spinner`, `EmptyValue`, `VisuallyHidden` |
|
|
53
53
|
| Hooks and seams | `useModalLayer`, `usePopupLayer`, `LayerHost`, `useListbox`, `useOptionKeys`, `useHighlightRest` and `HIGHLIGHT_REST_MS`, `useClipboard`, `useDownload`, `downloadText`, `downloadBlob`, `safeFilename`, `toCsv`, `elementToPng` and `ElementToPngError`, `useOutcome`, `useAnnouncer`, `useNow`, `formatRelative`, `HeadingLevelProvider`, `cx`, the node hues (`NODE_HUES`, `NODE_HUE_NAMES`, `isNodeHue`) |
|
|
54
54
|
| Layout | `Container`, `Section`, `Card`, `TileGrid`, `ListDetail`, `AsideLayout`, `Tabs`, `Accordion`, `Disclosure`, `Outline` (with `useActiveHeading` and `scrollToHeading`), `TreeGrid` |
|
|
55
55
|
| Arranging a page | `ArrangeBoard`, `ArrangeGrid`, `ArrangeFrame` (with `useGridResize`), `ArrangeGroup`, `ArrangeList`, and the reorder hooks under them (`useReorder`, `useReorderLists`, `moveKey`) |
|
|
56
|
-
| Application shell | `AppShell` with `AppShell.Rail`, the `aside` track and the `peek` slot (`useAppShellAside`, `useAppShellPeek`), `AppShell.ResizeHandle` (also `ResizeHandle`) and `useStoredWidth`, `SidePanel` and `SidePanelFrame`, `PeekRail` and `PeekHost` (with `PeekNeighbours`, `usePeekNeighbours`, `usePeekStep`, `peekClickHandler`, `peekRowActivation`), `SectionFrame` (with `SectionFrame.Nav` and `SectionFrame.Body`), `LockedLabel`, `AppShell.Topbar`, `AppShell.AccountRow` and `useAppShell`, `AuthLayout`, `SidebarNav` and `NavItem`, `DirectoryList`, `BrandLockup`, `SearchTrigger`, `PageHeader`, `Toolbar`, `Stack`, `Inline`, `Spacer`, `AutoGrid`, `ErrorBoundary`, `useShortcut`, `useFullscreen`, `useIdle`, `useMediaMatch` |
|
|
56
|
+
| Application shell | `AppShell` with `AppShell.Rail`, the compact rail (`rail="compact"`, the one fold control from `onRailChange`, and `useAppShell().rail` to pick the shape) and `fill="flush"`, the `aside` track and the `peek` slot (`useAppShellAside`, `useAppShellPeek`), `AppShell.ResizeHandle` (also `ResizeHandle`) and `useStoredWidth`, `SidePanel` and `SidePanelFrame`, `PeekRail` and `PeekHost` (with `PeekNeighbours`, `usePeekNeighbours`, `usePeekStep`, `peekClickHandler`, `peekRowActivation`), `SectionFrame` (with `SectionFrame.Nav` and `SectionFrame.Body`), `LockedLabel`, `AppShell.Topbar`, `AppShell.AccountRow` and `useAppShell`, `AuthLayout`, `SidebarNav` and `NavItem` (with `dense` lists, `unread` and `muted` rows and `collapsible` groups), `CompactNav` with `CompactNavItem`, `CompactNavGroup` and `CompactNavSeparator` (the rail folded to its marks, fed from the same places), `DirectoryList`, `BrandLockup`, `SearchTrigger`, `PageHeader`, `Toolbar`, `Stack`, `Inline`, `Spacer`, `AutoGrid`, `ErrorBoundary`, `useShortcut`, `useFullscreen`, `useIdle`, `useMediaMatch` |
|
|
57
57
|
| Preferences | `ThemeToggle`, `ThemeSwitcher`, `DensitySwitcher`, `ThemeGallery`, `ThemeSwatch`, `useThemePreference`, `useDensityPreference`, `useSystemTheme`, `resolveTheme`, `applyStoredPreferences`, and the framework-free `applyTheme`, `applyPalette`, `applyDensity` with `THEME_PREFERENCES`, `DENSITY_PREFERENCES` and their guards |
|
|
58
58
|
| Artifacts | `SandboxedFrame` (with `SandboxedFramePlaceholder` and `SandboxedFrameNotice`), `LinkInterstitial` and `openExternal`, `VersionTimeline`, `ShareDialog` with the role ladder (`ARTIFACT_ROLES`, `SHAREABLE_ROLES`, `roleAtLeast`), `PrincipalPicker`, `Principal` and `PrincipalAvatar`, `ArtifactCard`, `ArtifactKindGlyph` and `ArtifactPreviewGlyph` (the preview a card draws with no cover, for a cover with nothing to draw), `ArtifactBar` and `ArtifactVersionChip` (an open artifact's one slim bar), `ArtifactPanel` and `ArtifactWorkspace` (the panels it opens beside or over the artifact), `CanvasBoard` (a design's artboards and notes on a `Canvas`, with the visibility budget `liveBoards`), `CanvasToolbar` (a canvas's tool palette, with `toolForKey`), `LayersList` (the list of a canvas's items beside it, marked by the canvas's selection), `CanvasSchematic` (a design's cover, drawn from its boards' frames), `AccessDeniedCard`, `ArtifactIcon` (with `artifactIconGlyph` and `ARTIFACT_ICON_WORDS`), the native gallery covers (`DocCover`, `SheetCover`, `DashboardCover`), `MergeConflicts`, the dashboard pieces (`WidgetFrame`, `DatasetSource` and `DatasetSourceList`), and `FrameProtocol` (the wire between a host page and an embedded artifact, with no React in it), `ArtifactNameCell` and `ArtifactAccessLabel` (with `ArtifactAccessGlyph`) for a list of artifacts |
|
|
59
59
|
| Sheets | `SheetGrid`, the cells on their own (`CheckboxCell`, `TextCell`, `LongTextCell`, `NumberCell`, `SelectCell`, `MultiSelectCell`, `PersonCell`, `StatusCell`, `DateCell`, `UrlCell`, `RatingCell`, and `SheetCell` for any type), `ChangeMark`, and `SheetModel` (every rule a sheet is drawn from, with no React in it: values, parsing, the keyboard model, TSV, the pending edits of D23) |
|
|
@@ -205,6 +205,63 @@ places:
|
|
|
205
205
|
- A surface that pans or zooms dispatches `LAYER_REPOSITION_EVENT` on its host
|
|
206
206
|
when the content beneath it moves, and every panel anchored inside follows.
|
|
207
207
|
|
|
208
|
+
## Changes in 0.82.0
|
|
209
|
+
|
|
210
|
+
### A conversation's messages
|
|
211
|
+
|
|
212
|
+
**The conversation parts.** A transcript of people and agents is now drawn from the kit, every size read from one scale (`ChatMessage/ChatScale.css`, the `--crewlet-chat-*` properties on `:root`: the words and meta steps, the row inset, the face column, the day's pill and pin, the toolbar, the transcript's ground and the mention wash), which each part imports, so a part imported alone still gets it. A surface that wants a denser or roomier transcript sets them once.
|
|
213
|
+
|
|
214
|
+
- **`ChatMessage`**: a focusable article (out of the tab order, `data-message-id`) with the author's face in a gutter, the name at the medium weight, a label and the time on one head line, the words and a `footer` stack. A `continuation` draws no head and shows a face-wide time (`gutterTime`) in its gutter on hover. `highlight="mention"` is a light warning wash with a bar on the edge, kept under the pointer; `flash` is a wash of the accent that fades back to the row's own ground; `pending` is `sending` (faint words) or `failed`; `editing` puts the toolbar away; `active` holds the fill and the toolbar while one of its menus is open. The toolbar (`actions`) rests on the row's first line over the row above, and is drawn inside the row where the scroller's edge would cut it, measured when the pointer arrives or focus enters; `actionsPlacement="inside"` always draws it inside, for a row under a card's head. A tap on a touch screen shows it. ArrowUp and ArrowDown walk the rows of a log. A message the reader is taken to stops under the day's pinned pill (`scroll-margin-top`). `ChatMessageFailure` is the not-sent line with Retry and Discard.
|
|
215
|
+
- **`MessageActions`** is a `Toolbar` drawn as a soft tray: the transcript's ground, the hairline, a small shadow, the large corner and 30px tools. `MessageAction` is one tool whose hint is its name and which can be a `Menu`'s own trigger; `QuickReaction` is an emoji that reacts; `ActionDivider` a hairline between groups.
|
|
216
|
+
- **`ReactionBar`**: one toggle pill to an emoji, a soft fill with no edge at rest, the strong edge under the pointer, and the reader's own in the accent's soft fill and ring with a medium count. Its hint says who reacted with the reader first (`reactionWho`: "You, Product Manager and 1 other", or "You and 2 others" and "3 members" where no names are known). `disabledReason` holds the pills and adds the reason to their hint. `AddReaction` opens the picker from a pill that stays quiet in a row until the row is pointed at, and is always shown on a touch screen.
|
|
217
|
+
- **A reader who cannot react is held everywhere a reaction starts.** `QuickReaction`, `MessageAction` and `AddReaction` take `disabledReason`, as `ReactionBar` does: the control is marked unavailable (`aria-disabled`), does nothing when pressed, and adds the reason to its hint.
|
|
218
|
+
- **`EmojiPicker`**: a searchable grid in a popover. The field has focus on opening, Enter picks the first match, and the grid is one tab stop the arrows walk by its rows.
|
|
219
|
+
- **`ThreadSummary`**: the repliers' faces, the count at the medium weight in the accent's ink, how many are new and when the last reply came; under the pointer View thread takes the time's place.
|
|
220
|
+
- **`ActivityLine`**: who is typing, as a polite status, and the working agent as a `ThinkingIndicator` announcing its label once, in a line that keeps its height when empty.
|
|
221
|
+
- **`MentionChip`**: a name in the words, in the info tone's light blue for others and the warning tone for the reader (`self`) and the whole room (`everyone`); a button with `onPress`, text without.
|
|
222
|
+
|
|
223
|
+
**`ChatThread.reveal()` lands an item in the middle of the view**, with what came before and after it in sight, where it set the item's foot on the view's foot. It keeps the item's `scroll-margin-top` and `scroll-margin-bottom` clear, and places the item again in the view the Jump to latest row leaves once the move has brought that row in, so the row no longer covers the item's last lines. An item taller than the view still lands with its head at the top. **`jump={false}`** leaves the Jump to latest row out, for a log that offers its own way back, and **`ChatThreadHandle.scroller()`** hands a host the scrolling element.
|
|
224
|
+
|
|
225
|
+
**`ThinkingIndicator` is never wider than its column.** In a column that sizes its items by their content (a message's footer) a long status made it as wide as its words, and a phone's transcript scrolled sideways; the status now truncates.
|
|
226
|
+
|
|
227
|
+
### A conversation's timeline, previews and pickers
|
|
228
|
+
|
|
229
|
+
**`ChatDay` is new**: a day of a conversation under its date. The day's rule is a hairline across the list where the day starts, in the flow; its pill (24px, the transcript's ground, a hairline ring and a small shadow, the secondary ink at the medium weight) sits on the rule and stays pinned a little under the top of the list while any of the day is in view, until the next day pushes it out. The pin is `--crewlet-chat-day-pin`, so a host with a bar floating over the list (an unread banner) moves the pills down past it. `pill` takes the host's own control, such as a Jump to menu whose trigger is the new `ChatDayPill` (a button with a chevron while it opens a menu), and `unread` draws the New line on the day's own rule. A day is a group named by its date.
|
|
230
|
+
|
|
231
|
+
**`ChatDivider` is new**: the New line (`variant="unread"`), a hairline in the danger hue with its word at the end on the transcript's ground, which takes no height, so marking the reader's place moves no message; and a quiet labelled rule (`variant="date"`), as a thread pane sets its reply count. Both are separators named by their words, found again by `data-divider`.
|
|
232
|
+
|
|
233
|
+
**`LinkCard` is new**: what a link points at, unfurled under its message with no box: a 3px bar in the status tone's line colour, the source app's mark and name, the title (the primary ink at the regular weight, two lines at most, the accent ink and an underline under the pointer), a line of details, and the status (a dot in the tone's full colour) and owner (a small face and the name) as words. The preview is one link named by its title and described by the rest. Only an address `safeHref` allows is followed; anything else draws the preview as words. `external` opens a new tab with no referrer or opener and says so; an in-app route opens in place. Tones are `neutral`, `info`, `success`, `warning` and `danger`.
|
|
234
|
+
|
|
235
|
+
**`MentionMenu` is new**: the suggestions a composer opens on "@" or "#", a listbox the message box owns through `aria-activedescendant`, with the keyboard hints at its foot (hidden on a touch screen). Wire it to `useListbox` (`tabCommits: true`) and pass the hook's `listId`, `listRef`, `active` and `setActive`. `mentionQuery(text, caret)` finds the "@word" or "#word" at the caret, and opens nothing inside a word such as an address. Its rows are `PersonRow`s.
|
|
236
|
+
|
|
237
|
+
**`PersonRow` is new**: a person or an agent as one row of a list, the same in a picker's suggestions, a member list and the composer's @ list: the face, the name and an Agent label, what they are doing now or their title, trailing words, and for a row that toggles (`mark="toggle"`, `selected`) a pressed state and a plus that turns into a check. It is a button by default and an option of a listbox with `as="option"` (`selected` is `aria-selected`, `highlighted` the arrows' row). `density="compact"` is one line.
|
|
238
|
+
|
|
239
|
+
**`ChipField` is new**: the chosen items of a picker as chips inside the field, before a bare text box, for the people being added to a room and the address line of a new message (`variant="bare"`, with a `prefix` such as "To:"). Backspace in an empty box removes the last chip and says so, Enter with words typed is the host's first match (`onCommit`), focus stays in the box when a chip goes, and the host's own `onKeyDown` runs first, so the box can be a combobox over `useListbox`. It differs from `TagsInput`, a form value whose chips sit above its box.
|
|
240
|
+
|
|
241
|
+
**`ActionCard` and `ActionCardRow` are new**: a first step offered as a picture, a 148 by 172 card on an artifact kind's colour ground (`tone`: purple, blue, amber, green, teal, magenta, rose) with its title at the top and a drawing at its foot, and a row of them that scrolls sideways and snaps on a narrow width. The hover is quiet: the ground deepens a step and a small shadow lifts the card. Each kind now publishes its Ground steps on `.crewlet-kind--<kind>` (`--crewlet-kind-ground`, `-ground-strong`, `-ground-end`, `-glow`), from the new `--color-artifact-kind-<kind>-ground` tokens.
|
|
242
|
+
|
|
243
|
+
### Faces, hints, sheets and counts
|
|
244
|
+
|
|
245
|
+
**Every face is one rounded square, a person's and an agent's alike.** A person was a circle and an agent a squircle, so a row of people and agents changed shape from face to face. `Avatar` now draws every face as a square whose corner is two ninths of its side, held between the xs and lg radius steps (8px on a 36px face; `AVATAR_CORNER_RATIO` is 2/9 and `AVATAR_CORNER_RANGE` is `{ min: 4, max: 12 }`, and `avatarCorner(px)` answers both). The kind is said by the face's contents: the initials in the mono face for an agent and the sans face for a person, a character, a picture. A face's outline is the hairline step (`--color-edge-hairline`), whatever it holds, where the neutral badge drew the strong hairline and a hue's plate its own line. The status badge is under a third of the face (0.3 of it, never under 10px) and hangs a twentieth of it past the corner, the size and place of a presence dot. In an `AvatarStack` the ground's ring is the only edge a face draws. `PresenceStack`, `ImageUpload` and `Skeleton`'s face take the same corner. Props are unchanged.
|
|
246
|
+
|
|
247
|
+
**A `Tooltip` stays open for keyboard focus only, and a press closes it.** A mouse press focuses a button too, and so does a layer handing focus back as it closes, so a tip shown for a hover outlived the hover. Focus now holds the tip only when it is the focus `:focus-visible` matches (`isVisibleFocus`, exported beside `returnFocus`, which also refuses a focus handed back while the reader uses a pointer). A press closes the tip, and it opens again on the pointer's next arrival. A ref and any other attribute handed to a `Tooltip` are its trigger's: they are merged onto the child (handlers run after the child's own, `style` merged, descriptions joined), so a tooltip can stand where a `Popover` or a `Menu` expects its trigger. A suite that means keyboard focus focuses through `tabTo` in `apps/ui-tests/src/keyboard.ts`.
|
|
248
|
+
|
|
249
|
+
**`Modal` takes `side="start"`** for a sheet pinned to the inline start, a navigation panel such as a list of rooms: it slides in from that edge with its edge and its shadow (`--shadow-sheet-start`, the sheet's own shadow mirrored) on its inline end. `side` is read on the sheet variant only. A modal's head and foot no longer shrink under a long body.
|
|
250
|
+
|
|
251
|
+
**`Count` takes `tone="attention"`**: a count of what waits on the reader (a mention, a direct message, a new reply to them) as the accent pill at the badge's size (`--size-badge`, its figure at `--font-size-badge`), the same pill a navigation row's badge draws. A count is still never tinted by severity, and `quiet`, the default, is unchanged. The type is `CountTone`.
|
|
252
|
+
|
|
253
|
+
**`Tag` takes `appearance="quiet"`**: a small filled label with no boundary, 16px tall in the label register, for a seat's kind beside its name ("Agent"). It takes no size step.
|
|
254
|
+
|
|
255
|
+
**`SidePanel` takes `subtitle`**: what the panel is about, after the title on its baseline in the tertiary ink ("Thread" then the room it is in). It drops under the title when the two do not fit, and the head grows to hold it.
|
|
256
|
+
|
|
257
|
+
**`Composer` takes `tools` and `toolbar`**: the tools at the footer's start (attach, emoji, a mention), before the actions at its end, and a formatting row along the box's top, inside its edge, above the words it acts on. Either one alone draws its part. **`appearance="chat"`** is a conversation's message box on the transcript's scale: the transcript's ground with the row wash and a small shadow inside the strong edge, the words at the chat step, a footer with no rule of its own, an open tool drawn pressed, and the formatting row quiet until the box is in use. The type is `ComposerAppearance`.
|
|
258
|
+
|
|
259
|
+
**`BriefCard` takes `points`**: what was said, for a brief of a conversation (a room's catch up), a list under the needs named "What was said", each point a sentence and its citation, the host's own press that opens the message it came from (`source`, a `BriefCardAction`). At most five (`BRIEF_CARD_MAX_POINTS`), cut with a warning outside production as the needs are. The type is `BriefCardPoint`.
|
|
260
|
+
|
|
261
|
+
**`ChatThread` takes `rest="end"`**: a transcript shorter than its view rests on its foot, against the composer under it, rather than under its top. `start` is the default. The type is `ChatThreadRest`.
|
|
262
|
+
|
|
263
|
+
**`formatMarkdown` applies `strikethrough`, `quote` and `link`** (`MARKDOWN_TEXT_FORMATS`, type `MarkdownTextFormat`), for a composer's own formatting row. `MarkdownEditor`'s bar does not draw them. A strikethrough wraps in `~~`, a quote toggles `> ` on every line it touches and keeps their own markers, and a link makes the selection its label and selects the address to type over.
|
|
264
|
+
|
|
208
265
|
## Changes in 0.81.1
|
|
209
266
|
|
|
210
267
|
**A `DataTable` strip spans the whole row.** On an expandable table the accessory strip under a row spanned one column fewer than the row, so it stopped before the last column, while the opened panel spanned all of it. Unseen while that column was a sliver of spacer, it broke the strip, and the rule under its row, off two thirds across a table sized to its content.
|
package/dist/Accordion/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { Accordion, AccordionItem } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { Accordion, AccordionItem } from '../chunk-XNC3M4IN.js';
|
|
2
|
+
import '../chunk-ULYHDP7U.js';
|
|
3
|
+
import '../chunk-D2GT3CR4.js';
|
|
4
4
|
import '../chunk-PQADV6P6.js';
|
|
5
5
|
import '../chunk-UT6CW3C7.js';
|
|
6
6
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { ButtonHTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import type { ArtifactKind } from '../ArtifactKindGlyph/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* The colour ground a card is drawn on, named by its hue. Each is an artifact
|
|
5
|
+
* kind's measured colour (purple is design's, blue doc's, amber slides',
|
|
6
|
+
* green sheet's, teal dashboard's, magenta the brand kit's, rose HTML's), so
|
|
7
|
+
* every palette and both modes are already fitted for it.
|
|
8
|
+
*/
|
|
9
|
+
export type ActionCardTone = 'purple' | 'blue' | 'amber' | 'green' | 'teal' | 'magenta' | 'rose';
|
|
10
|
+
/** Which kind's colours each tone reads. */
|
|
11
|
+
export declare const ACTION_CARD_GROUND: Readonly<Record<ActionCardTone, ArtifactKind>>;
|
|
12
|
+
export interface ActionCardProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'title' | 'onSelect'> {
|
|
13
|
+
/** What the card does, as its name: "Add people and agents". */
|
|
14
|
+
title: string;
|
|
15
|
+
tone: ActionCardTone;
|
|
16
|
+
/** The drawing at the card's foot. Decorative: the title says what it does. */
|
|
17
|
+
art: ReactNode;
|
|
18
|
+
/** Pressing the card. */
|
|
19
|
+
onSelect: () => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A first step offered as a picture: a tall card on one of the kit's colour
|
|
23
|
+
* grounds, its title at the top and a drawing at its foot. A new room opens
|
|
24
|
+
* with a row of these (add people, add a description, start from a
|
|
25
|
+
* template) until its first message.
|
|
26
|
+
*
|
|
27
|
+
* A QUIET HOVER. The ground deepens a step and a small shadow lifts the card
|
|
28
|
+
* off the page; nothing moves, so a row of cards holds still under a pointer
|
|
29
|
+
* passing over it.
|
|
30
|
+
*
|
|
31
|
+
* A BUTTON NAMED BY ITS TITLE. The drawing is hidden from assistive
|
|
32
|
+
* technology, so a reader hears "Add people and agents, button" and nothing
|
|
33
|
+
* about a picture.
|
|
34
|
+
*/
|
|
35
|
+
export declare function ActionCard({ title, tone, art, onSelect, onClick, className, type, ...rest }: ActionCardProps): import("react").JSX.Element;
|
|
36
|
+
export interface ActionCardRowProps {
|
|
37
|
+
/** Names the row for a screen reader: "First steps for this room". */
|
|
38
|
+
label: string;
|
|
39
|
+
/** The cards, in the order they are offered. */
|
|
40
|
+
children: ReactNode;
|
|
41
|
+
className?: string | undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Action cards side by side, in one row that scrolls sideways when it runs
|
|
45
|
+
* out of width: a phone shows two cards and part of the third (the part says
|
|
46
|
+
* there is more) rather than a tall stack, and each card snaps to the row's
|
|
47
|
+
* start.
|
|
48
|
+
*/
|
|
49
|
+
export declare function ActionCardRow({ label, children, className }: ActionCardRowProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ActionCard: a first step offered as a picture, on an artifact kind's
|
|
3
|
+
* colour ground. The ground is the kind's own Ground steps (ArtifactKinds.css)
|
|
4
|
+
* laid over the card rung, which the palette suite holds to 4.5:1 for the
|
|
5
|
+
* primary text in every palette and both modes, with the kind's glow behind
|
|
6
|
+
* the drawing.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/*
|
|
10
|
+
* ONE ROW THAT SCROLLS SIDEWAYS when it runs out of width, so a phone shows
|
|
11
|
+
* two cards and part of the third (the part says there is more) instead of a
|
|
12
|
+
* tall stack. The block padding keeps the focus ring and the hover shadow
|
|
13
|
+
* inside the scroller's clip; the negative margin gives that space back to
|
|
14
|
+
* the layout. A host that runs the row to its container's edges sets the
|
|
15
|
+
* inline padding and `scroll-padding-inline` to its own inset.
|
|
16
|
+
*/
|
|
17
|
+
.crewlet-action-cards {
|
|
18
|
+
display: flex;
|
|
19
|
+
gap: var(--spacing-2);
|
|
20
|
+
overflow-x: auto;
|
|
21
|
+
margin-block: calc(var(--spacing-1) * -1) calc(var(--spacing-2) * -1);
|
|
22
|
+
padding-block: var(--spacing-1) var(--spacing-2);
|
|
23
|
+
scroll-snap-type: x mandatory;
|
|
24
|
+
overscroll-behavior-x: contain;
|
|
25
|
+
scrollbar-width: none;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.crewlet-action-cards::-webkit-scrollbar {
|
|
29
|
+
display: none;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.crewlet-action-card {
|
|
33
|
+
--crewlet-action-card-ground: var(--crewlet-kind-ground);
|
|
34
|
+
position: relative;
|
|
35
|
+
display: flex;
|
|
36
|
+
flex: none;
|
|
37
|
+
flex-direction: column;
|
|
38
|
+
justify-content: space-between;
|
|
39
|
+
width: 148px;
|
|
40
|
+
height: 172px;
|
|
41
|
+
box-sizing: border-box;
|
|
42
|
+
overflow: hidden;
|
|
43
|
+
padding: var(--spacing-3) var(--spacing-3) 0;
|
|
44
|
+
/* The kind's hue itself is the edge: 3:1 or more on the sheet in every
|
|
45
|
+
palette and mode, where the kind's Line step measured 2.5:1. */
|
|
46
|
+
border: 1px solid var(--crewlet-kind-hue);
|
|
47
|
+
border-radius: var(--radius-lg);
|
|
48
|
+
background-color: var(--color-surface-subtle);
|
|
49
|
+
background-image:
|
|
50
|
+
radial-gradient(110% 64% at 50% 100%, var(--crewlet-kind-glow) 0%, transparent 72%),
|
|
51
|
+
linear-gradient(180deg, var(--crewlet-action-card-ground) 0%, var(--crewlet-kind-ground-end) 100%);
|
|
52
|
+
color: var(--color-text-primary);
|
|
53
|
+
font: inherit;
|
|
54
|
+
text-align: left;
|
|
55
|
+
cursor: pointer;
|
|
56
|
+
scroll-snap-align: start;
|
|
57
|
+
transition: box-shadow var(--motion-duration-fast) var(--motion-easing-default);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* A QUIET HOVER: the ground deepens a step and a small shadow lifts the
|
|
61
|
+
card off the page. Nothing moves. */
|
|
62
|
+
.crewlet-action-card:hover {
|
|
63
|
+
--crewlet-action-card-ground: var(--crewlet-kind-ground-strong);
|
|
64
|
+
box-shadow: var(--shadow-sm);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* The card draws its own edge, so the ring is drawn over it. */
|
|
68
|
+
.crewlet-action-card:focus-visible {
|
|
69
|
+
outline: 2px solid var(--color-focus);
|
|
70
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* The title at the medium weight, as every emphasis in a conversation is,
|
|
74
|
+
two lines at most at its width, balanced so neither line is one word. */
|
|
75
|
+
.crewlet-action-card__title {
|
|
76
|
+
max-width: 14ch;
|
|
77
|
+
font-size: var(--font-size-sm);
|
|
78
|
+
font-weight: var(--font-weight-medium);
|
|
79
|
+
line-height: var(--font-line-height-snug);
|
|
80
|
+
text-wrap: balance;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* The drawing stands on the card's foot, still. */
|
|
84
|
+
.crewlet-action-card__art {
|
|
85
|
+
display: flex;
|
|
86
|
+
align-items: flex-end;
|
|
87
|
+
justify-content: center;
|
|
88
|
+
height: 100px;
|
|
89
|
+
margin: 0 calc(var(--spacing-3) * -1);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.crewlet-action-card__art .crewlet-kind-illustration {
|
|
93
|
+
width: 112px;
|
|
94
|
+
max-height: 96px;
|
|
95
|
+
margin-bottom: calc(var(--spacing-2) * -1);
|
|
96
|
+
filter: drop-shadow(0 6px 12px var(--crewlet-kind-line));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* FORCED COLORS drops the ground; the hue's border stays as the card's edge. */
|
|
100
|
+
@media (forced-colors: active) {
|
|
101
|
+
.crewlet-action-card {
|
|
102
|
+
border-color: CanvasText;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
@media (prefers-reduced-motion: reduce) {
|
|
107
|
+
.crewlet-action-card {
|
|
108
|
+
transition: none;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
export interface ActivityLineProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
3
|
+
/** Who is typing, in words: "Product Manager is typing". Empty or left out, nothing is drawn for it. */
|
|
4
|
+
typing?: string | undefined;
|
|
5
|
+
/**
|
|
6
|
+
* The agent at work, in words, beside the Ask Crewlet mark under its
|
|
7
|
+
* shimmer: "Senior Backend Engineer is writing a reply · Reading the diff".
|
|
8
|
+
* It may change with every step.
|
|
9
|
+
*/
|
|
10
|
+
working?: string | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* What a screen reader is told once when the agent starts, which never
|
|
13
|
+
* changes with its steps: "Senior Backend Engineer is writing a reply".
|
|
14
|
+
* `working` by default.
|
|
15
|
+
*/
|
|
16
|
+
workingLabel?: string | undefined;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Who is typing and which agent is working, in one quiet line under a
|
|
20
|
+
* composer. It keeps one line's height when it is empty, so the box above it
|
|
21
|
+
* never moves as people start and stop.
|
|
22
|
+
*
|
|
23
|
+
* TYPING is announced politely as it changes. WORKING is a
|
|
24
|
+
* `ThinkingIndicator`, which announces its label once and keeps its changing
|
|
25
|
+
* steps to the eye.
|
|
26
|
+
*/
|
|
27
|
+
export declare function ActivityLine({ typing, working, workingLabel, className, ...rest }: ActivityLineProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Who is typing and which agent is working, under a composer, in the meta
|
|
3
|
+
* step and the tertiary ink.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
.crewlet-activity-line {
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-wrap: wrap;
|
|
9
|
+
align-items: center;
|
|
10
|
+
gap: var(--spacing-1) var(--spacing-4);
|
|
11
|
+
min-height: 20px;
|
|
12
|
+
min-width: 0;
|
|
13
|
+
color: var(--color-text-tertiary);
|
|
14
|
+
font-size: var(--crewlet-chat-meta);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* No piece is wider than the line: a long working status truncates. */
|
|
18
|
+
.crewlet-activity-line > * {
|
|
19
|
+
max-width: 100%;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* The working line in the line's own step, over the indicator's. */
|
|
23
|
+
.crewlet-activity-line .crewlet-activity-line__working {
|
|
24
|
+
font-size: var(--crewlet-chat-meta);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.crewlet-activity-line__typing {
|
|
28
|
+
display: inline-flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
gap: var(--spacing-2);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.crewlet-activity-line__dots {
|
|
34
|
+
display: inline-flex;
|
|
35
|
+
gap: 2px;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.crewlet-activity-line__dots > i {
|
|
39
|
+
width: 4px;
|
|
40
|
+
height: 4px;
|
|
41
|
+
border-radius: var(--radius-circle);
|
|
42
|
+
background: currentColor;
|
|
43
|
+
animation: crewlet-activity-line-typing calc(var(--motion-duration-slow) * 4) var(--motion-easing-in-out) infinite;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.crewlet-activity-line__dots > i:nth-child(2) {
|
|
47
|
+
animation-delay: var(--motion-duration-base);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.crewlet-activity-line__dots > i:nth-child(3) {
|
|
51
|
+
animation-delay: var(--motion-duration-slow);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@keyframes crewlet-activity-line-typing {
|
|
55
|
+
0%,
|
|
56
|
+
60%,
|
|
57
|
+
100% {
|
|
58
|
+
opacity: 0.3;
|
|
59
|
+
transform: none;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
30% {
|
|
63
|
+
opacity: 1;
|
|
64
|
+
transform: translateY(-2px);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* Under reduced motion the dots hold still at full strength: the words say
|
|
69
|
+
who is typing. */
|
|
70
|
+
@media (prefers-reduced-motion: reduce) {
|
|
71
|
+
.crewlet-activity-line__dots > i {
|
|
72
|
+
animation: none;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
export { AGENT_HANDOFF_LABELS, AgentHandoffPanel } from '../chunk-
|
|
1
|
+
export { AGENT_HANDOFF_LABELS, AgentHandoffPanel } from '../chunk-DD7RBNT4.js';
|
|
2
2
|
import '../chunk-4MJN2KN6.js';
|
|
3
3
|
import '../chunk-WFCWPXJN.js';
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-ANTAQAR4.js';
|
|
9
|
-
import '../chunk-FB3TCNQP.js';
|
|
10
|
-
import '../chunk-PGCLHYVP.js';
|
|
11
|
-
import '../chunk-IVTQWOXV.js';
|
|
12
|
-
import '../chunk-MLDTLZAO.js';
|
|
13
|
-
import '../chunk-PQADV6P6.js';
|
|
14
|
-
import '../chunk-2G355KDJ.js';
|
|
4
|
+
import '../chunk-EBVZHVPD.js';
|
|
5
|
+
import '../chunk-LVJGN5II.js';
|
|
6
|
+
import '../chunk-5ILRWUE7.js';
|
|
7
|
+
import '../chunk-SKGOKLJD.js';
|
|
15
8
|
import '../chunk-PIYJNCN7.js';
|
|
9
|
+
import '../chunk-O7N6W52M.js';
|
|
10
|
+
import '../chunk-PGCLHYVP.js';
|
|
11
|
+
import '../chunk-CMAZZY2I.js';
|
|
16
12
|
import '../chunk-DGXZ635L.js';
|
|
13
|
+
import '../chunk-XSPCITPN.js';
|
|
17
14
|
import '../chunk-OMV5W53A.js';
|
|
18
15
|
import '../chunk-2YTOOH3A.js';
|
|
19
|
-
import '../chunk-
|
|
20
|
-
import '../chunk-
|
|
16
|
+
import '../chunk-TUEM2XIW.js';
|
|
17
|
+
import '../chunk-4ITETIGZ.js';
|
|
21
18
|
import '../chunk-UAUP6XGK.js';
|
|
22
|
-
import '../chunk-
|
|
19
|
+
import '../chunk-ULYHDP7U.js';
|
|
20
|
+
import '../chunk-D2GT3CR4.js';
|
|
21
|
+
import '../chunk-PQADV6P6.js';
|
|
22
|
+
import '../chunk-2G355KDJ.js';
|
|
23
23
|
import '../chunk-UT6CW3C7.js';
|
|
24
24
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -38,6 +38,14 @@ export interface AccountRowProps {
|
|
|
38
38
|
linkSuffix?: string | undefined;
|
|
39
39
|
/** Controls at the row's end: a theme toggle, the trigger of a preferences panel. */
|
|
40
40
|
actions?: ReactNode;
|
|
41
|
+
/**
|
|
42
|
+
* The reader's face alone, for the compact rail's foot: the badge is the
|
|
43
|
+
* link (or the menu's button), the name and the detail are its accessible
|
|
44
|
+
* name and its tooltip, and `actions` are not drawn (the compact rail draws
|
|
45
|
+
* its places, Settings among them, as tiles above it). Defaults to the
|
|
46
|
+
* shape of the rail the row stands in.
|
|
47
|
+
*/
|
|
48
|
+
compact?: boolean | undefined;
|
|
41
49
|
className?: string | undefined;
|
|
42
50
|
}
|
|
43
51
|
/**
|
|
@@ -61,5 +69,10 @@ export interface AccountRowProps {
|
|
|
61
69
|
* button, ending in the up-and-down chevron a menu's trigger draws, and the
|
|
62
70
|
* account is one item of it. The menu says only what the row does not, in its
|
|
63
71
|
* header (their access), above the actions.
|
|
72
|
+
*
|
|
73
|
+
* IN THE COMPACT RAIL THE ROW IS THE READER'S FACE (`compact`): the same link
|
|
74
|
+
* or menu button, holding the badge alone, named by the name and the detail
|
|
75
|
+
* as the full row is, and showing them in a tooltip, since a face says who
|
|
76
|
+
* it is only to somebody who already knows.
|
|
64
77
|
*/
|
|
65
|
-
export declare function AccountRow({ avatar, name, detail, href, menu, current, title, linkSuffix, actions, className, }: AccountRowProps): import("react").JSX.Element;
|
|
78
|
+
export declare function AccountRow({ avatar, name, detail, href, menu, current, title, linkSuffix, actions, compact: compactProp, className, }: AccountRowProps): import("react").JSX.Element;
|
|
@@ -59,8 +59,10 @@
|
|
|
59
59
|
import { type AriaAttributes, type HTMLAttributes, type MouseEventHandler, type ReactNode, type Ref } from 'react';
|
|
60
60
|
import type { Tone } from '../utils/tone.js';
|
|
61
61
|
import { type AppShellAsideShape, type AppShellPeekShape } from './regions.js';
|
|
62
|
+
import { type AppShellRailShape } from './railShape.js';
|
|
62
63
|
export { useAppShellAside, useAppShellPeek } from './regions.js';
|
|
63
64
|
export type { AppShellAsideShape, AppShellPeekShape, AppShellRegionValue } from './regions.js';
|
|
65
|
+
export type { AppShellRailShape } from './railShape.js';
|
|
64
66
|
/** The aside's resting width, in px, where the host names none. */
|
|
65
67
|
export declare const APP_SHELL_ASIDE_WIDTH = 420;
|
|
66
68
|
/** How the reader resizes the aside while it is a column. */
|
|
@@ -75,7 +77,7 @@ export interface AppShellAsideResize {
|
|
|
75
77
|
onChange: (width: number) => void;
|
|
76
78
|
/** Where a gesture ends: the moment to keep the width. */
|
|
77
79
|
onCommit?: ((width: number) => void) | undefined;
|
|
78
|
-
/** Names the grip: "Resize the
|
|
80
|
+
/** Names the grip: "Resize the Ask Crewlet panel". */
|
|
79
81
|
label: string;
|
|
80
82
|
}
|
|
81
83
|
/** What the shell tells the components inside it. */
|
|
@@ -91,6 +93,12 @@ interface AppShellContextValue {
|
|
|
91
93
|
railId: string;
|
|
92
94
|
toggleLabel: string;
|
|
93
95
|
hasRail: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* The shape the rail is drawn in NOW: `compact` only where the host asked
|
|
98
|
+
* for it and the layout is wide, `full` in the drawer and everywhere else,
|
|
99
|
+
* so an application picks `CompactNav` or `SidebarNav` from this alone.
|
|
100
|
+
*/
|
|
101
|
+
rail: AppShellRailShape;
|
|
94
102
|
}
|
|
95
103
|
export type { AppShellContextValue };
|
|
96
104
|
/**
|
|
@@ -124,8 +132,14 @@ export interface AppShellProps extends Omit<HTMLAttributes<HTMLDivElement>, 'tit
|
|
|
124
132
|
* Gives the screen the whole height left under the bar, as a flex column,
|
|
125
133
|
* for a canvas or a split view that draws to the bottom of the window
|
|
126
134
|
* instead of scrolling.
|
|
135
|
+
*
|
|
136
|
+
* `flush` is the same column EDGE TO EDGE: the content column gives up its
|
|
137
|
+
* pad, its measure and its gap, and the scroller reserves no gutter, for a
|
|
138
|
+
* screen that draws its own frame to the sheet's edges (a conversation with
|
|
139
|
+
* a list and a pane either side of it). The column is positioned, so a
|
|
140
|
+
* `LayerHost` the screen keeps inside it fills exactly the screen.
|
|
127
141
|
*/
|
|
128
|
-
fill?: boolean | undefined;
|
|
142
|
+
fill?: boolean | 'flush' | undefined;
|
|
129
143
|
/**
|
|
130
144
|
* Any value that changes when the reader goes somewhere. The drawer closes
|
|
131
145
|
* when it does: a drawer left open over the screen you have just navigated
|
|
@@ -136,6 +150,31 @@ export interface AppShellProps extends Omit<HTMLAttributes<HTMLDivElement>, 'tit
|
|
|
136
150
|
toggleLabel?: string | undefined;
|
|
137
151
|
/** The link that precedes everything, for a keyboard reader. */
|
|
138
152
|
skipLabel?: string | undefined;
|
|
153
|
+
/**
|
|
154
|
+
* The rail's shape the reader chose: the full navigation, or the compact
|
|
155
|
+
* column of glyphs. A desktop choice: under the shell step the rail is a
|
|
156
|
+
* drawer drawn full whatever this says, and `useAppShell().rail` reports
|
|
157
|
+
* the shape actually drawn.
|
|
158
|
+
*/
|
|
159
|
+
rail?: AppShellRailShape | undefined;
|
|
160
|
+
/**
|
|
161
|
+
* Called with the other shape when the reader presses the fold control.
|
|
162
|
+
* Given, the shell draws THE fold control (never in the drawer); keeping the
|
|
163
|
+
* choice, and binding a key to it, are the application's.
|
|
164
|
+
*/
|
|
165
|
+
onRailChange?: ((next: AppShellRailShape) => void) | undefined;
|
|
166
|
+
/**
|
|
167
|
+
* The keys the application binds to the fold (`['Mod', '\\']`), drawn in
|
|
168
|
+
* the control's tooltip and set as its `aria-keyshortcuts`. The shell binds
|
|
169
|
+
* nothing: the same press may mean something else where the rail is a
|
|
170
|
+
* drawer, and only the application knows.
|
|
171
|
+
*/
|
|
172
|
+
railFoldKeys?: readonly string[] | undefined;
|
|
173
|
+
/** The fold control's two names. Defaults to "Collapse the sidebar" and "Expand the sidebar". */
|
|
174
|
+
railFoldLabels?: {
|
|
175
|
+
collapse: string;
|
|
176
|
+
expand: string;
|
|
177
|
+
} | undefined;
|
|
139
178
|
/**
|
|
140
179
|
* A panel the frame keeps beside every screen: the assistant. Nothing (or
|
|
141
180
|
* null) means no aside and no track. Normally a `SidePanel`, which leaves
|
|
@@ -181,7 +220,7 @@ export interface AppShellProps extends Omit<HTMLAttributes<HTMLDivElement>, 'tit
|
|
|
181
220
|
peekShape?: AppShellPeekShape | undefined;
|
|
182
221
|
children?: ReactNode;
|
|
183
222
|
}
|
|
184
|
-
export declare function AppShell({ sidebar, topbar, banner, footer, mainId, mainRef, fill, navigationKey, toggleLabel, skipLabel, aside, asideWidth, asideReserve, asideLabel, asideShape, asideModal, onAsideClose, asideResize, peek, peekShape, className, style, children, ...rest }: AppShellProps): import("react").JSX.Element;
|
|
223
|
+
export declare function AppShell({ sidebar, topbar, banner, footer, mainId, mainRef, fill, navigationKey, toggleLabel, skipLabel, rail: railChoice, onRailChange, railFoldKeys, railFoldLabels, aside, asideWidth, asideReserve, asideLabel, asideShape, asideModal, onAsideClose, asideResize, peek, peekShape, className, style, children, ...rest }: AppShellProps): import("react").JSX.Element;
|
|
185
224
|
export declare namespace AppShell {
|
|
186
225
|
var Rail: typeof AppShellRail;
|
|
187
226
|
var RailRow: import("react").ForwardRefExoticComponent<AppShellRailRowProps & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -222,7 +261,17 @@ export interface AppShellRailProps {
|
|
|
222
261
|
className?: string | undefined;
|
|
223
262
|
children?: ReactNode;
|
|
224
263
|
}
|
|
225
|
-
/**
|
|
264
|
+
/**
|
|
265
|
+
* The rail's three regions: a head, a scrolling middle, and a foot.
|
|
266
|
+
*
|
|
267
|
+
* ONE RAIL IN BOTH SHAPES, its slots kept. Compact, the head holds the brand
|
|
268
|
+
* alone (the lockup shows its mark, over the column's centre, and keeps its
|
|
269
|
+
* name as the link's name and title); the field is not drawn, because a
|
|
270
|
+
* 76px column has no room for one and the application draws a Search tile
|
|
271
|
+
* among its `CompactNav` places instead; and the status stands at the top of
|
|
272
|
+
* the foot as its dot and count, since the head has no line left beside the
|
|
273
|
+
* mark. The middle and the foot are drawn as the application gives them.
|
|
274
|
+
*/
|
|
226
275
|
export declare function AppShellRail({ header, search, status, footer, className, children }: AppShellRailProps): import("react").JSX.Element;
|
|
227
276
|
/**
|
|
228
277
|
* A figure at the end of a row in the foot, and what it counts.
|
|
@@ -50,7 +50,7 @@ export interface ResizeHandleProps {
|
|
|
50
50
|
onValueCommit?: ((value: number) => void) | undefined;
|
|
51
51
|
/** The resting size Enter and a double press return to. Without one neither does anything. */
|
|
52
52
|
defaultValue?: number | undefined;
|
|
53
|
-
/** Names the separator: "Resize the
|
|
53
|
+
/** Names the separator: "Resize the Ask Crewlet panel". */
|
|
54
54
|
label: string;
|
|
55
55
|
/**
|
|
56
56
|
* Which edge of the sized panel the handle stands on. On the `left` edge
|
package/dist/AppShell/index.d.ts
CHANGED
|
@@ -9,4 +9,4 @@ export { useScreenBelow, useScreenWidth } from './screenWidth.js';
|
|
|
9
9
|
export type { StoredWidth, StoredWidthOptions, WidthStorage } from './storedWidth.js';
|
|
10
10
|
export { AccountRow } from './AccountRow.js';
|
|
11
11
|
export type { AccountRowMenu, AccountRowProps } from './AccountRow.js';
|
|
12
|
-
export type { ActionRailRowProps, ActionRailStatusProps, AppShellAsideResize, AppShellAsideShape, AppShellContextValue, AppShellPeekShape, AppShellProps, AppShellRailProps, AppShellRailRowProps, AppShellRailStatusProps, AppShellRegionValue, AppShellToggleProps, AppShellTopbarProps, RailRowCount, StaticRailRowProps, StaticRailStatusProps, } from './AppShell.js';
|
|
12
|
+
export type { ActionRailRowProps, ActionRailStatusProps, AppShellAsideResize, AppShellAsideShape, AppShellContextValue, AppShellPeekShape, AppShellProps, AppShellRailShape, AppShellRailProps, AppShellRailRowProps, AppShellRailStatusProps, AppShellRegionValue, AppShellToggleProps, AppShellTopbarProps, RailRowCount, StaticRailRowProps, StaticRailStatusProps, } from './AppShell.js';
|
package/dist/AppShell/index.js
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
export { APP_SHELL_ASIDE_WIDTH, AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, readStoredWidth, useAppShell, useScreenBelow, useScreenWidth, useStoredWidth } from '../chunk-
|
|
1
|
+
export { APP_SHELL_ASIDE_WIDTH, AccountRow, AppShell, AppShellRail, AppShellRailRow, AppShellRailStatus, AppShellToggle, AppShellTopbar, readStoredWidth, useAppShell, useScreenBelow, useScreenWidth, useStoredWidth } from '../chunk-T4IEESXN.js';
|
|
2
2
|
import '../chunk-RTPQDNW3.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-ISQANI6Q.js';
|
|
4
|
+
import '../chunk-3QQIGMY3.js';
|
|
5
|
+
import '../chunk-YOJAGKTS.js';
|
|
4
6
|
export { RESIZE_HANDLE_LARGE_STEP, RESIZE_HANDLE_STEP, ResizeHandle, clampSize, useAppShellAside, useAppShellPeek } from '../chunk-PIYJNCN7.js';
|
|
7
|
+
import '../chunk-CMAZZY2I.js';
|
|
5
8
|
import '../chunk-DGXZ635L.js';
|
|
9
|
+
import '../chunk-XSPCITPN.js';
|
|
6
10
|
import '../chunk-OMV5W53A.js';
|
|
7
11
|
import '../chunk-2YTOOH3A.js';
|
|
8
|
-
import '../chunk-
|
|
9
|
-
import '../chunk-
|
|
12
|
+
import '../chunk-TUEM2XIW.js';
|
|
13
|
+
import '../chunk-4ITETIGZ.js';
|
|
10
14
|
import '../chunk-UAUP6XGK.js';
|
|
11
|
-
import '../chunk-NUZHC6MM.js';
|
|
12
15
|
import '../chunk-UT6CW3C7.js';
|
|
13
16
|
import '../chunk-ODEQTPFM.js';
|