@dxos/plugin-preview 0.8.4-main.1da679c → 0.8.4-main.1f223c7

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 (36) hide show
  1. package/dist/lib/browser/index.mjs +2 -2
  2. package/dist/lib/browser/meta.json +1 -1
  3. package/dist/lib/browser/{preview-popover-EIATF2VR.mjs → preview-popover-55HRKRXY.mjs} +3 -3
  4. package/dist/lib/browser/{preview-popover-EIATF2VR.mjs.map → preview-popover-55HRKRXY.mjs.map} +1 -1
  5. package/dist/lib/browser/{react-surface-B5AX4QFQ.mjs → react-surface-JGO43GLE.mjs} +64 -154
  6. package/dist/lib/browser/react-surface-JGO43GLE.mjs.map +7 -0
  7. package/dist/lib/node-esm/index.mjs +2 -2
  8. package/dist/lib/node-esm/meta.json +1 -1
  9. package/dist/lib/node-esm/{preview-popover-623SB5KV.mjs → preview-popover-6GFVXZGN.mjs} +3 -3
  10. package/dist/lib/node-esm/{preview-popover-623SB5KV.mjs.map → preview-popover-6GFVXZGN.mjs.map} +1 -1
  11. package/dist/lib/node-esm/{react-surface-F5E3ITVY.mjs → react-surface-Q7F36L3Z.mjs} +64 -154
  12. package/dist/lib/node-esm/react-surface-Q7F36L3Z.mjs.map +7 -0
  13. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  14. package/dist/types/src/components/CardSubjectMenu.d.ts +4 -6
  15. package/dist/types/src/components/CardSubjectMenu.d.ts.map +1 -1
  16. package/dist/types/src/components/ContactCard.d.ts +1 -1
  17. package/dist/types/src/components/ContactCard.d.ts.map +1 -1
  18. package/dist/types/src/components/OrganizationCard.d.ts +1 -1
  19. package/dist/types/src/components/OrganizationCard.d.ts.map +1 -1
  20. package/dist/types/src/components/ProjectCard.d.ts +1 -1
  21. package/dist/types/src/components/ProjectCard.d.ts.map +1 -1
  22. package/dist/types/src/components/TaskCard.d.ts +1 -1
  23. package/dist/types/src/components/TaskCard.d.ts.map +1 -1
  24. package/dist/types/src/types.d.ts +0 -2
  25. package/dist/types/src/types.d.ts.map +1 -1
  26. package/dist/types/tsconfig.tsbuildinfo +1 -1
  27. package/package.json +25 -26
  28. package/src/capabilities/react-surface.tsx +7 -24
  29. package/src/components/CardSubjectMenu.tsx +15 -26
  30. package/src/components/ContactCard.tsx +1 -3
  31. package/src/components/OrganizationCard.tsx +3 -3
  32. package/src/components/ProjectCard.tsx +2 -2
  33. package/src/components/TaskCard.tsx +2 -2
  34. package/src/types.ts +0 -3
  35. package/dist/lib/browser/react-surface-B5AX4QFQ.mjs.map +0 -7
  36. package/dist/lib/node-esm/react-surface-F5E3ITVY.mjs.map +0 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-preview",
3
- "version": "0.8.4-main.1da679c",
3
+ "version": "0.8.4-main.1f223c7",
4
4
  "description": "Preview plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -26,37 +26,36 @@
26
26
  "dependencies": {
27
27
  "@effect-rx/rx-react": "0.38.0",
28
28
  "@preact-signals/safe-react": "^0.9.0",
29
- "@dxos/app-framework": "0.8.4-main.1da679c",
30
- "@dxos/async": "0.8.4-main.1da679c",
31
- "@dxos/app-graph": "0.8.4-main.1da679c",
32
- "@dxos/echo": "0.8.4-main.1da679c",
33
- "@dxos/client": "0.8.4-main.1da679c",
34
- "@dxos/echo-schema": "0.8.4-main.1da679c",
35
- "@dxos/keys": "0.8.4-main.1da679c",
36
- "@dxos/log": "0.8.4-main.1da679c",
37
- "@dxos/plugin-attention": "0.8.4-main.1da679c",
38
- "@dxos/plugin-client": "0.8.4-main.1da679c",
39
- "@dxos/plugin-deck": "0.8.4-main.1da679c",
40
- "@dxos/lit-ui": "0.8.4-main.1da679c",
41
- "@dxos/plugin-space": "0.8.4-main.1da679c",
42
- "@dxos/react-client": "0.8.4-main.1da679c",
43
- "@dxos/react-ui-editor": "0.8.4-main.1da679c",
44
- "@dxos/react-ui": "0.8.4-main.1da679c",
45
- "@dxos/react-ui-form": "0.8.4-main.1da679c",
46
- "@dxos/react-ui-table": "0.8.4-main.1da679c",
47
- "@dxos/react-ui-stack": "0.8.4-main.1da679c",
48
- "@dxos/react-ui-menu": "0.8.4-main.1da679c",
49
- "@dxos/react-ui-theme": "0.8.4-main.1da679c",
50
- "@dxos/schema": "0.8.4-main.1da679c",
51
- "@dxos/util": "0.8.4-main.1da679c"
29
+ "@dxos/app-framework": "0.8.4-main.1f223c7",
30
+ "@dxos/app-graph": "0.8.4-main.1f223c7",
31
+ "@dxos/async": "0.8.4-main.1f223c7",
32
+ "@dxos/echo": "0.8.4-main.1f223c7",
33
+ "@dxos/client": "0.8.4-main.1f223c7",
34
+ "@dxos/echo-schema": "0.8.4-main.1f223c7",
35
+ "@dxos/keys": "0.8.4-main.1f223c7",
36
+ "@dxos/lit-ui": "0.8.4-main.1f223c7",
37
+ "@dxos/log": "0.8.4-main.1f223c7",
38
+ "@dxos/plugin-attention": "0.8.4-main.1f223c7",
39
+ "@dxos/plugin-client": "0.8.4-main.1f223c7",
40
+ "@dxos/react-client": "0.8.4-main.1f223c7",
41
+ "@dxos/react-ui": "0.8.4-main.1f223c7",
42
+ "@dxos/plugin-deck": "0.8.4-main.1f223c7",
43
+ "@dxos/react-ui-form": "0.8.4-main.1f223c7",
44
+ "@dxos/react-ui-editor": "0.8.4-main.1f223c7",
45
+ "@dxos/react-ui-stack": "0.8.4-main.1f223c7",
46
+ "@dxos/react-ui-menu": "0.8.4-main.1f223c7",
47
+ "@dxos/react-ui-table": "0.8.4-main.1f223c7",
48
+ "@dxos/react-ui-theme": "0.8.4-main.1f223c7",
49
+ "@dxos/schema": "0.8.4-main.1f223c7",
50
+ "@dxos/util": "0.8.4-main.1f223c7"
52
51
  },
53
52
  "devDependencies": {
54
53
  "effect": "3.17.7",
55
54
  "react": "~18.2.0",
56
55
  "react-dom": "~18.2.0",
57
56
  "vite": "7.1.1",
58
- "@dxos/random": "0.8.4-main.1da679c",
59
- "@dxos/storybook-utils": "0.8.4-main.1da679c"
57
+ "@dxos/storybook-utils": "0.8.4-main.1f223c7",
58
+ "@dxos/random": "0.8.4-main.1f223c7"
60
59
  },
