# UI URL: /docs/features/ui Learn about installing shadcn/ui compnents and how to use type-safe icons. [ship.pluv.io](https://ship.pluv.io) templates are built with [shadcn/ui](https://ui.shadcn.com/), allowing you to quickly install components that you can customize to your liking. ## Installing shadcn/ui components You can install shadcn/ui components by installing them with the [shadcn/ui CLI](https://ui.shadcn.com/docs/cli). 1. Navigate to the `/packages/ui` directory. 2. Find a component you want to install (e.g. [https://ui.shadcn.com/docs/components/checkbox](https://ui.shadcn.com/docs/components/checkbox)) 3. Run the CLI installation command ```bash title="/packages/ui" pnpm dlx shadcn@latest add checkbox ``` This package already has the shadcn/ui CLI installed, so you can choose to run the following command instead: ```bash title="/packages/ui" pnpm shadcn add checkbox ``` ## Using type-safe icons There are 2 ways to use type-safe icons in your project: ### Using lucide-react ```tsx title="page.tsx" import { RocketIcon } from "lucide-react"; ``` ### Using @workspace/icons You can generate type-safe icons as React components without having to mess with Webpack loaders by generating them with [svgr](https://react-svgr.com/). 1. Go to the `/packages/icons` directory. 2. Add an svg file to the `/packages/icons/svgs` directory (e.g. "MyCustomIcon.svg"). The file name of the svg file will be used as the name of the icon component. 3. Run the following command to generate the icon component: ```bash title="/packages/icons" pnpm build ``` 4. Use the icon component in your project: ```tsx title="page.tsx" import { MyCustomIcon } from "@workspace/icons"; ```