shadcn-ui 0.0.3 → 0.0.5

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 (145) hide show
  1. checksums.yaml +4 -4
  2. data/Procfile.dev +0 -1
  3. data/README.md +13 -314
  4. data/app/assets/stylesheets/shadcn.css +8 -0
  5. data/app/controllers/components_controller.rb +1 -0
  6. data/app/controllers/documentation_controller.rb +0 -1
  7. data/app/controllers/users_controller.rb +19 -0
  8. data/app/form_builders/shadcn_form_builder.rb +43 -0
  9. data/app/helpers/components/alert_dialog_helper.rb +19 -3
  10. data/app/helpers/components/forms_helper.rb +13 -0
  11. data/app/helpers/components/input_helper.rb +15 -5
  12. data/app/helpers/components/slider_helper.rb +1 -1
  13. data/app/helpers/components/toast_helper.rb +4 -1
  14. data/app/helpers/components_helper.rb +4 -0
  15. data/app/helpers/examples_helper.rb +6 -1
  16. data/app/javascript/controllers/highlight_controller.js +0 -1
  17. data/app/javascript/controllers/ui/dialog_controller.js +1 -1
  18. data/app/javascript/controllers/ui/dropdown_controller.js +1 -1
  19. data/app/javascript/controllers/ui/hover-card_controller.js +2 -3
  20. data/app/javascript/controllers/ui/popover_controller.js +7 -3
  21. data/app/javascript/controllers/ui/sheet_controller.js +1 -1
  22. data/app/javascript/controllers/ui/toast_controller.js +50 -23
  23. data/app/javascript/controllers/ui/transition_controller.js +1 -1
  24. data/app/models/user.rb +9 -0
  25. data/app/views/application/index.html.erb +625 -17
  26. data/app/views/components/ui/_alert_dialog.html.erb +10 -6
  27. data/app/views/components/ui/_card.html.erb +7 -1
  28. data/app/views/components/ui/_dialog.html.erb +0 -26
  29. data/app/views/components/ui/_filter.html.erb +3 -2
  30. data/app/views/components/ui/_input.html.erb +3 -0
  31. data/app/views/components/ui/_label.html.erb +1 -1
  32. data/app/views/components/ui/_toast.html.erb +8 -4
  33. data/app/views/documentation/generators.html.md +20 -0
  34. data/app/views/documentation/helpers.html.md +54 -0
  35. data/app/views/documentation/installation.html.md +1 -1
  36. data/app/views/documentation/javascript.html.md +8 -0
  37. data/app/views/examples/components/accordion.html.erb +5 -7
  38. data/app/views/examples/components/alert-dialog/_usage.html.erb +24 -0
  39. data/app/views/examples/components/alert-dialog/code/_preview.erb +22 -0
  40. data/app/views/examples/components/alert-dialog/code/_usage.erb +13 -0
  41. data/app/views/examples/components/alert-dialog.html.erb +14 -11
  42. data/app/views/examples/components/alert.html.erb +9 -10
  43. data/app/views/examples/components/badge.html.erb +3 -15
  44. data/app/views/examples/components/button.html.erb +3 -25
  45. data/app/views/examples/components/card/code/{preview.erb → _preview.erb} +1 -1
  46. data/app/views/examples/components/card/code/_usage.erb +3 -0
  47. data/app/views/examples/components/card.html.erb +5 -9
  48. data/app/views/examples/components/checkbox/code/_preview.erb +2 -0
  49. data/app/views/examples/components/checkbox.html.erb +3 -3
  50. data/app/views/examples/components/collapsible.html.erb +3 -11
  51. data/app/views/examples/components/dialog.html.erb +5 -14
  52. data/app/views/examples/components/dropdown-menu/_usage.html.erb +19 -0
  53. data/app/views/examples/components/dropdown-menu/code/_preview.erb +19 -0
  54. data/app/views/examples/components/dropdown-menu/code/_usage.erb +13 -0
  55. data/app/views/examples/components/dropdown-menu.html.erb +29 -15
  56. data/app/views/examples/components/filter/_usage.html.erb +14 -0
  57. data/app/views/examples/components/filter/code/_icon.html.erb +7 -0
  58. data/app/views/examples/components/filter/code/_preview.erb +3 -0
  59. data/app/views/examples/components/filter/code/_usage.erb +5 -0
  60. data/app/views/examples/components/filter.html.erb +27 -7
  61. data/app/views/examples/components/forms/_usage.html.erb +28 -0
  62. data/app/views/examples/components/forms/code/_preview.erb +13 -0
  63. data/app/views/examples/components/forms/code/_usage.erb +6 -0
  64. data/app/views/examples/components/forms.html.erb +23 -0
  65. data/app/views/examples/components/hover-card/_usage.html.erb +15 -0
  66. data/app/views/examples/components/hover-card/code/_preview.erb +13 -0
  67. data/app/views/examples/components/hover-card/code/_usage.erb +6 -0
  68. data/app/views/examples/components/hover-card.html.erb +12 -14
  69. data/app/views/examples/components/input/_usage.html.erb +10 -0
  70. data/app/views/examples/components/input/code/_borderless.erb +3 -0
  71. data/app/views/examples/components/input/code/_preview.erb +1 -0
  72. data/app/views/examples/components/input/code/_usage.erb +1 -0
  73. data/app/views/examples/components/input.html.erb +17 -3
  74. data/app/views/examples/components/label/_usage.html.erb +9 -0
  75. data/app/views/examples/components/label/code/_preview.erb +5 -0
  76. data/app/views/examples/components/label/code/_usage.erb +1 -0
  77. data/app/views/examples/components/label.html.erb +14 -5
  78. data/app/views/examples/components/popover/_usage.html.erb +12 -0
  79. data/app/views/examples/components/popover/code/_form.erb +23 -0
  80. data/app/views/examples/components/popover/code/_preview.erb +13 -0
  81. data/app/views/examples/components/popover/code/_usage.erb +7 -0
  82. data/app/views/examples/components/popover.html.erb +28 -24
  83. data/app/views/examples/components/progress/_usage.erb +9 -0
  84. data/app/views/examples/components/progress/code/_preview.erb +1 -0
  85. data/app/views/examples/components/progress/code/_usage.erb +1 -0
  86. data/app/views/examples/components/progress.html.erb +12 -2
  87. data/app/views/examples/components/separator/_usage.html.erb +10 -0
  88. data/app/views/examples/components/separator/code/_fancy.erb +21 -0
  89. data/app/views/examples/components/separator/code/_preview.erb +1 -0
  90. data/app/views/examples/components/separator/code/_usage.erb +1 -0
  91. data/app/views/examples/components/separator.html.erb +26 -19
  92. data/app/views/examples/components/sheet/_usage.html.erb +38 -0
  93. data/app/views/examples/components/sheet/code/_mobile_menu.erb +17 -0
  94. data/app/views/examples/components/sheet/code/_preview.erb +22 -0
  95. data/app/views/examples/components/sheet/code/_usage.erb +7 -0
  96. data/app/views/examples/components/sheet.html.erb +17 -10
  97. data/app/views/examples/components/skeleton/_usage.html.erb +9 -0
  98. data/app/views/examples/components/skeleton/code/_preview.erb +1 -0
  99. data/app/views/examples/components/skeleton/code/_usage.erb +1 -0
  100. data/app/views/examples/components/skeleton.html.erb +16 -2
  101. data/app/views/examples/components/slider/_usage.html.erb +11 -0
  102. data/app/views/examples/components/slider/code/_preview.erb +3 -0
  103. data/app/views/examples/components/slider/code/_usage.erb +1 -0
  104. data/app/views/examples/components/slider.html.erb +16 -2
  105. data/app/views/examples/components/textarea/_usage.html.erb +9 -0
  106. data/app/views/examples/components/textarea/code/_preview.erb +1 -0
  107. data/app/views/examples/components/textarea/code/_usage.erb +1 -0
  108. data/app/views/examples/components/textarea.html.erb +16 -2
  109. data/app/views/examples/components/toast/_usage.html.erb +11 -0
  110. data/app/views/examples/components/toast/code/_destructive.erb +6 -0
  111. data/app/views/examples/components/toast/code/_preview.erb +4 -0
  112. data/app/views/examples/components/toast/code/_usage.erb +2 -0
  113. data/app/views/examples/components/toast.html.erb +28 -5
  114. data/app/views/examples/components/toggle/_usage.html.erb +10 -0
  115. data/app/views/examples/components/toggle/code/_preview.erb +1 -0
  116. data/app/views/examples/components/toggle/code/_usage.erb +1 -0
  117. data/app/views/examples/components/toggle.html.erb +16 -2
  118. data/app/views/examples/components/tooltip/_usage.html.erb +11 -0
  119. data/app/views/examples/components/tooltip/code/_preview.erb +12 -0
  120. data/app/views/examples/components/tooltip/code/_usage.erb +7 -0
  121. data/app/views/examples/components/tooltip.html.erb +16 -13
  122. data/app/views/layouts/shared/_components.html.erb +35 -33
  123. data/config/environments/production.rb +4 -4
  124. data/config/routes.rb +3 -0
  125. data/lib/components.json +13 -1
  126. data/lib/generators/shadcn-ui_generator.rb +1 -1
  127. data/lib/shadcn-ui/version.rb +1 -1
  128. metadata +84 -20
  129. data/app/views/examples/components/card/code/usage.erb +0 -3
  130. data/app/views/examples/components/checkbox/code/preview.erb +0 -2
  131. /data/app/views/examples/components/accordion/code/{preview.erb → _preview.erb} +0 -0
  132. /data/app/views/examples/components/accordion/code/{usage.erb → _usage.erb} +0 -0
  133. /data/app/views/examples/components/alert/code/{preview.erb → _preview.erb} +0 -0
  134. /data/app/views/examples/components/alert/code/{usage.erb → _usage.erb} +0 -0
  135. /data/app/views/examples/components/badge/code/{preview.erb → _preview.erb} +0 -0
  136. /data/app/views/examples/components/badge/code/{usage.erb → _usage.erb} +0 -0
  137. /data/app/views/examples/components/button/code/{preview.erb → _preview.erb} +0 -0
  138. /data/app/views/examples/components/button/code/{usage.erb → _usage.erb} +0 -0
  139. /data/app/views/examples/components/checkbox/code/{usage.erb → _usage.erb} +0 -0
  140. /data/app/views/examples/components/collapsible/code/{preview.erb → _preview.erb} +0 -0
  141. /data/app/views/examples/components/collapsible/code/{usage.erb → _usage.erb} +0 -0
  142. /data/app/views/examples/components/dialog/code/{form.erb → _form.erb} +0 -0
  143. /data/app/views/examples/components/dialog/code/{notifications.erb → _notifications.erb} +0 -0
  144. /data/app/views/examples/components/dialog/code/{preview.erb → _preview.erb} +0 -0
  145. /data/app/views/examples/components/dialog/code/{usage.erb → _usage.erb} +0 -0
