shadcn-ui 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/.env +1 -0
  3. data/Rakefile +6 -3
  4. data/app/assets/stylesheets/{application.scss → application.css} +0 -27
  5. data/app/assets/stylesheets/application.tailwind.css +32 -160
  6. data/app/assets/stylesheets/shadcn.css +216 -0
  7. data/app/controllers/documentation_controller.rb +1 -0
  8. data/app/helpers/components/accordion_helper.rb +14 -1
  9. data/app/helpers/components/alert_helper.rb +4 -2
  10. data/app/helpers/components/button_helper.rb +2 -1
  11. data/app/helpers/components/card_helper.rb +1 -1
  12. data/app/helpers/components/checkbox_helper.rb +2 -2
  13. data/app/helpers/components/collapsible_helper.rb +8 -0
  14. data/app/helpers/components/sheet_helper.rb +9 -0
  15. data/app/helpers/components_helper.rb +11 -0
  16. data/app/helpers/examples_helper.rb +1 -2
  17. data/app/views/components/ui/_accordion.html.erb +2 -2
  18. data/app/views/components/ui/_alert.html.erb +15 -3
  19. data/app/views/components/ui/_checkbox.html.erb +2 -1
  20. data/app/views/components/ui/_collapsible.html.erb +2 -6
  21. data/app/views/components/ui/_sheet.html.erb +1 -1
  22. data/app/views/documentation/generators.html.md +1 -0
  23. data/app/views/documentation/index.html.md +22 -0
  24. data/app/views/documentation/installation.html.md +130 -2
  25. data/app/views/examples/components/accordion/_usage.html.erb +15 -0
  26. data/app/views/examples/components/accordion/code/_block.html.erb +8 -0
  27. data/app/views/examples/components/accordion/code/_description.html.erb +7 -0
  28. data/app/views/examples/components/accordion/code/preview.erb +3 -0
  29. data/app/views/examples/components/accordion/code/usage.erb +16 -0
  30. data/app/views/examples/components/accordion.html.erb +36 -0
  31. data/app/views/examples/components/alert/_usage.html.erb +10 -0
  32. data/app/views/examples/components/alert/code/_attention.erb +3 -0
  33. data/app/views/examples/components/alert/code/_destructive.erb +2 -0
  34. data/app/views/examples/components/alert/code/_info.erb +3 -0
  35. data/app/views/examples/components/alert/code/_no_icon.erb +3 -0
  36. data/app/views/examples/components/alert/code/_success.erb +3 -0
  37. data/app/views/examples/components/alert/code/preview.erb +2 -0
  38. data/app/views/examples/components/alert/code/usage.erb +1 -0
  39. data/app/views/examples/components/alert.html.erb +90 -7
  40. data/app/views/examples/components/badge/_usage.html.erb +10 -0
  41. data/app/views/examples/components/badge/code/preview.erb +5 -0
  42. data/app/views/examples/components/badge/code/usage.erb +1 -0
  43. data/app/views/examples/components/badge.html.erb +11 -4
  44. data/app/views/examples/components/button/_usage.html.erb +19 -0
  45. data/app/views/examples/components/button/code/preview.erb +13 -0
  46. data/app/views/examples/components/button/code/usage.erb +6 -0
  47. data/app/views/examples/components/button.html.erb +20 -6
  48. data/app/views/examples/components/card/_usage.html.erb +21 -0
  49. data/app/views/examples/components/card/code/_form.erb +72 -0
  50. data/app/views/examples/components/card/code/_notifications.erb +61 -0
  51. data/app/views/examples/components/card/code/preview.erb +6 -0
  52. data/app/views/examples/components/card/code/usage.erb +3 -0
  53. data/app/views/examples/components/card.html.erb +35 -143
  54. data/app/views/examples/components/checkbox/_usage.html.erb +9 -0
  55. data/app/views/examples/components/checkbox/code/preview.erb +2 -0
  56. data/app/views/examples/components/checkbox/code/usage.erb +1 -0
  57. data/app/views/examples/components/checkbox.html.erb +14 -0
  58. data/app/views/examples/components/collapsible/_usage.html.erb +16 -0
  59. data/app/views/examples/components/collapsible/code/preview.erb +9 -0
  60. data/app/views/examples/components/collapsible/code/usage.erb +7 -0
  61. data/app/views/examples/components/collapsible.html.erb +13 -3
  62. data/app/views/examples/components/dialog.html.erb +1 -1
  63. data/app/views/layouts/shared/_components.html.erb +9 -8
  64. data/config/shadcn.tailwind.js +98 -0
  65. data/config/tailwind.config.js +13 -74
  66. data/lib/components.json +7 -3
  67. data/lib/generators/shadcn-ui_generator.rb +201 -0
  68. data/lib/shadcn-ui/version.rb +1 -1
  69. data/package-lock.json +90 -3
  70. data/package.json +4 -0
  71. metadata +39 -5
  72. data/lib/generators/shadcn_ui_generator.rb +0 -81
  73. /data/app/assets/stylesheets/{lambda.light.scss → lambda.light.css} +0 -0
@@ -1,81 +0,0 @@
1
- require "json"
2
- require "rails/generators/base"
3
-
4
- class ShadcnUiGenerator < Rails::Generators::Base
5
- attr_reader :component_name, :target_rails_root, :options
6
-
7
- argument :component, required: false, desc: "The name of the component to install"
8
- argument :rails_root, required: false, desc: "Path to the Rails root directory"
9
-
10
- def self.banner
11
- "rails generate shadcn_ui <component_name>[:install] [--remove] [rails_root_path]"
12
- end
13
-
14
- def initialize(args, *options)
15
- super
16
-
17
- @component_name = component
18
- @target_rails_root = rails_root || Rails.root
19
- @options = options.first
20
- start
21
- end
22
-
23
- private
24
-
25
- def start
26
- if component_valid?
27
- copy_files
28
- else
29
- display_available_components
30
- end
31
- end
32
-
33
- def available_components
34
- if !@available_components
35
- gem_lib_path = File.expand_path("../../lib", __dir__)
36
- components_file = File.read(File.join(gem_lib_path, "components.json"))
37
- @available_components = JSON.parse(components_file)
38
- else
39
- @available_components
40
- end
41
- end
42
-
43
- def display_available_components
44
- puts self.class.banner
45
- puts "\nAvailable components:"
46
-
47
- available_components.each do |component, _|
48
- description = "# A #{component} component"
49
- banner_line = "rails g shadcn_ui #{component}:install #{" " * (20 - component.length)} #{description}"
50
- puts banner_line
51
- end
52
- end
53
-
54
- def copy_files
55
- if component_valid?
56
- component_data["files"].each do |file|
57
- source_path = File.expand_path(File.join("../../", file), __dir__)
58
- destination_path = File.expand_path(File.join(target_rails_root, file))
59
-
60
- FileUtils.mkdir_p(File.dirname(destination_path))
61
- FileUtils.cp(source_path, destination_path)
62
- end
63
- end
64
- end
65
-
66
- def destination_file_path
67
- File.join(@rails_root, "app/views/components/ui/_#{component}.html.erb")
68
- end
69
-
70
- def controller_file_path
71
- File.join(@rails_root, "app/javascript/controllers/ui/#{component}_controller.js")
72
- end
73
-
74
- def component_data
75
- @component_data ||= available_components[component]
76
- end
77
-
78
- def component_valid?
79
- component.present? && available_components.key?(component) && component_data
80
- end
81
- end