@frontmcp/ui 0.5.0
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/LICENSE +201 -0
- package/README.md +438 -0
- package/package.json +147 -0
- package/src/adapters/index.d.ts +10 -0
- package/src/adapters/index.js +18 -0
- package/src/adapters/index.js.map +1 -0
- package/src/adapters/platform-meta.d.ts +165 -0
- package/src/adapters/platform-meta.js +310 -0
- package/src/adapters/platform-meta.js.map +1 -0
- package/src/base-template/bridge.d.ts +89 -0
- package/src/base-template/bridge.js +452 -0
- package/src/base-template/bridge.js.map +1 -0
- package/src/base-template/default-base-template.d.ts +91 -0
- package/src/base-template/default-base-template.js +435 -0
- package/src/base-template/default-base-template.js.map +1 -0
- package/src/base-template/index.d.ts +14 -0
- package/src/base-template/index.js +30 -0
- package/src/base-template/index.js.map +1 -0
- package/src/base-template/polyfills.d.ts +30 -0
- package/src/base-template/polyfills.js +190 -0
- package/src/base-template/polyfills.js.map +1 -0
- package/src/base-template/theme-styles.d.ts +73 -0
- package/src/base-template/theme-styles.js +95 -0
- package/src/base-template/theme-styles.js.map +1 -0
- package/src/bridge/adapters/base-adapter.d.ts +103 -0
- package/src/bridge/adapters/base-adapter.js +314 -0
- package/src/bridge/adapters/base-adapter.js.map +1 -0
- package/src/bridge/adapters/claude.adapter.d.ts +66 -0
- package/src/bridge/adapters/claude.adapter.js +145 -0
- package/src/bridge/adapters/claude.adapter.js.map +1 -0
- package/src/bridge/adapters/ext-apps.adapter.d.ts +142 -0
- package/src/bridge/adapters/ext-apps.adapter.js +416 -0
- package/src/bridge/adapters/ext-apps.adapter.js.map +1 -0
- package/src/bridge/adapters/gemini.adapter.d.ts +63 -0
- package/src/bridge/adapters/gemini.adapter.js +160 -0
- package/src/bridge/adapters/gemini.adapter.js.map +1 -0
- package/src/bridge/adapters/generic.adapter.d.ts +55 -0
- package/src/bridge/adapters/generic.adapter.js +108 -0
- package/src/bridge/adapters/generic.adapter.js.map +1 -0
- package/src/bridge/adapters/index.d.ts +25 -0
- package/src/bridge/adapters/index.js +65 -0
- package/src/bridge/adapters/index.js.map +1 -0
- package/src/bridge/adapters/openai.adapter.d.ts +64 -0
- package/src/bridge/adapters/openai.adapter.js +194 -0
- package/src/bridge/adapters/openai.adapter.js.map +1 -0
- package/src/bridge/core/adapter-registry.d.ts +121 -0
- package/src/bridge/core/adapter-registry.js +271 -0
- package/src/bridge/core/adapter-registry.js.map +1 -0
- package/src/bridge/core/bridge-factory.d.ts +198 -0
- package/src/bridge/core/bridge-factory.js +428 -0
- package/src/bridge/core/bridge-factory.js.map +1 -0
- package/src/bridge/core/index.d.ts +9 -0
- package/src/bridge/core/index.js +22 -0
- package/src/bridge/core/index.js.map +1 -0
- package/src/bridge/index.d.ts +61 -0
- package/src/bridge/index.js +94 -0
- package/src/bridge/index.js.map +1 -0
- package/src/bridge/runtime/iife-generator.d.ts +61 -0
- package/src/bridge/runtime/iife-generator.js +940 -0
- package/src/bridge/runtime/iife-generator.js.map +1 -0
- package/src/bridge/runtime/index.d.ts +8 -0
- package/src/bridge/runtime/index.js +16 -0
- package/src/bridge/runtime/index.js.map +1 -0
- package/src/bridge/types.d.ts +385 -0
- package/src/bridge/types.js +11 -0
- package/src/bridge/types.js.map +1 -0
- package/src/build/cdn-resources.d.ts +140 -0
- package/src/build/cdn-resources.js +314 -0
- package/src/build/cdn-resources.js.map +1 -0
- package/src/build/index.d.ts +294 -0
- package/src/build/index.js +325 -0
- package/src/build/index.js.map +1 -0
- package/src/build/widget-manifest.d.ts +212 -0
- package/src/build/widget-manifest.js +652 -0
- package/src/build/widget-manifest.js.map +1 -0
- package/src/bundler/bundler.d.ts +110 -0
- package/src/bundler/bundler.js +432 -0
- package/src/bundler/bundler.js.map +1 -0
- package/src/bundler/cache.d.ts +172 -0
- package/src/bundler/cache.js +250 -0
- package/src/bundler/cache.js.map +1 -0
- package/src/bundler/index.d.ts +41 -0
- package/src/bundler/index.js +73 -0
- package/src/bundler/index.js.map +1 -0
- package/src/bundler/sandbox/enclave-adapter.d.ts +120 -0
- package/src/bundler/sandbox/enclave-adapter.js +339 -0
- package/src/bundler/sandbox/enclave-adapter.js.map +1 -0
- package/src/bundler/sandbox/executor.d.ts +13 -0
- package/src/bundler/sandbox/executor.js +22 -0
- package/src/bundler/sandbox/executor.js.map +1 -0
- package/src/bundler/sandbox/policy.d.ts +61 -0
- package/src/bundler/sandbox/policy.js +238 -0
- package/src/bundler/sandbox/policy.js.map +1 -0
- package/src/bundler/types.d.ts +347 -0
- package/src/bundler/types.js +132 -0
- package/src/bundler/types.js.map +1 -0
- package/src/components/alert.d.ts +71 -0
- package/src/components/alert.js +189 -0
- package/src/components/alert.js.map +1 -0
- package/src/components/alert.schema.d.ts +114 -0
- package/src/components/alert.schema.js +105 -0
- package/src/components/alert.schema.js.map +1 -0
- package/src/components/avatar.d.ts +76 -0
- package/src/components/avatar.js +176 -0
- package/src/components/avatar.js.map +1 -0
- package/src/components/avatar.schema.d.ts +169 -0
- package/src/components/avatar.schema.js +103 -0
- package/src/components/avatar.schema.js.map +1 -0
- package/src/components/badge.d.ts +70 -0
- package/src/components/badge.js +149 -0
- package/src/components/badge.js.map +1 -0
- package/src/components/badge.schema.d.ts +109 -0
- package/src/components/badge.schema.js +96 -0
- package/src/components/badge.schema.js.map +1 -0
- package/src/components/button.d.ts +111 -0
- package/src/components/button.js +336 -0
- package/src/components/button.js.map +1 -0
- package/src/components/button.schema.d.ts +148 -0
- package/src/components/button.schema.js +121 -0
- package/src/components/button.schema.js.map +1 -0
- package/src/components/card.d.ts +60 -0
- package/src/components/card.js +117 -0
- package/src/components/card.js.map +1 -0
- package/src/components/card.schema.d.ts +113 -0
- package/src/components/card.schema.js +98 -0
- package/src/components/card.schema.js.map +1 -0
- package/src/components/form.d.ts +239 -0
- package/src/components/form.js +420 -0
- package/src/components/form.js.map +1 -0
- package/src/components/form.schema.d.ts +441 -0
- package/src/components/form.schema.js +406 -0
- package/src/components/form.schema.js.map +1 -0
- package/src/components/index.d.ts +29 -0
- package/src/components/index.js +98 -0
- package/src/components/index.js.map +1 -0
- package/src/components/list.d.ts +127 -0
- package/src/components/list.js +279 -0
- package/src/components/list.js.map +1 -0
- package/src/components/list.schema.d.ts +134 -0
- package/src/components/list.schema.js +168 -0
- package/src/components/list.schema.js.map +1 -0
- package/src/components/modal.d.ts +111 -0
- package/src/components/modal.js +260 -0
- package/src/components/modal.js.map +1 -0
- package/src/components/modal.schema.d.ts +186 -0
- package/src/components/modal.schema.js +167 -0
- package/src/components/modal.schema.js.map +1 -0
- package/src/components/table.d.ts +105 -0
- package/src/components/table.js +283 -0
- package/src/components/table.js.map +1 -0
- package/src/components/table.schema.d.ts +159 -0
- package/src/components/table.schema.js +173 -0
- package/src/components/table.schema.js.map +1 -0
- package/src/handlebars/helpers.d.ts +348 -0
- package/src/handlebars/helpers.js +605 -0
- package/src/handlebars/helpers.js.map +1 -0
- package/src/handlebars/index.d.ts +193 -0
- package/src/handlebars/index.js +350 -0
- package/src/handlebars/index.js.map +1 -0
- package/src/index.d.ts +50 -0
- package/src/index.js +192 -0
- package/src/index.js.map +1 -0
- package/src/layouts/base.d.ts +88 -0
- package/src/layouts/base.js +227 -0
- package/src/layouts/base.js.map +1 -0
- package/src/layouts/index.d.ts +7 -0
- package/src/layouts/index.js +25 -0
- package/src/layouts/index.js.map +1 -0
- package/src/layouts/presets.d.ts +133 -0
- package/src/layouts/presets.js +277 -0
- package/src/layouts/presets.js.map +1 -0
- package/src/pages/consent.d.ts +116 -0
- package/src/pages/consent.js +218 -0
- package/src/pages/consent.js.map +1 -0
- package/src/pages/error.d.ts +100 -0
- package/src/pages/error.js +263 -0
- package/src/pages/error.js.map +1 -0
- package/src/pages/index.d.ts +8 -0
- package/src/pages/index.js +27 -0
- package/src/pages/index.js.map +1 -0
- package/src/react/Alert.d.ts +101 -0
- package/src/react/Alert.js +51 -0
- package/src/react/Alert.js.map +1 -0
- package/src/react/Badge.d.ts +100 -0
- package/src/react/Badge.js +55 -0
- package/src/react/Badge.js.map +1 -0
- package/src/react/Button.d.ts +108 -0
- package/src/react/Button.js +52 -0
- package/src/react/Button.js.map +1 -0
- package/src/react/Card.d.ts +103 -0
- package/src/react/Card.js +55 -0
- package/src/react/Card.js.map +1 -0
- package/src/react/hooks/context.d.ts +178 -0
- package/src/react/hooks/context.js +287 -0
- package/src/react/hooks/context.js.map +1 -0
- package/src/react/hooks/index.d.ts +41 -0
- package/src/react/hooks/index.js +61 -0
- package/src/react/hooks/index.js.map +1 -0
- package/src/react/hooks/tools.d.ts +283 -0
- package/src/react/hooks/tools.js +465 -0
- package/src/react/hooks/tools.js.map +1 -0
- package/src/react/index.d.ts +80 -0
- package/src/react/index.js +113 -0
- package/src/react/index.js.map +1 -0
- package/src/react/types.d.ts +105 -0
- package/src/react/types.js +12 -0
- package/src/react/types.js.map +1 -0
- package/src/react/utils.d.ts +42 -0
- package/src/react/utils.js +99 -0
- package/src/react/utils.js.map +1 -0
- package/src/registry/index.d.ts +45 -0
- package/src/registry/index.js +67 -0
- package/src/registry/index.js.map +1 -0
- package/src/registry/render-template.d.ts +86 -0
- package/src/registry/render-template.js +239 -0
- package/src/registry/render-template.js.map +1 -0
- package/src/registry/tool-ui.registry.d.ts +260 -0
- package/src/registry/tool-ui.registry.js +438 -0
- package/src/registry/tool-ui.registry.js.map +1 -0
- package/src/registry/uri-utils.d.ts +55 -0
- package/src/registry/uri-utils.js +97 -0
- package/src/registry/uri-utils.js.map +1 -0
- package/src/render/index.d.ts +7 -0
- package/src/render/index.js +14 -0
- package/src/render/index.js.map +1 -0
- package/src/render/prerender.d.ts +56 -0
- package/src/render/prerender.js +98 -0
- package/src/render/prerender.js.map +1 -0
- package/src/renderers/cache.d.ts +144 -0
- package/src/renderers/cache.js +240 -0
- package/src/renderers/cache.js.map +1 -0
- package/src/renderers/html.renderer.d.ts +122 -0
- package/src/renderers/html.renderer.js +204 -0
- package/src/renderers/html.renderer.js.map +1 -0
- package/src/renderers/index.d.ts +35 -0
- package/src/renderers/index.js +70 -0
- package/src/renderers/index.js.map +1 -0
- package/src/renderers/mdx.renderer.d.ts +119 -0
- package/src/renderers/mdx.renderer.js +305 -0
- package/src/renderers/mdx.renderer.js.map +1 -0
- package/src/renderers/react.renderer.d.ts +95 -0
- package/src/renderers/react.renderer.js +260 -0
- package/src/renderers/react.renderer.js.map +1 -0
- package/src/renderers/registry.d.ts +133 -0
- package/src/renderers/registry.js +232 -0
- package/src/renderers/registry.js.map +1 -0
- package/src/renderers/types.d.ts +341 -0
- package/src/renderers/types.js +9 -0
- package/src/renderers/types.js.map +1 -0
- package/src/renderers/utils/detect.d.ts +106 -0
- package/src/renderers/utils/detect.js +267 -0
- package/src/renderers/utils/detect.js.map +1 -0
- package/src/renderers/utils/hash.d.ts +39 -0
- package/src/renderers/utils/hash.js +75 -0
- package/src/renderers/utils/hash.js.map +1 -0
- package/src/renderers/utils/index.d.ts +8 -0
- package/src/renderers/utils/index.js +28 -0
- package/src/renderers/utils/index.js.map +1 -0
- package/src/renderers/utils/transpiler.d.ts +88 -0
- package/src/renderers/utils/transpiler.js +215 -0
- package/src/renderers/utils/transpiler.js.map +1 -0
- package/src/runtime/adapters/html.adapter.d.ts +58 -0
- package/src/runtime/adapters/html.adapter.js +131 -0
- package/src/runtime/adapters/html.adapter.js.map +1 -0
- package/src/runtime/adapters/index.d.ts +25 -0
- package/src/runtime/adapters/index.js +54 -0
- package/src/runtime/adapters/index.js.map +1 -0
- package/src/runtime/adapters/mdx.adapter.d.ts +72 -0
- package/src/runtime/adapters/mdx.adapter.js +241 -0
- package/src/runtime/adapters/mdx.adapter.js.map +1 -0
- package/src/runtime/adapters/react.adapter.d.ts +69 -0
- package/src/runtime/adapters/react.adapter.js +245 -0
- package/src/runtime/adapters/react.adapter.js.map +1 -0
- package/src/runtime/adapters/types.d.ts +94 -0
- package/src/runtime/adapters/types.js +11 -0
- package/src/runtime/adapters/types.js.map +1 -0
- package/src/runtime/csp.d.ts +37 -0
- package/src/runtime/csp.js +140 -0
- package/src/runtime/csp.js.map +1 -0
- package/src/runtime/index.d.ts +16 -0
- package/src/runtime/index.js +72 -0
- package/src/runtime/index.js.map +1 -0
- package/src/runtime/mcp-bridge.d.ts +100 -0
- package/src/runtime/mcp-bridge.js +581 -0
- package/src/runtime/mcp-bridge.js.map +1 -0
- package/src/runtime/renderer-runtime.d.ts +132 -0
- package/src/runtime/renderer-runtime.js +389 -0
- package/src/runtime/renderer-runtime.js.map +1 -0
- package/src/runtime/sanitizer.d.ts +171 -0
- package/src/runtime/sanitizer.js +318 -0
- package/src/runtime/sanitizer.js.map +1 -0
- package/src/runtime/types.d.ts +414 -0
- package/src/runtime/types.js +12 -0
- package/src/runtime/types.js.map +1 -0
- package/src/runtime/wrapper.d.ts +375 -0
- package/src/runtime/wrapper.js +1793 -0
- package/src/runtime/wrapper.js.map +1 -0
- package/src/styles/index.d.ts +7 -0
- package/src/styles/index.js +11 -0
- package/src/styles/index.js.map +1 -0
- package/src/styles/variants.d.ts +50 -0
- package/src/styles/variants.js +175 -0
- package/src/styles/variants.js.map +1 -0
- package/src/theme/cdn.d.ts +194 -0
- package/src/theme/cdn.js +375 -0
- package/src/theme/cdn.js.map +1 -0
- package/src/theme/index.d.ts +17 -0
- package/src/theme/index.js +57 -0
- package/src/theme/index.js.map +1 -0
- package/src/theme/platforms.d.ts +106 -0
- package/src/theme/platforms.js +161 -0
- package/src/theme/platforms.js.map +1 -0
- package/src/theme/presets/github-openai.d.ts +49 -0
- package/src/theme/presets/github-openai.js +189 -0
- package/src/theme/presets/github-openai.js.map +1 -0
- package/src/theme/presets/index.d.ts +10 -0
- package/src/theme/presets/index.js +17 -0
- package/src/theme/presets/index.js.map +1 -0
- package/src/theme/theme.d.ts +395 -0
- package/src/theme/theme.js +332 -0
- package/src/theme/theme.js.map +1 -0
- package/src/tool-template/builder.d.ts +212 -0
- package/src/tool-template/builder.js +397 -0
- package/src/tool-template/builder.js.map +1 -0
- package/src/tool-template/index.d.ts +15 -0
- package/src/tool-template/index.js +38 -0
- package/src/tool-template/index.js.map +1 -0
- package/src/types/index.d.ts +13 -0
- package/src/types/index.js +26 -0
- package/src/types/index.js.map +1 -0
- package/src/types/ui-config.d.ts +357 -0
- package/src/types/ui-config.js +12 -0
- package/src/types/ui-config.js.map +1 -0
- package/src/types/ui-runtime.d.ts +965 -0
- package/src/types/ui-runtime.js +117 -0
- package/src/types/ui-runtime.js.map +1 -0
- package/src/validation/error-box.d.ts +55 -0
- package/src/validation/error-box.js +75 -0
- package/src/validation/error-box.js.map +1 -0
- package/src/validation/index.d.ts +12 -0
- package/src/validation/index.js +21 -0
- package/src/validation/index.js.map +1 -0
- package/src/validation/wrapper.d.ts +96 -0
- package/src/validation/wrapper.js +117 -0
- package/src/validation/wrapper.js.map +1 -0
- package/src/web-components/core/attribute-parser.d.ts +85 -0
- package/src/web-components/core/attribute-parser.js +189 -0
- package/src/web-components/core/attribute-parser.js.map +1 -0
- package/src/web-components/core/base-element.d.ts +197 -0
- package/src/web-components/core/base-element.js +289 -0
- package/src/web-components/core/base-element.js.map +1 -0
- package/src/web-components/core/index.d.ts +8 -0
- package/src/web-components/core/index.js +18 -0
- package/src/web-components/core/index.js.map +1 -0
- package/src/web-components/elements/fmcp-alert.d.ts +45 -0
- package/src/web-components/elements/fmcp-alert.js +93 -0
- package/src/web-components/elements/fmcp-alert.js.map +1 -0
- package/src/web-components/elements/fmcp-badge.d.ts +46 -0
- package/src/web-components/elements/fmcp-badge.js +99 -0
- package/src/web-components/elements/fmcp-badge.js.map +1 -0
- package/src/web-components/elements/fmcp-button.d.ts +124 -0
- package/src/web-components/elements/fmcp-button.js +233 -0
- package/src/web-components/elements/fmcp-button.js.map +1 -0
- package/src/web-components/elements/fmcp-card.d.ts +52 -0
- package/src/web-components/elements/fmcp-card.js +115 -0
- package/src/web-components/elements/fmcp-card.js.map +1 -0
- package/src/web-components/elements/fmcp-input.d.ts +95 -0
- package/src/web-components/elements/fmcp-input.js +248 -0
- package/src/web-components/elements/fmcp-input.js.map +1 -0
- package/src/web-components/elements/fmcp-select.d.ts +99 -0
- package/src/web-components/elements/fmcp-select.js +243 -0
- package/src/web-components/elements/fmcp-select.js.map +1 -0
- package/src/web-components/elements/index.d.ts +12 -0
- package/src/web-components/elements/index.js +34 -0
- package/src/web-components/elements/index.js.map +1 -0
- package/src/web-components/index.d.ts +49 -0
- package/src/web-components/index.js +75 -0
- package/src/web-components/index.js.map +1 -0
- package/src/web-components/register.d.ts +56 -0
- package/src/web-components/register.js +80 -0
- package/src/web-components/register.js.map +1 -0
- package/src/web-components/types.d.ts +121 -0
- package/src/web-components/types.js +25 -0
- package/src/web-components/types.js.map +1 -0
- package/src/widgets/index.d.ts +7 -0
- package/src/widgets/index.js +24 -0
- package/src/widgets/index.js.map +1 -0
- package/src/widgets/progress.d.ts +132 -0
- package/src/widgets/progress.js +303 -0
- package/src/widgets/progress.js.map +1 -0
- package/src/widgets/resource.d.ts +162 -0
- package/src/widgets/resource.js +340 -0
- package/src/widgets/resource.js.map +1 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file modal.schema.ts
|
|
3
|
+
* @description Zod schemas for Modal, ConfirmModal, and Drawer component options validation.
|
|
4
|
+
*
|
|
5
|
+
* Provides strict validation schemas for modal options including sizes,
|
|
6
|
+
* close behavior, confirm dialogs, and drawers with positioning.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { ModalOptionsSchema, DrawerOptionsSchema } from '@frontmcp/ui';
|
|
11
|
+
*
|
|
12
|
+
* const modalResult = ModalOptionsSchema.safeParse({
|
|
13
|
+
* id: 'my-modal',
|
|
14
|
+
* title: 'Dialog Title',
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @module @frontmcp/ui/components/modal.schema
|
|
19
|
+
*/
|
|
20
|
+
import { z } from 'zod';
|
|
21
|
+
/**
|
|
22
|
+
* Modal size enum schema
|
|
23
|
+
*/
|
|
24
|
+
export declare const ModalSizeSchema: z.ZodEnum<{
|
|
25
|
+
sm: "sm";
|
|
26
|
+
lg: "lg";
|
|
27
|
+
xl: "xl";
|
|
28
|
+
md: "md";
|
|
29
|
+
full: "full";
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Modal size type
|
|
33
|
+
*/
|
|
34
|
+
export type ModalSize = z.infer<typeof ModalSizeSchema>;
|
|
35
|
+
/**
|
|
36
|
+
* Close button HTMX options schema
|
|
37
|
+
*/
|
|
38
|
+
export declare const ModalOnCloseSchema: z.ZodOptional<z.ZodObject<{
|
|
39
|
+
delete: z.ZodOptional<z.ZodString>;
|
|
40
|
+
target: z.ZodOptional<z.ZodString>;
|
|
41
|
+
swap: z.ZodOptional<z.ZodString>;
|
|
42
|
+
}, z.core.$strict>>;
|
|
43
|
+
/**
|
|
44
|
+
* Modal onClose type
|
|
45
|
+
*/
|
|
46
|
+
export type ModalOnClose = z.infer<typeof ModalOnCloseSchema>;
|
|
47
|
+
/**
|
|
48
|
+
* Complete modal options schema
|
|
49
|
+
*/
|
|
50
|
+
export declare const ModalOptionsSchema: z.ZodObject<{
|
|
51
|
+
id: z.ZodString;
|
|
52
|
+
title: z.ZodOptional<z.ZodString>;
|
|
53
|
+
size: z.ZodOptional<z.ZodEnum<{
|
|
54
|
+
sm: "sm";
|
|
55
|
+
lg: "lg";
|
|
56
|
+
xl: "xl";
|
|
57
|
+
md: "md";
|
|
58
|
+
full: "full";
|
|
59
|
+
}>>;
|
|
60
|
+
showClose: z.ZodOptional<z.ZodBoolean>;
|
|
61
|
+
closeOnBackdrop: z.ZodOptional<z.ZodBoolean>;
|
|
62
|
+
closeOnEscape: z.ZodOptional<z.ZodBoolean>;
|
|
63
|
+
footer: z.ZodOptional<z.ZodString>;
|
|
64
|
+
className: z.ZodOptional<z.ZodString>;
|
|
65
|
+
open: z.ZodOptional<z.ZodBoolean>;
|
|
66
|
+
onClose: z.ZodOptional<z.ZodObject<{
|
|
67
|
+
delete: z.ZodOptional<z.ZodString>;
|
|
68
|
+
target: z.ZodOptional<z.ZodString>;
|
|
69
|
+
swap: z.ZodOptional<z.ZodString>;
|
|
70
|
+
}, z.core.$strict>>;
|
|
71
|
+
}, z.core.$strict>;
|
|
72
|
+
/**
|
|
73
|
+
* Modal options type (derived from schema)
|
|
74
|
+
*/
|
|
75
|
+
export type ModalOptions = z.infer<typeof ModalOptionsSchema>;
|
|
76
|
+
/**
|
|
77
|
+
* Confirm modal variant schema
|
|
78
|
+
*/
|
|
79
|
+
export declare const ConfirmModalVariantSchema: z.ZodEnum<{
|
|
80
|
+
warning: "warning";
|
|
81
|
+
danger: "danger";
|
|
82
|
+
info: "info";
|
|
83
|
+
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Confirm modal variant type
|
|
86
|
+
*/
|
|
87
|
+
export type ConfirmModalVariant = z.infer<typeof ConfirmModalVariantSchema>;
|
|
88
|
+
/**
|
|
89
|
+
* Confirm modal HTMX schema
|
|
90
|
+
*/
|
|
91
|
+
export declare const ConfirmModalOnConfirmSchema: z.ZodOptional<z.ZodObject<{
|
|
92
|
+
post: z.ZodOptional<z.ZodString>;
|
|
93
|
+
delete: z.ZodOptional<z.ZodString>;
|
|
94
|
+
target: z.ZodOptional<z.ZodString>;
|
|
95
|
+
swap: z.ZodOptional<z.ZodString>;
|
|
96
|
+
}, z.core.$strict>>;
|
|
97
|
+
/**
|
|
98
|
+
* Confirm modal options schema
|
|
99
|
+
*/
|
|
100
|
+
export declare const ConfirmModalOptionsSchema: z.ZodObject<{
|
|
101
|
+
id: z.ZodString;
|
|
102
|
+
message: z.ZodString;
|
|
103
|
+
title: z.ZodOptional<z.ZodString>;
|
|
104
|
+
variant: z.ZodOptional<z.ZodEnum<{
|
|
105
|
+
warning: "warning";
|
|
106
|
+
danger: "danger";
|
|
107
|
+
info: "info";
|
|
108
|
+
}>>;
|
|
109
|
+
confirmText: z.ZodOptional<z.ZodString>;
|
|
110
|
+
cancelText: z.ZodOptional<z.ZodString>;
|
|
111
|
+
open: z.ZodOptional<z.ZodBoolean>;
|
|
112
|
+
onConfirm: z.ZodOptional<z.ZodObject<{
|
|
113
|
+
post: z.ZodOptional<z.ZodString>;
|
|
114
|
+
delete: z.ZodOptional<z.ZodString>;
|
|
115
|
+
target: z.ZodOptional<z.ZodString>;
|
|
116
|
+
swap: z.ZodOptional<z.ZodString>;
|
|
117
|
+
}, z.core.$strict>>;
|
|
118
|
+
}, z.core.$strict>;
|
|
119
|
+
/**
|
|
120
|
+
* Confirm modal options type
|
|
121
|
+
*/
|
|
122
|
+
export type ConfirmModalOptions = z.infer<typeof ConfirmModalOptionsSchema>;
|
|
123
|
+
/**
|
|
124
|
+
* Drawer position enum schema
|
|
125
|
+
*/
|
|
126
|
+
export declare const DrawerPositionSchema: z.ZodEnum<{
|
|
127
|
+
top: "top";
|
|
128
|
+
left: "left";
|
|
129
|
+
right: "right";
|
|
130
|
+
bottom: "bottom";
|
|
131
|
+
}>;
|
|
132
|
+
/**
|
|
133
|
+
* Drawer position type
|
|
134
|
+
*/
|
|
135
|
+
export type DrawerPosition = z.infer<typeof DrawerPositionSchema>;
|
|
136
|
+
/**
|
|
137
|
+
* Drawer options schema
|
|
138
|
+
*/
|
|
139
|
+
export declare const DrawerOptionsSchema: z.ZodObject<{
|
|
140
|
+
id: z.ZodString;
|
|
141
|
+
position: z.ZodOptional<z.ZodEnum<{
|
|
142
|
+
top: "top";
|
|
143
|
+
left: "left";
|
|
144
|
+
right: "right";
|
|
145
|
+
bottom: "bottom";
|
|
146
|
+
}>>;
|
|
147
|
+
size: z.ZodOptional<z.ZodEnum<{
|
|
148
|
+
sm: "sm";
|
|
149
|
+
lg: "lg";
|
|
150
|
+
xl: "xl";
|
|
151
|
+
md: "md";
|
|
152
|
+
full: "full";
|
|
153
|
+
}>>;
|
|
154
|
+
title: z.ZodOptional<z.ZodString>;
|
|
155
|
+
showClose: z.ZodOptional<z.ZodBoolean>;
|
|
156
|
+
footer: z.ZodOptional<z.ZodString>;
|
|
157
|
+
className: z.ZodOptional<z.ZodString>;
|
|
158
|
+
open: z.ZodOptional<z.ZodBoolean>;
|
|
159
|
+
onClose: z.ZodOptional<z.ZodObject<{
|
|
160
|
+
delete: z.ZodOptional<z.ZodString>;
|
|
161
|
+
target: z.ZodOptional<z.ZodString>;
|
|
162
|
+
swap: z.ZodOptional<z.ZodString>;
|
|
163
|
+
}, z.core.$strict>>;
|
|
164
|
+
}, z.core.$strict>;
|
|
165
|
+
/**
|
|
166
|
+
* Drawer options type
|
|
167
|
+
*/
|
|
168
|
+
export type DrawerOptions = z.infer<typeof DrawerOptionsSchema>;
|
|
169
|
+
/**
|
|
170
|
+
* Modal trigger options schema
|
|
171
|
+
*/
|
|
172
|
+
export declare const ModalTriggerOptionsSchema: z.ZodObject<{
|
|
173
|
+
targetId: z.ZodString;
|
|
174
|
+
text: z.ZodOptional<z.ZodString>;
|
|
175
|
+
tag: z.ZodOptional<z.ZodEnum<{
|
|
176
|
+
button: "button";
|
|
177
|
+
div: "div";
|
|
178
|
+
a: "a";
|
|
179
|
+
span: "span";
|
|
180
|
+
}>>;
|
|
181
|
+
className: z.ZodOptional<z.ZodString>;
|
|
182
|
+
}, z.core.$strict>;
|
|
183
|
+
/**
|
|
184
|
+
* Modal trigger options type
|
|
185
|
+
*/
|
|
186
|
+
export type ModalTriggerOptions = z.infer<typeof ModalTriggerOptionsSchema>;
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file modal.schema.ts
|
|
4
|
+
* @description Zod schemas for Modal, ConfirmModal, and Drawer component options validation.
|
|
5
|
+
*
|
|
6
|
+
* Provides strict validation schemas for modal options including sizes,
|
|
7
|
+
* close behavior, confirm dialogs, and drawers with positioning.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { ModalOptionsSchema, DrawerOptionsSchema } from '@frontmcp/ui';
|
|
12
|
+
*
|
|
13
|
+
* const modalResult = ModalOptionsSchema.safeParse({
|
|
14
|
+
* id: 'my-modal',
|
|
15
|
+
* title: 'Dialog Title',
|
|
16
|
+
* });
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @module @frontmcp/ui/components/modal.schema
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.ModalTriggerOptionsSchema = exports.DrawerOptionsSchema = exports.DrawerPositionSchema = exports.ConfirmModalOptionsSchema = exports.ConfirmModalOnConfirmSchema = exports.ConfirmModalVariantSchema = exports.ModalOptionsSchema = exports.ModalOnCloseSchema = exports.ModalSizeSchema = void 0;
|
|
23
|
+
const zod_1 = require("zod");
|
|
24
|
+
// ============================================
|
|
25
|
+
// Size Schema
|
|
26
|
+
// ============================================
|
|
27
|
+
/**
|
|
28
|
+
* Modal size enum schema
|
|
29
|
+
*/
|
|
30
|
+
exports.ModalSizeSchema = zod_1.z.enum(['sm', 'md', 'lg', 'xl', 'full']);
|
|
31
|
+
// ============================================
|
|
32
|
+
// OnClose Schema
|
|
33
|
+
// ============================================
|
|
34
|
+
/**
|
|
35
|
+
* Close button HTMX options schema
|
|
36
|
+
*/
|
|
37
|
+
exports.ModalOnCloseSchema = zod_1.z
|
|
38
|
+
.object({
|
|
39
|
+
delete: zod_1.z.string().optional(),
|
|
40
|
+
target: zod_1.z.string().optional(),
|
|
41
|
+
swap: zod_1.z.string().optional(),
|
|
42
|
+
})
|
|
43
|
+
.strict()
|
|
44
|
+
.optional();
|
|
45
|
+
// ============================================
|
|
46
|
+
// Modal Options Schema
|
|
47
|
+
// ============================================
|
|
48
|
+
/**
|
|
49
|
+
* Complete modal options schema
|
|
50
|
+
*/
|
|
51
|
+
exports.ModalOptionsSchema = zod_1.z
|
|
52
|
+
.object({
|
|
53
|
+
/** Modal ID (required) */
|
|
54
|
+
id: zod_1.z.string(),
|
|
55
|
+
/** Modal title */
|
|
56
|
+
title: zod_1.z.string().optional(),
|
|
57
|
+
/** Modal size */
|
|
58
|
+
size: exports.ModalSizeSchema.optional(),
|
|
59
|
+
/** Show close button */
|
|
60
|
+
showClose: zod_1.z.boolean().optional(),
|
|
61
|
+
/** Close on backdrop click */
|
|
62
|
+
closeOnBackdrop: zod_1.z.boolean().optional(),
|
|
63
|
+
/** Close on escape key */
|
|
64
|
+
closeOnEscape: zod_1.z.boolean().optional(),
|
|
65
|
+
/** Footer content (HTML string) */
|
|
66
|
+
footer: zod_1.z.string().optional(),
|
|
67
|
+
/** Additional CSS classes for modal */
|
|
68
|
+
className: zod_1.z.string().optional(),
|
|
69
|
+
/** Initially visible */
|
|
70
|
+
open: zod_1.z.boolean().optional(),
|
|
71
|
+
/** HTMX for closing */
|
|
72
|
+
onClose: exports.ModalOnCloseSchema,
|
|
73
|
+
})
|
|
74
|
+
.strict();
|
|
75
|
+
// ============================================
|
|
76
|
+
// Confirm Modal Schema
|
|
77
|
+
// ============================================
|
|
78
|
+
/**
|
|
79
|
+
* Confirm modal variant schema
|
|
80
|
+
*/
|
|
81
|
+
exports.ConfirmModalVariantSchema = zod_1.z.enum(['info', 'warning', 'danger']);
|
|
82
|
+
/**
|
|
83
|
+
* Confirm modal HTMX schema
|
|
84
|
+
*/
|
|
85
|
+
exports.ConfirmModalOnConfirmSchema = zod_1.z
|
|
86
|
+
.object({
|
|
87
|
+
post: zod_1.z.string().optional(),
|
|
88
|
+
delete: zod_1.z.string().optional(),
|
|
89
|
+
target: zod_1.z.string().optional(),
|
|
90
|
+
swap: zod_1.z.string().optional(),
|
|
91
|
+
})
|
|
92
|
+
.strict()
|
|
93
|
+
.optional();
|
|
94
|
+
/**
|
|
95
|
+
* Confirm modal options schema
|
|
96
|
+
*/
|
|
97
|
+
exports.ConfirmModalOptionsSchema = zod_1.z
|
|
98
|
+
.object({
|
|
99
|
+
/** Modal ID (required) */
|
|
100
|
+
id: zod_1.z.string(),
|
|
101
|
+
/** Confirm message */
|
|
102
|
+
message: zod_1.z.string(),
|
|
103
|
+
/** Title */
|
|
104
|
+
title: zod_1.z.string().optional(),
|
|
105
|
+
/** Variant/severity */
|
|
106
|
+
variant: exports.ConfirmModalVariantSchema.optional(),
|
|
107
|
+
/** Confirm button text */
|
|
108
|
+
confirmText: zod_1.z.string().optional(),
|
|
109
|
+
/** Cancel button text */
|
|
110
|
+
cancelText: zod_1.z.string().optional(),
|
|
111
|
+
/** Initially visible */
|
|
112
|
+
open: zod_1.z.boolean().optional(),
|
|
113
|
+
/** HTMX on confirm */
|
|
114
|
+
onConfirm: exports.ConfirmModalOnConfirmSchema,
|
|
115
|
+
})
|
|
116
|
+
.strict();
|
|
117
|
+
// ============================================
|
|
118
|
+
// Drawer Schema
|
|
119
|
+
// ============================================
|
|
120
|
+
/**
|
|
121
|
+
* Drawer position enum schema
|
|
122
|
+
*/
|
|
123
|
+
exports.DrawerPositionSchema = zod_1.z.enum(['left', 'right', 'top', 'bottom']);
|
|
124
|
+
/**
|
|
125
|
+
* Drawer options schema
|
|
126
|
+
*/
|
|
127
|
+
exports.DrawerOptionsSchema = zod_1.z
|
|
128
|
+
.object({
|
|
129
|
+
/** Drawer ID (required) */
|
|
130
|
+
id: zod_1.z.string(),
|
|
131
|
+
/** Position */
|
|
132
|
+
position: exports.DrawerPositionSchema.optional(),
|
|
133
|
+
/** Size (width for left/right, height for top/bottom) */
|
|
134
|
+
size: exports.ModalSizeSchema.optional(),
|
|
135
|
+
/** Drawer title */
|
|
136
|
+
title: zod_1.z.string().optional(),
|
|
137
|
+
/** Show close button */
|
|
138
|
+
showClose: zod_1.z.boolean().optional(),
|
|
139
|
+
/** Footer content (HTML string) */
|
|
140
|
+
footer: zod_1.z.string().optional(),
|
|
141
|
+
/** Additional CSS classes */
|
|
142
|
+
className: zod_1.z.string().optional(),
|
|
143
|
+
/** Initially visible */
|
|
144
|
+
open: zod_1.z.boolean().optional(),
|
|
145
|
+
/** HTMX for closing */
|
|
146
|
+
onClose: exports.ModalOnCloseSchema,
|
|
147
|
+
})
|
|
148
|
+
.strict();
|
|
149
|
+
// ============================================
|
|
150
|
+
// Modal Trigger Schema
|
|
151
|
+
// ============================================
|
|
152
|
+
/**
|
|
153
|
+
* Modal trigger options schema
|
|
154
|
+
*/
|
|
155
|
+
exports.ModalTriggerOptionsSchema = zod_1.z
|
|
156
|
+
.object({
|
|
157
|
+
/** Target modal ID (required) */
|
|
158
|
+
targetId: zod_1.z.string(),
|
|
159
|
+
/** Trigger text */
|
|
160
|
+
text: zod_1.z.string().optional(),
|
|
161
|
+
/** HTML tag to use */
|
|
162
|
+
tag: zod_1.z.enum(['button', 'a', 'span', 'div']).optional(),
|
|
163
|
+
/** Additional CSS classes */
|
|
164
|
+
className: zod_1.z.string().optional(),
|
|
165
|
+
})
|
|
166
|
+
.strict();
|
|
167
|
+
//# sourceMappingURL=modal.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal.schema.js","sourceRoot":"","sources":["../../../src/components/modal.schema.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAEH,6BAAwB;AAExB,+CAA+C;AAC/C,cAAc;AACd,+CAA+C;AAE/C;;GAEG;AACU,QAAA,eAAe,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAOxE,+CAA+C;AAC/C,iBAAiB;AACjB,+CAA+C;AAE/C;;GAEG;AACU,QAAA,kBAAkB,GAAG,OAAC;KAChC,MAAM,CAAC;IACN,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,EAAE,CAAC;AAOd,+CAA+C;AAC/C,uBAAuB;AACvB,+CAA+C;AAE/C;;GAEG;AACU,QAAA,kBAAkB,GAAG,OAAC;KAChC,MAAM,CAAC;IACN,0BAA0B;IAC1B,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;IACd,kBAAkB;IAClB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,iBAAiB;IACjB,IAAI,EAAE,uBAAe,CAAC,QAAQ,EAAE;IAChC,wBAAwB;IACxB,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACjC,8BAA8B;IAC9B,eAAe,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACvC,0BAA0B;IAC1B,aAAa,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACrC,mCAAmC;IACnC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,uCAAuC;IACvC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,wBAAwB;IACxB,IAAI,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5B,uBAAuB;IACvB,OAAO,EAAE,0BAAkB;CAC5B,CAAC;KACD,MAAM,EAAE,CAAC;AAOZ,+CAA+C;AAC/C,uBAAuB;AACvB,+CAA+C;AAE/C;;GAEG;AACU,QAAA,yBAAyB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAO/E;;GAEG;AACU,QAAA,2BAA2B,GAAG,OAAC;KACzC,MAAM,CAAC;IACN,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,EAAE,CAAC;AAEd;;GAEG;AACU,QAAA,yBAAyB,GAAG,OAAC;KACvC,MAAM,CAAC;IACN,0BAA0B;IAC1B,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;IACd,sBAAsB;IACtB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,YAAY;IACZ,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,uBAAuB;IACvB,OAAO,EAAE,iCAAyB,CAAC,QAAQ,EAAE;IAC7C,0BAA0B;IAC1B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,yBAAyB;IACzB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,wBAAwB;IACxB,IAAI,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5B,sBAAsB;IACtB,SAAS,EAAE,mCAA2B;CACvC,CAAC;KACD,MAAM,EAAE,CAAC;AAOZ,+CAA+C;AAC/C,gBAAgB;AAChB,+CAA+C;AAE/C;;GAEG;AACU,QAAA,oBAAoB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAO/E;;GAEG;AACU,QAAA,mBAAmB,GAAG,OAAC;KACjC,MAAM,CAAC;IACN,2BAA2B;IAC3B,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;IACd,eAAe;IACf,QAAQ,EAAE,4BAAoB,CAAC,QAAQ,EAAE;IACzC,yDAAyD;IACzD,IAAI,EAAE,uBAAe,CAAC,QAAQ,EAAE;IAChC,mBAAmB;IACnB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,wBAAwB;IACxB,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACjC,mCAAmC;IACnC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,6BAA6B;IAC7B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,wBAAwB;IACxB,IAAI,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5B,uBAAuB;IACvB,OAAO,EAAE,0BAAkB;CAC5B,CAAC;KACD,MAAM,EAAE,CAAC;AAOZ,+CAA+C;AAC/C,uBAAuB;AACvB,+CAA+C;AAE/C;;GAEG;AACU,QAAA,yBAAyB,GAAG,OAAC;KACvC,MAAM,CAAC;IACN,iCAAiC;IACjC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,mBAAmB;IACnB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,sBAAsB;IACtB,GAAG,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtD,6BAA6B;IAC7B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,MAAM,EAAE,CAAC","sourcesContent":["/**\n * @file modal.schema.ts\n * @description Zod schemas for Modal, ConfirmModal, and Drawer component options validation.\n *\n * Provides strict validation schemas for modal options including sizes,\n * close behavior, confirm dialogs, and drawers with positioning.\n *\n * @example\n * ```typescript\n * import { ModalOptionsSchema, DrawerOptionsSchema } from '@frontmcp/ui';\n *\n * const modalResult = ModalOptionsSchema.safeParse({\n * id: 'my-modal',\n * title: 'Dialog Title',\n * });\n * ```\n *\n * @module @frontmcp/ui/components/modal.schema\n */\n\nimport { z } from 'zod';\n\n// ============================================\n// Size Schema\n// ============================================\n\n/**\n * Modal size enum schema\n */\nexport const ModalSizeSchema = z.enum(['sm', 'md', 'lg', 'xl', 'full']);\n\n/**\n * Modal size type\n */\nexport type ModalSize = z.infer<typeof ModalSizeSchema>;\n\n// ============================================\n// OnClose Schema\n// ============================================\n\n/**\n * Close button HTMX options schema\n */\nexport const ModalOnCloseSchema = z\n .object({\n delete: z.string().optional(),\n target: z.string().optional(),\n swap: z.string().optional(),\n })\n .strict()\n .optional();\n\n/**\n * Modal onClose type\n */\nexport type ModalOnClose = z.infer<typeof ModalOnCloseSchema>;\n\n// ============================================\n// Modal Options Schema\n// ============================================\n\n/**\n * Complete modal options schema\n */\nexport const ModalOptionsSchema = z\n .object({\n /** Modal ID (required) */\n id: z.string(),\n /** Modal title */\n title: z.string().optional(),\n /** Modal size */\n size: ModalSizeSchema.optional(),\n /** Show close button */\n showClose: z.boolean().optional(),\n /** Close on backdrop click */\n closeOnBackdrop: z.boolean().optional(),\n /** Close on escape key */\n closeOnEscape: z.boolean().optional(),\n /** Footer content (HTML string) */\n footer: z.string().optional(),\n /** Additional CSS classes for modal */\n className: z.string().optional(),\n /** Initially visible */\n open: z.boolean().optional(),\n /** HTMX for closing */\n onClose: ModalOnCloseSchema,\n })\n .strict();\n\n/**\n * Modal options type (derived from schema)\n */\nexport type ModalOptions = z.infer<typeof ModalOptionsSchema>;\n\n// ============================================\n// Confirm Modal Schema\n// ============================================\n\n/**\n * Confirm modal variant schema\n */\nexport const ConfirmModalVariantSchema = z.enum(['info', 'warning', 'danger']);\n\n/**\n * Confirm modal variant type\n */\nexport type ConfirmModalVariant = z.infer<typeof ConfirmModalVariantSchema>;\n\n/**\n * Confirm modal HTMX schema\n */\nexport const ConfirmModalOnConfirmSchema = z\n .object({\n post: z.string().optional(),\n delete: z.string().optional(),\n target: z.string().optional(),\n swap: z.string().optional(),\n })\n .strict()\n .optional();\n\n/**\n * Confirm modal options schema\n */\nexport const ConfirmModalOptionsSchema = z\n .object({\n /** Modal ID (required) */\n id: z.string(),\n /** Confirm message */\n message: z.string(),\n /** Title */\n title: z.string().optional(),\n /** Variant/severity */\n variant: ConfirmModalVariantSchema.optional(),\n /** Confirm button text */\n confirmText: z.string().optional(),\n /** Cancel button text */\n cancelText: z.string().optional(),\n /** Initially visible */\n open: z.boolean().optional(),\n /** HTMX on confirm */\n onConfirm: ConfirmModalOnConfirmSchema,\n })\n .strict();\n\n/**\n * Confirm modal options type\n */\nexport type ConfirmModalOptions = z.infer<typeof ConfirmModalOptionsSchema>;\n\n// ============================================\n// Drawer Schema\n// ============================================\n\n/**\n * Drawer position enum schema\n */\nexport const DrawerPositionSchema = z.enum(['left', 'right', 'top', 'bottom']);\n\n/**\n * Drawer position type\n */\nexport type DrawerPosition = z.infer<typeof DrawerPositionSchema>;\n\n/**\n * Drawer options schema\n */\nexport const DrawerOptionsSchema = z\n .object({\n /** Drawer ID (required) */\n id: z.string(),\n /** Position */\n position: DrawerPositionSchema.optional(),\n /** Size (width for left/right, height for top/bottom) */\n size: ModalSizeSchema.optional(),\n /** Drawer title */\n title: z.string().optional(),\n /** Show close button */\n showClose: z.boolean().optional(),\n /** Footer content (HTML string) */\n footer: z.string().optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n /** Initially visible */\n open: z.boolean().optional(),\n /** HTMX for closing */\n onClose: ModalOnCloseSchema,\n })\n .strict();\n\n/**\n * Drawer options type\n */\nexport type DrawerOptions = z.infer<typeof DrawerOptionsSchema>;\n\n// ============================================\n// Modal Trigger Schema\n// ============================================\n\n/**\n * Modal trigger options schema\n */\nexport const ModalTriggerOptionsSchema = z\n .object({\n /** Target modal ID (required) */\n targetId: z.string(),\n /** Trigger text */\n text: z.string().optional(),\n /** HTML tag to use */\n tag: z.enum(['button', 'a', 'span', 'div']).optional(),\n /** Additional CSS classes */\n className: z.string().optional(),\n })\n .strict();\n\n/**\n * Modal trigger options type\n */\nexport type ModalTriggerOptions = z.infer<typeof ModalTriggerOptionsSchema>;\n"]}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Table Component
|
|
3
|
+
*
|
|
4
|
+
* Data tables with sorting, selection, and HTMX support.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Table column definition
|
|
8
|
+
*/
|
|
9
|
+
export interface TableColumn<T = Record<string, unknown>> {
|
|
10
|
+
/** Column key (property name) */
|
|
11
|
+
key: string;
|
|
12
|
+
/** Column header text */
|
|
13
|
+
header: string;
|
|
14
|
+
/** Column width */
|
|
15
|
+
width?: string;
|
|
16
|
+
/** Text alignment */
|
|
17
|
+
align?: 'left' | 'center' | 'right';
|
|
18
|
+
/** Sortable column */
|
|
19
|
+
sortable?: boolean;
|
|
20
|
+
/** Current sort direction */
|
|
21
|
+
sortDirection?: 'asc' | 'desc' | null;
|
|
22
|
+
/** Custom cell renderer */
|
|
23
|
+
render?: (value: unknown, row: T, index: number) => string;
|
|
24
|
+
/** Additional header CSS classes */
|
|
25
|
+
headerClass?: string;
|
|
26
|
+
/** Additional cell CSS classes */
|
|
27
|
+
cellClass?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Table options
|
|
31
|
+
*/
|
|
32
|
+
export interface TableOptions<T = Record<string, unknown>> {
|
|
33
|
+
/** Column definitions */
|
|
34
|
+
columns: TableColumn<T>[];
|
|
35
|
+
/** Table ID */
|
|
36
|
+
id?: string;
|
|
37
|
+
/** Show row selection checkboxes */
|
|
38
|
+
selectable?: boolean;
|
|
39
|
+
/** Row hover effect */
|
|
40
|
+
hoverable?: boolean;
|
|
41
|
+
/** Striped rows */
|
|
42
|
+
striped?: boolean;
|
|
43
|
+
/** Bordered cells */
|
|
44
|
+
bordered?: boolean;
|
|
45
|
+
/** Compact size */
|
|
46
|
+
compact?: boolean;
|
|
47
|
+
/** Fixed header (sticky) */
|
|
48
|
+
stickyHeader?: boolean;
|
|
49
|
+
/** Additional CSS classes */
|
|
50
|
+
className?: string;
|
|
51
|
+
/** Empty state message */
|
|
52
|
+
emptyMessage?: string;
|
|
53
|
+
/** Empty state HTML */
|
|
54
|
+
emptyContent?: string;
|
|
55
|
+
/** Loading state */
|
|
56
|
+
loading?: boolean;
|
|
57
|
+
/** HTMX for sorting */
|
|
58
|
+
sortHtmx?: {
|
|
59
|
+
get: string;
|
|
60
|
+
target?: string;
|
|
61
|
+
swap?: string;
|
|
62
|
+
};
|
|
63
|
+
/** HTMX for selection */
|
|
64
|
+
selectHtmx?: {
|
|
65
|
+
post: string;
|
|
66
|
+
target?: string;
|
|
67
|
+
};
|
|
68
|
+
/** Row key property for selection */
|
|
69
|
+
rowKey?: keyof T;
|
|
70
|
+
/** Row click handler (URL template with {key}) */
|
|
71
|
+
onRowClick?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Build a data table
|
|
75
|
+
*/
|
|
76
|
+
export declare function table<T extends Record<string, unknown>>(data: T[], options: TableOptions<T>): string;
|
|
77
|
+
/**
|
|
78
|
+
* Pagination options
|
|
79
|
+
*/
|
|
80
|
+
export interface PaginationOptions {
|
|
81
|
+
/** Current page (1-indexed) */
|
|
82
|
+
page: number;
|
|
83
|
+
/** Total pages */
|
|
84
|
+
totalPages: number;
|
|
85
|
+
/** Total items */
|
|
86
|
+
totalItems?: number;
|
|
87
|
+
/** Items per page */
|
|
88
|
+
pageSize?: number;
|
|
89
|
+
/** Show page size selector */
|
|
90
|
+
showPageSize?: boolean;
|
|
91
|
+
/** Page size options */
|
|
92
|
+
pageSizeOptions?: number[];
|
|
93
|
+
/** Additional CSS classes */
|
|
94
|
+
className?: string;
|
|
95
|
+
/** HTMX for page changes */
|
|
96
|
+
htmx?: {
|
|
97
|
+
get: string;
|
|
98
|
+
target?: string;
|
|
99
|
+
swap?: string;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Build pagination component
|
|
104
|
+
*/
|
|
105
|
+
export declare function pagination(options: PaginationOptions): string;
|