@dxos/plugin-client 0.8.3 → 0.8.4-main.1da679c

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 (164) hide show
  1. package/dist/lib/browser/{app-graph-builder-CBRN2DMK.mjs → app-graph-builder-MCGM4PFO.mjs} +20 -20
  2. package/dist/lib/browser/app-graph-builder-MCGM4PFO.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-PSSNS4C6.mjs → chunk-3F2Q2RKC.mjs} +3 -3
  4. package/dist/lib/browser/chunk-3F2Q2RKC.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-UCVFWBKT.mjs → chunk-CAF2COXW.mjs} +3 -3
  6. package/dist/lib/browser/{chunk-5MC5HCIM.mjs → chunk-FOCQEA72.mjs} +34 -41
  7. package/dist/lib/browser/chunk-FOCQEA72.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-MCEXD5XH.mjs → chunk-GS3LDHYD.mjs} +2 -2
  9. package/dist/lib/browser/{chunk-IA3AVM4I.mjs → chunk-HLWIF3AW.mjs} +14 -15
  10. package/dist/lib/browser/chunk-HLWIF3AW.mjs.map +7 -0
  11. package/dist/lib/browser/{client-NMS3MSFP.mjs → client-H2RZI6UX.mjs} +15 -9
  12. package/dist/lib/browser/client-H2RZI6UX.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +18 -18
  14. package/dist/lib/browser/index.mjs.map +3 -3
  15. package/dist/lib/browser/{intent-resolver-SLQZMO6I.mjs → intent-resolver-IE7KHWIY.mjs} +18 -18
  16. package/dist/lib/browser/intent-resolver-IE7KHWIY.mjs.map +7 -0
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/{migrations-QRQV6ZAM.mjs → migrations-CJY2LQHD.mjs} +6 -6
  19. package/dist/lib/{node-esm/migrations-AK43ZE6G.mjs.map → browser/migrations-CJY2LQHD.mjs.map} +2 -2
  20. package/dist/lib/browser/{react-context-IE2O2OYK.mjs → react-context-TSUCH5YS.mjs} +6 -6
  21. package/dist/lib/browser/{react-context-IE2O2OYK.mjs.map → react-context-TSUCH5YS.mjs.map} +2 -2
  22. package/dist/lib/browser/{react-surface-QFC2G27R.mjs → react-surface-WQD43JR7.mjs} +8 -8
  23. package/dist/lib/browser/{react-surface-QFC2G27R.mjs.map → react-surface-WQD43JR7.mjs.map} +3 -3
  24. package/dist/lib/browser/{schema-defs-DNRDVQQJ.mjs → schema-defs-TLXADNLY.mjs} +6 -6
  25. package/dist/lib/browser/schema-defs-TLXADNLY.mjs.map +7 -0
  26. package/dist/lib/browser/types/index.mjs +10 -0
  27. package/dist/lib/node-esm/{app-graph-builder-OZEAAKNT.mjs → app-graph-builder-BJPS5RD7.mjs} +20 -20
  28. package/dist/lib/node-esm/app-graph-builder-BJPS5RD7.mjs.map +7 -0
  29. package/dist/lib/node-esm/{chunk-37E3EI46.mjs → chunk-IOGTQFLM.mjs} +3 -3
  30. package/dist/lib/node-esm/chunk-IOGTQFLM.mjs.map +7 -0
  31. package/dist/lib/node-esm/{chunk-STGGUFV2.mjs → chunk-JG6AFSFU.mjs} +14 -15
  32. package/dist/lib/node-esm/chunk-JG6AFSFU.mjs.map +7 -0
  33. package/dist/lib/node-esm/{chunk-WHKQMAO5.mjs → chunk-MUWDSQ65.mjs} +34 -41
  34. package/dist/lib/node-esm/chunk-MUWDSQ65.mjs.map +7 -0
  35. package/dist/lib/node-esm/{chunk-HM7VB4ZV.mjs → chunk-SZLX4BVJ.mjs} +2 -2
  36. package/dist/lib/node-esm/{chunk-FJYSQRBO.mjs → chunk-UMO3ETDV.mjs} +3 -3
  37. package/dist/lib/node-esm/{client-EBFQZRSF.mjs → client-AWF6PE6V.mjs} +15 -9
  38. package/dist/lib/node-esm/client-AWF6PE6V.mjs.map +7 -0
  39. package/dist/lib/node-esm/index.mjs +18 -18
  40. package/dist/lib/node-esm/index.mjs.map +3 -3
  41. package/dist/lib/node-esm/{intent-resolver-MV55C5ED.mjs → intent-resolver-ZJ4E3NNT.mjs} +18 -18
  42. package/dist/lib/node-esm/intent-resolver-ZJ4E3NNT.mjs.map +7 -0
  43. package/dist/lib/node-esm/meta.json +1 -1
  44. package/dist/lib/node-esm/{migrations-AK43ZE6G.mjs → migrations-X6RLWYR2.mjs} +6 -6
  45. package/dist/lib/{browser/migrations-QRQV6ZAM.mjs.map → node-esm/migrations-X6RLWYR2.mjs.map} +2 -2
  46. package/dist/lib/node-esm/{react-context-6N7NMUJE.mjs → react-context-M6G62KT3.mjs} +6 -6
  47. package/dist/lib/node-esm/{react-context-6N7NMUJE.mjs.map → react-context-M6G62KT3.mjs.map} +2 -2
  48. package/dist/lib/node-esm/{react-surface-JUYTGBEM.mjs → react-surface-TXSWRGX7.mjs} +8 -8
  49. package/dist/lib/node-esm/{react-surface-JUYTGBEM.mjs.map → react-surface-TXSWRGX7.mjs.map} +3 -3
  50. package/dist/lib/node-esm/{schema-defs-O2KQQXJH.mjs → schema-defs-4PGAJ4RQ.mjs} +6 -6
  51. package/dist/lib/node-esm/schema-defs-4PGAJ4RQ.mjs.map +7 -0
  52. package/dist/lib/node-esm/{types.mjs → types/index.mjs} +3 -3
  53. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  54. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  55. package/dist/types/src/capabilities/capabilities.d.ts +2 -3
  56. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  57. package/dist/types/src/capabilities/client.d.ts +1 -1
  58. package/dist/types/src/capabilities/client.d.ts.map +1 -1
  59. package/dist/types/src/capabilities/index.d.ts +8 -8
  60. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  61. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  62. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  63. package/dist/types/src/capabilities/migrations.d.ts +1 -1
  64. package/dist/types/src/capabilities/migrations.d.ts.map +1 -1
  65. package/dist/types/src/capabilities/react-context.d.ts +2 -2
  66. package/dist/types/src/capabilities/react-context.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  68. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/schema-defs.d.ts +1 -1
  70. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -1
  71. package/dist/types/src/components/DevicesContainer.d.ts.map +1 -1
  72. package/dist/types/src/components/DevicesContainer.stories.d.ts +225 -4
  73. package/dist/types/src/components/DevicesContainer.stories.d.ts.map +1 -1
  74. package/dist/types/src/components/ProfileContainer.d.ts.map +1 -1
  75. package/dist/types/src/components/ProfileContainer.stories.d.ts +57 -4
  76. package/dist/types/src/components/ProfileContainer.stories.d.ts.map +1 -1
  77. package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts +59 -4
  78. package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts.map +1 -1
  79. package/dist/types/src/components/RecoveryCredentialsContainer.d.ts.map +1 -1
  80. package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts +58 -4
  81. package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts.map +1 -1
  82. package/dist/types/src/components/ResetDialog.stories.d.ts +59 -3
  83. package/dist/types/src/components/ResetDialog.stories.d.ts.map +1 -1
  84. package/dist/types/src/translations.d.ts +46 -46
  85. package/dist/types/src/translations.d.ts.map +1 -1
  86. package/dist/types/src/types/index.d.ts +2 -0
  87. package/dist/types/src/types/index.d.ts.map +1 -0
  88. package/dist/types/src/{types.d.ts → types/schema.d.ts} +30 -24
  89. package/dist/types/src/types/schema.d.ts.map +1 -0
  90. package/dist/types/tsconfig.tsbuildinfo +1 -1
  91. package/package.json +35 -36
  92. package/src/ClientPlugin.ts +3 -3
  93. package/src/capabilities/app-graph-builder.ts +16 -15
  94. package/src/capabilities/capabilities.ts +4 -3
  95. package/src/capabilities/client.ts +6 -4
  96. package/src/capabilities/intent-resolver.ts +5 -4
  97. package/src/capabilities/migrations.ts +1 -1
  98. package/src/capabilities/react-context.tsx +2 -1
  99. package/src/capabilities/react-surface.tsx +3 -3
  100. package/src/capabilities/schema-defs.ts +3 -3
  101. package/src/components/DevicesContainer.stories.tsx +11 -10
  102. package/src/components/DevicesContainer.tsx +59 -68
  103. package/src/components/JoinDialog.tsx +1 -1
  104. package/src/components/ProfileContainer.stories.tsx +7 -6
  105. package/src/components/ProfileContainer.tsx +20 -23
  106. package/src/components/RecoveryCodeDialog.stories.tsx +9 -8
  107. package/src/components/RecoveryCredentialsContainer.stories.tsx +9 -8
  108. package/src/components/RecoveryCredentialsContainer.tsx +44 -47
  109. package/src/components/ResetDialog.stories.tsx +7 -6
  110. package/src/components/ResetDialog.tsx +1 -1
  111. package/src/translations.ts +6 -4
  112. package/src/types/index.ts +5 -0
  113. package/src/{types.ts → types/schema.ts} +14 -15
  114. package/dist/lib/browser/app-graph-builder-CBRN2DMK.mjs.map +0 -7
  115. package/dist/lib/browser/chunk-5MC5HCIM.mjs.map +0 -7
  116. package/dist/lib/browser/chunk-IA3AVM4I.mjs.map +0 -7
  117. package/dist/lib/browser/chunk-PSSNS4C6.mjs.map +0 -7
  118. package/dist/lib/browser/client-NMS3MSFP.mjs.map +0 -7
  119. package/dist/lib/browser/intent-resolver-SLQZMO6I.mjs.map +0 -7
  120. package/dist/lib/browser/schema-defs-DNRDVQQJ.mjs.map +0 -7
  121. package/dist/lib/browser/types.mjs +0 -10
  122. package/dist/lib/node/app-graph-builder-BEEYM3A5.cjs +0 -134
  123. package/dist/lib/node/app-graph-builder-BEEYM3A5.cjs.map +0 -7
  124. package/dist/lib/node/chunk-BEJWU2NE.cjs +0 -718
  125. package/dist/lib/node/chunk-BEJWU2NE.cjs.map +0 -7
  126. package/dist/lib/node/chunk-BL6EBWOS.cjs +0 -131
  127. package/dist/lib/node/chunk-BL6EBWOS.cjs.map +0 -7
  128. package/dist/lib/node/chunk-CIYUKY3J.cjs +0 -37
  129. package/dist/lib/node/chunk-CIYUKY3J.cjs.map +0 -7
  130. package/dist/lib/node/chunk-DJKWB5L6.cjs +0 -35
  131. package/dist/lib/node/chunk-DJKWB5L6.cjs.map +0 -7
  132. package/dist/lib/node/chunk-DNKJCPU7.cjs +0 -38
  133. package/dist/lib/node/chunk-DNKJCPU7.cjs.map +0 -7
  134. package/dist/lib/node/client-Q3EQS4HA.cjs +0 -51
  135. package/dist/lib/node/client-Q3EQS4HA.cjs.map +0 -7
  136. package/dist/lib/node/index.cjs +0 -175
  137. package/dist/lib/node/index.cjs.map +0 -7
  138. package/dist/lib/node/intent-resolver-QURURONO.cjs +0 -312
  139. package/dist/lib/node/intent-resolver-QURURONO.cjs.map +0 -7
  140. package/dist/lib/node/meta.json +0 -1
  141. package/dist/lib/node/migrations-6FEWMF7U.cjs +0 -39
  142. package/dist/lib/node/migrations-6FEWMF7U.cjs.map +0 -7
  143. package/dist/lib/node/react-context-JS7Y5ZOK.cjs +0 -48
  144. package/dist/lib/node/react-context-JS7Y5ZOK.cjs.map +0 -7
  145. package/dist/lib/node/react-surface-RGRHOPVK.cjs +0 -82
  146. package/dist/lib/node/react-surface-RGRHOPVK.cjs.map +0 -7
  147. package/dist/lib/node/schema-defs-TA52ARBO.cjs +0 -41
  148. package/dist/lib/node/schema-defs-TA52ARBO.cjs.map +0 -7
  149. package/dist/lib/node/types.cjs +0 -32
  150. package/dist/lib/node/types.cjs.map +0 -7
  151. package/dist/lib/node-esm/app-graph-builder-OZEAAKNT.mjs.map +0 -7
  152. package/dist/lib/node-esm/chunk-37E3EI46.mjs.map +0 -7
  153. package/dist/lib/node-esm/chunk-STGGUFV2.mjs.map +0 -7
  154. package/dist/lib/node-esm/chunk-WHKQMAO5.mjs.map +0 -7
  155. package/dist/lib/node-esm/client-EBFQZRSF.mjs.map +0 -7
  156. package/dist/lib/node-esm/intent-resolver-MV55C5ED.mjs.map +0 -7
  157. package/dist/lib/node-esm/schema-defs-O2KQQXJH.mjs.map +0 -7
  158. package/dist/types/src/types.d.ts.map +0 -1
  159. /package/dist/lib/browser/{chunk-UCVFWBKT.mjs.map → chunk-CAF2COXW.mjs.map} +0 -0
  160. /package/dist/lib/browser/{chunk-MCEXD5XH.mjs.map → chunk-GS3LDHYD.mjs.map} +0 -0
  161. /package/dist/lib/browser/{types.mjs.map → types/index.mjs.map} +0 -0
  162. /package/dist/lib/node-esm/{chunk-HM7VB4ZV.mjs.map → chunk-SZLX4BVJ.mjs.map} +0 -0
  163. /package/dist/lib/node-esm/{chunk-FJYSQRBO.mjs.map → chunk-UMO3ETDV.mjs.map} +0 -0
  164. /package/dist/lib/node-esm/{types.mjs.map → types/index.mjs.map} +0 -0
