shadcn-ui 0.0.2 → 0.0.4

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 (154) 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/helpers/components/accordion_helper.rb +14 -1
  8. data/app/helpers/components/alert_helper.rb +4 -2
  9. data/app/helpers/components/button_helper.rb +2 -1
  10. data/app/helpers/components/card_helper.rb +1 -1
  11. data/app/helpers/components/checkbox_helper.rb +2 -2
  12. data/app/helpers/components/collapsible_helper.rb +8 -0
  13. data/app/helpers/components/input_helper.rb +1 -1
  14. data/app/helpers/components/sheet_helper.rb +9 -0
  15. data/app/helpers/components/slider_helper.rb +1 -1
  16. data/app/helpers/components_helper.rb +11 -0
  17. data/app/helpers/examples_helper.rb +7 -3
  18. data/app/javascript/controllers/highlight_controller.js +0 -1
  19. data/app/javascript/controllers/ui/popover_controller.js +6 -2
  20. data/app/views/application/index.html.erb +625 -17
  21. data/app/views/components/ui/_accordion.html.erb +2 -2
  22. data/app/views/components/ui/_alert.html.erb +15 -3
  23. data/app/views/components/ui/_card.html.erb +7 -1
  24. data/app/views/components/ui/_checkbox.html.erb +2 -1
  25. data/app/views/components/ui/_collapsible.html.erb +2 -6
  26. data/app/views/components/ui/_filter.html.erb +2 -1
  27. data/app/views/components/ui/_sheet.html.erb +1 -1
  28. data/app/views/documentation/generators.html.md +21 -0
  29. data/app/views/documentation/helpers.html.md +54 -0
  30. data/app/views/documentation/index.html.md +22 -0
  31. data/app/views/documentation/installation.html.md +130 -2
  32. data/app/views/documentation/javascript.html.md +8 -0
  33. data/app/views/examples/components/accordion/_usage.html.erb +15 -0
  34. data/app/views/examples/components/accordion/code/_block.html.erb +8 -0
  35. data/app/views/examples/components/accordion/code/_description.html.erb +7 -0
  36. data/app/views/examples/components/accordion/code/_preview.erb +3 -0
  37. data/app/views/examples/components/accordion/code/_usage.erb +16 -0
  38. data/app/views/examples/components/accordion.html.erb +37 -3
  39. data/app/views/examples/components/alert/_usage.html.erb +10 -0
  40. data/app/views/examples/components/alert/code/_attention.erb +3 -0
  41. data/app/views/examples/components/alert/code/_destructive.erb +2 -0
  42. data/app/views/examples/components/alert/code/_info.erb +3 -0
  43. data/app/views/examples/components/alert/code/_no_icon.erb +3 -0
  44. data/app/views/examples/components/alert/code/_preview.erb +2 -0
  45. data/app/views/examples/components/alert/code/_success.erb +3 -0
  46. data/app/views/examples/components/alert/code/_usage.erb +1 -0
  47. data/app/views/examples/components/alert-dialog/code/_preview.erb +6 -0
  48. data/app/views/examples/components/alert-dialog/code/_usage.erb +0 -0
  49. data/app/views/examples/components/alert-dialog.html.erb +8 -11
  50. data/app/views/examples/components/alert.html.erb +90 -8
  51. data/app/views/examples/components/badge/_usage.html.erb +10 -0
  52. data/app/views/examples/components/badge/code/_preview.erb +5 -0
  53. data/app/views/examples/components/badge/code/_usage.erb +1 -0
  54. data/app/views/examples/components/badge.html.erb +12 -17
  55. data/app/views/examples/components/button/_usage.html.erb +19 -0
  56. data/app/views/examples/components/button/code/_preview.erb +13 -0
  57. data/app/views/examples/components/button/code/_usage.erb +6 -0
  58. data/app/views/examples/components/button.html.erb +12 -20
  59. data/app/views/examples/components/card/_usage.html.erb +21 -0
  60. data/app/views/examples/components/card/code/_form.erb +72 -0
  61. data/app/views/examples/components/card/code/_notifications.erb +61 -0
  62. data/app/views/examples/components/card/code/_preview.erb +6 -0
  63. data/app/views/examples/components/card/code/_usage.erb +3 -0
  64. data/app/views/examples/components/card.html.erb +31 -143
  65. data/app/views/examples/components/checkbox/_usage.html.erb +9 -0
  66. data/app/views/examples/components/checkbox/code/_preview.erb +2 -0
  67. data/app/views/examples/components/checkbox/code/_usage.erb +1 -0
  68. data/app/views/examples/components/checkbox.html.erb +15 -1
  69. data/app/views/examples/components/collapsible/_usage.html.erb +16 -0
  70. data/app/views/examples/components/collapsible/code/_preview.erb +9 -0
  71. data/app/views/examples/components/collapsible/code/_usage.erb +7 -0
  72. data/app/views/examples/components/collapsible.html.erb +12 -10
  73. data/app/views/examples/components/dialog.html.erb +6 -15
  74. data/app/views/examples/components/dropdown-menu/_usage.html.erb +19 -0
  75. data/app/views/examples/components/dropdown-menu/code/_preview.erb +19 -0
  76. data/app/views/examples/components/dropdown-menu/code/_usage.erb +13 -0
  77. data/app/views/examples/components/dropdown-menu.html.erb +29 -15
  78. data/app/views/examples/components/filter/_usage.html.erb +14 -0
  79. data/app/views/examples/components/filter/code/_icon.html.erb +7 -0
  80. data/app/views/examples/components/filter/code/_preview.erb +3 -0
  81. data/app/views/examples/components/filter/code/_usage.erb +5 -0
  82. data/app/views/examples/components/filter.html.erb +27 -7
  83. data/app/views/examples/components/hover-card/_usage.html.erb +15 -0
  84. data/app/views/examples/components/hover-card/code/_preview.erb +13 -0
  85. data/app/views/examples/components/hover-card/code/_usage.erb +6 -0
  86. data/app/views/examples/components/hover-card.html.erb +12 -14
  87. data/app/views/examples/components/input/_usage.html.erb +10 -0
  88. data/app/views/examples/components/input/code/_borderless.erb +3 -0
  89. data/app/views/examples/components/input/code/_preview.erb +1 -0
  90. data/app/views/examples/components/input/code/_usage.erb +1 -0
  91. data/app/views/examples/components/input.html.erb +17 -3
  92. data/app/views/examples/components/label/_usage.html.erb +9 -0
  93. data/app/views/examples/components/label/code/_preview.erb +5 -0
  94. data/app/views/examples/components/label/code/_usage.erb +1 -0
  95. data/app/views/examples/components/label.html.erb +14 -5
  96. data/app/views/examples/components/popover/_usage.html.erb +12 -0
  97. data/app/views/examples/components/popover/code/_form.erb +23 -0
  98. data/app/views/examples/components/popover/code/_preview.erb +13 -0
  99. data/app/views/examples/components/popover/code/_usage.erb +7 -0
  100. data/app/views/examples/components/popover.html.erb +28 -24
  101. data/app/views/examples/components/progress/_usage.erb +9 -0
  102. data/app/views/examples/components/progress/code/_preview.erb +1 -0
  103. data/app/views/examples/components/progress/code/_usage.erb +1 -0
  104. data/app/views/examples/components/progress.html.erb +12 -2
  105. data/app/views/examples/components/separator/_usage.html.erb +10 -0
  106. data/app/views/examples/components/separator/code/_fancy.erb +21 -0
  107. data/app/views/examples/components/separator/code/_preview.erb +1 -0
  108. data/app/views/examples/components/separator/code/_usage.erb +1 -0
  109. data/app/views/examples/components/separator.html.erb +26 -19
  110. data/app/views/examples/components/sheet/_usage.html.erb +38 -0
  111. data/app/views/examples/components/sheet/code/_mobile_menu.erb +17 -0
  112. data/app/views/examples/components/sheet/code/_preview.erb +22 -0
  113. data/app/views/examples/components/sheet/code/_usage.erb +7 -0
  114. data/app/views/examples/components/sheet.html.erb +17 -10
  115. data/app/views/examples/components/skeleton/_usage.html.erb +9 -0
  116. data/app/views/examples/components/skeleton/code/_preview.erb +1 -0
  117. data/app/views/examples/components/skeleton/code/_usage.erb +1 -0
  118. data/app/views/examples/components/skeleton.html.erb +16 -2
  119. data/app/views/examples/components/slider/_usage.html.erb +11 -0
  120. data/app/views/examples/components/slider/code/_preview.erb +3 -0
  121. data/app/views/examples/components/slider/code/_usage.erb +1 -0
  122. data/app/views/examples/components/slider.html.erb +16 -2
  123. data/app/views/examples/components/textarea/_usage.html.erb +9 -0
  124. data/app/views/examples/components/textarea/code/_preview.erb +1 -0
  125. data/app/views/examples/components/textarea/code/_usage.erb +1 -0
  126. data/app/views/examples/components/textarea.html.erb +16 -2
  127. data/app/views/examples/components/toast/_usage.html.erb +11 -0
  128. data/app/views/examples/components/toast/code/_preview.erb +3 -0
  129. data/app/views/examples/components/toast/code/_usage.erb +2 -0
  130. data/app/views/examples/components/toast.html.erb +12 -4
  131. data/app/views/examples/components/toggle/_usage.html.erb +10 -0
  132. data/app/views/examples/components/toggle/code/_preview.erb +1 -0
  133. data/app/views/examples/components/toggle/code/_usage.erb +1 -0
  134. data/app/views/examples/components/toggle.html.erb +16 -2
  135. data/app/views/examples/components/tooltip/_usage.html.erb +11 -0
  136. data/app/views/examples/components/tooltip/code/_preview.erb +12 -0
  137. data/app/views/examples/components/tooltip/code/_usage.erb +7 -0
  138. data/app/views/examples/components/tooltip.html.erb +16 -13
  139. data/app/views/layouts/shared/_components.html.erb +44 -41
  140. data/config/environments/production.rb +4 -4
  141. data/config/shadcn.tailwind.js +98 -0
  142. data/config/tailwind.config.js +13 -74
  143. data/lib/components.json +7 -3
  144. data/lib/generators/shadcn-ui_generator.rb +201 -0
  145. data/lib/shadcn-ui/version.rb +1 -1
  146. data/package-lock.json +90 -3
  147. data/package.json +4 -0
  148. metadata +97 -9
  149. data/lib/generators/shadcn_ui_generator.rb +0 -81
  150. /data/app/assets/stylesheets/{lambda.light.scss → lambda.light.css} +0 -0
  151. /data/app/views/examples/components/dialog/code/{form.erb → _form.erb} +0 -0
  152. /data/app/views/examples/components/dialog/code/{notifications.erb → _notifications.erb} +0 -0
  153. /data/app/views/examples/components/dialog/code/{preview.erb → _preview.erb} +0 -0
  154. /data/app/views/examples/components/dialog/code/{usage.erb → _usage.erb} +0 -0