61
60
  "peerDependencies": {
62
61
  "effect": "^3.13.3",
@@ -19,7 +19,6 @@ import { Filter, Obj } from '@dxos/echo';
19
19
  import { type JsonPath, setValue } from '@dxos/echo-schema';
20
20
  import { AttentionAction } from '@dxos/plugin-attention/types';
21
21
  import { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';
22
- import { useActiveSpace } from '@dxos/plugin-space';
23
22
  import { useQuery, useSpace } from '@dxos/react-client/echo';
24
23
  import { useTranslation } from '@dxos/react-ui';
25
24
  import { Form } from '@dxos/react-ui-form';
@@ -29,7 +28,6 @@ import { descriptionMessage, mx } from '@dxos/react-ui-theme';
29
28
  import { DataType, type ProjectionModel, typenameFromQuery } from '@dxos/schema';
30
29
 
31
30
  import { ContactCard, OrganizationCard, ProjectCard } from '../components';
32
- import { TaskCard } from '../components/TaskCard';
33
31
  import { PREVIEW_PLUGIN } from '../meta';
34
32
 
35
33
  export default () =>
@@ -45,7 +43,6 @@ export default () =>
45
43
  const { dispatch } = useIntentDispatcher();
46
44
  const space = getSpace(data.subject);
47
45
  const defaultSpace = useSpace();
48
- const activeSpace = useActiveSpace();
49
46
 
50
47
  const currentSpaceOrgs = useQuery(space, Filter.type(DataType.Organization));
51
48
  const currentSpaceViews = useQuery(space, Filter.type(DataType.View));
@@ -102,7 +99,7 @@ export default () =>
102
99
  );
103
100
 
104
101
  return (
105
- <ContactCard role={role} subject={data.subject} activeSpace={activeSpace} onOrgClick={handleOrgClick}>
102
+ <ContactCard role={role} subject={data.subject} onOrgClick={handleOrgClick}>
106
103
  {role === 'card--popover' && <Surface role='related' data={data} />}
107
104
  </ContactCard>
108
105
  );
@@ -112,31 +109,17 @@ export default () =>
112
109
  id: `${PREVIEW_PLUGIN}/schema-popover--organization`,
113
110
  role: ['card--popover', 'card--intrinsic', 'card--transclusion', 'card--extrinsic', 'card'],
114
111
  filter: (data): data is { subject: DataType.Organization } => Obj.instanceOf(DataType.Organization, data.subject),
115
- component: ({ data, role }) => {
116
- const activeSpace = useActiveSpace();
117
-
118
- return (
119
- <OrganizationCard role={role} subject={data.subject} activeSpace={activeSpace}>
120
- {role === 'card--popover' && <Surface role='related' data={data} />}
121
- </OrganizationCard>
122
- );
123
- },
112
+ component: ({ data, role }) => (
113
+ <OrganizationCard role={role} subject={data.subject}>
114
+ {role === 'card--popover' && <Surface role='related' data={data} />}
115
+ </OrganizationCard>
116
+ ),
124
117
  }),
125
118
  createSurface({
126
119
  id: `${PREVIEW_PLUGIN}/schema-popover--project`,
127
120
  role: ['card--popover', 'card--intrinsic', 'card--transclusion', 'card--extrinsic', 'card'],
128
121
  filter: (data): data is { subject: DataType.Project } => Obj.instanceOf(DataType.Project, data.subject),
129
- component: ({ data, role }) => {
130
- const activeSpace = useActiveSpace();
131
-
132
- return <ProjectCard subject={data.subject} role={role} activeSpace={activeSpace} />;
133
- },
134
- }),
135
- createSurface({
136
- id: `${PREVIEW_PLUGIN}/schema-popover--task`,
137
- role: ['card--popover', 'card--intrinsic', 'card--transclusion', 'card--extrinsic', 'card'],
138
- filter: (data): data is { subject: DataType.Task } => Obj.instanceOf(DataType.Task, data.subject),
139
- component: ({ data, role }) => <TaskCard subject={data.subject} role={role} />,
122
+ component: ({ data, role }) => <ProjectCard subject={data.subject} role={role} />,
140
123
  }),
141
124
 
142
125
  //
@@ -5,29 +5,24 @@
5
5
  import { Rx } from '@effect-rx/rx-react';
6
6
  import React from 'react';
7
7
 
8
- import { createIntent, useIntentDispatcher } from '@dxos/app-framework';
8
+ // import { useIntentDispatcher } from '@dxos/app-framework';
9
9
  import { ACTION_TYPE } from '@dxos/app-graph';
10
- import { Obj } from '@dxos/echo';
11
- import { SpaceAction } from '@dxos/plugin-space/types';
12
- import { type Space } from '@dxos/react-client/echo';
10
+ import { type AnyEchoObject } from '@dxos/echo-schema';
13
11
  import { IconButton, type IconButtonProps, useTranslation } from '@dxos/react-ui';
14
12
  import { type ActionGraphProps, DropdownMenu, MenuProvider, useMenuActions } from '@dxos/react-ui-menu';
15
13
 