@@ -1,27 +1,27 @@
1
1
  import {
2
2
  ClientCapabilities
3
- } from "./chunk-PSSNS4C6.mjs";
3
+ } from "./chunk-3F2Q2RKC.mjs";
4
4
  import {
5
5
  Account,
6
6
  ClientAction
7
- } from "./chunk-IA3AVM4I.mjs";
7
+ } from "./chunk-HLWIF3AW.mjs";
8
8
  import {
9
- CLIENT_PLUGIN
10
- } from "./chunk-MCEXD5XH.mjs";
9
+ meta
10
+ } from "./chunk-GS3LDHYD.mjs";
11
11
 
12
- // packages/plugins/plugin-client/src/capabilities/app-graph-builder.ts
12
+ // src/capabilities/app-graph-builder.ts
13
13
  import { Rx } from "@effect-rx/rx-react";
14
14
  import { Option, pipe } from "effect";
15
15
  import { createIntent } from "@dxos/app-framework";
16
16
  import { Capabilities, contributes } from "@dxos/app-framework";
17
- import { createExtension, rxFromObservable, ROOT_ID } from "@dxos/plugin-graph";
17
+ import { ROOT_ID, createExtension, rxFromObservable } from "@dxos/plugin-graph";
18
18
  import { ConnectionState } from "@dxos/react-client/mesh";
