@dxos/plugin-preview 0.8.4-main.406dc2a → 0.8.4-main.422d1c7879

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 (89) hide show
  1. package/dist/lib/browser/index.mjs +41 -46
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +42 -46
  5. package/dist/lib/node-esm/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/PreviewPlugin.d.ts +2 -1
  8. package/dist/types/src/PreviewPlugin.d.ts.map +1 -1
  9. package/dist/types/src/capabilities/index.d.ts +3 -2
  10. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  11. package/dist/types/src/capabilities/preview-popover.d.ts +3 -2
  12. package/dist/types/src/capabilities/preview-popover.d.ts.map +1 -1
  13. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  14. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  15. package/dist/types/src/cards/FormCard.d.ts +7 -0
  16. package/dist/types/src/cards/FormCard.d.ts.map +1 -0
  17. package/dist/types/src/cards/JsonCard.d.ts +5 -0
  18. package/dist/types/src/cards/JsonCard.d.ts.map +1 -0
  19. package/dist/types/src/cards/OrganizationCard.d.ts +5 -0
  20. package/dist/types/src/cards/OrganizationCard.d.ts.map +1 -0
  21. package/dist/types/src/cards/PersonCard.d.ts +5 -0
  22. package/dist/types/src/cards/PersonCard.d.ts.map +1 -0
  23. package/dist/types/src/cards/ProjectCard.d.ts +5 -0
  24. package/dist/types/src/cards/ProjectCard.d.ts.map +1 -0
  25. package/dist/types/src/cards/TaskCard.d.ts +5 -0
  26. package/dist/types/src/cards/TaskCard.d.ts.map +1 -0
  27. package/dist/types/src/cards/index.d.ts +7 -0
  28. package/dist/types/src/cards/index.d.ts.map +1 -0
  29. package/dist/types/src/index.d.ts +0 -1
  30. package/dist/types/src/index.d.ts.map +1 -1
  31. package/dist/types/src/meta.d.ts +2 -2
  32. package/dist/types/src/meta.d.ts.map +1 -1
  33. package/dist/types/src/stories/Card.stories.d.ts +19 -13
  34. package/dist/types/src/stories/Card.stories.d.ts.map +1 -1
  35. package/dist/types/src/stories/testing.d.ts +14 -12
  36. package/dist/types/src/stories/testing.d.ts.map +1 -1
  37. package/dist/types/src/translations.d.ts +8 -8
  38. package/dist/types/src/translations.d.ts.map +1 -1
  39. package/dist/types/tsconfig.tsbuildinfo +1 -1
  40. package/package.json +49 -37
  41. package/src/PreviewPlugin.tsx +15 -25
  42. package/src/capabilities/index.ts +3 -3
  43. package/src/capabilities/preview-popover.ts +69 -42
  44. package/src/capabilities/react-surface.tsx +98 -121
  45. package/src/cards/FormCard.tsx +48 -0
  46. package/src/cards/JsonCard.tsx +16 -0
  47. package/src/cards/OrganizationCard.tsx +29 -0
  48. package/src/cards/PersonCard.tsx +65 -0
  49. package/src/cards/ProjectCard.tsx +22 -0
  50. package/src/cards/TaskCard.tsx +44 -0
  51. package/src/cards/index.ts +10 -0
  52. package/src/index.ts +0 -1
  53. package/src/meta.ts +8 -3
  54. package/src/stories/Card.stories.tsx +70 -22
  55. package/src/stories/testing.tsx +55 -78
  56. package/src/translations.ts +8 -8
  57. package/dist/lib/browser/chunk-XKCIQK3C.mjs +0 -12
  58. package/dist/lib/browser/chunk-XKCIQK3C.mjs.map +0 -7
  59. package/dist/lib/browser/preview-popover-RKHENTFP.mjs +0 -65
  60. package/dist/lib/browser/preview-popover-RKHENTFP.mjs.map +0 -7
  61. package/dist/lib/browser/react-surface-X56QWACK.mjs +0 -448
  62. package/dist/lib/browser/react-surface-X56QWACK.mjs.map +0 -7
  63. package/dist/lib/node-esm/chunk-L3IZVX56.mjs +0 -14
  64. package/dist/lib/node-esm/chunk-L3IZVX56.mjs.map +0 -7
  65. package/dist/lib/node-esm/preview-popover-TZKX67EY.mjs +0 -67
  66. package/dist/lib/node-esm/preview-popover-TZKX67EY.mjs.map +0 -7
  67. package/dist/lib/node-esm/react-surface-4P7UCMK7.mjs +0 -449
  68. package/dist/lib/node-esm/react-surface-4P7UCMK7.mjs.map +0 -7
  69. package/dist/types/src/components/CardSubjectMenu.d.ts +0 -12
  70. package/dist/types/src/components/CardSubjectMenu.d.ts.map +0 -1
  71. package/dist/types/src/components/ContactCard.d.ts +0 -7
  72. package/dist/types/src/components/ContactCard.d.ts.map +0 -1
  73. package/dist/types/src/components/OrganizationCard.d.ts +0 -5
  74. package/dist/types/src/components/OrganizationCard.d.ts.map +0 -1
  75. package/dist/types/src/components/ProjectCard.d.ts +0 -5
  76. package/dist/types/src/components/ProjectCard.d.ts.map +0 -1
  77. package/dist/types/src/components/TaskCard.d.ts +0 -5
  78. package/dist/types/src/components/TaskCard.d.ts.map +0 -1
  79. package/dist/types/src/components/index.d.ts +0 -4
  80. package/dist/types/src/components/index.d.ts.map +0 -1
  81. package/dist/types/src/types.d.ts +0 -9
  82. package/dist/types/src/types.d.ts.map +0 -1
  83. package/src/components/CardSubjectMenu.tsx +0 -82
  84. package/src/components/ContactCard.tsx +0 -78
  85. package/src/components/OrganizationCard.tsx +0 -44
  86. package/src/components/ProjectCard.tsx +0 -28
  87. package/src/components/TaskCard.tsx +0 -46
  88. package/src/components/index.ts +0 -7
  89. package/src/types.ts +0 -14
