@dxos/shell 0.4.10-main.d4e372f → 0.4.10-main.e158b1a

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.
Files changed (120) hide show
  1. package/dist/bundle/shell.mjs +8274 -8209
  2. package/dist/bundle/shell.mjs.map +1 -1
  3. package/dist/bundle/shell.umd.js +53 -53
  4. package/dist/bundle/shell.umd.js.map +1 -1
  5. package/dist/bundle/style.css +1 -1
  6. package/dist/lib/browser/meta.json +1 -1
  7. package/dist/lib/browser/react.mjs +414 -332
  8. package/dist/lib/browser/react.mjs.map +4 -4
  9. package/dist/lib/browser/testing/index.mjs +5 -7
  10. package/dist/lib/browser/testing/index.mjs.map +3 -3
  11. package/dist/types/src/composites/IdentityDialog/IdentityDialog.js +1 -1
  12. package/dist/types/src/composites/IdentityDialog/IdentityDialog.js.map +1 -1
  13. package/dist/types/src/composites/Shell/Shell.d.ts.map +1 -1
  14. package/dist/types/src/composites/Shell/Shell.js +18 -6
  15. package/dist/types/src/composites/Shell/Shell.js.map +1 -1
  16. package/dist/types/src/composites/StatusDialog/StatusDialog.d.ts +2 -0
  17. package/dist/types/src/composites/StatusDialog/StatusDialog.d.ts.map +1 -0
  18. package/dist/types/src/composites/StatusDialog/StatusDialog.js +22 -0
  19. package/dist/types/src/composites/StatusDialog/StatusDialog.js.map +1 -0
  20. package/dist/types/src/composites/StatusDialog/index.d.ts +2 -0
  21. package/dist/types/src/composites/StatusDialog/index.d.ts.map +1 -0
  22. package/dist/types/src/composites/StatusDialog/index.js +21 -0
  23. package/dist/types/src/composites/StatusDialog/index.js.map +1 -0
  24. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts +1 -1
  25. package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -1
  26. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js +15 -8
  27. package/dist/types/src/panels/IdentityPanel/IdentityPanel.js.map +1 -1
  28. package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts +5 -3
  29. package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts.map +1 -1
  30. package/dist/types/src/panels/IdentityPanel/identityMachine.d.ts +3 -1
  31. package/dist/types/src/panels/IdentityPanel/identityMachine.d.ts.map +1 -1
  32. package/dist/types/src/panels/IdentityPanel/identityMachine.js +15 -2
  33. package/dist/types/src/panels/IdentityPanel/identityMachine.js.map +1 -1
  34. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.d.ts.map +1 -1
  35. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js +9 -5
  36. package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js.map +1 -1
  37. package/dist/types/src/panels/IdentityPanel/steps/index.d.ts +0 -1
  38. package/dist/types/src/panels/IdentityPanel/steps/index.d.ts.map +1 -1
  39. package/dist/types/src/panels/IdentityPanel/steps/index.js +0 -1
  40. package/dist/types/src/panels/IdentityPanel/steps/index.js.map +1 -1
  41. package/dist/types/src/panels/JoinPanel/JoinPanel.d.ts +1 -1
  42. package/dist/types/src/panels/JoinPanel/JoinPanel.d.ts.map +1 -1
  43. package/dist/types/src/panels/JoinPanel/JoinPanel.js +11 -5
  44. package/dist/types/src/panels/JoinPanel/JoinPanel.js.map +1 -1
  45. package/dist/types/src/panels/JoinPanel/JoinPanel.stories.d.ts +1 -1
  46. package/dist/types/src/panels/JoinPanel/JoinPanel.stories.d.ts.map +1 -1
  47. package/dist/types/src/panels/JoinPanel/JoinPanel.stories.js +2 -1
  48. package/dist/types/src/panels/JoinPanel/JoinPanel.stories.js.map +1 -1
  49. package/dist/types/src/panels/JoinPanel/JoinPanelProps.d.ts +8 -5
  50. package/dist/types/src/panels/JoinPanel/JoinPanelProps.d.ts.map +1 -1
  51. package/dist/types/src/panels/JoinPanel/joinMachine.d.ts +3 -2
  52. package/dist/types/src/panels/JoinPanel/joinMachine.d.ts.map +1 -1
  53. package/dist/types/src/panels/JoinPanel/joinMachine.js +7 -0
  54. package/dist/types/src/panels/JoinPanel/joinMachine.js.map +1 -1
  55. package/dist/types/src/panels/JoinPanel/steps/index.d.ts +0 -1
  56. package/dist/types/src/panels/JoinPanel/steps/index.d.ts.map +1 -1
  57. package/dist/types/src/panels/JoinPanel/steps/index.js +0 -1
  58. package/dist/types/src/panels/JoinPanel/steps/index.js.map +1 -1
  59. package/dist/types/src/panels/StatusPanel/StatusPanel.d.ts +4 -0
  60. package/dist/types/src/panels/StatusPanel/StatusPanel.d.ts.map +1 -0
  61. package/dist/types/src/panels/StatusPanel/StatusPanel.js +19 -0
  62. package/dist/types/src/panels/StatusPanel/StatusPanel.js.map +1 -0
  63. package/dist/types/src/panels/StatusPanel/index.d.ts +2 -0
  64. package/dist/types/src/panels/StatusPanel/index.d.ts.map +1 -0
  65. package/dist/types/src/panels/StatusPanel/index.js +21 -0
  66. package/dist/types/src/panels/StatusPanel/index.js.map +1 -0
  67. package/dist/types/src/panels/index.d.ts +1 -0
  68. package/dist/types/src/panels/index.d.ts.map +1 -1
  69. package/dist/types/src/panels/index.js +1 -0
  70. package/dist/types/src/panels/index.js.map +1 -1
  71. package/dist/types/src/steps/ConfirmReset.d.ts +16 -0
  72. package/dist/types/src/steps/ConfirmReset.d.ts.map +1 -0
  73. package/dist/types/src/steps/ConfirmReset.js +71 -0
  74. package/dist/types/src/steps/ConfirmReset.js.map +1 -0
  75. package/dist/types/src/steps/StepProps.d.ts +4 -1
  76. package/dist/types/src/steps/StepProps.d.ts.map +1 -1
  77. package/dist/types/src/steps/index.d.ts +1 -0
  78. package/dist/types/src/steps/index.d.ts.map +1 -1
  79. package/dist/types/src/steps/index.js +1 -0
  80. package/dist/types/src/steps/index.js.map +1 -1
  81. package/dist/types/src/testing/shell-manager.d.ts.map +1 -1
  82. package/dist/types/src/testing/shell-manager.js +5 -7
  83. package/dist/types/src/testing/shell-manager.js.map +1 -1
  84. package/dist/types/src/translations/locales/en-US.d.ts +4 -1
  85. package/dist/types/src/translations/locales/en-US.d.ts.map +1 -1
  86. package/dist/types/src/translations/locales/en-US.js +8 -5
  87. package/dist/types/src/translations/locales/en-US.js.map +1 -1
  88. package/package.json +19 -19
  89. package/src/composites/IdentityDialog/IdentityDialog.tsx +1 -1
  90. package/src/composites/Shell/Shell.tsx +23 -5
  91. package/src/composites/StatusDialog/StatusDialog.tsx +24 -0
  92. package/src/composites/StatusDialog/index.ts +5 -0
  93. package/src/panels/IdentityPanel/IdentityPanel.tsx +31 -14
  94. package/src/panels/IdentityPanel/IdentityPanelProps.ts +7 -3
  95. package/src/panels/IdentityPanel/identityMachine.ts +25 -3
  96. package/src/panels/IdentityPanel/steps/IdentityActionChooser.tsx +16 -7
  97. package/src/panels/IdentityPanel/steps/index.ts +0 -1
  98. package/src/panels/JoinPanel/JoinPanel.stories.tsx +3 -2
  99. package/src/panels/JoinPanel/JoinPanel.tsx +21 -9
  100. package/src/panels/JoinPanel/JoinPanelProps.ts +9 -5
  101. package/src/panels/JoinPanel/joinMachine.ts +12 -2
  102. package/src/panels/JoinPanel/steps/index.ts +0 -1
  103. package/src/panels/StatusPanel/StatusPanel.tsx +19 -0
  104. package/src/panels/StatusPanel/index.ts +5 -0
  105. package/src/panels/index.ts +1 -0
  106. package/src/steps/ConfirmReset.tsx +112 -0
  107. package/src/steps/StepProps.ts +2 -1
  108. package/src/steps/index.ts +1 -0
  109. package/src/testing/shell-manager.ts +5 -7
  110. package/src/translations/locales/en-US.ts +9 -5
  111. package/dist/types/src/panels/IdentityPanel/steps/SignOutChooser.d.ts +0 -16
  112. package/dist/types/src/panels/IdentityPanel/steps/SignOutChooser.d.ts.map +0 -1
  113. package/dist/types/src/panels/IdentityPanel/steps/SignOutChooser.js +0 -40
  114. package/dist/types/src/panels/IdentityPanel/steps/SignOutChooser.js.map +0 -1
  115. package/dist/types/src/panels/JoinPanel/steps/ResetIdentity.d.ts +0 -15
  116. package/dist/types/src/panels/JoinPanel/steps/ResetIdentity.d.ts.map +0 -1
  117. package/dist/types/src/panels/JoinPanel/steps/ResetIdentity.js +0 -67
  118. package/dist/types/src/panels/JoinPanel/steps/ResetIdentity.js.map +0 -1
  119. package/src/panels/IdentityPanel/steps/SignOutChooser.tsx +0 -77
  120. package/src/panels/JoinPanel/steps/ResetIdentity.tsx +0 -92