19
- var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBuilder, createExtension({
20
- id: CLIENT_PLUGIN,
19
+ var app_graph_builder_default = ((context) => contributes(Capabilities.AppGraphBuilder, createExtension({
20
+ id: meta.id,
21
21
  actions: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => {
22
22
  return [
23
23
  {
24
- id: `${CLIENT_PLUGIN}/open-user-account`,
24
+ id: `${meta.id}/open-user-account`,
25
25
  data: async () => {
26
26
  const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
27
27
  await dispatch(createIntent(ClientAction.ShareIdentity));
@@ -30,7 +30,7 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
30
30
  label: [
31
31
  "open user account label",
32
32
  {
33
- ns: CLIENT_PLUGIN
33
+ ns: meta.id
34
34
  }
35
35
  ],
36
36
  icon: "ph--user--regular",
@@ -52,12 +52,12 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
52
52
  return [
53
53
  {
54
54
  id: Account.id,
55
- type: CLIENT_PLUGIN,
55
+ type: meta.id,
56
56
  properties: {
57
57
  label: [
58
58
  "account label",
59
59
  {
60
- ns: CLIENT_PLUGIN
60
+ ns: meta.id
61
61
  }
62
62
  ],
63
63
  icon: "ph--user--regular",
@@ -72,12 +72,12 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
72
72
  {
73
73
  id: Account.Profile,
74
74
  data: Account.Profile,
75
- type: CLIENT_PLUGIN,
75
+ type: meta.id,
76
76
  properties: {
77
77
  label: [
78
78
  "profile label",
79
79
  {
80
- ns: CLIENT_PLUGIN
80
+ ns: meta.id
81
81
  }
82
82
  ],
83
83
  icon: "ph--user--regular"
@@ -86,12 +86,12 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
86
86
  {
87
87
  id: Account.Devices,
88
88
  data: Account.Devices,
89
- type: CLIENT_PLUGIN,
89
+ type: meta.id,
90
90
  properties: {
91
91
  label: [
92
92
  "devices label",
93
93
  {
94
- ns: CLIENT_PLUGIN
94
+ ns: meta.id
95
95
  }
96
96
  ],
97
97
  icon: "ph--devices--regular",
@@ -101,12 +101,12 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
101
101
  {
102
102
  id: Account.Security,
103
103
  data: Account.Security,
104
- type: CLIENT_PLUGIN,
104
+ type: meta.id,
105
105
  properties: {
106
106
  label: [
107
107
  "security label",
108
108
  {
109
- ns: CLIENT_PLUGIN
109
+ ns: meta.id
110
110
  }
111
111
  ],
112
112
  icon: "ph--key--regular"
@@ -116,8 +116,8 @@ var app_graph_builder_default = (context) => contributes(Capabilities.AppGraphBu
116
116
  }
117
117
  ];
118
118
  }), Option.getOrElse(() => [])))
119
- }));
119
+ })));
120
120
  export {
121
121
  app_graph_builder_default as default
122
122
  };
123
- //# sourceMappingURL=app-graph-builder-CBRN2DMK.mjs.map
123
+ //# sourceMappingURL=app-graph-builder-MCGM4PFO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Option, pipe } from 'effect';\n\nimport { createIntent } from '@dxos/app-framework';\nimport { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';\nimport { ROOT_ID, createExtension, rxFromObservable } from '@dxos/plugin-graph';\nimport { ConnectionState } from '@dxos/react-client/mesh';\n\nimport { meta } from '../meta';\nimport { Account, ClientAction } from '../types';\n\nimport { ClientCapabilities } from './capabilities';\n\nexport default (context: PluginContext) =>\n contributes(\n Capabilities.AppGraphBuilder,\n createExtension({\n id: meta.id,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => {\n return [\n {\n id: `${meta.id}/open-user-account`,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n await dispatch(createIntent(ClientAction.ShareIdentity));\n },\n properties: {\n label: ['open user account label', { ns: meta.id }],\n icon: 'ph--user--regular',\n disposition: 'menu',\n keyBinding: {\n macos: 'meta+shift+.',\n // TODO(wittjosiah): Test on windows to see if it behaves the same as linux.\n windows: 'alt+shift+.',\n linux: 'alt+shift+>',\n },\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n ),\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => {\n const client = context.getCapability(ClientCapabilities.Client);\n const identity = get(rxFromObservable(client.halo.identity));\n const status = get(rxFromObservable(client.mesh.networkStatus));\n\n return [\n {\n id: Account.id,\n type: meta.id,\n properties: {\n label: ['account label', { ns: meta.id }],\n icon: 'ph--user--regular',\n disposition: 'user-account',\n // NOTE: This currently needs to be the identity key because the fallback is generated from hex.\n userId: identity?.identityKey.toHex(),\n hue: identity?.profile?.data?.hue,\n emoji: identity?.profile?.data?.emoji,\n status: status.swarm === ConnectionState.OFFLINE ? 'error' : 'active',\n },\n nodes: [\n {\n id: Account.Profile,\n data: Account.Profile,\n type: meta.id,\n properties: {\n label: ['profile label', { ns: meta.id }],\n icon: 'ph--user--regular',\n },\n },\n {\n id: Account.Devices,\n data: Account.Devices,\n type: meta.id,\n properties: {\n label: ['devices label', { ns: meta.id }],\n icon: 'ph--devices--regular',\n testId: 'clientPlugin.devices',\n },\n },\n {\n id: Account.Security,\n data: Account.Security,\n type: meta.id,\n properties: {\n label: ['security label', { ns: meta.id }],\n icon: 'ph--key--regular',\n },\n },\n ],\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n );\n"],
5
+ "mappings": ";;;;;;;;;;;;AAIA,SAASA,UAAU;AACnB,SAASC,QAAQC,YAAY;AAE7B,SAASC,oBAAoB;AAC7B,SAASC,cAAkCC,mBAAmB;AAC9D,SAASC,SAASC,iBAAiBC,wBAAwB;AAC3D,SAASC,uBAAuB;AAOhC,IAAA,6BAAe,CAACC,YACdC,YACEC,aAAaC,iBACbC,gBAAgB;EACdC,IAAIC,KAAKD;EACTE,SAAS,CAACC,SACRC,GAAGC,KAAK,CAACC,QACPC,KACED,IAAIH,IAAAA,GACJK,OAAOC,QAAQ,CAACN,UAAUA,MAAKH,OAAOU,UAAUF,OAAOG,KAAKR,KAAAA,IAAQK,OAAOI,KAAI,CAAA,GAC/EJ,OAAOK,IAAI,MAAA;AACT,WAAO;MACL;QACEb,IAAI,GAAGC,KAAKD,EAAE;QACdc,MAAM,YAAA;AACJ,gBAAM,EAAEC,iBAAiBC,SAAQ,IAAKrB,QAAQsB,cAAcpB,aAAaqB,gBAAgB;AACzF,gBAAMF,SAASG,aAAaC,aAAaC,aAAa,CAAA;QACxD;QACAC,YAAY;UACVC,OAAO;YAAC;YAA2B;cAAEC,IAAIvB,KAAKD;YAAG;;UACjDyB,MAAM;UACNC,aAAa;UACbC,YAAY;YACVC,OAAO;;YAEPC,SAAS;YACTC,OAAO;UACT;QACF;MACF;;EAEJ,CAAA,GACAtB,OAAOuB,UAAU,MAAM,CAAA,CAAE,CAAA,CAAA;EAG/BC,WAAW,CAAC7B,SACVC,GAAGC,KAAK,CAACC,QACPC,KACED,IAAIH,IAAAA,GACJK,OAAOC,QAAQ,CAACN,UAAUA,MAAKH,OAAOU,UAAUF,OAAOG,KAAKR,KAAAA,IAAQK,OAAOI,KAAI,CAAA,GAC/EJ,OAAOK,IAAI,MAAA;AACT,UAAMoB,SAAStC,QAAQsB,cAAciB,mBAAmBC,MAAM;AAC9D,UAAMC,WAAW9B,IAAI+B,iBAAiBJ,OAAOK,KAAKF,QAAQ,CAAA;AAC1D,UAAMG,SAASjC,IAAI+B,iBAAiBJ,OAAOO,KAAKC,aAAa,CAAA;AAE7D,WAAO;MACL;QACEzC,IAAI0C,QAAQ1C;QACZ2C,MAAM1C,KAAKD;QACXsB,YAAY;UACVC,OAAO;YAAC;YAAiB;cAAEC,IAAIvB,KAAKD;YAAG;;UACvCyB,MAAM;UACNC,aAAa;;UAEbkB,QAAQR,UAAUS,YAAYC,MAAAA;UAC9BC,KAAKX,UAAUY,SAASlC,MAAMiC;UAC9BE,OAAOb,UAAUY,SAASlC,MAAMmC;UAChCV,QAAQA,OAAOW,UAAUC,gBAAgBC,UAAU,UAAU;QAC/D;QACAC,OAAO;UACL;YACErD,IAAI0C,QAAQY;YACZxC,MAAM4B,QAAQY;YACdX,MAAM1C,KAAKD;YACXsB,YAAY;cACVC,OAAO;gBAAC;gBAAiB;kBAAEC,IAAIvB,KAAKD;gBAAG;;cACvCyB,MAAM;YACR;UACF;UACA;YACEzB,IAAI0C,QAAQa;YACZzC,MAAM4B,QAAQa;YACdZ,MAAM1C,KAAKD;YACXsB,YAAY;cACVC,OAAO;gBAAC;gBAAiB;kBAAEC,IAAIvB,KAAKD;gBAAG;;cACvCyB,MAAM;cACN+B,QAAQ;YACV;UACF;UACA;YACExD,IAAI0C,QAAQe;YACZ3C,MAAM4B,QAAQe;YACdd,MAAM1C,KAAKD;YACXsB,YAAY;cACVC,OAAO;gBAAC;gBAAkB;kBAAEC,IAAIvB,KAAKD;gBAAG;;cACxCyB,MAAM;YACR;UACF;;MAEJ;;EAEJ,CAAA,GACAjB,OAAOuB,UAAU,MAAM,CAAA,CAAE,CAAA,CAAA;AAGjC,CAAA,CAAA;",
6
+ "names": ["Rx", "Option", "pipe", "createIntent", "Capabilities", "contributes", "ROOT_ID", "createExtension", "rxFromObservable", "ConnectionState", "context", "contributes", "Capabilities", "AppGraphBuilder", "createExtension", "id", "meta", "actions", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "ROOT_ID", "some", "none", "map", "data", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "createIntent", "ClientAction", "ShareIdentity", "properties", "label", "ns", "icon", "disposition", "keyBinding", "macos", "windows", "linux", "getOrElse", "connector", "client", "ClientCapabilities", "Client", "identity", "rxFromObservable", "halo", "status", "mesh", "networkStatus", "Account", "type", "userId", "identityKey", "toHex", "hue", "profile", "emoji", "swarm", "ConnectionState", "OFFLINE", "nodes", "Profile", "Devices", "testId", "Security"]
7
+ }
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  CLIENT_PLUGIN
3
- } from "./chunk-MCEXD5XH.mjs";
3
+ } from "./chunk-GS3LDHYD.mjs";
4
4
 
5
- // packages/plugins/plugin-client/src/capabilities/capabilities.ts
5
+ // src/capabilities/capabilities.ts
6
6
  import { defineCapability } from "@dxos/app-framework";
7
7
  (function(ClientCapabilities2) {
8
8
  ClientCapabilities2.Client = defineCapability(`${CLIENT_PLUGIN}/capability/client`);
@@ -15,4 +15,4 @@ var ClientCapabilities;
15
15
  export {
16
16
  ClientCapabilities
17
17
  };
18
- //# sourceMappingURL=chunk-PSSNS4C6.mjs.map
18
+ //# sourceMappingURL=chunk-3F2Q2RKC.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/capabilities.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineCapability } from '@dxos/app-framework';\nimport { type Client } from '@dxos/client';\nimport { type ObjectMigration } from '@dxos/client/echo';\nimport { type Type } from '@dxos/echo';\n\nimport { CLIENT_PLUGIN } from '../meta';\n\nexport namespace ClientCapabilities {\n export const Client = defineCapability<Client>(`${CLIENT_PLUGIN}/capability/client`);\n export const Schema = defineCapability<Type.Obj.Any[]>(`${CLIENT_PLUGIN}/capability/schema`);\n // TODO(wittjosiah): More descriptive name.\n export const SchemaWhiteList = defineCapability<Type.Obj.Any[]>(`${CLIENT_PLUGIN}/capability/schema-whitelist`);\n export const Migration = defineCapability<ObjectMigration[]>(`${CLIENT_PLUGIN}/capability/migration`);\n}\n"],
5
+ "mappings": ";;;;;AAIA,SAASA,wBAAwB;UAOhBC,qBAAAA;sBACFC,SAASC,iBAAyB,GAAGC,aAAAA,oBAAiC;sBACtEC,SAASF,iBAAiC,GAAGC,aAAAA,oBAAiC;sBAE9EE,kBAAkBH,iBAAiC,GAAGC,aAAAA,8BAA2C;sBACjGG,YAAYJ,iBAAoC,GAAGC,aAAAA,uBAAoC;AACtG,GANiBH,uBAAAA,qBAAAA,CAAAA,EAAAA;;",
6
+ "names": ["defineCapability", "ClientCapabilities", "Client", "defineCapability", "CLIENT_PLUGIN", "Schema", "SchemaWhiteList", "Migration"]
7
+ }
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  CLIENT_PLUGIN
3
- } from "./chunk-MCEXD5XH.mjs";
3
+ } from "./chunk-GS3LDHYD.mjs";
4
4
 
5
- // packages/plugins/plugin-client/src/events.ts
5
+ // src/events.ts
6
6
  import { defineEvent } from "@dxos/app-framework";
7
7
  (function(ClientEvents2) {
8
8
  ClientEvents2.ClientReady = defineEvent(`${CLIENT_PLUGIN}/event/client-ready`);
@@ -16,4 +16,4 @@ var ClientEvents;
16
16
  export {
17
17
  ClientEvents
18
18
  };
19
- //# sourceMappingURL=chunk-UCVFWBKT.mjs.map
19
+ //# sourceMappingURL=chunk-CAF2COXW.mjs.map
@@ -1,13 +1,12 @@
1
1
  import {
2
2
  ClientAction
3
- } from "./chunk-IA3AVM4I.mjs";
3
+ } from "./chunk-HLWIF3AW.mjs";
4
4
  import {
5
5
  CLIENT_PLUGIN
6
- } from "./chunk-MCEXD5XH.mjs";
6
+ } from "./chunk-GS3LDHYD.mjs";
7
7
 
8
- // packages/plugins/plugin-client/src/components/DevicesContainer.tsx
8
+ // src/components/DevicesContainer.tsx
9
9
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
10
- import { Check, X } from "@phosphor-icons/react";
11
10
  import React, { useCallback, useEffect, useState } from "react";
12
11
  import { QR } from "react-qr-rounded";
13
12
  import { createIntent, useIntentDispatcher } from "@dxos/app-framework";
@@ -16,13 +15,11 @@ import { useClient, useMulticastObservable } from "@dxos/react-client";
16
15
  import { useDevices } from "@dxos/react-client/halo";
17
16
  import { Invitation, InvitationEncoder } from "@dxos/react-client/invitations";
18
17
  import { useNetworkStatus } from "@dxos/react-client/mesh";
19
- import { Button, Clipboard, IconButton, List, useId, useTranslation } from "@dxos/react-ui";
18
+ import { Button, Clipboard, Icon, IconButton, List, useId, useTranslation } from "@dxos/react-ui";
20
19
  import { ControlFrame, ControlFrameItem, ControlGroup, ControlItem, ControlPage, ControlSection } from "@dxos/react-ui-form";
21
- import { StackItem } from "@dxos/react-ui-stack";
22
- import { getSize, mx } from "@dxos/react-ui-theme";
23
20
  import { AuthCode, Centered, DeviceListItem, Emoji, Viewport } from "@dxos/shell/react";
24
21
  import { hexToEmoji } from "@dxos/util";
25
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-client/src/components/DevicesContainer.tsx";
22
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-client/src/components/DevicesContainer.tsx";
26
23
  var DevicesContainer = ({ createInvitationUrl }) => {
27
24
  var _effect = _useSignals();
28
25
  try {
@@ -43,9 +40,7 @@ var DevicesContainer = ({ createInvitationUrl }) => {
43
40
  })), [
44
41
  dispatch
45
42
  ]);
46
- return /* @__PURE__ */ React.createElement(Clipboard.Provider, null, /* @__PURE__ */ React.createElement(StackItem.Content, {
47
- classNames: "block overflow-y-auto"
48
- }, /* @__PURE__ */ React.createElement(ControlPage, null, /* @__PURE__ */ React.createElement(ControlSection, {
43
+ return /* @__PURE__ */ React.createElement(Clipboard.Provider, null, /* @__PURE__ */ React.createElement(ControlPage, null, /* @__PURE__ */ React.createElement(ControlSection, {
49
44
  title: t("devices verbose label", {
50
45
  ns: CLIENT_PLUGIN
51
46
  }),
@@ -100,7 +95,7 @@ var DevicesContainer = ({ createInvitationUrl }) => {
100
95
  variant: "destructive",
101
96
  onClick: handleJoinNewIdentity,
102
97
  "data-testid": "devicesContainer.joinExisting"
103
- }, t("join new identity label"))))))));
98
+ }, t("join new identity label")))))));
104
99
  } finally {
105
100
  _effect.f();
106
101
  }
