@dxos/plugin-preview 0.8.4-main.ae835ea → 0.8.4-main.bc2380dfbc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +102 -5
- package/dist/lib/neutral/PreviewPlugin.mjs +9 -0
- package/dist/lib/neutral/PreviewPlugin.mjs.map +7 -0
- package/dist/lib/neutral/PreviewPlugin.node.mjs +17 -0
- package/dist/lib/neutral/PreviewPlugin.node.mjs.map +7 -0
- package/dist/lib/neutral/PreviewPlugin.workerd.mjs +17 -0
- package/dist/lib/neutral/PreviewPlugin.workerd.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +9 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/chunk-3SWUVHXJ.mjs +28 -0
- package/dist/lib/neutral/chunk-3SWUVHXJ.mjs.map +7 -0
- package/dist/lib/{browser/chunk-CEWM5LJG.mjs → neutral/chunk-52UEVZSF.mjs} +2 -2
- package/dist/lib/neutral/chunk-52UEVZSF.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +7 -0
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +7 -0
- package/dist/lib/neutral/meta.mjs.map +7 -0
- package/dist/lib/neutral/plugin.mjs +11 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/neutral/preview-popover-MPPEMUIA.mjs +78 -0
- package/dist/lib/neutral/preview-popover-MPPEMUIA.mjs.map +7 -0
- package/dist/lib/neutral/react-surface-YFFJXXPQ.mjs +348 -0
- package/dist/lib/neutral/react-surface-YFFJXXPQ.mjs.map +7 -0
- package/dist/lib/neutral/testing.mjs +7 -0
- package/dist/lib/neutral/testing.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +21 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/types/src/PreviewPlugin.d.ts +3 -1
- package/dist/types/src/PreviewPlugin.d.ts.map +1 -1
- package/dist/types/src/PreviewPlugin.node.d.ts +4 -0
- package/dist/types/src/PreviewPlugin.node.d.ts.map +1 -0
- package/dist/types/src/PreviewPlugin.test.d.ts +2 -0
- package/dist/types/src/PreviewPlugin.test.d.ts.map +1 -0
- package/dist/types/src/PreviewPlugin.workerd.d.ts +4 -0
- package/dist/types/src/PreviewPlugin.workerd.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +3 -2
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/preview-popover.d.ts +3 -2
- package/dist/types/src/capabilities/preview-popover.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +3 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/cards/ExpandoCard.d.ts +4 -0
- package/dist/types/src/cards/ExpandoCard.d.ts.map +1 -0
- package/dist/types/src/cards/FormCard.d.ts +7 -0
- package/dist/types/src/cards/FormCard.d.ts.map +1 -0
- package/dist/types/src/cards/JsonCard.d.ts +5 -0
- package/dist/types/src/cards/JsonCard.d.ts.map +1 -0
- package/dist/types/src/cards/OrganizationCard.d.ts +3 -3
- package/dist/types/src/cards/OrganizationCard.d.ts.map +1 -1
- package/dist/types/src/cards/PersonCard.d.ts +5 -0
- package/dist/types/src/cards/PersonCard.d.ts.map +1 -0
- package/dist/types/src/cards/ProjectCard.d.ts +3 -3
- package/dist/types/src/cards/ProjectCard.d.ts.map +1 -1
- package/dist/types/src/cards/TaskCard.d.ts +3 -3
- package/dist/types/src/cards/TaskCard.d.ts.map +1 -1
- package/dist/types/src/cards/index.d.ts +4 -1
- package/dist/types/src/cards/index.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +0 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/plugin.d.ts +3 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/stories/Card.stories.d.ts +22 -14
- package/dist/types/src/stories/Card.stories.d.ts.map +1 -1
- package/dist/types/src/stories/testing.d.ts +15 -12
- package/dist/types/src/stories/testing.d.ts.map +1 -1
- package/dist/types/src/testing.d.ts +2 -0
- package/dist/types/src/testing.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +8 -9
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +90 -39
- package/src/PreviewPlugin.node.ts +16 -0
- package/src/PreviewPlugin.test.ts +25 -0
- package/src/PreviewPlugin.tsx +17 -26
- package/src/PreviewPlugin.workerd.ts +16 -0
- package/src/capabilities/index.ts +3 -3
- package/src/capabilities/preview-popover.ts +68 -41
- package/src/capabilities/react-surface.tsx +104 -135
- package/src/cards/ExpandoCard.tsx +76 -0
- package/src/cards/FormCard.tsx +48 -0
- package/src/cards/JsonCard.tsx +19 -0
- package/src/cards/OrganizationCard.tsx +17 -13
- package/src/cards/PersonCard.tsx +65 -0
- package/src/cards/ProjectCard.tsx +9 -11
- package/src/cards/TaskCard.tsx +26 -28
- package/src/cards/index.ts +4 -1
- package/src/index.ts +0 -3
- package/src/meta.ts +3 -3
- package/src/plugin.ts +9 -0
- package/src/stories/Card.stories.tsx +83 -24
- package/src/stories/testing.tsx +64 -76
- package/src/testing.ts +7 -0
- package/src/translations.ts +8 -8
- package/dist/lib/browser/chunk-CEWM5LJG.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -64
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/preview-popover-RKHENTFP.mjs +0 -65
- package/dist/lib/browser/preview-popover-RKHENTFP.mjs.map +0 -7
- package/dist/lib/browser/react-surface-3AR3BFLF.mjs +0 -515
- package/dist/lib/browser/react-surface-3AR3BFLF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-Q5MUNELK.mjs +0 -19
- package/dist/lib/node-esm/chunk-Q5MUNELK.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -65
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/preview-popover-TZKX67EY.mjs +0 -67
- package/dist/lib/node-esm/preview-popover-TZKX67EY.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-L37JR7U2.mjs +0 -516
- package/dist/lib/node-esm/react-surface-L37JR7U2.mjs.map +0 -7
- package/dist/types/src/cards/ContactCard.d.ts +0 -5
- package/dist/types/src/cards/ContactCard.d.ts.map +0 -1
- package/dist/types/src/components/CardComponents.d.ts +0 -16
- package/dist/types/src/components/CardComponents.d.ts.map +0 -1
- package/dist/types/src/components/CardSubjectMenu.d.ts +0 -8
- package/dist/types/src/components/CardSubjectMenu.d.ts.map +0 -1
- package/dist/types/src/components/index.d.ts +0 -3
- package/dist/types/src/components/index.d.ts.map +0 -1
- package/dist/types/src/types.d.ts +0 -10
- package/dist/types/src/types.d.ts.map +0 -1
- package/src/cards/ContactCard.tsx +0 -65
- package/src/components/CardComponents.tsx +0 -67
- package/src/components/CardSubjectMenu.tsx +0 -91
- package/src/components/index.ts +0 -6
- package/src/types.ts +0 -15
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,iBAAiB,CAAC;IACxE,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC;CACnC,CAAC,CAAC"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import React, { Fragment } from 'react';
|
|
6
|
-
|
|
7
|
-
import { Avatar, Icon } from '@dxos/react-ui';
|
|
8
|
-
import { Card, cardHeading, cardText } from '@dxos/react-ui-stack';
|
|
9
|
-
import { mx } from '@dxos/react-ui-theme';
|
|
10
|
-
import { type DataType } from '@dxos/schema';
|
|
11
|
-
|
|
12
|
-
import { CardRow, CardSubjectMenu, gridRow } from '../components';
|
|
13
|
-
import { type PreviewProps } from '../types';
|
|
14
|
-
|
|
15
|
-
// TODO(burdon): Rename PersonCard.
|
|
16
|
-
export const ContactCard = ({ children, role, subject, activeSpace, onSelect }: PreviewProps<DataType.Person>) => {
|
|
17
|
-
const { fullName, image, organization: { target: organization } = {}, emails } = subject;
|
|
18
|
-
|
|
19
|
-
return (
|
|
20
|
-
<Card.SurfaceRoot role={role}>
|
|
21
|
-
<Avatar.Root>
|
|
22
|
-
<Card.Text role='group' classNames={mx('grid gap-2 grid-cols-[1fr_min-content]')}>
|
|
23
|
-
<div role='none' className={mx(gridRow, 'grid-rows-2')}>
|
|
24
|
-
{activeSpace ? <CardSubjectMenu subject={subject} activeSpace={activeSpace} /> : <div />}
|
|
25
|
-
<Avatar.Label asChild>
|
|
26
|
-
<h2 className={mx(cardHeading, 'grow truncate')}>{fullName}</h2>
|
|
27
|
-
</Avatar.Label>
|
|
28
|
-
</div>
|
|
29
|
-
<Avatar.Content
|
|
30
|
-
imgSrc={image}
|
|
31
|
-
icon='ph--user--regular'
|
|
32
|
-
size={16}
|
|
33
|
-
classNames='text-subdued'
|
|
34
|
-
hue='neutral'
|
|
35
|
-
variant='square'
|
|
36
|
-
/>
|
|
37
|
-
</Card.Text>
|
|
38
|
-
</Avatar.Root>
|
|
39
|
-
{organization?.name && (
|
|
40
|
-
<CardRow
|
|
41
|
-
icon='ph--buildings--regular'
|
|
42
|
-
label={organization.name}
|
|
43
|
-
onClick={onSelect ? () => onSelect(organization) : undefined}
|
|
44
|
-
/>
|
|
45
|
-
)}
|
|
46
|
-
{emails?.length && (
|
|
47
|
-
<dl className={mx(cardText, gridRow, '[&_dt]:text-subdued [&_dt]:pbs-0.5 [&_dd]:min-is-0')}>
|
|
48
|
-
{emails?.length &&
|
|
49
|
-
emails.map(({ label, value }) => (
|
|
50
|
-
<Fragment key={value}>
|
|
51
|
-
<dt>
|
|
52
|
-
<span className='sr-only'>{label}</span>
|
|
53
|
-
<Icon icon='ph--at--regular' size={5} />
|
|
54
|
-
</dt>
|
|
55
|
-
<dd key={value} className='col-span-2 break-words'>
|
|
56
|
-
{value}
|
|
57
|
-
</dd>
|
|
58
|
-
</Fragment>
|
|
59
|
-
))}
|
|
60
|
-
</dl>
|
|
61
|
-
)}
|
|
62
|
-
{children}
|
|
63
|
-
</Card.SurfaceRoot>
|
|
64
|
-
);
|
|
65
|
-
};
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import React from 'react';
|
|
6
|
-
|
|
7
|
-
import { Button, Icon } from '@dxos/react-ui';
|
|
8
|
-
import { Card, cardNoSpacing, cardSpacing } from '@dxos/react-ui-stack';
|
|
9
|
-
import { mx } from '@dxos/react-ui-theme';
|
|
10
|
-
|
|
11
|
-
import { type PreviewProps } from '../types';
|
|
12
|
-
|
|
13
|
-
import { CardSubjectMenu } from './CardSubjectMenu';
|
|
14
|
-
|
|
15
|
-
export const gridRow = 'is-full grid grid-cols-[1.5rem_1fr_min-content] gap-2 items-center';
|
|
16
|
-
|
|
17
|
-
// TODO(burdon): Standardize card grid for common rows.
|
|
18
|
-
|
|
19
|
-
export const CardHeader = ({ label, subject, activeSpace }: { label?: string } & PreviewProps) => {
|
|
20
|
-
return (
|
|
21
|
-
<div role='none' className={mx('flex items-center gap-2', cardSpacing)}>
|
|
22
|
-
<Card.Heading classNames={cardNoSpacing}>{label}</Card.Heading>
|
|
23
|
-
<CardSubjectMenu subject={subject} activeSpace={activeSpace} />
|
|
24
|
-
</div>
|
|
25
|
-
);
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export const CardRow = ({ icon, label, onClick }: { icon: string; label: string; onClick?: () => void }) => {
|
|
29
|
-
if (!onClick) {
|
|
30
|
-
return (
|
|
31
|
-
<Card.Chrome>
|
|
32
|
-
<p data-variant='ghost' className={mx(gridRow, 'dx-button')}>
|
|
33
|
-
<Icon icon={icon} size={5} classNames='text-subdued' />
|
|
34
|
-
<span className='min-is-0 flex-1 truncate col-span-2'>{label}</span>
|
|
35
|
-
</p>
|
|
36
|
-
</Card.Chrome>
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return (
|
|
41
|
-
<Card.Chrome>
|
|
42
|
-
<Button variant='ghost' classNames={mx(gridRow, 'text-start')} onClick={onClick}>
|
|
43
|
-
<Icon icon={icon} size={5} classNames='text-subdued' />
|
|
44
|
-
<span className='min-is-0 flex-1 truncate'>{label}</span>
|
|
45
|
-
<Icon icon='ph--arrow-right--regular' />
|
|
46
|
-
</Button>
|
|
47
|
-
</Card.Chrome>
|
|
48
|
-
);
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
export const CardLink = ({ label, href }: { label: string; href: string }) => {
|
|
52
|
-
return (
|
|
53
|
-
<Card.Chrome>
|
|
54
|
-
<a
|
|
55
|
-
className={mx(gridRow, 'dx-button dx-focus-ring')}
|
|
56
|
-
data-variant='ghost'
|
|
57
|
-
href={href}
|
|
58
|
-
target='_blank'
|
|
59
|
-
rel='noreferrer'
|
|
60
|
-
>
|
|
61
|
-
<Icon icon='ph--link--regular' size={5} classNames='text-subdued' />
|
|
62
|
-
<span className='min-is-0 flex-1 truncate'>{label}</span>
|
|
63
|
-
<Icon icon='ph--arrow-square-out--regular' />
|
|
64
|
-
</a>
|
|
65
|
-
</Card.Chrome>
|
|
66
|
-
);
|
|
67
|
-
};
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { Rx } from '@effect-rx/rx-react';
|
|
6
|
-
import React from 'react';
|
|
7
|
-
|
|
8
|
-
import { LayoutAction, createIntent, useIntentDispatcher } from '@dxos/app-framework';
|
|
9
|
-
import { ACTION_TYPE } from '@dxos/app-graph';
|
|
10
|
-
import { Obj } from '@dxos/echo';
|
|
11
|
-
import { SpaceAction } from '@dxos/plugin-space/types';
|
|
12
|
-
import { fullyQualifiedId } from '@dxos/react-client/echo';
|
|
13
|
-
import { IconButton, type IconButtonProps, useTranslation } from '@dxos/react-ui';
|
|
14
|
-
import {
|
|
15
|
-
type ActionGraphProps,
|
|
16
|
-
DropdownMenu,
|
|
17
|
-
type MenuActions,
|
|
18
|
-
MenuProvider,
|
|
19
|
-
useMenuActions,
|
|
20
|
-
} from '@dxos/react-ui-menu';
|
|
21
|
-
|
|
22
|
-
import { meta } from '../meta';
|
|
23
|
-
import { type PreviewProps } from '../types';
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Generic menu for objects; builds menu with common actions.
|
|
27
|
-
*/
|
|
28
|
-
// TODO(burdon): Reconcile title and menu with main Card header.
|
|
29
|
-
export const CardSubjectMenu = ({
|
|
30
|
-
subject,
|
|
31
|
-
activeSpace,
|
|
32
|
-
...props
|
|
33
|
-
}: PreviewProps & Omit<IconButtonProps, 'icon' | 'label'>) => {
|
|
34
|
-
const { t } = useTranslation(meta.id);
|
|
35
|
-
const menuProps = useSubjectMenuGroupItems({ subject, activeSpace });
|
|
36
|
-
|
|
37
|
-
if (!activeSpace) {
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return (
|
|
42
|
-
<MenuProvider {...menuProps}>
|
|
43
|
-
<DropdownMenu.Root>
|
|
44
|
-
<DropdownMenu.Trigger asChild>
|
|
45
|
-
<IconButton
|
|
46
|
-
variant='ghost'
|
|
47
|
-
icon='ph--dots-three-vertical--bold'
|
|
48
|
-
iconOnly
|
|
49
|
-
label={t('more options label')}
|
|
50
|
-
size={5}
|
|
51
|
-
{...props}
|
|
52
|
-
/>
|
|
53
|
-
</DropdownMenu.Trigger>
|
|
54
|
-
</DropdownMenu.Root>
|
|
55
|
-
</MenuProvider>
|
|
56
|
-
);
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
const useSubjectMenuGroupItems = ({ subject, activeSpace }: PreviewProps): MenuActions => {
|
|
60
|
-
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
61
|
-
const result: ActionGraphProps = { edges: [], nodes: [] };
|
|
62
|
-
|
|
63
|
-
result.nodes.push({
|
|
64
|
-
type: ACTION_TYPE,
|
|
65
|
-
id: `${subject.id}/open`,
|
|
66
|
-
data: () => dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [fullyQualifiedId(subject)] })),
|
|
67
|
-
properties: {
|
|
68
|
-
label: ['open object label', { ns: meta.id }],
|
|
69
|
-
icon: 'ph--arrow-right--regular',
|
|
70
|
-
},
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
if (activeSpace && Obj.getDXN(subject).asQueueDXN()) {
|
|
74
|
-
result.nodes.push({
|
|
75
|
-
type: ACTION_TYPE,
|
|
76
|
-
id: `${subject.id}/add-to-space`,
|
|
77
|
-
// TODO(wittjosiah): Update reference to point to db object when adding?
|
|
78
|
-
data: () => dispatch(createIntent(SpaceAction.AddObject, { object: subject, target: activeSpace, hidden: true })),
|
|
79
|
-
properties: {
|
|
80
|
-
label: ['add object to space label', { ns: meta.id }],
|
|
81
|
-
icon: 'ph--file-plus--regular',
|
|
82
|
-
},
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
result.nodes.forEach(({ id: target }) => {
|
|
87
|
-
result.edges.push({ source: 'root', target });
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
return useMenuActions(Rx.make(result));
|
|
91
|
-
};
|
package/src/components/index.ts
DELETED
package/src/types.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { type PropsWithChildren } from 'react';
|
|
6
|
-
|
|
7
|
-
import { type Obj } from '@dxos/echo';
|
|
8
|
-
import { type Space } from '@dxos/react-client/echo';
|
|
9
|
-
|
|
10
|
-
export type PreviewProps<T extends Obj.Any = Obj.Any> = PropsWithChildren<{
|
|
11
|
-
subject: T;
|
|
12
|
-
role?: string;
|
|
13
|
-
activeSpace?: Space;
|
|
14
|
-
onSelect?: (obj: Obj.Any) => void;
|
|
15
|
-
}>;
|