Add Zod v4 and ComponentMeta type

This commit is contained in:
Mats Bosson 2026-03-29 20:32:18 +07:00
parent 8dc5ab32ce
commit f197c58296
4 changed files with 181 additions and 35 deletions

View File

@ -39,39 +39,171 @@
"import": "./dist/utilities/visually-hidden/index.js",
"require": "./dist/utilities/visually-hidden/index.cjs"
},
"./separator": { "solid": "./src/components/separator/index.ts", "import": "./dist/components/separator/index.js", "require": "./dist/components/separator/index.cjs" },
"./toggle": { "solid": "./src/components/toggle/index.ts", "import": "./dist/components/toggle/index.js", "require": "./dist/components/toggle/index.cjs" },
"./switch": { "solid": "./src/components/switch/index.ts", "import": "./dist/components/switch/index.js", "require": "./dist/components/switch/index.cjs" },
"./checkbox": { "solid": "./src/components/checkbox/index.ts", "import": "./dist/components/checkbox/index.js", "require": "./dist/components/checkbox/index.cjs" },
"./progress": { "solid": "./src/components/progress/index.ts", "import": "./dist/components/progress/index.js", "require": "./dist/components/progress/index.cjs" },
"./text-field": { "solid": "./src/components/text-field/index.ts", "import": "./dist/components/text-field/index.js", "require": "./dist/components/text-field/index.cjs" },
"./radio-group": { "solid": "./src/components/radio-group/index.ts", "import": "./dist/components/radio-group/index.js", "require": "./dist/components/radio-group/index.cjs" },
"./toggle-group": { "solid": "./src/components/toggle-group/index.ts", "import": "./dist/components/toggle-group/index.js", "require": "./dist/components/toggle-group/index.cjs" },
"./collapsible": { "solid": "./src/components/collapsible/index.ts", "import": "./dist/components/collapsible/index.js", "require": "./dist/components/collapsible/index.cjs" },
"./accordion": { "solid": "./src/components/accordion/index.ts", "import": "./dist/components/accordion/index.js", "require": "./dist/components/accordion/index.cjs" },
"./alert-dialog": { "solid": "./src/components/alert-dialog/index.ts", "import": "./dist/components/alert-dialog/index.js", "require": "./dist/components/alert-dialog/index.cjs" },
"./tabs": { "solid": "./src/components/tabs/index.ts", "import": "./dist/components/tabs/index.js", "require": "./dist/components/tabs/index.cjs" },
"./slider": { "solid": "./src/components/slider/index.ts", "import": "./dist/components/slider/index.js", "require": "./dist/components/slider/index.cjs" },
"./pagination": { "solid": "./src/components/pagination/index.ts", "import": "./dist/components/pagination/index.js", "require": "./dist/components/pagination/index.cjs" },
"./drawer": { "solid": "./src/components/drawer/index.ts", "import": "./dist/components/drawer/index.js", "require": "./dist/components/drawer/index.cjs" },
"./select": { "solid": "./src/components/select/index.ts", "import": "./dist/components/select/index.js", "require": "./dist/components/select/index.cjs" },
"./combobox": { "solid": "./src/components/combobox/index.ts", "import": "./dist/components/combobox/index.js", "require": "./dist/components/combobox/index.cjs" },
"./listbox": { "solid": "./src/components/listbox/index.ts", "import": "./dist/components/listbox/index.js", "require": "./dist/components/listbox/index.cjs" },
"./dropdown-menu": { "solid": "./src/components/dropdown-menu/index.ts", "import": "./dist/components/dropdown-menu/index.js", "require": "./dist/components/dropdown-menu/index.cjs" },
"./context-menu": { "solid": "./src/components/context-menu/index.ts", "import": "./dist/components/context-menu/index.js", "require": "./dist/components/context-menu/index.cjs" },
"./toast": { "solid": "./src/components/toast/index.ts", "import": "./dist/components/toast/index.js", "require": "./dist/components/toast/index.cjs" },
"./tooltip": { "solid": "./src/components/tooltip/index.ts", "import": "./dist/components/tooltip/index.js", "require": "./dist/components/tooltip/index.cjs" },
"./alert": { "solid": "./src/components/alert/index.ts", "import": "./dist/components/alert/index.js", "require": "./dist/components/alert/index.cjs" },
"./badge": { "solid": "./src/components/badge/index.ts", "import": "./dist/components/badge/index.js", "require": "./dist/components/badge/index.cjs" },
"./skeleton": { "solid": "./src/components/skeleton/index.ts", "import": "./dist/components/skeleton/index.js", "require": "./dist/components/skeleton/index.cjs" },
"./popover": { "solid": "./src/components/popover/index.ts", "import": "./dist/components/popover/index.js", "require": "./dist/components/popover/index.cjs" },
"./breadcrumbs": { "solid": "./src/components/breadcrumbs/index.ts", "import": "./dist/components/breadcrumbs/index.js", "require": "./dist/components/breadcrumbs/index.cjs" },
"./link": { "solid": "./src/components/link/index.ts", "import": "./dist/components/link/index.js", "require": "./dist/components/link/index.cjs" },
"./button": { "solid": "./src/components/button/index.ts", "import": "./dist/components/button/index.js", "require": "./dist/components/button/index.cjs" },
"./hover-card": { "solid": "./src/components/hover-card/index.ts", "import": "./dist/components/hover-card/index.js", "require": "./dist/components/hover-card/index.cjs" },
"./image": { "solid": "./src/components/image/index.ts", "import": "./dist/components/image/index.js", "require": "./dist/components/image/index.cjs" },
"./meter": { "solid": "./src/components/meter/index.ts", "import": "./dist/components/meter/index.js", "require": "./dist/components/meter/index.cjs" },
"./number-field": { "solid": "./src/components/number-field/index.ts", "import": "./dist/components/number-field/index.js", "require": "./dist/components/number-field/index.cjs" }
"./separator": {
"solid": "./src/components/separator/index.ts",
"import": "./dist/components/separator/index.js",
"require": "./dist/components/separator/index.cjs"
},
"./toggle": {
"solid": "./src/components/toggle/index.ts",
"import": "./dist/components/toggle/index.js",
"require": "./dist/components/toggle/index.cjs"
},
"./switch": {
"solid": "./src/components/switch/index.ts",
"import": "./dist/components/switch/index.js",
"require": "./dist/components/switch/index.cjs"
},
"./checkbox": {
"solid": "./src/components/checkbox/index.ts",
"import": "./dist/components/checkbox/index.js",
"require": "./dist/components/checkbox/index.cjs"
},
"./progress": {
"solid": "./src/components/progress/index.ts",
"import": "./dist/components/progress/index.js",
"require": "./dist/components/progress/index.cjs"
},
"./text-field": {
"solid": "./src/components/text-field/index.ts",
"import": "./dist/components/text-field/index.js",
"require": "./dist/components/text-field/index.cjs"
},
"./radio-group": {
"solid": "./src/components/radio-group/index.ts",
"import": "./dist/components/radio-group/index.js",
"require": "./dist/components/radio-group/index.cjs"
},
"./toggle-group": {
"solid": "./src/components/toggle-group/index.ts",
"import": "./dist/components/toggle-group/index.js",
"require": "./dist/components/toggle-group/index.cjs"
},
"./collapsible": {
"solid": "./src/components/collapsible/index.ts",
"import": "./dist/components/collapsible/index.js",
"require": "./dist/components/collapsible/index.cjs"
},
"./accordion": {
"solid": "./src/components/accordion/index.ts",
"import": "./dist/components/accordion/index.js",
"require": "./dist/components/accordion/index.cjs"
},
"./alert-dialog": {
"solid": "./src/components/alert-dialog/index.ts",
"import": "./dist/components/alert-dialog/index.js",
"require": "./dist/components/alert-dialog/index.cjs"
},
"./tabs": {
"solid": "./src/components/tabs/index.ts",
"import": "./dist/components/tabs/index.js",
"require": "./dist/components/tabs/index.cjs"
},
"./slider": {
"solid": "./src/components/slider/index.ts",
"import": "./dist/components/slider/index.js",
"require": "./dist/components/slider/index.cjs"
},
"./pagination": {
"solid": "./src/components/pagination/index.ts",
"import": "./dist/components/pagination/index.js",
"require": "./dist/components/pagination/index.cjs"
},
"./drawer": {
"solid": "./src/components/drawer/index.ts",
"import": "./dist/components/drawer/index.js",
"require": "./dist/components/drawer/index.cjs"
},
"./select": {
"solid": "./src/components/select/index.ts",
"import": "./dist/components/select/index.js",
"require": "./dist/components/select/index.cjs"
},
"./combobox": {
"solid": "./src/components/combobox/index.ts",
"import": "./dist/components/combobox/index.js",
"require": "./dist/components/combobox/index.cjs"
},
"./listbox": {
"solid": "./src/components/listbox/index.ts",
"import": "./dist/components/listbox/index.js",
"require": "./dist/components/listbox/index.cjs"
},
"./dropdown-menu": {
"solid": "./src/components/dropdown-menu/index.ts",
"import": "./dist/components/dropdown-menu/index.js",
"require": "./dist/components/dropdown-menu/index.cjs"
},
"./context-menu": {
"solid": "./src/components/context-menu/index.ts",
"import": "./dist/components/context-menu/index.js",
"require": "./dist/components/context-menu/index.cjs"
},
"./toast": {
"solid": "./src/components/toast/index.ts",
"import": "./dist/components/toast/index.js",
"require": "./dist/components/toast/index.cjs"
},
"./tooltip": {
"solid": "./src/components/tooltip/index.ts",
"import": "./dist/components/tooltip/index.js",
"require": "./dist/components/tooltip/index.cjs"
},
"./alert": {
"solid": "./src/components/alert/index.ts",
"import": "./dist/components/alert/index.js",
"require": "./dist/components/alert/index.cjs"
},
"./badge": {
"solid": "./src/components/badge/index.ts",
"import": "./dist/components/badge/index.js",
"require": "./dist/components/badge/index.cjs"
},
"./skeleton": {
"solid": "./src/components/skeleton/index.ts",
"import": "./dist/components/skeleton/index.js",
"require": "./dist/components/skeleton/index.cjs"
},
"./popover": {
"solid": "./src/components/popover/index.ts",
"import": "./dist/components/popover/index.js",
"require": "./dist/components/popover/index.cjs"
},
"./breadcrumbs": {
"solid": "./src/components/breadcrumbs/index.ts",
"import": "./dist/components/breadcrumbs/index.js",
"require": "./dist/components/breadcrumbs/index.cjs"
},
"./link": {
"solid": "./src/components/link/index.ts",
"import": "./dist/components/link/index.js",
"require": "./dist/components/link/index.cjs"
},
"./button": {
"solid": "./src/components/button/index.ts",
"import": "./dist/components/button/index.js",
"require": "./dist/components/button/index.cjs"
},
"./hover-card": {
"solid": "./src/components/hover-card/index.ts",
"import": "./dist/components/hover-card/index.js",
"require": "./dist/components/hover-card/index.cjs"
},
"./image": {
"solid": "./src/components/image/index.ts",
"import": "./dist/components/image/index.js",
"require": "./dist/components/image/index.cjs"
},
"./meter": {
"solid": "./src/components/meter/index.ts",
"import": "./dist/components/meter/index.js",
"require": "./dist/components/meter/index.cjs"
},
"./number-field": {
"solid": "./src/components/number-field/index.ts",
"import": "./dist/components/number-field/index.js",
"require": "./dist/components/number-field/index.cjs"
}
},
"scripts": {
"build": "tsdown",
@ -83,7 +215,8 @@
"solid-js": "^1.9.0"
},
"dependencies": {
"@floating-ui/dom": "^1.7.6"
"@floating-ui/dom": "^1.7.6",
"zod": "^4.3.6"
},
"devDependencies": {
"@solidjs/testing-library": "^0.8.10",

10
packages/core/src/meta.ts Normal file
View File

@ -0,0 +1,10 @@
/**
* Metadata for MCP component discovery.
* Every component exports a Meta object conforming to this shape.
*/
export interface ComponentMeta {
readonly name: string;
readonly description: string;
readonly parts: readonly string[];
readonly requiredParts: readonly string[];
}

View File

@ -19,5 +19,5 @@ export default defineConfig({
dts: true,
clean: true,
sourcemap: true,
external: ["solid-js", "solid-js/web", "solid-js/store"],
external: ["solid-js", "solid-js/web", "solid-js/store", "zod", "zod/v4"],
});

3
pnpm-lock.yaml generated
View File

@ -32,6 +32,9 @@ importers:
'@floating-ui/dom':
specifier: ^1.7.6
version: 1.7.6
zod:
specifier: ^4.3.6
version: 4.3.6
devDependencies:
'@solidjs/testing-library':
specifier: ^0.8.10