@@ -121,7 +116,7 @@ var DeviceInvitation = (props) => {
121
116
  authCode: invitation3.authCode
122
117
  }), void 0, {
123
118
  F: __dxlog_file,
124
- L: 141,
119
+ L: 128,
125
120
  S: void 0,
126
121
  C: (f, a) => f(...a)
127
122
  });
@@ -286,20 +281,24 @@ var InvitationAuthCode = ({ id, code, onCancel }) => {
286
281
  var InvitationComplete = ({ statusValue }) => {
287
282
  var _effect = _useSignals();
288
283
  try {
289
- return statusValue > 0 ? /* @__PURE__ */ React.createElement(Check, {
290
- className: mx("m-1.5", getSize(6))
291
- }) : /* @__PURE__ */ React.createElement(X, {
292
- className: mx("m-1.5", getSize(6))
284
+ return statusValue > 0 ? /* @__PURE__ */ React.createElement(Icon, {
285
+ icon: "ph--check--regular",
286
+ size: 6,
287
+ classNames: "m-1.5"
288
+ }) : /* @__PURE__ */ React.createElement(Icon, {
289
+ icon: "ph--x--regular",
290
+ size: 6,
291
+ classNames: "m-1.5"
293
292
  });
294
293
  } finally {
295
294
  _effect.f();
296
295
  }
297
296
  };
298
297
 
299
- // packages/plugins/plugin-client/src/components/JoinDialog.tsx
298
+ // src/components/JoinDialog.tsx
300
299
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
301
300
  import React2, { useCallback as useCallback2 } from "react";
302
- import { createIntent as createIntent2, LayoutAction, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
301
+ import { LayoutAction, createIntent as createIntent2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
303
302
  import { ObservabilityAction } from "@dxos/plugin-observability/types";
304
303
  import { Dialog, useTranslation as useTranslation2 } from "@dxos/react-ui";
305
304
  import { JoinPanel } from "@dxos/shell/react";
@@ -350,7 +349,7 @@ var JoinDialog = (props) => {
350
349
  }
351
350
  };
352
351
 
353
- // packages/plugins/plugin-client/src/components/ProfileContainer.tsx
352
+ // src/components/ProfileContainer.tsx
354
353
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
355
354
  import { Schema } from "effect";
356
355
  import React3, { useCallback as useCallback3, useMemo, useState as useState2 } from "react";
@@ -358,10 +357,9 @@ import { debounce } from "@dxos/async";
358
357
  import { useClient as useClient2 } from "@dxos/react-client";
359
358
  import { useIdentity } from "@dxos/react-client/halo";
360
359
  import { ButtonGroup, Clipboard as Clipboard2, Input, useTranslation as useTranslation3 } from "@dxos/react-ui";
361
- import { Form, ControlItem as ControlItem2, ControlItemInput, ControlSection as ControlSection2, ControlPage as ControlPage2 } from "@dxos/react-ui-form";
360
+ import { ControlItem as ControlItem2, ControlItemInput, ControlPage as ControlPage2, ControlSection as ControlSection2, Form } from "@dxos/react-ui-form";
362
361
  import { EmojiPickerBlock, HuePicker } from "@dxos/react-ui-pickers";
363
- import { StackItem as StackItem2 } from "@dxos/react-ui-stack";
364
- import { hexToHue, hexToEmoji as hexToEmoji2 } from "@dxos/util";
362
+ import { hexToEmoji as hexToEmoji2, hexToHue } from "@dxos/util";
365
363
  var getDefaultHueValue = (identity) => hexToHue(identity?.identityKey.toHex() ?? "0");
366
364
  var getDefaultEmojiValue = (identity) => hexToEmoji2(identity?.identityKey.toHex() ?? "0");
367
365
  var getHueValue = (identity) => identity?.profile?.data?.hue || getDefaultHueValue(identity);
@@ -386,7 +384,7 @@ var ProfileContainer = () => {
386
384
  setDisplayNameDirectly(profile.displayName);
387
385
  setEmojiDirectly(profile.emoji);
388
386
  setHueDirectly(profile.hue);
389
- updateProfile(profile);
387
+ void updateProfile(profile);
390
388
  }, [
391
389
  identity
392
390
  ]);
@@ -472,9 +470,7 @@ var ProfileContainer = () => {
472
470
  }), [
473
471
  t
474
472
  ]);
475
- return /* @__PURE__ */ React3.createElement(StackItem2.Content, {
476
- classNames: "block overflow-y-auto"
477
- }, /* @__PURE__ */ React3.createElement(ControlPage2, null, /* @__PURE__ */ React3.createElement(Clipboard2.Provider, null, /* @__PURE__ */ React3.createElement(ControlSection2, {
473
+ return /* @__PURE__ */ React3.createElement(ControlPage2, null, /* @__PURE__ */ React3.createElement(Clipboard2.Provider, null, /* @__PURE__ */ React3.createElement(ControlSection2, {
478
474
  title: t("profile label"),
479
475
  description: t("profile description")
480
476
  }, /* @__PURE__ */ React3.createElement(Form, {
@@ -483,9 +479,9 @@ var ProfileContainer = () => {
483
479
  autoSave: true,
484
480
  onSave: handleSave,
485
481
  Custom: customElements,
486
- classNames: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content] gap-4",
482
+ classNames: "container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]",
487
483
  outerSpacing: false
488
- })))));
484
+ }))));
489
485
  } finally {
490
486
  _effect.f();
491
487
  }
