@dxos/shell 0.3.11-main.1caa3af
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/LICENSE +8 -0
- package/README.md +21 -0
- package/dist/lib/browser/chunk-ZSTKOCBT.mjs +10 -0
- package/dist/lib/browser/chunk-ZSTKOCBT.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -0
- package/dist/lib/browser/react.mjs +3617 -0
- package/dist/lib/browser/react.mjs.map +7 -0
- package/dist/lib/browser/testing/index.mjs +179 -0
- package/dist/lib/browser/testing/index.mjs.map +7 -0
- package/dist/types/src/components/AuthCode.d.ts +8 -0
- package/dist/types/src/components/AuthCode.d.ts.map +1 -0
- package/dist/types/src/components/AuthCode.js +26 -0
- package/dist/types/src/components/AuthCode.js.map +1 -0
- package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts +9 -0
- package/dist/types/src/components/Clipboard/ClipboardProvider.d.ts.map +1 -0
- package/dist/types/src/components/Clipboard/ClipboardProvider.js +46 -0
- package/dist/types/src/components/Clipboard/ClipboardProvider.js.map +1 -0
- package/dist/types/src/components/Clipboard/CopyButton.d.ts +9 -0
- package/dist/types/src/components/Clipboard/CopyButton.d.ts.map +1 -0
- package/dist/types/src/components/Clipboard/CopyButton.js +65 -0
- package/dist/types/src/components/Clipboard/CopyButton.js.map +1 -0
- package/dist/types/src/components/Clipboard/index.d.ts +3 -0
- package/dist/types/src/components/Clipboard/index.d.ts.map +1 -0
- package/dist/types/src/components/Clipboard/index.js +22 -0
- package/dist/types/src/components/Clipboard/index.js.map +1 -0
- package/dist/types/src/components/CompoundButton/CompoundButton.d.ts +17 -0
- package/dist/types/src/components/CompoundButton/CompoundButton.d.ts.map +1 -0
- package/dist/types/src/components/CompoundButton/CompoundButton.js +29 -0
- package/dist/types/src/components/CompoundButton/CompoundButton.js.map +1 -0
- package/dist/types/src/components/CompoundButton/CompoundButton.stories.d.ts +35 -0
- package/dist/types/src/components/CompoundButton/CompoundButton.stories.d.ts.map +1 -0
- package/dist/types/src/components/CompoundButton/CompoundButton.stories.js +45 -0
- package/dist/types/src/components/CompoundButton/CompoundButton.stories.js.map +1 -0
- package/dist/types/src/components/CompoundButton/index.d.ts +2 -0
- package/dist/types/src/components/CompoundButton/index.d.ts.map +1 -0
- package/dist/types/src/components/CompoundButton/index.js +21 -0
- package/dist/types/src/components/CompoundButton/index.js.map +1 -0
- package/dist/types/src/components/IdentityList/DeviceList.d.ts +7 -0
- package/dist/types/src/components/IdentityList/DeviceList.d.ts.map +1 -0
- package/dist/types/src/components/IdentityList/DeviceList.js +29 -0
- package/dist/types/src/components/IdentityList/DeviceList.js.map +1 -0
- package/dist/types/src/components/IdentityList/IdentityListItem.d.ts +11 -0
- package/dist/types/src/components/IdentityList/IdentityListItem.d.ts.map +1 -0
- package/dist/types/src/components/IdentityList/IdentityListItem.js +47 -0
- package/dist/types/src/components/IdentityList/IdentityListItem.js.map +1 -0
- package/dist/types/src/components/IdentityList/SpaceMemberList.d.ts +13 -0
- package/dist/types/src/components/IdentityList/SpaceMemberList.d.ts.map +1 -0
- package/dist/types/src/components/IdentityList/SpaceMemberList.js +54 -0
- package/dist/types/src/components/IdentityList/SpaceMemberList.js.map +1 -0
- package/dist/types/src/components/IdentityList/SpaceMemberList.stories.d.ts +17 -0
- package/dist/types/src/components/IdentityList/SpaceMemberList.stories.d.ts.map +1 -0
- package/dist/types/src/components/IdentityList/SpaceMemberList.stories.js +26 -0
- package/dist/types/src/components/IdentityList/SpaceMemberList.stories.js.map +1 -0
- package/dist/types/src/components/IdentityList/index.d.ts +4 -0
- package/dist/types/src/components/IdentityList/index.d.ts.map +1 -0
- package/dist/types/src/components/IdentityList/index.js +23 -0
- package/dist/types/src/components/IdentityList/index.js.map +1 -0
- package/dist/types/src/components/InvitationList/InvitationList.d.ts +11 -0
- package/dist/types/src/components/InvitationList/InvitationList.d.ts.map +1 -0
- package/dist/types/src/components/InvitationList/InvitationList.js +22 -0
- package/dist/types/src/components/InvitationList/InvitationList.js.map +1 -0
- package/dist/types/src/components/InvitationList/InvitationList.stories.d.ts +17 -0
- package/dist/types/src/components/InvitationList/InvitationList.stories.d.ts.map +1 -0
- package/dist/types/src/components/InvitationList/InvitationList.stories.js +39 -0
- package/dist/types/src/components/InvitationList/InvitationList.stories.js.map +1 -0
- package/dist/types/src/components/InvitationList/InvitationListContainer.d.ts +7 -0
- package/dist/types/src/components/InvitationList/InvitationListContainer.d.ts.map +1 -0
- package/dist/types/src/components/InvitationList/InvitationListContainer.js +42 -0
- package/dist/types/src/components/InvitationList/InvitationListContainer.js.map +1 -0
- package/dist/types/src/components/InvitationList/InvitationListItem.d.ts +12 -0
- package/dist/types/src/components/InvitationList/InvitationListItem.d.ts.map +1 -0
- package/dist/types/src/components/InvitationList/InvitationListItem.js +103 -0
- package/dist/types/src/components/InvitationList/InvitationListItem.js.map +1 -0
- package/dist/types/src/components/InvitationList/InvitationListProps.d.ts +9 -0
- package/dist/types/src/components/InvitationList/InvitationListProps.d.ts.map +1 -0
- package/dist/types/src/components/InvitationList/InvitationListProps.js +3 -0
- package/dist/types/src/components/InvitationList/InvitationListProps.js.map +1 -0
- package/dist/types/src/components/InvitationList/index.d.ts +4 -0
- package/dist/types/src/components/InvitationList/index.d.ts.map +1 -0
- package/dist/types/src/components/InvitationList/index.js +23 -0
- package/dist/types/src/components/InvitationList/index.js.map +1 -0
- package/dist/types/src/components/Panel/Action.d.ts +20 -0
- package/dist/types/src/components/Panel/Action.d.ts.map +1 -0
- package/dist/types/src/components/Panel/Action.js +93 -0
- package/dist/types/src/components/Panel/Action.js.map +1 -0
- package/dist/types/src/components/Panel/Actions.d.ts +11 -0
- package/dist/types/src/components/Panel/Actions.d.ts.map +1 -0
- package/dist/types/src/components/Panel/Actions.js +36 -0
- package/dist/types/src/components/Panel/Actions.js.map +1 -0
- package/dist/types/src/components/Panel/CloseButton.d.ts +5 -0
- package/dist/types/src/components/Panel/CloseButton.d.ts.map +1 -0
- package/dist/types/src/components/Panel/CloseButton.js +21 -0
- package/dist/types/src/components/Panel/CloseButton.js.map +1 -0
- package/dist/types/src/components/Panel/Emoji.d.ts +7 -0
- package/dist/types/src/components/Panel/Emoji.d.ts.map +1 -0
- package/dist/types/src/components/Panel/Emoji.js +24 -0
- package/dist/types/src/components/Panel/Emoji.js.map +1 -0
- package/dist/types/src/components/Panel/Heading.d.ts +16 -0
- package/dist/types/src/components/Panel/Heading.d.ts.map +1 -0
- package/dist/types/src/components/Panel/Heading.js +39 -0
- package/dist/types/src/components/Panel/Heading.js.map +1 -0
- package/dist/types/src/components/Panel/Input.d.ts +11 -0
- package/dist/types/src/components/Panel/Input.d.ts.map +1 -0
- package/dist/types/src/components/Panel/Input.js +19 -0
- package/dist/types/src/components/Panel/Input.js.map +1 -0
- package/dist/types/src/components/Panel/Label.d.ts +4 -0
- package/dist/types/src/components/Panel/Label.d.ts.map +1 -0
- package/dist/types/src/components/Panel/Label.js +17 -0
- package/dist/types/src/components/Panel/Label.js.map +1 -0
- package/dist/types/src/components/Panel/Panel.stories.d.ts +13 -0
- package/dist/types/src/components/Panel/Panel.stories.d.ts.map +1 -0
- package/dist/types/src/components/Panel/Panel.stories.js +44 -0
- package/dist/types/src/components/Panel/Panel.stories.js.map +1 -0
- package/dist/types/src/components/Panel/StepHeading.d.ts +5 -0
- package/dist/types/src/components/Panel/StepHeading.d.ts.map +1 -0
- package/dist/types/src/components/Panel/StepHeading.js +35 -0
- package/dist/types/src/components/Panel/StepHeading.js.map +1 -0
- package/dist/types/src/components/Panel/index.d.ts +9 -0
- package/dist/types/src/components/Panel/index.d.ts.map +1 -0
- package/dist/types/src/components/Panel/index.js +28 -0
- package/dist/types/src/components/Panel/index.js.map +1 -0
- package/dist/types/src/components/SpaceListItem.d.ts +7 -0
- package/dist/types/src/components/SpaceListItem.d.ts.map +1 -0
- package/dist/types/src/components/SpaceListItem.js +46 -0
- package/dist/types/src/components/SpaceListItem.js.map +1 -0
- package/dist/types/src/components/StorybookDialog.d.ts +6 -0
- package/dist/types/src/components/StorybookDialog.d.ts.map +1 -0
- package/dist/types/src/components/StorybookDialog.js +23 -0
- package/dist/types/src/components/StorybookDialog.js.map +1 -0
- package/dist/types/src/components/Viewport/Viewport.d.ts +39 -0
- package/dist/types/src/components/Viewport/Viewport.d.ts.map +1 -0
- package/dist/types/src/components/Viewport/Viewport.js +73 -0
- package/dist/types/src/components/Viewport/Viewport.js.map +1 -0
- package/dist/types/src/components/Viewport/Viewport.stories.d.ts +17 -0
- package/dist/types/src/components/Viewport/Viewport.stories.d.ts.map +1 -0
- package/dist/types/src/components/Viewport/Viewport.stories.js +51 -0
- package/dist/types/src/components/Viewport/Viewport.stories.js.map +1 -0
- package/dist/types/src/components/Viewport/index.d.ts +2 -0
- package/dist/types/src/components/Viewport/index.d.ts.map +1 -0
- package/dist/types/src/components/Viewport/index.js +21 -0
- package/dist/types/src/components/Viewport/index.js.map +1 -0
- package/dist/types/src/components/index.d.ts +9 -0
- package/dist/types/src/components/index.d.ts.map +1 -0
- package/dist/types/src/components/index.js +28 -0
- package/dist/types/src/components/index.js.map +1 -0
- package/dist/types/src/composites/IdentityDialog/IdentityDialog.d.ts +7 -0
- package/dist/types/src/composites/IdentityDialog/IdentityDialog.d.ts.map +1 -0
- package/dist/types/src/composites/IdentityDialog/IdentityDialog.js +26 -0
- package/dist/types/src/composites/IdentityDialog/IdentityDialog.js.map +1 -0
- package/dist/types/src/composites/IdentityDialog/index.d.ts +2 -0
- package/dist/types/src/composites/IdentityDialog/index.d.ts.map +1 -0
- package/dist/types/src/composites/IdentityDialog/index.js +21 -0
- package/dist/types/src/composites/IdentityDialog/index.js.map +1 -0
- package/dist/types/src/composites/JoinDialog/JoinDialog.d.ts +6 -0
- package/dist/types/src/composites/JoinDialog/JoinDialog.d.ts.map +1 -0
- package/dist/types/src/composites/JoinDialog/JoinDialog.js +27 -0
- package/dist/types/src/composites/JoinDialog/JoinDialog.js.map +1 -0
- package/dist/types/src/composites/JoinDialog/index.d.ts +2 -0
- package/dist/types/src/composites/JoinDialog/index.d.ts.map +1 -0
- package/dist/types/src/composites/JoinDialog/index.js +21 -0
- package/dist/types/src/composites/JoinDialog/index.js.map +1 -0
- package/dist/types/src/composites/Shell/Shell.d.ts +6 -0
- package/dist/types/src/composites/Shell/Shell.d.ts.map +1 -0
- package/dist/types/src/composites/Shell/Shell.js +90 -0
- package/dist/types/src/composites/Shell/Shell.js.map +1 -0
- package/dist/types/src/composites/Shell/ShellContext.d.ts +30 -0
- package/dist/types/src/composites/Shell/ShellContext.d.ts.map +1 -0
- package/dist/types/src/composites/Shell/ShellContext.js +129 -0
- package/dist/types/src/composites/Shell/ShellContext.js.map +1 -0
- package/dist/types/src/composites/Shell/index.d.ts +4 -0
- package/dist/types/src/composites/Shell/index.d.ts.map +1 -0
- package/dist/types/src/composites/Shell/index.js +23 -0
- package/dist/types/src/composites/Shell/index.js.map +1 -0
- package/dist/types/src/composites/Shell/memory-shell-runtime.d.ts +16 -0
- package/dist/types/src/composites/Shell/memory-shell-runtime.d.ts.map +1 -0
- package/dist/types/src/composites/Shell/memory-shell-runtime.js +38 -0
- package/dist/types/src/composites/Shell/memory-shell-runtime.js.map +1 -0
- package/dist/types/src/composites/Shell/run-shell.d.ts +3 -0
- package/dist/types/src/composites/Shell/run-shell.d.ts.map +1 -0
- package/dist/types/src/composites/Shell/run-shell.js +54 -0
- package/dist/types/src/composites/Shell/run-shell.js.map +1 -0
- package/dist/types/src/composites/SpaceDialog/SpaceDialog.d.ts +6 -0
- package/dist/types/src/composites/SpaceDialog/SpaceDialog.d.ts.map +1 -0
- package/dist/types/src/composites/SpaceDialog/SpaceDialog.js +26 -0
- package/dist/types/src/composites/SpaceDialog/SpaceDialog.js.map +1 -0
- package/dist/types/src/composites/SpaceDialog/index.d.ts +2 -0
- package/dist/types/src/composites/SpaceDialog/index.d.ts.map +1 -0
- package/dist/types/src/composites/SpaceDialog/index.js +21 -0
- package/dist/types/src/composites/SpaceDialog/index.js.map +1 -0
- package/dist/types/src/composites/index.d.ts +5 -0
- package/dist/types/src/composites/index.d.ts.map +1 -0
- package/dist/types/src/composites/index.js +24 -0
- package/dist/types/src/composites/index.js.map +1 -0
- package/dist/types/src/index.d.ts +3 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/index.js +10 -0
- package/dist/types/src/index.js.map +1 -0
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts +4 -0
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -0
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.js +124 -0
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.js.map +1 -0
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts +22 -0
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.d.ts.map +1 -0
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js +86 -0
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.stories.js.map +1 -0
- package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts +27 -0
- package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts.map +1 -0
- package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.js +6 -0
- package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.js.map +1 -0
- package/dist/types/src/panels/IdentityPanel/identityMachine.d.ts +46 -0
- package/dist/types/src/panels/IdentityPanel/identityMachine.d.ts.map +1 -0
- package/dist/types/src/panels/IdentityPanel/identityMachine.js +79 -0
- package/dist/types/src/panels/IdentityPanel/identityMachine.js.map +1 -0
- package/dist/types/src/panels/IdentityPanel/index.d.ts +3 -0
- package/dist/types/src/panels/IdentityPanel/index.d.ts.map +1 -0
- package/dist/types/src/panels/IdentityPanel/index.js +22 -0
- package/dist/types/src/panels/IdentityPanel/index.js.map +1 -0
- package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.d.ts +9 -0
- package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.d.ts.map +1 -0
- package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js +85 -0
- package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js.map +1 -0
- package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.d.ts +15 -0
- package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.d.ts.map +1 -0
- package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js +62 -0
- package/dist/types/src/panels/IdentityPanel/steps/ProfileForm.js.map +1 -0
- package/dist/types/src/panels/IdentityPanel/steps/index.d.ts +3 -0
- package/dist/types/src/panels/IdentityPanel/steps/index.d.ts.map +1 -0
- package/dist/types/src/panels/IdentityPanel/steps/index.js +22 -0
- package/dist/types/src/panels/IdentityPanel/steps/index.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/JoinHeading.d.ts +10 -0
- package/dist/types/src/panels/JoinPanel/JoinHeading.d.ts.map +1 -0
- package/dist/types/src/panels/JoinPanel/JoinHeading.js +45 -0
- package/dist/types/src/panels/JoinPanel/JoinHeading.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/JoinPanel.d.ts +4 -0
- package/dist/types/src/panels/JoinPanel/JoinPanel.d.ts.map +1 -0
- package/dist/types/src/panels/JoinPanel/JoinPanel.js +293 -0
- package/dist/types/src/panels/JoinPanel/JoinPanel.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/JoinPanel.stories.d.ts +92 -0
- package/dist/types/src/panels/JoinPanel/JoinPanel.stories.d.ts.map +1 -0
- package/dist/types/src/panels/JoinPanel/JoinPanel.stories.js +74 -0
- package/dist/types/src/panels/JoinPanel/JoinPanel.stories.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/JoinPanelProps.d.ts +91 -0
- package/dist/types/src/panels/JoinPanel/JoinPanelProps.d.ts.map +1 -0
- package/dist/types/src/panels/JoinPanel/JoinPanelProps.js +6 -0
- package/dist/types/src/panels/JoinPanel/JoinPanelProps.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/index.d.ts +3 -0
- package/dist/types/src/panels/JoinPanel/index.d.ts.map +1 -0
- package/dist/types/src/panels/JoinPanel/index.js +22 -0
- package/dist/types/src/panels/JoinPanel/index.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/joinMachine.d.ts +87 -0
- package/dist/types/src/panels/JoinPanel/joinMachine.d.ts.map +1 -0
- package/dist/types/src/panels/JoinPanel/joinMachine.js +402 -0
- package/dist/types/src/panels/JoinPanel/joinMachine.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/AdditionMethodChooser.d.ts +4 -0
- package/dist/types/src/panels/JoinPanel/steps/AdditionMethodChooser.d.ts.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/AdditionMethodChooser.js +34 -0
- package/dist/types/src/panels/JoinPanel/steps/AdditionMethodChooser.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.d.ts +8 -0
- package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.d.ts.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.js +56 -0
- package/dist/types/src/panels/JoinPanel/steps/IdentityAdded.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/IdentityInput.d.ts +12 -0
- package/dist/types/src/panels/JoinPanel/steps/IdentityInput.d.ts.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/IdentityInput.js +67 -0
- package/dist/types/src/panels/JoinPanel/steps/IdentityInput.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationAccepted.d.ts +9 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationAccepted.d.ts.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationAccepted.js +44 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationAccepted.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.d.ts +11 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.d.ts.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.js +72 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationAuthenticator.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationInput.d.ts +8 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationInput.d.ts.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationInput.js +68 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationInput.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationRescuer.d.ts +11 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationRescuer.d.ts.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationRescuer.js +49 -0
- package/dist/types/src/panels/JoinPanel/steps/InvitationRescuer.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/ResetIdentity.d.ts +12 -0
- package/dist/types/src/panels/JoinPanel/steps/ResetIdentity.d.ts.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/ResetIdentity.js +63 -0
- package/dist/types/src/panels/JoinPanel/steps/ResetIdentity.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/index.d.ts +9 -0
- package/dist/types/src/panels/JoinPanel/steps/index.d.ts.map +1 -0
- package/dist/types/src/panels/JoinPanel/steps/index.js +28 -0
- package/dist/types/src/panels/JoinPanel/steps/index.js.map +1 -0
- package/dist/types/src/panels/Panels.stories.d.ts +22 -0
- package/dist/types/src/panels/Panels.stories.d.ts.map +1 -0
- package/dist/types/src/panels/Panels.stories.js +71 -0
- package/dist/types/src/panels/Panels.stories.js.map +1 -0
- package/dist/types/src/panels/SpacePanel/SpacePanel.d.ts +4 -0
- package/dist/types/src/panels/SpacePanel/SpacePanel.d.ts.map +1 -0
- package/dist/types/src/panels/SpacePanel/SpacePanel.js +93 -0
- package/dist/types/src/panels/SpacePanel/SpacePanel.js.map +1 -0
- package/dist/types/src/panels/SpacePanel/SpacePanel.stories.d.ts +30 -0
- package/dist/types/src/panels/SpacePanel/SpacePanel.stories.d.ts.map +1 -0
- package/dist/types/src/panels/SpacePanel/SpacePanel.stories.js +183 -0
- package/dist/types/src/panels/SpacePanel/SpacePanel.stories.js.map +1 -0
- package/dist/types/src/panels/SpacePanel/SpacePanelProps.d.ts +30 -0
- package/dist/types/src/panels/SpacePanel/SpacePanelProps.d.ts.map +1 -0
- package/dist/types/src/panels/SpacePanel/SpacePanelProps.js +6 -0
- package/dist/types/src/panels/SpacePanel/SpacePanelProps.js.map +1 -0
- package/dist/types/src/panels/SpacePanel/index.d.ts +3 -0
- package/dist/types/src/panels/SpacePanel/index.d.ts.map +1 -0
- package/dist/types/src/panels/SpacePanel/index.js +22 -0
- package/dist/types/src/panels/SpacePanel/index.js.map +1 -0
- package/dist/types/src/panels/SpacePanel/spaceMachine.d.ts +35 -0
- package/dist/types/src/panels/SpacePanel/spaceMachine.d.ts.map +1 -0
- package/dist/types/src/panels/SpacePanel/spaceMachine.js +46 -0
- package/dist/types/src/panels/SpacePanel/spaceMachine.js.map +1 -0
- package/dist/types/src/panels/SpacePanel/steps/SpaceManager.d.ts +15 -0
- package/dist/types/src/panels/SpacePanel/steps/SpaceManager.d.ts.map +1 -0
- package/dist/types/src/panels/SpacePanel/steps/SpaceManager.js +120 -0
- package/dist/types/src/panels/SpacePanel/steps/SpaceManager.js.map +1 -0
- package/dist/types/src/panels/SpacePanel/steps/index.d.ts +2 -0
- package/dist/types/src/panels/SpacePanel/steps/index.d.ts.map +1 -0
- package/dist/types/src/panels/SpacePanel/steps/index.js +21 -0
- package/dist/types/src/panels/SpacePanel/steps/index.js.map +1 -0
- package/dist/types/src/panels/index.d.ts +4 -0
- package/dist/types/src/panels/index.d.ts.map +1 -0
- package/dist/types/src/panels/index.js +23 -0
- package/dist/types/src/panels/index.js.map +1 -0
- package/dist/types/src/playwright/invitations-manager.d.ts +26 -0
- package/dist/types/src/playwright/invitations-manager.d.ts.map +1 -0
- package/dist/types/src/playwright/invitations-manager.js +142 -0
- package/dist/types/src/playwright/invitations-manager.js.map +1 -0
- package/dist/types/src/playwright/invitations.spec.d.ts +2 -0
- package/dist/types/src/playwright/invitations.spec.d.ts.map +1 -0
- package/dist/types/src/playwright/invitations.spec.js +298 -0
- package/dist/types/src/playwright/invitations.spec.js.map +1 -0
- package/dist/types/src/playwright/playwright.config.d.ts +3 -0
- package/dist/types/src/playwright/playwright.config.d.ts.map +1 -0
- package/dist/types/src/playwright/playwright.config.js +8 -0
- package/dist/types/src/playwright/playwright.config.js.map +1 -0
- package/dist/types/src/react.d.ts +6 -0
- package/dist/types/src/react.d.ts.map +1 -0
- package/dist/types/src/react.js +25 -0
- package/dist/types/src/react.js.map +1 -0
- package/dist/types/src/steps/InvitationManager.d.ts +7 -0
- package/dist/types/src/steps/InvitationManager.d.ts.map +1 -0
- package/dist/types/src/steps/InvitationManager.js +80 -0
- package/dist/types/src/steps/InvitationManager.js.map +1 -0
- package/dist/types/src/steps/StepProps.d.ts +14 -0
- package/dist/types/src/steps/StepProps.d.ts.map +1 -0
- package/dist/types/src/steps/StepProps.js +6 -0
- package/dist/types/src/steps/StepProps.js.map +1 -0
- package/dist/types/src/steps/index.d.ts +3 -0
- package/dist/types/src/steps/index.d.ts.map +1 -0
- package/dist/types/src/steps/index.js +22 -0
- package/dist/types/src/steps/index.js.map +1 -0
- package/dist/types/src/stories/Invitations.e2e-stories.d.ts +22 -0
- package/dist/types/src/stories/Invitations.e2e-stories.d.ts.map +1 -0
- package/dist/types/src/stories/Invitations.e2e-stories.js +146 -0
- package/dist/types/src/stories/Invitations.e2e-stories.js.map +1 -0
- package/dist/types/src/styles/index.d.ts +3 -0
- package/dist/types/src/styles/index.d.ts.map +1 -0
- package/dist/types/src/styles/index.js +22 -0
- package/dist/types/src/styles/index.js.map +1 -0
- package/dist/types/src/styles/invitationStatusStyles.d.ts +20 -0
- package/dist/types/src/styles/invitationStatusStyles.d.ts.map +1 -0
- package/dist/types/src/styles/invitationStatusStyles.js +41 -0
- package/dist/types/src/styles/invitationStatusStyles.js.map +1 -0
- package/dist/types/src/styles/panelStyles.d.ts +2 -0
- package/dist/types/src/styles/panelStyles.d.ts.map +1 -0
- package/dist/types/src/styles/panelStyles.js +8 -0
- package/dist/types/src/styles/panelStyles.js.map +1 -0
- package/dist/types/src/testing/fixtures/identities.d.ts +3 -0
- package/dist/types/src/testing/fixtures/identities.d.ts.map +1 -0
- package/dist/types/src/testing/fixtures/identities.js +18 -0
- package/dist/types/src/testing/fixtures/identities.js.map +1 -0
- package/dist/types/src/testing/fixtures/index.d.ts +3 -0
- package/dist/types/src/testing/fixtures/index.d.ts.map +1 -0
- package/dist/types/src/testing/fixtures/index.js +22 -0
- package/dist/types/src/testing/fixtures/index.js.map +1 -0
- package/dist/types/src/testing/fixtures/invitations.d.ts +3 -0
- package/dist/types/src/testing/fixtures/invitations.d.ts.map +1 -0
- package/dist/types/src/testing/fixtures/invitations.js +25 -0
- package/dist/types/src/testing/fixtures/invitations.js.map +1 -0
- package/dist/types/src/testing/index.d.ts +4 -0
- package/dist/types/src/testing/index.d.ts.map +1 -0
- package/dist/types/src/testing/index.js +23 -0
- package/dist/types/src/testing/index.js.map +1 -0
- package/dist/types/src/testing/scoped-shell-manager.d.ts +17 -0
- package/dist/types/src/testing/scoped-shell-manager.d.ts.map +1 -0
- package/dist/types/src/testing/scoped-shell-manager.js +71 -0
- package/dist/types/src/testing/scoped-shell-manager.js.map +1 -0
- package/dist/types/src/testing/shell-manager.d.ts +24 -0
- package/dist/types/src/testing/shell-manager.d.ts.map +1 -0
- package/dist/types/src/testing/shell-manager.js +85 -0
- package/dist/types/src/testing/shell-manager.js.map +1 -0
- package/dist/types/src/translations/index.d.ts +5 -0
- package/dist/types/src/translations/index.d.ts.map +1 -0
- package/dist/types/src/translations/index.js +32 -0
- package/dist/types/src/translations/index.js.map +1 -0
- package/dist/types/src/translations/locales/en-US.d.ts +97 -0
- package/dist/types/src/translations/locales/en-US.d.ts.map +1 -0
- package/dist/types/src/translations/locales/en-US.js +103 -0
- package/dist/types/src/translations/locales/en-US.js.map +1 -0
- package/dist/types/src/types/FailReason.d.ts +2 -0
- package/dist/types/src/types/FailReason.d.ts.map +1 -0
- package/dist/types/src/types/FailReason.js +6 -0
- package/dist/types/src/types/FailReason.js.map +1 -0
- package/dist/types/src/types/IInvitation.d.ts +7 -0
- package/dist/types/src/types/IInvitation.d.ts.map +1 -0
- package/dist/types/src/types/IInvitation.js +6 -0
- package/dist/types/src/types/IInvitation.js.map +1 -0
- package/dist/types/src/types/index.d.ts +3 -0
- package/dist/types/src/types/index.d.ts.map +1 -0
- package/dist/types/src/types/index.js +22 -0
- package/dist/types/src/types/index.js.map +1 -0
- package/dist/types/src/util/index.d.ts +3 -0
- package/dist/types/src/util/index.d.ts.map +1 -0
- package/dist/types/src/util/index.js +22 -0
- package/dist/types/src/util/index.js.map +1 -0
- package/dist/types/src/util/invitationStatusValue.d.ts +8 -0
- package/dist/types/src/util/invitationStatusValue.d.ts.map +1 -0
- package/dist/types/src/util/invitationStatusValue.js +24 -0
- package/dist/types/src/util/invitationStatusValue.js.map +1 -0
- package/dist/types/src/util/toEmoji.d.ts +2 -0
- package/dist/types/src/util/toEmoji.d.ts.map +1 -0
- package/dist/types/src/util/toEmoji.js +26 -0
- package/dist/types/src/util/toEmoji.js.map +1 -0
- package/package.json +79 -0
- package/src/components/AuthCode.tsx +36 -0
- package/src/components/Clipboard/ClipboardProvider.tsx +26 -0
- package/src/components/Clipboard/CopyButton.tsx +70 -0
- package/src/components/Clipboard/index.ts +6 -0
- package/src/components/CompoundButton/CompoundButton.stories.tsx +49 -0
- package/src/components/CompoundButton/CompoundButton.tsx +89 -0
- package/src/components/CompoundButton/index.ts +5 -0
- package/src/components/IdentityList/DeviceList.tsx +45 -0
- package/src/components/IdentityList/IdentityListItem.tsx +42 -0
- package/src/components/IdentityList/SpaceMemberList.stories.tsx +24 -0
- package/src/components/IdentityList/SpaceMemberList.tsx +65 -0
- package/src/components/IdentityList/index.ts +7 -0
- package/src/components/InvitationList/InvitationList.stories.tsx +44 -0
- package/src/components/InvitationList/InvitationList.tsx +31 -0
- package/src/components/InvitationList/InvitationListContainer.tsx +27 -0
- package/src/components/InvitationList/InvitationListItem.tsx +183 -0
- package/src/components/InvitationList/InvitationListProps.ts +9 -0
- package/src/components/InvitationList/index.ts +7 -0
- package/src/components/Panel/Action.tsx +142 -0
- package/src/components/Panel/Actions.tsx +31 -0
- package/src/components/Panel/CloseButton.tsx +24 -0
- package/src/components/Panel/Emoji.tsx +36 -0
- package/src/components/Panel/Heading.tsx +32 -0
- package/src/components/Panel/Input.tsx +27 -0
- package/src/components/Panel/Label.tsx +14 -0
- package/src/components/Panel/Panel.stories.tsx +52 -0
- package/src/components/Panel/StepHeading.tsx +17 -0
- package/src/components/Panel/index.ts +12 -0
- package/src/components/SpaceListItem.tsx +35 -0
- package/src/components/StorybookDialog.tsx +33 -0
- package/src/components/Viewport/Viewport.stories.tsx +66 -0
- package/src/components/Viewport/Viewport.tsx +120 -0
- package/src/components/Viewport/index.tsx +5 -0
- package/src/components/index.ts +12 -0
- package/src/composites/IdentityDialog/IdentityDialog.tsx +39 -0
- package/src/composites/IdentityDialog/index.ts +5 -0
- package/src/composites/JoinDialog/JoinDialog.tsx +40 -0
- package/src/composites/JoinDialog/index.ts +5 -0
- package/src/composites/Shell/Shell.tsx +98 -0
- package/src/composites/Shell/ShellContext.tsx +163 -0
- package/src/composites/Shell/index.ts +7 -0
- package/src/composites/Shell/memory-shell-runtime.ts +50 -0
- package/src/composites/Shell/run-shell.tsx +38 -0
- package/src/composites/SpaceDialog/SpaceDialog.tsx +37 -0
- package/src/composites/SpaceDialog/index.ts +5 -0
- package/src/composites/index.ts +8 -0
- package/src/index.ts +7 -0
- package/src/panels/IdentityPanel/IdentityPanel.stories.tsx +113 -0
- package/src/panels/IdentityPanel/IdentityPanel.tsx +158 -0
- package/src/panels/IdentityPanel/IdentityPanelProps.ts +36 -0
- package/src/panels/IdentityPanel/identityMachine.ts +131 -0
- package/src/panels/IdentityPanel/index.ts +6 -0
- package/src/panels/IdentityPanel/steps/IdentityActionChooser.tsx +96 -0
- package/src/panels/IdentityPanel/steps/ProfileForm.tsx +79 -0
- package/src/panels/IdentityPanel/steps/index.ts +6 -0
- package/src/panels/JoinPanel/JoinHeading.tsx +49 -0
- package/src/panels/JoinPanel/JoinPanel.stories.tsx +91 -0
- package/src/panels/JoinPanel/JoinPanel.tsx +415 -0
- package/src/panels/JoinPanel/JoinPanelProps.ts +132 -0
- package/src/panels/JoinPanel/index.ts +6 -0
- package/src/panels/JoinPanel/joinMachine.ts +536 -0
- package/src/panels/JoinPanel/steps/AdditionMethodChooser.tsx +65 -0
- package/src/panels/JoinPanel/steps/IdentityAdded.tsx +75 -0
- package/src/panels/JoinPanel/steps/IdentityInput.tsx +86 -0
- package/src/panels/JoinPanel/steps/InvitationAccepted.tsx +43 -0
- package/src/panels/JoinPanel/steps/InvitationAuthenticator.tsx +99 -0
- package/src/panels/JoinPanel/steps/InvitationInput.tsx +102 -0
- package/src/panels/JoinPanel/steps/InvitationRescuer.tsx +102 -0
- package/src/panels/JoinPanel/steps/ResetIdentity.tsx +71 -0
- package/src/panels/JoinPanel/steps/index.ts +12 -0
- package/src/panels/Panels.stories.tsx +61 -0
- package/src/panels/SpacePanel/SpacePanel.stories.tsx +328 -0
- package/src/panels/SpacePanel/SpacePanel.tsx +122 -0
- package/src/panels/SpacePanel/SpacePanelProps.ts +40 -0
- package/src/panels/SpacePanel/index.ts +6 -0
- package/src/panels/SpacePanel/spaceMachine.ts +72 -0
- package/src/panels/SpacePanel/steps/SpaceManager.tsx +157 -0
- package/src/panels/SpacePanel/steps/index.ts +5 -0
- package/src/panels/index.ts +7 -0
- package/src/playwright/invitations-manager.ts +168 -0
- package/src/playwright/invitations.spec.ts +364 -0
- package/src/playwright/playwright.config.ts +7 -0
- package/src/react.ts +9 -0
- package/src/steps/InvitationManager.tsx +116 -0
- package/src/steps/StepProps.ts +17 -0
- package/src/steps/index.ts +6 -0
- package/src/stories/Invitations.e2e-stories.tsx +231 -0
- package/src/styles/index.ts +6 -0
- package/src/styles/invitationStatusStyles.ts +42 -0
- package/src/styles/panelStyles.ts +5 -0
- package/src/testing/fixtures/identities.ts +16 -0
- package/src/testing/fixtures/index.ts +6 -0
- package/src/testing/fixtures/invitations.ts +23 -0
- package/src/testing/index.ts +7 -0
- package/src/testing/scoped-shell-manager.ts +79 -0
- package/src/testing/shell-manager.ts +102 -0
- package/src/translations/index.ts +7 -0
- package/src/translations/locales/en-US.ts +101 -0
- package/src/types/FailReason.ts +5 -0
- package/src/types/IInvitation.ts +14 -0
- package/src/types/index.ts +6 -0
- package/src/util/index.ts +6 -0
- package/src/util/invitationStatusValue.ts +22 -0
- package/src/util/toEmoji.ts +22 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React, { type ComponentPropsWithoutRef, type PropsWithChildren } from 'react';
|
|
6
|
+
|
|
7
|
+
import { type ThemedClassName } from '@dxos/react-ui';
|
|
8
|
+
import { mx } from '@dxos/react-ui-theme';
|
|
9
|
+
|
|
10
|
+
export type AuthCodeProps = ThemedClassName<ComponentPropsWithoutRef<'span'>> & {
|
|
11
|
+
code?: string;
|
|
12
|
+
large?: boolean;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export const AuthCode = (props: PropsWithChildren<AuthCodeProps>) => {
|
|
16
|
+
const { code, large, classNames } = props;
|
|
17
|
+
const l = code?.length ?? 0;
|
|
18
|
+
const left = code?.slice(0, l / 2);
|
|
19
|
+
const right = code?.slice(l / 2);
|
|
20
|
+
const handleCopy = () => {
|
|
21
|
+
void navigator.clipboard.writeText(code ?? '');
|
|
22
|
+
};
|
|
23
|
+
return (
|
|
24
|
+
<span
|
|
25
|
+
className={mx(
|
|
26
|
+
large ? 'text-6xl' : 'text-2xl',
|
|
27
|
+
'font-mono pli-2.5 flex gap-1.5 rounded cursor-pointer',
|
|
28
|
+
classNames,
|
|
29
|
+
)}
|
|
30
|
+
onClick={handleCopy}
|
|
31
|
+
>
|
|
32
|
+
<span>{left}</span>
|
|
33
|
+
<span>{right}</span>
|
|
34
|
+
</span>
|
|
35
|
+
);
|
|
36
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React, { createContext, type PropsWithChildren, useCallback, useContext, useState } from 'react';
|
|
6
|
+
|
|
7
|
+
export type ClipboardContextValue = {
|
|
8
|
+
textValue: string;
|
|
9
|
+
setTextValue: (nextValue: string) => Promise<void>;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const ClipboardContext = createContext<ClipboardContextValue>({
|
|
13
|
+
textValue: '',
|
|
14
|
+
setTextValue: async (_) => {},
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export const useClipboardContext = () => useContext(ClipboardContext);
|
|
18
|
+
|
|
19
|
+
export const ClipboardProvider = ({ children }: PropsWithChildren<{}>) => {
|
|
20
|
+
const [textValue, setInternalTextValue] = useState('');
|
|
21
|
+
const setTextValue = useCallback(async (nextValue: string) => {
|
|
22
|
+
await navigator.clipboard.writeText(nextValue);
|
|
23
|
+
return setInternalTextValue(nextValue);
|
|
24
|
+
}, []);
|
|
25
|
+
return <ClipboardContext.Provider value={{ textValue, setTextValue }}>{children}</ClipboardContext.Provider>;
|
|
26
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Check, Copy, type IconProps } from '@phosphor-icons/react';
|
|
6
|
+
import React, { useState } from 'react';
|
|
7
|
+
|
|
8
|
+
import { Button, type ButtonProps, Tooltip, useTranslation } from '@dxos/react-ui';
|
|
9
|
+
import { getSize, mx } from '@dxos/react-ui-theme';
|
|
10
|
+
|
|
11
|
+
import { useClipboardContext } from './ClipboardProvider';
|
|
12
|
+
|
|
13
|
+
export type CopyButtonProps = ButtonProps & {
|
|
14
|
+
value: string;
|
|
15
|
+
iconProps?: IconProps;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const inactiveLabelStyles = 'invisible bs-px -mbe-px overflow-hidden';
|
|
19
|
+
|
|
20
|
+
export const CopyButton = ({ value, classNames, iconProps, ...props }: CopyButtonProps) => {
|
|
21
|
+
const { t } = useTranslation('os');
|
|
22
|
+
const { textValue, setTextValue } = useClipboardContext();
|
|
23
|
+
const isCopied = textValue === value;
|
|
24
|
+
return (
|
|
25
|
+
<Button
|
|
26
|
+
{...props}
|
|
27
|
+
classNames={['inline-flex flex-col justify-center', classNames]}
|
|
28
|
+
onClick={() => setTextValue(value)}
|
|
29
|
+
data-testid='copy-invitation'
|
|
30
|
+
>
|
|
31
|
+
<div role='none' className={mx('flex gap-1 items-center', isCopied && inactiveLabelStyles)}>
|
|
32
|
+
<span className='pli-1'>{t('copy invitation code label')}</span>
|
|
33
|
+
<Copy className={getSize(4)} weight='bold' {...iconProps} />
|
|
34
|
+
</div>
|
|
35
|
+
<div role='none' className={mx('flex gap-1 items-center', !isCopied && inactiveLabelStyles)}>
|
|
36
|
+
<span className='pli-1'>{t('copy invitation code success label')}</span>
|
|
37
|
+
<Check className={getSize(4)} weight='bold' {...iconProps} />
|
|
38
|
+
</div>
|
|
39
|
+
</Button>
|
|
40
|
+
);
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export const CopyButtonIconOnly = ({ value, classNames, iconProps, variant, ...props }: CopyButtonProps) => {
|
|
44
|
+
const { t } = useTranslation('os');
|
|
45
|
+
const { textValue, setTextValue } = useClipboardContext();
|
|
46
|
+
const isCopied = textValue === value;
|
|
47
|
+
const label = isCopied ? t('copy invitation code success label') : t('copy invitation code label');
|
|
48
|
+
const [open, setOpen] = useState(false);
|
|
49
|
+
return (
|
|
50
|
+
<Tooltip.Root delayDuration={1500} open={open} onOpenChange={setOpen}>
|
|
51
|
+
<Tooltip.Portal>
|
|
52
|
+
<Tooltip.Content side='bottom' sideOffset={12} classNames='z-30'>
|
|
53
|
+
<span>{label}</span>
|
|
54
|
+
<Tooltip.Arrow />
|
|
55
|
+
</Tooltip.Content>
|
|
56
|
+
</Tooltip.Portal>
|
|
57
|
+
<Tooltip.Trigger
|
|
58
|
+
aria-label={label}
|
|
59
|
+
{...props}
|
|
60
|
+
onClick={() => setTextValue(value).then(() => setOpen(true))}
|
|
61
|
+
data-testid='copy-invitation'
|
|
62
|
+
asChild
|
|
63
|
+
>
|
|
64
|
+
<Button variant={variant} classNames={['inline-flex flex-col justify-center', classNames]}>
|
|
65
|
+
<Copy className={getSize(5)} weight='bold' {...iconProps} />
|
|
66
|
+
</Button>
|
|
67
|
+
</Tooltip.Trigger>
|
|
68
|
+
</Tooltip.Root>
|
|
69
|
+
);
|
|
70
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2022 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import '@dxosTheme';
|
|
6
|
+
|
|
7
|
+
import { ArrowRight, ClockCounterClockwise } from '@phosphor-icons/react';
|
|
8
|
+
import React, { type PropsWithChildren } from 'react';
|
|
9
|
+
|
|
10
|
+
import { withTheme } from '@dxos/storybook-utils';
|
|
11
|
+
|
|
12
|
+
import { CompoundButton, type CompoundButtonProps } from './CompoundButton';
|
|
13
|
+
|
|
14
|
+
export default {
|
|
15
|
+
title: 'react-shell/CompoundButton',
|
|
16
|
+
component: CompoundButton,
|
|
17
|
+
decorators: [withTheme],
|
|
18
|
+
parameters: { chromatic: { disableSnapshot: false } },
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const Container = ({ children }: PropsWithChildren<{}>) => <div className='flex gap-4'>{children}</div>;
|
|
22
|
+
|
|
23
|
+
export const Default = {
|
|
24
|
+
render: (args: Omit<CompoundButtonProps, 'ref'>) => (
|
|
25
|
+
<Container>
|
|
26
|
+
<CompoundButton {...args} />
|
|
27
|
+
<CompoundButton {...args} disabled />
|
|
28
|
+
</Container>
|
|
29
|
+
),
|
|
30
|
+
args: {
|
|
31
|
+
children: 'Hello',
|
|
32
|
+
description: 'This is a compound button',
|
|
33
|
+
before: <ClockCounterClockwise className='w-5 h-5' />,
|
|
34
|
+
after: <ArrowRight className='w-5 h-5' />,
|
|
35
|
+
disabled: false,
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const Primary = {
|
|
40
|
+
...Default,
|
|
41
|
+
args: {
|
|
42
|
+
children: 'Hello',
|
|
43
|
+
description: 'This is a compound button',
|
|
44
|
+
before: <ClockCounterClockwise className='w-5 h-5' />,
|
|
45
|
+
after: <ArrowRight className='w-5 h-5' />,
|
|
46
|
+
disabled: false,
|
|
47
|
+
variant: 'primary',
|
|
48
|
+
},
|
|
49
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2022 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React, { type ComponentPropsWithoutRef, type ReactNode } from 'react';
|
|
6
|
+
|
|
7
|
+
import { useId, useThemeContext, type ButtonProps, useElevationContext } from '@dxos/react-ui';
|
|
8
|
+
import { descriptionText, descriptionTextPrimary, mx } from '@dxos/react-ui-theme';
|
|
9
|
+
|
|
10
|
+
export interface CompoundButtonSlots {
|
|
11
|
+
root: ComponentPropsWithoutRef<'button'>;
|
|
12
|
+
middle: ComponentPropsWithoutRef<'div'>;
|
|
13
|
+
label: ComponentPropsWithoutRef<'p'>;
|
|
14
|
+
description: ComponentPropsWithoutRef<'p'>;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface CompoundButtonProps extends ButtonProps {
|
|
18
|
+
children?: ReactNode;
|
|
19
|
+
description?: ReactNode;
|
|
20
|
+
before?: ReactNode;
|
|
21
|
+
after?: ReactNode;
|
|
22
|
+
slots?: Partial<CompoundButtonSlots>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const CompoundButton = ({
|
|
26
|
+
children,
|
|
27
|
+
description,
|
|
28
|
+
before,
|
|
29
|
+
after,
|
|
30
|
+
variant = 'default',
|
|
31
|
+
elevation: propsElevation,
|
|
32
|
+
slots = {},
|
|
33
|
+
...buttonProps
|
|
34
|
+
}: Omit<CompoundButtonProps, 'density'>) => {
|
|
35
|
+
const labelId = useId('compoundButton-label');
|
|
36
|
+
const descriptionId = useId('compoundButton-description');
|
|
37
|
+
const { tx } = useThemeContext();
|
|
38
|
+
const elevation = useElevationContext(propsElevation);
|
|
39
|
+
const styleProps = { ...buttonProps, variant, elevation, textWrap: true };
|
|
40
|
+
const buttonClassName = tx(
|
|
41
|
+
'button.root',
|
|
42
|
+
'button button--compound',
|
|
43
|
+
styleProps,
|
|
44
|
+
'flex items-center gap-4 plb-2.5',
|
|
45
|
+
slots.root?.className,
|
|
46
|
+
);
|
|
47
|
+
return (
|
|
48
|
+
<button
|
|
49
|
+
{...buttonProps}
|
|
50
|
+
{...slots.root}
|
|
51
|
+
className={buttonClassName}
|
|
52
|
+
aria-labelledby={labelId}
|
|
53
|
+
{...(description && { 'aria-describedby': descriptionId })}
|
|
54
|
+
>
|
|
55
|
+
{before && (
|
|
56
|
+
<div role='none' className='grow-0'>
|
|
57
|
+
{before}
|
|
58
|
+
</div>
|
|
59
|
+
)}
|
|
60
|
+
<div
|
|
61
|
+
role='none'
|
|
62
|
+
{...slots.middle}
|
|
63
|
+
className={mx('grow whitespace-normal flex flex-col gap-1 text-left', slots.middle?.className)}
|
|
64
|
+
>
|
|
65
|
+
<p {...slots.label} id={labelId} className={mx(slots.label?.className)}>
|
|
66
|
+
{children}
|
|
67
|
+
</p>
|
|
68
|
+
{description && (
|
|
69
|
+
<p
|
|
70
|
+
id={descriptionId}
|
|
71
|
+
{...slots.description}
|
|
72
|
+
className={mx(
|
|
73
|
+
'text-xs mbe-1 font-normal',
|
|
74
|
+
variant === 'primary' ? descriptionTextPrimary : descriptionText,
|
|
75
|
+
slots.description?.className,
|
|
76
|
+
)}
|
|
77
|
+
>
|
|
78
|
+
{description}
|
|
79
|
+
</p>
|
|
80
|
+
)}
|
|
81
|
+
</div>
|
|
82
|
+
{after && (
|
|
83
|
+
<div role='none' className='grow-0'>
|
|
84
|
+
{after}
|
|
85
|
+
</div>
|
|
86
|
+
)}
|
|
87
|
+
</button>
|
|
88
|
+
);
|
|
89
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React from 'react';
|
|
6
|
+
|
|
7
|
+
import { type Device } from '@dxos/react-client/halo';
|
|
8
|
+
import { List, useTranslation } from '@dxos/react-ui';
|
|
9
|
+
import { descriptionText, mx } from '@dxos/react-ui-theme';
|
|
10
|
+
|
|
11
|
+
import { IdentityListItem } from './IdentityListItem';
|
|
12
|
+
|
|
13
|
+
export interface DeviceListProps {
|
|
14
|
+
devices: Device[];
|
|
15
|
+
onSelect?: (device: Device) => void;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const DeviceList = ({ devices, onSelect }: DeviceListProps) => {
|
|
19
|
+
const { t } = useTranslation('os');
|
|
20
|
+
return devices.length > 0 ? (
|
|
21
|
+
<List classNames='flex flex-col gap-2'>
|
|
22
|
+
{devices.map((device) => {
|
|
23
|
+
const identity = {
|
|
24
|
+
identityKey: device.deviceKey,
|
|
25
|
+
profile: {
|
|
26
|
+
displayName: `${device.profile?.platform} (${device.profile?.platformVersion}) on ${device.profile?.os} (${
|
|
27
|
+
device.profile?.osVersion
|
|
28
|
+
}) ${device.profile?.architecture ?? 'Unknown'}-bit`,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
return (
|
|
32
|
+
<IdentityListItem
|
|
33
|
+
key={device.deviceKey.toHex()}
|
|
34
|
+
identity={identity}
|
|
35
|
+
onClick={onSelect && (() => onSelect(device))}
|
|
36
|
+
/>
|
|
37
|
+
);
|
|
38
|
+
})}
|
|
39
|
+
</List>
|
|
40
|
+
) : (
|
|
41
|
+
<div role='none' className='grow flex items-center p-2'>
|
|
42
|
+
<p className={mx(descriptionText, 'text-center is-full')}>{t('empty device list message')}</p>
|
|
43
|
+
</div>
|
|
44
|
+
);
|
|
45
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React, { forwardRef } from 'react';
|
|
6
|
+
|
|
7
|
+
import { generateName } from '@dxos/display-name';
|
|
8
|
+
import { SpaceMember } from '@dxos/react-client/echo';
|
|
9
|
+
import { type Identity } from '@dxos/react-client/halo';
|
|
10
|
+
import { ListItem, Avatar, useJdenticonHref, useId } from '@dxos/react-ui';
|
|
11
|
+
import { mx } from '@dxos/react-ui-theme';
|
|
12
|
+
|
|
13
|
+
type IdentityListItemProps = {
|
|
14
|
+
identity: Identity;
|
|
15
|
+
presence?: SpaceMember['presence'];
|
|
16
|
+
onClick?: () => void;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const IdentityListItem = forwardRef<HTMLLIElement, IdentityListItemProps>(
|
|
20
|
+
({ identity, presence, onClick }: IdentityListItemProps, forwardedRef) => {
|
|
21
|
+
const fallbackValue = identity.identityKey.toHex();
|
|
22
|
+
const labelId = useId('identityListItem__label');
|
|
23
|
+
const jdenticon = useJdenticonHref(fallbackValue ?? '', 12);
|
|
24
|
+
const displayName = identity.profile?.displayName ?? generateName(identity.identityKey.toHex());
|
|
25
|
+
return (
|
|
26
|
+
<ListItem.Root
|
|
27
|
+
classNames={mx('flex gap-2 pis-3 pie-1 items-center', onClick && 'cursor-pointer')}
|
|
28
|
+
onClick={() => onClick?.()}
|
|
29
|
+
data-testid='identity-list-item'
|
|
30
|
+
labelId={labelId}
|
|
31
|
+
ref={forwardedRef}
|
|
32
|
+
>
|
|
33
|
+
<Avatar.Root status={presence === SpaceMember.PresenceState.ONLINE ? 'active' : 'inactive'} labelId={labelId}>
|
|
34
|
+
<Avatar.Frame>
|
|
35
|
+
<Avatar.Fallback href={jdenticon} />
|
|
36
|
+
</Avatar.Frame>
|
|
37
|
+
<Avatar.Label classNames='text-sm truncate pli-2'>{displayName}</Avatar.Label>
|
|
38
|
+
</Avatar.Root>
|
|
39
|
+
</ListItem.Root>
|
|
40
|
+
);
|
|
41
|
+
},
|
|
42
|
+
);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import '@dxosTheme';
|
|
6
|
+
|
|
7
|
+
import React from 'react';
|
|
8
|
+
|
|
9
|
+
import { withTheme } from '@dxos/storybook-utils';
|
|
10
|
+
|
|
11
|
+
import { SpaceMemberListImpl } from './SpaceMemberList';
|
|
12
|
+
import { alice } from '../../testing';
|
|
13
|
+
|
|
14
|
+
export default {
|
|
15
|
+
title: 'react-shell/SpaceMemberList',
|
|
16
|
+
component: SpaceMemberListImpl,
|
|
17
|
+
actions: { argTypesRegex: '^on.*' },
|
|
18
|
+
decorators: [withTheme],
|
|
19
|
+
parameters: { chromatic: { disableSnapshot: false } },
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const Default = (props: any) => {
|
|
23
|
+
return <SpaceMemberListImpl {...props} members={[alice]} />;
|
|
24
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React, { useMemo } from 'react';
|
|
6
|
+
|
|
7
|
+
import { type PublicKey, useClient } from '@dxos/react-client';
|
|
8
|
+
import type { SpaceMember } from '@dxos/react-client/echo';
|
|
9
|
+
import { useMembers } from '@dxos/react-client/echo';
|
|
10
|
+
import { useTranslation, List } from '@dxos/react-ui';
|
|
11
|
+
import { descriptionText, mx } from '@dxos/react-ui-theme';
|
|
12
|
+
|
|
13
|
+
import { IdentityListItem } from './IdentityListItem';
|
|
14
|
+
|
|
15
|
+
// TODO(burdon): Consolidate into single component?
|
|
16
|
+
|
|
17
|
+
export interface SpaceMemberListImplProps {
|
|
18
|
+
members: SpaceMember[];
|
|
19
|
+
onSelect?: (member: SpaceMember) => void;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface SpaceMemberListProps extends Partial<SpaceMemberListImplProps> {
|
|
23
|
+
spaceKey: PublicKey;
|
|
24
|
+
includeSelf?: boolean;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export const SpaceMemberList = ({ spaceKey, includeSelf, onSelect }: SpaceMemberListProps) => {
|
|
28
|
+
const client = useClient();
|
|
29
|
+
const allUnsortedMembers = useMembers(spaceKey);
|
|
30
|
+
const members = useMemo(
|
|
31
|
+
() =>
|
|
32
|
+
includeSelf
|
|
33
|
+
? allUnsortedMembers.sort((member) =>
|
|
34
|
+
member.identity.identityKey.equals(client.halo.identity.get()!.identityKey) ? -1 : 1,
|
|
35
|
+
)
|
|
36
|
+
: allUnsortedMembers.filter(
|
|
37
|
+
(member) => !member.identity.identityKey.equals(client.halo.identity.get()!.identityKey),
|
|
38
|
+
),
|
|
39
|
+
[allUnsortedMembers],
|
|
40
|
+
);
|
|
41
|
+
return <SpaceMemberListImpl members={members} onSelect={onSelect} />;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export const SpaceMemberListImpl = ({ members, onSelect }: SpaceMemberListImplProps) => {
|
|
45
|
+
const { t } = useTranslation('os');
|
|
46
|
+
const visibleMembers = members.filter((member) => member.identity);
|
|
47
|
+
return visibleMembers.length > 0 ? (
|
|
48
|
+
<List classNames='flex flex-col gap-2'>
|
|
49
|
+
{visibleMembers.map((member) => {
|
|
50
|
+
return (
|
|
51
|
+
<IdentityListItem
|
|
52
|
+
key={member.identity.identityKey.toHex()}
|
|
53
|
+
identity={member.identity}
|
|
54
|
+
presence={member.presence}
|
|
55
|
+
onClick={onSelect && (() => onSelect(member))}
|
|
56
|
+
/>
|
|
57
|
+
);
|
|
58
|
+
})}
|
|
59
|
+
</List>
|
|
60
|
+
) : (
|
|
61
|
+
<div role='none' className='grow flex items-center p-2'>
|
|
62
|
+
<p className={mx(descriptionText, 'text-center is-full mlb-2')}>{t('empty space members message')}</p>
|
|
63
|
+
</div>
|
|
64
|
+
);
|
|
65
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import '@dxosTheme';
|
|
6
|
+
|
|
7
|
+
import React from 'react';
|
|
8
|
+
|
|
9
|
+
import { Invitation } from '@dxos/react-client/invitations';
|
|
10
|
+
import { Tooltip } from '@dxos/react-ui';
|
|
11
|
+
import { withTheme } from '@dxos/storybook-utils';
|
|
12
|
+
|
|
13
|
+
import { InvitationList } from './InvitationList';
|
|
14
|
+
import { inviteWithState } from '../../testing';
|
|
15
|
+
|
|
16
|
+
export default {
|
|
17
|
+
title: 'react-shell/InvitationList',
|
|
18
|
+
component: InvitationList,
|
|
19
|
+
decorators: [withTheme],
|
|
20
|
+
actions: { argTypesRegex: '^on.*' },
|
|
21
|
+
parameters: { chromatic: { disableSnapshot: false } },
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const Default = () => {
|
|
25
|
+
return (
|
|
26
|
+
<Tooltip.Provider>
|
|
27
|
+
<InvitationList
|
|
28
|
+
invitations={[
|
|
29
|
+
inviteWithState(Invitation.State.INIT),
|
|
30
|
+
inviteWithState(Invitation.State.CONNECTING),
|
|
31
|
+
inviteWithState(Invitation.State.CONNECTED),
|
|
32
|
+
inviteWithState(Invitation.State.READY_FOR_AUTHENTICATION),
|
|
33
|
+
inviteWithState(Invitation.State.AUTHENTICATING),
|
|
34
|
+
inviteWithState(Invitation.State.SUCCESS),
|
|
35
|
+
inviteWithState(Invitation.State.TIMEOUT),
|
|
36
|
+
inviteWithState(Invitation.State.ERROR),
|
|
37
|
+
inviteWithState(Invitation.State.CANCELLED),
|
|
38
|
+
]}
|
|
39
|
+
send={() => {}}
|
|
40
|
+
createInvitationUrl={(invite) => invite}
|
|
41
|
+
/>
|
|
42
|
+
</Tooltip.Provider>
|
|
43
|
+
);
|
|
44
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
import React from 'react';
|
|
5
|
+
|
|
6
|
+
import type { CancellableInvitationObservable } from '@dxos/react-client/invitations';
|
|
7
|
+
import { List } from '@dxos/react-ui';
|
|
8
|
+
import { mx } from '@dxos/react-ui-theme';
|
|
9
|
+
|
|
10
|
+
import { InvitationListItem, type InvitationListItemProps } from './InvitationListItem';
|
|
11
|
+
import { type SharedInvitationListProps } from './InvitationListProps';
|
|
12
|
+
|
|
13
|
+
export interface InvitationListProps
|
|
14
|
+
extends Omit<InvitationListItemProps, 'invitation' | 'value'>,
|
|
15
|
+
Pick<SharedInvitationListProps, 'send'> {
|
|
16
|
+
invitations: CancellableInvitationObservable[];
|
|
17
|
+
InvitationListItem?: React.ComponentType<InvitationListItemProps>;
|
|
18
|
+
className?: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const InvitationList = ({ invitations, send, ...invitationProps }: InvitationListProps) => {
|
|
22
|
+
const { className, InvitationListItem: Item = InvitationListItem } = invitationProps;
|
|
23
|
+
return (
|
|
24
|
+
<List classNames={mx('flex flex-col gap-2', className)}>
|
|
25
|
+
{invitations.map((invitation) => {
|
|
26
|
+
const value = invitation.get().invitationId;
|
|
27
|
+
return <Item key={value} send={send} invitation={invitation} {...invitationProps} />;
|
|
28
|
+
})}
|
|
29
|
+
</List>
|
|
30
|
+
);
|
|
31
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
import React, { useCallback } from 'react';
|
|
5
|
+
|
|
6
|
+
import { type PublicKey } from '@dxos/react-client';
|
|
7
|
+
import { useSpace, useSpaceInvitations } from '@dxos/react-client/echo';
|
|
8
|
+
import type { CancellableInvitationObservable } from '@dxos/react-client/invitations';
|
|
9
|
+
|
|
10
|
+
import { InvitationList } from './InvitationList';
|
|
11
|
+
import { type SharedInvitationListProps } from './InvitationListProps';
|
|
12
|
+
|
|
13
|
+
export interface InvitationListContainerProps extends SharedInvitationListProps {
|
|
14
|
+
spaceKey: PublicKey;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const InvitationListContainer = ({ spaceKey, createInvitationUrl, send }: InvitationListContainerProps) => {
|
|
18
|
+
const space = useSpace(spaceKey);
|
|
19
|
+
const invitations = useSpaceInvitations(spaceKey);
|
|
20
|
+
const onClickRemove = useCallback(
|
|
21
|
+
(invitation: CancellableInvitationObservable) => {
|
|
22
|
+
void invitation.cancel();
|
|
23
|
+
},
|
|
24
|
+
[space],
|
|
25
|
+
);
|
|
26
|
+
return <InvitationList invitations={invitations} {...{ onClickRemove, createInvitationUrl, send }} />;
|
|
27
|
+
};
|