neo_components 0.1.0

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 (223) hide show
  1. checksums.yaml +7 -0
  2. data/app/assets/icons/academy.svg +3 -0
  3. data/app/assets/icons/adjustments-horizontal.svg +3 -0
  4. data/app/assets/icons/adjustments-vertical.svg +3 -0
  5. data/app/assets/icons/arrow-down-tray.svg +3 -0
  6. data/app/assets/icons/arrow-left.svg +3 -0
  7. data/app/assets/icons/arrow-long-down.svg +3 -0
  8. data/app/assets/icons/arrow-long-right.svg +3 -0
  9. data/app/assets/icons/arrow-long-up.svg +3 -0
  10. data/app/assets/icons/arrow-right.svg +3 -0
  11. data/app/assets/icons/arrow-up-tray.svg +3 -0
  12. data/app/assets/icons/arrow-uturn-left.svg +3 -0
  13. data/app/assets/icons/arrow-uturn-right.svg +3 -0
  14. data/app/assets/icons/assign-user.svg +13 -0
  15. data/app/assets/icons/at-symbol.svg +3 -0
  16. data/app/assets/icons/bars-4.svg +3 -0
  17. data/app/assets/icons/bell.svg +3 -0
  18. data/app/assets/icons/book.svg +3 -0
  19. data/app/assets/icons/bookmark.svg +3 -0
  20. data/app/assets/icons/building-office-2.svg +3 -0
  21. data/app/assets/icons/calendar.svg +3 -0
  22. data/app/assets/icons/celebration.svg +15 -0
  23. data/app/assets/icons/check-badge-solid.svg +3 -0
  24. data/app/assets/icons/check-circle-solid.svg +3 -0
  25. data/app/assets/icons/check-circle.svg +3 -0
  26. data/app/assets/icons/check-list.svg +12 -0
  27. data/app/assets/icons/check.svg +3 -0
  28. data/app/assets/icons/chevron-double-right.svg +3 -0
  29. data/app/assets/icons/chevron-down.svg +3 -0
  30. data/app/assets/icons/chevron-left.svg +3 -0
  31. data/app/assets/icons/chevron-right.svg +3 -0
  32. data/app/assets/icons/chevron-up.svg +3 -0
  33. data/app/assets/icons/circle-stack.svg +3 -0
  34. data/app/assets/icons/clipboard-document-check-solid.svg +4 -0
  35. data/app/assets/icons/clipboard-document-check.svg +3 -0
  36. data/app/assets/icons/clock.svg +3 -0
  37. data/app/assets/icons/complete.svg +3 -0
  38. data/app/assets/icons/course.svg +3 -0
  39. data/app/assets/icons/device-phone-mobile.svg +3 -0
  40. data/app/assets/icons/document-arrow-up.svg +4 -0
  41. data/app/assets/icons/document-text.svg +4 -0
  42. data/app/assets/icons/ellipsis-vertical.svg +3 -0
  43. data/app/assets/icons/exclaimation-circle-solid.svg +3 -0
  44. data/app/assets/icons/eye.svg +4 -0
  45. data/app/assets/icons/flag.svg +3 -0
  46. data/app/assets/icons/funnel.svg +3 -0
  47. data/app/assets/icons/green-circle.svg +3 -0
  48. data/app/assets/icons/green-tick.svg +3 -0
  49. data/app/assets/icons/grid.svg +6 -0
  50. data/app/assets/icons/home.svg +3 -0
  51. data/app/assets/icons/i-vector.svg +3 -0
  52. data/app/assets/icons/lessons.svg +11 -0
  53. data/app/assets/icons/magnifying-glass.svg +3 -0
  54. data/app/assets/icons/minus.svg +3 -0
  55. data/app/assets/icons/numbered-list.svg +3 -0
  56. data/app/assets/icons/pencil.svg +3 -0
  57. data/app/assets/icons/play.svg +3 -0
  58. data/app/assets/icons/plus.svg +3 -0
  59. data/app/assets/icons/power.svg +3 -0
  60. data/app/assets/icons/question-mark-circle.svg +3 -0
  61. data/app/assets/icons/quiz-score.svg +15 -0
  62. data/app/assets/icons/re-invite.svg +3 -0
  63. data/app/assets/icons/red-circle.svg +3 -0
  64. data/app/assets/icons/share.svg +3 -0
  65. data/app/assets/icons/smiley-five.svg +5 -0
  66. data/app/assets/icons/smiley-four.svg +5 -0
  67. data/app/assets/icons/smiley-one.svg +5 -0
  68. data/app/assets/icons/smiley-three.svg +5 -0
  69. data/app/assets/icons/smiley-two.svg +5 -0
  70. data/app/assets/icons/sparkle.svg +3 -0
  71. data/app/assets/icons/star-transparent.svg +3 -0
  72. data/app/assets/icons/stop.svg +4 -0
  73. data/app/assets/icons/support-placeholder.svg +4 -0
  74. data/app/assets/icons/tag.svg +4 -0
  75. data/app/assets/icons/timer.svg +5 -0
  76. data/app/assets/icons/transcript.svg +31 -0
  77. data/app/assets/icons/trash.svg +3 -0
  78. data/app/assets/icons/upload-info.svg +7 -0
  79. data/app/assets/icons/user-circle.svg +3 -0
  80. data/app/assets/icons/user-group.svg +3 -0
  81. data/app/assets/icons/user.svg +3 -0
  82. data/app/assets/icons/users.svg +3 -0
  83. data/app/assets/icons/winner.svg +35 -0
  84. data/app/assets/icons/x-circle-solid.svg +3 -0
  85. data/app/assets/icons/x-circle.svg +3 -0
  86. data/app/assets/icons/x-mark.svg +3 -0
  87. data/app/assets/stylesheets/breadcrumbs.tailwind.css +45 -0
  88. data/app/assets/stylesheets/buttons.tailwind.css +98 -0
  89. data/app/assets/stylesheets/course_progress.css +75 -0
  90. data/app/assets/stylesheets/custom.css +67 -0
  91. data/app/assets/stylesheets/date_picker.tailwind.css +7 -0
  92. data/app/assets/stylesheets/directives.tailwind.css +3 -0
  93. data/app/assets/stylesheets/dropdown.tailwind.css +11 -0
  94. data/app/assets/stylesheets/file_selector.tailwind.css +47 -0
  95. data/app/assets/stylesheets/icons.css.erb +244 -0
  96. data/app/assets/stylesheets/inputs.tailwind.css +53 -0
  97. data/app/assets/stylesheets/menu_component.tailwind.css +39 -0
  98. data/app/assets/stylesheets/mobile_inputs.tailwind.css +11 -0
  99. data/app/assets/stylesheets/modalbox.tailwind.css +35 -0
  100. data/app/assets/stylesheets/profile_icon.tailwind.css +15 -0
  101. data/app/assets/stylesheets/textarea.tailwind.css +43 -0
  102. data/app/assets/stylesheets/tooltip.css +88 -0
  103. data/app/assets/stylesheets/typography.tailwind.css +70 -0
  104. data/app/helpers/ui_helper.rb +31 -0
  105. data/app/helpers/view_component/accordion_component.rb +12 -0
  106. data/app/helpers/view_component/breadcrumbs_component.rb +30 -0
  107. data/app/helpers/view_component/button_component.rb +180 -0
  108. data/app/helpers/view_component/chip_component.rb +54 -0
  109. data/app/helpers/view_component/component_helper.rb +21 -0
  110. data/app/helpers/view_component/course_card_component.rb +9 -0
  111. data/app/helpers/view_component/course_carousal_component.rb +14 -0
  112. data/app/helpers/view_component/course_select_component.rb +32 -0
  113. data/app/helpers/view_component/doc_section_component.rb +10 -0
  114. data/app/helpers/view_component/icon_component.rb +24 -0
  115. data/app/helpers/view_component/input_component/date_picker_component.rb +127 -0
  116. data/app/helpers/view_component/input_component/dropdown_component.rb +99 -0
  117. data/app/helpers/view_component/input_component/file_selector_component.rb +123 -0
  118. data/app/helpers/view_component/input_component/input_checkbox_component.rb +54 -0
  119. data/app/helpers/view_component/input_component/input_mobile_component.rb +68 -0
  120. data/app/helpers/view_component/input_component/input_radio_component.rb +54 -0
  121. data/app/helpers/view_component/input_component/input_text_component.rb +137 -0
  122. data/app/helpers/view_component/input_component/textarea_component.rb +101 -0
  123. data/app/helpers/view_component/input_component.rb +290 -0
  124. data/app/helpers/view_component/input_textarea_component.rb +28 -0
  125. data/app/helpers/view_component/long_course_card_component.rb +10 -0
  126. data/app/helpers/view_component/member_list_component.rb +17 -0
  127. data/app/helpers/view_component/menu_component.rb +31 -0
  128. data/app/helpers/view_component/menu_component_helper.rb +22 -0
  129. data/app/helpers/view_component/menu_item.rb +12 -0
  130. data/app/helpers/view_component/modal_box_component.rb +29 -0
  131. data/app/helpers/view_component/modal_component.rb +12 -0
  132. data/app/helpers/view_component/notification_bar_component.rb +22 -0
  133. data/app/helpers/view_component/paginator_component.rb +9 -0
  134. data/app/helpers/view_component/profile_icon_component.rb +46 -0
  135. data/app/helpers/view_component/progress_component.rb +12 -0
  136. data/app/helpers/view_component/table_component.rb +22 -0
  137. data/app/helpers/view_component/typography_component.rb +83 -0
  138. data/app/javascript/neo_components/controllers/collapsible_controller.js +37 -0
  139. data/app/javascript/neo_components/controllers/date_picker_controller.js +17 -0
  140. data/app/javascript/neo_components/controllers/file_selector_controller.js +145 -0
  141. data/app/javascript/neo_components/controllers/input_mobile_controller.js +7 -0
  142. data/app/javascript/neo_components/controllers/menu_component_controller.js +26 -0
  143. data/app/javascript/neo_components/controllers/modal_loader_controller.js +13 -0
  144. data/app/javascript/neo_components/controllers/modals_controller.js +26 -0
  145. data/app/javascript/neo_components/controllers/notification_bar_controller.js +9 -0
  146. data/app/javascript/neo_components/controllers/pagination_controller.js +11 -0
  147. data/app/javascript/neo_components/controllers/tab_change_controller.js +23 -0
  148. data/app/javascript/neo_components/controllers/tabs_controller.js +29 -0
  149. data/app/javascript/neo_components/controllers/text_clamp_controller.js +29 -0
  150. data/app/views/shared/components/_progress_bar_short.html.erb +8 -0
  151. data/app/views/shared/components/_tooltip.html.erb +7 -0
  152. data/app/views/view_components/accordion_component/_accordion.html.erb +22 -0
  153. data/app/views/view_components/breadcrumbs_component/_breadcrumbs.html.erb +38 -0
  154. data/app/views/view_components/button_component/_button.html.erb +13 -0
  155. data/app/views/view_components/buttons/_danger.html.erb +30 -0
  156. data/app/views/view_components/buttons/_primary.html.erb +31 -0
  157. data/app/views/view_components/buttons/_secondary.html.erb +29 -0
  158. data/app/views/view_components/chip_component/_chip_component.html.erb +9 -0
  159. data/app/views/view_components/course_carousal/_course_card_component.html.erb +65 -0
  160. data/app/views/view_components/course_carousal/_course_carousal_body_component.html.erb +25 -0
  161. data/app/views/view_components/course_carousal/_course_carousal_component.html.erb +8 -0
  162. data/app/views/view_components/course_carousal/_long_course_card_component.html.erb +70 -0
  163. data/app/views/view_components/course_select/_course_select_component.html.erb +19 -0
  164. data/app/views/view_components/course_select/_list_component.html.erb +14 -0
  165. data/app/views/view_components/course_select/_list_item_component.html.erb +86 -0
  166. data/app/views/view_components/course_select/_load_more.html.erb +17 -0
  167. data/app/views/view_components/course_select/_search_component.html.erb +48 -0
  168. data/app/views/view_components/course_select/_sidebar_component.html.erb +41 -0
  169. data/app/views/view_components/doc_section/_doc_section_component.html.erb +6 -0
  170. data/app/views/view_components/inputs/_checkbox_field.html.erb +19 -0
  171. data/app/views/view_components/inputs/_date_select_component.html.erb +37 -0
  172. data/app/views/view_components/inputs/_dropdown_field.html.erb +22 -0
  173. data/app/views/view_components/inputs/_file_selector.html.erb +16 -0
  174. data/app/views/view_components/inputs/_input_checkbox_component.html.erb +7 -0
  175. data/app/views/view_components/inputs/_input_mobile_component.html.erb +16 -0
  176. data/app/views/view_components/inputs/_input_radio_component.html.erb +7 -0
  177. data/app/views/view_components/inputs/_input_text_component.html.erb +16 -0
  178. data/app/views/view_components/inputs/_mobile_field.html.erb +31 -0
  179. data/app/views/view_components/inputs/_radio_field.html.erb +25 -0
  180. data/app/views/view_components/inputs/_text_field.html.erb +52 -0
  181. data/app/views/view_components/inputs/_textarea.html.erb +26 -0
  182. data/app/views/view_components/inputs/date_picker_component/_date_picker.html.erb +16 -0
  183. data/app/views/view_components/inputs/date_picker_component/_input_box.html.erb +34 -0
  184. data/app/views/view_components/inputs/dropdown_component/_dropdown.html.erb +16 -0
  185. data/app/views/view_components/inputs/dropdown_component/_select_box.html.erb +10 -0
  186. data/app/views/view_components/inputs/file_selector_component/_file_selector_box.html.erb +76 -0
  187. data/app/views/view_components/inputs/input_checkbox/_checkbox.html.erb +20 -0
  188. data/app/views/view_components/inputs/input_mobile/_code.html.erb +13 -0
  189. data/app/views/view_components/inputs/input_mobile/_mobile_box.html.erb +4 -0
  190. data/app/views/view_components/inputs/input_mobile/_number.html.erb +13 -0
  191. data/app/views/view_components/inputs/input_radio/_radio_button.html.erb +14 -0
  192. data/app/views/view_components/inputs/input_text/_text_box.html.erb +33 -0
  193. data/app/views/view_components/inputs/textarea_component/_text_area_box.html.erb +16 -0
  194. data/app/views/view_components/inputs/textarea_component/_textarea.html.erb +16 -0
  195. data/app/views/view_components/member_list/_member_list.html.erb +4 -0
  196. data/app/views/view_components/member_list/_member_search.html.erb +15 -0
  197. data/app/views/view_components/member_list/_members.html.erb +65 -0
  198. data/app/views/view_components/menu_component/_menu_component.html.erb +16 -0
  199. data/app/views/view_components/menu_component/_menu_item_button.html.erb +17 -0
  200. data/app/views/view_components/menu_component/_menu_item_link.html.erb +5 -0
  201. data/app/views/view_components/menu_component_old/_menu_component.html.erb +17 -0
  202. data/app/views/view_components/menu_component_old/_menu_item_button.html.erb +7 -0
  203. data/app/views/view_components/menu_component_old/_menu_item_link.html.erb +5 -0
  204. data/app/views/view_components/modal_component/_modal_box_component.html.erb +28 -0
  205. data/app/views/view_components/modals/_modal_component.html.erb +25 -0
  206. data/app/views/view_components/notification_bar/_notification_bar.html.erb +17 -0
  207. data/app/views/view_components/paginator/_next_page.html.erb +7 -0
  208. data/app/views/view_components/paginator/_paginator_component.html.erb +6 -0
  209. data/app/views/view_components/paginator/_prev_page.html.erb +7 -0
  210. data/app/views/view_components/profile_icon_component/_profile_icon.html.erb +3 -0
  211. data/app/views/view_components/progress_component/_progressbar.html.erb +5 -0
  212. data/app/views/view_components/typography/_h1_component.html.erb +1 -0
  213. data/app/views/view_components/typography/_h2_component.html.erb +1 -0
  214. data/app/views/view_components/typography/_h3_component.html.erb +1 -0
  215. data/app/views/view_components/typography/_heading_component.html.erb +3 -0
  216. data/app/views/view_components/typography/_link_component.html.erb +1 -0
  217. data/app/views/view_components/typography/_linked_text_component.html.erb +3 -0
  218. data/app/views/view_components/typography/_text_component.html.erb +1 -0
  219. data/config/importmap.rb +5 -0
  220. data/lib/neo_components/engine.rb +38 -0
  221. data/lib/neo_components/version.rb +5 -0
  222. data/lib/neo_components.rb +4 -0
  223. metadata +327 -0