@@ -505,7 +501,7 @@ var ProfileSchema = Schema.Struct({
505
501
  })
506
502
  });
507
503
 
508
- // packages/plugins/plugin-client/src/components/RecoveryCodeDialog.tsx
504
+ // src/components/RecoveryCodeDialog.tsx
509
505
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
510
506
  import React4, { useCallback as useCallback4, useState as useState3 } from "react";
511
507
  import { AlertDialog, Button as Button2, Clipboard as Clipboard3, Input as Input2, useTranslation as useTranslation4 } from "@dxos/react-ui";
@@ -567,14 +563,13 @@ var Code = ({ code }) => {
567
563
  }
568
564
  };
569
565
 
570
- // packages/plugins/plugin-client/src/components/RecoveryCredentialsContainer.tsx
566
+ // src/components/RecoveryCredentialsContainer.tsx
571
567
  import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
572
568
  import React5 from "react";
573
569
  import { createIntent as createIntent3, useIntentDispatcher as useIntentDispatcher3 } from "@dxos/app-framework";
574
570
  import { useCredentials } from "@dxos/react-client/halo";
575
- import { Icon, IconButton as IconButton2, List as List2, ListItem, useTranslation as useTranslation5, Message } from "@dxos/react-ui";
571
+ import { Icon as Icon2, IconButton as IconButton2, List as List2, ListItem, Message, useTranslation as useTranslation5 } from "@dxos/react-ui";
576
572
  import { ControlGroup as ControlGroup2, ControlItem as ControlItem3, ControlPage as ControlPage3, ControlSection as ControlSection3 } from "@dxos/react-ui-form";
577
- import { StackItem as StackItem3 } from "@dxos/react-ui-stack";
578
573
  var MANAGE_CREDENTIALS_DIALOG = `${CLIENT_PLUGIN}/ManageCredentialsDialog`;
579
574
  var RecoveryCredentialsContainer = () => {
580
575
  var _effect = _useSignals5();
@@ -583,9 +578,7 @@ var RecoveryCredentialsContainer = () => {
583
578
  const { dispatchPromise: dispatch } = useIntentDispatcher3();
584
579
  const credentials = useCredentials();
585
580
  const recoveryCredentials = credentials.filter((credential) => credential.subject.assertion["@type"] === "dxos.halo.credentials.IdentityRecovery");
586
- return /* @__PURE__ */ React5.createElement(StackItem3.Content, {
587
- classNames: "block overflow-y-auto"
588
- }, /* @__PURE__ */ React5.createElement(ControlPage3, null, /* @__PURE__ */ React5.createElement(ControlSection3, {
581
+ return /* @__PURE__ */ React5.createElement(ControlPage3, null, /* @__PURE__ */ React5.createElement(ControlSection3, {
589
582
  title: t("recovery setup dialog title"),
590
583
  description: t("recovery setup dialog description")
591
584
  }, /* @__PURE__ */ React5.createElement(ControlGroup2, null, /* @__PURE__ */ React5.createElement(ControlItem3, {
@@ -617,19 +610,19 @@ var RecoveryCredentialsContainer = () => {
617
610
  classNames: "container-max-width pli-2"
618
611
  }, recoveryCredentials.map((credential) => /* @__PURE__ */ React5.createElement(ListItem.Root, {
619
612
  key: credential.id?.toHex()
620
- }, /* @__PURE__ */ React5.createElement(ListItem.Endcap, null, /* @__PURE__ */ React5.createElement(Icon, {
613
+ }, /* @__PURE__ */ React5.createElement(ListItem.Endcap, null, /* @__PURE__ */ React5.createElement(Icon2, {
621
614
  icon: "ph--key--regular",
622
615
  size: 5
623
- })), /* @__PURE__ */ React5.createElement(ListItem.Heading, null, credential.issuanceDate.toLocaleString())))))));
616
+ })), /* @__PURE__ */ React5.createElement(ListItem.Heading, null, credential.issuanceDate.toLocaleString()))))));
624
617
  } finally {
625
618
  _effect.f();
626
619
  }
627
620
  };
628
621
 
629
- // packages/plugins/plugin-client/src/components/ResetDialog.tsx
622
+ // src/components/ResetDialog.tsx
630
623
  import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
631
624
  import React6, { useCallback as useCallback5 } from "react";
632
- import { createIntent as createIntent4, LayoutAction as LayoutAction2, useIntentDispatcher as useIntentDispatcher4 } from "@dxos/app-framework";
625
+ import { LayoutAction as LayoutAction2, createIntent as createIntent4, useIntentDispatcher as useIntentDispatcher4 } from "@dxos/app-framework";
633
626
  import { useClient as useClient3 } from "@dxos/react-client";
634
627
  import { Dialog as Dialog2, useTranslation as useTranslation6 } from "@dxos/react-ui";
635
628
  import { ConfirmReset } from "@dxos/shell/react";
@@ -690,4 +683,4 @@ export {
690
683
  RESET_DIALOG,
691
684
  ResetDialog
692
685
  };
