@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,168 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @file list.schema.ts
|
|
4
|
-
* @description Zod schemas for List component options validation.
|
|
5
|
-
*
|
|
6
|
-
* Provides strict validation schemas for permission lists, feature lists,
|
|
7
|
-
* description lists, and action lists with HTMX support.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```typescript
|
|
11
|
-
* import { PermissionItemSchema, PermissionListOptionsSchema } from '@frontmcp/ui';
|
|
12
|
-
*
|
|
13
|
-
* const itemResult = PermissionItemSchema.safeParse({
|
|
14
|
-
* scope: 'read:profile',
|
|
15
|
-
* name: 'Read Profile',
|
|
16
|
-
* });
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* @module @frontmcp/ui/components/list.schema
|
|
20
|
-
*/
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.ActionListOptionsSchema = exports.ActionItemSchema = exports.DescriptionListOptionsSchema = exports.DescriptionItemSchema = exports.FeatureListOptionsSchema = exports.FeatureItemSchema = exports.PermissionListOptionsSchema = exports.PermissionItemSchema = void 0;
|
|
23
|
-
const zod_1 = require("zod");
|
|
24
|
-
// ============================================
|
|
25
|
-
// Permission Item Schema
|
|
26
|
-
// ============================================
|
|
27
|
-
/**
|
|
28
|
-
* Permission/Scope item schema for OAuth consent
|
|
29
|
-
*/
|
|
30
|
-
exports.PermissionItemSchema = zod_1.z
|
|
31
|
-
.object({
|
|
32
|
-
/** Scope identifier */
|
|
33
|
-
scope: zod_1.z.string(),
|
|
34
|
-
/** Display name */
|
|
35
|
-
name: zod_1.z.string(),
|
|
36
|
-
/** Description */
|
|
37
|
-
description: zod_1.z.string().optional(),
|
|
38
|
-
/** Icon HTML */
|
|
39
|
-
icon: zod_1.z.string().optional(),
|
|
40
|
-
/** Required permission (cannot be unchecked) */
|
|
41
|
-
required: zod_1.z.boolean().optional(),
|
|
42
|
-
/** Checked by default */
|
|
43
|
-
checked: zod_1.z.boolean().optional(),
|
|
44
|
-
/** Sensitive/dangerous permission */
|
|
45
|
-
sensitive: zod_1.z.boolean().optional(),
|
|
46
|
-
})
|
|
47
|
-
.strict();
|
|
48
|
-
/**
|
|
49
|
-
* Permission list options schema
|
|
50
|
-
*/
|
|
51
|
-
exports.PermissionListOptionsSchema = zod_1.z
|
|
52
|
-
.object({
|
|
53
|
-
/** List ID */
|
|
54
|
-
id: zod_1.z.string().optional(),
|
|
55
|
-
/** Checkable permissions */
|
|
56
|
-
checkable: zod_1.z.boolean().optional(),
|
|
57
|
-
/** Input name for checkable */
|
|
58
|
-
inputName: zod_1.z.string().optional(),
|
|
59
|
-
/** Group title */
|
|
60
|
-
title: zod_1.z.string().optional(),
|
|
61
|
-
/** Additional CSS classes */
|
|
62
|
-
className: zod_1.z.string().optional(),
|
|
63
|
-
})
|
|
64
|
-
.strict();
|
|
65
|
-
// ============================================
|
|
66
|
-
// Feature Item Schema
|
|
67
|
-
// ============================================
|
|
68
|
-
/**
|
|
69
|
-
* Feature list item schema
|
|
70
|
-
*/
|
|
71
|
-
exports.FeatureItemSchema = zod_1.z
|
|
72
|
-
.object({
|
|
73
|
-
/** Feature name */
|
|
74
|
-
name: zod_1.z.string(),
|
|
75
|
-
/** Feature description */
|
|
76
|
-
description: zod_1.z.string().optional(),
|
|
77
|
-
/** Icon HTML */
|
|
78
|
-
icon: zod_1.z.string().optional(),
|
|
79
|
-
/** Included in plan */
|
|
80
|
-
included: zod_1.z.boolean().optional(),
|
|
81
|
-
})
|
|
82
|
-
.strict();
|
|
83
|
-
/**
|
|
84
|
-
* Feature list options schema
|
|
85
|
-
*/
|
|
86
|
-
exports.FeatureListOptionsSchema = zod_1.z
|
|
87
|
-
.object({
|
|
88
|
-
/** Group title */
|
|
89
|
-
title: zod_1.z.string().optional(),
|
|
90
|
-
/** Show included/excluded styling */
|
|
91
|
-
showStatus: zod_1.z.boolean().optional(),
|
|
92
|
-
/** Additional CSS classes */
|
|
93
|
-
className: zod_1.z.string().optional(),
|
|
94
|
-
})
|
|
95
|
-
.strict();
|
|
96
|
-
// ============================================
|
|
97
|
-
// Description Item Schema
|
|
98
|
-
// ============================================
|
|
99
|
-
/**
|
|
100
|
-
* Description list item schema
|
|
101
|
-
*/
|
|
102
|
-
exports.DescriptionItemSchema = zod_1.z
|
|
103
|
-
.object({
|
|
104
|
-
/** Term/label */
|
|
105
|
-
term: zod_1.z.string(),
|
|
106
|
-
/** Description/value */
|
|
107
|
-
description: zod_1.z.string(),
|
|
108
|
-
/** Copy button */
|
|
109
|
-
copyable: zod_1.z.boolean().optional(),
|
|
110
|
-
})
|
|
111
|
-
.strict();
|
|
112
|
-
/**
|
|
113
|
-
* Description list options schema
|
|
114
|
-
*/
|
|
115
|
-
exports.DescriptionListOptionsSchema = zod_1.z
|
|
116
|
-
.object({
|
|
117
|
-
/** Layout direction */
|
|
118
|
-
direction: zod_1.z.enum(['horizontal', 'vertical']).optional(),
|
|
119
|
-
/** Striped rows */
|
|
120
|
-
striped: zod_1.z.boolean().optional(),
|
|
121
|
-
/** Additional CSS classes */
|
|
122
|
-
className: zod_1.z.string().optional(),
|
|
123
|
-
})
|
|
124
|
-
.strict();
|
|
125
|
-
// ============================================
|
|
126
|
-
// Action Item Schema
|
|
127
|
-
// ============================================
|
|
128
|
-
/**
|
|
129
|
-
* Action list item schema
|
|
130
|
-
*/
|
|
131
|
-
exports.ActionItemSchema = zod_1.z
|
|
132
|
-
.object({
|
|
133
|
-
/** Action label */
|
|
134
|
-
label: zod_1.z.string(),
|
|
135
|
-
/** Action description */
|
|
136
|
-
description: zod_1.z.string().optional(),
|
|
137
|
-
/** Icon HTML */
|
|
138
|
-
icon: zod_1.z.string().optional(),
|
|
139
|
-
/** Click URL */
|
|
140
|
-
href: zod_1.z.string().optional(),
|
|
141
|
-
/** HTMX attributes */
|
|
142
|
-
htmx: zod_1.z
|
|
143
|
-
.object({
|
|
144
|
-
get: zod_1.z.string().optional(),
|
|
145
|
-
post: zod_1.z.string().optional(),
|
|
146
|
-
target: zod_1.z.string().optional(),
|
|
147
|
-
swap: zod_1.z.string().optional(),
|
|
148
|
-
})
|
|
149
|
-
.strict()
|
|
150
|
-
.optional(),
|
|
151
|
-
/** Destructive action styling */
|
|
152
|
-
destructive: zod_1.z.boolean().optional(),
|
|
153
|
-
/** Disabled state */
|
|
154
|
-
disabled: zod_1.z.boolean().optional(),
|
|
155
|
-
})
|
|
156
|
-
.strict();
|
|
157
|
-
/**
|
|
158
|
-
* Action list options schema
|
|
159
|
-
*/
|
|
160
|
-
exports.ActionListOptionsSchema = zod_1.z
|
|
161
|
-
.object({
|
|
162
|
-
/** Divided items */
|
|
163
|
-
divided: zod_1.z.boolean().optional(),
|
|
164
|
-
/** Additional CSS classes */
|
|
165
|
-
className: zod_1.z.string().optional(),
|
|
166
|
-
})
|
|
167
|
-
.strict();
|
|
168
|
-
//# sourceMappingURL=list.schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list.schema.js","sourceRoot":"","sources":["../../../src/components/list.schema.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @file list.schema.ts\n * @description Zod schemas for List component options validation.\n *\n * Provides strict validation schemas for permission lists, feature lists,\n * description lists, and action lists with HTMX support.\n *\n * @example\n * ```typescript\n * import { PermissionItemSchema, PermissionListOptionsSchema } from '@frontmcp/ui';\n *\n * const itemResult = PermissionItemSchema.safeParse({\n * scope: 'read:profile',\n * name: 'Read Profile',\n * });\n * ```\n *\n * @module @frontmcp/ui/components/list.schema\n */\n\nimport { z } from 'zod';\n\n// ============================================\n// Permission Item Schema\n// ============================================\n\n/**\n * Permission/Scope item schema for OAuth consent\n */\nexport const PermissionItemSchema = z\n .object({\n /** Scope identifier */\n scope: z.string(),\n /** Display name */\n name: z.string(),\n /** Description */\n description: z.string().optional(),\n /** Icon HTML */\n icon: z.string().optional(),\n /** Required permission (cannot be unchecked) */\n required: z.boolean().optional(),\n /** Checked by default */\n checked: z.boolean().optional(),\n /** Sensitive/dangerous permission */\n sensitive: z.boolean().optional(),\n })\n .strict();\n\n/**\n * Permission item type\n */\nexport type PermissionItem = z.infer<typeof PermissionItemSchema>;\n\n/**\n * Permission list options schema\n */\nexport const PermissionListOptionsSchema = z\n .object({\n /** List ID */\n id: z.string().optional(),\n /** Checkable permissions */\n checkable: z.boolean().optional(),\n /** Input name for checkable */\n inputName: z.string().optional(),\n /** Group title */\n title: z.string().optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n })\n .strict();\n\n/**\n * Permission list options type\n */\nexport type PermissionListOptions = z.infer<typeof PermissionListOptionsSchema>;\n\n// ============================================\n// Feature Item Schema\n// ============================================\n\n/**\n * Feature list item schema\n */\nexport const FeatureItemSchema = z\n .object({\n /** Feature name */\n name: z.string(),\n /** Feature description */\n description: z.string().optional(),\n /** Icon HTML */\n icon: z.string().optional(),\n /** Included in plan */\n included: z.boolean().optional(),\n })\n .strict();\n\n/**\n * Feature item type\n */\nexport type FeatureItem = z.infer<typeof FeatureItemSchema>;\n\n/**\n * Feature list options schema\n */\nexport const FeatureListOptionsSchema = z\n .object({\n /** Group title */\n title: z.string().optional(),\n /** Show included/excluded styling */\n showStatus: z.boolean().optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n })\n .strict();\n\n/**\n * Feature list options type\n */\nexport type FeatureListOptions = z.infer<typeof FeatureListOptionsSchema>;\n\n// ============================================\n// Description Item Schema\n// ============================================\n\n/**\n * Description list item schema\n */\nexport const DescriptionItemSchema = z\n .object({\n /** Term/label */\n term: z.string(),\n /** Description/value */\n description: z.string(),\n /** Copy button */\n copyable: z.boolean().optional(),\n })\n .strict();\n\n/**\n * Description item type\n */\nexport type DescriptionItem = z.infer<typeof DescriptionItemSchema>;\n\n/**\n * Description list options schema\n */\nexport const DescriptionListOptionsSchema = z\n .object({\n /** Layout direction */\n direction: z.enum(['horizontal', 'vertical']).optional(),\n /** Striped rows */\n striped: z.boolean().optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n })\n .strict();\n\n/**\n * Description list options type\n */\nexport type DescriptionListOptions = z.infer<typeof DescriptionListOptionsSchema>;\n\n// ============================================\n// Action Item Schema\n// ============================================\n\n/**\n * Action list item schema\n */\nexport const ActionItemSchema = z\n .object({\n /** Action label */\n label: z.string(),\n /** Action description */\n description: z.string().optional(),\n /** Icon HTML */\n icon: z.string().optional(),\n /** Click URL */\n href: z.string().optional(),\n /** HTMX attributes */\n htmx: z\n .object({\n get: z.string().optional(),\n post: z.string().optional(),\n target: z.string().optional(),\n swap: z.string().optional(),\n })\n .strict()\n .optional(),\n /** Destructive action styling */\n destructive: z.boolean().optional(),\n /** Disabled state */\n disabled: z.boolean().optional(),\n })\n .strict();\n\n/**\n * Action item type\n */\nexport type ActionItem = z.infer<typeof ActionItemSchema>;\n\n/**\n * Action list options schema\n */\nexport const ActionListOptionsSchema = z\n .object({\n /** Divided items */\n divided: z.boolean().optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n })\n .strict();\n\n/**\n * Action list options type\n */\nexport type ActionListOptions = z.infer<typeof ActionListOptionsSchema>;\n"]}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Modal Component
|
|
3
|
-
*
|
|
4
|
-
* Dialog and modal components.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Modal size options
|
|
8
|
-
*/
|
|
9
|
-
export type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
10
|
-
/**
|
|
11
|
-
* Modal component options
|
|
12
|
-
*/
|
|
13
|
-
export interface ModalOptions {
|
|
14
|
-
/** Modal ID */
|
|
15
|
-
id: string;
|
|
16
|
-
/** Modal title */
|
|
17
|
-
title?: string;
|
|
18
|
-
/** Modal size */
|
|
19
|
-
size?: ModalSize;
|
|
20
|
-
/** Show close button */
|
|
21
|
-
showClose?: boolean;
|
|
22
|
-
/** Close on backdrop click */
|
|
23
|
-
closeOnBackdrop?: boolean;
|
|
24
|
-
/** Close on escape key */
|
|
25
|
-
closeOnEscape?: boolean;
|
|
26
|
-
/** Footer content */
|
|
27
|
-
footer?: string;
|
|
28
|
-
/** Additional CSS classes for modal */
|
|
29
|
-
className?: string;
|
|
30
|
-
/** Initially visible */
|
|
31
|
-
open?: boolean;
|
|
32
|
-
/** HTMX for closing */
|
|
33
|
-
onClose?: {
|
|
34
|
-
delete?: string;
|
|
35
|
-
target?: string;
|
|
36
|
-
swap?: string;
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Build a modal component
|
|
41
|
-
*/
|
|
42
|
-
export declare function modal(content: string, options: ModalOptions): string;
|
|
43
|
-
/**
|
|
44
|
-
* Build a modal trigger button/element
|
|
45
|
-
*/
|
|
46
|
-
export declare function modalTrigger(triggerContent: string, modalId: string, options?: {
|
|
47
|
-
className?: string;
|
|
48
|
-
tag?: 'button' | 'a' | 'span';
|
|
49
|
-
}): string;
|
|
50
|
-
/**
|
|
51
|
-
* Confirmation modal options
|
|
52
|
-
*/
|
|
53
|
-
export interface ConfirmModalOptions {
|
|
54
|
-
/** Modal ID */
|
|
55
|
-
id: string;
|
|
56
|
-
/** Dialog title */
|
|
57
|
-
title?: string;
|
|
58
|
-
/** Confirmation message */
|
|
59
|
-
message: string;
|
|
60
|
-
/** Confirm button text */
|
|
61
|
-
confirmText?: string;
|
|
62
|
-
/** Cancel button text */
|
|
63
|
-
cancelText?: string;
|
|
64
|
-
/** Confirm button variant */
|
|
65
|
-
variant?: 'primary' | 'danger' | 'warning';
|
|
66
|
-
/** Icon */
|
|
67
|
-
icon?: string;
|
|
68
|
-
/** HTMX for confirm action */
|
|
69
|
-
onConfirm?: {
|
|
70
|
-
post?: string;
|
|
71
|
-
delete?: string;
|
|
72
|
-
put?: string;
|
|
73
|
-
target?: string;
|
|
74
|
-
swap?: string;
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Build a confirmation modal
|
|
79
|
-
*/
|
|
80
|
-
export declare function confirmModal(options: ConfirmModalOptions): string;
|
|
81
|
-
/**
|
|
82
|
-
* Drawer position options
|
|
83
|
-
*/
|
|
84
|
-
export type DrawerPosition = 'left' | 'right' | 'top' | 'bottom';
|
|
85
|
-
/**
|
|
86
|
-
* Drawer options
|
|
87
|
-
*/
|
|
88
|
-
export interface DrawerOptions {
|
|
89
|
-
/** Drawer ID */
|
|
90
|
-
id: string;
|
|
91
|
-
/** Drawer title */
|
|
92
|
-
title?: string;
|
|
93
|
-
/** Drawer position */
|
|
94
|
-
position?: DrawerPosition;
|
|
95
|
-
/** Drawer size (width for left/right, height for top/bottom) */
|
|
96
|
-
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
97
|
-
/** Show close button */
|
|
98
|
-
showClose?: boolean;
|
|
99
|
-
/** Close on backdrop click */
|
|
100
|
-
closeOnBackdrop?: boolean;
|
|
101
|
-
/** Footer content */
|
|
102
|
-
footer?: string;
|
|
103
|
-
/** Additional CSS classes */
|
|
104
|
-
className?: string;
|
|
105
|
-
/** Initially visible */
|
|
106
|
-
open?: boolean;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Build a drawer component
|
|
110
|
-
*/
|
|
111
|
-
export declare function drawer(content: string, options: DrawerOptions): string;
|
package/src/components/modal.js
DELETED
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Modal Component
|
|
4
|
-
*
|
|
5
|
-
* Dialog and modal components.
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.modal = modal;
|
|
9
|
-
exports.modalTrigger = modalTrigger;
|
|
10
|
-
exports.confirmModal = confirmModal;
|
|
11
|
-
exports.drawer = drawer;
|
|
12
|
-
const base_1 = require("../layouts/base");
|
|
13
|
-
// ============================================
|
|
14
|
-
// Modal Builder
|
|
15
|
-
// ============================================
|
|
16
|
-
/**
|
|
17
|
-
* Get size CSS classes
|
|
18
|
-
*/
|
|
19
|
-
function getSizeClasses(size) {
|
|
20
|
-
const sizes = {
|
|
21
|
-
sm: 'max-w-sm',
|
|
22
|
-
md: 'max-w-md',
|
|
23
|
-
lg: 'max-w-lg',
|
|
24
|
-
xl: 'max-w-2xl',
|
|
25
|
-
full: 'max-w-full mx-4',
|
|
26
|
-
};
|
|
27
|
-
return sizes[size];
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Build a modal component
|
|
31
|
-
*/
|
|
32
|
-
function modal(content, options) {
|
|
33
|
-
const { id, title, size = 'md', showClose = true, closeOnBackdrop = true, closeOnEscape = true, footer, className = '', open = false, onClose, } = options;
|
|
34
|
-
const sizeClasses = getSizeClasses(size);
|
|
35
|
-
const visibilityClasses = open ? '' : 'hidden';
|
|
36
|
-
const headerHtml = title || showClose
|
|
37
|
-
? `<div class="flex items-center justify-between p-4 border-b border-divider">
|
|
38
|
-
${title ? `<h3 class="text-lg font-semibold text-text-primary">${(0, base_1.escapeHtml)(title)}</h3>` : '<div></div>'}
|
|
39
|
-
${showClose
|
|
40
|
-
? `
|
|
41
|
-
<button
|
|
42
|
-
type="button"
|
|
43
|
-
class="p-1 rounded-lg text-text-secondary hover:text-text-primary hover:bg-gray-100 transition-colors"
|
|
44
|
-
onclick="document.getElementById('${(0, base_1.escapeHtml)(id)}').classList.add('hidden')"
|
|
45
|
-
${onClose?.delete ? `hx-delete="${(0, base_1.escapeHtml)(onClose.delete)}"` : ''}
|
|
46
|
-
${onClose?.target ? `hx-target="${(0, base_1.escapeHtml)(onClose.target)}"` : ''}
|
|
47
|
-
${onClose?.swap ? `hx-swap="${(0, base_1.escapeHtml)(onClose.swap)}"` : ''}
|
|
48
|
-
aria-label="Close"
|
|
49
|
-
>
|
|
50
|
-
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
51
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/>
|
|
52
|
-
</svg>
|
|
53
|
-
</button>
|
|
54
|
-
`
|
|
55
|
-
: ''}
|
|
56
|
-
</div>`
|
|
57
|
-
: '';
|
|
58
|
-
const footerHtml = footer
|
|
59
|
-
? `<div class="flex items-center justify-end gap-3 p-4 border-t border-divider">
|
|
60
|
-
${footer}
|
|
61
|
-
</div>`
|
|
62
|
-
: '';
|
|
63
|
-
const backdropClickHandler = closeOnBackdrop
|
|
64
|
-
? `onclick="if (event.target === this) this.classList.add('hidden')"`
|
|
65
|
-
: '';
|
|
66
|
-
const escapeHandler = closeOnEscape
|
|
67
|
-
? `<script>
|
|
68
|
-
document.addEventListener('keydown', function(e) {
|
|
69
|
-
if (e.key === 'Escape') {
|
|
70
|
-
document.getElementById('${(0, base_1.escapeHtml)(id)}')?.classList.add('hidden');
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
</script>`
|
|
74
|
-
: '';
|
|
75
|
-
return `
|
|
76
|
-
<div
|
|
77
|
-
id="${(0, base_1.escapeHtml)(id)}"
|
|
78
|
-
class="fixed inset-0 z-50 overflow-y-auto ${visibilityClasses}"
|
|
79
|
-
${backdropClickHandler}
|
|
80
|
-
role="dialog"
|
|
81
|
-
aria-modal="true"
|
|
82
|
-
aria-labelledby="${(0, base_1.escapeHtml)(id)}-title"
|
|
83
|
-
>
|
|
84
|
-
<!-- Backdrop -->
|
|
85
|
-
<div class="fixed inset-0 bg-black/50 transition-opacity"></div>
|
|
86
|
-
|
|
87
|
-
<!-- Modal container -->
|
|
88
|
-
<div class="flex min-h-full items-center justify-center p-4">
|
|
89
|
-
<div class="relative w-full ${sizeClasses} bg-white rounded-xl shadow-xl ${className}">
|
|
90
|
-
${headerHtml}
|
|
91
|
-
<div class="p-4">
|
|
92
|
-
${content}
|
|
93
|
-
</div>
|
|
94
|
-
${footerHtml}
|
|
95
|
-
</div>
|
|
96
|
-
</div>
|
|
97
|
-
</div>
|
|
98
|
-
${escapeHandler}
|
|
99
|
-
`;
|
|
100
|
-
}
|
|
101
|
-
// ============================================
|
|
102
|
-
// Modal Trigger
|
|
103
|
-
// ============================================
|
|
104
|
-
/**
|
|
105
|
-
* Build a modal trigger button/element
|
|
106
|
-
*/
|
|
107
|
-
function modalTrigger(triggerContent, modalId, options = {}) {
|
|
108
|
-
const { className = '', tag = 'button' } = options;
|
|
109
|
-
const attrs = `
|
|
110
|
-
class="${className}"
|
|
111
|
-
onclick="document.getElementById('${(0, base_1.escapeHtml)(modalId)}').classList.remove('hidden')"
|
|
112
|
-
`;
|
|
113
|
-
if (tag === 'button') {
|
|
114
|
-
return `<button type="button" ${attrs}>${triggerContent}</button>`;
|
|
115
|
-
}
|
|
116
|
-
return `<${tag} ${attrs}>${triggerContent}</${tag}>`;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Build a confirmation modal
|
|
120
|
-
*/
|
|
121
|
-
function confirmModal(options) {
|
|
122
|
-
const { id, title = 'Confirm Action', message, confirmText = 'Confirm', cancelText = 'Cancel', variant = 'primary', icon, onConfirm, } = options;
|
|
123
|
-
const variantClasses = {
|
|
124
|
-
primary: 'bg-primary hover:bg-primary/90 text-white',
|
|
125
|
-
danger: 'bg-danger hover:bg-danger/90 text-white',
|
|
126
|
-
warning: 'bg-warning hover:bg-warning/90 text-white',
|
|
127
|
-
};
|
|
128
|
-
const iconColors = {
|
|
129
|
-
primary: 'text-primary bg-primary/10',
|
|
130
|
-
danger: 'text-danger bg-danger/10',
|
|
131
|
-
warning: 'text-warning bg-warning/10',
|
|
132
|
-
};
|
|
133
|
-
const defaultIcons = {
|
|
134
|
-
primary: `<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
135
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
|
|
136
|
-
</svg>`,
|
|
137
|
-
danger: `<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
138
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/>
|
|
139
|
-
</svg>`,
|
|
140
|
-
warning: `<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
141
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/>
|
|
142
|
-
</svg>`,
|
|
143
|
-
};
|
|
144
|
-
const displayIcon = icon || defaultIcons[variant];
|
|
145
|
-
const htmxAttrs = [];
|
|
146
|
-
if (onConfirm) {
|
|
147
|
-
if (onConfirm.post)
|
|
148
|
-
htmxAttrs.push(`hx-post="${(0, base_1.escapeHtml)(onConfirm.post)}"`);
|
|
149
|
-
if (onConfirm.delete)
|
|
150
|
-
htmxAttrs.push(`hx-delete="${(0, base_1.escapeHtml)(onConfirm.delete)}"`);
|
|
151
|
-
if (onConfirm.put)
|
|
152
|
-
htmxAttrs.push(`hx-put="${(0, base_1.escapeHtml)(onConfirm.put)}"`);
|
|
153
|
-
if (onConfirm.target)
|
|
154
|
-
htmxAttrs.push(`hx-target="${(0, base_1.escapeHtml)(onConfirm.target)}"`);
|
|
155
|
-
if (onConfirm.swap)
|
|
156
|
-
htmxAttrs.push(`hx-swap="${(0, base_1.escapeHtml)(onConfirm.swap)}"`);
|
|
157
|
-
}
|
|
158
|
-
const content = `
|
|
159
|
-
<div class="text-center">
|
|
160
|
-
<div class="mx-auto w-12 h-12 rounded-full ${iconColors[variant]} flex items-center justify-center mb-4">
|
|
161
|
-
${displayIcon}
|
|
162
|
-
</div>
|
|
163
|
-
<h3 class="text-lg font-semibold text-text-primary mb-2">${(0, base_1.escapeHtml)(title)}</h3>
|
|
164
|
-
<p class="text-text-secondary">${(0, base_1.escapeHtml)(message)}</p>
|
|
165
|
-
</div>
|
|
166
|
-
`;
|
|
167
|
-
const footer = `
|
|
168
|
-
<button
|
|
169
|
-
type="button"
|
|
170
|
-
class="px-4 py-2 rounded-lg border border-border text-text-primary hover:bg-gray-50 transition-colors"
|
|
171
|
-
onclick="document.getElementById('${(0, base_1.escapeHtml)(id)}').classList.add('hidden')"
|
|
172
|
-
>
|
|
173
|
-
${(0, base_1.escapeHtml)(cancelText)}
|
|
174
|
-
</button>
|
|
175
|
-
<button
|
|
176
|
-
type="button"
|
|
177
|
-
class="px-4 py-2 rounded-lg ${variantClasses[variant]} transition-colors"
|
|
178
|
-
${htmxAttrs.join(' ')}
|
|
179
|
-
onclick="document.getElementById('${(0, base_1.escapeHtml)(id)}').classList.add('hidden')"
|
|
180
|
-
>
|
|
181
|
-
${(0, base_1.escapeHtml)(confirmText)}
|
|
182
|
-
</button>
|
|
183
|
-
`;
|
|
184
|
-
return modal(content, {
|
|
185
|
-
id,
|
|
186
|
-
size: 'sm',
|
|
187
|
-
showClose: false,
|
|
188
|
-
footer,
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Build a drawer component
|
|
193
|
-
*/
|
|
194
|
-
function drawer(content, options) {
|
|
195
|
-
const { id, title, position = 'right', size = 'md', showClose = true, closeOnBackdrop = true, footer, className = '', open = false, } = options;
|
|
196
|
-
const sizeClasses = {
|
|
197
|
-
left: { sm: 'w-64', md: 'w-80', lg: 'w-96', xl: 'w-[32rem]' },
|
|
198
|
-
right: { sm: 'w-64', md: 'w-80', lg: 'w-96', xl: 'w-[32rem]' },
|
|
199
|
-
top: { sm: 'h-32', md: 'h-48', lg: 'h-64', xl: 'h-96' },
|
|
200
|
-
bottom: { sm: 'h-32', md: 'h-48', lg: 'h-64', xl: 'h-96' },
|
|
201
|
-
};
|
|
202
|
-
const positionClasses = {
|
|
203
|
-
left: 'inset-y-0 left-0',
|
|
204
|
-
right: 'inset-y-0 right-0',
|
|
205
|
-
top: 'inset-x-0 top-0',
|
|
206
|
-
bottom: 'inset-x-0 bottom-0',
|
|
207
|
-
};
|
|
208
|
-
const fullSizeClasses = {
|
|
209
|
-
left: 'h-full',
|
|
210
|
-
right: 'h-full',
|
|
211
|
-
top: 'w-full',
|
|
212
|
-
bottom: 'w-full',
|
|
213
|
-
};
|
|
214
|
-
const visibilityClasses = open ? '' : 'hidden';
|
|
215
|
-
const headerHtml = title || showClose
|
|
216
|
-
? `<div class="flex items-center justify-between p-4 border-b border-divider">
|
|
217
|
-
${title ? `<h3 class="text-lg font-semibold text-text-primary">${(0, base_1.escapeHtml)(title)}</h3>` : '<div></div>'}
|
|
218
|
-
${showClose
|
|
219
|
-
? `
|
|
220
|
-
<button
|
|
221
|
-
type="button"
|
|
222
|
-
class="p-1 rounded-lg text-text-secondary hover:text-text-primary hover:bg-gray-100 transition-colors"
|
|
223
|
-
onclick="document.getElementById('${(0, base_1.escapeHtml)(id)}').classList.add('hidden')"
|
|
224
|
-
aria-label="Close"
|
|
225
|
-
>
|
|
226
|
-
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
227
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/>
|
|
228
|
-
</svg>
|
|
229
|
-
</button>
|
|
230
|
-
`
|
|
231
|
-
: ''}
|
|
232
|
-
</div>`
|
|
233
|
-
: '';
|
|
234
|
-
const footerHtml = footer ? `<div class="p-4 border-t border-divider">${footer}</div>` : '';
|
|
235
|
-
const backdropClickHandler = closeOnBackdrop
|
|
236
|
-
? `onclick="if (event.target === this) this.classList.add('hidden')"`
|
|
237
|
-
: '';
|
|
238
|
-
return `
|
|
239
|
-
<div
|
|
240
|
-
id="${(0, base_1.escapeHtml)(id)}"
|
|
241
|
-
class="fixed inset-0 z-50 ${visibilityClasses}"
|
|
242
|
-
${backdropClickHandler}
|
|
243
|
-
role="dialog"
|
|
244
|
-
aria-modal="true"
|
|
245
|
-
>
|
|
246
|
-
<!-- Backdrop -->
|
|
247
|
-
<div class="fixed inset-0 bg-black/50 transition-opacity"></div>
|
|
248
|
-
|
|
249
|
-
<!-- Drawer -->
|
|
250
|
-
<div class="fixed ${positionClasses[position]} ${sizeClasses[position][size]} ${fullSizeClasses[position]} bg-white shadow-xl flex flex-col ${className}">
|
|
251
|
-
${headerHtml}
|
|
252
|
-
<div class="flex-1 overflow-y-auto p-4">
|
|
253
|
-
${content}
|
|
254
|
-
</div>
|
|
255
|
-
${footerHtml}
|
|
256
|
-
</div>
|
|
257
|
-
</div>
|
|
258
|
-
`;
|
|
259
|
-
}
|
|
260
|
-
//# sourceMappingURL=modal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../src/components/modal.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Modal Component\n *\n * Dialog and modal components.\n */\n\nimport { escapeHtml } from '../layouts/base';\n\n// ============================================\n// Modal Types\n// ============================================\n\n/**\n * Modal size options\n */\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n/**\n * Modal component options\n */\nexport interface ModalOptions {\n /** Modal ID */\n id: string;\n /** Modal title */\n title?: string;\n /** Modal size */\n size?: ModalSize;\n /** Show close button */\n showClose?: boolean;\n /** Close on backdrop click */\n closeOnBackdrop?: boolean;\n /** Close on escape key */\n closeOnEscape?: boolean;\n /** Footer content */\n footer?: string;\n /** Additional CSS classes for modal */\n className?: string;\n /** Initially visible */\n open?: boolean;\n /** HTMX for closing */\n onClose?: {\n delete?: string;\n target?: string;\n swap?: string;\n };\n}\n\n// ============================================\n// Modal Builder\n// ============================================\n\n/**\n * Get size CSS classes\n */\nfunction getSizeClasses(size: ModalSize): string {\n const sizes: Record<ModalSize, string> = {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-2xl',\n full: 'max-w-full mx-4',\n };\n return sizes[size];\n}\n\n/**\n * Build a modal component\n */\nexport function modal(content: string, options: ModalOptions): string {\n const {\n id,\n title,\n size = 'md',\n showClose = true,\n closeOnBackdrop = true,\n closeOnEscape = true,\n footer,\n className = '',\n open = false,\n onClose,\n } = options;\n\n const sizeClasses = getSizeClasses(size);\n const visibilityClasses = open ? '' : 'hidden';\n\n const headerHtml =\n title || showClose\n ? `<div class=\"flex items-center justify-between p-4 border-b border-divider\">\n ${title ? `<h3 class=\"text-lg font-semibold text-text-primary\">${escapeHtml(title)}</h3>` : '<div></div>'}\n ${\n showClose\n ? `\n <button\n type=\"button\"\n class=\"p-1 rounded-lg text-text-secondary hover:text-text-primary hover:bg-gray-100 transition-colors\"\n onclick=\"document.getElementById('${escapeHtml(id)}').classList.add('hidden')\"\n ${onClose?.delete ? `hx-delete=\"${escapeHtml(onClose.delete)}\"` : ''}\n ${onClose?.target ? `hx-target=\"${escapeHtml(onClose.target)}\"` : ''}\n ${onClose?.swap ? `hx-swap=\"${escapeHtml(onClose.swap)}\"` : ''}\n aria-label=\"Close\"\n >\n <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"/>\n </svg>\n </button>\n `\n : ''\n }\n </div>`\n : '';\n\n const footerHtml = footer\n ? `<div class=\"flex items-center justify-end gap-3 p-4 border-t border-divider\">\n ${footer}\n </div>`\n : '';\n\n const backdropClickHandler = closeOnBackdrop\n ? `onclick=\"if (event.target === this) this.classList.add('hidden')\"`\n : '';\n\n const escapeHandler = closeOnEscape\n ? `<script>\n document.addEventListener('keydown', function(e) {\n if (e.key === 'Escape') {\n document.getElementById('${escapeHtml(id)}')?.classList.add('hidden');\n }\n });\n </script>`\n : '';\n\n return `\n <div\n id=\"${escapeHtml(id)}\"\n class=\"fixed inset-0 z-50 overflow-y-auto ${visibilityClasses}\"\n ${backdropClickHandler}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"${escapeHtml(id)}-title\"\n >\n <!-- Backdrop -->\n <div class=\"fixed inset-0 bg-black/50 transition-opacity\"></div>\n\n <!-- Modal container -->\n <div class=\"flex min-h-full items-center justify-center p-4\">\n <div class=\"relative w-full ${sizeClasses} bg-white rounded-xl shadow-xl ${className}\">\n ${headerHtml}\n <div class=\"p-4\">\n ${content}\n </div>\n ${footerHtml}\n </div>\n </div>\n </div>\n ${escapeHandler}\n `;\n}\n\n// ============================================\n// Modal Trigger\n// ============================================\n\n/**\n * Build a modal trigger button/element\n */\nexport function modalTrigger(\n triggerContent: string,\n modalId: string,\n options: { className?: string; tag?: 'button' | 'a' | 'span' } = {},\n): string {\n const { className = '', tag = 'button' } = options;\n\n const attrs = `\n class=\"${className}\"\n onclick=\"document.getElementById('${escapeHtml(modalId)}').classList.remove('hidden')\"\n `;\n\n if (tag === 'button') {\n return `<button type=\"button\" ${attrs}>${triggerContent}</button>`;\n }\n\n return `<${tag} ${attrs}>${triggerContent}</${tag}>`;\n}\n\n// ============================================\n// Confirmation Modal\n// ============================================\n\n/**\n * Confirmation modal options\n */\nexport interface ConfirmModalOptions {\n /** Modal ID */\n id: string;\n /** Dialog title */\n title?: string;\n /** Confirmation message */\n message: string;\n /** Confirm button text */\n confirmText?: string;\n /** Cancel button text */\n cancelText?: string;\n /** Confirm button variant */\n variant?: 'primary' | 'danger' | 'warning';\n /** Icon */\n icon?: string;\n /** HTMX for confirm action */\n onConfirm?: {\n post?: string;\n delete?: string;\n put?: string;\n target?: string;\n swap?: string;\n };\n}\n\n/**\n * Build a confirmation modal\n */\nexport function confirmModal(options: ConfirmModalOptions): string {\n const {\n id,\n title = 'Confirm Action',\n message,\n confirmText = 'Confirm',\n cancelText = 'Cancel',\n variant = 'primary',\n icon,\n onConfirm,\n } = options;\n\n const variantClasses: Record<string, string> = {\n primary: 'bg-primary hover:bg-primary/90 text-white',\n danger: 'bg-danger hover:bg-danger/90 text-white',\n warning: 'bg-warning hover:bg-warning/90 text-white',\n };\n\n const iconColors: Record<string, string> = {\n primary: 'text-primary bg-primary/10',\n danger: 'text-danger bg-danger/10',\n warning: 'text-warning bg-warning/10',\n };\n\n const defaultIcons: Record<string, string> = {\n primary: `<svg class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"/>\n </svg>`,\n danger: `<svg class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"/>\n </svg>`,\n warning: `<svg class=\"w-6 h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"/>\n </svg>`,\n };\n\n const displayIcon = icon || defaultIcons[variant];\n\n const htmxAttrs: string[] = [];\n if (onConfirm) {\n if (onConfirm.post) htmxAttrs.push(`hx-post=\"${escapeHtml(onConfirm.post)}\"`);\n if (onConfirm.delete) htmxAttrs.push(`hx-delete=\"${escapeHtml(onConfirm.delete)}\"`);\n if (onConfirm.put) htmxAttrs.push(`hx-put=\"${escapeHtml(onConfirm.put)}\"`);\n if (onConfirm.target) htmxAttrs.push(`hx-target=\"${escapeHtml(onConfirm.target)}\"`);\n if (onConfirm.swap) htmxAttrs.push(`hx-swap=\"${escapeHtml(onConfirm.swap)}\"`);\n }\n\n const content = `\n <div class=\"text-center\">\n <div class=\"mx-auto w-12 h-12 rounded-full ${iconColors[variant]} flex items-center justify-center mb-4\">\n ${displayIcon}\n </div>\n <h3 class=\"text-lg font-semibold text-text-primary mb-2\">${escapeHtml(title)}</h3>\n <p class=\"text-text-secondary\">${escapeHtml(message)}</p>\n </div>\n `;\n\n const footer = `\n <button\n type=\"button\"\n class=\"px-4 py-2 rounded-lg border border-border text-text-primary hover:bg-gray-50 transition-colors\"\n onclick=\"document.getElementById('${escapeHtml(id)}').classList.add('hidden')\"\n >\n ${escapeHtml(cancelText)}\n </button>\n <button\n type=\"button\"\n class=\"px-4 py-2 rounded-lg ${variantClasses[variant]} transition-colors\"\n ${htmxAttrs.join(' ')}\n onclick=\"document.getElementById('${escapeHtml(id)}').classList.add('hidden')\"\n >\n ${escapeHtml(confirmText)}\n </button>\n `;\n\n return modal(content, {\n id,\n size: 'sm',\n showClose: false,\n footer,\n });\n}\n\n// ============================================\n// Drawer Component\n// ============================================\n\n/**\n * Drawer position options\n */\nexport type DrawerPosition = 'left' | 'right' | 'top' | 'bottom';\n\n/**\n * Drawer options\n */\nexport interface DrawerOptions {\n /** Drawer ID */\n id: string;\n /** Drawer title */\n title?: string;\n /** Drawer position */\n position?: DrawerPosition;\n /** Drawer size (width for left/right, height for top/bottom) */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n /** Show close button */\n showClose?: boolean;\n /** Close on backdrop click */\n closeOnBackdrop?: boolean;\n /** Footer content */\n footer?: string;\n /** Additional CSS classes */\n className?: string;\n /** Initially visible */\n open?: boolean;\n}\n\n/**\n * Build a drawer component\n */\nexport function drawer(content: string, options: DrawerOptions): string {\n const {\n id,\n title,\n position = 'right',\n size = 'md',\n showClose = true,\n closeOnBackdrop = true,\n footer,\n className = '',\n open = false,\n } = options;\n\n const sizeClasses: Record<string, Record<string, string>> = {\n left: { sm: 'w-64', md: 'w-80', lg: 'w-96', xl: 'w-[32rem]' },\n right: { sm: 'w-64', md: 'w-80', lg: 'w-96', xl: 'w-[32rem]' },\n top: { sm: 'h-32', md: 'h-48', lg: 'h-64', xl: 'h-96' },\n bottom: { sm: 'h-32', md: 'h-48', lg: 'h-64', xl: 'h-96' },\n };\n\n const positionClasses: Record<DrawerPosition, string> = {\n left: 'inset-y-0 left-0',\n right: 'inset-y-0 right-0',\n top: 'inset-x-0 top-0',\n bottom: 'inset-x-0 bottom-0',\n };\n\n const fullSizeClasses: Record<DrawerPosition, string> = {\n left: 'h-full',\n right: 'h-full',\n top: 'w-full',\n bottom: 'w-full',\n };\n\n const visibilityClasses = open ? '' : 'hidden';\n\n const headerHtml =\n title || showClose\n ? `<div class=\"flex items-center justify-between p-4 border-b border-divider\">\n ${title ? `<h3 class=\"text-lg font-semibold text-text-primary\">${escapeHtml(title)}</h3>` : '<div></div>'}\n ${\n showClose\n ? `\n <button\n type=\"button\"\n class=\"p-1 rounded-lg text-text-secondary hover:text-text-primary hover:bg-gray-100 transition-colors\"\n onclick=\"document.getElementById('${escapeHtml(id)}').classList.add('hidden')\"\n aria-label=\"Close\"\n >\n <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"/>\n </svg>\n </button>\n `\n : ''\n }\n </div>`\n : '';\n\n const footerHtml = footer ? `<div class=\"p-4 border-t border-divider\">${footer}</div>` : '';\n\n const backdropClickHandler = closeOnBackdrop\n ? `onclick=\"if (event.target === this) this.classList.add('hidden')\"`\n : '';\n\n return `\n <div\n id=\"${escapeHtml(id)}\"\n class=\"fixed inset-0 z-50 ${visibilityClasses}\"\n ${backdropClickHandler}\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <!-- Backdrop -->\n <div class=\"fixed inset-0 bg-black/50 transition-opacity\"></div>\n\n <!-- Drawer -->\n <div class=\"fixed ${positionClasses[position]} ${sizeClasses[position][size]} ${\n fullSizeClasses[position]\n } bg-white shadow-xl flex flex-col ${className}\">\n ${headerHtml}\n <div class=\"flex-1 overflow-y-auto p-4\">\n ${content}\n </div>\n ${footerHtml}\n </div>\n </div>\n `;\n}\n"]}
|