@next-vibe/checker 1.0.11 → 1.0.13
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/.dist/bin/vibe-runtime.js +26 -22
- package/.dist/bin/vibe-runtime.js.map +5 -5
- package/.dist/oxlint-plugins/i18n.js +4 -0
- package/.dist/oxlint-plugins/i18n.js.map +1 -0
- package/.dist/oxlint-plugins/jsx-capitalization.js +4 -0
- package/.dist/oxlint-plugins/jsx-capitalization.js.map +1 -0
- package/.dist/oxlint-plugins/restricted-syntax.js +4 -0
- package/.dist/oxlint-plugins/restricted-syntax.js.map +1 -0
- package/check.config.ts +4 -12
- package/package.json +2 -9
- package/src/app/api/[locale]/LICENSE +674 -0
- package/src/app/api/[locale]/i18n/de/index.ts +13 -0
- package/src/app/api/[locale]/i18n/en/index.ts +12 -0
- package/src/app/api/[locale]/i18n/pl/index.ts +11 -0
- package/src/app/api/[locale]/shared/i18n/de/index.ts +85 -0
- package/src/app/api/[locale]/shared/i18n/en/index.ts +83 -0
- package/src/app/api/[locale]/shared/i18n/pl/index.ts +85 -0
- package/src/app/api/[locale]/shared/stats-filtering.ts +202 -0
- package/src/app/api/[locale]/shared/types/common.schema.ts +55 -0
- package/src/app/api/[locale]/shared/types/response.schema.ts +372 -0
- package/src/app/api/[locale]/shared/types/stats-filtering.schema.ts +375 -0
- package/src/app/api/[locale]/shared/types/utils.ts +190 -0
- package/src/app/api/[locale]/shared/utils/base64.ts +49 -0
- package/src/app/api/[locale]/shared/utils/env-util.ts +40 -0
- package/src/app/api/[locale]/shared/utils/i18n/de/index.ts +21 -0
- package/src/app/api/[locale]/shared/utils/i18n/en/index.ts +19 -0
- package/src/app/api/[locale]/shared/utils/i18n/pl/index.ts +21 -0
- package/src/app/api/[locale]/shared/utils/index.ts +11 -0
- package/src/app/api/[locale]/shared/utils/object-path.ts +41 -0
- package/src/app/api/[locale]/shared/utils/object.test.ts +82 -0
- package/src/app/api/[locale]/shared/utils/object.ts +75 -0
- package/src/app/api/[locale]/shared/utils/parse-error.ts +134 -0
- package/src/app/api/[locale]/shared/utils/parse-json.ts +70 -0
- package/src/app/api/[locale]/shared/utils/time.ts +53 -0
- package/src/app/api/[locale]/shared/utils/validation.ts +127 -0
- package/src/app/api/[locale]/shared/utils/zod-required-fields.ts +116 -0
- package/src/app/api/[locale]/system/builder/definition.ts +1942 -0
- package/src/app/api/[locale]/system/builder/enum.ts +78 -0
- package/src/app/api/[locale]/system/builder/i18n/de/index.ts +677 -0
- package/src/app/api/[locale]/system/builder/i18n/en/index.ts +665 -0
- package/src/app/api/[locale]/system/builder/i18n/pl/index.ts +668 -0
- package/src/app/api/[locale]/system/builder/repository/build-executor.test.ts +182 -0
- package/src/app/api/[locale]/system/builder/repository/build-executor.ts +583 -0
- package/src/app/api/[locale]/system/builder/repository/bun-compiler.ts +261 -0
- package/src/app/api/[locale]/system/builder/repository/bundle-analyzer.ts +197 -0
- package/src/app/api/[locale]/system/builder/repository/config-loader.ts +159 -0
- package/src/app/api/[locale]/system/builder/repository/config-validator.ts +97 -0
- package/src/app/api/[locale]/system/builder/repository/constants.ts +125 -0
- package/src/app/api/[locale]/system/builder/repository/error-suggester.ts +75 -0
- package/src/app/api/[locale]/system/builder/repository/file-copier.ts +98 -0
- package/src/app/api/[locale]/system/builder/repository/folder-cleaner.ts +80 -0
- package/src/app/api/[locale]/system/builder/repository/index.ts +2 -0
- package/src/app/api/[locale]/system/builder/repository/npm-package-generator.ts +146 -0
- package/src/app/api/[locale]/system/builder/repository/output-formatter.ts +104 -0
- package/src/app/api/[locale]/system/builder/repository/profile-service.ts +79 -0
- package/src/app/api/[locale]/system/builder/repository/report-generator.ts +125 -0
- package/src/app/api/[locale]/system/builder/repository/vite-compiler.ts +291 -0
- package/src/app/api/[locale]/system/builder/route.ts +21 -0
- package/src/app/api/[locale]/system/builder/test-files/file1.ts +2 -0
- package/src/app/api/[locale]/system/builder/test-files/file2.tsx +10 -0
- package/src/app/api/[locale]/system/builder/test-files/file3.tsx +16 -0
- package/src/app/api/[locale]/system/builder/test-files/folderToCopy/fileInFolder.ts +2 -0
- package/src/app/api/[locale]/system/builder/test-files/test-config.ts +38 -0
- package/src/app/api/[locale]/system/builder/test-files/test-delete-config.ts +8 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/package.json +24 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/constants.ts +6 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/greet.ts +18 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/index.ts +7 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/utils/calculate.ts +27 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.json +19 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.tsbuildinfo +1 -0
- package/src/app/api/[locale]/system/builder/test-files/test3.css +1 -0
- package/src/app/api/[locale]/system/check/config/repository.ts +886 -0
- package/src/app/api/[locale]/system/check/config/shared.ts +396 -0
- package/src/app/api/[locale]/system/check/config/types.ts +616 -0
- package/src/app/api/[locale]/system/check/config/utils.ts +171 -0
- package/src/app/api/[locale]/system/check/i18n/de/index.ts +15 -0
- package/src/app/api/[locale]/system/check/i18n/en/index.ts +14 -0
- package/src/app/api/[locale]/system/check/i18n/pl/index.ts +15 -0
- package/src/app/api/[locale]/system/check/lint/definition.ts +414 -0
- package/src/app/api/[locale]/system/check/lint/enum.ts +37 -0
- package/src/app/api/[locale]/system/check/lint/i18n/de/index.ts +164 -0
- package/src/app/api/[locale]/system/check/lint/i18n/en/index.ts +162 -0
- package/src/app/api/[locale]/system/check/lint/i18n/pl/index.ts +164 -0
- package/src/app/api/[locale]/system/check/lint/repository.ts +753 -0
- package/src/app/api/[locale]/system/check/lint/route.ts +21 -0
- package/src/app/api/[locale]/system/check/oxlint/README.md +190 -0
- package/src/app/api/[locale]/system/check/oxlint/definition.ts +414 -0
- package/src/app/api/[locale]/system/check/oxlint/enum.ts +37 -0
- package/src/app/api/[locale]/system/check/oxlint/i18n/de/index.ts +171 -0
- package/src/app/api/[locale]/system/check/oxlint/i18n/en/index.ts +168 -0
- package/src/app/api/[locale]/system/check/oxlint/i18n/pl/index.ts +172 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/i18n/src/index.ts +372 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/README.md +246 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/src/index.ts +583 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/src/index.ts +500 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/test.tsx +74 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/shared/config-loader.ts +305 -0
- package/src/app/api/[locale]/system/check/oxlint/repository.ts +959 -0
- package/src/app/api/[locale]/system/check/oxlint/route.ts +21 -0
- package/src/app/api/[locale]/system/check/oxlint/types.ts +193 -0
- package/src/app/api/[locale]/system/check/test-project/bun.lock +532 -0
- package/src/app/api/[locale]/system/check/test-project/check.config.ts +981 -0
- package/src/app/api/[locale]/system/check/test-project/package.json +12 -0
- package/src/app/api/[locale]/system/check/test-project/src/constants.ts +6 -0
- package/src/app/api/[locale]/system/check/test-project/src/greet.ts +18 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/a11y-issues.tsx +107 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/eslint-issues.tsx +37 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/general-issues.ts +137 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/i18n-issues.tsx +129 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/jsx-capitalization-issues.tsx +131 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/nextjs-issues.tsx +95 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/promise-issues.ts +76 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/react-issues.tsx +95 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/restricted-syntax-issues.tsx +61 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/typescript-issues.ts +80 -0
- package/src/app/api/[locale]/system/check/test-project/src/utils/calculate.ts +27 -0
- package/src/app/api/[locale]/system/check/test-project/tsconfig.json +34 -0
- package/src/app/api/[locale]/system/check/test-project/tsconfig.tsbuildinfo +1 -0
- package/src/app/api/[locale]/system/check/typecheck/definition.ts +369 -0
- package/src/app/api/[locale]/system/check/typecheck/enum.ts +37 -0
- package/src/app/api/[locale]/system/check/typecheck/i18n/de/index.ts +159 -0
- package/src/app/api/[locale]/system/check/typecheck/i18n/en/index.ts +150 -0
- package/src/app/api/[locale]/system/check/typecheck/i18n/pl/index.ts +155 -0
- package/src/app/api/[locale]/system/check/typecheck/repository.ts +919 -0
- package/src/app/api/[locale]/system/check/typecheck/route.ts +22 -0
- package/src/app/api/[locale]/system/check/typecheck/utils.ts +168 -0
- package/src/app/api/[locale]/system/check/vibe-check/definition.ts +568 -0
- package/src/app/api/[locale]/system/check/vibe-check/enum.ts +69 -0
- package/src/app/api/[locale]/system/check/vibe-check/i18n/de/index.ts +192 -0
- package/src/app/api/[locale]/system/check/vibe-check/i18n/en/index.ts +189 -0
- package/src/app/api/[locale]/system/check/vibe-check/i18n/pl/index.ts +192 -0
- package/src/app/api/[locale]/system/check/vibe-check/repository.ts +545 -0
- package/src/app/api/[locale]/system/check/vibe-check/route.test.ts +1142 -0
- package/src/app/api/[locale]/system/check/vibe-check/route.ts +21 -0
- package/src/app/api/[locale]/system/generated/endpoint.ts +313 -0
- package/src/app/api/[locale]/system/generated/endpoints.ts +156 -0
- package/src/app/api/[locale]/system/generated/route-handlers.ts +224 -0
- package/src/app/api/[locale]/system/generators/endpoint/definition.ts +193 -0
- package/src/app/api/[locale]/system/generators/endpoint/i18n/de/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/endpoint/i18n/en/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/endpoint/i18n/pl/index.ts +50 -0
- package/src/app/api/[locale]/system/generators/endpoint/repository.ts +291 -0
- package/src/app/api/[locale]/system/generators/endpoint/route.ts +21 -0
- package/src/app/api/[locale]/system/generators/endpoints/definition.ts +246 -0
- package/src/app/api/[locale]/system/generators/endpoints/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/generators/endpoints/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/generators/endpoints/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/generators/endpoints/options-repository.ts +463 -0
- package/src/app/api/[locale]/system/generators/endpoints/repository.ts +383 -0
- package/src/app/api/[locale]/system/generators/endpoints/route.ts +18 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/definition.ts +194 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/i18n/de/index.ts +71 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/i18n/en/index.ts +69 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/i18n/pl/index.ts +71 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/repository.ts +294 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/route.ts +18 -0
- package/src/app/api/[locale]/system/generators/generate-all/definition.ts +355 -0
- package/src/app/api/[locale]/system/generators/generate-all/i18n/de/index.ts +96 -0
- package/src/app/api/[locale]/system/generators/generate-all/i18n/en/index.ts +94 -0
- package/src/app/api/[locale]/system/generators/generate-all/i18n/pl/index.ts +96 -0
- package/src/app/api/[locale]/system/generators/generate-all/repository.ts +257 -0
- package/src/app/api/[locale]/system/generators/generate-all/route.ts +20 -0
- package/src/app/api/[locale]/system/generators/i18n/de/index.ts +15 -0
- package/src/app/api/[locale]/system/generators/i18n/en/index.ts +14 -0
- package/src/app/api/[locale]/system/generators/i18n/pl/index.ts +15 -0
- package/src/app/api/[locale]/system/generators/route-handlers/definition.ts +198 -0
- package/src/app/api/[locale]/system/generators/route-handlers/i18n/de/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/route-handlers/i18n/en/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/route-handlers/i18n/pl/index.ts +50 -0
- package/src/app/api/[locale]/system/generators/route-handlers/repository.ts +277 -0
- package/src/app/api/[locale]/system/generators/route-handlers/route.ts +17 -0
- package/src/app/api/[locale]/system/generators/shared/utils.ts +233 -0
- package/src/app/api/[locale]/system/help/definition.ts +445 -0
- package/src/app/api/[locale]/system/help/i18n/de/index.ts +267 -0
- package/src/app/api/[locale]/system/help/i18n/en/index.ts +262 -0
- package/src/app/api/[locale]/system/help/i18n/pl/index.ts +265 -0
- package/src/app/api/[locale]/system/help/interactive/definition.ts +125 -0
- package/src/app/api/[locale]/system/help/interactive/i18n/de/index.ts +22 -0
- package/src/app/api/[locale]/system/help/interactive/i18n/en/index.ts +19 -0
- package/src/app/api/[locale]/system/help/interactive/i18n/pl/index.ts +22 -0
- package/src/app/api/[locale]/system/help/interactive/repository.ts +1025 -0
- package/src/app/api/[locale]/system/help/interactive/route.ts +53 -0
- package/src/app/api/[locale]/system/help/list/definition.ts +372 -0
- package/src/app/api/[locale]/system/help/list/repository.ts +110 -0
- package/src/app/api/[locale]/system/help/list/route.ts +21 -0
- package/src/app/api/[locale]/system/help/repository.ts +212 -0
- package/src/app/api/[locale]/system/help/route.ts +16 -0
- package/src/app/api/[locale]/system/i18n/de/index.ts +68 -0
- package/src/app/api/[locale]/system/i18n/en/index.ts +65 -0
- package/src/app/api/[locale]/system/i18n/pl/index.ts +66 -0
- package/src/app/api/[locale]/system/release-tool/definition.ts +3104 -0
- package/src/app/api/[locale]/system/release-tool/i18n/de/index.ts +813 -0
- package/src/app/api/[locale]/system/release-tool/i18n/en/index.ts +797 -0
- package/src/app/api/[locale]/system/release-tool/i18n/pl/index.ts +810 -0
- package/src/app/api/[locale]/system/release-tool/repository/asset-zipper.ts +128 -0
- package/src/app/api/[locale]/system/release-tool/repository/changelog-generator.ts +212 -0
- package/src/app/api/[locale]/system/release-tool/repository/ci-detector.ts +566 -0
- package/src/app/api/[locale]/system/release-tool/repository/config.ts +113 -0
- package/src/app/api/[locale]/system/release-tool/repository/constants.ts +407 -0
- package/src/app/api/[locale]/system/release-tool/repository/dependency-manager.ts +527 -0
- package/src/app/api/[locale]/system/release-tool/repository/git-service.ts +403 -0
- package/src/app/api/[locale]/system/release-tool/repository/hook-runner.ts +100 -0
- package/src/app/api/[locale]/system/release-tool/repository/index.ts +1 -0
- package/src/app/api/[locale]/system/release-tool/repository/notification-service.ts +638 -0
- package/src/app/api/[locale]/system/release-tool/repository/package-service.ts +169 -0
- package/src/app/api/[locale]/system/release-tool/repository/publisher.ts +253 -0
- package/src/app/api/[locale]/system/release-tool/repository/quality-runner.ts +428 -0
- package/src/app/api/[locale]/system/release-tool/repository/release-creator.ts +293 -0
- package/src/app/api/[locale]/system/release-tool/repository/release-executor.ts +1198 -0
- package/src/app/api/[locale]/system/release-tool/repository/snyk-service.ts +136 -0
- package/src/app/api/[locale]/system/release-tool/repository/utils.ts +642 -0
- package/src/app/api/[locale]/system/release-tool/repository/validation.ts +288 -0
- package/src/app/api/[locale]/system/release-tool/repository/version-service.ts +297 -0
- package/src/app/api/[locale]/system/release-tool/route.ts +21 -0
- package/src/app/api/[locale]/system/unified-interface/README.md +328 -0
- package/src/app/api/[locale]/system/unified-interface/cli/README.md +349 -0
- package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-handler.ts +95 -0
- package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-user.ts +146 -0
- package/src/app/api/[locale]/system/unified-interface/cli/auth/session-file.ts +266 -0
- package/src/app/api/[locale]/system/unified-interface/cli/env.ts +26 -0
- package/src/app/api/[locale]/system/unified-interface/cli/i18n/de/index.ts +157 -0
- package/src/app/api/[locale]/system/unified-interface/cli/i18n/en/index.ts +155 -0
- package/src/app/api/[locale]/system/unified-interface/cli/i18n/pl/index.ts +158 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/debug.ts +595 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/entry-point.ts +129 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/environment.ts +155 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/execution-errors.ts +452 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/parsing.ts +297 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/route-executor.ts +859 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/de/index.ts +12 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/en/index.ts +11 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/pl/index.ts +12 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/definition.ts +262 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/repository.ts +421 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/route.ts +25 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/definition.ts +181 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/de/index.ts +61 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/en/index.ts +59 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/pl/index.ts +61 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/repository.ts +195 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/route.ts +22 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/definition.ts +188 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/repository.ts +209 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/route.ts +24 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/definition.ts +200 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/repository.ts +113 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/route.ts +22 -0
- package/src/app/api/[locale]/system/unified-interface/cli/vibe-runtime.ts +304 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/base-renderer.ts +270 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/registry.ts +309 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/types.ts +126 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/de/index.ts +67 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/en/index.ts +65 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/pl/index.ts +67 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/accordion.ts +74 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/avatar.ts +39 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/badge.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-output.ts +298 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-files.ts +89 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-list.ts +298 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-summary.ts +96 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/container.ts +186 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-card.ts +65 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-cards.ts +570 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-list.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-table.ts +385 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/editable-text.ts +99 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/empty-state.ts +55 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/errors.ts +67 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/grouped-list.ts +729 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-card.ts +87 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-list.ts +112 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link.ts +59 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/loading.ts +50 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/markdown.ts +131 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/metric.ts +291 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/section.ts +120 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/stats-grid.ts +149 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/tabs.ts +61 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/text.ts +78 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/title.ts +42 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/response-renderer.ts +418 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/schema-handler.ts +534 -0
- package/src/app/api/[locale]/system/unified-interface/i18n/de/index.ts +42 -0
- package/src/app/api/[locale]/system/unified-interface/i18n/en/index.ts +40 -0
- package/src/app/api/[locale]/system/unified-interface/i18n/pl/index.ts +43 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/README.md +114 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/converter.ts +146 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/i18n/de/index.ts +182 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/i18n/en/index.ts +179 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/i18n/pl/index.ts +181 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/registry.ts +343 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/serve/definition.ts +147 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/serve/repository.ts +38 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/serve/route.ts +14 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/server/protocol-handler.ts +309 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/server/server.ts +154 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/server/stdio-transport.ts +193 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/types.ts +246 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create-form.ts +1510 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create.ts +581 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/endpoint-to-metadata.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/loader.ts +152 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definitions/registry.ts +265 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/permissions/registry.ts +680 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/executor.ts +220 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/handler.ts +325 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/multi.ts +184 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/request-validator.ts +201 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/single.ts +58 -0
- package/src/app/api/[locale]/system/unified-interface/shared/env/define-env-client.ts +49 -0
- package/src/app/api/[locale]/system/unified-interface/shared/env/define-env.ts +47 -0
- package/src/app/api/[locale]/system/unified-interface/shared/env/validation-logger.ts +58 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/enum.ts +110 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/specialized.ts +339 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/utils.test.ts +408 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/utils.ts +1349 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field-config/endpoint-field-types.ts +107 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field-config/field-config-types.ts +268 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/colors.ts +114 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/endpoint.ts +169 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/file-logger.ts +88 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/formatters.ts +177 -0
- package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/base-auth-handler.ts +82 -0
- package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/factory.ts +33 -0
- package/src/app/api/[locale]/system/unified-interface/shared/server-only/server-only.ts +4 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/actions.ts +289 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/endpoint.ts +1167 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/enums.ts +382 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/platform.ts +34 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/types.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/ui-config.ts +76 -0
- package/src/app/api/[locale]/system/unified-interface/shared/utils/error-types.ts +27 -0
- package/src/app/api/[locale]/system/unified-interface/shared/utils/path.ts +63 -0
- package/src/app/api/[locale]/system/unified-interface/shared/utils/scanner.ts +241 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/actions.ts +256 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/configs.ts +1158 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/helpers.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/accordion.ts +82 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/avatar.ts +75 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/badge.ts +89 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-output.ts +302 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-quality-list.ts +202 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/container.ts +129 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-card.ts +81 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-cards.ts +258 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-list.ts +123 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-table.ts +387 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/editable-text.ts +89 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/empty-state.ts +78 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/errors.ts +93 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/grouped-list.ts +448 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/index.ts +38 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-card.ts +130 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-list.ts +127 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link.ts +68 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/loading.ts +81 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/markdown.ts +176 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/metric-card.ts +241 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/section.ts +90 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/stats-grid.ts +71 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/tabs.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/text.ts +105 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/title.ts +72 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/types.ts +240 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/field-helpers.ts +137 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/formatting.ts +437 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/url.ts +40 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/widget-helpers.ts +465 -0
- package/src/app/api/[locale]/user/auth/enum.ts +16 -0
- package/src/app/api/[locale]/user/auth/i18n/de/index.ts +227 -0
- package/src/app/api/[locale]/user/auth/i18n/en/index.ts +205 -0
- package/src/app/api/[locale]/user/auth/i18n/pl/index.ts +219 -0
- package/src/app/api/[locale]/user/auth/types.ts +110 -0
- package/src/app/api/[locale]/user/enum.ts +64 -0
- package/src/app/api/[locale]/user/private/i18n/de/index.ts +3 -0
- package/src/app/api/[locale]/user/private/i18n/en/index.ts +1 -0
- package/src/app/api/[locale]/user/private/i18n/pl/index.ts +3 -0
- package/src/app/api/[locale]/user/types.ts +118 -0
- package/src/app/api/[locale]/user/user-roles/enum.ts +112 -0
- package/src/app/api/[locale]/user/user-roles/i18n/de/index.ts +85 -0
- package/src/app/api/[locale]/user/user-roles/i18n/en/index.ts +83 -0
- package/src/app/api/[locale]/user/user-roles/i18n/pl/index.ts +86 -0
- package/src/app/api/[locale]/user/user-roles/types.ts +34 -0
- package/src/app/api/i18n/de/index.ts +6 -0
- package/src/app/api/i18n/en/index.ts +5 -0
- package/src/app/api/i18n/pl/index.ts +5 -0
- package/src/app/i18n/de/index.ts +6 -0
- package/src/app/i18n/en/index.ts +5 -0
- package/src/app/i18n/pl/index.ts +5 -0
|
@@ -0,0 +1,1158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed Widget Configurations
|
|
3
|
+
*
|
|
4
|
+
* Static, fully typed configurations for each widget type.
|
|
5
|
+
* This ensures type safety across CLI and React implementations.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { Route } from "next";
|
|
9
|
+
import type { z } from "zod";
|
|
10
|
+
|
|
11
|
+
import type {
|
|
12
|
+
FieldUsageConfig,
|
|
13
|
+
InferSchemaFromField,
|
|
14
|
+
ObjectField,
|
|
15
|
+
} from "../types/endpoint";
|
|
16
|
+
import type {
|
|
17
|
+
FieldDataType,
|
|
18
|
+
FieldUsage,
|
|
19
|
+
LayoutType,
|
|
20
|
+
SpacingSize,
|
|
21
|
+
WidgetType,
|
|
22
|
+
} from "../types/enums";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Layout configuration for containers and widgets
|
|
26
|
+
*/
|
|
27
|
+
export interface LayoutConfig {
|
|
28
|
+
type: LayoutType;
|
|
29
|
+
columns?: number;
|
|
30
|
+
rows?: number;
|
|
31
|
+
gap?: SpacingSize;
|
|
32
|
+
padding?: SpacingSize;
|
|
33
|
+
margin?: SpacingSize;
|
|
34
|
+
responsive?: {
|
|
35
|
+
sm?: Partial<LayoutConfig>;
|
|
36
|
+
md?: Partial<LayoutConfig>;
|
|
37
|
+
lg?: Partial<LayoutConfig>;
|
|
38
|
+
xl?: Partial<LayoutConfig>;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Common widget properties
|
|
44
|
+
* TKey allows using either global TranslationKey or scoped translation keys
|
|
45
|
+
*/
|
|
46
|
+
interface BaseWidgetConfig {
|
|
47
|
+
type: WidgetType;
|
|
48
|
+
className?: string;
|
|
49
|
+
order?: number;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Prefill display configuration for form fields
|
|
54
|
+
* When a field has a prefilled value from server/URL params, this controls how it's displayed
|
|
55
|
+
*/
|
|
56
|
+
export interface PrefillDisplayConfig<TKey extends string> {
|
|
57
|
+
/** Display variant when field is prefilled */
|
|
58
|
+
variant: "badge" | "highlight" | "card";
|
|
59
|
+
/** Translation key for the label shown with prefilled value */
|
|
60
|
+
labelKey?: NoInfer<TKey>;
|
|
61
|
+
/** Icon to show with prefilled value */
|
|
62
|
+
icon?: string;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Common properties for form field widgets
|
|
67
|
+
* TKey allows using either global TranslationKey or scoped translation keys
|
|
68
|
+
* TKey is inferred from label/description values, then validated against expected type
|
|
69
|
+
*/
|
|
70
|
+
interface BaseFormFieldWidgetConfig<
|
|
71
|
+
TKey extends string,
|
|
72
|
+
> extends BaseWidgetConfig {
|
|
73
|
+
type: WidgetType.FORM_FIELD;
|
|
74
|
+
label?: NoInfer<TKey>;
|
|
75
|
+
description?: NoInfer<TKey>;
|
|
76
|
+
placeholder?: NoInfer<TKey>;
|
|
77
|
+
helpText?: NoInfer<TKey>;
|
|
78
|
+
required?: boolean;
|
|
79
|
+
disabled?: boolean;
|
|
80
|
+
columns?: number;
|
|
81
|
+
/**
|
|
82
|
+
* Make field readonly - displays value but cannot be edited
|
|
83
|
+
* Use with prefillDisplay to show special styling for server-provided values
|
|
84
|
+
*/
|
|
85
|
+
readonly?: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Configure how prefilled values are displayed when readonly
|
|
88
|
+
* Only applies when field has a prefilled value
|
|
89
|
+
*/
|
|
90
|
+
prefillDisplay?: PrefillDisplayConfig<TKey>;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// ============================================================================
|
|
94
|
+
// FORM WIDGETS
|
|
95
|
+
// ============================================================================
|
|
96
|
+
|
|
97
|
+
// Text input
|
|
98
|
+
export interface TextFieldWidgetConfig<
|
|
99
|
+
TKey extends string,
|
|
100
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
101
|
+
fieldType: FieldDataType.TEXT;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Email input
|
|
105
|
+
export interface EmailFieldWidgetConfig<
|
|
106
|
+
TKey extends string,
|
|
107
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
108
|
+
fieldType: FieldDataType.EMAIL;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Password input
|
|
112
|
+
export interface PasswordFieldWidgetConfig<
|
|
113
|
+
TKey extends string,
|
|
114
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
115
|
+
fieldType: FieldDataType.PASSWORD;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Number input
|
|
119
|
+
export interface NumberFieldWidgetConfig<
|
|
120
|
+
TKey extends string,
|
|
121
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
122
|
+
fieldType: FieldDataType.NUMBER;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Boolean/Checkbox input
|
|
126
|
+
export interface BooleanFieldWidgetConfig<TKey extends string> extends Omit<
|
|
127
|
+
BaseFormFieldWidgetConfig<TKey>,
|
|
128
|
+
"placeholder"
|
|
129
|
+
> {
|
|
130
|
+
fieldType: FieldDataType.BOOLEAN;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Select dropdown
|
|
134
|
+
export interface SelectFieldWidgetConfig<
|
|
135
|
+
TKey extends string,
|
|
136
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
137
|
+
fieldType: FieldDataType.SELECT;
|
|
138
|
+
options: Array<{ label: NoInfer<TKey>; value: string | number }>;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Multi-select
|
|
142
|
+
export interface MultiSelectFieldWidgetConfig<
|
|
143
|
+
TKey extends string,
|
|
144
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
145
|
+
fieldType: FieldDataType.MULTISELECT;
|
|
146
|
+
options: Array<{ label: NoInfer<TKey>; value: string | number }>;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Filter pills (like select but displayed as pills)
|
|
150
|
+
export interface FilterPillsFieldWidgetConfig<
|
|
151
|
+
TKey extends string,
|
|
152
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
153
|
+
fieldType: FieldDataType.FILTER_PILLS;
|
|
154
|
+
options: Array<{
|
|
155
|
+
label: NoInfer<TKey>;
|
|
156
|
+
value: string | number;
|
|
157
|
+
icon?: string;
|
|
158
|
+
description?: NoInfer<TKey>;
|
|
159
|
+
}>;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Textarea
|
|
163
|
+
export interface TextareaFieldWidgetConfig<
|
|
164
|
+
TKey extends string,
|
|
165
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
166
|
+
fieldType: FieldDataType.TEXTAREA;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Phone input
|
|
170
|
+
export interface PhoneFieldWidgetConfig<
|
|
171
|
+
TKey extends string,
|
|
172
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
173
|
+
fieldType: FieldDataType.PHONE;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// URL input
|
|
177
|
+
export interface UrlFieldWidgetConfig<
|
|
178
|
+
TKey extends string,
|
|
179
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
180
|
+
fieldType: FieldDataType.URL;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Integer input
|
|
184
|
+
export interface IntFieldWidgetConfig<
|
|
185
|
+
TKey extends string,
|
|
186
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
187
|
+
fieldType: FieldDataType.INT;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// Date input
|
|
191
|
+
export interface DateFieldWidgetConfig<
|
|
192
|
+
TKey extends string,
|
|
193
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
194
|
+
fieldType: FieldDataType.DATE;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// DateTime input
|
|
198
|
+
export interface DateTimeFieldWidgetConfig<
|
|
199
|
+
TKey extends string,
|
|
200
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
201
|
+
fieldType: FieldDataType.DATETIME;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Time input
|
|
205
|
+
export interface TimeFieldWidgetConfig<
|
|
206
|
+
TKey extends string,
|
|
207
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
208
|
+
fieldType: FieldDataType.TIME;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// File input
|
|
212
|
+
export interface FileFieldWidgetConfig<
|
|
213
|
+
TKey extends string,
|
|
214
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
215
|
+
fieldType: FieldDataType.FILE;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// UUID input
|
|
219
|
+
export interface UuidFieldWidgetConfig<
|
|
220
|
+
TKey extends string,
|
|
221
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
222
|
+
fieldType: FieldDataType.UUID;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// JSON input
|
|
226
|
+
export interface JsonFieldWidgetConfig<
|
|
227
|
+
TKey extends string,
|
|
228
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
229
|
+
fieldType: FieldDataType.JSON;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// Date range input
|
|
233
|
+
export interface DateRangeFieldWidgetConfig<TKey extends string> extends Omit<
|
|
234
|
+
BaseFormFieldWidgetConfig<TKey>,
|
|
235
|
+
"placeholder"
|
|
236
|
+
> {
|
|
237
|
+
fieldType: FieldDataType.DATE_RANGE;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// Time range input
|
|
241
|
+
export interface TimeRangeFieldWidgetConfig<TKey extends string> extends Omit<
|
|
242
|
+
BaseFormFieldWidgetConfig<TKey>,
|
|
243
|
+
"placeholder"
|
|
244
|
+
> {
|
|
245
|
+
fieldType: FieldDataType.TIME_RANGE;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// Timezone select
|
|
249
|
+
export interface TimezoneFieldWidgetConfig<
|
|
250
|
+
TKey extends string,
|
|
251
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
252
|
+
fieldType: FieldDataType.TIMEZONE;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// Currency select
|
|
256
|
+
export interface CurrencySelectFieldWidgetConfig<
|
|
257
|
+
TKey extends string,
|
|
258
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
259
|
+
fieldType: FieldDataType.CURRENCY_SELECT;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// Language select
|
|
263
|
+
export interface LanguageSelectFieldWidgetConfig<
|
|
264
|
+
TKey extends string,
|
|
265
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
266
|
+
fieldType: FieldDataType.LANGUAGE_SELECT;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// Country select
|
|
270
|
+
export interface CountrySelectFieldWidgetConfig<
|
|
271
|
+
TKey extends string,
|
|
272
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
273
|
+
fieldType: FieldDataType.COUNTRY_SELECT;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
// Color picker
|
|
277
|
+
export interface ColorFieldWidgetConfig<TKey extends string> extends Omit<
|
|
278
|
+
BaseFormFieldWidgetConfig<TKey>,
|
|
279
|
+
"placeholder"
|
|
280
|
+
> {
|
|
281
|
+
fieldType: FieldDataType.COLOR;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// Icon picker
|
|
285
|
+
export interface IconFieldWidgetConfig<
|
|
286
|
+
TKey extends string,
|
|
287
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
288
|
+
fieldType: FieldDataType.ICON;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// Slider input
|
|
292
|
+
export interface SliderFieldWidgetConfig<TKey extends string> extends Omit<
|
|
293
|
+
BaseFormFieldWidgetConfig<TKey>,
|
|
294
|
+
"placeholder"
|
|
295
|
+
> {
|
|
296
|
+
fieldType: FieldDataType.SLIDER;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// Tags input
|
|
300
|
+
export interface TagsFieldWidgetConfig<
|
|
301
|
+
TKey extends string,
|
|
302
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
303
|
+
fieldType: FieldDataType.TAGS;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// Text array input
|
|
307
|
+
export interface TextArrayFieldWidgetConfig<
|
|
308
|
+
TKey extends string,
|
|
309
|
+
> extends BaseFormFieldWidgetConfig<TKey> {
|
|
310
|
+
fieldType: FieldDataType.TEXT_ARRAY;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// Union type for all form field widgets
|
|
314
|
+
export type FormFieldWidgetConfig<TKey extends string> =
|
|
315
|
+
| TextFieldWidgetConfig<TKey>
|
|
316
|
+
| EmailFieldWidgetConfig<TKey>
|
|
317
|
+
| PasswordFieldWidgetConfig<TKey>
|
|
318
|
+
| NumberFieldWidgetConfig<TKey>
|
|
319
|
+
| BooleanFieldWidgetConfig<TKey>
|
|
320
|
+
| SelectFieldWidgetConfig<TKey>
|
|
321
|
+
| MultiSelectFieldWidgetConfig<TKey>
|
|
322
|
+
| FilterPillsFieldWidgetConfig<TKey>
|
|
323
|
+
| TextareaFieldWidgetConfig<TKey>
|
|
324
|
+
| PhoneFieldWidgetConfig<TKey>
|
|
325
|
+
| UrlFieldWidgetConfig<TKey>
|
|
326
|
+
| IntFieldWidgetConfig<TKey>
|
|
327
|
+
| DateFieldWidgetConfig<TKey>
|
|
328
|
+
| DateTimeFieldWidgetConfig<TKey>
|
|
329
|
+
| TimeFieldWidgetConfig<TKey>
|
|
330
|
+
| FileFieldWidgetConfig<TKey>
|
|
331
|
+
| UuidFieldWidgetConfig<TKey>
|
|
332
|
+
| JsonFieldWidgetConfig<TKey>
|
|
333
|
+
| DateRangeFieldWidgetConfig<TKey>
|
|
334
|
+
| TimeRangeFieldWidgetConfig<TKey>
|
|
335
|
+
| TimezoneFieldWidgetConfig<TKey>
|
|
336
|
+
| CurrencySelectFieldWidgetConfig<TKey>
|
|
337
|
+
| LanguageSelectFieldWidgetConfig<TKey>
|
|
338
|
+
| CountrySelectFieldWidgetConfig<TKey>
|
|
339
|
+
| ColorFieldWidgetConfig<TKey>
|
|
340
|
+
| IconFieldWidgetConfig<TKey>
|
|
341
|
+
| SliderFieldWidgetConfig<TKey>
|
|
342
|
+
| TagsFieldWidgetConfig<TKey>
|
|
343
|
+
| TextArrayFieldWidgetConfig<TKey>;
|
|
344
|
+
|
|
345
|
+
export interface FormGroupWidgetConfig<
|
|
346
|
+
TKey extends string,
|
|
347
|
+
> extends BaseWidgetConfig {
|
|
348
|
+
type: WidgetType.FORM_GROUP;
|
|
349
|
+
title?: NoInfer<TKey>;
|
|
350
|
+
description?: NoInfer<TKey>;
|
|
351
|
+
layoutType?: LayoutType;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
export interface FormSectionWidgetConfig<
|
|
355
|
+
TKey extends string,
|
|
356
|
+
> extends BaseWidgetConfig {
|
|
357
|
+
type: WidgetType.FORM_SECTION;
|
|
358
|
+
title?: NoInfer<TKey>;
|
|
359
|
+
description?: NoInfer<TKey>;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
// ============================================================================
|
|
363
|
+
// DATA DISPLAY WIDGETS
|
|
364
|
+
// ============================================================================
|
|
365
|
+
|
|
366
|
+
export interface DataTableWidgetConfig<
|
|
367
|
+
TKey extends string,
|
|
368
|
+
> extends BaseWidgetConfig {
|
|
369
|
+
type: WidgetType.DATA_TABLE;
|
|
370
|
+
title?: NoInfer<TKey>;
|
|
371
|
+
description?: NoInfer<TKey>;
|
|
372
|
+
columns?: Array<{
|
|
373
|
+
key: string; // Field name from the data object (e.g., "id", "name", "email")
|
|
374
|
+
label: NoInfer<TKey>;
|
|
375
|
+
sortable?: boolean;
|
|
376
|
+
width?: string | number;
|
|
377
|
+
align?: "left" | "center" | "right";
|
|
378
|
+
}>;
|
|
379
|
+
pagination?: {
|
|
380
|
+
enabled?: boolean;
|
|
381
|
+
pageSize?: number;
|
|
382
|
+
showSizeChanger?: boolean;
|
|
383
|
+
};
|
|
384
|
+
sorting?: {
|
|
385
|
+
enabled?: boolean;
|
|
386
|
+
defaultSort?: Array<{
|
|
387
|
+
key: string;
|
|
388
|
+
direction: "asc" | "desc";
|
|
389
|
+
}>;
|
|
390
|
+
};
|
|
391
|
+
filtering?: {
|
|
392
|
+
enabled?: boolean;
|
|
393
|
+
global?: boolean;
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
export interface DataCardsWidgetConfig<
|
|
398
|
+
TKey extends string,
|
|
399
|
+
> extends BaseWidgetConfig {
|
|
400
|
+
type: WidgetType.DATA_CARDS;
|
|
401
|
+
title?: NoInfer<TKey>;
|
|
402
|
+
description?: NoInfer<TKey>;
|
|
403
|
+
// Card field mapping - these are field names from child objects to display in card layout
|
|
404
|
+
cardTitle?: string; // Field name to use as card title (e.g., "name", "title")
|
|
405
|
+
cardSubtitle?: string; // Field name to use as card subtitle (e.g., "email", "description")
|
|
406
|
+
cardImage?: string; // Field name containing image URL (e.g., "avatarUrl", "imageUrl")
|
|
407
|
+
cardContent?: string[]; // Array of field names to display in card body (e.g., ["description", "status"])
|
|
408
|
+
cardMetadata?: string[]; // Array of field names to display as metadata (e.g., ["createdAt", "updatedAt"])
|
|
409
|
+
cardTemplate?: string; // Template name for card rendering
|
|
410
|
+
groupBy?: string; // Field to group cards by
|
|
411
|
+
showSummary?: boolean; // Show summary for groups
|
|
412
|
+
summaryTemplate?: string; // Template for summary rendering
|
|
413
|
+
layout?: LayoutConfig; // Layout configuration
|
|
414
|
+
itemConfig?: {
|
|
415
|
+
template: string;
|
|
416
|
+
size: string;
|
|
417
|
+
spacing: string;
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
export interface DataListWidgetConfig<
|
|
422
|
+
TKey extends string,
|
|
423
|
+
> extends BaseWidgetConfig {
|
|
424
|
+
type: WidgetType.DATA_LIST;
|
|
425
|
+
title?: NoInfer<TKey>;
|
|
426
|
+
description?: NoInfer<TKey>;
|
|
427
|
+
optional?: boolean;
|
|
428
|
+
renderMode?: string;
|
|
429
|
+
hierarchical?: boolean;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
export interface DataGridWidgetConfig<
|
|
433
|
+
TKey extends string,
|
|
434
|
+
> extends BaseWidgetConfig {
|
|
435
|
+
type: WidgetType.DATA_GRID;
|
|
436
|
+
title?: NoInfer<TKey>;
|
|
437
|
+
description?: NoInfer<TKey>;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
export interface GroupedListWidgetConfig<
|
|
441
|
+
TKey extends string,
|
|
442
|
+
> extends BaseWidgetConfig {
|
|
443
|
+
type: WidgetType.GROUPED_LIST;
|
|
444
|
+
title?: NoInfer<TKey>;
|
|
445
|
+
description?: NoInfer<TKey>;
|
|
446
|
+
groupBy?: string; // Field name from data object to group by (e.g., "file", "status", "category")
|
|
447
|
+
sortBy?: string; // Field name from data object to sort by (e.g., "severity", "createdAt", "name")
|
|
448
|
+
columns?: number;
|
|
449
|
+
hierarchical?: boolean;
|
|
450
|
+
renderMode?: string;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
export interface CodeQualityListWidgetConfig<
|
|
454
|
+
TKey extends string,
|
|
455
|
+
> extends BaseWidgetConfig {
|
|
456
|
+
type: WidgetType.CODE_QUALITY_LIST;
|
|
457
|
+
title?: NoInfer<TKey>;
|
|
458
|
+
description?: NoInfer<TKey>;
|
|
459
|
+
groupBy?: string; // Field name from data object to group by (e.g., "file", "code")
|
|
460
|
+
sortBy?: string; // Field name from data object to sort by (e.g., "severity")
|
|
461
|
+
showSummary?: boolean;
|
|
462
|
+
columns?: number;
|
|
463
|
+
layoutType?: LayoutType;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
export interface CodeQualityFilesWidgetConfig<
|
|
467
|
+
TKey extends string,
|
|
468
|
+
> extends BaseWidgetConfig {
|
|
469
|
+
type: WidgetType.CODE_QUALITY_FILES;
|
|
470
|
+
title?: NoInfer<TKey>;
|
|
471
|
+
description?: NoInfer<TKey>;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
export interface CodeQualitySummaryWidgetConfig<
|
|
475
|
+
TKey extends string,
|
|
476
|
+
> extends BaseWidgetConfig {
|
|
477
|
+
type: WidgetType.CODE_QUALITY_SUMMARY;
|
|
478
|
+
title?: NoInfer<TKey>;
|
|
479
|
+
description?: NoInfer<TKey>;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
export interface MetadataCardWidgetConfig<
|
|
483
|
+
TKey extends string,
|
|
484
|
+
> extends BaseWidgetConfig {
|
|
485
|
+
type: WidgetType.METADATA_CARD;
|
|
486
|
+
title?: NoInfer<TKey>;
|
|
487
|
+
description?: NoInfer<TKey>;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
// ============================================================================
|
|
491
|
+
// LAYOUT WIDGETS
|
|
492
|
+
// ============================================================================
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Helper to infer request/response schemas from children
|
|
496
|
+
* Creates a minimal ObjectField-like structure for type inference
|
|
497
|
+
*/
|
|
498
|
+
interface InferSchemasFromChildren<
|
|
499
|
+
TChildren,
|
|
500
|
+
TUsage extends FieldUsageConfig,
|
|
501
|
+
TTranslationKey extends string = string,
|
|
502
|
+
> {
|
|
503
|
+
request: z.output<
|
|
504
|
+
InferSchemaFromField<
|
|
505
|
+
ObjectField<
|
|
506
|
+
TChildren,
|
|
507
|
+
TUsage,
|
|
508
|
+
TTranslationKey,
|
|
509
|
+
ContainerWidgetConfig<TTranslationKey>
|
|
510
|
+
>,
|
|
511
|
+
FieldUsage.RequestData
|
|
512
|
+
>
|
|
513
|
+
>;
|
|
514
|
+
response: z.output<
|
|
515
|
+
InferSchemaFromField<
|
|
516
|
+
ObjectField<
|
|
517
|
+
TChildren,
|
|
518
|
+
TUsage,
|
|
519
|
+
TTranslationKey,
|
|
520
|
+
ContainerWidgetConfig<TTranslationKey>
|
|
521
|
+
>,
|
|
522
|
+
FieldUsage.Response
|
|
523
|
+
>
|
|
524
|
+
>;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* Base Container Widget Config - shared properties without getCount
|
|
529
|
+
* Used as the base for both typed and untyped container configs
|
|
530
|
+
*/
|
|
531
|
+
interface ContainerWidgetConfigBase<
|
|
532
|
+
TKey extends string,
|
|
533
|
+
> extends BaseWidgetConfig {
|
|
534
|
+
type: WidgetType.CONTAINER;
|
|
535
|
+
title?: NoInfer<TKey>;
|
|
536
|
+
description?: NoInfer<TKey>;
|
|
537
|
+
layoutType?: LayoutType;
|
|
538
|
+
layout?: LayoutConfig;
|
|
539
|
+
columns?: number;
|
|
540
|
+
/** Tailwind spacing value for gap between children (0, 1, 2, 3, 4, 6, 8) */
|
|
541
|
+
gap?: "0" | "1" | "2" | "3" | "4" | "6" | "8";
|
|
542
|
+
/** Tailwind spacing value for top padding (0, 2, 3, 4, 6, 8) */
|
|
543
|
+
paddingTop?: "0" | "2" | "3" | "4" | "6" | "8";
|
|
544
|
+
optional?: boolean;
|
|
545
|
+
icon?: string;
|
|
546
|
+
border?: boolean;
|
|
547
|
+
spacing?: "compact" | "normal" | "relaxed";
|
|
548
|
+
/** Render without Card wrapper for inline layouts */
|
|
549
|
+
noCard?: boolean;
|
|
550
|
+
/**
|
|
551
|
+
* Submit/Refresh button configuration for the container
|
|
552
|
+
* Rendered in the header next to the title when position is "header"
|
|
553
|
+
*
|
|
554
|
+
* @example
|
|
555
|
+
* ```typescript
|
|
556
|
+
* submitButton: {
|
|
557
|
+
* text: "app.common.actions.refresh",
|
|
558
|
+
* loadingText: "app.common.actions.refreshing",
|
|
559
|
+
* position: "header",
|
|
560
|
+
* icon: "refresh-cw",
|
|
561
|
+
* variant: "ghost",
|
|
562
|
+
* size: "sm",
|
|
563
|
+
* }
|
|
564
|
+
* ```
|
|
565
|
+
*/
|
|
566
|
+
submitButton?: {
|
|
567
|
+
/** Submit button text translation key */
|
|
568
|
+
text?: NoInfer<TKey>;
|
|
569
|
+
/** Submit button loading text translation key */
|
|
570
|
+
loadingText?: NoInfer<TKey>;
|
|
571
|
+
/** Submit button position - 'bottom' (default) or 'header' */
|
|
572
|
+
position?: "bottom" | "header";
|
|
573
|
+
/** Icon identifier (e.g., "refresh-cw", "save", "send") */
|
|
574
|
+
icon?: string;
|
|
575
|
+
/** Button variant */
|
|
576
|
+
variant?:
|
|
577
|
+
| "default"
|
|
578
|
+
| "primary"
|
|
579
|
+
| "secondary"
|
|
580
|
+
| "destructive"
|
|
581
|
+
| "ghost"
|
|
582
|
+
| "outline"
|
|
583
|
+
| "link";
|
|
584
|
+
/** Button size */
|
|
585
|
+
size?: "default" | "sm" | "lg" | "icon";
|
|
586
|
+
};
|
|
587
|
+
/**
|
|
588
|
+
* Show auto FormAlert at top of container when there are request fields
|
|
589
|
+
* Displays error/success messages from context.response
|
|
590
|
+
* Set to false to disable (e.g., for login/signup pages with custom alert position)
|
|
591
|
+
* @default true
|
|
592
|
+
*/
|
|
593
|
+
showFormAlert?: boolean;
|
|
594
|
+
/**
|
|
595
|
+
* Show auto submit button at bottom of container when there are request fields
|
|
596
|
+
* Only shown when no explicit submitButton config is provided
|
|
597
|
+
* Set to false to disable (e.g., for login/signup pages with custom submit button)
|
|
598
|
+
* @default true
|
|
599
|
+
*/
|
|
600
|
+
showSubmitButton?: boolean;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* Container Widget Config - permissive version for use in WidgetConfig union
|
|
605
|
+
* getCount accepts any data structure to allow proper inference in objectField
|
|
606
|
+
*/
|
|
607
|
+
export interface ContainerWidgetConfig<
|
|
608
|
+
TKey extends string,
|
|
609
|
+
> extends ContainerWidgetConfigBase<TKey> {
|
|
610
|
+
/**
|
|
611
|
+
* Function to extract count from data for title display (e.g., "Leads (42)")
|
|
612
|
+
* Type is permissive here - proper typing happens in objectField return type
|
|
613
|
+
*
|
|
614
|
+
* @example
|
|
615
|
+
* ```typescript
|
|
616
|
+
* getCount: (data) => data.response?.paginationInfo?.total
|
|
617
|
+
* ```
|
|
618
|
+
*/
|
|
619
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
620
|
+
getCount?: (data: { request?: any; response?: any }) => number | undefined;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* Typed Container Widget Config with inferred request/response types
|
|
625
|
+
* TChildren should be the record of child fields passed to objectField
|
|
626
|
+
* TUsage should be the usage config passed to objectField
|
|
627
|
+
* TKey allows using either global TranslationKey or scoped translation keys
|
|
628
|
+
*/
|
|
629
|
+
export interface TypedContainerWidgetConfig<
|
|
630
|
+
TKey extends string,
|
|
631
|
+
TChildren = Record<string, never>,
|
|
632
|
+
TUsage extends FieldUsageConfig = FieldUsageConfig,
|
|
633
|
+
> extends ContainerWidgetConfigBase<TKey> {
|
|
634
|
+
/**
|
|
635
|
+
* Type-safe function to extract count from data for title display (e.g., "Leads (42)")
|
|
636
|
+
* Types are inferred from the field children and usage
|
|
637
|
+
*
|
|
638
|
+
* @param data - Object containing request and response data
|
|
639
|
+
* @param data.request - Request data (typed from requestSchema)
|
|
640
|
+
* @param data.response - Response data (typed from responseSchema)
|
|
641
|
+
* @returns The count to display in the title, or undefined to not show a count
|
|
642
|
+
*
|
|
643
|
+
* @example
|
|
644
|
+
* ```typescript
|
|
645
|
+
* getCount: (data) => data.response?.paginationInfo?.total
|
|
646
|
+
* ```
|
|
647
|
+
*/
|
|
648
|
+
getCount?: (data: {
|
|
649
|
+
request?: InferSchemasFromChildren<TChildren, TUsage>["request"];
|
|
650
|
+
response?: InferSchemasFromChildren<TChildren, TUsage>["response"];
|
|
651
|
+
}) => number | undefined;
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
export interface SectionWidgetConfig<
|
|
655
|
+
TKey extends string,
|
|
656
|
+
> extends BaseWidgetConfig {
|
|
657
|
+
type: WidgetType.SECTION;
|
|
658
|
+
title?: NoInfer<TKey>;
|
|
659
|
+
description?: NoInfer<TKey>;
|
|
660
|
+
layoutType?: LayoutType;
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
export interface TabsWidgetConfig<
|
|
664
|
+
TKey extends string,
|
|
665
|
+
> extends BaseWidgetConfig {
|
|
666
|
+
type: WidgetType.TABS;
|
|
667
|
+
title?: NoInfer<TKey>;
|
|
668
|
+
tabs?: Array<{
|
|
669
|
+
id: string;
|
|
670
|
+
label: NoInfer<TKey>;
|
|
671
|
+
}>;
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
export interface AccordionWidgetConfig<
|
|
675
|
+
TKey extends string,
|
|
676
|
+
> extends BaseWidgetConfig {
|
|
677
|
+
type: WidgetType.ACCORDION;
|
|
678
|
+
title?: NoInfer<TKey>;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
// ============================================================================
|
|
682
|
+
// CONTENT WIDGETS
|
|
683
|
+
// ============================================================================
|
|
684
|
+
|
|
685
|
+
export interface TitleWidgetConfig<
|
|
686
|
+
TKey extends string,
|
|
687
|
+
> extends BaseWidgetConfig {
|
|
688
|
+
type: WidgetType.TITLE;
|
|
689
|
+
content: NoInfer<TKey>;
|
|
690
|
+
level?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
691
|
+
fieldType?: FieldDataType;
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
export interface TextWidgetConfig<
|
|
695
|
+
TKey extends string,
|
|
696
|
+
> extends BaseWidgetConfig {
|
|
697
|
+
type: WidgetType.TEXT;
|
|
698
|
+
content: NoInfer<TKey>;
|
|
699
|
+
fieldType?: FieldDataType;
|
|
700
|
+
label?: NoInfer<TKey>;
|
|
701
|
+
variant?: "default" | "error" | "info" | "success" | "warning";
|
|
702
|
+
multiline?: boolean;
|
|
703
|
+
emphasis?: "bold" | "italic" | "underline";
|
|
704
|
+
maxLength?: number;
|
|
705
|
+
format?: "link" | "plain";
|
|
706
|
+
href?: string;
|
|
707
|
+
textAlign?: "left" | "center" | "right";
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
export interface BadgeWidgetConfig<
|
|
711
|
+
TKey extends string,
|
|
712
|
+
> extends BaseWidgetConfig {
|
|
713
|
+
type: WidgetType.BADGE;
|
|
714
|
+
text?: NoInfer<TKey>; // Static text - use when displaying a fixed label
|
|
715
|
+
enumOptions?: Array<{ label: NoInfer<TKey>; value: string | number }>; // Dynamic enum mapping - use when displaying enum values
|
|
716
|
+
variant?: "default" | "success" | "warning" | "error" | "info";
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
export interface AvatarWidgetConfig<
|
|
720
|
+
TKey extends string,
|
|
721
|
+
> extends BaseWidgetConfig {
|
|
722
|
+
type: WidgetType.AVATAR;
|
|
723
|
+
src?: string; // Field name containing avatar URL (e.g., "avatarUrl", "imageUrl") or literal URL
|
|
724
|
+
alt?: NoInfer<TKey>;
|
|
725
|
+
fallback?: string; // Fallback text/initials to display if image fails (e.g., "JD", "?")
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
export interface MarkdownWidgetConfig<
|
|
729
|
+
TKey extends string,
|
|
730
|
+
> extends BaseWidgetConfig {
|
|
731
|
+
type: WidgetType.MARKDOWN;
|
|
732
|
+
content: NoInfer<TKey>;
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
export interface MarkdownEditorWidgetConfig<
|
|
736
|
+
TKey extends string,
|
|
737
|
+
> extends BaseWidgetConfig {
|
|
738
|
+
type: WidgetType.MARKDOWN_EDITOR;
|
|
739
|
+
label?: NoInfer<TKey>;
|
|
740
|
+
placeholder?: NoInfer<TKey>;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
export interface LinkWidgetConfig<
|
|
744
|
+
TKey extends string,
|
|
745
|
+
> extends BaseWidgetConfig {
|
|
746
|
+
type: WidgetType.LINK;
|
|
747
|
+
href: Route | string; // URL path or route
|
|
748
|
+
text?: NoInfer<TKey>; // Link text to display
|
|
749
|
+
label?: NoInfer<TKey>; // Accessible label (aria-label) - use if text is not descriptive
|
|
750
|
+
external?: boolean; // Opens in new tab if true
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
export interface LinkCardWidgetConfig<
|
|
754
|
+
TKey extends string,
|
|
755
|
+
> extends BaseWidgetConfig {
|
|
756
|
+
type: WidgetType.LINK_CARD;
|
|
757
|
+
href: Route | string;
|
|
758
|
+
title: NoInfer<TKey>;
|
|
759
|
+
description?: NoInfer<TKey>;
|
|
760
|
+
external?: boolean;
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
export interface LinkListWidgetConfig<
|
|
764
|
+
TKey extends string,
|
|
765
|
+
> extends BaseWidgetConfig {
|
|
766
|
+
type: WidgetType.LINK_LIST;
|
|
767
|
+
title?: NoInfer<TKey>;
|
|
768
|
+
links?: Array<{
|
|
769
|
+
href: Route | string;
|
|
770
|
+
text: NoInfer<TKey>;
|
|
771
|
+
external?: boolean;
|
|
772
|
+
}>;
|
|
773
|
+
layoutType?: LayoutType;
|
|
774
|
+
columns?: number;
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
// Data-driven card - renders object data as a card with link capability
|
|
778
|
+
export interface DataCardWidgetConfig<
|
|
779
|
+
TKey extends string,
|
|
780
|
+
> extends BaseWidgetConfig {
|
|
781
|
+
type: WidgetType.DATA_CARD;
|
|
782
|
+
title?: NoInfer<TKey>;
|
|
783
|
+
description?: NoInfer<TKey>;
|
|
784
|
+
linkable?: boolean; // If true, looks for href/url field in children
|
|
785
|
+
layoutType?: LayoutType;
|
|
786
|
+
columns?: number;
|
|
787
|
+
optional?: boolean;
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
// ============================================================================
|
|
791
|
+
// SPECIALIZED CONTENT WIDGETS
|
|
792
|
+
// ============================================================================
|
|
793
|
+
// NOTE: These widgets are for code quality/linting output display.
|
|
794
|
+
// They use literal values from data rather than translation keys.
|
|
795
|
+
// These are NOT fully data-driven and are specialized for specific use cases.
|
|
796
|
+
|
|
797
|
+
export interface FilePathWidgetConfig extends BaseWidgetConfig {
|
|
798
|
+
type: WidgetType.FILE_PATH;
|
|
799
|
+
path: string; // Literal file path from data (e.g., "src/app/page.tsx")
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
export interface LineNumberWidgetConfig extends BaseWidgetConfig {
|
|
803
|
+
type: WidgetType.LINE_NUMBER;
|
|
804
|
+
line: number; // Literal line number from data
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
export interface ColumnNumberWidgetConfig extends BaseWidgetConfig {
|
|
808
|
+
type: WidgetType.COLUMN_NUMBER;
|
|
809
|
+
column: number; // Literal column number from data
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
export interface CodeRuleWidgetConfig extends BaseWidgetConfig {
|
|
813
|
+
type: WidgetType.CODE_RULE;
|
|
814
|
+
rule: string; // Literal rule ID/name from data (e.g., "no-unused-vars", "typescript/no-explicit-any")
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
export interface CodeOutputWidgetConfig extends BaseWidgetConfig {
|
|
818
|
+
type: WidgetType.CODE_OUTPUT;
|
|
819
|
+
code?: string; // Literal code snippet from data
|
|
820
|
+
language?: string; // Programming language for syntax highlighting
|
|
821
|
+
format?: "eslint" | "generic" | "json" | "table";
|
|
822
|
+
outputFormat?: "eslint" | "generic" | "json" | "table";
|
|
823
|
+
showSummary?: boolean;
|
|
824
|
+
colorScheme?: "auto" | "light" | "dark";
|
|
825
|
+
severityIcons?: Record<string, string>;
|
|
826
|
+
groupBy?: string;
|
|
827
|
+
summaryTemplate?: string;
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
export interface SeverityBadgeWidgetConfig extends BaseWidgetConfig {
|
|
831
|
+
type: WidgetType.SEVERITY_BADGE;
|
|
832
|
+
severity: "error" | "warning" | "info"; // Literal severity level from data
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
export interface MessageTextWidgetConfig<
|
|
836
|
+
TKey extends string,
|
|
837
|
+
> extends BaseWidgetConfig {
|
|
838
|
+
type: WidgetType.MESSAGE_TEXT;
|
|
839
|
+
message: NoInfer<TKey>; // Message to display
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
export interface IssueCardWidgetConfig<
|
|
843
|
+
TKey extends string,
|
|
844
|
+
> extends BaseWidgetConfig {
|
|
845
|
+
type: WidgetType.ISSUE_CARD;
|
|
846
|
+
title: NoInfer<TKey>;
|
|
847
|
+
description?: NoInfer<TKey>;
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
export interface CreditTransactionCardWidgetConfig extends BaseWidgetConfig {
|
|
851
|
+
type: WidgetType.CREDIT_TRANSACTION_CARD;
|
|
852
|
+
leftFields?: string[]; // Fields to show on left side
|
|
853
|
+
rightFields?: string[]; // Fields to show on right side
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
export interface CreditTransactionListWidgetConfig extends BaseWidgetConfig {
|
|
857
|
+
type: WidgetType.CREDIT_TRANSACTION_LIST;
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
export interface PaginationWidgetConfig extends BaseWidgetConfig {
|
|
861
|
+
type: WidgetType.PAGINATION;
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
// ============================================================================
|
|
865
|
+
// INTERACTIVE WIDGETS
|
|
866
|
+
// ============================================================================
|
|
867
|
+
|
|
868
|
+
export interface ButtonWidgetConfig<
|
|
869
|
+
TKey extends string,
|
|
870
|
+
> extends BaseWidgetConfig {
|
|
871
|
+
type: WidgetType.BUTTON;
|
|
872
|
+
text: NoInfer<TKey>;
|
|
873
|
+
icon?: string;
|
|
874
|
+
variant?:
|
|
875
|
+
| "default"
|
|
876
|
+
| "primary"
|
|
877
|
+
| "secondary"
|
|
878
|
+
| "destructive"
|
|
879
|
+
| "ghost"
|
|
880
|
+
| "link";
|
|
881
|
+
size?: "default" | "sm" | "lg" | "icon";
|
|
882
|
+
onClick?: string; // Action ID
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
export interface ButtonGroupWidgetConfig<
|
|
886
|
+
TKey extends string,
|
|
887
|
+
> extends BaseWidgetConfig {
|
|
888
|
+
type: WidgetType.BUTTON_GROUP;
|
|
889
|
+
buttons?: Array<{
|
|
890
|
+
text: NoInfer<TKey>;
|
|
891
|
+
onClick?: string;
|
|
892
|
+
}>;
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
export interface ActionBarWidgetConfig<
|
|
896
|
+
TKey extends string,
|
|
897
|
+
> extends BaseWidgetConfig {
|
|
898
|
+
type: WidgetType.ACTION_BAR;
|
|
899
|
+
actions?: Array<{
|
|
900
|
+
text: NoInfer<TKey>;
|
|
901
|
+
onClick?: string;
|
|
902
|
+
}>;
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
export interface PaginationInfoWidgetConfig extends BaseWidgetConfig {
|
|
906
|
+
type: WidgetType.PAGINATION_INFO;
|
|
907
|
+
total?: number;
|
|
908
|
+
page?: number;
|
|
909
|
+
pageSize?: number;
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
export interface ActionListWidgetConfig<
|
|
913
|
+
TKey extends string,
|
|
914
|
+
> extends BaseWidgetConfig {
|
|
915
|
+
type: WidgetType.ACTION_LIST;
|
|
916
|
+
actions?: Array<{
|
|
917
|
+
text: NoInfer<TKey>;
|
|
918
|
+
onClick?: string;
|
|
919
|
+
}>;
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
// ============================================================================
|
|
923
|
+
// STATS WIDGETS
|
|
924
|
+
// ============================================================================
|
|
925
|
+
|
|
926
|
+
export interface MetricCardWidgetConfig<
|
|
927
|
+
TKey extends string,
|
|
928
|
+
> extends BaseWidgetConfig {
|
|
929
|
+
type: WidgetType.METRIC_CARD;
|
|
930
|
+
title: NoInfer<TKey>;
|
|
931
|
+
value: string | number;
|
|
932
|
+
change?: number;
|
|
933
|
+
trend?: "up" | "down" | "neutral";
|
|
934
|
+
format?: "number" | "currency" | "percentage" | "bytes";
|
|
935
|
+
icon?: string;
|
|
936
|
+
unit?: string;
|
|
937
|
+
precision?: number;
|
|
938
|
+
threshold?: {
|
|
939
|
+
warning?: number;
|
|
940
|
+
error?: number;
|
|
941
|
+
};
|
|
942
|
+
}
|
|
943
|
+
|
|
944
|
+
/**
|
|
945
|
+
* Stat Widget Config - Simple stat display from field definition
|
|
946
|
+
* Takes a numeric value and displays with label from field.ui.label
|
|
947
|
+
*/
|
|
948
|
+
export interface StatWidgetConfig<
|
|
949
|
+
TKey extends string,
|
|
950
|
+
> extends BaseWidgetConfig {
|
|
951
|
+
type: WidgetType.STAT;
|
|
952
|
+
label?: NoInfer<TKey>;
|
|
953
|
+
format?: "number" | "percentage" | "currency" | "compact";
|
|
954
|
+
icon?: string;
|
|
955
|
+
variant?: "default" | "success" | "warning" | "danger" | "info" | "muted";
|
|
956
|
+
trend?: "up" | "down" | "neutral";
|
|
957
|
+
trendValue?: number;
|
|
958
|
+
size?: "sm" | "md" | "lg";
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
export interface StatsGridWidgetConfig<
|
|
962
|
+
TKey extends string,
|
|
963
|
+
> extends BaseWidgetConfig {
|
|
964
|
+
type: WidgetType.STATS_GRID;
|
|
965
|
+
title?: NoInfer<TKey>;
|
|
966
|
+
stats?: Array<{
|
|
967
|
+
label: NoInfer<TKey>;
|
|
968
|
+
value: string | number;
|
|
969
|
+
}>;
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
export interface ChartWidgetConfig<
|
|
973
|
+
TKey extends string,
|
|
974
|
+
> extends BaseWidgetConfig {
|
|
975
|
+
type: WidgetType.CHART;
|
|
976
|
+
title?: NoInfer<TKey>;
|
|
977
|
+
label?: NoInfer<TKey>;
|
|
978
|
+
description?: NoInfer<TKey>;
|
|
979
|
+
chartType?: "line" | "bar" | "pie" | "area" | "donut";
|
|
980
|
+
xAxisLabel?: string;
|
|
981
|
+
yAxisLabel?: string;
|
|
982
|
+
height?: number;
|
|
983
|
+
showLegend?: boolean;
|
|
984
|
+
showGrid?: boolean;
|
|
985
|
+
animate?: boolean;
|
|
986
|
+
}
|
|
987
|
+
|
|
988
|
+
export interface ProgressWidgetConfig<
|
|
989
|
+
TKey extends string,
|
|
990
|
+
> extends BaseWidgetConfig {
|
|
991
|
+
type: WidgetType.PROGRESS;
|
|
992
|
+
value: number;
|
|
993
|
+
max?: number;
|
|
994
|
+
label?: NoInfer<TKey>;
|
|
995
|
+
}
|
|
996
|
+
|
|
997
|
+
// ============================================================================
|
|
998
|
+
// STATUS WIDGETS
|
|
999
|
+
// ============================================================================
|
|
1000
|
+
|
|
1001
|
+
export interface LoadingWidgetConfig<
|
|
1002
|
+
TKey extends string,
|
|
1003
|
+
> extends BaseWidgetConfig {
|
|
1004
|
+
type: WidgetType.LOADING;
|
|
1005
|
+
message?: NoInfer<TKey>;
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
export interface ErrorWidgetConfig<
|
|
1009
|
+
TKey extends string,
|
|
1010
|
+
> extends BaseWidgetConfig {
|
|
1011
|
+
type: WidgetType.ERROR;
|
|
1012
|
+
title: NoInfer<TKey>;
|
|
1013
|
+
message?: NoInfer<TKey>;
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
export interface EmptyStateWidgetConfig<
|
|
1017
|
+
TKey extends string,
|
|
1018
|
+
> extends BaseWidgetConfig {
|
|
1019
|
+
type: WidgetType.EMPTY_STATE;
|
|
1020
|
+
title: NoInfer<TKey>;
|
|
1021
|
+
message?: NoInfer<TKey>;
|
|
1022
|
+
action?: {
|
|
1023
|
+
text: NoInfer<TKey>;
|
|
1024
|
+
onClick?: string;
|
|
1025
|
+
};
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1028
|
+
export interface StatusIndicatorWidgetConfig<
|
|
1029
|
+
TKey extends string,
|
|
1030
|
+
> extends BaseWidgetConfig {
|
|
1031
|
+
type: WidgetType.STATUS_INDICATOR;
|
|
1032
|
+
status: "success" | "warning" | "error" | "info" | "pending";
|
|
1033
|
+
label?: NoInfer<TKey>;
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
export interface AlertWidgetConfig extends BaseWidgetConfig {
|
|
1037
|
+
type: WidgetType.ALERT;
|
|
1038
|
+
variant?: "default" | "destructive" | "success" | "warning";
|
|
1039
|
+
}
|
|
1040
|
+
|
|
1041
|
+
export interface FormAlertWidgetConfig extends BaseWidgetConfig {
|
|
1042
|
+
type: WidgetType.FORM_ALERT;
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
export interface SubmitButtonWidgetConfig<
|
|
1046
|
+
TKey extends string,
|
|
1047
|
+
> extends BaseWidgetConfig {
|
|
1048
|
+
type: WidgetType.SUBMIT_BUTTON;
|
|
1049
|
+
text?: NoInfer<TKey>;
|
|
1050
|
+
loadingText?: NoInfer<TKey>;
|
|
1051
|
+
icon?: string;
|
|
1052
|
+
variant?:
|
|
1053
|
+
| "default"
|
|
1054
|
+
| "primary"
|
|
1055
|
+
| "secondary"
|
|
1056
|
+
| "destructive"
|
|
1057
|
+
| "ghost"
|
|
1058
|
+
| "outline"
|
|
1059
|
+
| "link";
|
|
1060
|
+
size?: "default" | "sm" | "lg" | "icon";
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
// Password strength indicator
|
|
1064
|
+
export interface PasswordStrengthWidgetConfig extends BaseWidgetConfig {
|
|
1065
|
+
type: WidgetType.PASSWORD_STRENGTH;
|
|
1066
|
+
/** Field name to watch for password value (defaults to "password") */
|
|
1067
|
+
watchField?: string;
|
|
1068
|
+
}
|
|
1069
|
+
|
|
1070
|
+
// ============================================================================
|
|
1071
|
+
// CUSTOM WIDGETS
|
|
1072
|
+
// ============================================================================
|
|
1073
|
+
|
|
1074
|
+
export interface CustomWidgetConfig<
|
|
1075
|
+
TProps extends Record<string, string | number | boolean | null | undefined> =
|
|
1076
|
+
Record<string, never>,
|
|
1077
|
+
> extends BaseWidgetConfig {
|
|
1078
|
+
type: WidgetType.CUSTOM;
|
|
1079
|
+
componentId: string;
|
|
1080
|
+
props?: TProps;
|
|
1081
|
+
}
|
|
1082
|
+
|
|
1083
|
+
// ============================================================================
|
|
1084
|
+
// UNION TYPE FOR ALL WIDGET CONFIGS
|
|
1085
|
+
// ============================================================================
|
|
1086
|
+
|
|
1087
|
+
export type WidgetConfig<TKey extends string> =
|
|
1088
|
+
// Form widgets
|
|
1089
|
+
| FormFieldWidgetConfig<TKey>
|
|
1090
|
+
| FormGroupWidgetConfig<TKey>
|
|
1091
|
+
| FormSectionWidgetConfig<TKey>
|
|
1092
|
+
// Data display widgets
|
|
1093
|
+
| DataTableWidgetConfig<TKey>
|
|
1094
|
+
| DataCardWidgetConfig<TKey>
|
|
1095
|
+
| DataCardsWidgetConfig<TKey>
|
|
1096
|
+
| DataListWidgetConfig<TKey>
|
|
1097
|
+
| DataGridWidgetConfig<TKey>
|
|
1098
|
+
| GroupedListWidgetConfig<TKey>
|
|
1099
|
+
| CodeQualityListWidgetConfig<TKey>
|
|
1100
|
+
| CodeQualityFilesWidgetConfig<TKey>
|
|
1101
|
+
| CodeQualitySummaryWidgetConfig<TKey>
|
|
1102
|
+
| MetadataCardWidgetConfig<TKey>
|
|
1103
|
+
// Layout widgets
|
|
1104
|
+
| ContainerWidgetConfig<TKey>
|
|
1105
|
+
| SectionWidgetConfig<TKey>
|
|
1106
|
+
| TabsWidgetConfig<TKey>
|
|
1107
|
+
| AccordionWidgetConfig<TKey>
|
|
1108
|
+
// Content widgets
|
|
1109
|
+
| TitleWidgetConfig<TKey>
|
|
1110
|
+
| TextWidgetConfig<TKey>
|
|
1111
|
+
| BadgeWidgetConfig<TKey>
|
|
1112
|
+
| AvatarWidgetConfig<TKey>
|
|
1113
|
+
| MarkdownWidgetConfig<TKey>
|
|
1114
|
+
| MarkdownEditorWidgetConfig<TKey>
|
|
1115
|
+
| LinkWidgetConfig<TKey>
|
|
1116
|
+
| LinkCardWidgetConfig<TKey>
|
|
1117
|
+
| LinkListWidgetConfig<TKey>
|
|
1118
|
+
// Specialized content widgets
|
|
1119
|
+
| FilePathWidgetConfig
|
|
1120
|
+
| LineNumberWidgetConfig
|
|
1121
|
+
| ColumnNumberWidgetConfig
|
|
1122
|
+
| CodeRuleWidgetConfig
|
|
1123
|
+
| CodeOutputWidgetConfig
|
|
1124
|
+
| SeverityBadgeWidgetConfig
|
|
1125
|
+
| MessageTextWidgetConfig<TKey>
|
|
1126
|
+
| IssueCardWidgetConfig<TKey>
|
|
1127
|
+
| CreditTransactionCardWidgetConfig
|
|
1128
|
+
| CreditTransactionListWidgetConfig
|
|
1129
|
+
| PaginationWidgetConfig
|
|
1130
|
+
// Interactive widgets
|
|
1131
|
+
| ButtonWidgetConfig<TKey>
|
|
1132
|
+
| ButtonGroupWidgetConfig<TKey>
|
|
1133
|
+
| ActionBarWidgetConfig<TKey>
|
|
1134
|
+
| PaginationInfoWidgetConfig
|
|
1135
|
+
| ActionListWidgetConfig<TKey>
|
|
1136
|
+
// Stats widgets
|
|
1137
|
+
| StatWidgetConfig<TKey>
|
|
1138
|
+
| MetricCardWidgetConfig<TKey>
|
|
1139
|
+
| StatsGridWidgetConfig<TKey>
|
|
1140
|
+
| ChartWidgetConfig<TKey>
|
|
1141
|
+
| ProgressWidgetConfig<TKey>
|
|
1142
|
+
// Status widgets
|
|
1143
|
+
| LoadingWidgetConfig<TKey>
|
|
1144
|
+
| ErrorWidgetConfig<TKey>
|
|
1145
|
+
| EmptyStateWidgetConfig<TKey>
|
|
1146
|
+
| StatusIndicatorWidgetConfig<TKey>
|
|
1147
|
+
| AlertWidgetConfig
|
|
1148
|
+
| FormAlertWidgetConfig
|
|
1149
|
+
| SubmitButtonWidgetConfig<TKey>
|
|
1150
|
+
| PasswordStrengthWidgetConfig;
|
|
1151
|
+
|
|
1152
|
+
/**
|
|
1153
|
+
* Extract widget config type from WidgetType enum
|
|
1154
|
+
*/
|
|
1155
|
+
export type ExtractWidgetConfig<
|
|
1156
|
+
T extends WidgetType,
|
|
1157
|
+
TKey extends string,
|
|
1158
|
+
> = Extract<WidgetConfig<TKey>, { type: T }>;
|