16
- const useSubjectMenuGroupItems = (subject: Obj.Any, activeSpace?: Space) => {
17
- const { dispatchPromise: dispatch } = useIntentDispatcher();
14
+ const useSubjectMenuGroupItems = (subject: AnyEchoObject) => {
15
+ // const { dispatchPromise: dispatch } = useIntentDispatcher();
18
16
  const result: ActionGraphProps = { edges: [], nodes: [] };
19
- if (activeSpace && Obj.getDXN(subject).asQueueDXN()) {
20
- result.nodes.push({
21
- type: ACTION_TYPE,
22
- id: `${subject.id}/add-to-space`,
23
- // TODO(wittjosiah): Update reference to point to db object when adding?
24
- data: () => dispatch(createIntent(SpaceAction.AddObject, { object: subject, target: activeSpace, hidden: true })),
25
- properties: {
26
- label: ['add object to space label', { ns: 'os' }],
27
- icon: 'ph--file-plus--regular',
28
- },
29
- });
30
- }
17
+ result.nodes.push({
18
+ type: ACTION_TYPE,
19
+ id: `${subject.id}/add-to-space`,
20
+ data: () => console.log('[TO DO]', 'add object to space', subject),
21
+ properties: {
22
+ label: ['add object to space label', { ns: 'os' }],
23
+ icon: 'ph--file-plus--regular',
24
+ },
25
+ });
31
26
  result.nodes.forEach(({ id: target }) => {
32
27
  result.edges.push({ source: 'root', target });
33
28
  });
@@ -39,16 +34,10 @@ const useSubjectMenuGroupItems = (subject: Obj.Any, activeSpace?: Space) => {
39
34
  */
40
35
  export const CardSubjectMenu = ({
41
36
  subject,
42
- activeSpace,
43
37
  ...props
44
- }: Omit<IconButtonProps, 'icon' | 'label'> & { subject: Obj.Any; activeSpace?: Space }) => {
38
+ }: Omit<IconButtonProps, 'icon' | 'label'> & { subject: AnyEchoObject }) => {
45
39
  const { t } = useTranslation('os');
46
- const menuProps = useSubjectMenuGroupItems(subject, activeSpace);
47
-
48
- if (!activeSpace) {
49
- return null;
50
- }
51
-
40
+ const menuProps = useSubjectMenuGroupItems(subject);
52
41
  return (
53
42
  <MenuProvider {...menuProps}>
54
43
  <DropdownMenu.Root>
@@ -16,7 +16,6 @@ import { CardSubjectMenu } from './CardSubjectMenu';
16
16
  export const ContactCard = ({
17
17
  children,
18
18
  subject,
19
- activeSpace,
20
19
  onOrgClick,
21
20
  role,
22
21
  }: PreviewProps<DataType.Person> & { onOrgClick?: (org: DataType.Organization) => void }) => {
@@ -31,7 +30,7 @@ export const ContactCard = ({
31
30
  <Avatar.Label asChild>
32
31
  <h2 className={mx(cardHeading, 'grow')}>{fullName}</h2>
33
32
  </Avatar.Label>
34
- <CardSubjectMenu subject={subject} activeSpace={activeSpace} />
33
+ <CardSubjectMenu subject={subject} />
35
34
  </div>
36
35
  </Card.Text>
37
36
  </Avatar.Root>
@@ -62,7 +61,6 @@ export const ContactCard = ({
62
61
  emails.map(({ label, value }) => (
63
62
  <Fragment key={value}>
64
63
  <dt>
65
- <span className='sr-only'>{label}</span>
66
64
  <Icon icon='ph--at--regular' size={5} />
67
65
  </dt>
68
66
  <dd key={value} className='break-words'>
@@ -13,14 +13,14 @@ import { type PreviewProps } from '../types';
13
13
 
14
14
  import { CardSubjectMenu } from './CardSubjectMenu';
15
15
 
16
- export const OrganizationCard = ({ children, subject, role, activeSpace }: PreviewProps<DataType.Organization>) => {
16
+ export const OrganizationCard = ({ children, subject, role }: PreviewProps<DataType.Organization>) => {
17
17
  const { name, image, description, website } = subject;
18
18
  return (
19
19
  <Card.SurfaceRoot role={role}>
20
20
  <Card.Poster alt={name!} {...(image ? { image } : { icon: 'ph--building-office--regular' })} />
21
21
  <div role='none' className={mx('flex items-center gap-2', cardSpacing)}>
22
22
  <Card.Heading classNames={cardNoSpacing}>{name}</Card.Heading>
23
- <CardSubjectMenu subject={subject} activeSpace={activeSpace} />
23
+ <CardSubjectMenu subject={subject} />
24
24
  </div>
25
25
  {description && <Card.Text classNames='line-clamp-2'>{description}</Card.Text>}
26
26
  {website && (
@@ -33,7 +33,7 @@ export const OrganizationCard = ({ children, subject, role, activeSpace }: Previ
33
33
  rel='noreferrer'
34
34
  >
35
35
  <Icon icon='ph--link--regular' size={5} classNames='text-subdued' />
36
- <span className='min-is-0 flex-1 truncate'>{website}</span>
36
+ <span className='grow'>{website}</span>
37
37
  <Icon icon='ph--arrow-square-out--regular' />
38
38
  </a>
39
39
  </Card.Chrome>
@@ -13,14 +13,14 @@ import { type PreviewProps } from '../types';
13
13
 
14
14
  import { CardSubjectMenu } from './CardSubjectMenu';
15
15
 
16
- export const ProjectCard = ({ subject, role, activeSpace }: PreviewProps<DataType.Project>) => {
16
+ export const ProjectCard = ({ subject, role }: PreviewProps<DataType.Project>) => {
17
17
  const { name, image, description } = subject;
18
18
  return (
19
19
  <Card.SurfaceRoot role={role}>
20
20
  {image && <Card.Poster image={image} alt={Obj.getLabel(subject) ?? ''} aspect='auto' />}
21
21
  <div role='none' className={mx('flex items-center gap-2', cardSpacing)}>
22
22
  <Card.Heading classNames={cardNoSpacing}>{name}</Card.Heading>
23
- <CardSubjectMenu subject={subject} activeSpace={activeSpace} />
23
+ <CardSubjectMenu subject={subject} />
24
24
  </div>
25
25
  {description && <Card.Text classNames='line-clamp-2'>{description}</Card.Text>}
26
26
  </Card.SurfaceRoot>
@@ -27,7 +27,7 @@ const getActiveStatusOption = (status?: string) => {
27
27
  return options.find(({ id }) => id === status);
28
28
  };
29
29
 
30
- export const TaskCard = ({ subject, role, activeSpace }: PreviewProps<DataType.Task>) => {
30
+ export const TaskCard = ({ subject, role }: PreviewProps<DataType.Task>) => {
31
31
  const { title, status } = subject;
32
32
  const statusOption = getActiveStatusOption(status);
33
33
  return (
@@ -39,7 +39,7 @@ export const TaskCard = ({ subject, role, activeSpace }: PreviewProps<DataType.T
39
39
  {statusOption.title}
40
40
  </span>
41
41
  )}
42
- <CardSubjectMenu subject={subject} activeSpace={activeSpace} />
42
+ <CardSubjectMenu subject={subject} />
43
43
  </div>
44
44
  </Card.SurfaceRoot>
45
45
  );
package/src/types.ts CHANGED
@@ -5,10 +5,7 @@
5
5
  import { type Schema } from 'effect';
6
6
  import { type PropsWithChildren } from 'react';
7
7
 
8
- import { type Space } from '@dxos/react-client/echo';
9
-
10
8
  export type PreviewProps<T extends Schema.Schema.Type<any>> = PropsWithChildren<{
11
9
  subject: T;
12
10
  role?: string;
13
- activeSpace?: Space;
14
11
  }>;
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/ContactCard.tsx", "../../../src/components/CardSubjectMenu.tsx", "../../../src/components/OrganizationCard.tsx", "../../../src/components/ProjectCard.tsx", "../../../src/components/TaskCard.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Effect } from 'effect';\nimport React, { useCallback } from 'react';\n\nimport {\n Capabilities,\n LayoutAction,\n Surface,\n contributes,\n createIntent,\n createSurface,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { fullyQualifiedId, getSchema, getSpace } from '@dxos/client/echo';\nimport { Filter, Obj } from '@dxos/echo';\nimport { type JsonPath, setValue } from '@dxos/echo-schema';\nimport { AttentionAction } from '@dxos/plugin-attention/types';\nimport { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';\nimport { useActiveSpace } from '@dxos/plugin-space';\nimport { useQuery, useSpace } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\nimport { Card } from '@dxos/react-ui-stack';\nimport { Table } from '@dxos/react-ui-table/types';\nimport { descriptionMessage, mx } from '@dxos/react-ui-theme';\nimport { DataType, type ProjectionModel, typenameFromQuery } from '@dxos/schema';\n\nimport { ContactCard, OrganizationCard, ProjectCard } from '../components';\nimport { TaskCard } from '../components/TaskCard';\nimport { PREVIEW_PLUGIN } from '../meta';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n //\n // Specific schema types.\n //\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover--contact`,\n role: ['card--popover', 'card--intrinsic', 'card--transclusion', 'card--extrinsic', 'card'],\n filter: (data): data is { subject: DataType.Person } => Obj.instanceOf(DataType.Person, data.subject),\n component: ({ data, role }) => {\n const { dispatch } = useIntentDispatcher();\n const space = getSpace(data.subject);\n const defaultSpace = useSpace();\n const activeSpace = useActiveSpace();\n\n const currentSpaceOrgs = useQuery(space, Filter.type(DataType.Organization));\n const currentSpaceViews = useQuery(space, Filter.type(DataType.View));\n const defaultSpaceViews = useQuery(defaultSpace, Filter.type(DataType.View));\n const currentSpaceOrgTable = currentSpaceViews.find(\n (view) =>\n typenameFromQuery(view.query) === DataType.Organization.typename &&\n Obj.instanceOf(Table.Table, view.presentation.target),\n );\n const defaultSpaceOrgTable = defaultSpaceViews.find(\n (view) =>\n typenameFromQuery(view.query) === DataType.Organization.typename &&\n Obj.instanceOf(Table.Table, view.presentation.target),\n );\n\n // TODO(wittjosiah): Generalized way of handling related objects navigation.\n const handleOrgClick = useCallback(\n (org: DataType.Organization) =>\n Effect.gen(function* () {\n const view = currentSpaceOrgs.includes(org) ? currentSpaceOrgTable : defaultSpaceOrgTable;\n yield* dispatch(\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n options: {\n state: false,\n anchorId: '',\n },\n }),\n );\n if (view) {\n const id = fullyQualifiedId(view);\n yield* dispatch(\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: [id],\n options: { workspace: space?.id },\n }),\n );\n yield* dispatch(\n createIntent(DeckAction.ChangeCompanion, {\n primary: id,\n companion: [id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),\n }),\n );\n yield* dispatch(\n createIntent(AttentionAction.Select, {\n contextId: id,\n selection: { mode: 'multi', ids: [org.id] },\n }),\n );\n }\n }).pipe(Effect.runPromise),\n [dispatch, currentSpaceOrgs, currentSpaceOrgTable, defaultSpaceOrgTable],\n );\n\n return (\n <ContactCard role={role} subject={data.subject} activeSpace={activeSpace} onOrgClick={handleOrgClick}>\n {role === 'card--popover' && <Surface role='related' data={data} />}\n </ContactCard>\n );\n },\n }),\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover--organization`,\n role: ['card--popover', 'card--intrinsic', 'card--transclusion', 'card--extrinsic', 'card'],\n filter: (data): data is { subject: DataType.Organization } => Obj.instanceOf(DataType.Organization, data.subject),\n component: ({ data, role }) => {\n const activeSpace = useActiveSpace();\n\n return (\n <OrganizationCard role={role} subject={data.subject} activeSpace={activeSpace}>\n {role === 'card--popover' && <Surface role='related' data={data} />}\n </OrganizationCard>\n );\n },\n }),\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover--project`,\n role: ['card--popover', 'card--intrinsic', 'card--transclusion', 'card--extrinsic', 'card'],\n filter: (data): data is { subject: DataType.Project } => Obj.instanceOf(DataType.Project, data.subject),\n component: ({ data, role }) => {\n const activeSpace = useActiveSpace();\n\n return <ProjectCard subject={data.subject} role={role} activeSpace={activeSpace} />;\n },\n }),\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover--task`,\n role: ['card--popover', 'card--intrinsic', 'card--transclusion', 'card--extrinsic', 'card'],\n filter: (data): data is { subject: DataType.Task } => Obj.instanceOf(DataType.Task, data.subject),\n component: ({ data, role }) => <TaskCard subject={data.subject} role={role} />,\n }),\n\n //\n // Fallback for any object.\n //\n createSurface({\n id: `${PREVIEW_PLUGIN}/fallback-popover`,\n role: ['card--popover', 'card--intrinsic', 'card--transclusion', 'card--extrinsic', 'card'],\n position: 'fallback',\n filter: (data): data is { subject: Obj.Any; projection?: ProjectionModel } => Obj.isObject(data.subject),\n component: ({ data, role }) => {\n const schema = getSchema(data.subject);\n const { t } = useTranslation(PREVIEW_PLUGIN);\n if (!schema) {\n // TODO(burdon): Use Alert.\n return <p className={mx(descriptionMessage)}>{t('unable to create preview message')}</p>;\n }\n\n const handleSave = useCallback((values: any, { changed }: { changed: Record<string, boolean> }) => {\n const changedPaths = Object.keys(changed).filter((path) => changed[path]);\n for (const path of changedPaths) {\n const value = values[path];\n setValue(data.subject, path as JsonPath, value);\n }\n }, []);\n\n return (\n <Card.SurfaceRoot role={role}>\n <Form\n schema={schema}\n projection={data.projection}\n values={data.subject}\n readonly={role === 'card--popover' ? 'static' : false}\n onSave={handleSave}\n autoSave\n {...(role === 'card--intrinsic' && { outerSpacing: 'blockStart-0' })}\n />\n </Card.SurfaceRoot>\n );\n },\n }),\n ]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { Fragment } from 'react';\n\nimport { Avatar, Button, Icon } from '@dxos/react-ui';\nimport { Card, cardHeading, cardText } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { type PreviewProps } from '../types';\n\nimport { CardSubjectMenu } from './CardSubjectMenu';\n\nexport const ContactCard = ({\n children,\n subject,\n activeSpace,\n onOrgClick,\n role,\n}: PreviewProps<DataType.Person> & { onOrgClick?: (org: DataType.Organization) => void }) => {\n const { fullName, image, organization, emails } = subject;\n const organizationName = organization && typeof organization === 'object' ? organization.target?.name : organization;\n return (\n <Card.SurfaceRoot role={role}>\n <Avatar.Root>\n <Card.Text role='group' classNames='grid gap-3 grid-cols-[min-content_1fr]'>\n <Avatar.Content imgSrc={image} icon='ph--user--regular' size={16} hue='neutral' />\n <div role='none' className='bs-min self-center flex items-center'>\n <Avatar.Label asChild>\n <h2 className={mx(cardHeading, 'grow')}>{fullName}</h2>\n </Avatar.Label>\n <CardSubjectMenu subject={subject} activeSpace={activeSpace} />\n </div>\n </Card.Text>\n </Avatar.Root>\n {organizationName && (\n <Card.Chrome>\n {typeof organization === 'object' && onOrgClick ? (\n <Button variant='ghost' classNames='gap-2 text-start' onClick={() => onOrgClick(organization.target!)}>\n <Icon icon='ph--buildings--regular' size={5} classNames='text-subdued' />\n <span className='min-is-0 flex-1 truncate'>{organizationName}</span>\n <Icon icon='ph--arrow-right--regular' />\n </Button>\n ) : (\n <p className='dx-button gap-2' data-variant='ghost'>\n <Icon icon='ph--buildings--regular' size={5} classNames='text-subdued' />\n <span className='min-is-0 flex-1 truncate'>{organizationName}</span>\n </p>\n )}\n </Card.Chrome>\n )}\n {emails?.length && (\n <dl\n className={mx(\n cardText,\n 'grid gap-2 grid-cols-[min-content_1fr] [&_dt]:text-subdued [&_dt]:pbs-0.5 [&_dd]:min-is-0',\n )}\n >\n {emails?.length &&\n emails.map(({ label, value }) => (\n <Fragment key={value}>\n <dt>\n <span className='sr-only'>{label}</span>\n <Icon icon='ph--at--regular' size={5} />\n </dt>\n <dd key={value} className='break-words'>\n {value}\n </dd>\n </Fragment>\n ))}\n </dl>\n )}\n {children}\n </Card.SurfaceRoot>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport React from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { ACTION_TYPE } from '@dxos/app-graph';\nimport { Obj } from '@dxos/echo';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { type Space } from '@dxos/react-client/echo';\nimport { IconButton, type IconButtonProps, useTranslation } from '@dxos/react-ui';\nimport { type ActionGraphProps, DropdownMenu, MenuProvider, useMenuActions } from '@dxos/react-ui-menu';\n\nconst useSubjectMenuGroupItems = (subject: Obj.Any, activeSpace?: Space) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const result: ActionGraphProps = { edges: [], nodes: [] };\n if (activeSpace && Obj.getDXN(subject).asQueueDXN()) {\n result.nodes.push({\n type: ACTION_TYPE,\n id: `${subject.id}/add-to-space`,\n // TODO(wittjosiah): Update reference to point to db object when adding?\n data: () => dispatch(createIntent(SpaceAction.AddObject, { object: subject, target: activeSpace, hidden: true })),\n properties: {\n label: ['add object to space label', { ns: 'os' }],\n icon: 'ph--file-plus--regular',\n },\n });\n }\n result.nodes.forEach(({ id: target }) => {\n result.edges.push({ source: 'root', target });\n });\n return useMenuActions(Rx.make(result));\n};\n\n/**\n * This is a generic menu for objects that tries to infer common actions.\n */\nexport const CardSubjectMenu = ({\n subject,\n activeSpace,\n ...props\n}: Omit<IconButtonProps, 'icon' | 'label'> & { subject: Obj.Any; activeSpace?: Space }) => {\n const { t } = useTranslation('os');\n const menuProps = useSubjectMenuGroupItems(subject, activeSpace);\n\n if (!activeSpace) {\n return null;\n }\n\n return (\n <MenuProvider {...menuProps}>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton\n iconOnly\n variant='ghost'\n icon='ph--dots-three-vertical--bold'\n label={t('more options label')}\n {...props}\n />\n </DropdownMenu.Trigger>\n </DropdownMenu.Root>\n </MenuProvider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Icon } from '@dxos/react-ui';\nimport { Card, cardNoSpacing, cardSpacing } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { type PreviewProps } from '../types';\n\nimport { CardSubjectMenu } from './CardSubjectMenu';\n\nexport const OrganizationCard = ({ children, subject, role, activeSpace }: PreviewProps<DataType.Organization>) => {\n const { name, image, description, website } = subject;\n return (\n <Card.SurfaceRoot role={role}>\n <Card.Poster alt={name!} {...(image ? { image } : { icon: 'ph--building-office--regular' })} />\n <div role='none' className={mx('flex items-center gap-2', cardSpacing)}>\n <Card.Heading classNames={cardNoSpacing}>{name}</Card.Heading>\n <CardSubjectMenu subject={subject} activeSpace={activeSpace} />\n </div>\n {description && <Card.Text classNames='line-clamp-2'>{description}</Card.Text>}\n {website && (\n <Card.Chrome>\n <a\n className='dx-button dx-focus-ring gap-2'\n data-variant='ghost'\n href={website}\n target='_blank'\n rel='noreferrer'\n >\n <Icon icon='ph--link--regular' size={5} classNames='text-subdued' />\n <span className='min-is-0 flex-1 truncate'>{website}</span>\n <Icon icon='ph--arrow-square-out--regular' />\n </a>\n </Card.Chrome>\n )}\n {children}\n </Card.SurfaceRoot>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { Card, cardNoSpacing, cardSpacing } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { type PreviewProps } from '../types';\n\nimport { CardSubjectMenu } from './CardSubjectMenu';\n\nexport const ProjectCard = ({ subject, role, activeSpace }: PreviewProps<DataType.Project>) => {\n const { name, image, description } = subject;\n return (\n <Card.SurfaceRoot role={role}>\n {image && <Card.Poster image={image} alt={Obj.getLabel(subject) ?? ''} aspect='auto' />}\n <div role='none' className={mx('flex items-center gap-2', cardSpacing)}>\n <Card.Heading classNames={cardNoSpacing}>{name}</Card.Heading>\n <CardSubjectMenu subject={subject} activeSpace={activeSpace} />\n </div>\n {description && <Card.Text classNames='line-clamp-2'>{description}</Card.Text>}\n </Card.SurfaceRoot>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { SchemaAST } from 'effect';\nimport React from 'react';\n\nimport { type PropertyMetaAnnotation, PropertyMetaAnnotationId } from '@dxos/echo-schema';\nimport { Card, cardNoSpacing, cardSpacing } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport { DataType } from '@dxos/schema';\n\nimport { type PreviewProps } from '../types';\n\nimport { CardSubjectMenu } from './CardSubjectMenu';\n\n// TODO(thure): Should this move upstream as a helper? Is there an easier way to get options?\nconst getActiveStatusOption = (status?: string) => {\n const properties = SchemaAST.getPropertySignatures(DataType.Task.ast);\n const statusProperty = properties.find((p) => p.name === 'status');\n const statusMeta = SchemaAST.getAnnotation<PropertyMetaAnnotation>(PropertyMetaAnnotationId)(\n // TODO(thure): Typescript asserts `.type` doesn’t have `.types`, but in runtime it does.\n (statusProperty!.type as any).types[0],\n );\n const options = // TODO(thure): Typescript asserts `statusMeta` doesn’t have `.value`, but in runtime it does.\n (statusMeta as any).value.singleSelect.options as { id: string; title: string; color: string }[];\n return options.find(({ id }) => id === status);\n};\n\nexport const TaskCard = ({ subject, role, activeSpace }: PreviewProps<DataType.Task>) => {\n const { title, status } = subject;\n const statusOption = getActiveStatusOption(status);\n return (\n <Card.SurfaceRoot role={role}>\n <div role='none' className={mx('flex items-center gap-2', cardSpacing)}>\n <Card.Heading classNames={[cardNoSpacing, 'min-is-0 flex-1 truncate']}>{title}</Card.Heading>\n {statusOption && (\n <span className='dx-tag' data-hue={statusOption.color}>\n {statusOption.title}\n </span>\n )}\n <CardSubjectMenu subject={subject} activeSpace={activeSpace} />\n </div>\n </Card.SurfaceRoot>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["Effect", "React", "useCallback", "Capabilities", "LayoutAction", "Surface", "contributes", "createIntent", "createSurface", "useIntentDispatcher", "fullyQualifiedId", "getSchema", "getSpace", "Filter", "Obj", "setValue", "AttentionAction", "ATTENDABLE_PATH_SEPARATOR", "DeckAction", "useActiveSpace", "useQuery", "useSpace", "useTranslation", "Form", "Card", "Table", "descriptionMessage", "mx", "DataType", "typenameFromQuery", "React", "Fragment", "Avatar", "Button", "Icon", "Card", "cardHeading", "cardText", "mx", "Rx", "React", "createIntent", "useIntentDispatcher", "ACTION_TYPE", "Obj", "SpaceAction", "IconButton", "useTranslation", "DropdownMenu", "MenuProvider", "useMenuActions", "useSubjectMenuGroupItems", "subject", "activeSpace", "dispatchPromise", "dispatch", "useIntentDispatcher", "result", "edges", "nodes", "Obj", "getDXN", "asQueueDXN", "push", "type", "ACTION_TYPE", "id", "data", "createIntent", "SpaceAction", "AddObject", "object", "target", "hidden", "properties", "label", "ns", "icon", "forEach", "source", "useMenuActions", "Rx", "make", "CardSubjectMenu", "props", "t", "useTranslation", "menuProps", "MenuProvider", "DropdownMenu", "Root", "Trigger", "asChild", "IconButton", "iconOnly", "variant", "ContactCard", "children", "subject", "activeSpace", "onOrgClick", "role", "fullName", "image", "organization", "emails", "organizationName", "target", "name", "React", "Card", "SurfaceRoot", "Avatar", "Root", "Text", "classNames", "Content", "imgSrc", "icon", "size", "hue", "div", "className", "Label", "asChild", "h2", "mx", "cardHeading", "CardSubjectMenu", "Chrome", "Button", "variant", "onClick", "Icon", "span", "p", "data-variant", "length", "dl", "cardText", "map", "label", "value", "Fragment", "key", "dt", "dd", "React", "Icon", "Card", "cardNoSpacing", "cardSpacing", "mx", "OrganizationCard", "children", "subject", "role", "activeSpace", "name", "image", "description", "website", "React", "Card", "SurfaceRoot", "Poster", "alt", "icon", "div", "className", "mx", "cardSpacing", "Heading", "classNames", "cardNoSpacing", "CardSubjectMenu", "Text", "Chrome", "a", "data-variant", "href", "target", "rel", "Icon", "size", "span", "React", "Obj", "Card", "cardNoSpacing", "cardSpacing", "mx", "ProjectCard", "subject", "role", "activeSpace", "name", "image", "description", "React", "Card", "SurfaceRoot", "Poster", "alt", "Obj", "getLabel", "aspect", "div", "className", "mx", "cardSpacing", "Heading", "classNames", "cardNoSpacing", "CardSubjectMenu", "Text", "SchemaAST", "React", "PropertyMetaAnnotationId", "Card", "cardNoSpacing", "cardSpacing", "mx", "DataType", "getActiveStatusOption", "status", "properties", "SchemaAST", "getPropertySignatures", "DataType", "Task", "ast", "statusProperty", "find", "p", "name", "statusMeta", "getAnnotation", "PropertyMetaAnnotationId", "type", "types", "options", "value", "singleSelect", "id", "TaskCard", "subject", "role", "activeSpace", "title", "statusOption", "React", "Card", "SurfaceRoot", "div", "className", "mx", "cardSpacing", "Heading", "classNames", "cardNoSpacing", "span", "data-hue", "color", "CardSubjectMenu", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "PREVIEW_PLUGIN", "role", "filter", "data", "Obj", "instanceOf", "DataType", "Person", "subject", "component", "dispatch", "useIntentDispatcher", "space", "getSpace", "defaultSpace", "useSpace", "activeSpace", "useActiveSpace", "currentSpaceOrgs", "useQuery", "Filter", "type", "Organization", "currentSpaceViews", "View", "defaultSpaceViews", "currentSpaceOrgTable", "find", "view", "typenameFromQuery", "query", "typename", "Table", "presentation", "target", "defaultSpaceOrgTable", "handleOrgClick", "useCallback", "org", "Effect", "gen", "includes", "createIntent", "LayoutAction", "UpdatePopover", "part", "options", "state", "anchorId", "fullyQualifiedId", "Open", "workspace", "DeckAction", "ChangeCompanion", "primary", "companion", "join", "ATTENDABLE_PATH_SEPARATOR", "AttentionAction", "Select", "contextId", "selection", "mode", "ids", "pipe", "runPromise", "React", "ContactCard", "onOrgClick", "Surface", "OrganizationCard", "Project", "ProjectCard", "Task", "TaskCard", "position", "isObject", "schema", "getSchema", "t", "useTranslation", "p", "className", "mx", "descriptionMessage", "handleSave", "values", "changed", "changedPaths", "Object", "keys", "path", "value", "setValue", "Card", "SurfaceRoot", "Form", "projection", "readonly", "onSave", "autoSave", "outerSpacing"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/ContactCard.tsx", "../../../src/components/CardSubjectMenu.tsx", "../../../src/components/OrganizationCard.tsx", "../../../src/components/ProjectCard.tsx", "../../../src/components/TaskCard.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Effect } from 'effect';\nimport React, { useCallback } from 'react';\n\nimport {\n Capabilities,\n LayoutAction,\n Surface,\n contributes,\n createIntent,\n createSurface,\n useIntentDispatcher,\n} from '@dxos/app-framework';\nimport { fullyQualifiedId, getSchema, getSpace } from '@dxos/client/echo';\nimport { Filter, Obj } from '@dxos/echo';\nimport { type JsonPath, setValue } from '@dxos/echo-schema';\nimport { AttentionAction } from '@dxos/plugin-attention/types';\nimport { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';\nimport { useActiveSpace } from '@dxos/plugin-space';\nimport { useQuery, useSpace } from '@dxos/react-client/echo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\nimport { Card } from '@dxos/react-ui-stack';\nimport { Table } from '@dxos/react-ui-table/types';\nimport { descriptionMessage, mx } from '@dxos/react-ui-theme';\nimport { DataType, type ProjectionModel, typenameFromQuery } from '@dxos/schema';\n\nimport { ContactCard, OrganizationCard, ProjectCard } from '../components';\nimport { TaskCard } from '../components/TaskCard';\nimport { PREVIEW_PLUGIN } from '../meta';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n //\n // Specific schema types.\n //\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover--contact`,\n role: ['card--popover', 'card--intrinsic', 'card--transclusion', 'card--extrinsic', 'card'],\n filter: (data): data is { subject: DataType.Person } => Obj.instanceOf(DataType.Person, data.subject),\n component: ({ data, role }) => {\n const { dispatch } = useIntentDispatcher();\n const space = getSpace(data.subject);\n const defaultSpace = useSpace();\n const activeSpace = useActiveSpace();\n\n const currentSpaceOrgs = useQuery(space, Filter.type(DataType.Organization));\n const currentSpaceViews = useQuery(space, Filter.type(DataType.View));\n const defaultSpaceViews = useQuery(defaultSpace, Filter.type(DataType.View));\n const currentSpaceOrgTable = currentSpaceViews.find(\n (view) =>\n typenameFromQuery(view.query) === DataType.Organization.typename &&\n Obj.instanceOf(Table.Table, view.presentation.target),\n );\n const defaultSpaceOrgTable = defaultSpaceViews.find(\n (view) =>\n typenameFromQuery(view.query) === DataType.Organization.typename &&\n Obj.instanceOf(Table.Table, view.presentation.target),\n );\n\n // TODO(wittjosiah): Generalized way of handling related objects navigation.\n const handleOrgClick = useCallback(\n (org: DataType.Organization) =>\n Effect.gen(function* () {\n const view = currentSpaceOrgs.includes(org) ? currentSpaceOrgTable : defaultSpaceOrgTable;\n yield* dispatch(\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n options: {\n state: false,\n anchorId: '',\n },\n }),\n );\n if (view) {\n const id = fullyQualifiedId(view);\n yield* dispatch(\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: [id],\n options: { workspace: space?.id },\n }),\n );\n yield* dispatch(\n createIntent(DeckAction.ChangeCompanion, {\n primary: id,\n companion: [id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),\n }),\n );\n yield* dispatch(\n createIntent(AttentionAction.Select, {\n contextId: id,\n selection: { mode: 'multi', ids: [org.id] },\n }),\n );\n }\n }).pipe(Effect.runPromise),\n [dispatch, currentSpaceOrgs, currentSpaceOrgTable, defaultSpaceOrgTable],\n );\n\n return (\n <ContactCard role={role} subject={data.subject} activeSpace={activeSpace} onOrgClick={handleOrgClick}>\n {role === 'card--popover' && <Surface role='related' data={data} />}\n </ContactCard>\n );\n },\n }),\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover--organization`,\n role: ['card--popover', 'card--intrinsic', 'card--transclusion', 'card--extrinsic', 'card'],\n filter: (data): data is { subject: DataType.Organization } => Obj.instanceOf(DataType.Organization, data.subject),\n component: ({ data, role }) => {\n const activeSpace = useActiveSpace();\n\n return (\n <OrganizationCard role={role} subject={data.subject} activeSpace={activeSpace}>\n {role === 'card--popover' && <Surface role='related' data={data} />}\n </OrganizationCard>\n );\n },\n }),\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover--project`,\n role: ['card--popover', 'card--intrinsic', 'card--transclusion', 'card--extrinsic', 'card'],\n filter: (data): data is { subject: DataType.Project } => Obj.instanceOf(DataType.Project, data.subject),\n component: ({ data, role }) => {\n const activeSpace = useActiveSpace();\n\n return <ProjectCard subject={data.subject} role={role} activeSpace={activeSpace} />;\n },\n }),\n createSurface({\n id: `${PREVIEW_PLUGIN}/schema-popover--task`,\n role: ['card--popover', 'card--intrinsic', 'card--transclusion', 'card--extrinsic', 'card'],\n filter: (data): data is { subject: DataType.Task } => Obj.instanceOf(DataType.Task, data.subject),\n component: ({ data, role }) => <TaskCard subject={data.subject} role={role} />,\n }),\n\n //\n // Fallback for any object.\n //\n createSurface({\n id: `${PREVIEW_PLUGIN}/fallback-popover`,\n role: ['card--popover', 'card--intrinsic', 'card--transclusion', 'card--extrinsic', 'card'],\n position: 'fallback',\n filter: (data): data is { subject: Obj.Any; projection?: ProjectionModel } => Obj.isObject(data.subject),\n component: ({ data, role }) => {\n const schema = getSchema(data.subject);\n const { t } = useTranslation(PREVIEW_PLUGIN);\n if (!schema) {\n // TODO(burdon): Use Alert.\n return <p className={mx(descriptionMessage)}>{t('unable to create preview message')}</p>;\n }\n\n const handleSave = useCallback((values: any, { changed }: { changed: Record<string, boolean> }) => {\n const changedPaths = Object.keys(changed).filter((path) => changed[path]);\n for (const path of changedPaths) {\n const value = values[path];\n setValue(data.subject, path as JsonPath, value);\n }\n }, []);\n\n return (\n <Card.SurfaceRoot role={role}>\n <Form\n schema={schema}\n projection={data.projection}\n values={data.subject}\n readonly={role === 'card--popover' ? 'static' : false}\n onSave={handleSave}\n autoSave\n {...(role === 'card--intrinsic' && { outerSpacing: 'blockStart-0' })}\n />\n </Card.SurfaceRoot>\n );\n },\n }),\n ]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { Fragment } from 'react';\n\nimport { Avatar, Button, Icon } from '@dxos/react-ui';\nimport { Card, cardHeading, cardText } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { type PreviewProps } from '../types';\n\nimport { CardSubjectMenu } from './CardSubjectMenu';\n\nexport const ContactCard = ({\n children,\n subject,\n activeSpace,\n onOrgClick,\n role,\n}: PreviewProps<DataType.Person> & { onOrgClick?: (org: DataType.Organization) => void }) => {\n const { fullName, image, organization, emails } = subject;\n const organizationName = organization && typeof organization === 'object' ? organization.target?.name : organization;\n return (\n <Card.SurfaceRoot role={role}>\n <Avatar.Root>\n <Card.Text role='group' classNames='grid gap-3 grid-cols-[min-content_1fr]'>\n <Avatar.Content imgSrc={image} icon='ph--user--regular' size={16} hue='neutral' />\n <div role='none' className='bs-min self-center flex items-center'>\n <Avatar.Label asChild>\n <h2 className={mx(cardHeading, 'grow')}>{fullName}</h2>\n </Avatar.Label>\n <CardSubjectMenu subject={subject} activeSpace={activeSpace} />\n </div>\n </Card.Text>\n </Avatar.Root>\n {organizationName && (\n <Card.Chrome>\n {typeof organization === 'object' && onOrgClick ? (\n <Button variant='ghost' classNames='gap-2 text-start' onClick={() => onOrgClick(organization.target!)}>\n <Icon icon='ph--buildings--regular' size={5} classNames='text-subdued' />\n <span className='min-is-0 flex-1 truncate'>{organizationName}</span>\n <Icon icon='ph--arrow-right--regular' />\n </Button>\n ) : (\n <p className='dx-button gap-2' data-variant='ghost'>\n <Icon icon='ph--buildings--regular' size={5} classNames='text-subdued' />\n <span className='min-is-0 flex-1 truncate'>{organizationName}</span>\n </p>\n )}\n </Card.Chrome>\n )}\n {emails?.length && (\n <dl\n className={mx(\n cardText,\n 'grid gap-2 grid-cols-[min-content_1fr] [&_dt]:text-subdued [&_dt]:pbs-0.5 [&_dd]:min-is-0',\n )}\n >\n {emails?.length &&\n emails.map(({ label, value }) => (\n <Fragment key={value}>\n <dt>\n <span className='sr-only'>{label}</span>\n <Icon icon='ph--at--regular' size={5} />\n </dt>\n <dd key={value} className='break-words'>\n {value}\n </dd>\n </Fragment>\n ))}\n </dl>\n )}\n {children}\n </Card.SurfaceRoot>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport React from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { ACTION_TYPE } from '@dxos/app-graph';\nimport { Obj } from '@dxos/echo';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { type Space } from '@dxos/react-client/echo';\nimport { IconButton, type IconButtonProps, useTranslation } from '@dxos/react-ui';\nimport { type ActionGraphProps, DropdownMenu, MenuProvider, useMenuActions } from '@dxos/react-ui-menu';\n\nconst useSubjectMenuGroupItems = (subject: Obj.Any, activeSpace?: Space) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const result: ActionGraphProps = { edges: [], nodes: [] };\n if (activeSpace && Obj.getDXN(subject).asQueueDXN()) {\n result.nodes.push({\n type: ACTION_TYPE,\n id: `${subject.id}/add-to-space`,\n // TODO(wittjosiah): Update reference to point to db object when adding?\n data: () => dispatch(createIntent(SpaceAction.AddObject, { object: subject, target: activeSpace, hidden: true })),\n properties: {\n label: ['add object to space label', { ns: 'os' }],\n icon: 'ph--file-plus--regular',\n },\n });\n }\n result.nodes.forEach(({ id: target }) => {\n result.edges.push({ source: 'root', target });\n });\n return useMenuActions(Rx.make(result));\n};\n\n/**\n * This is a generic menu for objects that tries to infer common actions.\n */\nexport const CardSubjectMenu = ({\n subject,\n activeSpace,\n ...props\n}: Omit<IconButtonProps, 'icon' | 'label'> & { subject: Obj.Any; activeSpace?: Space }) => {\n const { t } = useTranslation('os');\n const menuProps = useSubjectMenuGroupItems(subject, activeSpace);\n\n if (!activeSpace) {\n return null;\n }\n\n return (\n <MenuProvider {...menuProps}>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton\n iconOnly\n variant='ghost'\n icon='ph--dots-three-vertical--bold'\n label={t('more options label')}\n {...props}\n />\n </DropdownMenu.Trigger>\n </DropdownMenu.Root>\n </MenuProvider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Icon } from '@dxos/react-ui';\nimport { Card, cardNoSpacing, cardSpacing } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { type PreviewProps } from '../types';\n\nimport { CardSubjectMenu } from './CardSubjectMenu';\n\nexport const OrganizationCard = ({ children, subject, role, activeSpace }: PreviewProps<DataType.Organization>) => {\n const { name, image, description, website } = subject;\n return (\n <Card.SurfaceRoot role={role}>\n <Card.Poster alt={name!} {...(image ? { image } : { icon: 'ph--building-office--regular' })} />\n <div role='none' className={mx('flex items-center gap-2', cardSpacing)}>\n <Card.Heading classNames={cardNoSpacing}>{name}</Card.Heading>\n <CardSubjectMenu subject={subject} activeSpace={activeSpace} />\n </div>\n {description && <Card.Text classNames='line-clamp-2'>{description}</Card.Text>}\n {website && (\n <Card.Chrome>\n <a\n className='dx-button dx-focus-ring gap-2'\n data-variant='ghost'\n href={website}\n target='_blank'\n rel='noreferrer'\n >\n <Icon icon='ph--link--regular' size={5} classNames='text-subdued' />\n <span className='min-is-0 flex-1 truncate'>{website}</span>\n <Icon icon='ph--arrow-square-out--regular' />\n </a>\n </Card.Chrome>\n )}\n {children}\n </Card.SurfaceRoot>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { Card, cardNoSpacing, cardSpacing } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { type PreviewProps } from '../types';\n\nimport { CardSubjectMenu } from './CardSubjectMenu';\n\nexport const ProjectCard = ({ subject, role, activeSpace }: PreviewProps<DataType.Project>) => {\n const { name, image, description } = subject;\n return (\n <Card.SurfaceRoot role={role}>\n {image && <Card.Poster image={image} alt={Obj.getLabel(subject) ?? ''} aspect='auto' />}\n <div role='none' className={mx('flex items-center gap-2', cardSpacing)}>\n <Card.Heading classNames={cardNoSpacing}>{name}</Card.Heading>\n <CardSubjectMenu subject={subject} activeSpace={activeSpace} />\n </div>\n {description && <Card.Text classNames='line-clamp-2'>{description}</Card.Text>}\n </Card.SurfaceRoot>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { SchemaAST } from 'effect';\nimport React from 'react';\n\nimport { type PropertyMetaAnnotation, PropertyMetaAnnotationId } from '@dxos/echo-schema';\nimport { Card, cardNoSpacing, cardSpacing } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport { DataType } from '@dxos/schema';\n\nimport { type PreviewProps } from '../types';\n\nimport { CardSubjectMenu } from './CardSubjectMenu';\n\n// TODO(thure): Should this move upstream as a helper? Is there an easier way to get options?\nconst getActiveStatusOption = (status?: string) => {\n const properties = SchemaAST.getPropertySignatures(DataType.Task.ast);\n const statusProperty = properties.find((p) => p.name === 'status');\n const statusMeta = SchemaAST.getAnnotation<PropertyMetaAnnotation>(PropertyMetaAnnotationId)(\n // TODO(thure): Typescript asserts `.type` doesn’t have `.types`, but in runtime it does.\n (statusProperty!.type as any).types[0],\n );\n const options = // TODO(thure): Typescript asserts `statusMeta` doesn’t have `.value`, but in runtime it does.\n (statusMeta as any).value.singleSelect.options as { id: string; title: string; color: string }[];\n return options.find(({ id }) => id === status);\n};\n\nexport const TaskCard = ({ subject, role, activeSpace }: PreviewProps<DataType.Task>) => {\n const { title, status } = subject;\n const statusOption = getActiveStatusOption(status);\n return (\n <Card.SurfaceRoot role={role}>\n <div role='none' className={mx('flex items-center gap-2', cardSpacing)}>\n <Card.Heading classNames={[cardNoSpacing, 'min-is-0 flex-1 truncate']}>{title}</Card.Heading>\n {statusOption && (\n <span className='dx-tag' data-hue={statusOption.color}>\n {statusOption.title}\n </span>\n )}\n <CardSubjectMenu subject={subject} activeSpace={activeSpace} />\n </div>\n </Card.SurfaceRoot>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["Effect", "React", "useCallback", "Capabilities", "LayoutAction", "Surface", "contributes", "createIntent", "createSurface", "useIntentDispatcher", "fullyQualifiedId", "getSchema", "getSpace", "Filter", "Obj", "setValue", "AttentionAction", "ATTENDABLE_PATH_SEPARATOR", "DeckAction", "useActiveSpace", "useQuery", "useSpace", "useTranslation", "Form", "Card", "Table", "descriptionMessage", "mx", "DataType", "typenameFromQuery", "React", "Fragment", "Avatar", "Button", "Icon", "Card", "cardHeading", "cardText", "mx", "Rx", "React", "createIntent", "useIntentDispatcher", "ACTION_TYPE", "Obj", "SpaceAction", "IconButton", "useTranslation", "DropdownMenu", "MenuProvider", "useMenuActions", "useSubjectMenuGroupItems", "subject", "activeSpace", "dispatchPromise", "dispatch", "useIntentDispatcher", "result", "edges", "nodes", "Obj", "getDXN", "asQueueDXN", "push", "type", "ACTION_TYPE", "id", "data", "createIntent", "SpaceAction", "AddObject", "object", "target", "hidden", "properties", "label", "ns", "icon", "forEach", "source", "useMenuActions", "Rx", "make", "CardSubjectMenu", "props", "t", "useTranslation", "menuProps", "MenuProvider", "DropdownMenu", "Root", "Trigger", "asChild", "IconButton", "iconOnly", "variant", "ContactCard", "children", "subject", "activeSpace", "onOrgClick", "role", "fullName", "image", "organization", "emails", "organizationName", "target", "name", "React", "Card", "SurfaceRoot", "Avatar", "Root", "Text", "classNames", "Content", "imgSrc", "icon", "size", "hue", "div", "className", "Label", "asChild", "h2", "mx", "cardHeading", "CardSubjectMenu", "Chrome", "Button", "variant", "onClick", "Icon", "span", "p", "data-variant", "length", "dl", "cardText", "map", "label", "value", "Fragment", "key", "dt", "dd", "React", "Icon", "Card", "cardNoSpacing", "cardSpacing", "mx", "OrganizationCard", "children", "subject", "role", "activeSpace", "name", "image", "description", "website", "React", "Card", "SurfaceRoot", "Poster", "alt", "icon", "div", "className", "mx", "cardSpacing", "Heading", "classNames", "cardNoSpacing", "CardSubjectMenu", "Text", "Chrome", "a", "data-variant", "href", "target", "rel", "Icon", "size", "span", "React", "Obj", "Card", "cardNoSpacing", "cardSpacing", "mx", "ProjectCard", "subject", "role", "activeSpace", "name", "image", "description", "React", "Card", "SurfaceRoot", "Poster", "alt", "Obj", "getLabel", "aspect", "div", "className", "mx", "cardSpacing", "Heading", "classNames", "cardNoSpacing", "CardSubjectMenu", "Text", "SchemaAST", "React", "PropertyMetaAnnotationId", "Card", "cardNoSpacing", "cardSpacing", "mx", "DataType", "getActiveStatusOption", "status", "properties", "SchemaAST", "getPropertySignatures", "DataType", "Task", "ast", "statusProperty", "find", "p", "name", "statusMeta", "getAnnotation", "PropertyMetaAnnotationId", "type", "types", "options", "value", "singleSelect", "id", "TaskCard", "subject", "role", "activeSpace", "title", "statusOption", "React", "Card", "SurfaceRoot", "div", "className", "mx", "cardSpacing", "Heading", "classNames", "cardNoSpacing", "span", "data-hue", "color", "CardSubjectMenu", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "PREVIEW_PLUGIN", "role", "filter", "data", "Obj", "instanceOf", "DataType", "Person", "subject", "component", "dispatch", "useIntentDispatcher", "space", "getSpace", "defaultSpace", "useSpace", "activeSpace", "useActiveSpace", "currentSpaceOrgs", "useQuery", "Filter", "type", "Organization", "currentSpaceViews", "View", "defaultSpaceViews", "currentSpaceOrgTable", "find", "view", "typenameFromQuery", "query", "typename", "Table", "presentation", "target", "defaultSpaceOrgTable", "handleOrgClick", "useCallback", "org", "Effect", "gen", "includes", "createIntent", "LayoutAction", "UpdatePopover", "part", "options", "state", "anchorId", "fullyQualifiedId", "Open", "workspace", "DeckAction", "ChangeCompanion", "primary", "companion", "join", "ATTENDABLE_PATH_SEPARATOR", "AttentionAction", "Select", "contextId", "selection", "mode", "ids", "pipe", "runPromise", "React", "ContactCard", "onOrgClick", "Surface", "OrganizationCard", "Project", "ProjectCard", "Task", "TaskCard", "position", "isObject", "schema", "getSchema", "t", "useTranslation", "p", "className", "mx", "descriptionMessage", "handleSave", "values", "changed", "changedPaths", "Object", "keys", "path", "value", "setValue", "Card", "SurfaceRoot", "Form", "projection", "readonly", "onSave", "autoSave", "outerSpacing"]
7
- }