diff --git a/packages/core/package.json b/packages/core/package.json index 3e2a1c0..b661e42 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -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", diff --git a/packages/core/src/meta.ts b/packages/core/src/meta.ts new file mode 100644 index 0000000..f94de2a --- /dev/null +++ b/packages/core/src/meta.ts @@ -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[]; +} diff --git a/packages/core/tsdown.config.ts b/packages/core/tsdown.config.ts index c7002c8..31f16dd 100644 --- a/packages/core/tsdown.config.ts +++ b/packages/core/tsdown.config.ts @@ -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"], }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f1bbabf..36d0840 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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