diff --git a/README.md b/README.md index 9f90042b..5e53cf70 100644 --- a/README.md +++ b/README.md @@ -80,10 +80,12 @@ It accepts the following props: { type: 'link', payload: { url: string } } ``` - **`supportedContentTypes`**: Optional array to restrict which content types are allowed (`['rawHtml', 'externalUrl', 'remoteDom']`) -- **`style`**: Optional custom styles for iframe-based resources -- **`iframeProps`**: Optional props passed to iframe elements (for HTML/URL resources) -- **`library`**: Optional component library for Remote DOM resources (defaults to `basicComponentLibrary`) -- **`remoteElements`**: Optional remote element definitions for Remote DOM resources. REQUIRED for Remote DOM snippets. +- **`htmlProps`**: Optional props for the `` + - **`style`**: Optional custom styles for iframe-based resources + - **`iframeProps`**: Optional props passed to iframe elements (for HTML/URL resources) +- **`remoteDomProps`**: Optional props for the `` + - **`library`**: Optional component library for Remote DOM resources (defaults to `basicComponentLibrary`) + - **`remoteElements`**: Optional remote element definitions for Remote DOM resources. REQUIRED for Remote DOM snippets. ### Supported Resource Types diff --git a/docs/src/guide/client/resource-renderer.md b/docs/src/guide/client/resource-renderer.md index cf4c371d..a4113617 100644 --- a/docs/src/guide/client/resource-renderer.md +++ b/docs/src/guide/client/resource-renderer.md @@ -25,11 +25,9 @@ import type { Resource } from '@modelcontextprotocol/sdk/types'; interface UIResourceRendererProps { resource: Partial; onUIAction?: (result: UIActionResult) => Promise; - style?: React.CSSProperties; - iframeProps?: Omit, 'src' | 'srcDoc' | 'ref' | 'style'>; - library?: ComponentLibrary; - remoteElements?: RemoteElementConfiguration[]; supportedContentTypes?: ResourceContentType[]; + htmlProps?: Omit; + remoteDomProps?: Omit; } ``` @@ -45,10 +43,12 @@ interface UIResourceRendererProps { { type: 'link', payload: { url: string } } ``` - **`supportedContentTypes`**: Optional array to restrict which content types are allowed (`['rawHtml', 'externalUrl', 'remoteDom']`) -- **`style`**: Optional custom styles for iframe-based resources -- **`iframeProps`**: Optional props passed to iframe elements (for HTML/URL resources) -- **`library`**: Optional component library for Remote DOM resources (defaults to `basicComponentLibrary`) -- **`remoteElements`**: Optional remote element definitions for Remote DOM resources. REQUIRED for Remote DOM snippets. +- **`htmlProps`**: Optional props for the `` + - **`style`**: Optional custom styles for iframe-based resources + - **`iframeProps`**: Optional props passed to iframe elements (for HTML/URL resources) +- **`remoteDomProps`**: Optional props for the `` + - **`library`**: Optional component library for Remote DOM resources (defaults to `basicComponentLibrary`) + - **`remoteElements`**: Optional remote element definitions for Remote DOM resources. REQUIRED for Remote DOM snippets. ## Basic Usage diff --git a/examples/remote-dom-demo/src/App.tsx b/examples/remote-dom-demo/src/App.tsx index a0ec05e1..3af33ce6 100644 --- a/examples/remote-dom-demo/src/App.tsx +++ b/examples/remote-dom-demo/src/App.tsx @@ -146,8 +146,10 @@ function App() { @@ -163,8 +165,10 @@ function App() { @@ -180,8 +184,10 @@ function App() { diff --git a/packages/client/README.md b/packages/client/README.md index 9f90042b..5e53cf70 100644 --- a/packages/client/README.md +++ b/packages/client/README.md @@ -80,10 +80,12 @@ It accepts the following props: { type: 'link', payload: { url: string } } ``` - **`supportedContentTypes`**: Optional array to restrict which content types are allowed (`['rawHtml', 'externalUrl', 'remoteDom']`) -- **`style`**: Optional custom styles for iframe-based resources -- **`iframeProps`**: Optional props passed to iframe elements (for HTML/URL resources) -- **`library`**: Optional component library for Remote DOM resources (defaults to `basicComponentLibrary`) -- **`remoteElements`**: Optional remote element definitions for Remote DOM resources. REQUIRED for Remote DOM snippets. +- **`htmlProps`**: Optional props for the `` + - **`style`**: Optional custom styles for iframe-based resources + - **`iframeProps`**: Optional props passed to iframe elements (for HTML/URL resources) +- **`remoteDomProps`**: Optional props for the `` + - **`library`**: Optional component library for Remote DOM resources (defaults to `basicComponentLibrary`) + - **`remoteElements`**: Optional remote element definitions for Remote DOM resources. REQUIRED for Remote DOM snippets. ### Supported Resource Types diff --git a/packages/client/src/components/UIResourceRenderer.tsx b/packages/client/src/components/UIResourceRenderer.tsx index 41592bf3..8f439a78 100644 --- a/packages/client/src/components/UIResourceRenderer.tsx +++ b/packages/client/src/components/UIResourceRenderer.tsx @@ -1,16 +1,16 @@ import React from 'react'; import type { Resource } from '@modelcontextprotocol/sdk/types.js'; -import { ResourceContentType } from '../types'; +import { ResourceContentType, UIActionResult } from '../types'; import { HTMLResourceRenderer, HTMLResourceRendererProps } from './HTMLResourceRenderer'; import { RemoteDOMResourceProps, RemoteDOMResourceRenderer } from './RemoteDOMResourceRenderer'; import { basicComponentLibrary } from '../remote-dom/component-libraries/basic'; -type UIResourceRendererProps = Omit< - HTMLResourceRendererProps & RemoteDOMResourceProps, - 'resource' -> & { +type UIResourceRendererProps = { resource: Partial; + onUIAction?: (result: UIActionResult) => Promise; supportedContentTypes?: ResourceContentType[]; + htmlProps?: Omit; + remoteDomProps?: Omit; }; function getContentType( @@ -35,11 +35,9 @@ export const UIResourceRenderer: React.FC = (props) => const { resource, onUIAction, - style, - iframeProps, supportedContentTypes, - library, - remoteElements, + htmlProps, + remoteDomProps, } = props; const contentType = getContentType(resource); @@ -60,8 +58,7 @@ export const UIResourceRenderer: React.FC = (props) => ); case 'remoteDom': @@ -69,8 +66,8 @@ export const UIResourceRenderer: React.FC = (props) => ); default: diff --git a/packages/server/README.md b/packages/server/README.md index 9f90042b..5e53cf70 100644 --- a/packages/server/README.md +++ b/packages/server/README.md @@ -80,10 +80,12 @@ It accepts the following props: { type: 'link', payload: { url: string } } ``` - **`supportedContentTypes`**: Optional array to restrict which content types are allowed (`['rawHtml', 'externalUrl', 'remoteDom']`) -- **`style`**: Optional custom styles for iframe-based resources -- **`iframeProps`**: Optional props passed to iframe elements (for HTML/URL resources) -- **`library`**: Optional component library for Remote DOM resources (defaults to `basicComponentLibrary`) -- **`remoteElements`**: Optional remote element definitions for Remote DOM resources. REQUIRED for Remote DOM snippets. +- **`htmlProps`**: Optional props for the `` + - **`style`**: Optional custom styles for iframe-based resources + - **`iframeProps`**: Optional props passed to iframe elements (for HTML/URL resources) +- **`remoteDomProps`**: Optional props for the `` + - **`library`**: Optional component library for Remote DOM resources (defaults to `basicComponentLibrary`) + - **`remoteElements`**: Optional remote element definitions for Remote DOM resources. REQUIRED for Remote DOM snippets. ### Supported Resource Types