# Ermine UI > Vue 3 components you copy into your project and own, in the spirit of shadcn/ui. Styled with plain CSS variables (no Tailwind, no CSS-in-JS); the only dependency is Vue 3.5 or newer. Version 0.6.1. Components are not imported from node_modules. The `ermineui` command line copies their source into the project: ```sh npx ermineui init # writes ermine.json and the theme stylesheet npx ermineui add button dialog # copies components and everything they depend on npx ermineui list # shows what is available and installed ``` Conventions to follow when writing code that uses them: - Import from the folder `init` chose, by default `@/components/ui/` (blocks: `@/components/blocks/`). Each folder's index exports every part, e.g. `import { Select, SelectTrigger, SelectContent, SelectItem } from '@/components/ui/select'`. - Compound components are built from parts (`Dialog`, `DialogTrigger`, `DialogContent`…). Overlay triggers (dialog, sheet, popover, tooltip, dropdown menu…) accept `as-child` to render your own element, such as a `Button`, instead. - Theme with the `--er-*` CSS variables in `ermine.css`. Component styles sit in `@layer components`, so unlayered CSS overrides them without `!important`. Variants and state are data attributes: `data-variant`, `data-size`, `data-state`, `data-side`. - Dark mode follows the operating system; force it with `class="dark"` or `class="light"` on any ancestor. - Themes: `npx ermineui theme