@kitn.ai/ui
Version:
Framework-agnostic, Shadow-DOM web components for building AI chat interfaces — works in React, Vue, Angular, Svelte, or plain HTML. Authored in SolidJS.
190 lines (189 loc) • 6.49 kB
JSON
{
"name": "@kitn.ai/ui",
"version": "0.18.2",
"nx": {
"name": "ui"
},
"type": "module",
"sideEffects": [
"**/*.css",
"./dist/kai.es.js",
"./dist/elements/*.js"
],
"description": "Framework-agnostic, Shadow-DOM web components for building AI chat interfaces — works in React, Vue, Angular, Svelte, or plain HTML. Authored in SolidJS.",
"keywords": [
"web-components",
"custom-elements",
"shadow-dom",
"ai",
"chat",
"chatbot",
"llm",
"chat-ui",
"streaming",
"markdown",
"framework-agnostic",
"react",
"vue",
"angular",
"svelte",
"solid-js"
],
"license": "MIT",
"homepage": "https://ui.kitn.ai",
"repository": {
"type": "git",
"url": "git+https://github.com/kitn-ai/ui.git"
},
"bugs": {
"url": "https://github.com/kitn-ai/ui/issues"
},
"main": "./dist/index.js",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"unpkg": "./dist/kai.es.js",
"jsdelivr": "./dist/kai.es.js",
"customElements": "dist/custom-elements.json",
"bin": {
"kai-mcp": "./bin/mcp.js"
},
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
},
"./elements": {
"types": "./dist/elements.d.ts",
"default": "./dist/kai.es.js"
},
"./elements/*": {
"types": "./dist/elements/*.d.ts",
"default": "./dist/elements/*.js"
},
"./autoloader": {
"types": "./dist/elements/autoloader.d.ts",
"default": "./dist/elements/autoloader.js"
},
"./theme.css": "./theme.css",
"./theme.tokens.css": "./dist/theme.tokens.css",
"./element-meta.json": "./src/elements/element-meta.json",
"./icon-names.json": "./src/elements/icon-names.json",
"./package.json": "./package.json",
"./react": {
"types": "./dist/react/index.d.ts",
"default": "./dist/react.js"
},
"./state": {
"types": "./dist/state/index.d.ts",
"default": "./dist/state.js"
},
"./provider": {
"types": "./dist/kai-provider.d.ts",
"default": "./dist/kai-provider.es.js"
}
},
"files": [
"dist",
"src",
"bin",
"!src/**/*.stories.tsx",
"!src/**/*.test.ts",
"!src/**/*.test.tsx",
"!src/**/*.mdx",
"!src/stories",
"!src/elements/logos",
"frameworks",
"theme.css",
"llms.txt",
"llms-full.txt"
],
"scripts": {
"prepublishOnly": "npm run build",
"prebuild": "npm run build:css",
"build": "vite build --config vite.config.ts && vite build --config vite.config.provider.ts && vite build --config vite.config.react.ts && vite build --config vite.config.barrel.ts && vite build --config vite.config.state.ts && vite build --config vite.config.mcp.ts && npm run build:elements && node scripts/verify-elements-bundle.mjs && node scripts/verify-react-wrappers.mjs",
"build:elements": "node scripts/gen-elements-manifest.mjs && vite build --config vite.config.elements.ts && node scripts/gen-element-dts.mjs",
"postbuild": "npm run build:theme && npm run build:api && npm run build:schemas",
"build:theme": "node scripts/build-theme-tokens.mjs",
"build:api": "node scripts/gen-element-api.mjs",
"build:schemas": "node scripts/copy-card-schemas.mjs",
"test": "vitest run",
"test:react": "vitest run --config vitest.react.config.ts",
"test:storybook": "vitest run --project=storybook",
"test:storybook:ci": "node scripts/run-storybook-tests.mjs",
"test:watch": "vitest",
"typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.react.json && tsc --noEmit -p tsconfig.react.test.json && tsc --noEmit -p tsconfig.mcp.json",
"examples": "echo 'Serving repo root on http://localhost:8000 — open http://localhost:8000/examples/composable/index.html' && python3 -m http.server 8000",
"dev": "npm run build:css && storybook dev -p 6006",
"storybook": "npm run build:css && storybook dev -p 6006",
"build-storybook": "npm run build:css && storybook build",
"build:css": "tailwindcss -i src/elements/styles.css -o src/elements/compiled.css --minify",
"build:css:watch": "tailwindcss -i src/elements/styles.css -o src/elements/compiled.css --watch",
"dev:provider": "vite ../../examples/remote-provider --port 6007 --strictPort",
"dev:host": "vite ../../examples/remote-host --port 6006 --strictPort",
"test:e2e": "playwright test",
"test:composer-ivp": "playwright test --config playwright.composer.config.ts",
"test:slots-ivp": "playwright test --config playwright.slots.config.ts",
"test:menu-ivp": "playwright test --config playwright.menu.config.ts",
"test:command-ivp": "playwright test --config playwright.command.config.ts"
},
"dependencies": {
"@floating-ui/dom": "^1.7.6",
"@modelcontextprotocol/sdk": "^1.29.0",
"class-variance-authority": "^0.7.0",
"clsx": "^2.1.0",
"lucide-solid": "^0.400.0",
"marked": "^18.0.0",
"solid-element": "^1.9.1",
"solid-js": "^1.9.0",
"tailwind-merge": "^3.0.0",
"zod": "^4.4.3"
},
"devDependencies": {
"@playwright/test": "^1.60.0",
"@shikijs/langs": "^4.2.0",
"@shikijs/themes": "^4.2.0",
"@solidjs/testing-library": "^0.8.0",
"@storybook/addon-a11y": "^10.4.2",
"@storybook/addon-docs": "^10.3.5",
"@storybook/addon-themes": "^10.3.5",
"@storybook/addon-vitest": "^10.3.5",
"@tailwindcss/cli": "^4.3.0",
"@tailwindcss/postcss": "^4.2.2",
"@tailwindcss/typography": "^0.5.19",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.3.2",
"@types/node": "^26.0.0",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^4.7.0",
"@vitest/browser-playwright": "4.1.2",
"@vitest/coverage-v8": "4.1.2",
"axe-core": "^4.12.1",
"concurrently": "^10.0.3",
"http-server": "^14.1.1",
"jsdom": "^24.0.0",
"playwright": "^1.59.1",
"react": "^19.2.7",
"react-dom": "^19.2.7",
"remark-gfm": "^4.0.1",
"shiki": "^4.0.2",
"storybook": "^10.3.5",
"storybook-dark-mode": "^5.0.0",
"storybook-solidjs-vite": "^10.0.12",
"tailwindcss": "^4.2.2",
"tw-animate-css": "^1.4.0",
"typescript": "^5.5.0",
"vite": "^6.0.0",
"vite-plugin-dts": "^4.5.4",
"vite-plugin-solid": "^2.11.0",
"vitest": "^4.1.0"
},
"peerDependencies": {
"react": ">=18"
},
"peerDependenciesMeta": {
"react": {
"optional": true
}
}
}