data/package-lock.json CHANGED
@@ -8,6 +8,10 @@
8
8
  "tailwindcss-animate": "^1.0.6"
9
9
  },
10
10
  "devDependencies": {
11
+ "@tailwindcss/aspect-ratio": "^0.4.2",
12
+ "@tailwindcss/container-queries": "^0.1.1",
13
+ "@tailwindcss/forms": "^0.5.3",
14
+ "@tailwindcss/typography": "^0.5.9",
11
15
  "prettier": "^3.0.0"
12
16
  }
13
17
  },
@@ -112,6 +116,64 @@
112
116
  "node": ">= 8"
113
117
  }
114
118
  },
119
+ "node_modules/@tailwindcss/aspect-ratio": {
120
+ "version": "0.4.2",
121
+ "resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz",
122
+ "integrity": "sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==",
123
+ "dev": true,
124
+ "peerDependencies": {
125
+ "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1"
126
+ }
127
+ },
128
+ "node_modules/@tailwindcss/container-queries": {
129
+ "version": "0.1.1",
130
+ "resolved": "https://registry.npmjs.org/@tailwindcss/container-queries/-/container-queries-0.1.1.tgz",
131
+ "integrity": "sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA==",
132
+ "dev": true,
133
+ "peerDependencies": {
134
+ "tailwindcss": ">=3.2.0"
135
+ }
136
+ },
137
+ "node_modules/@tailwindcss/forms": {
138
+ "version": "0.5.3",
139
+ "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz",
140
+ "integrity": "sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==",
141
+ "dev": true,
142
+ "dependencies": {
143
+ "mini-svg-data-uri": "^1.2.3"
144
+ },
145
+ "peerDependencies": {
146
+ "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1"
147
+ }
148
+ },
149
+ "node_modules/@tailwindcss/typography": {
150
+ "version": "0.5.9",
151
+ "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.9.tgz",
152
+ "integrity": "sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==",
153
+ "dev": true,
154
+ "dependencies": {
155
+ "lodash.castarray": "^4.4.0",
156
+ "lodash.isplainobject": "^4.0.6",
157
+ "lodash.merge": "^4.6.2",
158
+ "postcss-selector-parser": "6.0.10"
159
+ },
160
+ "peerDependencies": {
161
+ "tailwindcss": ">=3.0.0 || insiders"
162
+ }
163
+ },
164
+ "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": {
165
+ "version": "6.0.10",
166
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
167
+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
168
+ "dev": true,
169
+ "dependencies": {
170
+ "cssesc": "^3.0.0",
171
+ "util-deprecate": "^1.0.2"
172
+ },
173
+ "engines": {
174
+ "node": ">=4"
175
+ }
176
+ },
115
177
  "node_modules/any-promise": {
116
178
  "version": "1.3.0",
117
179
  "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
@@ -241,7 +303,6 @@
241
303
  "version": "3.0.0",
242
304
  "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
243
305
  "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
244
- "peer": true,
245
306
  "bin": {
246
307
  "cssesc": "bin/cssesc"
247
308
  },
@@ -474,6 +535,24 @@
474
535
  "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
475
536
  "peer": true
476
537
  },
