@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,386 @@
|
|
|
1
|
+
import { LockedLabel } from './chunk-TEV5REGB.js';
|
|
2
|
+
import { LAYER_GAP, useLayerContainer, viewportBounds, anchorGone, LAYER_REPOSITION_EVENT } from './chunk-OMV5W53A.js';
|
|
3
|
+
import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
|
|
4
|
+
import { usePopupLayer } from './chunk-TUEM2XIW.js';
|
|
5
|
+
import { returnFocus } from './chunk-4ITETIGZ.js';
|
|
6
|
+
import { VisuallyHidden } from './chunk-UT6CW3C7.js';
|
|
7
|
+
import { cx } from './chunk-ODEQTPFM.js';
|
|
8
|
+
import './HitArea-QUOS6ZDJ.css';
|
|
9
|
+
import './CompactNav-CU2AQXBC.css';
|
|
10
|
+
import { useState, useRef, useId, useCallback, useLayoutEffect, useEffect } from 'react';
|
|
11
|
+
import { createPortal } from 'react-dom';
|
|
12
|
+
import { motion } from '@crewlethq/tokens';
|
|
13
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
14
|
+
|
|
15
|
+
function CompactNav({ label, className, children }) {
|
|
16
|
+
return /* @__PURE__ */ jsx("nav", { className: cx("crewlet-compact-nav", className), "aria-label": label, children: /* @__PURE__ */ jsx("ul", { className: "crewlet-compact-nav__list", children }) });
|
|
17
|
+
}
|
|
18
|
+
function figureWords(figure) {
|
|
19
|
+
return `, ${String(figure.value)} ${figure.label}`;
|
|
20
|
+
}
|
|
21
|
+
function titleOf(place) {
|
|
22
|
+
const figure = place.badge ?? place.count;
|
|
23
|
+
const named = figure ? `${place.label}${figureWords(figure)}` : place.label;
|
|
24
|
+
return place.locked ? `${named}. ${place.locked}` : named;
|
|
25
|
+
}
|
|
26
|
+
function Tile({ icon, figure, attention }) {
|
|
27
|
+
return /* @__PURE__ */ jsxs("span", { className: "crewlet-compact-nav__tile", "aria-hidden": true, children: [
|
|
28
|
+
icon,
|
|
29
|
+
figure ? /* @__PURE__ */ jsx("span", { className: cx("crewlet-compact-nav__figure", attention && "crewlet-compact-nav__figure--badge"), children: figure.value }) : null
|
|
30
|
+
] });
|
|
31
|
+
}
|
|
32
|
+
function TileLabel({ label, figures, locked }) {
|
|
33
|
+
return /* @__PURE__ */ jsxs("span", { className: "crewlet-compact-nav__label", children: [
|
|
34
|
+
/* @__PURE__ */ jsx(LockedLabel, { reason: locked, children: label }),
|
|
35
|
+
figures ? /* @__PURE__ */ jsx(VisuallyHidden, { children: figures }) : null
|
|
36
|
+
] });
|
|
37
|
+
}
|
|
38
|
+
function CompactNavItem({
|
|
39
|
+
label,
|
|
40
|
+
icon,
|
|
41
|
+
href,
|
|
42
|
+
current = false,
|
|
43
|
+
badge,
|
|
44
|
+
count,
|
|
45
|
+
locked,
|
|
46
|
+
onPrefetch,
|
|
47
|
+
title,
|
|
48
|
+
keyshortcuts,
|
|
49
|
+
onClick,
|
|
50
|
+
renderLink,
|
|
51
|
+
className
|
|
52
|
+
}) {
|
|
53
|
+
const figure = badge ?? count;
|
|
54
|
+
const inside = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
55
|
+
/* @__PURE__ */ jsx(Tile, { icon, figure, attention: badge !== void 0 }),
|
|
56
|
+
/* @__PURE__ */ jsx(TileLabel, { label, figures: [count, badge].filter((f) => f !== void 0).map(figureWords).join(""), locked })
|
|
57
|
+
] });
|
|
58
|
+
const shown = title ?? titleOf({ label, badge, count, locked });
|
|
59
|
+
const itemClass = cx("crewlet-compact-nav__item", HIT_AREA_CLASS, locked && "crewlet-compact-nav__item--locked");
|
|
60
|
+
let item;
|
|
61
|
+
if (renderLink) {
|
|
62
|
+
item = renderLink({
|
|
63
|
+
className: itemClass,
|
|
64
|
+
children: inside,
|
|
65
|
+
...href === void 0 ? {} : { href },
|
|
66
|
+
...current ? { "aria-current": "page" } : {},
|
|
67
|
+
...onClick === void 0 ? {} : { onClick },
|
|
68
|
+
title: shown,
|
|
69
|
+
...onPrefetch === void 0 ? {} : { onPointerEnter: onPrefetch, onFocus: onPrefetch }
|
|
70
|
+
});
|
|
71
|
+
} else if (href !== void 0) {
|
|
72
|
+
item = /* @__PURE__ */ jsx(
|
|
73
|
+
"a",
|
|
74
|
+
{
|
|
75
|
+
className: itemClass,
|
|
76
|
+
href,
|
|
77
|
+
"aria-current": current ? "page" : void 0,
|
|
78
|
+
"aria-keyshortcuts": keyshortcuts,
|
|
79
|
+
title: shown,
|
|
80
|
+
onClick,
|
|
81
|
+
onPointerEnter: onPrefetch,
|
|
82
|
+
onFocus: onPrefetch,
|
|
83
|
+
children: inside
|
|
84
|
+
}
|
|
85
|
+
);
|
|
86
|
+
} else {
|
|
87
|
+
item = /* @__PURE__ */ jsx(
|
|
88
|
+
"button",
|
|
89
|
+
{
|
|
90
|
+
type: "button",
|
|
91
|
+
className: itemClass,
|
|
92
|
+
"aria-current": current ? "page" : void 0,
|
|
93
|
+
"aria-keyshortcuts": keyshortcuts,
|
|
94
|
+
title: shown,
|
|
95
|
+
onClick,
|
|
96
|
+
onPointerEnter: onPrefetch,
|
|
97
|
+
onFocus: onPrefetch,
|
|
98
|
+
children: inside
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
return /* @__PURE__ */ jsx("li", { className: cx("crewlet-compact-nav__entry", className), children: item });
|
|
103
|
+
}
|
|
104
|
+
function CompactNavSeparator({ label }) {
|
|
105
|
+
return /* @__PURE__ */ jsx("li", { className: "crewlet-compact-nav__separator", children: /* @__PURE__ */ jsx("span", { className: "crewlet-compact-nav__rule", role: "separator", "aria-label": label }) });
|
|
106
|
+
}
|
|
107
|
+
function figureNumber(value) {
|
|
108
|
+
if (typeof value === "number") return Number.isFinite(value) ? { n: value, more: false } : null;
|
|
109
|
+
const match = /^(\d[\d,]*)(\+?)$/.exec(value.trim());
|
|
110
|
+
if (!match) return null;
|
|
111
|
+
return { n: Number(match[1].replaceAll(",", "")), more: match[2] === "+" };
|
|
112
|
+
}
|
|
113
|
+
function groupBadge(links) {
|
|
114
|
+
const badges = links.flatMap((link) => link.badge ? [link.badge] : []);
|
|
115
|
+
if (badges.length === 0) return void 0;
|
|
116
|
+
if (badges.length === 1) return badges[0].value;
|
|
117
|
+
const read = badges.map((badge) => figureNumber(badge.value));
|
|
118
|
+
if (read.some((figure) => figure === null)) return `${String(badges[0].value)}+`;
|
|
119
|
+
const total = read.reduce((sum, figure) => sum + figure.n, 0);
|
|
120
|
+
return read.some((figure) => figure.more) ? `${total}+` : total;
|
|
121
|
+
}
|
|
122
|
+
function placeFlyout(tile, railEnd, size, bounds, lift = 0) {
|
|
123
|
+
const maxTop = bounds.y + bounds.height - size.height;
|
|
124
|
+
const top = Math.max(bounds.y, Math.min(tile.y - lift, maxTop));
|
|
125
|
+
const maxLeft = bounds.x + bounds.width - size.width;
|
|
126
|
+
const left = Math.max(bounds.x, Math.min(railEnd + LAYER_GAP, maxLeft));
|
|
127
|
+
return { left, top };
|
|
128
|
+
}
|
|
129
|
+
function ms(value) {
|
|
130
|
+
return Number.parseFloat(value);
|
|
131
|
+
}
|
|
132
|
+
var OPEN_DELAY = ms(motion.duration.fast);
|
|
133
|
+
var CLOSE_DELAY = ms(motion.duration.moderate);
|
|
134
|
+
function CompactNavGroup({ label, icon, links, renderLink, className }) {
|
|
135
|
+
const [open, setOpen] = useState(false);
|
|
136
|
+
const [place, setPlace] = useState(null);
|
|
137
|
+
const tile = useRef(null);
|
|
138
|
+
const panel = useRef(null);
|
|
139
|
+
const timer = useRef(void 0);
|
|
140
|
+
const opener = useRef("pointer");
|
|
141
|
+
const focusFirst = useRef(false);
|
|
142
|
+
const id = useId();
|
|
143
|
+
const container = useLayerContainer();
|
|
144
|
+
const current = links.some((link) => link.current);
|
|
145
|
+
const badge = groupBadge(links);
|
|
146
|
+
const spoken = links.filter((link) => link.badge).map((link) => `${link.label} ${String(link.badge.value)} ${link.badge.label}`).join(", ");
|
|
147
|
+
const clear = useCallback(() => {
|
|
148
|
+
if (timer.current !== void 0) clearTimeout(timer.current);
|
|
149
|
+
timer.current = void 0;
|
|
150
|
+
}, []);
|
|
151
|
+
const close = useCallback(
|
|
152
|
+
(refocus) => {
|
|
153
|
+
clear();
|
|
154
|
+
setOpen(false);
|
|
155
|
+
if (refocus) returnFocus(tile.current);
|
|
156
|
+
},
|
|
157
|
+
[clear]
|
|
158
|
+
);
|
|
159
|
+
const show = useCallback(
|
|
160
|
+
(by, first) => {
|
|
161
|
+
clear();
|
|
162
|
+
opener.current = by;
|
|
163
|
+
focusFirst.current = first;
|
|
164
|
+
setOpen(true);
|
|
165
|
+
},
|
|
166
|
+
[clear]
|
|
167
|
+
);
|
|
168
|
+
const popup = usePopupLayer({
|
|
169
|
+
open,
|
|
170
|
+
// Escape hands focus back to the tile; a press elsewhere leaves it where
|
|
171
|
+
// the reader put it.
|
|
172
|
+
onDismiss: (reason) => close(reason === "escape" && panel.current?.contains(document.activeElement) === true)
|
|
173
|
+
});
|
|
174
|
+
const position = useCallback(() => {
|
|
175
|
+
const at = tile.current;
|
|
176
|
+
const box = panel.current;
|
|
177
|
+
if (!at || !box || !container) return;
|
|
178
|
+
const inHost = container !== document.body;
|
|
179
|
+
const host = inHost ? container.getBoundingClientRect() : viewportBounds();
|
|
180
|
+
const rect = at.getBoundingClientRect();
|
|
181
|
+
if (anchorGone(rect, host, inHost)) {
|
|
182
|
+
close(false);
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
const rail = at.closest(".crewlet-compact-nav")?.getBoundingClientRect() ?? rect;
|
|
186
|
+
const own = box.getBoundingClientRect();
|
|
187
|
+
const head = box.querySelector(".crewlet-compact-nav__flyout-head");
|
|
188
|
+
const spot = placeFlyout(
|
|
189
|
+
{ x: rect.x - (inHost ? host.x : 0), y: rect.y - (inHost ? host.y : 0), width: rect.width, height: rect.height },
|
|
190
|
+
rail.right - (inHost ? host.x : 0),
|
|
191
|
+
{ width: own.width, height: own.height },
|
|
192
|
+
{ x: LAYER_GAP, y: LAYER_GAP, width: host.width - 2 * LAYER_GAP, height: host.height - 2 * LAYER_GAP },
|
|
193
|
+
// The flyout's HEAD stands level with the tile: the group's name beside
|
|
194
|
+
// the group's tile, and its places running down from there. The panel's
|
|
195
|
+
// own edge and inset go above the tile's top.
|
|
196
|
+
head ? head.offsetTop + box.clientTop : 0
|
|
197
|
+
);
|
|
198
|
+
setPlace((was) => was && was.left === spot.left && was.top === spot.top ? was : spot);
|
|
199
|
+
}, [close, container]);
|
|
200
|
+
useLayoutEffect(() => {
|
|
201
|
+
if (!open) return void 0;
|
|
202
|
+
position();
|
|
203
|
+
const onLayout = () => position();
|
|
204
|
+
container?.addEventListener(LAYER_REPOSITION_EVENT, onLayout);
|
|
205
|
+
window.addEventListener("resize", onLayout);
|
|
206
|
+
window.addEventListener("scroll", onLayout, true);
|
|
207
|
+
return () => {
|
|
208
|
+
container?.removeEventListener(LAYER_REPOSITION_EVENT, onLayout);
|
|
209
|
+
window.removeEventListener("resize", onLayout);
|
|
210
|
+
window.removeEventListener("scroll", onLayout, true);
|
|
211
|
+
};
|
|
212
|
+
}, [open, container, position]);
|
|
213
|
+
useLayoutEffect(() => {
|
|
214
|
+
if (!place || !focusFirst.current) return;
|
|
215
|
+
focusFirst.current = false;
|
|
216
|
+
panel.current?.querySelector('[role="menuitem"]')?.focus();
|
|
217
|
+
}, [place]);
|
|
218
|
+
useEffect(() => {
|
|
219
|
+
if (!open) setPlace(null);
|
|
220
|
+
}, [open]);
|
|
221
|
+
useEffect(() => clear, [clear]);
|
|
222
|
+
const items = () => [...panel.current?.querySelectorAll('[role="menuitem"]') ?? []];
|
|
223
|
+
const onTileKeyDown = (event) => {
|
|
224
|
+
if (event.key === "ArrowRight") {
|
|
225
|
+
event.preventDefault();
|
|
226
|
+
if (open) items()[0]?.focus();
|
|
227
|
+
else show("keys", true);
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
const onPanelKeyDown = (event) => {
|
|
231
|
+
const all = items();
|
|
232
|
+
const at = all.indexOf(document.activeElement);
|
|
233
|
+
switch (event.key) {
|
|
234
|
+
case "ArrowDown":
|
|
235
|
+
case "ArrowUp": {
|
|
236
|
+
event.preventDefault();
|
|
237
|
+
const step = event.key === "ArrowDown" ? 1 : -1;
|
|
238
|
+
all[(at + step + all.length) % all.length]?.focus();
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
case "Home":
|
|
242
|
+
case "End":
|
|
243
|
+
event.preventDefault();
|
|
244
|
+
(event.key === "Home" ? all[0] : all.at(-1))?.focus();
|
|
245
|
+
break;
|
|
246
|
+
case "ArrowLeft":
|
|
247
|
+
case "Escape":
|
|
248
|
+
event.preventDefault();
|
|
249
|
+
close(true);
|
|
250
|
+
break;
|
|
251
|
+
case "Tab":
|
|
252
|
+
close(true);
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
const onPointerEnter = (event) => {
|
|
257
|
+
if (event.pointerType !== "mouse") return;
|
|
258
|
+
clear();
|
|
259
|
+
if (!open) timer.current = setTimeout(() => show("pointer", false), OPEN_DELAY);
|
|
260
|
+
};
|
|
261
|
+
const onPointerLeave = (event) => {
|
|
262
|
+
if (event.pointerType !== "mouse") return;
|
|
263
|
+
clear();
|
|
264
|
+
if (opener.current === "pointer") timer.current = setTimeout(() => setOpen(false), CLOSE_DELAY);
|
|
265
|
+
};
|
|
266
|
+
const choose = (link) => (event) => {
|
|
267
|
+
link.onClick?.(event);
|
|
268
|
+
close(panel.current?.contains(document.activeElement) === true && event.detail === 0);
|
|
269
|
+
};
|
|
270
|
+
const flyout = open ? /* @__PURE__ */ jsxs(
|
|
271
|
+
"div",
|
|
272
|
+
{
|
|
273
|
+
ref: (el) => {
|
|
274
|
+
panel.current = el;
|
|
275
|
+
popup.panelRef(el);
|
|
276
|
+
},
|
|
277
|
+
id: `${id}-flyout`,
|
|
278
|
+
role: "menu",
|
|
279
|
+
"aria-label": label,
|
|
280
|
+
tabIndex: -1,
|
|
281
|
+
className: cx(
|
|
282
|
+
"crewlet-compact-nav__flyout",
|
|
283
|
+
container !== null && container !== document.body && "crewlet-compact-nav__flyout--in-host"
|
|
284
|
+
),
|
|
285
|
+
style: place ? { left: place.left, top: place.top, zIndex: popup.zIndex } : { visibility: "hidden" },
|
|
286
|
+
onKeyDown: onPanelKeyDown,
|
|
287
|
+
onPointerEnter: (event) => event.pointerType === "mouse" && clear(),
|
|
288
|
+
onPointerLeave,
|
|
289
|
+
children: [
|
|
290
|
+
/* @__PURE__ */ jsx("div", { className: "crewlet-compact-nav__flyout-head", "aria-hidden": true, children: label }),
|
|
291
|
+
links.map((link) => {
|
|
292
|
+
const figure = link.badge ?? link.count;
|
|
293
|
+
const inside = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
294
|
+
/* @__PURE__ */ jsx("span", { className: "crewlet-compact-nav__link-icon", "aria-hidden": true, children: link.icon }),
|
|
295
|
+
/* @__PURE__ */ jsxs("span", { className: "crewlet-compact-nav__link-label", children: [
|
|
296
|
+
/* @__PURE__ */ jsx(LockedLabel, { reason: link.locked, children: link.label }),
|
|
297
|
+
figure ? /* @__PURE__ */ jsx(VisuallyHidden, { children: [link.count, link.badge].filter((f) => f !== void 0).map(figureWords).join("") }) : null
|
|
298
|
+
] }),
|
|
299
|
+
figure ? /* @__PURE__ */ jsx(
|
|
300
|
+
"span",
|
|
301
|
+
{
|
|
302
|
+
className: cx("crewlet-compact-nav__link-figure", link.badge && "crewlet-compact-nav__link-figure--badge"),
|
|
303
|
+
"aria-hidden": true,
|
|
304
|
+
children: figure.value
|
|
305
|
+
}
|
|
306
|
+
) : null
|
|
307
|
+
] });
|
|
308
|
+
const linkClass = cx("crewlet-compact-nav__link", link.locked && "crewlet-compact-nav__link--locked");
|
|
309
|
+
const onClick = choose(link);
|
|
310
|
+
if (renderLink) {
|
|
311
|
+
return /* @__PURE__ */ jsx(MenuLink, { children: renderLink({
|
|
312
|
+
className: linkClass,
|
|
313
|
+
children: inside,
|
|
314
|
+
...link.href === void 0 ? {} : { href: link.href },
|
|
315
|
+
...link.current ? { "aria-current": "page" } : {},
|
|
316
|
+
onClick,
|
|
317
|
+
...link.onPrefetch === void 0 ? {} : { onPointerEnter: link.onPrefetch, onFocus: link.onPrefetch }
|
|
318
|
+
}) }, link.key);
|
|
319
|
+
}
|
|
320
|
+
return /* @__PURE__ */ jsx(
|
|
321
|
+
"a",
|
|
322
|
+
{
|
|
323
|
+
className: linkClass,
|
|
324
|
+
href: link.href,
|
|
325
|
+
role: "menuitem",
|
|
326
|
+
tabIndex: -1,
|
|
327
|
+
"aria-current": link.current ? "page" : void 0,
|
|
328
|
+
onClick,
|
|
329
|
+
onPointerEnter: link.onPrefetch,
|
|
330
|
+
onFocus: link.onPrefetch,
|
|
331
|
+
children: inside
|
|
332
|
+
},
|
|
333
|
+
link.key
|
|
334
|
+
);
|
|
335
|
+
})
|
|
336
|
+
]
|
|
337
|
+
}
|
|
338
|
+
) : null;
|
|
339
|
+
return /* @__PURE__ */ jsxs("li", { className: cx("crewlet-compact-nav__entry", className), children: [
|
|
340
|
+
/* @__PURE__ */ jsxs(
|
|
341
|
+
"button",
|
|
342
|
+
{
|
|
343
|
+
ref: (el) => {
|
|
344
|
+
tile.current = el;
|
|
345
|
+
popup.insideRef(el);
|
|
346
|
+
},
|
|
347
|
+
type: "button",
|
|
348
|
+
className: cx("crewlet-compact-nav__item", HIT_AREA_CLASS),
|
|
349
|
+
"aria-haspopup": "menu",
|
|
350
|
+
"aria-expanded": open,
|
|
351
|
+
"aria-controls": open ? `${id}-flyout` : void 0,
|
|
352
|
+
"aria-current": current ? "true" : void 0,
|
|
353
|
+
title: spoken ? `${label}, ${spoken}` : label,
|
|
354
|
+
"data-open": open || void 0,
|
|
355
|
+
onClick: (event) => {
|
|
356
|
+
if (open && opener.current === "pointer" && event.detail !== 0) {
|
|
357
|
+
opener.current = "press";
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
if (open) close(false);
|
|
361
|
+
else show(event.detail === 0 ? "keys" : "press", event.detail === 0);
|
|
362
|
+
},
|
|
363
|
+
onKeyDown: onTileKeyDown,
|
|
364
|
+
onPointerEnter,
|
|
365
|
+
onPointerLeave,
|
|
366
|
+
children: [
|
|
367
|
+
/* @__PURE__ */ jsx(Tile, { icon, figure: badge === void 0 ? void 0 : { value: badge, label: "" }, attention: true }),
|
|
368
|
+
/* @__PURE__ */ jsx(TileLabel, { label, figures: spoken ? `, ${spoken}` : "", locked: void 0 })
|
|
369
|
+
]
|
|
370
|
+
}
|
|
371
|
+
),
|
|
372
|
+
flyout && container ? createPortal(flyout, container) : null
|
|
373
|
+
] });
|
|
374
|
+
}
|
|
375
|
+
function MenuLink({ children }) {
|
|
376
|
+
const ref = useRef(null);
|
|
377
|
+
useLayoutEffect(() => {
|
|
378
|
+
const element = ref.current?.firstElementChild;
|
|
379
|
+
if (!(element instanceof HTMLElement)) return;
|
|
380
|
+
element.setAttribute("role", "menuitem");
|
|
381
|
+
element.tabIndex = -1;
|
|
382
|
+
});
|
|
383
|
+
return /* @__PURE__ */ jsx("span", { ref, className: "crewlet-compact-nav__link-slot", children });
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
export { CompactNav, CompactNavGroup, CompactNavItem, CompactNavSeparator, groupBadge, placeFlyout };
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { useRailShape } from './chunk-ISQANI6Q.js';
|
|
1
2
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
2
3
|
import './BrandLockup-JKGXFCZF.css';
|
|
3
4
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
4
5
|
|
|
5
6
|
function BrandLockup({ name, mark, context, href, renderLink, className }) {
|
|
7
|
+
const title = useRailShape() === "compact" ? name : void 0;
|
|
6
8
|
const inside = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7
9
|
mark ? /* @__PURE__ */ jsx("span", { className: "crewlet-brand__mark", "aria-hidden": true, children: mark }) : null,
|
|
8
10
|
/* @__PURE__ */ jsx("span", { className: "crewlet-brand__name", children: name })
|
|
@@ -11,15 +13,16 @@ function BrandLockup({ name, mark, context, href, renderLink, className }) {
|
|
|
11
13
|
className: "crewlet-brand__home",
|
|
12
14
|
children: inside,
|
|
13
15
|
"aria-label": name,
|
|
14
|
-
...href === void 0 ? {} : { href }
|
|
16
|
+
...href === void 0 ? {} : { href },
|
|
17
|
+
...title === void 0 ? {} : { title }
|
|
15
18
|
};
|
|
16
19
|
return /* @__PURE__ */ jsxs("div", { className: cx("crewlet-brand", className), children: [
|
|
17
20
|
renderLink ? renderLink(linkProps) : href === void 0 ? (
|
|
18
21
|
// Not a link, because it goes nowhere. An anchor with no href is
|
|
19
22
|
// announced as text anyway, and one with href="#" navigates the page
|
|
20
23
|
// it is meant to be the way out of.
|
|
21
|
-
/* @__PURE__ */ jsx("span", { className: "crewlet-brand__home", children: inside })
|
|
22
|
-
) : /* @__PURE__ */ jsx("a", { className: "crewlet-brand__home", href, "aria-label": name, children: inside }),
|
|
24
|
+
/* @__PURE__ */ jsx("span", { className: "crewlet-brand__home", title, children: inside })
|
|
25
|
+
) : /* @__PURE__ */ jsx("a", { className: "crewlet-brand__home", href, "aria-label": name, title, children: inside }),
|
|
23
26
|
context ? /* @__PURE__ */ jsx("span", { className: "crewlet-brand__context", children: context }) : null
|
|
24
27
|
] });
|
|
25
28
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { tabId } from './chunk-
|
|
1
|
+
import { tabId } from './chunk-HCUECVZ3.js';
|
|
2
2
|
import { useRoving, tabStop } from './chunk-EGMQURBR.js';
|
|
3
|
-
import { Count } from './chunk-MLDTLZAO.js';
|
|
4
3
|
import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
|
|
4
|
+
import { Count } from './chunk-D2GT3CR4.js';
|
|
5
5
|
import { VisuallyHidden } from './chunk-UT6CW3C7.js';
|
|
6
6
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
7
7
|
import { useState, useId } from 'react';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Toolbar } from './chunk-
|
|
2
|
-
import { ShortcutTip } from './chunk-
|
|
1
|
+
import { Toolbar } from './chunk-NXFTCPF6.js';
|
|
2
|
+
import { ShortcutTip } from './chunk-SEKO6P3Y.js';
|
|
3
3
|
import { IconButton } from './chunk-UAUP6XGK.js';
|
|
4
4
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
5
5
|
import './CanvasToolbar-EM5EVZED.css';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useRoving, tabStop } from './chunk-EGMQURBR.js';
|
|
2
2
|
import { StatusDot } from './chunk-CYQBDZ6M.js';
|
|
3
|
-
import {
|
|
4
|
-
import { Menu } from './chunk-OQG4P5KU.js';
|
|
3
|
+
import { Menu } from './chunk-YOJAGKTS.js';
|
|
5
4
|
import { HIT_AREA_CLASS } from './chunk-2YTOOH3A.js';
|
|
5
|
+
import { Count } from './chunk-D2GT3CR4.js';
|
|
6
6
|
import { VisuallyHidden } from './chunk-UT6CW3C7.js';
|
|
7
7
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
8
8
|
import './HitArea-QUOS6ZDJ.css';
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Select } from './chunk-
|
|
2
|
-
import { Modal } from './chunk-
|
|
1
|
+
import { Select } from './chunk-3IWZVEXA.js';
|
|
2
|
+
import { Modal } from './chunk-XXDB6KPV.js';
|
|
3
3
|
import { CopyButton } from './chunk-T5GBTXNC.js';
|
|
4
4
|
import { Callout } from './chunk-BPCY7ZID.js';
|
|
5
|
-
import { PrincipalAvatar } from './chunk-
|
|
6
|
-
import { useHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
|
|
5
|
+
import { PrincipalAvatar } from './chunk-HF5L56YQ.js';
|
|
7
6
|
import { useMediaMatch } from './chunk-RTPQDNW3.js';
|
|
8
7
|
import { Button } from './chunk-DGXZ635L.js';
|
|
9
8
|
import { IconButton } from './chunk-UAUP6XGK.js';
|
|
9
|
+
import { useHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
|
|
10
10
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
11
11
|
import './ShareDialog-72VTMM4K.css';
|
|
12
12
|
import { useState, useId } from 'react';
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { TagGroup } from './chunk-UEOEBOBR.js';
|
|
2
2
|
import { CursorFlag } from './chunk-MMCYH5LB.js';
|
|
3
3
|
import { presenceHueClass } from './chunk-EFX2YC5T.js';
|
|
4
|
-
import { ChangeMark } from './chunk-
|
|
4
|
+
import { ChangeMark } from './chunk-ONNXUS5Y.js';
|
|
5
5
|
import { isEmptyValue, displayText, ratingMax, findPerson, findOption, statusTone, editText, textMax, sheetLabels, normalizeValue, sameValue, spokenText, drawnColumns, fitSamples, fittedWidth, columnWidth, SHEET_COLUMN_BOUNDS, sortRows, SHEET_ROW_HEIGHT, cellKey, columnOffsets, SHEET_ROW_NUMBER_WIDTH, rangeOf, presenceByCell, presenceByRow, presenceByColumn, scrollToRow, planClear, visibleRows, cellDescription, nextSort, rowName, inRange, hasPrevious, flagText, toTSV, planPaste, parseTSV, isMod, moveFrom, isTypingKey, editorSide, optionHue, parseText, liveOptions, checkValue } from './chunk-LFSIKGRQ.js';
|
|
6
6
|
import { presenceLabels } from './chunk-Z7JYG5TF.js';
|
|
7
|
-
import { Popover } from './chunk-
|
|
8
|
-
import { Tag } from './chunk-
|
|
9
|
-
import {
|
|
7
|
+
import { Popover } from './chunk-SM4P2SHB.js';
|
|
8
|
+
import { Tag } from './chunk-LBGKLYBY.js';
|
|
9
|
+
import { Avatar } from './chunk-XZY6S3UC.js';
|
|
10
10
|
import { StatusDot } from './chunk-CYQBDZ6M.js';
|
|
11
|
-
import {
|
|
12
|
-
import { Menu } from './chunk-
|
|
11
|
+
import { Tooltip } from './chunk-3QQIGMY3.js';
|
|
12
|
+
import { Menu } from './chunk-YOJAGKTS.js';
|
|
13
13
|
import { Button } from './chunk-DGXZ635L.js';
|
|
14
|
-
import { isComposing } from './chunk-
|
|
14
|
+
import { isComposing } from './chunk-TUEM2XIW.js';
|
|
15
15
|
import { IconButton } from './chunk-UAUP6XGK.js';
|
|
16
16
|
import { VisuallyHidden } from './chunk-UT6CW3C7.js';
|
|
17
17
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { cx } from './chunk-ODEQTPFM.js';
|
|
2
|
+
import './ArtifactKinds-3EH4KR3F.css';
|
|
3
|
+
import './ActionCard-47WSZ2O5.css';
|
|
4
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var ACTION_CARD_GROUND = {
|
|
7
|
+
purple: "design",
|
|
8
|
+
blue: "doc",
|
|
9
|
+
amber: "slides",
|
|
10
|
+
green: "sheet",
|
|
11
|
+
teal: "dashboard",
|
|
12
|
+
magenta: "brand",
|
|
13
|
+
rose: "html"
|
|
14
|
+
};
|
|
15
|
+
function ActionCard({ title, tone, art, onSelect, onClick, className, type = "button", ...rest }) {
|
|
16
|
+
return /* @__PURE__ */ jsxs(
|
|
17
|
+
"button",
|
|
18
|
+
{
|
|
19
|
+
...rest,
|
|
20
|
+
type,
|
|
21
|
+
className: cx("crewlet-action-card", `crewlet-kind--${ACTION_CARD_GROUND[tone]}`, className),
|
|
22
|
+
onClick: (event) => {
|
|
23
|
+
onClick?.(event);
|
|
24
|
+
if (!event.defaultPrevented) onSelect();
|
|
25
|
+
},
|
|
26
|
+
children: [
|
|
27
|
+
/* @__PURE__ */ jsx("span", { className: "crewlet-action-card__title", children: title }),
|
|
28
|
+
/* @__PURE__ */ jsx("span", { className: "crewlet-action-card__art", "aria-hidden": "true", children: art })
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
function ActionCardRow({ label, children, className }) {
|
|
34
|
+
return /* @__PURE__ */ jsx("div", { role: "group", "aria-label": label, className: cx("crewlet-action-cards", className), children });
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { ACTION_CARD_GROUND, ActionCard, ActionCardRow };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VisuallyHidden } from './chunk-UT6CW3C7.js';
|
|
2
2
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
3
|
-
import './Skeleton-
|
|
3
|
+
import './Skeleton-GIXV3KK5.css';
|
|
4
4
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
5
5
|
|
|
6
6
|
var range = (n) => Array.from({ length: Math.max(0, n) }, (_, i) => i);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useFocusModality } from './chunk-
|
|
1
|
+
import { useFocusModality } from './chunk-4ITETIGZ.js';
|
|
2
2
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
3
3
|
import './Document-M6JYGLWV.css';
|
|
4
4
|
import { forwardRef, useRef, useCallback, useLayoutEffect, useEffect } from 'react';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { PrincipalAvatar } from './chunk-
|
|
1
|
+
import { PrincipalAvatar } from './chunk-HF5L56YQ.js';
|
|
2
2
|
import { toInstant, RelativeTime, formatExact, toISO } from './chunk-EJNJMHQG.js';
|
|
3
|
-
import { Document } from './chunk-
|
|
4
|
-
import { Composer } from './chunk-
|
|
5
|
-
import { Count } from './chunk-MLDTLZAO.js';
|
|
6
|
-
import { useHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
|
|
3
|
+
import { Document } from './chunk-I4PBFJGX.js';
|
|
4
|
+
import { Composer } from './chunk-EBVZHVPD.js';
|
|
7
5
|
import { Button } from './chunk-DGXZ635L.js';
|
|
8
6
|
import { IconButton } from './chunk-UAUP6XGK.js';
|
|
7
|
+
import { Count } from './chunk-D2GT3CR4.js';
|
|
8
|
+
import { useHeadingLevel, headingTag } from './chunk-PQADV6P6.js';
|
|
9
9
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
10
10
|
import './CommentThread-FRXTDNV6.css';
|
|
11
11
|
import { useState, useRef, useId, useMemo } from 'react';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { AVATAR_SIZES, Avatar } from './chunk-
|
|
1
|
+
import { AVATAR_SIZES, Avatar } from './chunk-XZY6S3UC.js';
|
|
2
2
|
import { cx } from './chunk-ODEQTPFM.js';
|
|
3
|
-
import './Avatar-
|
|
4
|
-
import './AvatarStack-
|
|
3
|
+
import './Avatar-MNE3WBZO.css';
|
|
4
|
+
import './AvatarStack-KEHD3GWY.css';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
7
7
|
function counted(count, one, many) {
|