app/views/documentation/installation.html.md in shadcn-ui-0.0.2 vs app/views/documentation/installation.html.md in shadcn-ui-0.0.3

- old
+ new

@@ -1,7 +1,129 @@ -# Alpha Usage/Installation +# Installation +The more automated way to install the components into your application is via the gem packaged +within this application. The gem provides generators that will setup your applications as best as +possible without potentially overwriting any existing code as well as copy components and their +dependencies to your application. + +## Add the Gem + +First step is adding the gem to your gemfile. + +```sh +bundle add shadcn-ui +bundle install +``` + +## Install and Setup Dependencies + +### TailwindCSS + +The components need a few things in order to render and function properly + +1. Tailwindcss must be installed in your application. If it's not already, I recommend just using + the `tailwindcss-rails` gem and running its installer to bootstrap your application with + TailwindCSS. + +2. A few tailwindcss npm packages are required by the theme and the best way to get them is to add + them to your package.json or even if you're application doesn't use node packages because you use + importmaps or something else, having a package.json will still work only to allow the tailwind + cli to compile the themes. The easiest way I've found to include everything you need is by + including only one package that will include the rest of them, `tailwind-animate`. Create a + package.json if you need via `echo '{}' >> package.json`. + +``` +npm install -D tailwind-animate +``` + +These are the requirements if you want to add them individually: + +``` +@tailwindcss/forms +@tailwindcss/aspect-ratio +@tailwindcss/typography +@tailwindcss/container-queries +tailwindcss-animate +``` + +### shadcn CSS - Required + +#### shadcn.css + +These steps were not automated and are required to be done manually. + +The components also require a few CSS variables to be set in order to render properly. It's a two +step process, first, the gem installation should have added `app/assets/stylesheets/shadcn.css` to +your application. You need to make sure this is included within `application.tailwind.css`, which +should have happened automatically, but double check. + +``` +@import "shadcn.css"; +@tailwind base; +@tailwind components; +@tailwind utilities; +``` + +#### shadcn.tailwind.js + +The installation also should have added a `config/shadcn.tailwind.js` file to your application. This +file is required to be included in your `tailwind.config.js` file. The best way to include it is to +`require` it in your `tailwind.config.js` file and expand the configuration settings. This is what a +newly setup `tailwind.config.js` file should look like after the inclusion of the +`shadcn.tailwind.js` settings. + +```js +const defaultTheme = require("tailwindcss/defaultTheme"); +const shadcnConfig = require("./shadcn.tailwind.js"); + +module.exports = { + content: [ + "./public/*.html", + "./app/helpers/**/*.rb", + "./app/javascript/**/*.js", + "./app/views/**/*.{erb,haml,html,slim}", + ], + theme: { + extend: { + fontFamily: { + sans: ["Inter var", ...defaultTheme.fontFamily.sans], + }, + }, + }, + plugins: [ + require("@tailwindcss/forms"), + require("@tailwindcss/aspect-ratio"), + require("@tailwindcss/typography"), + require("@tailwindcss/container-queries"), + ], + ...shadcnConfig, +}; +``` + +You could also just use the shadcnConfig as the default Tailwind settings needed are also defined +there.. + +```js +const shadcnConfig = require("./shadcn.tailwind.js"); + +module.exports = { + ...shadcnConfig, +}; +``` + +After that feel free to add further customizatios to your tailwind config. For an existing tailwind +config, just add shadcnConfig to the end of the config object. It will override any settings needed +by being at the end. And obviously feel free to inspect shadcnConfig and keep only what's reui + +## End + +That's it! You are now set to start +[installing components via the generator]("/documentation/generators") and rendering them into your +views. + +# Manual Installation + Prior to the initial gem release, you can use this as an alpha by cloning this repository and starting up the app as you would a standard rails app. ```sh git clone https://github.com/aviflombaum/shadcn-rails.git @@ -218,11 +340,11 @@ "calt" 1; } } ``` -### Copy a a component's files to your application +### Copy Component Files For example, if you want to use the Accordion component, you would copy the following files to your application: - `app/javascript/controllers/components/ui/accordion_controller.js` The Stimulus controller for any @@ -245,5 +367,11 @@ See the component's demo page in `app/views/examples/components/accordion.html.erb` for more examples. This will be similar for each component. + +# Conclusion + +You can freely mix and match both styles as your application evolves. The end goal of each of them +is to get the component code into your application so you can further customize and take ownership +of your design system.