{"_id":"@audtai/judit","name":"@audtai/judit","dist-tags":{"latest":"2.8.0"},"versions":{"2.8.0":{"name":"@audtai/judit","version":"2.8.0","private":false,"type":"module","description":"Judit, audt.ai's React component library, forked from Cloudflare Kumo","repository":{"type":"git","url":"git+https://github.com/audtai/judit.git","directory":"packages/kumo"},"homepage":"https://design.audt.work","bugs":{"url":"https://github.com/audtai/judit/issues"},"license":"MIT","keywords":["react","components","ui","design-system","tailwindcss","base-ui","judit","audt.ai","kumo","fork"],"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/src/index.d.ts","bin":{"judit":"bin/judit.js"},"exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/index.js"},"./components/badge":{"types":"./dist/src/components/badge/index.d.ts","import":"./dist/components/badge.js"},"./components/banner":{"types":"./dist/src/components/banner/index.d.ts","import":"./dist/components/banner.js"},"./components/button":{"types":"./dist/src/components/button/index.d.ts","import":"./dist/components/button.js"},"./components/date-range-picker":{"types":"./dist/src/components/date-range-picker/index.d.ts","import":"./dist/components/date-range-picker.js"},"./components/date-picker":{"types":"./dist/src/components/date-picker/index.d.ts","import":"./dist/components/date-picker.js"},"./components/checkbox":{"types":"./dist/src/components/checkbox/index.d.ts","import":"./dist/components/checkbox.js"},"./components/chart":{"types":"./dist/src/components/chart/index.d.ts","import":"./dist/components/chart.js"},"./components/clipboard-text":{"types":"./dist/src/components/clipboard-text/index.d.ts","import":"./dist/components/clipboard-text.js"},"./components/code":{"types":"./dist/src/components/code/index.d.ts","import":"./dist/components/code.js"},"./components/collapsible":{"types":"./dist/src/components/collapsible/index.d.ts","import":"./dist/components/collapsible.js"},"./components/combobox":{"types":"./dist/src/components/combobox/index.d.ts","import":"./dist/components/combobox.js"},"./components/toolbar":{"types":"./dist/src/components/toolbar/index.d.ts","import":"./dist/components/toolbar.js"},"./components/dialog":{"types":"./dist/src/components/dialog/index.d.ts","import":"./dist/components/dialog.js"},"./components/dropdown":{"types":"./dist/src/components/dropdown/index.d.ts","import":"./dist/components/dropdown.js"},"./components/input":{"types":"./dist/src/components/input/index.d.ts","import":"./dist/components/input.js"},"./components/input-group":{"types":"./dist/src/components/input-group/index.d.ts","import":"./dist/components/input-group.js"},"./components/layer-card":{"types":"./dist/src/components/layer-card/index.d.ts","import":"./dist/components/layer-card.js"},"./components/label":{"types":"./dist/src/components/label/index.d.ts","import":"./dist/components/label.js"},"./components/loader":{"types":"./dist/src/components/loader/index.d.ts","import":"./dist/components/loader.js"},"./components/menubar":{"types":"./dist/src/components/menubar/index.d.ts","import":"./dist/components/menubar.js"},"./components/meter":{"types":"./dist/src/components/meter/index.d.ts","import":"./dist/components/meter.js"},"./components/pagination":{"types":"./dist/src/components/pagination/index.d.ts","import":"./dist/components/pagination.js"},"./components/select":{"types":"./dist/src/components/select/index.d.ts","import":"./dist/components/select.js"},"./components/sensitive-input":{"types":"./dist/src/components/sensitive-input/index.d.ts","import":"./dist/components/sensitive-input.js"},"./components/surface":{"types":"./dist/src/components/surface/index.d.ts","import":"./dist/components/surface.js"},"./components/switch":{"types":"./dist/src/components/switch/index.d.ts","import":"./dist/components/switch.js"},"./components/table":{"types":"./dist/src/components/table/index.d.ts","import":"./dist/components/table.js"},"./components/tabs":{"types":"./dist/src/components/tabs/index.d.ts","import":"./dist/components/tabs.js"},"./components/text":{"types":"./dist/src/components/text/index.d.ts","import":"./dist/components/text.js"},"./components/toast":{"types":"./dist/src/components/toast/index.d.ts","import":"./dist/components/toast.js"},"./components/tooltip":{"types":"./dist/src/components/tooltip/index.d.ts","import":"./dist/components/tooltip.js"},"./components/popover":{"types":"./dist/src/components/popover/index.d.ts","import":"./dist/components/popover.js"},"./ai/component-registry.json":{"import":"./ai/component-registry.json"},"./components/radio":{"types":"./dist/src/components/radio/index.d.ts","import":"./dist/components/radio.js"},"./components/command-palette":{"types":"./dist/src/components/command-palette/index.d.ts","import":"./dist/components/command-palette.js"},"./components/link":{"types":"./dist/src/components/link/index.d.ts","import":"./dist/components/link.js"},"./components/breadcrumbs":{"types":"./dist/src/components/breadcrumbs/index.d.ts","import":"./dist/components/breadcrumbs.js"},"./components/empty":{"types":"./dist/src/components/empty/index.d.ts","import":"./dist/components/empty.js"},"./components/field":{"types":"./dist/src/components/field/index.d.ts","import":"./dist/components/field.js"},"./components/grid":{"types":"./dist/src/components/grid/index.d.ts","import":"./dist/components/grid.js"},"./components/cloudflare-logo":{"types":"./dist/src/components/cloudflare-logo/index.d.ts","import":"./dist/components/cloudflare-logo.js"},"./components/flow":{"types":"./dist/src/components/flow/index.d.ts","import":"./dist/components/flow.js"},"./components/autocomplete":{"types":"./dist/src/components/autocomplete/index.d.ts","import":"./dist/components/autocomplete.js"},"./components/sidebar":{"types":"./dist/src/components/sidebar/index.d.ts","import":"./dist/components/sidebar.js"},"./components/table-of-contents":{"types":"./dist/src/components/table-of-contents/index.d.ts","import":"./dist/components/table-of-contents.js"},"./utils":{"types":"./dist/src/utils/index.d.ts","import":"./dist/utils.js"},"./primitives":{"types":"./dist/src/primitives/index.d.ts","import":"./dist/primitives.js"},"./primitives/accordion":{"types":"./dist/src/primitives/accordion.d.ts","import":"./dist/primitives/accordion.js"},"./primitives/alert-dialog":{"types":"./dist/src/primitives/alert-dialog.d.ts","import":"./dist/primitives/alert-dialog.js"},"./primitives/autocomplete":{"types":"./dist/src/primitives/autocomplete.d.ts","import":"./dist/primitives/autocomplete.js"},"./primitives/avatar":{"types":"./dist/src/primitives/avatar.d.ts","import":"./dist/primitives/avatar.js"},"./primitives/button":{"types":"./dist/src/primitives/button.d.ts","import":"./dist/primitives/button.js"},"./primitives/checkbox":{"types":"./dist/src/primitives/checkbox.d.ts","import":"./dist/primitives/checkbox.js"},"./primitives/checkbox-group":{"types":"./dist/src/primitives/checkbox-group.d.ts","import":"./dist/primitives/checkbox-group.js"},"./primitives/collapsible":{"types":"./dist/src/primitives/collapsible.d.ts","import":"./dist/primitives/collapsible.js"},"./primitives/combobox":{"types":"./dist/src/primitives/combobox.d.ts","import":"./dist/primitives/combobox.js"},"./primitives/context-menu":{"types":"./dist/src/primitives/context-menu.d.ts","import":"./dist/primitives/context-menu.js"},"./primitives/csp-provider":{"types":"./dist/src/primitives/csp-provider.d.ts","import":"./dist/primitives/csp-provider.js"},"./primitives/dialog":{"types":"./dist/src/primitives/dialog.d.ts","import":"./dist/primitives/dialog.js"},"./primitives/direction-provider":{"types":"./dist/src/primitives/direction-provider.d.ts","import":"./dist/primitives/direction-provider.js"},"./primitives/drawer":{"types":"./dist/src/primitives/drawer.d.ts","import":"./dist/primitives/drawer.js"},"./primitives/field":{"types":"./dist/src/primitives/field.d.ts","import":"./dist/primitives/field.js"},"./primitives/fieldset":{"types":"./dist/src/primitives/fieldset.d.ts","import":"./dist/primitives/fieldset.js"},"./primitives/form":{"types":"./dist/src/primitives/form.d.ts","import":"./dist/primitives/form.js"},"./primitives/input":{"types":"./dist/src/primitives/input.d.ts","import":"./dist/primitives/input.js"},"./primitives/menu":{"types":"./dist/src/primitives/menu.d.ts","import":"./dist/primitives/menu.js"},"./primitives/menubar":{"types":"./dist/src/primitives/menubar.d.ts","import":"./dist/primitives/menubar.js"},"./primitives/meter":{"types":"./dist/src/primitives/meter.d.ts","import":"./dist/primitives/meter.js"},"./primitives/navigation-menu":{"types":"./dist/src/primitives/navigation-menu.d.ts","import":"./dist/primitives/navigation-menu.js"},"./primitives/number-field":{"types":"./dist/src/primitives/number-field.d.ts","import":"./dist/primitives/number-field.js"},"./primitives/otp-field":{"types":"./dist/src/primitives/otp-field.d.ts","import":"./dist/primitives/otp-field.js"},"./primitives/popover":{"types":"./dist/src/primitives/popover.d.ts","import":"./dist/primitives/popover.js"},"./primitives/preview-card":{"types":"./dist/src/primitives/preview-card.d.ts","import":"./dist/primitives/preview-card.js"},"./primitives/progress":{"types":"./dist/src/primitives/progress.d.ts","import":"./dist/primitives/progress.js"},"./primitives/radio":{"types":"./dist/src/primitives/radio.d.ts","import":"./dist/primitives/radio.js"},"./primitives/radio-group":{"types":"./dist/src/primitives/radio-group.d.ts","import":"./dist/primitives/radio-group.js"},"./primitives/scroll-area":{"types":"./dist/src/primitives/scroll-area.d.ts","import":"./dist/primitives/scroll-area.js"},"./primitives/select":{"types":"./dist/src/primitives/select.d.ts","import":"./dist/primitives/select.js"},"./primitives/separator":{"types":"./dist/src/primitives/separator.d.ts","import":"./dist/primitives/separator.js"},"./primitives/slider":{"types":"./dist/src/primitives/slider.d.ts","import":"./dist/primitives/slider.js"},"./primitives/switch":{"types":"./dist/src/primitives/switch.d.ts","import":"./dist/primitives/switch.js"},"./primitives/tabs":{"types":"./dist/src/primitives/tabs.d.ts","import":"./dist/primitives/tabs.js"},"./primitives/toast":{"types":"./dist/src/primitives/toast.d.ts","import":"./dist/primitives/toast.js"},"./primitives/toggle":{"types":"./dist/src/primitives/toggle.d.ts","import":"./dist/primitives/toggle.js"},"./primitives/toggle-group":{"types":"./dist/src/primitives/toggle-group.d.ts","import":"./dist/primitives/toggle-group.js"},"./primitives/toolbar":{"types":"./dist/src/primitives/toolbar.d.ts","import":"./dist/primitives/toolbar.js"},"./primitives/tooltip":{"types":"./dist/src/primitives/tooltip.d.ts","import":"./dist/primitives/tooltip.js"},"./registry":{"types":"./dist/src/registry/index.d.ts","import":"./dist/registry.js"},"./catalog":{"types":"./dist/src/catalog/index.d.ts","import":"./dist/catalog.js"},"./code":{"types":"./dist/src/code/index.d.ts","import":"./dist/code.js"},"./code/server":{"types":"./dist/src/code/server.d.ts","import":"./dist/code/server.js"},"./ai/schemas":{"types":"./dist/ai/schemas.d.ts","import":"./dist/ai/schemas.js"},"./registry/component-registry.json":"./ai/component-registry.json","./registry/component-registry.md":"./ai/component-registry.md","./styles/tailwind":"./dist/styles/kumo.css","./styles/standalone":"./dist/styles/kumo-standalone.css","./styles":"./dist/styles/kumo.css","./styles/*":"./dist/styles/*.css","./scripts/theme-generator/config":{"types":"./dist/scripts/theme-generator/config.d.ts","import":"./dist/scripts/theme-generator/config.js"},"./scripts/theme-generator/types":{"types":"./dist/scripts/theme-generator/types.d.ts","import":"./dist/scripts/theme-generator/types.js"}},"sideEffects":["*.css","dist/styles/*.css"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"scripts":{"prepublishOnly":"pnpm run build && pnpm run test:unit","build":"pnpm run codegen:registry && vite build --mode production && tsx scripts/css-build.ts && tsx src/command-line/build-cli.ts","dev":"vite build --watch --mode development","new:component":"plop component","clean":"rm -rf dist","codegen":"pnpm run codegen:primitives && pnpm run codegen:themes && pnpm run codegen:registry","codegen:themes":"tsx scripts/theme-generator/index.ts","migrate:tokens":"tsx scripts/theme-generator/migrate.ts","codegen:primitives":"tsx scripts/generate-primitives.ts","codegen:registry":"pnpm --filter @audtai/judit-docs-astro codegen:demos && tsx scripts/component-registry/index.ts","lint":"pnpm run lint:oxlint","lint:oxlint":"oxlint --config .oxlintrc.json src/** --type-aware","test":"CI=true vitest run --project=unit","test:ui":"vitest --ui","test:run":"vitest run","test:unit":"vitest run --project=unit","test:coverage":"vitest run --coverage","test:exports":"vitest run --project=unit tests/imports/export-path-validation.test.ts","test:watch":"vitest run --project=unit --watch","typecheck":"tsc --noEmit","validate:build":"vitest run --project=unit tests/imports/export-path-validation.test.ts","validate:changeset":"tsx ../../ci/scripts/validate-kumo-changeset.ts","test:browser":"vitest --config=vitest.browser.config.ts"},"peerDependencies":{"@phosphor-icons/react":"^2.1.10","echarts":"^6.0.0","react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true},"echarts":{"optional":true}},"dependencies":{"@base-ui/react":"^1.6.0","@shikijs/langs":"^4.0.0","@shikijs/themes":"^4.0.0","cnfast":"^0.0.8","d3-geo":"^3.1.1","motion":"^12.34.1","react-day-picker":"^9.13.2","shiki":"^4.0.0"},"devDependencies":{"@tailwindcss/cli":"catalog:","@tailwindcss/vite":"catalog:","@testing-library/react":"16.3.1","@testing-library/user-event":"14.6.1","@types/d3-geo":"^3.1.0","@types/glob":"9.0.0","@types/node":"catalog:","@types/react":"catalog:","@types/react-dom":"catalog:","@types/svg-path-parser":"^1.1.6","@vitejs/plugin-react":"^5.1.4","@vitest/browser-playwright":"^4.0.18","@vitest/ui":"catalog:","esbuild":"0.27.2","eslint-plugin-jsx-a11y":"catalog:","glob":"13.0.0","happy-dom":"catalog:","oxlint":"catalog:","oxlint-tsgolint":"catalog:","playwright":"catalog:","plop":"4.0.4","rollup-plugin-preserve-directives":"0.4.0","svg-path-parser":"^1.1.0","tailwindcss":"catalog:","ts-json-schema-generator":"2.4.0","tsx":"catalog:","typescript":"catalog:","vite":"catalog:","vite-plugin-dts":"catalog:","vitest":"catalog:","vitest-browser-react":"^2.0.5","wrangler":"catalog:","zod":"^4.0.0"},"_id":"@audtai/judit@2.8.0","_nodeVersion":"24.13.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-+TE/iLi3hIYLNnk+Z4u+R/tc0iI4ittd3RYlnbYLdx+ym/82lfuwlXjU+r3qet5nWxiw+LdIi2e1bve2ycNYyw==","shasum":"2006c456165f8be7d562bea9b3513e24953eac3f","tarball":"https://registry.npmjs.org/@audtai/judit/-/judit-2.8.0.tgz","fileCount":784,"unpackedSize":14539717,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDJeWeQzKJmSzJ4JmGmvaDEcmRkMgvP0rJ3zv4kb+zEgQIgEFjCR65zPPiwNj7DD769e+udcw4qnw7MxXf8H2m7UZY="}]},"_npmUser":{"name":"imdanielpiva","email":"imdanielpiva@clebinho.net"},"directories":{},"maintainers":[{"name":"imdanielpiva","email":"imdanielpiva@clebinho.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/judit_2.8.0_1784390363357_0.42600303770655734"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-18T15:59:23.268Z","2.8.0":"2026-07-18T15:59:23.592Z","modified":"2026-07-18T15:59:23.744Z"},"maintainers":[{"name":"imdanielpiva","email":"imdanielpiva@clebinho.net"}],"description":"Judit, audt.ai's React component library, forked from Cloudflare Kumo","homepage":"https://design.audt.work","keywords":["react","components","ui","design-system","tailwindcss","base-ui","judit","audt.ai","kumo","fork"],"repository":{"type":"git","url":"git+https://github.com/audtai/judit.git","directory":"packages/kumo"},"bugs":{"url":"https://github.com/audtai/judit/issues"},"license":"MIT","readme":"# @audtai/judit\n\nJudit is audt.ai's React component library for building modern web applications.\nIt is an independent fork of [Cloudflare Kumo](https://github.com/cloudflare/kumo),\nmaintained under the MIT License with credit to Cloudflare and the original Kumo\nmaintainers.\n\nJudit currently preserves Kumo's public component API and its `kumo-*` semantic\ntoken namespace so applications can follow upstream improvements without a\ngratuitous styling migration. Judit is not affiliated with or endorsed by\nCloudflare, Inc.\n\n## Installation\n\n```bash\npnpm add @audtai/judit\npnpm add react react-dom @phosphor-icons/react\n```\n\n`react`, `react-dom`, and `@phosphor-icons/react` are peer dependencies. `zod`\nand `echarts` are optional peers used by specific features.\n\n## Components\n\n```tsx\nimport { Button, Input, Surface } from \"@audtai/judit\";\n\n// Granular component imports are also available.\nimport { Button } from \"@audtai/judit/components/button\";\n```\n\nJudit bundles [Base UI](https://base-ui.com) and exposes its primitives:\n\n```tsx\nimport { Accordion, Popover, Slider } from \"@audtai/judit/primitives\";\nimport { Popover } from \"@audtai/judit/primitives/popover\";\n```\n\nPrefer Judit's styled components when one is available. The primitive exports\nare useful when building a component that is not yet covered by the library.\n\n## Styles\n\n### Tailwind CSS v4\n\nTailwind does not scan `node_modules` by default. Add the package as a source and\nload Judit's theme before Tailwind:\n\n```css\n@source \"../node_modules/@audtai/judit/dist/**/*.{js,jsx,ts,tsx}\";\n@import \"@audtai/judit/styles/tailwind\";\n@import \"tailwindcss\";\n```\n\nAdjust the `@source` path relative to the CSS file in your application. Import\norder matters because Judit's inherited Kumo `@theme` tokens must be registered\nbefore Tailwind processes the application stylesheet.\n\n### Standalone CSS\n\nApplications that do not use Tailwind can load the compiled stylesheet:\n\n```ts\nimport \"@audtai/judit/styles/standalone\";\n```\n\nThe standalone build includes the utilities used by Judit, dark-mode support,\nanimations, and responsive utilities.\n\n## Themes and semantic tokens\n\nSet the color mode on an ancestor element:\n\n```html\n<html data-mode=\"light\"></html>\n```\n\nUse `data-mode=\"dark\"` for dark mode. Judit intentionally retains Kumo's\nsemantic class names, including `bg-kumo-base`, `text-kumo-default`,\n`border-kumo-line`, and `ring-kumo-hairline`. These are compatibility API, not\nstale package branding.\n\n## CLI\n\nThe `judit` executable provides component reference and installable blocks:\n\n```bash\njudit init\njudit blocks\njudit add PageHeader\njudit ls\njudit doc Button\njudit docs\njudit ai\n```\n\n`judit init` creates `judit.json`. Blocks are installed into\n`src/components/judit` by default; the location can be changed in that file.\n\nThe same commands can be invoked without a global installation:\n\n```bash\npnpm exec judit doc Button\n# or\nnpx @audtai/judit doc Button\n```\n\n## AI and registry exports\n\nThe package ships structured component metadata at\n`@audtai/judit/registry/component-registry.json` and an AI usage guide.\n\nThe CLI prints the usage guide with `judit ai`. Registry data is generated from\nthe component types and examples during the build.\n\n## Development\n\nSee the repository's [AGENTS.md](https://github.com/audtai/judit/blob/main/AGENTS.md)\nfor contributor conventions.\nFrom the workspace root, common package checks are:\n\n```bash\npnpm --filter @audtai/judit build\npnpm --filter @audtai/judit test:unit\npnpm --filter @audtai/judit typecheck\n```\n\nThe package's physical directory and inherited Kumo API names are intentionally\nretained to keep upstream maintenance tractable.\n\n## Publishing\n\nPublishing is manual. Before publishing, a maintainer should verify the intended\nversion, run the package build and tests, and inspect the exact npm tarball:\n\n```bash\npnpm --filter @audtai/judit build\npnpm --filter @audtai/judit test:unit\npnpm --filter @audtai/judit exec npm pack --dry-run\npnpm --filter @audtai/judit publish --access public\n```\n\nDo not use the inherited repository-wide Cloudflare release workflow for Judit.\n\n## Attribution and license\n\nJudit is distributed under the [MIT License](./LICENSE). See [NOTICE](./NOTICE)\nfor upstream attribution and project status. The upstream Kumo changelog and git\nhistory are retained so original authorship remains visible.\n","readmeFilename":"README.md","_rev":"1-01c5d8dce1295cf1e17b70428b4894c0"}