538
+ "node_modules/lodash.castarray": {
539
+ "version": "4.4.0",
540
+ "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
541
+ "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
542
+ "dev": true
543
+ },
544
+ "node_modules/lodash.isplainobject": {
545
+ "version": "4.0.6",
546
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
547
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
548
+ "dev": true
549
+ },
550
+ "node_modules/lodash.merge": {
551
+ "version": "4.6.2",
552
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
553
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
554
+ "dev": true
555
+ },
477
556
  "node_modules/merge2": {
478
557
  "version": "1.4.1",
479
558
  "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
@@ -496,6 +575,15 @@
496
575
  "node": ">=8.6"
497
576
  }
498
577
  },
578
+ "node_modules/mini-svg-data-uri": {
579
+ "version": "1.4.4",
580
+ "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz",
581
+ "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==",
582
+ "dev": true,
583
+ "bin": {
584
+ "mini-svg-data-uri": "cli.js"
585
+ }
586
+ },
499
587
  "node_modules/minimatch": {
500
588
  "version": "3.1.2",
501
589
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -992,8 +1080,7 @@
992
1080
  "node_modules/util-deprecate": {
993
1081
  "version": "1.0.2",
994
1082
  "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
995
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
996
- "peer": true
1083
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
997
1084
  },
998
1085
  "node_modules/wrappy": {
999
1086
  "version": "1.0.2",
data/package.json CHANGED
@@ -3,6 +3,10 @@
3
3
  "tailwindcss-animate": "^1.0.6"
4
4
  },
5
5
  "devDependencies": {
6
+ "@tailwindcss/aspect-ratio": "^0.4.2",
7
+ "@tailwindcss/container-queries": "^0.1.1",
8
+ "@tailwindcss/forms": "^0.5.3",
9
+ "@tailwindcss/typography": "^0.5.9",
6
10
  "prettier": "^3.0.0"
7
11
  }
8
12
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shadcn-ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Avi Flombaum
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-12 00:00:00.000000000 Z
11
+ date: 2023-07-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: This gem is a documentation site and gem that will copy components from
14
14
  the shadcn-ui library into a Ruby on Rails application.
@@ -19,6 +19,7 @@ extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
21
  - ".editorconfig"
22
+ - ".env"
22
23
  - ".prettierignore"
23
24
  - ".prettierrc.json"
24
25
  - ".rspec"
@@ -33,9 +34,10 @@ files:
33
34
  - app/assets/builds/.keep
34
35
  - app/assets/config/manifest.js
35
36
  - app/assets/images/.keep
36
- - app/assets/stylesheets/application.scss
37
+ - app/assets/stylesheets/application.css
37
38
  - app/assets/stylesheets/application.tailwind.css
38
- - app/assets/stylesheets/lambda.light.scss
39
+ - app/assets/stylesheets/lambda.light.css
40
+ - app/assets/stylesheets/shadcn.css
39
41
  - app/channels/application_cable/channel.rb
40
42
  - app/channels/application_cable/connection.rb
41
43
  - app/controllers/application_controller.rb
@@ -127,39 +129,124 @@ files:
127
129
  - app/views/components/ui/shared/_menu_item.html.erb
128
130
  - app/views/components/ui/svg/_check.html.erb
129
131
  - app/views/documentation/about.html.md
132
+ - app/views/documentation/generators.html.md
133
+ - app/views/documentation/helpers.html.md
130
134
  - app/views/documentation/index.html.erb.bak
131
135
  - app/views/documentation/index.html.md
132
136
  - app/views/documentation/installation.html.md
137
+ - app/views/documentation/javascript.html.md
133
138
  - app/views/examples/authentication/index.html.erb
134
139
  - app/views/examples/components/accordion.html.erb
140
+ - app/views/examples/components/accordion/_usage.html.erb
141
+ - app/views/examples/components/accordion/code/_block.html.erb
142
+ - app/views/examples/components/accordion/code/_description.html.erb
143
+ - app/views/examples/components/accordion/code/_preview.erb
144
+ - app/views/examples/components/accordion/code/_usage.erb
135
145
  - app/views/examples/components/alert-dialog.html.erb
146
+ - app/views/examples/components/alert-dialog/code/_preview.erb
147
+ - app/views/examples/components/alert-dialog/code/_usage.erb
136
148
  - app/views/examples/components/alert.html.erb
149
+ - app/views/examples/components/alert/_usage.html.erb
150
+ - app/views/examples/components/alert/code/_attention.erb
151
+ - app/views/examples/components/alert/code/_destructive.erb
152
+ - app/views/examples/components/alert/code/_info.erb
153
+ - app/views/examples/components/alert/code/_no_icon.erb
154
+ - app/views/examples/components/alert/code/_preview.erb
155
+ - app/views/examples/components/alert/code/_success.erb
156
+ - app/views/examples/components/alert/code/_usage.erb
137
157
  - app/views/examples/components/badge.html.erb
158
+ - app/views/examples/components/badge/_usage.html.erb
159
+ - app/views/examples/components/badge/code/_preview.erb
160
+ - app/views/examples/components/badge/code/_usage.erb
138
161
  - app/views/examples/components/button.html.erb
162
+ - app/views/examples/components/button/_usage.html.erb
163
+ - app/views/examples/components/button/code/_preview.erb
164
+ - app/views/examples/components/button/code/_usage.erb
139
165
  - app/views/examples/components/card.html.erb
166
+ - app/views/examples/components/card/_usage.html.erb
167
+ - app/views/examples/components/card/code/_form.erb
168
+ - app/views/examples/components/card/code/_notifications.erb
169
+ - app/views/examples/components/card/code/_preview.erb
170
+ - app/views/examples/components/card/code/_usage.erb
140
171
  - app/views/examples/components/checkbox.html.erb
172
+ - app/views/examples/components/checkbox/_usage.html.erb
173
+ - app/views/examples/components/checkbox/code/_preview.erb
174
+ - app/views/examples/components/checkbox/code/_usage.erb
141
175
  - app/views/examples/components/collapsible.html.erb
176
+ - app/views/examples/components/collapsible/_usage.html.erb
177
+ - app/views/examples/components/collapsible/code/_preview.erb
178
+ - app/views/examples/components/collapsible/code/_usage.erb
142
179
  - app/views/examples/components/dialog.html.erb
143
180
  - app/views/examples/components/dialog/_usage.html.erb
144
- - app/views/examples/components/dialog/code/form.erb
145
- - app/views/examples/components/dialog/code/notifications.erb
146
- - app/views/examples/components/dialog/code/preview.erb
147
- - app/views/examples/components/dialog/code/usage.erb
181
+ - app/views/examples/components/dialog/code/_form.erb
182
+ - app/views/examples/components/dialog/code/_notifications.erb
183
+ - app/views/examples/components/dialog/code/_preview.erb
184
+ - app/views/examples/components/dialog/code/_usage.erb
148
185
  - app/views/examples/components/dropdown-menu.html.erb
186
+ - app/views/examples/components/dropdown-menu/_usage.html.erb
187
+ - app/views/examples/components/dropdown-menu/code/_preview.erb
188
+ - app/views/examples/components/dropdown-menu/code/_usage.erb
149
189
  - app/views/examples/components/filter.html.erb
190
+ - app/views/examples/components/filter/_usage.html.erb
191
+ - app/views/examples/components/filter/code/_icon.html.erb
192
+ - app/views/examples/components/filter/code/_preview.erb
193
+ - app/views/examples/components/filter/code/_usage.erb
150
194
  - app/views/examples/components/hover-card.html.erb
195
+ - app/views/examples/components/hover-card/_usage.html.erb
196
+ - app/views/examples/components/hover-card/code/_preview.erb
197
+ - app/views/examples/components/hover-card/code/_usage.erb
151
198
  - app/views/examples/components/input.html.erb
199
+ - app/views/examples/components/input/_usage.html.erb
200
+ - app/views/examples/components/input/code/_borderless.erb
201
+ - app/views/examples/components/input/code/_preview.erb
202
+ - app/views/examples/components/input/code/_usage.erb
152
203
  - app/views/examples/components/label.html.erb
204
+ - app/views/examples/components/label/_usage.html.erb
205
+ - app/views/examples/components/label/code/_preview.erb
206
+ - app/views/examples/components/label/code/_usage.erb
153
207
  - app/views/examples/components/popover.html.erb
208
+ - app/views/examples/components/popover/_usage.html.erb
209
+ - app/views/examples/components/popover/code/_form.erb
210
+ - app/views/examples/components/popover/code/_preview.erb
211
+ - app/views/examples/components/popover/code/_usage.erb
154
212
  - app/views/examples/components/progress.html.erb
213
+ - app/views/examples/components/progress/_usage.erb
214
+ - app/views/examples/components/progress/code/_preview.erb
215
+ - app/views/examples/components/progress/code/_usage.erb
155
216
  - app/views/examples/components/separator.html.erb
217
+ - app/views/examples/components/separator/_usage.html.erb
218
+ - app/views/examples/components/separator/code/_fancy.erb
219
+ - app/views/examples/components/separator/code/_preview.erb
220
+ - app/views/examples/components/separator/code/_usage.erb
156
221
  - app/views/examples/components/sheet.html.erb
222
+ - app/views/examples/components/sheet/_usage.html.erb
223
+ - app/views/examples/components/sheet/code/_mobile_menu.erb
224
+ - app/views/examples/components/sheet/code/_preview.erb
225
+ - app/views/examples/components/sheet/code/_usage.erb
157
226
  - app/views/examples/components/skeleton.html.erb
227
+ - app/views/examples/components/skeleton/_usage.html.erb
228
+ - app/views/examples/components/skeleton/code/_preview.erb
229
+ - app/views/examples/components/skeleton/code/_usage.erb
158
230
  - app/views/examples/components/slider.html.erb
231
+ - app/views/examples/components/slider/_usage.html.erb
232
+ - app/views/examples/components/slider/code/_preview.erb
233
+ - app/views/examples/components/slider/code/_usage.erb
159
234
  - app/views/examples/components/textarea.html.erb
235
+ - app/views/examples/components/textarea/_usage.html.erb
236
+ - app/views/examples/components/textarea/code/_preview.erb
237
+ - app/views/examples/components/textarea/code/_usage.erb
160
238
  - app/views/examples/components/toast.html.erb
239
+ - app/views/examples/components/toast/_usage.html.erb
240
+ - app/views/examples/components/toast/code/_preview.erb
241
+ - app/views/examples/components/toast/code/_usage.erb
161
242
  - app/views/examples/components/toggle.html.erb
243
+ - app/views/examples/components/toggle/_usage.html.erb
244
+ - app/views/examples/components/toggle/code/_preview.erb
245
+ - app/views/examples/components/toggle/code/_usage.erb
162
246
  - app/views/examples/components/tooltip.html.erb
247
+ - app/views/examples/components/tooltip/_usage.html.erb
248
+ - app/views/examples/components/tooltip/code/_preview.erb
249
+ - app/views/examples/components/tooltip/code/_usage.erb
163
250
  - app/views/layouts/application.html.erb
164
251
  - app/views/layouts/component.html.erb
165
252
  - app/views/layouts/documentation.html.erb
@@ -193,12 +280,13 @@ files:
193
280
  - config/puma.rb
194
281
  - config/render.yml
195
282
  - config/routes.rb
283
+ - config/shadcn.tailwind.js
196
284
  - config/storage.yml
197
285
  - config/tailwind.config.js
198
286
  - db/seeds.rb
199
287
  - lib/assets/.keep
200
288
  - lib/components.json
201
- - lib/generators/shadcn_ui_generator.rb
289
+ - lib/generators/shadcn-ui_generator.rb
202
290
  - lib/shadcn-ui/shadcn-ui.rb
203
291
  - lib/shadcn-ui/version.rb
204
292
  - lib/tasks/.keep
@@ -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