693
- //# sourceMappingURL=chunk-5MC5HCIM.mjs.map
686
+ //# sourceMappingURL=chunk-FOCQEA72.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/DevicesContainer.tsx", "../../../src/components/JoinDialog.tsx", "../../../src/components/ProfileContainer.tsx", "../../../src/components/RecoveryCodeDialog.tsx", "../../../src/components/RecoveryCredentialsContainer.tsx", "../../../src/components/ResetDialog.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { QR } from 'react-qr-rounded';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { log } from '@dxos/log';\nimport { useClient, useMulticastObservable } from '@dxos/react-client';\nimport { type Device, useDevices } from '@dxos/react-client/halo';\nimport { type CancellableInvitationObservable, Invitation, InvitationEncoder } from '@dxos/react-client/invitations';\nimport { useNetworkStatus } from '@dxos/react-client/mesh';\nimport { Button, Clipboard, Icon, IconButton, List, useId, useTranslation } from '@dxos/react-ui';\nimport {\n ControlFrame,\n ControlFrameItem,\n ControlGroup,\n ControlItem,\n ControlPage,\n ControlSection,\n} from '@dxos/react-ui-form';\nimport { AuthCode, Centered, DeviceListItem, Emoji, Viewport } from '@dxos/shell/react';\nimport { hexToEmoji } from '@dxos/util';\n\nimport { CLIENT_PLUGIN } from '../meta';\nimport { ClientAction } from '../types';\n\nexport type DevicesContainerProps = {\n createInvitationUrl?: (invitationCode: string) => string;\n};\n\nexport const DevicesContainer = ({ createInvitationUrl }: DevicesContainerProps) => {\n const { t } = useTranslation('os');\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const devices = useDevices();\n const { swarm: connectionState } = useNetworkStatus();\n\n const handleResetStorage = useCallback(() => dispatch(createIntent(ClientAction.ResetStorage)), [dispatch]);\n\n const handleRecover = useCallback(\n () => dispatch(createIntent(ClientAction.ResetStorage, { mode: 'recover' })),\n [dispatch],\n );\n\n const handleJoinNewIdentity = useCallback(\n () => dispatch(createIntent(ClientAction.ResetStorage, { mode: 'join new identity' })),\n [dispatch],\n );\n\n return (\n <Clipboard.Provider>\n <ControlPage>\n <ControlSection\n title={t('devices verbose label', { ns: CLIENT_PLUGIN })}\n description={t('devices description', { ns: CLIENT_PLUGIN })}\n >\n <ControlFrame>\n <ControlFrameItem title={t('devices label', { ns: CLIENT_PLUGIN })}>\n <List>\n {devices.map((device: Device) => {\n return (\n <DeviceListItem key={device.deviceKey.toHex()} device={device} connectionState={connectionState} />\n );\n })}\n </List>\n </ControlFrameItem>\n {createInvitationUrl && (\n <ControlFrameItem title='Add device'>\n <DeviceInvitation createInvitationUrl={createInvitationUrl} />\n </ControlFrameItem>\n )}\n </ControlFrame>\n </ControlSection>\n <ControlSection\n title={t('danger zone title', { ns: CLIENT_PLUGIN })}\n description={t('danger zone description', { ns: CLIENT_PLUGIN })}\n >\n <ControlGroup>\n <ControlItem\n title={t('reset device label')}\n description={t('reset device description', { ns: CLIENT_PLUGIN })}\n >\n <Button variant='destructive' onClick={handleResetStorage} data-testid='devicesContainer.reset'>\n {t('reset device label')}\n </Button>\n </ControlItem>\n <ControlItem\n title={t('recover identity label')}\n description={t('recover identity description', { ns: CLIENT_PLUGIN })}\n >\n <Button variant='destructive' onClick={handleRecover} data-testid='devicesContainer.recover'>\n {t('recover identity label')}\n </Button>\n </ControlItem>\n <ControlItem\n title={t('join new identity label')}\n description={t('join new identity description', { ns: CLIENT_PLUGIN })}\n >\n <Button variant='destructive' onClick={handleJoinNewIdentity} data-testid='devicesContainer.joinExisting'>\n {t('join new identity label')}\n </Button>\n </ControlItem>\n </ControlGroup>\n </ControlSection>\n </ControlPage>\n </Clipboard.Provider>\n );\n};\n\ntype DeviceInvitationProps = {\n invitation?: CancellableInvitationObservable;\n createInvitationUrl: (invitationCode: string) => string;\n onInvitationDone: () => void;\n onInvitationCreate: () => void;\n};\n\nconst DeviceInvitation = (props: Pick<DeviceInvitationProps, 'createInvitationUrl'>) => {\n const client = useClient();\n const [invitation, setInvitation] = useState<CancellableInvitationObservable>();\n\n const onInvitationCreate = useCallback(() => {\n const invitation = client.halo.share();\n if (client.config.values.runtime?.app?.env?.DX_ENVIRONMENT !== 'production') {\n const subscription = invitation.subscribe((invitation: Invitation) => {\n const invitationCode = InvitationEncoder.encode(invitation);\n if (invitation.state === Invitation.State.CONNECTING) {\n log.info(JSON.stringify({ invitationCode, authCode: invitation.authCode }));\n subscription.unsubscribe();\n }\n });\n }\n setInvitation(invitation);\n }, [client]);\n\n const onInvitationDone = useCallback(() => {\n setInvitation(undefined);\n }, []);\n\n if (invitation) {\n return <DeviceInvitationImpl {...props} {...{ invitation, onInvitationCreate, onInvitationDone }} />;\n } else {\n return <InvitationSection {...props} {...{ onInvitationCreate, onInvitationDone }} />;\n }\n};\n\nconst DeviceInvitationImpl = ({\n invitation: invitationObservable,\n createInvitationUrl,\n onInvitationDone,\n onInvitationCreate,\n}: DeviceInvitationProps) => {\n const invitation = useMulticastObservable(invitationObservable!);\n const url = createInvitationUrl(InvitationEncoder.encode(invitation));\n\n useEffect(() => {\n if (invitation.state >= Invitation.State.SUCCESS) {\n onInvitationDone();\n }\n }, [invitation.state]);\n\n return <InvitationSection {...invitation} {...{ url, onInvitationDone, onInvitationCreate }} />;\n};\n\ntype InvitationComponentProps = Partial<\n Pick<Invitation, 'authCode' | 'invitationId'> &\n Pick<DeviceInvitationProps, 'onInvitationDone' | 'onInvitationCreate'> & {\n state: number;\n url: string;\n }\n>;\n\nconst InvitationSection = ({\n state = -1,\n authCode,\n invitationId = 'never',\n url = 'never',\n onInvitationDone = () => {},\n onInvitationCreate = () => {},\n}: InvitationComponentProps) => {\n const { t } = useTranslation(CLIENT_PLUGIN);\n const activeView =\n state < 0\n ? 'init'\n : state >= Invitation.State.CANCELLED\n ? 'complete'\n : state >= Invitation.State.READY_FOR_AUTHENTICATION && authCode\n ? 'auth-code'\n : 'qr-code';\n return activeView === 'init' ? (\n <>\n <p className='text-description mbe-2'>{t('add device description')}</p>\n <IconButton\n icon='ph--plus--regular'\n label={t('create device invitation label')}\n disabled={state >= 0}\n classNames='is-full'\n data-testid='devicesContainer.createInvitation'\n onClick={onInvitationCreate}\n />\n </>\n ) : (\n <Viewport.Root activeView={activeView}>\n <Viewport.Views>\n <Viewport.View id='init'>\n {/* This view intentionally left blank while conditionally rendering the viewport. */}\n </Viewport.View>\n <Viewport.View id='complete'>\n <InvitationComplete statusValue={state} />\n </Viewport.View>\n <Viewport.View id='auth-code'>\n <InvitationAuthCode id={invitationId} code={authCode ?? 'never'} onCancel={onInvitationDone} />\n </Viewport.View>\n <Viewport.View id='qr-code'>\n <InvitationQR id={invitationId} url={url} onCancel={onInvitationDone} />\n </Viewport.View>\n </Viewport.Views>\n </Viewport.Root>\n );\n};\n\nconst InvitationQR = ({ id, url, onCancel }: { id: string; url: string; onCancel: () => void }) => {\n const { t } = useTranslation('os');\n const qrLabel = useId('devices-container__qr-code');\n const emoji = hexToEmoji(id);\n return (\n <>\n <p className='text-description'>{t('qr code description', { ns: CLIENT_PLUGIN })}</p>\n <div role='group' className='grid grid-cols-[1fr_min-content] mlb-2 gap-2'>\n <div role='none' className='is-full aspect-square relative text-description'>\n <QR\n rounding={100}\n backgroundColor='transparent'\n color='currentColor'\n aria-labelledby={qrLabel}\n errorCorrectionLevel='Q'\n cutout={true}\n >\n {url ?? 'never'}\n </QR>\n <Centered>\n <Emoji text={emoji} />\n </Centered>\n </div>\n <span id={qrLabel} className='sr-only'>\n {t('qr label')}\n </span>\n </div>\n {/* TODO(burdon): Factor out button bar */}\n <div className='flex justify-center'>\n <div className='flex gap-2'>\n <Clipboard.Button value={url ?? 'never'} />\n <Button variant='ghost' onClick={onCancel}>\n {t('cancel label')}\n </Button>\n </div>\n </div>\n </>\n );\n};\n\nconst InvitationAuthCode = ({ id, code, onCancel }: { id: string; code: string; onCancel: () => void }) => {\n const { t } = useTranslation('os');\n const emoji = hexToEmoji(id);\n\n return (\n <>\n <p className='text-description'>{t('auth other device emoji message')}</p>\n {emoji && <Emoji text={emoji} className='mli-auto mlb-2 text-center' />}\n <p className='text-description'>{t('auth code message')}</p>\n <AuthCode code={code} large classNames='mli-auto mlb-2 text-center grow' />\n <Button variant='ghost' onClick={onCancel}>\n {t('cancel label')}\n </Button>\n </>\n );\n};\n\nconst InvitationComplete = ({ statusValue }: { statusValue: number }) => {\n return statusValue > 0 ? (\n <Icon icon='ph--check--regular' size={6} classNames='m-1.5' />\n ) : (\n <Icon icon='ph--x--regular' size={6} classNames='m-1.5' />\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { LayoutAction, createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { type InvitationResult } from '@dxos/react-client/invitations';\nimport { Dialog, useTranslation } from '@dxos/react-ui';\nimport { JoinPanel, type JoinPanelProps } from '@dxos/shell/react';\n\nimport { CLIENT_PLUGIN } from '../meta';\nimport { ClientAction } from '../types';\n\nexport const JOIN_DIALOG = `${CLIENT_PLUGIN}/JoinDialog`;\n\nexport const JoinDialog = (props: JoinPanelProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const { t } = useTranslation(CLIENT_PLUGIN);\n\n const handleCancelResetStorage = useCallback(() => dispatch(createIntent(ClientAction.ShareIdentity)), [dispatch]);\n\n const handleDone = useCallback(\n async (result: InvitationResult | null) => {\n if (result?.identityKey) {\n await Promise.all([\n dispatch(createIntent(LayoutAction.UpdateDialog, { part: 'dialog', options: { state: false } })),\n dispatch(\n createIntent(ObservabilityAction.SendEvent, {\n name: props.initialDisposition === 'recover-identity' ? 'identity.recover' : 'identity.join',\n }),\n ),\n ]);\n }\n },\n [dispatch],\n );\n\n return (\n <Dialog.Content>\n <Dialog.Title classNames='sr-only'>{t('join space label', { ns: 'os' })}</Dialog.Title>\n <JoinPanel\n mode='halo-only'\n {...props}\n exitActionParent={<Dialog.Close asChild />}\n doneActionParent={<Dialog.Close asChild />}\n onCancelResetStorage={handleCancelResetStorage}\n onDone={handleDone}\n />\n </Dialog.Content>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\nimport React, { type ChangeEvent, useCallback, useMemo, useState } from 'react';\n\nimport { debounce } from '@dxos/async';\nimport { useClient } from '@dxos/react-client';\nimport { type Identity, useIdentity } from '@dxos/react-client/halo';\nimport { ButtonGroup, Clipboard, Input, useTranslation } from '@dxos/react-ui';\nimport {\n ControlItem,\n ControlItemInput,\n ControlPage,\n ControlSection,\n Form,\n type InputComponent,\n} from '@dxos/react-ui-form';\nimport { EmojiPickerBlock, HuePicker } from '@dxos/react-ui-pickers';\nimport { hexToEmoji, hexToHue } from '@dxos/util';\n\nimport { CLIENT_PLUGIN } from '../meta';\n\n// TODO(thure): Factor out?\nconst getDefaultHueValue = (identity: Identity | null) => hexToHue(identity?.identityKey.toHex() ?? '0');\nconst getDefaultEmojiValue = (identity: Identity | null) => hexToEmoji(identity?.identityKey.toHex() ?? '0');\nconst getHueValue = (identity: Identity | null) => identity?.profile?.data?.hue || getDefaultHueValue(identity);\nconst getEmojiValue = (identity: Identity | null) => identity?.profile?.data?.emoji || getDefaultEmojiValue(identity);\n\nexport const ProfileContainer = () => {\n const { t } = useTranslation(CLIENT_PLUGIN);\n const client = useClient();\n const identity = useIdentity();\n const [displayName, setDisplayNameDirectly] = useState(identity?.profile?.displayName ?? '');\n const [emoji, setEmojiDirectly] = useState<string>(getEmojiValue(identity));\n const [hue, setHueDirectly] = useState<string>(getHueValue(identity));\n\n const updateProfile = useMemo(\n () =>\n debounce(\n (profile: Partial<Profile>) =>\n client.halo.updateProfile({\n displayName: profile.displayName,\n data: {\n emoji: profile.emoji,\n hue: profile.hue,\n },\n }),\n 2_000,\n ),\n [],\n );\n\n const handleSave = useCallback(\n (profile: Profile) => {\n setDisplayNameDirectly(profile.displayName);\n setEmojiDirectly(profile.emoji);\n setHueDirectly(profile.hue);\n void updateProfile(profile);\n },\n [identity],\n );\n\n const values = useMemo(\n () => ({\n displayName,\n emoji,\n hue,\n did: identity?.did,\n }),\n [identity, displayName, emoji, hue],\n );\n\n // TODO(wittjosiah): Integrate descriptions with the form schema.\n const customElements: Partial<Record<string, InputComponent>> = useMemo(\n () => ({\n displayName: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback(\n ({ target: { value } }: ChangeEvent<HTMLInputElement>) => onValueChange(type, value),\n [onValueChange, type],\n );\n return (\n <ControlItemInput title={label} description={t('display name description')}>\n <Input.TextInput\n value={getValue()}\n onChange={handleChange}\n placeholder={t('display name input placeholder')}\n classNames='min-is-64'\n />\n </ControlItemInput>\n );\n },\n emoji: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((nextEmoji: string) => onValueChange(type, nextEmoji), [onValueChange, type]);\n const handleEmojiReset = useCallback(\n () => onValueChange(type, getDefaultEmojiValue(identity)),\n [onValueChange, type],\n );\n return (\n <ControlItem title={label} description={t('icon description')}>\n <EmojiPickerBlock\n triggerVariant='default'\n emoji={getValue()}\n onChangeEmoji={handleChange}\n onClickClear={handleEmojiReset}\n classNames='justify-self-end'\n />\n </ControlItem>\n );\n },\n hue: ({ type, label, getValue, onValueChange }) => {\n const handleChange = useCallback((nextHue: string) => onValueChange(type, nextHue), [onValueChange, type]);\n const handleHueReset = useCallback(\n () => onValueChange(type, getDefaultHueValue(identity)),\n [onValueChange, type],\n );\n return (\n <ControlItem title={label} description={t('hue description')}>\n <HuePicker\n value={getValue()}\n onChange={handleChange}\n onReset={handleHueReset}\n classNames='[--hue-preview-size:1.5rem] justify-self-end'\n />\n </ControlItem>\n );\n },\n // TODO(wittjosiah): We need text input annotations for disabled and copyable.\n did: ({ label, getValue }) => {\n return (\n <ControlItemInput title={label} description={t('did description')}>\n <ButtonGroup>\n <Input.TextInput value={getValue()} disabled classNames='min-is-64' />\n <Clipboard.IconButton value={getValue() ?? ''} />\n </ButtonGroup>\n </ControlItemInput>\n );\n },\n }),\n [t],\n );\n\n return (\n <ControlPage>\n <Clipboard.Provider>\n <ControlSection title={t('profile label')} description={t('profile description')}>\n <Form\n schema={ProfileSchema}\n values={values}\n autoSave\n onSave={handleSave}\n Custom={customElements}\n classNames='container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]'\n outerSpacing={false}\n />\n </ControlSection>\n </Clipboard.Provider>\n </ControlPage>\n );\n};\n\n// TODO(wittjosiah): Integrate annotations with translations.\nconst ProfileSchema = Schema.Struct({\n displayName: Schema.String.annotations({ title: 'Display name' }),\n emoji: Schema.String.annotations({ title: 'Avatar' }),\n hue: Schema.String.annotations({ title: 'Color' }),\n did: Schema.String.annotations({ title: 'DID' }),\n});\ntype Profile = Schema.Schema.Type<typeof ProfileSchema>;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useState } from 'react';\n\nimport { AlertDialog, Button, Clipboard, Input, useTranslation } from '@dxos/react-ui';\n\nimport { CLIENT_PLUGIN } from '../meta';\n\nexport const RECOVERY_CODE_DIALOG = `${CLIENT_PLUGIN}/RecoveryCodeDialog`;\n\nexport type RecoveryCodeDialogProps = {\n code: string;\n};\n\nexport const RecoveryCodeDialog = ({ code }: RecoveryCodeDialogProps) => {\n const { t } = useTranslation(CLIENT_PLUGIN);\n const [confirmation, setConfirmation] = useState(false);\n\n const handleConfirmation = useCallback((checked: boolean) => setConfirmation(checked), []);\n\n return (\n <AlertDialog.Content classNames='bs-content min-bs-[15rem] max-bs-full md:max-is-[40rem] overflow-hidden'>\n <AlertDialog.Title>{t('recovery code dialog title')}</AlertDialog.Title>\n <p className='py-4'>{t('recovery code dialog description')}</p>\n <Clipboard.Provider>\n <Code code={code} />\n </Clipboard.Provider>\n <div className='flex flex-col py-4 gap-2'>\n <p>{t('recovery code dialog warning 1')}</p>\n <p>{t('recovery code dialog warning 2')}</p>\n </div>\n <div className='flex items-center gap-2 pbe-4'>\n <Input.Root>\n <Input.Checkbox\n data-testid='recoveryCode.confirm'\n checked={confirmation}\n onCheckedChange={handleConfirmation}\n />\n <Input.Label>{t('recovery code confirmation label')}</Input.Label>\n </Input.Root>\n </div>\n <div className='flex justify-end'>\n <AlertDialog.Action asChild>\n <Button data-testid='recoveryCode.continue' variant='primary' disabled={!confirmation}>\n {t('continue label')}\n </Button>\n </AlertDialog.Action>\n </div>\n </AlertDialog.Content>\n );\n};\n\nconst Code = ({ code }: { code: string }) => {\n const words = code.split(' ');\n return (\n <div className='relative p-2 border border-separator rounded group'>\n <Clipboard.IconButton value={code} classNames='absolute top-2 right-2 invisible group-hover:visible' />\n <div className='grid grid-cols-4'>\n {words.map((word, i) => (\n <div key={i} className='flex items-center p-2 gap-2'>\n <div className='w-4 text-xs text-center text-subdued'>{i + 1}</div>\n <div className='text-sm'>{word}</div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { useCredentials } from '@dxos/react-client/halo';\nimport { Icon, IconButton, List, ListItem, Message, useTranslation } from '@dxos/react-ui';\nimport { ControlGroup, ControlItem, ControlPage, ControlSection } from '@dxos/react-ui-form';\n\nimport { CLIENT_PLUGIN } from '../meta';\nimport { ClientAction } from '../types';\n\nexport const MANAGE_CREDENTIALS_DIALOG = `${CLIENT_PLUGIN}/ManageCredentialsDialog`;\n\nexport const RecoveryCredentialsContainer = () => {\n const { t } = useTranslation(CLIENT_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const credentials = useCredentials();\n const recoveryCredentials = credentials.filter(\n (credential) => credential.subject.assertion['@type'] === 'dxos.halo.credentials.IdentityRecovery',\n );\n\n return (\n <ControlPage>\n <ControlSection title={t('recovery setup dialog title')} description={t('recovery setup dialog description')}>\n <ControlGroup>\n <ControlItem title={t('create passkey label')} description={t('create passkey description')}>\n <IconButton\n label={t('create passkey label')}\n icon='ph--key--duotone'\n variant='primary'\n size={5}\n onClick={() => dispatch(createIntent(ClientAction.CreatePasskey))}\n />\n </ControlItem>\n <ControlItem title={t('create recovery code label')} description={t('create recovery code description')}>\n <IconButton\n label={t('create recovery code label')}\n icon='ph--receipt--duotone'\n variant='default'\n size={5}\n onClick={() => dispatch(createIntent(ClientAction.CreateRecoveryCode))}\n />\n </ControlItem>\n </ControlGroup>\n </ControlSection>\n <ControlSection title={t('credentials list label')}>\n {recoveryCredentials.length < 1 ? (\n <Message.Root valence='error' classNames='container-max-width'>\n <Message.Title icon='ph--shield-warning--duotone'>{t('no credentials title')}</Message.Title>\n <Message.Content>{t('no credentials message')}</Message.Content>\n </Message.Root>\n ) : (\n <List classNames='container-max-width pli-2'>\n {recoveryCredentials.map((credential) => (\n <ListItem.Root key={credential.id?.toHex()}>\n <ListItem.Endcap>\n <Icon icon='ph--key--regular' size={5} />\n </ListItem.Endcap>\n <ListItem.Heading>{credential.issuanceDate.toLocaleString()}</ListItem.Heading>\n </ListItem.Root>\n ))}\n </List>\n )}\n </ControlSection>\n </ControlPage>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { LayoutAction, createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { useClient } from '@dxos/react-client';\nimport { Dialog, useTranslation } from '@dxos/react-ui';\nimport { ConfirmReset, type ConfirmResetProps } from '@dxos/shell/react';\n\nimport { CLIENT_PLUGIN } from '../meta';\nimport { type ClientPluginOptions } from '../types';\n\nexport const RESET_DIALOG = `${CLIENT_PLUGIN}/ResetDialog`;\n\nexport type ResetDialogProps = Pick<ConfirmResetProps, 'mode'> & Pick<ClientPluginOptions, 'onReset'>;\n\nexport const ResetDialog = ({ mode, onReset }: ResetDialogProps) => {\n const { t } = useTranslation(CLIENT_PLUGIN);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const client = useClient();\n\n const handleReset = useCallback(async () => {\n await client.reset();\n const target =\n mode === 'join new identity' ? 'deviceInvitation' : mode === 'recover' ? 'recoverIdentity' : undefined;\n await onReset?.({ target });\n }, [dispatch, client, mode, onReset]);\n\n const handleCancel = useCallback(() => {\n void dispatch(\n createIntent(LayoutAction.UpdateDialog, {\n part: 'dialog',\n options: { state: false },\n }),\n );\n }, [dispatch]);\n\n // TODO(wittjosiah): Add the sr-only translations.\n // TODO(wittjosiah): Add missing descriptions to other dialogs.\n return (\n <Dialog.Content classNames='bs-content min-bs-[15rem] max-bs-full md:max-is-[40rem] overflow-hidden'>\n <Dialog.Title classNames='sr-only'>{t('reset dialog title')}</Dialog.Title>\n <Dialog.Description classNames='sr-only'>{t('reset dialog description')}</Dialog.Description>\n <ConfirmReset active mode={mode} onConfirm={handleReset} onCancel={handleCancel} />\n </Dialog.Content>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useCallback", "useEffect", "useState", "QR", "createIntent", "useIntentDispatcher", "log", "useClient", "useMulticastObservable", "useDevices", "Invitation", "InvitationEncoder", "useNetworkStatus", "Button", "Clipboard", "Icon", "IconButton", "List", "useId", "useTranslation", "ControlFrame", "ControlFrameItem", "ControlGroup", "ControlItem", "ControlPage", "ControlSection", "AuthCode", "Centered", "DeviceListItem", "Emoji", "Viewport", "hexToEmoji", "DevicesContainer", "createInvitationUrl", "t", "useTranslation", "dispatchPromise", "dispatch", "useIntentDispatcher", "devices", "useDevices", "swarm", "connectionState", "useNetworkStatus", "handleResetStorage", "useCallback", "createIntent", "ClientAction", "ResetStorage", "handleRecover", "mode", "handleJoinNewIdentity", "Clipboard", "Provider", "ControlPage", "ControlSection", "title", "ns", "CLIENT_PLUGIN", "description", "ControlFrame", "ControlFrameItem", "List", "map", "device", "DeviceListItem", "key", "deviceKey", "toHex", "DeviceInvitation", "ControlGroup", "ControlItem", "Button", "variant", "onClick", "data-testid", "props", "client", "useClient", "invitation", "setInvitation", "useState", "onInvitationCreate", "halo", "share", "config", "values", "runtime", "app", "env", "DX_ENVIRONMENT", "subscription", "subscribe", "invitationCode", "InvitationEncoder", "encode", "state", "Invitation", "State", "CONNECTING", "log", "info", "JSON", "stringify", "authCode", "unsubscribe", "onInvitationDone", "undefined", "DeviceInvitationImpl", "InvitationSection", "invitationObservable", "useMulticastObservable", "url", "useEffect", "SUCCESS", "invitationId", "activeView", "CANCELLED", "READY_FOR_AUTHENTICATION", "p", "className", "IconButton", "icon", "label", "disabled", "classNames", "Viewport", "Root", "Views", "View", "id", "InvitationComplete", "statusValue", "InvitationAuthCode", "code", "onCancel", "InvitationQR", "qrLabel", "useId", "emoji", "hexToEmoji", "div", "role", "QR", "rounding", "backgroundColor", "color", "aria-labelledby", "errorCorrectionLevel", "cutout", "Centered", "Emoji", "text", "span", "value", "AuthCode", "large", "Icon", "size", "React", "useCallback", "LayoutAction", "createIntent", "useIntentDispatcher", "ObservabilityAction", "Dialog", "useTranslation", "JoinPanel", "JOIN_DIALOG", "CLIENT_PLUGIN", "JoinDialog", "props", "dispatchPromise", "dispatch", "useIntentDispatcher", "t", "useTranslation", "handleCancelResetStorage", "useCallback", "createIntent", "ClientAction", "ShareIdentity", "handleDone", "result", "identityKey", "Promise", "all", "LayoutAction", "UpdateDialog", "part", "options", "state", "ObservabilityAction", "SendEvent", "name", "initialDisposition", "React", "Dialog", "Content", "Title", "classNames", "ns", "JoinPanel", "mode", "exitActionParent", "Close", "asChild", "doneActionParent", "onCancelResetStorage", "onDone", "Schema", "React", "useCallback", "useMemo", "useState", "debounce", "useClient", "useIdentity", "ButtonGroup", "Clipboard", "Input", "useTranslation", "ControlItem", "ControlItemInput", "ControlPage", "ControlSection", "Form", "EmojiPickerBlock", "HuePicker", "hexToEmoji", "hexToHue", "getDefaultHueValue", "identity", "hexToHue", "identityKey", "toHex", "getDefaultEmojiValue", "hexToEmoji", "getHueValue", "profile", "data", "hue", "getEmojiValue", "emoji", "ProfileContainer", "t", "useTranslation", "CLIENT_PLUGIN", "client", "useClient", "useIdentity", "displayName", "setDisplayNameDirectly", "useState", "setEmojiDirectly", "setHueDirectly", "updateProfile", "useMemo", "debounce", "halo", "handleSave", "useCallback", "values", "did", "customElements", "type", "label", "getValue", "onValueChange", "handleChange", "target", "value", "React", "ControlItemInput", "title", "description", "Input", "TextInput", "onChange", "placeholder", "classNames", "nextEmoji", "handleEmojiReset", "ControlItem", "EmojiPickerBlock", "triggerVariant", "onChangeEmoji", "onClickClear", "nextHue", "handleHueReset", "HuePicker", "onReset", "ButtonGroup", "disabled", "Clipboard", "IconButton", "ControlPage", "Provider", "ControlSection", "Form", "schema", "ProfileSchema", "autoSave", "onSave", "Custom", "outerSpacing", "Schema", "Struct", "String", "annotations", "React", "useCallback", "useState", "AlertDialog", "Button", "Clipboard", "Input", "useTranslation", "RECOVERY_CODE_DIALOG", "CLIENT_PLUGIN", "RecoveryCodeDialog", "code", "t", "useTranslation", "confirmation", "setConfirmation", "useState", "handleConfirmation", "useCallback", "checked", "React", "AlertDialog", "Content", "classNames", "Title", "p", "className", "Clipboard", "Provider", "Code", "div", "Input", "Root", "Checkbox", "data-testid", "onCheckedChange", "Label", "Action", "asChild", "Button", "variant", "disabled", "words", "split", "IconButton", "value", "map", "word", "i", "key", "React", "createIntent", "useIntentDispatcher", "useCredentials", "Icon", "IconButton", "List", "ListItem", "Message", "useTranslation", "ControlGroup", "ControlItem", "ControlPage", "ControlSection", "MANAGE_CREDENTIALS_DIALOG", "CLIENT_PLUGIN", "RecoveryCredentialsContainer", "t", "useTranslation", "dispatchPromise", "dispatch", "useIntentDispatcher", "credentials", "useCredentials", "recoveryCredentials", "filter", "credential", "subject", "assertion", "React", "ControlPage", "ControlSection", "title", "description", "ControlGroup", "ControlItem", "IconButton", "label", "icon", "variant", "size", "onClick", "createIntent", "ClientAction", "CreatePasskey", "CreateRecoveryCode", "length", "Message", "Root", "valence", "classNames", "Title", "Content", "List", "map", "ListItem", "key", "id", "toHex", "Endcap", "Icon", "Heading", "issuanceDate", "toLocaleString", "React", "useCallback", "LayoutAction", "createIntent", "useIntentDispatcher", "useClient", "Dialog", "useTranslation", "ConfirmReset", "RESET_DIALOG", "CLIENT_PLUGIN", "ResetDialog", "mode", "onReset", "t", "useTranslation", "dispatchPromise", "dispatch", "useIntentDispatcher", "client", "useClient", "handleReset", "useCallback", "reset", "target", "undefined", "handleCancel", "createIntent", "LayoutAction", "UpdateDialog", "part", "options", "state", "React", "Dialog", "Content", "classNames", "Title", "Description", "ConfirmReset", "active", "onConfirm", "onCancel"]
7
+ }
@@ -1,4 +1,4 @@
1
- // packages/plugins/plugin-client/src/meta.ts
1
+ // src/meta.ts
2
2
  var CLIENT_PLUGIN = "dxos.org/plugin/client";
3
3
  var meta = {
4
4
  id: CLIENT_PLUGIN,
@@ -9,4 +9,4 @@ export {
9
9
  CLIENT_PLUGIN,
10
10
  meta
11
11
  };
12
- //# sourceMappingURL=chunk-MCEXD5XH.mjs.map
12
+ //# sourceMappingURL=chunk-GS3LDHYD.mjs.map