Class: Shadcn::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- Shadcn::Generators::InstallGenerator
- Defined in:
- lib/generators/shadcn/install/install_generator.rb
Overview
Generator for installing shadcn-rails in a Rails application Usage: rails generate shadcn:install
Instance Method Summary collapse
- #add_stylesheet ⇒ Object
- #configure_tailwind ⇒ Object
- #create_config_file ⇒ Object
- #create_initializer ⇒ Object
- #display_post_install_message ⇒ Object
- #setup_stimulus_controllers ⇒ Object
Instance Method Details
#add_stylesheet ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/generators/shadcn/install/install_generator.rb', line 32 def add_stylesheet return if [:skip_tailwind] if File.exist?("app/assets/stylesheets/application.tailwind.css") inject_into_file "app/assets/stylesheets/application.tailwind.css", before: "@tailwind base;" do "/* shadcn-rails styles */\n@import \"shadcn/base\";\n@import \"shadcn/components\";\n\n" end elsif File.exist?("app/assets/stylesheets/application.css") append_to_file "app/assets/stylesheets/application.css" do "\n/*\n *= require shadcn/base\n *= require shadcn/components\n */\n" end else say "Could not find application stylesheet. Please manually import shadcn styles.", :yellow end end |
#configure_tailwind ⇒ Object
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/generators/shadcn/install/install_generator.rb', line 48 def configure_tailwind return if [:skip_tailwind] return unless File.exist?("tailwind.config.js") inject_into_file "tailwind.config.js", after: "content: [" do "\n './app/components/**/*.{rb,html,erb}',\n './app/views/**/*.{html,erb}'," end say "Updated tailwind.config.js to include component paths", :green end |
#create_config_file ⇒ Object
28 29 30 |
# File 'lib/generators/shadcn/install/install_generator.rb', line 28 def create_config_file template "shadcn.yml.tt", "config/shadcn.yml" end |
#create_initializer ⇒ Object
24 25 26 |
# File 'lib/generators/shadcn/install/install_generator.rb', line 24 def create_initializer template "initializer.rb.tt", "config/initializers/shadcn.rb" end |
#display_post_install_message ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/generators/shadcn/install/install_generator.rb', line 69 def say "" say "=" * 60, :green say " shadcn-rails has been installed!", :green say "=" * 60, :green say "" say "Next steps:", :yellow say " 1. Ensure Tailwind CSS is configured with the shadcn theme" say " 2. Import the Stimulus controllers in your application" say " 3. Start using components in your views:" say "" say " <%= render Shadcn::ButtonComponent.new(variant: :primary) do %>" say " Click me" say " <% end %>" say "" say "To add individual components to your app for customization:" say "" say " rails generate shadcn:add button" say " rails generate shadcn:add --list" say "" say "For more information, visit: https://github.com/iheanyi/shadcn-rails" say "" end |
#setup_stimulus_controllers ⇒ Object
59 60 61 62 63 64 65 66 67 |
# File 'lib/generators/shadcn/install/install_generator.rb', line 59 def setup_stimulus_controllers if importmap? setup_importmap elsif using_esbuild? || using_webpack? setup_bundler else say "Could not detect JavaScript bundler. Please manually configure Stimulus controllers.", :yellow end end |