@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
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @file base-element.ts
|
|
4
|
-
* @description Base class for all FrontMCP Web Components.
|
|
5
|
-
*
|
|
6
|
-
* Provides a foundation for creating Custom Elements with:
|
|
7
|
-
* - Zod schema validation
|
|
8
|
-
* - Attribute-to-option mapping
|
|
9
|
-
* - Property setters for React/Vue compatibility
|
|
10
|
-
* - Batched rendering via queueMicrotask
|
|
11
|
-
* - Light DOM (no Shadow DOM) for Tailwind compatibility
|
|
12
|
-
*
|
|
13
|
-
* @example Creating a custom element
|
|
14
|
-
* ```typescript
|
|
15
|
-
* import { FmcpElement } from '@frontmcp/ui/web-components';
|
|
16
|
-
* import { ButtonOptionsSchema, type ButtonOptions } from '@frontmcp/ui/components';
|
|
17
|
-
* import { button } from '@frontmcp/ui/components';
|
|
18
|
-
*
|
|
19
|
-
* class FmcpButton extends FmcpElement<ButtonOptions> {
|
|
20
|
-
* protected readonly config = {
|
|
21
|
-
* name: 'button',
|
|
22
|
-
* schema: ButtonOptionsSchema,
|
|
23
|
-
* defaults: { variant: 'primary', size: 'md' },
|
|
24
|
-
* };
|
|
25
|
-
*
|
|
26
|
-
* static get observedAttributes() {
|
|
27
|
-
* return getObservedAttributesFromSchema(ButtonOptionsSchema);
|
|
28
|
-
* }
|
|
29
|
-
*
|
|
30
|
-
* protected renderHtml(options: ButtonOptions, content: string): string {
|
|
31
|
-
* return button(content, options);
|
|
32
|
-
* }
|
|
33
|
-
* }
|
|
34
|
-
*
|
|
35
|
-
* customElements.define('fmcp-button', FmcpButton);
|
|
36
|
-
* ```
|
|
37
|
-
*
|
|
38
|
-
* @module @frontmcp/ui/web-components/core/base-element
|
|
39
|
-
*/
|
|
40
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
-
exports.FmcpElement = void 0;
|
|
42
|
-
const error_box_1 = require("../../validation/error-box");
|
|
43
|
-
const attribute_parser_1 = require("./attribute-parser");
|
|
44
|
-
// Server-side stub for HTMLElement (Node.js doesn't have DOM)
|
|
45
|
-
// This allows the module to be imported without errors, but the actual
|
|
46
|
-
// web components can only be used in browser environments.
|
|
47
|
-
const HTMLElementBase = typeof HTMLElement !== 'undefined'
|
|
48
|
-
? HTMLElement
|
|
49
|
-
: class {
|
|
50
|
-
innerHTML = '';
|
|
51
|
-
dispatchEvent() {
|
|
52
|
-
return true;
|
|
53
|
-
}
|
|
54
|
-
getAttribute() {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
/**
|
|
59
|
-
* Base class for all FrontMCP Web Components.
|
|
60
|
-
*
|
|
61
|
-
* Key features:
|
|
62
|
-
* - **Light DOM**: Renders directly to innerHTML (no Shadow DOM)
|
|
63
|
-
* - **Attribute Parsing**: Converts HTML attributes to typed options
|
|
64
|
-
* - **Property Setters**: React/Vue can set properties directly
|
|
65
|
-
* - **Zod Validation**: Invalid options render error box
|
|
66
|
-
* - **Batched Rendering**: Multiple changes batch via queueMicrotask
|
|
67
|
-
* - **HTMX Support**: hx-* attributes pass through to inner elements
|
|
68
|
-
*
|
|
69
|
-
* @typeParam TOptions - The component's options type (from Zod schema)
|
|
70
|
-
*
|
|
71
|
-
* @example Usage in HTML
|
|
72
|
-
* ```html
|
|
73
|
-
* <fmcp-button variant="primary" disabled>
|
|
74
|
-
* Click Me
|
|
75
|
-
* </fmcp-button>
|
|
76
|
-
* ```
|
|
77
|
-
*
|
|
78
|
-
* @example Usage in React
|
|
79
|
-
* ```tsx
|
|
80
|
-
* <fmcp-button
|
|
81
|
-
* variant="primary"
|
|
82
|
-
* onClick={handleClick}
|
|
83
|
-
* >
|
|
84
|
-
* Click Me
|
|
85
|
-
* </fmcp-button>
|
|
86
|
-
* ```
|
|
87
|
-
*/
|
|
88
|
-
class FmcpElement extends HTMLElementBase {
|
|
89
|
-
/** Internal options state */
|
|
90
|
-
_options = {};
|
|
91
|
-
/** Content passed as children (captured on connect) */
|
|
92
|
-
_content = '';
|
|
93
|
-
/** Whether component has been connected to DOM */
|
|
94
|
-
_connected = false;
|
|
95
|
-
/** Whether a render is pending (for batching) */
|
|
96
|
-
_pendingRender = false;
|
|
97
|
-
/** Whether initial render has completed */
|
|
98
|
-
_initialRenderComplete = false;
|
|
99
|
-
// ============================================
|
|
100
|
-
// Lifecycle Callbacks
|
|
101
|
-
// ============================================
|
|
102
|
-
/**
|
|
103
|
-
* Called when element is added to DOM.
|
|
104
|
-
* Captures content, parses attributes, and renders.
|
|
105
|
-
*
|
|
106
|
-
* Supports SSR hydration via `data-ssr` attribute:
|
|
107
|
-
* - If `data-ssr` is present, content was pre-rendered by server
|
|
108
|
-
* - Web component adopts existing content without re-rendering
|
|
109
|
-
* - This enables progressive enhancement for LLM platforms
|
|
110
|
-
*/
|
|
111
|
-
connectedCallback() {
|
|
112
|
-
this._connected = true;
|
|
113
|
-
// Check for SSR hydration marker
|
|
114
|
-
const isHydrating = this.hasAttribute('data-ssr');
|
|
115
|
-
if (isHydrating) {
|
|
116
|
-
// Content already rendered by server, adopt it
|
|
117
|
-
this._content = this.innerHTML;
|
|
118
|
-
this._initialRenderComplete = true;
|
|
119
|
-
this.removeAttribute('data-ssr');
|
|
120
|
-
// Parse attributes for property access (but don't re-render)
|
|
121
|
-
this._parseAttributes();
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
// Normal client-side rendering path
|
|
125
|
-
// Capture initial content before first render
|
|
126
|
-
// (so we can use it as the component's text/children)
|
|
127
|
-
if (!this._initialRenderComplete) {
|
|
128
|
-
this._content = this.innerHTML;
|
|
129
|
-
}
|
|
130
|
-
// Parse all current attributes into options
|
|
131
|
-
this._parseAttributes();
|
|
132
|
-
// Initial render
|
|
133
|
-
this._render();
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Called when element is removed from DOM.
|
|
137
|
-
*/
|
|
138
|
-
disconnectedCallback() {
|
|
139
|
-
this._connected = false;
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Called when an observed attribute changes.
|
|
143
|
-
* Updates options and schedules re-render.
|
|
144
|
-
*/
|
|
145
|
-
attributeChangedCallback(name, oldValue, newValue) {
|
|
146
|
-
// Skip if value unchanged
|
|
147
|
-
if (oldValue === newValue)
|
|
148
|
-
return;
|
|
149
|
-
// Update the corresponding option
|
|
150
|
-
this._updateOptionFromAttribute(name, newValue);
|
|
151
|
-
// Schedule re-render (batched)
|
|
152
|
-
this._scheduleRender();
|
|
153
|
-
}
|
|
154
|
-
// ============================================
|
|
155
|
-
// Property Accessors (React/Vue Compatibility)
|
|
156
|
-
// ============================================
|
|
157
|
-
/**
|
|
158
|
-
* Set all options at once (React pattern).
|
|
159
|
-
*
|
|
160
|
-
* @example
|
|
161
|
-
* ```typescript
|
|
162
|
-
* const el = document.querySelector('fmcp-button');
|
|
163
|
-
* el.options = { variant: 'danger', size: 'lg' };
|
|
164
|
-
* ```
|
|
165
|
-
*/
|
|
166
|
-
set options(value) {
|
|
167
|
-
this._options = { ...this._options, ...value };
|
|
168
|
-
this._scheduleRender();
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Get current options.
|
|
172
|
-
*/
|
|
173
|
-
get options() {
|
|
174
|
-
return { ...this._options };
|
|
175
|
-
}
|
|
176
|
-
// ============================================
|
|
177
|
-
// Attribute Parsing
|
|
178
|
-
// ============================================
|
|
179
|
-
/**
|
|
180
|
-
* Parse all current attributes into options.
|
|
181
|
-
*/
|
|
182
|
-
_parseAttributes() {
|
|
183
|
-
for (const attr of Array.from(this.attributes)) {
|
|
184
|
-
this._updateOptionFromAttribute(attr.name, attr.value);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Update a single option from an attribute change.
|
|
189
|
-
*/
|
|
190
|
-
_updateOptionFromAttribute(attrName, value) {
|
|
191
|
-
const parsed = (0, attribute_parser_1.parseAttributeValue)(attrName, value);
|
|
192
|
-
this._options = (0, attribute_parser_1.mergeAttributeIntoOptions)(this._options, parsed);
|
|
193
|
-
}
|
|
194
|
-
// ============================================
|
|
195
|
-
// Rendering
|
|
196
|
-
// ============================================
|
|
197
|
-
/**
|
|
198
|
-
* Schedule a render on next microtask.
|
|
199
|
-
* Batches multiple attribute/property changes.
|
|
200
|
-
*/
|
|
201
|
-
_scheduleRender() {
|
|
202
|
-
if (!this._connected || this._pendingRender)
|
|
203
|
-
return;
|
|
204
|
-
this._pendingRender = true;
|
|
205
|
-
queueMicrotask(() => {
|
|
206
|
-
this._pendingRender = false;
|
|
207
|
-
if (this._connected) {
|
|
208
|
-
this._render();
|
|
209
|
-
}
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Perform the actual render.
|
|
214
|
-
* Validates options and updates innerHTML.
|
|
215
|
-
*/
|
|
216
|
-
_render() {
|
|
217
|
-
// Merge defaults with current options
|
|
218
|
-
const mergedOptions = {
|
|
219
|
-
...this.config.defaults,
|
|
220
|
-
...this._options,
|
|
221
|
-
};
|
|
222
|
-
// Validate with Zod schema
|
|
223
|
-
const result = this.config.schema.safeParse(mergedOptions);
|
|
224
|
-
if (!result.success) {
|
|
225
|
-
// Render validation error box
|
|
226
|
-
const firstError = result.error.issues[0];
|
|
227
|
-
const invalidParam = firstError?.path.join('.') || 'options';
|
|
228
|
-
this.innerHTML = (0, error_box_1.validationErrorBox)({
|
|
229
|
-
componentName: this.config.name,
|
|
230
|
-
invalidParam,
|
|
231
|
-
});
|
|
232
|
-
this._initialRenderComplete = true;
|
|
233
|
-
return;
|
|
234
|
-
}
|
|
235
|
-
// Generate HTML using subclass implementation
|
|
236
|
-
const html = this.renderHtml(result.data, this._content);
|
|
237
|
-
// Update Light DOM
|
|
238
|
-
this.innerHTML = html;
|
|
239
|
-
this._initialRenderComplete = true;
|
|
240
|
-
// Dispatch render event for debugging/testing
|
|
241
|
-
this.dispatchEvent(new CustomEvent('fmcp:render', {
|
|
242
|
-
bubbles: true,
|
|
243
|
-
detail: { options: result.data },
|
|
244
|
-
}));
|
|
245
|
-
}
|
|
246
|
-
// ============================================
|
|
247
|
-
// Public API
|
|
248
|
-
// ============================================
|
|
249
|
-
/**
|
|
250
|
-
* Force an immediate re-render.
|
|
251
|
-
*
|
|
252
|
-
* @example
|
|
253
|
-
* ```typescript
|
|
254
|
-
* el.options = { loading: true };
|
|
255
|
-
* el.refresh(); // Force immediate render
|
|
256
|
-
* ```
|
|
257
|
-
*/
|
|
258
|
-
refresh() {
|
|
259
|
-
if (this._connected) {
|
|
260
|
-
this._render();
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Get the first child element (the actual rendered component).
|
|
265
|
-
*
|
|
266
|
-
* @typeParam T - Expected element type
|
|
267
|
-
* @returns The first child element or null
|
|
268
|
-
*
|
|
269
|
-
* @example
|
|
270
|
-
* ```typescript
|
|
271
|
-
* const button = el.getInnerElement<HTMLButtonElement>();
|
|
272
|
-
* button?.focus();
|
|
273
|
-
* ```
|
|
274
|
-
*/
|
|
275
|
-
getInnerElement() {
|
|
276
|
-
return this.firstElementChild;
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Update content and re-render.
|
|
280
|
-
*
|
|
281
|
-
* @param content - New content string
|
|
282
|
-
*/
|
|
283
|
-
setContent(content) {
|
|
284
|
-
this._content = content;
|
|
285
|
-
this._scheduleRender();
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
exports.FmcpElement = FmcpElement;
|
|
289
|
-
//# sourceMappingURL=base-element.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base-element.js","sourceRoot":"","sources":["../../../../src/web-components/core/base-element.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @file base-element.ts\n * @description Base class for all FrontMCP Web Components.\n *\n * Provides a foundation for creating Custom Elements with:\n * - Zod schema validation\n * - Attribute-to-option mapping\n * - Property setters for React/Vue compatibility\n * - Batched rendering via queueMicrotask\n * - Light DOM (no Shadow DOM) for Tailwind compatibility\n *\n * @example Creating a custom element\n * ```typescript\n * import { FmcpElement } from '@frontmcp/ui/web-components';\n * import { ButtonOptionsSchema, type ButtonOptions } from '@frontmcp/ui/components';\n * import { button } from '@frontmcp/ui/components';\n *\n * class FmcpButton extends FmcpElement<ButtonOptions> {\n * protected readonly config = {\n * name: 'button',\n * schema: ButtonOptionsSchema,\n * defaults: { variant: 'primary', size: 'md' },\n * };\n *\n * static get observedAttributes() {\n * return getObservedAttributesFromSchema(ButtonOptionsSchema);\n * }\n *\n * protected renderHtml(options: ButtonOptions, content: string): string {\n * return button(content, options);\n * }\n * }\n *\n * customElements.define('fmcp-button', FmcpButton);\n * ```\n *\n * @module @frontmcp/ui/web-components/core/base-element\n */\n\nimport type { ZodSchema } from 'zod';\nimport { validationErrorBox } from '../../validation/error-box';\nimport { parseAttributeValue, mergeAttributeIntoOptions } from './attribute-parser';\n\n// Server-side stub for HTMLElement (Node.js doesn't have DOM)\n// This allows the module to be imported without errors, but the actual\n// web components can only be used in browser environments.\nconst HTMLElementBase =\n typeof HTMLElement !== 'undefined'\n ? HTMLElement\n : (class {\n innerHTML = '';\n dispatchEvent() {\n return true;\n }\n getAttribute() {\n return null;\n }\n } as unknown as typeof HTMLElement);\n\n/**\n * Configuration for FmcpElement subclasses\n */\nexport interface FmcpElementConfig<TOptions> {\n /** Component name (used in error messages) */\n name: string;\n /** Zod schema for validation */\n schema: ZodSchema<TOptions>;\n /** Default option values */\n defaults?: Partial<TOptions>;\n}\n\n/**\n * Custom event detail for fmcp:render event\n */\nexport interface FmcpRenderEventDetail<TOptions = unknown> {\n options: TOptions;\n}\n\n/**\n * Base class for all FrontMCP Web Components.\n *\n * Key features:\n * - **Light DOM**: Renders directly to innerHTML (no Shadow DOM)\n * - **Attribute Parsing**: Converts HTML attributes to typed options\n * - **Property Setters**: React/Vue can set properties directly\n * - **Zod Validation**: Invalid options render error box\n * - **Batched Rendering**: Multiple changes batch via queueMicrotask\n * - **HTMX Support**: hx-* attributes pass through to inner elements\n *\n * @typeParam TOptions - The component's options type (from Zod schema)\n *\n * @example Usage in HTML\n * ```html\n * <fmcp-button variant=\"primary\" disabled>\n * Click Me\n * </fmcp-button>\n * ```\n *\n * @example Usage in React\n * ```tsx\n * <fmcp-button\n * variant=\"primary\"\n * onClick={handleClick}\n * >\n * Click Me\n * </fmcp-button>\n * ```\n */\nexport abstract class FmcpElement<TOptions> extends HTMLElementBase {\n /**\n * Configuration provided by subclass.\n * Must include component name, Zod schema, and optional defaults.\n */\n protected abstract readonly config: FmcpElementConfig<TOptions>;\n\n /** Internal options state */\n protected _options: Partial<TOptions> = {};\n\n /** Content passed as children (captured on connect) */\n protected _content: string = '';\n\n /** Whether component has been connected to DOM */\n private _connected = false;\n\n /** Whether a render is pending (for batching) */\n private _pendingRender = false;\n\n /** Whether initial render has completed */\n private _initialRenderComplete = false;\n\n // ============================================\n // Lifecycle Callbacks\n // ============================================\n\n /**\n * Called when element is added to DOM.\n * Captures content, parses attributes, and renders.\n *\n * Supports SSR hydration via `data-ssr` attribute:\n * - If `data-ssr` is present, content was pre-rendered by server\n * - Web component adopts existing content without re-rendering\n * - This enables progressive enhancement for LLM platforms\n */\n connectedCallback(): void {\n this._connected = true;\n\n // Check for SSR hydration marker\n const isHydrating = this.hasAttribute('data-ssr');\n\n if (isHydrating) {\n // Content already rendered by server, adopt it\n this._content = this.innerHTML;\n this._initialRenderComplete = true;\n this.removeAttribute('data-ssr');\n // Parse attributes for property access (but don't re-render)\n this._parseAttributes();\n return;\n }\n\n // Normal client-side rendering path\n // Capture initial content before first render\n // (so we can use it as the component's text/children)\n if (!this._initialRenderComplete) {\n this._content = this.innerHTML;\n }\n\n // Parse all current attributes into options\n this._parseAttributes();\n\n // Initial render\n this._render();\n }\n\n /**\n * Called when element is removed from DOM.\n */\n disconnectedCallback(): void {\n this._connected = false;\n }\n\n /**\n * Called when an observed attribute changes.\n * Updates options and schedules re-render.\n */\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void {\n // Skip if value unchanged\n if (oldValue === newValue) return;\n\n // Update the corresponding option\n this._updateOptionFromAttribute(name, newValue);\n\n // Schedule re-render (batched)\n this._scheduleRender();\n }\n\n // ============================================\n // Property Accessors (React/Vue Compatibility)\n // ============================================\n\n /**\n * Set all options at once (React pattern).\n *\n * @example\n * ```typescript\n * const el = document.querySelector('fmcp-button');\n * el.options = { variant: 'danger', size: 'lg' };\n * ```\n */\n set options(value: Partial<TOptions>) {\n this._options = { ...this._options, ...value };\n this._scheduleRender();\n }\n\n /**\n * Get current options.\n */\n get options(): Partial<TOptions> {\n return { ...this._options };\n }\n\n // ============================================\n // Attribute Parsing\n // ============================================\n\n /**\n * Parse all current attributes into options.\n */\n private _parseAttributes(): void {\n for (const attr of Array.from(this.attributes)) {\n this._updateOptionFromAttribute(attr.name, attr.value);\n }\n }\n\n /**\n * Update a single option from an attribute change.\n */\n private _updateOptionFromAttribute(attrName: string, value: string | null): void {\n const parsed = parseAttributeValue(attrName, value);\n this._options = mergeAttributeIntoOptions(this._options, parsed);\n }\n\n // ============================================\n // Rendering\n // ============================================\n\n /**\n * Schedule a render on next microtask.\n * Batches multiple attribute/property changes.\n */\n protected _scheduleRender(): void {\n if (!this._connected || this._pendingRender) return;\n\n this._pendingRender = true;\n queueMicrotask(() => {\n this._pendingRender = false;\n if (this._connected) {\n this._render();\n }\n });\n }\n\n /**\n * Perform the actual render.\n * Validates options and updates innerHTML.\n */\n private _render(): void {\n // Merge defaults with current options\n const mergedOptions = {\n ...this.config.defaults,\n ...this._options,\n } as TOptions;\n\n // Validate with Zod schema\n const result = this.config.schema.safeParse(mergedOptions);\n\n if (!result.success) {\n // Render validation error box\n const firstError = result.error.issues[0];\n const invalidParam = firstError?.path.join('.') || 'options';\n\n this.innerHTML = validationErrorBox({\n componentName: this.config.name,\n invalidParam,\n });\n\n this._initialRenderComplete = true;\n return;\n }\n\n // Generate HTML using subclass implementation\n const html = this.renderHtml(result.data, this._content);\n\n // Update Light DOM\n this.innerHTML = html;\n\n this._initialRenderComplete = true;\n\n // Dispatch render event for debugging/testing\n this.dispatchEvent(\n new CustomEvent<FmcpRenderEventDetail<TOptions>>('fmcp:render', {\n bubbles: true,\n detail: { options: result.data },\n }),\n );\n }\n\n /**\n * Generate HTML for the component.\n * Subclasses must implement this to render their specific HTML.\n *\n * @param options - Validated options\n * @param content - Original innerHTML content\n * @returns HTML string to render\n */\n protected abstract renderHtml(options: TOptions, content: string): string;\n\n // ============================================\n // Public API\n // ============================================\n\n /**\n * Force an immediate re-render.\n *\n * @example\n * ```typescript\n * el.options = { loading: true };\n * el.refresh(); // Force immediate render\n * ```\n */\n public refresh(): void {\n if (this._connected) {\n this._render();\n }\n }\n\n /**\n * Get the first child element (the actual rendered component).\n *\n * @typeParam T - Expected element type\n * @returns The first child element or null\n *\n * @example\n * ```typescript\n * const button = el.getInnerElement<HTMLButtonElement>();\n * button?.focus();\n * ```\n */\n public getInnerElement<T extends Element = Element>(): T | null {\n return this.firstElementChild as T | null;\n }\n\n /**\n * Update content and re-render.\n *\n * @param content - New content string\n */\n public setContent(content: string): void {\n this._content = content;\n this._scheduleRender();\n }\n}\n"]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file core/index.ts
|
|
3
|
-
* @description Core utilities for FrontMCP Web Components.
|
|
4
|
-
*
|
|
5
|
-
* @module @frontmcp/ui/web-components/core
|
|
6
|
-
*/
|
|
7
|
-
export { FmcpElement, type FmcpElementConfig, type FmcpRenderEventDetail } from './base-element';
|
|
8
|
-
export { parseAttributeValue, kebabToCamel, camelToKebab, getObservedAttributesFromSchema, mergeAttributeIntoOptions, type ParsedAttribute, } from './attribute-parser';
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @file core/index.ts
|
|
4
|
-
* @description Core utilities for FrontMCP Web Components.
|
|
5
|
-
*
|
|
6
|
-
* @module @frontmcp/ui/web-components/core
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.mergeAttributeIntoOptions = exports.getObservedAttributesFromSchema = exports.camelToKebab = exports.kebabToCamel = exports.parseAttributeValue = exports.FmcpElement = void 0;
|
|
10
|
-
var base_element_1 = require("./base-element");
|
|
11
|
-
Object.defineProperty(exports, "FmcpElement", { enumerable: true, get: function () { return base_element_1.FmcpElement; } });
|
|
12
|
-
var attribute_parser_1 = require("./attribute-parser");
|
|
13
|
-
Object.defineProperty(exports, "parseAttributeValue", { enumerable: true, get: function () { return attribute_parser_1.parseAttributeValue; } });
|
|
14
|
-
Object.defineProperty(exports, "kebabToCamel", { enumerable: true, get: function () { return attribute_parser_1.kebabToCamel; } });
|
|
15
|
-
Object.defineProperty(exports, "camelToKebab", { enumerable: true, get: function () { return attribute_parser_1.camelToKebab; } });
|
|
16
|
-
Object.defineProperty(exports, "getObservedAttributesFromSchema", { enumerable: true, get: function () { return attribute_parser_1.getObservedAttributesFromSchema; } });
|
|
17
|
-
Object.defineProperty(exports, "mergeAttributeIntoOptions", { enumerable: true, get: function () { return attribute_parser_1.mergeAttributeIntoOptions; } });
|
|
18
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/web-components/core/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,+CAAiG;AAAxF,2GAAA,WAAW,OAAA;AAEpB,uDAO4B;AAN1B,uHAAA,mBAAmB,OAAA;AACnB,gHAAA,YAAY,OAAA;AACZ,gHAAA,YAAY,OAAA;AACZ,mIAAA,+BAA+B,OAAA;AAC/B,6HAAA,yBAAyB,OAAA","sourcesContent":["/**\n * @file core/index.ts\n * @description Core utilities for FrontMCP Web Components.\n *\n * @module @frontmcp/ui/web-components/core\n */\n\nexport { FmcpElement, type FmcpElementConfig, type FmcpRenderEventDetail } from './base-element';\n\nexport {\n parseAttributeValue,\n kebabToCamel,\n camelToKebab,\n getObservedAttributesFromSchema,\n mergeAttributeIntoOptions,\n type ParsedAttribute,\n} from './attribute-parser';\n"]}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file fmcp-alert.ts
|
|
3
|
-
* @description FrontMCP Alert Web Component.
|
|
4
|
-
*
|
|
5
|
-
* A custom element wrapper around the alert() HTML function.
|
|
6
|
-
*
|
|
7
|
-
* @example Basic usage
|
|
8
|
-
* ```html
|
|
9
|
-
* <fmcp-alert variant="success">Operation completed!</fmcp-alert>
|
|
10
|
-
* <fmcp-alert variant="danger" title="Error">Something went wrong</fmcp-alert>
|
|
11
|
-
* ```
|
|
12
|
-
*
|
|
13
|
-
* @example Dismissible alert
|
|
14
|
-
* ```html
|
|
15
|
-
* <fmcp-alert variant="info" dismissible>
|
|
16
|
-
* Click X to dismiss
|
|
17
|
-
* </fmcp-alert>
|
|
18
|
-
* ```
|
|
19
|
-
*
|
|
20
|
-
* @module @frontmcp/ui/web-components/elements/fmcp-alert
|
|
21
|
-
*/
|
|
22
|
-
import { FmcpElement, type FmcpElementConfig } from '../core';
|
|
23
|
-
import { type AlertOptions } from '../../components/alert';
|
|
24
|
-
/**
|
|
25
|
-
* FmcpAlert Web Component
|
|
26
|
-
*/
|
|
27
|
-
export declare class FmcpAlert extends FmcpElement<AlertOptions> {
|
|
28
|
-
protected readonly config: FmcpElementConfig<AlertOptions>;
|
|
29
|
-
static get observedAttributes(): string[];
|
|
30
|
-
protected renderHtml(options: AlertOptions, content: string): string;
|
|
31
|
-
set variant(value: AlertOptions['variant']);
|
|
32
|
-
get variant(): AlertOptions['variant'];
|
|
33
|
-
set alertTitle(value: string | undefined);
|
|
34
|
-
get alertTitle(): string | undefined;
|
|
35
|
-
set showIcon(value: boolean);
|
|
36
|
-
get showIcon(): boolean;
|
|
37
|
-
set dismissible(value: boolean);
|
|
38
|
-
get dismissible(): boolean;
|
|
39
|
-
set actions(value: string | undefined);
|
|
40
|
-
get actions(): string | undefined;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Register the fmcp-alert custom element.
|
|
44
|
-
*/
|
|
45
|
-
export declare function registerFmcpAlert(): void;
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @file fmcp-alert.ts
|
|
4
|
-
* @description FrontMCP Alert Web Component.
|
|
5
|
-
*
|
|
6
|
-
* A custom element wrapper around the alert() HTML function.
|
|
7
|
-
*
|
|
8
|
-
* @example Basic usage
|
|
9
|
-
* ```html
|
|
10
|
-
* <fmcp-alert variant="success">Operation completed!</fmcp-alert>
|
|
11
|
-
* <fmcp-alert variant="danger" title="Error">Something went wrong</fmcp-alert>
|
|
12
|
-
* ```
|
|
13
|
-
*
|
|
14
|
-
* @example Dismissible alert
|
|
15
|
-
* ```html
|
|
16
|
-
* <fmcp-alert variant="info" dismissible>
|
|
17
|
-
* Click X to dismiss
|
|
18
|
-
* </fmcp-alert>
|
|
19
|
-
* ```
|
|
20
|
-
*
|
|
21
|
-
* @module @frontmcp/ui/web-components/elements/fmcp-alert
|
|
22
|
-
*/
|
|
23
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.FmcpAlert = void 0;
|
|
25
|
-
exports.registerFmcpAlert = registerFmcpAlert;
|
|
26
|
-
const core_1 = require("../core");
|
|
27
|
-
const alert_1 = require("../../components/alert");
|
|
28
|
-
const alert_schema_1 = require("../../components/alert.schema");
|
|
29
|
-
/**
|
|
30
|
-
* FmcpAlert Web Component
|
|
31
|
-
*/
|
|
32
|
-
class FmcpAlert extends core_1.FmcpElement {
|
|
33
|
-
config = {
|
|
34
|
-
name: 'alert',
|
|
35
|
-
schema: alert_schema_1.AlertOptionsSchema,
|
|
36
|
-
defaults: {
|
|
37
|
-
variant: 'info',
|
|
38
|
-
showIcon: true,
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
static get observedAttributes() {
|
|
42
|
-
return (0, core_1.getObservedAttributesFromSchema)(alert_schema_1.AlertOptionsSchema);
|
|
43
|
-
}
|
|
44
|
-
renderHtml(options, content) {
|
|
45
|
-
return (0, alert_1.alert)(content, options);
|
|
46
|
-
}
|
|
47
|
-
// Property setters
|
|
48
|
-
set variant(value) {
|
|
49
|
-
this._options.variant = value;
|
|
50
|
-
this._scheduleRender();
|
|
51
|
-
}
|
|
52
|
-
get variant() {
|
|
53
|
-
return this._options.variant;
|
|
54
|
-
}
|
|
55
|
-
set alertTitle(value) {
|
|
56
|
-
this._options.title = value;
|
|
57
|
-
this._scheduleRender();
|
|
58
|
-
}
|
|
59
|
-
get alertTitle() {
|
|
60
|
-
return this._options.title;
|
|
61
|
-
}
|
|
62
|
-
set showIcon(value) {
|
|
63
|
-
this._options.showIcon = value;
|
|
64
|
-
this._scheduleRender();
|
|
65
|
-
}
|
|
66
|
-
get showIcon() {
|
|
67
|
-
return this._options.showIcon ?? true;
|
|
68
|
-
}
|
|
69
|
-
set dismissible(value) {
|
|
70
|
-
this._options.dismissible = value;
|
|
71
|
-
this._scheduleRender();
|
|
72
|
-
}
|
|
73
|
-
get dismissible() {
|
|
74
|
-
return this._options.dismissible ?? false;
|
|
75
|
-
}
|
|
76
|
-
set actions(value) {
|
|
77
|
-
this._options.actions = value;
|
|
78
|
-
this._scheduleRender();
|
|
79
|
-
}
|
|
80
|
-
get actions() {
|
|
81
|
-
return this._options.actions;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
exports.FmcpAlert = FmcpAlert;
|
|
85
|
-
/**
|
|
86
|
-
* Register the fmcp-alert custom element.
|
|
87
|
-
*/
|
|
88
|
-
function registerFmcpAlert() {
|
|
89
|
-
if (typeof customElements !== 'undefined' && !customElements.get('fmcp-alert')) {
|
|
90
|
-
customElements.define('fmcp-alert', FmcpAlert);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=fmcp-alert.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fmcp-alert.js","sourceRoot":"","sources":["../../../../src/web-components/elements/fmcp-alert.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAwEH,8CAIC;AA1ED,kCAA+F;AAC/F,kDAAkE;AAClE,gEAAmE;AAEnE;;GAEG;AACH,MAAa,SAAU,SAAQ,kBAAyB;IACnC,MAAM,GAAoC;QAC3D,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,iCAAkB;QAC1B,QAAQ,EAAE;YACR,OAAO,EAAE,MAAM;YACf,QAAQ,EAAE,IAAI;SACf;KACF,CAAC;IAEF,MAAM,KAAK,kBAAkB;QAC3B,OAAO,IAAA,sCAA+B,EAAC,iCAAkB,CAAC,CAAC;IAC7D,CAAC;IAES,UAAU,CAAC,OAAqB,EAAE,OAAe;QACzD,OAAO,IAAA,aAAK,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,CAAC,KAA8B;QACxC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,IAAI,UAAU,CAAC,KAAyB;QACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED,IAAI,QAAQ,CAAC,KAAc;QACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC;IACxC,CAAC;IAED,IAAI,WAAW,CAAC,KAAc;QAC5B,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO,CAAC,KAAyB;QACnC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;CACF;AA1DD,8BA0DC;AAED;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,IAAI,OAAO,cAAc,KAAK,WAAW,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/E,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;AACH,CAAC","sourcesContent":["/**\n * @file fmcp-alert.ts\n * @description FrontMCP Alert Web Component.\n *\n * A custom element wrapper around the alert() HTML function.\n *\n * @example Basic usage\n * ```html\n * <fmcp-alert variant=\"success\">Operation completed!</fmcp-alert>\n * <fmcp-alert variant=\"danger\" title=\"Error\">Something went wrong</fmcp-alert>\n * ```\n *\n * @example Dismissible alert\n * ```html\n * <fmcp-alert variant=\"info\" dismissible>\n * Click X to dismiss\n * </fmcp-alert>\n * ```\n *\n * @module @frontmcp/ui/web-components/elements/fmcp-alert\n */\n\nimport { FmcpElement, type FmcpElementConfig, getObservedAttributesFromSchema } from '../core';\nimport { alert, type AlertOptions } from '../../components/alert';\nimport { AlertOptionsSchema } from '../../components/alert.schema';\n\n/**\n * FmcpAlert Web Component\n */\nexport class FmcpAlert extends FmcpElement<AlertOptions> {\n protected readonly config: FmcpElementConfig<AlertOptions> = {\n name: 'alert',\n schema: AlertOptionsSchema,\n defaults: {\n variant: 'info',\n showIcon: true,\n },\n };\n\n static get observedAttributes(): string[] {\n return getObservedAttributesFromSchema(AlertOptionsSchema);\n }\n\n protected renderHtml(options: AlertOptions, content: string): string {\n return alert(content, options);\n }\n\n // Property setters\n set variant(value: AlertOptions['variant']) {\n this._options.variant = value;\n this._scheduleRender();\n }\n get variant(): AlertOptions['variant'] {\n return this._options.variant;\n }\n\n set alertTitle(value: string | undefined) {\n this._options.title = value;\n this._scheduleRender();\n }\n get alertTitle(): string | undefined {\n return this._options.title;\n }\n\n set showIcon(value: boolean) {\n this._options.showIcon = value;\n this._scheduleRender();\n }\n get showIcon(): boolean {\n return this._options.showIcon ?? true;\n }\n\n set dismissible(value: boolean) {\n this._options.dismissible = value;\n this._scheduleRender();\n }\n get dismissible(): boolean {\n return this._options.dismissible ?? false;\n }\n\n set actions(value: string | undefined) {\n this._options.actions = value;\n this._scheduleRender();\n }\n get actions(): string | undefined {\n return this._options.actions;\n }\n}\n\n/**\n * Register the fmcp-alert custom element.\n */\nexport function registerFmcpAlert(): void {\n if (typeof customElements !== 'undefined' && !customElements.get('fmcp-alert')) {\n customElements.define('fmcp-alert', FmcpAlert);\n }\n}\n"]}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file fmcp-badge.ts
|
|
3
|
-
* @description FrontMCP Badge Web Component.
|
|
4
|
-
*
|
|
5
|
-
* A custom element wrapper around the badge() HTML function.
|
|
6
|
-
*
|
|
7
|
-
* @example Basic usage
|
|
8
|
-
* ```html
|
|
9
|
-
* <fmcp-badge>Default</fmcp-badge>
|
|
10
|
-
* <fmcp-badge variant="success">Active</fmcp-badge>
|
|
11
|
-
* <fmcp-badge variant="danger" pill>Error</fmcp-badge>
|
|
12
|
-
* ```
|
|
13
|
-
*
|
|
14
|
-
* @example Removable badge
|
|
15
|
-
* ```html
|
|
16
|
-
* <fmcp-badge removable>Tag</fmcp-badge>
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* @module @frontmcp/ui/web-components/elements/fmcp-badge
|
|
20
|
-
*/
|
|
21
|
-
import { FmcpElement, type FmcpElementConfig } from '../core';
|
|
22
|
-
import { type BadgeOptions } from '../../components/badge';
|
|
23
|
-
/**
|
|
24
|
-
* FmcpBadge Web Component
|
|
25
|
-
*/
|
|
26
|
-
export declare class FmcpBadge extends FmcpElement<BadgeOptions> {
|
|
27
|
-
protected readonly config: FmcpElementConfig<BadgeOptions>;
|
|
28
|
-
static get observedAttributes(): string[];
|
|
29
|
-
protected renderHtml(options: BadgeOptions, content: string): string;
|
|
30
|
-
set variant(value: BadgeOptions['variant']);
|
|
31
|
-
get variant(): BadgeOptions['variant'];
|
|
32
|
-
set size(value: BadgeOptions['size']);
|
|
33
|
-
get size(): BadgeOptions['size'];
|
|
34
|
-
set pill(value: boolean);
|
|
35
|
-
get pill(): boolean;
|
|
36
|
-
set dot(value: boolean);
|
|
37
|
-
get dot(): boolean;
|
|
38
|
-
set removable(value: boolean);
|
|
39
|
-
get removable(): boolean;
|
|
40
|
-
set icon(value: string | undefined);
|
|
41
|
-
get icon(): string | undefined;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Register the fmcp-badge custom element.
|
|
45
|
-
*/
|
|
46
|
-
export declare function registerFmcpBadge(): void;
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @file fmcp-badge.ts
|
|
4
|
-
* @description FrontMCP Badge Web Component.
|
|
5
|
-
*
|
|
6
|
-
* A custom element wrapper around the badge() HTML function.
|
|
7
|
-
*
|
|
8
|
-
* @example Basic usage
|
|
9
|
-
* ```html
|
|
10
|
-
* <fmcp-badge>Default</fmcp-badge>
|
|
11
|
-
* <fmcp-badge variant="success">Active</fmcp-badge>
|
|
12
|
-
* <fmcp-badge variant="danger" pill>Error</fmcp-badge>
|
|
13
|
-
* ```
|
|
14
|
-
*
|
|
15
|
-
* @example Removable badge
|
|
16
|
-
* ```html
|
|
17
|
-
* <fmcp-badge removable>Tag</fmcp-badge>
|
|
18
|
-
* ```
|
|
19
|
-
*
|
|
20
|
-
* @module @frontmcp/ui/web-components/elements/fmcp-badge
|
|
21
|
-
*/
|
|
22
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.FmcpBadge = void 0;
|
|
24
|
-
exports.registerFmcpBadge = registerFmcpBadge;
|
|
25
|
-
const core_1 = require("../core");
|
|
26
|
-
const badge_1 = require("../../components/badge");
|
|
27
|
-
const badge_schema_1 = require("../../components/badge.schema");
|
|
28
|
-
/**
|
|
29
|
-
* FmcpBadge Web Component
|
|
30
|
-
*/
|
|
31
|
-
class FmcpBadge extends core_1.FmcpElement {
|
|
32
|
-
config = {
|
|
33
|
-
name: 'badge',
|
|
34
|
-
schema: badge_schema_1.BadgeOptionsSchema,
|
|
35
|
-
defaults: {
|
|
36
|
-
variant: 'default',
|
|
37
|
-
size: 'md',
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
static get observedAttributes() {
|
|
41
|
-
return (0, core_1.getObservedAttributesFromSchema)(badge_schema_1.BadgeOptionsSchema);
|
|
42
|
-
}
|
|
43
|
-
renderHtml(options, content) {
|
|
44
|
-
return (0, badge_1.badge)(content, options);
|
|
45
|
-
}
|
|
46
|
-
// Property setters
|
|
47
|
-
set variant(value) {
|
|
48
|
-
this._options.variant = value;
|
|
49
|
-
this._scheduleRender();
|
|
50
|
-
}
|
|
51
|
-
get variant() {
|
|
52
|
-
return this._options.variant;
|
|
53
|
-
}
|
|
54
|
-
set size(value) {
|
|
55
|
-
this._options.size = value;
|
|
56
|
-
this._scheduleRender();
|
|
57
|
-
}
|
|
58
|
-
get size() {
|
|
59
|
-
return this._options.size;
|
|
60
|
-
}
|
|
61
|
-
set pill(value) {
|
|
62
|
-
this._options.pill = value;
|
|
63
|
-
this._scheduleRender();
|
|
64
|
-
}
|
|
65
|
-
get pill() {
|
|
66
|
-
return this._options.pill ?? false;
|
|
67
|
-
}
|
|
68
|
-
set dot(value) {
|
|
69
|
-
this._options.dot = value;
|
|
70
|
-
this._scheduleRender();
|
|
71
|
-
}
|
|
72
|
-
get dot() {
|
|
73
|
-
return this._options.dot ?? false;
|
|
74
|
-
}
|
|
75
|
-
set removable(value) {
|
|
76
|
-
this._options.removable = value;
|
|
77
|
-
this._scheduleRender();
|
|
78
|
-
}
|
|
79
|
-
get removable() {
|
|
80
|
-
return this._options.removable ?? false;
|
|
81
|
-
}
|
|
82
|
-
set icon(value) {
|
|
83
|
-
this._options.icon = value;
|
|
84
|
-
this._scheduleRender();
|
|
85
|
-
}
|
|
86
|
-
get icon() {
|
|
87
|
-
return this._options.icon;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
exports.FmcpBadge = FmcpBadge;
|
|
91
|
-
/**
|
|
92
|
-
* Register the fmcp-badge custom element.
|
|
93
|
-
*/
|
|
94
|
-
function registerFmcpBadge() {
|
|
95
|
-
if (typeof customElements !== 'undefined' && !customElements.get('fmcp-badge')) {
|
|
96
|
-
customElements.define('fmcp-badge', FmcpBadge);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=fmcp-badge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fmcp-badge.js","sourceRoot":"","sources":["../../../../src/web-components/elements/fmcp-badge.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAgFH,8CAIC;AAlFD,kCAA+F;AAC/F,kDAAkE;AAClE,gEAAmE;AAEnE;;GAEG;AACH,MAAa,SAAU,SAAQ,kBAAyB;IACnC,MAAM,GAAoC;QAC3D,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,iCAAkB;QAC1B,QAAQ,EAAE;YACR,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,IAAI;SACX;KACF,CAAC;IAEF,MAAM,KAAK,kBAAkB;QAC3B,OAAO,IAAA,sCAA+B,EAAC,iCAAkB,CAAC,CAAC;IAC7D,CAAC;IAES,UAAU,CAAC,OAAqB,EAAE,OAAe;QACzD,OAAO,IAAA,aAAK,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,CAAC,KAA8B;QACxC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,IAAI,IAAI,CAAC,KAA2B;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI,CAAC,KAAc;QACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC;IACrC,CAAC;IAED,IAAI,GAAG,CAAC,KAAc;QACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,KAAK,CAAC;IACpC,CAAC;IAED,IAAI,SAAS,CAAC,KAAc;QAC1B,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,KAAK,CAAC;IAC1C,CAAC;IAED,IAAI,IAAI,CAAC,KAAyB;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;CACF;AAlED,8BAkEC;AAED;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,IAAI,OAAO,cAAc,KAAK,WAAW,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/E,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;AACH,CAAC","sourcesContent":["/**\n * @file fmcp-badge.ts\n * @description FrontMCP Badge Web Component.\n *\n * A custom element wrapper around the badge() HTML function.\n *\n * @example Basic usage\n * ```html\n * <fmcp-badge>Default</fmcp-badge>\n * <fmcp-badge variant=\"success\">Active</fmcp-badge>\n * <fmcp-badge variant=\"danger\" pill>Error</fmcp-badge>\n * ```\n *\n * @example Removable badge\n * ```html\n * <fmcp-badge removable>Tag</fmcp-badge>\n * ```\n *\n * @module @frontmcp/ui/web-components/elements/fmcp-badge\n */\n\nimport { FmcpElement, type FmcpElementConfig, getObservedAttributesFromSchema } from '../core';\nimport { badge, type BadgeOptions } from '../../components/badge';\nimport { BadgeOptionsSchema } from '../../components/badge.schema';\n\n/**\n * FmcpBadge Web Component\n */\nexport class FmcpBadge extends FmcpElement<BadgeOptions> {\n protected readonly config: FmcpElementConfig<BadgeOptions> = {\n name: 'badge',\n schema: BadgeOptionsSchema,\n defaults: {\n variant: 'default',\n size: 'md',\n },\n };\n\n static get observedAttributes(): string[] {\n return getObservedAttributesFromSchema(BadgeOptionsSchema);\n }\n\n protected renderHtml(options: BadgeOptions, content: string): string {\n return badge(content, options);\n }\n\n // Property setters\n set variant(value: BadgeOptions['variant']) {\n this._options.variant = value;\n this._scheduleRender();\n }\n get variant(): BadgeOptions['variant'] {\n return this._options.variant;\n }\n\n set size(value: BadgeOptions['size']) {\n this._options.size = value;\n this._scheduleRender();\n }\n get size(): BadgeOptions['size'] {\n return this._options.size;\n }\n\n set pill(value: boolean) {\n this._options.pill = value;\n this._scheduleRender();\n }\n get pill(): boolean {\n return this._options.pill ?? false;\n }\n\n set dot(value: boolean) {\n this._options.dot = value;\n this._scheduleRender();\n }\n get dot(): boolean {\n return this._options.dot ?? false;\n }\n\n set removable(value: boolean) {\n this._options.removable = value;\n this._scheduleRender();\n }\n get removable(): boolean {\n return this._options.removable ?? false;\n }\n\n set icon(value: string | undefined) {\n this._options.icon = value;\n this._scheduleRender();\n }\n get icon(): string | undefined {\n return this._options.icon;\n }\n}\n\n/**\n * Register the fmcp-badge custom element.\n */\nexport function registerFmcpBadge(): void {\n if (typeof customElements !== 'undefined' && !customElements.get('fmcp-badge')) {\n customElements.define('fmcp-badge', FmcpBadge);\n }\n}\n"]}
|