@frontmcp/ui 0.6.0 → 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/runtime/index.d.ts +2 -1
- package/bridge/runtime/index.d.ts.map +1 -1
- package/bundler/file-cache/component-builder.d.ts +1 -1
- package/bundler/file-cache/component-builder.d.ts.map +1 -1
- package/bundler/file-cache/hash-calculator.d.ts +1 -1
- package/bundler/file-cache/hash-calculator.d.ts.map +1 -1
- package/bundler/file-cache/storage/filesystem.d.ts +1 -1
- package/bundler/file-cache/storage/filesystem.d.ts.map +1 -1
- package/bundler/file-cache/storage/interface.d.ts +1 -1
- package/bundler/file-cache/storage/interface.d.ts.map +1 -1
- package/bundler/file-cache/storage/redis.d.ts +1 -1
- package/bundler/file-cache/storage/redis.d.ts.map +1 -1
- package/bundler/index.js +10 -1057
- package/components/alert.schema.d.ts +6 -6
- package/components/avatar.schema.d.ts +9 -9
- package/components/badge.schema.d.ts +9 -9
- package/components/button.schema.d.ts +9 -9
- package/components/card.schema.d.ts +7 -7
- package/components/form.schema.d.ts +24 -24
- package/components/index.js +128 -198
- package/components/modal.schema.d.ts +8 -8
- package/components/table.schema.d.ts +6 -6
- package/esm/bridge/runtime/index.d.ts +2 -1
- package/esm/bridge/runtime/index.d.ts.map +1 -1
- package/esm/bundler/file-cache/component-builder.d.ts +1 -1
- package/esm/bundler/file-cache/component-builder.d.ts.map +1 -1
- package/esm/bundler/file-cache/hash-calculator.d.ts +1 -1
- package/esm/bundler/file-cache/hash-calculator.d.ts.map +1 -1
- package/esm/bundler/file-cache/storage/filesystem.d.ts +1 -1
- package/esm/bundler/file-cache/storage/filesystem.d.ts.map +1 -1
- package/esm/bundler/file-cache/storage/interface.d.ts +1 -1
- package/esm/bundler/file-cache/storage/interface.d.ts.map +1 -1
- package/esm/bundler/file-cache/storage/redis.d.ts +1 -1
- package/esm/bundler/file-cache/storage/redis.d.ts.map +1 -1
- package/esm/bundler/index.js +3 -1050
- package/esm/components/alert.schema.d.ts +6 -6
- package/esm/components/avatar.schema.d.ts +9 -9
- package/esm/components/badge.schema.d.ts +9 -9
- package/esm/components/button.schema.d.ts +9 -9
- package/esm/components/card.schema.d.ts +7 -7
- package/esm/components/form.schema.d.ts +24 -24
- package/esm/components/index.js +136 -196
- package/esm/components/modal.schema.d.ts +8 -8
- package/esm/components/table.schema.d.ts +6 -6
- package/esm/index.d.ts +23 -39
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4256 -16441
- package/esm/layouts/base.d.ts +2 -2
- package/esm/layouts/base.d.ts.map +1 -1
- package/esm/layouts/index.js +33 -516
- package/esm/package.json +8 -26
- package/esm/pages/index.js +100 -627
- package/esm/react/Alert.d.ts +1 -2
- package/esm/react/Alert.d.ts.map +1 -1
- package/esm/react/Badge.d.ts +1 -2
- package/esm/react/Badge.d.ts.map +1 -1
- package/esm/react/Button.d.ts +1 -2
- package/esm/react/Button.d.ts.map +1 -1
- package/esm/react/Card.d.ts +1 -2
- package/esm/react/Card.d.ts.map +1 -1
- package/esm/react/hooks/context.d.ts +1 -1
- package/esm/react/hooks/context.d.ts.map +1 -1
- package/esm/react/index.d.ts +5 -6
- package/esm/react/index.d.ts.map +1 -1
- package/esm/react/index.js +2074 -322
- package/esm/react/types.d.ts +1 -2
- package/esm/react/types.d.ts.map +1 -1
- package/esm/renderers/index.d.ts +10 -25
- package/esm/renderers/index.d.ts.map +1 -1
- package/esm/renderers/index.js +171 -1617
- package/esm/{runtime/adapters → renderers}/react.adapter.d.ts +2 -2
- package/esm/renderers/react.adapter.d.ts.map +1 -0
- package/esm/renderers/react.renderer.d.ts +3 -3
- package/esm/renderers/react.renderer.d.ts.map +1 -1
- package/esm/universal/index.js +1755 -0
- package/esm/web-components/index.js +232 -287
- package/esm/widgets/index.js +89 -147
- package/index.d.ts +23 -39
- package/index.d.ts.map +1 -1
- package/index.js +6123 -18539
- package/layouts/base.d.ts +2 -2
- package/layouts/base.d.ts.map +1 -1
- package/layouts/index.js +43 -536
- package/package.json +8 -26
- package/pages/index.js +111 -648
- package/react/Alert.d.ts +1 -2
- package/react/Alert.d.ts.map +1 -1
- package/react/Badge.d.ts +1 -2
- package/react/Badge.d.ts.map +1 -1
- package/react/Button.d.ts +1 -2
- package/react/Button.d.ts.map +1 -1
- package/react/Card.d.ts +1 -2
- package/react/Card.d.ts.map +1 -1
- package/react/hooks/context.d.ts +1 -1
- package/react/hooks/context.d.ts.map +1 -1
- package/react/index.d.ts +5 -6
- package/react/index.d.ts.map +1 -1
- package/react/index.js +2065 -335
- package/react/types.d.ts +1 -2
- package/react/types.d.ts.map +1 -1
- package/renderers/index.d.ts +10 -25
- package/renderers/index.d.ts.map +1 -1
- package/renderers/index.js +175 -1641
- package/{runtime/adapters → renderers}/react.adapter.d.ts +2 -2
- package/renderers/react.adapter.d.ts.map +1 -0
- package/renderers/react.renderer.d.ts +3 -3
- package/renderers/react.renderer.d.ts.map +1 -1
- package/universal/index.js +1841 -0
- package/web-components/index.js +224 -289
- package/widgets/index.js +80 -148
- package/adapters/index.d.ts +0 -13
- package/adapters/index.d.ts.map +0 -1
- package/adapters/index.js +0 -462
- package/adapters/platform-meta.d.ts +0 -166
- package/adapters/platform-meta.d.ts.map +0 -1
- package/adapters/response-builder.d.ts +0 -108
- package/adapters/response-builder.d.ts.map +0 -1
- package/adapters/serving-mode.d.ts +0 -107
- package/adapters/serving-mode.d.ts.map +0 -1
- package/base-template/bridge.d.ts +0 -90
- package/base-template/bridge.d.ts.map +0 -1
- package/base-template/default-base-template.d.ts +0 -92
- package/base-template/default-base-template.d.ts.map +0 -1
- package/base-template/index.d.ts +0 -15
- package/base-template/index.d.ts.map +0 -1
- package/base-template/index.js +0 -1398
- package/base-template/polyfills.d.ts +0 -31
- package/base-template/polyfills.d.ts.map +0 -1
- package/base-template/theme-styles.d.ts +0 -74
- package/base-template/theme-styles.d.ts.map +0 -1
- package/build/cdn-resources.d.ts +0 -243
- package/build/cdn-resources.d.ts.map +0 -1
- package/build/index.d.ts +0 -295
- package/build/index.d.ts.map +0 -1
- package/build/index.js +0 -7096
- package/build/widget-manifest.d.ts +0 -362
- package/build/widget-manifest.d.ts.map +0 -1
- package/dependency/cdn-registry.d.ts +0 -98
- package/dependency/cdn-registry.d.ts.map +0 -1
- package/dependency/import-map.d.ts +0 -186
- package/dependency/import-map.d.ts.map +0 -1
- package/dependency/import-parser.d.ts +0 -82
- package/dependency/import-parser.d.ts.map +0 -1
- package/dependency/index.d.ts +0 -17
- package/dependency/index.d.ts.map +0 -1
- package/dependency/resolver.d.ts +0 -164
- package/dependency/resolver.d.ts.map +0 -1
- package/dependency/schemas.d.ts +0 -486
- package/dependency/schemas.d.ts.map +0 -1
- package/dependency/template-loader.d.ts +0 -204
- package/dependency/template-loader.d.ts.map +0 -1
- package/dependency/template-processor.d.ts +0 -118
- package/dependency/template-processor.d.ts.map +0 -1
- package/dependency/types.d.ts +0 -739
- package/dependency/types.d.ts.map +0 -1
- package/esm/adapters/index.d.ts +0 -13
- package/esm/adapters/index.d.ts.map +0 -1
- package/esm/adapters/index.js +0 -427
- package/esm/adapters/platform-meta.d.ts +0 -166
- package/esm/adapters/platform-meta.d.ts.map +0 -1
- package/esm/adapters/response-builder.d.ts +0 -108
- package/esm/adapters/response-builder.d.ts.map +0 -1
- package/esm/adapters/serving-mode.d.ts +0 -107
- package/esm/adapters/serving-mode.d.ts.map +0 -1
- package/esm/base-template/bridge.d.ts +0 -90
- package/esm/base-template/bridge.d.ts.map +0 -1
- package/esm/base-template/default-base-template.d.ts +0 -92
- package/esm/base-template/default-base-template.d.ts.map +0 -1
- package/esm/base-template/index.d.ts +0 -15
- package/esm/base-template/index.d.ts.map +0 -1
- package/esm/base-template/index.js +0 -1364
- package/esm/base-template/polyfills.d.ts +0 -31
- package/esm/base-template/polyfills.d.ts.map +0 -1
- package/esm/base-template/theme-styles.d.ts +0 -74
- package/esm/base-template/theme-styles.d.ts.map +0 -1
- package/esm/build/cdn-resources.d.ts +0 -243
- package/esm/build/cdn-resources.d.ts.map +0 -1
- package/esm/build/index.d.ts +0 -295
- package/esm/build/index.d.ts.map +0 -1
- package/esm/build/index.js +0 -7021
- package/esm/build/widget-manifest.d.ts +0 -362
- package/esm/build/widget-manifest.d.ts.map +0 -1
- package/esm/dependency/cdn-registry.d.ts +0 -98
- package/esm/dependency/cdn-registry.d.ts.map +0 -1
- package/esm/dependency/import-map.d.ts +0 -186
- package/esm/dependency/import-map.d.ts.map +0 -1
- package/esm/dependency/import-parser.d.ts +0 -82
- package/esm/dependency/import-parser.d.ts.map +0 -1
- package/esm/dependency/index.d.ts +0 -17
- package/esm/dependency/index.d.ts.map +0 -1
- package/esm/dependency/resolver.d.ts +0 -164
- package/esm/dependency/resolver.d.ts.map +0 -1
- package/esm/dependency/schemas.d.ts +0 -486
- package/esm/dependency/schemas.d.ts.map +0 -1
- package/esm/dependency/template-loader.d.ts +0 -204
- package/esm/dependency/template-loader.d.ts.map +0 -1
- package/esm/dependency/template-processor.d.ts +0 -118
- package/esm/dependency/template-processor.d.ts.map +0 -1
- package/esm/dependency/types.d.ts +0 -739
- package/esm/dependency/types.d.ts.map +0 -1
- package/esm/handlebars/expression-extractor.d.ts +0 -147
- package/esm/handlebars/expression-extractor.d.ts.map +0 -1
- package/esm/handlebars/helpers.d.ts +0 -339
- package/esm/handlebars/helpers.d.ts.map +0 -1
- package/esm/handlebars/index.d.ts +0 -195
- package/esm/handlebars/index.d.ts.map +0 -1
- package/esm/handlebars/index.js +0 -587
- package/esm/registry/index.d.ts +0 -46
- package/esm/registry/index.d.ts.map +0 -1
- package/esm/registry/index.js +0 -6422
- package/esm/registry/render-template.d.ts +0 -91
- package/esm/registry/render-template.d.ts.map +0 -1
- package/esm/registry/tool-ui.registry.d.ts +0 -294
- package/esm/registry/tool-ui.registry.d.ts.map +0 -1
- package/esm/registry/uri-utils.d.ts +0 -56
- package/esm/registry/uri-utils.d.ts.map +0 -1
- package/esm/renderers/cache.d.ts +0 -145
- package/esm/renderers/cache.d.ts.map +0 -1
- package/esm/renderers/html.renderer.d.ts +0 -123
- package/esm/renderers/html.renderer.d.ts.map +0 -1
- package/esm/renderers/mdx.renderer.d.ts +0 -120
- package/esm/renderers/mdx.renderer.d.ts.map +0 -1
- package/esm/renderers/registry.d.ts +0 -134
- package/esm/renderers/registry.d.ts.map +0 -1
- package/esm/renderers/types.d.ts +0 -342
- package/esm/renderers/types.d.ts.map +0 -1
- package/esm/renderers/utils/detect.d.ts +0 -107
- package/esm/renderers/utils/detect.d.ts.map +0 -1
- package/esm/renderers/utils/hash.d.ts +0 -40
- package/esm/renderers/utils/hash.d.ts.map +0 -1
- package/esm/renderers/utils/index.d.ts +0 -9
- package/esm/renderers/utils/index.d.ts.map +0 -1
- package/esm/renderers/utils/transpiler.d.ts +0 -89
- package/esm/renderers/utils/transpiler.d.ts.map +0 -1
- package/esm/runtime/adapters/html.adapter.d.ts +0 -59
- package/esm/runtime/adapters/html.adapter.d.ts.map +0 -1
- package/esm/runtime/adapters/index.d.ts +0 -26
- package/esm/runtime/adapters/index.d.ts.map +0 -1
- package/esm/runtime/adapters/mdx.adapter.d.ts +0 -73
- package/esm/runtime/adapters/mdx.adapter.d.ts.map +0 -1
- package/esm/runtime/adapters/react.adapter.d.ts.map +0 -1
- package/esm/runtime/adapters/types.d.ts +0 -95
- package/esm/runtime/adapters/types.d.ts.map +0 -1
- package/esm/runtime/csp.d.ts +0 -48
- package/esm/runtime/csp.d.ts.map +0 -1
- package/esm/runtime/index.d.ts +0 -17
- package/esm/runtime/index.d.ts.map +0 -1
- package/esm/runtime/index.js +0 -5186
- package/esm/runtime/mcp-bridge.d.ts +0 -101
- package/esm/runtime/mcp-bridge.d.ts.map +0 -1
- package/esm/runtime/renderer-runtime.d.ts +0 -133
- package/esm/runtime/renderer-runtime.d.ts.map +0 -1
- package/esm/runtime/sanitizer.d.ts +0 -172
- package/esm/runtime/sanitizer.d.ts.map +0 -1
- package/esm/runtime/types.d.ts +0 -415
- package/esm/runtime/types.d.ts.map +0 -1
- package/esm/runtime/wrapper.d.ts +0 -421
- package/esm/runtime/wrapper.d.ts.map +0 -1
- package/esm/styles/index.d.ts +0 -8
- package/esm/styles/index.d.ts.map +0 -1
- package/esm/styles/index.js +0 -171
- package/esm/styles/variants.d.ts +0 -51
- package/esm/styles/variants.d.ts.map +0 -1
- package/esm/theme/cdn.d.ts +0 -195
- package/esm/theme/cdn.d.ts.map +0 -1
- package/esm/theme/index.d.ts +0 -18
- package/esm/theme/index.d.ts.map +0 -1
- package/esm/theme/index.js +0 -700
- package/esm/theme/platforms.d.ts +0 -107
- package/esm/theme/platforms.d.ts.map +0 -1
- package/esm/theme/presets/github-openai.d.ts +0 -50
- package/esm/theme/presets/github-openai.d.ts.map +0 -1
- package/esm/theme/presets/index.d.ts +0 -11
- package/esm/theme/presets/index.d.ts.map +0 -1
- package/esm/theme/theme.d.ts +0 -396
- package/esm/theme/theme.d.ts.map +0 -1
- package/esm/tool-template/builder.d.ts +0 -213
- package/esm/tool-template/builder.d.ts.map +0 -1
- package/esm/tool-template/index.d.ts +0 -16
- package/esm/tool-template/index.d.ts.map +0 -1
- package/esm/tool-template/index.js +0 -3515
- package/esm/types/index.d.ts +0 -14
- package/esm/types/index.d.ts.map +0 -1
- package/esm/types/index.js +0 -75
- package/esm/types/ui-config.d.ts +0 -639
- package/esm/types/ui-config.d.ts.map +0 -1
- package/esm/types/ui-runtime.d.ts +0 -1007
- package/esm/types/ui-runtime.d.ts.map +0 -1
- package/esm/typings/cache/cache-adapter.d.ts +0 -125
- package/esm/typings/cache/cache-adapter.d.ts.map +0 -1
- package/esm/typings/cache/index.d.ts +0 -10
- package/esm/typings/cache/index.d.ts.map +0 -1
- package/esm/typings/cache/memory-cache.d.ts +0 -92
- package/esm/typings/cache/memory-cache.d.ts.map +0 -1
- package/esm/typings/dts-parser.d.ts +0 -90
- package/esm/typings/dts-parser.d.ts.map +0 -1
- package/esm/typings/index.d.ts +0 -48
- package/esm/typings/index.d.ts.map +0 -1
- package/esm/typings/schemas.d.ts +0 -232
- package/esm/typings/schemas.d.ts.map +0 -1
- package/esm/typings/type-fetcher.d.ts +0 -89
- package/esm/typings/type-fetcher.d.ts.map +0 -1
- package/esm/typings/types.d.ts +0 -320
- package/esm/typings/types.d.ts.map +0 -1
- package/esm/utils/escape-html.d.ts +0 -58
- package/esm/utils/escape-html.d.ts.map +0 -1
- package/esm/utils/index.d.ts +0 -10
- package/esm/utils/index.d.ts.map +0 -1
- package/esm/utils/index.js +0 -40
- package/esm/utils/safe-stringify.d.ts +0 -30
- package/esm/utils/safe-stringify.d.ts.map +0 -1
- package/esm/validation/error-box.d.ts +0 -56
- package/esm/validation/error-box.d.ts.map +0 -1
- package/esm/validation/index.d.ts +0 -13
- package/esm/validation/index.d.ts.map +0 -1
- package/esm/validation/index.js +0 -562
- package/esm/validation/schema-paths.d.ts +0 -118
- package/esm/validation/schema-paths.d.ts.map +0 -1
- package/esm/validation/template-validator.d.ts +0 -143
- package/esm/validation/template-validator.d.ts.map +0 -1
- package/esm/validation/wrapper.d.ts +0 -97
- package/esm/validation/wrapper.d.ts.map +0 -1
- package/handlebars/expression-extractor.d.ts +0 -147
- package/handlebars/expression-extractor.d.ts.map +0 -1
- package/handlebars/helpers.d.ts +0 -339
- package/handlebars/helpers.d.ts.map +0 -1
- package/handlebars/index.d.ts +0 -195
- package/handlebars/index.d.ts.map +0 -1
- package/handlebars/index.js +0 -666
- package/registry/index.d.ts +0 -46
- package/registry/index.d.ts.map +0 -1
- package/registry/index.js +0 -6465
- package/registry/render-template.d.ts +0 -91
- package/registry/render-template.d.ts.map +0 -1
- package/registry/tool-ui.registry.d.ts +0 -294
- package/registry/tool-ui.registry.d.ts.map +0 -1
- package/registry/uri-utils.d.ts +0 -56
- package/registry/uri-utils.d.ts.map +0 -1
- package/renderers/cache.d.ts +0 -145
- package/renderers/cache.d.ts.map +0 -1
- package/renderers/html.renderer.d.ts +0 -123
- package/renderers/html.renderer.d.ts.map +0 -1
- package/renderers/mdx.renderer.d.ts +0 -120
- package/renderers/mdx.renderer.d.ts.map +0 -1
- package/renderers/registry.d.ts +0 -134
- package/renderers/registry.d.ts.map +0 -1
- package/renderers/types.d.ts +0 -342
- package/renderers/types.d.ts.map +0 -1
- package/renderers/utils/detect.d.ts +0 -107
- package/renderers/utils/detect.d.ts.map +0 -1
- package/renderers/utils/hash.d.ts +0 -40
- package/renderers/utils/hash.d.ts.map +0 -1
- package/renderers/utils/index.d.ts +0 -9
- package/renderers/utils/index.d.ts.map +0 -1
- package/renderers/utils/transpiler.d.ts +0 -89
- package/renderers/utils/transpiler.d.ts.map +0 -1
- package/runtime/adapters/html.adapter.d.ts +0 -59
- package/runtime/adapters/html.adapter.d.ts.map +0 -1
- package/runtime/adapters/index.d.ts +0 -26
- package/runtime/adapters/index.d.ts.map +0 -1
- package/runtime/adapters/mdx.adapter.d.ts +0 -73
- package/runtime/adapters/mdx.adapter.d.ts.map +0 -1
- package/runtime/adapters/react.adapter.d.ts.map +0 -1
- package/runtime/adapters/types.d.ts +0 -95
- package/runtime/adapters/types.d.ts.map +0 -1
- package/runtime/csp.d.ts +0 -48
- package/runtime/csp.d.ts.map +0 -1
- package/runtime/index.d.ts +0 -17
- package/runtime/index.d.ts.map +0 -1
- package/runtime/index.js +0 -5264
- package/runtime/mcp-bridge.d.ts +0 -101
- package/runtime/mcp-bridge.d.ts.map +0 -1
- package/runtime/renderer-runtime.d.ts +0 -133
- package/runtime/renderer-runtime.d.ts.map +0 -1
- package/runtime/sanitizer.d.ts +0 -172
- package/runtime/sanitizer.d.ts.map +0 -1
- package/runtime/types.d.ts +0 -415
- package/runtime/types.d.ts.map +0 -1
- package/runtime/wrapper.d.ts +0 -421
- package/runtime/wrapper.d.ts.map +0 -1
- package/styles/index.d.ts +0 -8
- package/styles/index.d.ts.map +0 -1
- package/styles/index.js +0 -222
- package/styles/variants.d.ts +0 -51
- package/styles/variants.d.ts.map +0 -1
- package/theme/cdn.d.ts +0 -195
- package/theme/cdn.d.ts.map +0 -1
- package/theme/index.d.ts +0 -18
- package/theme/index.d.ts.map +0 -1
- package/theme/index.js +0 -757
- package/theme/platforms.d.ts +0 -107
- package/theme/platforms.d.ts.map +0 -1
- package/theme/presets/github-openai.d.ts +0 -50
- package/theme/presets/github-openai.d.ts.map +0 -1
- package/theme/presets/index.d.ts +0 -11
- package/theme/presets/index.d.ts.map +0 -1
- package/theme/theme.d.ts +0 -396
- package/theme/theme.d.ts.map +0 -1
- package/tool-template/builder.d.ts +0 -213
- package/tool-template/builder.d.ts.map +0 -1
- package/tool-template/index.d.ts +0 -16
- package/tool-template/index.d.ts.map +0 -1
- package/tool-template/index.js +0 -3559
- package/types/index.d.ts +0 -14
- package/types/index.d.ts.map +0 -1
- package/types/index.js +0 -108
- package/types/ui-config.d.ts +0 -639
- package/types/ui-config.d.ts.map +0 -1
- package/types/ui-runtime.d.ts +0 -1007
- package/types/ui-runtime.d.ts.map +0 -1
- package/typings/cache/cache-adapter.d.ts +0 -125
- package/typings/cache/cache-adapter.d.ts.map +0 -1
- package/typings/cache/index.d.ts +0 -10
- package/typings/cache/index.d.ts.map +0 -1
- package/typings/cache/memory-cache.d.ts +0 -92
- package/typings/cache/memory-cache.d.ts.map +0 -1
- package/typings/dts-parser.d.ts +0 -90
- package/typings/dts-parser.d.ts.map +0 -1
- package/typings/index.d.ts +0 -48
- package/typings/index.d.ts.map +0 -1
- package/typings/schemas.d.ts +0 -232
- package/typings/schemas.d.ts.map +0 -1
- package/typings/type-fetcher.d.ts +0 -89
- package/typings/type-fetcher.d.ts.map +0 -1
- package/typings/types.d.ts +0 -320
- package/typings/types.d.ts.map +0 -1
- package/utils/escape-html.d.ts +0 -58
- package/utils/escape-html.d.ts.map +0 -1
- package/utils/index.d.ts +0 -10
- package/utils/index.d.ts.map +0 -1
- package/utils/index.js +0 -70
- package/utils/safe-stringify.d.ts +0 -30
- package/utils/safe-stringify.d.ts.map +0 -1
- package/validation/error-box.d.ts +0 -56
- package/validation/error-box.d.ts.map +0 -1
- package/validation/index.d.ts +0 -13
- package/validation/index.d.ts.map +0 -1
- package/validation/index.js +0 -603
- package/validation/schema-paths.d.ts +0 -118
- package/validation/schema-paths.d.ts.map +0 -1
- package/validation/template-validator.d.ts +0 -143
- package/validation/template-validator.d.ts.map +0 -1
- package/validation/wrapper.d.ts +0 -97
- package/validation/wrapper.d.ts.map +0 -1
package/layouts/index.js
CHANGED
|
@@ -28,510 +28,17 @@ __export(layouts_exports, {
|
|
|
28
28
|
createLayoutBuilder: () => createLayoutBuilder,
|
|
29
29
|
errorLayout: () => errorLayout,
|
|
30
30
|
errorLayoutBuilder: () => errorLayoutBuilder,
|
|
31
|
-
escapeHtml: () => escapeHtml,
|
|
31
|
+
escapeHtml: () => import_utils2.escapeHtml,
|
|
32
32
|
loadingLayout: () => loadingLayout,
|
|
33
33
|
successLayout: () => successLayout,
|
|
34
34
|
widgetLayout: () => widgetLayout
|
|
35
35
|
});
|
|
36
36
|
module.exports = __toCommonJS(layouts_exports);
|
|
37
37
|
|
|
38
|
-
// libs/ui/src/theme/cdn.ts
|
|
39
|
-
var CDN = {
|
|
40
|
-
/**
|
|
41
|
-
* Tailwind CSS v4 Browser CDN
|
|
42
|
-
* Generates styles on-the-fly with @theme support
|
|
43
|
-
* @see https://tailwindcss.com/docs/installation/play-cdn
|
|
44
|
-
*/
|
|
45
|
-
tailwind: "https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4",
|
|
46
|
-
/**
|
|
47
|
-
* HTMX 2.x - High power tools for HTML
|
|
48
|
-
* Enables AJAX, WebSockets, Server Sent Events directly in HTML
|
|
49
|
-
* @see https://htmx.org
|
|
50
|
-
*/
|
|
51
|
-
htmx: {
|
|
52
|
-
url: "https://cdnjs.cloudflare.com/ajax/libs/htmx/2.0.7/htmx.min.js",
|
|
53
|
-
integrity: "sha512-T6VLg/MJYMbLTmQ8VLvonbWg8VOvmDhXcOvHzCwo6ShdGuUU5SEcp1IAPXL4k9lVoMi8gRXl5K/S/zh43Y9rJA=="
|
|
54
|
-
},
|
|
55
|
-
/**
|
|
56
|
-
* Alpine.js - Lightweight reactive framework
|
|
57
|
-
* Used for more complex client-side interactions
|
|
58
|
-
* @see https://alpinejs.dev
|
|
59
|
-
*/
|
|
60
|
-
alpine: {
|
|
61
|
-
url: "https://cdn.jsdelivr.net/npm/alpinejs@3.14.3/dist/cdn.min.js",
|
|
62
|
-
integrity: "sha384-6zY8MFQJ/EqS1r4RJl+7j8rvZPuBWpT0RzWf+IFcKhxqUzQNmJzA1X1VEVZhYaEz"
|
|
63
|
-
},
|
|
64
|
-
/**
|
|
65
|
-
* Google Fonts - Inter for modern UI typography
|
|
66
|
-
*/
|
|
67
|
-
fonts: {
|
|
68
|
-
preconnect: ["https://fonts.googleapis.com", "https://fonts.gstatic.com"],
|
|
69
|
-
inter: "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap",
|
|
70
|
-
mono: "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&display=swap"
|
|
71
|
-
},
|
|
72
|
-
/**
|
|
73
|
-
* Lucide Icons - Beautiful & consistent icons
|
|
74
|
-
* @see https://lucide.dev
|
|
75
|
-
*/
|
|
76
|
-
icons: {
|
|
77
|
-
url: "https://cdn.jsdelivr.net/npm/lucide@0.294.0/dist/umd/lucide.min.js",
|
|
78
|
-
integrity: "sha384-wpLmHb7v7V1LsEuTmPQ9tXqWZvTtRWWVqJuE+Yz6X0I6O2T6bHJVeXH1lVWqF4qE"
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
var scriptCache = /* @__PURE__ */ new Map();
|
|
82
|
-
function getCachedScript(url) {
|
|
83
|
-
return scriptCache.get(url);
|
|
84
|
-
}
|
|
85
|
-
function isScriptCached(url) {
|
|
86
|
-
return scriptCache.has(url);
|
|
87
|
-
}
|
|
88
|
-
function buildFontPreconnect() {
|
|
89
|
-
return CDN.fonts.preconnect.map((url, i) => `<link rel="preconnect" href="${url}"${i > 0 ? " crossorigin" : ""}>`).join("\n ");
|
|
90
|
-
}
|
|
91
|
-
function buildFontStylesheets(options = {}) {
|
|
92
|
-
const { inter = true, mono = false } = options;
|
|
93
|
-
const links = [];
|
|
94
|
-
if (inter) {
|
|
95
|
-
links.push(`<link href="${CDN.fonts.inter}" rel="stylesheet">`);
|
|
96
|
-
}
|
|
97
|
-
if (mono) {
|
|
98
|
-
links.push(`<link href="${CDN.fonts.mono}" rel="stylesheet">`);
|
|
99
|
-
}
|
|
100
|
-
return links.join("\n ");
|
|
101
|
-
}
|
|
102
|
-
function buildScriptTag(url, integrity, options = {}) {
|
|
103
|
-
const attrs = [`src="${url}"`];
|
|
104
|
-
if (integrity) {
|
|
105
|
-
attrs.push(`integrity="${integrity}"`);
|
|
106
|
-
attrs.push('crossorigin="anonymous"');
|
|
107
|
-
}
|
|
108
|
-
if (options.defer) attrs.push("defer");
|
|
109
|
-
if (options.async) attrs.push("async");
|
|
110
|
-
return `<script ${attrs.join(" ")}></script>`;
|
|
111
|
-
}
|
|
112
|
-
function buildInlineScriptTag(content) {
|
|
113
|
-
return `<script>${content}</script>`;
|
|
114
|
-
}
|
|
115
|
-
function buildCdnScripts(options = {}) {
|
|
116
|
-
const { tailwind = true, htmx = true, alpine = false, icons = false, inline = false } = options;
|
|
117
|
-
const scripts = [];
|
|
118
|
-
if (inline) {
|
|
119
|
-
if (tailwind) {
|
|
120
|
-
if (isScriptCached(CDN.tailwind)) {
|
|
121
|
-
scripts.push(buildInlineScriptTag(getCachedScript(CDN.tailwind)));
|
|
122
|
-
} else {
|
|
123
|
-
console.warn(
|
|
124
|
-
"[frontmcp/ui] Inline mode requested but Tailwind script not cached. Call fetchAndCacheScripts() first."
|
|
125
|
-
);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
if (htmx) {
|
|
129
|
-
if (isScriptCached(CDN.htmx.url)) {
|
|
130
|
-
scripts.push(buildInlineScriptTag(getCachedScript(CDN.htmx.url)));
|
|
131
|
-
} else {
|
|
132
|
-
console.warn(
|
|
133
|
-
"[frontmcp/ui] Inline mode requested but HTMX script not cached. Call fetchAndCacheScripts() first."
|
|
134
|
-
);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
if (alpine) {
|
|
138
|
-
if (isScriptCached(CDN.alpine.url)) {
|
|
139
|
-
scripts.push(buildInlineScriptTag(getCachedScript(CDN.alpine.url)));
|
|
140
|
-
} else {
|
|
141
|
-
console.warn(
|
|
142
|
-
"[frontmcp/ui] Inline mode requested but Alpine.js script not cached. Call fetchAndCacheScripts() first."
|
|
143
|
-
);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
if (icons) {
|
|
147
|
-
if (isScriptCached(CDN.icons.url)) {
|
|
148
|
-
scripts.push(buildInlineScriptTag(getCachedScript(CDN.icons.url)));
|
|
149
|
-
} else {
|
|
150
|
-
console.warn(
|
|
151
|
-
"[frontmcp/ui] Inline mode requested but Lucide icons script not cached. Call fetchAndCacheScripts() first."
|
|
152
|
-
);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
} else {
|
|
156
|
-
if (tailwind) {
|
|
157
|
-
scripts.push(buildScriptTag(CDN.tailwind));
|
|
158
|
-
}
|
|
159
|
-
if (htmx) {
|
|
160
|
-
scripts.push(buildScriptTag(CDN.htmx.url, CDN.htmx.integrity));
|
|
161
|
-
}
|
|
162
|
-
if (alpine) {
|
|
163
|
-
scripts.push(buildScriptTag(CDN.alpine.url, CDN.alpine.integrity, { defer: true }));
|
|
164
|
-
}
|
|
165
|
-
if (icons) {
|
|
166
|
-
scripts.push(buildScriptTag(CDN.icons.url, CDN.icons.integrity));
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
return scripts.join("\n ");
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
// libs/ui/src/theme/platforms.ts
|
|
173
|
-
var OPENAI_PLATFORM = {
|
|
174
|
-
id: "openai",
|
|
175
|
-
name: "OpenAI",
|
|
176
|
-
supportsWidgets: true,
|
|
177
|
-
supportsTailwind: true,
|
|
178
|
-
supportsHtmx: true,
|
|
179
|
-
networkMode: "full",
|
|
180
|
-
scriptStrategy: "cdn",
|
|
181
|
-
options: {
|
|
182
|
-
sdk: "apps-sdk",
|
|
183
|
-
version: "1.0"
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
var CLAUDE_PLATFORM = {
|
|
187
|
-
id: "claude",
|
|
188
|
-
name: "Claude (Artifacts)",
|
|
189
|
-
supportsWidgets: true,
|
|
190
|
-
supportsTailwind: true,
|
|
191
|
-
supportsHtmx: false,
|
|
192
|
-
// Network blocked, HTMX won't work for API calls
|
|
193
|
-
networkMode: "blocked",
|
|
194
|
-
scriptStrategy: "inline",
|
|
195
|
-
maxInlineSize: 100 * 1024,
|
|
196
|
-
// 100KB limit for artifacts
|
|
197
|
-
cspRestrictions: ["script-src 'unsafe-inline'", "connect-src 'none'"],
|
|
198
|
-
options: {
|
|
199
|
-
mode: "artifacts",
|
|
200
|
-
framework: "react"
|
|
201
|
-
// Claude artifacts prefer React
|
|
202
|
-
}
|
|
203
|
-
};
|
|
204
|
-
function canUseCdn(platform) {
|
|
205
|
-
return platform.networkMode === "full" && platform.scriptStrategy === "cdn";
|
|
206
|
-
}
|
|
207
|
-
function needsInlineScripts(platform) {
|
|
208
|
-
return platform.scriptStrategy === "inline" || platform.networkMode === "blocked";
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
// libs/ui/src/theme/presets/github-openai.ts
|
|
212
|
-
var GITHUB_OPENAI_THEME = {
|
|
213
|
-
name: "github-openai",
|
|
214
|
-
colors: {
|
|
215
|
-
semantic: {
|
|
216
|
-
// Primary: Near-black for main actions and branding
|
|
217
|
-
primary: "#24292f",
|
|
218
|
-
// Secondary: Medium gray for secondary elements
|
|
219
|
-
secondary: "#57606a",
|
|
220
|
-
// Accent: Blue for links, focus states, and highlights
|
|
221
|
-
accent: "#0969da",
|
|
222
|
-
// Status colors
|
|
223
|
-
success: "#1a7f37",
|
|
224
|
-
// GitHub green
|
|
225
|
-
warning: "#9a6700",
|
|
226
|
-
// Amber warning
|
|
227
|
-
danger: "#cf222e",
|
|
228
|
-
// GitHub red
|
|
229
|
-
info: "#0969da"
|
|
230
|
-
// Blue info
|
|
231
|
-
},
|
|
232
|
-
surface: {
|
|
233
|
-
// Pure white background
|
|
234
|
-
background: "#ffffff",
|
|
235
|
-
// Light gray surface (GitHub code background style)
|
|
236
|
-
surface: "#f6f8fa",
|
|
237
|
-
// White elevated surfaces (modals, cards)
|
|
238
|
-
elevated: "#ffffff",
|
|
239
|
-
// Dark semi-transparent overlay
|
|
240
|
-
overlay: "rgba(27, 31, 36, 0.5)"
|
|
241
|
-
},
|
|
242
|
-
text: {
|
|
243
|
-
// Near-black for primary text
|
|
244
|
-
primary: "#24292f",
|
|
245
|
-
// Gray for secondary/muted text
|
|
246
|
-
secondary: "#57606a",
|
|
247
|
-
// Light gray for disabled text
|
|
248
|
-
disabled: "#8c959f",
|
|
249
|
-
// White for text on dark backgrounds
|
|
250
|
-
inverse: "#ffffff",
|
|
251
|
-
// Blue for links
|
|
252
|
-
link: "#0969da"
|
|
253
|
-
},
|
|
254
|
-
border: {
|
|
255
|
-
// Light gray border (GitHub style)
|
|
256
|
-
default: "#d0d7de",
|
|
257
|
-
// Medium gray on hover
|
|
258
|
-
hover: "#8c959f",
|
|
259
|
-
// Blue focus ring
|
|
260
|
-
focus: "#0969da",
|
|
261
|
-
// Subtle divider
|
|
262
|
-
divider: "#d8dee4"
|
|
263
|
-
}
|
|
264
|
-
},
|
|
265
|
-
typography: {
|
|
266
|
-
families: {
|
|
267
|
-
// System UI font stack (GitHub/Apple style)
|
|
268
|
-
sans: '-apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"',
|
|
269
|
-
// Monospace stack
|
|
270
|
-
mono: 'ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, "Liberation Mono", monospace'
|
|
271
|
-
},
|
|
272
|
-
sizes: {
|
|
273
|
-
xs: "0.75rem",
|
|
274
|
-
// 12px
|
|
275
|
-
sm: "0.875rem",
|
|
276
|
-
// 14px
|
|
277
|
-
base: "1rem",
|
|
278
|
-
// 16px
|
|
279
|
-
lg: "1.125rem",
|
|
280
|
-
// 18px
|
|
281
|
-
xl: "1.25rem",
|
|
282
|
-
// 20px
|
|
283
|
-
"2xl": "1.5rem",
|
|
284
|
-
// 24px
|
|
285
|
-
"3xl": "1.875rem",
|
|
286
|
-
// 30px
|
|
287
|
-
"4xl": "2.25rem"
|
|
288
|
-
// 36px
|
|
289
|
-
},
|
|
290
|
-
weights: {
|
|
291
|
-
normal: "400",
|
|
292
|
-
medium: "500",
|
|
293
|
-
semibold: "600",
|
|
294
|
-
bold: "700"
|
|
295
|
-
}
|
|
296
|
-
},
|
|
297
|
-
radius: {
|
|
298
|
-
none: "0",
|
|
299
|
-
sm: "3px",
|
|
300
|
-
// GitHub uses smaller radii
|
|
301
|
-
md: "6px",
|
|
302
|
-
lg: "8px",
|
|
303
|
-
xl: "12px",
|
|
304
|
-
"2xl": "16px",
|
|
305
|
-
full: "9999px"
|
|
306
|
-
},
|
|
307
|
-
shadows: {
|
|
308
|
-
// Subtle shadows with gray tones
|
|
309
|
-
sm: "0 1px 0 rgba(27, 31, 36, 0.04)",
|
|
310
|
-
md: "0 3px 6px rgba(140, 149, 159, 0.15)",
|
|
311
|
-
lg: "0 8px 24px rgba(140, 149, 159, 0.2)",
|
|
312
|
-
xl: "0 12px 28px rgba(140, 149, 159, 0.3)"
|
|
313
|
-
},
|
|
314
|
-
components: {
|
|
315
|
-
button: {
|
|
316
|
-
radius: "6px",
|
|
317
|
-
paddingX: "16px",
|
|
318
|
-
paddingY: "5px",
|
|
319
|
-
fontSize: "14px",
|
|
320
|
-
fontWeight: "500"
|
|
321
|
-
},
|
|
322
|
-
card: {
|
|
323
|
-
radius: "6px",
|
|
324
|
-
padding: "16px",
|
|
325
|
-
shadow: "0 1px 0 rgba(27, 31, 36, 0.04)",
|
|
326
|
-
borderWidth: "1px"
|
|
327
|
-
},
|
|
328
|
-
input: {
|
|
329
|
-
radius: "6px",
|
|
330
|
-
paddingX: "12px",
|
|
331
|
-
paddingY: "5px",
|
|
332
|
-
borderWidth: "1px",
|
|
333
|
-
focusRingWidth: "3px"
|
|
334
|
-
}
|
|
335
|
-
},
|
|
336
|
-
cdn: {
|
|
337
|
-
fonts: {
|
|
338
|
-
preconnect: ["https://fonts.googleapis.com", "https://fonts.gstatic.com"],
|
|
339
|
-
stylesheets: [
|
|
340
|
-
// System UI fonts don't need external stylesheets, but we include
|
|
341
|
-
// Inter as an optional enhancement for consistent cross-platform rendering
|
|
342
|
-
"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
|
|
343
|
-
]
|
|
344
|
-
},
|
|
345
|
-
icons: {
|
|
346
|
-
script: {
|
|
347
|
-
url: "https://cdn.jsdelivr.net/npm/lucide@0.294.0/dist/umd/lucide.min.js"
|
|
348
|
-
}
|
|
349
|
-
},
|
|
350
|
-
scripts: {
|
|
351
|
-
tailwind: "https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4",
|
|
352
|
-
htmx: {
|
|
353
|
-
url: "https://cdnjs.cloudflare.com/ajax/libs/htmx/2.0.7/htmx.min.js",
|
|
354
|
-
integrity: "sha512-T6VLg/MJYMbLTmQ8VLvonbWg8VOvmDhXcOvHzCwo6ShdGuUU5SEcp1IAPXL4k9lVoMi8gRXl5K/S/zh43Y9rJA=="
|
|
355
|
-
},
|
|
356
|
-
alpine: {
|
|
357
|
-
url: "https://cdn.jsdelivr.net/npm/alpinejs@3.14.3/dist/cdn.min.js",
|
|
358
|
-
integrity: "sha384-6zY8MFQJ/EqS1r4RJl+7j8rvZPuBWpT0RzWf+IFcKhxqUzQNmJzA1X1VEVZhYaEz"
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
};
|
|
363
|
-
var DEFAULT_THEME = GITHUB_OPENAI_THEME;
|
|
364
|
-
|
|
365
|
-
// libs/ui/src/theme/theme.ts
|
|
366
|
-
function mergeThemesCore(base, override) {
|
|
367
|
-
const baseColors = base.colors ?? { semantic: { primary: "#24292f" } };
|
|
368
|
-
const filterStrings = (arr) => arr.filter((s) => s !== void 0);
|
|
369
|
-
return {
|
|
370
|
-
...base,
|
|
371
|
-
...override,
|
|
372
|
-
colors: {
|
|
373
|
-
...baseColors,
|
|
374
|
-
...override.colors,
|
|
375
|
-
semantic: { ...baseColors.semantic, ...override.colors?.semantic },
|
|
376
|
-
surface: { ...baseColors.surface, ...override.colors?.surface },
|
|
377
|
-
text: { ...baseColors.text, ...override.colors?.text },
|
|
378
|
-
border: { ...baseColors.border, ...override.colors?.border },
|
|
379
|
-
custom: { ...baseColors.custom, ...override.colors?.custom }
|
|
380
|
-
},
|
|
381
|
-
typography: {
|
|
382
|
-
...base.typography,
|
|
383
|
-
...override.typography,
|
|
384
|
-
families: { ...base.typography?.families, ...override.typography?.families },
|
|
385
|
-
sizes: { ...base.typography?.sizes, ...override.typography?.sizes },
|
|
386
|
-
weights: { ...base.typography?.weights, ...override.typography?.weights },
|
|
387
|
-
lineHeight: { ...base.typography?.lineHeight, ...override.typography?.lineHeight }
|
|
388
|
-
},
|
|
389
|
-
spacing: { ...base.spacing, ...override.spacing },
|
|
390
|
-
radius: { ...base.radius, ...override.radius },
|
|
391
|
-
shadows: { ...base.shadows, ...override.shadows },
|
|
392
|
-
components: {
|
|
393
|
-
...base.components,
|
|
394
|
-
...override.components,
|
|
395
|
-
button: { ...base.components?.button, ...override.components?.button },
|
|
396
|
-
card: { ...base.components?.card, ...override.components?.card },
|
|
397
|
-
input: { ...base.components?.input, ...override.components?.input }
|
|
398
|
-
},
|
|
399
|
-
cdn: {
|
|
400
|
-
...base.cdn,
|
|
401
|
-
...override.cdn,
|
|
402
|
-
fonts: {
|
|
403
|
-
// Concatenate then dedupe so base entries are preserved without duplicates
|
|
404
|
-
preconnect: filterStrings(
|
|
405
|
-
Array.from(/* @__PURE__ */ new Set([...base.cdn?.fonts?.preconnect ?? [], ...override.cdn?.fonts?.preconnect ?? []]))
|
|
406
|
-
),
|
|
407
|
-
stylesheets: filterStrings(
|
|
408
|
-
Array.from(/* @__PURE__ */ new Set([...base.cdn?.fonts?.stylesheets ?? [], ...override.cdn?.fonts?.stylesheets ?? []]))
|
|
409
|
-
)
|
|
410
|
-
},
|
|
411
|
-
icons: {
|
|
412
|
-
...base.cdn?.icons,
|
|
413
|
-
...override.cdn?.icons,
|
|
414
|
-
// Deep merge script to preserve integrity when only url is overridden
|
|
415
|
-
script: override.cdn?.icons?.script ? { ...base.cdn?.icons?.script, ...override.cdn?.icons?.script } : base.cdn?.icons?.script
|
|
416
|
-
},
|
|
417
|
-
scripts: {
|
|
418
|
-
// tailwind is a simple string, just use override or base
|
|
419
|
-
tailwind: override.cdn?.scripts?.tailwind ?? base.cdn?.scripts?.tailwind,
|
|
420
|
-
// Deep merge htmx/alpine to preserve integrity when only url is overridden
|
|
421
|
-
htmx: override.cdn?.scripts?.htmx ? { ...base.cdn?.scripts?.htmx, ...override.cdn?.scripts?.htmx } : base.cdn?.scripts?.htmx,
|
|
422
|
-
alpine: override.cdn?.scripts?.alpine ? { ...base.cdn?.scripts?.alpine, ...override.cdn?.scripts?.alpine } : base.cdn?.scripts?.alpine
|
|
423
|
-
}
|
|
424
|
-
},
|
|
425
|
-
customVars: { ...base.customVars, ...override.customVars },
|
|
426
|
-
customCss: [base.customCss, override.customCss].filter(Boolean).join("\n")
|
|
427
|
-
};
|
|
428
|
-
}
|
|
429
|
-
function mergeThemes(base, override) {
|
|
430
|
-
const merged = mergeThemesCore(base, override);
|
|
431
|
-
let darkVariant;
|
|
432
|
-
if (override.dark !== void 0) {
|
|
433
|
-
const darkBase = base.dark ?? base;
|
|
434
|
-
const { dark: _nestedDark, ...overrideDarkWithoutNested } = override.dark;
|
|
435
|
-
darkVariant = mergeThemesCore(darkBase, overrideDarkWithoutNested);
|
|
436
|
-
} else if (base.dark !== void 0) {
|
|
437
|
-
const { dark: _nestedDark, ...baseDarkWithoutNested } = base.dark;
|
|
438
|
-
darkVariant = baseDarkWithoutNested;
|
|
439
|
-
}
|
|
440
|
-
return {
|
|
441
|
-
...merged,
|
|
442
|
-
dark: darkVariant
|
|
443
|
-
};
|
|
444
|
-
}
|
|
445
|
-
function emitColorScale(lines, name, scale) {
|
|
446
|
-
for (const [shade, value] of Object.entries(scale)) {
|
|
447
|
-
if (value) lines.push(`--color-${name}-${shade}: ${value};`);
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
function buildThemeCss(theme) {
|
|
451
|
-
const lines = [];
|
|
452
|
-
const semantic = theme.colors.semantic;
|
|
453
|
-
if (typeof semantic.primary === "string") {
|
|
454
|
-
lines.push(`--color-primary: ${semantic.primary};`);
|
|
455
|
-
} else if (semantic.primary) {
|
|
456
|
-
emitColorScale(lines, "primary", semantic.primary);
|
|
457
|
-
}
|
|
458
|
-
if (semantic.secondary) {
|
|
459
|
-
if (typeof semantic.secondary === "string") {
|
|
460
|
-
lines.push(`--color-secondary: ${semantic.secondary};`);
|
|
461
|
-
} else {
|
|
462
|
-
emitColorScale(lines, "secondary", semantic.secondary);
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
if (semantic.accent) {
|
|
466
|
-
if (typeof semantic.accent === "string") {
|
|
467
|
-
lines.push(`--color-accent: ${semantic.accent};`);
|
|
468
|
-
} else {
|
|
469
|
-
emitColorScale(lines, "accent", semantic.accent);
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
if (semantic.neutral) {
|
|
473
|
-
if (typeof semantic.neutral === "string") {
|
|
474
|
-
lines.push(`--color-neutral: ${semantic.neutral};`);
|
|
475
|
-
} else {
|
|
476
|
-
emitColorScale(lines, "neutral", semantic.neutral);
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
if (semantic.success) lines.push(`--color-success: ${semantic.success};`);
|
|
480
|
-
if (semantic.warning) lines.push(`--color-warning: ${semantic.warning};`);
|
|
481
|
-
if (semantic.danger) lines.push(`--color-danger: ${semantic.danger};`);
|
|
482
|
-
if (semantic.info) lines.push(`--color-info: ${semantic.info};`);
|
|
483
|
-
const surface = theme.colors.surface;
|
|
484
|
-
if (surface?.background) lines.push(`--color-background: ${surface.background};`);
|
|
485
|
-
if (surface?.surface) lines.push(`--color-surface: ${surface.surface};`);
|
|
486
|
-
if (surface?.elevated) lines.push(`--color-elevated: ${surface.elevated};`);
|
|
487
|
-
if (surface?.overlay) lines.push(`--color-overlay: ${surface.overlay};`);
|
|
488
|
-
const text = theme.colors.text;
|
|
489
|
-
if (text?.primary) lines.push(`--color-text-primary: ${text.primary};`);
|
|
490
|
-
if (text?.secondary) lines.push(`--color-text-secondary: ${text.secondary};`);
|
|
491
|
-
if (text?.disabled) lines.push(`--color-text-disabled: ${text.disabled};`);
|
|
492
|
-
if (text?.inverse) lines.push(`--color-text-inverse: ${text.inverse};`);
|
|
493
|
-
if (text?.link) lines.push(`--color-text-link: ${text.link};`);
|
|
494
|
-
const border = theme.colors.border;
|
|
495
|
-
if (border?.default) lines.push(`--color-border: ${border.default};`);
|
|
496
|
-
if (border?.hover) lines.push(`--color-border-hover: ${border.hover};`);
|
|
497
|
-
if (border?.focus) lines.push(`--color-border-focus: ${border.focus};`);
|
|
498
|
-
if (border?.divider) lines.push(`--color-divider: ${border.divider};`);
|
|
499
|
-
if (theme.colors.custom) {
|
|
500
|
-
for (const [key, value] of Object.entries(theme.colors.custom)) {
|
|
501
|
-
lines.push(`--color-${key}: ${value};`);
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
const typography = theme.typography;
|
|
505
|
-
if (typography?.families?.sans) lines.push(`--font-sans: ${typography.families.sans};`);
|
|
506
|
-
if (typography?.families?.serif) lines.push(`--font-serif: ${typography.families.serif};`);
|
|
507
|
-
if (typography?.families?.mono) lines.push(`--font-mono: ${typography.families.mono};`);
|
|
508
|
-
if (typography?.families?.display) lines.push(`--font-display: ${typography.families.display};`);
|
|
509
|
-
const radius = theme.radius;
|
|
510
|
-
if (radius?.none) lines.push(`--radius-none: ${radius.none};`);
|
|
511
|
-
if (radius?.sm) lines.push(`--radius-sm: ${radius.sm};`);
|
|
512
|
-
if (radius?.md) lines.push(`--radius-md: ${radius.md};`);
|
|
513
|
-
if (radius?.lg) lines.push(`--radius-lg: ${radius.lg};`);
|
|
514
|
-
if (radius?.xl) lines.push(`--radius-xl: ${radius.xl};`);
|
|
515
|
-
if (radius?.["2xl"]) lines.push(`--radius-2xl: ${radius["2xl"]};`);
|
|
516
|
-
if (radius?.full) lines.push(`--radius-full: ${radius.full};`);
|
|
517
|
-
if (theme.customVars) {
|
|
518
|
-
for (const [key, value] of Object.entries(theme.customVars)) {
|
|
519
|
-
lines.push(`${key}: ${value};`);
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
return lines.join("\n ");
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
// libs/ui/src/utils/escape-html.ts
|
|
526
|
-
function escapeHtml(str) {
|
|
527
|
-
if (str === null || str === void 0) {
|
|
528
|
-
return "";
|
|
529
|
-
}
|
|
530
|
-
const s = String(str);
|
|
531
|
-
return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
532
|
-
}
|
|
533
|
-
|
|
534
38
|
// libs/ui/src/layouts/base.ts
|
|
39
|
+
var import_theme = require("@frontmcp/uipack/theme");
|
|
40
|
+
var import_utils = require("@frontmcp/uipack/utils");
|
|
41
|
+
var import_utils2 = require("@frontmcp/uipack/utils");
|
|
535
42
|
function getSizeClass(size) {
|
|
536
43
|
const sizeMap = {
|
|
537
44
|
xs: "max-w-sm",
|
|
@@ -570,30 +77,30 @@ function getBackgroundClasses(background, theme) {
|
|
|
570
77
|
function buildMetaTags(options) {
|
|
571
78
|
const tags = [];
|
|
572
79
|
if (options.description) {
|
|
573
|
-
tags.push(`<meta name="description" content="${escapeHtml(options.description)}">`);
|
|
80
|
+
tags.push(`<meta name="description" content="${(0, import_utils.escapeHtml)(options.description)}">`);
|
|
574
81
|
}
|
|
575
82
|
if (options.og) {
|
|
576
83
|
if (options.og.title) {
|
|
577
|
-
tags.push(`<meta property="og:title" content="${escapeHtml(options.og.title)}">`);
|
|
84
|
+
tags.push(`<meta property="og:title" content="${(0, import_utils.escapeHtml)(options.og.title)}">`);
|
|
578
85
|
}
|
|
579
86
|
if (options.og.description) {
|
|
580
|
-
tags.push(`<meta property="og:description" content="${escapeHtml(options.og.description)}">`);
|
|
87
|
+
tags.push(`<meta property="og:description" content="${(0, import_utils.escapeHtml)(options.og.description)}">`);
|
|
581
88
|
}
|
|
582
89
|
if (options.og.image) {
|
|
583
|
-
tags.push(`<meta property="og:image" content="${escapeHtml(options.og.image)}">`);
|
|
90
|
+
tags.push(`<meta property="og:image" content="${(0, import_utils.escapeHtml)(options.og.image)}">`);
|
|
584
91
|
}
|
|
585
92
|
if (options.og.type) {
|
|
586
|
-
tags.push(`<meta property="og:type" content="${escapeHtml(options.og.type)}">`);
|
|
93
|
+
tags.push(`<meta property="og:type" content="${(0, import_utils.escapeHtml)(options.og.type)}">`);
|
|
587
94
|
}
|
|
588
95
|
}
|
|
589
96
|
if (options.favicon) {
|
|
590
|
-
tags.push(`<link rel="icon" href="${escapeHtml(options.favicon)}">`);
|
|
97
|
+
tags.push(`<link rel="icon" href="${(0, import_utils.escapeHtml)(options.favicon)}">`);
|
|
591
98
|
}
|
|
592
99
|
return tags.join("\n ");
|
|
593
100
|
}
|
|
594
101
|
function buildBodyAttrs(attrs) {
|
|
595
102
|
if (!attrs) return "";
|
|
596
|
-
return Object.entries(attrs).map(([key, value]) => `${key}="${escapeHtml(value)}"`).join(" ");
|
|
103
|
+
return Object.entries(attrs).map(([key, value]) => `${key}="${(0, import_utils.escapeHtml)(value)}"`).join(" ");
|
|
597
104
|
}
|
|
598
105
|
function baseLayout(content, options) {
|
|
599
106
|
const {
|
|
@@ -602,7 +109,7 @@ function baseLayout(content, options) {
|
|
|
602
109
|
size = "md",
|
|
603
110
|
alignment = "center",
|
|
604
111
|
background = "solid",
|
|
605
|
-
platform = OPENAI_PLATFORM,
|
|
112
|
+
platform = import_theme.OPENAI_PLATFORM,
|
|
606
113
|
theme: themeOverrides,
|
|
607
114
|
includeHtmx,
|
|
608
115
|
includeAlpine = false,
|
|
@@ -612,20 +119,20 @@ function baseLayout(content, options) {
|
|
|
612
119
|
bodyClass = "",
|
|
613
120
|
titleSuffix = "FrontMCP"
|
|
614
121
|
} = options;
|
|
615
|
-
const theme = themeOverrides ? mergeThemes(DEFAULT_THEME, themeOverrides) : DEFAULT_THEME;
|
|
122
|
+
const theme = themeOverrides ? (0, import_theme.mergeThemes)(import_theme.DEFAULT_THEME, themeOverrides) : import_theme.DEFAULT_THEME;
|
|
616
123
|
const shouldIncludeHtmx = includeHtmx ?? platform.supportsHtmx;
|
|
617
|
-
const useCdn = canUseCdn(platform);
|
|
618
|
-
const useInline = needsInlineScripts(platform);
|
|
619
|
-
const fontPreconnect = useCdn ? buildFontPreconnect() : "";
|
|
620
|
-
const fontStylesheets = useCdn ? buildFontStylesheets({ inter: true }) : "";
|
|
621
|
-
const scripts = buildCdnScripts({
|
|
124
|
+
const useCdn = (0, import_theme.canUseCdn)(platform);
|
|
125
|
+
const useInline = (0, import_theme.needsInlineScripts)(platform);
|
|
126
|
+
const fontPreconnect = useCdn ? (0, import_theme.buildFontPreconnect)() : "";
|
|
127
|
+
const fontStylesheets = useCdn ? (0, import_theme.buildFontStylesheets)({ inter: true }) : "";
|
|
128
|
+
const scripts = (0, import_theme.buildCdnScripts)({
|
|
622
129
|
tailwind: platform.supportsTailwind,
|
|
623
130
|
htmx: shouldIncludeHtmx,
|
|
624
131
|
alpine: includeAlpine,
|
|
625
132
|
icons: includeIcons,
|
|
626
133
|
inline: useInline
|
|
627
134
|
});
|
|
628
|
-
const themeCss = buildThemeCss(theme);
|
|
135
|
+
const themeCss = (0, import_theme.buildThemeCss)(theme);
|
|
629
136
|
const customCss = theme.customCss || "";
|
|
630
137
|
const styleBlock = platform.supportsTailwind ? `<style type="text/tailwindcss">
|
|
631
138
|
@theme {
|
|
@@ -653,7 +160,7 @@ function baseLayout(content, options) {
|
|
|
653
160
|
<head>
|
|
654
161
|
<meta charset="UTF-8">
|
|
655
162
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
656
|
-
<title>${escapeHtml(title)}${titleSuffix ? ` - ${escapeHtml(titleSuffix)}` : ""}</title>
|
|
163
|
+
<title>${(0, import_utils.escapeHtml)(title)}${titleSuffix ? ` - ${(0, import_utils.escapeHtml)(titleSuffix)}` : ""}</title>
|
|
657
164
|
${metaTags}
|
|
658
165
|
|
|
659
166
|
<!-- Fonts -->
|
|
@@ -666,19 +173,19 @@ function baseLayout(content, options) {
|
|
|
666
173
|
|
|
667
174
|
${headExtra}
|
|
668
175
|
</head>
|
|
669
|
-
<body class="${escapeHtml(allBodyClasses)}"${bodyAttrStr ? ` ${bodyAttrStr}` : ""}>
|
|
176
|
+
<body class="${(0, import_utils.escapeHtml)(allBodyClasses)}"${bodyAttrStr ? ` ${bodyAttrStr}` : ""}>
|
|
670
177
|
${wrappedContent}
|
|
671
178
|
</body>
|
|
672
179
|
</html>`;
|
|
673
180
|
}
|
|
674
181
|
function createLayoutBuilder(defaults) {
|
|
675
182
|
return (content, options = {}) => {
|
|
676
|
-
let mergedTheme = DEFAULT_THEME;
|
|
183
|
+
let mergedTheme = import_theme.DEFAULT_THEME;
|
|
677
184
|
if (defaults.theme) {
|
|
678
|
-
mergedTheme = mergeThemes(mergedTheme, defaults.theme);
|
|
185
|
+
mergedTheme = (0, import_theme.mergeThemes)(mergedTheme, defaults.theme);
|
|
679
186
|
}
|
|
680
187
|
if (options.theme) {
|
|
681
|
-
mergedTheme = mergeThemes(mergedTheme, options.theme);
|
|
188
|
+
mergedTheme = (0, import_theme.mergeThemes)(mergedTheme, options.theme);
|
|
682
189
|
}
|
|
683
190
|
const merged = {
|
|
684
191
|
...defaults,
|
|
@@ -721,20 +228,20 @@ function authLayout(content, options) {
|
|
|
721
228
|
function consentLayout(content, options) {
|
|
722
229
|
const { clientName, clientIcon, userInfo, ...baseOptions } = options;
|
|
723
230
|
const headerHtml = clientName ? `<div class="text-center mb-6">
|
|
724
|
-
${clientIcon ? `<img src="${escapeHtml(clientIcon)}" alt="${escapeHtml(
|
|
231
|
+
${clientIcon ? `<img src="${(0, import_utils2.escapeHtml)(clientIcon)}" alt="${(0, import_utils2.escapeHtml)(
|
|
725
232
|
clientName
|
|
726
233
|
)}" class="w-16 h-16 rounded-xl mx-auto mb-4">` : `<div class="inline-flex items-center justify-center w-16 h-16 rounded-xl bg-gradient-to-br from-primary to-secondary text-white font-bold text-2xl mx-auto mb-4">
|
|
727
|
-
${escapeHtml(clientName.charAt(0).toUpperCase())}
|
|
234
|
+
${(0, import_utils2.escapeHtml)(clientName.charAt(0).toUpperCase())}
|
|
728
235
|
</div>`}
|
|
729
|
-
<h1 class="text-2xl font-bold text-text-primary">${escapeHtml(clientName)}</h1>
|
|
236
|
+
<h1 class="text-2xl font-bold text-text-primary">${(0, import_utils2.escapeHtml)(clientName)}</h1>
|
|
730
237
|
</div>` : "";
|
|
731
238
|
const userInfoHtml = userInfo ? `<div class="flex items-center gap-3 p-3 bg-gray-50 rounded-lg mb-6">
|
|
732
|
-
${userInfo.avatar ? `<img src="${escapeHtml(userInfo.avatar)}" class="w-10 h-10 rounded-full">` : `<div class="w-10 h-10 rounded-full bg-primary text-white flex items-center justify-center font-medium">
|
|
733
|
-
${escapeHtml((userInfo.name || userInfo.email || "U").charAt(0).toUpperCase())}
|
|
239
|
+
${userInfo.avatar ? `<img src="${(0, import_utils2.escapeHtml)(userInfo.avatar)}" class="w-10 h-10 rounded-full">` : `<div class="w-10 h-10 rounded-full bg-primary text-white flex items-center justify-center font-medium">
|
|
240
|
+
${(0, import_utils2.escapeHtml)((userInfo.name || userInfo.email || "U").charAt(0).toUpperCase())}
|
|
734
241
|
</div>`}
|
|
735
242
|
<div>
|
|
736
|
-
${userInfo.name ? `<div class="font-medium text-text-primary">${escapeHtml(userInfo.name)}</div>` : ""}
|
|
737
|
-
${userInfo.email ? `<div class="text-sm text-text-secondary">${escapeHtml(userInfo.email)}</div>` : ""}
|
|
243
|
+
${userInfo.name ? `<div class="font-medium text-text-primary">${(0, import_utils2.escapeHtml)(userInfo.name)}</div>` : ""}
|
|
244
|
+
${userInfo.email ? `<div class="text-sm text-text-secondary">${(0, import_utils2.escapeHtml)(userInfo.email)}</div>` : ""}
|
|
738
245
|
</div>
|
|
739
246
|
</div>` : "";
|
|
740
247
|
const wrappedContent = `
|
|
@@ -770,15 +277,15 @@ function errorLayout(content, options) {
|
|
|
770
277
|
</svg>
|
|
771
278
|
</div>
|
|
772
279
|
|
|
773
|
-
${errorCode ? `<p class="text-6xl font-bold text-danger mb-2">${escapeHtml(errorCode)}</p>` : ""}
|
|
774
|
-
<h1 class="text-2xl font-bold text-text-primary mb-4">${escapeHtml(errorTitle)}</h1>
|
|
775
|
-
${errorMessage ? `<p class="text-text-secondary mb-8">${escapeHtml(errorMessage)}</p>` : ""}
|
|
280
|
+
${errorCode ? `<p class="text-6xl font-bold text-danger mb-2">${(0, import_utils2.escapeHtml)(errorCode)}</p>` : ""}
|
|
281
|
+
<h1 class="text-2xl font-bold text-text-primary mb-4">${(0, import_utils2.escapeHtml)(errorTitle)}</h1>
|
|
282
|
+
${errorMessage ? `<p class="text-text-secondary mb-8">${(0, import_utils2.escapeHtml)(errorMessage)}</p>` : ""}
|
|
776
283
|
|
|
777
284
|
${content}
|
|
778
285
|
|
|
779
286
|
<div class="flex gap-4 justify-center mt-8">
|
|
780
|
-
${showRetry ? `<button onclick="${retryUrl ? `window.location.href='${escapeHtml(retryUrl)}'` : "window.location.reload()"}" class="px-6 py-3 bg-primary hover:bg-primary/90 text-white font-medium rounded-lg transition-colors">Try Again</button>` : ""}
|
|
781
|
-
${showHome ? `<a href="${escapeHtml(
|
|
287
|
+
${showRetry ? `<button onclick="${retryUrl ? `window.location.href='${(0, import_utils2.escapeHtml)(retryUrl)}'` : "window.location.reload()"}" class="px-6 py-3 bg-primary hover:bg-primary/90 text-white font-medium rounded-lg transition-colors">Try Again</button>` : ""}
|
|
288
|
+
${showHome ? `<a href="${(0, import_utils2.escapeHtml)(
|
|
782
289
|
homeUrl
|
|
783
290
|
)}" class="px-6 py-3 bg-gray-100 hover:bg-gray-200 text-text-primary font-medium rounded-lg transition-colors">Go Home</a>` : ""}
|
|
784
291
|
</div>
|
|
@@ -807,7 +314,7 @@ function loadingLayout(content, options) {
|
|
|
807
314
|
const loadingHtml = `
|
|
808
315
|
<div class="text-center">
|
|
809
316
|
${spinnerHtml}
|
|
810
|
-
<h2 class="text-xl font-medium text-text-primary mb-2">${escapeHtml(message)}</h2>
|
|
317
|
+
<h2 class="text-xl font-medium text-text-primary mb-2">${(0, import_utils2.escapeHtml)(message)}</h2>
|
|
811
318
|
${progressHtml}
|
|
812
319
|
${content}
|
|
813
320
|
</div>
|
|
@@ -838,7 +345,7 @@ function successLayout(content, options) {
|
|
|
838
345
|
if (countdownEl) countdownEl.textContent = countdown;
|
|
839
346
|
if (countdown <= 0) {
|
|
840
347
|
clearInterval(interval);
|
|
841
|
-
${continueUrl ? `window.location.href = '${escapeHtml(continueUrl)}';` : "window.close();"}
|
|
348
|
+
${continueUrl ? `window.location.href = '${(0, import_utils2.escapeHtml)(continueUrl)}';` : "window.close();"}
|
|
842
349
|
}
|
|
843
350
|
}, 1000);
|
|
844
351
|
</script>` : "";
|
|
@@ -851,14 +358,14 @@ function successLayout(content, options) {
|
|
|
851
358
|
</svg>
|
|
852
359
|
</div>
|
|
853
360
|
|
|
854
|
-
<h1 class="text-2xl font-bold text-text-primary mb-4">${escapeHtml(successTitle)}</h1>
|
|
855
|
-
${successMessage ? `<p class="text-text-secondary mb-8">${escapeHtml(successMessage)}</p>` : ""}
|
|
361
|
+
<h1 class="text-2xl font-bold text-text-primary mb-4">${(0, import_utils2.escapeHtml)(successTitle)}</h1>
|
|
362
|
+
${successMessage ? `<p class="text-text-secondary mb-8">${(0, import_utils2.escapeHtml)(successMessage)}</p>` : ""}
|
|
856
363
|
|
|
857
364
|
${content}
|
|
858
365
|
|
|
859
|
-
${continueUrl ? `<a href="${escapeHtml(
|
|
366
|
+
${continueUrl ? `<a href="${(0, import_utils2.escapeHtml)(
|
|
860
367
|
continueUrl
|
|
861
|
-
)}" class="inline-block mt-6 px-6 py-3 bg-primary hover:bg-primary/90 text-white font-medium rounded-lg transition-colors">${escapeHtml(
|
|
368
|
+
)}" class="inline-block mt-6 px-6 py-3 bg-primary hover:bg-primary/90 text-white font-medium rounded-lg transition-colors">${(0, import_utils2.escapeHtml)(
|
|
862
369
|
continueText
|
|
863
370
|
)}</a>` : ""}
|
|
864
371
|
|
|
@@ -883,7 +390,7 @@ function widgetLayout(content, options) {
|
|
|
883
390
|
transparent ? "" : "bg-surface"
|
|
884
391
|
].filter(Boolean).join(" ");
|
|
885
392
|
const wrappedContent = `
|
|
886
|
-
<div class="${containerClasses}" style="max-width: ${escapeHtml(maxWidth)}">
|
|
393
|
+
<div class="${containerClasses}" style="max-width: ${(0, import_utils2.escapeHtml)(maxWidth)}">
|
|
887
394
|
${content}
|
|
888
395
|
</div>
|
|
889
396
|
`;
|