@frontmcp/ui 0.5.1 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +140 -362
- package/bridge/adapters/base-adapter.d.ts +104 -0
- package/bridge/adapters/base-adapter.d.ts.map +1 -0
- package/bridge/adapters/claude.adapter.d.ts +67 -0
- package/bridge/adapters/claude.adapter.d.ts.map +1 -0
- package/bridge/adapters/ext-apps.adapter.d.ts +143 -0
- package/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
- package/bridge/adapters/gemini.adapter.d.ts +64 -0
- package/bridge/adapters/gemini.adapter.d.ts.map +1 -0
- package/bridge/adapters/generic.adapter.d.ts +56 -0
- package/bridge/adapters/generic.adapter.d.ts.map +1 -0
- package/bridge/adapters/index.d.ts +26 -0
- package/bridge/adapters/index.d.ts.map +1 -0
- package/bridge/adapters/openai.adapter.d.ts +65 -0
- package/bridge/adapters/openai.adapter.d.ts.map +1 -0
- package/bridge/core/adapter-registry.d.ts +122 -0
- package/bridge/core/adapter-registry.d.ts.map +1 -0
- package/bridge/core/bridge-factory.d.ts +199 -0
- package/bridge/core/bridge-factory.d.ts.map +1 -0
- package/bridge/core/index.d.ts +10 -0
- package/bridge/core/index.d.ts.map +1 -0
- package/bridge/index.d.ts +62 -0
- package/bridge/index.d.ts.map +1 -0
- package/bridge/index.js +2540 -0
- package/bridge/runtime/iife-generator.d.ts +62 -0
- package/bridge/runtime/iife-generator.d.ts.map +1 -0
- package/bridge/runtime/index.d.ts +10 -0
- package/bridge/runtime/index.d.ts.map +1 -0
- package/bridge/types.d.ts +386 -0
- package/bridge/types.d.ts.map +1 -0
- package/bundler/bundler.d.ts +208 -0
- package/bundler/bundler.d.ts.map +1 -0
- package/bundler/cache.d.ts +173 -0
- package/bundler/cache.d.ts.map +1 -0
- package/bundler/file-cache/component-builder.d.ts +167 -0
- package/bundler/file-cache/component-builder.d.ts.map +1 -0
- package/bundler/file-cache/hash-calculator.d.ts +155 -0
- package/bundler/file-cache/hash-calculator.d.ts.map +1 -0
- package/bundler/file-cache/index.d.ts +12 -0
- package/bundler/file-cache/index.d.ts.map +1 -0
- package/bundler/file-cache/storage/filesystem.d.ts +149 -0
- package/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
- package/bundler/file-cache/storage/index.d.ts +11 -0
- package/bundler/file-cache/storage/index.d.ts.map +1 -0
- package/bundler/file-cache/storage/interface.d.ts +152 -0
- package/bundler/file-cache/storage/interface.d.ts.map +1 -0
- package/bundler/file-cache/storage/redis.d.ts +139 -0
- package/bundler/file-cache/storage/redis.d.ts.map +1 -0
- package/bundler/index.d.ts +43 -0
- package/bundler/index.d.ts.map +1 -0
- package/bundler/index.js +3707 -0
- package/bundler/sandbox/enclave-adapter.d.ts +121 -0
- package/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
- package/bundler/sandbox/executor.d.ts +14 -0
- package/bundler/sandbox/executor.d.ts.map +1 -0
- package/bundler/sandbox/policy.d.ts +62 -0
- package/bundler/sandbox/policy.d.ts.map +1 -0
- package/bundler/types.d.ts +702 -0
- package/bundler/types.d.ts.map +1 -0
- package/components/alert.d.ts +66 -0
- package/components/alert.d.ts.map +1 -0
- package/components/alert.schema.d.ts +98 -0
- package/components/alert.schema.d.ts.map +1 -0
- package/components/avatar.d.ts +77 -0
- package/components/avatar.d.ts.map +1 -0
- package/components/avatar.schema.d.ts +170 -0
- package/components/avatar.schema.d.ts.map +1 -0
- package/components/badge.d.ts +64 -0
- package/components/badge.d.ts.map +1 -0
- package/components/badge.schema.d.ts +91 -0
- package/components/badge.schema.d.ts.map +1 -0
- package/components/button.d.ts +100 -0
- package/components/button.d.ts.map +1 -0
- package/components/button.schema.d.ts +120 -0
- package/components/button.schema.d.ts.map +1 -0
- package/components/card.d.ts +53 -0
- package/components/card.d.ts.map +1 -0
- package/components/card.schema.d.ts +93 -0
- package/components/card.schema.d.ts.map +1 -0
- package/components/form.d.ts +212 -0
- package/components/form.d.ts.map +1 -0
- package/components/form.schema.d.ts +365 -0
- package/components/form.schema.d.ts.map +1 -0
- package/components/index.d.ts +29 -0
- package/components/index.d.ts.map +1 -0
- package/components/index.js +2525 -0
- package/components/list.d.ts +121 -0
- package/components/list.d.ts.map +1 -0
- package/components/list.schema.d.ts +129 -0
- package/components/list.schema.d.ts.map +1 -0
- package/components/modal.d.ts +100 -0
- package/components/modal.d.ts.map +1 -0
- package/components/modal.schema.d.ts +151 -0
- package/components/modal.schema.d.ts.map +1 -0
- package/components/table.d.ts +91 -0
- package/components/table.d.ts.map +1 -0
- package/components/table.schema.d.ts +123 -0
- package/components/table.schema.d.ts.map +1 -0
- package/esm/bridge/adapters/base-adapter.d.ts +104 -0
- package/esm/bridge/adapters/base-adapter.d.ts.map +1 -0
- package/esm/bridge/adapters/claude.adapter.d.ts +67 -0
- package/esm/bridge/adapters/claude.adapter.d.ts.map +1 -0
- package/esm/bridge/adapters/ext-apps.adapter.d.ts +143 -0
- package/esm/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
- package/esm/bridge/adapters/gemini.adapter.d.ts +64 -0
- package/esm/bridge/adapters/gemini.adapter.d.ts.map +1 -0
- package/esm/bridge/adapters/generic.adapter.d.ts +56 -0
- package/esm/bridge/adapters/generic.adapter.d.ts.map +1 -0
- package/esm/bridge/adapters/index.d.ts +26 -0
- package/esm/bridge/adapters/index.d.ts.map +1 -0
- package/esm/bridge/adapters/openai.adapter.d.ts +65 -0
- package/esm/bridge/adapters/openai.adapter.d.ts.map +1 -0
- package/esm/bridge/core/adapter-registry.d.ts +122 -0
- package/esm/bridge/core/adapter-registry.d.ts.map +1 -0
- package/esm/bridge/core/bridge-factory.d.ts +199 -0
- package/esm/bridge/core/bridge-factory.d.ts.map +1 -0
- package/esm/bridge/core/index.d.ts +10 -0
- package/esm/bridge/core/index.d.ts.map +1 -0
- package/esm/bridge/index.d.ts +62 -0
- package/esm/bridge/index.d.ts.map +1 -0
- package/esm/bridge/index.js +2487 -0
- package/esm/bridge/runtime/iife-generator.d.ts +62 -0
- package/esm/bridge/runtime/iife-generator.d.ts.map +1 -0
- package/esm/bridge/runtime/index.d.ts +10 -0
- package/esm/bridge/runtime/index.d.ts.map +1 -0
- package/esm/bridge/types.d.ts +386 -0
- package/esm/bridge/types.d.ts.map +1 -0
- package/esm/bundler/bundler.d.ts +208 -0
- package/esm/bundler/bundler.d.ts.map +1 -0
- package/esm/bundler/cache.d.ts +173 -0
- package/esm/bundler/cache.d.ts.map +1 -0
- package/esm/bundler/file-cache/component-builder.d.ts +167 -0
- package/esm/bundler/file-cache/component-builder.d.ts.map +1 -0
- package/esm/bundler/file-cache/hash-calculator.d.ts +155 -0
- package/esm/bundler/file-cache/hash-calculator.d.ts.map +1 -0
- package/esm/bundler/file-cache/index.d.ts +12 -0
- package/esm/bundler/file-cache/index.d.ts.map +1 -0
- package/esm/bundler/file-cache/storage/filesystem.d.ts +149 -0
- package/esm/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
- package/esm/bundler/file-cache/storage/index.d.ts +11 -0
- package/esm/bundler/file-cache/storage/index.d.ts.map +1 -0
- package/esm/bundler/file-cache/storage/interface.d.ts +152 -0
- package/esm/bundler/file-cache/storage/interface.d.ts.map +1 -0
- package/esm/bundler/file-cache/storage/redis.d.ts +139 -0
- package/esm/bundler/file-cache/storage/redis.d.ts.map +1 -0
- package/esm/bundler/index.d.ts +43 -0
- package/esm/bundler/index.d.ts.map +1 -0
- package/esm/bundler/index.js +3640 -0
- package/esm/bundler/sandbox/enclave-adapter.d.ts +121 -0
- package/esm/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
- package/esm/bundler/sandbox/executor.d.ts +14 -0
- package/esm/bundler/sandbox/executor.d.ts.map +1 -0
- package/esm/bundler/sandbox/policy.d.ts +62 -0
- package/esm/bundler/sandbox/policy.d.ts.map +1 -0
- package/esm/bundler/types.d.ts +702 -0
- package/esm/bundler/types.d.ts.map +1 -0
- package/esm/components/alert.d.ts +66 -0
- package/esm/components/alert.d.ts.map +1 -0
- package/esm/components/alert.schema.d.ts +98 -0
- package/esm/components/alert.schema.d.ts.map +1 -0
- package/esm/components/avatar.d.ts +77 -0
- package/esm/components/avatar.d.ts.map +1 -0
- package/esm/components/avatar.schema.d.ts +170 -0
- package/esm/components/avatar.schema.d.ts.map +1 -0
- package/esm/components/badge.d.ts +64 -0
- package/esm/components/badge.d.ts.map +1 -0
- package/esm/components/badge.schema.d.ts +91 -0
- package/esm/components/badge.schema.d.ts.map +1 -0
- package/esm/components/button.d.ts +100 -0
- package/esm/components/button.d.ts.map +1 -0
- package/esm/components/button.schema.d.ts +120 -0
- package/esm/components/button.schema.d.ts.map +1 -0
- package/esm/components/card.d.ts +53 -0
- package/esm/components/card.d.ts.map +1 -0
- package/esm/components/card.schema.d.ts +93 -0
- package/esm/components/card.schema.d.ts.map +1 -0
- package/esm/components/form.d.ts +212 -0
- package/esm/components/form.d.ts.map +1 -0
- package/esm/components/form.schema.d.ts +365 -0
- package/esm/components/form.schema.d.ts.map +1 -0
- package/esm/components/index.d.ts +29 -0
- package/esm/components/index.d.ts.map +1 -0
- package/esm/components/index.js +2396 -0
- package/esm/components/list.d.ts +121 -0
- package/esm/components/list.d.ts.map +1 -0
- package/esm/components/list.schema.d.ts +129 -0
- package/esm/components/list.schema.d.ts.map +1 -0
- package/esm/components/modal.d.ts +100 -0
- package/esm/components/modal.d.ts.map +1 -0
- package/esm/components/modal.schema.d.ts +151 -0
- package/esm/components/modal.schema.d.ts.map +1 -0
- package/esm/components/table.d.ts +91 -0
- package/esm/components/table.d.ts.map +1 -0
- package/esm/components/table.schema.d.ts +123 -0
- package/esm/components/table.schema.d.ts.map +1 -0
- package/esm/index.d.ts +40 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +8326 -0
- package/esm/layouts/base.d.ts +86 -0
- package/esm/layouts/base.d.ts.map +1 -0
- package/esm/layouts/index.d.ts +8 -0
- package/esm/layouts/index.d.ts.map +1 -0
- package/esm/layouts/index.js +409 -0
- package/esm/layouts/presets.d.ts +134 -0
- package/esm/layouts/presets.d.ts.map +1 -0
- package/esm/package.json +72 -0
- package/esm/pages/consent.d.ts +117 -0
- package/esm/pages/consent.d.ts.map +1 -0
- package/esm/pages/error.d.ts +101 -0
- package/esm/pages/error.d.ts.map +1 -0
- package/esm/pages/index.d.ts +9 -0
- package/esm/pages/index.d.ts.map +1 -0
- package/esm/pages/index.js +1036 -0
- package/esm/react/Alert.d.ts +101 -0
- package/esm/react/Alert.d.ts.map +1 -0
- package/esm/react/Badge.d.ts +100 -0
- package/esm/react/Badge.d.ts.map +1 -0
- package/esm/react/Button.d.ts +108 -0
- package/esm/react/Button.d.ts.map +1 -0
- package/esm/react/Card.d.ts +103 -0
- package/esm/react/Card.d.ts.map +1 -0
- package/esm/react/hooks/context.d.ts +179 -0
- package/esm/react/hooks/context.d.ts.map +1 -0
- package/esm/react/hooks/index.d.ts +42 -0
- package/esm/react/hooks/index.d.ts.map +1 -0
- package/esm/react/hooks/tools.d.ts +284 -0
- package/esm/react/hooks/tools.d.ts.map +1 -0
- package/esm/react/index.d.ts +80 -0
- package/esm/react/index.d.ts.map +1 -0
- package/esm/react/index.js +3124 -0
- package/esm/react/types.d.ts +105 -0
- package/esm/react/types.d.ts.map +1 -0
- package/esm/react/utils.d.ts +43 -0
- package/esm/react/utils.d.ts.map +1 -0
- package/esm/render/index.d.ts +8 -0
- package/esm/render/index.d.ts.map +1 -0
- package/esm/render/index.js +45 -0
- package/esm/render/prerender.d.ts +57 -0
- package/esm/render/prerender.d.ts.map +1 -0
- package/esm/renderers/index.d.ts +21 -0
- package/esm/renderers/index.d.ts.map +1 -0
- package/esm/renderers/index.js +381 -0
- package/esm/renderers/react.adapter.d.ts +70 -0
- package/esm/renderers/react.adapter.d.ts.map +1 -0
- package/esm/renderers/react.renderer.d.ts +96 -0
- package/esm/renderers/react.renderer.d.ts.map +1 -0
- package/esm/universal/UniversalApp.d.ts +108 -0
- package/esm/universal/UniversalApp.d.ts.map +1 -0
- package/esm/universal/cached-runtime.d.ts +115 -0
- package/esm/universal/cached-runtime.d.ts.map +1 -0
- package/esm/universal/context.d.ts +122 -0
- package/esm/universal/context.d.ts.map +1 -0
- package/esm/universal/index.d.ts +57 -0
- package/esm/universal/index.d.ts.map +1 -0
- package/esm/universal/index.js +1755 -0
- package/esm/universal/renderers/html.renderer.d.ts +37 -0
- package/esm/universal/renderers/html.renderer.d.ts.map +1 -0
- package/esm/universal/renderers/index.d.ts +112 -0
- package/esm/universal/renderers/index.d.ts.map +1 -0
- package/esm/universal/renderers/markdown.renderer.d.ts +33 -0
- package/esm/universal/renderers/markdown.renderer.d.ts.map +1 -0
- package/esm/universal/renderers/mdx.renderer.d.ts +38 -0
- package/esm/universal/renderers/mdx.renderer.d.ts.map +1 -0
- package/esm/universal/renderers/react.renderer.d.ts +46 -0
- package/esm/universal/renderers/react.renderer.d.ts.map +1 -0
- package/esm/universal/runtime-builder.d.ts +33 -0
- package/esm/universal/runtime-builder.d.ts.map +1 -0
- package/esm/universal/store.d.ts +135 -0
- package/esm/universal/store.d.ts.map +1 -0
- package/esm/universal/types.d.ts +199 -0
- package/esm/universal/types.d.ts.map +1 -0
- package/esm/web-components/core/attribute-parser.d.ts +82 -0
- package/esm/web-components/core/attribute-parser.d.ts.map +1 -0
- package/esm/web-components/core/base-element.d.ts +197 -0
- package/esm/web-components/core/base-element.d.ts.map +1 -0
- package/esm/web-components/core/index.d.ts +9 -0
- package/esm/web-components/core/index.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-alert.d.ts +46 -0
- package/esm/web-components/elements/fmcp-alert.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-badge.d.ts +47 -0
- package/esm/web-components/elements/fmcp-badge.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-button.d.ts +117 -0
- package/esm/web-components/elements/fmcp-button.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-card.d.ts +53 -0
- package/esm/web-components/elements/fmcp-card.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-input.d.ts +96 -0
- package/esm/web-components/elements/fmcp-input.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-select.d.ts +100 -0
- package/esm/web-components/elements/fmcp-select.d.ts.map +1 -0
- package/esm/web-components/elements/index.d.ts +13 -0
- package/esm/web-components/elements/index.d.ts.map +1 -0
- package/esm/web-components/index.d.ts +50 -0
- package/esm/web-components/index.d.ts.map +1 -0
- package/esm/web-components/index.js +1993 -0
- package/esm/web-components/register.d.ts +57 -0
- package/esm/web-components/register.d.ts.map +1 -0
- package/esm/web-components/types.d.ts +122 -0
- package/esm/web-components/types.d.ts.map +1 -0
- package/esm/widgets/index.d.ts +8 -0
- package/esm/widgets/index.d.ts.map +1 -0
- package/esm/widgets/index.js +883 -0
- package/esm/widgets/progress.d.ts +133 -0
- package/esm/widgets/progress.d.ts.map +1 -0
- package/esm/widgets/resource.d.ts +163 -0
- package/esm/widgets/resource.d.ts.map +1 -0
- package/index.d.ts +40 -0
- package/index.d.ts.map +1 -0
- package/index.js +8526 -0
- package/layouts/base.d.ts +86 -0
- package/layouts/base.d.ts.map +1 -0
- package/layouts/index.d.ts +8 -0
- package/layouts/index.d.ts.map +1 -0
- package/layouts/index.js +437 -0
- package/layouts/presets.d.ts +134 -0
- package/layouts/presets.d.ts.map +1 -0
- package/package.json +33 -110
- package/pages/consent.d.ts +117 -0
- package/pages/consent.d.ts.map +1 -0
- package/pages/error.d.ts +101 -0
- package/pages/error.d.ts.map +1 -0
- package/pages/index.d.ts +9 -0
- package/pages/index.d.ts.map +1 -0
- package/pages/index.js +1065 -0
- package/react/Alert.d.ts +101 -0
- package/react/Alert.d.ts.map +1 -0
- package/react/Badge.d.ts +100 -0
- package/react/Badge.d.ts.map +1 -0
- package/react/Button.d.ts +108 -0
- package/react/Button.d.ts.map +1 -0
- package/react/Card.d.ts +103 -0
- package/react/Card.d.ts.map +1 -0
- package/react/hooks/context.d.ts +179 -0
- package/react/hooks/context.d.ts.map +1 -0
- package/react/hooks/index.d.ts +42 -0
- package/react/hooks/index.d.ts.map +1 -0
- package/react/hooks/tools.d.ts +284 -0
- package/react/hooks/tools.d.ts.map +1 -0
- package/react/index.d.ts +80 -0
- package/react/index.d.ts.map +1 -0
- package/react/index.js +3160 -0
- package/react/types.d.ts +105 -0
- package/react/types.d.ts.map +1 -0
- package/react/utils.d.ts +43 -0
- package/react/utils.d.ts.map +1 -0
- package/render/index.d.ts +8 -0
- package/render/index.d.ts.map +1 -0
- package/render/index.js +77 -0
- package/render/prerender.d.ts +57 -0
- package/render/prerender.d.ts.map +1 -0
- package/renderers/index.d.ts +21 -0
- package/renderers/index.d.ts.map +1 -0
- package/renderers/index.js +416 -0
- package/renderers/react.adapter.d.ts +70 -0
- package/renderers/react.adapter.d.ts.map +1 -0
- package/renderers/react.renderer.d.ts +96 -0
- package/renderers/react.renderer.d.ts.map +1 -0
- package/universal/UniversalApp.d.ts +108 -0
- package/universal/UniversalApp.d.ts.map +1 -0
- package/universal/cached-runtime.d.ts +115 -0
- package/universal/cached-runtime.d.ts.map +1 -0
- package/universal/context.d.ts +122 -0
- package/universal/context.d.ts.map +1 -0
- package/universal/index.d.ts +57 -0
- package/universal/index.d.ts.map +1 -0
- package/universal/index.js +1841 -0
- package/universal/renderers/html.renderer.d.ts +37 -0
- package/universal/renderers/html.renderer.d.ts.map +1 -0
- package/universal/renderers/index.d.ts +112 -0
- package/universal/renderers/index.d.ts.map +1 -0
- package/universal/renderers/markdown.renderer.d.ts +33 -0
- package/universal/renderers/markdown.renderer.d.ts.map +1 -0
- package/universal/renderers/mdx.renderer.d.ts +38 -0
- package/universal/renderers/mdx.renderer.d.ts.map +1 -0
- package/universal/renderers/react.renderer.d.ts +46 -0
- package/universal/renderers/react.renderer.d.ts.map +1 -0
- package/universal/runtime-builder.d.ts +33 -0
- package/universal/runtime-builder.d.ts.map +1 -0
- package/universal/store.d.ts +135 -0
- package/universal/store.d.ts.map +1 -0
- package/universal/types.d.ts +199 -0
- package/universal/types.d.ts.map +1 -0
- package/web-components/core/attribute-parser.d.ts +82 -0
- package/web-components/core/attribute-parser.d.ts.map +1 -0
- package/web-components/core/base-element.d.ts +197 -0
- package/web-components/core/base-element.d.ts.map +1 -0
- package/web-components/core/index.d.ts +9 -0
- package/web-components/core/index.d.ts.map +1 -0
- package/web-components/elements/fmcp-alert.d.ts +46 -0
- package/web-components/elements/fmcp-alert.d.ts.map +1 -0
- package/web-components/elements/fmcp-badge.d.ts +47 -0
- package/web-components/elements/fmcp-badge.d.ts.map +1 -0
- package/web-components/elements/fmcp-button.d.ts +117 -0
- package/web-components/elements/fmcp-button.d.ts.map +1 -0
- package/web-components/elements/fmcp-card.d.ts +53 -0
- package/web-components/elements/fmcp-card.d.ts.map +1 -0
- package/web-components/elements/fmcp-input.d.ts +96 -0
- package/web-components/elements/fmcp-input.d.ts.map +1 -0
- package/web-components/elements/fmcp-select.d.ts +100 -0
- package/web-components/elements/fmcp-select.d.ts.map +1 -0
- package/web-components/elements/index.d.ts +13 -0
- package/web-components/elements/index.d.ts.map +1 -0
- package/web-components/index.d.ts +50 -0
- package/web-components/index.d.ts.map +1 -0
- package/web-components/index.js +2028 -0
- package/web-components/register.d.ts +57 -0
- package/web-components/register.d.ts.map +1 -0
- package/web-components/types.d.ts +122 -0
- package/web-components/types.d.ts.map +1 -0
- package/widgets/index.d.ts +8 -0
- package/widgets/index.d.ts.map +1 -0
- package/widgets/index.js +910 -0
- package/widgets/progress.d.ts +133 -0
- package/widgets/progress.d.ts.map +1 -0
- package/widgets/resource.d.ts +163 -0
- package/widgets/resource.d.ts.map +1 -0
- package/src/adapters/index.d.ts +0 -10
- package/src/adapters/index.js +0 -18
- package/src/adapters/index.js.map +0 -1
- package/src/adapters/platform-meta.d.ts +0 -165
- package/src/adapters/platform-meta.js +0 -310
- package/src/adapters/platform-meta.js.map +0 -1
- package/src/base-template/bridge.d.ts +0 -89
- package/src/base-template/bridge.js +0 -452
- package/src/base-template/bridge.js.map +0 -1
- package/src/base-template/default-base-template.d.ts +0 -91
- package/src/base-template/default-base-template.js +0 -435
- package/src/base-template/default-base-template.js.map +0 -1
- package/src/base-template/index.d.ts +0 -14
- package/src/base-template/index.js +0 -30
- package/src/base-template/index.js.map +0 -1
- package/src/base-template/polyfills.d.ts +0 -30
- package/src/base-template/polyfills.js +0 -190
- package/src/base-template/polyfills.js.map +0 -1
- package/src/base-template/theme-styles.d.ts +0 -73
- package/src/base-template/theme-styles.js +0 -95
- package/src/base-template/theme-styles.js.map +0 -1
- package/src/bridge/adapters/base-adapter.d.ts +0 -103
- package/src/bridge/adapters/base-adapter.js +0 -314
- package/src/bridge/adapters/base-adapter.js.map +0 -1
- package/src/bridge/adapters/claude.adapter.d.ts +0 -66
- package/src/bridge/adapters/claude.adapter.js +0 -145
- package/src/bridge/adapters/claude.adapter.js.map +0 -1
- package/src/bridge/adapters/ext-apps.adapter.d.ts +0 -142
- package/src/bridge/adapters/ext-apps.adapter.js +0 -416
- package/src/bridge/adapters/ext-apps.adapter.js.map +0 -1
- package/src/bridge/adapters/gemini.adapter.d.ts +0 -63
- package/src/bridge/adapters/gemini.adapter.js +0 -160
- package/src/bridge/adapters/gemini.adapter.js.map +0 -1
- package/src/bridge/adapters/generic.adapter.d.ts +0 -55
- package/src/bridge/adapters/generic.adapter.js +0 -108
- package/src/bridge/adapters/generic.adapter.js.map +0 -1
- package/src/bridge/adapters/index.d.ts +0 -25
- package/src/bridge/adapters/index.js +0 -65
- package/src/bridge/adapters/index.js.map +0 -1
- package/src/bridge/adapters/openai.adapter.d.ts +0 -64
- package/src/bridge/adapters/openai.adapter.js +0 -194
- package/src/bridge/adapters/openai.adapter.js.map +0 -1
- package/src/bridge/core/adapter-registry.d.ts +0 -121
- package/src/bridge/core/adapter-registry.js +0 -271
- package/src/bridge/core/adapter-registry.js.map +0 -1
- package/src/bridge/core/bridge-factory.d.ts +0 -198
- package/src/bridge/core/bridge-factory.js +0 -428
- package/src/bridge/core/bridge-factory.js.map +0 -1
- package/src/bridge/core/index.d.ts +0 -9
- package/src/bridge/core/index.js +0 -22
- package/src/bridge/core/index.js.map +0 -1
- package/src/bridge/index.d.ts +0 -61
- package/src/bridge/index.js +0 -94
- package/src/bridge/index.js.map +0 -1
- package/src/bridge/runtime/iife-generator.d.ts +0 -61
- package/src/bridge/runtime/iife-generator.js +0 -940
- package/src/bridge/runtime/iife-generator.js.map +0 -1
- package/src/bridge/runtime/index.d.ts +0 -8
- package/src/bridge/runtime/index.js +0 -16
- package/src/bridge/runtime/index.js.map +0 -1
- package/src/bridge/types.d.ts +0 -385
- package/src/bridge/types.js +0 -11
- package/src/bridge/types.js.map +0 -1
- package/src/build/cdn-resources.d.ts +0 -140
- package/src/build/cdn-resources.js +0 -314
- package/src/build/cdn-resources.js.map +0 -1
- package/src/build/index.d.ts +0 -294
- package/src/build/index.js +0 -325
- package/src/build/index.js.map +0 -1
- package/src/build/widget-manifest.d.ts +0 -212
- package/src/build/widget-manifest.js +0 -652
- package/src/build/widget-manifest.js.map +0 -1
- package/src/bundler/bundler.d.ts +0 -110
- package/src/bundler/bundler.js +0 -432
- package/src/bundler/bundler.js.map +0 -1
- package/src/bundler/cache.d.ts +0 -172
- package/src/bundler/cache.js +0 -250
- package/src/bundler/cache.js.map +0 -1
- package/src/bundler/index.d.ts +0 -41
- package/src/bundler/index.js +0 -73
- package/src/bundler/index.js.map +0 -1
- package/src/bundler/sandbox/enclave-adapter.d.ts +0 -120
- package/src/bundler/sandbox/enclave-adapter.js +0 -339
- package/src/bundler/sandbox/enclave-adapter.js.map +0 -1
- package/src/bundler/sandbox/executor.d.ts +0 -13
- package/src/bundler/sandbox/executor.js +0 -22
- package/src/bundler/sandbox/executor.js.map +0 -1
- package/src/bundler/sandbox/policy.d.ts +0 -61
- package/src/bundler/sandbox/policy.js +0 -238
- package/src/bundler/sandbox/policy.js.map +0 -1
- package/src/bundler/types.d.ts +0 -347
- package/src/bundler/types.js +0 -132
- package/src/bundler/types.js.map +0 -1
- package/src/components/alert.d.ts +0 -71
- package/src/components/alert.js +0 -189
- package/src/components/alert.js.map +0 -1
- package/src/components/alert.schema.d.ts +0 -114
- package/src/components/alert.schema.js +0 -105
- package/src/components/alert.schema.js.map +0 -1
- package/src/components/avatar.d.ts +0 -76
- package/src/components/avatar.js +0 -176
- package/src/components/avatar.js.map +0 -1
- package/src/components/avatar.schema.d.ts +0 -169
- package/src/components/avatar.schema.js +0 -103
- package/src/components/avatar.schema.js.map +0 -1
- package/src/components/badge.d.ts +0 -70
- package/src/components/badge.js +0 -149
- package/src/components/badge.js.map +0 -1
- package/src/components/badge.schema.d.ts +0 -109
- package/src/components/badge.schema.js +0 -96
- package/src/components/badge.schema.js.map +0 -1
- package/src/components/button.d.ts +0 -111
- package/src/components/button.js +0 -336
- package/src/components/button.js.map +0 -1
- package/src/components/button.schema.d.ts +0 -148
- package/src/components/button.schema.js +0 -121
- package/src/components/button.schema.js.map +0 -1
- package/src/components/card.d.ts +0 -60
- package/src/components/card.js +0 -117
- package/src/components/card.js.map +0 -1
- package/src/components/card.schema.d.ts +0 -113
- package/src/components/card.schema.js +0 -98
- package/src/components/card.schema.js.map +0 -1
- package/src/components/form.d.ts +0 -239
- package/src/components/form.js +0 -420
- package/src/components/form.js.map +0 -1
- package/src/components/form.schema.d.ts +0 -441
- package/src/components/form.schema.js +0 -406
- package/src/components/form.schema.js.map +0 -1
- package/src/components/index.d.ts +0 -29
- package/src/components/index.js +0 -98
- package/src/components/index.js.map +0 -1
- package/src/components/list.d.ts +0 -127
- package/src/components/list.js +0 -279
- package/src/components/list.js.map +0 -1
- package/src/components/list.schema.d.ts +0 -134
- package/src/components/list.schema.js +0 -168
- package/src/components/list.schema.js.map +0 -1
- package/src/components/modal.d.ts +0 -111
- package/src/components/modal.js +0 -260
- package/src/components/modal.js.map +0 -1
- package/src/components/modal.schema.d.ts +0 -186
- package/src/components/modal.schema.js +0 -167
- package/src/components/modal.schema.js.map +0 -1
- package/src/components/table.d.ts +0 -105
- package/src/components/table.js +0 -283
- package/src/components/table.js.map +0 -1
- package/src/components/table.schema.d.ts +0 -159
- package/src/components/table.schema.js +0 -173
- package/src/components/table.schema.js.map +0 -1
- package/src/handlebars/helpers.d.ts +0 -348
- package/src/handlebars/helpers.js +0 -605
- package/src/handlebars/helpers.js.map +0 -1
- package/src/handlebars/index.d.ts +0 -193
- package/src/handlebars/index.js +0 -350
- package/src/handlebars/index.js.map +0 -1
- package/src/index.d.ts +0 -50
- package/src/index.js +0 -192
- package/src/index.js.map +0 -1
- package/src/layouts/base.d.ts +0 -88
- package/src/layouts/base.js +0 -227
- package/src/layouts/base.js.map +0 -1
- package/src/layouts/index.d.ts +0 -7
- package/src/layouts/index.js +0 -25
- package/src/layouts/index.js.map +0 -1
- package/src/layouts/presets.d.ts +0 -133
- package/src/layouts/presets.js +0 -277
- package/src/layouts/presets.js.map +0 -1
- package/src/pages/consent.d.ts +0 -116
- package/src/pages/consent.js +0 -218
- package/src/pages/consent.js.map +0 -1
- package/src/pages/error.d.ts +0 -100
- package/src/pages/error.js +0 -263
- package/src/pages/error.js.map +0 -1
- package/src/pages/index.d.ts +0 -8
- package/src/pages/index.js +0 -27
- package/src/pages/index.js.map +0 -1
- package/src/react/Alert.d.ts +0 -101
- package/src/react/Alert.js +0 -51
- package/src/react/Alert.js.map +0 -1
- package/src/react/Badge.d.ts +0 -100
- package/src/react/Badge.js +0 -55
- package/src/react/Badge.js.map +0 -1
- package/src/react/Button.d.ts +0 -108
- package/src/react/Button.js +0 -52
- package/src/react/Button.js.map +0 -1
- package/src/react/Card.d.ts +0 -103
- package/src/react/Card.js +0 -55
- package/src/react/Card.js.map +0 -1
- package/src/react/hooks/context.d.ts +0 -178
- package/src/react/hooks/context.js +0 -287
- package/src/react/hooks/context.js.map +0 -1
- package/src/react/hooks/index.d.ts +0 -41
- package/src/react/hooks/index.js +0 -61
- package/src/react/hooks/index.js.map +0 -1
- package/src/react/hooks/tools.d.ts +0 -283
- package/src/react/hooks/tools.js +0 -465
- package/src/react/hooks/tools.js.map +0 -1
- package/src/react/index.d.ts +0 -80
- package/src/react/index.js +0 -113
- package/src/react/index.js.map +0 -1
- package/src/react/types.d.ts +0 -105
- package/src/react/types.js +0 -12
- package/src/react/types.js.map +0 -1
- package/src/react/utils.d.ts +0 -42
- package/src/react/utils.js +0 -99
- package/src/react/utils.js.map +0 -1
- package/src/registry/index.d.ts +0 -45
- package/src/registry/index.js +0 -67
- package/src/registry/index.js.map +0 -1
- package/src/registry/render-template.d.ts +0 -86
- package/src/registry/render-template.js +0 -239
- package/src/registry/render-template.js.map +0 -1
- package/src/registry/tool-ui.registry.d.ts +0 -260
- package/src/registry/tool-ui.registry.js +0 -438
- package/src/registry/tool-ui.registry.js.map +0 -1
- package/src/registry/uri-utils.d.ts +0 -55
- package/src/registry/uri-utils.js +0 -97
- package/src/registry/uri-utils.js.map +0 -1
- package/src/render/index.d.ts +0 -7
- package/src/render/index.js +0 -14
- package/src/render/index.js.map +0 -1
- package/src/render/prerender.d.ts +0 -56
- package/src/render/prerender.js +0 -98
- package/src/render/prerender.js.map +0 -1
- package/src/renderers/cache.d.ts +0 -144
- package/src/renderers/cache.js +0 -240
- package/src/renderers/cache.js.map +0 -1
- package/src/renderers/html.renderer.d.ts +0 -122
- package/src/renderers/html.renderer.js +0 -204
- package/src/renderers/html.renderer.js.map +0 -1
- package/src/renderers/index.d.ts +0 -35
- package/src/renderers/index.js +0 -70
- package/src/renderers/index.js.map +0 -1
- package/src/renderers/mdx.renderer.d.ts +0 -119
- package/src/renderers/mdx.renderer.js +0 -305
- package/src/renderers/mdx.renderer.js.map +0 -1
- package/src/renderers/react.renderer.d.ts +0 -95
- package/src/renderers/react.renderer.js +0 -260
- package/src/renderers/react.renderer.js.map +0 -1
- package/src/renderers/registry.d.ts +0 -133
- package/src/renderers/registry.js +0 -232
- package/src/renderers/registry.js.map +0 -1
- package/src/renderers/types.d.ts +0 -341
- package/src/renderers/types.js +0 -9
- package/src/renderers/types.js.map +0 -1
- package/src/renderers/utils/detect.d.ts +0 -106
- package/src/renderers/utils/detect.js +0 -267
- package/src/renderers/utils/detect.js.map +0 -1
- package/src/renderers/utils/hash.d.ts +0 -39
- package/src/renderers/utils/hash.js +0 -75
- package/src/renderers/utils/hash.js.map +0 -1
- package/src/renderers/utils/index.d.ts +0 -8
- package/src/renderers/utils/index.js +0 -28
- package/src/renderers/utils/index.js.map +0 -1
- package/src/renderers/utils/transpiler.d.ts +0 -88
- package/src/renderers/utils/transpiler.js +0 -215
- package/src/renderers/utils/transpiler.js.map +0 -1
- package/src/runtime/adapters/html.adapter.d.ts +0 -58
- package/src/runtime/adapters/html.adapter.js +0 -131
- package/src/runtime/adapters/html.adapter.js.map +0 -1
- package/src/runtime/adapters/index.d.ts +0 -25
- package/src/runtime/adapters/index.js +0 -54
- package/src/runtime/adapters/index.js.map +0 -1
- package/src/runtime/adapters/mdx.adapter.d.ts +0 -72
- package/src/runtime/adapters/mdx.adapter.js +0 -241
- package/src/runtime/adapters/mdx.adapter.js.map +0 -1
- package/src/runtime/adapters/react.adapter.d.ts +0 -69
- package/src/runtime/adapters/react.adapter.js +0 -245
- package/src/runtime/adapters/react.adapter.js.map +0 -1
- package/src/runtime/adapters/types.d.ts +0 -94
- package/src/runtime/adapters/types.js +0 -11
- package/src/runtime/adapters/types.js.map +0 -1
- package/src/runtime/csp.d.ts +0 -37
- package/src/runtime/csp.js +0 -140
- package/src/runtime/csp.js.map +0 -1
- package/src/runtime/index.d.ts +0 -16
- package/src/runtime/index.js +0 -72
- package/src/runtime/index.js.map +0 -1
- package/src/runtime/mcp-bridge.d.ts +0 -100
- package/src/runtime/mcp-bridge.js +0 -581
- package/src/runtime/mcp-bridge.js.map +0 -1
- package/src/runtime/renderer-runtime.d.ts +0 -132
- package/src/runtime/renderer-runtime.js +0 -389
- package/src/runtime/renderer-runtime.js.map +0 -1
- package/src/runtime/sanitizer.d.ts +0 -171
- package/src/runtime/sanitizer.js +0 -318
- package/src/runtime/sanitizer.js.map +0 -1
- package/src/runtime/types.d.ts +0 -414
- package/src/runtime/types.js +0 -12
- package/src/runtime/types.js.map +0 -1
- package/src/runtime/wrapper.d.ts +0 -375
- package/src/runtime/wrapper.js +0 -1793
- package/src/runtime/wrapper.js.map +0 -1
- package/src/styles/index.d.ts +0 -7
- package/src/styles/index.js +0 -11
- package/src/styles/index.js.map +0 -1
- package/src/styles/variants.d.ts +0 -50
- package/src/styles/variants.js +0 -175
- package/src/styles/variants.js.map +0 -1
- package/src/theme/cdn.d.ts +0 -194
- package/src/theme/cdn.js +0 -375
- package/src/theme/cdn.js.map +0 -1
- package/src/theme/index.d.ts +0 -17
- package/src/theme/index.js +0 -57
- package/src/theme/index.js.map +0 -1
- package/src/theme/platforms.d.ts +0 -106
- package/src/theme/platforms.js +0 -161
- package/src/theme/platforms.js.map +0 -1
- package/src/theme/presets/github-openai.d.ts +0 -49
- package/src/theme/presets/github-openai.js +0 -189
- package/src/theme/presets/github-openai.js.map +0 -1
- package/src/theme/presets/index.d.ts +0 -10
- package/src/theme/presets/index.js +0 -17
- package/src/theme/presets/index.js.map +0 -1
- package/src/theme/theme.d.ts +0 -395
- package/src/theme/theme.js +0 -332
- package/src/theme/theme.js.map +0 -1
- package/src/tool-template/builder.d.ts +0 -212
- package/src/tool-template/builder.js +0 -397
- package/src/tool-template/builder.js.map +0 -1
- package/src/tool-template/index.d.ts +0 -15
- package/src/tool-template/index.js +0 -38
- package/src/tool-template/index.js.map +0 -1
- package/src/types/index.d.ts +0 -13
- package/src/types/index.js +0 -26
- package/src/types/index.js.map +0 -1
- package/src/types/ui-config.d.ts +0 -357
- package/src/types/ui-config.js +0 -12
- package/src/types/ui-config.js.map +0 -1
- package/src/types/ui-runtime.d.ts +0 -965
- package/src/types/ui-runtime.js +0 -117
- package/src/types/ui-runtime.js.map +0 -1
- package/src/validation/error-box.d.ts +0 -55
- package/src/validation/error-box.js +0 -75
- package/src/validation/error-box.js.map +0 -1
- package/src/validation/index.d.ts +0 -12
- package/src/validation/index.js +0 -21
- package/src/validation/index.js.map +0 -1
- package/src/validation/wrapper.d.ts +0 -96
- package/src/validation/wrapper.js +0 -117
- package/src/validation/wrapper.js.map +0 -1
- package/src/web-components/core/attribute-parser.d.ts +0 -85
- package/src/web-components/core/attribute-parser.js +0 -189
- package/src/web-components/core/attribute-parser.js.map +0 -1
- package/src/web-components/core/base-element.d.ts +0 -197
- package/src/web-components/core/base-element.js +0 -289
- package/src/web-components/core/base-element.js.map +0 -1
- package/src/web-components/core/index.d.ts +0 -8
- package/src/web-components/core/index.js +0 -18
- package/src/web-components/core/index.js.map +0 -1
- package/src/web-components/elements/fmcp-alert.d.ts +0 -45
- package/src/web-components/elements/fmcp-alert.js +0 -93
- package/src/web-components/elements/fmcp-alert.js.map +0 -1
- package/src/web-components/elements/fmcp-badge.d.ts +0 -46
- package/src/web-components/elements/fmcp-badge.js +0 -99
- package/src/web-components/elements/fmcp-badge.js.map +0 -1
- package/src/web-components/elements/fmcp-button.d.ts +0 -124
- package/src/web-components/elements/fmcp-button.js +0 -233
- package/src/web-components/elements/fmcp-button.js.map +0 -1
- package/src/web-components/elements/fmcp-card.d.ts +0 -52
- package/src/web-components/elements/fmcp-card.js +0 -115
- package/src/web-components/elements/fmcp-card.js.map +0 -1
- package/src/web-components/elements/fmcp-input.d.ts +0 -95
- package/src/web-components/elements/fmcp-input.js +0 -248
- package/src/web-components/elements/fmcp-input.js.map +0 -1
- package/src/web-components/elements/fmcp-select.d.ts +0 -99
- package/src/web-components/elements/fmcp-select.js +0 -243
- package/src/web-components/elements/fmcp-select.js.map +0 -1
- package/src/web-components/elements/index.d.ts +0 -12
- package/src/web-components/elements/index.js +0 -34
- package/src/web-components/elements/index.js.map +0 -1
- package/src/web-components/index.d.ts +0 -49
- package/src/web-components/index.js +0 -75
- package/src/web-components/index.js.map +0 -1
- package/src/web-components/register.d.ts +0 -56
- package/src/web-components/register.js +0 -80
- package/src/web-components/register.js.map +0 -1
- package/src/web-components/types.d.ts +0 -121
- package/src/web-components/types.js +0 -25
- package/src/web-components/types.js.map +0 -1
- package/src/widgets/index.d.ts +0 -7
- package/src/widgets/index.js +0 -24
- package/src/widgets/index.js.map +0 -1
- package/src/widgets/progress.d.ts +0 -132
- package/src/widgets/progress.js +0 -303
- package/src/widgets/progress.js.map +0 -1
- package/src/widgets/resource.d.ts +0 -162
- package/src/widgets/resource.js +0 -340
- package/src/widgets/resource.js.map +0 -1
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file types.ts
|
|
3
|
+
* @description TypeScript types for React wrapper components.
|
|
4
|
+
*
|
|
5
|
+
* Re-exports element types from web-components for use with React refs,
|
|
6
|
+
* and defines React-specific prop interfaces.
|
|
7
|
+
*
|
|
8
|
+
* @module @frontmcp/ui/react/types
|
|
9
|
+
*/
|
|
10
|
+
import type { ReactNode } from 'react';
|
|
11
|
+
import type { CardVariant, CardSize, BadgeVariant, BadgeSize } from '../components';
|
|
12
|
+
export type { FmcpButton, FmcpCard, FmcpAlert, FmcpBadge, FmcpInput, FmcpSelect } from '../web-components';
|
|
13
|
+
/**
|
|
14
|
+
* React props for Card component
|
|
15
|
+
*/
|
|
16
|
+
export interface CardProps {
|
|
17
|
+
/** Card title */
|
|
18
|
+
title?: string;
|
|
19
|
+
/** Card subtitle/description */
|
|
20
|
+
subtitle?: string;
|
|
21
|
+
/** Header actions content */
|
|
22
|
+
headerActions?: ReactNode;
|
|
23
|
+
/** Footer content */
|
|
24
|
+
footer?: ReactNode;
|
|
25
|
+
/** Card variant */
|
|
26
|
+
variant?: CardVariant;
|
|
27
|
+
/** Card size (padding) */
|
|
28
|
+
size?: CardSize;
|
|
29
|
+
/** Additional CSS classes */
|
|
30
|
+
className?: string;
|
|
31
|
+
/** Card ID */
|
|
32
|
+
id?: string;
|
|
33
|
+
/** Clickable card (adds hover effects) */
|
|
34
|
+
clickable?: boolean;
|
|
35
|
+
/** Click handler URL */
|
|
36
|
+
href?: string;
|
|
37
|
+
/** Card content */
|
|
38
|
+
children: ReactNode;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* React props for Badge component
|
|
42
|
+
*/
|
|
43
|
+
export interface BadgeProps {
|
|
44
|
+
/** Badge variant */
|
|
45
|
+
variant?: BadgeVariant;
|
|
46
|
+
/** Badge size */
|
|
47
|
+
size?: BadgeSize;
|
|
48
|
+
/** Rounded pill style */
|
|
49
|
+
pill?: boolean;
|
|
50
|
+
/** Icon before text (ReactNode) */
|
|
51
|
+
icon?: ReactNode;
|
|
52
|
+
/** Dot indicator (no text) */
|
|
53
|
+
dot?: boolean;
|
|
54
|
+
/** Additional CSS classes */
|
|
55
|
+
className?: string;
|
|
56
|
+
/** Removable badge */
|
|
57
|
+
removable?: boolean;
|
|
58
|
+
/** Badge content */
|
|
59
|
+
children?: ReactNode;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* React props for Button component
|
|
63
|
+
*/
|
|
64
|
+
export interface ButtonProps {
|
|
65
|
+
/** Button variant */
|
|
66
|
+
variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' | 'success';
|
|
67
|
+
/** Button size */
|
|
68
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
69
|
+
/** Disabled state */
|
|
70
|
+
disabled?: boolean;
|
|
71
|
+
/** Loading state */
|
|
72
|
+
loading?: boolean;
|
|
73
|
+
/** Full width */
|
|
74
|
+
fullWidth?: boolean;
|
|
75
|
+
/** Icon position */
|
|
76
|
+
iconPosition?: 'left' | 'right';
|
|
77
|
+
/** Icon content */
|
|
78
|
+
icon?: ReactNode;
|
|
79
|
+
/** Button type */
|
|
80
|
+
type?: 'button' | 'submit' | 'reset';
|
|
81
|
+
/** Additional CSS classes */
|
|
82
|
+
className?: string;
|
|
83
|
+
/** Click handler */
|
|
84
|
+
onClick?: () => void;
|
|
85
|
+
/** Button content */
|
|
86
|
+
children: ReactNode;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* React props for Alert component
|
|
90
|
+
*/
|
|
91
|
+
export interface AlertProps {
|
|
92
|
+
/** Alert variant */
|
|
93
|
+
variant?: 'info' | 'success' | 'warning' | 'danger';
|
|
94
|
+
/** Alert title */
|
|
95
|
+
title?: string;
|
|
96
|
+
/** Icon content */
|
|
97
|
+
icon?: ReactNode;
|
|
98
|
+
/** Dismissible */
|
|
99
|
+
dismissible?: boolean;
|
|
100
|
+
/** Additional CSS classes */
|
|
101
|
+
className?: string;
|
|
102
|
+
/** Alert content */
|
|
103
|
+
children: ReactNode;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/react/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAEV,WAAW,EACX,QAAQ,EAER,YAAY,EACZ,SAAS,EAGV,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAM3G;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,qBAAqB;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,mBAAmB;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,oBAAoB;IACpB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,iBAAiB;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,yBAAyB;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mCAAmC;IACnC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,8BAA8B;IAC9B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAMD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC/E,kBAAkB;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,mBAAmB;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kBAAkB;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qBAAqB;IACrB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpD,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kBAAkB;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file utils.ts
|
|
3
|
+
* @description Utility functions for React wrapper components.
|
|
4
|
+
*
|
|
5
|
+
* Provides helpers for converting React children to HTML strings
|
|
6
|
+
* for SSR compatibility with FrontMCP web components.
|
|
7
|
+
*
|
|
8
|
+
* @module @frontmcp/ui/react/utils
|
|
9
|
+
*/
|
|
10
|
+
import type { ReactNode } from 'react';
|
|
11
|
+
/**
|
|
12
|
+
* Convert React children to an HTML string for SSR.
|
|
13
|
+
*
|
|
14
|
+
* - Strings are escaped via escapeHtml()
|
|
15
|
+
* - Numbers are converted to strings
|
|
16
|
+
* - ReactNode is rendered via ReactDOMServer.renderToStaticMarkup()
|
|
17
|
+
* - null/undefined return empty string
|
|
18
|
+
*
|
|
19
|
+
* @param children - React children to convert
|
|
20
|
+
* @returns HTML string representation
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```tsx
|
|
24
|
+
* // String children
|
|
25
|
+
* renderChildrenToString('Hello') // 'Hello' (escaped)
|
|
26
|
+
*
|
|
27
|
+
* // React element children
|
|
28
|
+
* renderChildrenToString(<div>Test</div>) // '<div>Test</div>'
|
|
29
|
+
*
|
|
30
|
+
* // Mixed children
|
|
31
|
+
* renderChildrenToString(['Hello', <span>World</span>])
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function renderChildrenToString(children: ReactNode): string;
|
|
35
|
+
/**
|
|
36
|
+
* Check if we're running in a browser environment
|
|
37
|
+
*/
|
|
38
|
+
export declare function isBrowser(): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Check if we're running in a Node.js environment
|
|
41
|
+
*/
|
|
42
|
+
export declare function isServer(): boolean;
|
|
43
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/react/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAoBvC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,GAAG,MAAM,CAiClE;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAElC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/render/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
+
}) : x)(function(x) {
|
|
4
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
// libs/ui/src/render/prerender.ts
|
|
9
|
+
async function renderToString(element) {
|
|
10
|
+
const { prerender } = await import("react-dom/static");
|
|
11
|
+
const { prelude } = await prerender(element);
|
|
12
|
+
const reader = prelude.getReader();
|
|
13
|
+
const chunks = [];
|
|
14
|
+
while (true) {
|
|
15
|
+
const { done, value } = await reader.read();
|
|
16
|
+
if (done) break;
|
|
17
|
+
if (value) chunks.push(value);
|
|
18
|
+
}
|
|
19
|
+
const totalLength = chunks.reduce((acc, chunk) => acc + chunk.length, 0);
|
|
20
|
+
const combined = new Uint8Array(totalLength);
|
|
21
|
+
let offset = 0;
|
|
22
|
+
for (const chunk of chunks) {
|
|
23
|
+
combined.set(chunk, offset);
|
|
24
|
+
offset += chunk.length;
|
|
25
|
+
}
|
|
26
|
+
return new TextDecoder().decode(combined);
|
|
27
|
+
}
|
|
28
|
+
function renderToStringSync(element) {
|
|
29
|
+
const ReactDOMServer = __require("react-dom/server");
|
|
30
|
+
return ReactDOMServer.renderToStaticMarkup(element);
|
|
31
|
+
}
|
|
32
|
+
function isReactAvailable() {
|
|
33
|
+
try {
|
|
34
|
+
__require("react");
|
|
35
|
+
__require("react-dom/server");
|
|
36
|
+
return true;
|
|
37
|
+
} catch {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
isReactAvailable,
|
|
43
|
+
renderToString,
|
|
44
|
+
renderToStringSync
|
|
45
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file prerender.ts
|
|
3
|
+
* @description React 19 static rendering utilities.
|
|
4
|
+
*
|
|
5
|
+
* Provides both async (prerender) and sync (renderToStaticMarkup) methods
|
|
6
|
+
* for converting React elements to HTML strings.
|
|
7
|
+
*
|
|
8
|
+
* @example Async rendering (recommended)
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { renderToString } from '@frontmcp/ui/render';
|
|
11
|
+
* import { Card } from '@frontmcp/ui/components';
|
|
12
|
+
*
|
|
13
|
+
* const html = await renderToString(<Card title="Hello">Content</Card>);
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @example Sync rendering (backwards compatible)
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { renderToStringSync } from '@frontmcp/ui/render';
|
|
19
|
+
*
|
|
20
|
+
* const html = renderToStringSync(<Card title="Hello">Content</Card>);
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @module @frontmcp/ui/render
|
|
24
|
+
*/
|
|
25
|
+
import type { ReactElement } from 'react';
|
|
26
|
+
/**
|
|
27
|
+
* Render a React element to static HTML string using React 19's prerender API.
|
|
28
|
+
*
|
|
29
|
+
* This is the recommended async method that:
|
|
30
|
+
* - Waits for all Suspense boundaries to resolve
|
|
31
|
+
* - Uses React 19's streaming prerender API
|
|
32
|
+
* - Returns clean static HTML without hydration markers
|
|
33
|
+
*
|
|
34
|
+
* @param element - The React element to render
|
|
35
|
+
* @returns Promise resolving to HTML string
|
|
36
|
+
*/
|
|
37
|
+
export declare function renderToString(element: ReactElement): Promise<string>;
|
|
38
|
+
/**
|
|
39
|
+
* Render a React element to static HTML string synchronously.
|
|
40
|
+
*
|
|
41
|
+
* This is the sync method for backwards compatibility that:
|
|
42
|
+
* - Does NOT wait for Suspense boundaries
|
|
43
|
+
* - Uses React's renderToStaticMarkup
|
|
44
|
+
* - Returns clean static HTML without hydration markers
|
|
45
|
+
*
|
|
46
|
+
* @param element - The React element to render
|
|
47
|
+
* @returns HTML string
|
|
48
|
+
*/
|
|
49
|
+
export declare function renderToStringSync(element: ReactElement): string;
|
|
50
|
+
/**
|
|
51
|
+
* Check if React and react-dom are available.
|
|
52
|
+
* Useful for conditional rendering in environments where React may not be installed.
|
|
53
|
+
*
|
|
54
|
+
* @returns true if React and react-dom are available
|
|
55
|
+
*/
|
|
56
|
+
export declare function isReactAvailable(): boolean;
|
|
57
|
+
//# sourceMappingURL=prerender.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prerender.d.ts","sourceRoot":"","sources":["../../../src/render/prerender.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA0B3E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAKhE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAQ1C"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Renderer Module
|
|
3
|
+
*
|
|
4
|
+
* Provides the React renderer for template processing.
|
|
5
|
+
* Other renderers (HTML, MDX) and utilities are available in @frontmcp/uipack.
|
|
6
|
+
*
|
|
7
|
+
* @module @frontmcp/ui/renderers
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { reactRenderer, ReactRenderer } from '@frontmcp/ui/renderers';
|
|
12
|
+
* import { rendererRegistry } from '@frontmcp/uipack/renderers';
|
|
13
|
+
*
|
|
14
|
+
* // Register React renderer
|
|
15
|
+
* rendererRegistry.register(reactRenderer);
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export type { RendererType, UIRenderer, ToolUIProps, HydratedToolUIProps, TranspileResult, TranspileOptions, RenderOptions, RuntimeScripts, RenderResult, RendererRegistryOptions, DetectionResult, ReactComponentType, WrapperContext, ExtendedToolUIConfig, } from '@frontmcp/uipack/renderers';
|
|
19
|
+
export { ReactRenderer, reactRenderer, buildHydrationScript } from './react.renderer';
|
|
20
|
+
export { ReactRendererAdapter, createReactAdapter, loadReactAdapter } from './react.adapter';
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,YAAY,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGtF,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
// libs/ui/src/renderers/react.renderer.ts
|
|
2
|
+
import {
|
|
3
|
+
isReactComponent,
|
|
4
|
+
containsJsx,
|
|
5
|
+
hashString,
|
|
6
|
+
transpileJsx,
|
|
7
|
+
executeTranspiledCode,
|
|
8
|
+
transpileCache
|
|
9
|
+
} from "@frontmcp/uipack/renderers";
|
|
10
|
+
var REACT_CDN = {
|
|
11
|
+
react: "https://esm.sh/react@19",
|
|
12
|
+
reactDom: "https://esm.sh/react-dom@19/client"
|
|
13
|
+
};
|
|
14
|
+
var INLINE_REACT_PLACEHOLDER = `
|
|
15
|
+
// React runtime not available inline yet.
|
|
16
|
+
// For blocked-network platforms, use pre-rendered HTML templates.
|
|
17
|
+
console.warn('[FrontMCP] React hydration not available on this platform.');
|
|
18
|
+
`;
|
|
19
|
+
var ReactRenderer = class {
|
|
20
|
+
type = "react";
|
|
21
|
+
priority = 20;
|
|
22
|
+
// Higher priority than HTML
|
|
23
|
+
/**
|
|
24
|
+
* Lazy-loaded React modules.
|
|
25
|
+
*/
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
+
React = null;
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
|
+
ReactDOMServer = null;
|
|
30
|
+
/**
|
|
31
|
+
* Check if this renderer can handle the given template.
|
|
32
|
+
*
|
|
33
|
+
* Accepts:
|
|
34
|
+
* - React component functions (imported, already transpiled)
|
|
35
|
+
* - Strings containing JSX syntax
|
|
36
|
+
*/
|
|
37
|
+
canHandle(template) {
|
|
38
|
+
if (typeof template === "function" && isReactComponent(template)) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
if (typeof template === "string" && containsJsx(template)) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Transpile the template if needed.
|
|
48
|
+
*
|
|
49
|
+
* For imported React components, no transpilation is needed.
|
|
50
|
+
* For JSX strings, SWC transpilation is performed.
|
|
51
|
+
*/
|
|
52
|
+
async transpile(template, options) {
|
|
53
|
+
if (typeof template === "function") {
|
|
54
|
+
const hash = hashString(template.toString());
|
|
55
|
+
return {
|
|
56
|
+
code: "",
|
|
57
|
+
// No transpiled code for already-compiled components
|
|
58
|
+
hash,
|
|
59
|
+
cached: true
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if (typeof template === "string") {
|
|
63
|
+
return transpileJsx(template, {
|
|
64
|
+
development: options?.sourceMaps ?? false
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
throw new Error("Invalid template type for ReactRenderer");
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Render the template to HTML string using react-dom/server.
|
|
71
|
+
*/
|
|
72
|
+
async render(template, context, options) {
|
|
73
|
+
await this.loadReact();
|
|
74
|
+
let Component;
|
|
75
|
+
if (typeof template === "function") {
|
|
76
|
+
Component = template;
|
|
77
|
+
} else if (typeof template === "string") {
|
|
78
|
+
const transpiled = await this.transpile(template);
|
|
79
|
+
const cached = transpileCache.getByKey(`exec:${transpiled.hash}`);
|
|
80
|
+
if (cached) {
|
|
81
|
+
Component = cached.code;
|
|
82
|
+
} else {
|
|
83
|
+
Component = await executeTranspiledCode(transpiled.code, {
|
|
84
|
+
// Provide any additional MDX components if specified
|
|
85
|
+
...options?.mdxComponents
|
|
86
|
+
});
|
|
87
|
+
transpileCache.setByKey(`exec:${transpiled.hash}`, {
|
|
88
|
+
code: Component,
|
|
89
|
+
hash: transpiled.hash,
|
|
90
|
+
cached: false
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
} else {
|
|
94
|
+
throw new Error("Invalid template type for ReactRenderer");
|
|
95
|
+
}
|
|
96
|
+
const props = {
|
|
97
|
+
input: context.input,
|
|
98
|
+
output: context.output,
|
|
99
|
+
structuredContent: context.structuredContent,
|
|
100
|
+
helpers: context.helpers
|
|
101
|
+
};
|
|
102
|
+
const element = this.React.createElement(Component, props);
|
|
103
|
+
const html = this.ReactDOMServer.renderToString(element);
|
|
104
|
+
if (options?.hydrate) {
|
|
105
|
+
const componentName = Component.name || "Component";
|
|
106
|
+
const escapedProps = JSON.stringify(props).replace(/&/g, "&").replace(/'/g, "'").replace(/</g, "<").replace(/>/g, ">");
|
|
107
|
+
return `<div data-hydrate="${componentName}" data-props='${escapedProps}'>${html}</div>`;
|
|
108
|
+
}
|
|
109
|
+
return html;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get runtime scripts for client-side functionality.
|
|
113
|
+
*/
|
|
114
|
+
getRuntimeScripts(platform) {
|
|
115
|
+
if (platform.networkMode === "blocked") {
|
|
116
|
+
return {
|
|
117
|
+
headScripts: "",
|
|
118
|
+
inlineScripts: INLINE_REACT_PLACEHOLDER,
|
|
119
|
+
isInline: true
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
headScripts: `
|
|
124
|
+
<script crossorigin src="${REACT_CDN.react}"></script>
|
|
125
|
+
<script crossorigin src="${REACT_CDN.reactDom}"></script>
|
|
126
|
+
`,
|
|
127
|
+
isInline: false
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Load React and ReactDOMServer modules.
|
|
132
|
+
*/
|
|
133
|
+
async loadReact() {
|
|
134
|
+
if (this.React && this.ReactDOMServer) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
this.React = await import("react");
|
|
139
|
+
this.ReactDOMServer = await import("react-dom/server");
|
|
140
|
+
} catch {
|
|
141
|
+
throw new Error("React is required for ReactRenderer. Install react and react-dom: npm install react react-dom");
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
var reactRenderer = new ReactRenderer();
|
|
146
|
+
function buildHydrationScript() {
|
|
147
|
+
return `
|
|
148
|
+
<script>
|
|
149
|
+
(function() {
|
|
150
|
+
// Wait for React to be available
|
|
151
|
+
if (typeof React === 'undefined' || typeof ReactDOM === 'undefined') {
|
|
152
|
+
console.warn('[FrontMCP] React not available for hydration');
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Find all elements marked for hydration
|
|
157
|
+
document.querySelectorAll('[data-hydrate]').forEach(function(root) {
|
|
158
|
+
var componentName = root.getAttribute('data-hydrate');
|
|
159
|
+
var propsJson = root.getAttribute('data-props');
|
|
160
|
+
var props = propsJson ? JSON.parse(propsJson) : {};
|
|
161
|
+
|
|
162
|
+
// Look for the component in the global scope
|
|
163
|
+
if (window.__frontmcp_components && window.__frontmcp_components[componentName]) {
|
|
164
|
+
try {
|
|
165
|
+
ReactDOM.hydrateRoot(root, React.createElement(
|
|
166
|
+
window.__frontmcp_components[componentName],
|
|
167
|
+
props
|
|
168
|
+
));
|
|
169
|
+
} catch (e) {
|
|
170
|
+
console.error('[FrontMCP] Hydration failed for', componentName, e);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
})();
|
|
175
|
+
</script>
|
|
176
|
+
`;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// libs/ui/src/renderers/react.adapter.ts
|
|
180
|
+
var mountedRoots = /* @__PURE__ */ new WeakMap();
|
|
181
|
+
var ReactRendererAdapter = class {
|
|
182
|
+
type = "react";
|
|
183
|
+
// Lazy-loaded React runtime
|
|
184
|
+
react = null;
|
|
185
|
+
reactDOM = null;
|
|
186
|
+
loadPromise = null;
|
|
187
|
+
/**
|
|
188
|
+
* Check if this adapter can handle the given content.
|
|
189
|
+
*/
|
|
190
|
+
canHandle(content) {
|
|
191
|
+
if (typeof content === "function") {
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
if (typeof content === "string") {
|
|
195
|
+
return content.includes("React.createElement") || content.includes("jsx(") || content.includes("jsxs(") || /function\s+\w+\s*\([^)]*\)\s*\{[\s\S]*return\s*[\s\S]*</.test(content);
|
|
196
|
+
}
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Render React component to a string.
|
|
201
|
+
* This is a client-side fallback - SSR should be done at build time.
|
|
202
|
+
*/
|
|
203
|
+
async render(content, context, _options) {
|
|
204
|
+
return `<div data-frontmcp-react data-tool="${context.toolName}">${content}</div>`;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Render React component directly to the DOM.
|
|
208
|
+
*/
|
|
209
|
+
async renderToDOM(content, target, context, options) {
|
|
210
|
+
try {
|
|
211
|
+
await this.ensureReactLoaded();
|
|
212
|
+
if (!this.react || !this.reactDOM) {
|
|
213
|
+
throw new Error("React runtime not available");
|
|
214
|
+
}
|
|
215
|
+
const componentName = target.getAttribute("data-component");
|
|
216
|
+
const component = this.getComponent(componentName, content);
|
|
217
|
+
if (!component) {
|
|
218
|
+
target.innerHTML = content;
|
|
219
|
+
return { success: true };
|
|
220
|
+
}
|
|
221
|
+
const element = this.react.createElement(component, {
|
|
222
|
+
input: context.input,
|
|
223
|
+
output: context.output,
|
|
224
|
+
structuredContent: context.structuredContent,
|
|
225
|
+
toolName: context.toolName
|
|
226
|
+
});
|
|
227
|
+
if (options?.hydrate && this.reactDOM.hydrateRoot) {
|
|
228
|
+
const root = this.reactDOM.hydrateRoot(target, element);
|
|
229
|
+
mountedRoots.set(target, root);
|
|
230
|
+
} else if (this.reactDOM.createRoot) {
|
|
231
|
+
const root = this.reactDOM.createRoot(target);
|
|
232
|
+
root.render(element);
|
|
233
|
+
mountedRoots.set(target, root);
|
|
234
|
+
} else if (this.reactDOM.render) {
|
|
235
|
+
this.reactDOM.render(element, target);
|
|
236
|
+
mountedRoots.set(target, {
|
|
237
|
+
unmount: () => this.reactDOM?.unmountComponentAtNode?.(target)
|
|
238
|
+
});
|
|
239
|
+
} else {
|
|
240
|
+
throw new Error("No suitable React render method available");
|
|
241
|
+
}
|
|
242
|
+
target.dispatchEvent(
|
|
243
|
+
new CustomEvent("frontmcp:rendered", {
|
|
244
|
+
bubbles: true,
|
|
245
|
+
detail: { type: "react", toolName: context.toolName }
|
|
246
|
+
})
|
|
247
|
+
);
|
|
248
|
+
return { success: true };
|
|
249
|
+
} catch (error) {
|
|
250
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
251
|
+
console.error("[FrontMCP] React render failed:", message);
|
|
252
|
+
return { success: false, error: message };
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Hydrate existing SSR content with React.
|
|
257
|
+
*/
|
|
258
|
+
async hydrate(target, context, options) {
|
|
259
|
+
return this.renderToDOM("", target, context, { ...options, hydrate: true });
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Update rendered React component with new data.
|
|
263
|
+
*/
|
|
264
|
+
async update(target, context) {
|
|
265
|
+
try {
|
|
266
|
+
await this.ensureReactLoaded();
|
|
267
|
+
if (!this.react) {
|
|
268
|
+
throw new Error("React runtime not available");
|
|
269
|
+
}
|
|
270
|
+
const existingRoot = mountedRoots.get(target);
|
|
271
|
+
const componentName = target.getAttribute("data-component");
|
|
272
|
+
const component = this.getComponent(componentName, "");
|
|
273
|
+
if (!component) {
|
|
274
|
+
return { success: false, error: "No component found for update" };
|
|
275
|
+
}
|
|
276
|
+
const element = this.react.createElement(component, {
|
|
277
|
+
input: context.input,
|
|
278
|
+
output: context.output,
|
|
279
|
+
structuredContent: context.structuredContent,
|
|
280
|
+
toolName: context.toolName
|
|
281
|
+
});
|
|
282
|
+
if (existingRoot && "render" in existingRoot) {
|
|
283
|
+
existingRoot.render(element);
|
|
284
|
+
return { success: true };
|
|
285
|
+
}
|
|
286
|
+
return this.renderToDOM("", target, context);
|
|
287
|
+
} catch (error) {
|
|
288
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
289
|
+
console.error("[FrontMCP] React update failed:", message);
|
|
290
|
+
return { success: false, error: message };
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Clean up React root.
|
|
295
|
+
*/
|
|
296
|
+
destroy(target) {
|
|
297
|
+
const root = mountedRoots.get(target);
|
|
298
|
+
if (root) {
|
|
299
|
+
root.unmount();
|
|
300
|
+
mountedRoots.delete(target);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Ensure React is loaded.
|
|
305
|
+
*/
|
|
306
|
+
async ensureReactLoaded() {
|
|
307
|
+
if (this.react && this.reactDOM) {
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
if (this.loadPromise) {
|
|
311
|
+
return this.loadPromise;
|
|
312
|
+
}
|
|
313
|
+
this.loadPromise = this.loadReact();
|
|
314
|
+
return this.loadPromise;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Load React runtime.
|
|
318
|
+
*/
|
|
319
|
+
async loadReact() {
|
|
320
|
+
const win = typeof window !== "undefined" ? window : globalThis;
|
|
321
|
+
if (win.React) {
|
|
322
|
+
this.react = win.React;
|
|
323
|
+
}
|
|
324
|
+
if (win.ReactDOM) {
|
|
325
|
+
this.reactDOM = win.ReactDOM;
|
|
326
|
+
}
|
|
327
|
+
if (this.react && this.reactDOM) {
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
try {
|
|
331
|
+
if (!this.react) {
|
|
332
|
+
const reactModule = await import(
|
|
333
|
+
/* webpackIgnore: true */
|
|
334
|
+
"react"
|
|
335
|
+
);
|
|
336
|
+
this.react = reactModule.default || reactModule;
|
|
337
|
+
}
|
|
338
|
+
if (!this.reactDOM) {
|
|
339
|
+
const reactDOMModule = await import(
|
|
340
|
+
/* webpackIgnore: true */
|
|
341
|
+
"react-dom/client"
|
|
342
|
+
);
|
|
343
|
+
this.reactDOM = reactDOMModule.default || reactDOMModule;
|
|
344
|
+
}
|
|
345
|
+
} catch {
|
|
346
|
+
if (!this.react || !this.reactDOM) {
|
|
347
|
+
console.warn("[FrontMCP] React runtime not available. Ensure React is loaded via CDN or bundled.");
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Get a React component by name or from content.
|
|
353
|
+
*/
|
|
354
|
+
getComponent(componentName, content) {
|
|
355
|
+
const win = typeof window !== "undefined" ? window : globalThis;
|
|
356
|
+
if (componentName && win.__frontmcp_components) {
|
|
357
|
+
const registered = win.__frontmcp_components?.[componentName];
|
|
358
|
+
if (registered) {
|
|
359
|
+
return registered;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
if (content && typeof content === "function") {
|
|
363
|
+
return content;
|
|
364
|
+
}
|
|
365
|
+
return null;
|
|
366
|
+
}
|
|
367
|
+
};
|
|
368
|
+
function createReactAdapter() {
|
|
369
|
+
return new ReactRendererAdapter();
|
|
370
|
+
}
|
|
371
|
+
async function loadReactAdapter() {
|
|
372
|
+
return createReactAdapter();
|
|
373
|
+
}
|
|
374
|
+
export {
|
|
375
|
+
ReactRenderer,
|
|
376
|
+
ReactRendererAdapter,
|
|
377
|
+
buildHydrationScript,
|
|
378
|
+
createReactAdapter,
|
|
379
|
+
loadReactAdapter,
|
|
380
|
+
reactRenderer
|
|
381
|
+
};
|