@dxos/plugin-preview 0.8.4-main.28f8d3d → 0.8.4-main.406dc2a

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 (69) hide show
  1. package/dist/lib/browser/{chunk-Z73ENKLE.mjs → chunk-XKCIQK3C.mjs} +2 -4
  2. package/dist/lib/browser/chunk-XKCIQK3C.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +11 -7
  4. package/dist/lib/browser/index.mjs.map +2 -2
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/{preview-popover-MAIBTJKJ.mjs → preview-popover-RKHENTFP.mjs} +9 -13
  7. package/dist/lib/browser/preview-popover-RKHENTFP.mjs.map +7 -0
  8. package/dist/lib/browser/react-surface-X56QWACK.mjs +448 -0
  9. package/dist/lib/browser/react-surface-X56QWACK.mjs.map +7 -0
  10. package/dist/lib/node-esm/{chunk-2ORSL4GJ.mjs → chunk-L3IZVX56.mjs} +2 -4
  11. package/dist/lib/node-esm/chunk-L3IZVX56.mjs.map +7 -0
  12. package/dist/lib/node-esm/index.mjs +11 -7
  13. package/dist/lib/node-esm/index.mjs.map +2 -2
  14. package/dist/lib/node-esm/meta.json +1 -1
  15. package/dist/lib/node-esm/{preview-popover-LZGHYW23.mjs → preview-popover-TZKX67EY.mjs} +9 -13
  16. package/dist/lib/node-esm/preview-popover-TZKX67EY.mjs.map +7 -0
  17. package/dist/lib/node-esm/react-surface-4P7UCMK7.mjs +449 -0
  18. package/dist/lib/node-esm/react-surface-4P7UCMK7.mjs.map +7 -0
  19. package/dist/types/src/PreviewPlugin.d.ts +1 -1
  20. package/dist/types/src/PreviewPlugin.d.ts.map +1 -1
  21. package/dist/types/src/capabilities/index.d.ts +2 -2
  22. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  23. package/dist/types/src/capabilities/preview-popover.d.ts +1 -1
  24. package/dist/types/src/capabilities/preview-popover.d.ts.map +1 -1
  25. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  26. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  27. package/dist/types/src/components/CardSubjectMenu.d.ts +12 -0
  28. package/dist/types/src/components/CardSubjectMenu.d.ts.map +1 -0
  29. package/dist/types/src/components/ContactCard.d.ts +1 -1
  30. package/dist/types/src/components/ContactCard.d.ts.map +1 -1
  31. package/dist/types/src/components/OrganizationCard.d.ts +1 -1
  32. package/dist/types/src/components/OrganizationCard.d.ts.map +1 -1
  33. package/dist/types/src/components/ProjectCard.d.ts +1 -1
  34. package/dist/types/src/components/ProjectCard.d.ts.map +1 -1
  35. package/dist/types/src/components/TaskCard.d.ts +5 -0
  36. package/dist/types/src/components/TaskCard.d.ts.map +1 -0
  37. package/dist/types/src/meta.d.ts +0 -1
  38. package/dist/types/src/meta.d.ts.map +1 -1
  39. package/dist/types/src/stories/Card.stories.d.ts +27 -47
  40. package/dist/types/src/stories/Card.stories.d.ts.map +1 -1
  41. package/dist/types/src/stories/testing.d.ts +2 -3
  42. package/dist/types/src/stories/testing.d.ts.map +1 -1
  43. package/dist/types/src/translations.d.ts +6 -0
  44. package/dist/types/src/translations.d.ts.map +1 -1
  45. package/dist/types/src/types.d.ts +3 -1
  46. package/dist/types/src/types.d.ts.map +1 -1
  47. package/dist/types/tsconfig.tsbuildinfo +1 -1
  48. package/package.json +32 -29
  49. package/src/PreviewPlugin.tsx +22 -23
  50. package/src/capabilities/preview-popover.ts +7 -12
  51. package/src/capabilities/react-surface.tsx +47 -76
  52. package/src/components/CardSubjectMenu.tsx +82 -0
  53. package/src/components/ContactCard.tsx +9 -3
  54. package/src/components/OrganizationCard.tsx +11 -8
  55. package/src/components/ProjectCard.tsx +12 -4
  56. package/src/components/TaskCard.tsx +46 -0
  57. package/src/meta.ts +1 -3
  58. package/src/stories/Card.stories.tsx +23 -17
  59. package/src/stories/testing.tsx +15 -4
  60. package/src/translations.ts +6 -0
  61. package/src/types.ts +4 -1
  62. package/dist/lib/browser/chunk-Z73ENKLE.mjs.map +0 -7
  63. package/dist/lib/browser/preview-popover-MAIBTJKJ.mjs.map +0 -7
  64. package/dist/lib/browser/react-surface-SC522FSX.mjs +0 -303
  65. package/dist/lib/browser/react-surface-SC522FSX.mjs.map +0 -7
  66. package/dist/lib/node-esm/chunk-2ORSL4GJ.mjs.map +0 -7
  67. package/dist/lib/node-esm/preview-popover-LZGHYW23.mjs.map +0 -7
  68. package/dist/lib/node-esm/react-surface-PDXF35OF.mjs +0 -304
  69. package/dist/lib/node-esm/react-surface-PDXF35OF.mjs.map +0 -7