@@ -0,0 +1,244 @@
1
+ .icon-academy {
2
+ -webkit-mask: url("<%= asset_url('academy.svg') %>") no-repeat center;
3
+ mask: url("<%= asset_url('academy.svg') %>") no-repeat center;
4
+ }
5
+ .icon-adjustments-vertical {
6
+ -webkit-mask: url("<%= asset_url('adjustments-vertical.svg') %>") no-repeat center;
7
+ mask: url("<%= asset_url('adjustments-vertical.svg') %>") no-repeat center;
8
+ }
9
+ .icon-arrow-down,.icon-arrow-long-down {
10
+ -webkit-mask: url("<%= asset_url('arrow-long-down.svg') %>") no-repeat center;
11
+ mask: url("<%= asset_url('arrow-long-down.svg') %>") no-repeat center;
12
+ }
13
+ .icon-arrow-long-right{
14
+ -webkit-mask: url("<%= asset_url('arrow-long-right.svg') %>") no-repeat center;
15
+ mask: url("<%= asset_url('arrow-long-right.svg') %>") no-repeat center;
16
+ }
17
+ .icon-arrow-right{
18
+ -webkit-mask: url("<%= asset_url('arrow-right.svg') %>") no-repeat center;
19
+ mask: url("<%= asset_url('arrow-right.svg') %>") no-repeat center;
20
+ }
21
+ .icon-arrow-left {
22
+ -webkit-mask: url("<%= asset_url('arrow-left.svg') %>") no-repeat center;
23
+ mask: url("<%= asset_url('arrow-left.svg') %>") no-repeat center;
24
+ }
25
+ .icon-arrow-up,.icon-arrow-long-up {
26
+ -webkit-mask: url("<%= asset_url('arrow-long-up.svg') %>") no-repeat center;
27
+ mask: url("<%= asset_url('arrow-long-up.svg') %>") no-repeat center;
28
+ }
29
+ .icon-assign-user {
30
+ -webkit-mask: url("<%= asset_url('assign-user.svg') %>") no-repeat center;
31
+ mask: url("<%= asset_url('assign-user.svg') %>") no-repeat center;
32
+ }
33
+ .icon-at-sign,.icon-at-symbol {
34
+ -webkit-mask: url("<%= asset_url('at-symbol.svg') %>") no-repeat center;
35
+ mask: url("<%= asset_url('at-symbol.svg') %>") no-repeat center;
36
+ }
37
+ .icon-calendar {
38
+ -webkit-mask: url("<%= asset_url('calendar.svg') %>") no-repeat center;
39
+ mask: url("<%= asset_url('calendar.svg') %>") no-repeat center;
40
+ }
41
+ .icon-check,.icon-complete{
42
+ -webkit-mask: url("<%= asset_url('check.svg') %>") no-repeat center;
43
+ mask: url("<%= asset_url('check.svg') %>") no-repeat center;
44
+ }
45
+ .icon-check-list {
46
+ -webkit-mask: url("<%= asset_url('check-list.svg') %>") no-repeat center;
47
+ mask: url("<%= asset_url('check-list.svg') %>") no-repeat center;
48
+ }
49
+ .icon-celebration {
50
+ -webkit-mask: url("<%= asset_url('celebration.svg') %>") no-repeat center;
51
+ mask: url("<%= asset_url('celebration.svg') %>") no-repeat center;
52
+ }
53
+ .icon-clock {
54
+ -webkit-mask: url("<%= asset_url('clock.svg') %>") no-repeat center;
55
+ mask: url("<%= asset_url('clock.svg') %>") no-repeat center;
56
+ }
57
+ .icon-close,icon-x-circle {
58
+ -webkit-mask: url("<%= asset_url('x-circle.svg') %>") no-repeat center;
59
+ mask: url("<%= asset_url('x-circle.svg') %>") no-repeat center;
60
+ }
61
+ .icon-x-mark {
62
+ -webkit-mask: url("<%= asset_url('x-mark.svg') %>") no-repeat center;
63
+ mask: url("<%= asset_url('x-mark.svg') %>") no-repeat center;
64
+ }
65
+ .icon-course {
66
+ -webkit-mask: url("<%= asset_url('course.svg') %>") no-repeat center;
67
+ mask: url("<%= asset_url('course.svg') %>") no-repeat center;
68
+ }
69
+ .icon-down,.icon-chevron-down {
70
+ -webkit-mask: url("<%= asset_url('chevron-down.svg') %>") no-repeat center;
71
+ mask: url("<%= asset_url('chevron-down.svg') %>") no-repeat center;
72
+ }
73
+ .icon-download,.icon-arrow-down-tray {
74
+ -webkit-mask: url("<%= asset_url('arrow-down-tray.svg') %>") no-repeat center;
75
+ mask: url("<%= asset_url('arrow-down-tray.svg') %>") no-repeat center;
76
+ }
77
+ .icon-edit,.icon-pencil {
78
+ -webkit-mask: url("<%= asset_url('pencil.svg') %>") no-repeat center;
79
+ mask: url("<%= asset_url('pencil.svg') %>") no-repeat center;
80
+ }
81
+ .icon-eye {
82
+ -webkit-mask: url("<%= asset_url('eye.svg') %>") no-repeat center;
83
+ mask: url("<%= asset_url('eye.svg') %>") no-repeat center;
84
+ }
85
+ .icon-filter,.icon-funnel {
86
+ -webkit-mask: url("<%= asset_url('funnel.svg') %>") no-repeat center;
87
+ mask: url("<%= asset_url('funnel.svg') %>") no-repeat center;
88
+ }
89
+ .icon-green-circle {
90
+ -webkit-mask: url("<%= asset_url('green-circle.svg') %>") no-repeat center;
91
+ mask: url("<%= asset_url('green-circle.svg') %>") no-repeat center;
92
+ }
93
+ .icon-green-tick {
94
+ -webkit-mask: url("<%= asset_url('green-tick.svg') %>") no-repeat center;
95
+ mask: url("<%= asset_url('green-tick.svg') %>") no-repeat center;
96
+ }
97
+ .icon-stop {
98
+ -webkit-mask: url("<%= asset_url('stop.svg') %>") no-repeat center;
99
+ mask: url("<%= asset_url('stop.svg') %>") no-repeat center;
100
+ }
101
+ .icon-grid {
102
+ -webkit-mask: url("<%= asset_url('grid.svg') %>") no-repeat center;
103
+ mask: url("<%= asset_url('grid.svg') %>") no-repeat center;
104
+ }
105
+ .icon-home {
106
+ -webkit-mask: url("<%= asset_url('home.svg') %>") no-repeat center;
107
+ mask: url("<%= asset_url('home.svg') %>") no-repeat center;
108
+ }
109
+ .icon-incomplete,.icon-minus {
110
+ -webkit-mask: url("<%= asset_url('minus.svg') %>") no-repeat center;
111
+ mask: url("<%= asset_url('minus.svg') %>") no-repeat center;
112
+ }
113
+ .icon-invite-team,.icon-users {
114
+ -webkit-mask: url("<%= asset_url('users.svg') %>") no-repeat center;
115
+ mask: url("<%= asset_url('users.svg') %>") no-repeat center;
116
+ }
117
+ .icon-lessons {
118
+ -webkit-mask: url("<%= asset_url('lessons.svg') %>") no-repeat center;
119
+ mask: url("<%= asset_url('lessons.svg') %>") no-repeat center;
120
+ }
121
+ .icon-list,.icon-numbered-list {
122
+ -webkit-mask: url("<%= asset_url('numbered-list.svg') %>") no-repeat center;
123
+ mask: url("<%= asset_url('numbered-list.svg') %>") no-repeat center;
124
+ }
125
+ .icon-logout,.icon-power {
126
+ -webkit-mask: url("<%= asset_url('power.svg') %>") no-repeat center;
127
+ mask: url("<%= asset_url('power.svg') %>") no-repeat center;
128
+ }
129
+ .icon-menu,.icon-bars-4 {
130
+ -webkit-mask: url("<%= asset_url('bars-4.svg') %>") no-repeat center;
131
+ mask: url("<%= asset_url('bars-4.svg') %>") no-repeat center;
132
+ }
133
+ .icon-more-vertical,.icon-ellipsis-vertical {
134
+ -webkit-mask: url("<%= asset_url('ellipsis-verticall.svg') %>") no-repeat center;
135
+ mask: url("<%= asset_url('ellipsis-vertical.svg') %>") no-repeat center;
136
+ }
137
+ .icon-next,.icon-chevron-double-right {
138
+ -webkit-mask: url("<%= asset_url('chevron-double-right.svg') %>") no-repeat center;
139
+ mask: url("<%= asset_url('chevron-double-right.svg') %>") no-repeat center;
140
+ }
141
+ .icon-notification,.icon-bell {
142
+ -webkit-mask: url("<%= asset_url('bell.svg') %>") no-repeat center;
143
+ mask: url("<%= asset_url('bell.svg') %>") no-repeat center;
144
+ }
145
+ .icon-organize-info,.icon-building-office-2 {
146
+ -webkit-mask: url("<%= asset_url('building-office-2.svg') %>") no-repeat center;
147
+ mask: url("<%= asset_url('building-office-2.svg') %>") no-repeat center;
148
+ }
149
+ .icon-play {
150
+ -webkit-mask: url("<%= asset_url('play.svg') %>") no-repeat center;
151
+ mask: url("<%= asset_url('play.svg') %>") no-repeat center;
152
+ }
153
+ .icon-plus {
154
+ -webkit-mask: url("<%= asset_url('plus.svg') %>") no-repeat center;
155
+ mask: url("<%= asset_url('plus.svg') %>") no-repeat center;
156
+ }
157
+ .icon-quiz-score {
158
+ -webkit-mask: url("<%= asset_url('quiz-score.svg') %>") no-repeat center;
159
+ mask: url("<%= asset_url('quiz-score.svg') %>") no-repeat center;
160
+ }
161
+ .icon-re-invite {
162
+ -webkit-mask: url("<%= asset_url('re-invite.svg') %>") no-repeat center;
163
+ mask: url("<%= asset_url('re-invite.svg') %>") no-repeat center;
164
+ }
165
+ .icon-red-circle {
166
+ -webkit-mask: url("<%= asset_url('red-circle.svg') %>") no-repeat center;
167
+ mask: url("<%= asset_url('red-circle.svg') %>") no-repeat center;
168
+ }
169
+ .icon-retry,.icon-arrow-uturn-right {
170
+ -webkit-mask: url("<%= asset_url('arrow-uturn-right.svg') %>") no-repeat center;
171
+ mask: url("<%= asset_url('arrow-uturn-right.svg') %>") no-repeat center;
172
+ }
173
+ .icon-search,.icon-magnifying-glass {
174
+ -webkit-mask: url("<%= asset_url('magnifying-glass.svg') %>") no-repeat center;
175
+ mask: url("<%= asset_url('magnifying-glass.svg') %>") no-repeat center;
176
+ }
177
+ .icon-settings,.icon-adjustments-horizontal {
178
+ -webkit-mask: url("<%= asset_url('adjustments-horizontal.svg') %>") no-repeat center;
179
+ mask: url("<%= asset_url('adjustments-horizontal.svg') %>") no-repeat center;
180
+ }
181
+ .icon-simple-arrow-right,.icon-chevron-right {
182
+ -webkit-mask: url("<%= asset_url('chevron-right.svg') %>") no-repeat center;
183
+ mask: url("<%= asset_url('chevron-right.svg') %>") no-repeat center;
184
+ }
185
+ .icon-chevron-left {
186
+ -webkit-mask: url("<%= asset_url('chevron-left.svg') %>") no-repeat center;
187
+ mask: url("<%= asset_url('chevron-left.svg') %>") no-repeat center;
188
+ }
189
+ .icon-smartphone,.icon-device-phone-mobile,.icon-update-no{
190
+ -webkit-mask: url("<%= asset_url('device-phone-mobile.svg') %>") no-repeat center;
191
+ mask: url("<%= asset_url('device-phone-mobile.svg') %>") no-repeat center;
192
+ }
193
+ .icon-support,.icon-question-mark-circle {
194
+ -webkit-mask: url("<%= asset_url('question-mark-circle.svg') %>") no-repeat center;
195
+ mask: url("<%= asset_url('question-mark-circle.svg') %>") no-repeat center;
196
+ }
197
+ .icon-support-placeholder {
198
+ -webkit-mask: url("<%= asset_url('support-placeholder.svg') %>") no-repeat center;
199
+ mask: url("<%= asset_url('support-placeholder.svg') %>") no-repeat center;
200
+ }
201
+ .icon-tag {
202
+ -webkit-mask: url("<%= asset_url('tag.svg') %>") no-repeat center;
203
+ mask: url("<%= asset_url('tag.svg') %>") no-repeat center;
204
+ }
205
+ .icon-team,.icon-user-group {
206
+ -webkit-mask: url("<%= asset_url('user-group.svg') %>") no-repeat center;
207
+ mask: url("<%= asset_url('user-group.svg') %>") no-repeat center;
208
+ }
209
+ .icon-timer {
210
+ -webkit-mask: url("<%= asset_url('timer.svg') %>") no-repeat center;
211
+ mask: url("<%= asset_url('timer.svg') %>") no-repeat center;
212
+ }
213
+ .icon-trash {
214
+ -webkit-mask: url("<%= asset_url('trash.svg') %>") no-repeat center;
215
+ mask: url("<%= asset_url('trash.svg') %>") no-repeat center;
216
+ }
217
+ .icon-up,.icon-chevron-up {
218
+ -webkit-mask: url("<%= asset_url('chevron-up.svg') %>") no-repeat center;
219
+ mask: url("<%= asset_url('chevron-up.svg') %>") no-repeat center;
220
+ }
221
+ .icon-upload,.icon-arrow-up-tray {
222
+ -webkit-mask: url("<%= asset_url('arrow-up-tray.svg') %>") no-repeat center;
223
+ mask: url("<%= asset_url('arrow-up-tray.svg') %>") no-repeat center;
224
+ }
225
+ .icon-upload-info {
226
+ -webkit-mask: url("<%= asset_url('upload-info.svg') %>") no-repeat center;
227
+ mask: url("<%= asset_url('upload-info.svg') %>") no-repeat center;
228
+ }
229
+ .icon-user {
230
+ -webkit-mask: url("<%= asset_url('user.svg') %>") no-repeat center;
231
+ mask: url("<%= asset_url('user.svg') %>") no-repeat center;
232
+ }
233
+ .icon-winner {
234
+ -webkit-mask: url("<%= asset_url('winner.svg') %>") no-repeat center;
235
+ mask: url("<%= asset_url('winner.svg') %>") no-repeat center;
236
+ }
237
+ .icon-share {
238
+ -webkit-mask: url("<%= asset_url('share.svg') %>") no-repeat center;
239
+ mask: url("<%= asset_url('share.svg') %>") no-repeat center;
240
+ }
241
+ .icon-transcript {
242
+ -webkit-mask: url("<%= asset_url('transcript.svg') %>") no-repeat center;
243
+ mask: url("<%= asset_url('transcript.svg') %>") no-repeat center;
244
+ }
@@ -0,0 +1,53 @@
1
+ .input-text-base {
2
+ @apply w-full bg-transparent appearance-none placeholder-disabled-color border-none px-0 py-0 focus:ring-0 outline-none;
3
+ -webkit-text-fill-color: inherit !important;
4
+ transition: background-color 9999s ease-in-out 0s;
5
+ }
6
+
7
+ .input-text-md {
8
+ @apply main-text-md-normal;
9
+ }
10
+
11
+ .input-text-lg {
12
+ @apply main-text-lg-medium;
13
+ }
14
+
15
+ .input-text-icon-base {
16
+ @apply flex items-center;
17
+ }
18
+
19
+ .input-text-icon-md {
20
+ @apply h-4 md:h-5 w-4 md:w-5;
21
+ }
22
+
23
+ .input-text-icon-lg {
24
+ @apply h-5 w-5;
25
+ }
26
+
27
+ .input-text-div-base {
28
+ @apply w-full flex gap-1 border focus-within:ring-2;
29
+ }
30
+
31
+ .input-text-div-base-md {
32
+ @apply rounded px-3 py-2;
33
+ }
34
+
35
+ .input-text-div-base-lg {
36
+ @apply rounded-lg px-4 py-4;
37
+ }
38
+
39
+ .input-text-label-md {
40
+ @apply px-1 general-text-sm-normal;
41
+ }
42
+
43
+ .input-text-label-lg {
44
+ @apply px-1 general-text-md-normal;
45
+ }
46
+
47
+ .input-text-subtext-md {
48
+ @apply px-3 general-text-sm-normal;
49
+ }
50
+
51
+ .input-text-subtext-lg {
52
+ @apply px-3 md:px-4 general-text-md-normal;
53
+ }
@@ -0,0 +1,39 @@
1
+ .menu-component-container {
2
+ @apply relative inline-block;
3
+ }
4
+ .menu-component-button {
5
+ @apply flex justify-center cursor-pointer rounded-full bg-primary-light-50 text-primary border border-primary hover:bg-primary-light hover:text-white p-0.5;
6
+ }
7
+
8
+ .menu-component-button-active {
9
+ @apply !bg-primary text-white;
10
+ }
11
+
12
+ .menu-component-button-icon {
13
+ @apply h-6 w-6 md:h-7 md:w-7 rounded-full;
14
+ }
15
+
16
+ .menu-component-list-box {
17
+ @apply w-max min-w-full bg-white rounded-lg md:rounded-xl border border-line-colour mt-1 z-50 text-slate-grey-50 whitespace-nowrap;
18
+ }
19
+
20
+ .menu-component-left {
21
+ @apply left-0;
22
+ }
23
+
24
+ .menu-component-right {
25
+ @apply right-0;
26
+ }
27
+
28
+ .menu-component-center {
29
+ @apply left-1/2 -translate-x-1/2;
30
+
31
+ }
32
+
33
+ .menu-component-list {
34
+ @apply flex flex-col divide-y divide-line-colour text-letter-color;
35
+ }
36
+
37
+ .menu-component-list-items{
38
+ @apply px-4 md:px-5 py-3 md:py-4 hover:bg-primary-light-50 flex w-full;
39
+ }
@@ -0,0 +1,11 @@
1
+ .mobile-code-md {
2
+ @apply main-text-md-normal;
3
+ }
4
+
5
+ .mobile-code-lg {
6
+ @apply main-text-lg-medium;
7
+ }
8
+
9
+ .mobile-code-base {
10
+ @apply border focus-within:ring-2;
11
+ }
@@ -0,0 +1,35 @@
1
+ .modal-wrapper {
2
+ @apply fixed inset-0 bg-black bg-opacity-80 flex items-center justify-center z-[9999];
3
+ }
4
+
5
+ .modal-container {
6
+ @apply relative w-[300px] md:w-[500px];
7
+ }
8
+
9
+ .modal-success {
10
+ @apply relative w-[312px] md:w-[515px] h-[140px] overflow-visible bg-white rounded-xl;
11
+ }
12
+
13
+ .modal-content {
14
+ @apply bg-white rounded-lg md:rounded-xl w-full z-[9999];
15
+ }
16
+
17
+ .modal-header {
18
+ @apply flex items-center gap-1 justify-between border-b border-line-colour-light pl-7 md:pl-8 pr-4 md:pr-5 py-4 md:py-5;
19
+ }
20
+
21
+ .modal-body {
22
+ @apply px-7 md:px-8 pt-4 md:pt-5 pb-7 max-h-[500px] overflow-auto;
23
+ }
24
+
25
+ .modal-footer {
26
+ @apply px-7 md:px-8 pb-7 md:pb-8 sticky bottom-0;
27
+ }
28
+
29
+ .modal-loader-container {
30
+ @apply inset-0 z-[10000] items-center justify-center bg-white bg-opacity-60 rounded-lg;
31
+ }
32
+
33
+ .modal-loader {
34
+ @apply w-10 h-10 rounded-full border-4 border-line-colour border-t-primary animate-spin;
35
+ }
@@ -0,0 +1,15 @@
1
+ .profile-icon-base {
2
+ @apply border border-line-colour bg-primary-light-50 flex items-center justify-center rounded-full text-primary;
3
+ }
4
+
5
+ .profile-icon-sm {
6
+ @apply w-6 h-6 antialiased main-text-sm-medium;
7
+ }
8
+
9
+ .profile-icon-md {
10
+ @apply w-6 h-6 md:h-10 md:w-10 antialiased main-text-lg-medium;
11
+ }
12
+
13
+ .profile-icon-lg {
14
+ @apply w-10 h-10 md:h-14 md:w-14 antialiased heading-3xl;
15
+ }
@@ -0,0 +1,43 @@
1
+ .textarea-active-state {
2
+ @apply text-letter-color-light border-slate-grey-50 placeholder-disabled-color focus:ring-primary;
3
+ }
4
+
5
+ .textarea-error-state {
6
+ @apply text-danger-dark border-danger focus:border-danger focus:ring-danger placeholder-danger-dark;
7
+ }
8
+
9
+ .textarea-disabled-state {
10
+ @apply border-disabled-color text-disabled-color placeholder-disabled-color
11
+ }
12
+
13
+ .textarea-component-container {
14
+ @apply w-full flex flex-col gap-1;
15
+ }
16
+
17
+ .textarea-component-base {
18
+ @apply w-full border;
19
+ }
20
+
21
+ .textarea-component-wrapper {
22
+ @apply bg-white flex items-center;
23
+ }
24
+
25
+ .textarea-component-md {
26
+ @apply px-3 py-2 rounded;
27
+ }
28
+
29
+ .textarea-component-lg {
30
+ @apply px-3 py-2 md:p-4 rounded-lg;
31
+ }
32
+
33
+ .textarea-label {
34
+ @apply inline-block mb-1 px-1;
35
+ }
36
+
37
+ .textarea-support-text {
38
+ @apply flex justify-start items-start;
39
+ }
40
+
41
+ .field-sizing-content {
42
+ field-sizing: auto;
43
+ }
@@ -0,0 +1,88 @@
1
+ .tooltip {
2
+ position: absolute;
3
+ white-space: nowrap;
4
+ padding: 0.25rem 0.5rem;
5
+ font-size: 0.75rem;
6
+ color: white;
7
+ background-color: grey;
8
+ border-radius: 0.25rem;
9
+ opacity: 0;
10
+ transition: opacity 0.2s;
11
+ z-index: 1;
12
+ pointer-events: none;
13
+ }
14
+
15
+ @media (max-width: 640px) {
16
+ .tooltip {
17
+ white-space: normal;
18
+ width: 100%;
19
+ }
20
+ }
21
+
22
+ .group:hover .tooltip {
23
+ opacity: 1;
24
+ }
25
+
26
+ .tooltip::before {
27
+ content: "";
28
+ position: absolute;
29
+ width: 0;
30
+ height: 0;
31
+ border-style: solid;
32
+ }
33
+
34
+ .tooltip-top {
35
+ bottom: 100%;
36
+ left: 50%;
37
+ transform: translateX(-50%);
38
+ margin-bottom: 0.5rem;
39
+ }
40
+ .tooltip-top::before {
41
+ left: 50%;
42
+ bottom: -4px;
43
+ transform: translateX(-50%);
44
+ border-width: 4px 4px 0;
45
+ border-color: grey transparent transparent;
46
+ }
47
+
48
+ .tooltip-bottom {
49
+ top: 100%;
50
+ left: 50%;
51
+ transform: translateX(-50%);
52
+ margin-top: 0.5rem;
53
+ }
54
+ .tooltip-bottom::before {
55
+ left: 50%;
56
+ top: -4px;
57
+ transform: translateX(-50%);
58
+ border-width: 0 4px 4px;
59
+ border-color: transparent transparent grey;
60
+ }
61
+
62
+ .tooltip-left {
63
+ right: 100%;
64
+ top: 50%;
65
+ transform: translateY(-50%);
66
+ margin-right: 0.5rem;
67
+ }
68
+ .tooltip-left::before {
69
+ right: -4px;
70
+ top: 50%;
71
+ transform: translateY(-50%);
72
+ border-width: 4px 0 4px 4px;
73
+ border-color: transparent transparent transparent grey;
74
+ }
75
+
76
+ .tooltip-right {
77
+ left: 100%;
78
+ top: 50%;
79
+ transform: translateY(-50%);
80
+ margin-left: 0.5rem;
81
+ }
82
+ .tooltip-right::before {
83
+ left: -4px;
84
+ top: 50%;
85
+ transform: translateY(-50%);
86
+ border-width: 4px 4px 4px 0;
87
+ border-color: transparent grey transparent transparent;
88
+ }
@@ -0,0 +1,70 @@
1
+ /* Typography Styles */
2
+
3
+ @layer components {
4
+ /* Heading Typography Styles */
5
+ .heading-3xl {
6
+ @apply font-poppins antialiased text-2xl md:text-3xl font-semibold;
7
+ }
8
+
9
+ .heading-2xl {
10
+ @apply font-poppins antialiased text-xl md:text-2xl font-semibold;
11
+ }
12
+
13
+ .heading-xl {
14
+ @apply font-poppins antialiased text-lg md:text-xl font-semibold;
15
+ }
16
+
17
+ /* Primary Text Typography Styles */
18
+ .main-text-lg-semibold {
19
+ @apply font-poppins antialiased text-base md:text-lg font-semibold;
20
+ }
21
+
22
+ .main-text-lg-medium {
23
+ @apply font-poppins antialiased text-base md:text-lg font-medium;
24
+ }
25
+
26
+ .main-text-lg-normal {
27
+ @apply font-poppins antialiased text-base md:text-lg font-normal;
28
+ }
29
+
30
+ .main-text-md-semibold {
31
+ @apply font-poppins antialiased text-sm md:text-base font-semibold;
32
+ }
33
+
34
+ .main-text-md-medium {
35
+ @apply font-poppins antialiased text-sm md:text-base font-medium;
36
+ }
37
+
38
+ .main-text-md-normal {
39
+ @apply font-poppins antialiased text-sm md:text-base font-normal;
40
+ }
41
+
42
+ .main-text-sm-medium {
43
+ @apply font-poppins antialiased text-xs md:text-sm font-medium;
44
+ }
45
+
46
+ .main-text-sm-normal {
47
+ @apply font-poppins antialiased text-xs md:text-sm font-normal;
48
+ }
49
+
50
+ /* Secondary Text Typography Styles */
51
+ .general-text-lg-normal {
52
+ @apply font-roboto antialiased text-sm md:text-base font-normal;
53
+ }
54
+
55
+ .general-text-md-medium {
56
+ @apply font-roboto antialiased text-xs md:text-sm font-medium;
57
+ }
58
+
59
+ .general-text-md-normal {
60
+ @apply font-roboto antialiased text-xs md:text-sm font-normal;
61
+ }
62
+
63
+ .general-text-sm-medium {
64
+ @apply font-roboto antialiased text-xs font-medium;
65
+ }
66
+
67
+ .general-text-sm-normal {
68
+ @apply font-roboto antialiased text-xs font-normal;
69
+ }
70
+ }
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module UiHelper
4
+ def arrange_tags(left_tag, right_tag, position)
5
+ ordered = position == 'left' ? [left_tag, right_tag] : [right_tag, left_tag]
6
+ safe_join(ordered.compact)
7
+ end
8
+
9
+ include ViewComponent::TypographyComponent
10
+ include ViewComponent::IconComponent
11
+ include ViewComponent::ButtonComponent
12
+ include ViewComponent::InputComponent
13
+ include ViewComponent::TableComponent
14
+ include ViewComponent::ModalComponent
15
+ include ViewComponent::CourseCardComponent
16
+ include ViewComponent::LongCourseCardComponent
17
+ include ViewComponent::CourseCarousalComponent
18
+ include ViewComponent::CourseSelectComponent
19
+ include ViewComponent::MemberListComponent
20
+ include ViewComponent::NotificationBarComponent
21
+ include ViewComponent::PaginatorComponent
22
+ include ViewComponent::InputTextareaComponent
23
+ include ViewComponent::DocSectionComponent
24
+ include ViewComponent::BreadcrumbsComponent
25
+ include ViewComponent::MenuComponent
26
+ include ViewComponent::ModalBoxComponent
27
+ include ViewComponent::ChipComponent
28
+ include ViewComponent::ProgressComponent
29
+ include ViewComponent::ProfileIconComponent
30
+ include ViewComponent::AccordionComponent
31
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ViewComponent
4
+ module AccordionComponent
5
+ def accordion_component(header:, icon_position: 'right', open: false, wrapper_class: '', &)
6
+ content = capture(&)
7
+ icon_position_style = icon_position == 'right' ? 'justify-between' : 'flex-row-reverse justify-end gap-2'
8
+ render partial: 'view_components/accordion_component/accordion',
9
+ locals: { header:, content:, icon_position_style:, open:, wrapper_class: }
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ViewComponent
4
+ module BreadcrumbsComponent
5
+ class BreadcrumbsComponent
6
+ attr_accessor :links
7
+
8
+ def initialize(links: [])
9
+ self.links = links
10
+ end
11
+
12
+ def all_links
13
+ links || []
14
+ end
15
+
16
+ def last_link
17
+ all_links.last
18
+ end
19
+
20
+ def intermediate_links
21
+ all_links[0..-2] || []
22
+ end
23
+ end
24
+
25
+ def breadcrumbs_component(links: [])
26
+ breadcrumbs = BreadcrumbsComponent.new(links:)
27
+ render partial: 'view_components/breadcrumbs_component/breadcrumbs', locals: { breadcrumbs: }
28
+ end
29
+ end
30
+ end