@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
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The rail folded to its marks: each destination is its glyph over its name,
|
|
3
|
+
* in one column, and a whole group can fold into one tile whose flyout lists
|
|
4
|
+
* its places beside the rail.
|
|
5
|
+
*
|
|
6
|
+
* IT IS THE SAME LIST AS `SidebarNav`, DRAWN NARROW. Every prop a place takes
|
|
7
|
+
* here has the type `SidebarNav.Item` gives it (`NavFigure` for a badge and a
|
|
8
|
+
* count, `NavLinkProps` for a router's link, a reason string for a lock), so
|
|
9
|
+
* an application keeps ONE list of its places and hands each to whichever of
|
|
10
|
+
* the two the shell is drawing (`useAppShell().rail`). Two lists would be two
|
|
11
|
+
* answers to "where can I go from here", and the first place added to one of
|
|
12
|
+
* them is the place the other forgets.
|
|
13
|
+
*
|
|
14
|
+
* THE HIGHLIGHT IS ON THE GLYPH'S TILE, not the whole entry: the name under it
|
|
15
|
+
* stays quiet, and the current place reads at a glance down a column of
|
|
16
|
+
* shapes. It is the full rail's own selected row (raised, a hairline, no hue),
|
|
17
|
+
* drawn on the tile and from `aria-current`, so the two shapes say "you are
|
|
18
|
+
* here" the same way.
|
|
19
|
+
*
|
|
20
|
+
* A FIGURE RIDES THE TILE'S CORNER, and is READ as part of the name ("Inbox,
|
|
21
|
+
* 5 unread"), exactly as a full row's figure is, so nothing a reader needs is
|
|
22
|
+
* hidden by the fold: a folded group's tile carries its places' badges added
|
|
23
|
+
* up, and says each of them.
|
|
24
|
+
*/
|
|
25
|
+
import { type MouseEventHandler, type ReactNode } from 'react';
|
|
26
|
+
import { type PlacementRect } from '../Layer/index.js';
|
|
27
|
+
import type { NavFigure, NavLinkProps } from '../SidebarNav/index.js';
|
|
28
|
+
export interface CompactNavProps {
|
|
29
|
+
/** Names the navigation region, as `SidebarNav`'s label does. */
|
|
30
|
+
label: string;
|
|
31
|
+
className?: string | undefined;
|
|
32
|
+
children?: ReactNode;
|
|
33
|
+
}
|
|
34
|
+
/** The column of tiles: a navigation landmark holding one list. */
|
|
35
|
+
export declare function CompactNav({ label, className, children }: CompactNavProps): import("react").JSX.Element;
|
|
36
|
+
/** What a place in the compact rail takes, whether it is a tile or a link in a flyout. */
|
|
37
|
+
interface CompactPlace {
|
|
38
|
+
/** The place's name. Drawn under the glyph on a tile, beside it in a flyout. */
|
|
39
|
+
label: string;
|
|
40
|
+
/** The place's glyph (a nav glyph, `size="sm"`). Decoration: the label is the name. */
|
|
41
|
+
icon: ReactNode;
|
|
42
|
+
/** Where it goes. Without it (and without `renderLink`) the tile is a button. */
|
|
43
|
+
href?: string | undefined;
|
|
44
|
+
/** Whether this is the screen the reader is on. */
|
|
45
|
+
current?: boolean | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* How many things here are waiting on the reader: the accent figure on the
|
|
48
|
+
* tile's corner, as `SidebarNav.Item`'s badge.
|
|
49
|
+
*/
|
|
50
|
+
badge?: NavFigure | undefined;
|
|
51
|
+
/** How many of something the place holds: the quiet figure, as `SidebarNav.Item`'s count. */
|
|
52
|
+
count?: NavFigure | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Closed to this reader, and why ("Needs Admin access"). The place stays a
|
|
55
|
+
* link, its name carries the key, and the reason is its title and is read
|
|
56
|
+
* after its name, as `SidebarNav.Item`'s `locked`.
|
|
57
|
+
*/
|
|
58
|
+
locked?: string | undefined;
|
|
59
|
+
/** Called when the pointer reaches the place and when it takes focus, as `SidebarNav.Item`'s. */
|
|
60
|
+
onPrefetch?: (() => void) | undefined;
|
|
61
|
+
}
|
|
62
|
+
export interface CompactNavItemProps extends CompactPlace {
|
|
63
|
+
/**
|
|
64
|
+
* The pointer's title. Defaults to the name with its figure and its lock,
|
|
65
|
+
* because the name under a tile is the rail's narrowest line and ends in an
|
|
66
|
+
* ellipsis where it is long: the title is where it is read whole.
|
|
67
|
+
*/
|
|
68
|
+
title?: string | undefined;
|
|
69
|
+
/** The tile's shortcut, in the syntax `aria-keyshortcuts` takes: the Search tile's `Meta+K Control+K`. */
|
|
70
|
+
keyshortcuts?: string | undefined;
|
|
71
|
+
onClick?: MouseEventHandler<HTMLElement> | undefined;
|
|
72
|
+
/** Draws the link element, for a router that owns navigation, as `SidebarNav.Item`'s. */
|
|
73
|
+
renderLink?: ((props: NavLinkProps) => ReactNode) | undefined;
|
|
74
|
+
className?: string | undefined;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* One destination: its glyph on a tile, its name under it.
|
|
78
|
+
*
|
|
79
|
+
* A LINK WHERE IT GOES SOMEWHERE AND A BUTTON WHERE IT DOES SOMETHING. A place
|
|
80
|
+
* with an `href` is an anchor (a modified press opens a tab, as a full row
|
|
81
|
+
* does); one without is a button, which is what the compact rail's Search tile
|
|
82
|
+
* is, since it opens the palette rather than going anywhere.
|
|
83
|
+
*/
|
|
84
|
+
export declare function CompactNavItem({ label, icon, href, current, badge, count, locked, onPrefetch, title, keyshortcuts, onClick, renderLink, className, }: CompactNavItemProps): import("react").JSX.Element;
|
|
85
|
+
export interface CompactNavSeparatorProps {
|
|
86
|
+
/**
|
|
87
|
+
* What the runs either side of it are, said rather than drawn: "Company and
|
|
88
|
+
* Workspace". A separator with no name parts the column for the eye alone.
|
|
89
|
+
*/
|
|
90
|
+
label?: string | undefined;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* A short rule between two runs of tiles: the full rail's group headings,
|
|
94
|
+
* which a 76px column has no room to print.
|
|
95
|
+
*
|
|
96
|
+
* A SEPARATOR INSIDE AN ENTRY of the list, so the list holds only entries (a
|
|
97
|
+
* list item in another role breaks the list for assistive technology) and the
|
|
98
|
+
* rule is named where it has a name.
|
|
99
|
+
*/
|
|
100
|
+
export declare function CompactNavSeparator({ label }: CompactNavSeparatorProps): import("react").JSX.Element;
|
|
101
|
+
/** A place in a folded group's flyout. */
|
|
102
|
+
export interface CompactNavLink extends CompactPlace {
|
|
103
|
+
/** Unique within the group. */
|
|
104
|
+
key: string;
|
|
105
|
+
onClick?: MouseEventHandler<HTMLElement> | undefined;
|
|
106
|
+
}
|
|
107
|
+
export interface CompactNavGroupProps {
|
|
108
|
+
/** The group's name: "Company". Drawn under the tile and at the head of its flyout. */
|
|
109
|
+
label: string;
|
|
110
|
+
/** The group's glyph, for its tile. */
|
|
111
|
+
icon: ReactNode;
|
|
112
|
+
/** The group's places, in the order the full rail lists them. */
|
|
113
|
+
links: readonly CompactNavLink[];
|
|
114
|
+
/** Draws each link's element, for a router that owns navigation. */
|
|
115
|
+
renderLink?: ((props: NavLinkProps) => ReactNode) | undefined;
|
|
116
|
+
className?: string | undefined;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* What a folded group's tile carries: its places' badges, ADDED UP, so the
|
|
120
|
+
* fold never hides what is waiting on the reader. One badge is drawn as it
|
|
121
|
+
* is; several are summed, keeping a `+` where any of them stopped counting
|
|
122
|
+
* ("50+" and 3 are "53+"); a value that is not a count is drawn as the first
|
|
123
|
+
* badge's own value with a `+`, since there is more than it says.
|
|
124
|
+
*
|
|
125
|
+
* The quiet counts are not carried: a count says how much a place holds, and
|
|
126
|
+
* a sum of how much six places hold is a figure about nothing.
|
|
127
|
+
*/
|
|
128
|
+
export declare function groupBadge(links: readonly Pick<CompactNavLink, 'badge'>[]): (number | string) | undefined;
|
|
129
|
+
/**
|
|
130
|
+
* Where a flyout stands: BESIDE the rail, not beside the tile, so every
|
|
131
|
+
* group's flyout opens on one line a gap off the rail's edge, with its head
|
|
132
|
+
* level with the tile it opened from and slid back inside the bounds where
|
|
133
|
+
* the tile is near the window's foot.
|
|
134
|
+
*
|
|
135
|
+
* Pure arithmetic, in whichever coordinate space the caller uses for all
|
|
136
|
+
* three, for the reason `placePopup` is: none of it can be observed in jsdom.
|
|
137
|
+
*/
|
|
138
|
+
export declare function placeFlyout(tile: PlacementRect, railEnd: number, size: {
|
|
139
|
+
width: number;
|
|
140
|
+
height: number;
|
|
141
|
+
}, bounds: PlacementRect,
|
|
142
|
+
/** How far above the tile's top the flyout's top stands: its own edge and inset, so its head is level with the tile. */
|
|
143
|
+
lift?: number): {
|
|
144
|
+
left: number;
|
|
145
|
+
top: number;
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* A group folded into one tile, and its flyout.
|
|
149
|
+
*
|
|
150
|
+
* THE FLYOUT IS A MENU OF LINKS BESIDE THE RAIL. Pointing at the tile opens it
|
|
151
|
+
* after a moment; a press, Enter, Space or Right opens it too, and the keys
|
|
152
|
+
* put focus on its first place. In the flyout Up and Down move (wrapping),
|
|
153
|
+
* Home and End jump, Escape or Left close it and hand focus back to the tile,
|
|
154
|
+
* and Tab closes it and moves on FROM THE TILE, as if the flyout sat right
|
|
155
|
+
* after it: the flyout is drawn in the layer host at the end of the document,
|
|
156
|
+
* so the browser's own Tab from inside it would have left the rail for
|
|
157
|
+
* whatever came next in the document.
|
|
158
|
+
*
|
|
159
|
+
* EVERY PLACE IS A REAL LINK, so a modified press opens a tab as it does in
|
|
160
|
+
* the full rail; choosing one closes the flyout and, where the keyboard chose
|
|
161
|
+
* it, hands focus back to the tile.
|
|
162
|
+
*
|
|
163
|
+
* WHAT OPENED IT DECIDES WHAT CLOSES IT. Opened by the pointer resting on the
|
|
164
|
+
* tile, it closes when the pointer leaves both; opened by a press or the keys,
|
|
165
|
+
* it stays until it is dismissed, so a reader who clicked does not lose it by
|
|
166
|
+
* moving the pointer toward it the long way round. It is on the shared layer
|
|
167
|
+
* stack, so a press outside closes it and Escape closes it before anything
|
|
168
|
+
* beneath it.
|
|
169
|
+
*
|
|
170
|
+
* THE TILE SAYS WHERE THE READER IS: it is current (`aria-current="true"`,
|
|
171
|
+
* since the tile is not itself the page) while one of its places is, so the
|
|
172
|
+
* fold never hides which part of the product the reader is in.
|
|
173
|
+
*/
|
|
174
|
+
export declare function CompactNavGroup({ label, icon, links, renderLink, className }: CompactNavGroupProps): import("react").JSX.Element;
|
|
175
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import '../HitArea/HitArea.css';
|
|
2
|
+
import './CompactNav.css';
|
|
3
|
+
export { CompactNav, CompactNavGroup, CompactNavItem, CompactNavSeparator, groupBadge, placeFlyout } from './CompactNav.js';
|
|
4
|
+
export type { CompactNavGroupProps, CompactNavItemProps, CompactNavLink, CompactNavProps, CompactNavSeparatorProps, } from './CompactNav.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { CompactNav, CompactNavGroup, CompactNavItem, CompactNavSeparator, groupBadge, placeFlyout } from '../chunk-GP5TNTZH.js';
|
|
2
|
+
import '../chunk-TEV5REGB.js';
|
|
3
|
+
import '../chunk-OMV5W53A.js';
|
|
4
|
+
import '../chunk-2YTOOH3A.js';
|
|
5
|
+
import '../chunk-TUEM2XIW.js';
|
|
6
|
+
import '../chunk-4ITETIGZ.js';
|
|
7
|
+
import '../chunk-UT6CW3C7.js';
|
|
8
|
+
import '../chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The compact rail: each place its glyph's tile over its name, in one column.
|
|
3
|
+
*
|
|
4
|
+
* A PLACE IS 48PX TALL: a 26px tile, its name under it and a breath. Fourteen
|
|
5
|
+
* places, two rules, and the rail's head and foot stand in a 900px window, so
|
|
6
|
+
* the column a reader folded the rail to see more of the page never scrolls
|
|
7
|
+
* on a laptop.
|
|
8
|
+
*
|
|
9
|
+
* Tokens only. The tile's sizes are component variables, so a surface that
|
|
10
|
+
* draws the compact rail at another width changes them in one place.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
.crewlet-compact-nav {
|
|
14
|
+
--crewlet-compact-nav-tile-width: 36px;
|
|
15
|
+
--crewlet-compact-nav-tile-height: var(--size-control-sm);
|
|
16
|
+
--crewlet-compact-nav-glyph: 17px;
|
|
17
|
+
width: 100%;
|
|
18
|
+
min-width: 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.crewlet-compact-nav__list {
|
|
22
|
+
display: flex;
|
|
23
|
+
flex-direction: column;
|
|
24
|
+
align-items: stretch;
|
|
25
|
+
margin: 0;
|
|
26
|
+
padding: 0 var(--spacing-1);
|
|
27
|
+
list-style: none;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.crewlet-compact-nav__entry {
|
|
31
|
+
display: flex;
|
|
32
|
+
min-width: 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* A place is a link or a button, and a folded group is a button: one look for
|
|
36
|
+
all three. The entry itself draws nothing; the tile is what lifts. */
|
|
37
|
+
.crewlet-compact-nav__item {
|
|
38
|
+
display: flex;
|
|
39
|
+
flex-direction: column;
|
|
40
|
+
align-items: center;
|
|
41
|
+
gap: calc(var(--spacing-1) / 2);
|
|
42
|
+
width: 100%;
|
|
43
|
+
min-width: 0;
|
|
44
|
+
margin: 0;
|
|
45
|
+
padding: calc(var(--spacing-1) - 1px) 0 var(--spacing-1);
|
|
46
|
+
border: 0;
|
|
47
|
+
border-radius: var(--radius-md);
|
|
48
|
+
background: transparent;
|
|
49
|
+
color: var(--color-text-secondary);
|
|
50
|
+
font: inherit;
|
|
51
|
+
text-decoration: none;
|
|
52
|
+
cursor: pointer;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* The ring is drawn on the tile (below), not round the whole entry. The
|
|
56
|
+
entry's own outline is transparent rather than none, so forced colours,
|
|
57
|
+
which paint a transparent outline in the system's ink, still draw one. */
|
|
58
|
+
.crewlet-compact-nav__item:focus {
|
|
59
|
+
outline: 2px solid transparent;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.crewlet-compact-nav__tile {
|
|
63
|
+
position: relative;
|
|
64
|
+
display: inline-flex;
|
|
65
|
+
align-items: center;
|
|
66
|
+
justify-content: center;
|
|
67
|
+
flex: none;
|
|
68
|
+
width: var(--crewlet-compact-nav-tile-width);
|
|
69
|
+
height: var(--crewlet-compact-nav-tile-height);
|
|
70
|
+
border-radius: var(--radius-md);
|
|
71
|
+
transition:
|
|
72
|
+
background var(--motion-duration-fast) var(--motion-easing-default),
|
|
73
|
+
color var(--motion-duration-fast) var(--motion-easing-default);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* A step larger than the full rail's 14px glyph: in the compact rail the
|
|
77
|
+
glyph is the place's name at a glance, and the word under it is the
|
|
78
|
+
caption. */
|
|
79
|
+
.crewlet-compact-nav__tile > .crewlet-glyph {
|
|
80
|
+
width: var(--crewlet-compact-nav-glyph);
|
|
81
|
+
height: var(--crewlet-compact-nav-glyph);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.crewlet-compact-nav__item:hover .crewlet-compact-nav__tile,
|
|
85
|
+
.crewlet-compact-nav__item[data-open] .crewlet-compact-nav__tile {
|
|
86
|
+
background: var(--color-surface-hover);
|
|
87
|
+
color: var(--color-text-primary);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.crewlet-compact-nav__item:hover .crewlet-compact-nav__label,
|
|
91
|
+
.crewlet-compact-nav__item[data-open] .crewlet-compact-nav__label {
|
|
92
|
+
color: var(--color-text-primary);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/*
|
|
96
|
+
* WHERE THE READER IS: the full rail's own current row, drawn on the tile.
|
|
97
|
+
* Raised, the plain hairline as an OUTLINE (forced colours keep outlines and
|
|
98
|
+
* drop backgrounds), and the primary ink. After :hover, so the current tile
|
|
99
|
+
* shows its lift rather than the overlay. A folded group's tile is current
|
|
100
|
+
* (`aria-current="true"`) while one of its places is.
|
|
101
|
+
*/
|
|
102
|
+
.crewlet-compact-nav__item[aria-current] .crewlet-compact-nav__tile {
|
|
103
|
+
background: var(--color-surface-elevated);
|
|
104
|
+
outline: 1px solid var(--color-border-default);
|
|
105
|
+
outline-offset: -1px;
|
|
106
|
+
color: var(--color-text-primary);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.crewlet-compact-nav__item[aria-current] .crewlet-compact-nav__label {
|
|
110
|
+
color: var(--color-text-primary);
|
|
111
|
+
font-weight: var(--font-weight-semibold);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* The ring is the tile's, after the current rule that draws its hairline on
|
|
115
|
+
the same property, so a focused current tile draws the ring. */
|
|
116
|
+
.crewlet-compact-nav__item:focus-visible .crewlet-compact-nav__tile {
|
|
117
|
+
outline: 2px solid var(--color-focus);
|
|
118
|
+
outline-offset: 0;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.crewlet-compact-nav__label {
|
|
122
|
+
max-width: 100%;
|
|
123
|
+
box-sizing: border-box;
|
|
124
|
+
padding: 0 calc(var(--spacing-1) / 2);
|
|
125
|
+
overflow: hidden;
|
|
126
|
+
color: var(--color-text-secondary);
|
|
127
|
+
font-family: var(--font-family-sans);
|
|
128
|
+
font-size: var(--font-size-2xs);
|
|
129
|
+
font-weight: var(--font-weight-medium);
|
|
130
|
+
line-height: var(--font-line-height-tight);
|
|
131
|
+
text-align: center;
|
|
132
|
+
text-overflow: ellipsis;
|
|
133
|
+
white-space: nowrap;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* A place the reader holds no access to keeps its name and its key, in the
|
|
137
|
+
quiet ink, as a locked group's rows do in the full rail. */
|
|
138
|
+
.crewlet-compact-nav__item--locked:not([aria-current]):not(:hover) .crewlet-compact-nav__label,
|
|
139
|
+
.crewlet-compact-nav__item--locked:not([aria-current]):not(:hover) .crewlet-compact-nav__tile {
|
|
140
|
+
color: var(--color-text-tertiary);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/*
|
|
144
|
+
* THE FIGURE RIDES THE TILE'S TOP END CORNER, cut out of the rail by a ring of
|
|
145
|
+
* the rail's own ground, so it reads apart from the glyph under it. It is the
|
|
146
|
+
* one count badge size the whole chrome draws (`--size-badge`), the accent
|
|
147
|
+
* fill where it is waiting on the reader and the raised ground where it is
|
|
148
|
+
* only a tally.
|
|
149
|
+
*/
|
|
150
|
+
.crewlet-compact-nav__figure {
|
|
151
|
+
position: absolute;
|
|
152
|
+
top: calc(var(--spacing-1) * -1 - 1px);
|
|
153
|
+
right: calc(var(--spacing-2) * -1 + 1px);
|
|
154
|
+
display: inline-flex;
|
|
155
|
+
align-items: center;
|
|
156
|
+
justify-content: center;
|
|
157
|
+
min-width: var(--size-badge);
|
|
158
|
+
height: var(--size-badge);
|
|
159
|
+
box-sizing: border-box;
|
|
160
|
+
padding: 0 var(--size-badge-pad);
|
|
161
|
+
border: 2px solid var(--color-surface-frame);
|
|
162
|
+
border-radius: var(--radius-pill);
|
|
163
|
+
background: var(--color-surface-elevated);
|
|
164
|
+
color: var(--color-text-secondary);
|
|
165
|
+
font-family: var(--font-family-sans);
|
|
166
|
+
font-size: var(--font-size-badge);
|
|
167
|
+
font-weight: var(--font-weight-semibold);
|
|
168
|
+
font-variant-numeric: tabular-nums;
|
|
169
|
+
line-height: 1;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.crewlet-compact-nav__figure--badge {
|
|
173
|
+
background: var(--color-brand-accent);
|
|
174
|
+
color: var(--color-text-on-accent);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* A short rule between two runs of tiles, centred in the column. */
|
|
178
|
+
.crewlet-compact-nav__separator {
|
|
179
|
+
display: flex;
|
|
180
|
+
justify-content: center;
|
|
181
|
+
padding: calc(var(--spacing-1) + var(--spacing-1) / 2) 0;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.crewlet-compact-nav__rule {
|
|
185
|
+
width: var(--spacing-6);
|
|
186
|
+
height: 1px;
|
|
187
|
+
background: var(--color-border-default);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/*
|
|
191
|
+
* THE FLYOUT: a folded group's places beside the rail, on the popover's rung.
|
|
192
|
+
* Its rows are the full rail's rows at the menu's step: the glyph, the name,
|
|
193
|
+
* and the figure at the end, so the places read as they do unfolded.
|
|
194
|
+
*/
|
|
195
|
+
.crewlet-compact-nav__flyout {
|
|
196
|
+
position: fixed;
|
|
197
|
+
display: flex;
|
|
198
|
+
flex-direction: column;
|
|
199
|
+
gap: 1px;
|
|
200
|
+
min-width: 208px;
|
|
201
|
+
max-width: min(320px, calc(100vw - var(--spacing-4)));
|
|
202
|
+
box-sizing: border-box;
|
|
203
|
+
padding: var(--spacing-1);
|
|
204
|
+
border: 1px solid var(--color-border-default);
|
|
205
|
+
border-radius: var(--radius-lg);
|
|
206
|
+
background: var(--color-surface-elevated);
|
|
207
|
+
box-shadow: var(--shadow-lg);
|
|
208
|
+
font-family: var(--font-family-sans);
|
|
209
|
+
animation: crewlet-compact-nav-flyout-in var(--motion-duration-fast) var(--motion-easing-out);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/* Inside a LayerHost the coordinates are the host's own, so the flyout is
|
|
213
|
+
absolute within it rather than fixed against the window. */
|
|
214
|
+
.crewlet-compact-nav__flyout--in-host {
|
|
215
|
+
position: absolute;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
@keyframes crewlet-compact-nav-flyout-in {
|
|
219
|
+
from {
|
|
220
|
+
opacity: 0;
|
|
221
|
+
transform: translateX(calc(var(--spacing-1) * -1));
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.crewlet-compact-nav__flyout-head {
|
|
226
|
+
padding: var(--spacing-1) var(--spacing-2);
|
|
227
|
+
color: var(--color-text-secondary);
|
|
228
|
+
font-size: var(--font-size-xs);
|
|
229
|
+
font-weight: var(--font-weight-semibold);
|
|
230
|
+
line-height: var(--font-line-height-tight);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/* A router's link is drawn by the caller; its wrapper stays out of the box tree. */
|
|
234
|
+
.crewlet-compact-nav__link-slot {
|
|
235
|
+
display: contents;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.crewlet-compact-nav__link {
|
|
239
|
+
display: flex;
|
|
240
|
+
align-items: center;
|
|
241
|
+
gap: var(--spacing-2);
|
|
242
|
+
min-width: 0;
|
|
243
|
+
height: var(--size-control-md);
|
|
244
|
+
padding: 0 var(--spacing-2);
|
|
245
|
+
border-radius: var(--radius-md);
|
|
246
|
+
color: var(--color-text-secondary);
|
|
247
|
+
font-size: var(--font-size-sm);
|
|
248
|
+
text-decoration: none;
|
|
249
|
+
outline: none;
|
|
250
|
+
transition:
|
|
251
|
+
background var(--motion-duration-fast) var(--motion-easing-default),
|
|
252
|
+
color var(--motion-duration-fast) var(--motion-easing-default);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
.crewlet-compact-nav__link:hover,
|
|
256
|
+
.crewlet-compact-nav__link:focus-visible {
|
|
257
|
+
background: var(--color-surface-hover);
|
|
258
|
+
color: var(--color-text-primary);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/* The place the reader is on: the selected fill, the primary ink, a step
|
|
262
|
+
heavier. Declared after the hover so the selected fill holds under it. */
|
|
263
|
+
.crewlet-compact-nav__link[aria-current='page'] {
|
|
264
|
+
background: var(--color-surface-selected);
|
|
265
|
+
color: var(--color-text-primary);
|
|
266
|
+
font-weight: var(--font-weight-semibold);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.crewlet-compact-nav__link:focus-visible {
|
|
270
|
+
outline: 2px solid var(--color-focus);
|
|
271
|
+
outline-offset: var(--size-focus-ring-inset-offset);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.crewlet-compact-nav__link--locked:not([aria-current]):not(:hover):not(:focus-visible) {
|
|
275
|
+
color: var(--color-text-tertiary);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
.crewlet-compact-nav__link-icon {
|
|
279
|
+
display: inline-flex;
|
|
280
|
+
flex: none;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
.crewlet-compact-nav__link-label {
|
|
284
|
+
flex: 1 1 auto;
|
|
285
|
+
min-width: 0;
|
|
286
|
+
overflow: hidden;
|
|
287
|
+
text-overflow: ellipsis;
|
|
288
|
+
white-space: nowrap;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.crewlet-compact-nav__link-figure {
|
|
292
|
+
display: inline-flex;
|
|
293
|
+
align-items: center;
|
|
294
|
+
justify-content: center;
|
|
295
|
+
flex: none;
|
|
296
|
+
min-width: var(--size-badge);
|
|
297
|
+
height: var(--size-badge);
|
|
298
|
+
box-sizing: border-box;
|
|
299
|
+
padding: 0 var(--size-badge-pad);
|
|
300
|
+
border-radius: var(--radius-pill);
|
|
301
|
+
color: var(--color-text-tertiary);
|
|
302
|
+
font-size: var(--font-size-badge);
|
|
303
|
+
font-weight: var(--font-weight-semibold);
|
|
304
|
+
font-variant-numeric: tabular-nums;
|
|
305
|
+
line-height: 1;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.crewlet-compact-nav__link-figure--badge {
|
|
309
|
+
background: var(--color-brand-accent);
|
|
310
|
+
color: var(--color-text-on-accent);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
@media (prefers-reduced-motion: reduce) {
|
|
314
|
+
.crewlet-compact-nav__tile,
|
|
315
|
+
.crewlet-compact-nav__link {
|
|
316
|
+
transition: none;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
.crewlet-compact-nav__flyout {
|
|
320
|
+
animation: none;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
@@ -8,6 +8,8 @@ export declare const COMPOSER_COUNTER_AT = 0.8;
|
|
|
8
8
|
* every chat surface sends it: Enter sends and Shift+Enter writes a line.
|
|
9
9
|
*/
|
|
10
10
|
export type ComposerSubmitKey = 'mod-enter' | 'enter';
|
|
11
|
+
/** The box's look: `default`, a form's field, or `chat`, a conversation's message box. */
|
|
12
|
+
export type ComposerAppearance = 'default' | 'chat';
|
|
11
13
|
export interface ComposerProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'value' | 'onChange' | 'onSubmit' | 'children'> {
|
|
12
14
|
value: string;
|
|
13
15
|
onChange: (value: string) => void;
|
|
@@ -20,8 +22,29 @@ export interface ComposerProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaE
|
|
|
20
22
|
submitOn?: ComposerSubmitKey | undefined;
|
|
21
23
|
/** Names the field for a screen reader, since it carries no visible label. */
|
|
22
24
|
label: string;
|
|
25
|
+
/**
|
|
26
|
+
* `chat` is a conversation's message box, on the transcript's own type and
|
|
27
|
+
* ground (the `--crewlet-chat-*` scale): the large corner, the transcript's
|
|
28
|
+
* ground with the row wash and a small shadow, the words at the chat step, a
|
|
29
|
+
* footer with no rule of its own, a tool whose menu is open drawn pressed,
|
|
30
|
+
* and the formatting row's glyphs quiet until the box is in use.
|
|
31
|
+
*/
|
|
32
|
+
appearance?: ComposerAppearance | undefined;
|
|
23
33
|
/** The footer's controls, at its end: Cancel and Submit. */
|
|
24
34
|
actions?: ReactNode;
|
|
35
|
+
/**
|
|
36
|
+
* Tools at the footer's START, before the actions: what a chat composer
|
|
37
|
+
* offers beside sending (attach, emoji, a mention, drafting with the
|
|
38
|
+
* assistant). They stand where the eye starts, under the words, and the
|
|
39
|
+
* send control keeps the corner.
|
|
40
|
+
*/
|
|
41
|
+
tools?: ReactNode;
|
|
42
|
+
/**
|
|
43
|
+
* A row along the box's top, inside its edge and before everything else: a
|
|
44
|
+
* formatting `Toolbar` (bold, italic, a list) that acts on the words below.
|
|
45
|
+
* Pass a `Toolbar` with its own name; the row is laid out, not labelled.
|
|
46
|
+
*/
|
|
47
|
+
toolbar?: ReactNode;
|
|
25
48
|
/**
|
|
26
49
|
* A control on the field's own row, at its end: the send button of a chat
|
|
27
50
|
* composer (`SendButton`). With one, the field starts at one line and grows
|
|
@@ -49,8 +72,9 @@ export interface ComposerProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaE
|
|
|
49
72
|
}
|
|
50
73
|
/**
|
|
51
74
|
* A message written in place: a borderless field that grows with its text,
|
|
52
|
-
* and a footer strip holding the send shortcut, a counter and the
|
|
53
|
-
* one box that takes the focus ring as a whole.
|
|
75
|
+
* and a footer strip holding the tools, the send shortcut, a counter and the
|
|
76
|
+
* actions, in one box that takes the focus ring as a whole. A formatting row
|
|
77
|
+
* (`toolbar`) may stand along the box's top, above the words it acts on.
|
|
54
78
|
*
|
|
55
79
|
* THE FOOTER IS DRAWN ONLY WITH SOMETHING IN IT. With no shortcut, counter or
|
|
56
80
|
* actions there is no strip at all, and one holding only the shortcut's hint
|
package/dist/Composer/index.d.ts
CHANGED
package/dist/Composer/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export { COMPOSER_COUNTER_AT, Composer } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-FB3TCNQP.js';
|
|
1
|
+
export { COMPOSER_COUNTER_AT, Composer } from '../chunk-EBVZHVPD.js';
|
|
2
|
+
import '../chunk-O7N6W52M.js';
|
|
4
3
|
import '../chunk-PGCLHYVP.js';
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-2G355KDJ.js';
|
|
4
|
+
import '../chunk-CMAZZY2I.js';
|
|
7
5
|
import '../chunk-OMV5W53A.js';
|
|
8
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-TUEM2XIW.js';
|
|
7
|
+
import '../chunk-4ITETIGZ.js';
|
|
9
8
|
import '../chunk-UAUP6XGK.js';
|
|
10
|
-
import '../chunk-
|
|
9
|
+
import '../chunk-PQADV6P6.js';
|
|
10
|
+
import '../chunk-2G355KDJ.js';
|
|
11
11
|
import '../chunk-UT6CW3C7.js';
|
|
12
12
|
import '../chunk-ODEQTPFM.js';
|
|
@@ -136,6 +136,32 @@
|
|
|
136
136
|
padding: var(--spacing-2) var(--spacing-3) 0;
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
+
/*
|
|
140
|
+
* THE FORMATTING ROW, along the box's top on the field's own inset less the
|
|
141
|
+
* small tool's own room round its glyph, so the first glyph starts on the
|
|
142
|
+
* words' line. It belongs to the field rather than to a strip of its own: no
|
|
143
|
+
* rule under it.
|
|
144
|
+
*/
|
|
145
|
+
.crewlet-composer__toolbar {
|
|
146
|
+
display: flex;
|
|
147
|
+
align-items: center;
|
|
148
|
+
min-width: 0;
|
|
149
|
+
padding: var(--spacing-1) var(--spacing-1) 0 calc(var(--spacing-3) - (var(--size-control-sm) - var(--font-size-xs)) / 2);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/*
|
|
153
|
+
* THE TOOLS AT THE FOOTER'S START, a tight row whose first glyph starts on
|
|
154
|
+
* the words' line, as the formatting row's does. The spacer after them puts
|
|
155
|
+
* the actions at the end.
|
|
156
|
+
*/
|
|
157
|
+
.crewlet-composer__tools {
|
|
158
|
+
display: flex;
|
|
159
|
+
align-items: center;
|
|
160
|
+
gap: 2px;
|
|
161
|
+
min-width: 0;
|
|
162
|
+
margin-inline-start: calc(-1 * (var(--size-control-sm) - var(--font-size-xs)) / 2);
|
|
163
|
+
}
|
|
164
|
+
|
|
139
165
|
/*
|
|
140
166
|
* DISABLED, AS A FIELD IS: the whole box at the disabled field's 0.6 and the
|
|
141
167
|
* not-allowed cursor, so it no longer reads as somewhere to type. Faded once:
|
|
@@ -212,3 +238,48 @@
|
|
|
212
238
|
transition: none;
|
|
213
239
|
}
|
|
214
240
|
}
|
|
241
|
+
|
|
242
|
+
/*
|
|
243
|
+
* A CONVERSATION'S MESSAGE BOX (`appearance="chat"`), on the transcript's own
|
|
244
|
+
* scale (ChatMessage/ChatScale.css): the large corner on the transcript's
|
|
245
|
+
* ground with the row wash laid over it, a step lighter than the list, and a
|
|
246
|
+
* small shadow, so the box sits just above the messages, inside the edge
|
|
247
|
+
* scale's strong step, the edge a field draws. The words are set at the
|
|
248
|
+
* transcript's size on one line to start. The footer belongs to the field
|
|
249
|
+
* rather than standing as a strip under it: no rule and no ground of its own.
|
|
250
|
+
*/
|
|
251
|
+
.crewlet-composer--chat {
|
|
252
|
+
border-color: var(--color-edge-strong);
|
|
253
|
+
background:
|
|
254
|
+
linear-gradient(var(--color-fill-row), var(--color-fill-row)),
|
|
255
|
+
var(--crewlet-chat-ground);
|
|
256
|
+
box-shadow: var(--shadow-xs);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
.crewlet-composer--chat .crewlet-composer__field {
|
|
260
|
+
min-height: 0;
|
|
261
|
+
padding: var(--spacing-2) var(--spacing-3);
|
|
262
|
+
font-size: var(--crewlet-chat-text);
|
|
263
|
+
line-height: var(--crewlet-chat-line);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.crewlet-composer--chat .crewlet-composer__footer {
|
|
267
|
+
gap: 2px;
|
|
268
|
+
padding: var(--spacing-1);
|
|
269
|
+
padding-inline-start: var(--spacing-3);
|
|
270
|
+
border-top: 0;
|
|
271
|
+
background: transparent;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/* A tool whose menu or picker is open reads as held down. */
|
|
275
|
+
.crewlet-composer--chat .crewlet-composer__tools [aria-expanded='true'] {
|
|
276
|
+
background: var(--color-surface-pressed);
|
|
277
|
+
color: var(--color-text-primary);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/* The formatting row's glyphs rest in the tertiary ink while the box is not
|
|
281
|
+
in use, so the row reads as part of the field rather than as a toolbar
|
|
282
|
+
competing with the conversation, and take their own ink once it is. */
|
|
283
|
+
.crewlet-composer--chat:not(:focus-within) .crewlet-composer__toolbar :is(button, [role='button']):not(:hover) {
|
|
284
|
+
color: var(--color-text-tertiary);
|
|
285
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export { ConfirmField, confirmMatches } from '../chunk-
|
|
1
|
+
export { ConfirmField, confirmMatches } from '../chunk-PEBQMX5X.js';
|
|
2
2
|
import '../chunk-PLL7ZJHY.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-O7N6W52M.js';
|
|
4
4
|
import '../chunk-PGCLHYVP.js';
|
|
5
|
+
import '../chunk-TUEM2XIW.js';
|
|
6
|
+
import '../chunk-4ITETIGZ.js';
|
|
7
|
+
import '../chunk-UAUP6XGK.js';
|
|
5
8
|
import '../chunk-PQADV6P6.js';
|
|
6
9
|
import '../chunk-2G355KDJ.js';
|
|
7
|
-
import '../chunk-H5XTJ7GJ.js';
|
|
8
|
-
import '../chunk-UAUP6XGK.js';
|
|
9
|
-
import '../chunk-NUZHC6MM.js';
|
|
10
10
|
import '../chunk-UT6CW3C7.js';
|
|
11
11
|
import '../chunk-ODEQTPFM.js';
|