@dxos/plugin-client 0.8.4-main.69d29f4 → 0.8.4-main.6fa680abb7
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/dist/lib/browser/DevicesContainer-3N7ANEJ7.mjs +268 -0
- package/dist/lib/browser/DevicesContainer-3N7ANEJ7.mjs.map +7 -0
- package/dist/lib/browser/JoinDialog-VTTK7NHO.mjs +59 -0
- package/dist/lib/browser/JoinDialog-VTTK7NHO.mjs.map +7 -0
- package/dist/lib/browser/ProfileContainer-XV7OXJC2.mjs +171 -0
- package/dist/lib/browser/ProfileContainer-XV7OXJC2.mjs.map +7 -0
- package/dist/lib/browser/RecoveryCodeDialog-WO34OZEJ.mjs +60 -0
- package/dist/lib/browser/RecoveryCodeDialog-WO34OZEJ.mjs.map +7 -0
- package/dist/lib/browser/RecoveryCredentialsContainer-G22FSTIX.mjs +57 -0
- package/dist/lib/browser/RecoveryCredentialsContainer-G22FSTIX.mjs.map +7 -0
- package/dist/lib/browser/ResetDialog-W24FOWBQ.mjs +52 -0
- package/dist/lib/browser/ResetDialog-W24FOWBQ.mjs.map +7 -0
- package/dist/lib/browser/{app-graph-builder-3FGBMLTF.mjs → app-graph-builder-GGJKFY3X.mjs} +9 -6
- package/dist/lib/browser/app-graph-builder-GGJKFY3X.mjs.map +7 -0
- package/dist/lib/browser/{chunk-4BZGRIFS.mjs → chunk-FVEKZBM7.mjs} +34 -44
- package/dist/lib/browser/chunk-FVEKZBM7.mjs.map +7 -0
- package/dist/lib/browser/{chunk-F7H2Y3Z2.mjs → chunk-GSVYEYVS.mjs} +4 -4
- package/dist/lib/browser/chunk-HSFDKP5D.mjs +15 -0
- package/dist/lib/browser/{chunk-G7C3S2BE.mjs.map → chunk-HSFDKP5D.mjs.map} +1 -1
- package/dist/lib/browser/chunk-JHSBBOCI.mjs +15 -0
- package/dist/lib/browser/chunk-JHSBBOCI.mjs.map +7 -0
- package/dist/lib/browser/cli/index.mjs +60 -49
- package/dist/lib/browser/cli/index.mjs.map +3 -3
- package/dist/lib/browser/{client-IX5LMWV4.mjs → client-BXCP3EUE.mjs} +11 -11
- package/dist/lib/browser/client-BXCP3EUE.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +26 -23
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{migrations-3EBTAW3N.mjs → migrations-GKUA2ARL.mjs} +6 -5
- package/dist/lib/browser/migrations-GKUA2ARL.mjs.map +7 -0
- package/dist/lib/browser/{operation-resolver-2NT3ISVP.mjs → operation-resolver-VSWA74RS.mjs} +24 -23
- package/dist/lib/browser/operation-resolver-VSWA74RS.mjs.map +7 -0
- package/dist/lib/browser/{react-context-4UABG3GP.mjs → react-context-GZ3T5UON.mjs} +8 -6
- package/dist/lib/browser/react-context-GZ3T5UON.mjs.map +7 -0
- package/dist/lib/browser/react-surface-5VZP34X3.mjs +77 -0
- package/dist/lib/browser/react-surface-5VZP34X3.mjs.map +7 -0
- package/dist/lib/browser/{schema-defs-O7VLP745.mjs → schema-defs-KAG6HQMI.mjs} +8 -6
- package/dist/lib/browser/schema-defs-KAG6HQMI.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +2 -1
- package/dist/lib/node-esm/DevicesContainer-V7HEUPO7.mjs +269 -0
- package/dist/lib/node-esm/DevicesContainer-V7HEUPO7.mjs.map +7 -0
- package/dist/lib/node-esm/JoinDialog-XVKW4SLT.mjs +60 -0
- package/dist/lib/node-esm/JoinDialog-XVKW4SLT.mjs.map +7 -0
- package/dist/lib/node-esm/ProfileContainer-B5LJ6TMU.mjs +172 -0
- package/dist/lib/node-esm/ProfileContainer-B5LJ6TMU.mjs.map +7 -0
- package/dist/lib/node-esm/RecoveryCodeDialog-YIRGXM7N.mjs +61 -0
- package/dist/lib/node-esm/RecoveryCodeDialog-YIRGXM7N.mjs.map +7 -0
- package/dist/lib/node-esm/RecoveryCredentialsContainer-MVJEFNXX.mjs +58 -0
- package/dist/lib/node-esm/RecoveryCredentialsContainer-MVJEFNXX.mjs.map +7 -0
- package/dist/lib/node-esm/ResetDialog-GGBWSQZO.mjs +54 -0
- package/dist/lib/node-esm/ResetDialog-GGBWSQZO.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-2PIYVUNC.mjs → app-graph-builder-PTNZ46NN.mjs} +9 -6
- package/dist/lib/node-esm/app-graph-builder-PTNZ46NN.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-BOTJSPCT.mjs +17 -0
- package/dist/lib/node-esm/chunk-BOTJSPCT.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-JAF64TFQ.mjs → chunk-DT2ZNOGU.mjs} +33 -44
- package/dist/lib/node-esm/chunk-DT2ZNOGU.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-BCELGXRI.mjs → chunk-OFJUOKY7.mjs} +4 -4
- package/dist/lib/node-esm/chunk-VLNCZYIC.mjs +16 -0
- package/dist/lib/node-esm/{chunk-PRAFFO54.mjs.map → chunk-VLNCZYIC.mjs.map} +1 -1
- package/dist/lib/node-esm/cli/index.mjs +60 -49
- package/dist/lib/node-esm/cli/index.mjs.map +3 -3
- package/dist/lib/node-esm/{client-FFPK5UFP.mjs → client-EGZHGRRC.mjs} +11 -11
- package/dist/lib/node-esm/client-EGZHGRRC.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +26 -23
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{migrations-WSZSFGDK.mjs → migrations-4NEKCBGU.mjs} +6 -5
- package/dist/lib/node-esm/migrations-4NEKCBGU.mjs.map +7 -0
- package/dist/lib/node-esm/{operation-resolver-VW5R2BE4.mjs → operation-resolver-4GWB3YZG.mjs} +24 -23
- package/dist/lib/node-esm/operation-resolver-4GWB3YZG.mjs.map +7 -0
- package/dist/lib/node-esm/{react-context-UVXMGPW4.mjs → react-context-T2ORT5CC.mjs} +8 -6
- package/dist/lib/node-esm/react-context-T2ORT5CC.mjs.map +7 -0
- package/dist/lib/node-esm/react-surface-B65OUZYI.mjs +78 -0
- package/dist/lib/node-esm/react-surface-B65OUZYI.mjs.map +7 -0
- package/dist/lib/node-esm/{schema-defs-QLRGBIKY.mjs → schema-defs-GXQ47JZN.mjs} +8 -6
- package/dist/lib/node-esm/schema-defs-GXQ47JZN.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +2 -1
- package/dist/types/src/ClientPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/client/client.d.ts +2 -2
- package/dist/types/src/capabilities/client/client.d.ts.map +1 -1
- package/dist/types/src/capabilities/client/index.d.ts +2 -1
- package/dist/types/src/capabilities/client/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/migrations/migrations.d.ts +1 -1
- package/dist/types/src/capabilities/migrations/migrations.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-context/react-context.d.ts +1 -1
- package/dist/types/src/capabilities/react-context/react-context.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/schema-defs/schema-defs.d.ts +1 -1
- package/dist/types/src/capabilities/schema-defs/schema-defs.d.ts.map +1 -1
- package/dist/types/src/cli/commands/halo/create/create.d.ts.map +1 -1
- package/dist/types/src/cli/commands/profile/create.d.ts +2 -1
- package/dist/types/src/cli/commands/profile/create.d.ts.map +1 -1
- package/dist/types/src/cli/commands/profile/delete.d.ts +1 -1
- package/dist/types/src/cli/commands/profile/delete.d.ts.map +1 -1
- package/dist/types/src/cli/commands/profile/list.d.ts.map +1 -1
- package/dist/types/src/cli/plugin.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +0 -6
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/DevicesContainer/DevicesContainer.d.ts.map +1 -0
- package/dist/types/src/{components → containers/DevicesContainer}/DevicesContainer.stories.d.ts +9 -7
- package/dist/types/src/containers/DevicesContainer/DevicesContainer.stories.d.ts.map +1 -0
- package/dist/types/src/containers/DevicesContainer/index.d.ts +3 -0
- package/dist/types/src/containers/DevicesContainer/index.d.ts.map +1 -0
- package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts.map +1 -0
- package/dist/types/src/containers/JoinDialog/index.d.ts +3 -0
- package/dist/types/src/containers/JoinDialog/index.d.ts.map +1 -0
- package/dist/types/src/containers/ProfileContainer/ProfileContainer.d.ts.map +1 -0
- package/dist/types/src/containers/ProfileContainer/ProfileContainer.stories.d.ts.map +1 -0
- package/dist/types/src/containers/ProfileContainer/index.d.ts +3 -0
- package/dist/types/src/containers/ProfileContainer/index.d.ts.map +1 -0
- package/dist/types/src/containers/RecoveryCodeDialog/RecoveryCodeDialog.d.ts.map +1 -0
- package/dist/types/src/containers/RecoveryCodeDialog/RecoveryCodeDialog.stories.d.ts.map +1 -0
- package/dist/types/src/containers/RecoveryCodeDialog/index.d.ts +4 -0
- package/dist/types/src/containers/RecoveryCodeDialog/index.d.ts.map +1 -0
- package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.d.ts.map +1 -0
- package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.stories.d.ts.map +1 -0
- package/dist/types/src/containers/RecoveryCredentialsContainer/index.d.ts +3 -0
- package/dist/types/src/containers/RecoveryCredentialsContainer/index.d.ts.map +1 -0
- package/dist/types/src/{components → containers/ResetDialog}/ResetDialog.d.ts +1 -1
- package/dist/types/src/containers/ResetDialog/ResetDialog.d.ts.map +1 -0
- package/dist/types/src/{components → containers/ResetDialog}/ResetDialog.stories.d.ts +1 -1
- package/dist/types/src/containers/ResetDialog/ResetDialog.stories.d.ts.map +1 -0
- package/dist/types/src/containers/ResetDialog/index.d.ts +4 -0
- package/dist/types/src/containers/ResetDialog/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +10 -0
- package/dist/types/src/containers/index.d.ts.map +1 -0
- package/dist/types/src/types/capabilities.d.ts +1 -1
- package/dist/types/src/types/capabilities.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +36 -32
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +36 -35
- package/src/ClientPlugin.ts +27 -19
- package/src/capabilities/app-graph-builder/app-graph-builder.ts +4 -3
- package/src/capabilities/client/client.ts +7 -5
- package/src/capabilities/migrations/migrations.ts +3 -3
- package/src/capabilities/operation-resolver/operation-resolver.ts +13 -12
- package/src/capabilities/react-context/react-context.tsx +3 -3
- package/src/capabilities/react-surface/react-surface.tsx +12 -12
- package/src/capabilities/schema-defs/schema-defs.ts +7 -6
- package/src/cli/commands/edge/status.ts +2 -2
- package/src/cli/commands/halo/create/create.ts +2 -2
- package/src/cli/commands/profile/create.ts +9 -6
- package/src/cli/commands/profile/delete.ts +5 -2
- package/src/cli/commands/profile/list.ts +13 -11
- package/src/cli/plugin.ts +7 -6
- package/src/components/index.ts +0 -7
- package/src/constants.ts +3 -3
- package/src/{components → containers/DevicesContainer}/DevicesContainer.stories.tsx +8 -6
- package/src/{components → containers/DevicesContainer}/DevicesContainer.tsx +49 -57
- package/src/containers/DevicesContainer/index.ts +7 -0
- package/src/{components → containers/JoinDialog}/JoinDialog.tsx +8 -6
- package/src/containers/JoinDialog/index.ts +7 -0
- package/src/{components → containers/ProfileContainer}/ProfileContainer.stories.tsx +4 -4
- package/src/{components → containers/ProfileContainer}/ProfileContainer.tsx +20 -28
- package/src/containers/ProfileContainer/index.ts +7 -0
- package/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.stories.tsx +4 -4
- package/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.tsx +28 -25
- package/src/containers/RecoveryCodeDialog/index.ts +8 -0
- package/src/{components → containers/RecoveryCredentialsContainer}/RecoveryCredentialsContainer.stories.tsx +8 -6
- package/src/{components → containers/RecoveryCredentialsContainer}/RecoveryCredentialsContainer.tsx +19 -19
- package/src/containers/RecoveryCredentialsContainer/index.ts +7 -0
- package/src/{components → containers/ResetDialog}/ResetDialog.stories.tsx +27 -14
- package/src/{components → containers/ResetDialog}/ResetDialog.tsx +10 -10
- package/src/containers/ResetDialog/index.ts +8 -0
- package/src/containers/index.ts +15 -0
- package/src/meta.ts +1 -1
- package/src/translations.ts +1 -1
- package/src/types/capabilities.ts +3 -3
- package/src/types/events.ts +5 -5
- package/src/types/schema.ts +28 -23
- package/dist/lib/browser/app-graph-builder-3FGBMLTF.mjs.map +0 -7
- package/dist/lib/browser/chunk-4BZGRIFS.mjs.map +0 -7
- package/dist/lib/browser/chunk-G7C3S2BE.mjs +0 -15
- package/dist/lib/browser/client-IX5LMWV4.mjs.map +0 -7
- package/dist/lib/browser/migrations-3EBTAW3N.mjs.map +0 -7
- package/dist/lib/browser/operation-resolver-2NT3ISVP.mjs.map +0 -7
- package/dist/lib/browser/react-context-4UABG3GP.mjs.map +0 -7
- package/dist/lib/browser/react-surface-RSQ74XCT.mjs +0 -675
- package/dist/lib/browser/react-surface-RSQ74XCT.mjs.map +0 -7
- package/dist/lib/browser/schema-defs-O7VLP745.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-2PIYVUNC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JAF64TFQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PRAFFO54.mjs +0 -16
- package/dist/lib/node-esm/client-FFPK5UFP.mjs.map +0 -7
- package/dist/lib/node-esm/migrations-WSZSFGDK.mjs.map +0 -7
- package/dist/lib/node-esm/operation-resolver-VW5R2BE4.mjs.map +0 -7
- package/dist/lib/node-esm/react-context-UVXMGPW4.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-KBHANGGC.mjs +0 -676
- package/dist/lib/node-esm/react-surface-KBHANGGC.mjs.map +0 -7
- package/dist/lib/node-esm/schema-defs-QLRGBIKY.mjs.map +0 -7
- package/dist/types/src/components/DevicesContainer.d.ts.map +0 -1
- package/dist/types/src/components/DevicesContainer.stories.d.ts.map +0 -1
- package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
- package/dist/types/src/components/ProfileContainer.d.ts.map +0 -1
- package/dist/types/src/components/ProfileContainer.stories.d.ts.map +0 -1
- package/dist/types/src/components/RecoveryCodeDialog.d.ts.map +0 -1
- package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts.map +0 -1
- package/dist/types/src/components/RecoveryCredentialsContainer.d.ts.map +0 -1
- package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts.map +0 -1
- package/dist/types/src/components/ResetDialog.d.ts.map +0 -1
- package/dist/types/src/components/ResetDialog.stories.d.ts.map +0 -1
- /package/dist/lib/browser/{chunk-F7H2Y3Z2.mjs.map → chunk-GSVYEYVS.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-BCELGXRI.mjs.map → chunk-OFJUOKY7.mjs.map} +0 -0
- /package/dist/types/src/{components → containers/DevicesContainer}/DevicesContainer.d.ts +0 -0
- /package/dist/types/src/{components → containers/JoinDialog}/JoinDialog.d.ts +0 -0
- /package/dist/types/src/{components → containers/ProfileContainer}/ProfileContainer.d.ts +0 -0
- /package/dist/types/src/{components → containers/ProfileContainer}/ProfileContainer.stories.d.ts +0 -0
- /package/dist/types/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.d.ts +0 -0
- /package/dist/types/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.stories.d.ts +0 -0
- /package/dist/types/src/{components → containers/RecoveryCredentialsContainer}/RecoveryCredentialsContainer.d.ts +0 -0
- /package/dist/types/src/{components → containers/RecoveryCredentialsContainer}/RecoveryCredentialsContainer.stories.d.ts +0 -0
package/src/components/index.ts
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
1
|
//
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
|
-
|
|
5
|
-
export * from './DevicesContainer';
|
|
6
|
-
export * from './JoinDialog';
|
|
7
|
-
export * from './ProfileContainer';
|
|
8
|
-
export * from './RecoveryCodeDialog';
|
|
9
|
-
export * from './RecoveryCredentialsContainer';
|
|
10
|
-
export * from './ResetDialog';
|
package/src/constants.ts
CHANGED
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
import { meta } from './meta';
|
|
6
6
|
|
|
7
|
-
export const JOIN_DIALOG = `${meta.id}
|
|
8
|
-
export const RECOVERY_CODE_DIALOG = `${meta.id}
|
|
9
|
-
export const RESET_DIALOG = `${meta.id}
|
|
7
|
+
export const JOIN_DIALOG = `${meta.id}.JoinDialog`;
|
|
8
|
+
export const RECOVERY_CODE_DIALOG = `${meta.id}.RecoveryCodeDialog`;
|
|
9
|
+
export const RESET_DIALOG = `${meta.id}.ResetDialog`;
|
|
@@ -5,21 +5,22 @@
|
|
|
5
5
|
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
6
6
|
import * as Effect from 'effect/Effect';
|
|
7
7
|
|
|
8
|
-
import { OperationPlugin } from '@dxos/app-framework';
|
|
8
|
+
import { OperationPlugin, RuntimePlugin } from '@dxos/app-framework';
|
|
9
9
|
import { withPluginManager } from '@dxos/app-framework/testing';
|
|
10
|
-
import { withTheme } from '@dxos/react-ui/testing';
|
|
10
|
+
import { withLayout, withTheme } from '@dxos/react-ui/testing';
|
|
11
11
|
import { translations as shellTranslations } from '@dxos/shell/react';
|
|
12
12
|
|
|
13
|
-
import { ClientPlugin } from '
|
|
14
|
-
import { translations } from '
|
|
13
|
+
import { ClientPlugin } from '../../ClientPlugin';
|
|
14
|
+
import { translations } from '../../translations';
|
|
15
15
|
|
|
16
16
|
import { DevicesContainer } from './DevicesContainer';
|
|
17
17
|
|
|
18
18
|
const meta = {
|
|
19
|
-
title: 'plugins/plugin-client/DevicesContainer',
|
|
19
|
+
title: 'plugins/plugin-client/containers/DevicesContainer',
|
|
20
20
|
component: DevicesContainer,
|
|
21
21
|
decorators: [
|
|
22
|
-
withTheme,
|
|
22
|
+
withTheme(),
|
|
23
|
+
withLayout({ layout: 'fullscreen' }),
|
|
23
24
|
withPluginManager({
|
|
24
25
|
plugins: [
|
|
25
26
|
ClientPlugin({
|
|
@@ -29,6 +30,7 @@ const meta = {
|
|
|
29
30
|
}),
|
|
30
31
|
}),
|
|
31
32
|
OperationPlugin(),
|
|
33
|
+
RuntimePlugin(),
|
|
32
34
|
],
|
|
33
35
|
}),
|
|
34
36
|
],
|
|
@@ -5,28 +5,20 @@
|
|
|
5
5
|
import React, { useCallback, useEffect, useState } from 'react';
|
|
6
6
|
import { QR } from 'react-qr-rounded';
|
|
7
7
|
|
|
8
|
-
import { useOperationInvoker } from '@dxos/app-framework/
|
|
8
|
+
import { useOperationInvoker } from '@dxos/app-framework/ui';
|
|
9
9
|
import { log } from '@dxos/log';
|
|
10
10
|
import { useClient, useMulticastObservable } from '@dxos/react-client';
|
|
11
11
|
import { type Device, useDevices } from '@dxos/react-client/halo';
|
|
12
12
|
import { type CancellableInvitationObservable, Invitation, InvitationEncoder } from '@dxos/react-client/invitations';
|
|
13
13
|
import { useNetworkStatus } from '@dxos/react-client/mesh';
|
|
14
14
|
import { Button, Clipboard, Icon, IconButton, List, useId, useTranslation } from '@dxos/react-ui';
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
ControlFrameItem,
|
|
18
|
-
ControlGroup,
|
|
19
|
-
ControlItem,
|
|
20
|
-
ControlPage,
|
|
21
|
-
ControlSection,
|
|
22
|
-
} from '@dxos/react-ui-form';
|
|
23
|
-
import { translationKey } from '@dxos/shell/react';
|
|
24
|
-
import { AuthCode, Centered, DeviceListItem, Emoji, Viewport } from '@dxos/shell/react';
|
|
15
|
+
import { Settings } from '@dxos/react-ui-form';
|
|
16
|
+
import { AuthCode, Centered, DeviceListItem, Emoji, Viewport, translationKey } from '@dxos/shell/react';
|
|
25
17
|
import { osTranslations } from '@dxos/ui-theme';
|
|
26
18
|
import { hexToEmoji } from '@dxos/util';
|
|
27
19
|
|
|
28
|
-
import { meta } from '
|
|
29
|
-
import { ClientOperation } from '
|
|
20
|
+
import { meta } from '../../meta';
|
|
21
|
+
import { ClientOperation } from '../../types';
|
|
30
22
|
|
|
31
23
|
export type DevicesContainerProps = {
|
|
32
24
|
createInvitationUrl?: (invitationCode: string) => string;
|
|
@@ -52,57 +44,55 @@ export const DevicesContainer = ({ createInvitationUrl }: DevicesContainerProps)
|
|
|
52
44
|
|
|
53
45
|
return (
|
|
54
46
|
<Clipboard.Provider>
|
|
55
|
-
<
|
|
56
|
-
<
|
|
47
|
+
<Settings.Root>
|
|
48
|
+
<Settings.Section
|
|
57
49
|
title={t('devices verbose label', { ns: meta.id })}
|
|
58
50
|
description={t('devices description', { ns: meta.id })}
|
|
59
51
|
>
|
|
60
|
-
<
|
|
61
|
-
<
|
|
52
|
+
<Settings.Frame>
|
|
53
|
+
<Settings.FrameItem title={t('devices label', { ns: meta.id })}>
|
|
62
54
|
<List>
|
|
63
|
-
{devices.map((device: Device) =>
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
);
|
|
67
|
-
})}
|
|
55
|
+
{devices.map((device: Device) => (
|
|
56
|
+
<DeviceListItem key={device.deviceKey.toHex()} device={device} connectionState={connectionState} />
|
|
57
|
+
))}
|
|
68
58
|
</List>
|
|
69
|
-
</
|
|
59
|
+
</Settings.FrameItem>
|
|
70
60
|
{createInvitationUrl && (
|
|
71
|
-
<
|
|
61
|
+
<Settings.FrameItem title='Add device'>
|
|
72
62
|
<DeviceInvitation createInvitationUrl={createInvitationUrl} />
|
|
73
|
-
</
|
|
63
|
+
</Settings.FrameItem>
|
|
74
64
|
)}
|
|
75
|
-
</
|
|
76
|
-
</
|
|
77
|
-
<
|
|
65
|
+
</Settings.Frame>
|
|
66
|
+
</Settings.Section>
|
|
67
|
+
<Settings.Section
|
|
78
68
|
title={t('danger zone title', { ns: meta.id })}
|
|
79
69
|
description={t('danger zone description', { ns: meta.id })}
|
|
80
70
|
>
|
|
81
|
-
<
|
|
82
|
-
<
|
|
71
|
+
<Settings.Group>
|
|
72
|
+
<Settings.Item title={t('reset device label')} description={t('reset device description', { ns: meta.id })}>
|
|
83
73
|
<Button variant='destructive' onClick={handleResetStorage} data-testid='devicesContainer.reset'>
|
|
84
74
|
{t('reset device label')}
|
|
85
75
|
</Button>
|
|
86
|
-
</
|
|
87
|
-
<
|
|
76
|
+
</Settings.Item>
|
|
77
|
+
<Settings.Item
|
|
88
78
|
title={t('recover identity label')}
|
|
89
79
|
description={t('recover identity description', { ns: meta.id })}
|
|
90
80
|
>
|
|
91
81
|
<Button variant='destructive' onClick={handleRecover} data-testid='devicesContainer.recover'>
|
|
92
82
|
{t('recover identity label')}
|
|
93
83
|
</Button>
|
|
94
|
-
</
|
|
95
|
-
<
|
|
84
|
+
</Settings.Item>
|
|
85
|
+
<Settings.Item
|
|
96
86
|
title={t('join new identity label')}
|
|
97
87
|
description={t('join new identity description', { ns: meta.id })}
|
|
98
88
|
>
|
|
99
89
|
<Button variant='destructive' onClick={handleJoinNewIdentity} data-testid='devicesContainer.joinExisting'>
|
|
100
90
|
{t('join new identity label')}
|
|
101
91
|
</Button>
|
|
102
|
-
</
|
|
103
|
-
</
|
|
104
|
-
</
|
|
105
|
-
</
|
|
92
|
+
</Settings.Item>
|
|
93
|
+
</Settings.Group>
|
|
94
|
+
</Settings.Section>
|
|
95
|
+
</Settings.Root>
|
|
106
96
|
</Clipboard.Provider>
|
|
107
97
|
);
|
|
108
98
|
};
|
|
@@ -188,12 +178,12 @@ const InvitationSection = ({
|
|
|
188
178
|
: 'qr-code';
|
|
189
179
|
return activeView === 'init' ? (
|
|
190
180
|
<>
|
|
191
|
-
<p className='text-description
|
|
181
|
+
<p className='text-description mb-2'>{t('add device description')}</p>
|
|
192
182
|
<IconButton
|
|
193
183
|
icon='ph--plus--regular'
|
|
194
184
|
label={t('create device invitation label')}
|
|
195
185
|
disabled={state >= 0}
|
|
196
|
-
classNames='
|
|
186
|
+
classNames='w-full'
|
|
197
187
|
data-testid='devicesContainer.createInvitation'
|
|
198
188
|
onClick={onInvitationCreate}
|
|
199
189
|
/>
|
|
@@ -225,21 +215,23 @@ const InvitationQR = ({ id, url, onCancel }: { id: string; url: string; onCancel
|
|
|
225
215
|
return (
|
|
226
216
|
<>
|
|
227
217
|
<p className='text-description'>{t('qr code description', { ns: meta.id })}</p>
|
|
228
|
-
<div role='group' className='grid grid-cols-[1fr_min-content]
|
|
229
|
-
<div
|
|
230
|
-
<
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
<
|
|
242
|
-
|
|
218
|
+
<div role='group' className='grid grid-cols-[1fr_min-content]'>
|
|
219
|
+
<div className='flex justify-center py-4'>
|
|
220
|
+
<div role='none' className='w-full md:max-w-80 aspect-square relative text-description'>
|
|
221
|
+
<QR
|
|
222
|
+
rounding={100}
|
|
223
|
+
backgroundColor='transparent'
|
|
224
|
+
color='currentColor'
|
|
225
|
+
aria-labelledby={qrLabel}
|
|
226
|
+
errorCorrectionLevel='Q'
|
|
227
|
+
cutout={true}
|
|
228
|
+
>
|
|
229
|
+
{url ?? 'never'}
|
|
230
|
+
</QR>
|
|
231
|
+
<Centered>
|
|
232
|
+
<Emoji text={emoji} />
|
|
233
|
+
</Centered>
|
|
234
|
+
</div>
|
|
243
235
|
</div>
|
|
244
236
|
<span id={qrLabel} className='sr-only'>
|
|
245
237
|
{t('qr label')}
|
|
@@ -265,9 +257,9 @@ const InvitationAuthCode = ({ id, code, onCancel }: { id: string; code: string;
|
|
|
265
257
|
return (
|
|
266
258
|
<>
|
|
267
259
|
<p className='text-description'>{t('auth other device emoji message')}</p>
|
|
268
|
-
{emoji && <Emoji text={emoji} className='
|
|
260
|
+
{emoji && <Emoji text={emoji} className='mx-auto my-2 text-center' />}
|
|
269
261
|
<p className='text-description'>{t('auth code message')}</p>
|
|
270
|
-
<AuthCode code={code} large classNames='
|
|
262
|
+
<AuthCode code={code} large classNames='mx-auto my-2 text-center grow' />
|
|
271
263
|
<Button variant='ghost' onClick={onCancel}>
|
|
272
264
|
{t('cancel label')}
|
|
273
265
|
</Button>
|
|
@@ -4,16 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
import React, { useCallback } from 'react';
|
|
6
6
|
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { useOperationInvoker } from '@dxos/app-framework/ui';
|
|
8
|
+
import { LayoutOperation } from '@dxos/app-toolkit';
|
|
9
9
|
import { ObservabilityOperation } from '@dxos/plugin-observability/types';
|
|
10
10
|
import { type InvitationResult } from '@dxos/react-client/invitations';
|
|
11
11
|
import { Dialog, useTranslation } from '@dxos/react-ui';
|
|
12
12
|
import { JoinPanel, type JoinPanelProps } from '@dxos/shell/react';
|
|
13
13
|
import { osTranslations } from '@dxos/ui-theme';
|
|
14
14
|
|
|
15
|
-
import { meta } from '
|
|
16
|
-
import { ClientOperation } from '
|
|
15
|
+
import { meta } from '../../meta';
|
|
16
|
+
import { ClientOperation } from '../../types';
|
|
17
17
|
|
|
18
18
|
export const JoinDialog = (props: JoinPanelProps) => {
|
|
19
19
|
const { invokePromise } = useOperationInvoker();
|
|
@@ -25,7 +25,7 @@ export const JoinDialog = (props: JoinPanelProps) => {
|
|
|
25
25
|
async (result: InvitationResult | null) => {
|
|
26
26
|
if (result?.identityKey) {
|
|
27
27
|
await Promise.all([
|
|
28
|
-
invokePromise(
|
|
28
|
+
invokePromise(LayoutOperation.UpdateDialog, { state: false }),
|
|
29
29
|
invokePromise(ObservabilityOperation.SendEvent, {
|
|
30
30
|
name: props.initialDisposition === 'recover-identity' ? 'identity.recover' : 'identity.join',
|
|
31
31
|
}),
|
|
@@ -37,7 +37,9 @@ export const JoinDialog = (props: JoinPanelProps) => {
|
|
|
37
37
|
|
|
38
38
|
return (
|
|
39
39
|
<Dialog.Content>
|
|
40
|
-
<Dialog.
|
|
40
|
+
<Dialog.Header>
|
|
41
|
+
<Dialog.Title classNames='sr-only'>{t('join space label', { ns: osTranslations })}</Dialog.Title>
|
|
42
|
+
</Dialog.Header>
|
|
41
43
|
<JoinPanel
|
|
42
44
|
mode='halo-only'
|
|
43
45
|
{...props}
|
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
6
6
|
|
|
7
7
|
import { withClientProvider } from '@dxos/react-client/testing';
|
|
8
|
-
import { withTheme } from '@dxos/react-ui/testing';
|
|
8
|
+
import { withLayout, withTheme } from '@dxos/react-ui/testing';
|
|
9
9
|
|
|
10
|
-
import { translations } from '
|
|
10
|
+
import { translations } from '../../translations';
|
|
11
11
|
|
|
12
12
|
import { ProfileContainer } from './ProfileContainer';
|
|
13
13
|
|
|
14
14
|
const meta = {
|
|
15
|
-
title: 'plugins/plugin-client/ProfileContainer',
|
|
15
|
+
title: 'plugins/plugin-client/containers/ProfileContainer',
|
|
16
16
|
component: ProfileContainer,
|
|
17
|
-
decorators: [withTheme, withClientProvider({ createIdentity: true })],
|
|
17
|
+
decorators: [withTheme(), withLayout({ layout: 'fullscreen' }), withClientProvider({ createIdentity: true })],
|
|
18
18
|
parameters: {
|
|
19
19
|
layout: 'fullscreen',
|
|
20
20
|
translations,
|
|
@@ -9,19 +9,11 @@ import { debounce } from '@dxos/async';
|
|
|
9
9
|
import { useClient } from '@dxos/react-client';
|
|
10
10
|
import { type Identity, useIdentity } from '@dxos/react-client/halo';
|
|
11
11
|
import { ButtonGroup, Clipboard, Input, useTranslation } from '@dxos/react-ui';
|
|
12
|
-
import {
|
|
13
|
-
ControlItem,
|
|
14
|
-
ControlItemInput,
|
|
15
|
-
ControlPage,
|
|
16
|
-
ControlSection,
|
|
17
|
-
Form,
|
|
18
|
-
type FormFieldMap,
|
|
19
|
-
type FormUpdateMeta,
|
|
20
|
-
} from '@dxos/react-ui-form';
|
|
12
|
+
import { Form, type FormFieldMap, type FormUpdateMeta, Settings } from '@dxos/react-ui-form';
|
|
21
13
|
import { EmojiPickerBlock, HuePicker } from '@dxos/react-ui-pickers';
|
|
22
14
|
import { hexToEmoji, hexToHue } from '@dxos/util';
|
|
23
15
|
|
|
24
|
-
import { meta } from '
|
|
16
|
+
import { meta } from '../../meta';
|
|
25
17
|
|
|
26
18
|
// TOOD(burdon): Factor out?
|
|
27
19
|
// TODO(wittjosiah): Integrate annotations with translations.
|
|
@@ -109,14 +101,14 @@ export const ProfileContainer = () => {
|
|
|
109
101
|
);
|
|
110
102
|
|
|
111
103
|
return (
|
|
112
|
-
<
|
|
104
|
+
<Settings.ItemInput title={label} description={t('display name description')}>
|
|
113
105
|
<Input.TextInput
|
|
114
106
|
value={getValue()}
|
|
115
107
|
onChange={handleChange}
|
|
116
108
|
placeholder={t('display name input placeholder')}
|
|
117
|
-
classNames='min-
|
|
109
|
+
classNames='min-w-64'
|
|
118
110
|
/>
|
|
119
|
-
</
|
|
111
|
+
</Settings.ItemInput>
|
|
120
112
|
);
|
|
121
113
|
},
|
|
122
114
|
emoji: ({ type, label, getValue, onValueChange }) => {
|
|
@@ -127,7 +119,7 @@ export const ProfileContainer = () => {
|
|
|
127
119
|
);
|
|
128
120
|
|
|
129
121
|
return (
|
|
130
|
-
<
|
|
122
|
+
<Settings.Item title={label} description={t('icon description')}>
|
|
131
123
|
<EmojiPickerBlock
|
|
132
124
|
triggerVariant='default'
|
|
133
125
|
emoji={getValue()}
|
|
@@ -135,7 +127,7 @@ export const ProfileContainer = () => {
|
|
|
135
127
|
onClickClear={handleEmojiReset}
|
|
136
128
|
classNames='justify-self-end'
|
|
137
129
|
/>
|
|
138
|
-
</
|
|
130
|
+
</Settings.Item>
|
|
139
131
|
);
|
|
140
132
|
},
|
|
141
133
|
hue: ({ type, label, getValue, onValueChange }) => {
|
|
@@ -146,22 +138,22 @@ export const ProfileContainer = () => {
|
|
|
146
138
|
);
|
|
147
139
|
|
|
148
140
|
return (
|
|
149
|
-
<
|
|
141
|
+
<Settings.Item title={label} description={t('hue description')}>
|
|
150
142
|
<div role='none' className='flex justify-self-end'>
|
|
151
143
|
<HuePicker value={getValue()} onChange={handleChange} onReset={handleHueReset} />
|
|
152
144
|
</div>
|
|
153
|
-
</
|
|
145
|
+
</Settings.Item>
|
|
154
146
|
);
|
|
155
147
|
},
|
|
156
148
|
// TODO(wittjosiah): We need text input annotations for disabled and copyable.
|
|
157
149
|
did: ({ label, getValue }) => {
|
|
158
150
|
return (
|
|
159
|
-
<
|
|
160
|
-
<ButtonGroup>
|
|
161
|
-
<Input.TextInput value={getValue()} disabled classNames='min-
|
|
151
|
+
<Settings.ItemInput title={label} description={t('did description')}>
|
|
152
|
+
<ButtonGroup classNames='w-full'>
|
|
153
|
+
<Input.TextInput value={getValue()} disabled classNames='min-w-64' />
|
|
162
154
|
<Clipboard.IconButton value={getValue() ?? ''} />
|
|
163
155
|
</ButtonGroup>
|
|
164
|
-
</
|
|
156
|
+
</Settings.ItemInput>
|
|
165
157
|
);
|
|
166
158
|
},
|
|
167
159
|
}),
|
|
@@ -169,16 +161,16 @@ export const ProfileContainer = () => {
|
|
|
169
161
|
);
|
|
170
162
|
|
|
171
163
|
return (
|
|
172
|
-
<
|
|
173
|
-
<
|
|
174
|
-
<
|
|
164
|
+
<Clipboard.Provider>
|
|
165
|
+
<Settings.Root>
|
|
166
|
+
<Settings.Section title={t('profile label')} description={t('profile description')}>
|
|
175
167
|
<Form.Root schema={UserProfile} values={values} fieldMap={fieldMap} onValuesChanged={handleChange}>
|
|
176
168
|
<Form.Content>
|
|
177
|
-
<Form.FieldSet
|
|
169
|
+
<Form.FieldSet />
|
|
178
170
|
</Form.Content>
|
|
179
171
|
</Form.Root>
|
|
180
|
-
</
|
|
181
|
-
</
|
|
182
|
-
</
|
|
172
|
+
</Settings.Section>
|
|
173
|
+
</Settings.Root>
|
|
174
|
+
</Clipboard.Provider>
|
|
183
175
|
);
|
|
184
176
|
};
|
|
@@ -8,9 +8,9 @@ import React, { useState } from 'react';
|
|
|
8
8
|
import { useClient } from '@dxos/react-client';
|
|
9
9
|
import { withClientProvider } from '@dxos/react-client/testing';
|
|
10
10
|
import { AlertDialog, useAsyncEffect } from '@dxos/react-ui';
|
|
11
|
-
import { withTheme } from '@dxos/react-ui/testing';
|
|
11
|
+
import { withLayout, withTheme } from '@dxos/react-ui/testing';
|
|
12
12
|
|
|
13
|
-
import { translations } from '
|
|
13
|
+
import { translations } from '../../translations';
|
|
14
14
|
|
|
15
15
|
import { RecoveryCodeDialog } from './RecoveryCodeDialog';
|
|
16
16
|
|
|
@@ -32,10 +32,10 @@ const DefaultStory = () => {
|
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
const meta = {
|
|
35
|
-
title: 'plugins/plugin-client/RecoveryCodeDialog',
|
|
35
|
+
title: 'plugins/plugin-client/containers/RecoveryCodeDialog',
|
|
36
36
|
component: RecoveryCodeDialog as any,
|
|
37
37
|
render: DefaultStory,
|
|
38
|
-
decorators: [withTheme, withClientProvider({ createIdentity: true })],
|
|
38
|
+
decorators: [withTheme(), withLayout({ layout: 'fullscreen' }), withClientProvider({ createIdentity: true })],
|
|
39
39
|
parameters: {
|
|
40
40
|
layout: 'fullscreen',
|
|
41
41
|
translations,
|
|
@@ -6,12 +6,13 @@ import React, { useCallback, useState } from 'react';
|
|
|
6
6
|
|
|
7
7
|
import { AlertDialog, Button, Clipboard, Input, useTranslation } from '@dxos/react-ui';
|
|
8
8
|
|
|
9
|
-
import { meta } from '
|
|
9
|
+
import { meta } from '../../meta';
|
|
10
10
|
|
|
11
11
|
export type RecoveryCodeDialogProps = {
|
|
12
12
|
code: string;
|
|
13
13
|
};
|
|
14
14
|
|
|
15
|
+
// TODO(burdon): Should have cancel button.
|
|
15
16
|
export const RecoveryCodeDialog = ({ code }: RecoveryCodeDialogProps) => {
|
|
16
17
|
const { t } = useTranslation(meta.id);
|
|
17
18
|
const [confirmation, setConfirmation] = useState(false);
|
|
@@ -19,33 +20,35 @@ export const RecoveryCodeDialog = ({ code }: RecoveryCodeDialogProps) => {
|
|
|
19
20
|
const handleConfirmation = useCallback((checked: boolean) => setConfirmation(checked), []);
|
|
20
21
|
|
|
21
22
|
return (
|
|
22
|
-
<AlertDialog.Content classNames='
|
|
23
|
-
<AlertDialog.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
<
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
<
|
|
34
|
-
<Input.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
23
|
+
<AlertDialog.Content size='md' classNames='min-h-[15rem]'>
|
|
24
|
+
<AlertDialog.Body>
|
|
25
|
+
<AlertDialog.Title>{t('recovery code dialog title')}</AlertDialog.Title>
|
|
26
|
+
<p className='py-4'>{t('recovery code dialog description')}</p>
|
|
27
|
+
<Clipboard.Provider>
|
|
28
|
+
<Code code={code} />
|
|
29
|
+
</Clipboard.Provider>
|
|
30
|
+
<div className='flex flex-col py-4 gap-2'>
|
|
31
|
+
<p>{t('recovery code dialog warning 1')}</p>
|
|
32
|
+
<p>{t('recovery code dialog warning 2')}</p>
|
|
33
|
+
</div>
|
|
34
|
+
<div className='flex items-center gap-2 pb-4'>
|
|
35
|
+
<Input.Root>
|
|
36
|
+
<Input.Checkbox
|
|
37
|
+
data-testid='recoveryCode.confirm'
|
|
38
|
+
checked={confirmation}
|
|
39
|
+
onCheckedChange={handleConfirmation}
|
|
40
|
+
/>
|
|
41
|
+
<Input.Label>{t('recovery code confirmation label')}</Input.Label>
|
|
42
|
+
</Input.Root>
|
|
43
|
+
</div>
|
|
44
|
+
</AlertDialog.Body>
|
|
45
|
+
<AlertDialog.ActionBar>
|
|
43
46
|
<AlertDialog.Action asChild>
|
|
44
47
|
<Button data-testid='recoveryCode.continue' variant='primary' disabled={!confirmation}>
|
|
45
48
|
{t('continue label')}
|
|
46
49
|
</Button>
|
|
47
50
|
</AlertDialog.Action>
|
|
48
|
-
</
|
|
51
|
+
</AlertDialog.ActionBar>
|
|
49
52
|
</AlertDialog.Content>
|
|
50
53
|
);
|
|
51
54
|
};
|
|
@@ -53,12 +56,12 @@ export const RecoveryCodeDialog = ({ code }: RecoveryCodeDialogProps) => {
|
|
|
53
56
|
const Code = ({ code }: { code: string }) => {
|
|
54
57
|
const words = code.split(' ');
|
|
55
58
|
return (
|
|
56
|
-
<div className='relative p-2 border border-separator rounded group'>
|
|
59
|
+
<div className='relative p-2 border border-separator rounded-sm group'>
|
|
57
60
|
<Clipboard.IconButton value={code} classNames='absolute top-2 right-2 invisible group-hover:visible' />
|
|
58
61
|
<div className='grid grid-cols-4'>
|
|
59
62
|
{words.map((word, i) => (
|
|
60
63
|
<div key={i} className='flex items-center p-2 gap-2'>
|
|
61
|
-
<div className='
|
|
64
|
+
<div className='w-4 text-xs text-center text-subdued'>{i + 1}</div>
|
|
62
65
|
<div className='text-sm'>{word}</div>
|
|
63
66
|
</div>
|
|
64
67
|
))}
|
|
@@ -5,20 +5,21 @@
|
|
|
5
5
|
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
6
6
|
import * as Effect from 'effect/Effect';
|
|
7
7
|
|
|
8
|
-
import { OperationPlugin } from '@dxos/app-framework';
|
|
8
|
+
import { OperationPlugin, RuntimePlugin } from '@dxos/app-framework';
|
|
9
9
|
import { withPluginManager } from '@dxos/app-framework/testing';
|
|
10
|
-
import { withTheme } from '@dxos/react-ui/testing';
|
|
10
|
+
import { withLayout, withTheme } from '@dxos/react-ui/testing';
|
|
11
11
|
|
|
12
|
-
import { ClientPlugin } from '
|
|
13
|
-
import { translations } from '
|
|
12
|
+
import { ClientPlugin } from '../../ClientPlugin';
|
|
13
|
+
import { translations } from '../../translations';
|
|
14
14
|
|
|
15
15
|
import { RecoveryCredentialsContainer } from './RecoveryCredentialsContainer';
|
|
16
16
|
|
|
17
17
|
const meta = {
|
|
18
|
-
title: 'plugins/plugin-client/RecoveryCredentialsContainer',
|
|
18
|
+
title: 'plugins/plugin-client/containers/RecoveryCredentialsContainer',
|
|
19
19
|
component: RecoveryCredentialsContainer,
|
|
20
20
|
decorators: [
|
|
21
|
-
withTheme,
|
|
21
|
+
withTheme(),
|
|
22
|
+
withLayout({ layout: 'fullscreen' }),
|
|
22
23
|
withPluginManager({
|
|
23
24
|
plugins: [
|
|
24
25
|
ClientPlugin({
|
|
@@ -28,6 +29,7 @@ const meta = {
|
|
|
28
29
|
}),
|
|
29
30
|
}),
|
|
30
31
|
OperationPlugin(),
|
|
32
|
+
RuntimePlugin(),
|
|
31
33
|
],
|
|
32
34
|
}),
|
|
33
35
|
],
|