@@ -4,40 +4,67 @@ export default class UIToastController extends Controller {
4
4
  static targets = ["item"];
5
5
 
6
6
  connect() {
7
- setTimeout(() => {
8
- this.openAll();
9
- }, 1000);
7
+ if (this.element.role == "region" && this.element.dataset.auto != "false") {
8
+ setTimeout(() => {
9
+ this.open();
10
+ }, 1000);
11
+ this.close();
12
+ }
13
+ }
14
+
15
+ open() {
16
+ const toastElement = this.element.querySelector("[data-ui--toast-target='item']");
17
+ this.element.dataset.state = "open";
18
+ this.element.classList.remove("hidden");
19
+ this.showToast(toastElement);
20
+ }
21
+
22
+ close() {
23
+ const toastElement = this.element.querySelector("[data-ui--toast-target='item']");
24
+ this.element.dataset.state = "closed";
25
+ this.element.classList.add("hidden");
26
+ this.closeToast(toastElement);
27
+ }
28
+
29
+ showToast(el) {
30
+ if (el) {
31
+ el.dataset.state = "open";
32
+ el.classList.remove("hidden");
33
+ }
34
+ }
10
35
 
11
- this.closeAll();
36
+ closeToast(el) {
37
+ if (el) {
38
+ setTimeout(() => {
39
+ el.dataset.state = "closed";
40
+ el.classList.add("hidden");
41
+ }, el.dataset.duration || 3000);
42
+ }
43
+ }
44
+
45
+ trigger() {
46
+ const idTarget = this.element.dataset.target;
47
+ const toastContainer = document.querySelector(`${idTarget}`);
48
+ toastContainer.dataset.state = "open";
49
+ toastContainer.classList.remove("hidden");
50
+ const toastElement = toastContainer.querySelector("[data-ui--toast-target='item']");
51
+ this.showToast(toastElement);
52
+ this.closeToast(toastElement);
12
53
  }
13
54
 
14
55
  openAll() {
15
- const toastElements = document.querySelectorAll("[data-ui--toast-target='item']");
56
+ const toastElements = document.querySelectorAll(
57
+ "[data-ui--toast-target='item']:not([data-visible='false'])",
58
+ );
16
59
  toastElements.forEach((toastElement) => {
17
- toastElement.dataset.state = "open";
18
- toastElement.classList.remove("hidden");
60
+ this.showToast(toastElement);
19
61
  });
20
62
  }
21
63
 
22
64
  closeAll() {
23
65
  const toastElements = document.querySelectorAll("[data-ui--toast-target='item']");
24
66
  toastElements.forEach((toastElement) => {
25
- setTimeout(() => {
26
- toastElement.dataset.state = "closed";
27
- toastElement.classList.add("hidden");
28
- }, toastElement.dataset.duration);
67
+ this.closeToast(toastElement);
29
68
  });
30
69
  }
31
-
32
- test() {
33
- const $this = this;
34
- this.closeAll();
35
- setTimeout(() => {
36
- $this.openAll();
37
- setTimeout(() => {
38
- $this.closeAll();
39
- }, 3000);
40
- }, 1000);
41
- }
42
- close() {}
43
70
  }
@@ -1,5 +1,5 @@
1
1
  import { Controller } from "@hotwired/stimulus";
2
- import { useTransition } from "stimulus-use";
2
+ import { useTransition } from "https://ga.jspm.io/npm:stimulus-use@0.51.3/dist/index.js";
3
3
 
4
4
  export default class extends Controller {
5
5
  connect() {
@@ -0,0 +1,9 @@
1
+ class User
2
+ include ActiveModel::API
3
+ include ActiveModel::SecurePassword
4
+
5
+ attr_accessor :email, :password_digest
6
+
7
+ has_secure_password
8
+ validates :email, presence: true
9
+ end