@@ -1,67 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2023 DXOS.org
4
- //
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || function (mod) {
22
- if (mod && mod.__esModule) return mod;
23
- var result = {};
24
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
- __setModuleDefault(result, mod);
26
- return result;
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.ResetIdentityImpl = exports.ResetIdentity = void 0;
30
- const react_1 = __importStar(require("react"));
31
- const log_1 = require("@dxos/log");
32
- const react_client_1 = require("@dxos/react-client");
33
- const react_ui_1 = require("@dxos/react-ui");
34
- const components_1 = require("../../../components");
35
- const ResetIdentity = ({ send, active, onCancelResetIdentity }) => {
36
- const client = (0, react_client_1.useClient)();
37
- const { t } = (0, react_ui_1.useTranslation)('os');
38
- const [validationMessage, setValidationMessage] = (0, react_1.useState)('');
39
- const [pending, setPending] = (0, react_1.useState)(false);
40
- const resetIdentity = () => {
41
- setPending(true);
42
- void client.reset().then(() => send === null || send === void 0 ? void 0 : send({ type: 'resetIdentity' }), (error) => {
43
- log_1.log.catch(error);
44
- setValidationMessage(t('failed to reset identity message'));
45
- setPending(false);
46
- });
47
- };
48
- return (react_1.default.createElement(exports.ResetIdentityImpl, { disabled: !active, pending: pending, validationMessage: validationMessage, onConfirm: () => resetIdentity(), onCancelResetIdentity: onCancelResetIdentity }));
49
- };
50
- exports.ResetIdentity = ResetIdentity;
51
- const ResetIdentityImpl = ({ disabled, pending, validationMessage, onConfirm, onCancelResetIdentity, }) => {
52
- const { t } = (0, react_ui_1.useTranslation)('os');
53
- const confirmationValue = t('confirmation value');
54
- const [inputValue, setInputValue] = (0, react_1.useState)('');
55
- return (react_1.default.createElement(react_1.default.Fragment, null,
56
- react_1.default.createElement("div", { role: 'none', className: 'grow flex flex-col justify-center' },
57
- react_1.default.createElement(components_1.Input, { validationMessage, label: react_1.default.createElement(components_1.StepHeading, null, t('reset identity input label', { confirmationValue })), disabled: disabled, "data-testid": 'reset-identity-input', placeholder: confirmationValue, onChange: ({ target: { value } }) => setInputValue(value) })),
58
- react_1.default.createElement(components_1.Actions, null,
59
- react_1.default.createElement(components_1.Action, { disabled: disabled, onClick: () => onCancelResetIdentity === null || onCancelResetIdentity === void 0 ? void 0 : onCancelResetIdentity(), "data-testid": 'reset-identity-input-cancel' }, t('cancel label')),
60
- react_1.default.createElement(components_1.Action
61
- // TODO(wittjosiah): Probably make this red?
62
- , {
63
- // TODO(wittjosiah): Probably make this red?
64
- variant: 'destructive', disabled: disabled || pending || inputValue !== confirmationValue, onClick: () => onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(), "data-testid": 'reset-identity-input-confirm' }, pending ? t('reset in progress label') : t('confirm label')))));
65
- };
66
- exports.ResetIdentityImpl = ResetIdentityImpl;
67
- //# sourceMappingURL=ResetIdentity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResetIdentity.js","sourceRoot":"","sources":["../../../../../../src/panels/JoinPanel/steps/ResetIdentity.tsx"],"names":[],"mappings":"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"}
@@ -1,77 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { Warning } from '@phosphor-icons/react';
6
- import React from 'react';
7
- import { type Event, type SingleOrArray } from 'xstate';
8
-
9
- import { Message, useTranslation } from '@dxos/react-ui';
10
- import { getSize, mx } from '@dxos/react-ui-theme';
11
-
12
- import { Action, Actions } from '../../../components';
13
- import { type IdentityPanelStepProps } from '../IdentityPanelProps';
14
- import { type IdentityEvent } from '../identityMachine';
15
-
16
- export interface SignOutChooserProps extends Omit<IdentityPanelStepProps, 'send'> {
17
- send?: (event: SingleOrArray<Event<IdentityEvent>>) => void;
18
- onResetDevice?: () => Promise<void>;
19
- onJoinNewIdentity?: () => void;
20
- }
21
-
22
- export const SignOutChooser = (props: SignOutChooserProps) => {
23
- const { t } = useTranslation('os');
24
- const onResetDevice = () => {
25
- if (window.confirm(t('reset device confirm message'))) {
26
- void props.onResetDevice?.();
27
- }
28
- };
29
- return (
30
- <SignOutChooserImpl
31
- disabled={!props.active}
32
- onBack={() => props.send?.({ type: 'unchooseAction' })}
33
- onResetDevice={onResetDevice}
34
- onJoinNewIdentity={props.onJoinNewIdentity}
35
- />
36
- );
37
- };
38
-
39
- export type SignOutChooserImplProps = {
40
- disabled?: boolean;
41
- onResetDevice?: () => void;
42
- onJoinNewIdentity?: () => void;
43
- onBack?: () => void;
44
- };
45
-
46
- const SignOutChooserImpl = ({ disabled, onResetDevice, onJoinNewIdentity, onBack }: SignOutChooserImplProps) => {
47
- const { t } = useTranslation('os');
48
- return (
49
- <>
50
- <div role='none' className='grow flex flex-col justify-center'>
51
- <Message.Root valence='error'>
52
- <Message.Title>
53
- <Warning className={mx(getSize(6), 'inline mie-2')} />
54
- {t('sign out chooser title')}
55
- </Message.Title>
56
- <Message.Body>{t('sign out chooser message')}</Message.Body>
57
- </Message.Root>
58
- </div>
59
- <Actions>
60
- <Action disabled={disabled} onClick={onBack}>
61
- {t('back label')}
62
- </Action>
63
- <Action
64
- variant='destructive'
65
- data-testid='sign-out.join-new-identity'
66
- disabled={disabled}
67
- onClick={onJoinNewIdentity}
68
- >
69
- {t('join new identity label')}
70
- </Action>
71
- <Action variant='destructive' data-testid='sign-out.reset-device' disabled={disabled} onClick={onResetDevice}>
72
- {t('reset device label')}
73
- </Action>
74
- </Actions>
75
- </>
76
- );
77
- };
@@ -1,92 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import React, { useState } from 'react';
6
-
7
- import { log } from '@dxos/log';
8
- import { useClient } from '@dxos/react-client';
9
- import { useTranslation } from '@dxos/react-ui';
10
-
11
- import { Action, Actions, StepHeading, Input } from '../../../components';
12
- import { type JoinStepProps } from '../JoinPanelProps';
13
-
14
- export type ResetIdentityProps = JoinStepProps & {
15
- method: 'reset identity';
16
- onCancelResetIdentity?: () => void;
17
- };
18
-
19
- export type ResetIdentityImplProps = {
20
- disabled?: boolean;
21
- pending?: boolean;
22
- validationMessage?: string;
23
- onConfirm?: () => void;
24
- onCancelResetIdentity?: () => void;
25
- };
26
-
27
- export const ResetIdentity = ({ send, active, onCancelResetIdentity }: ResetIdentityProps) => {
28
- const client = useClient();
29
- const { t } = useTranslation('os');
30
- const [validationMessage, setValidationMessage] = useState('');
31
- const [pending, setPending] = useState(false);
32
- const resetIdentity = () => {
33
- setPending(true);
34
- void client.reset().then(
35
- () => send?.({ type: 'resetIdentity' }),
36
- (error) => {
37
- log.catch(error);
38
- setValidationMessage(t('failed to reset identity message'));
39
- setPending(false);
40
- },
41
- );
42
- };
43
- return (
44
- <ResetIdentityImpl
45
- disabled={!active}
46
- pending={pending}
47
- validationMessage={validationMessage}
48
- onConfirm={() => resetIdentity()}
49
- onCancelResetIdentity={onCancelResetIdentity}
50
- />
51
- );
52
- };
53
-
54
- export const ResetIdentityImpl = ({
55
- disabled,
56
- pending,
57
- validationMessage,
58
- onConfirm,
59
- onCancelResetIdentity,
60
- }: ResetIdentityImplProps) => {
61
- const { t } = useTranslation('os');
62
- const confirmationValue = t('confirmation value');
63
- const [inputValue, setInputValue] = useState('');
64
- return (
65
- <>
66
- <div role='none' className='grow flex flex-col justify-center'>
67
- <Input
68
- {...{ validationMessage }}
69
- label={<StepHeading>{t('reset identity input label', { confirmationValue })}</StepHeading>}
70
- disabled={disabled}
71
- data-testid='reset-identity-input'
72
- placeholder={confirmationValue}
73
- onChange={({ target: { value } }) => setInputValue(value)}
74
- />
75
- </div>
76
- <Actions>
77
- <Action disabled={disabled} onClick={() => onCancelResetIdentity?.()} data-testid='reset-identity-input-cancel'>
78
- {t('cancel label')}
79
- </Action>
80
- <Action
81
- // TODO(wittjosiah): Probably make this red?
82
- variant='destructive'
83
- disabled={disabled || pending || inputValue !== confirmationValue}
84
- onClick={() => onConfirm?.()}
85
- data-testid='reset-identity-input-confirm'
86
- >
87
- {pending ? t('reset in progress label') : t('confirm label')}
88
- </Action>
89
- </Actions>
90
- </>
91
- );
92
- };