@frontmcp/ui 0.6.0 → 0.6.2
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/core/bridge-factory.d.ts +1 -0
- package/bridge/core/bridge-factory.d.ts.map +1 -1
- package/bridge/index.d.ts +1 -1
- package/bridge/index.d.ts.map +1 -1
- package/bridge/index.js +39 -881
- package/bridge/runtime/index.d.ts +2 -1
- package/bridge/runtime/index.d.ts.map +1 -1
- package/bundler/browser-components.d.ts +42 -0
- package/bundler/browser-components.d.ts.map +1 -0
- package/bundler/bundler.d.ts +78 -4
- package/bundler/bundler.d.ts.map +1 -1
- package/bundler/index.d.ts +8 -8
- package/bundler/index.d.ts.map +1 -1
- package/bundler/index.js +1411 -2997
- package/bundler/types.d.ts +188 -7
- package/bundler/types.d.ts.map +1 -1
- 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/{index.js → index.mjs} +40 -877
- package/esm/bundler/index.mjs +3136 -0
- package/esm/components/{index.js → index.mjs} +136 -196
- package/esm/index.mjs +5450 -0
- package/esm/layouts/index.mjs +409 -0
- package/esm/package.json +15 -32
- package/esm/react/{index.js → index.mjs} +71 -260
- package/esm/renderers/index.mjs +611 -0
- package/esm/universal/index.mjs +1951 -0
- package/esm/web-components/{index.js → index.mjs} +232 -287
- package/index.d.ts +22 -41
- package/index.d.ts.map +1 -1
- package/index.js +4286 -19607
- package/layouts/base.d.ts +2 -2
- package/layouts/base.d.ts.map +1 -1
- package/layouts/index.js +46 -539
- package/layouts/presets.d.ts.map +1 -1
- package/package.json +15 -32
- 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 -7
- package/react/index.d.ts.map +1 -1
- package/react/index.js +55 -269
- package/react/types.d.ts +1 -2
- package/react/types.d.ts.map +1 -1
- package/renderers/index.d.ts +15 -25
- package/renderers/index.d.ts.map +1 -1
- package/renderers/index.js +393 -1619
- package/renderers/mdx.renderer.d.ts +13 -34
- package/renderers/mdx.renderer.d.ts.map +1 -1
- package/{esm/runtime/adapters → renderers}/react.adapter.d.ts +2 -2
- package/renderers/react.adapter.d.ts.map +1 -0
- package/renderers/react.renderer.d.ts +25 -16
- package/renderers/react.renderer.d.ts.map +1 -1
- package/renderers/transpiler.d.ts +49 -0
- package/renderers/transpiler.d.ts.map +1 -0
- package/universal/cached-runtime.d.ts +25 -1
- package/universal/cached-runtime.d.ts.map +1 -1
- package/universal/index.js +2037 -0
- package/universal/runtime-builder.d.ts.map +1 -1
- package/universal/types.d.ts.map +1 -1
- package/web-components/elements/fmcp-input.d.ts.map +1 -1
- package/web-components/elements/fmcp-select.d.ts.map +1 -1
- package/web-components/index.d.ts +0 -1
- package/web-components/index.d.ts.map +1 -1
- package/web-components/index.js +224 -289
- 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/bundler/cache.d.ts +0 -173
- package/bundler/cache.d.ts.map +0 -1
- package/bundler/file-cache/component-builder.d.ts +0 -167
- package/bundler/file-cache/component-builder.d.ts.map +0 -1
- package/bundler/file-cache/hash-calculator.d.ts +0 -155
- package/bundler/file-cache/hash-calculator.d.ts.map +0 -1
- package/bundler/file-cache/index.d.ts +0 -12
- package/bundler/file-cache/index.d.ts.map +0 -1
- package/bundler/file-cache/storage/filesystem.d.ts +0 -149
- package/bundler/file-cache/storage/filesystem.d.ts.map +0 -1
- package/bundler/file-cache/storage/index.d.ts +0 -11
- package/bundler/file-cache/storage/index.d.ts.map +0 -1
- package/bundler/file-cache/storage/interface.d.ts +0 -152
- package/bundler/file-cache/storage/interface.d.ts.map +0 -1
- package/bundler/file-cache/storage/redis.d.ts +0 -139
- package/bundler/file-cache/storage/redis.d.ts.map +0 -1
- package/bundler/sandbox/enclave-adapter.d.ts +0 -121
- package/bundler/sandbox/enclave-adapter.d.ts.map +0 -1
- package/bundler/sandbox/executor.d.ts +0 -14
- package/bundler/sandbox/executor.d.ts.map +0 -1
- package/bundler/sandbox/policy.d.ts +0 -62
- package/bundler/sandbox/policy.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/bridge/adapters/base-adapter.d.ts +0 -104
- package/esm/bridge/adapters/base-adapter.d.ts.map +0 -1
- package/esm/bridge/adapters/claude.adapter.d.ts +0 -67
- package/esm/bridge/adapters/claude.adapter.d.ts.map +0 -1
- package/esm/bridge/adapters/ext-apps.adapter.d.ts +0 -143
- package/esm/bridge/adapters/ext-apps.adapter.d.ts.map +0 -1
- package/esm/bridge/adapters/gemini.adapter.d.ts +0 -64
- package/esm/bridge/adapters/gemini.adapter.d.ts.map +0 -1
- package/esm/bridge/adapters/generic.adapter.d.ts +0 -56
- package/esm/bridge/adapters/generic.adapter.d.ts.map +0 -1
- package/esm/bridge/adapters/index.d.ts +0 -26
- package/esm/bridge/adapters/index.d.ts.map +0 -1
- package/esm/bridge/adapters/openai.adapter.d.ts +0 -65
- package/esm/bridge/adapters/openai.adapter.d.ts.map +0 -1
- package/esm/bridge/core/adapter-registry.d.ts +0 -122
- package/esm/bridge/core/adapter-registry.d.ts.map +0 -1
- package/esm/bridge/core/bridge-factory.d.ts +0 -199
- package/esm/bridge/core/bridge-factory.d.ts.map +0 -1
- package/esm/bridge/core/index.d.ts +0 -10
- package/esm/bridge/core/index.d.ts.map +0 -1
- package/esm/bridge/index.d.ts +0 -62
- package/esm/bridge/index.d.ts.map +0 -1
- package/esm/bridge/runtime/iife-generator.d.ts +0 -62
- package/esm/bridge/runtime/iife-generator.d.ts.map +0 -1
- package/esm/bridge/runtime/index.d.ts +0 -9
- package/esm/bridge/runtime/index.d.ts.map +0 -1
- package/esm/bridge/types.d.ts +0 -386
- package/esm/bridge/types.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/bundler/bundler.d.ts +0 -208
- package/esm/bundler/bundler.d.ts.map +0 -1
- package/esm/bundler/cache.d.ts +0 -173
- package/esm/bundler/cache.d.ts.map +0 -1
- package/esm/bundler/file-cache/component-builder.d.ts +0 -167
- package/esm/bundler/file-cache/component-builder.d.ts.map +0 -1
- package/esm/bundler/file-cache/hash-calculator.d.ts +0 -155
- package/esm/bundler/file-cache/hash-calculator.d.ts.map +0 -1
- package/esm/bundler/file-cache/index.d.ts +0 -12
- package/esm/bundler/file-cache/index.d.ts.map +0 -1
- package/esm/bundler/file-cache/storage/filesystem.d.ts +0 -149
- package/esm/bundler/file-cache/storage/filesystem.d.ts.map +0 -1
- package/esm/bundler/file-cache/storage/index.d.ts +0 -11
- package/esm/bundler/file-cache/storage/index.d.ts.map +0 -1
- package/esm/bundler/file-cache/storage/interface.d.ts +0 -152
- package/esm/bundler/file-cache/storage/interface.d.ts.map +0 -1
- package/esm/bundler/file-cache/storage/redis.d.ts +0 -139
- package/esm/bundler/file-cache/storage/redis.d.ts.map +0 -1
- package/esm/bundler/index.d.ts +0 -43
- package/esm/bundler/index.d.ts.map +0 -1
- package/esm/bundler/index.js +0 -4687
- package/esm/bundler/sandbox/enclave-adapter.d.ts +0 -121
- package/esm/bundler/sandbox/enclave-adapter.d.ts.map +0 -1
- package/esm/bundler/sandbox/executor.d.ts +0 -14
- package/esm/bundler/sandbox/executor.d.ts.map +0 -1
- package/esm/bundler/sandbox/policy.d.ts +0 -62
- package/esm/bundler/sandbox/policy.d.ts.map +0 -1
- package/esm/bundler/types.d.ts +0 -702
- package/esm/bundler/types.d.ts.map +0 -1
- package/esm/components/alert.d.ts +0 -66
- package/esm/components/alert.d.ts.map +0 -1
- package/esm/components/alert.schema.d.ts +0 -98
- package/esm/components/alert.schema.d.ts.map +0 -1
- package/esm/components/avatar.d.ts +0 -77
- package/esm/components/avatar.d.ts.map +0 -1
- package/esm/components/avatar.schema.d.ts +0 -170
- package/esm/components/avatar.schema.d.ts.map +0 -1
- package/esm/components/badge.d.ts +0 -64
- package/esm/components/badge.d.ts.map +0 -1
- package/esm/components/badge.schema.d.ts +0 -91
- package/esm/components/badge.schema.d.ts.map +0 -1
- package/esm/components/button.d.ts +0 -100
- package/esm/components/button.d.ts.map +0 -1
- package/esm/components/button.schema.d.ts +0 -120
- package/esm/components/button.schema.d.ts.map +0 -1
- package/esm/components/card.d.ts +0 -53
- package/esm/components/card.d.ts.map +0 -1
- package/esm/components/card.schema.d.ts +0 -93
- package/esm/components/card.schema.d.ts.map +0 -1
- package/esm/components/form.d.ts +0 -212
- package/esm/components/form.d.ts.map +0 -1
- package/esm/components/form.schema.d.ts +0 -365
- package/esm/components/form.schema.d.ts.map +0 -1
- package/esm/components/index.d.ts +0 -29
- package/esm/components/index.d.ts.map +0 -1
- package/esm/components/list.d.ts +0 -121
- package/esm/components/list.d.ts.map +0 -1
- package/esm/components/list.schema.d.ts +0 -129
- package/esm/components/list.schema.d.ts.map +0 -1
- package/esm/components/modal.d.ts +0 -100
- package/esm/components/modal.d.ts.map +0 -1
- package/esm/components/modal.schema.d.ts +0 -151
- package/esm/components/modal.schema.d.ts.map +0 -1
- package/esm/components/table.d.ts +0 -91
- package/esm/components/table.d.ts.map +0 -1
- package/esm/components/table.schema.d.ts +0 -123
- package/esm/components/table.schema.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/index.d.ts +0 -56
- package/esm/index.d.ts.map +0 -1
- package/esm/index.js +0 -20511
- package/esm/layouts/base.d.ts +0 -86
- package/esm/layouts/base.d.ts.map +0 -1
- package/esm/layouts/index.d.ts +0 -8
- package/esm/layouts/index.d.ts.map +0 -1
- package/esm/layouts/index.js +0 -892
- package/esm/layouts/presets.d.ts +0 -134
- package/esm/layouts/presets.d.ts.map +0 -1
- package/esm/pages/consent.d.ts +0 -117
- package/esm/pages/consent.d.ts.map +0 -1
- package/esm/pages/error.d.ts +0 -101
- package/esm/pages/error.d.ts.map +0 -1
- package/esm/pages/index.d.ts +0 -9
- package/esm/pages/index.d.ts.map +0 -1
- package/esm/pages/index.js +0 -1563
- package/esm/react/Alert.d.ts +0 -102
- package/esm/react/Alert.d.ts.map +0 -1
- package/esm/react/Badge.d.ts +0 -101
- package/esm/react/Badge.d.ts.map +0 -1
- package/esm/react/Button.d.ts +0 -109
- package/esm/react/Button.d.ts.map +0 -1
- package/esm/react/Card.d.ts +0 -104
- package/esm/react/Card.d.ts.map +0 -1
- package/esm/react/hooks/context.d.ts +0 -179
- package/esm/react/hooks/context.d.ts.map +0 -1
- package/esm/react/hooks/index.d.ts +0 -42
- package/esm/react/hooks/index.d.ts.map +0 -1
- package/esm/react/hooks/tools.d.ts +0 -284
- package/esm/react/hooks/tools.d.ts.map +0 -1
- package/esm/react/index.d.ts +0 -81
- package/esm/react/index.d.ts.map +0 -1
- package/esm/react/types.d.ts +0 -106
- package/esm/react/types.d.ts.map +0 -1
- package/esm/react/utils.d.ts +0 -43
- package/esm/react/utils.d.ts.map +0 -1
- 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/render/index.d.ts +0 -8
- package/esm/render/index.d.ts.map +0 -1
- package/esm/render/prerender.d.ts +0 -57
- package/esm/render/prerender.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/index.d.ts +0 -36
- package/esm/renderers/index.d.ts.map +0 -1
- package/esm/renderers/index.js +0 -1827
- package/esm/renderers/mdx.renderer.d.ts +0 -120
- package/esm/renderers/mdx.renderer.d.ts.map +0 -1
- package/esm/renderers/react.renderer.d.ts +0 -96
- package/esm/renderers/react.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/universal/UniversalApp.d.ts +0 -108
- package/esm/universal/UniversalApp.d.ts.map +0 -1
- package/esm/universal/cached-runtime.d.ts +0 -115
- package/esm/universal/cached-runtime.d.ts.map +0 -1
- package/esm/universal/context.d.ts +0 -122
- package/esm/universal/context.d.ts.map +0 -1
- package/esm/universal/index.d.ts +0 -57
- package/esm/universal/index.d.ts.map +0 -1
- package/esm/universal/renderers/html.renderer.d.ts +0 -37
- package/esm/universal/renderers/html.renderer.d.ts.map +0 -1
- package/esm/universal/renderers/index.d.ts +0 -112
- package/esm/universal/renderers/index.d.ts.map +0 -1
- package/esm/universal/renderers/markdown.renderer.d.ts +0 -33
- package/esm/universal/renderers/markdown.renderer.d.ts.map +0 -1
- package/esm/universal/renderers/mdx.renderer.d.ts +0 -38
- package/esm/universal/renderers/mdx.renderer.d.ts.map +0 -1
- package/esm/universal/renderers/react.renderer.d.ts +0 -46
- package/esm/universal/renderers/react.renderer.d.ts.map +0 -1
- package/esm/universal/runtime-builder.d.ts +0 -33
- package/esm/universal/runtime-builder.d.ts.map +0 -1
- package/esm/universal/store.d.ts +0 -135
- package/esm/universal/store.d.ts.map +0 -1
- package/esm/universal/types.d.ts +0 -199
- package/esm/universal/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/esm/web-components/core/attribute-parser.d.ts +0 -82
- package/esm/web-components/core/attribute-parser.d.ts.map +0 -1
- package/esm/web-components/core/base-element.d.ts +0 -197
- package/esm/web-components/core/base-element.d.ts.map +0 -1
- package/esm/web-components/core/index.d.ts +0 -9
- package/esm/web-components/core/index.d.ts.map +0 -1
- package/esm/web-components/elements/fmcp-alert.d.ts +0 -46
- package/esm/web-components/elements/fmcp-alert.d.ts.map +0 -1
- package/esm/web-components/elements/fmcp-badge.d.ts +0 -47
- package/esm/web-components/elements/fmcp-badge.d.ts.map +0 -1
- package/esm/web-components/elements/fmcp-button.d.ts +0 -117
- package/esm/web-components/elements/fmcp-button.d.ts.map +0 -1
- package/esm/web-components/elements/fmcp-card.d.ts +0 -53
- package/esm/web-components/elements/fmcp-card.d.ts.map +0 -1
- package/esm/web-components/elements/fmcp-input.d.ts +0 -96
- package/esm/web-components/elements/fmcp-input.d.ts.map +0 -1
- package/esm/web-components/elements/fmcp-select.d.ts +0 -100
- package/esm/web-components/elements/fmcp-select.d.ts.map +0 -1
- package/esm/web-components/elements/index.d.ts +0 -13
- package/esm/web-components/elements/index.d.ts.map +0 -1
- package/esm/web-components/index.d.ts +0 -50
- package/esm/web-components/index.d.ts.map +0 -1
- package/esm/web-components/register.d.ts +0 -57
- package/esm/web-components/register.d.ts.map +0 -1
- package/esm/web-components/types.d.ts +0 -122
- package/esm/web-components/types.d.ts.map +0 -1
- package/esm/widgets/index.d.ts +0 -8
- package/esm/widgets/index.d.ts.map +0 -1
- package/esm/widgets/index.js +0 -941
- package/esm/widgets/progress.d.ts +0 -133
- package/esm/widgets/progress.d.ts.map +0 -1
- package/esm/widgets/resource.d.ts +0 -163
- package/esm/widgets/resource.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/pages/consent.d.ts +0 -117
- package/pages/consent.d.ts.map +0 -1
- package/pages/error.d.ts +0 -101
- package/pages/error.d.ts.map +0 -1
- package/pages/index.d.ts +0 -9
- package/pages/index.d.ts.map +0 -1
- package/pages/index.js +0 -1602
- package/react/utils.d.ts +0 -43
- package/react/utils.d.ts.map +0 -1
- 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/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 +0 -70
- 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/widgets/index.d.ts +0 -8
- package/widgets/index.d.ts.map +0 -1
- package/widgets/index.js +0 -978
- package/widgets/progress.d.ts +0 -133
- package/widgets/progress.d.ts.map +0 -1
- package/widgets/resource.d.ts +0 -163
- package/widgets/resource.d.ts.map +0 -1
- /package/esm/render/{index.js → index.mjs} +0 -0
package/components/index.js
CHANGED
|
@@ -815,83 +815,13 @@ var ActionListOptionsSchema = import_zod9.z.object({
|
|
|
815
815
|
className: import_zod9.z.string().optional()
|
|
816
816
|
}).strict();
|
|
817
817
|
|
|
818
|
-
// libs/ui/src/
|
|
819
|
-
var
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
supportsWidgets: true,
|
|
823
|
-
supportsTailwind: true,
|
|
824
|
-
supportsHtmx: false,
|
|
825
|
-
// Network blocked, HTMX won't work for API calls
|
|
826
|
-
networkMode: "blocked",
|
|
827
|
-
scriptStrategy: "inline",
|
|
828
|
-
maxInlineSize: 100 * 1024,
|
|
829
|
-
// 100KB limit for artifacts
|
|
830
|
-
cspRestrictions: ["script-src 'unsafe-inline'", "connect-src 'none'"],
|
|
831
|
-
options: {
|
|
832
|
-
mode: "artifacts",
|
|
833
|
-
framework: "react"
|
|
834
|
-
// Claude artifacts prefer React
|
|
835
|
-
}
|
|
836
|
-
};
|
|
837
|
-
|
|
838
|
-
// libs/ui/src/utils/escape-html.ts
|
|
839
|
-
function escapeHtml(str) {
|
|
840
|
-
if (str === null || str === void 0) {
|
|
841
|
-
return "";
|
|
842
|
-
}
|
|
843
|
-
const s = String(str);
|
|
844
|
-
return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
845
|
-
}
|
|
846
|
-
|
|
847
|
-
// libs/ui/src/validation/error-box.ts
|
|
848
|
-
var errorIcon = `<svg class="w-5 h-5 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
|
849
|
-
<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"/>
|
|
850
|
-
</svg>`;
|
|
851
|
-
function validationErrorBox(options) {
|
|
852
|
-
const { componentName, invalidParam } = options;
|
|
853
|
-
return `<div
|
|
854
|
-
class="validation-error flex items-start gap-3 p-4 bg-red-50 border border-red-200 text-red-800 rounded-lg"
|
|
855
|
-
role="alert"
|
|
856
|
-
data-testid="validation-error"
|
|
857
|
-
data-component="${escapeHtml(componentName)}"
|
|
858
|
-
data-param="${escapeHtml(invalidParam)}"
|
|
859
|
-
>
|
|
860
|
-
${errorIcon}
|
|
861
|
-
<div class="min-w-0">
|
|
862
|
-
<p class="font-semibold text-sm">${escapeHtml(componentName)}: Invalid Configuration</p>
|
|
863
|
-
<p class="text-sm opacity-90 mt-0.5">The "${escapeHtml(invalidParam)}" parameter is invalid.</p>
|
|
864
|
-
</div>
|
|
865
|
-
</div>`;
|
|
866
|
-
}
|
|
867
|
-
|
|
868
|
-
// libs/ui/src/validation/wrapper.ts
|
|
869
|
-
function getFirstInvalidPath(error) {
|
|
870
|
-
const firstError = error.issues[0];
|
|
871
|
-
if (!firstError || firstError.path.length === 0) {
|
|
872
|
-
return "options";
|
|
873
|
-
}
|
|
874
|
-
return firstError.path.map(String).join(".");
|
|
875
|
-
}
|
|
876
|
-
function validateOptions(options, config) {
|
|
877
|
-
const result = config.schema.safeParse(options);
|
|
878
|
-
if (result.success) {
|
|
879
|
-
return { success: true, data: result.data };
|
|
880
|
-
}
|
|
881
|
-
const invalidParam = getFirstInvalidPath(result.error);
|
|
882
|
-
return {
|
|
883
|
-
success: false,
|
|
884
|
-
error: validationErrorBox({
|
|
885
|
-
componentName: config.componentName,
|
|
886
|
-
invalidParam
|
|
887
|
-
})
|
|
888
|
-
};
|
|
889
|
-
}
|
|
890
|
-
|
|
891
|
-
// libs/ui/src/validation/schema-paths.ts
|
|
892
|
-
var import_zod10 = require("zod");
|
|
818
|
+
// libs/ui/src/layouts/base.ts
|
|
819
|
+
var import_theme = require("@frontmcp/uipack/theme");
|
|
820
|
+
var import_utils = require("@frontmcp/uipack/utils");
|
|
821
|
+
var import_utils2 = require("@frontmcp/uipack/utils");
|
|
893
822
|
|
|
894
823
|
// libs/ui/src/components/button.ts
|
|
824
|
+
var import_validation = require("@frontmcp/uipack/validation");
|
|
895
825
|
function getVariantClasses(variant) {
|
|
896
826
|
const variants = {
|
|
897
827
|
primary: "bg-primary hover:bg-primary/90 text-white shadow-sm",
|
|
@@ -941,7 +871,7 @@ function isValidHrefProtocol(href) {
|
|
|
941
871
|
return trimmed.startsWith("http://") || trimmed.startsWith("https://") || trimmed.startsWith("/") || trimmed.startsWith("#") || trimmed.startsWith("mailto:") || trimmed.startsWith("tel:");
|
|
942
872
|
}
|
|
943
873
|
function button(text, options = {}) {
|
|
944
|
-
const validation = validateOptions(options, {
|
|
874
|
+
const validation = (0, import_validation.validateOptions)(options, {
|
|
945
875
|
schema: ButtonOptionsSchema,
|
|
946
876
|
componentName: "button"
|
|
947
877
|
});
|
|
@@ -981,7 +911,7 @@ function button(text, options = {}) {
|
|
|
981
911
|
}
|
|
982
912
|
const variantClasses = getVariantClasses(variant);
|
|
983
913
|
const sizeClasses = getSizeClasses(size, iconOnly);
|
|
984
|
-
const safeClassName = className ? escapeHtml(className) : "";
|
|
914
|
+
const safeClassName = className ? (0, import_utils2.escapeHtml)(className) : "";
|
|
985
915
|
const baseClasses = [
|
|
986
916
|
"inline-flex items-center justify-center",
|
|
987
917
|
"font-medium",
|
|
@@ -996,24 +926,24 @@ function button(text, options = {}) {
|
|
|
996
926
|
].filter(Boolean).join(" ");
|
|
997
927
|
const dataAttrs = data ? Object.entries(data).map(([key, val]) => {
|
|
998
928
|
const safeKey = sanitizeDataKey(key);
|
|
999
|
-
return safeKey ? `data-${safeKey}="${escapeHtml(val)}"` : "";
|
|
929
|
+
return safeKey ? `data-${safeKey}="${(0, import_utils2.escapeHtml)(val)}"` : "";
|
|
1000
930
|
}).filter(Boolean).join(" ") : "";
|
|
1001
|
-
const idAttr = id ? `id="${escapeHtml(id)}"` : "";
|
|
1002
|
-
const nameAttr = name ? `name="${escapeHtml(name)}"` : "";
|
|
1003
|
-
const valueAttr = value ? `value="${escapeHtml(value)}"` : "";
|
|
931
|
+
const idAttr = id ? `id="${(0, import_utils2.escapeHtml)(id)}"` : "";
|
|
932
|
+
const nameAttr = name ? `name="${(0, import_utils2.escapeHtml)(name)}"` : "";
|
|
933
|
+
const valueAttr = value ? `value="${(0, import_utils2.escapeHtml)(value)}"` : "";
|
|
1004
934
|
const disabledAttr = disabled || loading ? "disabled" : "";
|
|
1005
|
-
const targetAttr = target ? `target="${escapeHtml(target)}"` : "";
|
|
935
|
+
const targetAttr = target ? `target="${(0, import_utils2.escapeHtml)(target)}"` : "";
|
|
1006
936
|
const relAttr = target === "_blank" ? 'rel="noopener noreferrer"' : "";
|
|
1007
937
|
const trimmedText = text.trim();
|
|
1008
938
|
const effectiveAriaLabel = ariaLabel ?? (iconOnly && trimmedText ? trimmedText : void 0);
|
|
1009
|
-
const ariaLabelAttr = effectiveAriaLabel ? `aria-label="${escapeHtml(effectiveAriaLabel)}"` : "";
|
|
939
|
+
const ariaLabelAttr = effectiveAriaLabel ? `aria-label="${(0, import_utils2.escapeHtml)(effectiveAriaLabel)}"` : "";
|
|
1010
940
|
const iconBeforeHtml = iconBefore && !loading ? `<span class="${iconOnly ? "" : "mr-2"}">${iconBefore}</span>` : "";
|
|
1011
941
|
const iconAfterHtml = iconAfter && !loading ? `<span class="${iconOnly ? "" : "ml-2"}">${iconAfter}</span>` : "";
|
|
1012
942
|
const loadingHtml = loading ? loadingSpinner : "";
|
|
1013
|
-
const textHtml = iconOnly ? "" : escapeHtml(text);
|
|
943
|
+
const textHtml = iconOnly ? "" : (0, import_utils2.escapeHtml)(text);
|
|
1014
944
|
const contentHtml = `${loadingHtml}${iconBeforeHtml}${textHtml}${iconAfterHtml}`;
|
|
1015
945
|
if (href && !disabled && !loading && isValidHrefProtocol(href)) {
|
|
1016
|
-
return `<a href="${escapeHtml(
|
|
946
|
+
return `<a href="${(0, import_utils2.escapeHtml)(
|
|
1017
947
|
href
|
|
1018
948
|
)}" class="${baseClasses}" ${idAttr} ${dataAttrs} ${ariaLabelAttr} ${targetAttr} ${relAttr}>
|
|
1019
949
|
${contentHtml}
|
|
@@ -1028,7 +958,7 @@ function buttonGroup(buttons, options = {}) {
|
|
|
1028
958
|
console.warn("[frontmcp/ui] buttonGroup called with empty buttons array");
|
|
1029
959
|
return "";
|
|
1030
960
|
}
|
|
1031
|
-
const validation = validateOptions(options, {
|
|
961
|
+
const validation = (0, import_validation.validateOptions)(options, {
|
|
1032
962
|
schema: ButtonGroupOptionsSchema,
|
|
1033
963
|
componentName: "buttonGroup"
|
|
1034
964
|
});
|
|
@@ -1037,7 +967,7 @@ function buttonGroup(buttons, options = {}) {
|
|
|
1037
967
|
}
|
|
1038
968
|
const validatedOptions = validation.data;
|
|
1039
969
|
const { attached = false, direction = "horizontal", gap = "md", className = "" } = validatedOptions;
|
|
1040
|
-
const safeClassName = className ? escapeHtml(className) : "";
|
|
970
|
+
const safeClassName = className ? (0, import_utils2.escapeHtml)(className) : "";
|
|
1041
971
|
if (attached) {
|
|
1042
972
|
const classes = direction === "horizontal" ? "inline-flex rounded-lg shadow-sm [&>*:first-child]:rounded-r-none [&>*:last-child]:rounded-l-none [&>*:not(:first-child):not(:last-child)]:rounded-none [&>*:not(:first-child)]:-ml-px" : "inline-flex flex-col rounded-lg shadow-sm [&>*:first-child]:rounded-b-none [&>*:last-child]:rounded-t-none [&>*:not(:first-child):not(:last-child)]:rounded-none [&>*:not(:first-child)]:-mt-px";
|
|
1043
973
|
return `<div class="${classes} ${safeClassName}">${buttons.join("")}</div>`;
|
|
@@ -1074,7 +1004,7 @@ function getSizeClasses2(size) {
|
|
|
1074
1004
|
}
|
|
1075
1005
|
function buildDataAttrs(data) {
|
|
1076
1006
|
if (!data) return "";
|
|
1077
|
-
return Object.entries(data).map(([key, value]) => `data-${key}="${escapeHtml(value)}"`).join(" ");
|
|
1007
|
+
return Object.entries(data).map(([key, value]) => `data-${key}="${(0, import_utils2.escapeHtml)(value)}"`).join(" ");
|
|
1078
1008
|
}
|
|
1079
1009
|
function card(content, options = {}) {
|
|
1080
1010
|
const {
|
|
@@ -1095,18 +1025,18 @@ function card(content, options = {}) {
|
|
|
1095
1025
|
const clickableClasses = clickable ? "cursor-pointer hover:shadow-md transition-shadow" : "";
|
|
1096
1026
|
const allClasses = [variantClasses, sizeClasses, clickableClasses, className].filter(Boolean).join(" ");
|
|
1097
1027
|
const dataAttrs = buildDataAttrs(data);
|
|
1098
|
-
const idAttr = id ? `id="${escapeHtml(id)}"` : "";
|
|
1028
|
+
const idAttr = id ? `id="${(0, import_utils2.escapeHtml)(id)}"` : "";
|
|
1099
1029
|
const hasHeader = title || subtitle || headerActions;
|
|
1100
1030
|
const headerHtml = hasHeader ? `<div class="flex items-start justify-between mb-4">
|
|
1101
1031
|
<div>
|
|
1102
|
-
${title ? `<h3 class="text-lg font-semibold text-text-primary">${escapeHtml(title)}</h3>` : ""}
|
|
1103
|
-
${subtitle ? `<p class="text-sm text-text-secondary mt-1">${escapeHtml(subtitle)}</p>` : ""}
|
|
1032
|
+
${title ? `<h3 class="text-lg font-semibold text-text-primary">${(0, import_utils2.escapeHtml)(title)}</h3>` : ""}
|
|
1033
|
+
${subtitle ? `<p class="text-sm text-text-secondary mt-1">${(0, import_utils2.escapeHtml)(subtitle)}</p>` : ""}
|
|
1104
1034
|
</div>
|
|
1105
1035
|
${headerActions ? `<div class="flex items-center gap-2">${headerActions}</div>` : ""}
|
|
1106
1036
|
</div>` : "";
|
|
1107
1037
|
const footerHtml = footer ? `<div class="mt-4 pt-4 border-t border-divider">${footer}</div>` : "";
|
|
1108
1038
|
if (href) {
|
|
1109
|
-
return `<a href="${escapeHtml(href)}" class="${allClasses}" ${idAttr} ${dataAttrs}>
|
|
1039
|
+
return `<a href="${(0, import_utils2.escapeHtml)(href)}" class="${allClasses}" ${idAttr} ${dataAttrs}>
|
|
1110
1040
|
${headerHtml}
|
|
1111
1041
|
${content}
|
|
1112
1042
|
${footerHtml}
|
|
@@ -1147,7 +1077,7 @@ function getInputStateClasses(state) {
|
|
|
1147
1077
|
}
|
|
1148
1078
|
function buildDataAttrs2(data) {
|
|
1149
1079
|
if (!data) return "";
|
|
1150
|
-
return Object.entries(data).map(([key, value]) => `data-${key}="${escapeHtml(value)}"`).join(" ");
|
|
1080
|
+
return Object.entries(data).map(([key, value]) => `data-${key}="${(0, import_utils2.escapeHtml)(value)}"`).join(" ");
|
|
1151
1081
|
}
|
|
1152
1082
|
function input(options) {
|
|
1153
1083
|
const {
|
|
@@ -1190,26 +1120,26 @@ function input(options) {
|
|
|
1190
1120
|
const dataAttrs = buildDataAttrs2(data);
|
|
1191
1121
|
const inputAttrs = [
|
|
1192
1122
|
`type="${type}"`,
|
|
1193
|
-
`name="${escapeHtml(name)}"`,
|
|
1194
|
-
`id="${escapeHtml(id)}"`,
|
|
1195
|
-
value ? `value="${escapeHtml(value)}"` : "",
|
|
1196
|
-
placeholder ? `placeholder="${escapeHtml(placeholder)}"` : "",
|
|
1123
|
+
`name="${(0, import_utils2.escapeHtml)(name)}"`,
|
|
1124
|
+
`id="${(0, import_utils2.escapeHtml)(id)}"`,
|
|
1125
|
+
value ? `value="${(0, import_utils2.escapeHtml)(value)}"` : "",
|
|
1126
|
+
placeholder ? `placeholder="${(0, import_utils2.escapeHtml)(placeholder)}"` : "",
|
|
1197
1127
|
required ? "required" : "",
|
|
1198
1128
|
disabled ? "disabled" : "",
|
|
1199
1129
|
readonly ? "readonly" : "",
|
|
1200
|
-
autocomplete ? `autocomplete="${escapeHtml(autocomplete)}"` : "",
|
|
1201
|
-
pattern ? `pattern="${escapeHtml(pattern)}"` : "",
|
|
1202
|
-
min !== void 0 ? `min="${escapeHtml(String(min))}"` : "",
|
|
1203
|
-
max !== void 0 ? `max="${escapeHtml(String(max))}"` : "",
|
|
1204
|
-
step !== void 0 ? `step="${escapeHtml(String(step))}"` : "",
|
|
1130
|
+
autocomplete ? `autocomplete="${(0, import_utils2.escapeHtml)(autocomplete)}"` : "",
|
|
1131
|
+
pattern ? `pattern="${(0, import_utils2.escapeHtml)(pattern)}"` : "",
|
|
1132
|
+
min !== void 0 ? `min="${(0, import_utils2.escapeHtml)(String(min))}"` : "",
|
|
1133
|
+
max !== void 0 ? `max="${(0, import_utils2.escapeHtml)(String(max))}"` : "",
|
|
1134
|
+
step !== void 0 ? `step="${(0, import_utils2.escapeHtml)(String(step))}"` : "",
|
|
1205
1135
|
`class="${baseClasses}"`,
|
|
1206
1136
|
dataAttrs
|
|
1207
1137
|
].filter(Boolean).join(" ");
|
|
1208
|
-
const labelHtml = label ? `<label for="${escapeHtml(id)}" class="block text-sm font-medium text-text-primary mb-1.5">
|
|
1209
|
-
${escapeHtml(label)}${required ? '<span class="text-danger ml-1">*</span>' : ""}
|
|
1138
|
+
const labelHtml = label ? `<label for="${(0, import_utils2.escapeHtml)(id)}" class="block text-sm font-medium text-text-primary mb-1.5">
|
|
1139
|
+
${(0, import_utils2.escapeHtml)(label)}${required ? '<span class="text-danger ml-1">*</span>' : ""}
|
|
1210
1140
|
</label>` : "";
|
|
1211
|
-
const helperHtml = helper && !error ? `<p class="mt-1.5 text-sm text-text-secondary">${escapeHtml(helper)}</p>` : "";
|
|
1212
|
-
const errorHtml = error ? `<p class="mt-1.5 text-sm text-danger">${escapeHtml(error)}</p>` : "";
|
|
1141
|
+
const helperHtml = helper && !error ? `<p class="mt-1.5 text-sm text-text-secondary">${(0, import_utils2.escapeHtml)(helper)}</p>` : "";
|
|
1142
|
+
const errorHtml = error ? `<p class="mt-1.5 text-sm text-danger">${(0, import_utils2.escapeHtml)(error)}</p>` : "";
|
|
1213
1143
|
const iconBeforeHtml = iconBefore ? `<span class="absolute left-3 top-1/2 -translate-y-1/2 text-text-secondary">${iconBefore}</span>` : "";
|
|
1214
1144
|
const iconAfterHtml = iconAfter ? `<span class="absolute right-3 top-1/2 -translate-y-1/2 text-text-secondary">${iconAfter}</span>` : "";
|
|
1215
1145
|
const inputHtml = hasIcon ? `<div class="relative">
|
|
@@ -1256,18 +1186,18 @@ function select(options) {
|
|
|
1256
1186
|
const optionsHtml = selectOptions.map((opt) => {
|
|
1257
1187
|
const selected = opt.selected || opt.value === value ? "selected" : "";
|
|
1258
1188
|
const optDisabled = opt.disabled ? "disabled" : "";
|
|
1259
|
-
return `<option value="${escapeHtml(opt.value)}" ${selected} ${optDisabled}>${escapeHtml(opt.label)}</option>`;
|
|
1189
|
+
return `<option value="${(0, import_utils2.escapeHtml)(opt.value)}" ${selected} ${optDisabled}>${(0, import_utils2.escapeHtml)(opt.label)}</option>`;
|
|
1260
1190
|
}).join("\n");
|
|
1261
|
-
const labelHtml = label ? `<label for="${escapeHtml(id)}" class="block text-sm font-medium text-text-primary mb-1.5">
|
|
1262
|
-
${escapeHtml(label)}${required ? '<span class="text-danger ml-1">*</span>' : ""}
|
|
1191
|
+
const labelHtml = label ? `<label for="${(0, import_utils2.escapeHtml)(id)}" class="block text-sm font-medium text-text-primary mb-1.5">
|
|
1192
|
+
${(0, import_utils2.escapeHtml)(label)}${required ? '<span class="text-danger ml-1">*</span>' : ""}
|
|
1263
1193
|
</label>` : "";
|
|
1264
|
-
const helperHtml = helper && !error ? `<p class="mt-1.5 text-sm text-text-secondary">${escapeHtml(helper)}</p>` : "";
|
|
1265
|
-
const errorHtml = error ? `<p class="mt-1.5 text-sm text-danger">${escapeHtml(error)}</p>` : "";
|
|
1194
|
+
const helperHtml = helper && !error ? `<p class="mt-1.5 text-sm text-text-secondary">${(0, import_utils2.escapeHtml)(helper)}</p>` : "";
|
|
1195
|
+
const errorHtml = error ? `<p class="mt-1.5 text-sm text-danger">${(0, import_utils2.escapeHtml)(error)}</p>` : "";
|
|
1266
1196
|
return `<div class="form-field">
|
|
1267
1197
|
${labelHtml}
|
|
1268
1198
|
<select
|
|
1269
|
-
name="${escapeHtml(name)}"
|
|
1270
|
-
id="${escapeHtml(id)}"
|
|
1199
|
+
name="${(0, import_utils2.escapeHtml)(name)}"
|
|
1200
|
+
id="${(0, import_utils2.escapeHtml)(id)}"
|
|
1271
1201
|
class="${baseClasses}"
|
|
1272
1202
|
${required ? "required" : ""}
|
|
1273
1203
|
${disabled ? "disabled" : ""}
|
|
@@ -1318,24 +1248,24 @@ function textarea(options) {
|
|
|
1318
1248
|
className
|
|
1319
1249
|
].filter(Boolean).join(" ");
|
|
1320
1250
|
const dataAttrs = buildDataAttrs2(data);
|
|
1321
|
-
const labelHtml = label ? `<label for="${escapeHtml(id)}" class="block text-sm font-medium text-text-primary mb-1.5">
|
|
1322
|
-
${escapeHtml(label)}${required ? '<span class="text-danger ml-1">*</span>' : ""}
|
|
1251
|
+
const labelHtml = label ? `<label for="${(0, import_utils2.escapeHtml)(id)}" class="block text-sm font-medium text-text-primary mb-1.5">
|
|
1252
|
+
${(0, import_utils2.escapeHtml)(label)}${required ? '<span class="text-danger ml-1">*</span>' : ""}
|
|
1323
1253
|
</label>` : "";
|
|
1324
|
-
const helperHtml = helper && !error ? `<p class="mt-1.5 text-sm text-text-secondary">${escapeHtml(helper)}</p>` : "";
|
|
1325
|
-
const errorHtml = error ? `<p class="mt-1.5 text-sm text-danger">${escapeHtml(error)}</p>` : "";
|
|
1254
|
+
const helperHtml = helper && !error ? `<p class="mt-1.5 text-sm text-text-secondary">${(0, import_utils2.escapeHtml)(helper)}</p>` : "";
|
|
1255
|
+
const errorHtml = error ? `<p class="mt-1.5 text-sm text-danger">${(0, import_utils2.escapeHtml)(error)}</p>` : "";
|
|
1326
1256
|
return `<div class="form-field">
|
|
1327
1257
|
${labelHtml}
|
|
1328
1258
|
<textarea
|
|
1329
|
-
name="${escapeHtml(name)}"
|
|
1330
|
-
id="${escapeHtml(id)}"
|
|
1259
|
+
name="${(0, import_utils2.escapeHtml)(name)}"
|
|
1260
|
+
id="${(0, import_utils2.escapeHtml)(id)}"
|
|
1331
1261
|
rows="${rows}"
|
|
1332
1262
|
class="${baseClasses}"
|
|
1333
|
-
${placeholder ? `placeholder="${escapeHtml(placeholder)}"` : ""}
|
|
1263
|
+
${placeholder ? `placeholder="${(0, import_utils2.escapeHtml)(placeholder)}"` : ""}
|
|
1334
1264
|
${required ? "required" : ""}
|
|
1335
1265
|
${disabled ? "disabled" : ""}
|
|
1336
1266
|
${readonly ? "readonly" : ""}
|
|
1337
1267
|
${dataAttrs}
|
|
1338
|
-
>${escapeHtml(value)}</textarea>
|
|
1268
|
+
>${(0, import_utils2.escapeHtml)(value)}</textarea>
|
|
1339
1269
|
${helperHtml}
|
|
1340
1270
|
${errorHtml}
|
|
1341
1271
|
</div>`;
|
|
@@ -1357,21 +1287,21 @@ function checkbox(options) {
|
|
|
1357
1287
|
"focus:ring-2 focus:ring-primary/20 focus:ring-offset-0",
|
|
1358
1288
|
disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"
|
|
1359
1289
|
].join(" ");
|
|
1360
|
-
const helperHtml = helper && !error ? `<p class="text-sm text-text-secondary">${escapeHtml(helper)}</p>` : "";
|
|
1361
|
-
const errorHtml = error ? `<p class="text-sm text-danger">${escapeHtml(error)}</p>` : "";
|
|
1290
|
+
const helperHtml = helper && !error ? `<p class="text-sm text-text-secondary">${(0, import_utils2.escapeHtml)(helper)}</p>` : "";
|
|
1291
|
+
const errorHtml = error ? `<p class="text-sm text-danger">${(0, import_utils2.escapeHtml)(error)}</p>` : "";
|
|
1362
1292
|
return `<div class="form-field ${className}">
|
|
1363
1293
|
<label class="flex items-start gap-3 ${disabled ? "cursor-not-allowed" : "cursor-pointer"}">
|
|
1364
1294
|
<input
|
|
1365
1295
|
type="checkbox"
|
|
1366
|
-
name="${escapeHtml(name)}"
|
|
1367
|
-
id="${escapeHtml(id)}"
|
|
1368
|
-
value="${escapeHtml(value)}"
|
|
1296
|
+
name="${(0, import_utils2.escapeHtml)(name)}"
|
|
1297
|
+
id="${(0, import_utils2.escapeHtml)(id)}"
|
|
1298
|
+
value="${(0, import_utils2.escapeHtml)(value)}"
|
|
1369
1299
|
class="${checkboxClasses}"
|
|
1370
1300
|
${checked ? "checked" : ""}
|
|
1371
1301
|
${disabled ? "disabled" : ""}
|
|
1372
1302
|
>
|
|
1373
1303
|
<div>
|
|
1374
|
-
<span class="text-sm font-medium text-text-primary">${escapeHtml(label)}</span>
|
|
1304
|
+
<span class="text-sm font-medium text-text-primary">${(0, import_utils2.escapeHtml)(label)}</span>
|
|
1375
1305
|
${helperHtml}
|
|
1376
1306
|
${errorHtml}
|
|
1377
1307
|
</div>
|
|
@@ -1390,19 +1320,19 @@ function radioGroup(options) {
|
|
|
1390
1320
|
return `<label class="flex items-center gap-2 ${cursorClass}">
|
|
1391
1321
|
<input
|
|
1392
1322
|
type="radio"
|
|
1393
|
-
name="${escapeHtml(name)}"
|
|
1394
|
-
id="${escapeHtml(radioId)}"
|
|
1395
|
-
value="${escapeHtml(opt.value)}"
|
|
1323
|
+
name="${(0, import_utils2.escapeHtml)(name)}"
|
|
1324
|
+
id="${(0, import_utils2.escapeHtml)(radioId)}"
|
|
1325
|
+
value="${(0, import_utils2.escapeHtml)(opt.value)}"
|
|
1396
1326
|
class="${radioClasses}"
|
|
1397
1327
|
${checked}
|
|
1398
1328
|
${disabled}
|
|
1399
1329
|
>
|
|
1400
|
-
<span class="text-sm text-text-primary">${escapeHtml(opt.label)}</span>
|
|
1330
|
+
<span class="text-sm text-text-primary">${(0, import_utils2.escapeHtml)(opt.label)}</span>
|
|
1401
1331
|
</label>`;
|
|
1402
1332
|
}).join("\n");
|
|
1403
|
-
const labelHtml = label ? `<label class="block text-sm font-medium text-text-primary mb-2">${escapeHtml(label)}</label>` : "";
|
|
1404
|
-
const helperHtml = helper && !error ? `<p class="mt-1.5 text-sm text-text-secondary">${escapeHtml(helper)}</p>` : "";
|
|
1405
|
-
const errorHtml = error ? `<p class="mt-1.5 text-sm text-danger">${escapeHtml(error)}</p>` : "";
|
|
1333
|
+
const labelHtml = label ? `<label class="block text-sm font-medium text-text-primary mb-2">${(0, import_utils2.escapeHtml)(label)}</label>` : "";
|
|
1334
|
+
const helperHtml = helper && !error ? `<p class="mt-1.5 text-sm text-text-secondary">${(0, import_utils2.escapeHtml)(helper)}</p>` : "";
|
|
1335
|
+
const errorHtml = error ? `<p class="mt-1.5 text-sm text-danger">${(0, import_utils2.escapeHtml)(error)}</p>` : "";
|
|
1406
1336
|
return `<div class="form-field ${className}" role="radiogroup">
|
|
1407
1337
|
${labelHtml}
|
|
1408
1338
|
<div class="${directionClasses}">
|
|
@@ -1415,10 +1345,10 @@ function radioGroup(options) {
|
|
|
1415
1345
|
function form(content, options = {}) {
|
|
1416
1346
|
const { action, method = "post", id, className = "", preventDefault = false, autocomplete, enctype } = options;
|
|
1417
1347
|
const attrs = [
|
|
1418
|
-
action ? `action="${escapeHtml(action)}"` : "",
|
|
1348
|
+
action ? `action="${(0, import_utils2.escapeHtml)(action)}"` : "",
|
|
1419
1349
|
`method="${method}"`,
|
|
1420
|
-
id ? `id="${escapeHtml(id)}"` : "",
|
|
1421
|
-
className ? `class="${escapeHtml(className)}"` : "",
|
|
1350
|
+
id ? `id="${(0, import_utils2.escapeHtml)(id)}"` : "",
|
|
1351
|
+
className ? `class="${(0, import_utils2.escapeHtml)(className)}"` : "",
|
|
1422
1352
|
autocomplete ? `autocomplete="${autocomplete}"` : "",
|
|
1423
1353
|
enctype ? `enctype="${enctype}"` : "",
|
|
1424
1354
|
preventDefault ? 'onsubmit="return false;"' : ""
|
|
@@ -1435,8 +1365,8 @@ function formRow(fields, options = {}) {
|
|
|
1435
1365
|
function formSection(content, options = {}) {
|
|
1436
1366
|
const { title, description, className = "" } = options;
|
|
1437
1367
|
const headerHtml = title ? `<div class="mb-4">
|
|
1438
|
-
<h3 class="text-lg font-semibold text-text-primary">${escapeHtml(title)}</h3>
|
|
1439
|
-
${description ? `<p class="text-sm text-text-secondary mt-1">${escapeHtml(description)}</p>` : ""}
|
|
1368
|
+
<h3 class="text-lg font-semibold text-text-primary">${(0, import_utils2.escapeHtml)(title)}</h3>
|
|
1369
|
+
${description ? `<p class="text-sm text-text-secondary mt-1">${(0, import_utils2.escapeHtml)(description)}</p>` : ""}
|
|
1440
1370
|
</div>` : "";
|
|
1441
1371
|
return `<div class="form-section ${className}">
|
|
1442
1372
|
${headerHtml}
|
|
@@ -1458,7 +1388,7 @@ function formActions(buttons, options = {}) {
|
|
|
1458
1388
|
</div>`;
|
|
1459
1389
|
}
|
|
1460
1390
|
function hiddenInput(name, value) {
|
|
1461
|
-
return `<input type="hidden" name="${escapeHtml(name)}" value="${escapeHtml(value)}">`;
|
|
1391
|
+
return `<input type="hidden" name="${(0, import_utils2.escapeHtml)(name)}" value="${(0, import_utils2.escapeHtml)(value)}">`;
|
|
1462
1392
|
}
|
|
1463
1393
|
function csrfInput(token) {
|
|
1464
1394
|
return hiddenInput("_csrf", token);
|
|
@@ -1516,7 +1446,7 @@ function badge(text, options = {}) {
|
|
|
1516
1446
|
outline: "border border-current"
|
|
1517
1447
|
};
|
|
1518
1448
|
const dotClasses = ["inline-block rounded-full", getSizeClasses3(size, true), dotVariants[variant], className].filter(Boolean).join(" ");
|
|
1519
|
-
return `<span class="${dotClasses}" aria-label="${escapeHtml(text)}" title="${escapeHtml(text)}"></span>`;
|
|
1449
|
+
return `<span class="${dotClasses}" aria-label="${(0, import_utils2.escapeHtml)(text)}" title="${(0, import_utils2.escapeHtml)(text)}"></span>`;
|
|
1520
1450
|
}
|
|
1521
1451
|
const variantClasses = getVariantClasses3(variant);
|
|
1522
1452
|
const sizeClasses = getSizeClasses3(size, false);
|
|
@@ -1539,7 +1469,7 @@ function badge(text, options = {}) {
|
|
|
1539
1469
|
</svg>
|
|
1540
1470
|
</button>` : "";
|
|
1541
1471
|
return `<span class="${baseClasses}">
|
|
1542
|
-
${iconHtml}${escapeHtml(text)}${removeHtml}
|
|
1472
|
+
${iconHtml}${(0, import_utils2.escapeHtml)(text)}${removeHtml}
|
|
1543
1473
|
</span>`;
|
|
1544
1474
|
}
|
|
1545
1475
|
function badgeGroup(badges, options = {}) {
|
|
@@ -1610,7 +1540,7 @@ function alert(message, options = {}) {
|
|
|
1610
1540
|
const iconHtml = showIcon ? `<div class="flex-shrink-0 ${variantClasses.icon}">
|
|
1611
1541
|
${icon || alertIcons[variant]}
|
|
1612
1542
|
</div>` : "";
|
|
1613
|
-
const titleHtml = title ? `<h3 class="font-semibold">${escapeHtml(title)}</h3>` : "";
|
|
1543
|
+
const titleHtml = title ? `<h3 class="font-semibold">${(0, import_utils2.escapeHtml)(title)}</h3>` : "";
|
|
1614
1544
|
const dismissHtml = dismissible ? `<button
|
|
1615
1545
|
type="button"
|
|
1616
1546
|
class="flex-shrink-0 ml-auto -mr-1 -mt-1 p-1 rounded hover:bg-black/5 transition-colors"
|
|
@@ -1622,13 +1552,13 @@ function alert(message, options = {}) {
|
|
|
1622
1552
|
</svg>
|
|
1623
1553
|
</button>` : "";
|
|
1624
1554
|
const actionsHtml = actions ? `<div class="mt-3">${actions}</div>` : "";
|
|
1625
|
-
const idAttr = id ? `id="${escapeHtml(id)}"` : "";
|
|
1555
|
+
const idAttr = id ? `id="${(0, import_utils2.escapeHtml)(id)}"` : "";
|
|
1626
1556
|
return `<div class="alert ${baseClasses}" role="alert" ${idAttr}>
|
|
1627
1557
|
<div class="flex gap-3">
|
|
1628
1558
|
${iconHtml}
|
|
1629
1559
|
<div class="flex-1">
|
|
1630
1560
|
${titleHtml}
|
|
1631
|
-
<div class="${title ? "mt-1" : ""}">${escapeHtml(message)}</div>
|
|
1561
|
+
<div class="${title ? "mt-1" : ""}">${(0, import_utils2.escapeHtml)(message)}</div>
|
|
1632
1562
|
${actionsHtml}
|
|
1633
1563
|
</div>
|
|
1634
1564
|
${dismissHtml}
|
|
@@ -1650,7 +1580,7 @@ function toast(message, options = {}) {
|
|
|
1650
1580
|
"top-center": "top-4 left-1/2 -translate-x-1/2",
|
|
1651
1581
|
"bottom-center": "bottom-4 left-1/2 -translate-x-1/2"
|
|
1652
1582
|
};
|
|
1653
|
-
const titleHtml = title ? `<h4 class="font-semibold">${escapeHtml(title)}</h4>` : "";
|
|
1583
|
+
const titleHtml = title ? `<h4 class="font-semibold">${(0, import_utils2.escapeHtml)(title)}</h4>` : "";
|
|
1654
1584
|
const autoDismissScript = duration > 0 ? `<script>
|
|
1655
1585
|
setTimeout(() => {
|
|
1656
1586
|
const toast = document.getElementById('${id}');
|
|
@@ -1661,7 +1591,7 @@ function toast(message, options = {}) {
|
|
|
1661
1591
|
}, ${duration});
|
|
1662
1592
|
</script>` : "";
|
|
1663
1593
|
return `<div
|
|
1664
|
-
id="${escapeHtml(id)}"
|
|
1594
|
+
id="${(0, import_utils2.escapeHtml)(id)}"
|
|
1665
1595
|
class="fixed ${positionClasses[position]} z-50 min-w-[300px] max-w-md rounded-lg border shadow-lg ${variantClasses.container} transition-all duration-300 transform"
|
|
1666
1596
|
role="alert"
|
|
1667
1597
|
>
|
|
@@ -1671,7 +1601,7 @@ function toast(message, options = {}) {
|
|
|
1671
1601
|
</div>
|
|
1672
1602
|
<div class="flex-1">
|
|
1673
1603
|
${titleHtml}
|
|
1674
|
-
<p class="${title ? "mt-1 text-sm opacity-90" : ""}">${escapeHtml(message)}</p>
|
|
1604
|
+
<p class="${title ? "mt-1 text-sm opacity-90" : ""}">${(0, import_utils2.escapeHtml)(message)}</p>
|
|
1675
1605
|
</div>
|
|
1676
1606
|
<button
|
|
1677
1607
|
type="button"
|
|
@@ -1696,7 +1626,7 @@ function toastContainer(position = "top-right", id = "toast-container") {
|
|
|
1696
1626
|
"top-center": "top-4 left-1/2 -translate-x-1/2",
|
|
1697
1627
|
"bottom-center": "bottom-4 left-1/2 -translate-x-1/2"
|
|
1698
1628
|
};
|
|
1699
|
-
return `<div id="${escapeHtml(id)}" class="fixed ${positionClasses[position]} z-50 flex flex-col gap-2"></div>`;
|
|
1629
|
+
return `<div id="${(0, import_utils2.escapeHtml)(id)}" class="fixed ${positionClasses[position]} z-50 flex flex-col gap-2"></div>`;
|
|
1700
1630
|
}
|
|
1701
1631
|
|
|
1702
1632
|
// libs/ui/src/components/avatar.ts
|
|
@@ -1769,7 +1699,7 @@ function avatar(options) {
|
|
|
1769
1699
|
shapeClasses,
|
|
1770
1700
|
className
|
|
1771
1701
|
].filter(Boolean).join(" ");
|
|
1772
|
-
const contentHtml = src ? `<img src="${escapeHtml(src)}" alt="${escapeHtml(alt)}" class="w-full h-full object-cover">` : `<span class="font-medium text-white ${sizeClasses.text}">${escapeHtml(displayInitials)}</span>`;
|
|
1702
|
+
const contentHtml = src ? `<img src="${(0, import_utils2.escapeHtml)(src)}" alt="${(0, import_utils2.escapeHtml)(alt)}" class="w-full h-full object-cover">` : `<span class="font-medium text-white ${sizeClasses.text}">${(0, import_utils2.escapeHtml)(displayInitials)}</span>`;
|
|
1773
1703
|
const bgClasses = src ? "bg-gray-200" : displayBgColor;
|
|
1774
1704
|
const statusHtml = status !== "none" ? `<span class="absolute bottom-0 right-0 block ${sizeClasses.status} ${shapeClasses} ${statusColor} border-white"></span>` : "";
|
|
1775
1705
|
const innerHtml = `
|
|
@@ -1779,7 +1709,7 @@ function avatar(options) {
|
|
|
1779
1709
|
</div>
|
|
1780
1710
|
`;
|
|
1781
1711
|
if (href) {
|
|
1782
|
-
return `<a href="${escapeHtml(href)}" class="inline-block">${innerHtml}</a>`;
|
|
1712
|
+
return `<a href="${(0, import_utils2.escapeHtml)(href)}" class="inline-block">${innerHtml}</a>`;
|
|
1783
1713
|
}
|
|
1784
1714
|
return innerHtml;
|
|
1785
1715
|
}
|
|
@@ -1814,8 +1744,8 @@ function avatarWithText(options) {
|
|
|
1814
1744
|
const avatarHtml = avatar({ ...avatarOptions, alt: avatarOptions.alt || name });
|
|
1815
1745
|
const textHtml = `
|
|
1816
1746
|
<div class="${align === "right" ? "text-right" : ""}">
|
|
1817
|
-
<div class="font-medium text-text-primary">${escapeHtml(name)}</div>
|
|
1818
|
-
${subtitle ? `<div class="text-sm text-text-secondary">${escapeHtml(subtitle)}</div>` : ""}
|
|
1747
|
+
<div class="font-medium text-text-primary">${(0, import_utils2.escapeHtml)(name)}</div>
|
|
1748
|
+
${subtitle ? `<div class="text-sm text-text-secondary">${(0, import_utils2.escapeHtml)(subtitle)}</div>` : ""}
|
|
1819
1749
|
</div>
|
|
1820
1750
|
`;
|
|
1821
1751
|
const flexDirection = align === "right" ? "flex-row-reverse" : "flex-row";
|
|
@@ -1860,12 +1790,12 @@ function modal(content, options) {
|
|
|
1860
1790
|
const sizeClasses = getSizeClasses5(size);
|
|
1861
1791
|
const visibilityClasses = open ? "" : "hidden";
|
|
1862
1792
|
const headerHtml = title || showClose ? `<div class="flex items-center justify-between p-4 border-b border-divider">
|
|
1863
|
-
${title ? `<h3 class="text-lg font-semibold text-text-primary">${escapeHtml(title)}</h3>` : "<div></div>"}
|
|
1793
|
+
${title ? `<h3 class="text-lg font-semibold text-text-primary">${(0, import_utils2.escapeHtml)(title)}</h3>` : "<div></div>"}
|
|
1864
1794
|
${showClose ? `
|
|
1865
1795
|
<button
|
|
1866
1796
|
type="button"
|
|
1867
1797
|
class="p-1 rounded-lg text-text-secondary hover:text-text-primary hover:bg-gray-100 transition-colors"
|
|
1868
|
-
onclick="document.getElementById('${escapeHtml(id)}').classList.add('hidden')"
|
|
1798
|
+
onclick="document.getElementById('${(0, import_utils2.escapeHtml)(id)}').classList.add('hidden')"
|
|
1869
1799
|
aria-label="Close"
|
|
1870
1800
|
>
|
|
1871
1801
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
@@ -1881,18 +1811,18 @@ function modal(content, options) {
|
|
|
1881
1811
|
const escapeHandler = closeOnEscape ? `<script>
|
|
1882
1812
|
document.addEventListener('keydown', function(e) {
|
|
1883
1813
|
if (e.key === 'Escape') {
|
|
1884
|
-
document.getElementById('${escapeHtml(id)}')?.classList.add('hidden');
|
|
1814
|
+
document.getElementById('${(0, import_utils2.escapeHtml)(id)}')?.classList.add('hidden');
|
|
1885
1815
|
}
|
|
1886
1816
|
});
|
|
1887
1817
|
</script>` : "";
|
|
1888
1818
|
return `
|
|
1889
1819
|
<div
|
|
1890
|
-
id="${escapeHtml(id)}"
|
|
1820
|
+
id="${(0, import_utils2.escapeHtml)(id)}"
|
|
1891
1821
|
class="fixed inset-0 z-50 overflow-y-auto ${visibilityClasses}"
|
|
1892
1822
|
${backdropClickHandler}
|
|
1893
1823
|
role="dialog"
|
|
1894
1824
|
aria-modal="true"
|
|
1895
|
-
aria-labelledby="${escapeHtml(id)}-title"
|
|
1825
|
+
aria-labelledby="${(0, import_utils2.escapeHtml)(id)}-title"
|
|
1896
1826
|
>
|
|
1897
1827
|
<!-- Backdrop -->
|
|
1898
1828
|
<div class="fixed inset-0 bg-black/50 transition-opacity"></div>
|
|
@@ -1915,7 +1845,7 @@ function modalTrigger(triggerContent, modalId, options = {}) {
|
|
|
1915
1845
|
const { className = "", tag = "button" } = options;
|
|
1916
1846
|
const attrs = `
|
|
1917
1847
|
class="${className}"
|
|
1918
|
-
onclick="document.getElementById('${escapeHtml(modalId)}').classList.remove('hidden')"
|
|
1848
|
+
onclick="document.getElementById('${(0, import_utils2.escapeHtml)(modalId)}').classList.remove('hidden')"
|
|
1919
1849
|
`;
|
|
1920
1850
|
if (tag === "button") {
|
|
1921
1851
|
return `<button type="button" ${attrs}>${triggerContent}</button>`;
|
|
@@ -1960,29 +1890,29 @@ function confirmModal(options) {
|
|
|
1960
1890
|
<div class="mx-auto w-12 h-12 rounded-full ${iconColors[variant]} flex items-center justify-center mb-4">
|
|
1961
1891
|
${displayIcon}
|
|
1962
1892
|
</div>
|
|
1963
|
-
<h3 class="text-lg font-semibold text-text-primary mb-2">${escapeHtml(title)}</h3>
|
|
1964
|
-
<p class="text-text-secondary">${escapeHtml(message)}</p>
|
|
1893
|
+
<h3 class="text-lg font-semibold text-text-primary mb-2">${(0, import_utils2.escapeHtml)(title)}</h3>
|
|
1894
|
+
<p class="text-text-secondary">${(0, import_utils2.escapeHtml)(message)}</p>
|
|
1965
1895
|
</div>
|
|
1966
1896
|
`;
|
|
1967
1897
|
const confirmButton = confirmHref && isSafeUrl(confirmHref) ? `<a
|
|
1968
|
-
href="${escapeHtml(confirmHref)}"
|
|
1898
|
+
href="${(0, import_utils2.escapeHtml)(confirmHref)}"
|
|
1969
1899
|
class="px-4 py-2 rounded-lg ${variantClasses[variant]} transition-colors"
|
|
1970
1900
|
>
|
|
1971
|
-
${escapeHtml(confirmText)}
|
|
1901
|
+
${(0, import_utils2.escapeHtml)(confirmText)}
|
|
1972
1902
|
</a>` : `<button
|
|
1973
1903
|
type="button"
|
|
1974
1904
|
class="px-4 py-2 rounded-lg ${variantClasses[variant]} transition-colors"
|
|
1975
|
-
onclick="document.getElementById('${escapeHtml(id)}').classList.add('hidden')"
|
|
1905
|
+
onclick="document.getElementById('${(0, import_utils2.escapeHtml)(id)}').classList.add('hidden')"
|
|
1976
1906
|
>
|
|
1977
|
-
${escapeHtml(confirmText)}
|
|
1907
|
+
${(0, import_utils2.escapeHtml)(confirmText)}
|
|
1978
1908
|
</button>`;
|
|
1979
1909
|
const footer = `
|
|
1980
1910
|
<button
|
|
1981
1911
|
type="button"
|
|
1982
1912
|
class="px-4 py-2 rounded-lg border border-border text-text-primary hover:bg-gray-50 transition-colors"
|
|
1983
|
-
onclick="document.getElementById('${escapeHtml(id)}').classList.add('hidden')"
|
|
1913
|
+
onclick="document.getElementById('${(0, import_utils2.escapeHtml)(id)}').classList.add('hidden')"
|
|
1984
1914
|
>
|
|
1985
|
-
${escapeHtml(cancelText)}
|
|
1915
|
+
${(0, import_utils2.escapeHtml)(cancelText)}
|
|
1986
1916
|
</button>
|
|
1987
1917
|
${confirmButton}
|
|
1988
1918
|
`;
|
|
@@ -2025,12 +1955,12 @@ function drawer(content, options) {
|
|
|
2025
1955
|
};
|
|
2026
1956
|
const visibilityClasses = open ? "" : "hidden";
|
|
2027
1957
|
const headerHtml = title || showClose ? `<div class="flex items-center justify-between p-4 border-b border-divider">
|
|
2028
|
-
${title ? `<h3 class="text-lg font-semibold text-text-primary">${escapeHtml(title)}</h3>` : "<div></div>"}
|
|
1958
|
+
${title ? `<h3 class="text-lg font-semibold text-text-primary">${(0, import_utils2.escapeHtml)(title)}</h3>` : "<div></div>"}
|
|
2029
1959
|
${showClose ? `
|
|
2030
1960
|
<button
|
|
2031
1961
|
type="button"
|
|
2032
1962
|
class="p-1 rounded-lg text-text-secondary hover:text-text-primary hover:bg-gray-100 transition-colors"
|
|
2033
|
-
onclick="document.getElementById('${escapeHtml(id)}').classList.add('hidden')"
|
|
1963
|
+
onclick="document.getElementById('${(0, import_utils2.escapeHtml)(id)}').classList.add('hidden')"
|
|
2034
1964
|
aria-label="Close"
|
|
2035
1965
|
>
|
|
2036
1966
|
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
@@ -2043,7 +1973,7 @@ function drawer(content, options) {
|
|
|
2043
1973
|
const backdropClickHandler = closeOnBackdrop ? `onclick="if (event.target === this) this.classList.add('hidden')"` : "";
|
|
2044
1974
|
return `
|
|
2045
1975
|
<div
|
|
2046
|
-
id="${escapeHtml(id)}"
|
|
1976
|
+
id="${(0, import_utils2.escapeHtml)(id)}"
|
|
2047
1977
|
class="fixed inset-0 z-50 ${visibilityClasses}"
|
|
2048
1978
|
${backdropClickHandler}
|
|
2049
1979
|
role="dialog"
|
|
@@ -2106,9 +2036,9 @@ function buildTableHeader(columns, options) {
|
|
|
2106
2036
|
class="${paddingClass} ${alignClass} font-semibold text-text-primary ${sortableClasses} ${col.headerClass || ""}"
|
|
2107
2037
|
${widthStyle}
|
|
2108
2038
|
>
|
|
2109
|
-
${col.sortable ? `<span class="inline-flex items-center">${escapeHtml(col.header)}${buildSortIndicator(
|
|
2039
|
+
${col.sortable ? `<span class="inline-flex items-center">${(0, import_utils2.escapeHtml)(col.header)}${buildSortIndicator(
|
|
2110
2040
|
col.sortDirection || null
|
|
2111
|
-
)}</span>` : escapeHtml(col.header)}
|
|
2041
|
+
)}</span>` : (0, import_utils2.escapeHtml)(col.header)}
|
|
2112
2042
|
</th>`;
|
|
2113
2043
|
}).join("\n");
|
|
2114
2044
|
return `<thead class="bg-gray-50 border-b border-border">
|
|
@@ -2145,20 +2075,20 @@ function buildTableBody(data, columns, options) {
|
|
|
2145
2075
|
bordered ? "border-b border-border" : "",
|
|
2146
2076
|
onRowClick ? "cursor-pointer" : ""
|
|
2147
2077
|
].filter(Boolean).join(" ");
|
|
2148
|
-
const clickHandler = onRowClick ? `onclick="window.location.href='${escapeHtml(onRowClick.replace("{key}", rowId))}'"` : "";
|
|
2078
|
+
const clickHandler = onRowClick ? `onclick="window.location.href='${(0, import_utils2.escapeHtml)(onRowClick.replace("{key}", rowId))}'"` : "";
|
|
2149
2079
|
const selectCell = selectable ? `<td class="${paddingClass}" onclick="event.stopPropagation()">
|
|
2150
2080
|
<input
|
|
2151
2081
|
type="checkbox"
|
|
2152
2082
|
class="w-4 h-4 rounded border-border text-primary focus:ring-primary/20"
|
|
2153
2083
|
name="selected[]"
|
|
2154
|
-
value="${escapeHtml(rowId)}"
|
|
2084
|
+
value="${(0, import_utils2.escapeHtml)(rowId)}"
|
|
2155
2085
|
aria-label="Select row"
|
|
2156
2086
|
>
|
|
2157
2087
|
</td>` : "";
|
|
2158
2088
|
const cells = columns.map((col) => {
|
|
2159
2089
|
const value = row[col.key];
|
|
2160
2090
|
const alignClass = getAlignClasses(col.align);
|
|
2161
|
-
const cellContent = col.render ? col.render(value, row, rowIndex) : escapeHtml(String(value ?? ""));
|
|
2091
|
+
const cellContent = col.render ? col.render(value, row, rowIndex) : (0, import_utils2.escapeHtml)(String(value ?? ""));
|
|
2162
2092
|
return `<td class="${paddingClass} ${alignClass} ${col.cellClass || ""}">${cellContent}</td>`;
|
|
2163
2093
|
}).join("\n");
|
|
2164
2094
|
return `<tr class="${rowClasses}" ${clickHandler}>
|
|
@@ -2180,7 +2110,7 @@ function table(data, options) {
|
|
|
2180
2110
|
const { id, bordered, stickyHeader, className = "", loading = false } = options;
|
|
2181
2111
|
const tableClasses = ["w-full", bordered ? "border border-border" : "", "text-sm"].filter(Boolean).join(" ");
|
|
2182
2112
|
const wrapperClasses = ["relative overflow-x-auto", stickyHeader ? "max-h-96 overflow-y-auto" : "", className].filter(Boolean).join(" ");
|
|
2183
|
-
const idAttr = id ? `id="${escapeHtml(id)}"` : "";
|
|
2113
|
+
const idAttr = id ? `id="${(0, import_utils2.escapeHtml)(id)}"` : "";
|
|
2184
2114
|
const header = buildTableHeader(options.columns, options);
|
|
2185
2115
|
const body = buildTableBody(data, options.columns, options);
|
|
2186
2116
|
const loadingOverlay = loading ? buildLoadingOverlay() : "";
|
|
@@ -2210,7 +2140,7 @@ function pagination(options) {
|
|
|
2210
2140
|
return `<span class="${baseClasses} ${stateClasses}">${label}</span>`;
|
|
2211
2141
|
}
|
|
2212
2142
|
const pageUrl = baseUrl ? `${baseUrl}${baseUrl.includes("?") ? "&" : "?"}page=${pageNum}` : `?page=${pageNum}`;
|
|
2213
|
-
return `<a href="${escapeHtml(pageUrl)}" class="${baseClasses} ${stateClasses}">${label}</a>`;
|
|
2143
|
+
return `<a href="${(0, import_utils2.escapeHtml)(pageUrl)}" class="${baseClasses} ${stateClasses}">${label}</a>`;
|
|
2214
2144
|
};
|
|
2215
2145
|
const pageNumbers = [];
|
|
2216
2146
|
const maxVisible = 5;
|
|
@@ -2308,19 +2238,19 @@ function getPermissionIcon(scope, customIcon) {
|
|
|
2308
2238
|
}
|
|
2309
2239
|
function permissionList(permissions, options = {}) {
|
|
2310
2240
|
const { id, checkable = false, inputName = "scopes", title, className = "" } = options;
|
|
2311
|
-
const titleHtml = title ? `<h4 class="font-medium text-text-primary mb-3">${escapeHtml(title)}</h4>` : "";
|
|
2241
|
+
const titleHtml = title ? `<h4 class="font-medium text-text-primary mb-3">${(0, import_utils2.escapeHtml)(title)}</h4>` : "";
|
|
2312
2242
|
const itemsHtml = permissions.map((perm, index) => {
|
|
2313
2243
|
const icon = getPermissionIcon(perm.scope, perm.icon);
|
|
2314
2244
|
const sensitiveClasses = perm.sensitive ? "border-warning/30 bg-warning/5" : "border-border";
|
|
2315
2245
|
const sensitiveLabel = perm.sensitive ? '<span class="text-xs text-warning font-medium ml-2">Sensitive</span>' : "";
|
|
2316
2246
|
const checkboxHtml = checkable ? `<input
|
|
2317
2247
|
type="checkbox"
|
|
2318
|
-
name="${escapeHtml(inputName)}[]"
|
|
2319
|
-
value="${escapeHtml(perm.scope)}"
|
|
2248
|
+
name="${(0, import_utils2.escapeHtml)(inputName)}[]"
|
|
2249
|
+
value="${(0, import_utils2.escapeHtml)(perm.scope)}"
|
|
2320
2250
|
class="w-4 h-4 rounded border-border text-primary focus:ring-primary/20"
|
|
2321
2251
|
${perm.checked || perm.required ? "checked" : ""}
|
|
2322
2252
|
${perm.required ? "disabled" : ""}
|
|
2323
|
-
id="${id ? escapeHtml(id) : "perm"}-${index}"
|
|
2253
|
+
id="${id ? (0, import_utils2.escapeHtml)(id) : "perm"}-${index}"
|
|
2324
2254
|
>` : `<div class="w-5 h-5 rounded-full bg-success/10 text-success flex items-center justify-center">
|
|
2325
2255
|
<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
2326
2256
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/>
|
|
@@ -2332,18 +2262,18 @@ function permissionList(permissions, options = {}) {
|
|
|
2332
2262
|
</div>
|
|
2333
2263
|
<div class="flex-1 min-w-0">
|
|
2334
2264
|
<div class="flex items-center">
|
|
2335
|
-
<span class="font-medium text-text-primary">${escapeHtml(perm.name)}</span>
|
|
2265
|
+
<span class="font-medium text-text-primary">${(0, import_utils2.escapeHtml)(perm.name)}</span>
|
|
2336
2266
|
${perm.required ? '<span class="text-xs text-text-secondary ml-2">(Required)</span>' : ""}
|
|
2337
2267
|
${sensitiveLabel}
|
|
2338
2268
|
</div>
|
|
2339
|
-
${perm.description ? `<p class="text-sm text-text-secondary mt-0.5">${escapeHtml(perm.description)}</p>` : ""}
|
|
2269
|
+
${perm.description ? `<p class="text-sm text-text-secondary mt-0.5">${(0, import_utils2.escapeHtml)(perm.description)}</p>` : ""}
|
|
2340
2270
|
</div>
|
|
2341
2271
|
<div class="flex-shrink-0">
|
|
2342
2272
|
${checkboxHtml}
|
|
2343
2273
|
</div>
|
|
2344
2274
|
</div>`;
|
|
2345
2275
|
}).join("\n");
|
|
2346
|
-
const idAttr = id ? `id="${escapeHtml(id)}"` : "";
|
|
2276
|
+
const idAttr = id ? `id="${(0, import_utils2.escapeHtml)(id)}"` : "";
|
|
2347
2277
|
return `<div class="permission-list ${className}" ${idAttr}>
|
|
2348
2278
|
${titleHtml}
|
|
2349
2279
|
<div class="space-y-2">
|
|
@@ -2373,8 +2303,8 @@ function featureList(features, options = {}) {
|
|
|
2373
2303
|
return `<li class="flex items-start gap-3">
|
|
2374
2304
|
<div class="flex-shrink-0 mt-0.5">${iconHtml}</div>
|
|
2375
2305
|
<div class="flex-1">
|
|
2376
|
-
<span class="${textClasses}">${escapeHtml(feature.name)}</span>
|
|
2377
|
-
${feature.description ? `<p class="text-sm text-text-secondary">${escapeHtml(feature.description)}</p>` : ""}
|
|
2306
|
+
<span class="${textClasses}">${(0, import_utils2.escapeHtml)(feature.name)}</span>
|
|
2307
|
+
${feature.description ? `<p class="text-sm text-text-secondary">${(0, import_utils2.escapeHtml)(feature.description)}</p>` : ""}
|
|
2378
2308
|
</div>
|
|
2379
2309
|
</li>`;
|
|
2380
2310
|
}).join("\n");
|
|
@@ -2396,7 +2326,7 @@ function descriptionList(items, options = {}) {
|
|
|
2396
2326
|
const hasCopyable = items.some((item) => item.copyable);
|
|
2397
2327
|
if (layout === "horizontal") {
|
|
2398
2328
|
const itemsHtml2 = items.map((item) => {
|
|
2399
|
-
const copyBtn = item.copyable ? `<button type="button" onclick="copyToClipboard('${escapeHtml(
|
|
2329
|
+
const copyBtn = item.copyable ? `<button type="button" onclick="copyToClipboard('${(0, import_utils2.escapeHtml)(
|
|
2400
2330
|
item.description
|
|
2401
2331
|
)}', this)" class="ml-2 p-1 rounded hover:bg-gray-100 transition-colors">
|
|
2402
2332
|
<svg class="w-4 h-4 text-text-secondary" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
@@ -2404,9 +2334,9 @@ function descriptionList(items, options = {}) {
|
|
|
2404
2334
|
</svg>
|
|
2405
2335
|
</button>` : "";
|
|
2406
2336
|
return `<div class="py-3 sm:grid sm:grid-cols-3 sm:gap-4 ${dividers ? "border-b border-divider" : ""}">
|
|
2407
|
-
<dt class="text-sm font-medium text-text-secondary">${escapeHtml(item.term)}</dt>
|
|
2337
|
+
<dt class="text-sm font-medium text-text-secondary">${(0, import_utils2.escapeHtml)(item.term)}</dt>
|
|
2408
2338
|
<dd class="mt-1 sm:mt-0 sm:col-span-2 text-sm text-text-primary flex items-center">
|
|
2409
|
-
${escapeHtml(item.description)}
|
|
2339
|
+
${(0, import_utils2.escapeHtml)(item.description)}
|
|
2410
2340
|
${copyBtn}
|
|
2411
2341
|
</dd>
|
|
2412
2342
|
</div>`;
|
|
@@ -2415,7 +2345,7 @@ function descriptionList(items, options = {}) {
|
|
|
2415
2345
|
}
|
|
2416
2346
|
if (layout === "grid") {
|
|
2417
2347
|
const itemsHtml2 = items.map((item) => {
|
|
2418
|
-
const copyBtn = item.copyable ? `<button type="button" onclick="copyToClipboard('${escapeHtml(
|
|
2348
|
+
const copyBtn = item.copyable ? `<button type="button" onclick="copyToClipboard('${(0, import_utils2.escapeHtml)(
|
|
2419
2349
|
item.description
|
|
2420
2350
|
)}', this)" class="absolute top-2 right-2 p-1 rounded hover:bg-gray-100 transition-colors">
|
|
2421
2351
|
<svg class="w-4 h-4 text-text-secondary" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
@@ -2423,15 +2353,15 @@ function descriptionList(items, options = {}) {
|
|
|
2423
2353
|
</svg>
|
|
2424
2354
|
</button>` : "";
|
|
2425
2355
|
return `<div class="relative p-4 bg-gray-50 rounded-lg">
|
|
2426
|
-
<dt class="text-sm font-medium text-text-secondary">${escapeHtml(item.term)}</dt>
|
|
2427
|
-
<dd class="mt-1 text-sm text-text-primary font-medium">${escapeHtml(item.description)}</dd>
|
|
2356
|
+
<dt class="text-sm font-medium text-text-secondary">${(0, import_utils2.escapeHtml)(item.term)}</dt>
|
|
2357
|
+
<dd class="mt-1 text-sm text-text-primary font-medium">${(0, import_utils2.escapeHtml)(item.description)}</dd>
|
|
2428
2358
|
${copyBtn}
|
|
2429
2359
|
</div>`;
|
|
2430
2360
|
}).join("\n");
|
|
2431
2361
|
return `<dl class="grid grid-cols-2 gap-4 ${className}">${itemsHtml2}</dl>${hasCopyable ? copyScript : ""}`;
|
|
2432
2362
|
}
|
|
2433
2363
|
const itemsHtml = items.map((item) => {
|
|
2434
|
-
const copyBtn = item.copyable ? `<button type="button" onclick="copyToClipboard('${escapeHtml(
|
|
2364
|
+
const copyBtn = item.copyable ? `<button type="button" onclick="copyToClipboard('${(0, import_utils2.escapeHtml)(
|
|
2435
2365
|
item.description
|
|
2436
2366
|
)}', this)" class="ml-2 p-1 rounded hover:bg-gray-100 transition-colors">
|
|
2437
2367
|
<svg class="w-4 h-4 text-text-secondary" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
@@ -2439,9 +2369,9 @@ function descriptionList(items, options = {}) {
|
|
|
2439
2369
|
</svg>
|
|
2440
2370
|
</button>` : "";
|
|
2441
2371
|
return `<div class="${dividers ? "py-3 border-b border-divider last:border-0" : "py-2"}">
|
|
2442
|
-
<dt class="text-sm text-text-secondary">${escapeHtml(item.term)}</dt>
|
|
2372
|
+
<dt class="text-sm text-text-secondary">${(0, import_utils2.escapeHtml)(item.term)}</dt>
|
|
2443
2373
|
<dd class="mt-1 text-sm text-text-primary font-medium flex items-center">
|
|
2444
|
-
${escapeHtml(item.description)}
|
|
2374
|
+
${(0, import_utils2.escapeHtml)(item.description)}
|
|
2445
2375
|
${copyBtn}
|
|
2446
2376
|
</dd>
|
|
2447
2377
|
</div>`;
|
|
@@ -2458,10 +2388,10 @@ function actionList(items, className = "") {
|
|
|
2458
2388
|
const contentHtml = `
|
|
2459
2389
|
${iconHtml}
|
|
2460
2390
|
<div class="flex-1 min-w-0">
|
|
2461
|
-
<div class="font-medium ${item.destructive ? "text-danger" : "text-text-primary"}">${escapeHtml(
|
|
2391
|
+
<div class="font-medium ${item.destructive ? "text-danger" : "text-text-primary"}">${(0, import_utils2.escapeHtml)(
|
|
2462
2392
|
item.label
|
|
2463
2393
|
)}</div>
|
|
2464
|
-
${item.description ? `<p class="text-sm text-text-secondary">${escapeHtml(item.description)}</p>` : ""}
|
|
2394
|
+
${item.description ? `<p class="text-sm text-text-secondary">${(0, import_utils2.escapeHtml)(item.description)}</p>` : ""}
|
|
2465
2395
|
</div>
|
|
2466
2396
|
<svg class="w-5 h-5 text-text-secondary" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
2467
2397
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
|
|
@@ -2471,7 +2401,7 @@ function actionList(items, className = "") {
|
|
|
2471
2401
|
return `<div class="${baseClasses}">${contentHtml}</div>`;
|
|
2472
2402
|
}
|
|
2473
2403
|
if (item.href) {
|
|
2474
|
-
return `<a href="${escapeHtml(item.href)}" class="${baseClasses}">${contentHtml}</a>`;
|
|
2404
|
+
return `<a href="${(0, import_utils2.escapeHtml)(item.href)}" class="${baseClasses}">${contentHtml}</a>`;
|
|
2475
2405
|
}
|
|
2476
2406
|
return `<div class="${baseClasses}">${contentHtml}</div>`;
|
|
2477
2407
|
}).join("\n");
|