@@ -1,449 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- meta
4
- } from "./chunk-L3IZVX56.mjs";
5
-
6
- // src/capabilities/react-surface.tsx
7
- import React6, { useCallback } from "react";
8
- import { Capabilities, LayoutAction as LayoutAction2, Surface, contributes, createIntent as createIntent2, createSurface, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
9
- import { fullyQualifiedId as fullyQualifiedId2, getSchema, getSpace } from "@dxos/client/echo";
10
- import { Obj as Obj3 } from "@dxos/echo";
11
- import { setValue } from "@dxos/echo/internal";
12
- import { useActiveSpace } from "@dxos/plugin-space";
13
- import { useTranslation as useTranslation2 } from "@dxos/react-ui";
14
- import { Form } from "@dxos/react-ui-form";
15
- import { Card as Card5 } from "@dxos/react-ui-stack";
16
- import { descriptionMessage, mx as mx5 } from "@dxos/react-ui-theme";
17
- import { DataType as DataType2 } from "@dxos/schema";
18
-
19
- // src/components/ContactCard.tsx
20
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
21
- import React2, { Fragment } from "react";
22
- import { Avatar, Button, Icon } from "@dxos/react-ui";
23
- import { Card, cardHeading, cardText } from "@dxos/react-ui-stack";
24
- import { mx } from "@dxos/react-ui-theme";
25
-
26
- // src/components/CardSubjectMenu.tsx
27
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
28
- import { Rx } from "@effect-rx/rx-react";
29
- import React from "react";
30
- import { LayoutAction, createIntent, useIntentDispatcher } from "@dxos/app-framework";
31
- import { ACTION_TYPE } from "@dxos/app-graph";
32
- import { Obj } from "@dxos/echo";
33
- import { SpaceAction } from "@dxos/plugin-space/types";
34
- import { fullyQualifiedId } from "@dxos/react-client/echo";
35
- import { IconButton, useTranslation } from "@dxos/react-ui";
36
- import { DropdownMenu, MenuProvider, useMenuActions } from "@dxos/react-ui-menu";
37
- var useSubjectMenuGroupItems = (subject, activeSpace) => {
38
- const { dispatchPromise: dispatch } = useIntentDispatcher();
39
- const result = {
40
- edges: [],
41
- nodes: []
42
- };
43
- result.nodes.push({
44
- type: ACTION_TYPE,
45
- id: `${subject.id}/open`,
46
- data: () => dispatch(createIntent(LayoutAction.Open, {
47
- part: "main",
48
- subject: [
49
- fullyQualifiedId(subject)
50
- ]
51
- })),
52
- properties: {
53
- label: [
54
- "open object label",
55
- {
56
- ns: meta.id
57
- }
58
- ],
59
- icon: "ph--arrow-right--regular"
60
- }
61
- });
62
- if (activeSpace && Obj.getDXN(subject).asQueueDXN()) {
63
- result.nodes.push({
64
- type: ACTION_TYPE,
65
- id: `${subject.id}/add-to-space`,
66
- // TODO(wittjosiah): Update reference to point to db object when adding?
67
- data: () => dispatch(createIntent(SpaceAction.AddObject, {
68
- object: subject,
69
- target: activeSpace,
70
- hidden: true
71
- })),
72
- properties: {
73
- label: [
74
- "add object to space label",
75
- {
76
- ns: meta.id
77
- }
78
- ],
79
- icon: "ph--file-plus--regular"
80
- }
81
- });
82
- }
83
- result.nodes.forEach(({ id: target }) => {
84
- result.edges.push({
85
- source: "root",
86
- target
87
- });
88
- });
89
- return useMenuActions(Rx.make(result));
90
- };
91
- var CardSubjectMenu = ({ subject, activeSpace, ...props }) => {
92
- var _effect = _useSignals();
93
- try {
94
- const { t } = useTranslation(meta.id);
95
- const menuProps = useSubjectMenuGroupItems(subject, activeSpace);
96
- if (!activeSpace) {
97
- return null;
98
- }
99
- return /* @__PURE__ */ React.createElement(MenuProvider, menuProps, /* @__PURE__ */ React.createElement(DropdownMenu.Root, null, /* @__PURE__ */ React.createElement(DropdownMenu.Trigger, {
100
- asChild: true
101
- }, /* @__PURE__ */ React.createElement(IconButton, {
102
- iconOnly: true,
103
- variant: "ghost",
104
- icon: "ph--dots-three-vertical--bold",
105
- label: t("more options label"),
106
- ...props
107
- }))));
108
- } finally {
109
- _effect.f();
110
- }
111
- };
112
-
113
- // src/components/ContactCard.tsx
114
- var ContactCard = ({ children, subject, activeSpace, onOrgClick, role }) => {
115
- var _effect = _useSignals2();
116
- try {
117
- const { fullName, image, organization, emails } = subject;
118
- const organizationName = organization && typeof organization === "object" ? organization.target?.name : organization;
119
- return /* @__PURE__ */ React2.createElement(Card.SurfaceRoot, {
120
- role
121
- }, /* @__PURE__ */ React2.createElement(Avatar.Root, null, /* @__PURE__ */ React2.createElement(Card.Text, {
122
- role: "group",
123
- classNames: "grid gap-3 grid-cols-[min-content_1fr]"
124
- }, /* @__PURE__ */ React2.createElement(Avatar.Content, {
125
- imgSrc: image,
126
- icon: "ph--user--regular",
127
- size: 16,
128
- hue: "neutral"
129
- }), /* @__PURE__ */ React2.createElement("div", {
130
- role: "none",
131
- className: "bs-min self-center flex items-center"
132
- }, /* @__PURE__ */ React2.createElement(Avatar.Label, {
133
- asChild: true
134
- }, /* @__PURE__ */ React2.createElement("h2", {
135
- className: mx(cardHeading, "grow")
136
- }, fullName)), /* @__PURE__ */ React2.createElement(CardSubjectMenu, {
137
- subject,
138
- activeSpace
139
- })))), organizationName && /* @__PURE__ */ React2.createElement(Card.Chrome, null, typeof organization === "object" && onOrgClick ? /* @__PURE__ */ React2.createElement(Button, {
140
- variant: "ghost",
141
- classNames: "gap-2 text-start",
142
- onClick: () => onOrgClick(organization.target)
143
- }, /* @__PURE__ */ React2.createElement(Icon, {
144
- icon: "ph--buildings--regular",
145
- size: 5,
146
- classNames: "text-subdued"
147
- }), /* @__PURE__ */ React2.createElement("span", {
148
- className: "min-is-0 flex-1 truncate"
149
- }, organizationName), /* @__PURE__ */ React2.createElement(Icon, {
150
- icon: "ph--arrow-right--regular"
151
- })) : /* @__PURE__ */ React2.createElement("p", {
152
- className: "dx-button gap-2",
153
- "data-variant": "ghost"
154
- }, /* @__PURE__ */ React2.createElement(Icon, {
155
- icon: "ph--buildings--regular",
156
- size: 5,
157
- classNames: "text-subdued"
158
- }), /* @__PURE__ */ React2.createElement("span", {
159
- className: "min-is-0 flex-1 truncate"
160
- }, organizationName))), emails?.length && /* @__PURE__ */ React2.createElement("dl", {
161
- className: mx(cardText, "grid gap-2 grid-cols-[min-content_1fr] [&_dt]:text-subdued [&_dt]:pbs-0.5 [&_dd]:min-is-0")
162
- }, emails?.length && emails.map(({ label, value }) => /* @__PURE__ */ React2.createElement(Fragment, {
163
- key: value
164
- }, /* @__PURE__ */ React2.createElement("dt", null, /* @__PURE__ */ React2.createElement("span", {
165
- className: "sr-only"
166
- }, label), /* @__PURE__ */ React2.createElement(Icon, {
167
- icon: "ph--at--regular",
168
- size: 5
169
- })), /* @__PURE__ */ React2.createElement("dd", {
170
- key: value,
171
- className: "break-words"
172
- }, value)))), children);
173
- } finally {
174
- _effect.f();
175
- }
176
- };
177
-
178
- // src/components/OrganizationCard.tsx
179
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
180
- import React3 from "react";
181
- import { Icon as Icon2 } from "@dxos/react-ui";
182
- import { Card as Card2, cardNoSpacing, cardSpacing } from "@dxos/react-ui-stack";
183
- import { mx as mx2 } from "@dxos/react-ui-theme";
184
- var OrganizationCard = ({ children, subject, role, activeSpace }) => {
185
- var _effect = _useSignals3();
186
- try {
187
- const { name, image, description, website } = subject;
188
- return /* @__PURE__ */ React3.createElement(Card2.SurfaceRoot, {
189
- role
190
- }, /* @__PURE__ */ React3.createElement(Card2.Poster, {
191
- alt: name,
192
- ...image ? {
193
- image
194
- } : {
195
- icon: "ph--building-office--regular"
196
- }
197
- }), /* @__PURE__ */ React3.createElement("div", {
198
- role: "none",
199
- className: mx2("flex items-center gap-2", cardSpacing)
200
- }, /* @__PURE__ */ React3.createElement(Card2.Heading, {
201
- classNames: cardNoSpacing
202
- }, name), /* @__PURE__ */ React3.createElement(CardSubjectMenu, {
203
- subject,
204
- activeSpace
205
- })), description && /* @__PURE__ */ React3.createElement(Card2.Text, {
206
- classNames: "line-clamp-2"
207
- }, description), website && /* @__PURE__ */ React3.createElement(Card2.Chrome, null, /* @__PURE__ */ React3.createElement("a", {
208
- className: "dx-button dx-focus-ring gap-2",
209
- "data-variant": "ghost",
210
- href: website,
211
- target: "_blank",
212
- rel: "noreferrer"
213
- }, /* @__PURE__ */ React3.createElement(Icon2, {
214
- icon: "ph--link--regular",
215
- size: 5,
216
- classNames: "text-subdued"
217
- }), /* @__PURE__ */ React3.createElement("span", {
218
- className: "min-is-0 flex-1 truncate"
219
- }, website), /* @__PURE__ */ React3.createElement(Icon2, {
220
- icon: "ph--arrow-square-out--regular"
221
- }))), children);
222
- } finally {
223
- _effect.f();
224
- }
225
- };
226
-
227
- // src/components/ProjectCard.tsx
228
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
229
- import React4 from "react";
230
- import { Obj as Obj2 } from "@dxos/echo";
231
- import { Card as Card3, cardNoSpacing as cardNoSpacing2, cardSpacing as cardSpacing2 } from "@dxos/react-ui-stack";
232
- import { mx as mx3 } from "@dxos/react-ui-theme";
233
- var ProjectCard = ({ subject, role, activeSpace }) => {
234
- var _effect = _useSignals4();
235
- try {
236
- const { name, image, description } = subject;
237
- return /* @__PURE__ */ React4.createElement(Card3.SurfaceRoot, {
238
- role
239
- }, image && /* @__PURE__ */ React4.createElement(Card3.Poster, {
240
- image,
241
- alt: Obj2.getLabel(subject) ?? "",
242
- aspect: "auto"
243
- }), /* @__PURE__ */ React4.createElement("div", {
244
- role: "none",
245
- className: mx3("flex items-center gap-2", cardSpacing2)
246
- }, /* @__PURE__ */ React4.createElement(Card3.Heading, {
247
- classNames: cardNoSpacing2
248
- }, name), /* @__PURE__ */ React4.createElement(CardSubjectMenu, {
249
- subject,
250
- activeSpace
251
- })), description && /* @__PURE__ */ React4.createElement(Card3.Text, {
252
- classNames: "line-clamp-2"
253
- }, description));
254
- } finally {
255
- _effect.f();
256
- }
257
- };
258
-
259
- // src/components/TaskCard.tsx
260
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
261
- import * as SchemaAST from "effect/SchemaAST";
262
- import React5 from "react";
263
- import { PropertyMetaAnnotationId } from "@dxos/echo/internal";
264
- import { Card as Card4, cardNoSpacing as cardNoSpacing3, cardSpacing as cardSpacing3 } from "@dxos/react-ui-stack";
265
- import { mx as mx4 } from "@dxos/react-ui-theme";
266
- import { DataType } from "@dxos/schema";
267
- var getActiveStatusOption = (status) => {
268
- const properties = SchemaAST.getPropertySignatures(DataType.Task.ast);
269
- const statusProperty = properties.find((p) => p.name === "status");
270
- const statusMeta = SchemaAST.getAnnotation(PropertyMetaAnnotationId)(
271
- // TODO(thure): Typescript asserts `.type` doesn’t have `.types`, but in runtime it does.
272
- statusProperty.type.types[0]
273
- );
274
- const options = statusMeta.value.singleSelect.options;
275
- return options.find(({ id }) => id === status);
276
- };
277
- var TaskCard = ({ subject, role, activeSpace }) => {
278
- var _effect = _useSignals5();
279
- try {
280
- const { title, status } = subject;
281
- const statusOption = getActiveStatusOption(status);
282
- return /* @__PURE__ */ React5.createElement(Card4.SurfaceRoot, {
283
- role
284
- }, /* @__PURE__ */ React5.createElement("div", {
285
- role: "none",
286
- className: mx4("flex items-center gap-2", cardSpacing3)
287
- }, /* @__PURE__ */ React5.createElement(Card4.Heading, {
288
- classNames: [
289
- cardNoSpacing3,
290
- "min-is-0 flex-1 truncate"
291
- ]
292
- }, title), statusOption && /* @__PURE__ */ React5.createElement("span", {
293
- className: "dx-tag",
294
- "data-hue": statusOption.color
295
- }, statusOption.title), /* @__PURE__ */ React5.createElement(CardSubjectMenu, {
296
- subject,
297
- activeSpace
298
- })));
299
- } finally {
300
- _effect.f();
301
- }
302
- };
303
-
304
- // src/capabilities/react-surface.tsx
305
- var react_surface_default = (() => contributes(Capabilities.ReactSurface, [
306
- //
307
- // Specific schema types.
308
- //
309
- createSurface({
310
- id: `${meta.id}/schema-popover--contact`,
311
- role: [
312
- "card--popover",
313
- "card--intrinsic",
314
- "card--transclusion",
315
- "card--extrinsic",
316
- "card"
317
- ],
318
- filter: (data) => Obj3.instanceOf(DataType2.Person, data.subject),
319
- component: ({ data, role }) => {
320
- const { dispatchPromise: dispatch } = useIntentDispatcher2();
321
- const space = getSpace(data.subject);
322
- const activeSpace = useActiveSpace();
323
- const handleOrgClick = useCallback((org) => dispatch(createIntent2(LayoutAction2.Open, {
324
- part: "main",
325
- subject: [
326
- fullyQualifiedId2(org)
327
- ],
328
- options: {
329
- workspace: space?.id
330
- }
331
- })), [
332
- dispatch
333
- ]);
334
- return /* @__PURE__ */ React6.createElement(ContactCard, {
335
- role,
336
- subject: data.subject,
337
- activeSpace,
338
- onOrgClick: handleOrgClick
339
- }, role === "card--popover" && /* @__PURE__ */ React6.createElement(Surface, {
340
- role: "related",
341
- data
342
- }));
343
- }
344
- }),
345
- createSurface({
346
- id: `${meta.id}/schema-popover--organization`,
347
- role: [
348
- "card--popover",
349
- "card--intrinsic",
350
- "card--transclusion",
351
- "card--extrinsic",
352
- "card"
353
- ],
354
- filter: (data) => Obj3.instanceOf(DataType2.Organization, data.subject),
355
- component: ({ data, role }) => {
356
- const activeSpace = useActiveSpace();
357
- return /* @__PURE__ */ React6.createElement(OrganizationCard, {
358
- role,
359
- subject: data.subject,
360
- activeSpace
361
- }, role === "card--popover" && /* @__PURE__ */ React6.createElement(Surface, {
362
- role: "related",
363
- data
364
- }));
365
- }
366
- }),
367
- createSurface({
368
- id: `${meta.id}/schema-popover--project`,
369
- role: [
370
- "card--popover",
371
- "card--intrinsic",
372
- "card--transclusion",
373
- "card--extrinsic",
374
- "card"
375
- ],
376
- filter: (data) => Obj3.instanceOf(DataType2.Project, data.subject),
377
- component: ({ data, role }) => {
378
- const activeSpace = useActiveSpace();
379
- return /* @__PURE__ */ React6.createElement(ProjectCard, {
380
- subject: data.subject,
381
- role,
382
- activeSpace
383
- });
384
- }
385
- }),
386
- createSurface({
387
- id: `${meta.id}/schema-popover--task`,
388
- role: [
389
- "card--popover",
390
- "card--intrinsic",
391
- "card--transclusion",
392
- "card--extrinsic",
393
- "card"
394
- ],
395
- filter: (data) => Obj3.instanceOf(DataType2.Task, data.subject),
396
- component: ({ data, role }) => /* @__PURE__ */ React6.createElement(TaskCard, {
397
- subject: data.subject,
398
- role
399
- })
400
- }),
401
- //
402
- // Fallback for any object.
403
- //
404
- createSurface({
405
- id: `${meta.id}/fallback-popover`,
406
- role: [
407
- "card--popover",
408
- "card--intrinsic",
409
- "card--transclusion",
410
- "card--extrinsic",
411
- "card"
412
- ],
413
- position: "fallback",
414
- filter: (data) => Obj3.isObject(data.subject),
415
- component: ({ data, role }) => {
416
- const schema = getSchema(data.subject);
417
- const { t } = useTranslation2(meta.id);
418
- if (!schema) {
419
- return /* @__PURE__ */ React6.createElement("p", {
420
- className: mx5(descriptionMessage)
421
- }, t("unable to create preview message"));
422
- }
423
- const handleSave = useCallback((values, { changed }) => {
424
- const changedPaths = Object.keys(changed).filter((path) => changed[path]);
425
- for (const path of changedPaths) {
426
- const value = values[path];
427
- setValue(data.subject, path, value);
428
- }
429
- }, []);
430
- return /* @__PURE__ */ React6.createElement(Card5.SurfaceRoot, {
431
- role
432
- }, /* @__PURE__ */ React6.createElement(Form, {
433
- schema,
434
- projection: data.projection,
435
- values: data.subject,
436
- readonly: role === "card--popover" ? "static" : false,
437
- onSave: handleSave,
438
- autoSave: true,
439
- ...role === "card--intrinsic" && {
440
- outerSpacing: "blockStart-0"
441
- }
442
- }));
443
- }
444
- })
445
- ]));
446
- export {
447
- react_surface_default as default
448
- };
449
- //# sourceMappingURL=react-surface-4P7UCMK7.mjs.map
@@ -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 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 { Obj } from '@dxos/echo';\nimport { type JsonPath, setValue } from '@dxos/echo/internal';\nimport { useActiveSpace } from '@dxos/plugin-space';\nimport { useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\nimport { Card } from '@dxos/react-ui-stack';\nimport { descriptionMessage, mx } from '@dxos/react-ui-theme';\nimport { DataType, type ProjectionModel } from '@dxos/schema';\n\nimport { ContactCard, OrganizationCard, ProjectCard } from '../components';\nimport { TaskCard } from '../components/TaskCard';\nimport { meta } from '../meta';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n //\n // Specific schema types.\n //\n createSurface({\n id: `${meta.id}/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 { dispatchPromise: dispatch } = useIntentDispatcher();\n const space = getSpace(data.subject);\n const activeSpace = useActiveSpace();\n const handleOrgClick = useCallback(\n (org: DataType.Organization) =>\n dispatch(\n createIntent(LayoutAction.Open, {\n part: 'main',\n subject: [fullyQualifiedId(org)],\n options: {\n workspace: space?.id,\n },\n }),\n ),\n [dispatch],\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: `${meta.id}/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: `${meta.id}/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: `${meta.id}/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: `${meta.id}/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(meta.id);\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 { LayoutAction, 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, fullyQualifiedId } 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\nimport { meta } from '../meta';\n\nconst useSubjectMenuGroupItems = (subject: Obj.Any, activeSpace?: Space) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const result: ActionGraphProps = { edges: [], nodes: [] };\n\n result.nodes.push({\n type: ACTION_TYPE,\n id: `${subject.id}/open`,\n data: () => dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [fullyQualifiedId(subject)] })),\n properties: {\n label: ['open object label', { ns: meta.id }],\n icon: 'ph--arrow-right--regular',\n },\n });\n\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: meta.id }],\n icon: 'ph--file-plus--regular',\n },\n });\n }\n\n result.nodes.forEach(({ id: target }) => {\n result.edges.push({ source: 'root', target });\n });\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(meta.id);\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 * as SchemaAST from 'effect/SchemaAST';\nimport React from 'react';\n\nimport { type PropertyMetaAnnotation, PropertyMetaAnnotationId } from '@dxos/echo/internal';\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": ["React", "useCallback", "Capabilities", "LayoutAction", "Surface", "contributes", "createIntent", "createSurface", "useIntentDispatcher", "fullyQualifiedId", "getSchema", "getSpace", "Obj", "setValue", "useActiveSpace", "useTranslation", "Form", "Card", "descriptionMessage", "mx", "DataType", "React", "Fragment", "Avatar", "Button", "Icon", "Card", "cardHeading", "cardText", "mx", "Rx", "React", "LayoutAction", "createIntent", "useIntentDispatcher", "ACTION_TYPE", "Obj", "SpaceAction", "fullyQualifiedId", "IconButton", "useTranslation", "DropdownMenu", "MenuProvider", "useMenuActions", "useSubjectMenuGroupItems", "subject", "activeSpace", "dispatchPromise", "dispatch", "useIntentDispatcher", "result", "edges", "nodes", "push", "type", "ACTION_TYPE", "id", "data", "createIntent", "LayoutAction", "Open", "part", "fullyQualifiedId", "properties", "label", "ns", "meta", "icon", "Obj", "getDXN", "asQueueDXN", "SpaceAction", "AddObject", "object", "target", "hidden", "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", "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", "meta", "role", "filter", "data", "Obj", "instanceOf", "DataType", "Person", "subject", "component", "dispatchPromise", "dispatch", "useIntentDispatcher", "space", "getSpace", "activeSpace", "useActiveSpace", "handleOrgClick", "useCallback", "org", "createIntent", "LayoutAction", "Open", "part", "fullyQualifiedId", "options", "workspace", "React", "ContactCard", "onOrgClick", "Surface", "Organization", "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,12 +0,0 @@
1
- import React from 'react';
2
- import { Obj } from '@dxos/echo';
3
- import { type Space } from '@dxos/react-client/echo';
4
- import { type IconButtonProps } from '@dxos/react-ui';
5
- /**
6
- * This is a generic menu for objects that tries to infer common actions.
7
- */
8
- export declare const CardSubjectMenu: ({ subject, activeSpace, ...props }: Omit<IconButtonProps, "icon" | "label"> & {
9
- subject: Obj.Any;
10
- activeSpace?: Space;
11
- }) => React.JSX.Element | null;
12
- //# sourceMappingURL=CardSubjectMenu.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CardSubjectMenu.d.ts","sourceRoot":"","sources":["../../../../src/components/CardSubjectMenu.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,KAAK,KAAK,EAAoB,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAc,KAAK,eAAe,EAAkB,MAAM,gBAAgB,CAAC;AAuClF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,oCAI7B,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;IAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC;IAAC,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,6BAuBrF,CAAC"}
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- import { type DataType } from '@dxos/schema';
3
- import { type PreviewProps } from '../types';
4
- export declare const ContactCard: ({ children, subject, activeSpace, onOrgClick, role, }: PreviewProps<DataType.Person> & {
5
- onOrgClick?: (org: DataType.Organization) => void;
6
- }) => React.JSX.Element;
7
- //# sourceMappingURL=ContactCard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ContactCard.d.ts","sourceRoot":"","sources":["../../../../src/components/ContactCard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAKxC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAI7C,eAAO,MAAM,WAAW,GAAI,uDAMzB,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,YAAY,KAAK,IAAI,CAAA;CAAE,sBAwDvF,CAAC"}
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- import { type DataType } from '@dxos/schema';
3
- import { type PreviewProps } from '../types';
4
- export declare const OrganizationCard: ({ children, subject, role, activeSpace }: PreviewProps<DataType.Organization>) => React.JSX.Element;
5
- //# sourceMappingURL=OrganizationCard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OrganizationCard.d.ts","sourceRoot":"","sources":["../../../../src/components/OrganizationCard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAI7C,eAAO,MAAM,gBAAgB,GAAI,0CAA0C,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,sBA4B7G,CAAC"}
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- import { type DataType } from '@dxos/schema';
3
- import { type PreviewProps } from '../types';
4
- export declare const ProjectCard: ({ subject, role, activeSpace }: PreviewProps<DataType.Project>) => React.JSX.Element;
5
- //# sourceMappingURL=ProjectCard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProjectCard.d.ts","sourceRoot":"","sources":["../../../../src/components/ProjectCard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAI7C,eAAO,MAAM,WAAW,GAAI,gCAAgC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAYzF,CAAC"}
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- import { DataType } from '@dxos/schema';
3
- import { type PreviewProps } from '../types';
4
- export declare const TaskCard: ({ subject, role, activeSpace }: PreviewProps<DataType.Task>) => React.JSX.Element;
5
- //# sourceMappingURL=TaskCard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TaskCard.d.ts","sourceRoot":"","sources":["../../../../src/components/TaskCard.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAiB7C,eAAO,MAAM,QAAQ,GAAI,gCAAgC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAgBnF,CAAC"}
@@ -1,4 +0,0 @@
1
- export * from './ContactCard';
2
- export * from './OrganizationCard';
3
- export * from './ProjectCard';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAIA,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC"}
@@ -1,9 +0,0 @@
1
- import type * as Schema from 'effect/Schema';
2
- import { type PropsWithChildren } from 'react';
3
- import { type Space } from '@dxos/react-client/echo';
4
- export type PreviewProps<T extends Schema.Schema.Type<any>> = PropsWithChildren<{
5
- subject: T;
6
- role?: string;
7
- activeSpace?: Space;
8
- }>;
9
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC;IAC9E,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB,CAAC,CAAC"}