Class: Shadcn::Generators::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
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

Instance Method Details

#add_stylesheetObject



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 options[: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_tailwindObject



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 options[: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_fileObject



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_initializerObject



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_messageObject



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 display_post_install_message
  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_controllersObject



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