@@ -1 +1 @@
1
- {"inputs":{"src/meta.ts":{"bytes":1243,"imports":[],"format":"esm"},"src/capabilities/preview-popover.ts":{"bytes":8497,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true}],"format":"esm"},"src/components/ContactCard.tsx":{"bytes":9380,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"src/components/OrganizationCard.tsx":{"bytes":4740,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true}],"format":"esm"},"src/components/ProjectCard.tsx":{"bytes":2578,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true}],"format":"esm"},"src/components/index.ts":{"bytes":687,"imports":[{"path":"src/components/ContactCard.tsx","kind":"import-statement","original":"./ContactCard"},{"path":"src/components/OrganizationCard.tsx","kind":"import-statement","original":"./OrganizationCard"},{"path":"src/components/ProjectCard.tsx","kind":"import-statement","original":"./ProjectCard"}],"format":"esm"},"src/capabilities/react-surface.tsx":{"bytes":24033,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-deck/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-table/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/capabilities/index.ts":{"bytes":1037,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/preview-popover.ts","kind":"dynamic-import","original":"./preview-popover"},{"path":"src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"src/translations.ts":{"bytes":1178,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/PreviewPlugin.tsx":{"bytes":4743,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"src/index.ts":{"bytes":595,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/PreviewPlugin.tsx","kind":"import-statement","original":"./PreviewPlugin"}],"format":"esm"}},"outputs":{"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3231},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-2ORSL4GJ.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/node-esm/preview-popover-LZGHYW23.mjs","kind":"dynamic-import"},{"path":"dist/lib/node-esm/react-surface-PDXF35OF.mjs","kind":"dynamic-import"}],"exports":["PREVIEW_PLUGIN","PreviewPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/PreviewPlugin.tsx":{"bytesInOutput":952},"src/capabilities/index.ts":{"bytesInOutput":190},"src/translations.ts":{"bytesInOutput":137}},"bytes":1631},"dist/lib/node-esm/preview-popover-LZGHYW23.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4455},"dist/lib/node-esm/preview-popover-LZGHYW23.mjs":{"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/preview-popover.ts","inputs":{"src/capabilities/preview-popover.ts":{"bytesInOutput":2066}},"bytes":2301},"dist/lib/node-esm/react-surface-PDXF35OF.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":19981},"dist/lib/node-esm/react-surface-PDXF35OF.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-2ORSL4GJ.mjs","kind":"import-statement"},{"path":"effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-attention/types","kind":"import-statement","external":true},{"path":"@dxos/plugin-deck/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-table/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":5926},"src/components/ContactCard.tsx":{"bytesInOutput":2902},"src/components/index.ts":{"bytesInOutput":0},"src/components/OrganizationCard.tsx":{"bytesInOutput":1438},"src/components/ProjectCard.tsx":{"bytesInOutput":709}},"bytes":11411},"dist/lib/node-esm/chunk-2ORSL4GJ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":615},"dist/lib/node-esm/chunk-2ORSL4GJ.mjs":{"imports":[],"exports":["PREVIEW_PLUGIN","meta"],"inputs":{"src/meta.ts":{"bytesInOutput":216}},"bytes":406}}}
1
+ {"inputs":{"src/meta.ts":{"bytes":1069,"imports":[],"format":"esm"},"src/capabilities/preview-popover.ts":{"bytes":8281,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"src/components/CardSubjectMenu.tsx":{"bytes":9993,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@effect-rx/rx-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/components/ContactCard.tsx":{"bytes":10312,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"src/components/CardSubjectMenu.tsx","kind":"import-statement","original":"./CardSubjectMenu"}],"format":"esm"},"src/components/OrganizationCard.tsx":{"bytes":6117,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"src/components/CardSubjectMenu.tsx","kind":"import-statement","original":"./CardSubjectMenu"}],"format":"esm"},"src/components/ProjectCard.tsx":{"bytes":4160,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"src/components/CardSubjectMenu.tsx","kind":"import-statement","original":"./CardSubjectMenu"}],"format":"esm"},"src/components/index.ts":{"bytes":687,"imports":[{"path":"src/components/ContactCard.tsx","kind":"import-statement","original":"./ContactCard"},{"path":"src/components/OrganizationCard.tsx","kind":"import-statement","original":"./OrganizationCard"},{"path":"src/components/ProjectCard.tsx","kind":"import-statement","original":"./ProjectCard"}],"format":"esm"},"src/components/TaskCard.tsx":{"bytes":6988,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/components/CardSubjectMenu.tsx","kind":"import-statement","original":"./CardSubjectMenu"}],"format":"esm"},"src/capabilities/react-surface.tsx":{"bytes":18997,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"src/components/TaskCard.tsx","kind":"import-statement","original":"../components/TaskCard"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/capabilities/index.ts":{"bytes":1037,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/preview-popover.ts","kind":"dynamic-import","original":"./preview-popover"},{"path":"src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"src/translations.ts":{"bytes":1903,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/PreviewPlugin.tsx":{"bytes":4683,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"src/index.ts":{"bytes":595,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/PreviewPlugin.tsx","kind":"import-statement","original":"./PreviewPlugin"}],"format":"esm"}},"outputs":{"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":3503},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-L3IZVX56.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/node-esm/preview-popover-TZKX67EY.mjs","kind":"dynamic-import"},{"path":"dist/lib/node-esm/react-surface-4P7UCMK7.mjs","kind":"dynamic-import"}],"exports":["PreviewPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/PreviewPlugin.tsx":{"bytesInOutput":952},"src/capabilities/index.ts":{"bytesInOutput":190},"src/translations.ts":{"bytesInOutput":378}},"bytes":1836},"dist/lib/node-esm/preview-popover-TZKX67EY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4341},"dist/lib/node-esm/preview-popover-TZKX67EY.mjs":{"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/preview-popover.ts","inputs":{"src/capabilities/preview-popover.ts":{"bytesInOutput":2001}},"bytes":2236},"dist/lib/node-esm/react-surface-4P7UCMK7.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":28002},"dist/lib/node-esm/react-surface-4P7UCMK7.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-L3IZVX56.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@effect-rx/rx-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-graph","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo/internal","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":4854},"src/components/ContactCard.tsx":{"bytesInOutput":3174},"src/components/CardSubjectMenu.tsx":{"bytesInOutput":2599},"src/components/index.ts":{"bytesInOutput":0},"src/components/OrganizationCard.tsx":{"bytesInOutput":1836},"src/components/ProjectCard.tsx":{"bytesInOutput":1189},"src/components/TaskCard.tsx":{"bytesInOutput":1787}},"bytes":15971},"dist/lib/node-esm/chunk-L3IZVX56.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":528},"dist/lib/node-esm/chunk-L3IZVX56.mjs":{"imports":[],"exports":["meta"],"inputs":{"src/meta.ts":{"bytesInOutput":179}},"bytes":351}}}
@@ -3,11 +3,11 @@ import { createRequire } from 'node:module';const require = createRequire(import
3
3
  // src/capabilities/preview-popover.ts
4
4
  import { Capabilities, LayoutAction, contributes, createIntent } from "@dxos/app-framework";
5
5
  import { addEventListener } from "@dxos/async";
6
- import { resolveRef } from "@dxos/client";
7
6
  import { parseId } from "@dxos/client/echo";
8
7
  import { DXN } from "@dxos/keys";
9
8
  import { log } from "@dxos/log";
10
9
  import { ClientCapabilities } from "@dxos/plugin-client";
10
+ import { DX_ANCHOR_ACTIVATE } from "@dxos/react-ui";
11
11
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-preview/src/capabilities/preview-popover.ts";
12
12
  var customEventOptions = {
13
13
  capture: true,
@@ -15,21 +15,17 @@ var customEventOptions = {
15
15
  };
16
16
  var handlePreviewLookup = async (client, defaultSpace, { ref, label }) => {
17
17
  try {
18
- const dxn = DXN.parse(ref);
19
- if (!dxn) {
20
- return null;
21
- }
22
- const object = await resolveRef(client, dxn, defaultSpace);
18
+ const object = await defaultSpace.db.ref(DXN.parse(ref)).load();
23
19
  return {
24
20
  label,
25
21
  object
26
22
  };
27
- } catch (err) {
23
+ } catch {
28
24
  return null;
29
25
  }
30
26
  };
31
- var preview_popover_default = (context) => {
32
- const handleDxRefTagActivate = async ({ refId, label, trigger }) => {
27
+ var preview_popover_default = ((context) => {
28
+ const handleDxAnchorActivate = async ({ refId, label, trigger }) => {
33
29
  const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
34
30
  const client = context.getCapability(ClientCapabilities.Client);
35
31
  const [layout] = context.getCapabilities(Capabilities.Layout);
@@ -54,18 +50,18 @@ var preview_popover_default = (context) => {
54
50
  };
55
51
  let cleanup;
56
52
  if (document.defaultView) {
57
- cleanup = addEventListener(document.defaultView, "dx-ref-tag-activate", handleDxRefTagActivate, customEventOptions);
53
+ cleanup = addEventListener(document.defaultView, DX_ANCHOR_ACTIVATE, handleDxAnchorActivate, customEventOptions);
58
54
  } else {
59
55
  log.warn("No default view found", void 0, {
60
56
  F: __dxlog_file,
61
- L: 70,
57
+ L: 65,
62
58
  S: void 0,
63
59
  C: (f, a) => f(...a)
64
60
  });
65
61
  }
66
62
  return contributes(Capabilities.Null, null, () => cleanup());
67
- };
63
+ });
68
64
  export {
69
65
  preview_popover_default as default
70
66
  };
71
- //# sourceMappingURL=preview-popover-LZGHYW23.mjs.map
67
+ //# sourceMappingURL=preview-popover-TZKX67EY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/preview-popover.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, LayoutAction, type PluginContext, contributes, createIntent } from '@dxos/app-framework';\nimport { addEventListener } from '@dxos/async';\nimport { type Client } from '@dxos/client';\nimport { type Space, parseId } from '@dxos/client/echo';\nimport { DXN } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { DX_ANCHOR_ACTIVATE, type DxAnchorActivate } from '@dxos/react-ui';\nimport { type PreviewLinkRef, type PreviewLinkTarget } from '@dxos/react-ui-editor';\n\nconst customEventOptions = { capture: true, passive: false };\n\nconst handlePreviewLookup = async (\n client: Client,\n defaultSpace: Space,\n { ref, label }: PreviewLinkRef,\n): Promise<PreviewLinkTarget | null> => {\n try {\n const object = await defaultSpace.db.ref(DXN.parse(ref)).load();\n return { label, object };\n } catch {\n return null;\n }\n};\n\nexport default (context: PluginContext) => {\n // TODO(wittjosiah): Factor out lookup handlers to other plugins to make not ECHO-specific.\n const handleDxAnchorActivate = async ({ refId, label, trigger }: DxAnchorActivate) => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const [layout] = context.getCapabilities(Capabilities.Layout);\n const { spaceId } = parseId(layout.workspace);\n const space = (spaceId && client.spaces.get(spaceId)) ?? client.spaces.default;\n const result = await handlePreviewLookup(client, space, { ref: refId, label });\n if (!result) {\n return;\n }\n\n await dispatch(\n createIntent(LayoutAction.UpdatePopover, {\n part: 'popover',\n subject: result.object,\n options: {\n state: true,\n variant: 'virtual',\n anchor: trigger,\n },\n }),\n );\n };\n\n let cleanup: () => void;\n if (document.defaultView) {\n cleanup = addEventListener(\n document.defaultView,\n DX_ANCHOR_ACTIVATE as any,\n handleDxAnchorActivate,\n customEventOptions,\n );\n } else {\n log.warn('No default view found');\n }\n\n return contributes(Capabilities.Null, null, () => cleanup());\n};\n"],
5
+ "mappings": ";;;AAIA,SAASA,cAAcC,cAAkCC,aAAaC,oBAAoB;AAC1F,SAASC,wBAAwB;AAEjC,SAAqBC,eAAe;AACpC,SAASC,WAAW;AACpB,SAASC,WAAW;AACpB,SAASC,0BAA0B;AACnC,SAASC,0BAAiD;;AAG1D,IAAMC,qBAAqB;EAAEC,SAAS;EAAMC,SAAS;AAAM;AAE3D,IAAMC,sBAAsB,OAC1BC,QACAC,cACA,EAAEC,KAAKC,MAAK,MAAkB;AAE9B,MAAI;AACF,UAAMC,SAAS,MAAMH,aAAaI,GAAGH,IAAIV,IAAIc,MAAMJ,GAAAA,CAAAA,EAAMK,KAAI;AAC7D,WAAO;MAAEJ;MAAOC;IAAO;EACzB,QAAQ;AACN,WAAO;EACT;AACF;AAEA,IAAA,2BAAe,CAACI,YAAAA;AAEd,QAAMC,yBAAyB,OAAO,EAAEC,OAAOP,OAAOQ,QAAO,MAAoB;AAC/E,UAAM,EAAEC,iBAAiBC,SAAQ,IAAKL,QAAQM,cAAc5B,aAAa6B,gBAAgB;AACzF,UAAMf,SAASQ,QAAQM,cAAcpB,mBAAmBsB,MAAM;AAC9D,UAAM,CAACC,MAAAA,IAAUT,QAAQU,gBAAgBhC,aAAaiC,MAAM;AAC5D,UAAM,EAAEC,QAAO,IAAK7B,QAAQ0B,OAAOI,SAAS;AAC5C,UAAMC,SAASF,WAAWpB,OAAOuB,OAAOC,IAAIJ,OAAAA,MAAapB,OAAOuB,OAAOE;AACvE,UAAMC,SAAS,MAAM3B,oBAAoBC,QAAQsB,OAAO;MAAEpB,KAAKQ;MAAOP;IAAM,CAAA;AAC5E,QAAI,CAACuB,QAAQ;AACX;IACF;AAEA,UAAMb,SACJxB,aAAaF,aAAawC,eAAe;MACvCC,MAAM;MACNC,SAASH,OAAOtB;MAChB0B,SAAS;QACPC,OAAO;QACPC,SAAS;QACTC,QAAQtB;MACV;IACF,CAAA,CAAA;EAEJ;AAEA,MAAIuB;AACJ,MAAIC,SAASC,aAAa;AACxBF,cAAU5C,iBACR6C,SAASC,aACTzC,oBACAc,wBACAb,kBAAAA;EAEJ,OAAO;AACLH,QAAI4C,KAAK,yBAAA,QAAA;;;;;;EACX;AAEA,SAAOjD,YAAYF,aAAaoD,MAAM,MAAM,MAAMJ,QAAAA,CAAAA;AACpD;",
6
+ "names": ["Capabilities", "LayoutAction", "contributes", "createIntent", "addEventListener", "parseId", "DXN", "log", "ClientCapabilities", "DX_ANCHOR_ACTIVATE", "customEventOptions", "capture", "passive", "handlePreviewLookup", "client", "defaultSpace", "ref", "label", "object", "db", "parse", "load", "context", "handleDxAnchorActivate", "refId", "trigger", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "Client", "layout", "getCapabilities", "Layout", "spaceId", "workspace", "space", "spaces", "get", "default", "result", "UpdatePopover", "part", "subject", "options", "state", "variant", "anchor", "cleanup", "document", "defaultView", "warn", "Null"]
7
+ }
@@ -0,0 +1,449 @@
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