Happy Addons for Elementor (Mega Menu, Post Grid, Woocommerce Product Grid, Table, Event Calendar, Slider Elementor Widget) - Version 2.0.0

Version Description

  • 24 September 2019 =

  • New: Dashboard

  • New: Image popup support for Justified Grid

  • New: Image popup support for Image Grid

  • Update: Improved HTML tag support for description and title fields

  • Update: Added more icons in Happy Icons

  • Update: Improved HTML escaping support for security

  • Fix: Skill Bars admin label fix

  • Fix: Missing style issue while copy-pasting widget style

  • Fix: Happy Icons cache issue

  • Fix: Admin bar menu spacing issue

Download this release

Release Info

Developer thehappymonster
Plugin Icon 128x128 Happy Addons for Elementor (Mega Menu, Post Grid, Woocommerce Product Grid, Table, Event Calendar, Slider Elementor Widget)
Version 2.0.0
Comparing to
See all releases

Code changes from version 1.5.0 to 2.0.0

Files changed (103) hide show
  1. assets/admin/css/admin-bar.css +0 -54
  2. assets/admin/css/admin.css +54 -0
  3. assets/admin/css/admin.min.css +1 -0
  4. assets/admin/css/dashboard.css +946 -0
  5. assets/admin/css/dashboard.min.css +1 -0
  6. assets/admin/css/{main.css → editor.css} +23 -9
  7. assets/admin/css/editor.min.css +1 -0
  8. assets/admin/css/main.min.css +0 -1
  9. assets/admin/js/{admin-bar.js → admin.js} +1 -1
  10. assets/admin/js/admin.min.js +1 -0
  11. assets/admin/js/dashboard.js +155 -0
  12. assets/admin/js/dashboard.min.js +1 -0
  13. assets/admin/js/{happy-addons.js → editor.js} +10 -1
  14. assets/admin/js/editor.min.js +1 -0
  15. assets/admin/js/happy-addons.min.js +0 -1
  16. assets/css/main.css +22 -68
  17. assets/css/main.min.css +1 -1
  18. assets/css/widgets/btn.min.css +1 -1
  19. assets/css/widgets/common.min.css +1 -1
  20. assets/css/widgets/flip-box.min.css +1 -1
  21. assets/css/widgets/pricing-table.min.css +1 -1
  22. assets/fonts/{Happy-Addons-Icon.woff → happy-icons.eot} +0 -0
  23. assets/fonts/happy-icons.js +67 -2
  24. assets/fonts/{Happy-Addons-Icon.svg → happy-icons.svg} +68 -2
  25. assets/fonts/{Happy-Addons-Icon.eot → happy-icons.ttf} +0 -0
  26. assets/fonts/{Happy-Addons-Icon.ttf → happy-icons.woff} +0 -0
  27. assets/fonts/nunito/Nunito-Bold.woff +0 -0
  28. assets/fonts/nunito/Nunito-Bold.woff2 +0 -0
  29. assets/fonts/nunito/Nunito-Regular.woff +0 -0
  30. assets/fonts/nunito/Nunito-Regular.woff2 +0 -0
  31. assets/fonts/nunito/OFL.txt +93 -0
  32. assets/fonts/nunito/nunito-regular-webfont.woff +0 -0
  33. assets/fonts/nunito/nunito-regular-webfont.woff2 +0 -0
  34. assets/fonts/nunito/stylesheet.css +16 -0
  35. assets/fonts/style.css +203 -5
  36. assets/fonts/style.min.css +1 -1
  37. assets/imgs/admin/art1.png +0 -0
  38. assets/imgs/admin/art2.png +0 -0
  39. assets/imgs/admin/c-icon.png +0 -0
  40. assets/imgs/admin/comment-square.svg +30 -0
  41. assets/imgs/admin/cross-domain.svg +27 -0
  42. assets/imgs/admin/cross-game.svg +76 -0
  43. assets/imgs/admin/crossdomain-video-cover.jpg +0 -0
  44. assets/imgs/admin/dashboard-header.png +0 -0
  45. assets/imgs/admin/faq.svg +56 -0
  46. assets/imgs/admin/film.svg +27 -0
  47. assets/imgs/admin/floating-video-cover.jpg +0 -0
  48. assets/imgs/admin/halogo.svg +59 -0
  49. assets/imgs/admin/icon1.jpg +0 -0
  50. assets/imgs/admin/knowledge.svg +61 -0
  51. assets/imgs/admin/nesting.svg +19 -0
  52. assets/imgs/admin/newspaper.svg +44 -0
  53. assets/imgs/admin/pa-1.png +0 -0
  54. assets/imgs/admin/pa-2.png +0 -0
  55. assets/imgs/admin/pa-3.png +0 -0
  56. assets/imgs/admin/preset.svg +33 -0
  57. assets/imgs/admin/review.svg +48 -0
  58. assets/imgs/admin/support-call.svg +26 -0
  59. assets/imgs/admin/translate-video-cover.jpg +0 -0
  60. assets/imgs/happy-addons-placeholder-small.jpg +0 -0
  61. assets/imgs/placeholder.jpg +0 -0
  62. assets/js/happy-addons.js +51 -3
  63. assets/js/happy-addons.min.js +1 -1
  64. assets/vendor/magnific-popup/jquery.magnific-popup.min.js +4 -0
  65. assets/vendor/magnific-popup/magnific-popup.css +351 -0
  66. base.php +14 -2
  67. base/widget-base.php +5 -25
  68. classes/admin-bar.php +12 -9
  69. classes/assets-cache.php +8 -6
  70. classes/assets-manager.php +61 -37
  71. classes/cache-manager.php +44 -0
  72. classes/dashboard.php +245 -0
  73. classes/icons-manager.php +68 -5
  74. classes/updater.php +3 -1
  75. classes/widgets-manager.php +183 -7
  76. inc/functions.php +90 -0
  77. plugin.php +2 -2
  78. readme.txt +14 -1
  79. templates/admin/dashboard-home.php +160 -0
  80. templates/admin/dashboard-main.php +71 -0
  81. templates/admin/dashboard-pro.php +93 -0
  82. templates/admin/dashboard-widgets.php +78 -0
  83. vendor/appsero/src/Client.php +1 -1
  84. vendor/appsero/src/Insights.php +7 -7
  85. vendor/appsero/src/License.php +2 -2
  86. widgets/calendly/widget.php +2 -2
  87. widgets/card/widget.php +23 -25
  88. widgets/carousel/widget.php +2 -2
  89. widgets/dual-button/widget.php +1 -0
  90. widgets/flip-box/widget.php +26 -39
  91. widgets/gradient-heading/widget.php +4 -8
  92. widgets/icon-box/widget.php +16 -21
  93. widgets/image-compare/widget.php +6 -2
  94. widgets/image-grid/widget.php +54 -11
  95. widgets/infobox/widget.php +26 -30
  96. widgets/justified-gallery/widget.php +56 -13
  97. widgets/member/widget.php +31 -30
  98. widgets/pricing-table/widget.php +14 -12
  99. widgets/review/widget.php +71 -69
  100. widgets/skills/widget.php +15 -14
  101. widgets/slider/widget.php +3 -3
  102. widgets/step-flow/widget.php +14 -14
  103. widgets/testimonial/widget.php +12 -11
assets/admin/css/admin-bar.css DELETED
@@ -1,54 +0,0 @@
1
- #wpadminbar #wp-admin-bar-happy-addons > .ab-item::before {
2
- content: "\f328";
3
- font-family: dashicons;
4
- top: 3px;
5
- font-size: 18px;
6
- }
7
-
8
- #wp-admin-bar-happy-addons .ab-item .dashicons {
9
- font-size: 16px;
10
- display: inline-block;
11
- font-family: dashicons;
12
- font-size: inherit;
13
- font-weight: normal;
14
- font-style: normal;
15
- font-variant: normal;
16
- line-height: 1;
17
- text-rendering: auto;
18
- -webkit-font-smoothing: antialiased;
19
- -moz-osx-font-smoothing: grayscale;
20
- top: 7px;
21
- position: relative;
22
- }
23
-
24
- #wp-admin-bar-happy-addons .ab-item .dashicons-update-alt:before {
25
- content: "\f113";
26
- }
27
-
28
- #wp-admin-bar-happy-addons .ha-clear-cache--done .ab-item > i {
29
- color: #46b450;
30
- }
31
-
32
- #wp-admin-bar-happy-addons .ha-clear-cache--init .ab-item > i {
33
- -webkit-animation: ha-inifinite-rotate .5s infinite linear;
34
- animation: ha-inifinite-rotate .5s infinite linear;
35
- }
36
-
37
- @-webkit-keyframes ha-inifinite-rotate {
38
- from {
39
- -webkit-transform: rotate(0deg);
40
- }
41
- to {
42
- -webkit-transform: rotate(359deg);
43
- }
44
- }
45
-
46
- @keyframes ha-inifinite-rotate {
47
- from {
48
- transform: rotate(0deg);
49
- }
50
- to {
51
- transform: rotate(359deg);
52
- }
53
- }
54
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/admin/css/admin.css ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #wp-admin-bar-happy-addons > .ab-item > img {
2
+ margin-top: 7px;
3
+ width: 18px;
4
+ height: 18px;
5
+ }
6
+
7
+ #wp-admin-bar-happy-addons .ab-item .dashicons {
8
+ position: relative;
9
+ top: 7px;
10
+ display: inline-block;
11
+ font-weight: normal;
12
+ font-style: normal;
13
+ font-variant: normal;
14
+ font-size: inherit;
15
+ font-family: dashicons;
16
+ line-height: 1;
17
+
18
+ -webkit-font-smoothing: antialiased;
19
+ -moz-osx-font-smoothing: grayscale;
20
+ text-rendering: auto;
21
+ }
22
+
23
+ #wp-admin-bar-happy-addons .ab-item .dashicons-update-alt:before {
24
+ content: "\f113";
25
+ }
26
+
27
+ #wp-admin-bar-happy-addons .ha-clear-cache--done .ab-item > i {
28
+ color: #46b450;
29
+ }
30
+
31
+ #wp-admin-bar-happy-addons .ha-clear-cache--init .ab-item > i {
32
+ -webkit-animation: ha-inifinite-rotate .5s infinite linear;
33
+ animation: ha-inifinite-rotate .5s infinite linear;
34
+ }
35
+
36
+ @-webkit-keyframes ha-inifinite-rotate {
37
+ from {
38
+ -webkit-transform: rotate(0deg);
39
+ }
40
+ to {
41
+ -webkit-transform: rotate(359deg);
42
+ }
43
+ }
44
+
45
+ @keyframes ha-inifinite-rotate {
46
+ from {
47
+ -webkit-transform: rotate(0deg);
48
+ transform: rotate(0deg);
49
+ }
50
+ to {
51
+ -webkit-transform: rotate(359deg);
52
+ transform: rotate(359deg);
53
+ }
54
+ }
assets/admin/css/admin.min.css ADDED
@@ -0,0 +1 @@
 
1
+ #wp-admin-bar-happy-addons>.ab-item>img{margin-top:7px;width:18px;height:18px}#wp-admin-bar-happy-addons .ab-item .dashicons{position:relative;top:7px;display:inline-block;font-weight:400;font-style:normal;font-variant:normal;font-size:inherit;font-family:dashicons;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:auto}#wp-admin-bar-happy-addons .ab-item .dashicons-update-alt:before{content:"\f113"}#wp-admin-bar-happy-addons .ha-clear-cache--done .ab-item>i{color:#46b450}#wp-admin-bar-happy-addons .ha-clear-cache--init .ab-item>i{-webkit-animation:ha-inifinite-rotate .5s infinite linear;animation:ha-inifinite-rotate .5s infinite linear}@-webkit-keyframes ha-inifinite-rotate{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(359deg)}}@keyframes ha-inifinite-rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}
assets/admin/css/dashboard.css ADDED
@@ -0,0 +1,946 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-dashboard-tabs__nav:before,
2
+ .ha-dashboard-tabs__content-item:before,
3
+ .ha-dashboard-widgets:before,
4
+ .ha-dashboard-tabs__nav:after,
5
+ .ha-dashboard-tabs__content-item:after,
6
+ .ha-dashboard-widgets:after {
7
+ display: table;
8
+ content: " ";
9
+ }
10
+
11
+ .ha-dashboard-tabs__nav:after,
12
+ .ha-dashboard-tabs__content-item:after,
13
+ .ha-dashboard-widgets:after {
14
+ clear: both;
15
+ }
16
+
17
+ .ha-dashboard {
18
+ padding-top: 20px;
19
+ }
20
+ .ha-dashboard,
21
+ .ha-dashboard * {
22
+ box-sizing: border-box;
23
+ font-family: "Nunito", sans-serif;
24
+ }
25
+ .ha-dashboard-btn {
26
+ display: inline-block;
27
+ padding: 15px 25px;
28
+ border: 0;
29
+ border-radius: 5px;
30
+ box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
31
+ text-align: center;
32
+ text-decoration: none;
33
+ font-weight: bold;
34
+ font-size: 13px;
35
+ line-height: 1;
36
+ cursor: pointer;
37
+ -webkit-transition: all .2s;
38
+ transition: all .2s;
39
+ }
40
+ .ha-dashboard-btn:hover,
41
+ .ha-dashboard-btn:focus,
42
+ .ha-dashboard-btn:active {
43
+ outline: 0;
44
+ box-shadow: none;
45
+ }
46
+ .ha-dashboard-btn--lg {
47
+ padding: 15px 30px;
48
+ font-size: 14px;
49
+ }
50
+ .ha-dashboard-btn--save {
51
+ width: 13em;
52
+ background-color: #5db429;
53
+ color: #fff;
54
+ }
55
+ .ha-dashboard-btn--save:hover,
56
+ .ha-dashboard-btn--save:focus,
57
+ .ha-dashboard-btn--save:active {
58
+ background-color: #488a20;
59
+ color: #fff;
60
+ }
61
+ .ha-dashboard-btn--save:disabled,
62
+ .ha-dashboard-btn--save.disabled {
63
+ background-color: #b3b3b3;
64
+ box-shadow: none;
65
+ opacity: .7;
66
+ cursor: not-allowed;
67
+ }
68
+ .ha-dashboard-tabs__nav-btn {
69
+ float: right;
70
+ }
71
+ .ha-dashboard-tabs__nav-item {
72
+ display: block;
73
+ float: left;
74
+ padding: 15px 40px;
75
+ border-top: 3px solid #bbb;
76
+ border-radius: 5px 5px 0 0;
77
+ background-color: #e8e8e8;
78
+ color: #888;
79
+ text-decoration: none;
80
+ text-transform: uppercase;
81
+ font-weight: 700;
82
+ font-size: 14px;
83
+ }
84
+ .ha-dashboard-tabs__nav-item--pro {
85
+ border-color: #d6226e;
86
+ background-color: #e2498a;
87
+ color: #fff;
88
+ }
89
+ .ha-dashboard-tabs__nav-item:focus,
90
+ .ha-dashboard-tabs__nav-item:hover,
91
+ .ha-dashboard-tabs__nav-item:active,
92
+ .ha-dashboard-tabs__nav-item.tab--is-active {
93
+ outline: none;
94
+ border-color: #562dd4;
95
+ background-color: #fff;
96
+ box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
97
+ color: #562dd4;
98
+ -webkit-transition: all .3s;
99
+ transition: all .3s;
100
+ }
101
+ .ha-dashboard-tabs__nav-item--pro:focus,
102
+ .ha-dashboard-tabs__nav-item--pro:hover,
103
+ .ha-dashboard-tabs__nav-item--pro:active,
104
+ .ha-dashboard-tabs__nav-item--pro.tab--is-active {
105
+ border-color: #e2498a;
106
+ color: #e2498a;
107
+ }
108
+ .ha-dashboard-tabs__nav-item:not(:last-child) {
109
+ margin-right: 10px;
110
+ }
111
+ .ha-dashboard-tabs__content-item {
112
+ display: none;
113
+ padding: 40px;
114
+ border-radius: 0 0 5px 5px;
115
+ background-color: #fff;
116
+ box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
117
+ }
118
+ .ha-dashboard-tabs__content-item.tab--is-active {
119
+ position: relative;
120
+ z-index: 1;
121
+ display: block;
122
+ }
123
+ .ha-dashboard-panel__header {
124
+ padding-bottom: 40px;
125
+ }
126
+ .ha-dashboard-panel__header-content > h2 {
127
+ margin: 0 0 20px;
128
+ font-size: 2em;
129
+ }
130
+ .ha-dashboard-panel__header-content > p {
131
+ margin: 0;
132
+ color: #8c8c8c;
133
+ }
134
+ .ha-dashboard-panel__footer {
135
+ margin-top: 20px;
136
+ padding-top: 20px;
137
+ border-top: 1px dashed #e8e8e8;
138
+ }
139
+ .ha-dashboard-widgets {
140
+ margin-right: -10px;
141
+ margin-left: -10px;
142
+ }
143
+ .ha-dashboard-widgets__item {
144
+ position: relative;
145
+ display: -webkit-box;
146
+ display: -webkit-flex;
147
+ display: -ms-flexbox;
148
+ display: flex;
149
+ float: left;
150
+ overflow: hidden;
151
+ -webkit-box-align: center;
152
+ -webkit-align-items: center;
153
+ align-items: center;
154
+ -ms-flex-align: center;
155
+ margin-right: 10px;
156
+ margin-bottom: 20px;
157
+ margin-left: 10px;
158
+ padding: 30px 20px;
159
+ width: calc( 100% - 20px);
160
+ border: 1px solid #e8e8e8;
161
+ border-radius: 5px;
162
+ }
163
+ @media (min-width: 650px) {
164
+ .ha-dashboard-widgets__item {
165
+ width: calc( 50% - 20px);
166
+ }
167
+ }
168
+ @media (min-width: 1100px) {
169
+ .ha-dashboard-widgets__item {
170
+ width: calc( 33.33% - 20px);
171
+ }
172
+ }
173
+ @media (min-width: 1350px) {
174
+ .ha-dashboard-widgets__item {
175
+ width: calc( 25% - 20px);
176
+ }
177
+ }
178
+ .ha-dashboard-widgets__item.item--is-placeholder {
179
+ opacity: .7;
180
+ }
181
+ .ha-dashboard-widgets__item-icon {
182
+ display: inline-block;
183
+ margin-right: 10px;
184
+ width: 30px;
185
+ text-align: center;
186
+ font-size: 20px;
187
+ }
188
+ .ha-dashboard-widgets__item:hover .ha-dashboard-widgets__item-icon {
189
+ background-image: -webkit-linear-gradient(315deg, #e2498a 25%, #562dd4 100%);
190
+ background-image: linear-gradient(135deg, #e2498a 25%, #562dd4 100%);
191
+ -webkit-background-clip: text;
192
+
193
+ -webkit-text-fill-color: transparent;
194
+ }
195
+ .ha-dashboard-widgets__item-title {
196
+ display: inline-block;
197
+ margin: 0;
198
+ color: #444;
199
+ font-weight: 400;
200
+ font-size: 13px;
201
+ }
202
+ .ha-dashboard-widgets__item-title > label {
203
+ font-weight: 700;
204
+ }
205
+ .ha-dashboard-widgets__item-preview {
206
+ display: inline-block;
207
+ margin-left: 5px;
208
+ color: #c2cbd2;
209
+ font-size: 10px;
210
+ -webkit-transition: all .2s;
211
+ transition: all .2s;
212
+ }
213
+ .ha-dashboard-widgets__item-preview:hover,
214
+ .ha-dashboard-widgets__item-preview:focus,
215
+ .ha-dashboard-widgets__item-preview:active {
216
+ box-shadow: none;
217
+ color: #8799a7;
218
+ }
219
+ .ha-dashboard-widgets__item-badge {
220
+ position: absolute;
221
+ top: -2px;
222
+ left: -18px;
223
+ padding: 6px 8px 3px;
224
+ width: 50px;
225
+ background-color: #e2498a;
226
+ color: #fff;
227
+ text-align: center;
228
+ text-transform: uppercase;
229
+ font-weight: bold;
230
+ font-size: 7px;
231
+ line-height: 1;
232
+ -webkit-transform: rotate(-45deg);
233
+ -ms-transform: rotate(-45deg);
234
+ transform: rotate(-45deg);
235
+ }
236
+ .ha-dashboard-widgets__item-toggle {
237
+ position: absolute !important;
238
+ right: 20px;
239
+ }
240
+ .ha-dashboard .ha-toggle {
241
+ position: relative;
242
+ display: block;
243
+ overflow: hidden;
244
+ width: 40px;
245
+ height: 24px;
246
+ border-radius: 100px;
247
+ background-color: #e8e8e8;
248
+ box-shadow: inset 0 0 2px 1px rgba(0, 0, 0, .05);
249
+ }
250
+ .ha-dashboard .ha-toggle__check,
251
+ .ha-dashboard .ha-toggle__switch,
252
+ .ha-dashboard .ha-toggle__track {
253
+ position: absolute;
254
+ display: block;
255
+ }
256
+ .ha-dashboard .ha-toggle__check {
257
+ top: 0;
258
+ left: 0;
259
+ z-index: 6;
260
+ width: 100%;
261
+ height: 100%;
262
+ opacity: 0;
263
+ cursor: pointer;
264
+ }
265
+ .ha-dashboard .ha-toggle__check:disabled,
266
+ .ha-dashboard .ha-toggle__check.disabled {
267
+ z-index: 0;
268
+ opacity: 0;
269
+ }
270
+ .ha-dashboard .ha-toggle__check:checked ~ .ha-toggle__track {
271
+ box-shadow: inset 0 0 0 20px #562dd4;
272
+ }
273
+ .ha-dashboard .ha-toggle__check:checked ~ .ha-toggle__switch {
274
+ right: 2px;
275
+ left: 18px;
276
+ -webkit-transition: .35s cubic-bezier(.785, .135, .15, .86);
277
+ transition: .35s cubic-bezier(.785, .135, .15, .86);
278
+ -webkit-transition-delay: .05s, 0s;
279
+ transition-delay: .05s, 0s;
280
+ -webkit-transition-property: left, right;
281
+ transition-property: left, right;
282
+ }
283
+ .ha-dashboard .ha-toggle__switch {
284
+ top: 2px;
285
+ right: 18px;
286
+ bottom: 2px;
287
+ left: 2px;
288
+ z-index: 1;
289
+ border-radius: 36px;
290
+ background-color: #fff;
291
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .2);
292
+ -webkit-transition: .35s cubic-bezier(.785, .135, .15, .86);
293
+ transition: .35s cubic-bezier(.785, .135, .15, .86);
294
+ -webkit-transition-delay: 0s, .05s;
295
+ transition-delay: 0s, .05s;
296
+ -webkit-transition-property: left, right;
297
+ transition-property: left, right;
298
+ }
299
+ .ha-dashboard .ha-toggle__track {
300
+ top: 0;
301
+ right: 0;
302
+ bottom: 0;
303
+ left: 0;
304
+ border-radius: 40px;
305
+ box-shadow: inset 0 0 0 2px rgba(0, 0, 0, .01);
306
+ -webkit-transition: .35s cubic-bezier(.785, .135, .15, .86);
307
+ transition: .35s cubic-bezier(.785, .135, .15, .86);
308
+ }
309
+
310
+ @-webkit-keyframes animateTextIndent {
311
+ 0% {
312
+ letter-spacing: 15px;
313
+ }
314
+ 50% {
315
+ letter-spacing: 0;
316
+ }
317
+ 100% {
318
+ letter-spacing: 15px;
319
+ }
320
+ }
321
+
322
+ @keyframes animateTextIndent {
323
+ 0% {
324
+ letter-spacing: 15px;
325
+ }
326
+ 50% {
327
+ letter-spacing: 0;
328
+ }
329
+ 100% {
330
+ letter-spacing: 15px;
331
+ }
332
+ }
333
+
334
+ .ha-action-list {
335
+ margin: -4px;
336
+ padding-top: 20px;
337
+ font-weight: bold;
338
+ font-size: 14px;
339
+ opacity: .7;
340
+ }
341
+
342
+ .ha-action--divider {
343
+ padding-right: 10px;
344
+ padding-left: 10px;
345
+ color: #e8e8e8;
346
+ }
347
+
348
+ .ha-action--btn {
349
+ display: inline-block;
350
+ margin: 4px;
351
+ padding: 5px 10px 4px;
352
+ outline: none;
353
+ border: 1px solid;
354
+ border-radius: 3px;
355
+ background: transparent;
356
+ box-shadow: none;
357
+ font-weight: bold;
358
+ line-height: 1;
359
+ cursor: pointer;
360
+ }
361
+ .ha-action--btn[data-filter="*"] {
362
+ color: #666;
363
+ }
364
+ .ha-action--btn[data-filter="*"]:hover,
365
+ .ha-action--btn[data-filter="*"]:focus {
366
+ border-color: #666;
367
+ background-color: #666;
368
+ color: #fff;
369
+ }
370
+ .ha-action--btn[data-filter="free"] {
371
+ color: #562dd4;
372
+ }
373
+ .ha-action--btn[data-filter="free"]:hover,
374
+ .ha-action--btn[data-filter="free"]:focus {
375
+ border-color: #562dd4;
376
+ background-color: #562dd4;
377
+ color: #fff;
378
+ }
379
+ .ha-action--btn[data-filter="pro"] {
380
+ color: #e2498a;
381
+ }
382
+ .ha-action--btn[data-filter="pro"]:hover,
383
+ .ha-action--btn[data-filter="pro"]:focus {
384
+ border-color: #e2498a;
385
+ background-color: #e2498a;
386
+ color: #fff;
387
+ }
388
+ .ha-action--btn[data-action="enable"] {
389
+ color: #5db429;
390
+ }
391
+ .ha-action--btn[data-action="enable"]:hover,
392
+ .ha-action--btn[data-action="enable"]:focus {
393
+ border-color: #5db429;
394
+ background-color: #5db429;
395
+ color: #fff;
396
+ }
397
+ .ha-action--btn[data-action="disable"] {
398
+ color: #e63d3d;
399
+ }
400
+ .ha-action--btn[data-action="disable"]:hover,
401
+ .ha-action--btn[data-action="disable"]:focus {
402
+ border-color: #e63d3d;
403
+ background-color: #e63d3d;
404
+ color: #fff;
405
+ }
406
+
407
+ .ha-home-banner {
408
+ position: relative;
409
+ padding-top: 25.20%;
410
+ border-radius: 5px;
411
+ background: url("../../imgs/admin/dashboard-header.png") no-repeat center center/cover;
412
+ }
413
+ .ha-home-banner__content {
414
+ position: absolute;
415
+ top: 50%;
416
+ left: 50%;
417
+ display: -webkit-box;
418
+ display: -webkit-flex;
419
+ display: -ms-flexbox;
420
+ display: flex;
421
+ -webkit-box-align: center;
422
+ -webkit-align-items: center;
423
+ align-items: center;
424
+ -ms-flex-align: center;
425
+ padding-right: 15px;
426
+ padding-left: 15px;
427
+ max-width: 1000px;
428
+ width: 100%;
429
+ -webkit-transform: translate(-50%, -50%);
430
+ -ms-transform: translate(-50%, -50%);
431
+ transform: translate(-50%, -50%);
432
+ }
433
+ .ha-home-banner__logo {
434
+ position: relative;
435
+ top: -8px;
436
+ margin-right: 50px;
437
+ width: 150px;
438
+ height: auto;
439
+ }
440
+ .ha-home-banner__divider {
441
+ width: 4px;
442
+ height: 60px;
443
+ border-radius: 10px;
444
+ background-color: #fff;
445
+ }
446
+ .ha-home-banner h2 {
447
+ float: left;
448
+ margin: 0;
449
+ padding-left: 50px;
450
+ color: #fff;
451
+ font-size: 28px;
452
+ line-height: 1.1;
453
+ }
454
+ .ha-home-banner h2 > span {
455
+ font-weight: 400;
456
+ }
457
+
458
+ .ha-home-body {
459
+ margin-right: auto;
460
+ margin-left: auto;
461
+ padding-right: 15px;
462
+ padding-left: 15px;
463
+ max-width: 1000px;
464
+ }
465
+
466
+ .ha-row {
467
+ display: -webkit-box;
468
+ display: -webkit-flex;
469
+ display: -ms-flexbox;
470
+ display: flex;
471
+ -webkit-flex-wrap: wrap;
472
+ -ms-flex-wrap: wrap;
473
+ flex-wrap: wrap;
474
+ margin-right: -15px;
475
+ margin-left: -15px;
476
+ }
477
+
478
+ .ha-feature-title {
479
+ margin-bottom: 1rem;
480
+ font-weight: bold;
481
+ font-size: 28px;
482
+ }
483
+
484
+ .ha-feature-sub-title-a {
485
+ color: #242424;
486
+ text-decoration: none;
487
+ }
488
+ .ha-feature-sub-title-a:hover {
489
+ color: #e2498a;
490
+ }
491
+
492
+ .ha-feature-sub-title {
493
+ margin-bottom: 1rem;
494
+ font-weight: bold;
495
+ font-size: 18px;
496
+ line-height: 1.4;
497
+ }
498
+
499
+ .ha-btn {
500
+ display: inline-block;
501
+ padding: .95rem 1.5rem;
502
+ border-radius: 4px;
503
+ text-decoration: none;
504
+ font-weight: bold;
505
+ font-size: 14px;
506
+ }
507
+ .ha-btn:hover,
508
+ .ha-btn:focus {
509
+ outline: none;
510
+ box-shadow: none;
511
+ }
512
+
513
+ .ha-btn-primary {
514
+ background: #5e3bc4;
515
+ color: #fff;
516
+ }
517
+ .ha-btn-primary:hover,
518
+ .ha-btn-primary:focus {
519
+ background: #4b2f9d;
520
+ color: #fff;
521
+ }
522
+
523
+ .ha-btn-secondary {
524
+ background: #e2498a;
525
+ color: #fff;
526
+ }
527
+ .ha-btn-secondary:hover,
528
+ .ha-btn-secondary:focus {
529
+ background: #d6226e;
530
+ color: #fff;
531
+ }
532
+
533
+ .ha-text-primary {
534
+ color: #5e3bc4;
535
+ }
536
+
537
+ .ha-text-secondary {
538
+ color: #e2498a;
539
+ }
540
+
541
+ .btn-more {
542
+ color: #e2498a;
543
+ text-decoration: none;
544
+ font-size: 16px;
545
+ }
546
+ .btn-more:hover {
547
+ color: #5e3bc4;
548
+ }
549
+
550
+ .ha-btn-view {
551
+ color: #835ef1;
552
+ text-decoration: none;
553
+ font-size: 16px;
554
+ }
555
+
556
+ .ha-cta {
557
+ padding: 2.5rem 3rem;
558
+ background: #e2498a;
559
+ background-image: -webkit-linear-gradient(320deg, #e05da4 0%, #7249cf 100%);
560
+ background-image: linear-gradient(130deg, #e05da4 0%, #7249cf 100%);
561
+ color: #fff;
562
+ }
563
+ .ha-cta .ha-feature-title {
564
+ margin-top: 0;
565
+ color: #fff;
566
+ }
567
+ .ha-cta p {
568
+ margin-bottom: 1rem;
569
+ color: #daacdd;
570
+ }
571
+ .ha-cta .link {
572
+ color: #fff;
573
+ text-decoration: underline;
574
+ font-size: 16px;
575
+ }
576
+ .ha-cta .link:hover {
577
+ text-decoration: none;
578
+ }
579
+ .ha-cta .btn-contribute {
580
+ display: inline-block;
581
+ padding: .95rem 1.5rem;
582
+ border-radius: 4px;
583
+ background: #fff;
584
+ color: #7f4bca;
585
+ text-decoration: none;
586
+ font-size: 15px;
587
+ }
588
+ .ha-cta .btn-contribute:hover {
589
+ background: #e2498a;
590
+ color: #fff;
591
+ }
592
+
593
+ .ha-section-title {
594
+ margin: 0;
595
+ font-size: 48px;
596
+ line-height: 1;
597
+ }
598
+
599
+ .ha-badge {
600
+ display: inline-block;
601
+ margin-bottom: .3rem;
602
+ padding: .6rem 1rem;
603
+ border-radius: 5px;
604
+ background: #e2498a;
605
+ background-image: -webkit-linear-gradient(320deg, #e05da4 0%, #7249cf 100%);
606
+ background-image: linear-gradient(130deg, #e05da4 0%, #7249cf 100%);
607
+ color: #fff;
608
+ font-weight: bold;
609
+ font-size: 24px;
610
+ }
611
+
612
+ .ha-sub-title-sm {
613
+ margin: .3rem 0 0 0;
614
+ font-size: 16px;
615
+ }
616
+
617
+ .ha-border-box {
618
+ padding: 3rem;
619
+ border: 1px solid #ececec;
620
+ border-radius: 5px;
621
+ box-shadow: 10px 0 20px rgba(0, 0, 0, .05);
622
+ }
623
+
624
+ .ha-media {
625
+ display: -webkit-box;
626
+ display: -webkit-flex;
627
+ display: -ms-flexbox;
628
+ display: flex;
629
+ -webkit-box-align: start;
630
+ -webkit-align-items: flex-start;
631
+ align-items: flex-start;
632
+ -ms-flex-align: start;
633
+ }
634
+ .ha-media img {
635
+ width: 180px;
636
+ height: auto;
637
+ }
638
+ .ha-media h3 a {
639
+ color: #242424;
640
+ text-decoration: none;
641
+ line-height: 1.4;
642
+ }
643
+ .ha-media h3 a:hover {
644
+ color: #e2498a;
645
+ }
646
+ .ha-media .ha-date {
647
+ color: #8c8c8c;
648
+ }
649
+
650
+ .ha-media-body {
651
+ -webkit-box-flex: 1;
652
+ -webkit-flex: 1;
653
+ -ms-flex: 1;
654
+ flex: 1;
655
+ }
656
+
657
+ .ha-pro-widget {
658
+ display: -webkit-box;
659
+ display: -webkit-flex;
660
+ display: -ms-flexbox;
661
+ display: flex;
662
+ -webkit-box-align: center;
663
+ -webkit-align-items: center;
664
+ align-items: center;
665
+ -ms-flex-align: center;
666
+ margin-bottom: 25px;
667
+ padding: 1.5rem 1rem;
668
+ border-radius: 4px;
669
+ background: #7c58e5;
670
+ color: #fff;
671
+ text-decoration: none;
672
+ font-weight: bold;
673
+ font-size: 13px;
674
+ }
675
+ .ha-pro-widget:hover,
676
+ .ha-pro-widget:focus {
677
+ background: #df4b89;
678
+ color: #fff;
679
+ }
680
+ .ha-pro-widget i {
681
+ padding-right: 15px;
682
+ font-weight: bold;
683
+ font-size: 20px;
684
+ }
685
+
686
+ .ha-dashboard .f18 {
687
+ font-size: 18px;
688
+ }
689
+
690
+ .ha-dashboard .f16 {
691
+ font-size: 16px;
692
+ }
693
+
694
+ .ha-dashboard .ha-py-5 {
695
+ padding-top: 4rem;
696
+ padding-bottom: 4rem;
697
+ }
698
+
699
+ .ha-dashboard .ha-pt-0 {
700
+ padding-top: 0;
701
+ }
702
+
703
+ .ha-dashboard .ha-pb-0 {
704
+ padding-bottom: 0;
705
+ }
706
+
707
+ .ha-dashboard .ha-pb-3 {
708
+ margin-bottom: 3rem;
709
+ }
710
+
711
+ .ha-dashboard .ha-pt-2 {
712
+ padding-top: 2rem;
713
+ }
714
+
715
+ .ha-dashboard .ha-pt-3 {
716
+ padding-top: 3rem;
717
+ }
718
+
719
+ .ha-dashboard .ha-pr-2 {
720
+ padding-right: 2rem;
721
+ }
722
+
723
+ .ha-dashboard .ha-pl-2 {
724
+ padding-left: 2rem;
725
+ }
726
+
727
+ .ha-dashboard .ha-mt-0 {
728
+ margin-top: 0;
729
+ }
730
+
731
+ .ha-dashboard .ha-mb-0 {
732
+ margin-bottom: 0;
733
+ }
734
+
735
+ .ha-dashboard .ha-mb-2 {
736
+ margin-bottom: 2rem;
737
+ }
738
+
739
+ .ha-dashboard .ha-mb-3 {
740
+ margin-bottom: 3rem;
741
+ }
742
+
743
+ .ha-dashboard .ha-mr-3 {
744
+ margin-right: 1.5rem;
745
+ }
746
+
747
+ .ha-dashboard p {
748
+ margin-bottom: 2.5rem;
749
+ }
750
+
751
+ .ha-dashboard a,
752
+ .ha-dashboard a:hover {
753
+ -webkit-transition: all .3s;
754
+ transition: all .3s;
755
+ }
756
+
757
+ .ha-dashboard .ha-rounded {
758
+ border-radius: 5px;
759
+ }
760
+
761
+ .ha-dashboard .ha-align-center {
762
+ text-align: center;
763
+ }
764
+
765
+ .ha-dashboard .ha-align-right {
766
+ text-align: right;
767
+ }
768
+
769
+ .ha-dashboard .ha-img-fluid {
770
+ max-width: 100%;
771
+ height: auto;
772
+ }
773
+
774
+ .ha-dashboard .ha-align-items-center {
775
+ -webkit-box-align: center !important;
776
+ -webkit-align-items: center !important;
777
+ align-items: center !important;
778
+ -ms-flex-align: center !important;
779
+ }
780
+
781
+ .ha-dashboard .ha-align-items-end {
782
+ -webkit-box-align: end !important;
783
+ -webkit-align-items: flex-end !important;
784
+ align-items: flex-end !important;
785
+ -ms-flex-align: end !important;
786
+ }
787
+
788
+ .ha-dashboard .ha-min-height-455 {
789
+ min-height: 455px;
790
+ }
791
+
792
+ .ha-dashboard .ha-title-icon-size {
793
+ width: 48px;
794
+ height: auto;
795
+ }
796
+
797
+ @media (min-width: 768px) {
798
+ .ha-col {
799
+ position: relative;
800
+ padding-right: 15px;
801
+ padding-left: 15px;
802
+ width: 100%;
803
+ }
804
+ .ha-col-12 {
805
+ -webkit-box-flex: 0;
806
+ -webkit-flex: 0 0 100%;
807
+ -ms-flex: 0 0 100%;
808
+ flex: 0 0 100%;
809
+ max-width: 100%;
810
+ }
811
+ .ha-col-11 {
812
+ -webkit-box-flex: 0;
813
+ -webkit-flex: 0 0 91.666667%;
814
+ -ms-flex: 0 0 91.666667%;
815
+ flex: 0 0 91.666667%;
816
+ max-width: 91.666667%;
817
+ }
818
+ .ha-col-10 {
819
+ -webkit-box-flex: 0;
820
+ -webkit-flex: 0 0 83.333333%;
821
+ -ms-flex: 0 0 83.333333%;
822
+ flex: 0 0 83.333333%;
823
+ max-width: 83.333333%;
824
+ }
825
+ .ha-col-9 {
826
+ -webkit-box-flex: 0;
827
+ -webkit-flex: 0 0 75%;
828
+ -ms-flex: 0 0 75%;
829
+ flex: 0 0 75%;
830
+ max-width: 75%;
831
+ }
832
+ .ha-col-8 {
833
+ -webkit-box-flex: 0;
834
+ -webkit-flex: 0 0 66.666667%;
835
+ -ms-flex: 0 0 66.666667%;
836
+ flex: 0 0 66.666667%;
837
+ max-width: 66.666667%;
838
+ }
839
+ .ha-col-7 {
840
+ -webkit-box-flex: 0;
841
+ -webkit-flex: 0 0 58.333333%;
842
+ -ms-flex: 0 0 58.333333%;
843
+ flex: 0 0 58.333333%;
844
+ max-width: 58.333333%;
845
+ }
846
+ .ha-col-6 {
847
+ -webkit-box-flex: 0;
848
+ -webkit-flex: 0 0 50%;
849
+ -ms-flex: 0 0 50%;
850
+ flex: 0 0 50%;
851
+ max-width: 50%;
852
+ }
853
+ .ha-col-5 {
854
+ -webkit-box-flex: 0;
855
+ -webkit-flex: 0 0 41.666667%;
856
+ -ms-flex: 0 0 41.666667%;
857
+ flex: 0 0 41.666667%;
858
+ max-width: 41.666667%;
859
+ }
860
+ .ha-col-4 {
861
+ -webkit-box-flex: 0;
862
+ -webkit-flex: 0 0 33.333333%;
863
+ -ms-flex: 0 0 33.333333%;
864
+ flex: 0 0 33.333333%;
865
+ max-width: 33.333333%;
866
+ }
867
+ .ha-col-3 {
868
+ -webkit-box-flex: 0;
869
+ -webkit-flex: 0 0 25%;
870
+ -ms-flex: 0 0 25%;
871
+ flex: 0 0 25%;
872
+ max-width: 25%;
873
+ }
874
+ .ha-col-2 {
875
+ -webkit-box-flex: 0;
876
+ -webkit-flex: 0 0 16.666667%;
877
+ -ms-flex: 0 0 16.666667%;
878
+ flex: 0 0 16.666667%;
879
+ max-width: 16.666667%;
880
+ }
881
+ .ha-col-1 {
882
+ -webkit-box-flex: 0;
883
+ -webkit-flex: 0 0 8.333333%;
884
+ -ms-flex: 0 0 8.333333%;
885
+ flex: 0 0 8.333333%;
886
+ max-width: 8.333333%;
887
+ }
888
+ }
889
+
890
+ /* Add this attribute to the element that needs a tooltip */
891
+ [data-tooltip] {
892
+ position: relative;
893
+ z-index: 2;
894
+ cursor: pointer;
895
+ }
896
+
897
+ /* Hide the tooltip content by default */
898
+ [data-tooltip]:before,
899
+ [data-tooltip]:after {
900
+ visibility: hidden;
901
+ opacity: 0;
902
+ pointer-events: none;
903
+ }
904
+
905
+ /* Position tooltip above the element */
906
+ [data-tooltip]:before {
907
+ position: absolute;
908
+ bottom: 140%;
909
+ left: 50%;
910
+ padding: 5px;
911
+ width: 140px;
912
+ border-radius: 3px;
913
+ background-color: #000;
914
+ background-color: rgba(51, 51, 51, .9);
915
+ color: #fff;
916
+ content: attr(data-tooltip);
917
+ text-align: center;
918
+ font-size: 12px;
919
+ line-height: 1.2;
920
+ -webkit-transform: translateX(-50%);
921
+ -ms-transform: translateX(-50%);
922
+ transform: translateX(-50%);
923
+ }
924
+
925
+ /* Triangle hack to make tooltip look like a speech bubble */
926
+ [data-tooltip]:after {
927
+ position: absolute;
928
+ left: 50%;
929
+ margin-top: -8px;
930
+ margin-left: -5px;
931
+ width: 0;
932
+ border-top: 5px solid #000;
933
+ border-top: 5px solid rgba(51, 51, 51, .9);
934
+ border-right: 5px solid transparent;
935
+ border-left: 5px solid transparent;
936
+ content: " ";
937
+ font-size: 0;
938
+ line-height: 0;
939
+ }
940
+
941
+ /* Show tooltip content on hover */
942
+ [data-tooltip]:hover:before,
943
+ [data-tooltip]:hover:after {
944
+ visibility: visible;
945
+ opacity: 1;
946
+ }
assets/admin/css/dashboard.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .ha-dashboard-tabs__content-item:after,.ha-dashboard-tabs__content-item:before,.ha-dashboard-tabs__nav:after,.ha-dashboard-tabs__nav:before,.ha-dashboard-widgets:after,.ha-dashboard-widgets:before{display:table;content:" "}.ha-dashboard-tabs__content-item:after,.ha-dashboard-tabs__nav:after,.ha-dashboard-widgets:after{clear:both}.ha-dashboard{padding-top:20px}.ha-dashboard,.ha-dashboard *{box-sizing:border-box;font-family:"Nunito",sans-serif}.ha-dashboard-btn{display:inline-block;padding:15px 25px;border:0;border-radius:5px;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);text-align:center;text-decoration:none;font-weight:700;font-size:13px;line-height:1;cursor:pointer;-webkit-transition:all .2s;transition:all .2s}.ha-dashboard-btn:active,.ha-dashboard-btn:focus,.ha-dashboard-btn:hover{outline:0;box-shadow:none}.ha-dashboard-btn--lg{padding:15px 30px;font-size:14px}.ha-dashboard-btn--save{width:13em;background-color:#5db429;color:#fff}.ha-dashboard-btn--save:active,.ha-dashboard-btn--save:focus,.ha-dashboard-btn--save:hover{background-color:#488a20;color:#fff}.ha-dashboard-btn--save.disabled,.ha-dashboard-btn--save:disabled{background-color:#b3b3b3;box-shadow:none;opacity:.7;cursor:not-allowed}.ha-dashboard-tabs__nav-btn{float:right}.ha-dashboard-tabs__nav-item{display:block;float:left;padding:15px 40px;border-top:3px solid #bbb;border-radius:5px 5px 0 0;background-color:#e8e8e8;color:#888;text-decoration:none;text-transform:uppercase;font-weight:700;font-size:14px}.ha-dashboard-tabs__nav-item--pro{border-color:#d6226e;background-color:#e2498a;color:#fff}.ha-dashboard-tabs__nav-item.tab--is-active,.ha-dashboard-tabs__nav-item:active,.ha-dashboard-tabs__nav-item:focus,.ha-dashboard-tabs__nav-item:hover{outline:none;border-color:#562dd4;background-color:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);color:#562dd4;-webkit-transition:all .3s;transition:all .3s}.ha-dashboard-tabs__nav-item--pro.tab--is-active,.ha-dashboard-tabs__nav-item--pro:active,.ha-dashboard-tabs__nav-item--pro:focus,.ha-dashboard-tabs__nav-item--pro:hover{border-color:#e2498a;color:#e2498a}.ha-dashboard-tabs__nav-item:not(:last-child){margin-right:10px}.ha-dashboard-tabs__content-item{display:none;padding:40px;border-radius:0 0 5px 5px;background-color:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.ha-dashboard-tabs__content-item.tab--is-active{position:relative;z-index:1;display:block}.ha-dashboard-panel__header{padding-bottom:40px}.ha-dashboard-panel__header-content>h2{margin:0 0 20px;font-size:2em}.ha-dashboard-panel__header-content>p{margin:0;color:#8c8c8c}.ha-dashboard-panel__footer{margin-top:20px;padding-top:20px;border-top:1px dashed #e8e8e8}.ha-dashboard-widgets{margin-right:-10px;margin-left:-10px}.ha-dashboard-widgets__item{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;float:left;overflow:hidden;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;margin-right:10px;margin-bottom:20px;margin-left:10px;padding:30px 20px;width:calc(100% - 20px);border:1px solid #e8e8e8;border-radius:5px}@media (min-width:650px){.ha-dashboard-widgets__item{width:calc(50% - 20px)}}@media (min-width:1100px){.ha-dashboard-widgets__item{width:calc(33.33% - 20px)}}@media (min-width:1350px){.ha-dashboard-widgets__item{width:calc(25% - 20px)}}.ha-dashboard-widgets__item.item--is-placeholder{opacity:.7}.ha-dashboard-widgets__item-icon{display:inline-block;margin-right:10px;width:30px;text-align:center;font-size:20px}.ha-dashboard-widgets__item:hover .ha-dashboard-widgets__item-icon{background-image:-webkit-linear-gradient(315deg,#e2498a 25%,#562dd4 100%);background-image:linear-gradient(135deg,#e2498a 25%,#562dd4 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.ha-dashboard-widgets__item-title{display:inline-block;margin:0;color:#444;font-weight:400;font-size:13px}.ha-dashboard-widgets__item-title>label{font-weight:700}.ha-dashboard-widgets__item-preview{display:inline-block;margin-left:5px;color:#c2cbd2;font-size:10px;-webkit-transition:all .2s;transition:all .2s}.ha-dashboard-widgets__item-preview:active,.ha-dashboard-widgets__item-preview:focus,.ha-dashboard-widgets__item-preview:hover{box-shadow:none;color:#8799a7}.ha-dashboard-widgets__item-badge{position:absolute;top:-2px;left:-18px;padding:6px 8px 3px;width:50px;background-color:#e2498a;color:#fff;text-align:center;text-transform:uppercase;font-weight:700;font-size:7px;line-height:1;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.ha-dashboard-widgets__item-toggle{position:absolute!important;right:20px}.ha-dashboard .ha-toggle{position:relative;display:block;overflow:hidden;width:40px;height:24px;border-radius:100px;background-color:#e8e8e8;box-shadow:inset 0 0 2px 1px rgba(0,0,0,.05)}.ha-dashboard .ha-toggle__check,.ha-dashboard .ha-toggle__switch,.ha-dashboard .ha-toggle__track{position:absolute;display:block}.ha-dashboard .ha-toggle__check{top:0;left:0;z-index:6;width:100%;height:100%;opacity:0;cursor:pointer}.ha-dashboard .ha-toggle__check.disabled,.ha-dashboard .ha-toggle__check:disabled{z-index:0;opacity:0}.ha-dashboard .ha-toggle__check:checked~.ha-toggle__track{box-shadow:inset 0 0 0 20px #562dd4}.ha-dashboard .ha-toggle__check:checked~.ha-toggle__switch{right:2px;left:18px;-webkit-transition:.35s cubic-bezier(.785,.135,.15,.86);transition:.35s cubic-bezier(.785,.135,.15,.86);-webkit-transition-delay:.05s,0s;transition-delay:.05s,0s;-webkit-transition-property:left,right;transition-property:left,right}.ha-dashboard .ha-toggle__switch,.ha-dashboard .ha-toggle__track{-webkit-transition:.35s cubic-bezier(.785,.135,.15,.86);transition:.35s cubic-bezier(.785,.135,.15,.86)}.ha-dashboard .ha-toggle__switch{z-index:1;background-color:#fff;-webkit-transition-delay:0s,.05s;transition-delay:0s,.05s;-webkit-transition-property:left,right;transition-property:left,right;top:2px;right:18px;bottom:2px;left:2px;border-radius:36px;box-shadow:0 1px 2px rgba(0,0,0,.2)}.ha-dashboard .ha-toggle__track{top:0;right:0;bottom:0;left:0;border-radius:40px;box-shadow:inset 0 0 0 2px rgba(0,0,0,.01)}@-webkit-keyframes animateTextIndent{0%,to{letter-spacing:15px}50%{letter-spacing:0}}@keyframes animateTextIndent{0%,to{letter-spacing:15px}50%{letter-spacing:0}}.ha-action-list{margin:-4px;padding-top:20px;font-weight:700;font-size:14px;opacity:.7}.ha-action--divider{padding-right:10px;padding-left:10px;color:#e8e8e8}.ha-action--btn{display:inline-block;margin:4px;padding:5px 10px 4px;outline:none;border:1px solid;border-radius:3px;background:0 0;box-shadow:none;font-weight:700;line-height:1;cursor:pointer}.ha-action--btn[data-filter="*"]{color:#666}.ha-action--btn[data-filter="*"]:focus,.ha-action--btn[data-filter="*"]:hover{border-color:#666;background-color:#666;color:#fff}.ha-action--btn[data-filter=free]{color:#562dd4}.ha-action--btn[data-filter=free]:focus,.ha-action--btn[data-filter=free]:hover{border-color:#562dd4;background-color:#562dd4;color:#fff}.ha-action--btn[data-filter=pro]{color:#e2498a}.ha-action--btn[data-filter=pro]:focus,.ha-action--btn[data-filter=pro]:hover{border-color:#e2498a;background-color:#e2498a;color:#fff}.ha-action--btn[data-action=enable]{color:#5db429}.ha-action--btn[data-action=enable]:focus,.ha-action--btn[data-action=enable]:hover{border-color:#5db429;background-color:#5db429;color:#fff}.ha-action--btn[data-action=disable]{color:#e63d3d}.ha-action--btn[data-action=disable]:focus,.ha-action--btn[data-action=disable]:hover{border-color:#e63d3d;background-color:#e63d3d;color:#fff}.ha-home-banner{position:relative;padding-top:25.2%;border-radius:5px;background:url(../../imgs/admin/dashboard-header.png) no-repeat center center/cover}.ha-home-banner__content{position:absolute;top:50%;left:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding-right:15px;padding-left:15px;max-width:1000px;width:100%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.ha-home-banner__logo{position:relative;top:-8px;margin-right:50px;width:150px;height:auto}.ha-home-banner__divider{width:4px;height:60px;border-radius:10px;background-color:#fff}.ha-home-banner h2{float:left;margin:0;padding-left:50px;color:#fff;font-size:28px;line-height:1.1}.ha-home-banner h2>span{font-weight:400}.ha-home-body{margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px;max-width:1000px}.ha-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.ha-feature-title{margin-bottom:1rem;font-weight:700;font-size:28px}.ha-feature-sub-title-a{color:#242424;text-decoration:none}.ha-feature-sub-title-a:hover{color:#e2498a}.ha-feature-sub-title{margin-bottom:1rem;font-weight:700;font-size:18px;line-height:1.4}.ha-btn{display:inline-block;padding:.95rem 1.5rem;border-radius:4px;text-decoration:none;font-weight:700;font-size:14px}.ha-btn:focus,.ha-btn:hover{outline:none;box-shadow:none}.ha-btn-primary{background:#5e3bc4;color:#fff}.ha-btn-primary:focus,.ha-btn-primary:hover{background:#4b2f9d;color:#fff}.ha-btn-secondary{background:#e2498a;color:#fff}.ha-btn-secondary:focus,.ha-btn-secondary:hover{background:#d6226e;color:#fff}.btn-more:hover,.ha-text-primary{color:#5e3bc4}.ha-media h3 a:hover,.ha-text-secondary{color:#e2498a}.btn-more,.ha-btn-view{color:#e2498a;text-decoration:none;font-size:16px}.ha-btn-view{color:#835ef1}.ha-cta{padding:2.5rem 3rem;background:#e2498a;background-image:-webkit-linear-gradient(320deg,#e05da4 0%,#7249cf 100%);background-image:linear-gradient(130deg,#e05da4 0%,#7249cf 100%);color:#fff}.ha-cta .ha-feature-title{margin-top:0;color:#fff}.ha-cta p{margin-bottom:1rem;color:#daacdd}.ha-cta .link{color:#fff;text-decoration:underline;font-size:16px}.ha-cta .link:hover,.ha-media h3 a{text-decoration:none}.ha-cta .btn-contribute{display:inline-block;padding:.95rem 1.5rem;border-radius:4px;background:#fff;color:#7f4bca;text-decoration:none;font-size:15px}.ha-cta .btn-contribute:hover{background:#e2498a;color:#fff}.ha-section-title{margin:0;font-size:48px;line-height:1}.ha-badge{display:inline-block;margin-bottom:.3rem;padding:.6rem 1rem;border-radius:5px;background:#e2498a;background-image:-webkit-linear-gradient(320deg,#e05da4 0%,#7249cf 100%);background-image:linear-gradient(130deg,#e05da4 0%,#7249cf 100%);color:#fff;font-weight:700;font-size:24px}.ha-sub-title-sm{margin:.3rem 0 0;font-size:16px}.ha-border-box{padding:3rem;border:1px solid #ececec;border-radius:5px;box-shadow:10px 0 20px rgba(0,0,0,.05)}.ha-media{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start;-ms-flex-align:start}.ha-media img{width:180px;height:auto}.ha-media h3 a{color:#242424;line-height:1.4}.ha-media .ha-date{color:#8c8c8c}.ha-media-body{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.ha-pro-widget{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;margin-bottom:25px;padding:1.5rem 1rem;border-radius:4px;background:#7c58e5;color:#fff;text-decoration:none;font-weight:700;font-size:13px}.ha-pro-widget:focus,.ha-pro-widget:hover{background:#df4b89;color:#fff}.ha-pro-widget i{padding-right:15px;font-weight:700;font-size:20px}.ha-dashboard .f18{font-size:18px}.ha-dashboard .f16{font-size:16px}.ha-dashboard .ha-py-5{padding-top:4rem;padding-bottom:4rem}.ha-dashboard .ha-pt-0{padding-top:0}.ha-dashboard .ha-pb-0{padding-bottom:0}.ha-dashboard .ha-pb-3{margin-bottom:3rem}.ha-dashboard .ha-pt-2{padding-top:2rem}.ha-dashboard .ha-pt-3{padding-top:3rem}.ha-dashboard .ha-pr-2{padding-right:2rem}.ha-dashboard .ha-pl-2{padding-left:2rem}.ha-dashboard .ha-mt-0{margin-top:0}.ha-dashboard .ha-mb-0{margin-bottom:0}.ha-dashboard .ha-mb-2{margin-bottom:2rem}.ha-dashboard .ha-mb-3{margin-bottom:3rem}.ha-dashboard .ha-mr-3{margin-right:1.5rem}.ha-dashboard p{margin-bottom:2.5rem}.ha-dashboard a,.ha-dashboard a:hover{-webkit-transition:all .3s;transition:all .3s}.ha-dashboard .ha-rounded{border-radius:5px}.ha-dashboard .ha-align-center{text-align:center}.ha-dashboard .ha-align-right{text-align:right}.ha-dashboard .ha-img-fluid{max-width:100%;height:auto}.ha-dashboard .ha-align-items-center{-webkit-box-align:center!important;-webkit-align-items:center!important;align-items:center!important;-ms-flex-align:center!important}.ha-dashboard .ha-align-items-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;align-items:flex-end!important;-ms-flex-align:end!important}.ha-dashboard .ha-min-height-455{min-height:455px}.ha-dashboard .ha-title-icon-size{width:48px;height:auto}@media (min-width:768px){.ha-col{position:relative;padding-right:15px;padding-left:15px;width:100%}.ha-col-11,.ha-col-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.ha-col-11{-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.ha-col-10,.ha-col-9{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.ha-col-9{-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.ha-col-7,.ha-col-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.ha-col-7{-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.ha-col-5,.ha-col-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.ha-col-5{-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.ha-col-3,.ha-col-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.ha-col-3{-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.ha-col-1,.ha-col-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.ha-col-1{-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}}[data-tooltip]{position:relative;z-index:2;cursor:pointer}[data-tooltip]:after,[data-tooltip]:before{visibility:hidden;opacity:0;pointer-events:none}[data-tooltip]:before{position:absolute;bottom:140%;left:50%;padding:5px;width:140px;border-radius:3px;background-color:#000;background-color:rgba(51,51,51,.9);color:#fff;content:attr(data-tooltip);text-align:center;font-size:12px;line-height:1.2;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}[data-tooltip]:after{position:absolute;left:50%;margin-top:-8px;margin-left:-5px;width:0;border-top:5px solid #000;border-top:5px solid rgba(51,51,51,.9);border-right:5px solid transparent;border-left:5px solid transparent;content:" ";font-size:0;line-height:0}[data-tooltip]:hover:after,[data-tooltip]:hover:before{visibility:visible;opacity:1}
assets/admin/css/{main.css → editor.css} RENAMED
@@ -1,12 +1,20 @@
 
 
 
 
 
1
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element,
2
- .elementor-panel #elementor-panel-elements .happy-addons-addon {
 
3
  -webkit-transition: background-image .3s;
4
  transition: background-image .3s;
5
  }
6
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element .icon,
7
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element .title,
8
- .elementor-panel #elementor-panel-elements .happy-addons-addon .icon,
9
- .elementor-panel #elementor-panel-elements .happy-addons-addon .title {
 
 
10
  background-image: -webkit-linear-gradient(315deg, #e2498a 25%, #562dd4 100%);
11
  background-image: linear-gradient(135deg, #e2498a 25%, #562dd4 100%);
12
  -webkit-background-clip: text;
@@ -17,8 +25,10 @@
17
  }
18
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover,
19
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus,
20
- .elementor-panel #elementor-panel-elements .happy-addons-addon:hover,
21
- .elementor-panel #elementor-panel-elements .happy-addons-addon:focus {
 
 
22
  background-image: -webkit-linear-gradient(315deg, #e2498a 0%, #562dd4 100%);
23
  background-image: linear-gradient(135deg, #e2498a 0%, #562dd4 100%);
24
  }
@@ -26,10 +36,14 @@
26
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover .title,
27
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus .icon,
28
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus .title,
29
- .elementor-panel #elementor-panel-elements .happy-addons-addon:hover .icon,
30
- .elementor-panel #elementor-panel-elements .happy-addons-addon:hover .title,
31
- .elementor-panel #elementor-panel-elements .happy-addons-addon:focus .icon,
32
- .elementor-panel #elementor-panel-elements .happy-addons-addon:focus .title {
 
 
 
 
33
  background: transparent;
34
  color: #fff;
35
 
1
+ .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element .icon,
2
+ .elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element .icon {
3
+ height: 46px;
4
+ }
5
+
6
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element,
7
+ .elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element,
8
+ .elementor-panel #elementor-panel-elements .is-ha-widget {
9
  -webkit-transition: background-image .3s;
10
  transition: background-image .3s;
11
  }
12
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element .icon,
13
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element .title,
14
+ .elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element .icon,
15
+ .elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element .title,
16
+ .elementor-panel #elementor-panel-elements .is-ha-widget .icon,
17
+ .elementor-panel #elementor-panel-elements .is-ha-widget .title {
18
  background-image: -webkit-linear-gradient(315deg, #e2498a 25%, #562dd4 100%);
19
  background-image: linear-gradient(135deg, #e2498a 25%, #562dd4 100%);
20
  -webkit-background-clip: text;
25
  }
26
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover,
27
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus,
28
+ .elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element:hover,
29
+ .elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element:focus,
30
+ .elementor-panel #elementor-panel-elements .is-ha-widget:hover,
31
+ .elementor-panel #elementor-panel-elements .is-ha-widget:focus {
32
  background-image: -webkit-linear-gradient(315deg, #e2498a 0%, #562dd4 100%);
33
  background-image: linear-gradient(135deg, #e2498a 0%, #562dd4 100%);
34
  }
36
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover .title,
37
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus .icon,
38
  .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus .title,
39
+ .elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element:hover .icon,
40
+ .elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element:hover .title,
41
+ .elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element:focus .icon,
42
+ .elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element:focus .title,
43
+ .elementor-panel #elementor-panel-elements .is-ha-widget:hover .icon,
44
+ .elementor-panel #elementor-panel-elements .is-ha-widget:hover .title,
45
+ .elementor-panel #elementor-panel-elements .is-ha-widget:focus .icon,
46
+ .elementor-panel #elementor-panel-elements .is-ha-widget:focus .title {
47
  background: transparent;
48
  color: #fff;
49
 
assets/admin/css/editor.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element .icon,.elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element .icon{height:46px}.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element,.elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element,.elementor-panel #elementor-panel-elements .is-ha-widget{-webkit-transition:background-image .3s;transition:background-image .3s}.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element .icon,.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element .title,.elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element .icon,.elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element .title,.elementor-panel #elementor-panel-elements .is-ha-widget .icon,.elementor-panel #elementor-panel-elements .is-ha-widget .title{background-image:-webkit-linear-gradient(315deg,#e2498a 25%,#562dd4 100%);background-image:linear-gradient(135deg,#e2498a 25%,#562dd4 100%);-webkit-background-clip:text;-webkit-transition:background-image .2s,color .2s;transition:background-image .2s,color .2s;-webkit-text-fill-color:transparent}.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus,.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover,.elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element:focus,.elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element:hover,.elementor-panel #elementor-panel-elements .is-ha-widget:focus,.elementor-panel #elementor-panel-elements .is-ha-widget:hover{background-image:-webkit-linear-gradient(315deg,#e2498a 0%,#562dd4 100%);background-image:linear-gradient(135deg,#e2498a 0%,#562dd4 100%)}.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus .icon,.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus .title,.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover .icon,.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover .title,.elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element:focus .icon,.elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element:focus .title,.elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element:hover .icon,.elementor-panel #elementor-panel-category-happy_addons_pro_category .elementor-element:hover .title,.elementor-panel #elementor-panel-elements .is-ha-widget:focus .icon,.elementor-panel #elementor-panel-elements .is-ha-widget:focus .title,.elementor-panel #elementor-panel-elements .is-ha-widget:hover .icon,.elementor-panel #elementor-panel-elements .is-ha-widget:hover .title{background:0 0;color:#fff;-webkit-text-fill-color:initial}.elementor-panel .elementor-control-_section_happy_effects .elementor-panel-heading-title,.elementor-panel .elementor-control-_section_happy_effects .elementor-panel-heading-toggle{color:#562dd4}.elementor-control-ha_floating_fx_rotate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after,.elementor-control-ha_floating_fx_scale_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after,.elementor-control-ha_floating_fx_translate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after{left:-5px;box-shadow:-2px 2px 3px 0 rgba(0,0,0,.1)}.elementor-control-ha_floating_fx_rotate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after,.elementor-control-ha_floating_fx_scale_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after,.elementor-control-ha_floating_fx_translate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after{left:5px;box-shadow:2px -2px 3px 0 rgba(0,0,0,.1)}.elementor-control-ha_floating_fx_rotate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper .noUi-tooltip,.elementor-control-ha_floating_fx_scale_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper .noUi-tooltip,.elementor-control-ha_floating_fx_translate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper .noUi-tooltip{top:auto;bottom:calc(100% + 5px);left:100%}
assets/admin/css/main.min.css DELETED
@@ -1 +0,0 @@
1
- .elementor-panel #elementor-panel-category-happy_addons_category .elementor-element,.elementor-panel #elementor-panel-elements .happy-addons-addon{-webkit-transition:background-image .3s;transition:background-image .3s}.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element .icon,.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element .title,.elementor-panel #elementor-panel-elements .happy-addons-addon .icon,.elementor-panel #elementor-panel-elements .happy-addons-addon .title{background-image:-webkit-linear-gradient(315deg,#e2498a 25%,#562dd4 100%);background-image:linear-gradient(135deg,#e2498a 25%,#562dd4 100%);-webkit-background-clip:text;-webkit-transition:background-image .2s,color .2s;transition:background-image .2s,color .2s;-webkit-text-fill-color:transparent}.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus,.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover,.elementor-panel #elementor-panel-elements .happy-addons-addon:focus,.elementor-panel #elementor-panel-elements .happy-addons-addon:hover{background-image:-webkit-linear-gradient(315deg,#e2498a 0%,#562dd4 100%);background-image:linear-gradient(135deg,#e2498a 0%,#562dd4 100%)}.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus .icon,.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:focus .title,.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover .icon,.elementor-panel #elementor-panel-category-happy_addons_category .elementor-element:hover .title,.elementor-panel #elementor-panel-elements .happy-addons-addon:focus .icon,.elementor-panel #elementor-panel-elements .happy-addons-addon:focus .title,.elementor-panel #elementor-panel-elements .happy-addons-addon:hover .icon,.elementor-panel #elementor-panel-elements .happy-addons-addon:hover .title{background:0 0;color:#fff;-webkit-text-fill-color:initial}.elementor-panel .elementor-control-_section_happy_effects .elementor-panel-heading-title,.elementor-panel .elementor-control-_section_happy_effects .elementor-panel-heading-toggle{color:#562dd4}.elementor-control-ha_floating_fx_rotate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after,.elementor-control-ha_floating_fx_scale_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after,.elementor-control-ha_floating_fx_translate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-lower:after{left:-5px;box-shadow:-2px 2px 3px 0 rgba(0,0,0,.1)}.elementor-control-ha_floating_fx_rotate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after,.elementor-control-ha_floating_fx_scale_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after,.elementor-control-ha_floating_fx_translate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper:after{left:5px;box-shadow:2px -2px 3px 0 rgba(0,0,0,.1)}.elementor-control-ha_floating_fx_rotate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper .noUi-tooltip,.elementor-control-ha_floating_fx_scale_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper .noUi-tooltip,.elementor-control-ha_floating_fx_translate_toggle+.elementor-controls-popover .elementor-control-type-slider--handles-range .elementor-slider .noUi-handle-upper .noUi-tooltip{top:auto;bottom:calc(100% + 5px);left:100%}
 
assets/admin/js/{admin-bar.js → admin.js} RENAMED
@@ -1,6 +1,6 @@
1
  ;(function($) {
2
  $(function() {
3
- var $clearCache = $('.hajs-clear-cache ');
4
 
5
  $clearCache.on('click', 'a', function(e) {
6
  e.preventDefault();
1
  ;(function($) {
2
  $(function() {
3
+ var $clearCache = $('.hajs-clear-cache');
4
 
5
  $clearCache.on('click', 'a', function(e) {
6
  e.preventDefault();
assets/admin/js/admin.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a){a(function(){a(".hajs-clear-cache").on("click","a",function(e){e.preventDefault();var c="all",n=a(e.delegateTarget);n.hasClass("ha-clear-page-cache")&&(c="page"),n.addClass("ha-clear-cache--init"),a.post(HappyAdmin.ajax_url,{action:"ha_clear_cache",type:c,nonce:HappyAdmin.nonce,post_id:HappyAdmin.post_id}).done(function(a){n.removeClass("ha-clear-cache--init").addClass("ha-clear-cache--done")})})})}(jQuery);
assets/admin/js/dashboard.js ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ;(function($, HappyDashboard) {
2
+ 'use strict';
3
+
4
+ $(function() {
5
+
6
+ var $tabsWrapper = $('.ha-dashboard-tabs'),
7
+ $tabsNav = $tabsWrapper.find('.ha-dashboard-tabs__nav'),
8
+ $tabsContent = $tabsWrapper.find('.ha-dashboard-tabs__content'),
9
+ $sidebarMenuWrapper = $('#toplevel_page_happy-addons'),
10
+ $sidebarSubmenu = $sidebarMenuWrapper.find('.wp-submenu');
11
+
12
+ $tabsNav.on('click', '.ha-dashboard-tabs__nav-item', function(event) {
13
+ var $currentTab = $(event.currentTarget);
14
+
15
+ if ( $currentTab.is( '.nav-item-is--link' ) ) {
16
+ return true;
17
+ }
18
+
19
+ event.preventDefault();
20
+
21
+ var $currentTab = $(event.currentTarget),
22
+ tabContentId = event.currentTarget.hash,
23
+ $currentTabContent = $tabsContent.find(tabContentId);
24
+
25
+ window.location.hash = tabContentId;
26
+
27
+ $currentTab
28
+ .addClass('tab--is-active')
29
+ .siblings()
30
+ .removeClass('tab--is-active');
31
+
32
+ $currentTabContent
33
+ .addClass('tab--is-active')
34
+ .siblings()
35
+ .removeClass('tab--is-active');
36
+
37
+ $sidebarSubmenu.find('a').filter(function(i, a) {
38
+ return tabContentId === a.hash;
39
+ }).parent().addClass('current').siblings().removeClass('current');
40
+ });
41
+
42
+ if (window.location.hash) {
43
+ $tabsNav.find('a[href="'+window.location.hash+'"]').click();
44
+ $sidebarSubmenu.find('a').filter(function(i, a) {
45
+ return window.location.hash === a.hash;
46
+ }).parent().addClass('current').siblings().removeClass('current');
47
+ }
48
+
49
+ $sidebarSubmenu.on('click', 'a', function(event) {
50
+ if ( ! event.currentTarget.hash) {
51
+ return true;
52
+ }
53
+ event.preventDefault();
54
+
55
+ window.location.hash = event.currentTarget.hash;
56
+
57
+ var $currentItem = $(event.currentTarget);
58
+ $currentItem.parent().addClass('current').siblings().removeClass('current');
59
+
60
+ $tabsNav.find('a[href="'+event.currentTarget.hash+'"]').click();
61
+ });
62
+
63
+ var $dashboardForm = $('#ha-dashboard-form'),
64
+ $widgetsList = $dashboardForm.find('.ha-dashboard-widgets'),
65
+ $widgetPlaceholder = $widgetsList.find('.item--is-placeholder'),
66
+ $saveButton = $dashboardForm.find('.ha-dashboard-btn--save');
67
+
68
+ $dashboardForm.on('submit', function(event) {
69
+ event.preventDefault();
70
+
71
+ $.post({
72
+ url: HappyDashboard.ajaxUrl,
73
+ data: {
74
+ nonce: HappyDashboard.nonce,
75
+ action: HappyDashboard.action,
76
+ data: $dashboardForm.serialize()
77
+ },
78
+ beforeSend: function() {
79
+ $saveButton
80
+ .text('.....')
81
+ .css('animation', 'animateTextIndent infinite 2.5s');
82
+ },
83
+ success: function(response) {
84
+ if ( response.success ) {
85
+ var t = setTimeout(function () {
86
+ $saveButton
87
+ .css('animation', '')
88
+ .attr('disabled', true)
89
+ .text(HappyDashboard.savedLabel);
90
+ clearTimeout(t);
91
+ }, 500);
92
+ }
93
+ }
94
+ });
95
+ });
96
+
97
+ $dashboardForm.on('change', ':checkbox, :radio', function() {
98
+ $saveButton.attr('disabled', false).text(HappyDashboard.saveChangesLabel);
99
+ });
100
+
101
+ $('.ha-action--btn').on('click', function(event) {
102
+ event.preventDefault();
103
+
104
+ var $currentAction = $(this),
105
+ filter = $currentAction.data('filter'),
106
+ action = $currentAction.data('action'),
107
+ $all = $widgetsList.find('.ha-dashboard-widgets__item'),
108
+ $free = $all.not('.item--is-pro'),
109
+ $pro = $all.filter('.item--is-pro'),
110
+ $toggle = $all.not('.item--is-placeholder').find(':checkbox');
111
+
112
+ if ( filter ) {
113
+ switch ( filter ) {
114
+ case 'free':
115
+ $free.show();
116
+ $pro.hide();
117
+ break;
118
+ case 'pro':
119
+ $free.hide();
120
+ $pro.show();
121
+ break;
122
+ case '*':
123
+ default:
124
+ $all.show();
125
+ break;
126
+ }
127
+ }
128
+
129
+ if ( action ) {
130
+ if ('enable' === action) {
131
+ $toggle.prop('checked', true);
132
+ } else if ( 'disable' === action ) {
133
+ $toggle.prop('checked', false);
134
+ }
135
+ $toggle.trigger('change');
136
+ }
137
+ });
138
+
139
+
140
+ $('.ha-feature-sub-title-a').magnificPopup({
141
+ disableOn: 700,
142
+ type: 'iframe',
143
+ mainClass: 'mfp-fade',
144
+ removalDelay: 160,
145
+ preloader: false,
146
+
147
+ fixedContentPos: false
148
+ });
149
+
150
+ $('.btn-how-to-contribute').on('click', function(event) {
151
+ event.preventDefault();
152
+ $(this).next().show();
153
+ });
154
+ });
155
+ }(jQuery, window.HappyDashboard));
assets/admin/js/dashboard.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a,e){"use strict";a(function(){var t=a(".ha-dashboard-tabs"),n=t.find(".ha-dashboard-tabs__nav"),i=t.find(".ha-dashboard-tabs__content"),s=a("#toplevel_page_happy-addons"),r=s.find(".wp-submenu");n.on("click",".ha-dashboard-tabs__nav-item",function(e){var t=a(e.currentTarget);if(t.is(".nav-item-is--link"))return!0;e.preventDefault();var t=a(e.currentTarget),n=e.currentTarget.hash,s=i.find(n);window.location.hash=n,t.addClass("tab--is-active").siblings().removeClass("tab--is-active"),s.addClass("tab--is-active").siblings().removeClass("tab--is-active"),r.find("a").filter(function(a,e){return n===e.hash}).parent().addClass("current").siblings().removeClass("current")}),window.location.hash&&(n.find('a[href="'+window.location.hash+'"]').click(),r.find("a").filter(function(a,e){return window.location.hash===e.hash}).parent().addClass("current").siblings().removeClass("current")),r.on("click","a",function(e){if(!e.currentTarget.hash)return!0;e.preventDefault(),window.location.hash=e.currentTarget.hash,a(e.currentTarget).parent().addClass("current").siblings().removeClass("current"),n.find('a[href="'+e.currentTarget.hash+'"]').click()});var o=a("#ha-dashboard-form"),c=o.find(".ha-dashboard-widgets"),d=(c.find(".item--is-placeholder"),o.find(".ha-dashboard-btn--save"));o.on("submit",function(t){t.preventDefault(),a.post({url:e.ajaxUrl,data:{nonce:e.nonce,action:e.action,data:o.serialize()},beforeSend:function(){d.text(".....").css("animation","animateTextIndent infinite 2.5s")},success:function(a){if(a.success)var t=setTimeout(function(){d.css("animation","").attr("disabled",!0).text(e.savedLabel),clearTimeout(t)},500)}})}),o.on("change",":checkbox, :radio",function(){d.attr("disabled",!1).text(e.saveChangesLabel)}),a(".ha-action--btn").on("click",function(e){e.preventDefault();var t=a(this),n=t.data("filter"),i=t.data("action"),s=c.find(".ha-dashboard-widgets__item"),r=s.not(".item--is-pro"),o=s.filter(".item--is-pro"),d=s.not(".item--is-placeholder").find(":checkbox");if(n)switch(n){case"free":r.show(),o.hide();break;case"pro":r.hide(),o.show();break;case"*":default:s.show()}i&&("enable"===i?d.prop("checked",!0):"disable"===i&&d.prop("checked",!1),d.trigger("change"))}),a(".ha-feature-sub-title-a").magnificPopup({disableOn:700,type:"iframe",mainClass:"mfp-fade",removalDelay:160,preloader:!1,fixedContentPos:!1}),a(".btn-how-to-contribute").on("click",function(e){e.preventDefault(),a(this).next().show()})})}(jQuery,window.HappyDashboard);
assets/admin/js/{happy-addons.js → editor.js} RENAMED
@@ -6,7 +6,7 @@
6
  $('#elementor-panel-elements')
7
  .find('.hm')
8
  .parents('.elementor-element')
9
- .addClass('happy-addons-addon');
10
  }, 100));
11
  });
12
 
@@ -112,4 +112,13 @@
112
  return ( elementor.helpers && elementor.helpers.renderIcon );
113
  };
114
 
 
 
 
 
 
 
 
 
 
115
  }(elementor, jQuery, window));
6
  $('#elementor-panel-elements')
7
  .find('.hm')
8
  .parents('.elementor-element')
9
+ .addClass('is-ha-widget');
10
  }, 100));
11
  });
12
 
112
  return ( elementor.helpers && elementor.helpers.renderIcon );
113
  };
114
 
115
+ window.ha_get_feature_label = function( text ) {
116
+ var div = document.createElement('DIV');
117
+
118
+ div.innerHTML = text;
119
+ text = div.textContent || div.innerText || text;
120
+
121
+ return text.length > 20 ? text.substring(0, 20) + "..." : text;
122
+ }
123
+
124
  }(elementor, jQuery, window));
assets/admin/js/editor.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(e,t,n){"use strict";function i(){return{translate:["x","y","x_tablet","y_tablet","x_mobile","y_mobile"],skew:["x","y","x_tablet","y_tablet","x_mobile","y_mobile"],scale:["x","y","x_tablet","y_tablet","x_mobile","y_mobile"],rotate:["x","y","z","x_tablet","y_tablet","z_tablet","x_mobile","y_mobile","z_mobile"]}}function a(t,n,i){t="ha_transform_fx_"+t,n="ha_transform_fx_"+n,i.on("change:"+t,function(t,a){if(!a){var o=e.getPanelView().getCurrentPageView().children.find(function(e){return e.model.get("name")===n});i.set(n,_.extend({},i.defaults[n])),o&&o.render()}})}function o(t){var n=elementorFrontend.config.elements.data[t.cid];_.each(i(),function(e,t){_.each(e,function(e){a(t+"_toggle",t+"_"+e,n)})}),e.getPanelView().getCurrentPageView().model.on("editor:close",function(){_.each(i(),function(e,t){n.off("change:ha_transform_fx_"+t+"_toggle")})})}if(e.on("panel:init",function(){t("#elementor-panel-elements-search-input").on("keyup",_.debounce(function(){t("#elementor-panel-elements").find(".hm").parents(".elementor-element").addClass("is-ha-widget")},100))}),e.hooks.addAction("panel/open_editor/widget",function(e,t){o(t)}),e.modules.controls.Icons){var l=e.modules.controls.Icons.extend({getControlValue:function(){var e=this.constructor.__super__.getControlValue.call(this),t=this.model,n=this.getValueToMigrate(),i={value:"",library:"happy-icons"};if(_.isObject(e)&&"svg"!==e.library&&0===e.value.indexOf("fashm"))return i.value=e.value.substr(e.value.indexOf("hm hm-")),this.elementSettingsModel.set(t.get("name"),i),i;if(!_.isObject(e)&&n&&0===n.indexOf("hm hm-"))return i.value=n,this.elementSettingsModel.set(t.get("name"),i),i;if(!this.isMigrationAllowed())return n;if(!n)return e;var a=this.elementSettingsModel.get(this.dataKeys.migratedKey),o=t.get("name");return this.cache.migratedFlag[o]?this.cache.migratedFlag[o]:a&&a[o]?e:this.migrateFa4toFa5(n)}});e.addControlView("icons",l)}n.ha_has_icon_library=function(){return e.helpers&&e.helpers.renderIcon},n.ha_get_feature_label=function(e){var t=document.createElement("DIV");return t.innerHTML=e,e=t.textContent||t.innerText||e,e.length>20?e.substring(0,20)+"...":e}}(elementor,jQuery,window);
assets/admin/js/happy-addons.min.js DELETED
@@ -1 +0,0 @@
1
- !function(e,t,n){"use strict";function a(){return{translate:["x","y","x_tablet","y_tablet","x_mobile","y_mobile"],skew:["x","y","x_tablet","y_tablet","x_mobile","y_mobile"],scale:["x","y","x_tablet","y_tablet","x_mobile","y_mobile"],rotate:["x","y","z","x_tablet","y_tablet","z_tablet","x_mobile","y_mobile","z_mobile"]}}function i(t,n,a){t="ha_transform_fx_"+t,n="ha_transform_fx_"+n,a.on("change:"+t,function(t,i){if(!i){var o=e.getPanelView().getCurrentPageView().children.find(function(e){return e.model.get("name")===n});a.set(n,_.extend({},a.defaults[n])),o&&o.render()}})}function o(t){var n=elementorFrontend.config.elements.data[t.cid];_.each(a(),function(e,t){_.each(e,function(e){i(t+"_toggle",t+"_"+e,n)})}),e.getPanelView().getCurrentPageView().model.on("editor:close",function(){_.each(a(),function(e,t){n.off("change:ha_transform_fx_"+t+"_toggle")})})}if(e.on("panel:init",function(){t("#elementor-panel-elements-search-input").on("keyup",_.debounce(function(){t("#elementor-panel-elements").find(".hm").parents(".elementor-element").addClass("happy-addons-addon")},100))}),e.hooks.addAction("panel/open_editor/widget",function(e,t){o(t)}),e.modules.controls.Icons){var l=e.modules.controls.Icons.extend({getControlValue:function(){var e=this.constructor.__super__.getControlValue.call(this),t=this.model,n=this.getValueToMigrate(),a={value:"",library:"happy-icons"};if(_.isObject(e)&&"svg"!==e.library&&0===e.value.indexOf("fashm"))return a.value=e.value.substr(e.value.indexOf("hm hm-")),this.elementSettingsModel.set(t.get("name"),a),a;if(!_.isObject(e)&&n&&0===n.indexOf("hm hm-"))return a.value=n,this.elementSettingsModel.set(t.get("name"),a),a;if(!this.isMigrationAllowed())return n;if(!n)return e;var i=this.elementSettingsModel.get(this.dataKeys.migratedKey),o=t.get("name");return this.cache.migratedFlag[o]?this.cache.migratedFlag[o]:i&&i[o]?e:this.migrateFa4toFa5(n)}});e.addControlView("icons",l)}n.ha_has_icon_library=function(){return e.helpers&&e.helpers.renderIcon}}(elementor,jQuery,window);
 
assets/css/main.css CHANGED
@@ -48,12 +48,11 @@
48
  clear: both;
49
  }
50
 
51
- .happy-addon {
52
- box-sizing: border-box;
53
- }
54
  .happy-addon * {
55
  box-sizing: border-box;
56
  }
 
57
  .happy-addon img {
58
  max-width: 100%;
59
  height: auto;
@@ -61,6 +60,7 @@
61
  -o-object-fit: cover;
62
  object-fit: cover;
63
  }
 
64
  .happy-addon p:empty {
65
  display: none;
66
  }
@@ -94,6 +94,21 @@
94
  content: "";
95
  }
96
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  .ha-card > .elementor-widget-container,
98
  .ha-infobox > .elementor-widget-container,
99
  .ha-icon-box > .elementor-widget-container,
@@ -146,10 +161,6 @@
146
  .ha-btn.ha-btn--link:focus {
147
  color: #e2498a;
148
  }
149
- .ha-btn-icon {
150
- -webkit-transition: all .3s;
151
- transition: all .3s;
152
- }
153
  .ha-btn-icon + .ha-btn-text,
154
  .ha-btn-text + .ha-btn-icon {
155
  margin-left: 5px;
@@ -2193,27 +2204,6 @@
2193
  vertical-align: middle;
2194
  }
2195
 
2196
- .ha-flip-box-container .ha-flip-box-back-inner .button-wrap {
2197
- margin-top: 12px;
2198
- }
2199
-
2200
- .ha-flip-box-container .ha-flip-box-back-inner .ha-flip-btn {
2201
- display: inline-block;
2202
- padding: .8rem 2.5rem;
2203
- border-radius: 4px;
2204
- background-color: #fff;
2205
- color: #562dd4;
2206
- text-decoration: none;
2207
- text-transform: uppercase;
2208
- font-size: 12px;
2209
- -webkit-transition: all .3s;
2210
- transition: all .3s;
2211
- }
2212
- .ha-flip-box-container .ha-flip-box-back-inner .ha-flip-btn:hover {
2213
- background-color: #fff;
2214
- color: #562dd4;
2215
- }
2216
-
2217
  .ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-front {
2218
  -webkit-transform: rotateY(0);
2219
  transform: rotateY(0);
@@ -2234,26 +2224,6 @@
2234
  transform: rotateY(180deg);
2235
  }
2236
 
2237
- .ha-flip-box-container .ha-flip-box-inner.ha-flip-left .ha-flip-box-front {
2238
- -webkit-transform: rotateY(0);
2239
- transform: rotateY(0);
2240
- }
2241
-
2242
- .ha-flip-box-container .ha-flip-box-inner.ha-flip-left .ha-flip-box-back {
2243
- -webkit-transform: rotateY(180deg);
2244
- transform: rotateY(180deg);
2245
- }
2246
-
2247
- .ha-flip-box-container .ha-flip-box-inner.ha-flip-left:hover .ha-flip-box-back {
2248
- -webkit-transform: rotateY(0);
2249
- transform: rotateY(0);
2250
- }
2251
-
2252
- .ha-flip-box-container .ha-flip-box.ha-flip-left:hover .ha-flip-box-front {
2253
- -webkit-transform: rotateY(-180deg);
2254
- transform: rotateY(-180deg);
2255
- }
2256
-
2257
  .ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-front {
2258
  -webkit-transform: rotateX(0);
2259
  transform: rotateX(0);
@@ -2274,26 +2244,6 @@
2274
  transform: rotateX(180deg);
2275
  }
2276
 
2277
- .ha-flip-box-container .ha-flip-box-inner.ha-flip-down .ha-flip-box-front {
2278
- -webkit-transform: rotateX(0);
2279
- transform: rotateX(0);
2280
- }
2281
-
2282
- .ha-flip-box-container .ha-flip-box-inner.ha-flip-down .ha-flip-box-back {
2283
- -webkit-transform: rotateX(180deg);
2284
- transform: rotateX(180deg);
2285
- }
2286
-
2287
- .ha-flip-box-container .ha-flip-box-inner.ha-flip-down:hover .ha-flip-box-back {
2288
- -webkit-transform: rotateX(0);
2289
- transform: rotateX(0);
2290
- }
2291
-
2292
- .ha-flip-box-container .ha-flip-box-inner.ha-flip-down:hover .ha-flip-box-front {
2293
- -webkit-transform: rotateX(-180deg);
2294
- transform: rotateX(-180deg);
2295
- }
2296
-
2297
  .ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-back,
2298
  .ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-front {
2299
  -webkit-transition: -webkit-transform .6s cubic-bezier(.2, .85, .4, 1.275);
@@ -2415,6 +2365,10 @@
2415
  font-size: .8em;
2416
  }
2417
 
 
 
 
 
2418
  .ha-pricing-table-btn {
2419
  display: inline-block;
2420
  padding: .8rem 2rem;
48
  clear: both;
49
  }
50
 
51
+ .happy-addon,
 
 
52
  .happy-addon * {
53
  box-sizing: border-box;
54
  }
55
+
56
  .happy-addon img {
57
  max-width: 100%;
58
  height: auto;
60
  -o-object-fit: cover;
61
  object-fit: cover;
62
  }
63
+
64
  .happy-addon p:empty {
65
  display: none;
66
  }
94
  content: "";
95
  }
96
 
97
+ .ha-popup--is-enabled .ha-js-popup,
98
+ .ha-popup--is-enabled .ha-js-popup > img {
99
+ cursor: -webkit-zoom-in !important;
100
+ cursor: zoom-in !important;
101
+ }
102
+
103
+ .mfp-wrap .mfp-close,
104
+ .mfp-wrap .mfp-arrow {
105
+ background-color: transparent;
106
+ }
107
+ .mfp-wrap .mfp-close:focus,
108
+ .mfp-wrap .mfp-arrow:focus {
109
+ outline-width: thin;
110
+ }
111
+
112
  .ha-card > .elementor-widget-container,
113
  .ha-infobox > .elementor-widget-container,
114
  .ha-icon-box > .elementor-widget-container,
161
  .ha-btn.ha-btn--link:focus {
162
  color: #e2498a;
163
  }
 
 
 
 
164
  .ha-btn-icon + .ha-btn-text,
165
  .ha-btn-text + .ha-btn-icon {
166
  margin-left: 5px;
2204
  vertical-align: middle;
2205
  }
2206
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2207
  .ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-front {
2208
  -webkit-transform: rotateY(0);
2209
  transform: rotateY(0);
2224
  transform: rotateY(180deg);
2225
  }
2226
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2227
  .ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-front {
2228
  -webkit-transform: rotateX(0);
2229
  transform: rotateX(0);
2244
  transform: rotateX(180deg);
2245
  }
2246
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2247
  .ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-back,
2248
  .ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-front {
2249
  -webkit-transition: -webkit-transform .6s cubic-bezier(.2, .85, .4, 1.275);
2365
  font-size: .8em;
2366
  }
2367
 
2368
+ .ha-pricing-table-feature-text {
2369
+ display: inline-block;
2370
+ }
2371
+
2372
  .ha-pricing-table-btn {
2373
  display: inline-block;
2374
  padding: .8rem 2rem;
assets/css/main.min.css CHANGED
@@ -1 +1 @@
1
- .happy-addon,.happy-addon *{box-sizing:border-box}.happy-addon img{max-width:100%;height:auto;-o-object-fit:cover;object-fit:cover}.happy-addon p:empty{display:none}.ha-screen-reader-text{position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);margin:-1px;padding:0;width:1px;height:1px;border:0;word-wrap:normal!important;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.ha-has-background-overlay>.elementor-widget-container{position:relative;z-index:1}.ha-has-background-overlay>.elementor-widget-container:before{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;content:""}.ha-btn{display:inline-block;vertical-align:middle;text-align:center;text-decoration:none;font-size:14px;line-height:1;-webkit-transition:all .3s;transition:all .3s}.ha-btn:not(.ha-btn--link){padding:15px 25px;border-radius:.25rem;background-color:#562dd4;color:#fff}.ha-btn:not(.ha-btn--link):focus,.ha-btn:not(.ha-btn--link):hover{background-color:#e2498a}.ha-btn.ha-btn--link{color:#562dd4}.ha-btn.ha-btn--link:focus,.ha-btn.ha-btn--link:hover{color:#e2498a}.ha-btn-icon{-webkit-transition:all .3s;transition:all .3s}.ha-btn-icon+.ha-btn-text,.ha-btn-text+.ha-btn-icon{margin-left:5px}.ha-badge{padding:.475rem 1.1rem;border-radius:50px;background-color:#fff;font-size:12px}.ha-badge--top-left{top:1rem;left:1rem}.ha-badge--top-center{top:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-badge--top-right{top:1rem;right:1rem}.ha-badge--middle-left{top:50%;left:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-badge--middle-center{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.ha-badge--middle-right{top:50%;right:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-badge--bottom-left{bottom:1rem;left:1rem}.ha-badge--bottom-center{bottom:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-badge--bottom-right{right:1rem;bottom:1rem}.ha-card-figure{position:relative;height:250px}.ha-card-figure>img{border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px)}.ha-card-body{padding:1.5rem}.ha-card-title{margin-top:0;margin-bottom:.75rem;color:#151515;font-weight:700;font-size:22px}.ha-card-text{margin-bottom:2rem;color:#616161;font-size:16px;line-height:1.7}.ha-card-text>p,.ha-infobox-text>p{margin-top:0;margin-bottom:0}.ha-card--top .ha-card-figure{display:inline-block;width:100%}.ha-card--left>.elementor-widget-container,.ha-card--right>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-card--left>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-card--left .ha-card-body,.ha-card--left .ha-card-figure,.ha-card--right .ha-card-body,.ha-card--right .ha-card-figure{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.ha-card--left .ha-card-body,.ha-card--right .ha-card-body{padding:2.5rem}.ha-card--left .ha-card-figure>img{border-radius:calc(.5rem - 1px) 0 0 calc(.5rem - 1px)}.ha-card--right>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;text-align:right}.ha-card--right .ha-card-figure>img{border-radius:0 calc(.5rem - 1px) calc(.5rem - 1px) 0}.ha-card .ha-badge{position:absolute}.ha-infobox>.elementor-widget-container{padding:1.5rem}.ha-infobox-title{margin-top:0;margin-bottom:1rem;color:#151515;font-size:24px}.ha-infobox-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-infobox-figure--icon{text-align:center;font-size:3rem}.ha-icon-box-icon>i,.ha-infobox-figure>i{position:relative;display:block;width:1em;height:1em}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i:before,.ha-icon-box-icon>i:before,.ha-infobox-figure>i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-card-figure>img,.ha-infobox-figure>img,.ha-member-figure img{width:100%;height:100%;vertical-align:bottom}.ha-infobox-text+.ha-btn--link{margin-top:1rem}.ha-icon-box>.elementor-widget-container{position:relative;padding:1.25rem}.ha-icon-box-title{margin-top:0;margin-bottom:0;color:#151515;font-size:24px;-webkit-transition:color .3s;transition:color .3s}.ha-icon-box-icon{display:inline-block;margin-bottom:1rem;color:#151515;text-align:center;font-size:3rem;-webkit-transition:border .3s,background .3s,color .3s,-webkit-transform .3s;transition:transform .3s,border .3s,background .3s,color .3s;transition:transform .3s,border .3s,background .3s,color .3s,-webkit-transform .3s}.ha-icon-box-icon>i{-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.ha-icon-box-link{display:block;color:transparent;text-decoration:none}.ha-icon-box .ha-badge{position:absolute;z-index:9999;background-color:#e2498a;color:#fff}.ha-member>.elementor-widget-container{padding:1.25rem}.ha-member-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-member-name{margin-top:0;margin-bottom:.5rem;color:#151515;font-size:18px}.ha-member-position{margin-bottom:1.5rem;color:#7f7f7f;font-size:14px}.ha-member-bio{margin-bottom:1.5rem;font-size:14px;line-height:1.6}.ha-member-links>a{display:inline-block;color:#9895ad;text-align:center;line-height:1;-webkit-transition:all .2s;transition:all .2s}.ha-member-links>a:focus,.ha-member-links>a:hover{color:#222}.ha-member-links>a>i{width:1em;height:1em}.ha-member-links>a:not(:last-child){margin-right:.3rem}.ha-review-header{margin-top:1.5rem}.ha-review-desc p,.ha-review-figure{margin:0}.ha-review-figure>img{width:100%;height:100%;border-radius:50%;vertical-align:bottom}.ha-review-reviewer{margin-top:0;margin-bottom:.3rem;color:#151515;font-size:18px}.ha-review-position{margin-bottom:.5rem;color:#7f7f7f;font-size:15px}.ha-review-ratting{display:inline-block;font-size:12px;line-height:1}.ha-review-ratting--num{padding:.25em .66em;border-radius:2.5em;background-color:#562dd4;color:#fff}.ha-review-ratting--star{color:#ffbf36}.ha-review-desc{margin-top:1.5rem;font-size:16px;line-height:1.6}.ha-review--top>.elementor-widget-container{padding:2rem}.ha-review--top .ha-review-figure{display:inline-block;max-width:70px;height:70px}.ha-review--left>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-review--left>.elementor-widget-container,.ha-review--right>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding-left:2rem}.ha-review--left .ha-review-figure,.ha-review--right .ha-review-figure{-webkit-box-flex:0;-webkit-flex:0 0 150px;-ms-flex:0 0 150px;flex:0 0 150px;max-width:150px;height:150px}.ha-review--left .ha-review-body,.ha-review--right .ha-review-body{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 150px);-ms-flex:0 0 calc(100% - 150px);flex:0 0 calc(100% - 150px);padding:2rem;max-width:calc(100% - 150px)}.ha-review--left .ha-review-body>:first-child,.ha-review--right .ha-review-body>:first-child{margin-top:0}.ha-review--right>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;padding-right:2rem;padding-left:0;text-align:right}.ha-image-compare .twentytwenty-container,.ha-image-compare .twentytwenty-wrapper{border-radius:inherit}.ha-gallery-filter{margin:0 10px 2rem;padding:0;list-style:none}.ha-gallery-filter>li{display:inline-block;margin-bottom:10px}.ha-gallery-filter>li:not(:last-child){margin-right:10px}.ha-gallery-filter>li>button{display:block;padding:10px 25px;border:2px solid #562dd4;border-radius:.25rem;background-color:transparent;color:#562dd4;text-transform:uppercase;font-size:14px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.ha-gallery-filter>li>button:focus,.ha-gallery-filter>li>button:hover{outline:0;background-color:#562dd4;color:#fff}.ha-gallery-filter>.ha-filter-active>button{background-color:#562dd4;color:#fff}.ha-image-grid-item{float:left}.ha-image-grid-inner{position:relative;display:block;overflow:hidden;margin:10px;text-decoration:none}.ha-image-grid-inner img{display:block;width:100%;-webkit-transition:all .25s;transition:all .25s}.ha-image-grid--layout-even .ha-image-grid-inner{height:250px}.ha-image-grid--layout-even .ha-image-grid-inner>img{height:100%}.ha-justified-gallery-item,.ha-justified-gallery-item>img{border-radius:6px}.ha-justified-gallery .justified-gallery>.ha-justified-gallery-item>.caption{bottom:-100px!important;padding:10px;-webkit-transition:all .25s!important;transition:all .25s!important;-webkit-animation:haSmoothReveal .3s forwards;animation:haSmoothReveal .3s forwards}.ha-justified-gallery .justified-gallery>.ha-justified-gallery-item>.caption.caption-visible{bottom:0!important}.ha-justified-gallery .justified-gallery>.entry-visible>a>img,.ha-justified-gallery .justified-gallery>.entry-visible>img{-webkit-transition:all 300ms,opacity 500ms ease-in;transition:all 300ms,opacity 500ms ease-in}@-webkit-keyframes haSmoothReveal{0%{-webkit-transform:translateY(100px);transform:translateY(100px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes haSmoothReveal{0%{-webkit-transform:translateY(100px);transform:translateY(100px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.ha-carousel .slick-vertical .slick-slide,.ha-slider .slick-vertical .slick-slide{border:0}.ha-carousel .slick-next,.ha-carousel .slick-prev,.ha-slider .slick-next,.ha-slider .slick-prev{z-index:999;padding:0;border:1px solid rgba(255,255,255,.8);border-radius:50%;background-color:rgba(255,255,255,.8);color:#8c8c8c;text-align:center;font-size:12px;opacity:1}.ha-carousel .slick-next:focus,.ha-carousel .slick-next:hover,.ha-carousel .slick-prev:focus,.ha-carousel .slick-prev:hover,.ha-slider .slick-next:focus,.ha-slider .slick-next:hover,.ha-slider .slick-prev:focus,.ha-slider .slick-prev:hover{background-color:#fff}.ha-carousel .slick-next:before,.ha-carousel .slick-prev:before,.ha-slider .slick-next:before,.ha-slider .slick-prev:before{content:""}.ha-carousel .slick-disabled,.ha-slider .slick-disabled{opacity:.7}.ha-carousel .slick-prev,.ha-slider .slick-prev{left:25px}.ha-carousel .slick-next,.ha-slider .slick-next{right:25px}.ha-carousel .slick-dots,.ha-slider .slick-dots{bottom:-40px}.ha-carousel .slick-dots li,.ha-slider .slick-dots li{margin-right:2px;margin-left:2px}.ha-carousel .slick-dots li button:focus,.ha-carousel .slick-dots li button:hover,.ha-slider .slick-dots li button:focus,.ha-slider .slick-dots li button:hover{background-color:transparent}.ha-carousel .slick-dots li button:before,.ha-slider .slick-dots li button:before{color:#1b1b1b;opacity:1}.ha-carousel .slick-dots .slick-active button:before,.ha-carousel .slick-dots li button:hover:before,.ha-slider .slick-dots .slick-active button:before,.ha-slider .slick-dots li button:hover:before{-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5)}.ha-carousel .slick-next,.ha-carousel .slick-prev{width:40px;height:40px;line-height:40px}.ha-slider .slick-next,.ha-slider .slick-prev{width:50px;height:50px;line-height:50px}.ha-carousel .slick-slider:not(.slick-vertical) .slick-slide{padding-right:5px;padding-left:5px}.ha-carousel .slick-slider.slick-vertical .slick-slide{padding-top:5px;padding-bottom:5px}.ha-slick-item{position:relative;overflow:hidden;vertical-align:bottom}.ha-slick-content{position:absolute;bottom:0;padding:1.5rem;width:100%;background:-webkit-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.3));background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.3))}.ha-slick-title{margin-top:0;margin-bottom:.2rem;color:#fff;font-size:20px}.ha-slick-subtitle{margin:0;color:#fff}.ha-skills>.elementor-widget-container{padding-top:1px}.ha-skill{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-radius:15px;background-color:#e9ecef;font-size:.75rem}.ha-skill--inside .ha-skill-info,.ha-skill--outside .ha-skill-info{text-align:left;font-size:14px}.ha-skill--inside .ha-skill-level-text,.ha-skill--outside .ha-skill-level-text{float:right}.ha-skill--outside{height:2px}.ha-skill--outside .ha-skill-level{position:relative}.ha-skill--outside .ha-skill-info{position:absolute;top:-25px;width:100%;color:#242424}.ha-skill--inside{height:30px}.ha-skill--inside .ha-skill-info{padding-right:1rem;padding-left:1rem;color:#fff}.ha-skill-level{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;width:10%;border-radius:inherit;background-color:#562dd4;color:#fff;text-align:center;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.ha-skill--outside{margin-top:40px}.ha-skill--inside:not(:first-child){margin-top:20px}.ha-gradient-heading{margin-top:0;margin-bottom:0}.ha-gradient-heading>a{color:inherit;text-decoration:none}.ha-logo-grid-item{float:left;overflow:hidden;height:180px;border-color:#e7e7e7}.ha-logo-grid-figure{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin:0;padding:30px;width:100%;height:100%}.ha-logo-grid-img{max-height:100%}@media (min-width:1025px){.ha-logo-grid--col-2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col-3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col-4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col-5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col-6 .ha-logo-grid-item{width:calc(100%/6)}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--col--tablet2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col--tablet3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col--tablet4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col--tablet5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col--tablet6 .ha-logo-grid-item{width:calc(100%/6)}}@media (max-width:767px){.ha-logo-grid--col--mobile2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col--mobile3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col--mobile4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col--mobile5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col--mobile6 .ha-logo-grid-item{width:calc(100%/6)}}.ha-logo-grid--tictactoe .ha-logo-grid-item{border-width:2px 2px 0 0;border-style:solid}@media (min-width:1025px){.ha-logo-grid--tictactoe.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}@media (max-width:767px){.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}.ha-logo-grid--border .ha-logo-grid-item{border-width:0 2px 2px 0;border-style:solid}.ha-logo-grid--border .ha-logo-grid-item:first-child{border-top-left-radius:10px}.ha-logo-grid--border .ha-logo-grid-item:last-child{border-bottom-right-radius:10px}@media (min-width:1025px){.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}@media (max-width:767px){.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}.ha-logo-grid--box .ha-logo-grid-wrapper{margin:-.5rem}.ha-logo-grid--box .ha-logo-grid-item{margin:.5rem;border-width:2px;border-style:solid;border-radius:.5rem}@media (min-width:1025px){.ha-logo-grid--box.ha-logo-grid--col-2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--box.ha-logo-grid--col--tablet2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}@media (max-width:767px){.ha-logo-grid--box.ha-logo-grid--col--mobile2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}.ha-dual-button>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-dual-btn,.ha-dual-btn-connector{display:inline-block}.ha-dual-btn-wrapper{position:relative;text-align:center;font-weight:400}.ha-dual-btn{padding:1.2rem 3rem;color:#fff;text-decoration:none;font-size:14px}.ha-dual-btn--left{border-top-left-radius:50px;border-bottom-left-radius:50px;background-color:#562dd4}.ha-dual-btn--left:focus,.ha-dual-btn--left:hover{background-color:#4423ab}.ha-dual-btn--right{border-top-right-radius:50px;border-bottom-right-radius:50px;background-color:#e2498a}.ha-dual-btn--right:focus,.ha-dual-btn--right:hover{background-color:#d6226e}.ha-dual-btn-connector{position:absolute!important;top:50%;right:0;z-index:9;width:30px;height:30px;border-radius:100%;background-color:#fff;box-shadow:0 0 0 5px rgba(255,255,255,.3);color:#27374c;text-transform:uppercase;font-size:12px;line-height:30px;-webkit-transform:translate(50%,-50%);-ms-transform:translate(50%,-50%);transform:translate(50%,-50%)}.ha-dual-btn-icon--before{margin-right:5px}.ha-dual-btn-icon--after{margin-left:5px}.ha-testimonial--basic>.elementor-widget-container{padding:2rem;border:1px solid #ececec;border-radius:.5rem}.ha-testimonial--basic .ha-testimonial__content{margin-bottom:2.5em}.ha-testimonial--bubble .ha-testimonial__content{position:relative;margin-bottom:1.5rem;padding:2rem;border-radius:6px;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1);line-height:1.6rem}.ha-testimonial--bubble .ha-testimonial__content:after{position:absolute;bottom:-14px;color:#fff;content:"\e911";font-style:normal;font-size:36px;font-family:"Happy Icons";-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.ha-testimonial--left.ha-testimonial--bubble .ha-testimonial__content:after{left:15px}.ha-testimonial--center.ha-testimonial--bubble .ha-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) rotate(-180deg);-ms-transform:translateX(-50%) rotate(-180deg);transform:translateX(-50%) rotate(-180deg)}.ha-testimonial--right.ha-testimonial--bubble .ha-testimonial__content:after{right:15px}.ha-testimonial__reviewer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.ha-testimonial__reviewer-thumb{width:65px;height:65px}.ha-testimonial__reviewer-thumb>img{width:100%;height:100%;border-radius:50%;-o-object-fit:cover;object-fit:cover}.ha-testimonial__reviewer-name{margin-bottom:.3rem;color:#562dd4;font-weight:700;font-size:18px}.ha-testimonial__reviewer-title{color:#8c8c8c;font-size:16px}.ha-testimonial--left .ha-testimonial__reviewer-meta{padding-left:1em}.ha-testimonial--center .ha-testimonial__reviewer{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-testimonial--center .ha-testimonial__reviewer-meta{padding-top:1em}.ha-testimonial--right .ha-testimonial__reviewer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-testimonial--right .ha-testimonial__reviewer-meta{padding-right:1em}.ha-testimonial--left{text-align:left}.ha-testimonial--right{text-align:right}.ha-number-body,.ha-testimonial--center{text-align:center}.ha-number-body{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding:6px;width:50px;height:50px;border-radius:100%;background-color:#562dd4;color:#fff;font-size:20px}.ha-number-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ha-number-text{position:relative;z-index:1;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.ha-flip-box-container:after{display:block;visibility:hidden;clear:both;height:0;content:" ";font-size:0}.ha-flip-box-container .ha-flip-box-inner{position:relative;z-index:1;margin:0;padding:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-back{z-index:1}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-front{z-index:-1}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-inner-wrapper{position:relative;-webkit-transform:translateZ(0);-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{top:0;right:0;left:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;height:250px;background-position:center;background-clip:padding-box;background-size:cover;background-repeat:no-repeat;text-align:center;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{background-color:transparent;position:relative;bottom:0;z-index:10;padding:30px;border:1px solid #ddd;border-radius:.3rem}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front:before{position:absolute;top:0;left:0;z-index:-9;width:100%;height:100%;background-color:transparent;content:""}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back{position:absolute;z-index:-1;padding:46px;border-radius:.3rem;background-color:#562dd4;color:#fff}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text{text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text p,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text p{margin-top:10px;margin-bottom:0}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon.icon{padding:20px;border-radius:50%;background-color:#f1f4f8;color:#242424}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;font-size:28px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon img,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon img{width:60px;height:60px;vertical-align:middle}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-box-heading{margin:0;font-weight:700;font-size:20px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner p{margin-bottom:0;font-size:16px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-box-heading-back{margin:0;color:#fff;font-size:18px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;color:#fff;font-size:20px}.ha-flip-box-container .ha-flip-box-back-inner .button-wrap{margin-top:12px}.ha-flip-box-container .ha-flip-box-back-inner .ha-flip-btn{display:inline-block;padding:.8rem 2.5rem;border-radius:4px;background-color:#fff;color:#562dd4;text-decoration:none;text-transform:uppercase;font-size:12px;-webkit-transition:all .3s;transition:all .3s}.ha-flip-box-container .ha-flip-box-back-inner .ha-flip-btn:hover{background-color:#fff;color:#562dd4}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-back{-webkit-transform:rotateY(0);transform:rotateY(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-back{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-front{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-left .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-left:hover .ha-flip-box-back{-webkit-transform:rotateY(0);transform:rotateY(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-left .ha-flip-box-back{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.ha-flip-box-container .ha-flip-box.ha-flip-left:hover .ha-flip-box-front{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-back{-webkit-transform:rotateX(0);transform:rotateX(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-back{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-front{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-down .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-down:hover .ha-flip-box-back{-webkit-transform:rotateX(0);transform:rotateX(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-down .ha-flip-box-back{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-down:hover .ha-flip-box-front{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-back,.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-front{-webkit-transition:-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275),-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275)}.ha-pricing-table>.elementor-widget-container{position:relative;overflow:hidden;padding:3em 4em}.ha-pricing-table-badge{position:absolute;top:-1px;padding:.8rem 1rem;background-color:#e2498a;color:#fff;line-height:1}.ha-pricing-table-badge--left{left:0;-webkit-transform:rotate(-90deg) translateX(-100%);-ms-transform:rotate(-90deg) translateX(-100%);transform:rotate(-90deg) translateX(-100%);-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.ha-pricing-table-badge--right{right:0;-webkit-transform:rotate(-90deg) translateY(-100%);-ms-transform:rotate(-90deg) translateY(-100%);transform:rotate(-90deg) translateY(-100%);-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.ha-pricing-table-title{margin-top:0;margin-bottom:.5rem;color:#242424;font-weight:400;font-size:24px}.ha-pricing-table-price{margin-bottom:3rem}.ha-pricing-table-price-tag{margin-bottom:.5rem;color:#242424;font-weight:700;font-size:60px;line-height:normal}.ha-pricing-table-currency{font-size:24px}.ha-pricing-table-period{color:#8c8c8c;font-size:16px}.ha-pricing-table-body{margin-bottom:3rem}.ha-pricing-table-features-title{margin-top:0;margin-bottom:1rem;font-weight:700;font-size:16px}.ha-pricing-table-features-list{margin:0;padding:0;list-style:none}.ha-pricing-table-features-list li{margin-bottom:1rem;font-size:16px}.ha-pricing-table-features-list i{margin-right:.5rem;min-width:15px;font-size:.8em}.ha-pricing-table-btn{display:inline-block;padding:.8rem 2rem;border-radius:40px;background-color:#e2498a;color:#fff;text-decoration:none;text-transform:uppercase;font-size:12px;-webkit-transition:all .3s;transition:all .3s}.ha-pricing-table-btn:hover{background-color:#562dd4;color:#fff}.ha-card>.elementor-widget-container,.ha-icon-box>.elementor-widget-container,.ha-image-compare>.elementor-widget-container,.ha-infobox>.elementor-widget-container,.ha-member>.elementor-widget-container,.ha-pricing-table>.elementor-widget-container,.ha-review>.elementor-widget-container{border-radius:.5rem;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1);word-wrap:break-word;overflow-wrap:break-word}.ha-logo-grid-wrapper:after,.ha-logo-grid-wrapper:before{display:table;content:" "}.ha-logo-grid-wrapper:after{clear:both}.ha-step-flow>.elementor-widget-container{padding:30px;text-align:center}.ha-step-arrow,.ha-step-arrow:after{position:absolute;display:inline-block;border-top:1px solid #ddd}.ha-step-arrow{left:calc(100% + 20px);top:49%;width:100px}.ha-step-arrow:after{top:-2px;right:5px;width:12px;height:12px;border-right:1px solid #ddd;color:#ddd;content:"";-webkit-transform:rotate(45deg) translateY(-50%);-ms-transform:rotate(45deg) translateY(-50%);transform:rotate(45deg) translateY(-50%)}.ha-steps-icon{position:relative;display:inline-block;margin-bottom:2rem;padding:40px;border-radius:50%;background-color:#e9ecf0;box-shadow:0 2px 6px -2px #989898;color:#8056ee;text-align:center;font-size:46px}.ha-steps-icon i{position:relative;display:block;width:1em;height:1em}.ha-steps-icon i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-steps-icon .ha-steps-label{position:absolute;top:5px;right:0;padding:12px 8px;border:3px solid #fff;border-radius:20px;background-color:#8056ee;color:#fff;font-size:12px;line-height:0}.ha-steps-title{margin-top:0;margin-bottom:30px;font-weight:700;font-size:16px}.ha-steps-title a{display:block;color:#562dd4}.ha-steps-title a:hover{color:#242424}.ha-step-description{margin:0;color:#616161;font-weight:400;font-size:16px;line-height:1.5}
1
+ .happy-addon,.happy-addon *{box-sizing:border-box}.happy-addon img{max-width:100%;height:auto;-o-object-fit:cover;object-fit:cover}.happy-addon p:empty{display:none}.ha-screen-reader-text{position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);margin:-1px;padding:0;width:1px;height:1px;border:0;word-wrap:normal!important;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.ha-has-background-overlay>.elementor-widget-container{position:relative;z-index:1}.ha-has-background-overlay>.elementor-widget-container:before{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;content:""}.ha-popup--is-enabled .ha-js-popup,.ha-popup--is-enabled .ha-js-popup>img{cursor:-webkit-zoom-in!important;cursor:zoom-in!important}.mfp-wrap .mfp-arrow,.mfp-wrap .mfp-close{background-color:transparent}.mfp-wrap .mfp-arrow:focus,.mfp-wrap .mfp-close:focus{outline-width:thin}.ha-btn{display:inline-block;vertical-align:middle;text-align:center;text-decoration:none;font-size:14px;line-height:1;-webkit-transition:all .3s;transition:all .3s}.ha-btn:not(.ha-btn--link){padding:15px 25px;border-radius:.25rem;background-color:#562dd4;color:#fff}.ha-btn:not(.ha-btn--link):focus,.ha-btn:not(.ha-btn--link):hover{background-color:#e2498a}.ha-btn.ha-btn--link{color:#562dd4}.ha-btn.ha-btn--link:focus,.ha-btn.ha-btn--link:hover{color:#e2498a}.ha-btn-icon+.ha-btn-text,.ha-btn-text+.ha-btn-icon{margin-left:5px}.ha-badge{padding:.475rem 1.1rem;border-radius:50px;background-color:#fff;font-size:12px}.ha-badge--top-left{top:1rem;left:1rem}.ha-badge--top-center{top:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-badge--top-right{top:1rem;right:1rem}.ha-badge--middle-left{top:50%;left:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-badge--middle-center{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.ha-badge--middle-right{top:50%;right:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-badge--bottom-left{bottom:1rem;left:1rem}.ha-badge--bottom-center{bottom:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-badge--bottom-right{right:1rem;bottom:1rem}.ha-card-figure{position:relative;height:250px}.ha-card-figure>img{border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px)}.ha-card-body{padding:1.5rem}.ha-card-title{margin-top:0;margin-bottom:.75rem;color:#151515;font-weight:700;font-size:22px}.ha-card-text{margin-bottom:2rem;color:#616161;font-size:16px;line-height:1.7}.ha-card-text>p,.ha-infobox-text>p{margin-top:0;margin-bottom:0}.ha-card--top .ha-card-figure{display:inline-block;width:100%}.ha-card--left>.elementor-widget-container,.ha-card--right>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-card--left>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-card--left .ha-card-body,.ha-card--left .ha-card-figure,.ha-card--right .ha-card-body,.ha-card--right .ha-card-figure{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.ha-card--left .ha-card-body,.ha-card--right .ha-card-body{padding:2.5rem}.ha-card--left .ha-card-figure>img{border-radius:calc(.5rem - 1px) 0 0 calc(.5rem - 1px)}.ha-card--right>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;text-align:right}.ha-card--right .ha-card-figure>img{border-radius:0 calc(.5rem - 1px) calc(.5rem - 1px) 0}.ha-card .ha-badge{position:absolute}.ha-infobox>.elementor-widget-container{padding:1.5rem}.ha-infobox-title{margin-top:0;margin-bottom:1rem;color:#151515;font-size:24px}.ha-infobox-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-infobox-figure--icon{text-align:center;font-size:3rem}.ha-icon-box-icon>i,.ha-infobox-figure>i{position:relative;display:block;width:1em;height:1em}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i:before,.ha-icon-box-icon>i:before,.ha-infobox-figure>i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-card-figure>img,.ha-infobox-figure>img,.ha-member-figure img{width:100%;height:100%;vertical-align:bottom}.ha-infobox-text+.ha-btn--link{margin-top:1rem}.ha-icon-box>.elementor-widget-container{position:relative;padding:1.25rem}.ha-icon-box-title{margin-top:0;margin-bottom:0;color:#151515;font-size:24px;-webkit-transition:color .3s;transition:color .3s}.ha-icon-box-icon{display:inline-block;margin-bottom:1rem;color:#151515;text-align:center;font-size:3rem;-webkit-transition:border .3s,background .3s,color .3s,-webkit-transform .3s;transition:transform .3s,border .3s,background .3s,color .3s;transition:transform .3s,border .3s,background .3s,color .3s,-webkit-transform .3s}.ha-icon-box-icon>i{-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.ha-icon-box-link{display:block;color:transparent;text-decoration:none}.ha-icon-box .ha-badge{position:absolute;z-index:9999;background-color:#e2498a;color:#fff}.ha-member>.elementor-widget-container{padding:1.25rem}.ha-member-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-member-name{margin-top:0;margin-bottom:.5rem;color:#151515;font-size:18px}.ha-member-position{margin-bottom:1.5rem;color:#7f7f7f;font-size:14px}.ha-member-bio{margin-bottom:1.5rem;font-size:14px;line-height:1.6}.ha-member-links>a{display:inline-block;color:#9895ad;text-align:center;line-height:1;-webkit-transition:all .2s;transition:all .2s}.ha-member-links>a:focus,.ha-member-links>a:hover{color:#222}.ha-member-links>a>i{width:1em;height:1em}.ha-member-links>a:not(:last-child){margin-right:.3rem}.ha-review-header{margin-top:1.5rem}.ha-review-desc p,.ha-review-figure{margin:0}.ha-review-figure>img{width:100%;height:100%;border-radius:50%;vertical-align:bottom}.ha-review-reviewer{margin-top:0;margin-bottom:.3rem;color:#151515;font-size:18px}.ha-review-position{margin-bottom:.5rem;color:#7f7f7f;font-size:15px}.ha-review-ratting{display:inline-block;font-size:12px;line-height:1}.ha-review-ratting--num{padding:.25em .66em;border-radius:2.5em;background-color:#562dd4;color:#fff}.ha-review-ratting--star{color:#ffbf36}.ha-review-desc{margin-top:1.5rem;font-size:16px;line-height:1.6}.ha-review--top>.elementor-widget-container{padding:2rem}.ha-review--top .ha-review-figure{display:inline-block;max-width:70px;height:70px}.ha-review--left>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-review--left>.elementor-widget-container,.ha-review--right>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding-left:2rem}.ha-review--left .ha-review-figure,.ha-review--right .ha-review-figure{-webkit-box-flex:0;-webkit-flex:0 0 150px;-ms-flex:0 0 150px;flex:0 0 150px;max-width:150px;height:150px}.ha-review--left .ha-review-body,.ha-review--right .ha-review-body{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 150px);-ms-flex:0 0 calc(100% - 150px);flex:0 0 calc(100% - 150px);padding:2rem;max-width:calc(100% - 150px)}.ha-review--left .ha-review-body>:first-child,.ha-review--right .ha-review-body>:first-child{margin-top:0}.ha-review--right>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;padding-right:2rem;padding-left:0;text-align:right}.ha-image-compare .twentytwenty-container,.ha-image-compare .twentytwenty-wrapper{border-radius:inherit}.ha-gallery-filter{margin:0 10px 2rem;padding:0;list-style:none}.ha-gallery-filter>li{display:inline-block;margin-bottom:10px}.ha-gallery-filter>li:not(:last-child){margin-right:10px}.ha-gallery-filter>li>button{display:block;padding:10px 25px;border:2px solid #562dd4;border-radius:.25rem;background-color:transparent;color:#562dd4;text-transform:uppercase;font-size:14px;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.ha-gallery-filter>li>button:focus,.ha-gallery-filter>li>button:hover{outline:0;background-color:#562dd4;color:#fff}.ha-gallery-filter>.ha-filter-active>button{background-color:#562dd4;color:#fff}.ha-image-grid-item{float:left}.ha-image-grid-inner{position:relative;display:block;overflow:hidden;margin:10px;text-decoration:none}.ha-image-grid-inner img{display:block;width:100%;-webkit-transition:all .25s;transition:all .25s}.ha-image-grid--layout-even .ha-image-grid-inner{height:250px}.ha-image-grid--layout-even .ha-image-grid-inner>img{height:100%}.ha-justified-gallery-item,.ha-justified-gallery-item>img{border-radius:6px}.ha-justified-gallery .justified-gallery>.ha-justified-gallery-item>.caption{bottom:-100px!important;padding:10px;-webkit-transition:all .25s!important;transition:all .25s!important;-webkit-animation:haSmoothReveal .3s forwards;animation:haSmoothReveal .3s forwards}.ha-justified-gallery .justified-gallery>.ha-justified-gallery-item>.caption.caption-visible{bottom:0!important}.ha-justified-gallery .justified-gallery>.entry-visible>a>img,.ha-justified-gallery .justified-gallery>.entry-visible>img{-webkit-transition:all 300ms,opacity 500ms ease-in;transition:all 300ms,opacity 500ms ease-in}@-webkit-keyframes haSmoothReveal{0%{-webkit-transform:translateY(100px);transform:translateY(100px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes haSmoothReveal{0%{-webkit-transform:translateY(100px);transform:translateY(100px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.ha-carousel .slick-vertical .slick-slide,.ha-slider .slick-vertical .slick-slide{border:0}.ha-carousel .slick-next,.ha-carousel .slick-prev,.ha-slider .slick-next,.ha-slider .slick-prev{z-index:999;padding:0;border:1px solid rgba(255,255,255,.8);border-radius:50%;background-color:rgba(255,255,255,.8);color:#8c8c8c;text-align:center;font-size:12px;opacity:1}.ha-carousel .slick-next:focus,.ha-carousel .slick-next:hover,.ha-carousel .slick-prev:focus,.ha-carousel .slick-prev:hover,.ha-slider .slick-next:focus,.ha-slider .slick-next:hover,.ha-slider .slick-prev:focus,.ha-slider .slick-prev:hover{background-color:#fff}.ha-carousel .slick-next:before,.ha-carousel .slick-prev:before,.ha-slider .slick-next:before,.ha-slider .slick-prev:before{content:""}.ha-carousel .slick-disabled,.ha-slider .slick-disabled{opacity:.7}.ha-carousel .slick-prev,.ha-slider .slick-prev{left:25px}.ha-carousel .slick-next,.ha-slider .slick-next{right:25px}.ha-carousel .slick-dots,.ha-slider .slick-dots{bottom:-40px}.ha-carousel .slick-dots li,.ha-slider .slick-dots li{margin-right:2px;margin-left:2px}.ha-carousel .slick-dots li button:focus,.ha-carousel .slick-dots li button:hover,.ha-slider .slick-dots li button:focus,.ha-slider .slick-dots li button:hover{background-color:transparent}.ha-carousel .slick-dots li button:before,.ha-slider .slick-dots li button:before{color:#1b1b1b;opacity:1}.ha-carousel .slick-dots .slick-active button:before,.ha-carousel .slick-dots li button:hover:before,.ha-slider .slick-dots .slick-active button:before,.ha-slider .slick-dots li button:hover:before{-webkit-transform:scale(1.5);-ms-transform:scale(1.5);transform:scale(1.5)}.ha-carousel .slick-next,.ha-carousel .slick-prev{width:40px;height:40px;line-height:40px}.ha-slider .slick-next,.ha-slider .slick-prev{width:50px;height:50px;line-height:50px}.ha-carousel .slick-slider:not(.slick-vertical) .slick-slide{padding-right:5px;padding-left:5px}.ha-carousel .slick-slider.slick-vertical .slick-slide{padding-top:5px;padding-bottom:5px}.ha-slick-item{position:relative;overflow:hidden;vertical-align:bottom}.ha-slick-content{position:absolute;bottom:0;padding:1.5rem;width:100%;background:-webkit-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.3));background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.3))}.ha-slick-title{margin-top:0;margin-bottom:.2rem;color:#fff;font-size:20px}.ha-slick-subtitle{margin:0;color:#fff}.ha-skills>.elementor-widget-container{padding-top:1px}.ha-skill{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-radius:15px;background-color:#e9ecef;font-size:.75rem}.ha-skill--inside .ha-skill-info,.ha-skill--outside .ha-skill-info{text-align:left;font-size:14px}.ha-skill--inside .ha-skill-level-text,.ha-skill--outside .ha-skill-level-text{float:right}.ha-skill--outside{height:2px}.ha-skill--outside .ha-skill-level{position:relative}.ha-skill--outside .ha-skill-info{position:absolute;top:-25px;width:100%;color:#242424}.ha-skill--inside{height:30px}.ha-skill--inside .ha-skill-info{padding-right:1rem;padding-left:1rem;color:#fff}.ha-skill-level{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;width:10%;border-radius:inherit;background-color:#562dd4;color:#fff;text-align:center;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.ha-skill--outside{margin-top:40px}.ha-skill--inside:not(:first-child){margin-top:20px}.ha-gradient-heading{margin-top:0;margin-bottom:0}.ha-gradient-heading>a{color:inherit;text-decoration:none}.ha-logo-grid-item{float:left;overflow:hidden;height:180px;border-color:#e7e7e7}.ha-logo-grid-figure{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin:0;padding:30px;width:100%;height:100%}.ha-logo-grid-img{max-height:100%}@media (min-width:1025px){.ha-logo-grid--col-2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col-3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col-4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col-5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col-6 .ha-logo-grid-item{width:calc(100%/6)}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--col--tablet2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col--tablet3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col--tablet4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col--tablet5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col--tablet6 .ha-logo-grid-item{width:calc(100%/6)}}@media (max-width:767px){.ha-logo-grid--col--mobile2 .ha-logo-grid-item{width:calc(100%/2)}.ha-logo-grid--col--mobile3 .ha-logo-grid-item{width:calc(100%/3)}.ha-logo-grid--col--mobile4 .ha-logo-grid-item{width:calc(100%/4)}.ha-logo-grid--col--mobile5 .ha-logo-grid-item{width:calc(100%/5)}.ha-logo-grid--col--mobile6 .ha-logo-grid-item{width:calc(100%/6)}}.ha-logo-grid--tictactoe .ha-logo-grid-item{border-width:2px 2px 0 0;border-style:solid}@media (min-width:1025px){.ha-logo-grid--tictactoe.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}@media (max-width:767px){.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6n){border-right-width:0!important}.ha-logo-grid--tictactoe.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:0!important}}.ha-logo-grid--border .ha-logo-grid-item{border-width:0 2px 2px 0;border-style:solid}.ha-logo-grid--border .ha-logo-grid-item:first-child{border-top-left-radius:10px}.ha-logo-grid--border .ha-logo-grid-item:last-child{border-bottom-right-radius:10px}@media (min-width:1025px){.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col-6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--tablet6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}@media (max-width:767px){.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(-n+2){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-child(2){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile2 .ha-logo-grid-item:nth-last-child(2){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(-n+3){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-child(3){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile3 .ha-logo-grid-item:nth-last-child(3){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(-n+4){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-child(4){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile4 .ha-logo-grid-item:nth-last-child(4){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(-n+5){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-child(5){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile5 .ha-logo-grid-item:nth-last-child(5){border-bottom-left-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(-n+6){border-top-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6n+1){border-left-width:2px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-child(6){border-top-right-radius:10px}.ha-logo-grid--border.ha-logo-grid--col--mobile6 .ha-logo-grid-item:nth-last-child(6){border-bottom-left-radius:10px}}.ha-logo-grid--box .ha-logo-grid-wrapper{margin:-.5rem}.ha-logo-grid--box .ha-logo-grid-item{margin:.5rem;border-width:2px;border-style:solid;border-radius:.5rem}@media (min-width:1025px){.ha-logo-grid--box.ha-logo-grid--col-2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col-6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}@media (max-width:1024px) and (min-width:768px){.ha-logo-grid--box.ha-logo-grid--col--tablet2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--tablet6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}@media (max-width:767px){.ha-logo-grid--box.ha-logo-grid--col--mobile2 .ha-logo-grid-item{width:calc((100%/2) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile3 .ha-logo-grid-item{width:calc((100%/3) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile4 .ha-logo-grid-item{width:calc((100%/4) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile5 .ha-logo-grid-item{width:calc((100%/5) - 1rem)}.ha-logo-grid--box.ha-logo-grid--col--mobile6 .ha-logo-grid-item{width:calc((100%/6) - 1rem)}}.ha-dual-button>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.ha-dual-btn,.ha-dual-btn-connector{display:inline-block}.ha-dual-btn-wrapper{position:relative;text-align:center;font-weight:400}.ha-dual-btn{padding:1.2rem 3rem;color:#fff;text-decoration:none;font-size:14px}.ha-dual-btn--left{border-top-left-radius:50px;border-bottom-left-radius:50px;background-color:#562dd4}.ha-dual-btn--left:focus,.ha-dual-btn--left:hover{background-color:#4423ab}.ha-dual-btn--right{border-top-right-radius:50px;border-bottom-right-radius:50px;background-color:#e2498a}.ha-dual-btn--right:focus,.ha-dual-btn--right:hover{background-color:#d6226e}.ha-dual-btn-connector{position:absolute!important;top:50%;right:0;z-index:9;width:30px;height:30px;border-radius:100%;background-color:#fff;box-shadow:0 0 0 5px rgba(255,255,255,.3);color:#27374c;text-transform:uppercase;font-size:12px;line-height:30px;-webkit-transform:translate(50%,-50%);-ms-transform:translate(50%,-50%);transform:translate(50%,-50%)}.ha-dual-btn-icon--before{margin-right:5px}.ha-dual-btn-icon--after{margin-left:5px}.ha-testimonial--basic>.elementor-widget-container{padding:2rem;border:1px solid #ececec;border-radius:.5rem}.ha-testimonial--basic .ha-testimonial__content{margin-bottom:2.5em}.ha-testimonial--bubble .ha-testimonial__content{position:relative;margin-bottom:1.5rem;padding:2rem;border-radius:6px;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1);line-height:1.6rem}.ha-testimonial--bubble .ha-testimonial__content:after{position:absolute;bottom:-14px;color:#fff;content:"\e911";font-style:normal;font-size:36px;font-family:"Happy Icons";-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg)}.ha-testimonial--left.ha-testimonial--bubble .ha-testimonial__content:after{left:15px}.ha-testimonial--center.ha-testimonial--bubble .ha-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) rotate(-180deg);-ms-transform:translateX(-50%) rotate(-180deg);transform:translateX(-50%) rotate(-180deg)}.ha-testimonial--right.ha-testimonial--bubble .ha-testimonial__content:after{right:15px}.ha-testimonial__reviewer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.ha-testimonial__reviewer-thumb{width:65px;height:65px}.ha-testimonial__reviewer-thumb>img{width:100%;height:100%;border-radius:50%;-o-object-fit:cover;object-fit:cover}.ha-testimonial__reviewer-name{margin-bottom:.3rem;color:#562dd4;font-weight:700;font-size:18px}.ha-testimonial__reviewer-title{color:#8c8c8c;font-size:16px}.ha-testimonial--left .ha-testimonial__reviewer-meta{padding-left:1em}.ha-testimonial--center .ha-testimonial__reviewer{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.ha-testimonial--center .ha-testimonial__reviewer-meta{padding-top:1em}.ha-testimonial--right .ha-testimonial__reviewer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-testimonial--right .ha-testimonial__reviewer-meta{padding-right:1em}.ha-testimonial--left{text-align:left}.ha-testimonial--right{text-align:right}.ha-number-body,.ha-testimonial--center{text-align:center}.ha-number-body{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding:6px;width:50px;height:50px;border-radius:100%;background-color:#562dd4;color:#fff;font-size:20px}.ha-number-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ha-number-text{position:relative;z-index:1;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.ha-flip-box-container:after{display:block;visibility:hidden;clear:both;height:0;content:" ";font-size:0}.ha-flip-box-container .ha-flip-box-inner{position:relative;z-index:1;margin:0;padding:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-back{z-index:1}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-front{z-index:-1}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-inner-wrapper{position:relative;-webkit-transform:translateZ(0);-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{top:0;right:0;left:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;height:250px;background-position:center;background-clip:padding-box;background-size:cover;background-repeat:no-repeat;text-align:center;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{background-color:transparent;position:relative;bottom:0;z-index:10;padding:30px;border:1px solid #ddd;border-radius:.3rem}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front:before{position:absolute;top:0;left:0;z-index:-9;width:100%;height:100%;background-color:transparent;content:""}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back{position:absolute;z-index:-1;padding:46px;border-radius:.3rem;background-color:#562dd4;color:#fff}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text{text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text p,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text p{margin-top:10px;margin-bottom:0}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon.icon{padding:20px;border-radius:50%;background-color:#f1f4f8;color:#242424}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;font-size:28px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon img,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon img{width:60px;height:60px;vertical-align:middle}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-box-heading{margin:0;font-weight:700;font-size:20px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner p{margin-bottom:0;font-size:16px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-box-heading-back{margin:0;color:#fff;font-size:18px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;color:#fff;font-size:20px}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-back{-webkit-transform:rotateY(0);transform:rotateY(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-back{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-front{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-back{-webkit-transform:rotateX(0);transform:rotateX(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-back{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-front{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-back,.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-front{-webkit-transition:-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275),-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275)}.ha-pricing-table>.elementor-widget-container{position:relative;overflow:hidden;padding:3em 4em}.ha-pricing-table-badge{position:absolute;top:-1px;padding:.8rem 1rem;background-color:#e2498a;color:#fff;line-height:1}.ha-pricing-table-badge--left{left:0;-webkit-transform:rotate(-90deg) translateX(-100%);-ms-transform:rotate(-90deg) translateX(-100%);transform:rotate(-90deg) translateX(-100%);-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.ha-pricing-table-badge--right{right:0;-webkit-transform:rotate(-90deg) translateY(-100%);-ms-transform:rotate(-90deg) translateY(-100%);transform:rotate(-90deg) translateY(-100%);-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.ha-pricing-table-title{margin-top:0;margin-bottom:.5rem;color:#242424;font-weight:400;font-size:24px}.ha-pricing-table-price{margin-bottom:3rem}.ha-pricing-table-price-tag{margin-bottom:.5rem;color:#242424;font-weight:700;font-size:60px;line-height:normal}.ha-pricing-table-currency{font-size:24px}.ha-pricing-table-period{color:#8c8c8c;font-size:16px}.ha-pricing-table-body{margin-bottom:3rem}.ha-pricing-table-features-title{margin-top:0;margin-bottom:1rem;font-weight:700;font-size:16px}.ha-pricing-table-features-list{margin:0;padding:0;list-style:none}.ha-pricing-table-features-list li{margin-bottom:1rem;font-size:16px}.ha-pricing-table-features-list i{margin-right:.5rem;min-width:15px;font-size:.8em}.ha-pricing-table-feature-text{display:inline-block}.ha-pricing-table-btn{display:inline-block;padding:.8rem 2rem;border-radius:40px;background-color:#e2498a;color:#fff;text-decoration:none;text-transform:uppercase;font-size:12px;-webkit-transition:all .3s;transition:all .3s}.ha-pricing-table-btn:hover{background-color:#562dd4;color:#fff}.ha-card>.elementor-widget-container,.ha-icon-box>.elementor-widget-container,.ha-image-compare>.elementor-widget-container,.ha-infobox>.elementor-widget-container,.ha-member>.elementor-widget-container,.ha-pricing-table>.elementor-widget-container,.ha-review>.elementor-widget-container{border-radius:.5rem;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1);word-wrap:break-word;overflow-wrap:break-word}.ha-logo-grid-wrapper:after,.ha-logo-grid-wrapper:before{display:table;content:" "}.ha-logo-grid-wrapper:after{clear:both}.ha-step-flow>.elementor-widget-container{padding:30px;text-align:center}.ha-step-arrow,.ha-step-arrow:after{position:absolute;display:inline-block;border-top:1px solid #ddd}.ha-step-arrow{left:calc(100% + 20px);top:49%;width:100px}.ha-step-arrow:after{top:-2px;right:5px;width:12px;height:12px;border-right:1px solid #ddd;color:#ddd;content:"";-webkit-transform:rotate(45deg) translateY(-50%);-ms-transform:rotate(45deg) translateY(-50%);transform:rotate(45deg) translateY(-50%)}.ha-steps-icon{position:relative;display:inline-block;margin-bottom:2rem;padding:40px;border-radius:50%;background-color:#e9ecf0;box-shadow:0 2px 6px -2px #989898;color:#8056ee;text-align:center;font-size:46px}.ha-steps-icon i{position:relative;display:block;width:1em;height:1em}.ha-steps-icon i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-steps-icon .ha-steps-label{position:absolute;top:5px;right:0;padding:12px 8px;border:3px solid #fff;border-radius:20px;background-color:#8056ee;color:#fff;font-size:12px;line-height:0}.ha-steps-title{margin-top:0;margin-bottom:30px;font-weight:700;font-size:16px}.ha-steps-title a{display:block;color:#562dd4}.ha-steps-title a:hover{color:#242424}.ha-step-description{margin:0;color:#616161;font-weight:400;font-size:16px;line-height:1.5}
assets/css/widgets/btn.min.css CHANGED
@@ -1 +1 @@
1
- .ha-btn{display:inline-block;vertical-align:middle;text-align:center;text-decoration:none;font-size:14px;line-height:1;-webkit-transition:all .3s;transition:all .3s}.ha-btn:not(.ha-btn--link){padding:15px 25px;border-radius:.25rem;background-color:#562dd4;color:#fff}.ha-btn:not(.ha-btn--link):focus,.ha-btn:not(.ha-btn--link):hover{background-color:#e2498a}.ha-btn.ha-btn--link{color:#562dd4}.ha-btn.ha-btn--link:focus,.ha-btn.ha-btn--link:hover{color:#e2498a}.ha-btn-icon{-webkit-transition:all .3s;transition:all .3s}.ha-btn-icon+.ha-btn-text,.ha-btn-text+.ha-btn-icon{margin-left:5px}
1
+ .ha-btn{display:inline-block;vertical-align:middle;text-align:center;text-decoration:none;font-size:14px;line-height:1;-webkit-transition:all .3s;transition:all .3s}.ha-btn:not(.ha-btn--link){padding:15px 25px;border-radius:.25rem;background-color:#562dd4;color:#fff}.ha-btn:not(.ha-btn--link):focus,.ha-btn:not(.ha-btn--link):hover{background-color:#e2498a}.ha-btn.ha-btn--link{color:#562dd4}.ha-btn.ha-btn--link:focus,.ha-btn.ha-btn--link:hover{color:#e2498a}.ha-btn-icon+.ha-btn-text,.ha-btn-text+.ha-btn-icon{margin-left:5px}
assets/css/widgets/common.min.css CHANGED
@@ -1 +1 @@
1
- .happy-addon,.happy-addon *{box-sizing:border-box}.happy-addon img{max-width:100%;height:auto;-o-object-fit:cover;object-fit:cover}.happy-addon p:empty{display:none}.ha-screen-reader-text{position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);margin:-1px;padding:0;width:1px;height:1px;border:0;word-wrap:normal!important;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.ha-has-background-overlay>.elementor-widget-container{position:relative;z-index:1}.ha-has-background-overlay>.elementor-widget-container:before{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;content:""}
1
+ .happy-addon,.happy-addon *{box-sizing:border-box}.happy-addon img{max-width:100%;height:auto;-o-object-fit:cover;object-fit:cover}.happy-addon p:empty{display:none}.ha-screen-reader-text{position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);margin:-1px;padding:0;width:1px;height:1px;border:0;word-wrap:normal!important;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.ha-has-background-overlay>.elementor-widget-container{position:relative;z-index:1}.ha-has-background-overlay>.elementor-widget-container:before{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;content:""}.ha-popup--is-enabled .ha-js-popup,.ha-popup--is-enabled .ha-js-popup>img{cursor:-webkit-zoom-in!important;cursor:zoom-in!important}.mfp-wrap .mfp-arrow,.mfp-wrap .mfp-close{background-color:transparent}.mfp-wrap .mfp-arrow:focus,.mfp-wrap .mfp-close:focus{outline-width:thin}
assets/css/widgets/flip-box.min.css CHANGED
@@ -1 +1 @@
1
- .ha-flip-box-container:after{display:block;visibility:hidden;clear:both;height:0;content:" ";font-size:0}.ha-flip-box-container .ha-flip-box-inner{position:relative;z-index:1;margin:0;padding:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-back{z-index:1}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-front{z-index:-1}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-inner-wrapper{position:relative;-webkit-transform:translateZ(0);-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{top:0;right:0;left:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;height:250px;background-position:center;background-clip:padding-box;background-size:cover;background-repeat:no-repeat;text-align:center;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{background-color:transparent;position:relative;bottom:0;z-index:10;padding:30px;border:1px solid #ddd;border-radius:.3rem}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front:before{position:absolute;top:0;left:0;z-index:-9;width:100%;height:100%;background-color:transparent;content:""}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back{position:absolute;z-index:-1;padding:46px;border-radius:.3rem;background-color:#562dd4;color:#fff}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text{text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text p,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text p{margin-top:10px;margin-bottom:0}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon.icon{padding:20px;border-radius:50%;background-color:#f1f4f8;color:#242424}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;font-size:28px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon img,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon img{width:60px;height:60px;vertical-align:middle}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-box-heading{margin:0;font-weight:700;font-size:20px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner p{margin-bottom:0;font-size:16px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-box-heading-back{margin:0;color:#fff;font-size:18px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;color:#fff;font-size:20px}.ha-flip-box-container .ha-flip-box-back-inner .button-wrap{margin-top:12px}.ha-flip-box-container .ha-flip-box-back-inner .ha-flip-btn{display:inline-block;padding:.8rem 2.5rem;border-radius:4px;background-color:#fff;color:#562dd4;text-decoration:none;text-transform:uppercase;font-size:12px;-webkit-transition:all .3s;transition:all .3s}.ha-flip-box-container .ha-flip-box-back-inner .ha-flip-btn:hover{background-color:#fff;color:#562dd4}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-back{-webkit-transform:rotateY(0);transform:rotateY(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-back{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-front{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-left .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-left:hover .ha-flip-box-back{-webkit-transform:rotateY(0);transform:rotateY(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-left .ha-flip-box-back{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.ha-flip-box-container .ha-flip-box.ha-flip-left:hover .ha-flip-box-front{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-back{-webkit-transform:rotateX(0);transform:rotateX(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-back{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-front{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-down .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-down:hover .ha-flip-box-back{-webkit-transform:rotateX(0);transform:rotateX(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-down .ha-flip-box-back{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-down:hover .ha-flip-box-front{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-back,.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-front{-webkit-transition:-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275),-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275)}
1
+ .ha-flip-box-container:after{display:block;visibility:hidden;clear:both;height:0;content:" ";font-size:0}.ha-flip-box-container .ha-flip-box-inner{position:relative;z-index:1;margin:0;padding:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-back{z-index:1}.ha-flip-box-container .ha-flip-box-inner:hover .ha-flip-box-front{z-index:-1}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-inner-wrapper{position:relative;-webkit-transform:translateZ(0);-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{top:0;right:0;left:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;height:250px;background-position:center;background-clip:padding-box;background-size:cover;background-repeat:no-repeat;text-align:center;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front{background-color:transparent;position:relative;bottom:0;z-index:10;padding:30px;border:1px solid #ddd;border-radius:.3rem}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front:before{position:absolute;top:0;left:0;z-index:-9;width:100%;height:100%;background-color:transparent;content:""}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back{position:absolute;z-index:-1;padding:46px;border-radius:.3rem;background-color:#562dd4;color:#fff}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text{text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-text p,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-text p{margin-top:10px;margin-bottom:0}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon.icon{padding:20px;border-radius:50%;background-color:#f1f4f8;color:#242424}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;font-size:28px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i:before,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon img,.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-icon img{width:60px;height:60px;vertical-align:middle}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner .ha-flip-box-heading{margin:0;font-weight:700;font-size:20px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-front-inner p{margin-bottom:0;font-size:16px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-box-heading-back{margin:0;color:#fff;font-size:18px}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon{display:inline-block;margin-bottom:20px;text-align:center}.ha-flip-box-container .ha-flip-box-inner .ha-flip-box-back-inner .ha-flip-icon i{position:relative;display:block;width:1em;height:1em;color:#fff;font-size:20px}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-back{-webkit-transform:rotateY(0);transform:rotateY(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right .ha-flip-box-back{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-right:hover .ha-flip-box-front{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-front,.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-back{-webkit-transform:rotateX(0);transform:rotateX(0)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up .ha-flip-box-back{-webkit-transform:rotateX(-180deg);transform:rotateX(-180deg)}.ha-flip-box-container .ha-flip-box-inner.ha-flip-up:hover .ha-flip-box-front{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-back,.ha-flip-box-container.ha-flip-effect-classic .ha-flip-box-front{-webkit-transition:-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275);transition:transform .6s cubic-bezier(.2,.85,.4,1.275),-webkit-transform .6s cubic-bezier(.2,.85,.4,1.275)}
assets/css/widgets/pricing-table.min.css CHANGED
@@ -1 +1 @@
1
- .ha-pricing-table>.elementor-widget-container{border-radius:.5rem;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1);word-wrap:break-word;overflow-wrap:break-word;position:relative;overflow:hidden;padding:3em 4em}.ha-pricing-table-badge{position:absolute;top:-1px;padding:.8rem 1rem;background-color:#e2498a;color:#fff;line-height:1}.ha-pricing-table-badge--left{left:0;-webkit-transform:rotate(-90deg) translateX(-100%);-ms-transform:rotate(-90deg) translateX(-100%);transform:rotate(-90deg) translateX(-100%);-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.ha-pricing-table-badge--right{right:0;-webkit-transform:rotate(-90deg) translateY(-100%);-ms-transform:rotate(-90deg) translateY(-100%);transform:rotate(-90deg) translateY(-100%);-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.ha-pricing-table-title{margin-top:0;margin-bottom:.5rem;color:#242424;font-weight:400;font-size:24px}.ha-pricing-table-price{margin-bottom:3rem}.ha-pricing-table-price-tag{margin-bottom:.5rem;color:#242424;font-weight:700;font-size:60px;line-height:normal}.ha-pricing-table-currency{font-size:24px}.ha-pricing-table-period{color:#8c8c8c;font-size:16px}.ha-pricing-table-body{margin-bottom:3rem}.ha-pricing-table-features-title{margin-top:0;margin-bottom:1rem;font-weight:700;font-size:16px}.ha-pricing-table-features-list{margin:0;padding:0;list-style:none}.ha-pricing-table-features-list li{margin-bottom:1rem;font-size:16px}.ha-pricing-table-features-list i{margin-right:.5rem;min-width:15px;font-size:.8em}.ha-pricing-table-btn{display:inline-block;padding:.8rem 2rem;border-radius:40px;background-color:#e2498a;color:#fff;text-decoration:none;text-transform:uppercase;font-size:12px;-webkit-transition:all .3s;transition:all .3s}.ha-pricing-table-btn:hover{background-color:#562dd4;color:#fff}
1
+ .ha-pricing-table>.elementor-widget-container{border-radius:.5rem;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1);word-wrap:break-word;overflow-wrap:break-word;position:relative;overflow:hidden;padding:3em 4em}.ha-pricing-table-badge{position:absolute;top:-1px;padding:.8rem 1rem;background-color:#e2498a;color:#fff;line-height:1}.ha-pricing-table-badge--left{left:0;-webkit-transform:rotate(-90deg) translateX(-100%);-ms-transform:rotate(-90deg) translateX(-100%);transform:rotate(-90deg) translateX(-100%);-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.ha-pricing-table-badge--right{right:0;-webkit-transform:rotate(-90deg) translateY(-100%);-ms-transform:rotate(-90deg) translateY(-100%);transform:rotate(-90deg) translateY(-100%);-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.ha-pricing-table-title{margin-top:0;margin-bottom:.5rem;color:#242424;font-weight:400;font-size:24px}.ha-pricing-table-price{margin-bottom:3rem}.ha-pricing-table-price-tag{margin-bottom:.5rem;color:#242424;font-weight:700;font-size:60px;line-height:normal}.ha-pricing-table-currency{font-size:24px}.ha-pricing-table-period{color:#8c8c8c;font-size:16px}.ha-pricing-table-body{margin-bottom:3rem}.ha-pricing-table-features-title{margin-top:0;margin-bottom:1rem;font-weight:700;font-size:16px}.ha-pricing-table-features-list{margin:0;padding:0;list-style:none}.ha-pricing-table-features-list li{margin-bottom:1rem;font-size:16px}.ha-pricing-table-features-list i{margin-right:.5rem;min-width:15px;font-size:.8em}.ha-pricing-table-feature-text{display:inline-block}.ha-pricing-table-btn{display:inline-block;padding:.8rem 2rem;border-radius:40px;background-color:#e2498a;color:#fff;text-decoration:none;text-transform:uppercase;font-size:12px;-webkit-transition:all .3s;transition:all .3s}.ha-pricing-table-btn:hover{background-color:#562dd4;color:#fff}
assets/fonts/{Happy-Addons-Icon.woff → happy-icons.eot} RENAMED
Binary file
assets/fonts/happy-icons.js CHANGED
@@ -141,7 +141,6 @@
141
  "flag",
142
  "flip-card1",
143
  "flip-card2",
144
- "folder-network",
145
  "folder",
146
  "football",
147
  "footer",
@@ -398,6 +397,72 @@
398
  "wine-glass2",
399
  "wine-glass",
400
  "worker-cap",
401
- "youtube"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
402
  ]
403
  }
141
  "flag",
142
  "flip-card1",
143
  "flip-card2",
 
144
  "folder",
145
  "football",
146
  "footer",
397
  "wine-glass2",
398
  "wine-glass",
399
  "worker-cap",
400
+ "youtube",
401
+ "centralize",
402
+ "add-section",
403
+ "advanced-heading",
404
+ "air-baloon",
405
+ "arrow2",
406
+ "bicycle2",
407
+ "bond2",
408
+ "bond3",
409
+ "bond4",
410
+ "calendar2",
411
+ "carousel",
412
+ "code-page",
413
+ "comment-circle",
414
+ "comment-square",
415
+ "copy",
416
+ "cursor",
417
+ "envelop2",
418
+ "factory",
419
+ "finger-point",
420
+ "finger-swipe-both",
421
+ "finger-swipe-corner",
422
+ "finger-swipe-left",
423
+ "finger-swipe-up",
424
+ "finger-swipe",
425
+ "finger-touch",
426
+ "folder-network",
427
+ "folder-sync",
428
+ "graph-bar2",
429
+ "graph-pie2",
430
+ "heading-h",
431
+ "heading-html",
432
+ "heart",
433
+ "home2",
434
+ "indent-left",
435
+ "indent-right",
436
+ "lock-close",
437
+ "lock-open",
438
+ "map-pointer-add",
439
+ "map-pointer-check",
440
+ "map-pointer-delete",
441
+ "map-pointer2",
442
+ "map",
443
+ "navigation1",
444
+ "navigation2",
445
+ "page-export",
446
+ "page-sync",
447
+ "piramid",
448
+ "plug",
449
+ "point-marker",
450
+ "quote2",
451
+ "refresh-check",
452
+ "refresh",
453
+ "refresh2",
454
+ "scrolling-image",
455
+ "sign-turn-right",
456
+ "speedometer",
457
+ "sticky",
458
+ "sync-cloud",
459
+ "sync",
460
+ "sync2",
461
+ "table-lamp2",
462
+ "target2",
463
+ "timeline-spiral",
464
+ "tv",
465
+ "vespa",
466
+ "happyaddons"
467
  ]
468
  }
assets/fonts/{Happy-Addons-Icon.svg → happy-icons.svg} RENAMED
@@ -3,7 +3,7 @@
3
  <svg xmlns="http://www.w3.org/2000/svg">
4
  <metadata>Generated by IcoMoon</metadata>
5
  <defs>
6
- <font id="Happy-Addons-Icon" horiz-adv-x="1024">
7
  <font-face units-per-em="1024" ascent="960" descent="-64" />
8
  <missing-glyph horiz-adv-x="1024" />
9
  <glyph unicode="&#x20;" horiz-adv-x="512" d="" />
@@ -148,7 +148,7 @@
148
  <glyph unicode="&#xe98a;" glyph-name="flag" d="M272 976c-9.6 0-16-6.4-16-16v-832c0-9.6 6.4-16 16-16s16 6.4 16 16v320h192v-144c0 0 0 0 0 0s0-3.2 0-3.2c0 0 0-3.2 0-3.2s0 0 0 0 0 0 0 0 3.2-3.2 3.2-3.2c0 0 0 0 3.2 0s3.2-3.2 6.4-3.2h406.4c6.4 0 9.6 3.2 12.8 6.4s3.2 9.6 3.2 12.8l-64 201.6 67.2 201.6c0 6.4 0 9.6-3.2 12.8 0 6.4-6.4 9.6-12.8 9.6h-166.4v144c0 9.6-6.4 16-16 16h-432v64c0 9.6-6.4 16-16 16zM512 448h166.4l-166.4-115.2v115.2zM883.2 704l-60.8-185.6c0-3.2 0-6.4 0-9.6l60.8-185.6h-336l182.4 121.6c6.4 3.2 6.4 9.6 6.4 16 0 0 0 3.2 0 3.2v240h147.2zM704 864v-384h-416v384h416zM176 48c0-9.6 6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-160c-9.6 0-16-6.4-16-16zM112-48c0-9.6 6.4-16 16-16h288c9.6 0 16 6.4 16 16s-6.4 16-16 16h-288c-9.6 0-16-6.4-16-16z" />
149
  <glyph unicode="&#xe98b;" glyph-name="flip-card1" horiz-adv-x="1184" d="M787.2 150.4c-9.6 0-16-6.4-16-16v-44.8c0-19.2-12.8-35.2-32-41.6l-201.6-60.8c-12.8-3.2-28.8 0-38.4 6.4-12.8 9.6-19.2 22.4-19.2 35.2 0 9.6-6.4 16-16 16s-16-6.4-16-16c0-25.6 9.6-48 32-60.8 12.8-9.6 28.8-16 44.8-16 6.4 0 16 0 22.4 3.2l201.6 60.8c32 9.6 54.4 38.4 54.4 73.6v44.8c0 9.6-6.4 16-16 16zM848 518.4h-44.8v256c0 32-19.2 57.6-48 70.4l-201.6 80c-22.4 9.6-51.2 6.4-70.4-6.4-22.4-12.8-32-38.4-32-64v-278.4c0-9.6 6.4-16 16-16s16 6.4 16 16v278.4c0 16 6.4 28.8 19.2 35.2 12.8 9.6 25.6 9.6 41.6 3.2l201.6-80c16-6.4 28.8-22.4 28.8-41.6v-256h-406.4c-89.6 0-160-70.4-160-160s70.4-160 160-160h144c0 0 0 0 0 0l-57.6-57.6c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l83.2 83.2c6.4 6.4 6.4 16 0 22.4l-83.2 89.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l57.6-57.6c0 0 0 0 0 0h-144c-70.4 0-128 57.6-128 128s57.6 128 128 128h403.2v-198.4c0-9.6 6.4-16 16-16s16 6.4 16 16v198.4h44.8c70.4 0 128-57.6 128-128s-57.6-128-128-128h-172.8c-9.6 0-16-6.4-16-16s6.4-16 16-16h172.8c89.6 0 160 70.4 160 160s-73.6 160-163.2 160zM528 214.4v0c0 0 0 0 0 0s0 0 0 0v0z" />
150
  <glyph unicode="&#xe98c;" glyph-name="flip-card2" d="M720 672c6.4 0 9.6 3.2 12.8 6.4l76.8 121.6c3.2 6.4 3.2 16-6.4 22.4-6.4 3.2-16 3.2-22.4-6.4l-54.4-89.6c-6.4 121.6-105.6 217.6-227.2 217.6-124.8 0-230.4-102.4-230.4-230.4 3.2-3.2 9.6-9.6 19.2-9.6s16 6.4 16 16c0 108.8 89.6 198.4 198.4 198.4s195.2-89.6 198.4-195.2l-89.6 57.6c-6.4 3.2-16 3.2-22.4-6.4-3.2-6.4-3.2-16 6.4-22.4l115.2-80c3.2 0 6.4 0 9.6 0zM496 780.8c-9.6 0-16-6.4-16-16v-800c0-9.6 6.4-16 16-16s16 6.4 16 16v800c0 9.6-6.4 16-16 16zM307.2 569.6l-185.6 41.6c-48 9.6-96-28.8-96-76.8v-467.2c0-44.8 35.2-80 80-80 6.4 0 12.8 0 16 3.2l185.6 41.6c38.4 9.6 64 41.6 64 76.8v384c-3.2 35.2-28.8 67.2-64 76.8zM336 105.6c0-22.4-16-41.6-38.4-48l-185.6-41.6c-28.8-6.4-57.6 16-57.6 48v467.2c0 25.6 22.4 48 48 48 3.2 0 6.4 0 9.6 0l185.6-41.6c22.4-6.4 38.4-25.6 38.4-48v-384zM928 611.2c-6.4 0-12.8 0-16-3.2l-185.6-41.6c-38.4-9.6-64-41.6-64-76.8v-384c0-38.4 25.6-70.4 64-76.8l185.6-41.6c6.4 0 12.8-3.2 16-3.2 44.8 0 80 35.2 80 80v467.2c0 44.8-35.2 80-80 80zM976 67.2c0-28.8-28.8-54.4-57.6-48l-185.6 41.6c-22.4 6.4-38.4 25.6-38.4 48v384c0 22.4 16 41.6 38.4 48l185.6 41.6c3.2 0 6.4 0 9.6 0 25.6 0 48-22.4 48-48v-467.2z" />
151
- <glyph unicode="&#xe98d;" glyph-name="folder-network" horiz-adv-x="960" d="M480 160h432c25.6 0 48 22.4 48 48v576c0 25.6-22.4 48-48 48h-508.8c-6.4 0-12.8 3.2-16 9.6l-25.6 86.4c-6.4 19.2-25.6 32-44.8 32h-268.8c-25.6 0-48-22.4-48-48v-704c0-25.6 22.4-48 48-48h400v-64c0 0 0 0 0 0-32-6.4-57.6-32-64-64h-224c-9.6 0-16-6.4-16-16s6.4-16 16-16h224c6.4-35.2 38.4-64 76.8-64s70.4 28.8 80 64c0 0 3.2 0 3.2 0h224c9.6 0 16 6.4 16 16s-6.4 16-16 16h-224c0 0-3.2 0-3.2 0-6.4 32-28.8 54.4-60.8 64 0 0 0 0 0 3.2v60.8zM32 912c0 9.6 6.4 16 16 16h268.8c6.4 0 12.8-3.2 16-9.6l25.6-86.4c6.4-19.2 25.6-32 44.8-32h508.8c9.6 0 16-6.4 16-16v-80h-896v208zM508.8 16c0-25.6-22.4-48-48-48s-48 22.4-48 48 22.4 48 48 48 48-22.4 48-48zM48 192c-9.6 0-16 6.4-16 16v464h896v-464c0-9.6-6.4-16-16-16h-864z" />
152
  <glyph unicode="&#xe98e;" glyph-name="folder" d="M0-16c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48v672c0 3.2 0 6.4-3.2 6.4 3.2 3.2 3.2 6.4 3.2 9.6v80c0 25.6-22.4 48-48 48h-524.8c-6.4 0-9.6 3.2-12.8 6.4l-76.8 128c-9.6 16-25.6 25.6-44.8 25.6h-268.8c-25.6 0-48-22.4-48-48v-240c0-3.2 0-6.4 3.2-6.4-3.2-3.2-3.2-6.4-3.2-9.6v-672zM32 912c0 9.6 6.4 16 16 16h268.8c6.4 0 9.6-3.2 12.8-6.4l76.8-128c9.6-16 25.6-25.6 44.8-25.6h524.8c9.6 0 16-6.4 16-16v-80h-960v240zM32 640h960v-656c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v656z" />
153
  <glyph unicode="&#xe98f;" glyph-name="football" d="M931.2 742.4c0 3.2-3.2 6.4-6.4 9.6-92.8 124.8-243.2 208-412.8 208-172.8 0-323.2-86.4-416-214.4-3.2-3.2-3.2-3.2-3.2-6.4-57.6-83.2-92.8-182.4-92.8-291.2 0-102.4 32-198.4 83.2-278.4 0-3.2 3.2-3.2 3.2-6.4 92.8-137.6 249.6-227.2 425.6-227.2 281.6 0 512 230.4 512 512 0 108.8-35.2 211.2-92.8 294.4zM902.4 169.6l-176 3.2-83.2 118.4 64 201.6 144 51.2 140.8-99.2c0-102.4-35.2-198.4-89.6-275.2zM300.8 192h-192c-44.8 64-70.4 147.2-76.8 233.6l140.8 99.2 134.4-35.2 67.2-204.8-73.6-92.8zM102.4 694.4l51.2-147.2-121.6-83.2c3.2 86.4 28.8 163.2 70.4 230.4zM403.2 288l-64 204.8 166.4 124.8 166.4-128-64-204.8h-204.8zM873.6 566.4l44.8 134.4c38.4-64 64-137.6 70.4-217.6l-115.2 83.2zM896 732.8l-54.4-160-150.4-51.2-179.2 128v140.8l150.4 105.6c0 0 6.4 3.2 6.4 3.2 92.8-32 172.8-89.6 227.2-166.4zM636.8 912l-124.8-92.8-121.6 92.8c38.4 9.6 80 16 121.6 16s83.2-6.4 124.8-16zM352 899.2c0 0-6.4 0-6.4 0l134.4-105.6v-144l-166.4-128-131.2 35.2-60.8 172.8c57.6 76.8 137.6 137.6 230.4 169.6zM131.2 160h166.4l48-160c-86.4 32-160 96-214.4 160zM380.8-12.8l-54.4 179.2 73.6 89.6h220.8l80-105.6-54.4-166.4c-41.6-12.8-86.4-16-134.4-16-44.8 0-89.6 6.4-131.2 19.2zM684.8 0l44.8 140.8 150.4-3.2c-51.2-60.8-118.4-108.8-195.2-137.6z" />
154
  <glyph unicode="&#xe990;" glyph-name="footer" horiz-adv-x="1120" d="M1072 352h-1024c-25.6 0-48-22.4-48-48v-320c0-25.6 22.4-48 48-48h1024c25.6 0 48 22.4 48 48v320c0 25.6-22.4 48-48 48zM1088-16c0-9.6-6.4-16-16-16h-1024c-9.6 0-16 6.4-16 16v320c0 9.6 6.4 16 16 16h1024c9.6 0 16-6.4 16-16v-320zM128 432c0-9.6 6.4-16 16-16s16 6.4 16 16v480c0 9.6 6.4 16 16 16h800c9.6 0 16-6.4 16-16v-480c0-9.6 6.4-16 16-16s16 6.4 16 16v480c0 25.6-22.4 48-48 48h-800c-25.6 0-48-22.4-48-48v-480zM816 416c9.6 0 16 6.4 16 16v188.8c0 28.8-19.2 51.2-44.8 51.2h-422.4c-25.6 0-44.8-22.4-44.8-51.2v-188.8c0-9.6 6.4-16 16-16s16 6.4 16 16v188.8c0 9.6 6.4 19.2 12.8 19.2h419.2c6.4 0 12.8-9.6 12.8-19.2v-188.8c3.2-9.6 9.6-16 19.2-16z" />
@@ -406,4 +406,70 @@
406
  <glyph unicode="&#xea8c;" glyph-name="wine-glass" horiz-adv-x="864" d="M860.8 931.2c-6.4 16-25.6 28.8-44.8 28.8h-617.6c0 0-3.2 0-3.2 0s-3.2 0-3.2 0h-144c-19.2 0-35.2-9.6-44.8-28.8-6.4-19.2-3.2-38.4 9.6-51.2l387.2-406.4v-441.6h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-64v441.6l419.2 403.2c12.8 12.8 16 35.2 9.6 54.4zM828.8 899.2l-412.8-396.8-377.6 400c-9.6 6.4-6.4 12.8-3.2 16s3.2 9.6 12.8 9.6h137.6l131.2-118.4c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4l-105.6 96h582.4c9.6 0 16-6.4 16-9.6s3.2-9.6-3.2-19.2zM272-32c-9.6 0-16-6.4-16-16s6.4-16 16-16h288c9.6 0 16 6.4 16 16s-6.4 16-16 16h-288z" />
407
  <glyph unicode="&#xea8d;" glyph-name="worker-cap" horiz-adv-x="992" d="M880 329.6v22.4h32c44.8 0 80 35.2 80 83.2 0 44.8-35.2 80-76.8 80-25.6 163.2-140.8 297.6-294.4 345.6-12.8 57.6-64 99.2-124.8 99.2s-112-41.6-124.8-99.2c-156.8-51.2-268.8-182.4-294.4-345.6-41.6-3.2-76.8-38.4-76.8-80 0-48 35.2-83.2 80-83.2h32v-22.4c0-217.6 172.8-393.6 384-393.6s384 176 384 393.6zM32 432c0 28.8 22.4 48 48 48h9.6c9.6 0 16 6.4 16 16 19.2 150.4 134.4 278.4 262.4 329.6v-73.6c0-9.6 6.4-16 16-16s16 6.4 16 16v80c0 3.2 0 6.4 0 12.8 0 0 0 0 0 3.2 6.4 44.8 48 80 96 80s86.4-35.2 96-80c0 0 0 0 0-3.2s0-6.4 0-12.8v-80c0-9.6 6.4-16 16-16s16 6.4 16 16v73.6c128-48 243.2-176 262.4-329.6 0-9.6 6.4-16 16-16h9.6c25.6 0 48-19.2 48-48s-22.4-48-48-48h-832c-25.6 0-48 19.2-48 48zM496-32c-195.2 0-352 163.2-352 361.6v22.4h704v-22.4c0-198.4-156.8-361.6-352-361.6zM288 288c0-35.2 28.8-64 64-64s64 28.8 64 64-28.8 64-64 64-64-28.8-64-64zM352 320c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 16 32 32 32zM572.8 288c0-35.2 28.8-64 64-64s64 28.8 64 64-28.8 64-64 64-64-28.8-64-64zM636.8 320c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 16 32 32 32zM576 160c-9.6 0-16-6.4-16-16 0-25.6-28.8-48-64-48s-64 22.4-64 48c0 9.6-6.4 16-16 16s-16-6.4-16-16c0-44.8 41.6-80 96-80s96 35.2 96 80c0 9.6-6.4 16-16 16z" />
408
  <glyph unicode="&#xea8e;" glyph-name="youtube" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512-32c-265.6 0-480 214.4-480 480s214.4 480 480 480 480-214.4 480-480-214.4-480-480-480zM713.6 620.8c-25.6 9.6-160 9.6-201.6 9.6-80 0-150.4-3.2-185.6-6.4-19.2-3.2-38.4-12.8-51.2-28.8-38.4-44.8-28.8-243.2-12.8-288 9.6-22.4 25.6-38.4 48-48 32-9.6 169.6-9.6 198.4-9.6 57.6 0 188.8 0 214.4 16 16 9.6 25.6 19.2 35.2 35.2 22.4 51.2 22.4 224 3.2 275.2-9.6 19.2-25.6 35.2-48 44.8zM729.6 313.6c-3.2-9.6-9.6-16-19.2-19.2-12.8-6.4-86.4-9.6-201.6-9.6-105.6 0-172.8 3.2-188.8 9.6-12.8 3.2-22.4 12.8-28.8 25.6-16 44.8-19.2 227.2 6.4 256 9.6 9.6 19.2 16 32 16 35.2 3.2 105.6 6.4 182.4 6.4 108.8 0 179.2-3.2 188.8-9.6 12.8-6.4 22.4-12.8 28.8-25.6 16-41.6 19.2-208 0-249.6zM624 460.8c-16 9.6-35.2 19.2-54.4 28.8-38.4 22.4-73.6 41.6-102.4 51.2-6.4 3.2-9.6 0-16-3.2-3.2-3.2-6.4-6.4-6.4-12.8v-160c0-6.4 3.2-9.6 6.4-12.8s6.4-3.2 9.6-3.2c3.2 0 3.2 0 6.4 0 32 16 67.2 35.2 102.4 51.2 16 9.6 35.2 19.2 51.2 28.8 6.4 3.2 9.6 9.6 9.6 12.8s0 16-6.4 19.2zM556.8 432c-25.6-12.8-51.2-28.8-76.8-41.6v108.8c22.4-9.6 48-25.6 76.8-41.6 9.6-6.4 19.2-9.6 28.8-16-9.6 0-19.2-3.2-28.8-9.6z" />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
409
  </font></defs></svg>
3
  <svg xmlns="http://www.w3.org/2000/svg">
4
  <metadata>Generated by IcoMoon</metadata>
5
  <defs>
6
+ <font id="happy-icons" horiz-adv-x="1024">
7
  <font-face units-per-em="1024" ascent="960" descent="-64" />
8
  <missing-glyph horiz-adv-x="1024" />
9
  <glyph unicode="&#x20;" horiz-adv-x="512" d="" />
148
  <glyph unicode="&#xe98a;" glyph-name="flag" d="M272 976c-9.6 0-16-6.4-16-16v-832c0-9.6 6.4-16 16-16s16 6.4 16 16v320h192v-144c0 0 0 0 0 0s0-3.2 0-3.2c0 0 0-3.2 0-3.2s0 0 0 0 0 0 0 0 3.2-3.2 3.2-3.2c0 0 0 0 3.2 0s3.2-3.2 6.4-3.2h406.4c6.4 0 9.6 3.2 12.8 6.4s3.2 9.6 3.2 12.8l-64 201.6 67.2 201.6c0 6.4 0 9.6-3.2 12.8 0 6.4-6.4 9.6-12.8 9.6h-166.4v144c0 9.6-6.4 16-16 16h-432v64c0 9.6-6.4 16-16 16zM512 448h166.4l-166.4-115.2v115.2zM883.2 704l-60.8-185.6c0-3.2 0-6.4 0-9.6l60.8-185.6h-336l182.4 121.6c6.4 3.2 6.4 9.6 6.4 16 0 0 0 3.2 0 3.2v240h147.2zM704 864v-384h-416v384h416zM176 48c0-9.6 6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-160c-9.6 0-16-6.4-16-16zM112-48c0-9.6 6.4-16 16-16h288c9.6 0 16 6.4 16 16s-6.4 16-16 16h-288c-9.6 0-16-6.4-16-16z" />
149
  <glyph unicode="&#xe98b;" glyph-name="flip-card1" horiz-adv-x="1184" d="M787.2 150.4c-9.6 0-16-6.4-16-16v-44.8c0-19.2-12.8-35.2-32-41.6l-201.6-60.8c-12.8-3.2-28.8 0-38.4 6.4-12.8 9.6-19.2 22.4-19.2 35.2 0 9.6-6.4 16-16 16s-16-6.4-16-16c0-25.6 9.6-48 32-60.8 12.8-9.6 28.8-16 44.8-16 6.4 0 16 0 22.4 3.2l201.6 60.8c32 9.6 54.4 38.4 54.4 73.6v44.8c0 9.6-6.4 16-16 16zM848 518.4h-44.8v256c0 32-19.2 57.6-48 70.4l-201.6 80c-22.4 9.6-51.2 6.4-70.4-6.4-22.4-12.8-32-38.4-32-64v-278.4c0-9.6 6.4-16 16-16s16 6.4 16 16v278.4c0 16 6.4 28.8 19.2 35.2 12.8 9.6 25.6 9.6 41.6 3.2l201.6-80c16-6.4 28.8-22.4 28.8-41.6v-256h-406.4c-89.6 0-160-70.4-160-160s70.4-160 160-160h144c0 0 0 0 0 0l-57.6-57.6c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l83.2 83.2c6.4 6.4 6.4 16 0 22.4l-83.2 89.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l57.6-57.6c0 0 0 0 0 0h-144c-70.4 0-128 57.6-128 128s57.6 128 128 128h403.2v-198.4c0-9.6 6.4-16 16-16s16 6.4 16 16v198.4h44.8c70.4 0 128-57.6 128-128s-57.6-128-128-128h-172.8c-9.6 0-16-6.4-16-16s6.4-16 16-16h172.8c89.6 0 160 70.4 160 160s-73.6 160-163.2 160zM528 214.4v0c0 0 0 0 0 0s0 0 0 0v0z" />
150
  <glyph unicode="&#xe98c;" glyph-name="flip-card2" d="M720 672c6.4 0 9.6 3.2 12.8 6.4l76.8 121.6c3.2 6.4 3.2 16-6.4 22.4-6.4 3.2-16 3.2-22.4-6.4l-54.4-89.6c-6.4 121.6-105.6 217.6-227.2 217.6-124.8 0-230.4-102.4-230.4-230.4 3.2-3.2 9.6-9.6 19.2-9.6s16 6.4 16 16c0 108.8 89.6 198.4 198.4 198.4s195.2-89.6 198.4-195.2l-89.6 57.6c-6.4 3.2-16 3.2-22.4-6.4-3.2-6.4-3.2-16 6.4-22.4l115.2-80c3.2 0 6.4 0 9.6 0zM496 780.8c-9.6 0-16-6.4-16-16v-800c0-9.6 6.4-16 16-16s16 6.4 16 16v800c0 9.6-6.4 16-16 16zM307.2 569.6l-185.6 41.6c-48 9.6-96-28.8-96-76.8v-467.2c0-44.8 35.2-80 80-80 6.4 0 12.8 0 16 3.2l185.6 41.6c38.4 9.6 64 41.6 64 76.8v384c-3.2 35.2-28.8 67.2-64 76.8zM336 105.6c0-22.4-16-41.6-38.4-48l-185.6-41.6c-28.8-6.4-57.6 16-57.6 48v467.2c0 25.6 22.4 48 48 48 3.2 0 6.4 0 9.6 0l185.6-41.6c22.4-6.4 38.4-25.6 38.4-48v-384zM928 611.2c-6.4 0-12.8 0-16-3.2l-185.6-41.6c-38.4-9.6-64-41.6-64-76.8v-384c0-38.4 25.6-70.4 64-76.8l185.6-41.6c6.4 0 12.8-3.2 16-3.2 44.8 0 80 35.2 80 80v467.2c0 44.8-35.2 80-80 80zM976 67.2c0-28.8-28.8-54.4-57.6-48l-185.6 41.6c-22.4 6.4-38.4 25.6-38.4 48v384c0 22.4 16 41.6 38.4 48l185.6 41.6c3.2 0 6.4 0 9.6 0 25.6 0 48-22.4 48-48v-467.2z" />
151
+ <glyph unicode="&#xe98d;" glyph-name="folder-network1" horiz-adv-x="960" d="M480 160h432c25.6 0 48 22.4 48 48v576c0 25.6-22.4 48-48 48h-508.8c-6.4 0-12.8 3.2-16 9.6l-25.6 86.4c-6.4 19.2-25.6 32-44.8 32h-268.8c-25.6 0-48-22.4-48-48v-704c0-25.6 22.4-48 48-48h400v-64c0 0 0 0 0 0-32-6.4-57.6-32-64-64h-224c-9.6 0-16-6.4-16-16s6.4-16 16-16h224c6.4-35.2 38.4-64 76.8-64s70.4 28.8 80 64c0 0 3.2 0 3.2 0h224c9.6 0 16 6.4 16 16s-6.4 16-16 16h-224c0 0-3.2 0-3.2 0-6.4 32-28.8 54.4-60.8 64 0 0 0 0 0 3.2v60.8zM32 912c0 9.6 6.4 16 16 16h268.8c6.4 0 12.8-3.2 16-9.6l25.6-86.4c6.4-19.2 25.6-32 44.8-32h508.8c9.6 0 16-6.4 16-16v-80h-896v208zM508.8 16c0-25.6-22.4-48-48-48s-48 22.4-48 48 22.4 48 48 48 48-22.4 48-48zM48 192c-9.6 0-16 6.4-16 16v464h896v-464c0-9.6-6.4-16-16-16h-864z" />
152
  <glyph unicode="&#xe98e;" glyph-name="folder" d="M0-16c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48v672c0 3.2 0 6.4-3.2 6.4 3.2 3.2 3.2 6.4 3.2 9.6v80c0 25.6-22.4 48-48 48h-524.8c-6.4 0-9.6 3.2-12.8 6.4l-76.8 128c-9.6 16-25.6 25.6-44.8 25.6h-268.8c-25.6 0-48-22.4-48-48v-240c0-3.2 0-6.4 3.2-6.4-3.2-3.2-3.2-6.4-3.2-9.6v-672zM32 912c0 9.6 6.4 16 16 16h268.8c6.4 0 9.6-3.2 12.8-6.4l76.8-128c9.6-16 25.6-25.6 44.8-25.6h524.8c9.6 0 16-6.4 16-16v-80h-960v240zM32 640h960v-656c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v656z" />
153
  <glyph unicode="&#xe98f;" glyph-name="football" d="M931.2 742.4c0 3.2-3.2 6.4-6.4 9.6-92.8 124.8-243.2 208-412.8 208-172.8 0-323.2-86.4-416-214.4-3.2-3.2-3.2-3.2-3.2-6.4-57.6-83.2-92.8-182.4-92.8-291.2 0-102.4 32-198.4 83.2-278.4 0-3.2 3.2-3.2 3.2-6.4 92.8-137.6 249.6-227.2 425.6-227.2 281.6 0 512 230.4 512 512 0 108.8-35.2 211.2-92.8 294.4zM902.4 169.6l-176 3.2-83.2 118.4 64 201.6 144 51.2 140.8-99.2c0-102.4-35.2-198.4-89.6-275.2zM300.8 192h-192c-44.8 64-70.4 147.2-76.8 233.6l140.8 99.2 134.4-35.2 67.2-204.8-73.6-92.8zM102.4 694.4l51.2-147.2-121.6-83.2c3.2 86.4 28.8 163.2 70.4 230.4zM403.2 288l-64 204.8 166.4 124.8 166.4-128-64-204.8h-204.8zM873.6 566.4l44.8 134.4c38.4-64 64-137.6 70.4-217.6l-115.2 83.2zM896 732.8l-54.4-160-150.4-51.2-179.2 128v140.8l150.4 105.6c0 0 6.4 3.2 6.4 3.2 92.8-32 172.8-89.6 227.2-166.4zM636.8 912l-124.8-92.8-121.6 92.8c38.4 9.6 80 16 121.6 16s83.2-6.4 124.8-16zM352 899.2c0 0-6.4 0-6.4 0l134.4-105.6v-144l-166.4-128-131.2 35.2-60.8 172.8c57.6 76.8 137.6 137.6 230.4 169.6zM131.2 160h166.4l48-160c-86.4 32-160 96-214.4 160zM380.8-12.8l-54.4 179.2 73.6 89.6h220.8l80-105.6-54.4-166.4c-41.6-12.8-86.4-16-134.4-16-44.8 0-89.6 6.4-131.2 19.2zM684.8 0l44.8 140.8 150.4-3.2c-51.2-60.8-118.4-108.8-195.2-137.6z" />
154
  <glyph unicode="&#xe990;" glyph-name="footer" horiz-adv-x="1120" d="M1072 352h-1024c-25.6 0-48-22.4-48-48v-320c0-25.6 22.4-48 48-48h1024c25.6 0 48 22.4 48 48v320c0 25.6-22.4 48-48 48zM1088-16c0-9.6-6.4-16-16-16h-1024c-9.6 0-16 6.4-16 16v320c0 9.6 6.4 16 16 16h1024c9.6 0 16-6.4 16-16v-320zM128 432c0-9.6 6.4-16 16-16s16 6.4 16 16v480c0 9.6 6.4 16 16 16h800c9.6 0 16-6.4 16-16v-480c0-9.6 6.4-16 16-16s16 6.4 16 16v480c0 25.6-22.4 48-48 48h-800c-25.6 0-48-22.4-48-48v-480zM816 416c9.6 0 16 6.4 16 16v188.8c0 28.8-19.2 51.2-44.8 51.2h-422.4c-25.6 0-44.8-22.4-44.8-51.2v-188.8c0-9.6 6.4-16 16-16s16 6.4 16 16v188.8c0 9.6 6.4 19.2 12.8 19.2h419.2c6.4 0 12.8-9.6 12.8-19.2v-188.8c3.2-9.6 9.6-16 19.2-16z" />
406
  <glyph unicode="&#xea8c;" glyph-name="wine-glass" horiz-adv-x="864" d="M860.8 931.2c-6.4 16-25.6 28.8-44.8 28.8h-617.6c0 0-3.2 0-3.2 0s-3.2 0-3.2 0h-144c-19.2 0-35.2-9.6-44.8-28.8-6.4-19.2-3.2-38.4 9.6-51.2l387.2-406.4v-441.6h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-64v441.6l419.2 403.2c12.8 12.8 16 35.2 9.6 54.4zM828.8 899.2l-412.8-396.8-377.6 400c-9.6 6.4-6.4 12.8-3.2 16s3.2 9.6 12.8 9.6h137.6l131.2-118.4c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4l-105.6 96h582.4c9.6 0 16-6.4 16-9.6s3.2-9.6-3.2-19.2zM272-32c-9.6 0-16-6.4-16-16s6.4-16 16-16h288c9.6 0 16 6.4 16 16s-6.4 16-16 16h-288z" />
407
  <glyph unicode="&#xea8d;" glyph-name="worker-cap" horiz-adv-x="992" d="M880 329.6v22.4h32c44.8 0 80 35.2 80 83.2 0 44.8-35.2 80-76.8 80-25.6 163.2-140.8 297.6-294.4 345.6-12.8 57.6-64 99.2-124.8 99.2s-112-41.6-124.8-99.2c-156.8-51.2-268.8-182.4-294.4-345.6-41.6-3.2-76.8-38.4-76.8-80 0-48 35.2-83.2 80-83.2h32v-22.4c0-217.6 172.8-393.6 384-393.6s384 176 384 393.6zM32 432c0 28.8 22.4 48 48 48h9.6c9.6 0 16 6.4 16 16 19.2 150.4 134.4 278.4 262.4 329.6v-73.6c0-9.6 6.4-16 16-16s16 6.4 16 16v80c0 3.2 0 6.4 0 12.8 0 0 0 0 0 3.2 6.4 44.8 48 80 96 80s86.4-35.2 96-80c0 0 0 0 0-3.2s0-6.4 0-12.8v-80c0-9.6 6.4-16 16-16s16 6.4 16 16v73.6c128-48 243.2-176 262.4-329.6 0-9.6 6.4-16 16-16h9.6c25.6 0 48-19.2 48-48s-22.4-48-48-48h-832c-25.6 0-48 19.2-48 48zM496-32c-195.2 0-352 163.2-352 361.6v22.4h704v-22.4c0-198.4-156.8-361.6-352-361.6zM288 288c0-35.2 28.8-64 64-64s64 28.8 64 64-28.8 64-64 64-64-28.8-64-64zM352 320c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 16 32 32 32zM572.8 288c0-35.2 28.8-64 64-64s64 28.8 64 64-28.8 64-64 64-64-28.8-64-64zM636.8 320c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 16 32 32 32zM576 160c-9.6 0-16-6.4-16-16 0-25.6-28.8-48-64-48s-64 22.4-64 48c0 9.6-6.4 16-16 16s-16-6.4-16-16c0-44.8 41.6-80 96-80s96 35.2 96 80c0 9.6-6.4 16-16 16z" />
408
  <glyph unicode="&#xea8e;" glyph-name="youtube" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512-32c-265.6 0-480 214.4-480 480s214.4 480 480 480 480-214.4 480-480-214.4-480-480-480zM713.6 620.8c-25.6 9.6-160 9.6-201.6 9.6-80 0-150.4-3.2-185.6-6.4-19.2-3.2-38.4-12.8-51.2-28.8-38.4-44.8-28.8-243.2-12.8-288 9.6-22.4 25.6-38.4 48-48 32-9.6 169.6-9.6 198.4-9.6 57.6 0 188.8 0 214.4 16 16 9.6 25.6 19.2 35.2 35.2 22.4 51.2 22.4 224 3.2 275.2-9.6 19.2-25.6 35.2-48 44.8zM729.6 313.6c-3.2-9.6-9.6-16-19.2-19.2-12.8-6.4-86.4-9.6-201.6-9.6-105.6 0-172.8 3.2-188.8 9.6-12.8 3.2-22.4 12.8-28.8 25.6-16 44.8-19.2 227.2 6.4 256 9.6 9.6 19.2 16 32 16 35.2 3.2 105.6 6.4 182.4 6.4 108.8 0 179.2-3.2 188.8-9.6 12.8-6.4 22.4-12.8 28.8-25.6 16-41.6 19.2-208 0-249.6zM624 460.8c-16 9.6-35.2 19.2-54.4 28.8-38.4 22.4-73.6 41.6-102.4 51.2-6.4 3.2-9.6 0-16-3.2-3.2-3.2-6.4-6.4-6.4-12.8v-160c0-6.4 3.2-9.6 6.4-12.8s6.4-3.2 9.6-3.2c3.2 0 3.2 0 6.4 0 32 16 67.2 35.2 102.4 51.2 16 9.6 35.2 19.2 51.2 28.8 6.4 3.2 9.6 9.6 9.6 12.8s0 16-6.4 19.2zM556.8 432c-25.6-12.8-51.2-28.8-76.8-41.6v108.8c22.4-9.6 48-25.6 76.8-41.6 9.6-6.4 19.2-9.6 28.8-16-9.6 0-19.2-3.2-28.8-9.6z" />
409
+ <glyph unicode="&#xea8f;" glyph-name="centralize" d="M451.2 316.8h134.4c44.8 0 80 35.2 80 80v131.2c0 44.8-35.2 80-80 80h-134.4c-44.8 0-80-35.2-80-80v-131.2c0-44.8 35.2-80 80-80zM403.2 528c0 25.6 22.4 48 48 48h134.4c25.6 0 48-22.4 48-48v-131.2c0-25.6-22.4-48-48-48h-134.4c-25.6 0-48 22.4-48 48v131.2zM972.8 860.8c-32 12.8-67.2 6.4-89.6-16l-124.8-121.6v102.4c0 9.6-6.4 16-16 16s-16-6.4-16-16v-156.8h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-102.4l121.6 121.6c16 16 38.4 16 54.4 9.6s32-22.4 32-44.8v-102.4c0-9.6 6.4-16 16-16s16 6.4 16 16v102.4c0 32-19.2 60.8-51.2 73.6zM240 700.8h-102.4c-9.6 0-16-6.4-16-16s6.4-16 16-16h160v156.8c0 9.6-6.4 16-16 16s-19.2-6.4-19.2-16v-102.4l-121.6 121.6c-19.2 16-19.2 38.4-12.8 51.2 6.4 16 22.4 32 44.8 32h105.6c9.6 0 16 6.4 16 16s-6.4 16-16 16h-102.4c-35.2 0-64-19.2-76.8-51.2s-6.4-64 19.2-86.4l121.6-121.6zM51.2 35.2c9.6-3.2 22.4-6.4 32-6.4 22.4 0 41.6 9.6 57.6 22.4l124.8 121.6v-102.4c0-9.6 6.4-16 16-16s16 6.4 16 16v156.8h-19.2c0 0 0 0 0 0h-140.8c-9.6 0-16-6.4-16-16s6.4-16 16-16h102.4l-121.6-121.6c-16-16-38.4-16-54.4-9.6s-32 22.4-32 44.8v102.4c0 9.6-6.4 16-16 16s-16-6.4-16-16v-102.4c0-32 19.2-60.8 51.2-73.6zM848-32h-105.6c-9.6 0-16-6.4-16-16s9.6-16 19.2-16h105.6c35.2 0 64 19.2 76.8 51.2s6.4 64-19.2 86.4l-121.6 121.6h102.4c9.6 0 16 6.4 16 16s-6.4 16-16 16h-144c0 0 0 0 0 0h-16v-156.8c0-9.6 6.4-16 16-16s16 6.4 16 16v102.4l124.8-121.6c16-16 16-38.4 9.6-51.2-6.4-16-22.4-32-48-32z" />
410
+ <glyph unicode="&#xea90;" glyph-name="add-section" d="M224-64h419.2c124.8 0 224 102.4 224 224v256c0 9.6-6.4 16-16 16s-16-6.4-16-16v-256c0-105.6-86.4-192-192-192h-419.2c-105.6 0-192 86.4-192 192v419.2c0 105.6 86.4 192 192 192h256c9.6 0 16 6.4 16 16s-6.4 16-16 16h-256c-124.8 0-224-102.4-224-224v-419.2c0-121.6 102.4-224 224-224zM1008 803.2h-140.8v140.8c0 9.6-6.4 16-16 16s-16-6.4-16-16v-140.8h-140.8c-9.6 0-16-6.4-16-16s6.4-16 16-16h140.8v-140.8c0-9.6 6.4-16 16-16s16 6.4 16 16v140.8h140.8c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
411
+ <glyph unicode="&#xea91;" glyph-name="advanced-heading" d="M54.4 326.4h48c9.6 0 16-6.4 19.2-16 6.4-16 9.6-28.8 19.2-41.6 3.2-9.6 3.2-19.2-3.2-25.6l-32-32c-9.6-9.6-16-22.4-16-38.4 0-12.8 6.4-28.8 16-38.4l96-96c19.2-19.2 54.4-19.2 76.8 0l32 32c9.6 9.6 19.2 6.4 25.6 3.2 12.8-6.4 28.8-12.8 41.6-19.2 9.6-3.2 16-9.6 16-19.2v-48c0-28.8 22.4-54.4 54.4-54.4h137.6c28.8 0 54.4 22.4 54.4 54.4v48c0 9.6 6.4 16 16 19.2 16 6.4 28.8 9.6 41.6 19.2 6.4 3.2 16 6.4 25.6-3.2l32-32c19.2-19.2 54.4-19.2 76.8 0l96 96c9.6 9.6 16 22.4 16 38.4 0 12.8-6.4 28.8-16 38.4l-32 32c-6.4 6.4-6.4 16-3.2 25.6 6.4 12.8 12.8 28.8 19.2 41.6 3.2 9.6 9.6 16 19.2 16h48c28.8 0 54.4 22.4 54.4 54.4v137.6c0 28.8-22.4 54.4-54.4 54.4h-48c-9.6 0-16 6.4-19.2 16-6.4 16-9.6 28.8-19.2 41.6-3.2 9.6-3.2 19.2 3.2 25.6l32 32c9.6 9.6 16 22.4 16 38.4 0 12.8-6.4 28.8-16 38.4l-96 96c-19.2 19.2-54.4 19.2-76.8 0l-32-32c-9.6-9.6-19.2-6.4-25.6-3.2-12.8 6.4-28.8 12.8-41.6 19.2-9.6 3.2-16 9.6-16 19.2v41.6c0 28.8-22.4 54.4-54.4 54.4h-137.6c-28.8 0-54.4-22.4-54.4-54.4v-48c0-9.6-6.4-16-16-19.2-16-6.4-28.8-9.6-41.6-19.2-6.4-3.2-16-6.4-25.6 3.2l-32 32c-19.2 19.2-54.4 19.2-76.8 0l-96-96c-12.8-6.4-19.2-19.2-19.2-35.2 0-12.8 6.4-28.8 16-38.4l32-32c6.4-6.4 6.4-16 3.2-25.6-6.4-12.8-12.8-28.8-19.2-41.6-3.2-9.6-9.6-16-19.2-16h-44.8c-28.8 0-54.4-22.4-54.4-54.4v-137.6c0-28.8 22.4-51.2 54.4-51.2zM32 515.2c0 12.8 9.6 22.4 22.4 22.4h48c22.4 0 41.6 16 51.2 38.4 3.2 12.8 9.6 25.6 16 38.4 9.6 22.4 6.4 44.8-9.6 60.8l-32 32c-6.4 6.4-9.6 9.6-9.6 16s3.2 9.6 6.4 16l96 96c9.6 6.4 22.4 9.6 28.8 0l32-32c16-16 41.6-19.2 60.8-9.6 16 6.4 28.8 12.8 41.6 16 22.4 6.4 38.4 28.8 38.4 51.2v44.8c0 12.8 9.6 22.4 22.4 22.4h137.6c12.8 0 22.4-9.6 22.4-22.4v-48c0-22.4 16-41.6 38.4-51.2 12.8-3.2 25.6-9.6 38.4-16 22.4-9.6 44.8-6.4 60.8 9.6l32 32c9.6 9.6 22.4 9.6 28.8 0l96-96c3.2-3.2 6.4-9.6 6.4-16s-3.2-9.6-6.4-16l-32-32c-16-16-19.2-41.6-9.6-60.8 6.4-12.8 12.8-25.6 16-38.4 6.4-22.4 28.8-38.4 51.2-38.4h48c12.8 0 22.4-9.6 22.4-22.4v-137.6c0-12.8-9.6-22.4-22.4-22.4h-48c-22.4 0-41.6-16-51.2-38.4-3.2-12.8-9.6-25.6-16-38.4-9.6-22.4-6.4-44.8 9.6-60.8l32-32c3.2-3.2 6.4-9.6 6.4-16s-3.2-9.6-6.4-16l-96-96c-9.6-6.4-22.4-9.6-28.8 0l-32 32c-16 16-41.6 19.2-60.8 9.6-12.8-6.4-25.6-12.8-38.4-16-22.4-6.4-38.4-28.8-38.4-51.2v-48c0-12.8-9.6-22.4-22.4-22.4h-137.6c-12.8 0-22.4 9.6-22.4 22.4v48c0 22.4-16 41.6-38.4 51.2-12.8 3.2-25.6 9.6-38.4 16-6.4 3.2-16 6.4-25.6 6.4-12.8 0-28.8-6.4-38.4-16l-32-32c-9.6-9.6-22.4-9.6-28.8 0l-96 96c-3.2 3.2-6.4 9.6-6.4 16s3.2 9.6 6.4 16l32 32c16 16 19.2 41.6 9.6 60.8-6.4 19.2-12.8 32-16 44.8-6.4 22.4-28.8 38.4-51.2 38.4h-44.8c-12.8 0-22.4 9.6-22.4 22.4v134.4zM403.2 265.6c9.6 0 16 6.4 16 16v150.4h185.6v-150.4c0-9.6 6.4-16 16-16s16 6.4 16 16v332.8c0 9.6-6.4 16-16 16s-16-6.4-16-16v-150.4h-185.6v150.4c0 9.6-6.4 16-16 16s-16-6.4-16-16v-329.6c0-9.6 6.4-19.2 16-19.2z" />
412
+ <glyph unicode="&#xea92;" glyph-name="air-baloon" d="M512 960c-211.2 0-384-172.8-384-384v-19.2c0 0 0 0 0 0 0-3.2 0-3.2 0-6.4 0 0 0 0 0-3.2 0 0 0 0 0 0l201.6-284.8c-16-3.2-25.6-19.2-25.6-35.2v-57.6c0-19.2 16-35.2 35.2-35.2h3.2v-144c0-32 25.6-57.6 57.6-57.6h208c32 0 57.6 25.6 57.6 57.6v144h3.2c19.2 0 35.2 16 35.2 35.2v57.6c0 16-12.8 32-28.8 35.2l204.8 291.2c0 0 0 0 0 0s0 0 0 0c0 3.2 0 3.2 3.2 6.4 0 0 0 0 0 0 0 3.2 0 9.6 0 12.8 12.8 214.4-160 387.2-371.2 387.2zM588.8 265.6l60.8 265.6c57.6 44.8 137.6 54.4 201.6 25.6l-204.8-291.2h-57.6zM556.8 265.6h-96l-64 281.6c32 19.2 67.2 28.8 102.4 28.8 44.8 0 86.4-12.8 118.4-41.6l-60.8-268.8zM364.8 544l64-278.4h-54.4l-204.8 288c60.8 28.8 137.6 28.8 195.2-9.6zM643.2-6.4c0-12.8-12.8-25.6-25.6-25.6h-208c-12.8 0-25.6 12.8-25.6 25.6v144h259.2v-144zM681.6 172.8c0-3.2-3.2-3.2-3.2-3.2h-329.6c-3.2 0-3.2 3.2-3.2 3.2v57.6c0 3.2 3.2 3.2 3.2 3.2h332.8c3.2 0 3.2-3.2 3.2-3.2v-57.6zM774.4 608c-51.2 0-99.2-16-137.6-44.8-41.6 28.8-86.4 44.8-137.6 44.8-41.6 0-83.2-12.8-118.4-32-64 38.4-150.4 44.8-217.6 12.8 3.2 185.6 156.8 339.2 348.8 339.2 188.8 0 342.4-150.4 348.8-339.2-25.6 12.8-54.4 19.2-86.4 19.2z" />
413
+ <glyph unicode="&#xea93;" glyph-name="arrow2" d="M870.4 953.6l-819.2-272c-32-9.6-51.2-38.4-51.2-70.4s19.2-60.8 51.2-70.4l396.8-134.4c9.6-3.2 19.2-12.8 22.4-22.4l131.2-396.8c9.6-32 38.4-51.2 70.4-51.2s60.8 19.2 70.4 51.2l272 819.2c12.8 35.2 6.4 73.6-16 105.6-25.6 41.6-80 57.6-128 41.6zM988.8 816l-272-819.2c-6.4-22.4-25.6-28.8-41.6-28.8s-32 6.4-41.6 28.8l-131.2 396.8c-6.4 19.2-22.4 35.2-41.6 41.6l-400 134.4c-22.4 6.4-28.8 25.6-28.8 41.6s6.4 32 28.8 41.6l819.2 272c9.6 3.2 16 3.2 25.6 3.2 25.6 0 54.4-12.8 70.4-35.2s19.2-51.2 12.8-76.8z" />
414
+ <glyph unicode="&#xea94;" glyph-name="bicycle2" d="M816 499.2c-28.8 0-54.4-6.4-80-16l-150.4 300.8h54.4c9.6 0 16 6.4 16 16s-6.4 16-16 16h-150.4c-9.6 0-16-6.4-16-16s6.4-16 16-16h57.6l112-224-297.6-166.4-131.2 256h51.2c9.6 0 16 6.4 16 16s-6.4 16-12.8 16h-150.4c-9.6 0-16-6.4-16-16s6.4-16 16-16h60.8l140.8-272-134.4-76.8c-9.6-3.2-9.6-12.8-6.4-19.2s9.6-9.6 12.8-9.6c3.2 0 6.4 0 6.4 3.2l457.6 256 32-64c-60.8-35.2-102.4-102.4-102.4-179.2 0-115.2 92.8-208 208-208s214.4 92.8 214.4 208-92.8 211.2-208 211.2zM816 112c-99.2 0-176 80-176 176 0 64 32 118.4 83.2 150.4l80-156.8c3.2-6.4 9.6-9.6 12.8-9.6s6.4 0 6.4 3.2c6.4 3.2 9.6 12.8 6.4 22.4l-80 156.8c19.2 6.4 41.6 12.8 64 12.8 99.2 0 176-80 176-176s-76.8-179.2-172.8-179.2zM403.2 275.2c-9.6 0-16-3.2-19.2-12.8-12.8-86.4-89.6-150.4-176-150.4-96 0-176 80-176 176 0 89.6 67.2 163.2 153.6 176 9.6 0 16 9.6 12.8 19.2 0 9.6-9.6 16-19.2 12.8-102.4-12.8-179.2-102.4-179.2-208 0-115.2 92.8-208 208-208 102.4 0 192 76.8 208 179.2 0 6.4-6.4 16-12.8 16z" />
415
+ <glyph unicode="&#xea95;" glyph-name="bond2" d="M995.2 166.4c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM220.8 166.4c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM608 864c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM60.8 332.8c0 0 0 0 0 0 9.6 0 16 9.6 16 19.2-3.2 19.2-3.2 38.4-3.2 57.6 0 172.8 99.2 329.6 256 400 9.6 3.2 12.8 12.8 6.4 22.4s-12.8 12.8-22.4 6.4c-166.4-76.8-275.2-243.2-275.2-428.8 0-19.2 0-41.6 3.2-60.8 3.2-9.6 9.6-16 19.2-16zM774.4 35.2c-6.4 6.4-16 9.6-22.4 3.2-70.4-44.8-153.6-70.4-240-70.4s-169.6 25.6-243.2 73.6c-6.4 6.4-16 3.2-22.4-3.2s-3.2-16 3.2-22.4c76.8-51.2 166.4-76.8 259.2-76.8s182.4 25.6 259.2 76.8c9.6 3.2 12.8 12.8 6.4 19.2zM707.2 835.2c-6.4 3.2-16 0-22.4-6.4-3.2-9.6 0-16 6.4-22.4 156.8-70.4 256-227.2 256-400 0-19.2 0-38.4-3.2-57.6 0-9.6 6.4-16 12.8-19.2 0 0 0 0 3.2 0 6.4 0 16 6.4 16 12.8 3.2 22.4 3.2 41.6 3.2 60.8 3.2 188.8-102.4 355.2-272 432z" />
416
+ <glyph unicode="&#xea96;" glyph-name="bond3" d="M956.8 704c-38.4 64-102.4 96-195.2 96-16 0-32 0-48-3.2-41.6 92.8-105.6 163.2-201.6 163.2s-160-70.4-201.6-163.2c-16 3.2-32 3.2-48 3.2-92.8 0-156.8-32-195.2-96-48-83.2-22.4-172.8 38.4-256-60.8-83.2-86.4-172.8-38.4-256 38.4-64 102.4-96 195.2-96 16 0 32 0 48 3.2 41.6-92.8 105.6-163.2 201.6-163.2s160 70.4 201.6 163.2c16-3.2 32-3.2 48-3.2 92.8 0 156.8 32 195.2 96 48 83.2 22.4 172.8-38.4 256 57.6 83.2 86.4 172.8 38.4 256zM512 928c80 0 131.2-57.6 169.6-134.4-60.8-9.6-118.4-28.8-169.6-51.2-51.2 19.2-108.8 41.6-169.6 51.2 38.4 76.8 89.6 134.4 169.6 134.4zM745.6 448c0-38.4-3.2-83.2-9.6-131.2-38.4-28.8-76.8-54.4-108.8-73.6-35.2-19.2-73.6-38.4-118.4-57.6-41.6 19.2-83.2 38.4-118.4 57.6-32 19.2-70.4 44.8-108.8 73.6-6.4 48-9.6 92.8-9.6 131.2s3.2 83.2 9.6 131.2c38.4 28.8 76.8 54.4 108.8 73.6 35.2 19.2 73.6 38.4 118.4 57.6 41.6-19.2 83.2-38.4 118.4-57.6 32-19.2 70.4-44.8 108.8-73.6 6.4-48 9.6-92.8 9.6-131.2zM774.4 550.4c38.4-32 73.6-64 102.4-102.4-28.8-35.2-64-70.4-102.4-102.4 3.2 35.2 6.4 70.4 6.4 102.4s-3.2 67.2-6.4 102.4zM729.6 272c-9.6-48-19.2-96-38.4-140.8-44.8 6.4-92.8 19.2-140.8 38.4 41.6 19.2 73.6 35.2 89.6 48 32 16 60.8 35.2 89.6 54.4zM470.4 172.8c-44.8-16-92.8-32-140.8-38.4-16 44.8-28.8 92.8-38.4 140.8 28.8-22.4 57.6-38.4 86.4-54.4 19.2-12.8 51.2-32 92.8-48zM249.6 345.6c-38.4 32-73.6 64-102.4 102.4 28.8 35.2 64 70.4 102.4 102.4-3.2-35.2-3.2-70.4-3.2-102.4s0-67.2 3.2-102.4zM294.4 624c9.6 48 19.2 96 38.4 140.8 44.8-6.4 92.8-19.2 140.8-38.4-41.6-19.2-73.6-35.2-89.6-48-32-16-60.8-35.2-89.6-54.4zM646.4 678.4c-16 9.6-48 28.8-89.6 48 44.8 16 92.8 32 140.8 38.4 16-44.8 28.8-92.8 38.4-140.8-35.2 19.2-64 38.4-89.6 54.4zM96 688c32 54.4 86.4 80 166.4 80 12.8 0 22.4 0 35.2 0-19.2-54.4-32-112-41.6-169.6-44.8-35.2-89.6-76.8-128-121.6-48 67.2-70.4 144-32 211.2zM262.4 128c-80 0-134.4 25.6-166.4 80-38.4 67.2-16 144 32 214.4 35.2-44.8 83.2-86.4 128-121.6 6.4-57.6 22.4-118.4 41.6-169.6-12.8-3.2-22.4-3.2-35.2-3.2zM512-32c-80 0-131.2 57.6-169.6 134.4 60.8 9.6 118.4 28.8 169.6 51.2 51.2-19.2 108.8-41.6 169.6-51.2-38.4-76.8-89.6-134.4-169.6-134.4zM928 208c-32-54.4-86.4-80-166.4-80-9.6 0-22.4 0-35.2 3.2 19.2 54.4 32 112 41.6 169.6 44.8 35.2 89.6 76.8 128 121.6 48-70.4 70.4-147.2 32-214.4zM896 473.6c-35.2 44.8-83.2 86.4-128 121.6-6.4 57.6-22.4 118.4-41.6 169.6 12.8 3.2 22.4 3.2 35.2 3.2 80 0 134.4-25.6 166.4-80 38.4-67.2 16-144-32-214.4zM608 448c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96z" />
417
+ <glyph unicode="&#xea97;" glyph-name="bond4" d="M144 528c38.4 0 73.6 16 96 41.6l150.4-108.8c-6.4-12.8-9.6-28.8-9.6-44.8 0-54.4 44.8-99.2 99.2-99.2l19.2-121.6c-54.4-16-96-67.2-96-128 0-73.6 60.8-134.4 134.4-134.4s134.4 60.8 134.4 134.4c0 73.6-60.8 134.4-134.4 134.4-3.2 0-3.2 0-3.2 0l-22.4 121.6c41.6 12.8 70.4 51.2 70.4 96 0 22.4-6.4 41.6-19.2 60.8l160 163.2c32-25.6 70.4-41.6 112-41.6 99.2 0 179.2 80 179.2 179.2s-80 179.2-179.2 179.2-179.2-80-179.2-179.2c0-44.8 16-86.4 44.8-115.2l-160-163.2c-16 12.8-35.2 19.2-57.6 19.2-28.8 0-54.4-12.8-70.4-28.8l-150.4 108.8c9.6 19.2 16 41.6 16 64 0 73.6-60.8 134.4-134.4 134.4s-134.4-67.2-134.4-140.8c0-73.6 60.8-131.2 134.4-131.2zM636.8 70.4c0-54.4-44.8-102.4-102.4-102.4-54.4 0-102.4 44.8-102.4 102.4s44.8 102.4 102.4 102.4c57.6-3.2 102.4-48 102.4-102.4zM835.2 928c80 0 147.2-67.2 147.2-147.2s-67.2-147.2-147.2-147.2c-38.4 0-76.8 16-102.4 41.6 0 0 0 0 0 0s0 0 0 0c-28.8 25.6-44.8 64-44.8 105.6-3.2 80 64 147.2 147.2 147.2zM144 761.6c54.4 0 102.4-44.8 102.4-102.4s-44.8-102.4-102.4-102.4-102.4 44.8-102.4 102.4 44.8 102.4 102.4 102.4z" />
418
+ <glyph unicode="&#xea98;" glyph-name="calendar2" d="M249.6 960c-9.6 0-16-6.4-16-16v-54.4h-118.4c-48 0-86.4-38.4-86.4-86.4v-780.8c0-48 38.4-86.4 86.4-86.4h796.8c48 0 86.4 38.4 86.4 86.4v780.8c0 48-38.4 86.4-86.4 86.4h-121.6v54.4c0 9.6-6.4 16-16 16s-16-6.4-16-16v-54.4h-492.8v54.4c0 9.6-6.4 16-16 16zM908.8-32h-793.6c-28.8 0-54.4 25.6-54.4 54.4v595.2h905.6v-595.2c0-28.8-25.6-54.4-57.6-54.4zM758.4 857.6v-51.2c0-9.6 6.4-16 16-16s16 6.4 16 16v51.2h121.6c28.8 0 54.4-25.6 54.4-54.4v-153.6h-908.8v153.6c0 28.8 25.6 54.4 54.4 54.4h121.6v-51.2c0-9.6 6.4-16 16-16s16 6.4 16 16v51.2h492.8zM316.8 409.6c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64zM576 409.6c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64zM835.2 409.6c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64zM316.8 198.4c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64zM576 198.4c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64zM835.2 198.4c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64z" />
419
+ <glyph unicode="&#xea99;" glyph-name="carousel" d="M313.6 729.6c-48 0-86.4-38.4-86.4-86.4v-396.8c0-48 38.4-86.4 86.4-86.4h396.8c48 0 86.4 38.4 86.4 86.4v400c0 48-38.4 86.4-86.4 86.4h-396.8zM761.6 646.4v-396.8c0-28.8-22.4-54.4-54.4-54.4h-393.6c-28.8 0-54.4 22.4-54.4 54.4v396.8c0 28.8 22.4 54.4 54.4 54.4h396.8c28.8-3.2 51.2-25.6 51.2-54.4zM876.8 627.2v-355.2c0-9.6 6.4-16 16-16s16 6.4 16 16v355.2c0 9.6-6.4 16-16 16s-16-9.6-16-16zM1008 579.2c-9.6 0-16-6.4-16-16v-230.4c0-9.6 6.4-16 16-16s16 6.4 16 16v230.4c0 9.6-6.4 16-16 16zM115.2 627.2v-355.2c0-9.6 6.4-16 16-16s16 6.4 16 16v355.2c0 9.6-6.4 16-16 16s-16-9.6-16-16zM16 316.8c9.6 0 16 6.4 16 16v230.4c0 9.6-6.4 16-16 16s-16-6.4-16-16v-230.4c0-9.6 6.4-16 16-16z" />
420
+ <glyph unicode="&#xea9a;" glyph-name="code-page" d="M604.8 960h-342.4c-89.6 0-163.2-73.6-163.2-163.2v-694.4c0-89.6 73.6-163.2 166.4-163.2h496c89.6 0 166.4 73.6 166.4 163.2v537.6c0 28.8-12.8 60.8-35.2 80l-204.8 204.8c-22.4 22.4-51.2 35.2-83.2 35.2zM892.8 640v-540.8c0-73.6-60.8-131.2-134.4-131.2h-496c-73.6 0-134.4 60.8-134.4 131.2v697.6c3.2 70.4 64 131.2 134.4 131.2h342.4c22.4 0 41.6-9.6 57.6-25.6l204.8-204.8c16-12.8 25.6-35.2 25.6-57.6zM368 585.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l96-99.2-96-96c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l108.8 108.8c6.4 6.4 6.4 16 0 22.4l-112 108.8zM521.6 355.2c0-9.6 6.4-16 16-16h128c9.6 0 16 6.4 16 16s-6.4 16-16 16h-128c-9.6 0-16-9.6-16-16z" />
421
+ <glyph unicode="&#xea9b;" glyph-name="comment-circle" d="M508.8-38.4c96 0 188.8 25.6 268.8 76.8l208-44.8c6.4 0 9.6 0 16 3.2s6.4 9.6 3.2 16l-51.2 224c32 67.2 51.2 140.8 51.2 217.6 0 272-224 496-496 496s-496-220.8-496-492.8 220.8-496 496-496zM508.8 921.6c256 0 464-208 464-464 0-73.6-16-144-51.2-208-3.2-3.2-3.2-6.4 0-9.6l44.8-204.8-192 41.6c-3.2 0-9.6 0-12.8-3.2-76.8-51.2-163.2-76.8-256-76.8-256 0-464 208-464 464s211.2 460.8 467.2 460.8z" />
422
+ <glyph unicode="&#xea9c;" glyph-name="comment-square" d="M841.6 928h-659.2c-99.2 0-182.4-83.2-182.4-185.6v-700.8c0-28.8 16-54.4 44.8-67.2 9.6-3.2 19.2-6.4 28.8-6.4 19.2 0 35.2 6.4 51.2 22.4l144 144h572.8c102.4 0 182.4 83.2 182.4 182.4v425.6c0 102.4-83.2 185.6-182.4 185.6zM992 320c0-83.2-67.2-150.4-150.4-150.4h-582.4c0 0 0 0 0 0-3.2 0-9.6-3.2-12.8-6.4l-147.2-147.2c-12.8-12.8-32-12.8-44.8-9.6-9.6 3.2-22.4 16-22.4 35.2v700.8c0 83.2 67.2 153.6 150.4 153.6h656c86.4 0 153.6-70.4 153.6-153.6v-422.4zM761.6 656h-496c-9.6 0-16-6.4-16-16s6.4-16 16-16h496c9.6 0 16 6.4 16 16s-6.4 16-16 16zM761.6 406.4h-496c-9.6 0-16-6.4-16-16s6.4-16 16-16h496c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
423
+ <glyph unicode="&#xea9d;" glyph-name="copy" d="M937.6 960h-518.4c-48 0-86.4-38.4-86.4-86.4v-243.2h-208c-70.4 0-124.8-57.6-124.8-124.8v-441.6c0-70.4 57.6-128 124.8-128h441.6c70.4 0 124.8 57.6 124.8 124.8v204.8h243.2c48 0 86.4 38.4 86.4 86.4v521.6c3.2 48-35.2 86.4-83.2 86.4zM662.4 60.8c0-51.2-41.6-92.8-92.8-92.8h-444.8c-51.2 0-92.8 41.6-92.8 92.8v441.6c0 51.2 41.6 92.8 92.8 92.8h204.8v-243.2c0-48 38.4-86.4 86.4-86.4h243.2v-204.8zM992 355.2c0-28.8-25.6-54.4-54.4-54.4h-518.4c-28.8 0-54.4 25.6-54.4 54.4v518.4c0 28.8 25.6 54.4 54.4 54.4h518.4c28.8 0 54.4-25.6 54.4-54.4v-518.4z" />
424
+ <glyph unicode="&#xea9e;" glyph-name="cursor" d="M758.4 224l211.2 211.2c28.8 28.8 38.4 67.2 32 105.6s-35.2 70.4-70.4 83.2l-841.6 332.8c-28.8 12.8-60.8 0-76.8-25.6-12.8-19.2-16-41.6-9.6-60.8l329.6-841.6c16-44.8 60.8-73.6 105.6-73.6 32 0 60.8 12.8 80 35.2l211.2 211.2 262.4-262.4c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-259.2 262.4zM499.2 12.8c-16-16-35.2-25.6-57.6-25.6-35.2 0-64 19.2-76.8 51.2l-329.6 844.8c-6.4 12.8 0 25.6 3.2 32 6.4 6.4 16 12.8 25.6 12.8 3.2 0 9.6 0 12.8-3.2l841.6-329.6c25.6-9.6 44.8-32 51.2-60.8s-3.2-54.4-22.4-76.8l-224-224c0 0 0 0 0 0s0 0 0 0l-224-220.8z" />
425
+ <glyph unicode="&#xea9f;" glyph-name="envelop2" d="M944 812.8h-864c-44.8 0-80-38.4-80-80v-566.4c0-44.8 35.2-80 80-80h864c44.8 0 80 35.2 80 80v566.4c0 41.6-35.2 80-80 80zM992 163.2c0-25.6-22.4-48-48-48h-864c-25.6 0-48 22.4-48 48v569.6c0 25.6 22.4 48 48 48h864c25.6 0 48-22.4 48-48v-569.6zM851.2 624l-316.8-227.2c-12.8-9.6-28.8-9.6-38.4 0l-320 227.2c-6.4 6.4-16 3.2-22.4-3.2s-3.2-16 3.2-22.4l320-227.2c12.8-9.6 25.6-12.8 38.4-12.8s25.6 3.2 38.4 12.8l316.8 227.2c6.4 6.4 9.6 16 3.2 22.4s-16 9.6-22.4 3.2z" />
426
+ <glyph unicode="&#xeaa0;" glyph-name="factory" d="M108.8 723.2l-83.2-716.8c-3.2-19.2 3.2-35.2 16-48 12.8-16 28.8-22.4 48-22.4h444.8c0 0 0 0 0 0h400c35.2 0 64 28.8 64 64v492.8c0 25.6-12.8 48-35.2 57.6s-48 6.4-67.2-6.4l-150.4-121.6v73.6c0 25.6-12.8 48-35.2 57.6s-48 6.4-67.2-9.6l-147.2-121.6-35.2 300.8c-3.2 32-32 54.4-64 54.4h-96c0 6.4-3.2 16-3.2 22.4 3.2 38.4 38.4 60.8 70.4 64s60.8-3.2 96-12.8l9.6-3.2c28.8-6.4 57.6-12.8 86.4-12.8 51.2 3.2 86.4 41.6 96 102.4 0 9.6-3.2 16-12.8 19.2-9.6 0-16-3.2-19.2-12.8-3.2-25.6-19.2-73.6-67.2-73.6-25.6-3.2-51.2 3.2-76.8 12.8l-9.6 3.2c-38.4 9.6-70.4 16-108.8 12.8-44.8-6.4-96-38.4-99.2-96 0-9.6 0-16 0-25.6h-89.6c-32 0-57.6-22.4-64-54.4zM662.4 518.4c9.6 6.4 22.4 9.6 32 3.2s19.2-16 19.2-28.8v-108.8c0-6.4 3.2-12.8 9.6-16s12.8-3.2 16 3.2l176 140.8c9.6 6.4 22.4 9.6 32 3.2s19.2-16 19.2-28.8v-486.4c0-16-12.8-32-32-32h-387.2l-48 419.2 163.2 131.2zM425.6 720l89.6-752h-425.6c-9.6 0-16 3.2-22.4 9.6s-9.6 16-6.4 25.6l80 716.8c3.2 16 16 28.8 32 28.8h224c16-3.2 28.8-12.8 28.8-28.8z" />
427
+ <glyph unicode="&#xeaa1;" glyph-name="finger-point" d="M131.2 371.2c-38.4-44.8-35.2-115.2 9.6-160l256-256c12.8-12.8 28.8-19.2 44.8-19.2h348.8c28.8 0 54.4 19.2 64 48l64 265.6c12.8 54.4-16 108.8-67.2 131.2l-217.6 89.6c-12.8 6.4-19.2 16-19.2 28.8v204.8c0 28.8-12.8 57.6-32 80-28.8 28.8-70.4 38.4-108.8 28.8-51.2-12.8-86.4-60.8-86.4-115.2v-416l-92.8 92.8c-22.4 22.4-48 32-80 32-32 3.2-64-9.6-83.2-35.2zM393.6 233.6c3.2-3.2 12.8-6.4 16-3.2 6.4 3.2 9.6 9.6 9.6 16v454.4c0 41.6 25.6 76.8 60.8 83.2 28.8 6.4 57.6 0 76.8-22.4 16-16 22.4-35.2 22.4-57.6v-201.6c0-25.6 16-51.2 38.4-60.8l217.6-89.6c38.4-16 57.6-54.4 48-96l-64-265.6c-3.2-16-16-25.6-32-25.6h-345.6c-9.6 0-16 3.2-22.4 9.6l-256 256c-32 32-35.2 86.4-9.6 115.2 16 16 38.4 25.6 60.8 25.6s41.6-9.6 57.6-25.6l121.6-112zM716.8 582.4c3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6 16 35.2 25.6 70.4 25.6 108.8s-12.8 76.8-28.8 108.8c-12.8 28.8-28.8 54.4-51.2 73.6-48 51.2-112 76.8-182.4 76.8s-134.4-25.6-182.4-76.8c-22.4-19.2-41.6-44.8-51.2-73.6-16-32-25.6-70.4-25.6-108.8s9.6-76.8 25.6-108.8c3.2-6.4 12.8-12.8 22.4-6.4 6.4 3.2 12.8 12.8 6.4 22.4-12.8 28.8-22.4 64-22.4 96s6.4 67.2 22.4 96c9.6 22.4 25.6 44.8 44.8 64 41.6 41.6 99.2 64 160 64s118.4-22.4 160-67.2c19.2-19.2 35.2-41.6 44.8-64 12.8-28.8 22.4-64 22.4-96s-6.4-67.2-22.4-96c-3.2-6.4 0-16 9.6-22.4z" />
428
+ <glyph unicode="&#xeaa2;" glyph-name="finger-swipe-both" d="M598.4 899.2c-32 32-76.8 41.6-118.4 32-54.4-12.8-92.8-67.2-92.8-124.8v-467.2l-105.6 105.6c-22.4 22.4-54.4 35.2-86.4 35.2-35.2 0-70.4-16-92.8-41.6-41.6-48-38.4-124.8 9.6-176l281.6-281.6c12.8-12.8 32-19.2 48-19.2h390.4c32 0 60.8 22.4 67.2 54.4l70.4 294.4c16 60.8-16 121.6-73.6 144l-240 99.2c-12.8 6.4-22.4 19.2-22.4 35.2v224c3.2 32-9.6 60.8-35.2 86.4zM646.4 521.6l240-99.2c41.6-16 64-60.8 54.4-105.6l-70.4-294.4c-3.2-16-19.2-28.8-35.2-28.8h-390.4c-9.6 0-19.2 3.2-25.6 9.6l-284.8 284.8c-35.2 35.2-38.4 96-6.4 131.2 16 19.2 41.6 32 67.2 32s48-9.6 64-25.6l134.4-134.4c3.2-3.2 12.8-6.4 16-3.2 6.4 3.2 9.6 9.6 9.6 16v502.4c0 44.8 28.8 86.4 70.4 96 32 6.4 64-3.2 86.4-25.6 16-16 25.6-41.6 25.6-64v-224c3.2-32 19.2-54.4 44.8-67.2zM112 851.2c-6.4 6.4-16 6.4-22.4 0l-86.4-83.2c0 0-3.2-3.2-3.2-3.2s0 0 0 0c0-3.2 0-3.2 0-6.4s3.2-9.6 6.4-12.8l83.2-83.2c3.2-3.2 6.4-6.4 9.6-6.4s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-57.6 57.6h185.6c9.6 0 16 9.6 16 16s-6.4 16-16 16h-185.6l57.6 57.6c6.4 6.4 6.4 16 0 22.4zM1024 761.6c0 3.2-3.2 6.4-3.2 6.4l-83.2 83.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l57.6-54.4h-185.6c-12.8 0-19.2-6.4-19.2-16s6.4-16 16-16h185.6l-57.6-57.6c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l83.2 83.2c0 0 0 0 0 3.2 0 0 0 3.2 3.2 3.2 0 3.2 0 3.2 0 6.4 0 0 0 0 0 0s0 0 0 0 0 0 0 0 0 3.2 0 3.2z" />
429
+ <glyph unicode="&#xeaa3;" glyph-name="finger-swipe-corner" d="M950.4 432l-240 99.2c-16 6.4-22.4 19.2-22.4 35.2v227.2c0 32-12.8 64-35.2 89.6-32 32-76.8 44.8-118.4 32-54.4-12.8-96-67.2-96-128v-470.4l-108.8 108.8c-22.4 22.4-54.4 38.4-89.6 38.4s-70.4-16-92.8-41.6c-44.8-51.2-38.4-128 9.6-176l284.8-284.8c12.8-12.8 32-19.2 51.2-19.2h390.4c32 0 60.8 22.4 67.2 54.4l73.6 291.2c16 57.6-16 118.4-73.6 144zM995.2 294.4l-73.6-297.6c-3.2-16-19.2-28.8-38.4-28.8h-387.2c-9.6 0-19.2 3.2-25.6 12.8l-284.8 284.8c-38.4 38.4-41.6 96-9.6 134.4 16 19.2 41.6 32 70.4 32 25.6 0 48-9.6 64-28.8l134.4-134.4c3.2-3.2 12.8-6.4 16-3.2 6.4 3.2 9.6 9.6 9.6 16v505.6c0 44.8 28.8 86.4 70.4 96 32 6.4 64-3.2 89.6-25.6 16-16 25.6-41.6 25.6-64v-227.2c0-28.8 16-54.4 44.8-64l240-99.2c41.6-19.2 64-64 54.4-108.8zM140.8 662.4c0 9.6-6.4 16-16 16h-73.6l224 227.2v-73.6c0-9.6 6.4-16 16-16s16 6.4 16 16v112c0 0 0 0 0 0 0 3.2 0 9.6-3.2 12.8-6.4 3.2-9.6 3.2-12.8 3.2h-112c-9.6 0-16-9.6-16-16 0-9.6 9.6-16 16-16h73.6l-224-227.2v73.6c0 9.6-6.4 16-16 16s-16-6.4-16-16v-112c0 0 0 0 0 0 0-3.2 0-3.2 0-6.4 0 0 3.2-3.2 3.2-3.2s3.2-3.2 6.4-3.2c3.2 0 3.2 0 6.4 0 0 0 0 0 0 0h112c6.4-3.2 16 6.4 16 12.8z" />
430
+ <glyph unicode="&#xeaa4;" glyph-name="finger-swipe-left" d="M905.6 451.2l-252.8 105.6c-16 6.4-25.6 22.4-25.6 38.4v147.2h246.4c9.6 0 16 6.4 16 16s-6.4 16-16 16h-246.4v57.6c0 35.2-12.8 67.2-38.4 92.8-32 32-80 44.8-121.6 35.2-57.6-12.8-99.2-70.4-99.2-131.2v-51.2h-265.6l102.4 102.4c6.4 6.4 6.4 16 0 22.4s-16 0-22.4-6.4l-128-128c0 0 0 0 0 0-6.4-3.2-6.4-6.4-6.4-9.6 0-6.4 3.2-9.6 6.4-12.8l128-128c3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 9.6 0 12.8 3.2 6.4 6.4 6.4 16 0 22.4l-105.6 102.4h268.8v-409.6l-115.2 112c-25.6 25.6-57.6 38.4-92.8 38.4-38.4 0-73.6-16-96-44.8-44.8-51.2-41.6-131.2 9.6-182.4l297.6-297.6c12.8-12.8 32-22.4 51.2-22.4h406.4c35.2 0 64 22.4 70.4 54.4l76.8 310.4c19.2 64-12.8 128-73.6 150.4zM950.4 310.4l-73.6-310.4c-3.2-19.2-19.2-32-38.4-32h-409.6c-9.6 0-22.4 3.2-28.8 12.8l-297.6 297.6c-38.4 38.4-41.6 102.4-9.6 140.8 19.2 22.4 44.8 32 73.6 32 25.6 0 51.2-9.6 67.2-28.8l140.8-140.8c3.2-3.2 12.8-6.4 16-3.2 6.4 3.2 9.6 9.6 9.6 16v460.8c0 0 0 0 0 0s0 0 0 0v70.4c0 48 32 89.6 73.6 102.4 32 9.6 67.2-3.2 92.8-25.6 19.2-19.2 28.8-41.6 28.8-67.2v-73.6c0 0 0 0 0 0s0 0 0 0v-163.2c0-28.8 19.2-54.4 44.8-67.2l252.8-105.6c44.8-22.4 70.4-70.4 57.6-115.2z" />
431
+ <glyph unicode="&#xeaa5;" glyph-name="finger-swipe-up" d="M598.4 921.6c-32 32-80 44.8-121.6 35.2-57.6-12.8-99.2-70.4-99.2-131.2v-492.8l-112 112c-25.6 25.6-57.6 38.4-92.8 38.4-38.4 0-73.6-16-96-44.8-44.8-51.2-38.4-131.2 12.8-182.4l297.6-297.6c12.8-12.8 32-22.4 51.2-22.4h406.4c35.2 0 64 22.4 70.4 54.4l76.8 310.4c16 64-16 124.8-76.8 150.4l-252.8 105.6c-16 6.4-25.6 22.4-25.6 38.4v236.8c0 32-12.8 67.2-38.4 89.6zM649.6 528l252.8-105.6c44.8-19.2 70.4-67.2 57.6-112l-76.8-310.4c-3.2-19.2-19.2-32-38.4-32h-406.4c-9.6 0-22.4 3.2-28.8 12.8l-297.6 297.6c-38.4 38.4-41.6 102.4-9.6 140.8 19.2 22.4 44.8 32 73.6 32 25.6 0 51.2-9.6 67.2-28.8l140.8-140.8c3.2-3.2 12.8-6.4 16-3.2 6.4 3.2 9.6 9.6 9.6 16v531.2c0 48 32 89.6 73.6 102.4 32 9.6 67.2-3.2 92.8-25.6 19.2-19.2 28.8-41.6 28.8-67.2v-236.8c0-35.2 19.2-60.8 44.8-70.4zM137.6 956.8c0 0 0 0 0 0-3.2 0-6.4 3.2-9.6 3.2-6.4 0-9.6-3.2-12.8-6.4l-80-83.2c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 9.6 0 12.8 3.2l54.4 54.4v-278.4c0-9.6 6.4-16 16-16s16 6.4 16 16v281.6l57.6-57.6c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4l-89.6 86.4z" />
432
+ <glyph unicode="&#xeaa6;" glyph-name="finger-swipe" d="M124.8 371.2c-38.4-44.8-35.2-115.2 9.6-160l256-256c12.8-12.8 28.8-19.2 44.8-19.2h348.8c28.8 0 54.4 19.2 64 48l64 265.6c12.8 54.4-16 108.8-67.2 131.2l-217.6 89.6c-12.8 6.4-19.2 16-19.2 28.8v204.8c0 28.8-12.8 57.6-32 80-28.8 28.8-70.4 38.4-108.8 28.8-51.2-12.8-86.4-60.8-86.4-115.2v-416l-92.8 92.8c-22.4 22.4-48 32-80 32-32 3.2-64-9.6-83.2-35.2zM387.2 233.6c3.2-3.2 12.8-6.4 16-3.2 6.4 3.2 9.6 9.6 9.6 16v454.4c0 41.6 25.6 76.8 60.8 83.2 28.8 6.4 57.6 0 76.8-22.4 16-12.8 25.6-35.2 25.6-57.6v-201.6c0-25.6 16-51.2 38.4-60.8l217.6-89.6c38.4-16 57.6-54.4 48-96l-64-265.6c-3.2-16-16-25.6-32-25.6h-348.8c-9.6 0-16 3.2-22.4 9.6l-256 256c-32 32-35.2 86.4-9.6 115.2 16 16 38.4 25.6 60.8 25.6s41.6-9.6 57.6-25.6l121.6-112zM899.2 944c0 9.6-6.4 16-16 16h-384c0 0 0 0 0 0s0 0-3.2 0c-70.4 0-134.4-25.6-182.4-76.8-22.4-19.2-41.6-44.8-51.2-73.6-16-32-25.6-70.4-25.6-108.8s9.6-76.8 25.6-108.8c3.2-6.4 12.8-12.8 22.4-6.4 6.4 3.2 12.8 12.8 6.4 22.4-12.8 28.8-22.4 64-22.4 96s6.4 67.2 22.4 96c9.6 22.4 25.6 44.8 44.8 64 44.8 41.6 99.2 67.2 160 67.2s118.4-22.4 160-67.2c19.2-19.2 35.2-41.6 44.8-64 12.8-28.8 22.4-64 22.4-96s-6.4-67.2-22.4-96c-3.2-6.4 0-16 6.4-22.4 3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6 16 35.2 25.6 70.4 25.6 108.8 0 28.8-3.2 57.6-12.8 83.2h169.6c9.6-3.2 16 3.2 16 12.8s-6.4 16-16 16h-182.4c-12.8 25.6-28.8 48-48 67.2-19.2 16-38.4 32-57.6 44.8h262.4c6.4 0 12.8 6.4 12.8 16z" />
433
+ <glyph unicode="&#xeaa7;" glyph-name="finger-touch" d="M134.4 371.2c-38.4-44.8-35.2-115.2 9.6-160l256-256c12.8-12.8 28.8-19.2 44.8-19.2h348.8c28.8 0 54.4 19.2 64 48l64 265.6c12.8 54.4-16 108.8-67.2 131.2l-217.6 89.6c-12.8 6.4-19.2 16-19.2 28.8v204.8c0 28.8-12.8 57.6-32 80-28.8 28.8-70.4 38.4-108.8 28.8-51.2-12.8-86.4-60.8-86.4-115.2v-416l-92.8 92.8c-22.4 22.4-48 32-80 32-32 3.2-64-9.6-83.2-35.2zM396.8 233.6c3.2-3.2 12.8-6.4 16-3.2 6.4 3.2 9.6 9.6 9.6 16v454.4c0 41.6 25.6 76.8 60.8 83.2 28.8 6.4 57.6 0 76.8-22.4 16-12.8 25.6-35.2 25.6-57.6v-201.6c0-25.6 16-51.2 38.4-60.8l217.6-89.6c38.4-16 57.6-54.4 48-96l-64-265.6c-3.2-16-16-25.6-32-25.6h-348.8c-9.6 0-16 3.2-22.4 9.6l-256 256c-32 32-35.2 86.4-9.6 115.2 16 16 38.4 25.6 60.8 25.6s41.6-9.6 57.6-25.6l121.6-112zM720 582.4c3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6 16 35.2 25.6 70.4 25.6 108.8s-9.6 76.8-25.6 108.8c-12.8 28.8-28.8 54.4-51.2 73.6-51.2 51.2-118.4 76.8-185.6 76.8s-134.4-25.6-182.4-76.8c-22.4-19.2-41.6-44.8-51.2-73.6-16-32-25.6-70.4-25.6-108.8s9.6-76.8 25.6-108.8c3.2-6.4 12.8-12.8 22.4-6.4 6.4 3.2 12.8 12.8 6.4 22.4-12.8 28.8-22.4 64-22.4 96s6.4 67.2 22.4 96c9.6 22.4 25.6 44.8 44.8 64 44.8 41.6 99.2 67.2 160 67.2s118.4-22.4 160-67.2c19.2-19.2 35.2-41.6 44.8-64 12.8-28.8 22.4-64 22.4-96s-6.4-67.2-22.4-96c-3.2-9.6 0-19.2 9.6-25.6zM169.6 864c0 9.6-6.4 16-16 16-6.4 0-12.8-3.2-16-9.6-25.6-51.2-38.4-112-38.4-169.6s12.8-118.4 38.4-169.6c3.2-6.4 9.6-9.6 16-9.6 3.2 0 3.2 0 6.4 0 6.4 3.2 12.8 12.8 6.4 22.4-22.4 48-35.2 102.4-35.2 156.8s12.8 108.8 35.2 156.8c3.2 3.2 3.2 6.4 3.2 6.4zM851.2 521.6c3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6 25.6 54.4 38.4 112 38.4 169.6s-12.8 115.2-38.4 169.6c-3.2 6.4-9.6 12.8-16 12.8-9.6 0-16-6.4-16-16 0-3.2 0-3.2 0-6.4 22.4-48 35.2-102.4 35.2-156.8s-12.8-108.8-35.2-156.8c-3.2-12.8 0-22.4 9.6-25.6z" />
434
+ <glyph unicode="&#xeaa8;" glyph-name="folder-network" d="M64 41.6h297.6c6.4-51.2 51.2-89.6 105.6-89.6s96 38.4 105.6 89.6h297.6c9.6 0 16 6.4 16 16s-6.4 16-16 16h-297.6c-6.4 44.8-41.6 83.2-89.6 89.6v128h236.8c64 0 115.2 48 121.6 112l22.4 300.8c3.2 35.2-9.6 67.2-32 92.8s-57.6 41.6-89.6 41.6h-240c-25.6 0-48 9.6-64 25.6l-57.6 57.6c-25.6 25.6-57.6 38.4-89.6 38.4h-99.2c-35.2 0-70.4-16-92.8-41.6-22.4-22.4-35.2-57.6-32-92.8l35.2-422.4c6.4-64 57.6-112 121.6-112h224v-128c-44.8-6.4-83.2-41.6-89.6-89.6h-294.4c-9.6 0-16-6.4-16-16s6.4-16 16-16zM134.4 406.4l-35.2 422.4c-3.2 25.6 6.4 51.2 25.6 70.4s38.4 28.8 67.2 28.8h99.2c25.6 0 48-9.6 64-25.6l57.6-57.6c22.4-22.4 54.4-35.2 86.4-35.2h240c25.6 0 51.2-9.6 67.2-28.8s25.6-44.8 22.4-70.4l-22.4-300.8c-3.2-48-44.8-83.2-89.6-83.2h-492.8c-48-3.2-86.4 32-89.6 80z" />
435
+ <glyph unicode="&#xeaa9;" glyph-name="folder-sync" d="M102.4 438.4h304c41.6 0 76.8 32 83.2 73.6l12.8 185.6c3.2 22.4-6.4 44.8-22.4 64-16 16-38.4 25.6-60.8 25.6h-166.4l-51.2 51.2c-16 16-35.2 25.6-57.6 25.6h-60.8c-25.6 0-44.8-9.6-60.8-25.6-16-19.2-25.6-41.6-22.4-64l22.4-259.2c3.2-44.8 38.4-76.8 80-76.8zM44.8 816c9.6 9.6 22.4 16 38.4 16h60.8c12.8 0 25.6-6.4 35.2-16l54.4-54.4c3.2-3.2 6.4-3.2 12.8-3.2h176c12.8 0 28.8-6.4 38.4-16s12.8-25.6 12.8-38.4l-12.8-185.6c-3.2-25.6-22.4-44.8-51.2-44.8h-307.2c-25.6 0-48 19.2-51.2 44.8l-19.2 259.2c0 12.8 3.2 28.8 12.8 38.4zM723.2 409.6c-16 16-35.2 25.6-57.6 25.6h-60.8c-22.4 0-44.8-9.6-60.8-25.6s-22.4-38.4-22.4-64l22.4-259.2c3.2-41.6 38.4-73.6 83.2-73.6h300.8c41.6 0 76.8 32 83.2 73.6l12.8 185.6c3.2 22.4-6.4 44.8-22.4 64-16 16-38.4 25.6-60.8 25.6h-169.6l-48 48zM979.2 310.4c9.6-9.6 12.8-25.6 12.8-38.4l-12.8-185.6c-3.2-25.6-22.4-44.8-51.2-44.8h-304c-25.6 0-48 19.2-51.2 44.8l-22.4 259.2c0 12.8 3.2 28.8 12.8 38.4s22.4 16 38.4 16h60.8c12.8 0 25.6-6.4 35.2-16l54.4-54.4c3.2-3.2 6.4-3.2 12.8-3.2h176c16 0 28.8-6.4 38.4-16zM691.2 748.8h-60.8c-9.6 0-16-6.4-16-16s6.4-16 16-16h60.8c64 0 115.2-51.2 115.2-115.2v-25.6l-41.6 41.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l70.4-70.4c3.2-3.2 6.4-3.2 12.8-3.2s9.6 3.2 12.8 3.2l70.4 70.4c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-48-41.6v25.6c0 80-67.2 147.2-147.2 147.2zM268.8 236.8c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-70.4 70.4c-3.2 3.2-6.4 3.2-12.8 3.2s-9.6-3.2-12.8-3.2l-70.4-70.4c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0l41.6 41.6v-22.4c0-80 67.2-147.2 147.2-147.2h60.8c9.6 0 16 6.4 16 16s-6.4 16-16 16h-60.8c-64 0-115.2 51.2-115.2 115.2v25.6l44.8-44.8z" />
436
+ <glyph unicode="&#xeaaa;" glyph-name="graph-bar2" d="M880 960h-736c-80 0-144-64-144-144v-736c0-80 64-144 144-144h736c80 0 144 64 144 144v736c0 80-64 144-144 144zM992 80c0-60.8-51.2-112-112-112h-736c-60.8 0-112 51.2-112 112v736c0 60.8 51.2 112 112 112h736c60.8 0 112-51.2 112-112v-736zM240 380.8c-9.6 0-16-6.4-16-16v-147.2c0-9.6 6.4-16 16-16s16 6.4 16 16v147.2c0 9.6-6.4 16-16 16zM422.4 473.6c-9.6 0-16-6.4-16-16v-240c0-9.6 6.4-16 16-16s16 6.4 16 16v240c0 9.6-9.6 16-16 16zM601.6 569.6c-9.6 0-16-6.4-16-16v-336c0-9.6 6.4-16 16-16s16 6.4 16 16v336c0 6.4-6.4 16-16 16zM784 662.4c-9.6 0-16-6.4-16-16v-428.8c0-9.6 6.4-16 16-16s16 6.4 16 16v428.8c0 9.6-6.4 16-16 16z" />
437
+ <glyph unicode="&#xeaab;" glyph-name="graph-pie2" d="M1008 441.6c12.8 12.8 19.2 32 16 51.2-6.4 73.6-28.8 144-64 208s-83.2 121.6-137.6 169.6c-28.8 22.4-76.8 16-96-12.8l-22.4-35.2c-73.6 44.8-156.8 70.4-243.2 70.4-256-3.2-460.8-208-460.8-457.6s204.8-454.4 457.6-454.4c246.4 0 448 195.2 457.6 438.4h41.6c19.2 0 38.4 6.4 51.2 22.4zM752 838.4c9.6 16 35.2 19.2 51.2 6.4 54.4-44.8 99.2-99.2 131.2-160s54.4-128 60.8-198.4c0-9.6-3.2-19.2-9.6-25.6s-16-12.8-25.6-12.8h-470.4l262.4 390.4zM457.6 9.6c-233.6 0-425.6 192-425.6 425.6s192 422.4 425.6 422.4c80 0 156.8-22.4 224-64l-236.8-352c-3.2-6.4-3.2-12.8 0-16 3.2-6.4 9.6-9.6 12.8-9.6h425.6c-9.6-224-195.2-406.4-425.6-406.4z" />
438
+ <glyph unicode="&#xeaac;" glyph-name="heading-h" d="M201.6-48c6.4 0 16-3.2 22.4-3.2 60.8 0 112 51.2 112 112v256c0 9.6 6.4 16 16 16h348.8c9.6 0 16-6.4 16-16v-252.8c0-54.4 38.4-102.4 89.6-115.2 6.4 0 16-3.2 22.4-3.2 0 0 0 0 0 0 28.8 0 57.6 12.8 80 32 22.4 22.4 32 48 32 80v768c0 60.8-51.2 112-112 112-6.4 0-16 0-22.4-3.2-51.2-9.6-89.6-57.6-89.6-115.2v-252.8c0-9.6-6.4-16-16-16h-348.8c-9.6 0-16 6.4-16 16v259.2c0 54.4-38.4 102.4-89.6 115.2-6.4 0-16 0-22.4 0-60.8 0-112-51.2-112-112v-764.8c0-54.4 38.4-102.4 89.6-112zM144 828.8c0 48 44.8 89.6 96 76.8 38.4-6.4 64-41.6 64-83.2v-252.8c0-25.6 22.4-48 48-48h348.8c25.6 0 48 22.4 48 48v256c0 41.6 25.6 76.8 64 83.2 51.2 9.6 96-28.8 96-76.8v-768c0-22.4-9.6-41.6-22.4-57.6-16-16-35.2-22.4-57.6-22.4v0c-6.4 0-9.6 0-16 3.2-38.4 6.4-64 41.6-64 83.2v252.8c0 25.6-22.4 48-48 48h-348.8c-25.6 0-48-22.4-48-48v-256c0-48-44.8-89.6-96-76.8-38.4 6.4-64 41.6-64 83.2v755.2z" />
439
+ <glyph unicode="&#xeaad;" glyph-name="heading-html" d="M310.4 435.2c-6.4 6.4-16 6.4-22.4 0l-96-96c-3.2-3.2-3.2-6.4-3.2-12.8s0-6.4 3.2-9.6l96-96c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-83.2 83.2 83.2 83.2c3.2 9.6 3.2 19.2-3.2 25.6zM707.2 435.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l83.2-83.2-83.2-83.2c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l96 96c3.2 3.2 3.2 6.4 3.2 12.8s-3.2 9.6-3.2 12.8l-99.2 89.6zM643.2 460.8c-9.6 3.2-16-3.2-19.2-12.8l-64-233.6c-3.2-9.6 3.2-16 12.8-19.2 0 0 3.2 0 3.2 0 6.4 0 12.8 3.2 16 12.8l64 233.6c0 9.6-3.2 16-12.8 19.2zM502.4 428.8c-9.6 0-16-6.4-16-16v-67.2h-86.4v67.2c0 9.6-6.4 16-16 16s-16-6.4-16-16v-169.6c0-9.6 6.4-16 16-16s16 6.4 16 16v67.2h86.4v-67.2c0-9.6 6.4-16 16-16s16 6.4 16 16v169.6c0 9.6-9.6 16-16 16zM976 873.6h-928c-25.6 0-48-22.4-48-48v-800c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48v800c0 25.6-22.4 48-48 48zM992 678.4c0 0 0 0 0 0h-118.4c-9.6 0-16-6.4-16-16s6.4-16 16-16h115.2c0 0 0 0 3.2 0v-620.8c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v620.8h704c9.6 0 16 6.4 16 16s-6.4 16-16 16h-704v147.2c0 6.4 6.4 16 16 16h928c9.6 0 16-9.6 16-16v-147.2zM144 755.2c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6zM208 755.2c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6zM272 755.2c0-14.138-11.462-25.6-25.6-25.6s-25.6 11.462-25.6 25.6c0 14.138 11.462 25.6 25.6 25.6s25.6-11.462 25.6-25.6z" />
440
+ <glyph unicode="&#xeaae;" glyph-name="heart" d="M716.8 905.6c-76.8 0-150.4-28.8-204.8-80-57.6 51.2-128 80-204.8 80-83.2 0-160-32-217.6-89.6s-89.6-134.4-89.6-214.4c0-83.2 32-160 89.6-217.6l374.4-374.4c12.8-12.8 28.8-19.2 44.8-19.2s35.2 6.4 44.8 19.2l380.8 374.4c57.6 57.6 89.6 134.4 89.6 217.6s-32 160-89.6 217.6-134.4 86.4-217.6 86.4zM912 406.4l-377.6-374.4c-12.8-12.8-35.2-12.8-48 0l-374.4 374.4c-51.2 51.2-80 121.6-80 195.2s28.8 140.8 80 195.2 121.6 80 195.2 80 140.8-28.8 195.2-80c6.4-6.4 16-6.4 22.4 0 51.2 51.2 121.6 80 195.2 80s140.8-28.8 195.2-80 76.8-121.6 76.8-195.2c0-73.6-28.8-144-80-195.2z" />
441
+ <glyph unicode="&#xeaaf;" glyph-name="home2" d="M556.8 889.6c-25.6 25.6-67.2 25.6-92.8 0l-460.8-460.8c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0l86.4 86.4v-374.4c0-73.6 64-134.4 140.8-134.4h496c76.8 0 140.8 60.8 140.8 134.4v396.8l105.6-105.6c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-464 457.6zM857.6 121.6c0-57.6-48-102.4-108.8-102.4h-492.8c-60.8 0-108.8 44.8-108.8 102.4v406.4l342.4 339.2c12.8 12.8 35.2 12.8 48 0l323.2-323.2v-422.4zM345.6 377.6c0-89.6 73.6-166.4 166.4-166.4s166.4 73.6 166.4 166.4-73.6 166.4-166.4 166.4-166.4-76.8-166.4-166.4zM646.4 377.6c0-73.6-60.8-134.4-134.4-134.4s-134.4 60.8-134.4 134.4 60.8 134.4 134.4 134.4 134.4-64 134.4-134.4z" />
442
+ <glyph unicode="&#xeab0;" glyph-name="indent-left" d="M412.8 560h348.8c32 0 57.6 25.6 57.6 57.6v57.6c0 32-25.6 57.6-57.6 57.6h-348.8c-32 0-57.6-25.6-57.6-57.6v-57.6c0-32 28.8-57.6 57.6-57.6zM387.2 675.2c0 12.8 12.8 25.6 25.6 25.6h348.8c12.8 0 25.6-12.8 25.6-25.6v-57.6c0-12.8-12.8-25.6-25.6-25.6h-348.8c-12.8 0-25.6 12.8-25.6 25.6v57.6zM412.8 329.6h348.8c32 0 57.6 25.6 57.6 57.6v57.6c0 32-25.6 57.6-57.6 57.6h-348.8c-32 0-57.6-25.6-57.6-57.6v-57.6c0-28.8 28.8-57.6 57.6-57.6zM387.2 444.8c0 12.8 12.8 25.6 25.6 25.6h348.8c12.8 0 25.6-12.8 25.6-25.6v-57.6c0-12.8-12.8-25.6-25.6-25.6h-348.8c-12.8 0-25.6 12.8-25.6 25.6v57.6zM412.8 102.4h348.8c32 0 57.6 25.6 57.6 57.6v57.6c0 32-25.6 57.6-57.6 57.6h-348.8c-32 0-57.6-25.6-57.6-57.6v-57.6c0-32 28.8-57.6 57.6-57.6zM387.2 217.6c0 12.8 12.8 25.6 25.6 25.6h348.8c12.8 0 25.6-12.8 25.6-25.6v-57.6c0-12.8-12.8-25.6-25.6-25.6h-348.8c-12.8 0-25.6 12.8-25.6 25.6v57.6zM240 320c22.4-19.2 57.6-3.2 57.6 28.8v147.2c0 28.8-35.2 48-57.6 28.8l-89.6-76.8c-16-12.8-16-41.6 0-54.4l89.6-73.6zM169.6 422.4l92.8 73.6c0 0 3.2 0 3.2-3.2v-147.2c0-3.2-3.2-3.2-3.2-3.2l-92.8 73.6v6.4z" />
443
+ <glyph unicode="&#xeab1;" glyph-name="indent-right" d="M451.2 560h348.8c32 0 57.6 25.6 57.6 57.6v57.6c0 32-25.6 57.6-57.6 57.6h-348.8c-32 0-57.6-25.6-57.6-57.6v-57.6c0-32 25.6-57.6 57.6-57.6zM425.6 675.2c0 12.8 12.8 25.6 25.6 25.6h348.8c12.8 0 25.6-12.8 25.6-25.6v-57.6c0-12.8-12.8-25.6-25.6-25.6h-348.8c-12.8 0-25.6 12.8-25.6 25.6v57.6zM451.2 329.6h348.8c32 0 57.6 25.6 57.6 57.6v57.6c0 32-25.6 57.6-57.6 57.6h-348.8c-32 0-57.6-25.6-57.6-57.6v-57.6c0-28.8 25.6-57.6 57.6-57.6zM425.6 444.8c0 12.8 12.8 25.6 25.6 25.6h348.8c12.8 0 25.6-12.8 25.6-25.6v-57.6c0-12.8-12.8-25.6-25.6-25.6h-348.8c-12.8 0-25.6 12.8-25.6 25.6v57.6zM451.2 102.4h348.8c32 0 57.6 25.6 57.6 57.6v57.6c0 32-25.6 57.6-57.6 57.6h-348.8c-32 0-57.6-25.6-57.6-57.6v-57.6c0-32 25.6-57.6 57.6-57.6zM425.6 217.6c0 12.8 12.8 25.6 25.6 25.6h348.8c12.8 0 25.6-12.8 25.6-25.6v-57.6c0-12.8-12.8-25.6-25.6-25.6h-348.8c-12.8 0-25.6 12.8-25.6 25.6v57.6zM252.8 320l89.6 73.6c16 12.8 16 41.6 0 54.4l-89.6 73.6c-22.4 19.2-57.6 3.2-57.6-28.8v-147.2c0-28.8 35.2-44.8 57.6-25.6zM227.2 492.8c0 3.2 3.2 3.2 6.4 3.2l89.6-73.6v-6.4l-89.6-73.6c-3.2-3.2-6.4-3.2-6.4 3.2v147.2z" />
444
+ <glyph unicode="&#xeab2;" glyph-name="lock-close" d="M611.2 300.8c0-54.787-44.413-99.2-99.2-99.2s-99.2 44.413-99.2 99.2c0 54.787 44.413 99.2 99.2 99.2s99.2-44.413 99.2-99.2zM662.4 896c-41.6 41.6-96 64-150.4 64-118.4 0-214.4-96-214.4-214.4v-83.2h-54.4c-80 0-144-64-144-144v-438.4c0-80 64-144 144-144h537.6c80 0 144 64 144 144v438.4c0 80-64 144-144 144h-54.4v83.2c0 57.6-22.4 112-64 150.4zM329.6 745.6c0 99.2 83.2 182.4 182.4 182.4 48 0 92.8-19.2 128-54.4s54.4-80 54.4-128v-83.2h-364.8v83.2zM892.8 518.4v-438.4c0-60.8-51.2-112-112-112h-537.6c-60.8 0-112 51.2-112 112v438.4c0 60.8 51.2 112 112 112h537.6c60.8 0 112-51.2 112-112z" />
445
+ <glyph unicode="&#xeab3;" glyph-name="lock-open" d="M611.2 300.8c0-54.787-44.413-99.2-99.2-99.2s-99.2 44.413-99.2 99.2c0 54.787 44.413 99.2 99.2 99.2s99.2-44.413 99.2-99.2zM243.2 662.4c-80 0-144-64-144-144v-438.4c0-80 64-144 144-144h537.6c80 0 144 64 144 144v438.4c0 80-64 144-144 144h-54.4v83.2c0 57.6-22.4 112-64 150.4-41.6 41.6-96 64-150.4 64-57.6 0-112-22.4-150.4-64-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0c32 35.2 80 54.4 128 54.4s92.8-19.2 128-54.4c35.2-35.2 54.4-80 54.4-128v-83.2h-451.2zM892.8 518.4v-438.4c0-60.8-51.2-112-112-112h-537.6c-60.8 0-112 51.2-112 112v438.4c0 60.8 51.2 112 112 112h537.6c60.8 0 112-51.2 112-112z" />
446
+ <glyph unicode="&#xeab4;" glyph-name="map-pointer-add" d="M528 960c-115.2 0-220.8-44.8-304-124.8-166.4-166.4-166.4-438.4 0-604.8l291.2-291.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l291.2 291.2c166.4 166.4 166.4 438.4 0 604.8-83.2 80-192 124.8-304 124.8zM806.4 252.8l-278.4-278.4-278.4 278.4c-153.6 153.6-153.6 403.2 0 560 73.6 73.6 172.8 115.2 278.4 115.2s204.8-41.6 278.4-115.2c153.6-153.6 153.6-406.4 0-560zM675.2 544h-131.2v131.2c0 9.6-6.4 16-16 16s-16-6.4-16-16v-131.2h-131.2c-9.6 0-16-6.4-16-16s6.4-16 16-16h131.2v-134.4c0-9.6 6.4-16 16-16s16 6.4 16 16v134.4h131.2c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
447
+ <glyph unicode="&#xeab5;" glyph-name="map-pointer-check" d="M211.2 230.4l291.2-291.2c0-3.2 6.4-3.2 9.6-3.2s9.6 0 12.8 3.2l291.2 291.2c166.4 166.4 166.4 438.4 0 604.8-83.2 80-188.8 124.8-304 124.8s-220.8-44.8-300.8-124.8c-166.4-166.4-166.4-438.4 0-604.8zM233.6 812.8c73.6 73.6 172.8 115.2 278.4 115.2s204.8-41.6 278.4-115.2c153.6-153.6 153.6-403.2 0-560l-278.4-278.4-278.4 278.4c-153.6 153.6-153.6 406.4 0 560zM441.6 396.8c3.2-3.2 6.4-3.2 12.8-3.2s9.6 3.2 12.8 3.2l243.2 243.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-233.6-233.6-112 112c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l121.6-121.6z" />
448
+ <glyph unicode="&#xeab6;" glyph-name="map-pointer-delete" d="M512 960c-115.2 0-220.8-44.8-300.8-124.8-166.4-166.4-166.4-438.4 0-604.8l291.2-291.2c0-3.2 6.4-3.2 9.6-3.2s9.6 0 12.8 3.2l291.2 291.2c166.4 166.4 166.4 438.4 0 604.8-83.2 80-188.8 124.8-304 124.8zM790.4 252.8l-278.4-278.4-278.4 278.4c-153.6 153.6-153.6 403.2 0 560 73.6 73.6 172.8 115.2 278.4 115.2s204.8-41.6 278.4-115.2c153.6-153.6 153.6-406.4 0-560zM659.2 544h-297.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h297.6c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
449
+ <glyph unicode="&#xeab7;" glyph-name="map-pointer2" d="M512 384c89.6 0 163.2 73.6 163.2 163.2s-73.6 163.2-163.2 163.2-163.2-73.6-163.2-166.4 73.6-160 163.2-160zM512 678.4c73.6 0 131.2-60.8 131.2-134.4s-57.6-128-131.2-128-131.2 60.8-131.2 131.2 57.6 131.2 131.2 131.2zM211.2 230.4l291.2-291.2c0-3.2 6.4-3.2 9.6-3.2s9.6 0 12.8 3.2l291.2 291.2c166.4 166.4 166.4 438.4 0 604.8-83.2 80-188.8 124.8-304 124.8s-220.8-44.8-300.8-124.8c-166.4-166.4-166.4-438.4 0-604.8zM233.6 812.8c73.6 73.6 172.8 115.2 278.4 115.2s204.8-41.6 278.4-115.2c153.6-153.6 153.6-403.2 0-560l-278.4-278.4-278.4 278.4c-153.6 153.6-153.6 406.4 0 560z" />
450
+ <glyph unicode="&#xeab8;" glyph-name="map" d="M956.8 870.4c-12.8 0-25.6-3.2-35.2-9.6l-230.4-140.8c-9.6-6.4-25.6-6.4-35.2 0l-281.6 172.8c-22.4 12.8-48 12.8-70.4 0l-272-176c-19.2-12.8-32-32-32-54.4v-569.6c0-35.2 28.8-67.2 67.2-67.2 12.8 0 25.6 3.2 35.2 9.6l227.2 140.8c9.6 6.4 25.6 6.4 35.2 0l281.6-172.8c9.6-6.4 22.4-9.6 35.2-9.6s25.6 3.2 35.2 9.6l281.6 172.8c19.2 12.8 32 32 32 54.4v576c-6.4 35.2-35.2 64-73.6 64zM992 233.6c0-12.8-6.4-22.4-16-28.8l-281.6-172.8c-9.6-6.4-25.6-6.4-35.2 0l-281.6 172.8c-9.6 6.4-22.4 9.6-35.2 9.6s-25.6-3.2-35.2-9.6l-224-140.8c-19.2-12.8-51.2-3.2-51.2 25.6v572.8c0 9.6 6.4 22.4 16 28.8l278.4 172.8c9.6 6.4 25.6 6.4 35.2 0l281.6-172.8c22.4-12.8 48-12.8 70.4 0l230.4 140.8c16 12.8 48 3.2 48-25.6v-572.8zM345.6 649.6c-9.6 0-16-6.4-16-16v-249.6c0-9.6 6.4-16 16-16s16 6.4 16 16v249.6c0 9.6-9.6 16-16 16zM675.2 524.8c-9.6 0-16-6.4-16-16v-249.6c0-9.6 6.4-16 16-16s16 6.4 16 16v249.6c0 9.6-6.4 16-16 16z" />
451
+ <glyph unicode="&#xeab9;" glyph-name="navigation1" d="M531.2 800c-6.4 6.4-16 9.6-25.6 9.6 0 0 0 0 0 0-9.6 0-19.2-3.2-25.6-9.6l-80-89.6c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4l83.2 89.6 80-86.4c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4l-76.8 83.2zM176 448l86.4 80c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-86.4-80c-6.4-6.4-9.6-16-9.6-25.6s3.2-19.2 9.6-25.6l89.6-80c3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c6.4 6.4 6.4 16 0 22.4l-89.6 83.2zM588.8 204.8l-83.2-89.6-80 86.4c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l80-86.4c6.4-6.4 16-9.6 25.6-9.6 0 0 0 0 0 0 9.6 0 19.2 3.2 25.6 9.6l80 89.6c6.4 6.4 6.4 16 0 22.4s-19.2 6.4-25.6 0zM748.8 553.6c-6.4-6.4-6.4-16 0-22.4l89.6-83.2-86.4-80c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2l86.4 80c6.4 6.4 9.6 16 9.6 25.6s-3.2 19.2-9.6 25.6l-89.6 80c-6.4 6.4-16 6.4-22.4 0zM512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512-32c-265.6 0-480 214.4-480 480s214.4 480 480 480 480-214.4 480-480-214.4-480-480-480z" />
452
+ <glyph unicode="&#xeaba;" glyph-name="navigation2" d="M512 291.2c86.4 0 156.8 70.4 156.8 156.8s-70.4 156.8-156.8 156.8-156.8-70.4-156.8-156.8 70.4-156.8 156.8-156.8zM512 572.8c67.2 0 124.8-54.4 124.8-124.8s-54.4-124.8-124.8-124.8-124.8 54.4-124.8 124.8 57.6 124.8 124.8 124.8zM390.4 800l115.2 124.8c3.2 3.2 3.2 3.2 6.4 3.2v0c3.2 0 3.2 0 6.4-3.2l115.2-124.8c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4l-115.2 124.8c-6.4 9.6-19.2 12.8-28.8 12.8 0 0 0 0 0 0-12.8 0-22.4-3.2-28.8-12.8l-115.2-124.8c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 9.6-3.2 3.2-3.2 9.6 0 12.8 3.2zM140.8 300.8c3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c6.4 6.4 6.4 16 0 22.4l-124.8 115.2c-6.4 3.2-6.4 3.2-6.4 6.4s0 3.2 3.2 6.4l124.8 115.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-124.8-115.2c-9.6-6.4-12.8-19.2-12.8-28.8s3.2-22.4 12.8-28.8l128-118.4zM633.6 96l-115.2-124.8c-3.2-3.2-3.2-3.2-6.4-3.2v0c-3.2 0-3.2 0-6.4 3.2l-115.2 124.8c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l115.2-124.8c6.4-9.6 19.2-12.8 28.8-12.8 0 0 0 0 0 0 12.8 0 22.4 3.2 28.8 12.8l115.2 124.8c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0zM883.2 595.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l124.8-115.2c6.4-6.4 6.4-6.4 6.4-9.6s0-3.2-3.2-6.4l-124.8-115.2c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2l124.8 115.2c9.6 6.4 12.8 19.2 12.8 28.8s-3.2 22.4-12.8 28.8l-128 121.6z" />
453
+ <glyph unicode="&#xeabb;" glyph-name="page-export" d="M163.2 83.2h166.4v-19.2c0-70.4 57.6-124.8 124.8-124.8h364.8c70.4 0 124.8 57.6 124.8 124.8v393.6c0 22.4-9.6 44.8-25.6 64l-150.4 150.4c-16 16-38.4 25.6-64 25.6h-108.8l-118.4 118.4c-16 16-38.4 25.6-64 25.6h-249.6c-70.4 0-124.8-57.6-124.8-124.8v-508.8c0-70.4 54.4-124.8 124.8-124.8zM745.6 646.4l150.4-150.4c9.6-9.6 16-25.6 16-41.6v-396.8c0-51.2-41.6-92.8-92.8-92.8h-364.8c-51.2 0-92.8 41.6-92.8 92.8v512c0 51.2 41.6 92.8 92.8 92.8h252.8c12.8 3.2 28.8-3.2 38.4-16zM70.4 716.8c0 51.2 41.6 92.8 92.8 92.8h252.8c16 0 28.8-6.4 41.6-16l96-96h-96c-70.4 0-124.8-57.6-124.8-124.8v-457.6h-169.6c-51.2 0-92.8 41.6-92.8 92.8v508.8zM684.8 960c-9.6 0-16-6.4-16-16s6.4-16 16-16h67.2c70.4 0 128-57.6 128-128v-32l-48 48c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l76.8-76.8c3.2-3.2 6.4-3.2 12.8-3.2s9.6 3.2 12.8 3.2l76.8 76.8c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-48-48v32c0 86.4-70.4 160-160 160h-73.6z" />
454
+ <glyph unicode="&#xeabc;" glyph-name="page-sync" d="M262.4-64h496c89.6 0 166.4 73.6 166.4 163.2v540.8c0 28.8-12.8 60.8-35.2 80l-204.8 204.8c-19.2 22.4-48 35.2-80 35.2h-342.4c-89.6 0-163.2-73.6-163.2-163.2v-694.4c0-92.8 73.6-166.4 163.2-166.4zM131.2 796.8c0 70.4 60.8 131.2 131.2 131.2h342.4c22.4 0 41.6-9.6 57.6-25.6l204.8-204.8c16-16 25.6-38.4 25.6-57.6v-540.8c0-73.6-60.8-131.2-134.4-131.2h-496c-73.6 0-134.4 60.8-134.4 131.2v697.6zM457.6 585.6h67.2c70.4 0 128-57.6 128-128v-32l-51.2 54.4c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l76.8-76.8c3.2-3.2 6.4-3.2 12.8-3.2s9.6 3.2 12.8 3.2l76.8 76.8c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-48-48v32c0 86.4-70.4 160-160 160h-67.2c-9.6 0-16-6.4-16-16s3.2-22.4 12.8-22.4zM291.2 371.2l48 48v-32c0-86.4 70.4-160 160-160h67.2c9.6 0 16 6.4 16 16s-6.4 16-16 16h-67.2c-70.4 0-128 57.6-128 128v32l48-48c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-76.8 76.8c-6.4 6.4-16 6.4-22.4 0l-76.8-76.8c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0z" />
455
+ <glyph unicode="&#xeabd;" glyph-name="piramid" d="M32 217.6l444.8-272c9.6-6.4 22.4-9.6 35.2-9.6s25.6 3.2 35.2 9.6l444.8 272c16 9.6 28.8 25.6 32 44.8s0 38.4-12.8 54.4l-444.8 614.4c-12.8 19.2-32 28.8-54.4 28.8s-41.6-9.6-54.4-28.8l-444.8-614.4c-9.6-16-16-35.2-12.8-54.4 6.4-19.2 16-35.2 32-44.8zM540.8 912l444.8-614.4c6.4-9.6 6.4-19.2 6.4-28.8-3.2-9.6-6.4-19.2-16-22.4l-444.8-272c0 0-3.2 0-3.2 0v950.4c6.4-3.2 9.6-6.4 12.8-12.8zM38.4 297.6l444.8 614.4c3.2 6.4 9.6 9.6 12.8 12.8v-953.6c0 0-3.2 0-3.2 0l-444.8 275.2c-9.6 6.4-16 12.8-16 22.4s0 19.2 6.4 28.8z" />
456
+ <glyph unicode="&#xeabe;" glyph-name="plug" d="M1008 512c-121.6 0-220.8-99.2-220.8-220.8v-92.8c0-124.8-102.4-230.4-230.4-230.4s-230.4 102.4-230.4 230.4v89.6h92.8c112 0 204.8 92.8 204.8 204.8v227.2c0 25.6-22.4 48-48 48h-137.6v176c0 9.6-6.4 16-16 16s-16-6.4-16-16v-176h-224v176c0 9.6-6.4 16-16 16s-16-6.4-16-16v-176h-102.4c-25.6 0-48-22.4-48-48v-227.2c0-112 92.8-204.8 204.8-204.8h92.8v-92.8c0-144 118.4-262.4 262.4-262.4s262.4 118.4 262.4 262.4v92.8c0 105.6 83.2 188.8 188.8 188.8 9.6 0 16 6.4 16 16s-9.6 19.2-19.2 19.2zM32 492.8v227.2c0 9.6 6.4 16 16 16h531.2c9.6 0 16-6.4 16-16v-227.2c0-96-76.8-172.8-172.8-172.8h-217.6c-96 0-172.8 76.8-172.8 172.8z" />
457
+ <glyph unicode="&#xeabf;" glyph-name="point-marker" d="M528 777.6v166.4c0 9.6-6.4 16-16 16s-16-6.4-16-16v-166.4c0-9.6 6.4-16 16-16s16 9.6 16 16zM329.6 726.4l-96 134.4c-6.4 6.4-16 6.4-22.4 0-6.4-3.2-9.6-12.8-3.2-22.4l96-134.4c3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2 6.4 6.4 9.6 16 3.2 25.6zM35.2 585.6l156.8-51.2c3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6 3.2 9.6-3.2 16-9.6 19.2l-156.8 51.2c-9.6 3.2-16-3.2-19.2-9.6s-3.2-16 6.4-19.2zM41.6 278.4c3.2 0 3.2 0 6.4 0l156.8 51.2c9.6 3.2 12.8 12.8 9.6 19.2s-12.8 16-22.4 12.8l-156.8-51.2c-9.6-3.2-12.8-12.8-9.6-19.2 3.2-9.6 6.4-12.8 16-12.8zM304 188.8l-96-134.4c-6.4-6.4-3.2-16 3.2-22.4 3.2 0 6.4 0 9.6 0s9.6 0 12.8 6.4l96 134.4c6.4 6.4 3.2 16-3.2 22.4-6.4 3.2-16 3.2-22.4-6.4zM496 118.4v-166.4c0-9.6 6.4-16 16-16s16 6.4 16 16v166.4c0 9.6-6.4 16-16 16s-16-9.6-16-16zM790.4 38.4c3.2-6.4 9.6-6.4 12.8-6.4s6.4 0 9.6 3.2c6.4 6.4 9.6 16 3.2 22.4l-96 134.4c-6.4 6.4-16 9.6-22.4 3.2s-9.6-16-3.2-22.4l96-134.4zM979.2 278.4c3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6 3.2 9.6-3.2 16-9.6 19.2l-160 54.4c-9.6 3.2-16-3.2-19.2-9.6s3.2-16 9.6-19.2l156.8-54.4zM979.2 617.6l-156.8-51.2c-9.6-3.2-12.8-12.8-9.6-19.2s9.6-9.6 16-9.6c3.2 0 3.2 0 6.4 0l156.8 51.2c9.6 3.2 12.8 12.8 9.6 19.2s-12.8 12.8-22.4 9.6zM697.6 704c3.2-3.2 6.4-3.2 9.6-3.2 6.4 0 9.6 3.2 12.8 6.4l96 134.4c6.4 6.4 3.2 16-3.2 22.4s-16 3.2-22.4-3.2l-96-134.4c-6.4-9.6-3.2-19.2 3.2-22.4zM640 448c0 70.4-57.6 128-128 128s-128-57.6-128-128 57.6-128 128-128 128 57.6 128 128zM512 352c-54.4 0-96 41.6-96 96s41.6 96 96 96 96-41.6 96-96-41.6-96-96-96z" />
458
+ <glyph unicode="&#xeac0;" glyph-name="quote2" d="M64 102.4h281.6c35.2 0 64 28.8 64 64v281.6c0 35.2-28.8 64-64 64h-313.6v83.2c0 92.8 73.6 166.4 166.4 166.4 9.6 0 16 6.4 16 16s-6.4 16-16 16c-108.8 0-198.4-89.6-198.4-198.4v-428.8c0-35.2 28.8-64 64-64zM377.6 448v-281.6c0-19.2-16-32-32-32h-281.6c-19.2 0-32 16-32 32v313.6h313.6c19.2 0 32-16 32-32zM960 512h-313.6v83.2c0 92.8 73.6 166.4 166.4 166.4 9.6 0 16 6.4 16 16s-6.4 16-16 16c-108.8 0-198.4-89.6-198.4-198.4v-428.8c0-35.2 28.8-64 64-64h281.6c35.2 0 64 28.8 64 64v281.6c0 35.2-28.8 64-64 64zM992 166.4c0-19.2-16-32-32-32h-281.6c-19.2 0-32 16-32 32v313.6h313.6c19.2 0 32-16 32-32v-281.6z" />
459
+ <glyph unicode="&#xeac1;" glyph-name="refresh-check" d="M230.4 496c6.4 6.4 6.4 16 3.2 22.4-6.4 6.4-16 6.4-22.4 3.2l-83.2-70.4c0 211.2 172.8 380.8 384 380.8 163.2 0 310.4-105.6 364.8-259.2 3.2-9.6 12.8-12.8 19.2-9.6 9.6 3.2 12.8 12.8 9.6 19.2-57.6 169.6-214.4 281.6-393.6 281.6-227.2 0-412.8-182.4-416-406.4l-67.2 80c-6.4 6.4-16 6.4-22.4 0s-6.4-16-3.2-22.4l92.8-108.8c3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2l112 92.8zM924.8 480c-6.4 6.4-16 6.4-22.4 0l-108.8-96c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0l80 70.4c-6.4-204.8-176-368-384-368-169.6 0-316.8 108.8-368 268.8-3.2 9.6-12.8 12.8-19.2 9.6-9.6-3.2-12.8-12.8-9.6-19.2 54.4-176 214.4-291.2 396.8-291.2 224 0 406.4 176 416 396.8l67.2-76.8c3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2 6.4 6.4 6.4 16 0 22.4l-92.8 108.8zM704 566.4l-201.6-201.6c-6.4-6.4-19.2-6.4-25.6 0l-108.8 108.8c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l108.8-108.8c9.6-9.6 22.4-16 35.2-16s25.6 6.4 35.2 16l201.6 201.6c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0z" />
460
+ <glyph unicode="&#xeac2;" glyph-name="refresh" d="M230.4 492.8c6.4 6.4 6.4 16 3.2 22.4-6.4 6.4-16 6.4-22.4 3.2l-83.2-67.2c0 208 172.8 380.8 384 380.8 163.2 0 310.4-105.6 364.8-259.2 3.2-9.6 12.8-12.8 19.2-9.6 9.6 3.2 12.8 12.8 9.6 19.2-57.6 166.4-214.4 281.6-393.6 281.6-227.2 0-412.8-182.4-416-409.6l-67.2 80c-6.4 6.4-16 6.4-22.4 3.2-6.4-6.4-9.6-16-3.2-25.6l92.8-108.8c3.2-3.2 6.4-6.4 9.6-6.4 0 0 0 0 0 0 3.2 0 6.4 0 9.6 3.2l115.2 92.8zM924.8 476.8c-6.4 6.4-16 6.4-22.4 0l-108.8-96c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0l80 70.4c-6.4-204.8-176-371.2-384-371.2-169.6 0-316.8 108.8-368 268.8-3.2 9.6-12.8 12.8-19.2 9.6-9.6-3.2-12.8-12.8-9.6-19.2 54.4-172.8 214.4-291.2 396.8-291.2 224 0 406.4 176 416 396.8l67.2-76.8c3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2 6.4 6.4 6.4 16 0 22.4l-92.8 112z" />
461
+ <glyph unicode="&#xeac3;" glyph-name="refresh2" d="M230.4 467.2c6.4 6.4 6.4 16 3.2 22.4-6.4 6.4-16 6.4-22.4 3.2l-83.2-70.4c0 211.2 172.8 380.8 384 380.8 163.2 0 310.4-105.6 364.8-259.2 3.2-9.6 12.8-12.8 19.2-9.6s12.8 12.8 9.6 19.2c-57.6 169.6-214.4 281.6-393.6 281.6-227.2 0-412.8-182.4-416-409.6l-67.2 80c-6.4 6.4-16 6.4-22.4 3.2s-6.4-16-3.2-22.4l92.8-108.8c3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2l112 92.8zM924.8 451.2c-3.2 3.2-6.4 6.4-9.6 6.4s-9.6 0-12.8-3.2l-108.8-96c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0l80 70.4c-6.4-204.8-176-371.2-384-371.2-169.6 0-316.8 108.8-368 268.8-3.2 9.6-12.8 12.8-19.2 9.6-9.6-3.2-12.8-12.8-9.6-19.2 54.4-172.8 214.4-291.2 396.8-291.2 224 0 406.4 176 416 396.8l67.2-76.8c3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2 6.4 6.4 6.4 16 0 22.4l-92.8 108.8zM624 419.2c0-61.856-50.144-112-112-112s-112 50.144-112 112c0 61.856 50.144 112 112 112s112-50.144 112-112z" />
462
+ <glyph unicode="&#xeac4;" glyph-name="scrolling-image" d="M435.2 409.6c38.4 0 67.2 28.8 67.2 67.2s-28.8 67.2-67.2 67.2-67.2-28.8-67.2-67.2c0-38.4 28.8-67.2 67.2-67.2zM435.2 512c19.2 0 35.2-16 35.2-35.2s-16-35.2-35.2-35.2-35.2 16-35.2 35.2c0 19.2 16 35.2 35.2 35.2zM320 259.2c38.4-64 108.8-105.6 188.8-105.6 102.4 0 185.6 67.2 211.2 163.2 0 3.2 0 3.2 3.2 6.4 3.2 16 6.4 35.2 6.4 51.2v118.4c0 121.6-99.2 220.8-220.8 220.8s-220.8-99.2-220.8-220.8v-118.4c3.2-41.6 12.8-80 32-115.2 0 0 0 0 0 0zM508.8 185.6c-64 0-121.6 32-153.6 80l48 48 25.6-22.4c9.6-9.6 25.6-9.6 35.2 0l124.8 124.8 99.2-99.2c-22.4-76.8-92.8-131.2-179.2-131.2zM323.2 492.8c0 102.4 83.2 188.8 188.8 188.8s188.8-83.2 188.8-188.8v-118.4c0-6.4 0-12.8 0-19.2l-92.8 86.4c-9.6 9.6-25.6 9.6-35.2 0l-124.8-124.8-25.6 22.4c-9.6 9.6-25.6 9.6-35.2 0l-48-48c-9.6 22.4-16 51.2-16 76.8v124.8zM441.6 851.2l67.2 67.2 67.2-67.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-80 80c-6.4 6.4-16 6.4-22.4 0l-80-80c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0zM419.2 48c-6.4-6.4-6.4-16 0-22.4l80-80c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l80 80c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-67.2-67.2-67.2 67.2c-12.8 6.4-22.4 6.4-28.8 0zM531.2 844.8c0-12.371-10.029-22.4-22.4-22.4s-22.4 10.029-22.4 22.4c0 12.371 10.029 22.4 22.4 22.4s22.4-10.029 22.4-22.4zM531.2 780.8c0-12.371-10.029-22.4-22.4-22.4s-22.4 10.029-22.4 22.4c0 12.371 10.029 22.4 22.4 22.4s22.4-10.029 22.4-22.4zM531.2 108.8c0-12.371-10.029-22.4-22.4-22.4s-22.4 10.029-22.4 22.4c0 12.371 10.029 22.4 22.4 22.4s22.4-10.029 22.4-22.4zM531.2 44.8c0-12.371-10.029-22.4-22.4-22.4s-22.4 10.029-22.4 22.4c0 12.371 10.029 22.4 22.4 22.4s22.4-10.029 22.4-22.4z" />
463
+ <glyph unicode="&#xeac5;" glyph-name="sign-turn-right" d="M380.8 268.8c9.6 0 16 6.4 16 16v60.8c0 86.4 70.4 153.6 153.6 153.6h80l-70.4-70.4c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l96 96c0 0 3.2 3.2 3.2 6.4 3.2 3.2 3.2 9.6 0 12.8 0 3.2-3.2 3.2-3.2 6.4l-96 96c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l70.4-70.4h-80c-102.4 0-185.6-83.2-185.6-185.6v-60.8c-3.2-9.6 3.2-16 12.8-16zM0 448c0-22.4 9.6-44.8 25.6-60.8l425.6-425.6c16-16 38.4-25.6 60.8-25.6s44.8 9.6 60.8 25.6l425.6 425.6c16 16 25.6 38.4 25.6 60.8s-9.6 44.8-25.6 60.8l-425.6 425.6c-32 32-89.6 32-121.6 0l-425.6-425.6c-16-16-25.6-38.4-25.6-60.8zM48 486.4l425.6 425.6c9.6 9.6 25.6 16 38.4 16s28.8-6.4 38.4-16l425.6-425.6c22.4-22.4 22.4-54.4 0-76.8l-425.6-425.6c-19.2-19.2-54.4-19.2-76.8 0l-425.6 425.6c-19.2 22.4-19.2 54.4 0 76.8z" />
464
+ <glyph unicode="&#xeac6;" glyph-name="speedometer" d="M630.4 704c6.4-3.2 16 0 22.4 6.4 3.2 6.4 0 16-6.4 22.4-41.6 19.2-86.4 28.8-134.4 28.8-172.8 0-313.6-140.8-313.6-313.6 0-9.6 6.4-16 16-16s16 6.4 16 16c0 156.8 124.8 281.6 281.6 281.6 41.6 0 83.2-9.6 118.4-25.6zM761.6 620.8l-208-227.2c-16 9.6-35.2 16-54.4 16-54.4 0-99.2-44.8-99.2-99.2s44.8-99.2 99.2-99.2c54.4 0 99.2 44.8 99.2 99.2 0 22.4-9.6 44.8-22.4 60.8l208 227.2c6.4 6.4 6.4 16 0 22.4s-19.2 6.4-22.4 0zM512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512-32c-265.6 0-480 214.4-480 480s214.4 480 480 480 480-214.4 480-480-214.4-480-480-480z" />
465
+ <glyph unicode="&#xeac7;" glyph-name="sticky" d="M182.4 16l480-64c0 0 0 0 3.2 0 0 0 0 0 0 0s0 0 0 0c3.2 0 6.4 0 9.6 3.2 0 0 0 0 0 0l182.4 137.6c3.2 3.2 6.4 6.4 6.4 9.6v3.2c0 0 0 0 0 0s0 0 0 0l76.8 576c3.2 25.6-16 51.2-44.8 54.4l-153.6 19.2v160c0 6.4-3.2 12.8-9.6 16s-12.8 0-16-3.2l-28.8-25.6-22.4 35.2c-3.2 3.2-6.4 6.4-12.8 6.4s-9.6-3.2-12.8-6.4l-25.6-35.2-38.4 38.4c-3.2 3.2-9.6 6.4-12.8 3.2-3.2 0-9.6-3.2-12.8-6.4l-28.8-41.6-32 32c-3.2 3.2-12.8 6.4-16 3.2-6.4-3.2-9.6-9.6-9.6-16v-121.6l-176 25.6c-12.8 0-25.6-3.2-35.2-9.6-12.8-9.6-19.2-22.4-19.2-35.2l-92.8-704c-6.4-25.6 12.8-51.2 41.6-54.4zM684.8 3.2l12.8 108.8 108.8-16-121.6-92.8zM492.8 880l19.2-19.2c3.2-3.2 9.6-3.2 12.8-3.2s9.6 3.2 12.8 6.4l25.6 38.4 38.4-38.4c3.2-3.2 6.4-6.4 12.8-3.2 3.2 0 9.6 3.2 12.8 6.4l22.4 32 19.2-32c3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 9.6 0 12.8 3.2l16 16v-230.4l-16 22.4c-3.2 3.2-9.6 6.4-12.8 6.4-6.4 0-9.6-3.2-12.8-6.4l-22.4-38.4-32 35.2c-6.4 0-12.8 3.2-16 3.2-6.4 0-9.6-3.2-12.8-6.4l-25.6-35.2-25.6 28.8c-3.2 3.2-6.4 6.4-12.8 6.4-3.2 0-6.4 0-9.6-3.2l-19.2-22.4v240zM265.6 771.2c0 3.2 3.2 9.6 6.4 12.8s9.6 3.2 12.8 3.2l176-22.4v-160c0-6.4 3.2-12.8 9.6-16s12.8 0 16 3.2l32 32 28.8-28.8c3.2-3.2 9.6-6.4 12.8-6.4 6.4 0 9.6 3.2 12.8 6.4l25.6 35.2 35.2-38.4c3.2-3.2 9.6-6.4 12.8-6.4 6.4 0 9.6 3.2 12.8 6.4l22.4 38.4 32-38.4c3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 3.2 0 6.4 0 6.4 3.2 9.6 9.6 9.6 16v124.8l150.4-22.4c9.6 0 16-9.6 16-19.2l-76.8-560-147.2 19.2c-9.6 0-16-6.4-19.2-12.8l-19.2-147.2-460.8 64c-9.6 0-16 9.6-16 19.2l96 704zM358.4 428.8l425.6-44.8c0 0 0 0 3.2 0 9.6 0 16 6.4 16 12.8 0 9.6-6.4 16-12.8 16l-428.8 44.8c-9.6 0-16-6.4-16-12.8-3.2-9.6 3.2-16 12.8-16zM342.4 304l243.2-25.6c0 0 0 0 3.2 0 9.6 0 16 6.4 16 12.8 0 9.6-6.4 16-12.8 19.2l-243.2 25.6c-9.6 0-16-6.4-19.2-12.8-3.2-12.8 3.2-19.2 12.8-19.2z" />
466
+ <glyph unicode="&#xeac8;" glyph-name="sync-cloud" d="M777.6 768c-6.4 0-9.6 3.2-12.8 9.6-48 102.4-153.6 166.4-265.6 166.4s-217.6-67.2-265.6-166.4c0-3.2-3.2-9.6-9.6-9.6-128-19.2-224-131.2-224-262.4 0-73.6 32-147.2 89.6-198.4 35.2-32 92.8-32 128 3.2l179.2 179.2 51.2-51.2c9.6-9.6 19.2-12.8 32-12.8s22.4 3.2 32 12.8c9.6 9.6 12.8 19.2 12.8 32v124.8c0 25.6-19.2 44.8-44.8 44.8h-124.8c-19.2 0-35.2-9.6-41.6-28.8-6.4-16-3.2-35.2 9.6-51.2l51.2-51.2-182.4-169.6c-22.4-22.4-60.8-25.6-83.2-3.2-48 41.6-76.8 105.6-76.8 172.8 0 112 86.4 211.2 198.4 227.2 16 3.2 28.8 12.8 38.4 25.6 41.6 89.6 134.4 150.4 236.8 150.4 99.2 0 192-57.6 236.8-147.2 6.4-16 19.2-25.6 35.2-25.6 48-6.4 211.2-44.8 217.6-224 3.2-60.8-19.2-118.4-64-163.2-44.8-48-108.8-73.6-172.8-73.6h-278.4c-25.6 0-48-9.6-67.2-28.8l-147.2-147.2-54.4 54.4c-9.6 9.6-19.2 12.8-32 12.8-25.6 0-44.8-19.2-44.8-44.8v-124.8c0-25.6 19.2-44.8 44.8-44.8h124.8c19.2 0 35.2 9.6 41.6 28.8 6.4 16 3.2 35.2-9.6 51.2l-48 41.6 147.2 147.2c12.8 12.8 25.6 19.2 44.8 19.2h275.2c73.6 0 144 32 195.2 83.2 48 51.2 73.6 118.4 70.4 188.8-6.4 201.6-188.8 246.4-243.2 252.8zM342.4 604.8c0 3.2 3.2 9.6 12.8 9.6h124.8c6.4 0 12.8-6.4 12.8-12.8v-124.8c0-6.4-3.2-9.6-3.2-9.6-3.2-3.2-6.4-3.2-9.6-3.2s-6.4 0-9.6 3.2l-124.8 124.8c-6.4 6.4-3.2 12.8-3.2 12.8zM316.8-9.6c0-3.2-3.2-9.6-12.8-9.6h-124.8c-6.4 0-12.8 6.4-12.8 12.8v124.8c0 9.6 9.6 12.8 12.8 12.8s6.4 0 9.6-3.2l124.8-124.8c6.4-3.2 3.2-9.6 3.2-12.8z" />
467
+ <glyph unicode="&#xeac9;" glyph-name="sync" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512-32c-265.6 0-480 214.4-480 480s214.4 480 480 480 480-214.4 480-480-214.4-480-480-480zM755.2 368c-9.6 3.2-16 0-19.2-9.6-35.2-92.8-124.8-150.4-224-150.4-124.8 0-227.2 96-240 217.6l121.6-41.6c9.6-3.2 16 3.2 19.2 9.6 3.2 9.6-3.2 16-9.6 19.2l-144 48c-6.4 0-9.6 0-16-3.2-3.2-3.2-6.4-6.4-6.4-12.8 0-150.4 121.6-272 272-272 112 0 211.2 67.2 252.8 172.8 6.4 9.6 3.2 19.2-6.4 22.4zM512 720c-108.8 0-208-67.2-252.8-166.4-3.2-9.6 0-16 9.6-22.4 9.6-3.2 16 0 22.4 9.6 38.4 89.6 124.8 147.2 220.8 147.2 124.8 0 227.2-96 240-217.6l-134.4 51.2c-9.6 3.2-16 0-19.2-9.6s0-16 9.6-19.2l156.8-60.8c3.2 0 3.2 0 6.4 0s6.4 0 9.6 3.2c3.2 3.2 6.4 6.4 6.4 12.8-3.2 150.4-124.8 272-275.2 272z" />
468
+ <glyph unicode="&#xeaca;" glyph-name="sync2" d="M684.8 547.2c9.6 0 16 6.4 16 16s-6.4 16-16 16h-332.8v121.6c0 19.2-12.8 38.4-28.8 44.8-19.2 9.6-41.6 6.4-54.4-9.6l-252.8-252.8c-9.6-9.6-16-22.4-16-35.2s6.4-25.6 12.8-35.2l262.4-262.4c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-262.4 262.4c-3.2 3.2-6.4 9.6-6.4 12.8s3.2 9.6 6.4 12.8l252.8 252.8c6.4 6.4 16 3.2 19.2 3.2s9.6-6.4 9.6-16v-137.6c0-9.6 6.4-16 16-16h348.8zM739.2 752c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l268.8-268.8c3.2-3.2 6.4-6.4 6.4-12.8 0-3.2-3.2-9.6-6.4-12.8l-252.8-252.8c-6.4-6.4-16-3.2-19.2-3.2s-9.6 3.2-9.6 16v137.6c0 9.6-6.4 16-16 16h-339.2c-9.6 0-16-6.4-16-16s6.4-16 16-16h323.2v-121.6c0-19.2 12.8-38.4 28.8-44.8 6.4-3.2 12.8-3.2 19.2-3.2 12.8 0 25.6 6.4 35.2 16l252.8 252.8c9.6 9.6 12.8 22.4 12.8 35.2s-6.4 25.6-12.8 35.2l-268.8 265.6z" />
469
+ <glyph unicode="&#xeacb;" glyph-name="table-lamp2" d="M115.2 345.6h380.8v-252.8h-102.4c-54.4 0-96-41.6-96-96v-44.8c0-9.6 6.4-16 16-16h396.8c9.6 0 16 6.4 16 16v44.8c0 54.4-41.6 96-96 96h-102.4v252.8h380.8c35.2 0 64 28.8 64 64v70.4c3.2 252.8-188.8 464-428.8 480-268.8 16-496-198.4-496-464v-86.4c0-35.2 32-64 67.2-64zM694.4-3.2v-28.8h-364.8v28.8c0 35.2 28.8 64 64 64h236.8c35.2 0 64-28.8 64-64zM80 496c0 240 195.2 432 432 432 9.6 0 19.2 0 28.8 0 224-16 403.2-211.2 403.2-444.8v-70.4c0-19.2-16-32-32-32h-796.8c-19.2 0-32 16-32 32v83.2z" />
470
+ <glyph unicode="&#xeacc;" glyph-name="target2" d="M512 291.2c86.4 0 156.8 70.4 156.8 156.8s-70.4 156.8-156.8 156.8-156.8-70.4-156.8-156.8 70.4-156.8 156.8-156.8zM512 572.8c70.4 0 124.8-57.6 124.8-124.8s-57.6-124.8-124.8-124.8-124.8 57.6-124.8 124.8 54.4 124.8 124.8 124.8zM16 432h57.6c9.6-227.2 192-412.8 422.4-422.4v-57.6c0-9.6 6.4-16 16-16s16 6.4 16 16v57.6c227.2 9.6 412.8 192 422.4 422.4h57.6c9.6 0 16 6.4 16 16s-6.4 16-16 16h-57.6c-9.6 227.2-192 412.8-422.4 422.4v57.6c0 9.6-6.4 16-16 16s-16-6.4-16-16v-57.6c-227.2-9.6-412.8-195.2-422.4-422.4h-57.6c-9.6 0-16-6.4-16-16s6.4-16 16-16zM512 854.4c224 0 406.4-182.4 406.4-406.4s-182.4-406.4-406.4-406.4-406.4 182.4-406.4 406.4 182.4 406.4 406.4 406.4z" />
471
+ <glyph unicode="&#xeacd;" glyph-name="timeline-spiral" d="M352 448h342.4c112 0 201.6 89.6 201.6 201.6s-89.6 201.6-201.6 201.6h-275.2c-9.6 60.8-60.8 108.8-124.8 108.8-70.4 0-128-57.6-128-128s57.6-128 128-128c64 0 118.4 48 124.8 112h275.2c92.8 0 169.6-76.8 169.6-169.6s-76.8-166.4-169.6-166.4h-342.4c-112 0-201.6-89.6-201.6-201.6s89.6-201.6 201.6-201.6h259.2c9.6-70.4 67.2-128 140.8-128 80 0 144 64 144 144s-64 144-144 144c-73.6 0-134.4-54.4-140.8-128h-259.2c-92.8 0-169.6 76.8-169.6 169.6s76.8 169.6 169.6 169.6zM752 204.8c60.8 0 112-51.2 112-112s-51.2-112-112-112-112 54.4-112 115.2 51.2 108.8 112 108.8z" />
472
+ <glyph unicode="&#xeace;" glyph-name="tv" d="M944 899.2h-851.2c-48 0-86.4-38.4-86.4-86.4v-569.6c0-48 38.4-86.4 86.4-86.4h851.2c48 0 86.4 38.4 86.4 86.4v569.6c0 48-38.4 86.4-86.4 86.4zM998.4 246.4c0-28.8-25.6-54.4-54.4-54.4h-851.2c-28.8 0-54.4 25.6-54.4 54.4v566.4c0 28.8 25.6 54.4 54.4 54.4h851.2c28.8 0 54.4-25.6 54.4-54.4v-566.4zM355.2-16c44.8 41.6 102.4 64 166.4 64s121.6-22.4 166.4-64c3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c6.4 6.4 6.4 16 0 22.4-51.2 48-118.4 73.6-185.6 73.6-70.4 0-134.4-25.6-185.6-73.6-6.4-6.4-6.4-16 0-22.4-3.2-6.4 6.4-6.4 16-3.2z" />
473
+ <glyph unicode="&#xeacf;" glyph-name="vespa" d="M857.6 934.4h-112c-3.2 0-9.6-3.2-12.8-3.2l-67.2-67.2c-25.6 54.4-86.4 96-153.6 96s-128-41.6-153.6-99.2l-67.2 67.2c-3.2 3.2-6.4 6.4-12.8 6.4h-112c-9.6 0-16-6.4-16-16s6.4-16 16-16h105.6l73.6-73.6c-3.2-12.8-6.4-28.8-6.4-41.6s3.2-25.6 3.2-38.4c-54.4-48-86.4-115.2-86.4-188.8v-323.2c0-80 57.6-144 134.4-153.6v-25.6c0-67.2 54.4-121.6 121.6-121.6s121.6 54.4 121.6 121.6v25.6c76.8 12.8 134.4 76.8 134.4 153.6v323.2c0 67.2-25.6 131.2-73.6 179.2-3.2 3.2-6.4 6.4-12.8 9.6 3.2 12.8 3.2 25.6 3.2 38.4 0 16-3.2 28.8-6.4 41.6l73.6 73.6h105.6c9.6 0 16 6.4 16 16s-6.4 16-16 16zM512 928c76.8 0 140.8-64 140.8-140.8s-64-140.8-140.8-140.8-140.8 64-140.8 140.8 64 140.8 140.8 140.8zM512-32c-48 0-89.6 38.4-89.6 89.6v38.4c0 0 0 0 0 0s0 0 0 0v128c0 48 38.4 89.6 89.6 89.6s89.6-38.4 89.6-89.6v-128c0 0 0 0 0 0s0 0 0 0v-38.4c0-51.2-41.6-89.6-89.6-89.6zM736 560v-323.2c0-60.8-44.8-112-102.4-121.6v108.8c0 67.2-54.4 121.6-121.6 121.6s-121.6-54.4-121.6-121.6v-108.8c-57.6 12.8-102.4 60.8-102.4 121.6v323.2c0 60.8 22.4 115.2 64 156.8 25.6-60.8 86.4-102.4 156.8-102.4s131.2 41.6 156.8 102.4c44.8-41.6 70.4-99.2 70.4-156.8z" />
474
+ <glyph unicode="&#xead0;" glyph-name="happyaddons" d="M915.2 710.4c9.6 0 16 0 25.6 0 16 0 28.8 16 25.6 32 0 16-16 28.8-32 25.6-112-9.6-217.6 60.8-249.6 169.6-3.2 16-19.2 22.4-35.2 19.2s-22.4-19.2-19.2-35.2c38.4-124.8 156.8-211.2 284.8-211.2zM960 604.8c-9.6 19.2-28.8 32-51.2 32-28.8 0-60.8 0-89.6 6.4-128 25.6-224 115.2-268.8 227.2-9.6 19.2-28.8 35.2-51.2 32-233.6-3.2-441.6-179.2-470.4-425.6-25.6-227.2 115.2-444.8 332.8-515.2 278.4-92.8 566.4 80 624 361.6 22.4 99.2 9.6 195.2-25.6 281.6zM588.8 569.6c3.2 16 19.2 25.6 35.2 22.4l118.4-25.6c16-3.2 25.6-19.2 22.4-35.2s-19.2-25.6-35.2-22.4l-118.4 25.6c-12.8 3.2-25.6 19.2-22.4 35.2zM323.2 608c6.4 35.2 44.8 60.8 80 51.2 35.2-6.4 60.8-44.8 51.2-80-6.4-35.2-44.8-60.8-80-51.2-32 6.4-57.6 41.6-51.2 80zM790.4 268.8c-60.8-140.8-220.8-220.8-374.4-172.8-115.2 38.4-198.4 144-208 262.4-3.2 32 25.6 54.4 54.4 51.2l492.8-80c28.8 0 44.8-32 35.2-60.8zM547.2 230.4c-60.8 12.8-118.4-9.6-150.4-54.4-6.4-9.6-3.2-22.4 6.4-28.8 19.2-9.6 38.4-16 60.8-22.4 57.6-12.8 118.4-3.2 163.2 22.4 9.6 6.4 12.8 19.2 6.4 28.8-22.4 28.8-51.2 48-86.4 54.4z" />
475
  </font></defs></svg>
assets/fonts/{Happy-Addons-Icon.eot → happy-icons.ttf} RENAMED
Binary file
assets/fonts/{Happy-Addons-Icon.ttf → happy-icons.woff} RENAMED
Binary file
assets/fonts/nunito/Nunito-Bold.woff ADDED
Binary file
assets/fonts/nunito/Nunito-Bold.woff2 ADDED
Binary file
assets/fonts/nunito/Nunito-Regular.woff ADDED
Binary file
assets/fonts/nunito/Nunito-Regular.woff2 ADDED
Binary file
assets/fonts/nunito/OFL.txt ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright 2014 The Nunito Project Authors (contact@sansoxygen.com)
2
+
3
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
+ This license is copied below, and is also available with a FAQ at:
5
+ http://scripts.sil.org/OFL
6
+
7
+
8
+ -----------------------------------------------------------
9
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
+ -----------------------------------------------------------
11
+
12
+ PREAMBLE
13
+ The goals of the Open Font License (OFL) are to stimulate worldwide
14
+ development of collaborative font projects, to support the font creation
15
+ efforts of academic and linguistic communities, and to provide a free and
16
+ open framework in which fonts may be shared and improved in partnership
17
+ with others.
18
+
19
+ The OFL allows the licensed fonts to be used, studied, modified and
20
+ redistributed freely as long as they are not sold by themselves. The
21
+ fonts, including any derivative works, can be bundled, embedded,
22
+ redistributed and/or sold with any software provided that any reserved
23
+ names are not used by derivative works. The fonts and derivatives,
24
+ however, cannot be released under any other type of license. The
25
+ requirement for fonts to remain under this license does not apply
26
+ to any document created using the fonts or their derivatives.
27
+
28
+ DEFINITIONS
29
+ "Font Software" refers to the set of files released by the Copyright
30
+ Holder(s) under this license and clearly marked as such. This may
31
+ include source files, build scripts and documentation.
32
+
33
+ "Reserved Font Name" refers to any names specified as such after the
34
+ copyright statement(s).
35
+
36
+ "Original Version" refers to the collection of Font Software components as
37
+ distributed by the Copyright Holder(s).
38
+
39
+ "Modified Version" refers to any derivative made by adding to, deleting,
40
+ or substituting -- in part or in whole -- any of the components of the
41
+ Original Version, by changing formats or by porting the Font Software to a
42
+ new environment.
43
+
44
+ "Author" refers to any designer, engineer, programmer, technical
45
+ writer or other person who contributed to the Font Software.
46
+
47
+ PERMISSION & CONDITIONS
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
+ redistribute, and sell modified and unmodified copies of the Font
51
+ Software, subject to the following conditions:
52
+
53
+ 1) Neither the Font Software nor any of its individual components,
54
+ in Original or Modified Versions, may be sold by itself.
55
+
56
+ 2) Original or Modified Versions of the Font Software may be bundled,
57
+ redistributed and/or sold with any software, provided that each copy
58
+ contains the above copyright notice and this license. These can be
59
+ included either as stand-alone text files, human-readable headers or
60
+ in the appropriate machine-readable metadata fields within text or
61
+ binary files as long as those fields can be easily viewed by the user.
62
+
63
+ 3) No Modified Version of the Font Software may use the Reserved Font
64
+ Name(s) unless explicit written permission is granted by the corresponding
65
+ Copyright Holder. This restriction only applies to the primary font name as
66
+ presented to the users.
67
+
68
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
+ Software shall not be used to promote, endorse or advertise any
70
+ Modified Version, except to acknowledge the contribution(s) of the
71
+ Copyright Holder(s) and the Author(s) or with their explicit written
72
+ permission.
73
+
74
+ 5) The Font Software, modified or unmodified, in part or in whole,
75
+ must be distributed entirely under this license, and must not be
76
+ distributed under any other license. The requirement for fonts to
77
+ remain under this license does not apply to any document created
78
+ using the Font Software.
79
+
80
+ TERMINATION
81
+ This license becomes null and void if any of the above conditions are
82
+ not met.
83
+
84
+ DISCLAIMER
85
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
+ OTHER DEALINGS IN THE FONT SOFTWARE.
assets/fonts/nunito/nunito-regular-webfont.woff ADDED
Binary file
assets/fonts/nunito/nunito-regular-webfont.woff2 ADDED
Binary file
assets/fonts/nunito/stylesheet.css ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @font-face {
2
+ font-family: 'Nunito';
3
+ src: url('Nunito-Bold.woff2') format('woff2'),
4
+ url('Nunito-Bold.woff') format('woff');
5
+ font-weight: bold;
6
+ font-style: normal;
7
+ }
8
+
9
+ @font-face {
10
+ font-family: 'Nunito';
11
+ src: url('Nunito-Regular.woff2') format('woff2'),
12
+ url('Nunito-Regular.woff') format('woff');
13
+ font-weight: normal;
14
+ font-style: normal;
15
+ }
16
+
assets/fonts/style.css CHANGED
@@ -1,10 +1,10 @@
1
  @font-face {
2
  font-family: 'Happy Icons';
3
- src: url('./Happy-Addons-Icon.eot?vf4zr6');
4
- src: url('./Happy-Addons-Icon.eot?vf4zr6#iefix') format('embedded-opentype'),
5
- url('./Happy-Addons-Icon.ttf?vf4zr6') format('truetype'),
6
- url('./Happy-Addons-Icon.woff?vf4zr6') format('woff'),
7
- url('./Happy-Addons-Icon.svg?vf4zr6#Happy-Addons-Icon') format('svg');
8
  font-weight: normal;
9
  font-style: normal;
10
  }
@@ -1222,3 +1222,201 @@
1222
  .hm-youtube:before {
1223
  content: "\ea8e";
1224
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  @font-face {
2
  font-family: 'Happy Icons';
3
+ src: url('./happy-icons.eot?vf4zr6');
4
+ src: url('./happy-icons.eot?vf4zr6#iefix') format('embedded-opentype'),
5
+ url('./happy-icons.ttf?vf4zr6') format('truetype'),
6
+ url('./happy-icons.woff?vf4zr6') format('woff'),
7
+ url('./happy-icons.svg?vf4zr6#happy-icons') format('svg');
8
  font-weight: normal;
9
  font-style: normal;
10
  }
1222
  .hm-youtube:before {
1223
  content: "\ea8e";
1224
  }
1225
+ .hm-centralize:before {
1226
+ content: "\ea8f";
1227
+ }
1228
+ .hm-add-section:before {
1229
+ content: "\ea90";
1230
+ }
1231
+ .hm-advanced-heading:before {
1232
+ content: "\ea91";
1233
+ }
1234
+ .hm-air-baloon:before {
1235
+ content: "\ea92";
1236
+ }
1237
+ .hm-arrow2:before {
1238
+ content: "\ea93";
1239
+ }
1240
+ .hm-bicycle2:before {
1241
+ content: "\ea94";
1242
+ }
1243
+ .hm-bond2:before {
1244
+ content: "\ea95";
1245
+ }
1246
+ .hm-bond3:before {
1247
+ content: "\ea96";
1248
+ }
1249
+ .hm-bond4:before {
1250
+ content: "\ea97";
1251
+ }
1252
+ .hm-calendar2:before {
1253
+ content: "\ea98";
1254
+ }
1255
+ .hm-carousel:before {
1256
+ content: "\ea99";
1257
+ }
1258
+ .hm-code-page:before {
1259
+ content: "\ea9a";
1260
+ }
1261
+ .hm-comment-circle:before {
1262
+ content: "\ea9b";
1263
+ }
1264
+ .hm-comment-square:before {
1265
+ content: "\ea9c";
1266
+ }
1267
+ .hm-copy:before {
1268
+ content: "\ea9d";
1269
+ }
1270
+ .hm-cursor:before {
1271
+ content: "\ea9e";
1272
+ }
1273
+ .hm-envelop2:before {
1274
+ content: "\ea9f";
1275
+ }
1276
+ .hm-factory:before {
1277
+ content: "\eaa0";
1278
+ }
1279
+ .hm-finger-point:before {
1280
+ content: "\eaa1";
1281
+ }
1282
+ .hm-finger-swipe-both:before {
1283
+ content: "\eaa2";
1284
+ }
1285
+ .hm-finger-swipe-corner:before {
1286
+ content: "\eaa3";
1287
+ }
1288
+ .hm-finger-swipe-left:before {
1289
+ content: "\eaa4";
1290
+ }
1291
+ .hm-finger-swipe-up:before {
1292
+ content: "\eaa5";
1293
+ }
1294
+ .hm-finger-swipe:before {
1295
+ content: "\eaa6";
1296
+ }
1297
+ .hm-finger-touch:before {
1298
+ content: "\eaa7";
1299
+ }
1300
+ .hm-folder-network:before {
1301
+ content: "\eaa8";
1302
+ }
1303
+ .hm-folder-sync:before {
1304
+ content: "\eaa9";
1305
+ }
1306
+ .hm-graph-bar2:before {
1307
+ content: "\eaaa";
1308
+ }
1309
+ .hm-graph-pie2:before {
1310
+ content: "\eaab";
1311
+ }
1312
+ .hm-heading-h:before {
1313
+ content: "\eaac";
1314
+ }
1315
+ .hm-heading-html:before {
1316
+ content: "\eaad";
1317
+ }
1318
+ .hm-heart:before {
1319
+ content: "\eaae";
1320
+ }
1321
+ .hm-home2:before {
1322
+ content: "\eaaf";
1323
+ }
1324
+ .hm-indent-left:before {
1325
+ content: "\eab0";
1326
+ }
1327
+ .hm-indent-right:before {
1328
+ content: "\eab1";
1329
+ }
1330
+ .hm-lock-close:before {
1331
+ content: "\eab2";
1332
+ }
1333
+ .hm-lock-open:before {
1334
+ content: "\eab3";
1335
+ }
1336
+ .hm-map-pointer-add:before {
1337
+ content: "\eab4";
1338
+ }
1339
+ .hm-map-pointer-check:before {
1340
+ content: "\eab5";
1341
+ }
1342
+ .hm-map-pointer-delete:before {
1343
+ content: "\eab6";
1344
+ }
1345
+ .hm-map-pointer2:before {
1346
+ content: "\eab7";
1347
+ }
1348
+ .hm-map:before {
1349
+ content: "\eab8";
1350
+ }
1351
+ .hm-navigation1:before {
1352
+ content: "\eab9";
1353
+ }
1354
+ .hm-navigation2:before {
1355
+ content: "\eaba";
1356
+ }
1357
+ .hm-page-export:before {
1358
+ content: "\eabb";
1359
+ }
1360
+ .hm-page-sync:before {
1361
+ content: "\eabc";
1362
+ }
1363
+ .hm-piramid:before {
1364
+ content: "\eabd";
1365
+ }
1366
+ .hm-plug:before {
1367
+ content: "\eabe";
1368
+ }
1369
+ .hm-point-marker:before {
1370
+ content: "\eabf";
1371
+ }
1372
+ .hm-quote2:before {
1373
+ content: "\eac0";
1374
+ }
1375
+ .hm-refresh-check:before {
1376
+ content: "\eac1";
1377
+ }
1378
+ .hm-refresh:before {
1379
+ content: "\eac2";
1380
+ }
1381
+ .hm-refresh2:before {
1382
+ content: "\eac3";
1383
+ }
1384
+ .hm-scrolling-image:before {
1385
+ content: "\eac4";
1386
+ }
1387
+ .hm-sign-turn-right:before {
1388
+ content: "\eac5";
1389
+ }
1390
+ .hm-speedometer:before {
1391
+ content: "\eac6";
1392
+ }
1393
+ .hm-sticky:before {
1394
+ content: "\eac7";
1395
+ }
1396
+ .hm-sync-cloud:before {
1397
+ content: "\eac8";
1398
+ }
1399
+ .hm-sync:before {
1400
+ content: "\eac9";
1401
+ }
1402
+ .hm-sync2:before {
1403
+ content: "\eaca";
1404
+ }
1405
+ .hm-table-lamp2:before {
1406
+ content: "\eacb";
1407
+ }
1408
+ .hm-target2:before {
1409
+ content: "\eacc";
1410
+ }
1411
+ .hm-timeline-spiral:before {
1412
+ content: "\eacd";
1413
+ }
1414
+ .hm-tv:before {
1415
+ content: "\eace";
1416
+ }
1417
+ .hm-vespa:before {
1418
+ content: "\eacf";
1419
+ }
1420
+ .hm-happyaddons:before {
1421
+ content: "\ead0";
1422
+ }
assets/fonts/style.min.css CHANGED
@@ -1 +1 @@
1
- @font-face{font-family:'Happy Icons';src:url(Happy-Addons-Icon.eot?vf4zr6);src:url(Happy-Addons-Icon.eot?vf4zr6#iefix) format('embedded-opentype'),url(Happy-Addons-Icon.ttf?vf4zr6) format('truetype'),url(Happy-Addons-Icon.woff?vf4zr6) format('woff'),url(Happy-Addons-Icon.svg?vf4zr6#Happy-Addons-Icon) format('svg');font-weight:400;font-style:normal}.fashm,.hm{font-family:'Happy Icons'!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.hm-3d-rotate:before{content:"\e900"}.hm-degree:before{content:"\e901"}.hm-accordion-horizontal:before{content:"\e902"}.hm-accordion-vertical:before{content:"\e903"}.hm-alarm-clock:before{content:"\e904"}.hm-alien-gun:before{content:"\e905"}.hm-alien:before{content:"\e906"}.hm-anchor:before{content:"\e907"}.hm-android:before{content:"\e908"}.hm-angle-down:before{content:"\e909"}.hm-angle-left:before{content:"\e90a"}.hm-angle-right:before{content:"\e90b"}.hm-angle-up:before{content:"\e90c"}.hm-apple:before{content:"\e90d"}.hm-arrow-left:before{content:"\e90e"}.hm-arrow-right:before{content:"\e90f"}.hm-arrow-zoom-out:before{content:"\e910"}.hm-arrow-corner:before{content:"\e911"}.hm-arrow-down:before{content:"\e912"}.hm-arrow-left1:before{content:"\e913"}.hm-arrow-right1:before{content:"\e914"}.hm-arrow-up:before{content:"\e915"}.hm-article:before{content:"\e916"}.hm-avatar-man:before{content:"\e917"}.hm-avatar-woman:before{content:"\e918"}.hm-badge1:before{content:"\e919"}.hm-badge2:before{content:"\e91a"}.hm-badge3:before{content:"\e91b"}.hm-bamboo:before{content:"\e91c"}.hm-basketball:before{content:"\e91d"}.hm-battery:before{content:"\e91e"}.hm-beach-seat:before{content:"\e91f"}.hm-bell:before{content:"\e920"}.hm-bicycle:before{content:"\e921"}.hm-blog-content:before{content:"\e922"}.hm-bluetooth:before{content:"\e923"}.hm-board:before{content:"\e924"}.hm-body:before{content:"\e925"}.hm-bomb:before{content:"\e926"}.hm-bond-hand:before{content:"\e927"}.hm-bond:before{content:"\e928"}.hm-bonsai:before{content:"\e929"}.hm-book:before{content:"\e92a"}.hm-bowl:before{content:"\e92b"}.hm-brick-wall:before{content:"\e92c"}.hm-brush-paint:before{content:"\e92d"}.hm-brush-roll:before{content:"\e92e"}.hm-brush:before{content:"\e92f"}.hm-bug:before{content:"\e930"}.hm-bulb:before{content:"\e931"}.hm-calculation:before{content:"\e932"}.hm-calendar:before{content:"\e933"}.hm-camera:before{content:"\e934"}.hm-candle:before{content:"\e935"}.hm-candles:before{content:"\e936"}.hm-car:before{content:"\e937"}.hm-card:before{content:"\e938"}.hm-caret-down:before{content:"\e939"}.hm-caret-fill-down:before{content:"\e93a"}.hm-caret-fill-left:before{content:"\e93b"}.hm-caret-fill-right:before{content:"\e93c"}.hm-caret-fill-up:before{content:"\e93d"}.hm-caret-left:before{content:"\e93e"}.hm-caret-right:before{content:"\e93f"}.hm-caret-up:before{content:"\e940"}.hm-carousal:before{content:"\e941"}.hm-cart-empty:before{content:"\e942"}.hm-cart-full:before{content:"\e943"}.hm-caution:before{content:"\e944"}.hm-chair:before{content:"\e945"}.hm-chair2:before{content:"\e946"}.hm-chat-bubble-single:before{content:"\e947"}.hm-chat-bubble:before{content:"\e948"}.hm-cheese:before{content:"\e949"}.hm-chef-cap:before{content:"\e94a"}.hm-clip-board:before{content:"\e94b"}.hm-clip:before{content:"\e94c"}.hm-cloud-down:before{content:"\e94d"}.hm-cloud-up:before{content:"\e94e"}.hm-cloud:before{content:"\e94f"}.hm-code-browser:before{content:"\e950"}.hm-code-clean:before{content:"\e951"}.hm-code:before{content:"\e952"}.hm-cog:before{content:"\e953"}.hm-color-card:before{content:"\e954"}.hm-color-plate:before{content:"\e955"}.hm-compass-math:before{content:"\e956"}.hm-compass:before{content:"\e957"}.hm-corner:before{content:"\e958"}.hm-crop:before{content:"\e959"}.hm-cross-circle:before{content:"\e95a"}.hm-cross-game:before{content:"\e95b"}.hm-cross-gap:before{content:"\e95c"}.hm-cross:before{content:"\e95d"}.hm-crown:before{content:"\e95e"}.hm-cube:before{content:"\e95f"}.hm-cup-coffee:before{content:"\e960"}.hm-cup:before{content:"\e961"}.hm-currency-paper:before{content:"\e962"}.hm-dashboard:before{content:"\e963"}.hm-delivery-van:before{content:"\e964"}.hm-diamond-ring:before{content:"\e965"}.hm-direction-both:before{content:"\e966"}.hm-direction-right:before{content:"\e967"}.hm-disable-person:before{content:"\e968"}.hm-disc:before{content:"\e969"}.hm-dislike:before{content:"\e96a"}.hm-dollar-on-hand:before{content:"\e96b"}.hm-door-path:before{content:"\e96c"}.hm-Download-circle:before{content:"\e96d"}.hm-download:before{content:"\e96e"}.hm-drag-inside:before{content:"\e96f"}.hm-drag-outside:before{content:"\e970"}.hm-drag:before{content:"\e971"}.hm-drawer:before{content:"\e972"}.hm-dribbble:before{content:"\e973"}.hm-dropper:before{content:"\e974"}.hm-egg-fry:before{content:"\e975"}.hm-ellipsis-fill-h:before{content:"\e976"}.hm-ellipsis-fill-v:before{content:"\e977"}.hm-ellipsis-horizontal:before{content:"\e978"}.hm-ellipsis-vertical:before{content:"\e979"}.hm-emo-normal:before{content:"\e97a"}.hm-emo-sad:before{content:"\e97b"}.hm-emo-smile:before{content:"\e97c"}.hm-envelop:before{content:"\e97d"}.hm-facebook:before{content:"\e97e"}.hm-fancy-futton:before{content:"\e97f"}.hm-feeder:before{content:"\e980"}.hm-file-cabinet:before{content:"\e981"}.hm-file-rotate:before{content:"\e982"}.hm-file:before{content:"\e983"}.hm-files:before{content:"\e984"}.hm-film-roll:before{content:"\e985"}.hm-film:before{content:"\e986"}.hm-finger-index:before{content:"\e987"}.hm-finger-print:before{content:"\e988"}.hm-fire-flame:before{content:"\e989"}.hm-flag:before{content:"\e98a"}.hm-flip-card1:before{content:"\e98b"}.hm-flip-card2:before{content:"\e98c"}.hm-folder-network:before{content:"\e98d"}.hm-folder:before{content:"\e98e"}.hm-football:before{content:"\e98f"}.hm-footer:before{content:"\e990"}.hm-form:before{content:"\e991"}.hm-forward:before{content:"\e992"}.hm-fountain-pen:before{content:"\e993"}.hm-gender-female:before{content:"\e994"}.hm-gender-male:before{content:"\e995"}.hm-gender-sign:before{content:"\e996"}.hm-gender:before{content:"\e997"}.hm-ghost:before{content:"\e998"}.hm-gift-box:before{content:"\e999"}.hm-globe1:before{content:"\e99a"}.hm-globe2:before{content:"\e99b"}.hm-globe3:before{content:"\e99c"}.hm-globe4:before{content:"\e99d"}.hm-google:before{content:"\e99e"}.hm-graduate-cap:before{content:"\e99f"}.hm-graph-bar:before{content:"\e9a0"}.hm-graph-pie:before{content:"\e9a1"}.hm-graph:before{content:"\e9a2"}.hm-grid-even:before{content:"\e9a3"}.hm-grid-masonry:before{content:"\e9a4"}.hm-grid-twist:before{content:"\e9a5"}.hm-grid:before{content:"\e9a6"}.hm-group:before{content:"\e9a7"}.hm-hand-mike:before{content:"\e9a8"}.hm-hand-watch:before{content:"\e9a9"}.hm-hand:before{content:"\e9aa"}.hm-header:before{content:"\e9ab"}.hm-headphone:before{content:"\e9ac"}.hm-headset:before{content:"\e9ad"}.hm-heart-beat:before{content:"\e9ae"}.hm-hexa:before{content:"\e9af"}.hm-highlighter:before{content:"\e9b0"}.hm-home:before{content:"\e9b1"}.hm-hot-spot:before{content:"\e9b2"}.hm-hotdog:before{content:"\e9b3"}.hm-ice-cream:before{content:"\e9b4"}.hm-icon-box:before{content:"\e9b5"}.hm-imac:before{content:"\e9b6"}.hm-image-compare:before{content:"\e9b7"}.hm-image-slider:before{content:"\e9b8"}.hm-image:before{content:"\e9b9"}.hm-inbox:before{content:"\e9ba"}.hm-infinity:before{content:"\e9bb"}.hm-info:before{content:"\e9bc"}.hm-injection:before{content:"\e9bd"}.hm-instagram:before{content:"\e9be"}.hm-jar-chemical:before{content:"\e9bf"}.hm-key:before{content:"\e9c0"}.hm-language-change:before{content:"\e9c1"}.hm-laptop:before{content:"\e9c2"}.hm-layer:before{content:"\e9c3"}.hm-lens:before{content:"\e9c4"}.hm-like:before{content:"\e9c5"}.hm-line-graph-pointed:before{content:"\e9c6"}.hm-link:before{content:"\e9c7"}.hm-linkedin:before{content:"\e9c8"}.hm-linux:before{content:"\e9c9"}.hm-list-2:before{content:"\e9ca"}.hm-list-group:before{content:"\e9cb"}.hm-list:before{content:"\e9cc"}.hm-location-pointer:before{content:"\e9cd"}.hm-lock:before{content:"\e9ce"}.hm-logo-carousel:before{content:"\e9cf"}.hm-logo-grid:before{content:"\e9d0"}.hm-lotus:before{content:"\e9d1"}.hm-love:before{content:"\e9d2"}.hm-madel:before{content:"\e9d3"}.hm-magic-wand:before{content:"\e9d4"}.hm-magnet:before{content:"\e9d5"}.hm-mail-open:before{content:"\e9d6"}.hm-man-range:before{content:"\e9d7"}.hm-map-marker:before{content:"\e9d8"}.hm-map-pointer:before{content:"\e9d9"}.hm-measurement:before{content:"\e9da"}.hm-memory:before{content:"\e9db"}.hm-menu-price:before{content:"\e9dc"}.hm-micro-chip:before{content:"\e9dd"}.hm-microphone1:before{content:"\e9de"}.hm-microphone2:before{content:"\e9df"}.hm-mobile:before{content:"\e9e0"}.hm-money-bag:before{content:"\e9e1"}.hm-money:before{content:"\e9e2"}.hm-monitor:before{content:"\e9e3"}.hm-mouse:before{content:"\e9e4"}.hm-muscle:before{content:"\e9e5"}.hm-net:before{content:"\e9e6"}.hm-network1:before{content:"\e9e7"}.hm-network2:before{content:"\e9e8"}.hm-newspaper:before{content:"\e9e9"}.hm-nuclear-circle:before{content:"\e9ea"}.hm-office-file:before{content:"\e9eb"}.hm-pacman:before{content:"\e9ec"}.hm-paper-fold:before{content:"\e9ed"}.hm-paper-plane-alt:before{content:"\e9ee"}.hm-paper-plane:before{content:"\e9ef"}.hm-pause:before{content:"\e9f0"}.hm-pen-head:before{content:"\e9f1"}.hm-pen-pencil:before{content:"\e9f2"}.hm-pen-scale:before{content:"\e9f3"}.hm-pen-paper:before{content:"\e9f4"}.hm-pen:before{content:"\e9f5"}.hm-pencil:before{content:"\e9f6"}.hm-pendrive:before{content:"\e9f7"}.hm-phone:before{content:"\e9f8"}.hm-pillar:before{content:"\e9f9"}.hm-pin-man-range:before{content:"\e9fa"}.hm-pin-man:before{content:"\e9fb"}.hm-pin:before{content:"\e9fc"}.hm-plane:before{content:"\e9fd"}.hm-play-end:before{content:"\e9fe"}.hm-play-next:before{content:"\e9ff"}.hm-play-previous:before{content:"\ea00"}.hm-play-start:before{content:"\ea01"}.hm-play-button:before{content:"\ea02"}.hm-play-store:before{content:"\ea03"}.hm-play:before{content:"\ea04"}.hm-playing-card:before{content:"\ea05"}.hm-plus-box:before{content:"\ea06"}.hm-plus-circle:before{content:"\ea07"}.hm-plus-gap:before{content:"\ea08"}.hm-plus-open:before{content:"\ea09"}.hm-popup:before{content:"\ea0a"}.hm-power:before{content:"\ea0b"}.hm-printer:before{content:"\ea0c"}.hm-progress-bar:before{content:"\ea0d"}.hm-promo:before{content:"\ea0e"}.hm-pulse:before{content:"\ea0f"}.hm-puzzle:before{content:"\ea10"}.hm-question:before{content:"\ea11"}.hm-quote:before{content:"\ea12"}.hm-radar:before{content:"\ea13"}.hm-radiation:before{content:"\ea14"}.hm-reading-glass-alt:before{content:"\ea15"}.hm-reading-glass:before{content:"\ea16"}.hm-recycle-bin:before{content:"\ea17"}.hm-recycle:before{content:"\ea18"}.hm-refresh-time:before{content:"\ea19"}.hm-reply:before{content:"\ea1a"}.hm-responsive-device:before{content:"\ea1b"}.hm-review:before{content:"\ea1c"}.hm-rocket1:before{content:"\ea1d"}.hm-rocket2:before{content:"\ea1e"}.hm-rss:before{content:"\ea1f"}.hm-safety-cap:before{content:"\ea20"}.hm-safety-kit:before{content:"\ea21"}.hm-sand-watch:before{content:"\ea22"}.hm-scale:before{content:"\ea23"}.hm-scanner:before{content:"\ea24"}.hm-scissor:before{content:"\ea25"}.hm-screen:before{content:"\ea26"}.hm-search:before{content:"\ea27"}.hm-seo:before{content:"\ea28"}.hm-server-network:before{content:"\ea29"}.hm-server:before{content:"\ea2a"}.hm-share:before{content:"\ea2b"}.hm-shield:before{content:"\ea2c"}.hm-ship:before{content:"\ea2d"}.hm-shirt:before{content:"\ea2e"}.hm-shopping-bag1:before{content:"\ea2f"}.hm-shopping-bag2:before{content:"\ea30"}.hm-shopping-bag3:before{content:"\ea31"}.hm-shopping-bag4:before{content:"\ea32"}.hm-shuffle:before{content:"\ea33"}.hm-shutter:before{content:"\ea34"}.hm-sign-in:before{content:"\ea35"}.hm-sign-out:before{content:"\ea36"}.hm-sitemap1:before{content:"\ea37"}.hm-sitemap2:before{content:"\ea38"}.hm-skart:before{content:"\ea39"}.hm-skull:before{content:"\ea3a"}.hm-skyscraper:before{content:"\ea3b"}.hm-slider-doc:before{content:"\ea3c"}.hm-slider-h-range:before{content:"\ea3d"}.hm-slider-image:before{content:"\ea3e"}.hm-slider-range-h:before{content:"\ea3f"}.hm-slider-v-open:before{content:"\ea40"}.hm-slider-video:before{content:"\ea41"}.hm-slider:before{content:"\ea42"}.hm-smart-watch:before{content:"\ea43"}.hm-snow:before{content:"\ea44"}.hm-spa-face:before{content:"\ea45"}.hm-spa-stone-flower:before{content:"\ea46"}.hm-spa-stone:before{content:"\ea47"}.hm-spark:before{content:"\ea48"}.hm-speaker-off:before{content:"\ea49"}.hm-speaker-on:before{content:"\ea4a"}.hm-spoon-fork:before{content:"\ea4b"}.hm-spoon:before{content:"\ea4c"}.hm-star:before{content:"\ea4d"}.hm-step-flow:before{content:"\ea4e"}.hm-steps:before{content:"\ea4f"}.hm-stop-watch:before{content:"\ea50"}.hm-stop:before{content:"\ea51"}.hm-support-call:before{content:"\ea52"}.hm-tab:before{content:"\ea53"}.hm-table-lamp:before{content:"\ea54"}.hm-tablet:before{content:"\ea55"}.hm-tag:before{content:"\ea56"}.hm-target-arrow:before{content:"\ea57"}.hm-target:before{content:"\ea58"}.hm-target1:before{content:"\ea59"}.hm-team-carousel:before{content:"\ea5a"}.hm-team-member:before{content:"\ea5b"}.hm-tennis-ball:before{content:"\ea5c"}.hm-terminal:before{content:"\ea5d"}.hm-testimonial-carousel:before{content:"\ea5e"}.hm-testimonial:before{content:"\ea5f"}.hm-text-animation:before{content:"\ea60"}.hm-theatre:before{content:"\ea61"}.hm-tick-circle:before{content:"\ea62"}.hm-tick:before{content:"\ea63"}.hm-tickets:before{content:"\ea64"}.hm-tie-knot:before{content:"\ea65"}.hm-tie:before{content:"\ea66"}.hm-timeline:before{content:"\ea67"}.hm-toggle:before{content:"\ea68"}.hm-tools:before{content:"\ea69"}.hm-tree-square:before{content:"\ea6a"}.hm-twitter-bird:before{content:"\ea6b"}.hm-twitter:before{content:"\ea6c"}.hm-ufo:before{content:"\ea6d"}.hm-umbralla:before{content:"\ea6e"}.hm-unlock:before{content:"\ea6f"}.hm-up-down:before{content:"\ea70"}.hm-upload:before{content:"\ea71"}.hm-upward-top-right:before{content:"\ea72"}.hm-user-female:before{content:"\ea73"}.hm-user-id:before{content:"\ea74"}.hm-user-male:before{content:"\ea75"}.hm-video-camera:before{content:"\ea76"}.hm-water-drop:before{content:"\ea77"}.hm-weather-cloud-day:before{content:"\ea78"}.hm-weather-cloud:before{content:"\ea79"}.hm-weather-day-rain:before{content:"\ea7a"}.hm-weather-day-snow:before{content:"\ea7b"}.hm-weather-day-windy-rain:before{content:"\ea7c"}.hm-weather-flood:before{content:"\ea7d"}.hm-weather-night-cloud:before{content:"\ea7e"}.hm-weather-rain-alt:before{content:"\ea7f"}.hm-weather-rain:before{content:"\ea80"}.hm-weather-snow:before{content:"\ea81"}.hm-weather-sun-rain:before{content:"\ea82"}.hm-weather-sun:before{content:"\ea83"}.hm-weather-sunny-day:before{content:"\ea84"}.hm-weather-thunder:before{content:"\ea85"}.hm-weather-windy-rain:before{content:"\ea86"}.hm-webcam1:before{content:"\ea87"}.hm-webcam2:before{content:"\ea88"}.hm-weight-scale:before{content:"\ea89"}.hm-windows:before{content:"\ea8a"}.hm-wine-glass2:before{content:"\ea8b"}.hm-wine-glass:before{content:"\ea8c"}.hm-worker-cap:before{content:"\ea8d"}.hm-youtube:before{content:"\ea8e"}
1
+ @font-face{font-family:'Happy Icons';src:url(happy-icons.eot?vf4zr6);src:url(happy-icons.eot?vf4zr6#iefix) format('embedded-opentype'),url(happy-icons.ttf?vf4zr6) format('truetype'),url(happy-icons.woff?vf4zr6) format('woff'),url(happy-icons.svg?vf4zr6#happy-icons) format('svg');font-weight:400;font-style:normal}.fashm,.hm{font-family:'Happy Icons'!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.hm-3d-rotate:before{content:"\e900"}.hm-degree:before{content:"\e901"}.hm-accordion-horizontal:before{content:"\e902"}.hm-accordion-vertical:before{content:"\e903"}.hm-alarm-clock:before{content:"\e904"}.hm-alien-gun:before{content:"\e905"}.hm-alien:before{content:"\e906"}.hm-anchor:before{content:"\e907"}.hm-android:before{content:"\e908"}.hm-angle-down:before{content:"\e909"}.hm-angle-left:before{content:"\e90a"}.hm-angle-right:before{content:"\e90b"}.hm-angle-up:before{content:"\e90c"}.hm-apple:before{content:"\e90d"}.hm-arrow-left:before{content:"\e90e"}.hm-arrow-right:before{content:"\e90f"}.hm-arrow-zoom-out:before{content:"\e910"}.hm-arrow-corner:before{content:"\e911"}.hm-arrow-down:before{content:"\e912"}.hm-arrow-left1:before{content:"\e913"}.hm-arrow-right1:before{content:"\e914"}.hm-arrow-up:before{content:"\e915"}.hm-article:before{content:"\e916"}.hm-avatar-man:before{content:"\e917"}.hm-avatar-woman:before{content:"\e918"}.hm-badge1:before{content:"\e919"}.hm-badge2:before{content:"\e91a"}.hm-badge3:before{content:"\e91b"}.hm-bamboo:before{content:"\e91c"}.hm-basketball:before{content:"\e91d"}.hm-battery:before{content:"\e91e"}.hm-beach-seat:before{content:"\e91f"}.hm-bell:before{content:"\e920"}.hm-bicycle:before{content:"\e921"}.hm-blog-content:before{content:"\e922"}.hm-bluetooth:before{content:"\e923"}.hm-board:before{content:"\e924"}.hm-body:before{content:"\e925"}.hm-bomb:before{content:"\e926"}.hm-bond-hand:before{content:"\e927"}.hm-bond:before{content:"\e928"}.hm-bonsai:before{content:"\e929"}.hm-book:before{content:"\e92a"}.hm-bowl:before{content:"\e92b"}.hm-brick-wall:before{content:"\e92c"}.hm-brush-paint:before{content:"\e92d"}.hm-brush-roll:before{content:"\e92e"}.hm-brush:before{content:"\e92f"}.hm-bug:before{content:"\e930"}.hm-bulb:before{content:"\e931"}.hm-calculation:before{content:"\e932"}.hm-calendar:before{content:"\e933"}.hm-camera:before{content:"\e934"}.hm-candle:before{content:"\e935"}.hm-candles:before{content:"\e936"}.hm-car:before{content:"\e937"}.hm-card:before{content:"\e938"}.hm-caret-down:before{content:"\e939"}.hm-caret-fill-down:before{content:"\e93a"}.hm-caret-fill-left:before{content:"\e93b"}.hm-caret-fill-right:before{content:"\e93c"}.hm-caret-fill-up:before{content:"\e93d"}.hm-caret-left:before{content:"\e93e"}.hm-caret-right:before{content:"\e93f"}.hm-caret-up:before{content:"\e940"}.hm-carousal:before{content:"\e941"}.hm-cart-empty:before{content:"\e942"}.hm-cart-full:before{content:"\e943"}.hm-caution:before{content:"\e944"}.hm-chair:before{content:"\e945"}.hm-chair2:before{content:"\e946"}.hm-chat-bubble-single:before{content:"\e947"}.hm-chat-bubble:before{content:"\e948"}.hm-cheese:before{content:"\e949"}.hm-chef-cap:before{content:"\e94a"}.hm-clip-board:before{content:"\e94b"}.hm-clip:before{content:"\e94c"}.hm-cloud-down:before{content:"\e94d"}.hm-cloud-up:before{content:"\e94e"}.hm-cloud:before{content:"\e94f"}.hm-code-browser:before{content:"\e950"}.hm-code-clean:before{content:"\e951"}.hm-code:before{content:"\e952"}.hm-cog:before{content:"\e953"}.hm-color-card:before{content:"\e954"}.hm-color-plate:before{content:"\e955"}.hm-compass-math:before{content:"\e956"}.hm-compass:before{content:"\e957"}.hm-corner:before{content:"\e958"}.hm-crop:before{content:"\e959"}.hm-cross-circle:before{content:"\e95a"}.hm-cross-game:before{content:"\e95b"}.hm-cross-gap:before{content:"\e95c"}.hm-cross:before{content:"\e95d"}.hm-crown:before{content:"\e95e"}.hm-cube:before{content:"\e95f"}.hm-cup-coffee:before{content:"\e960"}.hm-cup:before{content:"\e961"}.hm-currency-paper:before{content:"\e962"}.hm-dashboard:before{content:"\e963"}.hm-delivery-van:before{content:"\e964"}.hm-diamond-ring:before{content:"\e965"}.hm-direction-both:before{content:"\e966"}.hm-direction-right:before{content:"\e967"}.hm-disable-person:before{content:"\e968"}.hm-disc:before{content:"\e969"}.hm-dislike:before{content:"\e96a"}.hm-dollar-on-hand:before{content:"\e96b"}.hm-door-path:before{content:"\e96c"}.hm-Download-circle:before{content:"\e96d"}.hm-download:before{content:"\e96e"}.hm-drag-inside:before{content:"\e96f"}.hm-drag-outside:before{content:"\e970"}.hm-drag:before{content:"\e971"}.hm-drawer:before{content:"\e972"}.hm-dribbble:before{content:"\e973"}.hm-dropper:before{content:"\e974"}.hm-egg-fry:before{content:"\e975"}.hm-ellipsis-fill-h:before{content:"\e976"}.hm-ellipsis-fill-v:before{content:"\e977"}.hm-ellipsis-horizontal:before{content:"\e978"}.hm-ellipsis-vertical:before{content:"\e979"}.hm-emo-normal:before{content:"\e97a"}.hm-emo-sad:before{content:"\e97b"}.hm-emo-smile:before{content:"\e97c"}.hm-envelop:before{content:"\e97d"}.hm-facebook:before{content:"\e97e"}.hm-fancy-futton:before{content:"\e97f"}.hm-feeder:before{content:"\e980"}.hm-file-cabinet:before{content:"\e981"}.hm-file-rotate:before{content:"\e982"}.hm-file:before{content:"\e983"}.hm-files:before{content:"\e984"}.hm-film-roll:before{content:"\e985"}.hm-film:before{content:"\e986"}.hm-finger-index:before{content:"\e987"}.hm-finger-print:before{content:"\e988"}.hm-fire-flame:before{content:"\e989"}.hm-flag:before{content:"\e98a"}.hm-flip-card1:before{content:"\e98b"}.hm-flip-card2:before{content:"\e98c"}.hm-folder-network:before{content:"\e98d"}.hm-folder:before{content:"\e98e"}.hm-football:before{content:"\e98f"}.hm-footer:before{content:"\e990"}.hm-form:before{content:"\e991"}.hm-forward:before{content:"\e992"}.hm-fountain-pen:before{content:"\e993"}.hm-gender-female:before{content:"\e994"}.hm-gender-male:before{content:"\e995"}.hm-gender-sign:before{content:"\e996"}.hm-gender:before{content:"\e997"}.hm-ghost:before{content:"\e998"}.hm-gift-box:before{content:"\e999"}.hm-globe1:before{content:"\e99a"}.hm-globe2:before{content:"\e99b"}.hm-globe3:before{content:"\e99c"}.hm-globe4:before{content:"\e99d"}.hm-google:before{content:"\e99e"}.hm-graduate-cap:before{content:"\e99f"}.hm-graph-bar:before{content:"\e9a0"}.hm-graph-pie:before{content:"\e9a1"}.hm-graph:before{content:"\e9a2"}.hm-grid-even:before{content:"\e9a3"}.hm-grid-masonry:before{content:"\e9a4"}.hm-grid-twist:before{content:"\e9a5"}.hm-grid:before{content:"\e9a6"}.hm-group:before{content:"\e9a7"}.hm-hand-mike:before{content:"\e9a8"}.hm-hand-watch:before{content:"\e9a9"}.hm-hand:before{content:"\e9aa"}.hm-header:before{content:"\e9ab"}.hm-headphone:before{content:"\e9ac"}.hm-headset:before{content:"\e9ad"}.hm-heart-beat:before{content:"\e9ae"}.hm-hexa:before{content:"\e9af"}.hm-highlighter:before{content:"\e9b0"}.hm-home:before{content:"\e9b1"}.hm-hot-spot:before{content:"\e9b2"}.hm-hotdog:before{content:"\e9b3"}.hm-ice-cream:before{content:"\e9b4"}.hm-icon-box:before{content:"\e9b5"}.hm-imac:before{content:"\e9b6"}.hm-image-compare:before{content:"\e9b7"}.hm-image-slider:before{content:"\e9b8"}.hm-image:before{content:"\e9b9"}.hm-inbox:before{content:"\e9ba"}.hm-infinity:before{content:"\e9bb"}.hm-info:before{content:"\e9bc"}.hm-injection:before{content:"\e9bd"}.hm-instagram:before{content:"\e9be"}.hm-jar-chemical:before{content:"\e9bf"}.hm-key:before{content:"\e9c0"}.hm-language-change:before{content:"\e9c1"}.hm-laptop:before{content:"\e9c2"}.hm-layer:before{content:"\e9c3"}.hm-lens:before{content:"\e9c4"}.hm-like:before{content:"\e9c5"}.hm-line-graph-pointed:before{content:"\e9c6"}.hm-link:before{content:"\e9c7"}.hm-linkedin:before{content:"\e9c8"}.hm-linux:before{content:"\e9c9"}.hm-list-2:before{content:"\e9ca"}.hm-list-group:before{content:"\e9cb"}.hm-list:before{content:"\e9cc"}.hm-location-pointer:before{content:"\e9cd"}.hm-lock:before{content:"\e9ce"}.hm-logo-carousel:before{content:"\e9cf"}.hm-logo-grid:before{content:"\e9d0"}.hm-lotus:before{content:"\e9d1"}.hm-love:before{content:"\e9d2"}.hm-madel:before{content:"\e9d3"}.hm-magic-wand:before{content:"\e9d4"}.hm-magnet:before{content:"\e9d5"}.hm-mail-open:before{content:"\e9d6"}.hm-man-range:before{content:"\e9d7"}.hm-map-marker:before{content:"\e9d8"}.hm-map-pointer:before{content:"\e9d9"}.hm-measurement:before{content:"\e9da"}.hm-memory:before{content:"\e9db"}.hm-menu-price:before{content:"\e9dc"}.hm-micro-chip:before{content:"\e9dd"}.hm-microphone1:before{content:"\e9de"}.hm-microphone2:before{content:"\e9df"}.hm-mobile:before{content:"\e9e0"}.hm-money-bag:before{content:"\e9e1"}.hm-money:before{content:"\e9e2"}.hm-monitor:before{content:"\e9e3"}.hm-mouse:before{content:"\e9e4"}.hm-muscle:before{content:"\e9e5"}.hm-net:before{content:"\e9e6"}.hm-network1:before{content:"\e9e7"}.hm-network2:before{content:"\e9e8"}.hm-newspaper:before{content:"\e9e9"}.hm-nuclear-circle:before{content:"\e9ea"}.hm-office-file:before{content:"\e9eb"}.hm-pacman:before{content:"\e9ec"}.hm-paper-fold:before{content:"\e9ed"}.hm-paper-plane-alt:before{content:"\e9ee"}.hm-paper-plane:before{content:"\e9ef"}.hm-pause:before{content:"\e9f0"}.hm-pen-head:before{content:"\e9f1"}.hm-pen-pencil:before{content:"\e9f2"}.hm-pen-scale:before{content:"\e9f3"}.hm-pen-paper:before{content:"\e9f4"}.hm-pen:before{content:"\e9f5"}.hm-pencil:before{content:"\e9f6"}.hm-pendrive:before{content:"\e9f7"}.hm-phone:before{content:"\e9f8"}.hm-pillar:before{content:"\e9f9"}.hm-pin-man-range:before{content:"\e9fa"}.hm-pin-man:before{content:"\e9fb"}.hm-pin:before{content:"\e9fc"}.hm-plane:before{content:"\e9fd"}.hm-play-end:before{content:"\e9fe"}.hm-play-next:before{content:"\e9ff"}.hm-play-previous:before{content:"\ea00"}.hm-play-start:before{content:"\ea01"}.hm-play-button:before{content:"\ea02"}.hm-play-store:before{content:"\ea03"}.hm-play:before{content:"\ea04"}.hm-playing-card:before{content:"\ea05"}.hm-plus-box:before{content:"\ea06"}.hm-plus-circle:before{content:"\ea07"}.hm-plus-gap:before{content:"\ea08"}.hm-plus-open:before{content:"\ea09"}.hm-popup:before{content:"\ea0a"}.hm-power:before{content:"\ea0b"}.hm-printer:before{content:"\ea0c"}.hm-progress-bar:before{content:"\ea0d"}.hm-promo:before{content:"\ea0e"}.hm-pulse:before{content:"\ea0f"}.hm-puzzle:before{content:"\ea10"}.hm-question:before{content:"\ea11"}.hm-quote:before{content:"\ea12"}.hm-radar:before{content:"\ea13"}.hm-radiation:before{content:"\ea14"}.hm-reading-glass-alt:before{content:"\ea15"}.hm-reading-glass:before{content:"\ea16"}.hm-recycle-bin:before{content:"\ea17"}.hm-recycle:before{content:"\ea18"}.hm-refresh-time:before{content:"\ea19"}.hm-reply:before{content:"\ea1a"}.hm-responsive-device:before{content:"\ea1b"}.hm-review:before{content:"\ea1c"}.hm-rocket1:before{content:"\ea1d"}.hm-rocket2:before{content:"\ea1e"}.hm-rss:before{content:"\ea1f"}.hm-safety-cap:before{content:"\ea20"}.hm-safety-kit:before{content:"\ea21"}.hm-sand-watch:before{content:"\ea22"}.hm-scale:before{content:"\ea23"}.hm-scanner:before{content:"\ea24"}.hm-scissor:before{content:"\ea25"}.hm-screen:before{content:"\ea26"}.hm-search:before{content:"\ea27"}.hm-seo:before{content:"\ea28"}.hm-server-network:before{content:"\ea29"}.hm-server:before{content:"\ea2a"}.hm-share:before{content:"\ea2b"}.hm-shield:before{content:"\ea2c"}.hm-ship:before{content:"\ea2d"}.hm-shirt:before{content:"\ea2e"}.hm-shopping-bag1:before{content:"\ea2f"}.hm-shopping-bag2:before{content:"\ea30"}.hm-shopping-bag3:before{content:"\ea31"}.hm-shopping-bag4:before{content:"\ea32"}.hm-shuffle:before{content:"\ea33"}.hm-shutter:before{content:"\ea34"}.hm-sign-in:before{content:"\ea35"}.hm-sign-out:before{content:"\ea36"}.hm-sitemap1:before{content:"\ea37"}.hm-sitemap2:before{content:"\ea38"}.hm-skart:before{content:"\ea39"}.hm-skull:before{content:"\ea3a"}.hm-skyscraper:before{content:"\ea3b"}.hm-slider-doc:before{content:"\ea3c"}.hm-slider-h-range:before{content:"\ea3d"}.hm-slider-image:before{content:"\ea3e"}.hm-slider-range-h:before{content:"\ea3f"}.hm-slider-v-open:before{content:"\ea40"}.hm-slider-video:before{content:"\ea41"}.hm-slider:before{content:"\ea42"}.hm-smart-watch:before{content:"\ea43"}.hm-snow:before{content:"\ea44"}.hm-spa-face:before{content:"\ea45"}.hm-spa-stone-flower:before{content:"\ea46"}.hm-spa-stone:before{content:"\ea47"}.hm-spark:before{content:"\ea48"}.hm-speaker-off:before{content:"\ea49"}.hm-speaker-on:before{content:"\ea4a"}.hm-spoon-fork:before{content:"\ea4b"}.hm-spoon:before{content:"\ea4c"}.hm-star:before{content:"\ea4d"}.hm-step-flow:before{content:"\ea4e"}.hm-steps:before{content:"\ea4f"}.hm-stop-watch:before{content:"\ea50"}.hm-stop:before{content:"\ea51"}.hm-support-call:before{content:"\ea52"}.hm-tab:before{content:"\ea53"}.hm-table-lamp:before{content:"\ea54"}.hm-tablet:before{content:"\ea55"}.hm-tag:before{content:"\ea56"}.hm-target-arrow:before{content:"\ea57"}.hm-target:before{content:"\ea58"}.hm-target1:before{content:"\ea59"}.hm-team-carousel:before{content:"\ea5a"}.hm-team-member:before{content:"\ea5b"}.hm-tennis-ball:before{content:"\ea5c"}.hm-terminal:before{content:"\ea5d"}.hm-testimonial-carousel:before{content:"\ea5e"}.hm-testimonial:before{content:"\ea5f"}.hm-text-animation:before{content:"\ea60"}.hm-theatre:before{content:"\ea61"}.hm-tick-circle:before{content:"\ea62"}.hm-tick:before{content:"\ea63"}.hm-tickets:before{content:"\ea64"}.hm-tie-knot:before{content:"\ea65"}.hm-tie:before{content:"\ea66"}.hm-timeline:before{content:"\ea67"}.hm-toggle:before{content:"\ea68"}.hm-tools:before{content:"\ea69"}.hm-tree-square:before{content:"\ea6a"}.hm-twitter-bird:before{content:"\ea6b"}.hm-twitter:before{content:"\ea6c"}.hm-ufo:before{content:"\ea6d"}.hm-umbralla:before{content:"\ea6e"}.hm-unlock:before{content:"\ea6f"}.hm-up-down:before{content:"\ea70"}.hm-upload:before{content:"\ea71"}.hm-upward-top-right:before{content:"\ea72"}.hm-user-female:before{content:"\ea73"}.hm-user-id:before{content:"\ea74"}.hm-user-male:before{content:"\ea75"}.hm-video-camera:before{content:"\ea76"}.hm-water-drop:before{content:"\ea77"}.hm-weather-cloud-day:before{content:"\ea78"}.hm-weather-cloud:before{content:"\ea79"}.hm-weather-day-rain:before{content:"\ea7a"}.hm-weather-day-snow:before{content:"\ea7b"}.hm-weather-day-windy-rain:before{content:"\ea7c"}.hm-weather-flood:before{content:"\ea7d"}.hm-weather-night-cloud:before{content:"\ea7e"}.hm-weather-rain-alt:before{content:"\ea7f"}.hm-weather-rain:before{content:"\ea80"}.hm-weather-snow:before{content:"\ea81"}.hm-weather-sun-rain:before{content:"\ea82"}.hm-weather-sun:before{content:"\ea83"}.hm-weather-sunny-day:before{content:"\ea84"}.hm-weather-thunder:before{content:"\ea85"}.hm-weather-windy-rain:before{content:"\ea86"}.hm-webcam1:before{content:"\ea87"}.hm-webcam2:before{content:"\ea88"}.hm-weight-scale:before{content:"\ea89"}.hm-windows:before{content:"\ea8a"}.hm-wine-glass2:before{content:"\ea8b"}.hm-wine-glass:before{content:"\ea8c"}.hm-worker-cap:before{content:"\ea8d"}.hm-youtube:before{content:"\ea8e"}.hm-centralize:before{content:"\ea8f"}.hm-add-section:before{content:"\ea90"}.hm-advanced-heading:before{content:"\ea91"}.hm-air-baloon:before{content:"\ea92"}.hm-arrow2:before{content:"\ea93"}.hm-bicycle2:before{content:"\ea94"}.hm-bond2:before{content:"\ea95"}.hm-bond3:before{content:"\ea96"}.hm-bond4:before{content:"\ea97"}.hm-calendar2:before{content:"\ea98"}.hm-carousel:before{content:"\ea99"}.hm-code-page:before{content:"\ea9a"}.hm-comment-circle:before{content:"\ea9b"}.hm-comment-square:before{content:"\ea9c"}.hm-copy:before{content:"\ea9d"}.hm-cursor:before{content:"\ea9e"}.hm-envelop2:before{content:"\ea9f"}.hm-factory:before{content:"\eaa0"}.hm-finger-point:before{content:"\eaa1"}.hm-finger-swipe-both:before{content:"\eaa2"}.hm-finger-swipe-corner:before{content:"\eaa3"}.hm-finger-swipe-left:before{content:"\eaa4"}.hm-finger-swipe-up:before{content:"\eaa5"}.hm-finger-swipe:before{content:"\eaa6"}.hm-finger-touch:before{content:"\eaa7"}.hm-folder-network:before{content:"\eaa8"}.hm-folder-sync:before{content:"\eaa9"}.hm-graph-bar2:before{content:"\eaaa"}.hm-graph-pie2:before{content:"\eaab"}.hm-heading-h:before{content:"\eaac"}.hm-heading-html:before{content:"\eaad"}.hm-heart:before{content:"\eaae"}.hm-home2:before{content:"\eaaf"}.hm-indent-left:before{content:"\eab0"}.hm-indent-right:before{content:"\eab1"}.hm-lock-close:before{content:"\eab2"}.hm-lock-open:before{content:"\eab3"}.hm-map-pointer-add:before{content:"\eab4"}.hm-map-pointer-check:before{content:"\eab5"}.hm-map-pointer-delete:before{content:"\eab6"}.hm-map-pointer2:before{content:"\eab7"}.hm-map:before{content:"\eab8"}.hm-navigation1:before{content:"\eab9"}.hm-navigation2:before{content:"\eaba"}.hm-page-export:before{content:"\eabb"}.hm-page-sync:before{content:"\eabc"}.hm-piramid:before{content:"\eabd"}.hm-plug:before{content:"\eabe"}.hm-point-marker:before{content:"\eabf"}.hm-quote2:before{content:"\eac0"}.hm-refresh-check:before{content:"\eac1"}.hm-refresh:before{content:"\eac2"}.hm-refresh2:before{content:"\eac3"}.hm-scrolling-image:before{content:"\eac4"}.hm-sign-turn-right:before{content:"\eac5"}.hm-speedometer:before{content:"\eac6"}.hm-sticky:before{content:"\eac7"}.hm-sync-cloud:before{content:"\eac8"}.hm-sync:before{content:"\eac9"}.hm-sync2:before{content:"\eaca"}.hm-table-lamp2:before{content:"\eacb"}.hm-target2:before{content:"\eacc"}.hm-timeline-spiral:before{content:"\eacd"}.hm-tv:before{content:"\eace"}.hm-vespa:before{content:"\eacf"}.hm-happyaddons:before{content:"\ead0"}
assets/imgs/admin/art1.png ADDED
Binary file
assets/imgs/admin/art2.png ADDED
Binary file
assets/imgs/admin/c-icon.png ADDED
Binary file
assets/imgs/admin/comment-square.svg ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="32px" height="32px" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
6
+ <style type="text/css">
7
+ .st0{fill:url(#SVGID_1_);}
8
+ .st1{fill:url(#SVGID_2_);}
9
+ .st2{fill:url(#SVGID_3_);}
10
+ </style>
11
+ <g>
12
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="1.9324" y1="3.0368" x2="31.4246" y2="32.3323">
13
+ <stop offset="0" style="stop-color:#E2498A"/>
14
+ <stop offset="1" style="stop-color:#5A2ED2"/>
15
+ </linearGradient>
16
+ <path class="st0" d="M26.3,1H5.7C2.6,1,0,3.6,0,6.8v21.9c0,0.9,0.5,1.7,1.4,2.1C1.7,30.9,2,31,2.3,31c0.6,0,1.1-0.2,1.6-0.7
17
+ l4.5-4.5h17.9c3.2,0,5.7-2.6,5.7-5.7V6.8C32,3.6,29.4,1,26.3,1z M31,20c0,2.6-2.1,4.7-4.7,4.7H8.1l0,0c-0.1,0-0.3,0.1-0.4,0.2
18
+ l-4.6,4.6c-0.4,0.4-1,0.4-1.4,0.3C1.4,29.7,1,29.3,1,28.7V6.8C1,4.2,3.1,2,5.7,2h20.5C28.9,2,31,4.2,31,6.8V20z"/>
19
+ <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="5.4625" y1="-0.517" x2="34.9546" y2="28.7786">
20
+ <stop offset="0" style="stop-color:#E2498A"/>
21
+ <stop offset="1" style="stop-color:#5A2ED2"/>
22
+ </linearGradient>
23
+ <path class="st1" d="M23.8,9.5H8.3C8,9.5,7.8,9.7,7.8,10s0.2,0.5,0.5,0.5h15.5c0.3,0,0.5-0.2,0.5-0.5S24.1,9.5,23.8,9.5z"/>
24
+ <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="1.5625" y1="3.4091" x2="31.0547" y2="32.7047">
25
+ <stop offset="0" style="stop-color:#E2498A"/>
26
+ <stop offset="1" style="stop-color:#5A2ED2"/>
27
+ </linearGradient>
28
+ <path class="st2" d="M23.8,17.3H8.3c-0.3,0-0.5,0.2-0.5,0.5s0.2,0.5,0.5,0.5h15.5c0.3,0,0.5-0.2,0.5-0.5S24.1,17.3,23.8,17.3z"/>
29
+ </g>
30
+ </svg>
assets/imgs/admin/cross-domain.svg ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="32px" height="32px" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
6
+ <style type="text/css">
7
+ .st0{fill:url(#SVGID_1_);}
8
+ .st1{fill:url(#SVGID_2_);}
9
+ </style>
10
+ <g>
11
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="0.3297" y1="0.6703" x2="31.3307" y2="31.6713">
12
+ <stop offset="0" style="stop-color:#E2498A"/>
13
+ <stop offset="1" style="stop-color:#5A2ED2"/>
14
+ </linearGradient>
15
+ <path class="st0" d="M24.5,6.8h5.2l-4.3,4.3c-0.3,0.3-0.3,0.7,0,1c0.1,0.1,0.3,0.2,0.5,0.2s0.3-0.1,0.5-0.2l5.4-5.4
16
+ c0.3-0.3,0.3-0.7,0-1l-5.4-5.4c-0.3-0.3-0.7-0.3-1,0c-0.3,0.3-0.3,0.7,0,1l4.3,4.3h-5.2c-3.5,0-6.7,1.7-8.6,4.7l-3,4.6L9.5,9.4
17
+ C7.6,6.5,4.4,4.8,0.9,4.8H0.7C0.3,4.8,0,5.1,0,5.4s0.3,0.7,0.7,0.7h0.3c3,0,5.8,1.5,7.4,4l3.8,5.8l-3.8,5.9c-1.6,2.5-4.4,4-7.4,4
18
+ H0.7c-0.4,0-0.7,0.3-0.7,0.7s0.3,0.7,0.7,0.7h0.3c3.5,0,6.7-1.7,8.6-4.7l7.6-11.7C18.7,8.3,21.5,6.8,24.5,6.8z"/>
19
+ <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="0.505" y1="0.495" x2="31.506" y2="31.496">
20
+ <stop offset="0" style="stop-color:#E2498A"/>
21
+ <stop offset="1" style="stop-color:#5A2ED2"/>
22
+ </linearGradient>
23
+ <path class="st1" d="M26.4,19.9c-0.3-0.3-0.7-0.3-1,0c-0.3,0.3-0.3,0.7,0,1l4.3,4.3h-5.2c-3,0-5.8-1.5-7.4-4l-1.7-2.7
24
+ c-0.2-0.3-0.6-0.4-0.9-0.2c-0.3,0.2-0.4,0.6-0.2,0.9l1.7,2.7c1.9,2.9,5.1,4.7,8.6,4.7h5.2l-4.3,4.3c-0.3,0.3-0.3,0.7,0,1
25
+ c0.1,0.1,0.3,0.2,0.5,0.2s0.3-0.1,0.5-0.2l5.4-5.4c0.3-0.3,0.3-0.7,0-1L26.4,19.9z"/>
26
+ </g>
27
+ </svg>
assets/imgs/admin/cross-game.svg ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="32px" height="32px" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
6
+ <style type="text/css">
7
+ .st0{fill:url(#SVGID_1_);}
8
+ .st1{fill:url(#SVGID_2_);}
9
+ .st2{fill:url(#SVGID_3_);}
10
+ .st3{fill:url(#SVGID_4_);}
11
+ .st4{fill:url(#SVGID_5_);}
12
+ .st5{fill:url(#SVGID_6_);}
13
+ .st6{fill:url(#SVGID_7_);}
14
+ .st7{fill:url(#SVGID_8_);}
15
+ .st8{fill:url(#SVGID_9_);}
16
+ </style>
17
+ <g>
18
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="6.3749" y1="-6.1251" x2="38.4574" y2="25.9574">
19
+ <stop offset="0" style="stop-color:#E2498A"/>
20
+ <stop offset="1" style="stop-color:#5A2ED2"/>
21
+ </linearGradient>
22
+ <path class="st0" d="M12.7,7.9C12.8,8,13,8,13.1,8s0.3,0,0.4-0.1l3.1-3.1l3.1,3.1C19.8,8,20,8,20.1,8s0.3,0,0.4-0.1
23
+ c0.2-0.2,0.2-0.5,0-0.7L17.3,4l3.1-3.1c0.2-0.2,0.2-0.5,0-0.7s-0.5-0.2-0.7,0l-3.1,3.1l-3.1-3.1C13.3,0,13,0,12.8,0.2
24
+ s-0.2,0.5,0,0.7L15.9,4l-3.1,3.1C12.5,7.3,12.5,7.7,12.7,7.9z"/>
25
+ <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-6.1001" y1="6.3499" x2="25.9824" y2="38.4324">
26
+ <stop offset="0" style="stop-color:#E2498A"/>
27
+ <stop offset="1" style="stop-color:#5A2ED2"/>
28
+ </linearGradient>
29
+ <path class="st1" d="M0.1,20.3c0.1,0.1,0.2,0.1,0.4,0.1s0.3,0,0.4-0.1L4,17.1l3.1,3.1c0.1,0.1,0.2,0.1,0.4,0.1s0.3,0,0.4-0.1
30
+ c0.2-0.2,0.2-0.5,0-0.7l-3.1-3.1l3.1-3.1c0.2-0.2,0.2-0.5,0-0.7s-0.5-0.2-0.7,0L4,15.7l-3.1-3.1c-0.2-0.2-0.5-0.2-0.7,0
31
+ s-0.2,0.5,0,0.7l3.1,3.1l-3.1,3.1C0,19.8,0,20.1,0.1,20.3z"/>
32
+ <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="5.8749" y1="-5.6251" x2="37.9574" y2="26.4574">
33
+ <stop offset="0" style="stop-color:#E2498A"/>
34
+ <stop offset="1" style="stop-color:#5A2ED2"/>
35
+ </linearGradient>
36
+ <path class="st2" d="M24.1,20.3c0.1,0.1,0.2,0.1,0.4,0.1s0.3,0,0.4-0.1l3.1-3.1l3.1,3.1c0.1,0.1,0.2,0.1,0.4,0.1s0.3,0,0.4-0.1
37
+ c0.2-0.2,0.2-0.5,0-0.7l-3.1-3.1l3.1-3.1c0.2-0.2,0.2-0.5,0-0.7s-0.5-0.2-0.7,0l-3.2,3l-3.1-3.1c-0.2-0.2-0.5-0.2-0.7,0
38
+ s-0.2,0.5,0,0.7l3.1,3.1l-3.1,3.1C24,19.8,24,20.1,24.1,20.3z"/>
39
+ <linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="0.1249" y1="0.1249" x2="32.2074" y2="32.2074">
40
+ <stop offset="0" style="stop-color:#E2498A"/>
41
+ <stop offset="1" style="stop-color:#5A2ED2"/>
42
+ </linearGradient>
43
+ <path class="st3" d="M4,8c2.2,0,4-1.8,4-4S6.2,0,4,0S0,1.8,0,4S1.8,8,4,8z M4,1c1.7,0,3,1.3,3,3S5.7,7,4,7S1,5.7,1,4S2.3,1,4,1z"/>
44
+ <linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="12.1249" y1="-11.8751" x2="44.2074" y2="20.2074">
45
+ <stop offset="0" style="stop-color:#E2498A"/>
46
+ <stop offset="1" style="stop-color:#5A2ED2"/>
47
+ </linearGradient>
48
+ <path class="st4" d="M28,8c2.2,0,4-1.8,4-4s-1.8-4-4-4s-4,1.8-4,4S25.8,8,28,8z M28,1c1.7,0,3,1.3,3,3s-1.3,3-3,3s-3-1.3-3-3
49
+ S26.3,1,28,1z"/>
50
+ <linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-5.6251" y1="5.8749" x2="26.4574" y2="37.9574">
51
+ <stop offset="0" style="stop-color:#E2498A"/>
52
+ <stop offset="1" style="stop-color:#5A2ED2"/>
53
+ </linearGradient>
54
+ <path class="st5" d="M12.7,31.9C12.8,32,13,32,13.1,32s0.3,0,0.4-0.1l3.1-3.1l3.1,3.1C19.8,32,20,32,20.1,32s0.3,0,0.4-0.1
55
+ c0.2-0.2,0.2-0.5,0-0.7L17.3,28l3.1-3.1c0.2-0.2,0.2-0.5,0-0.7s-0.5-0.2-0.7,0l-3.1,3.1l-3.1-3.1c-0.2-0.2-0.5-0.2-0.7,0
56
+ s-0.2,0.5,0,0.7l3.1,3.1l-3.1,3.1C12.5,31.3,12.5,31.7,12.7,31.9z"/>
57
+ <linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="0.1249" y1="0.1249" x2="32.2074" y2="32.2074">
58
+ <stop offset="0" style="stop-color:#E2498A"/>
59
+ <stop offset="1" style="stop-color:#5A2ED2"/>
60
+ </linearGradient>
61
+ <path class="st6" d="M28,32c2.2,0,4-1.8,4-4s-1.8-4-4-4s-4,1.8-4,4S25.8,32,28,32z M28,25c1.7,0,3,1.3,3,3s-1.3,3-3,3s-3-1.3-3-3
62
+ S26.3,25,28,25z"/>
63
+ <linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-11.8751" y1="12.1249" x2="20.2074" y2="44.2074">
64
+ <stop offset="0" style="stop-color:#E2498A"/>
65
+ <stop offset="1" style="stop-color:#5A2ED2"/>
66
+ </linearGradient>
67
+ <path class="st7" d="M4,32c2.2,0,4-1.8,4-4s-1.8-4-4-4s-4,1.8-4,4S1.8,32,4,32z M4,25c1.7,0,3,1.3,3,3s-1.3,3-3,3s-3-1.3-3-3
68
+ S2.3,25,4,25z"/>
69
+ <linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="0.2249" y1="2.485667e-02" x2="32.3074" y2="32.1074">
70
+ <stop offset="0" style="stop-color:#E2498A"/>
71
+ <stop offset="1" style="stop-color:#5A2ED2"/>
72
+ </linearGradient>
73
+ <path class="st8" d="M16.6,20.4c2.2,0,4-1.8,4-4s-1.8-4-4-4s-4,1.8-4,4S14.4,20.4,16.6,20.4z M16.6,13.4c1.7,0,3,1.3,3,3
74
+ s-1.3,3-3,3s-3-1.3-3-3S14.9,13.4,16.6,13.4z"/>
75
+ </g>
76
+ </svg>
assets/imgs/admin/crossdomain-video-cover.jpg ADDED
Binary file
assets/imgs/admin/dashboard-header.png ADDED
Binary file
assets/imgs/admin/faq.svg ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="32px" height="32px" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
6
+ <style type="text/css">
7
+ .st0{fill:url(#SVGID_1_);}
8
+ .st1{fill:url(#SVGID_2_);}
9
+ .st2{fill:url(#SVGID_3_);}
10
+ .st3{fill:url(#SVGID_4_);}
11
+ .st4{fill:url(#SVGID_5_);}
12
+ </style>
13
+ <g>
14
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="2.0517" y1="7.0614" x2="28.5553" y2="31.2933">
15
+ <stop offset="0" style="stop-color:#E2498A"/>
16
+ <stop offset="1" style="stop-color:#5A2ED2"/>
17
+ </linearGradient>
18
+ <path class="st0" d="M30.9,25.5c0.7-1.3,1.1-2.7,1.1-4.2c0-4.8-3.9-8.7-8.7-8.7c-0.1,0-0.3,0-0.4,0c-0.1-2.3-0.8-3.8-0.8-3.8
19
+ C20.3,4.7,16.1,2,11.6,2C5.2,2,0,7.2,0,13.6c0,1.9,0.5,3.8,1.3,5.4l-1,3.9c0,0.2,0,0.3,0.1,0.5c0.1,0.1,0.3,0.2,0.5,0.1l3.7-0.7
20
+ c2,1.5,4.4,2.3,7,2.3c1.3,0,2.5-0.2,3.7-0.6c1.3,3.1,4.4,5.3,8,5.3c1.9,0,3.7-0.6,5.2-1.7l2.6,0.4c0.2,0,0.3,0,0.5-0.2
21
+ c0.1-0.1,0.2-0.3,0.1-0.5L30.9,25.5z M11.6,24.3c-2.4,0-4.6-0.8-6.5-2.3c-0.1-0.1-0.3-0.1-0.4-0.1l-3.2,0.6l0.9-3.4
22
+ c0-0.1,0-0.3,0-0.4C1.5,17.2,1,15.4,1,13.6C1,7.8,5.8,3,11.6,3c4.1,0,7.9,2.4,9.6,6.2c0,0,0.6,1.4,0.7,3.5
23
+ c-4.1,0.7-7.3,4.2-7.3,8.6c0,0.8,0.1,1.6,0.3,2.4C13.9,24.1,12.8,24.3,11.6,24.3z M28.4,27.2c-0.1,0-0.3,0-0.4,0.1
24
+ c-1.4,1.1-3,1.6-4.7,1.6c-4.2,0-7.7-3.4-7.7-7.7c0-4.2,3.4-7.7,7.7-7.7S31,17,31,21.3c0,1.4-0.4,2.7-1.1,3.9
25
+ c-0.1,0.1-0.1,0.3,0,0.4l0.6,2L28.4,27.2z"/>
26
+ <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="3.1976" y1="5.8081" x2="29.7012" y2="30.04">
27
+ <stop offset="0" style="stop-color:#E2498A"/>
28
+ <stop offset="1" style="stop-color:#5A2ED2"/>
29
+ </linearGradient>
30
+ <circle class="st1" cx="20.1" cy="21.3" r="1.1"/>
31
+ <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="4.6038" y1="4.27" x2="31.1074" y2="28.5019">
32
+ <stop offset="0" style="stop-color:#E2498A"/>
33
+ <stop offset="1" style="stop-color:#5A2ED2"/>
34
+ </linearGradient>
35
+ <circle class="st2" cx="23.2" cy="21.3" r="1.1"/>
36
+ <linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="5.9425" y1="2.8059" x2="32.4461" y2="27.0377">
37
+ <stop offset="0" style="stop-color:#E2498A"/>
38
+ <stop offset="1" style="stop-color:#5A2ED2"/>
39
+ </linearGradient>
40
+ <circle class="st3" cx="26.1" cy="21.3" r="1.1"/>
41
+ <g>
42
+ <linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="3.0112" y1="6.012" x2="29.5148" y2="30.2439">
43
+ <stop offset="0" style="stop-color:#E2498A"/>
44
+ <stop offset="1" style="stop-color:#5A2ED2"/>
45
+ </linearGradient>
46
+ <path class="st4" d="M7.2,11.3c0-0.5,0.2-1,0.5-1.5C8,9.3,8.4,8.9,9.1,8.6c0.6-0.3,1.3-0.5,2.1-0.5c0.8,0,1.4,0.1,2,0.4
47
+ c0.6,0.3,1,0.7,1.3,1.1c0.3,0.5,0.5,1,0.5,1.6c0,0.4-0.1,0.8-0.3,1.2c-0.2,0.3-0.4,0.6-0.6,0.9c-0.2,0.2-0.7,0.6-1.3,1.2
48
+ c-0.2,0.2-0.3,0.3-0.4,0.4c-0.1,0.1-0.2,0.2-0.2,0.3C12,15.3,12,15.4,12,15.5s-0.1,0.3-0.1,0.5c-0.1,0.5-0.4,0.8-0.9,0.8
49
+ c-0.3,0-0.5-0.1-0.7-0.3C10,16.4,10,16.2,10,15.8c0-0.4,0.1-0.8,0.2-1.1c0.1-0.3,0.3-0.6,0.5-0.8s0.5-0.5,0.9-0.9
50
+ c0.3-0.3,0.6-0.5,0.7-0.7c0.1-0.1,0.3-0.3,0.4-0.5c0.1-0.2,0.2-0.4,0.2-0.6c0-0.4-0.2-0.8-0.5-1.1c-0.3-0.3-0.7-0.4-1.2-0.4
51
+ c-0.6,0-1,0.1-1.3,0.4c-0.3,0.3-0.5,0.7-0.7,1.3c-0.2,0.6-0.5,0.9-1,0.9c-0.3,0-0.5-0.1-0.7-0.3C7.3,11.8,7.2,11.6,7.2,11.3z
52
+ M11,19.9c-0.3,0-0.6-0.1-0.8-0.3c-0.2-0.2-0.4-0.5-0.4-0.9c0-0.3,0.1-0.6,0.3-0.8c0.2-0.2,0.5-0.3,0.8-0.3c0.3,0,0.6,0.1,0.8,0.3
53
+ c0.2,0.2,0.3,0.5,0.3,0.8c0,0.4-0.1,0.7-0.4,0.9C11.6,19.8,11.3,19.9,11,19.9z"/>
54
+ </g>
55
+ </g>
56
+ </svg>
assets/imgs/admin/film.svg ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="32px" height="32px" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
6
+ <style type="text/css">
7
+ .st0{fill:url(#SVGID_1_);}
8
+ .st1{fill:url(#SVGID_2_);}
9
+ </style>
10
+ <g>
11
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-0.2893" y1="-7.907179e-02" x2="32.2041" y2="31.9951">
12
+ <stop offset="0" style="stop-color:#E2498A"/>
13
+ <stop offset="1" style="stop-color:#5A2ED2"/>
14
+ </linearGradient>
15
+ <path class="st0" d="M1.5,32h29c0.8,0,1.5-0.7,1.5-1.5V26v-1v-5v-1v-6v-1V7V6V1.5C32,0.7,31.3,0,30.5,0h-29C0.7,0,0,0.7,0,1.5v29
16
+ C0,31.3,0.7,32,1.5,32z M27,1h3.5C30.8,1,31,1.2,31,1.5V6h-4V1z M27,7h4v5h-4V7z M27,13h4v6h-4V13z M27,20h4v5h-4V20z M27,26h4v4.5
17
+ c0,0.3-0.2,0.5-0.5,0.5H27V26z M6,26v-1v-5v-1v-6v-1V7V6V1h20v30H6V26z M1,1.5C1,1.2,1.2,1,1.5,1H5v5H1V1.5z M1,7h4v5H1V7z M1,13h4
18
+ v6H1V13z M1,20h4v5H1V20z M1,26h4v5H1.5C1.2,31,1,30.8,1,30.5V26z"/>
19
+ <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="0.1341" y1="-0.5079" x2="32.6275" y2="31.5662">
20
+ <stop offset="0" style="stop-color:#E2498A"/>
21
+ <stop offset="1" style="stop-color:#5A2ED2"/>
22
+ </linearGradient>
23
+ <path class="st1" d="M19.8,14l-3.5-2.2c-0.2-0.2-0.5-0.2-0.8-0.2c-0.8,0-1.5,0.7-1.5,1.5v4.4c0,0.8,0.7,1.5,1.5,1.5
24
+ c0.3,0,0.6-0.1,0.8-0.2l3.5-2.2c0.4-0.3,0.7-0.8,0.7-1.3S20.2,14.3,19.8,14z M19.3,15.7l-3.5,2.2c-0.3,0.2-0.8,0-0.8-0.4v-4.4
25
+ c0-0.3,0.3-0.5,0.5-0.5c0.1,0,0.2,0,0.3,0.1l3.5,2.2c0.2,0.1,0.2,0.3,0.2,0.4S19.5,15.5,19.3,15.7z"/>
26
+ </g>
27
+ </svg>
assets/imgs/admin/floating-video-cover.jpg ADDED
Binary file
assets/imgs/admin/halogo.svg ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="288px" height="140px" viewBox="0 0 288 140" enable-background="new 0 0 288 140" xml:space="preserve">
6
+ <g>
7
+ <path fill="#FFFFFF" d="M281.6,21.4c0.7,0,1.3-0.1,2-0.2c1.2-0.1,2.1-1.3,1.9-2.5c-0.1-1.2-1.3-2.1-2.5-1.9
8
+ c-8.8,1-17.1-4.3-19.9-12.7c-0.4-1.2-1.6-1.8-2.8-1.4c-1.2,0.4-1.8,1.6-1.4,2.8C262.1,15.4,271.5,21.8,281.6,21.4z"/>
9
+ <path fill="#FFFFFF" d="M284.8,30c-0.7-1.6-2.3-2.6-4-2.5c-2.3,0.1-4.7,0-7.1-0.5c-9.9-2-17.5-9-20.9-17.7
10
+ c-0.6-1.6-2.2-2.7-3.9-2.6C230.4,7,214.3,20.8,212,40.2c-2.1,17.7,8.9,34.8,25.8,40.3c21.9,7.1,44.5-6.5,49-28.4
11
+ C288.5,44.4,287.6,36.8,284.8,30z M255.8,32.9c0.2-1.2,1.4-2,2.6-1.7l9.4,1.9c1.2,0.2,2,1.4,1.7,2.6s-1.4,2-2.6,1.7l-9.4-1.9
12
+ C256.4,35.3,255.6,34.1,255.8,32.9z M235.1,30c0.6-2.9,3.4-4.7,6.3-4.1c2.9,0.6,4.7,3.4,4.1,6.3c-0.6,2.9-3.4,4.7-6.3,4.1
13
+ C236.3,35.6,234.5,32.8,235.1,30z M271.4,56.3c-4.6,11.1-17.2,17.4-29.4,13.4c-9.1-3-15.5-11.3-16.3-20.6c-0.2-2.4,1.9-4.4,4.3-4
14
+ l38.6,6.1C270.9,51.6,272.3,54.1,271.4,56.3z"/>
15
+ <path fill="#FFFFFF" d="M252.4,59.4c-4.7-1-9.3,0.8-11.8,4.2c-0.5,0.7-0.2,1.8,0.6,2.2c1.5,0.7,3.1,1.3,4.8,1.7
16
+ c4.6,1,9.2,0.2,12.8-1.8c0.8-0.4,1-1.6,0.4-2.3C257.6,61.4,255.2,60,252.4,59.4z"/>
17
+ </g>
18
+ <g>
19
+ <path fill="#FFFFFF" d="M1.3,40.9h9.2c0.7,0,1.2,0.6,1.2,1.2v14.4h14V42.2c0-0.7,0.6-1.2,1.2-1.2h9.2c0.7,0,1.2,0.6,1.2,1.2v36.9
20
+ c0,0.7-0.6,1.2-1.2,1.2H27c-0.7,0-1.2-0.6-1.2-1.2V65.7h-14v13.4c0,0.7-0.6,1.2-1.2,1.2H1.3c-0.7,0-1.2-0.6-1.2-1.2V42.2
21
+ C0,41.5,0.6,40.9,1.3,40.9z"/>
22
+ <path fill="#FFFFFF" d="M72.6,79.5l-2-5.5H54.7l-2.1,5.5c-0.2,0.5-0.6,0.8-1.2,0.8h-9.3c-0.9,0-1.5-0.9-1.1-1.7l15.8-36.9
23
+ c0.2-0.5,0.6-0.8,1.1-0.8h10.4c0.5,0,1,0.3,1.1,0.8l15.2,36.9c0.3,0.8-0.3,1.7-1.1,1.7h-9.8C73.2,80.4,72.8,80,72.6,79.5z
24
+ M57.9,65.5h9.6l-4.7-12.9L57.9,65.5z"/>
25
+ <path fill="#FFFFFF" d="M118,44.6c2.8,2.4,4.2,5.9,4.2,10.3c0,4.7-1.4,8.3-4.2,10.9c-2.8,2.6-6.7,3.9-11.8,3.9l-6.2,0.1v9.3
26
+ c0,0.7-0.6,1.2-1.2,1.2h-9.2c-0.7,0-1.2-0.6-1.2-1.2V42.2c0-0.7,0.6-1.2,1.2-1.2h16.6C111.2,40.9,115.2,42.1,118,44.6z M109.6,59.3
27
+ c1-0.9,1.4-2.3,1.4-4c0-1.7-0.5-3-1.4-4c-1-0.9-2.3-1.4-4.1-1.4h-5.6v10.8h5.6C107.3,60.7,108.7,60.3,109.6,59.3z"/>
28
+ <path fill="#FFFFFF" d="M156.4,44.6c2.8,2.4,4.2,5.9,4.2,10.3c0,4.7-1.4,8.3-4.2,10.9c-2.8,2.6-6.7,3.9-11.8,3.9l-6.2,0.1v9.3
29
+ c0,0.7-0.6,1.2-1.2,1.2h-9.2c-0.7,0-1.2-0.6-1.2-1.2V42.2c0-0.7,0.6-1.2,1.2-1.2h16.6C149.6,40.9,153.6,42.1,156.4,44.6z
30
+ M148.1,59.3c1-0.9,1.4-2.3,1.4-4c0-1.7-0.5-3-1.4-4c-1-0.9-2.3-1.4-4.1-1.4h-5.6v10.8h5.6C145.7,60.7,147.1,60.3,148.1,59.3z"/>
31
+ <path fill="#FFFFFF" d="M200.7,42.7l-13.2,25.1v11.2c0,0.7-0.6,1.2-1.2,1.2H177c-0.7,0-1.2-0.6-1.2-1.2v-11l-13.5-25.3
32
+ c-0.4-0.8,0.2-1.8,1.1-1.8h8.9c0.5,0,0.9,0.3,1.1,0.7l8.3,15.4l8-15.4c0.2-0.4,0.6-0.7,1.1-0.7h8.8
33
+ C200.5,40.9,201.1,41.9,200.7,42.7z"/>
34
+ <path fill="#FFFFFF" d="M31.7,135.9l-2-5.5H13.8l-2.1,5.5c-0.2,0.5-0.6,0.8-1.2,0.8H1.2c-0.9,0-1.5-0.9-1.1-1.7L15.9,98
35
+ c0.2-0.5,0.6-0.8,1.1-0.8h10.4c0.5,0,1,0.3,1.1,0.8L43.8,135c0.3,0.8-0.3,1.7-1.1,1.7h-9.8C32.3,136.7,31.9,136.3,31.7,135.9z
36
+ M17,121.8h9.6l-4.7-12.9L17,121.8z"/>
37
+ <path fill="#FFFFFF" d="M75.7,99.7c3.2,1.6,5.7,3.9,7.5,6.9c1.8,3,2.6,6.4,2.6,10.3c0,3.9-0.9,7.3-2.7,10.3c-1.8,3-4.3,5.3-7.6,6.9
38
+ c-3.3,1.6-7,2.4-11.3,2.4H48.6c-0.7,0-1.2-0.6-1.2-1.2V98.5c0-0.7,0.6-1.2,1.2-1.2h16C68.8,97.2,72.5,98.1,75.7,99.7z M71.4,124.6
39
+ c1.6-1.9,2.5-4.4,2.5-7.6c0-3.1-0.9-5.7-2.6-7.6c-1.8-1.9-4-2.9-6.9-2.9H59v21h5.9C67.6,127.5,69.8,126.5,71.4,124.6z"/>
40
+ <path fill="#FFFFFF" d="M118.6,99.7c3.2,1.6,5.7,3.9,7.5,6.9c1.8,3,2.6,6.4,2.6,10.3c0,3.9-0.9,7.3-2.7,10.3
41
+ c-1.8,3-4.3,5.3-7.6,6.9c-3.3,1.6-7,2.4-11.3,2.4H91.4c-0.7,0-1.2-0.6-1.2-1.2V98.5c0-0.7,0.6-1.2,1.2-1.2h16
42
+ C111.7,97.2,115.4,98.1,118.6,99.7z M114.3,124.6c1.6-1.9,2.5-4.4,2.5-7.6c0-3.1-0.9-5.7-2.6-7.6c-1.8-1.9-4-2.9-6.9-2.9h-5.3v21
43
+ h5.9C110.5,127.5,112.6,126.5,114.3,124.6z"/>
44
+ <path fill="#FFFFFF" d="M205.8,97.2h8.2c0.7,0,1.2,0.6,1.2,1.2v36.9c0,0.7-0.6,1.2-1.2,1.2h-8.1c-0.4,0-0.8-0.2-1-0.5l-16.3-21.4
45
+ v20.7c0,0.7-0.6,1.2-1.2,1.2H179c-0.7,0-1.2-0.6-1.2-1.2V98.5c0-0.7,0.6-1.2,1.2-1.2h8.2c0.4,0,0.8,0.2,1,0.5l16.3,21.5V98.5
46
+ C204.5,97.8,205.1,97.2,205.8,97.2z"/>
47
+ <path fill="#FFFFFF" d="M243.3,106.8c-2.5-0.9-4.6-1.3-6.2-1.3c-1,0-1.8,0.2-2.4,0.6c-0.6,0.4-0.9,1-0.9,1.7c0,1.1,0.6,1.9,1.7,2.4
48
+ c1.1,0.6,2.9,1.2,5.3,1.9c2.8,0.8,5.1,1.6,6.9,2.4c1.8,0.8,3.4,2,4.7,3.7c1.3,1.7,2,3.8,2,6.5c0,2.7-0.7,5.1-2.2,6.9
49
+ c-1.4,1.9-3.4,3.3-5.8,4.2c-2.5,0.9-5.2,1.4-8.2,1.4c-3.4,0-6.8-0.6-10.2-1.7c-3-1-5.7-2.4-8-4.1c-0.5-0.4-0.6-1-0.4-1.5l3.2-6.6
50
+ c0.3-0.7,1.2-0.9,1.8-0.5c1.8,1.3,3.8,2.5,6.1,3.4c2.9,1.2,5.3,1.8,7.4,1.8c1.3,0,2.3-0.2,3-0.7c0.7-0.5,1.1-1.2,1.1-2.1
51
+ c0-1.1-0.6-1.9-1.7-2.5c-1.2-0.6-3-1.2-5.4-1.8c-2.7-0.7-5-1.5-6.8-2.2c-1.8-0.8-3.4-2-4.7-3.6c-1.3-1.6-2-3.7-2-6.4
52
+ c0-2.5,0.7-4.8,2-6.7c1.4-1.9,3.3-3.3,5.7-4.4c2.5-1,5.3-1.5,8.6-1.5c3,0,5.9,0.4,8.8,1.3c2.5,0.7,4.7,1.6,6.7,2.8
53
+ c0.6,0.3,0.8,1,0.5,1.6l-3.3,6.8c-0.3,0.6-1.1,0.9-1.7,0.5C247.3,108.3,245.3,107.5,243.3,106.8z"/>
54
+ </g>
55
+ <path fill="#FFFFFF" d="M170.3,109.2c-0.4-0.9-1.2-1.4-2.2-1.4c-1.3,0.1-2.5,0-3.8-0.3c-5.3-1.1-9.4-4.8-11.3-9.5
56
+ c-0.3-0.9-1.2-1.4-2.1-1.4c-9.9,0.2-18.6,7.6-19.8,18.1c-1.1,9.5,4.8,18.7,13.9,21.7c11.8,3.8,23.9-3.5,26.4-15.3
57
+ C172.3,116.9,171.8,112.8,170.3,109.2z M151.5,126.3c-5.2,0-9.4-4.2-9.4-9.4c0-5.2,4.2-9.4,9.4-9.4s9.4,4.2,9.4,9.4
58
+ C160.9,122.1,156.7,126.3,151.5,126.3z"/>
59
+ </svg>
assets/imgs/admin/icon1.jpg ADDED
Binary file
assets/imgs/admin/knowledge.svg ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="32px" height="32px" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
6
+ <style type="text/css">
7
+ .st0{fill:url(#SVGID_1_);}
8
+ .st1{fill:url(#SVGID_2_);}
9
+ .st2{fill:url(#SVGID_3_);}
10
+ .st3{fill:url(#SVGID_4_);}
11
+ .st4{fill:url(#SVGID_5_);}
12
+ </style>
13
+ <g>
14
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="3.5418" y1="-3.0418" x2="35.2244" y2="28.6408">
15
+ <stop offset="0" style="stop-color:#E2498A"/>
16
+ <stop offset="1" style="stop-color:#5A2ED2"/>
17
+ </linearGradient>
18
+ <path class="st0" d="M29.1,16.9c-1.4,0-2.6,1-2.8,2.4h-2.3l-3.1-3.1H18v-2.1H20l3-3h1.7c0.2,1.3,1.4,2.4,2.8,2.4
19
+ c1.6,0,2.9-1.3,2.9-2.9c0-1.6-1.3-2.9-2.9-2.9c-1.4,0-2.6,1-2.8,2.4h-2.1l-3,3H18V5.4L19.5,4c0.4,1,1.5,1.7,2.6,1.7
20
+ c1.6,0,2.9-1.3,2.9-2.9S23.7,0,22.1,0c-1.6,0-2.8,1.3-2.9,2.8L17,5v21.2l3.2,2.1c-0.1,0.2-0.1,0.5-0.1,0.8c0,1.6,1.3,2.9,2.9,2.9
21
+ c1.6,0,2.9-1.3,2.9-2.9s-1.3-2.9-2.9-2.9c-0.9,0-1.8,0.5-2.3,1.2L18,25.7v-8.5h2.4l3.1,3.1h2.7c0.2,1.3,1.4,2.3,2.8,2.3
22
+ c1.6,0,2.9-1.3,2.9-2.9S30.7,16.9,29.1,16.9z M27.5,8.7c1,0,1.9,0.8,1.9,1.9s-0.8,1.9-1.9,1.9s-1.9-0.8-1.9-1.9S26.5,8.7,27.5,8.7z
23
+ M22.1,1c1,0,1.9,0.8,1.9,1.9s-0.8,1.9-1.9,1.9s-1.9-0.8-1.9-1.9S21.1,1,22.1,1z M23,27.2c1,0,1.9,0.8,1.9,1.9S24,30.9,23,30.9
24
+ s-1.9-0.8-1.9-1.9S22,27.2,23,27.2z M29.1,21.7c-1,0-1.9-0.8-1.9-1.9s0.8-1.9,1.9-1.9s1.9,0.8,1.9,1.9S30.1,21.7,29.1,21.7z"/>
25
+ <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-2.736" y1="3.236" x2="28.9466" y2="34.9186">
26
+ <stop offset="0" style="stop-color:#E2498A"/>
27
+ <stop offset="1" style="stop-color:#5A2ED2"/>
28
+ </linearGradient>
29
+ <path class="st1" d="M10.6,0C8.1,0,6.2,2,6.2,4.4c0,0.6,0.1,1.3,0.4,1.8c0,0,0,0,0,0c-2.8,0-5.1,2.3-5.1,5.1C1.5,12.7,2,14,3,14.9
30
+ c-1.9,1.2-3,3.3-3,5.5c0,2.9,1.9,5.5,4.7,6.3c0,0,0,0.1,0,0.1C4.7,29.7,7,32,9.8,32s5.1-2.3,5.1-5.1V4.4C14.9,2,13,0,10.6,0z
31
+ M13.9,8.3C13.5,8,13,7.8,12.7,7.7c-0.2-1.1-1.2-2-2.4-2C10,5.8,9.8,6,9.8,6.3s0.2,0.5,0.5,0.5c0.8,0,1.4,0.6,1.4,1.4
32
+ c0,0.8-0.6,1.4-1.4,1.4c-0.3,0-0.5,0.2-0.5,0.5s0.2,0.5,0.5,0.5c1.1,0,2.1-0.8,2.4-1.8c0.4,0.1,1,0.5,1.3,1.2v8
33
+ c-0.8-0.8-1.9-1.1-2.6-1.1c0,0,0,0,0,0c-0.3,0-0.5,0.2-0.5,0.5c0,0.3,0.2,0.5,0.5,0.5c0,0,2,0.1,2.6,2v7c0,2.3-1.8,4.1-4.1,4.1
34
+ c-2.3,0-4.1-1.8-4.1-4.1c0-0.1,0-0.2,0-0.3l0-0.2c0,0,0,0,0,0c0,0,0,0,0,0c0-0.1,0.2-3.3,3.7-3.7c0.2,0.8,1,1.4,1.9,1.4
35
+ c1.1,0,2-0.9,2-2c0-1.1-0.9-2-2-2c-0.9,0-1.7,0.6-1.9,1.5c-1.6,0.1-2.6,0.7-3.3,1.5c-0.7-0.3-2.2-1.2-2.1-2.7
36
+ c0-0.3-0.2-0.5-0.5-0.6c-0.3,0-0.5,0.2-0.6,0.5c-0.2,2.1,1.5,3.2,2.4,3.7c-0.4,0.6-0.6,1.3-0.7,1.7c-2.2-0.8-3.8-2.9-3.8-5.3
37
+ c0-2.1,1.2-4,3.1-5c0,0,0,0,0,0c0,0,1-0.5,2.2-0.6c0.2,1,1.1,1.7,2.2,1.7c0.3,0,0.5-0.2,0.5-0.5s-0.2-0.5-0.5-0.5
38
+ c-0.7,0-1.2-0.5-1.2-1.2s0.5-1.2,1.2-1.2c0.3,0,0.5-0.2,0.5-0.5s-0.2-0.5-0.5-0.5c-1.1,0-2,0.8-2.2,1.8c-1,0.1-1.9,0.4-2.4,0.6
39
+ c-0.9-0.8-1.5-1.9-1.5-3.1c0-2.2,1.8-4.1,4.1-4.1c0.3,0,0.6,0,0.9,0.1c0.2,0,0.4,0,0.6-0.2c0.1-0.2,0.1-0.4,0-0.6
40
+ C7.5,5.9,7.2,5.1,7.2,4.4C7.2,2.5,8.7,1,10.6,1c1.8,0,3.4,1.5,3.4,3.4V8.3z M11.3,21.3c0.5,0,0.9,0.4,0.9,0.9s-0.4,0.9-0.9,0.9
41
+ s-0.9-0.4-0.9-0.9S10.8,21.3,11.3,21.3z"/>
42
+ <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-2.0483" y1="2.5484" x2="29.6343" y2="34.2309">
43
+ <stop offset="0" style="stop-color:#E2498A"/>
44
+ <stop offset="1" style="stop-color:#5A2ED2"/>
45
+ </linearGradient>
46
+ <path class="st2" d="M6.7,8.4c-1.6,0-2.8,1.3-2.8,2.8c0,0.3,0.2,0.5,0.5,0.5s0.5-0.2,0.5-0.5c0-1,0.8-1.8,1.8-1.8
47
+ C7,9.5,7.2,9.2,7.2,9S7,8.4,6.7,8.4z"/>
48
+ <linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="3.3198" y1="-2.8198" x2="35.0024" y2="28.8628">
49
+ <stop offset="0" style="stop-color:#E2498A"/>
50
+ <stop offset="1" style="stop-color:#5A2ED2"/>
51
+ </linearGradient>
52
+ <path class="st3" d="M10.7,2.2c-1.3,0-2.4,1.1-2.4,2.4c0,0.3,0.2,0.5,0.5,0.5s0.5-0.2,0.5-0.5c0-0.8,0.6-1.4,1.4-1.4
53
+ c0.3,0,0.5-0.2,0.5-0.5S11,2.2,10.7,2.2z"/>
54
+ <linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-8.2617" y1="8.7617" x2="23.4209" y2="40.4443">
55
+ <stop offset="0" style="stop-color:#E2498A"/>
56
+ <stop offset="1" style="stop-color:#5A2ED2"/>
57
+ </linearGradient>
58
+ <path class="st4" d="M12,26.3c-0.3,0-0.5,0.2-0.5,0.5c0,1-0.8,1.8-1.8,1.8c-0.3,0-0.5,0.2-0.5,0.5s0.2,0.5,0.5,0.5
59
+ c1.6,0,2.8-1.3,2.8-2.8C12.6,26.5,12.3,26.3,12,26.3z"/>
60
+ </g>
61
+ </svg>
assets/imgs/admin/nesting.svg ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="32px" height="32px" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
6
+ <style type="text/css">
7
+ .st0{fill:url(#SVGID_1_);}
8
+ </style>
9
+ <g>
10
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-3.8186" y1="4.7672" x2="26.9566" y2="36.1856">
11
+ <stop offset="0" style="stop-color:#E2498A"/>
12
+ <stop offset="1" style="stop-color:#5A2ED2"/>
13
+ </linearGradient>
14
+ <path class="st0" d="M1.5,32h29c0.8,0,1.5-0.7,1.5-1.5v-11c0-0.8-0.7-1.5-1.5-1.5H1V9h19.5C20.8,9,21,9.2,21,9.5v6.4
15
+ c0,0.3,0.2,0.5,0.5,0.5c0.3,0,0.5-0.2,0.5-0.5V9.5C22,8.7,21.3,8,20.5,8H1V1.5C1,1.2,1.2,1,1.5,1h10C11.8,1,12,1.2,12,1.5v5.1
16
+ c0,0.3,0.2,0.5,0.5,0.5S13,6.9,13,6.6V1.5C13,0.7,12.3,0,11.5,0l-10,0C0.7,0,0,0.7,0,1.5l0,7l0,10l0,12C0,31.3,0.7,32,1.5,32z
17
+ M1,19h29.5c0.3,0,0.5,0.2,0.5,0.5v11c0,0.3-0.2,0.5-0.5,0.5h-29C1.2,31,1,30.8,1,30.5V19z"/>
18
+ </g>
19
+ </svg>
assets/imgs/admin/newspaper.svg ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="32px" height="32px" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
6
+ <style type="text/css">
7
+ .st0{fill:url(#SVGID_1_);}
8
+ .st1{fill:url(#SVGID_2_);}
9
+ .st2{fill:url(#SVGID_3_);}
10
+ .st3{fill:url(#SVGID_4_);}
11
+ .st4{fill:url(#SVGID_5_);}
12
+ </style>
13
+ <g>
14
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="3.0147" y1="-2.0591" x2="34.4473" y2="29.5948">
15
+ <stop offset="0" style="stop-color:#E2498A"/>
16
+ <stop offset="1" style="stop-color:#5A2ED2"/>
17
+ </linearGradient>
18
+ <path class="st0" d="M21.5,12c0.3,0,0.5-0.2,0.5-0.5v-6C22,5.2,21.8,5,21.5,5h-16C5.2,5,5,5.2,5,5.5v6C5,11.8,5.2,12,5.5,12H21.5z
19
+ M6,6h15v5H6V6z"/>
20
+ <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-1.2369" y1="2.1628" x2="30.1957" y2="33.8168">
21
+ <stop offset="0" style="stop-color:#E2498A"/>
22
+ <stop offset="1" style="stop-color:#5A2ED2"/>
23
+ </linearGradient>
24
+ <path class="st1" d="M4.5,16.5C4.5,16.8,4.7,17,5,17h16c0.3,0,0.5-0.2,0.5-0.5S21.3,16,21,16H5C4.7,16,4.5,16.2,4.5,16.5z"/>
25
+ <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-3.7369" y1="4.6452" x2="27.6957" y2="36.2992">
26
+ <stop offset="0" style="stop-color:#E2498A"/>
27
+ <stop offset="1" style="stop-color:#5A2ED2"/>
28
+ </linearGradient>
29
+ <path class="st2" d="M5,22h16c0.3,0,0.5-0.2,0.5-0.5S21.3,21,21,21H5c-0.3,0-0.5,0.2-0.5,0.5S4.7,22,5,22z"/>
30
+ <linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-5.7368" y1="6.6312" x2="25.6958" y2="38.2852">
31
+ <stop offset="0" style="stop-color:#E2498A"/>
32
+ <stop offset="1" style="stop-color:#5A2ED2"/>
33
+ </linearGradient>
34
+ <path class="st3" d="M5,26h16c0.3,0,0.5-0.2,0.5-0.5S21.3,25,21,25H5c-0.3,0-0.5,0.2-0.5,0.5S4.7,26,5,26z"/>
35
+ <linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-0.9117" y1="1.8022" x2="30.5209" y2="33.4561">
36
+ <stop offset="0" style="stop-color:#E2498A"/>
37
+ <stop offset="1" style="stop-color:#5A2ED2"/>
38
+ </linearGradient>
39
+ <path class="st4" d="M30.5,7h-2.1c-0.3,0-0.5,0.2-0.5,0.5S28.1,8,28.4,8h2.1C30.8,8,31,8.2,31,8.5v22c0,0.3-0.2,0.5-0.5,0.5H26V1.5
40
+ C26,0.7,25.3,0,24.5,0h-23C0.7,0,0,0.7,0,1.5v28.4C0,31,1,32,2.1,32H21c0.3,0,0.5-0.2,0.5-0.5S21.3,31,21,31H2.1
41
+ C1.5,31,1,30.5,1,29.9V1.5C1,1.2,1.2,1,1.5,1h23C24.8,1,25,1.2,25,1.5v30c0,0.3,0.2,0.5,0.5,0.5h5c0.8,0,1.5-0.7,1.5-1.5v-22
42
+ C32,7.7,31.3,7,30.5,7z"/>
43
+ </g>
44
+ </svg>
assets/imgs/admin/pa-1.png ADDED
Binary file
assets/imgs/admin/pa-2.png ADDED
Binary file
assets/imgs/admin/pa-3.png ADDED
Binary file
assets/imgs/admin/preset.svg ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="32px" height="32px" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
6
+ <style type="text/css">
7
+ .st0{fill:url(#SVGID_1_);}
8
+ .st1{fill:url(#SVGID_2_);}
9
+ </style>
10
+ <g>
11
+
12
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="16" y1="28.2207" x2="16" y2="1.1999" gradientTransform="matrix(1 0 0 -1 0 34)">
13
+ <stop offset="0" style="stop-color:#E2498A"/>
14
+ <stop offset="1" style="stop-color:#5A2ED2"/>
15
+ </linearGradient>
16
+ <path class="st0" d="M31.1,18.4c-0.1-0.3-0.2-0.6-0.4-0.9l0,0l-2.6-5.8c-0.2-0.3-0.4-0.5-0.6-0.8l0,0l-4.2-4.7l0,0l0,0l-5.5-3.8
17
+ c-0.5-0.2-1-0.4-1.5-0.4l-5.6-1.8C10.3,0,9.9,0,9.4,0.1C9.4,0,9.3,0,9.2,0H3.5C1.6,0,0,1.6,0,3.5v21v4v1C0,30.9,1.1,32,2.5,32h27
18
+ c1.4,0,2.5-1.1,2.5-2.5v-5c0-0.3-0.1-0.6-0.2-0.9L31.1,18.4z M30.1,18.6l0.5,3.7c-0.3-0.2-0.7-0.3-1.1-0.3H7.3L27,16.9
19
+ C28.4,16.5,29.7,17.3,30.1,18.6z M27.2,12.2l1.7,3.9c-0.7-0.3-1.4-0.3-2.1-0.1l-20,5.2l17-9.8C25,10.6,26.6,11,27.2,12.2z
20
+ M22.1,6.7L22.6,7l2.7,3c-0.7,0-1.3,0.1-1.9,0.5l-17,9.8l12.9-13C20,6.4,21.2,6.2,22.1,6.7z M17.2,3.3l3.2,2.2
21
+ c-0.7,0.1-1.4,0.4-1.9,1L3.9,21.3l9.8-17c0.3-0.6,0.9-1,1.5-1.2C16,2.9,16.6,3,17.2,3.3z M8.5,1.4C9.1,1,9.8,1,10.4,1.1l3.9,1.3
22
+ c-0.6,0.3-1.1,0.8-1.4,1.3L2.3,22H2.2L7.4,2.9C7.5,2.2,8,1.7,8.5,1.4z M1,3.5C1,2.1,2.1,1,3.5,1h3.9c-0.5,0.4-0.8,1-1,1.6L1.1,22.4
23
+ c0,0,0,0,0,0.1L1,22.6V3.5z M31,29.5c0,0.8-0.7,1.5-1.5,1.5h-27C1.7,31,1,30.3,1,29.5v-1v-4C1,23.7,1.7,23,2.5,23h27
24
+ c0.8,0,1.5,0.7,1.5,1.5V29.5z"/>
25
+
26
+ <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="5" y1="28.2207" x2="5" y2="1.1999" gradientTransform="matrix(1 0 0 -1 0 34)">
27
+ <stop offset="0" style="stop-color:#E2498A"/>
28
+ <stop offset="1" style="stop-color:#5A2ED2"/>
29
+ </linearGradient>
30
+ <path class="st1" d="M5,24.9c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S6.1,24.9,5,24.9z M5,27.9c-0.6,0-1-0.4-1-1s0.4-1,1-1s1,0.4,1,1
31
+ S5.6,27.9,5,27.9z"/>
32
+ </g>
33
+ </svg>
assets/imgs/admin/review.svg ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="32px" height="32px" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
6
+ <style type="text/css">
7
+ .st0{fill:url(#SVGID_1_);}
8
+ .st1{fill:#FFFFFF;}
9
+ </style>
10
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-1.7601" y1="-1.7601" x2="39.042" y2="39.042">
11
+ <stop offset="0" style="stop-color:#E2498A"/>
12
+ <stop offset="1" style="stop-color:#5A2ED2"/>
13
+ </linearGradient>
14
+ <circle class="st0" cx="16" cy="16" r="16"/>
15
+ <g>
16
+ <circle class="st1" cx="9.1" cy="22.9" r="0.4"/>
17
+ <path class="st1" d="M21,7.2h-9.6c-2.1,0-3.8,1.7-3.8,3.8s1.7,3.8,3.8,3.8c0.2,0.1,0.3-0.1,0.3-0.2c0-0.2-0.2-0.3-0.3-0.3
18
+ c-1.8,0-3.2-1.5-3.2-3.2s1.5-3.2,3.2-3.2H21c1.8,0,3.2,1.5,3.2,3.2s-1.4,3.2-3.2,3.2h-0.6L19,15.6l-1.3-1.3h-1.9
19
+ c-0.2-0.5-0.5-0.9-1-1.1l-0.7-0.3c-0.1-0.1-0.2-0.1-0.2,0s-0.1,0.1-0.2,0.2l-0.4,1c-0.5,1.3-1.4,2.4-2.6,3.1
20
+ c-0.2-0.2-0.4-0.3-0.7-0.3H8.1c-0.4,0-0.8,0.4-0.8,0.8v6c0,0.4,0.4,0.8,0.8,0.8h2.2c0.4,0,0.7-0.2,0.8-0.5c1,0.5,2.1,0.8,3.2,0.8
21
+ h3.4c0.7,0,1.2-0.5,1.2-1.2c0-0.3-0.1-0.5-0.2-0.7c0.5-0.2,0.8-0.6,0.8-1.2c0-0.3-0.1-0.5-0.2-0.7c0.5-0.1,0.9-0.6,0.9-1.2
22
+ c0-0.6-0.4-1-0.9-1.2c0.1-0.2,0.2-0.4,0.2-0.7c0-0.7-0.5-1.2-1.2-1.2h-2.7l0.4-1.3C16,15.3,16,15.1,16,15h1.5l1.4,1.5l1.6-1.5H21
23
+ c2.1,0,3.8-1.7,3.8-3.8S23.1,7.2,21,7.2z M10.5,23.7c0,0.2-0.1,0.3-0.3,0.3H8.1c-0.2,0-0.3-0.1-0.3-0.3v-6c0-0.2,0.1-0.3,0.3-0.3
24
+ h0.8v4.1c0,0.2,0.1,0.3,0.3,0.3c0.2,0,0.3-0.1,0.3-0.3v-4.1h0.9c0.2,0,0.3,0.1,0.3,0.3V23.7z M18.3,17.3c0.4,0,0.7,0.3,0.7,0.7
25
+ c0,0.4-0.3,0.7-0.7,0.7h-1.9c-0.2,0-0.3,0.1-0.3,0.3c0,0.2,0.1,0.3,0.3,0.3h1.9H19c0.4,0,0.7,0.3,0.7,0.7s-0.3,0.7-0.7,0.7h-0.7
26
+ h-1.9c-0.2,0-0.3,0.1-0.3,0.3s0.1,0.3,0.3,0.3h1.9c0.4,0,0.7,0.3,0.7,0.7s-0.3,0.7-0.7,0.7h-0.6h-1.3c-0.2,0-0.3,0.1-0.3,0.3
27
+ c0,0.2,0.1,0.3,0.3,0.3h1.3c0.4,0,0.7,0.3,0.7,0.7s-0.3,0.7-0.7,0.7h-3.4c-1.1,0-2.2-0.3-3.2-0.8v-5.7c1.4-0.8,2.4-2,2.9-3.4
28
+ l0.3-0.8l0.4,0.2c0.6,0.3,0.9,0.9,0.7,1.6L14.9,17c0,0.1,0,0.2,0.1,0.2s0.1,0.1,0.2,0.1H18.3z"/>
29
+ <path class="st1" d="M10.4,12.2c-0.1,0.1,0,0.2,0.1,0.3c0.1,0.1,0.2,0.1,0.3,0l0.3-0.3c0.3-0.2,0.7-0.2,1,0l0.4,0.3
30
+ c0.1,0.1,0.1,0.1,0.2,0.1c0.1,0,0.1,0,0.2-0.1c0.1-0.1,0.2-0.2,0.1-0.3l-0.2-0.4c-0.1-0.4,0-0.8,0.3-0.9l0.4-0.2
31
+ c0.1-0.1,0.2-0.2,0.1-0.3c-0.1-0.1-0.2-0.2-0.3-0.2h-0.5c-0.4,0-0.7-0.2-0.8-0.6L12,8.9c-0.1-0.2-0.4-0.2-0.5,0l-0.2,0.5
32
+ c-0.1,0.4-0.4,0.6-0.8,0.6H10c-0.1,0-0.2,0.1-0.3,0.2c-0.1,0.2,0,0.2,0.1,0.3l0.3,0.2c0.3,0.2,0.4,0.5,0.3,0.9L10.4,12.2z
33
+ M11.7,9.9c0.2,0.4,0.5,0.6,0.9,0.7c-0.3,0.3-0.4,0.6-0.4,1c-0.2-0.1-0.4-0.1-0.6-0.1c-0.2,0-0.4,0.1-0.5,0.1
34
+ c0.1-0.4-0.1-0.7-0.3-1C11.1,10.5,11.5,10.2,11.7,9.9z"/>
35
+ <path class="st1" d="M17.5,10.8l0.4-0.2c0.1-0.1,0.2-0.2,0.1-0.3c-0.1-0.1-0.2-0.2-0.3-0.2h-0.5c-0.4,0-0.7-0.2-0.8-0.6l-0.2-0.5
36
+ c-0.1-0.2-0.4-0.2-0.5,0l-0.2,0.5c-0.1,0.3-0.4,0.6-0.8,0.6h-0.5c-0.1,0-0.2,0.1-0.3,0.2c-0.1,0.2,0,0.2,0.1,0.3l0.3,0.2
37
+ c0.3,0.2,0.4,0.6,0.3,0.9l-0.2,0.4c-0.1,0.1,0,0.2,0.1,0.3c0.1,0.1,0.2,0.1,0.3,0l0.3-0.3c0.3-0.2,0.7-0.2,1,0l0.4,0.3
38
+ c0.1,0.1,0.1,0.1,0.2,0.1s0.1,0,0.2-0.1c0.1-0.1,0.2-0.2,0.1-0.3l-0.2-0.5C17.1,11.4,17.2,11,17.5,10.8z M16.6,11.6
39
+ c-0.2-0.1-0.4-0.1-0.6-0.1s-0.4,0.1-0.5,0.1c0.1-0.4-0.1-0.7-0.3-1c0.4-0.1,0.7-0.3,0.9-0.7c0.2,0.4,0.5,0.6,0.9,0.7
40
+ C16.7,10.9,16.5,11.2,16.6,11.6z"/>
41
+ <path class="st1" d="M21.8,10.8l0.4-0.2c0.1-0.1,0.2-0.2,0.1-0.3c-0.1-0.1-0.2-0.2-0.3-0.2h-0.5c-0.4,0-0.7-0.2-0.8-0.6l-0.2-0.5
42
+ c-0.1-0.1-0.2-0.2-0.3-0.2S20.1,8.8,20,9l-0.2,0.5c-0.1,0.3-0.4,0.6-0.8,0.6h-0.5c-0.1,0-0.2,0.1-0.3,0.2c-0.1,0.2,0,0.2,0.1,0.3
43
+ l0.3,0.2c0.3,0.2,0.4,0.6,0.3,0.9l-0.2,0.4c-0.1,0.1,0,0.2,0.1,0.3c0.1,0.1,0.2,0.1,0.3,0l0.3-0.3c0.3-0.2,0.7-0.2,1,0l0.4,0.3
44
+ c0.1,0.1,0.1,0.1,0.2,0.1s0.1,0,0.2-0.1c0.2-0.1,0.2-0.3,0.2-0.4l-0.2-0.5C21.3,11.4,21.5,11,21.8,10.8z M20.9,11.6
45
+ c-0.2-0.1-0.4-0.1-0.6-0.1c-0.2,0-0.4,0.1-0.5,0.1c0.1-0.4-0.1-0.7-0.3-1c0.4-0.1,0.7-0.3,0.9-0.7c0.2,0.4,0.5,0.6,0.9,0.7
46
+ C21,10.9,20.9,11.2,20.9,11.6z"/>
47
+ </g>
48
+ </svg>
assets/imgs/admin/support-call.svg ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+ width="40px" height="32px" viewBox="0 0 40 32" style="enable-background:new 0 0 40 32;" xml:space="preserve">
6
+ <style type="text/css">
7
+ .st0{fill:url(#SVGID_1_);}
8
+ </style>
9
+ <g>
10
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="4.1576" y1="2.804" x2="35.2535" y2="33.8998">
11
+ <stop offset="0" style="stop-color:#E2498A"/>
12
+ <stop offset="1" style="stop-color:#5A2ED2"/>
13
+ </linearGradient>
14
+ <path class="st0" d="M34.9,14.7c-0.1-3.5-1.4-6.9-3.7-9.5C28.4,1.9,24.3,0,20,0S11.6,1.9,8.8,5.1c-2.4,2.7-3.6,6.1-3.7,9.7
15
+ C2.2,15.3,0,17.7,0,20.7v0.1C0,24.2,2.8,27,6.1,27h4.5c2.1,3,5.5,5,9.4,5c5.6,0,10.5-4.2,11.2-9.8l0.8-5.6c0.5-3.5-0.6-6.9-2.9-9.6
16
+ S23.5,2.8,20,2.8S13.2,4.3,10.9,7S7.5,13.1,8,16.5l0.8,5.6c0.2,1.4,0.6,2.7,1.2,3.8H7.9c-0.5-1.1-0.8-2.3-1-3.6l-0.8-5.6
17
+ C6,16.2,6,15.8,6,15.3c0-0.1,0.1-0.2,0.1-0.3s0-0.1,0-0.2c0-3.4,1.2-6.6,3.4-9.2C12.1,2.7,16,1,20,1s7.8,1.7,10.5,4.8
18
+ c2.2,2.5,3.4,5.8,3.4,9.1c0,0.1,0,0.1,0,0.2c0,0.1,0,0.2,0,0.2c0,0.5-0.1,1-0.1,1.5L33,22.5c-0.2,1.5-0.6,2.9-1.1,3.8
19
+ c-0.1,0.2-0.1,0.3,0,0.5s0.3,0.2,0.4,0.2h1.6c3.3,0,6.1-2.8,6.1-6.3C40,17.7,37.8,15.1,34.9,14.7z M9.7,22L9,16.4
20
+ c-0.4-3.2,0.5-6.4,2.6-8.8s5.2-3.8,8.4-3.8s6.2,1.4,8.4,3.8c2.1,2.4,3.1,5.6,2.6,8.8L30.2,22c-0.7,5.1-5.1,9-10.2,9
21
+ c-3.3,0-6.2-1.6-8.1-4H15l0,0c0.2,1.1,1.2,2,2.5,2h4c1.4,0,2.5-1.1,2.5-2.5S22.9,24,21.5,24h-4c-1.2,0-2.2,0.9-2.5,2l0,0h-3.9
22
+ C10.4,24.8,9.9,23.5,9.7,22z M16,26.5c0-0.8,0.7-1.5,1.5-1.5h4c0.8,0,1.5,0.7,1.5,1.5S22.3,28,21.5,28h-4C16.7,28,16,27.3,16,26.5z
23
+ M6.8,26H6.1C3.3,26,1,23.7,1,20.9v-0.1c0-2.5,1.8-4.5,4.1-5c0,0.4,0,0.8,0.1,1.2L6,22.6C6.1,23.8,6.4,24.9,6.8,26z M33.9,26h-0.8
24
+ c0.4-0.9,0.7-2.1,0.8-3.4l0.8-5.7c0.1-0.4,0.1-0.9,0.1-1.3c2.4,0.5,4.1,2.5,4.1,5.1C39,23.7,36.7,26,33.9,26z"/>
25
+ </g>
26
+ </svg>
assets/imgs/admin/translate-video-cover.jpg ADDED
Binary file
assets/imgs/happy-addons-placeholder-small.jpg DELETED
Binary file
assets/imgs/placeholder.jpg CHANGED
Binary file
assets/js/happy-addons.js CHANGED
@@ -24,6 +24,43 @@
24
  }
25
  }
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  var HandleImageCompare = function($scope) {
28
  var $item = $scope.find('.hajs-image-comparison'),
29
  settings = $item.getHappySettings(),
@@ -42,18 +79,24 @@
42
 
43
  var HandleJustifiedGallery = function($scope) {
44
  var $item = $scope.find('.hajs-justified-gallery'),
45
- settings = $item.getHappySettings()
 
 
46
  $item.justifiedGallery($.extend({}, {
47
  rowHeight: 150,
48
  lastRow: 'justify',
49
  margins: 10,
50
  }, settings));
51
 
 
 
52
  initFilterable($scope, function(filter) {
53
  $item.justifiedGallery({
54
  lastRow: (filter === '*' ? settings.lastRow : 'nojustify'),
55
  filter: filter
56
  });
 
 
57
  });
58
  };
59
 
@@ -297,12 +340,15 @@
297
  self.$container.isotope({
298
  filter: filter
299
  });
 
 
 
300
  });
301
  },
302
 
303
  onElementChange: function(changedProp) {
304
- if (['layout', 'image_height', 'columns', 'image_margin'].indexOf(changedProp) !== -1) {
305
- this.run()
306
  }
307
  },
308
 
@@ -313,6 +359,8 @@
313
  this.$container.imagesLoaded().progress(function() {
314
  self.$container.isotope('layout');
315
  });
 
 
316
  }
317
  });
318
 
24
  }
25
  }
26
 
27
+ function initPopupGallery($scope, selector, hasPopup, key) {
28
+ if ( ! $.fn.magnificPopup ) {
29
+ return;
30
+ }
31
+
32
+ if ( ! hasPopup ) {
33
+ $.magnificPopup.close();
34
+ return;
35
+ }
36
+
37
+ $scope.on('click', selector, function(event) {
38
+ event.stopPropagation();
39
+ });
40
+
41
+ $scope.find(selector).magnificPopup({
42
+ key: key,
43
+ type: 'image',
44
+ image: {
45
+ titleSrc: function(item) {
46
+ return item.el.attr('title') ? item.el.attr('title') : item.el.find('img').attr('alt');
47
+ }
48
+ },
49
+ gallery: {
50
+ enabled: true,
51
+ preload: [1,2]
52
+ },
53
+ zoom: {
54
+ enabled: true,
55
+ duration: 300,
56
+ easing: 'ease-in-out',
57
+ opener: function(openerElement) {
58
+ return openerElement.is('img') ? openerElement : openerElement.find('img');
59
+ }
60
+ }
61
+ });
62
+ }
63
+
64
  var HandleImageCompare = function($scope) {
65
  var $item = $scope.find('.hajs-image-comparison'),
66
  settings = $item.getHappySettings(),
79
 
80
  var HandleJustifiedGallery = function($scope) {
81
  var $item = $scope.find('.hajs-justified-gallery'),
82
+ settings = $item.getHappySettings(),
83
+ hasPopup = settings.enable_popup;
84
+
85
  $item.justifiedGallery($.extend({}, {
86
  rowHeight: 150,
87
  lastRow: 'justify',
88
  margins: 10,
89
  }, settings));
90
 
91
+ initPopupGallery($scope, '.ha-js-popup', hasPopup, 'justifiedgallery');
92
+
93
  initFilterable($scope, function(filter) {
94
  $item.justifiedGallery({
95
  lastRow: (filter === '*' ? settings.lastRow : 'nojustify'),
96
  filter: filter
97
  });
98
+ var selector = filter !== '*' ? filter : '.ha-js-popup';
99
+ initPopupGallery($scope, selector, hasPopup, 'justifiedgallery');
100
  });
101
  };
102
 
340
  self.$container.isotope({
341
  filter: filter
342
  });
343
+
344
+ var selector = filter !== '*' ? filter : '.ha-js-popup';
345
+ initPopupGallery(self.$element, selector, self.getElementSettings('enable_popup'), 'imagegrid');
346
  });
347
  },
348
 
349
  onElementChange: function(changedProp) {
350
+ if (['layout', 'image_height', 'columns', 'image_margin', 'enable_popup'].indexOf(changedProp) !== -1) {
351
+ this.run();
352
  }
353
  },
354
 
359
  this.$container.imagesLoaded().progress(function() {
360
  self.$container.isotope('layout');
361
  });
362
+
363
+ initPopupGallery(this.$element, '.ha-js-popup', this.getElementSettings('enable_popup'), 'imagegrid');
364
  }
365
  });
366
 
assets/js/happy-addons.min.js CHANGED
@@ -1 +1 @@
1
- "use strict";!function(t,e){function i(e,i){var n=e.find(".hajs-gallery-filter");n.length&&n.on("click","button",function(e){e.stopPropagation();var n=t(this);n.parent().addClass("ha-filter-active").siblings().removeClass("ha-filter-active"),i(n.data("filter"))})}var n=t(e);t.fn.getHappySettings=function(){return this.data("happy-settings")};var s=function(t){var e=t.find(".hajs-image-comparison"),i=e.getHappySettings();i[{on_hover:"move_slider_on_hover",on_swipe:"move_with_handle_only",on_click:"click_to_move"}[i.move_handle||"on_swipe"]]=!0,delete i.move_handle,e.imagesLoaded().done(function(){e.twentytwenty(i)})},o=function(e){var n=e.find(".hajs-justified-gallery"),s=n.getHappySettings();n.justifiedGallery(t.extend({},{rowHeight:150,lastRow:"justify",margins:10},s)),i(e,function(t){n.justifiedGallery({lastRow:"*"===t?s.lastRow:"nojustify",filter:t})})};n.on("elementor/frontend/init",function(){var e=elementorFrontend,n=elementorModules,a=n.frontend.handlers.Base.extend({onInit:function(){n.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.widgetContainer=this.$element.find(".elementor-widget-container")[0],this.initFloatingEffects(),this.initBackgroundOverlay()},initBackgroundOverlay:function(){this.isEdit&&this.$element.addClass("ha-has-background-overlay")},getDefaultSettings:function(){return{targets:this.widgetContainer,loop:!0,direction:"alternate",easing:"easeInOutSine"}},onElementChange:function(){this.animation&&this.animation.restart(),this.initFloatingEffects()},getConfig:function(t){return this.getElementSettings("ha_floating_fx_"+t)},initFloatingEffects:function(){var t=this.getDefaultSettings();this.getConfig("translate_toggle")&&((this.getConfig("translate_x.size")||this.getConfig("translate_x.sizes.to"))&&(t.translateX={value:[this.getConfig("translate_x.sizes.from")||0,this.getConfig("translate_x.size")||this.getConfig("translate_x.sizes.to")],duration:this.getConfig("translate_duration.size"),delay:this.getConfig("translate_delay.size")||0}),(this.getConfig("translate_y.size")||this.getConfig("translate_y.sizes.to"))&&(t.translateY={value:[this.getConfig("translate_y.sizes.from")||0,this.getConfig("translate_y.size")||this.getConfig("translate_y.sizes.to")],duration:this.getConfig("translate_duration.size"),delay:this.getConfig("translate_delay.size")||0})),this.getConfig("rotate_toggle")&&((this.getConfig("rotate_x.size")||this.getConfig("rotate_x.sizes.to"))&&(t.rotateX={value:[this.getConfig("rotate_x.sizes.from")||0,this.getConfig("rotate_x.size")||this.getConfig("rotate_x.sizes.to")],duration:this.getConfig("rotate_duration.size"),delay:this.getConfig("rotate_delay.size")||0}),(this.getConfig("rotate_y.size")||this.getConfig("rotate_y.sizes.to"))&&(t.rotateY={value:[this.getConfig("rotate_y.sizes.from")||0,this.getConfig("rotate_y.size")||this.getConfig("rotate_y.sizes.to")],duration:this.getConfig("rotate_duration.size"),delay:this.getConfig("rotate_delay.size")||0}),(this.getConfig("rotate_z.size")||this.getConfig("rotate_z.sizes.to"))&&(t.rotateZ={value:[this.getConfig("rotate_z.sizes.from")||0,this.getConfig("rotate_z.size")||this.getConfig("rotate_z.sizes.to")],duration:this.getConfig("rotate_duration.size"),delay:this.getConfig("rotate_delay.size")||0})),this.getConfig("scale_toggle")&&((this.getConfig("scale_x.size")||this.getConfig("scale_x.sizes.to"))&&(t.scaleX={value:[this.getConfig("scale_x.sizes.from")||0,this.getConfig("scale_x.size")||this.getConfig("scale_x.sizes.to")],duration:this.getConfig("scale_duration.size"),delay:this.getConfig("scale_delay.size")||0}),(this.getConfig("scale_y.size")||this.getConfig("scale_y.sizes.to"))&&(t.scaleY={value:[this.getConfig("scale_y.sizes.from")||0,this.getConfig("scale_y.size")||this.getConfig("scale_y.sizes.to")],duration:this.getConfig("scale_duration.size"),delay:this.getConfig("scale_delay.size")||0})),(this.getConfig("translate_toggle")||this.getConfig("rotate_toggle")||this.getConfig("scale_toggle"))&&(this.widgetContainer.style.setProperty("will-change","transform"),this.animation=anime(t))}}),r=n.frontend.handlers.Base.extend({onInit:function(){n.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.$container=this.$element.find(".hajs-slick"),this.run()},isCarousel:function(){return this.$element.hasClass("ha-carousel")},getDefaultSettings:function(){return{arrows:!1,dots:!1,checkVisible:!1,infinite:!0,slidesToShow:this.isCarousel()?3:1,rows:0,prevArrow:'<button type="button" class="slick-prev"><i class="fa fa-chevron-left"></i></button>',nextArrow:'<button type="button" class="slick-next"><i class="fa fa-chevron-right"></i></button>'}},onElementChange:function(){this.$container.slick("unslick"),this.run()},getReadySettings:function(){var i={infinite:!!this.getElementSettings("loop"),autoplay:!!this.getElementSettings("autoplay"),autoplaySpeed:this.getElementSettings("autoplay_speed"),speed:this.getElementSettings("animation_speed"),centerMode:!!this.getElementSettings("center"),vertical:!!this.getElementSettings("vertical"),slidesToScroll:1};switch(this.getElementSettings("navigation")){case"arrow":i.arrows=!0;break;case"dots":i.dots=!0;break;case"both":i.arrows=!0,i.dots=!0}return this.isCarousel()&&(i.slidesToShow=this.getElementSettings("slides_to_show")||3,i.responsive=[{breakpoint:e.config.breakpoints.lg,settings:{slidesToShow:this.getElementSettings("slides_to_show_tablet")||i.slidesToShow}},{breakpoint:e.config.breakpoints.md,settings:{slidesToShow:this.getElementSettings("slides_to_show_mobile")||this.getElementSettings("slides_to_show_tablet")||i.slidesToShow}}]),t.extend({},this.getDefaultSettings(),i)},run:function(){this.$container.slick(this.getReadySettings())}}),l=function(t){e.waypoint(t,function(){var e=t.find(".ha-number-text");e.numerator(e.data("animation"))})},g=function(i){e.waypoint(i,function(){i.find(".ha-skill-level").each(function(){var e=t(this),i=e.find(".ha-skill-level-text"),n=e.data("level");e.animate({width:n+"%"},500),i.numerator({toValue:n+"%",duration:1300,onComplete:function(){i.append("%")}})})})},h=n.frontend.handlers.Base.extend({onInit:function(){n.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.$container=this.$element.find(".hajs-isotope"),this.run(),this.runFilter()},getLayoutMode:function(){var t=this.getElementSettings("layout");return"even"===t?"masonry":t},getDefaultSettings:function(){return{itemSelector:".ha-image-grid-item",percentPosition:!0,layoutMode:this.getLayoutMode()}},runFilter:function(){var t=this;i(this.$element,function(e){t.$container.isotope({filter:e})})},onElementChange:function(t){-1!==["layout","image_height","columns","image_margin"].indexOf(t)&&this.run()},run:function(){var t=this;this.$container.isotope(t.getDefaultSettings()),this.$container.imagesLoaded().progress(function(){t.$container.isotope("layout")})}}),f={"ha-image-compare.default":s,"ha-justified-gallery.default":o,"ha-number.default":l,"ha-skills.default":g};t.each(f,function(t,i){e.hooks.addAction("frontend/element_ready/"+t,i)});var d={"ha-slider.default":r,"ha-carousel.default":r,"ha-image-grid.default":h,widget:a};t.each(d,function(t,i){e.hooks.addAction("frontend/element_ready/"+t,function(t){e.elementsHandler.addHandler(i,{$element:t})})})})}(jQuery,window);
1
+ "use strict";!function(t,e){function i(e,i){var n=e.find(".hajs-gallery-filter");n.length&&n.on("click","button",function(e){e.stopPropagation();var n=t(this);n.parent().addClass("ha-filter-active").siblings().removeClass("ha-filter-active"),i(n.data("filter"))})}function n(e,i,n,s){if(t.fn.magnificPopup){if(!n)return void t.magnificPopup.close();e.on("click",i,function(t){t.stopPropagation()}),e.find(i).magnificPopup({key:s,type:"image",image:{titleSrc:function(t){return t.el.attr("title")?t.el.attr("title"):t.el.find("img").attr("alt")}},gallery:{enabled:!0,preload:[1,2]},zoom:{enabled:!0,duration:300,easing:"ease-in-out",opener:function(t){return t.is("img")?t:t.find("img")}}})}}var s=t(e);t.fn.getHappySettings=function(){return this.data("happy-settings")};var o=function(t){var e=t.find(".hajs-image-comparison"),i=e.getHappySettings();i[{on_hover:"move_slider_on_hover",on_swipe:"move_with_handle_only",on_click:"click_to_move"}[i.move_handle||"on_swipe"]]=!0,delete i.move_handle,e.imagesLoaded().done(function(){e.twentytwenty(i)})},a=function(e){var s=e.find(".hajs-justified-gallery"),o=s.getHappySettings(),a=o.enable_popup;s.justifiedGallery(t.extend({},{rowHeight:150,lastRow:"justify",margins:10},o)),n(e,".ha-js-popup",a,"justifiedgallery"),i(e,function(t){s.justifiedGallery({lastRow:"*"===t?o.lastRow:"nojustify",filter:t}),n(e,"*"!==t?t:".ha-js-popup",a,"justifiedgallery")})};s.on("elementor/frontend/init",function(){var e=elementorFrontend,s=elementorModules,l=s.frontend.handlers.Base.extend({onInit:function(){s.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.widgetContainer=this.$element.find(".elementor-widget-container")[0],this.initFloatingEffects(),this.initBackgroundOverlay()},initBackgroundOverlay:function(){this.isEdit&&this.$element.addClass("ha-has-background-overlay")},getDefaultSettings:function(){return{targets:this.widgetContainer,loop:!0,direction:"alternate",easing:"easeInOutSine"}},onElementChange:function(){this.animation&&this.animation.restart(),this.initFloatingEffects()},getConfig:function(t){return this.getElementSettings("ha_floating_fx_"+t)},initFloatingEffects:function(){var t=this.getDefaultSettings();this.getConfig("translate_toggle")&&((this.getConfig("translate_x.size")||this.getConfig("translate_x.sizes.to"))&&(t.translateX={value:[this.getConfig("translate_x.sizes.from")||0,this.getConfig("translate_x.size")||this.getConfig("translate_x.sizes.to")],duration:this.getConfig("translate_duration.size"),delay:this.getConfig("translate_delay.size")||0}),(this.getConfig("translate_y.size")||this.getConfig("translate_y.sizes.to"))&&(t.translateY={value:[this.getConfig("translate_y.sizes.from")||0,this.getConfig("translate_y.size")||this.getConfig("translate_y.sizes.to")],duration:this.getConfig("translate_duration.size"),delay:this.getConfig("translate_delay.size")||0})),this.getConfig("rotate_toggle")&&((this.getConfig("rotate_x.size")||this.getConfig("rotate_x.sizes.to"))&&(t.rotateX={value:[this.getConfig("rotate_x.sizes.from")||0,this.getConfig("rotate_x.size")||this.getConfig("rotate_x.sizes.to")],duration:this.getConfig("rotate_duration.size"),delay:this.getConfig("rotate_delay.size")||0}),(this.getConfig("rotate_y.size")||this.getConfig("rotate_y.sizes.to"))&&(t.rotateY={value:[this.getConfig("rotate_y.sizes.from")||0,this.getConfig("rotate_y.size")||this.getConfig("rotate_y.sizes.to")],duration:this.getConfig("rotate_duration.size"),delay:this.getConfig("rotate_delay.size")||0}),(this.getConfig("rotate_z.size")||this.getConfig("rotate_z.sizes.to"))&&(t.rotateZ={value:[this.getConfig("rotate_z.sizes.from")||0,this.getConfig("rotate_z.size")||this.getConfig("rotate_z.sizes.to")],duration:this.getConfig("rotate_duration.size"),delay:this.getConfig("rotate_delay.size")||0})),this.getConfig("scale_toggle")&&((this.getConfig("scale_x.size")||this.getConfig("scale_x.sizes.to"))&&(t.scaleX={value:[this.getConfig("scale_x.sizes.from")||0,this.getConfig("scale_x.size")||this.getConfig("scale_x.sizes.to")],duration:this.getConfig("scale_duration.size"),delay:this.getConfig("scale_delay.size")||0}),(this.getConfig("scale_y.size")||this.getConfig("scale_y.sizes.to"))&&(t.scaleY={value:[this.getConfig("scale_y.sizes.from")||0,this.getConfig("scale_y.size")||this.getConfig("scale_y.sizes.to")],duration:this.getConfig("scale_duration.size"),delay:this.getConfig("scale_delay.size")||0})),(this.getConfig("translate_toggle")||this.getConfig("rotate_toggle")||this.getConfig("scale_toggle"))&&(this.widgetContainer.style.setProperty("will-change","transform"),this.animation=anime(t))}}),r=s.frontend.handlers.Base.extend({onInit:function(){s.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.$container=this.$element.find(".hajs-slick"),this.run()},isCarousel:function(){return this.$element.hasClass("ha-carousel")},getDefaultSettings:function(){return{arrows:!1,dots:!1,checkVisible:!1,infinite:!0,slidesToShow:this.isCarousel()?3:1,rows:0,prevArrow:'<button type="button" class="slick-prev"><i class="fa fa-chevron-left"></i></button>',nextArrow:'<button type="button" class="slick-next"><i class="fa fa-chevron-right"></i></button>'}},onElementChange:function(){this.$container.slick("unslick"),this.run()},getReadySettings:function(){var i={infinite:!!this.getElementSettings("loop"),autoplay:!!this.getElementSettings("autoplay"),autoplaySpeed:this.getElementSettings("autoplay_speed"),speed:this.getElementSettings("animation_speed"),centerMode:!!this.getElementSettings("center"),vertical:!!this.getElementSettings("vertical"),slidesToScroll:1};switch(this.getElementSettings("navigation")){case"arrow":i.arrows=!0;break;case"dots":i.dots=!0;break;case"both":i.arrows=!0,i.dots=!0}return this.isCarousel()&&(i.slidesToShow=this.getElementSettings("slides_to_show")||3,i.responsive=[{breakpoint:e.config.breakpoints.lg,settings:{slidesToShow:this.getElementSettings("slides_to_show_tablet")||i.slidesToShow}},{breakpoint:e.config.breakpoints.md,settings:{slidesToShow:this.getElementSettings("slides_to_show_mobile")||this.getElementSettings("slides_to_show_tablet")||i.slidesToShow}}]),t.extend({},this.getDefaultSettings(),i)},run:function(){this.$container.slick(this.getReadySettings())}}),g=function(t){e.waypoint(t,function(){var e=t.find(".ha-number-text");e.numerator(e.data("animation"))})},h=function(i){e.waypoint(i,function(){i.find(".ha-skill-level").each(function(){var e=t(this),i=e.find(".ha-skill-level-text"),n=e.data("level");e.animate({width:n+"%"},500),i.numerator({toValue:n+"%",duration:1300,onComplete:function(){i.append("%")}})})})},f=s.frontend.handlers.Base.extend({onInit:function(){s.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.$container=this.$element.find(".hajs-isotope"),this.run(),this.runFilter()},getLayoutMode:function(){var t=this.getElementSettings("layout");return"even"===t?"masonry":t},getDefaultSettings:function(){return{itemSelector:".ha-image-grid-item",percentPosition:!0,layoutMode:this.getLayoutMode()}},runFilter:function(){var t=this;i(this.$element,function(e){t.$container.isotope({filter:e});var i="*"!==e?e:".ha-js-popup";n(t.$element,i,t.getElementSettings("enable_popup"),"imagegrid")})},onElementChange:function(t){-1!==["layout","image_height","columns","image_margin","enable_popup"].indexOf(t)&&this.run()},run:function(){var t=this;this.$container.isotope(t.getDefaultSettings()),this.$container.imagesLoaded().progress(function(){t.$container.isotope("layout")}),n(this.$element,".ha-js-popup",this.getElementSettings("enable_popup"),"imagegrid")}}),d={"ha-image-compare.default":o,"ha-justified-gallery.default":a,"ha-number.default":g,"ha-skills.default":h};t.each(d,function(t,i){e.hooks.addAction("frontend/element_ready/"+t,i)});var u={"ha-slider.default":r,"ha-carousel.default":r,"ha-image-grid.default":f,widget:l};t.each(u,function(t,i){e.hooks.addAction("frontend/element_ready/"+t,function(t){e.elementsHandler.addHandler(i,{$element:t})})})})}(jQuery,window);
assets/vendor/magnific-popup/jquery.magnific-popup.min.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /*! Magnific Popup - v1.1.0 - 2016-02-20
2
+ * http://dimsemenov.com/plugins/magnific-popup/
3
+ * Copyright (c) 2016 Dmitry Semenov; */
4
+ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isLowIE=b.isIE8=document.all&&!document.addEventListener,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e<h.length;e++)if(g=h[e],g.parsed&&(g=g.el[0]),g===c.el[0]){b.index=e;break}}else b.items=a.isArray(c.items)?c.items:[c.items],b.index=c.index||0;if(b.isOpen)return void b.updateItemHTML();b.types=[],f="",c.mainEl&&c.mainEl.length?b.ev=c.mainEl.eq(0):b.ev=d,c.key?(b.popupsCache[c.key]||(b.popupsCache[c.key]={}),b.currTemplate=b.popupsCache[c.key]):b.currTemplate={},b.st=a.extend(!0,{},a.magnificPopup.defaults,c),b.fixedContentPos="auto"===b.st.fixedContentPos?!b.probablyMobile:b.st.fixedContentPos,b.st.modal&&(b.st.closeOnContentClick=!1,b.st.closeOnBgClick=!1,b.st.showCloseBtn=!1,b.st.enableEscapeKey=!1),b.bgOverlay||(b.bgOverlay=x("bg").on("click"+p,function(){b.close()}),b.wrap=x("wrap").attr("tabindex",-1).on("click"+p,function(a){b._checkIfClose(a.target)&&b.close()}),b.container=x("container",b.wrap)),b.contentContainer=x("content"),b.st.preloader&&(b.preloader=x("preloader",b.container,b.st.tLoading));var i=a.magnificPopup.modules;for(e=0;e<i.length;e++){var j=i[e];j=j.charAt(0).toUpperCase()+j.slice(1),b["init"+j].call(b)}y("BeforeOpen"),b.st.showCloseBtn&&(b.st.closeBtnInside?(w(l,function(a,b,c,d){c.close_replaceWith=z(d.type)}),f+=" mfp-close-btn-in"):b.wrap.append(z())),b.st.alignTop&&(f+=" mfp-align-top"),b.fixedContentPos?b.wrap.css({overflow:b.st.overflowY,overflowX:"hidden",overflowY:b.st.overflowY}):b.wrap.css({top:v.scrollTop(),position:"absolute"}),(b.st.fixedBgPos===!1||"auto"===b.st.fixedBgPos&&!b.fixedContentPos)&&b.bgOverlay.css({height:d.height(),position:"absolute"}),b.st.enableEscapeKey&&d.on("keyup"+p,function(a){27===a.keyCode&&b.close()}),v.on("resize"+p,function(){b.updateSize()}),b.st.closeOnContentClick||(f+=" mfp-auto-cursor"),f&&b.wrap.addClass(f);var k=b.wH=v.height(),n={};if(b.fixedContentPos&&b._hasScrollBar(k)){var o=b._getScrollbarSize();o&&(n.marginRight=o)}b.fixedContentPos&&(b.isIE7?a("body, html").css("overflow","hidden"):n.overflow="hidden");var r=b.st.mainClass;return b.isIE7&&(r+=" mfp-ie7"),r&&b._addClassToMFP(r),b.updateItemHTML(),y("BuildControls"),a("html").css(n),b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo||a(document.body)),b._lastFocusedEl=document.activeElement,setTimeout(function(){b.content?(b._addClassToMFP(q),b._setFocus()):b.bgOverlay.addClass(q),d.on("focusin"+p,b._onFocusIn)},16),b.isOpen=!0,b.updateSize(k),y(m),c},close:function(){b.isOpen&&(y(i),b.isOpen=!1,b.st.removalDelay&&!b.isLowIE&&b.supportsTransition?(b._addClassToMFP(r),setTimeout(function(){b._close()},b.st.removalDelay)):b._close())},_close:function(){y(h);var c=r+" "+q+" ";if(b.bgOverlay.detach(),b.wrap.detach(),b.container.empty(),b.st.mainClass&&(c+=b.st.mainClass+" "),b._removeClassFromMFP(c),b.fixedContentPos){var e={marginRight:""};b.isIE7?a("body, html").css("overflow",""):e.overflow="",a("html").css(e)}d.off("keyup"+p+" focusin"+p),b.ev.off(p),b.wrap.attr("class","mfp-wrap").removeAttr("style"),b.bgOverlay.attr("class","mfp-bg"),b.container.attr("class","mfp-container"),!b.st.showCloseBtn||b.st.closeBtnInside&&b.currTemplate[b.currItem.type]!==!0||b.currTemplate.closeBtn&&b.currTemplate.closeBtn.detach(),b.st.autoFocusLast&&b._lastFocusedEl&&a(b._lastFocusedEl).focus(),b.currItem=null,b.content=null,b.currTemplate=null,b.prevHeight=0,y(j)},updateSize:function(a){if(b.isIOS){var c=document.documentElement.clientWidth/window.innerWidth,d=window.innerHeight*c;b.wrap.css("height",d),b.wH=d}else b.wH=a||v.height();b.fixedContentPos||b.wrap.css("height",b.wH),y("Resize")},updateItemHTML:function(){var c=b.items[b.index];b.contentContainer.detach(),b.content&&b.content.detach(),c.parsed||(c=b.parseEl(b.index));var d=c.type;if(y("BeforeChange",[b.currItem?b.currItem.type:"",d]),b.currItem=c,!b.currTemplate[d]){var f=b.st[d]?b.st[d].markup:!1;y("FirstMarkupParse",f),f?b.currTemplate[d]=a(f):b.currTemplate[d]=!0}e&&e!==c.type&&b.container.removeClass("mfp-"+e+"-holder");var g=b["get"+d.charAt(0).toUpperCase()+d.slice(1)](c,b.currTemplate[d]);b.appendContent(g,d),c.preloaded=!0,y(n,c),e=c.type,b.container.prepend(b.contentContainer),y("AfterChange")},appendContent:function(a,c){b.content=a,a?b.st.showCloseBtn&&b.st.closeBtnInside&&b.currTemplate[c]===!0?b.content.find(".mfp-close").length||b.content.append(z()):b.content=a:b.content="",y(k),b.container.addClass("mfp-"+c+"-holder"),b.contentContainer.append(b.content)},parseEl:function(c){var d,e=b.items[c];if(e.tagName?e={el:a(e)}:(d=e.type,e={data:e,src:e.src}),e.el){for(var f=b.types,g=0;g<f.length;g++)if(e.el.hasClass("mfp-"+f[g])){d=f[g];break}e.src=e.el.attr("data-mfp-src"),e.src||(e.src=e.el.attr("href"))}return e.type=d||b.st.type||"inline",e.index=c,e.parsed=!0,b.items[c]=e,y("ElementParse",e),b.items[c]},addGroup:function(a,c){var d=function(d){d.mfpEl=this,b._openClick(d,a,c)};c||(c={});var e="click.magnificPopup";c.mainEl=a,c.items?(c.isObj=!0,a.off(e).on(e,d)):(c.isObj=!1,c.delegate?a.off(e).on(e,c.delegate,d):(c.items=a,a.off(e).on(e,d)))},_openClick:function(c,d,e){var f=void 0!==e.midClick?e.midClick:a.magnificPopup.defaults.midClick;if(f||!(2===c.which||c.ctrlKey||c.metaKey||c.altKey||c.shiftKey)){var g=void 0!==e.disableOn?e.disableOn:a.magnificPopup.defaults.disableOn;if(g)if(a.isFunction(g)){if(!g.call(b))return!0}else if(v.width()<g)return!0;c.type&&(c.preventDefault(),b.isOpen&&c.stopPropagation()),e.el=a(c.mfpEl),e.delegate&&(e.items=d.find(e.delegate)),b.open(e)}},updateStatus:function(a,d){if(b.preloader){c!==a&&b.container.removeClass("mfp-s-"+c),d||"loading"!==a||(d=b.st.tLoading);var e={status:a,text:d};y("UpdateStatus",e),a=e.status,d=e.text,b.preloader.html(d),b.preloader.find("a").on("click",function(a){a.stopImmediatePropagation()}),b.container.addClass("mfp-s-"+a),c=a}},_checkIfClose:function(c){if(!a(c).hasClass(s)){var d=b.st.closeOnContentClick,e=b.st.closeOnBgClick;if(d&&e)return!0;if(!b.content||a(c).hasClass("mfp-close")||b.preloader&&c===b.preloader[0])return!0;if(c===b.content[0]||a.contains(b.content[0],c)){if(d)return!0}else if(e&&a.contains(document,c))return!0;return!1}},_addClassToMFP:function(a){b.bgOverlay.addClass(a),b.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),b.wrap.removeClass(a)},_hasScrollBar:function(a){return(b.isIE7?d.height():document.body.scrollHeight)>(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(c,d){if(void 0===d||d===!1)return!0;if(e=c.split("_"),e.length>1){var f=b.find(p+"-"+e[0]);if(f.length>0){var g=e[1];"replaceWith"===g?f[0]!==d[0]&&f.replaceWith(d):"img"===g?f.is("img")?f.attr("src",d):f.replaceWith(a("<img>").attr("src",d).attr("class",f.attr("class"))):f.attr(e[1],d)}}else b.find(p+"-"+c).html(d)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&#215;</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("<div>");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery";return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s);e.click(function(){b.prev()}),f.click(function(){b.next()}),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('<img class="mfp-img" />').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()});
assets/vendor/magnific-popup/magnific-popup.css ADDED
@@ -0,0 +1,351 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Magnific Popup CSS */
2
+ .mfp-bg {
3
+ top: 0;
4
+ left: 0;
5
+ width: 100%;
6
+ height: 100%;
7
+ z-index: 1042;
8
+ overflow: hidden;
9
+ position: fixed;
10
+ background: #0b0b0b;
11
+ opacity: 0.8; }
12
+
13
+ .mfp-wrap {
14
+ top: 0;
15
+ left: 0;
16
+ width: 100%;
17
+ height: 100%;
18
+ z-index: 1043;
19
+ position: fixed;
20
+ outline: none !important;
21
+ -webkit-backface-visibility: hidden; }
22
+
23
+ .mfp-container {
24
+ text-align: center;
25
+ position: absolute;
26
+ width: 100%;
27
+ height: 100%;
28
+ left: 0;
29
+ top: 0;
30
+ padding: 0 8px;
31
+ box-sizing: border-box; }
32
+
33
+ .mfp-container:before {
34
+ content: '';
35
+ display: inline-block;
36
+ height: 100%;
37
+ vertical-align: middle; }
38
+
39
+ .mfp-align-top .mfp-container:before {
40
+ display: none; }
41
+
42
+ .mfp-content {
43
+ position: relative;
44
+ display: inline-block;
45
+ vertical-align: middle;
46
+ margin: 0 auto;
47
+ text-align: left;
48
+ z-index: 1045; }
49
+
50
+ .mfp-inline-holder .mfp-content,
51
+ .mfp-ajax-holder .mfp-content {
52
+ width: 100%;
53
+ cursor: auto; }
54
+
55
+ .mfp-ajax-cur {
56
+ cursor: progress; }
57
+
58
+ .mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
59
+ cursor: -moz-zoom-out;
60
+ cursor: -webkit-zoom-out;
61
+ cursor: zoom-out; }
62
+
63
+ .mfp-zoom {
64
+ cursor: pointer;
65
+ cursor: -webkit-zoom-in;
66
+ cursor: -moz-zoom-in;
67
+ cursor: zoom-in; }
68
+
69
+ .mfp-auto-cursor .mfp-content {
70
+ cursor: auto; }
71
+
72
+ .mfp-close,
73
+ .mfp-arrow,
74
+ .mfp-preloader,
75
+ .mfp-counter {
76
+ -webkit-user-select: none;
77
+ -moz-user-select: none;
78
+ user-select: none; }
79
+
80
+ .mfp-loading.mfp-figure {
81
+ display: none; }
82
+
83
+ .mfp-hide {
84
+ display: none !important; }
85
+
86
+ .mfp-preloader {
87
+ color: #CCC;
88
+ position: absolute;
89
+ top: 50%;
90
+ width: auto;
91
+ text-align: center;
92
+ margin-top: -0.8em;
93
+ left: 8px;
94
+ right: 8px;
95
+ z-index: 1044; }
96
+ .mfp-preloader a {
97
+ color: #CCC; }
98
+ .mfp-preloader a:hover {
99
+ color: #FFF; }
100
+
101
+ .mfp-s-ready .mfp-preloader {
102
+ display: none; }
103
+
104
+ .mfp-s-error .mfp-content {
105
+ display: none; }
106
+
107
+ button.mfp-close,
108
+ button.mfp-arrow {
109
+ overflow: visible;
110
+ cursor: pointer;
111
+ background: transparent;
112
+ border: 0;
113
+ -webkit-appearance: none;
114
+ display: block;
115
+ outline: none;
116
+ padding: 0;
117
+ z-index: 1046;
118
+ box-shadow: none;
119
+ touch-action: manipulation; }
120
+
121
+ button::-moz-focus-inner {
122
+ padding: 0;
123
+ border: 0; }
124
+
125
+ .mfp-close {
126
+ width: 44px;
127
+ height: 44px;
128
+ line-height: 44px;
129
+ position: absolute;
130
+ right: 0;
131
+ top: 0;
132
+ text-decoration: none;
133
+ text-align: center;
134
+ opacity: 0.65;
135
+ padding: 0 0 18px 10px;
136
+ color: #FFF;
137
+ font-style: normal;
138
+ font-size: 28px;
139
+ font-family: Arial, Baskerville, monospace; }
140
+ .mfp-close:hover,
141
+ .mfp-close:focus {
142
+ opacity: 1; }
143
+ .mfp-close:active {
144
+ top: 1px; }
145
+
146
+ .mfp-close-btn-in .mfp-close {
147
+ color: #333; }
148
+
149
+ .mfp-image-holder .mfp-close,
150
+ .mfp-iframe-holder .mfp-close {
151
+ color: #FFF;
152
+ right: -6px;
153
+ text-align: right;
154
+ padding-right: 6px;
155
+ width: 100%; }
156
+
157
+ .mfp-counter {
158
+ position: absolute;
159
+ top: 0;
160
+ right: 0;
161
+ color: #CCC;
162
+ font-size: 12px;
163
+ line-height: 18px;
164
+ white-space: nowrap; }
165
+
166
+ .mfp-arrow {
167
+ position: absolute;
168
+ opacity: 0.65;
169
+ margin: 0;
170
+ top: 50%;
171
+ margin-top: -55px;
172
+ padding: 0;
173
+ width: 90px;
174
+ height: 110px;
175
+ -webkit-tap-highlight-color: transparent; }
176
+ .mfp-arrow:active {
177
+ margin-top: -54px; }
178
+ .mfp-arrow:hover,
179
+ .mfp-arrow:focus {
180
+ opacity: 1; }
181
+ .mfp-arrow:before,
182
+ .mfp-arrow:after {
183
+ content: '';
184
+ display: block;
185
+ width: 0;
186
+ height: 0;
187
+ position: absolute;
188
+ left: 0;
189
+ top: 0;
190
+ margin-top: 35px;
191
+ margin-left: 35px;
192
+ border: medium inset transparent; }
193
+ .mfp-arrow:after {
194
+ border-top-width: 13px;
195
+ border-bottom-width: 13px;
196
+ top: 8px; }
197
+ .mfp-arrow:before {
198
+ border-top-width: 21px;
199
+ border-bottom-width: 21px;
200
+ opacity: 0.7; }
201
+
202
+ .mfp-arrow-left {
203
+ left: 0; }
204
+ .mfp-arrow-left:after {
205
+ border-right: 17px solid #FFF;
206
+ margin-left: 31px; }
207
+ .mfp-arrow-left:before {
208
+ margin-left: 25px;
209
+ border-right: 27px solid #3F3F3F; }
210
+
211
+ .mfp-arrow-right {
212
+ right: 0; }
213
+ .mfp-arrow-right:after {
214
+ border-left: 17px solid #FFF;
215
+ margin-left: 39px; }
216
+ .mfp-arrow-right:before {
217
+ border-left: 27px solid #3F3F3F; }
218
+
219
+ .mfp-iframe-holder {
220
+ padding-top: 40px;
221
+ padding-bottom: 40px; }
222
+ .mfp-iframe-holder .mfp-content {
223
+ line-height: 0;
224
+ width: 100%;
225
+ max-width: 900px; }
226
+ .mfp-iframe-holder .mfp-close {
227
+ top: -40px; }
228
+
229
+ .mfp-iframe-scaler {
230
+ width: 100%;
231
+ height: 0;
232
+ overflow: hidden;
233
+ padding-top: 56.25%; }
234
+ .mfp-iframe-scaler iframe {
235
+ position: absolute;
236
+ display: block;
237
+ top: 0;
238
+ left: 0;
239
+ width: 100%;
240
+ height: 100%;
241
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
242
+ background: #000; }
243
+
244
+ /* Main image in popup */
245
+ img.mfp-img {
246
+ width: auto;
247
+ max-width: 100%;
248
+ height: auto;
249
+ display: block;
250
+ line-height: 0;
251
+ box-sizing: border-box;
252
+ padding: 40px 0 40px;
253
+ margin: 0 auto; }
254
+
255
+ /* The shadow behind the image */
256
+ .mfp-figure {
257
+ line-height: 0; }
258
+ .mfp-figure:after {
259
+ content: '';
260
+ position: absolute;
261
+ left: 0;
262
+ top: 40px;
263
+ bottom: 40px;
264
+ display: block;
265
+ right: 0;
266
+ width: auto;
267
+ height: auto;
268
+ z-index: -1;
269
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
270
+ background: #444; }
271
+ .mfp-figure small {
272
+ color: #BDBDBD;
273
+ display: block;
274
+ font-size: 12px;
275
+ line-height: 14px; }
276
+ .mfp-figure figure {
277
+ margin: 0; }
278
+
279
+ .mfp-bottom-bar {
280
+ margin-top: -36px;
281
+ position: absolute;
282
+ top: 100%;
283
+ left: 0;
284
+ width: 100%;
285
+ cursor: auto; }
286
+
287
+ .mfp-title {
288
+ text-align: left;
289
+ line-height: 18px;
290
+ color: #F3F3F3;
291
+ word-wrap: break-word;
292
+ padding-right: 36px; }
293
+
294
+ .mfp-image-holder .mfp-content {
295
+ max-width: 100%; }
296
+
297
+ .mfp-gallery .mfp-image-holder .mfp-figure {
298
+ cursor: pointer; }
299
+
300
+ @media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
301
+ /**
302
+ * Remove all paddings around the image on small screen
303
+ */
304
+ .mfp-img-mobile .mfp-image-holder {
305
+ padding-left: 0;
306
+ padding-right: 0; }
307
+ .mfp-img-mobile img.mfp-img {
308
+ padding: 0; }
309
+ .mfp-img-mobile .mfp-figure:after {
310
+ top: 0;
311
+ bottom: 0; }
312
+ .mfp-img-mobile .mfp-figure small {
313
+ display: inline;
314
+ margin-left: 5px; }
315
+ .mfp-img-mobile .mfp-bottom-bar {
316
+ background: rgba(0, 0, 0, 0.6);
317
+ bottom: 0;
318
+ margin: 0;
319
+ top: auto;
320
+ padding: 3px 5px;
321
+ position: fixed;
322
+ box-sizing: border-box; }
323
+ .mfp-img-mobile .mfp-bottom-bar:empty {
324
+ padding: 0; }
325
+ .mfp-img-mobile .mfp-counter {
326
+ right: 5px;
327
+ top: 3px; }
328
+ .mfp-img-mobile .mfp-close {
329
+ top: 0;
330
+ right: 0;
331
+ width: 35px;
332
+ height: 35px;
333
+ line-height: 35px;
334
+ background: rgba(0, 0, 0, 0.6);
335
+ position: fixed;
336
+ text-align: center;
337
+ padding: 0; } }
338
+
339
+ @media all and (max-width: 900px) {
340
+ .mfp-arrow {
341
+ -webkit-transform: scale(0.75);
342
+ transform: scale(0.75); }
343
+ .mfp-arrow-left {
344
+ -webkit-transform-origin: 0;
345
+ transform-origin: 0; }
346
+ .mfp-arrow-right {
347
+ -webkit-transform-origin: 100%;
348
+ transform-origin: 100%; }
349
+ .mfp-container {
350
+ padding-left: 6px;
351
+ padding-right: 6px; } }
base.php CHANGED
@@ -14,8 +14,12 @@ class Base {
14
 
15
  const MINIMUM_PHP_VERSION = '5.4';
16
 
 
 
17
  private static $instance = null;
18
 
 
 
19
  public static function instance() {
20
  if ( is_null( self::$instance ) ) {
21
  self::$instance = new self();
@@ -26,6 +30,12 @@ class Base {
26
  private function __construct() {
27
  add_action( 'init', [ $this, 'i18n' ] );
28
  add_action( 'plugins_loaded', [ $this, 'init' ] );
 
 
 
 
 
 
29
  }
30
 
31
  public function i18n() {
@@ -73,6 +83,7 @@ class Base {
73
 
74
  if ( is_admin() ) {
75
  Updater::init();
 
76
  }
77
 
78
  do_action( 'happyaddons_loaded' );
@@ -88,14 +99,14 @@ class Base {
88
  require_once HAPPY_ADDONS_DIR_PATH . 'vendor/appsero/src/Client.php';
89
  }
90
 
91
- $client = new \Appsero\Client(
92
  '70b96801-94cc-4501-a005-8f9a4e20e152',
93
  'Happy Elementor Addons',
94
  HAPPY_ADDONS__FILE__
95
  );
96
 
97
  // Active insights
98
- $client->insights()->init();
99
  }
100
 
101
  public function include_files() {
@@ -113,6 +124,7 @@ class Base {
113
  if ( is_admin() ) {
114
  require( HAPPY_ADDONS_DIR_PATH . 'classes/class.communicator.php' );
115
  require( HAPPY_ADDONS_DIR_PATH . 'classes/updater.php' );
 
116
  }
117
 
118
  if ( is_user_logged_in() ) {
14
 
15
  const MINIMUM_PHP_VERSION = '5.4';
16
 
17
+ const ACTIVATION_FLAG_DB_KEY = 'happyaddons_do_activation_direct';
18
+
19
  private static $instance = null;
20
 
21
+ public $appsero = null;
22
+
23
  public static function instance() {
24
  if ( is_null( self::$instance ) ) {
25
  self::$instance = new self();
30
  private function __construct() {
31
  add_action( 'init', [ $this, 'i18n' ] );
32
  add_action( 'plugins_loaded', [ $this, 'init' ] );
33
+
34
+ register_activation_hook( HAPPY_ADDONS__FILE__, [ $this, 'register_activation_hook' ] );
35
+ }
36
+
37
+ public function register_activation_hook() {
38
+ add_option( self::ACTIVATION_FLAG_DB_KEY, true );
39
  }
40
 
41
  public function i18n() {
83
 
84
  if ( is_admin() ) {
85
  Updater::init();
86
+ Dashboard::init();
87
  }
88
 
89
  do_action( 'happyaddons_loaded' );
99
  require_once HAPPY_ADDONS_DIR_PATH . 'vendor/appsero/src/Client.php';
100
  }
101
 
102
+ $this->appsero = new \Appsero\Client(
103
  '70b96801-94cc-4501-a005-8f9a4e20e152',
104
  'Happy Elementor Addons',
105
  HAPPY_ADDONS__FILE__
106
  );
107
 
108
  // Active insights
109
+ $this->appsero->insights()->init();
110
  }
111
 
112
  public function include_files() {
124
  if ( is_admin() ) {
125
  require( HAPPY_ADDONS_DIR_PATH . 'classes/class.communicator.php' );
126
  require( HAPPY_ADDONS_DIR_PATH . 'classes/updater.php' );
127
+ require( HAPPY_ADDONS_DIR_PATH . 'classes/dashboard.php' );
128
  }
129
 
130
  if ( is_user_logged_in() ) {
base/widget-base.php CHANGED
@@ -68,37 +68,17 @@ abstract class Base extends Widget_Base {
68
  return rtrim( $html_class );
69
  }
70
 
71
- /**
72
- * Register faq controls
73
- */
74
- protected function register_faq_controls() {
75
- $this->start_controls_section(
76
- '_faq',
77
- [
78
- 'label' => __( 'FAQs', 'happy-elementor-addons' ),
79
- 'tab' => Controls_Manager::TAB_CONTENT,
80
- ]
81
- );
82
-
83
- $this->add_control(
84
- '_faq_notes',
85
- [
86
- 'type' => Controls_Manager::RAW_HTML,
87
- 'raw' => __( 'A very important message to show in the panel.', 'happy-elementor-addons' ),
88
- 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
89
- ]
90
- );
91
-
92
- $this->end_controls_section();
93
- }
94
-
95
  /**
96
  * Register widget controls
97
  */
98
  protected function _register_controls() {
 
 
99
  $this->register_content_controls();
100
 
101
  $this->register_style_controls();
 
 
102
  }
103
 
104
  /**
@@ -152,7 +132,7 @@ abstract class Base extends Widget_Base {
152
  * @param string $setting_key Additional settings key in case $key != $setting_key
153
  */
154
  protected function add_inline_editing_attributes( $key, $toolbar = 'basic', $setting_key = '' ) {
155
- if ( ! \Elementor\Plugin::$instance->editor->is_edit_mode() ) {
156
  return;
157
  }
158
 
68
  return rtrim( $html_class );
69
  }
70
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  /**
72
  * Register widget controls
73
  */
74
  protected function _register_controls() {
75
+ do_action( 'happyaddons_start_register_controls', $this );
76
+
77
  $this->register_content_controls();
78
 
79
  $this->register_style_controls();
80
+
81
+ do_action( 'happyaddons_end_register_controls', $this );
82
  }
83
 
84
  /**
132
  * @param string $setting_key Additional settings key in case $key != $setting_key
133
  */
134
  protected function add_inline_editing_attributes( $key, $toolbar = 'basic', $setting_key = '' ) {
135
+ if ( ! ha_elementor()->editor->is_edit_mode() ) {
136
  return;
137
  }
138
 
classes/admin-bar.php CHANGED
@@ -38,22 +38,22 @@ class Admin_Bar {
38
  }
39
 
40
  wp_enqueue_style(
41
- 'happy-admin-bar',
42
- HAPPY_ADDONS_ASSETS . 'admin/css/admin-bar.css',
43
  null,
44
  HAPPY_ADDONS_VERSION
45
  );
46
 
47
  wp_enqueue_script(
48
- 'happy-admin-bar',
49
- HAPPY_ADDONS_ASSETS . 'admin/js/admin-bar.js',
50
  ['jquery'],
51
  HAPPY_ADDONS_VERSION,
52
  true
53
  );
54
 
55
  wp_localize_script(
56
- 'happy-admin-bar',
57
  'HappyAdmin',
58
  [
59
  'nonce' => wp_create_nonce( 'ha_clear_cache' ),
@@ -70,15 +70,18 @@ class Admin_Bar {
70
 
71
  $admin_bar->add_menu( array(
72
  'id' => 'happy-addons',
73
- 'title' => __( 'HappyAddons', 'happy-elementor-addons' ),
74
- 'href' => '#',
 
 
 
75
  ) );
76
 
77
  if ( is_singular() ) {
78
  $admin_bar->add_menu( array(
79
  'id' => 'ha-clear-page-cache',
80
  'parent' => 'happy-addons',
81
- 'title' => '<i class="dashicons dashicons-update-alt"></i> ' . __( 'Purge Page Cache', 'happy-elementor-addons' ),
82
  'href' => '#',
83
  'meta' => [
84
  'class' => 'hajs-clear-cache ha-clear-page-cache',
@@ -89,7 +92,7 @@ class Admin_Bar {
89
  $admin_bar->add_menu( array(
90
  'id' => 'ha-clear-all-cache',
91
  'parent' => 'happy-addons',
92
- 'title' => '<i class="dashicons dashicons-update-alt"></i> ' . __( 'Purge All Cache', 'happy-elementor-addons' ),
93
  'href' => '#',
94
  'meta' => [
95
  'class' => 'hajs-clear-cache ha-clear-all-cache',
38
  }
39
 
40
  wp_enqueue_style(
41
+ 'happy-elementor-addons-admin',
42
+ HAPPY_ADDONS_ASSETS . 'admin/css/admin.min.css',
43
  null,
44
  HAPPY_ADDONS_VERSION
45
  );
46
 
47
  wp_enqueue_script(
48
+ 'happy-elementor-addons-admin',
49
+ HAPPY_ADDONS_ASSETS . 'admin/js/admin.min.js',
50
  ['jquery'],
51
  HAPPY_ADDONS_VERSION,
52
  true
53
  );
54
 
55
  wp_localize_script(
56
+ 'happy-elementor-addons-admin',
57
  'HappyAdmin',
58
  [
59
  'nonce' => wp_create_nonce( 'ha_clear_cache' ),
70
 
71
  $admin_bar->add_menu( array(
72
  'id' => 'happy-addons',
73
+ 'title' => '<img src="'.ha_get_b64_icon().'"">',
74
+ 'href' => ha_get_dashboard_link(),
75
+ 'meta' => [
76
+ 'title' => __( 'Happy Addons Menu', 'happy-elementor-addons' ),
77
+ ]
78
  ) );
79
 
80
  if ( is_singular() ) {
81
  $admin_bar->add_menu( array(
82
  'id' => 'ha-clear-page-cache',
83
  'parent' => 'happy-addons',
84
+ 'title' => '<i class="dashicons dashicons-update-alt"></i> ' . __( 'Renew Page Cache', 'happy-elementor-addons' ),
85
  'href' => '#',
86
  'meta' => [
87
  'class' => 'hajs-clear-cache ha-clear-page-cache',
92
  $admin_bar->add_menu( array(
93
  'id' => 'ha-clear-all-cache',
94
  'parent' => 'happy-addons',
95
+ 'title' => '<i class="dashicons dashicons-update-alt"></i> ' . __( 'Renew All Cache', 'happy-elementor-addons' ),
96
  'href' => '#',
97
  'meta' => [
98
  'class' => 'hajs-clear-cache ha-clear-all-cache',
classes/assets-cache.php CHANGED
@@ -38,7 +38,7 @@ class Assets_Cache {
38
  }
39
 
40
  public function get_cache_dir_name() {
41
- return trailingslashit( 'happyaddons' . DIRECTORY_SEPARATOR . 'cache' );
42
  }
43
 
44
  public function get_post_id() {
@@ -79,7 +79,7 @@ class Assets_Cache {
79
  }
80
 
81
  public function delete_all() {
82
- $files = glob( $this->get_cache_dir() . '/*' );
83
  foreach ( $files as $file ) {
84
  if ( is_file( $file ) ) {
85
  unlink( $file );
@@ -164,14 +164,16 @@ class Assets_Cache {
164
  ) {
165
  continue;
166
  }
167
- $styles .= $this->get_styles( $widgets_map[ $widget_key ]['css'], isset( $widgets_map['is_pro'] ) );
 
168
  $cached_widgets[ $widget_key ] = true;
169
  }
170
  $styles .= sprintf( '/** Compiled CSS for: %s **/', implode(', ', array_keys( $cached_widgets ) ) );
171
 
172
  if ( ! is_dir( $this->get_cache_dir() ) ) {
173
- @mkdir( $this->get_cache_dir(), 0777, true );
174
  }
 
175
  file_put_contents( $this->get_file_name(), $styles );
176
  }
177
 
@@ -179,8 +181,8 @@ class Assets_Cache {
179
  $styles = '';
180
  foreach ( $files_name as $file_name ) {
181
  $file_path = HAPPY_ADDONS_DIR_PATH . "assets/css/widgets/{$file_name}.min.css";
182
- $file_path = apply_filters( 'happyaddons_cached_widget_css_file_path', $file_path, $file_name, $is_pro );
183
- if ( file_exists( $file_path ) ) {
184
  $styles .= file_get_contents( $file_path );
185
  };
186
  }
38
  }
39
 
40
  public function get_cache_dir_name() {
41
+ return trailingslashit( 'happyaddons' ) . trailingslashit( 'cache' );
42
  }
43
 
44
  public function get_post_id() {
79
  }
80
 
81
  public function delete_all() {
82
+ $files = glob( $this->get_cache_dir() . '*' );
83
  foreach ( $files as $file ) {
84
  if ( is_file( $file ) ) {
85
  unlink( $file );
164
  ) {
165
  continue;
166
  }
167
+ $is_pro = ( isset( $widgets_map[ $widget_key ]['is_pro'] ) && $widgets_map[ $widget_key ]['is_pro'] );
168
+ $styles .= $this->get_styles( $widgets_map[ $widget_key ]['css'], $is_pro );
169
  $cached_widgets[ $widget_key ] = true;
170
  }
171
  $styles .= sprintf( '/** Compiled CSS for: %s **/', implode(', ', array_keys( $cached_widgets ) ) );
172
 
173
  if ( ! is_dir( $this->get_cache_dir() ) ) {
174
+ @mkdir( $this->get_cache_dir(), 0755, true );
175
  }
176
+
177
  file_put_contents( $this->get_file_name(), $styles );
178
  }
179
 
181
  $styles = '';
182
  foreach ( $files_name as $file_name ) {
183
  $file_path = HAPPY_ADDONS_DIR_PATH . "assets/css/widgets/{$file_name}.min.css";
184
+ $file_path = apply_filters( 'happyaddons_get_styles_file_path', $file_path, $file_name, $is_pro );
185
+ if ( is_readable( $file_path ) ) {
186
  $styles .= file_get_contents( $file_path );
187
  };
188
  }
classes/assets-manager.php CHANGED
@@ -23,6 +23,29 @@ class Assets_Manager {
23
 
24
  // Placeholder image replacement
25
  add_filter( 'elementor/utils/get_placeholder_image_src', [ __CLASS__, 'set_placeholder_image' ] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  }
27
 
28
  public static function set_placeholder_image() {
@@ -102,7 +125,7 @@ class Assets_Manager {
102
 
103
  wp_register_script(
104
  'jquery-slick',
105
- HAPPY_ADDONS_ASSETS . 'vendor/slick/slick' . $suffix . 'js',
106
  [ 'jquery' ],
107
  HAPPY_ADDONS_VERSION,
108
  true
@@ -124,12 +147,30 @@ class Assets_Manager {
124
  */
125
  wp_register_script(
126
  'jquery-numerator',
127
- HAPPY_ADDONS_ASSETS . 'vendor/jquery-numerator/jquery-numerator' . $suffix . 'js',
128
  [ 'jquery' ],
129
  HAPPY_ADDONS_VERSION,
130
  true
131
  );
132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  /**
134
  * Floating effects
135
  */
@@ -141,6 +182,7 @@ class Assets_Manager {
141
  true
142
  );
143
 
 
144
  wp_register_style(
145
  'happy-elementor-addons',
146
  HAPPY_ADDONS_ASSETS . 'css/main' . $suffix . 'css',
@@ -158,39 +200,21 @@ class Assets_Manager {
158
  );
159
  }
160
 
161
- private static function enqueue() {
162
- wp_enqueue_style( 'happy-icons' );
163
- wp_enqueue_style( 'font-awesome' );
164
-
165
- wp_enqueue_style( 'twentytwenty' );
166
- wp_enqueue_script( 'jquery-event-move' );
167
- wp_enqueue_script( 'jquery-twentytwenty' );
168
-
169
- wp_enqueue_style( 'justifiedGallery' );
170
- wp_enqueue_script( 'jquery-justifiedGallery' );
171
-
172
- wp_enqueue_style( 'slick' );
173
- wp_enqueue_style( 'slick-theme' );
174
- wp_enqueue_script( 'jquery-slick' );
175
-
176
- wp_enqueue_script( 'jquery-isotope' );
177
-
178
- wp_enqueue_script( 'elementor-waypoints' );
179
- wp_enqueue_script( 'jquery-numerator' );
180
-
181
- wp_enqueue_script( 'anime' );
182
-
183
- // Self assets
184
- wp_enqueue_style( 'happy-elementor-addons' );
185
- wp_enqueue_script( 'happy-elementor-addons' );
186
- }
187
-
188
  public static function frontend_elementor_enqueue( Post_CSS $file ) {
189
  if ( get_post_type( $file->get_post_id() ) === 'elementor_library' ) {
190
- if ( Cache_Manager::should_enqueue( $file->get_post_id() ) ) {
 
 
 
191
  Cache_Manager::enqueue( $file->get_post_id() );
192
- } else {
193
- self::enqueue();
194
  }
195
  }
196
  }
@@ -199,7 +223,7 @@ class Assets_Manager {
199
  if ( Cache_Manager::should_enqueue( get_the_ID() ) ) {
200
  Cache_Manager::enqueue( get_the_ID() );
201
  } else {
202
- self::enqueue();
203
  }
204
  }
205
 
@@ -212,15 +236,15 @@ class Assets_Manager {
212
  );
213
 
214
  wp_enqueue_style(
215
- 'happy-elementor-addons-admin',
216
- HAPPY_ADDONS_ASSETS . 'admin/css/main.min.css',
217
  null,
218
  HAPPY_ADDONS_VERSION
219
  );
220
 
221
  wp_enqueue_script(
222
- 'happy-elementor-addons-admin',
223
- HAPPY_ADDONS_ASSETS . 'admin/js/happy-addons.min.js',
224
  [ 'elementor-editor' ],
225
  HAPPY_ADDONS_VERSION,
226
  true
23
 
24
  // Placeholder image replacement
25
  add_filter( 'elementor/utils/get_placeholder_image_src', [ __CLASS__, 'set_placeholder_image' ] );
26
+
27
+ // Paragraph toolbar registration
28
+ add_filter( 'elementor/editor/localize_settings', [ __CLASS__, 'add_inline_editing_intermediate_toolbar' ] );
29
+ }
30
+
31
+ /**
32
+ * Register inline editing paragraph toolbar
33
+ *
34
+ * @param array $config
35
+ * @return array
36
+ */
37
+ public static function add_inline_editing_intermediate_toolbar( $config ) {
38
+ $config['inlineEditing'] = [
39
+ 'toolbar' => [
40
+ 'intermediate' => [
41
+ 'bold',
42
+ 'underline',
43
+ 'italic',
44
+ 'createlink',
45
+ ],
46
+ ]
47
+ ];
48
+ return $config;
49
  }
50
 
51
  public static function set_placeholder_image() {
125
 
126
  wp_register_script(
127
  'jquery-slick',
128
+ HAPPY_ADDONS_ASSETS . 'vendor/slick/slick.min.js',
129
  [ 'jquery' ],
130
  HAPPY_ADDONS_VERSION,
131
  true
147
  */
148
  wp_register_script(
149
  'jquery-numerator',
150
+ HAPPY_ADDONS_ASSETS . 'vendor/jquery-numerator/jquery-numerator.min.js',
151
  [ 'jquery' ],
152
  HAPPY_ADDONS_VERSION,
153
  true
154
  );
155
 
156
+ /**
157
+ * Magnific popup
158
+ */
159
+ wp_register_style(
160
+ 'magnific-popup',
161
+ HAPPY_ADDONS_ASSETS . 'vendor/magnific-popup/magnific-popup.css',
162
+ null,
163
+ HAPPY_ADDONS_VERSION
164
+ );
165
+
166
+ wp_register_script(
167
+ 'jquery-magnific-popup',
168
+ HAPPY_ADDONS_ASSETS . 'vendor/magnific-popup/jquery.magnific-popup.min.js',
169
+ null,
170
+ HAPPY_ADDONS_VERSION,
171
+ true
172
+ );
173
+
174
  /**
175
  * Floating effects
176
  */
182
  true
183
  );
184
 
185
+ // Main assets
186
  wp_register_style(
187
  'happy-elementor-addons',
188
  HAPPY_ADDONS_ASSETS . 'css/main' . $suffix . 'css',
200
  );
201
  }
202
 
203
+ /**
204
+ * Enqueue elementor template cached stylesheet
205
+ * when used in as shortcode in a page.
206
+ *
207
+ * This system depends of elementor cache
208
+ *
209
+ * @param Post_CSS $file
210
+ */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
  public static function frontend_elementor_enqueue( Post_CSS $file ) {
212
  if ( get_post_type( $file->get_post_id() ) === 'elementor_library' ) {
213
+ $should_enqueue = Cache_Manager::should_enqueue( $file->get_post_id() );
214
+ if ( ! $should_enqueue && $file->get_post_id() === get_the_ID() ) {
215
+ Cache_Manager::enqueue_without_cache();
216
+ } elseif ( $should_enqueue ) {
217
  Cache_Manager::enqueue( $file->get_post_id() );
 
 
218
  }
219
  }
220
  }
223
  if ( Cache_Manager::should_enqueue( get_the_ID() ) ) {
224
  Cache_Manager::enqueue( get_the_ID() );
225
  } else {
226
+ Cache_Manager::enqueue_without_cache();
227
  }
228
  }
229
 
236
  );
237
 
238
  wp_enqueue_style(
239
+ 'happy-elementor-addons-editor',
240
+ HAPPY_ADDONS_ASSETS . 'admin/css/editor.min.css',
241
  null,
242
  HAPPY_ADDONS_VERSION
243
  );
244
 
245
  wp_enqueue_script(
246
+ 'happy-elementor-addons-editor',
247
+ HAPPY_ADDONS_ASSETS . 'admin/js/editor.min.js',
248
  [ 'elementor-editor' ],
249
  HAPPY_ADDONS_VERSION,
250
  true
classes/cache-manager.php CHANGED
@@ -11,6 +11,13 @@ class Cache_Manager {
11
 
12
  public static function init() {
13
  add_action( 'elementor/editor/after_save', [ __CLASS__, 'cache_widgets' ], 10, 2 );
 
 
 
 
 
 
 
14
  }
15
 
16
  public static function cache_widgets( $post_id, $data ) {
@@ -51,6 +58,7 @@ class Cache_Manager {
51
  }
52
 
53
  self::$widgets_cache = new Widgets_Cache( $post_id );
 
54
  if ( ! self::$widgets_cache->has() ) {
55
  return false;
56
  }
@@ -78,5 +86,41 @@ class Cache_Manager {
78
  $assets_cache->enqueue();
79
  self::enqueue_fa5_fonts( $post_id );
80
  wp_enqueue_script( 'happy-elementor-addons' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  }
82
  }
11
 
12
  public static function init() {
13
  add_action( 'elementor/editor/after_save', [ __CLASS__, 'cache_widgets' ], 10, 2 );
14
+ add_action( 'after_delete_post', [ __CLASS__, 'delete_cache' ] );
15
+ }
16
+
17
+ public static function delete_cache( $post_id ) {
18
+ // Delete to regenerate cache file
19
+ $assets_cache = new Assets_Cache( $post_id );
20
+ $assets_cache->delete();
21
  }
22
 
23
  public static function cache_widgets( $post_id, $data ) {
58
  }
59
 
60
  self::$widgets_cache = new Widgets_Cache( $post_id );
61
+
62
  if ( ! self::$widgets_cache->has() ) {
63
  return false;
64
  }
86
  $assets_cache->enqueue();
87
  self::enqueue_fa5_fonts( $post_id );
88
  wp_enqueue_script( 'happy-elementor-addons' );
89
+
90
+ do_action( 'happyaddons_enqueue_assets', $is_cache = true, $post_id );
91
+ }
92
+
93
+ public static function enqueue_without_cache() {
94
+ $widgets_map = Widgets_Manager::get_widgets_map();
95
+ $inactive_widgets = Widgets_Manager::get_inactive_widgets();
96
+
97
+ foreach ( $widgets_map as $widget_key => $data ) {
98
+ if ( ! isset( $data['vendor'] ) ) {
99
+ continue;
100
+ }
101
+
102
+ if ( in_array( $widget_key, $inactive_widgets ) ) {
103
+ continue;
104
+ }
105
+
106
+ $vendor = $data['vendor'];
107
+
108
+ if ( isset( $vendor['css'] ) && is_array( $vendor['css'] ) ) {
109
+ foreach ( $vendor['css'] as $vendor_css_handle ) {
110
+ wp_enqueue_style( $vendor_css_handle );
111
+ }
112
+ }
113
+
114
+ if ( isset( $vendor['js'] ) && is_array( $vendor['js'] ) ) {
115
+ foreach ( $vendor['js'] as $vendor_js_handle ) {
116
+ wp_enqueue_script( $vendor_js_handle );
117
+ }
118
+ }
119
+ }
120
+
121
+ wp_enqueue_style( 'happy-elementor-addons' );
122
+ wp_enqueue_script( 'happy-elementor-addons' );
123
+
124
+ do_action( 'happyaddons_enqueue_assets', $is_cache = false, 0 );
125
  }
126
  }
classes/dashboard.php ADDED
@@ -0,0 +1,245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Dashboard manager
4
+ *
5
+ * Package: Happy_Addons
6
+ * @since 2.0.0
7
+ */
8
+ namespace Happy_Addons\Elementor;
9
+
10
+ defined( 'ABSPATH' ) || die();
11
+
12
+ class Dashboard {
13
+
14
+ const PAGE_SLUG = 'happy-addons';
15
+
16
+ const WIDGETS_NONCE = 'ha_save_dashboard';
17
+
18
+ static $menu_slug = '';
19
+
20
+ public static function init() {
21
+ add_action( 'admin_menu', [ __CLASS__, 'add_menu' ], 21 );
22
+ add_action( 'admin_menu', [ __CLASS__, 'update_menu_items' ], 99 );
23
+ add_action( 'admin_enqueue_scripts', [ __CLASS__, 'enqueue_scripts' ] );
24
+ add_action( 'wp_ajax_' . self::WIDGETS_NONCE, [ __CLASS__, 'save_dashboard' ] );
25
+
26
+ add_action( 'admin_init', [ __CLASS__, 'activation_redirect' ] );
27
+ add_filter( 'plugin_action_links_' . plugin_basename( HAPPY_ADDONS__FILE__ ), [ __CLASS__, 'add_action_links' ] );
28
+ }
29
+
30
+ public static function activation_redirect() {
31
+ if ( get_option( Base::ACTIVATION_FLAG_DB_KEY, false ) && ! isset( $_GET['activate-multi'] ) ) {
32
+ delete_option( Base::ACTIVATION_FLAG_DB_KEY );
33
+ die( wp_redirect( ha_get_dashboard_link() ) );
34
+ }
35
+ }
36
+
37
+ public static function add_action_links( $links ) {
38
+ $links = array_merge([
39
+ sprintf( '<a href="%s">%s</a>',
40
+ ha_get_dashboard_link(),
41
+ esc_html__( 'Settings', 'happy-elementor-addons' )
42
+ )
43
+ ], $links );
44
+ if ( ! ha_has_pro() ) {
45
+ $links = array_merge( $links, [
46
+ sprintf( '<a target="_blank" style="color:#e2498a; font-weight: bold;" href="%s">%s</a>',
47
+ 'https://happyaddons.com/go/get-pro',
48
+ esc_html__( 'Get Pro', 'happy-elementor-addons' )
49
+ )
50
+ ] );
51
+ }
52
+ return $links;
53
+ }
54
+
55
+ public static function save_dashboard() {
56
+ if ( ! current_user_can( 'manage_options' ) ) {
57
+ return;
58
+ }
59
+
60
+ if ( ! check_ajax_referer( self::WIDGETS_NONCE, 'nonce' ) ) {
61
+ wp_send_json_error();
62
+ }
63
+
64
+ $posted_data = ! empty( $_POST['data'] ) ? $_POST['data'] : '';
65
+ $data = [];
66
+ parse_str( $posted_data, $data );
67
+
68
+ self::save_widgets_data( $data );
69
+
70
+ do_action( 'happyaddons_save_dashboard', $data );
71
+
72
+ wp_send_json_success();
73
+ }
74
+
75
+ private static function save_widgets_data( $data ) {
76
+ $widgets = ! empty( $data['widgets'] ) ? $data['widgets'] : [];
77
+ $inactive_widgets = array_values( array_diff( array_keys( self::get_real_widgets_map() ), $widgets ) );
78
+ Widgets_Manager::save_inactive_widgets( $inactive_widgets );
79
+ }
80
+
81
+ public static function enqueue_scripts( $hook ) {
82
+ if ( self::$menu_slug !== $hook ) {
83
+ return;
84
+ }
85
+
86
+ wp_enqueue_style(
87
+ 'happy-icons',
88
+ HAPPY_ADDONS_ASSETS . 'fonts/style.min.css',
89
+ null,
90
+ HAPPY_ADDONS_VERSION
91
+ );
92
+
93
+ wp_enqueue_style(
94
+ 'google-nunito-font',
95
+ HAPPY_ADDONS_ASSETS . 'fonts/nunito/stylesheet.css',
96
+ null,
97
+ HAPPY_ADDONS_VERSION
98
+ );
99
+
100
+ wp_enqueue_style(
101
+ 'happy-elementor-addons-dashboard',
102
+ HAPPY_ADDONS_ASSETS . 'admin/css/dashboard.min.css',
103
+ null,
104
+ HAPPY_ADDONS_VERSION
105
+ );
106
+
107
+ /**
108
+ * Magnific popup
109
+ */
110
+ wp_enqueue_style(
111
+ 'magnific-popup',
112
+ HAPPY_ADDONS_ASSETS . 'vendor/magnific-popup/magnific-popup.css',
113
+ null,
114
+ HAPPY_ADDONS_VERSION
115
+ );
116
+
117
+ wp_enqueue_script(
118
+ 'jquery-magnific-popup',
119
+ HAPPY_ADDONS_ASSETS . 'vendor/magnific-popup/jquery.magnific-popup.min.js',
120
+ null,
121
+ HAPPY_ADDONS_VERSION,
122
+ true
123
+ );
124
+
125
+ wp_enqueue_script(
126
+ 'happy-elementor-addons-dashboard',
127
+ HAPPY_ADDONS_ASSETS . 'admin/js/dashboard.min.js',
128
+ [ 'jquery' ],
129
+ HAPPY_ADDONS_VERSION,
130
+ true
131
+ );
132
+
133
+ wp_localize_script(
134
+ 'happy-elementor-addons-dashboard',
135
+ 'HappyDashboard',
136
+ [
137
+ 'nonce' => wp_create_nonce( self::WIDGETS_NONCE ),
138
+ 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
139
+ 'action' => self::WIDGETS_NONCE,
140
+ 'saveChangesLabel' => esc_html__( 'Save Changes', 'happy-elementor-addons' ),
141
+ 'savedLabel' => esc_html__( 'Changes Saved', 'happy-elementor-addons' ),
142
+ ]
143
+ );
144
+ }
145
+
146
+ private static function get_real_widgets_map() {
147
+ $widgets_map = Widgets_Manager::get_widgets_map();
148
+ unset( $widgets_map[ Widgets_Manager::get_base_widget_key() ] );
149
+ return $widgets_map;
150
+ }
151
+
152
+ public static function get_widgets() {
153
+ $widgets_map = self::get_real_widgets_map();
154
+
155
+ if ( ! ha_has_pro() ) {
156
+ $widgets_map = array_merge( $widgets_map, Widgets_Manager::get_pro_widget_map() );
157
+ }
158
+
159
+ uksort( $widgets_map, [ __CLASS__, 'sort_widgets' ] );
160
+ return $widgets_map;
161
+ }
162
+
163
+ public static function sort_widgets( $k1, $k2 ) {
164
+ return strcasecmp( $k1, $k2 );
165
+ }
166
+
167
+ public static function add_menu() {
168
+ self::$menu_slug = add_menu_page(
169
+ __( 'Happy Elementor Addons Dashboard', 'happy-elementor-addons' ),
170
+ __( 'Happy Addons', 'happy-elementor-addons' ),
171
+ 'manage_options',
172
+ self::PAGE_SLUG,
173
+ [ __CLASS__, 'render_main' ],
174
+ ha_get_b64_icon(),
175
+ 58.5
176
+ );
177
+
178
+ $tabs = self::get_tabs();
179
+ if ( is_array( $tabs ) ) {
180
+ foreach ( $tabs as $key => $data ) {
181
+ if ( empty( $data['renderer'] ) || ! is_callable( $data['renderer'] ) ) {
182
+ continue;
183
+ }
184
+
185
+ add_submenu_page(
186
+ self::PAGE_SLUG,
187
+ sprintf( __( '%s - Happy Elementor Addons', 'happy-elementor-addons' ), $data['title'] ),
188
+ $data['title'],
189
+ 'manage_options',
190
+ self::PAGE_SLUG . '#tab-content-' . $key,
191
+ [ __CLASS__, 'render_main' ]
192
+ );
193
+ }
194
+ }
195
+ }
196
+
197
+ public static function update_menu_items() {
198
+ global $submenu;
199
+ $menu = $submenu[ self::PAGE_SLUG ];
200
+ array_shift( $menu );
201
+ $submenu[ self::PAGE_SLUG ] = $menu;
202
+ }
203
+
204
+ public static function get_tabs() {
205
+ $tabs = [
206
+ 'home' => [
207
+ 'title' => esc_html__( 'Home', 'happy-elementor-addons' ),
208
+ 'renderer' => [ __CLASS__, 'render_home' ],
209
+ ],
210
+ 'widgets' => [
211
+ 'title' => esc_html__( 'Widgets', 'happy-elementor-addons' ),
212
+ 'renderer' => [ __CLASS__, 'render_widgets' ],
213
+ ],
214
+ 'pro' => [
215
+ 'title' => esc_html__( 'Get Pro', 'happy-elementor-addons' ),
216
+ 'renderer' => [ __CLASS__, 'render_pro' ],
217
+ ],
218
+ ];
219
+
220
+ return apply_filters( 'happyaddons_dashboard_get_tabs', $tabs );
221
+ }
222
+
223
+ private static function load_template( $template ) {
224
+ $file = HAPPY_ADDONS_DIR_PATH . 'templates/admin/dashboard-' . $template . '.php';
225
+ if ( is_readable( $file ) ) {
226
+ include( $file );
227
+ }
228
+ }
229
+
230
+ public static function render_main() {
231
+ self::load_template( 'main' );
232
+ }
233
+
234
+ public static function render_home() {
235
+ self::load_template( 'home' );
236
+ }
237
+
238
+ public static function render_widgets() {
239
+ self::load_template( 'widgets' );
240
+ }
241
+
242
+ public static function render_pro() {
243
+ self::load_template( 'pro' );
244
+ }
245
+ }
classes/icons-manager.php CHANGED
@@ -6,9 +6,7 @@ defined( 'ABSPATH' ) || die();
6
  class Icons_Manager {
7
 
8
  public static function init() {
9
- if ( ha_is_elementor_version( '>=', '2.6.0' ) ) {
10
- add_filter( 'elementor/icons_manager/additional_tabs', [ __CLASS__, 'add_happy_icons_tab' ] );
11
- }
12
  }
13
 
14
  public static function add_happy_icons_tab( $tabs ) {
@@ -19,9 +17,9 @@ class Icons_Manager {
19
  'enqueue' => [ HAPPY_ADDONS_ASSETS . 'fonts/style.min.css' ],
20
  'prefix' => 'hm-',
21
  'displayPrefix' => 'hm',
22
- 'labelIcon' => 'fas fa-grin-wink',
23
  'ver' => HAPPY_ADDONS_VERSION,
24
- 'fetchJson' => HAPPY_ADDONS_ASSETS . 'fonts/happy-icons.js',
25
  'native' => false,
26
  ];
27
  return $tabs;
@@ -433,6 +431,71 @@ class Icons_Manager {
433
  'hm hm-wine-glass' => 'wine-glass',
434
  'hm hm-worker-cap' => 'worker-cap',
435
  'hm hm-youtube' => 'youtube',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
436
  ];
437
  }
438
  }
6
  class Icons_Manager {
7
 
8
  public static function init() {
9
+ add_filter( 'elementor/icons_manager/additional_tabs', [ __CLASS__, 'add_happy_icons_tab' ] );
 
 
10
  }
11
 
12
  public static function add_happy_icons_tab( $tabs ) {
17
  'enqueue' => [ HAPPY_ADDONS_ASSETS . 'fonts/style.min.css' ],
18
  'prefix' => 'hm-',
19
  'displayPrefix' => 'hm',
20
+ 'labelIcon' => 'hm hm-happyaddons',
21
  'ver' => HAPPY_ADDONS_VERSION,
22
+ 'fetchJson' => HAPPY_ADDONS_ASSETS . 'fonts/happy-icons.js?v=' . HAPPY_ADDONS_VERSION,
23
  'native' => false,
24
  ];
25
  return $tabs;
431
  'hm hm-wine-glass' => 'wine-glass',
432
  'hm hm-worker-cap' => 'worker-cap',
433
  'hm hm-youtube' => 'youtube',
434
+ 'hm hm-centralize' => 'centralize',
435
+ 'hm hm-add-section' => 'add-section',
436
+ 'hm hm-advanced-heading' => 'advanced-heading',
437
+ 'hm hm-air-baloon' => 'air-baloon',
438
+ 'hm hm-arrow2' => 'arrow2',
439
+ 'hm hm-bicycle2' => 'bicycle2',
440
+ 'hm hm-bond2' => 'bond2',
441
+ 'hm hm-bond3' => 'bond3',
442
+ 'hm hm-bond4' => 'bond4',
443
+ 'hm hm-calendar2' => 'calendar2',
444
+ 'hm hm-carousel' => 'carousel',
445
+ 'hm hm-code-page' => 'code-page',
446
+ 'hm hm-comment-circle' => 'comment-circle',
447
+ 'hm hm-comment-square' => 'comment-square',
448
+ 'hm hm-copy' => 'copy',
449
+ 'hm hm-cursor' => 'cursor',
450
+ 'hm hm-envelop2' => 'envelop2',
451
+ 'hm hm-factory' => 'factory',
452
+ 'hm hm-finger-point' => 'finger-point',
453
+ 'hm hm-finger-swipe-both' => 'finger-swipe-both',
454
+ 'hm hm-finger-swipe-corner' => 'finger-swipe-corner',
455
+ 'hm hm-finger-swipe-left' => 'finger-swipe-left',
456
+ 'hm hm-finger-swipe-up' => 'finger-swipe-up',
457
+ 'hm hm-finger-swipe' => 'finger-swipe',
458
+ 'hm hm-finger-touch' => 'finger-touch',
459
+ 'hm hm-folder-sync' => 'folder-sync',
460
+ 'hm hm-graph-bar2' => 'graph-bar2',
461
+ 'hm hm-graph-pie2' => 'graph-pie2',
462
+ 'hm hm-heading-h' => 'heading-h',
463
+ 'hm hm-heading-html' => 'heading-html',
464
+ 'hm hm-heart' => 'heart',
465
+ 'hm hm-home2' => 'home2',
466
+ 'hm hm-indent-left' => 'indent-left',
467
+ 'hm hm-indent-right' => 'indent-right',
468
+ 'hm hm-lock-close' => 'lock-close',
469
+ 'hm hm-lock-open' => 'lock-open',
470
+ 'hm hm-map-pointer-add' => 'map-pointer-add',
471
+ 'hm hm-map-pointer-check' => 'map-pointer-check',
472
+ 'hm hm-map-pointer-delete' => 'map-pointer-delete',
473
+ 'hm hm-map-pointer2' => 'map-pointer2',
474
+ 'hm hm-map' => 'map',
475
+ 'hm hm-navigation1' => 'navigation1',
476
+ 'hm hm-navigation2' => 'navigation2',
477
+ 'hm hm-page-export' => 'page-export',
478
+ 'hm hm-page-sync' => 'page-sync',
479
+ 'hm hm-piramid' => 'piramid',
480
+ 'hm hm-plug' => 'plug',
481
+ 'hm hm-point-marker' => 'point-marker',
482
+ 'hm hm-quote2' => 'quote2',
483
+ 'hm hm-refresh-check' => 'refresh-check',
484
+ 'hm hm-refresh' => 'refresh',
485
+ 'hm hm-refresh2' => 'refresh2',
486
+ 'hm hm-scrolling-image' => 'scrolling-image',
487
+ 'hm hm-sign-turn-right' => 'sign-turn-right',
488
+ 'hm hm-speedometer' => 'speedometer',
489
+ 'hm hm-sticky' => 'sticky',
490
+ 'hm hm-sync-cloud' => 'sync-cloud',
491
+ 'hm hm-sync' => 'sync',
492
+ 'hm hm-sync2' => 'sync2',
493
+ 'hm hm-table-lamp2' => 'table-lamp2',
494
+ 'hm hm-target2' => 'target2',
495
+ 'hm hm-timeline-spiral' => 'timeline-spiral',
496
+ 'hm hm-tv' => 'tv',
497
+ 'hm hm-vespa' => 'vespa',
498
+ 'hm hm-happyaddons' => 'happyaddons',
499
  ];
500
  }
501
  }
classes/updater.php CHANGED
@@ -26,7 +26,9 @@ class Updater {
26
  }
27
 
28
  protected static function update() {
29
- self::v_1_5_0();
 
 
30
 
31
  $assets_cache = new Assets_Cache();
32
  $assets_cache->delete_all();
26
  }
27
 
28
  protected static function update() {
29
+ if ( ! self::get_old_version() ) {
30
+ self::v_1_5_0();
31
+ }
32
 
33
  $assets_cache = new Assets_Cache();
34
  $assets_cache->delete_all();
classes/widgets-manager.php CHANGED
@@ -2,7 +2,6 @@
2
  namespace Happy_Addons\Elementor;
3
 
4
  use Elementor\Element_Base;
5
- use Elementor\Widget_Base;
6
  use Happy_Addons\Elementor\Widget\Card;
7
  use Happy_Addons\Elementor\Widget\CalderaForm;
8
  use Happy_Addons\Elementor\Widget\Calendly;
@@ -33,6 +32,8 @@ defined( 'ABSPATH' ) || die();
33
 
34
  class Widgets_Manager {
35
 
 
 
36
  /**
37
  * Initialize
38
  */
@@ -52,6 +53,14 @@ class Widgets_Manager {
52
  }
53
  }
54
 
 
 
 
 
 
 
 
 
55
  public static function get_widgets_map() {
56
  $widgets_map = [
57
  self::get_base_widget_key() => [
@@ -66,13 +75,106 @@ class Widgets_Manager {
66
 
67
  $local_widgets_map = self::get_local_widgets_map();
68
  $widgets_map = array_merge( $widgets_map, $local_widgets_map );
69
- return apply_filters( 'happyaddons_widgets_map', $widgets_map );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  }
71
 
 
 
 
 
 
72
  public static function get_local_widgets_map() {
73
  return [
74
  // All the widgets are listed below with respective map
75
  'infobox' => [
 
 
 
76
  'class' => InfoBox::class,
77
  'css' => ['infobox'],
78
  'js' => [],
@@ -82,6 +184,9 @@ class Widgets_Manager {
82
  ],
83
  ],
84
  'card' => [
 
 
 
85
  'class' => Card::class,
86
  'css' => ['card', 'badge'],
87
  'js' => [],
@@ -91,6 +196,9 @@ class Widgets_Manager {
91
  ],
92
  ],
93
  'cf7' => [
 
 
 
94
  'class' => CF7::class,
95
  'css' => [],
96
  'js' => [],
@@ -100,6 +208,9 @@ class Widgets_Manager {
100
  ],
101
  ],
102
  'icon-box' => [
 
 
 
103
  'class' => Icon_Box::class,
104
  'css' => ['icon-box', 'badge'],
105
  'js' => [],
@@ -109,6 +220,9 @@ class Widgets_Manager {
109
  ],
110
  ],
111
  'member' => [
 
 
 
112
  'class' => Member::class,
113
  'css' => ['member'],
114
  'js' => [],
@@ -118,6 +232,9 @@ class Widgets_Manager {
118
  ],
119
  ],
120
  'review' => [
 
 
 
121
  'class' => Review::class,
122
  'css' => ['review'],
123
  'js' => [],
@@ -127,6 +244,9 @@ class Widgets_Manager {
127
  ],
128
  ],
129
  'image-compare' => [
 
 
 
130
  'class' => Image_Compare::class,
131
  'css' => ['image-comparison'],
132
  'js' => [],
@@ -136,24 +256,33 @@ class Widgets_Manager {
136
  ],
137
  ],
138
  'justified-gallery' => [
 
 
 
139
  'class' => Justified_Gallery::class,
140
  'css' => ['justified-gallery', 'gallery-filter'],
141
  'js' => [],
142
  'vendor' => [
143
- 'css' => ['justifiedGallery'],
144
- 'js' => ['jquery-justifiedGallery'],
145
  ],
146
  ],
147
  'image-grid' => [
 
 
 
148
  'class' => Image_Grid::class,
149
  'css' => ['image-grid', 'gallery-filter'],
150
  'js' => [],
151
  'vendor' => [
152
- 'css' => [],
153
- 'js' => ['jquery-isotope'],
154
  ],
155
  ],
156
  'slider' => [
 
 
 
157
  'class' => Slider::class,
158
  'css' => ['slider-carousel'],
159
  'js' => [],
@@ -163,6 +292,9 @@ class Widgets_Manager {
163
  ],
164
  ],
165
  'carousel' => [
 
 
 
166
  'class' => Carousel::class,
167
  'css' => ['slider-carousel'],
168
  'js' => [],
@@ -172,6 +304,9 @@ class Widgets_Manager {
172
  ],
173
  ],
174
  'skills' => [
 
 
 
175
  'class' => Skills::class,
176
  'css' => ['skills'],
177
  'js' => [],
@@ -181,6 +316,9 @@ class Widgets_Manager {
181
  ],
182
  ],
183
  'gradient-heading' => [
 
 
 
184
  'class' => Gradient_Heading::class,
185
  'css' => ['gradient-heading'],
186
  'js' => [],
@@ -190,6 +328,9 @@ class Widgets_Manager {
190
  ],
191
  ],
192
  'wpform' => [
 
 
 
193
  'class' => WPForm::class,
194
  'css' => [],
195
  'js' => [],
@@ -199,6 +340,9 @@ class Widgets_Manager {
199
  ],
200
  ],
201
  'ninjaform' => [
 
 
 
202
  'class' => NinjaForm::class,
203
  'css' => [],
204
  'js' => [],
@@ -208,6 +352,9 @@ class Widgets_Manager {
208
  ],
209
  ],
210
  'calderaform' => [
 
 
 
211
  'class' => CalderaForm::class,
212
  'css' => [],
213
  'js' => [],
@@ -217,6 +364,9 @@ class Widgets_Manager {
217
  ],
218
  ],
219
  'weform' => [
 
 
 
220
  'class' => WeForm::class,
221
  'css' => [],
222
  'js' => [],
@@ -226,6 +376,9 @@ class Widgets_Manager {
226
  ],
227
  ],
228
  'logo-grid' => [
 
 
 
229
  'class' => Logo_Grid::class,
230
  'css' => ['logo-grid'],
231
  'js' => [],
@@ -235,6 +388,9 @@ class Widgets_Manager {
235
  ],
236
  ],
237
  'dual-button' => [
 
 
 
238
  'class' => Dual_Button::class,
239
  'css' => ['dual-btn'],
240
  'js' => [],
@@ -244,6 +400,9 @@ class Widgets_Manager {
244
  ],
245
  ],
246
  'testimonial' => [
 
 
 
247
  'class' => Testimonial::class,
248
  'css' => ['testimonial'],
249
  'js' => [],
@@ -253,6 +412,9 @@ class Widgets_Manager {
253
  ],
254
  ],
255
  'number' => [
 
 
 
256
  'class' => Number::class,
257
  'css' => ['number'],
258
  'js' => [],
@@ -262,6 +424,9 @@ class Widgets_Manager {
262
  ],
263
  ],
264
  'flip-box' => [
 
 
 
265
  'class' => Flip_Box::class,
266
  'css' => ['flip-box'],
267
  'js' => [],
@@ -271,6 +436,9 @@ class Widgets_Manager {
271
  ],
272
  ],
273
  'calendly' => [
 
 
 
274
  'class' => Calendly::class,
275
  'css' => [],
276
  'js' => [],
@@ -280,6 +448,9 @@ class Widgets_Manager {
280
  ],
281
  ],
282
  'pricing-table' => [
 
 
 
283
  'class' => Pricing_Table::class,
284
  'css' => ['pricing-table'],
285
  'js' => [],
@@ -289,6 +460,9 @@ class Widgets_Manager {
289
  ],
290
  ],
291
  'step-flow' => [
 
 
 
292
  'class' => Step_Flow::class,
293
  'css' => ['steps-flow'],
294
  'js' => [],
@@ -316,8 +490,10 @@ class Widgets_Manager {
316
  public static function register() {
317
  require( HAPPY_ADDONS_DIR_PATH . 'base/widget-base.php' );
318
 
 
 
319
  foreach ( self::get_local_widgets_map() as $widget_key => $data ) {
320
- if ( ! empty( $data['class'] ) ) {
321
  self::register_widget( $widget_key, $data['class'] );
322
  }
323
  }
2
  namespace Happy_Addons\Elementor;
3
 
4
  use Elementor\Element_Base;
 
5
  use Happy_Addons\Elementor\Widget\Card;
6
  use Happy_Addons\Elementor\Widget\CalderaForm;
7
  use Happy_Addons\Elementor\Widget\Calendly;
32
 
33
  class Widgets_Manager {
34
 
35
+ const WIDGETS_DB_KEY = 'happyaddons_inactive_widgets';
36
+
37
  /**
38
  * Initialize
39
  */
53
  }
54
  }
55
 
56
+ public static function get_inactive_widgets() {
57
+ return get_option( self::WIDGETS_DB_KEY, [] );
58
+ }
59
+
60
+ public static function save_inactive_widgets( $widgets = [] ) {
61
+ update_option( self::WIDGETS_DB_KEY, $widgets );
62
+ }
63
+
64
  public static function get_widgets_map() {
65
  $widgets_map = [
66
  self::get_base_widget_key() => [
75
 
76
  $local_widgets_map = self::get_local_widgets_map();
77
  $widgets_map = array_merge( $widgets_map, $local_widgets_map );
78
+ return apply_filters( 'happyaddons_get_widgets_map', $widgets_map );
79
+ }
80
+
81
+ /**
82
+ * Get the pro widgets map for dashboard only
83
+ *
84
+ * @return array
85
+ */
86
+ public static function get_pro_widget_map() {
87
+ return [
88
+ 'google-map' => [
89
+ 'title' => __( 'Google Map', 'happy-addons-pro' ),
90
+ 'icon' => 'hm hm-map-marker',
91
+ 'is_pro' => true,
92
+ ],
93
+ 'advanced-heading' => [
94
+ 'title' => __( 'Advanced Heading', 'happy-addons-pro' ),
95
+ 'icon' => 'hm hm-advanced-heading',
96
+ 'is_pro' => true,
97
+ ],
98
+ 'list-group' => [
99
+ 'title' => __( 'List Group', 'happy-addons-pro' ),
100
+ 'icon' => 'hm hm-list-group',
101
+ 'is_pro' => true,
102
+ ],
103
+ 'hover-box' => [
104
+ 'title' => __( 'Hover Box', 'happy-addons-pro' ),
105
+ 'icon' => 'hm hm-finger-point',
106
+ 'is_pro' => true,
107
+ ],
108
+ 'countdown' => [
109
+ 'title' => __( 'Countdown', 'happy-addons-pro' ),
110
+ 'icon' => 'hm hm-refresh-time',
111
+ 'is_pro' => true,
112
+ ],
113
+ 'team-carousel' => [
114
+ 'title' => __( 'Team Carousel', 'happy-addons-pro' ),
115
+ 'icon' => 'hm hm-team-carousel',
116
+ 'is_pro' => true,
117
+ ],
118
+ 'logo-carousel' => [
119
+ 'title' => __( 'Logo Carousel', 'happy-addons-pro' ),
120
+ 'icon' => 'hm hm-logo-carousel',
121
+ 'is_pro' => true,
122
+ ],
123
+ 'source-code' => [
124
+ 'title' => __( 'Source Code', 'happy-addons-pro' ),
125
+ 'icon' => 'hm hm-code-browser',
126
+ 'is_pro' => true,
127
+ ],
128
+ 'feature-list' => [
129
+ 'title' => __( 'Feature List', 'happy-addons-pro' ),
130
+ 'icon' => 'hm hm-list-2',
131
+ 'is_pro' => true,
132
+ ],
133
+ 'testimonial-carousel' => [
134
+ 'title' => __( 'Testimonial Carousel', 'happy-addons-pro' ),
135
+ 'icon' => 'hm hm-testimonial-carousel',
136
+ 'is_pro' => true,
137
+ ],
138
+ 'advanced-tabs' => [
139
+ 'title' => __( 'Advanced Tabs', 'happy-addons-pro' ),
140
+ 'icon' => 'hm hm-tab',
141
+ 'is_pro' => true,
142
+ ],
143
+ 'animated-text' => [
144
+ 'title' => __( 'Animated Text', 'happy-addons-pro' ),
145
+ 'icon' => 'hm hm-text-animation',
146
+ 'is_pro' => true,
147
+ ],
148
+ 'timeline' => [
149
+ 'title' => __( 'Timeline', 'happy-addons-pro' ),
150
+ 'icon' => 'hm hm-timeline',
151
+ 'is_pro' => true,
152
+ ],
153
+ 'instagram-feed' => [
154
+ 'title' => __( 'Instagram Feed', 'happy-addons-pro' ),
155
+ 'icon' => 'hm hm-instagram',
156
+ 'is_pro' => true,
157
+ ],
158
+ 'scrolling-image' => [
159
+ 'title' => __( 'Scrolling Image', 'happy-addons-pro' ),
160
+ 'icon' => 'hm hm-scrolling-image',
161
+ 'is_pro' => true,
162
+ ],
163
+ ];
164
  }
165
 
166
+ /**
167
+ * Get the free widgets map
168
+ *
169
+ * @return array
170
+ */
171
  public static function get_local_widgets_map() {
172
  return [
173
  // All the widgets are listed below with respective map
174
  'infobox' => [
175
+ 'demo' => 'https://happyaddons.com/go/demo-info-box',
176
+ 'title' => __( 'Info Box', 'happy-elementor-addons' ),
177
+ 'icon' => 'hm hm-blog-content',
178
  'class' => InfoBox::class,
179
  'css' => ['infobox'],
180
  'js' => [],
184
  ],
185
  ],
186
  'card' => [
187
+ 'demo' => 'https://happyaddons.com/go/demo-card',
188
+ 'title' => __( 'Card', 'happy-elementor-addons' ),
189
+ 'icon' => 'hm hm-card',
190
  'class' => Card::class,
191
  'css' => ['card', 'badge'],
192
  'js' => [],
196
  ],
197
  ],
198
  'cf7' => [
199
+ 'demo' => 'https://happyaddons.com/go/demo-contact-form7',
200
+ 'title' => __( 'Contact Form 7', 'happy-elementor-addons' ),
201
+ 'icon' => 'hm hm-form',
202
  'class' => CF7::class,
203
  'css' => [],
204
  'js' => [],
208
  ],
209
  ],
210
  'icon-box' => [
211
+ 'demo' => 'https://happyaddons.com/go/demo-icon-box',
212
+ 'title' => __( 'Icon Box', 'happy-elementor-addons' ),
213
+ 'icon' => 'hm hm-icon-box',
214
  'class' => Icon_Box::class,
215
  'css' => ['icon-box', 'badge'],
216
  'js' => [],
220
  ],
221
  ],
222
  'member' => [
223
+ 'demo' => 'https://happyaddons.com/go/demo-team-member',
224
+ 'title' => __( 'Team Member', 'happy-elementor-addons' ),
225
+ 'icon' => 'hm hm-team-member',
226
  'class' => Member::class,
227
  'css' => ['member'],
228
  'js' => [],
232
  ],
233
  ],
234
  'review' => [
235
+ 'demo' => 'https://happyaddons.com/go/demo-review',
236
+ 'title' => __( 'Review', 'happy-elementor-addons' ),
237
+ 'icon' => 'hm hm-review',
238
  'class' => Review::class,
239
  'css' => ['review'],
240
  'js' => [],
244
  ],
245
  ],
246
  'image-compare' => [
247
+ 'demo' => 'https://happyaddons.com/go/demo-image-compare',
248
+ 'title' => __( 'Image Compare', 'happy-elementor-addons' ),
249
+ 'icon' => 'hm hm-image-compare',
250
  'class' => Image_Compare::class,
251
  'css' => ['image-comparison'],
252
  'js' => [],
256
  ],
257
  ],
258
  'justified-gallery' => [
259
+ 'demo' => 'https://happyaddons.com/go/demo-justified-grid',
260
+ 'title' => __( 'Justified Grid', 'happy-elementor-addons' ),
261
+ 'icon' => 'hm hm-brick-wall',
262
  'class' => Justified_Gallery::class,
263
  'css' => ['justified-gallery', 'gallery-filter'],
264
  'js' => [],
265
  'vendor' => [
266
+ 'css' => ['justifiedGallery', 'magnific-popup'],
267
+ 'js' => ['jquery-justifiedGallery', 'jquery-magnific-popup'],
268
  ],
269
  ],
270
  'image-grid' => [
271
+ 'demo' => 'https://happyaddons.com/go/demo-image-grid',
272
+ 'title' => __( 'Image Grid', 'happy-elementor-addons' ),
273
+ 'icon' => 'hm hm-grid-even',
274
  'class' => Image_Grid::class,
275
  'css' => ['image-grid', 'gallery-filter'],
276
  'js' => [],
277
  'vendor' => [
278
+ 'css' => ['magnific-popup'],
279
+ 'js' => ['jquery-isotope', 'jquery-magnific-popup'],
280
  ],
281
  ],
282
  'slider' => [
283
+ 'demo' => 'https://happyaddons.com/go/demo-slider',
284
+ 'title' => __( 'Slider', 'happy-elementor-addons' ),
285
+ 'icon' => 'hm hm-image-slider',
286
  'class' => Slider::class,
287
  'css' => ['slider-carousel'],
288
  'js' => [],
292
  ],
293
  ],
294
  'carousel' => [
295
+ 'demo' => 'https://happyaddons.com/go/demo-image-carousel',
296
+ 'title' => __( 'Carousel', 'happy-elementor-addons' ),
297
+ 'icon' => 'hm hm-carousal',
298
  'class' => Carousel::class,
299
  'css' => ['slider-carousel'],
300
  'js' => [],
304
  ],
305
  ],
306
  'skills' => [
307
+ 'demo' => 'https://happyaddons.com/go/demo-skill-bar',
308
+ 'title' => __( 'Skill Bars', 'happy-elementor-addons' ),
309
+ 'icon' => 'hm hm-progress-bar',
310
  'class' => Skills::class,
311
  'css' => ['skills'],
312
  'js' => [],
316
  ],
317
  ],
318
  'gradient-heading' => [
319
+ 'demo' => 'https://happyaddons.com/go/demo-gradient-heading',
320
+ 'title' => __( 'Gradient Heading', 'happy-elementor-addons' ),
321
+ 'icon' => 'hm hm-drag',
322
  'class' => Gradient_Heading::class,
323
  'css' => ['gradient-heading'],
324
  'js' => [],
328
  ],
329
  ],
330
  'wpform' => [
331
+ 'demo' => 'https://happyaddons.com/go/demo-wpforms',
332
+ 'title' => __( 'WPForms', 'happy-elementor-addons' ),
333
+ 'icon' => 'hm hm-form',
334
  'class' => WPForm::class,
335
  'css' => [],
336
  'js' => [],
340
  ],
341
  ],
342
  'ninjaform' => [
343
+ 'demo' => 'https://happyaddons.com/go/demo-ninja-forms',
344
+ 'title' => __( 'Ninja Forms', 'happy-elementor-addons' ),
345
+ 'icon' => 'hm hm-form',
346
  'class' => NinjaForm::class,
347
  'css' => [],
348
  'js' => [],
352
  ],
353
  ],
354
  'calderaform' => [
355
+ 'demo' => 'https://happyaddons.com/go/demo-caldera-forms',
356
+ 'title' => __( 'Caldera Forms', 'happy-elementor-addons' ),
357
+ 'icon' => 'hm hm-form',
358
  'class' => CalderaForm::class,
359
  'css' => [],
360
  'js' => [],
364
  ],
365
  ],
366
  'weform' => [
367
+ 'demo' => 'https://happyaddons.com/go/demo-weforms',
368
+ 'title' => __( 'weForms', 'happy-elementor-addons' ),
369
+ 'icon' => 'hm hm-form',
370
  'class' => WeForm::class,
371
  'css' => [],
372
  'js' => [],
376
  ],
377
  ],
378
  'logo-grid' => [
379
+ 'demo' => 'https://happyaddons.com/go/demo-logo-grid',
380
+ 'title' => __('Logo Grid', 'happy-elementor-addons'),
381
+ 'icon' => 'hm hm-logo-grid',
382
  'class' => Logo_Grid::class,
383
  'css' => ['logo-grid'],
384
  'js' => [],
388
  ],
389
  ],
390
  'dual-button' => [
391
+ 'demo' => 'https://happyaddons.com/go/demo-dual-button',
392
+ 'title' => __( 'Dual Button', 'happy-elementor-addons' ),
393
+ 'icon' => 'hm hm-accordion-horizontal',
394
  'class' => Dual_Button::class,
395
  'css' => ['dual-btn'],
396
  'js' => [],
400
  ],
401
  ],
402
  'testimonial' => [
403
+ 'demo' => 'https://happyaddons.com/go/demo-testimonial',
404
+ 'title' => __( 'Testimonial', 'happy-elementor-addons' ),
405
+ 'icon' => 'hm hm-testimonial',
406
  'class' => Testimonial::class,
407
  'css' => ['testimonial'],
408
  'js' => [],
412
  ],
413
  ],
414
  'number' => [
415
+ 'demo' => 'https://happyaddons.com/go/demo-number-widget',
416
+ 'title' => __( 'Number', 'happy-elementor-addons' ),
417
+ 'icon' => 'hm hm-madel',
418
  'class' => Number::class,
419
  'css' => ['number'],
420
  'js' => [],
424
  ],
425
  ],
426
  'flip-box' => [
427
+ 'demo' => 'https://happyaddons.com/gp/demo-flip-box',
428
+ 'title' => __( 'Flip Box', 'happy-elementor-addons' ),
429
+ 'icon' => 'hm hm-flip-card1',
430
  'class' => Flip_Box::class,
431
  'css' => ['flip-box'],
432
  'js' => [],
436
  ],
437
  ],
438
  'calendly' => [
439
+ 'demo' => 'https://happyaddons.com/go/demo-calendly',
440
+ 'title' => __( 'Calendly', 'happy-elementor-addons' ),
441
+ 'icon' => 'hm hm-calendar',
442
  'class' => Calendly::class,
443
  'css' => [],
444
  'js' => [],
448
  ],
449
  ],
450
  'pricing-table' => [
451
+ 'demo' => 'https://happyaddons.com/go/demo-pricing-table',
452
+ 'title' => __( 'Pricing Table', 'happy-elementor-addons' ),
453
+ 'icon' => 'hm hm-file-cabinet',
454
  'class' => Pricing_Table::class,
455
  'css' => ['pricing-table'],
456
  'js' => [],
460
  ],
461
  ],
462
  'step-flow' => [
463
+ 'demo' => 'https://happyaddons.com/go/demo-step-flow',
464
+ 'title' => __( 'Step Flow', 'happy-elementor-addons' ),
465
+ 'icon' => 'hm hm-step-flow',
466
  'class' => Step_Flow::class,
467
  'css' => ['steps-flow'],
468
  'js' => [],
490
  public static function register() {
491
  require( HAPPY_ADDONS_DIR_PATH . 'base/widget-base.php' );
492
 
493
+ $inactive_widgets = self::get_inactive_widgets();
494
+
495
  foreach ( self::get_local_widgets_map() as $widget_key => $data ) {
496
+ if ( ! empty( $data['class'] ) && ! in_array( $widget_key, $inactive_widgets ) ) {
497
  self::register_widget( $widget_key, $data['class'] );
498
  }
499
  }
inc/functions.php CHANGED
@@ -401,6 +401,96 @@ function ha_is_happy_mode_enabled() {
401
  return apply_filters( 'happyaddons_is_happy_mode_enabled', true );
402
  }
403
 
 
 
 
 
 
404
  function ha_elementor() {
405
  return \Elementor\Plugin::instance();
406
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
401
  return apply_filters( 'happyaddons_is_happy_mode_enabled', true );
402
  }
403
 
404
+ /**
405
+ * Get elementor instance
406
+ *
407
+ * @return \Elementor\Plugin
408
+ */
409
  function ha_elementor() {
410
  return \Elementor\Plugin::instance();
411
  }
412
+
413
+ /**
414
+ * Get a list of all the allowed html tags.
415
+ *
416
+ * @param string $level Allowed levels are basic and intermediate
417
+ * @return array
418
+ */
419
+ function ha_get_allowed_html_tags( $level = 'basic' ) {
420
+ $allowed_html = [
421
+ 'b' => [],
422
+ 'i' => [],
423
+ 'u' => [],
424
+ 'em' => [],
425
+ 'br' => [],
426
+ 'abbr' => [
427
+ 'title' => [],
428
+ ],
429
+ 'span' => [
430
+ 'class' => [],
431
+ ],
432
+ 'strong' => [],
433
+ ];
434
+
435
+ if ( $level === 'intermediate' ) {
436
+ $allowed_html['a'] = [
437
+ 'href' => [],
438
+ 'title' => [],
439
+ 'class' => [],
440
+ 'id' => [],
441
+ ];
442
+ }
443
+
444
+ return $allowed_html;
445
+ }
446
+
447
+ /**
448
+ * Strip all the tags except allowed html tags
449
+ *
450
+ * The name is based on inline editing toolbar name
451
+ *
452
+ * @param string $string
453
+ * @return string
454
+ */
455
+ function ha_kses_intermediate( $string = '' ) {
456
+ return wp_kses( $string, ha_get_allowed_html_tags( 'intermediate' ) );
457
+ }
458
+
459
+ /**
460
+ * Strip all the tags except allowed html tags
461
+ *
462
+ * The name is based on inline editing toolbar name
463
+ *
464
+ * @param string $string
465
+ * @return string
466
+ */
467
+ function ha_kses_basic( $string = '' ) {
468
+ return wp_kses( $string, ha_get_allowed_html_tags( 'basic' ) );
469
+ }
470
+
471
+ /**
472
+ * Get a translatable string with allowed html tags.
473
+ *
474
+ * @param string $level Allowed levels are basic and intermediate
475
+ * @return string
476
+ */
477
+ function ha_get_allowed_html_desc( $level = 'basic' ) {
478
+ if ( ! in_array( $level, [ 'basic', 'intermediate' ] ) ) {
479
+ $level = 'basic';
480
+ }
481
+
482
+ $tags_str = '<' . implode( '>,<', array_keys( ha_get_allowed_html_tags( $level ) ) ) . '>';
483
+ return sprintf( __( 'This input field has support for the following HTML tags: %1$s', 'happy-elementor-addons' ), '<code>' . esc_html( $tags_str ) . '</code>' );
484
+ }
485
+
486
+ function ha_has_pro() {
487
+ return defined( 'HAPPY_ADDONS_PRO_VERSION' );
488
+ }
489
+
490
+ function ha_get_b64_icon() {
491
+ return 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PGcgZmlsbD0iI0ZGRiI+PHBhdGggZD0iTTI4LjYgNy44aC44Yy41IDAgLjktLjUuOC0xIDAtLjUtLjUtLjktMS0uOC0zLjUuMy02LjgtMS45LTcuOC01LjMtLjEtLjUtLjYtLjctMS4xLS42cy0uNy42LS42IDEuMWMxLjIgMy45IDQuOSA2LjYgOC45IDYuNnoiLz48cGF0aCBkPSJNMzAgMTEuMWMtLjMtLjYtLjktMS0xLjYtMS0uOSAwLTEuOSAwLTIuOC0uMi00LS44LTctMy42LTguNC03LjEtLjMtLjYtLjktMS4xLTEuNi0xQzguMyAxLjkgMS44IDcuNC45IDE1LjEuMSAyMi4yIDQuNSAyOSAxMS4zIDMxLjIgMjAgMzQuMSAyOSAyOC43IDMwLjggMTkuOWMuNy0zLjEuMy02LjEtLjgtOC44em0tMTEuNiAxLjFjLjEtLjUuNi0uOCAxLjEtLjdsMy43LjhjLjUuMS44LjYuNyAxLjFzLS42LjgtMS4xLjdsLTMuNy0uOGMtLjQtLjEtLjgtLjYtLjctMS4xek0xMC4xIDExYy4yLTEuMSAxLjQtMS45IDIuNS0xLjYgMS4xLjIgMS45IDEuNCAxLjYgMi41LS4yIDEuMS0xLjQgMS45LTIuNSAxLjYtMS0uMi0xLjgtMS4zLTEuNi0yLjV6bTE0LjYgMTAuNkMyMi44IDI2IDE3LjggMjguNSAxMyAyN2MtMy42LTEuMi02LjItNC41LTYuNS04LjItLjEtMSAuOC0xLjcgMS43LTEuNmwxNS40IDIuNWMuOSAwIDEuNCAxIDEuMSAxLjl6Ii8+PHBhdGggZD0iTTE3LjEgMjIuOGMtMS45LS40LTMuNy4zLTQuNyAxLjctLjIuMy0uMS43LjIuOS42LjMgMS4yLjUgMS45LjcgMS44LjQgMy43LjEgNS4xLS43LjMtLjIuNC0uNi4yLS45LS43LS45LTEuNi0xLjUtMi43LTEuN3oiLz48L2c+PC9zdmc+';
492
+ }
493
+
494
+ function ha_get_dashboard_link() {
495
+ return add_query_arg( [ 'page' => 'happy-addons#tab-content-home' ], admin_url( 'admin.php' ) );
496
+ }
plugin.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Happy Elementor Addons
4
  * Plugin URI: https://happyaddons.com/
5
  * Description: <a href="https://happyaddons.com/">HappyAddons</a> is a collection of slick, powerful widgets that works seamlessly with Elementor page builder. It’s trendy look with detail customization features allows to create extraordinary designs instantly. <a href="https://happyaddons.com/">HappyAddons</a> is free, rapidly growing and comes with great support.
6
- * Version: 1.5.0
7
  * Author: HappyMonster
8
  * Author URI: https://happyaddons.com/
9
  * License: GPLv2
@@ -34,7 +34,7 @@ Copyright 2019 HappyMonster <http://happymonster.me>
34
 
35
  defined( 'ABSPATH' ) || die();
36
 
37
- define( 'HAPPY_ADDONS_VERSION', '1.5.0' );
38
  define( 'HAPPY_ADDONS__FILE__', __FILE__ );
39
  define( 'HAPPY_ADDONS_DIR_PATH', plugin_dir_path( HAPPY_ADDONS__FILE__ ) );
40
  define( 'HAPPY_ADDONS_DIR_URL', plugin_dir_url( HAPPY_ADDONS__FILE__ ) );
3
  * Plugin Name: Happy Elementor Addons
4
  * Plugin URI: https://happyaddons.com/
5
  * Description: <a href="https://happyaddons.com/">HappyAddons</a> is a collection of slick, powerful widgets that works seamlessly with Elementor page builder. It’s trendy look with detail customization features allows to create extraordinary designs instantly. <a href="https://happyaddons.com/">HappyAddons</a> is free, rapidly growing and comes with great support.
6
+ * Version: 2.0.0
7
  * Author: HappyMonster
8
  * Author URI: https://happyaddons.com/
9
  * License: GPLv2
34
 
35
  defined( 'ABSPATH' ) || die();
36
 
37
+ define( 'HAPPY_ADDONS_VERSION', '2.0.0' );
38
  define( 'HAPPY_ADDONS__FILE__', __FILE__ );
39
  define( 'HAPPY_ADDONS_DIR_PATH', plugin_dir_path( HAPPY_ADDONS__FILE__ ) );
40
  define( 'HAPPY_ADDONS_DIR_URL', plugin_dir_url( HAPPY_ADDONS__FILE__ ) );
readme.txt CHANGED
@@ -1,6 +1,6 @@
1
  === Happy Elementor Addons ===
2
  Plugin Name: Happy Elementor Addons
3
- Version: 1.5.0
4
  Author: HappyMonster
5
  Author URI: https://happyaddons.com/
6
  Contributors: thehappymonster, happyaddons, hasinhayder, mosaddek73, tareq1988, obiplabon, sourav926, wedevs
@@ -140,6 +140,19 @@ It's really easy and super simple to install **Happy Elementor Addons** plugin b
140
 
141
  == Changelog ==
142
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  = 1.5.0 - 27 August 2019 =
144
 
145
  - New: Image Grid Widget
1
  === Happy Elementor Addons ===
2
  Plugin Name: Happy Elementor Addons
3
+ Version: 2.0.0
4
  Author: HappyMonster
5
  Author URI: https://happyaddons.com/
6
  Contributors: thehappymonster, happyaddons, hasinhayder, mosaddek73, tareq1988, obiplabon, sourav926, wedevs
140
 
141
  == Changelog ==
142
 
143
+ = 2.0.0 - 24 September 2019 =
144
+
145
+ - New: Dashboard
146
+ - New: Image popup support for Justified Grid
147
+ - New: Image popup support for Image Grid
148
+ - Update: Improved HTML tag support for description and title fields
149
+ - Update: Added more icons in Happy Icons
150
+ - Update: Improved HTML escaping support for security
151
+ - Fix: Skill Bars admin label fix
152
+ - Fix: Missing style issue while copy-pasting widget style
153
+ - Fix: Happy Icons cache issue
154
+ - Fix: Admin bar menu spacing issue
155
+
156
  = 1.5.0 - 27 August 2019 =
157
 
158
  - New: Image Grid Widget
templates/admin/dashboard-home.php ADDED
@@ -0,0 +1,160 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Dashboard home tab template
4
+ */
5
+
6
+ defined( 'ABSPATH' ) || die();
7
+ ?>
8
+ <div class="ha-dashboard-panel">
9
+ <div class="ha-home-banner">
10
+ <div class="ha-home-banner__content">
11
+ <img class="ha-home-banner__logo" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/halogo.svg" alt="">
12
+ <span class="ha-home-banner__divider"></span>
13
+ <h2>Thanks a lot <br><span>for choosing HappyAddons</span></h2>
14
+ </div>
15
+ </div>
16
+ <div class="ha-home-body">
17
+ <div class="ha-row ha-py-5 ha-align-items-center">
18
+ <div class="ha-col ha-col-6">
19
+ <img class="ha-img-fluid ha-title-icon-size" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/knowledge.svg" alt="">
20
+ <h3 class="ha-feature-title">Knowledge & Wiki</h3>
21
+ <p class="f18">We have created full-proof documentation for you. It will help you to understand how our plugin works.</p>
22
+ <a class="ha-btn ha-btn-primary" target="_blank" rel="noopener" href="https://happyaddons.com/go/docs">Take Me to The Knowledge Page</a>
23
+ </div>
24
+ <div class="ha-col ha-col-6">
25
+ <img class="ha-img-fluid" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/art1.png" alt="">
26
+ </div>
27
+ </div>
28
+ <div class="ha-row ha-py-5 ha-pt-0">
29
+ <div class="ha-col ha-col-12">
30
+ <img class="ha-img-fluid ha-title-icon-size" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/film.svg" alt="">
31
+ <h3 class="ha-feature-title">Video Tutorial</h3>
32
+ <p class="f16">How to use Floating Effects and manage CSS Transform?</p>
33
+ </div>
34
+ <div class="ha-col ha-col-4">
35
+ <a href="https://www.youtube.com/watch?v=KSRaUaD30Jc" class="ha-feature-sub-title-a">
36
+ <img class="ha-img-fluid ha-rounded" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/crossdomain-video-cover.jpg" alt="">
37
+ <h4 class="ha-feature-sub-title">Cross Domain Copy Paste (Pro)</h4>
38
+ </a>
39
+ </div>
40
+ <div class="ha-col ha-col-4">
41
+ <a href="https://www.youtube.com/watch?v=LmtacsLcFPU" class="ha-feature-sub-title-a">
42
+ <img class="ha-img-fluid ha-rounded" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/translate-video-cover.jpg" alt="">
43
+ <h4 class="ha-feature-sub-title">Happy Effects - CSS Transform</h4>
44
+ </a>
45
+ </div>
46
+ <div class="ha-col ha-col-4">
47
+ <a href="https://www.youtube.com/watch?v=F33g3zqkeog" class="ha-feature-sub-title-a">
48
+ <img class="ha-img-fluid ha-rounded" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/floating-video-cover.jpg" alt="">
49
+ <h4 class="ha-feature-sub-title">Happy Effects - Floating Effects</h4>
50
+ </a>
51
+ </div>
52
+ <div class="ha-col ha-col-12 ha-align-center ha-pt-2">
53
+ <a class="ha-btn ha-btn-secondary" target="_blank" rel="noopener" href="https://www.youtube.com/channel/UC1-e7ewkKB1Dao1U90QFQFA">View more videos</a>
54
+ </div>
55
+ </div>
56
+ <div class="ha-row ha-align-items-end ha-py-5 ha-pt-0">
57
+ <div class="ha-col ha-col-9">
58
+ <img class="ha-img-fluid ha-title-icon-size" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/faq.svg" alt="">
59
+ <h3 class="ha-feature-title ha-text-primary">FAQ</h3>
60
+ <p class="f16 ha-mb-0">Frequently Asked Questions</p>
61
+ </div>
62
+ <div class="ha-col ha-col-3 ha-align-right">
63
+ <a class="btn-more" target="_blank" rel="noopener" href="https://happyaddons.com/go/faq">Get More FAQ ></a>
64
+ </div>
65
+ <div class="ha-col ha-col-12">
66
+ <div class="ha-row">
67
+ <div class="ha-col ha-col-6 ha-pt-3">
68
+ <h4 class="f18">Can I use these addons in my client project?</h4>
69
+ <p class="ha-mb-0 f16">Yes, absolutely, no holds barred. Use it to bring colorful moments to your customers. And don’t forget to check out our premium features.</p>
70
+ </div>
71
+ <div class="ha-col ha-col-6 ha-pt-3">
72
+ <h4 class="f18">Is there any support policy available for the free users?</h4>
73
+ <p class="ha-mb-0 f16">Free or pro version, both comes with excellent support from us. However, pro users will get priority support.</p>
74
+ </div>
75
+ </div>
76
+ </div>
77
+ </div>
78
+
79
+ <?php
80
+ $appsero = \Happy_Addons\Elementor\Base::instance()->appsero;
81
+ $margin_top = '';
82
+ if ( $appsero ) :
83
+ if ( ! $appsero->insights()->notice_dismissed() && ! $appsero->insights()->tracking_allowed() ) :
84
+ $optin_url = add_query_arg( $appsero->slug . '_tracker_optin', 'true' );
85
+ $margin_top = 'ha-py-5';
86
+ ?>
87
+ <div class="ha-row">
88
+ <div class="ha-col ha-col-12">
89
+ <div class="ha-cta ha-rounded">
90
+ <div class="ha-row ha-align-items-center">
91
+ <div class="ha-col-8">
92
+ <h3 class="ha-feature-title">Call for Contributors</h3>
93
+ <p class="f16">Are you interested to contribute to making this plugin more awesome?</p>
94
+ <a class="link btn-how-to-contribute" href="#">How am I going to contribute?</a>
95
+ <p class="ha-mb-0" style="display: none;">By allow Happy Elementor Addons to collect non-sensitive diagnostic data and usage information so that we can make sure optimum compatibility.
96
+ Happy Elementor Addons collect - Server environment details (php, mysql, server, WordPress versions), Number of users in your site, Site language, Number of active and inactive plugins, Site name and url, Your name and email address</p>
97
+ </div>
98
+ <div class="ha-cta-action ha-col-4 ha-align-right">
99
+ <a class="btn-contribute" href="<?php echo esc_url( $optin_url ); ?>">I like to contribute</a>
100
+ </div>
101
+ </div>
102
+ </div>
103
+ </div>
104
+ </div>
105
+ <?php
106
+ endif;
107
+ endif;
108
+ ?>
109
+
110
+ <div class="ha-row <?php echo $margin_top; ?>">
111
+ <div class="ha-col ha-col-6">
112
+ <div class="ha-border-box ha-min-height-455">
113
+ <img class="ha-img-fluid ha-title-icon-size" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/support-call.svg" alt="">
114
+ <h3 class="ha-feature-title ha-text-secondary">Support And Feedback</h3>
115
+ <p class="f16">Feeling like to consult with an expert? Take live Chat support immediately from <a href="https://happyaddons.com/" target="_blank" rel="noopener">HappyAddons</a>. We are always ready to help you 24/7.</p>
116
+ <p class="f16 ha-mb-2"><strong>Or if you’re facing technical issues with our plugin, then please create a support ticket</strong></p>
117
+ <a class="ha-btn ha-btn-secondary" target="_blank" rel="noopener" href="https://happyaddons.com/go/contact-support">Get Support</a>
118
+ </div>
119
+ </div>
120
+ <div class="ha-col ha-col-6">
121
+ <div class="ha-border-box ha-min-height-455">
122
+ <img class="ha-img-fluid ha-title-icon-size" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/newspaper.svg" alt="">
123
+ <h3 class="ha-feature-title ha-text-primary">Newsletter Subscription</h3>
124
+ <p class="f16">To get updated news, current offers, deals, and tips please subscribe to our Newsletters.</p>
125
+ <a class="ha-btn ha-btn-primary" target="_blank" rel="noopener" href="https://happyaddons.com/go/subscribe">Subscribe Now</a>
126
+ </div>
127
+ </div>
128
+ </div>
129
+
130
+ <div class="ha-row ha-py-5 ha-align-items-center">
131
+ <div class="ha-col ha-col-6">
132
+ <img class="ha-img-fluid" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/art2.png" alt="">
133
+ </div>
134
+ <div class="ha-col ha-col-6">
135
+ <img class="ha-img-fluid ha-title-icon-size" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/cross-game.svg" alt="">
136
+ <h3 class="ha-feature-title">Missing Any Feature?</h3>
137
+ <p class="f16">Are you in need of a feature that’s not available in our plugin? Feel free to do a
138
+ feature request from here,</p>
139
+ <a class="ha-btn ha-btn-primary" target="_blank" rel="noopener" href="https://happyaddons.com/go/contact-support">Request Feature</a>
140
+ </div>
141
+ </div>
142
+
143
+ <div class="ha-row ha-py-5">
144
+ <div class="ha-col ha-col-12">
145
+ <div class="ha-border-box">
146
+ <div class="ha-row ha-align-items-center">
147
+ <div class="ha-col ha-col-3" >
148
+ <img class="ha-img-fluid ha-pr-2" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/c-icon.png" alt="">
149
+ </div>
150
+ <div class="ha-col ha-col-8">
151
+ <h3 class="ha-feature-title ha-text-secondary ha-mt-0">Happy with Our Work?</h3>
152
+ <p class="f16 ha-mb-2">We are really thankful to you that you have chosen our plugin. If our plugin brings a smile in your face while working, please share your happiness by giving us a 5***** rating in WordPress Org. It will make us happy and won’t take more than 2 mins.</p>
153
+ <a class="ha-btn ha-btn-secondary" target="_blank" rel="noopener" href="https://wordpress.org/support/plugin/happy-elementor-addons/reviews/?filter=5">I’m Happy to Give You 5*</a>
154
+ </div>
155
+ </div>
156
+ </div>
157
+ </div>
158
+ </div>
159
+ </div>
160
+ </div>
templates/admin/dashboard-main.php ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Dashboard main template
4
+ */
5
+
6
+ defined( 'ABSPATH' ) || die();
7
+ ?>
8
+ <div class="wrap">
9
+ <h1 class="screen-reader-text"><?php esc_html_e( 'Happy Elementor Addons', 'happy-elementor-addons' ); ?></h1>
10
+ <form class="ha-dashboard" id="ha-dashboard-form">
11
+ <div class="ha-dashboard-tabs" role="tablist">
12
+ <div class="ha-dashboard-tabs__nav">
13
+ <?php
14
+ $tab_count = 1;
15
+ foreach ( self::get_tabs() as $slug => $data ) :
16
+ $slug = esc_attr( strtolower( $slug ) );
17
+ $class = 'ha-dashboard-tabs__nav-item ha-dashboard-tabs__nav-item--' . $slug;
18
+
19
+ if ( empty( $data['renderer'] ) || ! is_callable( $data['renderer'] ) ) {
20
+ $class .= ' nav-item-is--link';
21
+ }
22
+
23
+ if ( $tab_count === 1 ) {
24
+ $class .= ' tab--is-active';
25
+ }
26
+
27
+ if ( ! empty( $data['href'] ) ) {
28
+ $href = esc_url( $data['href'] );
29
+ } else {
30
+ $href = '#tab-content-' . $slug;
31
+ }
32
+
33
+ printf( '<a href="%1$s" aria-controls="tab-content-%2$s" id="tab-nav-%2$s" class="%3$s" role="tab">%4$s</a>',
34
+ $href,
35
+ $slug,
36
+ $class,
37
+ isset( $data['title'] ) ? $data['title'] : sprintf( esc_html__( 'Tab %s', 'happy-elementor-addons' ), $tab_count )
38
+ );
39
+
40
+ ++$tab_count;
41
+ endforeach;
42
+ ?>
43
+
44
+ <button disabled class="ha-dashboard-tabs__nav-btn ha-dashboard-btn ha-dashboard-btn--lg ha-dashboard-btn--save" type="submit"><?php esc_html_e( 'Save Settings', 'happy-elementor-addons' ); ?></button>
45
+ </div>
46
+ <div class="ha-dashboard-tabs__content">
47
+ <?php
48
+ $tab_count = 1;
49
+ foreach ( self::get_tabs() as $slug => $data ) :
50
+ if ( empty( $data['renderer'] ) || ! is_callable( $data['renderer'] ) ) {
51
+ continue;
52
+ }
53
+
54
+ $class = 'ha-dashboard-tabs__content-item';
55
+ if ( $tab_count === 1 ) {
56
+ $class .= ' tab--is-active';
57
+ }
58
+
59
+ $slug = esc_attr( strtolower( $slug ) );
60
+ ?>
61
+ <div class="<?php echo $class; ?>" id="tab-content-<?php echo $slug; ?>" role="tabpanel" aria-labelledby="tab-nav-<?php echo $slug; ?>">
62
+ <?php call_user_func( $data['renderer'], $slug, $data ); ?>
63
+ </div>
64
+ <?php
65
+ ++$tab_count;
66
+ endforeach;
67
+ ?>
68
+ </div>
69
+ </div>
70
+ </form>
71
+ </div>
templates/admin/dashboard-pro.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Dashboard pro tab template
4
+ */
5
+
6
+ defined( 'ABSPATH' ) || die();
7
+ ?>
8
+ <div class="ha-dashboard-panel">
9
+ <div class="ha-home-banner">
10
+ <div class="ha-home-banner__content">
11
+ <img class="ha-home-banner__logo" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/halogo.svg" alt="">
12
+ <span class="ha-home-banner__divider"></span>
13
+ <h2><span>What's Inside </span><br>The HappyAddons Pro</h2>
14
+ </div>
15
+ </div>
16
+ <div class="ha-home-body">
17
+ <div class="ha-row ha-py-5 ha-align-items-center ha-align-center">
18
+ <div class="ha-col ha-col-12">
19
+ <div class="ha-badge">PRO</div>
20
+ <h2 class="ha-section-title ha-text-primary">Features</h2>
21
+ </div>
22
+ </div>
23
+
24
+ <div class="ha-row ha-py-5 ha-pt-0 ha-align-items-center">
25
+ <div class="ha-col ha-col-6">
26
+ <img class="ha-img-fluid ha-title-icon-size" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/cross-domain.svg" alt="">
27
+ <h3 class="ha-feature-title">Cross Domain Copy Paste</h3>
28
+ <p class="f18">Do Cross-Domain Widget Copy Paste within different websites!
29
+ You can easily copy any widgets from your previously designed website and paste it to your newly created website.
30
+ </p>
31
+ </div>
32
+ <div class="ha-col ha-col-6">
33
+ <img class="ha-img-fluid ha-pl-2" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/pa-1.png" alt="">
34
+ </div>
35
+ </div>
36
+
37
+ <div class="ha-row ha-py-5 ha-pt-0 ha-align-items-center">
38
+ <div class="ha-col ha-col-6">
39
+ <img class="ha-img-fluid ha-pr-2" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/pa-2.png" alt="">
40
+ </div>
41
+ <div class="ha-col ha-col-6">
42
+ <img class="ha-img-fluid ha-title-icon-size" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/preset.svg" alt="">
43
+ <h3 class="ha-feature-title">Preset</h3>
44
+ <p class="f16">400+ Preset Library for Widgets with Drop Down facility. Experience the Instagram Photo Editing like experience in Elementor!</p>
45
+ </div>
46
+ </div>
47
+
48
+ <div class="ha-row ha-py-5 ha-pt-0 ha-align-items-center">
49
+ <div class="ha-col ha-col-6">
50
+ <img class="ha-img-fluid ha-title-icon-size" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/nesting.svg" alt="">
51
+ <h3 class="ha-feature-title">Unlimited Section Nesting</h3>
52
+ <p class="f18">Don’t you wish to use multiple sections at the same time in Elementor? With HappyAddons, now you can. Create as many sections as you want and organize your elements more effectively.</p>
53
+ </div>
54
+ <div class="ha-col ha-col-6">
55
+ <img class="ha-img-fluid ha-pl-2" src="<?php echo HAPPY_ADDONS_ASSETS; ?>imgs/admin/pa-3.png" alt="">
56
+ </div>
57
+ </div>
58
+
59
+ <div class="ha-row ha-py-5 ha-pt-0 ha-align-items-center ha-align-center">
60
+ <div class="ha-col ha-col-12">
61
+ <div class="ha-badge">PRO</div>
62
+ <h2 class="ha-section-title ha-text-primary">Widgets</h2>
63
+ </div>
64
+ </div>
65
+
66
+ <div class="ha-row ha-py-5 ha-pt-0 ha-align-items-center ha-align-center">
67
+ <?php
68
+ $pro_widgets = \Happy_Addons\Elementor\Widgets_Manager::get_pro_widget_map();
69
+
70
+ foreach ( $pro_widgets as $widget ) :
71
+ $title = isset( $widget['title'] ) ? $widget['title'] : 'Widget Title';
72
+ $icon = isset( $widget['icon'] ) ? $widget['icon'] : 'hm hm-happyaddons';
73
+ $demo = isset( $widget['demo'] ) ? $widget['demo'] : 'https://happyaddons.com/go/get-pro';
74
+ ?>
75
+ <div class="ha-col ha-col-3">
76
+ <a class="ha-pro-widget" href="<?php echo esc_url( $demo ); ?>" target="_blank" rel="noopener"><i class="<?php echo $icon; ?>"></i> <?php echo $title; ?></a>
77
+ </div>
78
+ <?php
79
+ endforeach;
80
+ ?>
81
+ </div>
82
+
83
+ <hr>
84
+
85
+ <div class="ha-row ha-py-5 ha-pt-0- ha-align-items-center ha-align-center">
86
+ <div class="ha-col ha-col-12">
87
+ <h2 class="ha-feature-title ha-mb-3">Get Pro and Experience all those exciting features and widgets</h2>
88
+ <a style="padding: 20px 40px" class="ha-btn ha-btn-secondary" target="_blank" rel="noopener" href="https://happyaddons.com/go/get-pro">GET PRO</a>
89
+ </div>
90
+ </div>
91
+
92
+ </div>
93
+ </div>
templates/admin/dashboard-widgets.php ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Dashboard widgets tab template
4
+ */
5
+
6
+ defined( 'ABSPATH' ) || die();
7
+ ?>
8
+ <div class="ha-dashboard-panel">
9
+ <div class="ha-dashboard-panel__header">
10
+ <div class="ha-dashboard-panel__header-content">
11
+ <h2><?php esc_html_e( 'Happy Widgets', 'happy-elementor-addons' ); ?></h2>
12
+ <p class="f16"><?php _e( 'Here is the list of our all widgets. You can enable or disable widgets from here to optimize loading speed and Elementor editor experience. <strong>After enabling or disabling any widget make sure to click the save button.</strong>', 'happy-elementor-addons' ); ?></p>
13
+
14
+ <div class="ha-action-list">
15
+ <button type="button" class="ha-action--btn" data-filter="*"><?php esc_html_e( 'All', 'happy-elementor-addons' ); ?></button>
16
+ <button type="button" class="ha-action--btn" data-filter="free"><?php esc_html_e( 'Free', 'happy-elementor-addons' ); ?></button>
17
+ <button type="button" class="ha-action--btn" data-filter="pro"><?php esc_html_e( 'Pro', 'happy-elementor-addons' ); ?></button>
18
+ <span class="ha-action--divider">|</span>
19
+ <button type="button" class="ha-action--btn" data-action="enable"><?php esc_html_e( 'Enable All', 'happy-elementor-addons' ); ?></button>
20
+ <button type="button" class="ha-action--btn" data-action="disable"><?php esc_html_e( 'Disable All', 'happy-elementor-addons' ); ?></button>
21
+ </div>
22
+ </div>
23
+ </div>
24
+
25
+ <div class="ha-dashboard-widgets">
26
+ <?php
27
+ $widgets = self::get_widgets();
28
+ $inactive_widgets = \Happy_Addons\Elementor\Widgets_Manager::get_inactive_widgets();
29
+
30
+ foreach ( $widgets as $widget_key => $widget_data ) :
31
+ $title = isset( $widget_data['title'] ) ? $widget_data['title'] : '';
32
+ $icon = isset( $widget_data['icon'] ) ? $widget_data['icon'] : '';
33
+ $is_pro = isset( $widget_data['is_pro'] ) && $widget_data['is_pro'] ? true : false;
34
+ $demo_url = isset( $widget_data['demo'] ) && $widget_data['demo'] ? $widget_data['demo'] : '';
35
+ $is_placeholder = $is_pro && ! ha_has_pro();
36
+ $class_attr = 'ha-dashboard-widgets__item';
37
+
38
+ if ( $is_pro ) {
39
+ $class_attr .= ' item--is-pro';
40
+ }
41
+
42
+ $checked = '';
43
+
44
+ if ( ! in_array( $widget_key, $inactive_widgets ) ) {
45
+ $checked = 'checked="checked"';
46
+ }
47
+
48
+ if ( $is_placeholder ) {
49
+ $class_attr .= ' item--is-placeholder';
50
+ $checked = 'disabled="disabled"';
51
+ }
52
+ ?>
53
+ <div class="<?php echo $class_attr; ?>">
54
+ <?php if ( $is_pro ) : ?>
55
+ <span class="ha-dashboard-widgets__item-badge"><?php esc_html_e( 'Pro', 'happy-elementor-addons' ); ?></span>
56
+ <?php endif; ?>
57
+ <span class="ha-dashboard-widgets__item-icon"><i class="<?php echo $icon; ?>"></i></span>
58
+ <h3 class="ha-dashboard-widgets__item-title">
59
+ <label for="ha-widget-<?php echo $widget_key; ?>" <?php echo $is_placeholder ? 'data-tooltip="Get pro"' : ''; ?>><?php echo $title; ?></label>
60
+ <?php if ( $demo_url ) : ?>
61
+ <a href="<?php echo esc_url( $demo_url ); ?>" target="_blank" rel="noopener" data-tooltip="<?php esc_attr_e( 'Click and view demo', 'happy-elementor-addons' ); ?>" class="ha-dashboard-widgets__item-preview"><i aria-hidden="true" class="eicon-device-desktop"></i></a>
62
+ <?php endif; ?>
63
+ </h3>
64
+ <div class="ha-dashboard-widgets__item-toggle ha-toggle">
65
+ <input id="ha-widget-<?php echo $widget_key; ?>" <?php echo $checked; ?> type="checkbox" class="ha-toggle__check" name="widgets[]" value="<?php echo $widget_key; ?>">
66
+ <b class="ha-toggle__switch"></b>
67
+ <b class="ha-toggle__track"></b>
68
+ </div>
69
+ </div>
70
+ <?php
71
+ endforeach;
72
+ ?>
73
+ </div>
74
+
75
+ <div class="ha-dashboard-panel__footer">
76
+ <button disabled class="ha-dashboard-btn ha-dashboard-btn--save" type="submit"><?php esc_html_e( 'Save Settings', 'happy-elementor-addons' ); ?></button>
77
+ </div>
78
+ </div>
vendor/appsero/src/Client.php CHANGED
@@ -13,7 +13,7 @@ class Client {
13
  *
14
  * @var string
15
  */
16
- public $version = '1.1.1';
17
 
18
  /**
19
  * Hash identifier of the plugin
13
  *
14
  * @var string
15
  */
16
+ public $version = '1.1.2';
17
 
18
  /**
19
  * Hash identifier of the plugin
vendor/appsero/src/Insights.php CHANGED
@@ -242,12 +242,12 @@ class Insights {
242
  * @return mixed
243
  */
244
  protected function get_extra_data() {
245
- $extra_data = $this->extra_data;
 
 
246
 
247
- if ( is_callable( $extra_data ) ) {
248
- return $extra_data();
249
- } else if ( is_array( $extra_data ) ) {
250
- return $extra_data;
251
  }
252
 
253
  return array();
@@ -276,7 +276,7 @@ class Insights {
276
  *
277
  * @return bool
278
  */
279
- private function tracking_allowed() {
280
  $allow_tracking = get_option( $this->client->slug . '_allow_tracking', 'no' );
281
 
282
  return $allow_tracking == 'yes';
@@ -296,7 +296,7 @@ class Insights {
296
  *
297
  * @return boolean
298
  */
299
- private function notice_dismissed() {
300
  $hide_notice = get_option( $this->client->slug . '_tracking_notice', 'no' );
301
 
302
  if ( 'hide' == $hide_notice ) {
242
  * @return mixed
243
  */
244
  protected function get_extra_data() {
245
+ if ( is_callable( $this->extra_data ) ) {
246
+ return call_user_func( $this->extra_data );
247
+ }
248
 
249
+ if ( is_array( $this->extra_data ) ) {
250
+ return $this->extra_data;
 
 
251
  }
252
 
253
  return array();
276
  *
277
  * @return bool
278
  */
279
+ public function tracking_allowed() {
280
  $allow_tracking = get_option( $this->client->slug . '_allow_tracking', 'no' );
281
 
282
  return $allow_tracking == 'yes';
296
  *
297
  * @return boolean
298
  */
299
+ public function notice_dismissed() {
300
  $hide_notice = get_option( $this->client->slug . '_tracking_notice', 'no' );
301
 
302
  if ( 'hide' == $hide_notice ) {
vendor/appsero/src/License.php CHANGED
@@ -58,7 +58,7 @@ class License {
58
  public function __construct( Client $client ) {
59
  $this->client = $client;
60
 
61
- $this->option_key = 'appsero_' . md5( $this->client->slug ) . '_licenses';
62
  }
63
 
64
  /**
@@ -157,7 +157,7 @@ class License {
157
 
158
  $this->menu_args = wp_parse_args( $args, $defaults );
159
 
160
- add_action( 'admin_menu', array( $this, 'admin_menu' ) );
161
 
162
  add_action( $this->client->slug . '_license_check_event', array( $this, 'check_license_status' ) );
163
  }
58
  public function __construct( Client $client ) {
59
  $this->client = $client;
60
 
61
+ $this->option_key = 'appsero_' . md5( $this->client->slug ) . '_manage_license';
62
  }
63
 
64
  /**
157
 
158
  $this->menu_args = wp_parse_args( $args, $defaults );
159
 
160
+ add_action( 'admin_menu', array( $this, 'admin_menu' ), 30 );
161
 
162
  add_action( $this->client->slug . '_license_check_event', array( $this, 'check_license_status' ) );
163
  }
widgets/calendly/widget.php CHANGED
@@ -84,8 +84,8 @@ class Calendly extends Base {
84
  [
85
  'label' => __( 'Hide Event Type Details', 'happy-elementor-addons' ),
86
  'type' => Controls_Manager::SWITCHER,
87
- 'label_on' => __( 'yes', 'your-plugin' ),
88
- 'label_off' => __( 'no', 'your-plugin' ),
89
  'return_value' => 'yes',
90
  'default' => '',
91
  ]
84
  [
85
  'label' => __( 'Hide Event Type Details', 'happy-elementor-addons' ),
86
  'type' => Controls_Manager::SWITCHER,
87
+ 'label_on' => __( 'yes', 'happy-elementor-addons' ),
88
+ 'label_off' => __( 'no', 'happy-elementor-addons' ),
89
  'return_value' => 'yes',
90
  'default' => '',
91
  ]
widgets/card/widget.php CHANGED
@@ -102,7 +102,7 @@ class Card extends Base {
102
  ],
103
  'toggle' => false,
104
  'default' => 'top',
105
- 'prefix_class' => 'ha-card--'
106
  ]
107
  );
108
 
@@ -135,7 +135,7 @@ class Card extends Base {
135
  $this->add_control(
136
  'title',
137
  [
138
- 'label' => __( 'Title', 'happy-elementor-addons' ),
139
  'label_block' => true,
140
  'type' => Controls_Manager::TEXT,
141
  'default' => __( 'Happy Card Title', 'happy-elementor-addons' ),
@@ -150,6 +150,8 @@ class Card extends Base {
150
  'description',
151
  [
152
  'label' => __( 'Description', 'happy-elementor-addons' ),
 
 
153
  'type' => Controls_Manager::TEXTAREA,
154
  'default' => __( 'Happy card description goes here', 'happy-elementor-addons' ),
155
  'placeholder' => __( 'Type card description', 'happy-elementor-addons' ),
@@ -214,14 +216,10 @@ class Card extends Base {
214
  'title' => __( 'Right', 'happy-elementor-addons' ),
215
  'icon' => 'fa fa-align-right',
216
  ],
217
- 'justify' => [
218
- 'title' => __( 'Justify', 'happy-elementor-addons' ),
219
- 'icon' => 'fa fa-align-justify',
220
- ],
221
  ],
222
  'toggle' => true,
223
  'selectors' => [
224
- '{{WRAPPER}} .elementor-widget-container' => 'text-align: {{VALUE}}'
225
  ]
226
  ]
227
  );
@@ -581,7 +579,7 @@ class Card extends Base {
581
  ],
582
  ],
583
  'selectors' => [
584
- '{{WRAPPER}} .ha-card-figure > img' => 'transition-duration: {{SIZE}}s',
585
  ],
586
  ]
587
  );
@@ -701,7 +699,7 @@ class Card extends Base {
701
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
702
  'type' => Controls_Manager::COLOR,
703
  'selectors' => [
704
- '{{WRAPPER}} .ha-badge' => 'color: {{VALUE}}',
705
  ],
706
  ]
707
  );
@@ -712,7 +710,7 @@ class Card extends Base {
712
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
713
  'type' => Controls_Manager::COLOR,
714
  'selectors' => [
715
- '{{WRAPPER}} .ha-badge' => 'background-color: {{VALUE}}',
716
  ],
717
  ]
718
  );
@@ -855,7 +853,7 @@ class Card extends Base {
855
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
856
  'type' => Controls_Manager::COLOR,
857
  'selectors' => [
858
- '{{WRAPPER}} .ha-card-text' => 'color: {{VALUE}}',
859
  ],
860
  ]
861
  );
@@ -1030,10 +1028,10 @@ class Card extends Base {
1030
  ['ha-badge', sprintf( 'ha-badge--%s', esc_attr( $settings['badge_position'] ) )]
1031
  );
1032
 
1033
- $this->add_inline_editing_attributes( 'title', 'none' );
1034
  $this->add_render_attribute( 'title', 'class', 'ha-card-title' );
1035
 
1036
- $this->add_inline_editing_attributes( 'description', 'basic' );
1037
  $this->add_render_attribute( 'description', 'class', 'ha-card-text' );
1038
 
1039
  $this->add_inline_editing_attributes( 'button_text', 'none' );
@@ -1069,26 +1067,26 @@ class Card extends Base {
1069
  printf( '<%1$s %2$s>%3$s</%1$s>',
1070
  tag_escape( $settings['title_tag'] ),
1071
  $this->get_render_attribute_string( 'title' ),
1072
- esc_html( $settings['title' ] )
1073
  );
1074
  endif;
1075
  ?>
1076
 
1077
  <?php if ( $settings['description'] ) : ?>
1078
  <div <?php echo $this->get_render_attribute_string( 'description' ); ?>>
1079
- <p><?php echo wp_kses_data( $settings['description'] ); ?></p>
1080
  </div>
1081
  <?php endif; ?>
1082
 
1083
  <?php
1084
- if ( $settings['button_text'] && ( empty( $settings['button_selected_icon'] ) && empty( $settings['button_icon'] ) ) ) :
1085
  printf( '<a %1$s>%2$s</a>',
1086
  $this->get_render_attribute_string( 'button' ),
1087
  sprintf( '<span %1$s>%2$s</span>', $this->get_render_attribute_string( 'button_text' ), esc_html( $settings['button_text'] ) )
1088
  );
1089
- elseif ( empty( $settings['button_text'] ) && ( ! empty( $settings['button_icon'] ) || ! empty( $settings['button_selected_icon'] ) ) ) : ?>
1090
  <a <?php $this->print_render_attribute_string( 'button' ); ?>><?php ha_render_icon( $settings, 'button_icon', 'button_selected_icon' ); ?></a>
1091
- <?php elseif ( $settings['button_text'] && ( ! empty( $settings['button_icon'] ) || ! empty( $settings['button_selected_icon'] ) ) ) :
1092
  if ( $settings['button_icon_position'] === 'before' ) :
1093
  $this->add_render_attribute( 'button', 'class', 'ha-btn--icon-before' );
1094
  $button_text = sprintf( '<span %1$s>%2$s</span>', $this->get_render_attribute_string( 'button_text' ), esc_html( $settings['button_text'] ) );
@@ -1125,10 +1123,10 @@ class Card extends Base {
1125
  ['ha-badge', 'ha-badge--' + settings.badge_position]
1126
  );
1127
 
1128
- view.addInlineEditingAttributes( 'title', 'none' );
1129
  view.addRenderAttribute( 'title', 'class', 'ha-card-title' );
1130
 
1131
- view.addInlineEditingAttributes( 'description', 'basic' );
1132
  view.addRenderAttribute( 'description', 'class', 'ha-card-text' );
1133
 
1134
  view.addInlineEditingAttributes( 'button_text', 'none' );
@@ -1157,7 +1155,7 @@ class Card extends Base {
1157
 
1158
  <div class="ha-card-body">
1159
  <# if (settings.title) { #>
1160
- <{{ settings.title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{ settings.title }}</{{ settings.title_tag }}>
1161
  <# } #>
1162
 
1163
  <# if (settings.description) { #>
@@ -1166,7 +1164,7 @@ class Card extends Base {
1166
  </div>
1167
  <# } #>
1168
 
1169
- <# if ( settings.button_selected_icon || settings.button_icon ) {
1170
  if ( ha_has_icon_library() && btnIconHTML && btnIconHTML.rendered && ( ! settings.button_icon || btnMigrated ) ) {
1171
  btnIcon = btnIconHTML.value;
1172
  } else if ( settings.button_icon ) {
@@ -1174,11 +1172,11 @@ class Card extends Base {
1174
  }
1175
  } #>
1176
 
1177
- <# if ( settings.button_text && ( ! settings.button_selected_icon && ! settings.button_icon ) ) { #>
1178
  <a {{{ view.getRenderAttributeString( 'button' ) }}}><span {{{ view.getRenderAttributeString( 'button_text' ) }}}>{{ settings.button_text }}</span></a>
1179
- <# } else if ( ! settings.button_text && ( settings.button_selected_icon || settings.button_icon ) ) { #>
1180
  <a {{{ view.getRenderAttributeString( 'button' ) }}}>{{{ btnIcon }}}</a>
1181
- <# } else if ( settings.button_text && ( settings.button_selected_icon || settings.button_icon ) ) {
1182
  if ( settings.button_icon_position === 'before' ) {
1183
  view.addRenderAttribute( 'button', 'class', 'ha-btn--icon-before' );
1184
  button_before = btnIcon;
102
  ],
103
  'toggle' => false,
104
  'default' => 'top',
105
+ 'prefix_class' => 'ha-card--',
106
  ]
107
  );
108
 
135
  $this->add_control(
136
  'title',
137
  [
138
+ 'label' => __( 'Title & Description', 'happy-elementor-addons' ),
139
  'label_block' => true,
140
  'type' => Controls_Manager::TEXT,
141
  'default' => __( 'Happy Card Title', 'happy-elementor-addons' ),
150
  'description',
151
  [
152
  'label' => __( 'Description', 'happy-elementor-addons' ),
153
+ 'description' => ha_get_allowed_html_desc( 'intermediate' ),
154
+ 'show_label' => false,
155
  'type' => Controls_Manager::TEXTAREA,
156
  'default' => __( 'Happy card description goes here', 'happy-elementor-addons' ),
157
  'placeholder' => __( 'Type card description', 'happy-elementor-addons' ),
216
  'title' => __( 'Right', 'happy-elementor-addons' ),
217
  'icon' => 'fa fa-align-right',
218
  ],
 
 
 
 
219
  ],
220
  'toggle' => true,
221
  'selectors' => [
222
+ '{{WRAPPER}} .elementor-widget-container' => 'text-align: {{VALUE}};'
223
  ]
224
  ]
225
  );
579
  ],
580
  ],
581
  'selectors' => [
582
+ '{{WRAPPER}} .ha-card-figure > img' => 'transition-duration: {{SIZE}}s;',
583
  ],
584
  ]
585
  );
699
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
700
  'type' => Controls_Manager::COLOR,
701
  'selectors' => [
702
+ '{{WRAPPER}} .ha-badge' => 'color: {{VALUE}};',
703
  ],
704
  ]
705
  );
710
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
711
  'type' => Controls_Manager::COLOR,
712
  'selectors' => [
713
+ '{{WRAPPER}} .ha-badge' => 'background-color: {{VALUE}};',
714
  ],
715
  ]
716
  );
853
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
854
  'type' => Controls_Manager::COLOR,
855
  'selectors' => [
856
+ '{{WRAPPER}} .ha-card-text' => 'color: {{VALUE}};',
857
  ],
858
  ]
859
  );
1028
  ['ha-badge', sprintf( 'ha-badge--%s', esc_attr( $settings['badge_position'] ) )]
1029
  );
1030
 
1031
+ $this->add_inline_editing_attributes( 'title', 'basic' );
1032
  $this->add_render_attribute( 'title', 'class', 'ha-card-title' );
1033
 
1034
+ $this->add_inline_editing_attributes( 'description', 'intermediate' );
1035
  $this->add_render_attribute( 'description', 'class', 'ha-card-text' );
1036
 
1037
  $this->add_inline_editing_attributes( 'button_text', 'none' );
1067
  printf( '<%1$s %2$s>%3$s</%1$s>',
1068
  tag_escape( $settings['title_tag'] ),
1069
  $this->get_render_attribute_string( 'title' ),
1070
+ ha_kses_basic( $settings['title' ] )
1071
  );
1072
  endif;
1073
  ?>
1074
 
1075
  <?php if ( $settings['description'] ) : ?>
1076
  <div <?php echo $this->get_render_attribute_string( 'description' ); ?>>
1077
+ <p><?php echo ha_kses_intermediate( $settings['description'] ); ?></p>
1078
  </div>
1079
  <?php endif; ?>
1080
 
1081
  <?php
1082
+ if ( $settings['button_text'] && ( ( empty( $settings['button_selected_icon'] ) || empty( $settings['button_selected_icon']['value'] ) ) && empty( $settings['button_icon'] ) ) ) :
1083
  printf( '<a %1$s>%2$s</a>',
1084
  $this->get_render_attribute_string( 'button' ),
1085
  sprintf( '<span %1$s>%2$s</span>', $this->get_render_attribute_string( 'button_text' ), esc_html( $settings['button_text'] ) )
1086
  );
1087
+ elseif ( empty( $settings['button_text'] ) && ( ! ( empty( $settings['button_selected_icon'] ) || empty( $settings['button_selected_icon']['value'] ) ) || ! empty( $settings['button_icon'] ) ) ) : ?>
1088
  <a <?php $this->print_render_attribute_string( 'button' ); ?>><?php ha_render_icon( $settings, 'button_icon', 'button_selected_icon' ); ?></a>
1089
+ <?php elseif ( $settings['button_text'] && ( ! ( empty( $settings['button_selected_icon'] ) || empty( $settings['button_selected_icon']['value'] ) ) || ! empty( $settings['button_icon'] ) ) ) :
1090
  if ( $settings['button_icon_position'] === 'before' ) :
1091
  $this->add_render_attribute( 'button', 'class', 'ha-btn--icon-before' );
1092
  $button_text = sprintf( '<span %1$s>%2$s</span>', $this->get_render_attribute_string( 'button_text' ), esc_html( $settings['button_text'] ) );
1123
  ['ha-badge', 'ha-badge--' + settings.badge_position]
1124
  );
1125
 
1126
+ view.addInlineEditingAttributes( 'title', 'basic' );
1127
  view.addRenderAttribute( 'title', 'class', 'ha-card-title' );
1128
 
1129
+ view.addInlineEditingAttributes( 'description', 'intermediate' );
1130
  view.addRenderAttribute( 'description', 'class', 'ha-card-text' );
1131
 
1132
  view.addInlineEditingAttributes( 'button_text', 'none' );
1155
 
1156
  <div class="ha-card-body">
1157
  <# if (settings.title) { #>
1158
+ <{{ settings.title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{{ settings.title }}}</{{ settings.title_tag }}>
1159
  <# } #>
1160
 
1161
  <# if (settings.description) { #>
1164
  </div>
1165
  <# } #>
1166
 
1167
+ <# if ( ( settings.button_selected_icon && settings.button_selected_icon.value ) || settings.button_icon ) {
1168
  if ( ha_has_icon_library() && btnIconHTML && btnIconHTML.rendered && ( ! settings.button_icon || btnMigrated ) ) {
1169
  btnIcon = btnIconHTML.value;
1170
  } else if ( settings.button_icon ) {
1172
  }
1173
  } #>
1174
 
1175
+ <# if ( settings.button_text && ( ! ( settings.button_selected_icon && settings.button_selected_icon.value ) && ! settings.button_icon ) ) { #>
1176
  <a {{{ view.getRenderAttributeString( 'button' ) }}}><span {{{ view.getRenderAttributeString( 'button_text' ) }}}>{{ settings.button_text }}</span></a>
1177
+ <# } else if ( ! settings.button_text && ( ( settings.button_selected_icon && settings.button_selected_icon.value ) || settings.button_icon ) ) { #>
1178
  <a {{{ view.getRenderAttributeString( 'button' ) }}}>{{{ btnIcon }}}</a>
1179
+ <# } else if ( settings.button_text && ( ( settings.button_selected_icon && settings.button_selected_icon.value ) || settings.button_icon ) ) {
1180
  if ( settings.button_icon_position === 'before' ) {
1181
  view.addRenderAttribute( 'button', 'class', 'ha-btn--icon-before' );
1182
  button_before = btnIcon;
widgets/carousel/widget.php CHANGED
@@ -748,10 +748,10 @@ class Carousel extends Base {
748
  <?php if ( $slide['title'] || $slide['subtitle'] ) : ?>
749
  <div class="ha-slick-content">
750
  <?php if ( $slide['title'] ) : ?>
751
- <h2 class="ha-slick-title"><?php echo esc_html( $slide['title'] ); ?></h2>
752
  <?php endif; ?>
753
  <?php if ( $slide['subtitle'] ) : ?>
754
- <p class="ha-slick-subtitle"><?php echo esc_html( $slide['subtitle'] ); ?></p>
755
  <?php endif; ?>
756
  </div>
757
  <?php endif; ?>
748
  <?php if ( $slide['title'] || $slide['subtitle'] ) : ?>
749
  <div class="ha-slick-content">
750
  <?php if ( $slide['title'] ) : ?>
751
+ <h2 class="ha-slick-title"><?php echo ha_kses_basic( $slide['title'] ); ?></h2>
752
  <?php endif; ?>
753
  <?php if ( $slide['subtitle'] ) : ?>
754
+ <p class="ha-slick-subtitle"><?php echo ha_kses_basic( $slide['subtitle'] ); ?></p>
755
  <?php endif; ?>
756
  </div>
757
  <?php endif; ?>
widgets/dual-button/widget.php CHANGED
@@ -161,6 +161,7 @@ class Dual_Button extends Base {
161
  'type' => Controls_Manager::SWITCHER,
162
  'label_on' => __( 'Hide', 'happy-elementor-addons' ),
163
  'label_off' => __( 'Show', 'happy-elementor-addons' ),
 
164
  ]
165
  );
166
 
161
  'type' => Controls_Manager::SWITCHER,
162
  'label_on' => __( 'Hide', 'happy-elementor-addons' ),
163
  'label_off' => __( 'Show', 'happy-elementor-addons' ),
164
+ 'style_transfer' => true,
165
  ]
166
  );
167
 
widgets/flip-box/widget.php CHANGED
@@ -166,6 +166,7 @@ class Flip_Box extends Base {
166
  'front_description',
167
  [
168
  'label' => __( 'Description', 'happy-elementor-addons' ),
 
169
  'label_block' => true,
170
  'type' => Controls_Manager::TEXTAREA,
171
  'default' => 'consectetur adipiscing elit, sed do<br>eiusmod Lorem ipsum dolor sit amet,<br> consectetur.',
@@ -321,6 +322,7 @@ class Flip_Box extends Base {
321
  'back_description',
322
  [
323
  'label' => __( 'Description', 'happy-elementor-addons' ),
 
324
  'label_block' => true,
325
  'type' => Controls_Manager::TEXTAREA,
326
  'default' => 'consectetur adipiscing elit, sed do<br>eiusmod Lorem ipsum dolor sit amet.',
@@ -353,7 +355,6 @@ class Flip_Box extends Base {
353
  'selectors' => [
354
  '{{WRAPPER}} .ha-flip-box-back-inner .icon-wrap' => 'text-align: {{VALUE}}',
355
  '{{WRAPPER}} .ha-flip-box-back-inner .ha-text' => 'text-align: {{VALUE}}',
356
- '{{WRAPPER}} .ha-flip-box-back-inner .button-wrap' => 'text-align: {{VALUE}}',
357
  ]
358
  ]
359
  );
@@ -373,19 +374,20 @@ class Flip_Box extends Base {
373
  [
374
  'label' => __( 'Flip Direction', 'happy-elementor-addons' ),
375
  'type' => Controls_Manager::CHOOSE,
376
- 'default' => 'right',
377
  'label_block' => false,
378
  'options' => [
379
- 'up' => [
380
  'title' => __( 'Bottom To Top', 'happy-elementor-addons' ),
381
  'icon' => 'eicon-v-align-top',
382
  ],
383
- 'right' => [
384
  'title' => __( 'Left To Right', 'happy-elementor-addons' ),
385
  'icon' => 'eicon-h-align-right',
386
  ],
387
  ],
388
  'toggle' => false,
 
389
  ]
390
  );
391
 
@@ -491,7 +493,7 @@ class Flip_Box extends Base {
491
  'label' => __( 'Background Overlay', 'happy-elementor-addons' ),
492
  'type' => Controls_Manager::COLOR,
493
  'condition' => [
494
- 'front_background_image_image[url]!' => ''
495
  ],
496
  'selectors' => [
497
  '{{WRAPPER}} .ha-flip-box-front:before' => 'background-color: {{VALUE}}',
@@ -499,21 +501,6 @@ class Flip_Box extends Base {
499
  ]
500
  );
501
 
502
- $this->add_control(
503
- 'front_background_color',
504
- [
505
- 'label' => __( 'Color', 'happy-elementor-addons' ),
506
- 'type' => Controls_Manager::COLOR,
507
- 'default' => '#fff',
508
- 'condition' => [
509
- 'front_background_type' => 'color',
510
- ],
511
- 'selectors' => [
512
- '{{WRAPPER}} .ha-flip-box-front' => 'background: {{VALUE}}',
513
- ],
514
- ]
515
- );
516
-
517
  $this->add_control(
518
  'front_icon_heading',
519
  [
@@ -1055,6 +1042,18 @@ class Flip_Box extends Base {
1055
  ]
1056
  );
1057
 
 
 
 
 
 
 
 
 
 
 
 
 
1058
  $this->add_control(
1059
  'back_title_color',
1060
  [
@@ -1094,18 +1093,6 @@ class Flip_Box extends Base {
1094
  ]
1095
  );
1096
 
1097
- $this->add_responsive_control(
1098
- 'back_description_space',
1099
- [
1100
- 'label' => __( 'Spacing', 'happy-elementor-addons' ),
1101
- 'type' => Controls_Manager::SLIDER,
1102
- 'size_units' => ['px', '%'],
1103
- 'selectors' => [
1104
- '{{WRAPPER}} .ha-flip-box-back-inner .ha-text p' => 'margin-top: {{SIZE}}{{UNIT}};',
1105
- ],
1106
- ]
1107
- );
1108
-
1109
  $this->add_control(
1110
  'back_description_color',
1111
  [
@@ -1157,16 +1144,16 @@ class Flip_Box extends Base {
1157
  $this->add_render_attribute( 'back_title', 'class', 'ha-flip-box-heading-back' );
1158
  $this->add_render_attribute( 'front_description', 'class', 'ha-desc' );
1159
  $this->add_render_attribute( 'back_description', 'class', 'ha-desc' );
1160
- $this->add_inline_editing_attributes( 'back_description', 'basic' );
1161
 
1162
  // display type
1163
  $this->add_render_attribute( 'display', 'class', 'ha-flip-box-container ha-flip-effect-classic' );
1164
 
1165
  // flip position
1166
  $this->add_render_attribute( 'flip-position', 'class', 'ha-flip-box-inner' );
1167
- if ( $settings['flip_position'] === 'up' ) {
1168
  $this->add_render_attribute( 'flip-position', 'class', 'ha-flip-up' );
1169
- } elseif ( $settings['flip_position'] === 'right' ) {
1170
  $this->add_render_attribute( 'flip-position', 'class', 'ha-flip-right' );
1171
  }
1172
  ?>
@@ -1192,11 +1179,11 @@ class Flip_Box extends Base {
1192
 
1193
  <div class="ha-text">
1194
  <?php if ( $settings['front_title'] ) : ?>
1195
- <h2 <?php echo $this->get_render_attribute_string( 'front_title' ); ?>><?php echo esc_html( $settings['front_title'] ); ?></h2>
1196
  <?php endif; ?>
1197
 
1198
  <?php if ( $settings['front_description'] ) : ?>
1199
- <p <?php echo $this->get_render_attribute_string( 'front_description' ); ?>><?php echo $settings['front_description']; ?></p>
1200
  <?php endif; ?>
1201
  </div>
1202
  </div>
@@ -1219,11 +1206,11 @@ class Flip_Box extends Base {
1219
 
1220
  <div class="ha-text">
1221
  <?php if ( $settings['back_title'] ) : ?>
1222
- <h2 <?php echo $this->get_render_attribute_string( 'back_title' ); ?>><?php echo esc_html( $settings['back_title'] ); ?></h2>
1223
  <?php endif; ?>
1224
 
1225
  <?php if ( $settings['back_description'] ) : ?>
1226
- <p <?php echo $this->get_render_attribute_string( 'back_description' ) ?>><?php echo $settings['back_description'] ?></p>
1227
  <?php endif; ?>
1228
  </div>
1229
 
166
  'front_description',
167
  [
168
  'label' => __( 'Description', 'happy-elementor-addons' ),
169
+ 'description' => ha_get_allowed_html_desc( 'basic' ),
170
  'label_block' => true,
171
  'type' => Controls_Manager::TEXTAREA,
172
  'default' => 'consectetur adipiscing elit, sed do<br>eiusmod Lorem ipsum dolor sit amet,<br> consectetur.',
322
  'back_description',
323
  [
324
  'label' => __( 'Description', 'happy-elementor-addons' ),
325
+ 'description' => ha_get_allowed_html_desc( 'intermediate' ),
326
  'label_block' => true,
327
  'type' => Controls_Manager::TEXTAREA,
328
  'default' => 'consectetur adipiscing elit, sed do<br>eiusmod Lorem ipsum dolor sit amet.',
355
  'selectors' => [
356
  '{{WRAPPER}} .ha-flip-box-back-inner .icon-wrap' => 'text-align: {{VALUE}}',
357
  '{{WRAPPER}} .ha-flip-box-back-inner .ha-text' => 'text-align: {{VALUE}}',
 
358
  ]
359
  ]
360
  );
374
  [
375
  'label' => __( 'Flip Direction', 'happy-elementor-addons' ),
376
  'type' => Controls_Manager::CHOOSE,
377
+ 'default' => 'left-right',
378
  'label_block' => false,
379
  'options' => [
380
+ 'bottom-top' => [
381
  'title' => __( 'Bottom To Top', 'happy-elementor-addons' ),
382
  'icon' => 'eicon-v-align-top',
383
  ],
384
+ 'left-right' => [
385
  'title' => __( 'Left To Right', 'happy-elementor-addons' ),
386
  'icon' => 'eicon-h-align-right',
387
  ],
388
  ],
389
  'toggle' => false,
390
+ 'style_transfer' => true,
391
  ]
392
  );
393
 
493
  'label' => __( 'Background Overlay', 'happy-elementor-addons' ),
494
  'type' => Controls_Manager::COLOR,
495
  'condition' => [
496
+ 'front_background_image_background' => 'classic'
497
  ],
498
  'selectors' => [
499
  '{{WRAPPER}} .ha-flip-box-front:before' => 'background-color: {{VALUE}}',
501
  ]
502
  );
503
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
504
  $this->add_control(
505
  'front_icon_heading',
506
  [
1042
  ]
1043
  );
1044
 
1045
+ $this->add_responsive_control(
1046
+ 'back_title_space',
1047
+ [
1048
+ 'label' => __( 'Bottom Spacing', 'happy-elementor-addons' ),
1049
+ 'type' => Controls_Manager::SLIDER,
1050
+ 'size_units' => ['px', '%'],
1051
+ 'selectors' => [
1052
+ '{{WRAPPER}} .ha-flip-box-back-inner .ha-flip-box-heading-back' => 'margin-bottom: {{SIZE}}{{UNIT}};',
1053
+ ],
1054
+ ]
1055
+ );
1056
+
1057
  $this->add_control(
1058
  'back_title_color',
1059
  [
1093
  ]
1094
  );
1095
 
 
 
 
 
 
 
 
 
 
 
 
 
1096
  $this->add_control(
1097
  'back_description_color',
1098
  [
1144
  $this->add_render_attribute( 'back_title', 'class', 'ha-flip-box-heading-back' );
1145
  $this->add_render_attribute( 'front_description', 'class', 'ha-desc' );
1146
  $this->add_render_attribute( 'back_description', 'class', 'ha-desc' );
1147
+ $this->add_inline_editing_attributes( 'back_description', 'intermediate' );
1148
 
1149
  // display type
1150
  $this->add_render_attribute( 'display', 'class', 'ha-flip-box-container ha-flip-effect-classic' );
1151
 
1152
  // flip position
1153
  $this->add_render_attribute( 'flip-position', 'class', 'ha-flip-box-inner' );
1154
+ if ( $settings['flip_position'] === 'bottom-top' ) {
1155
  $this->add_render_attribute( 'flip-position', 'class', 'ha-flip-up' );
1156
+ } elseif ( $settings['flip_position'] === 'left-right' ) {
1157
  $this->add_render_attribute( 'flip-position', 'class', 'ha-flip-right' );
1158
  }
1159
  ?>
1179
 
1180
  <div class="ha-text">
1181
  <?php if ( $settings['front_title'] ) : ?>
1182
+ <h2 <?php echo $this->get_render_attribute_string( 'front_title' ); ?>><?php echo ha_kses_basic( $settings['front_title'] ); ?></h2>
1183
  <?php endif; ?>
1184
 
1185
  <?php if ( $settings['front_description'] ) : ?>
1186
+ <p <?php echo $this->get_render_attribute_string( 'front_description' ); ?>><?php echo ha_kses_basic( $settings['front_description'] ); ?></p>
1187
  <?php endif; ?>
1188
  </div>
1189
  </div>
1206
 
1207
  <div class="ha-text">
1208
  <?php if ( $settings['back_title'] ) : ?>
1209
+ <h2 <?php echo $this->get_render_attribute_string( 'back_title' ); ?>><?php echo ha_kses_basic( $settings['back_title'] ); ?></h2>
1210
  <?php endif; ?>
1211
 
1212
  <?php if ( $settings['back_description'] ) : ?>
1213
+ <p <?php echo $this->get_render_attribute_string( 'back_description' ) ?>><?php echo ha_kses_intermediate( $settings['back_description'] ); ?></p>
1214
  <?php endif; ?>
1215
  </div>
1216
 
widgets/gradient-heading/widget.php CHANGED
@@ -133,14 +133,10 @@ class Gradient_Heading extends Base {
133
  'title' => __( 'Right', 'happy-elementor-addons' ),
134
  'icon' => 'fa fa-align-right',
135
  ],
136
- 'justify' => [
137
- 'title' => __( 'Justify', 'happy-elementor-addons' ),
138
- 'icon' => 'fa fa-align-justify',
139
- ],
140
  ],
141
  'toggle' => true,
142
  'selectors' => [
143
- '{{WRAPPER}}' => 'text-align: {{VALUE}}'
144
  ]
145
  ]
146
  );
@@ -204,7 +200,7 @@ class Gradient_Heading extends Base {
204
  'luminosity' => 'Luminosity',
205
  ],
206
  'selectors' => [
207
- '{{WRAPPER}} .ha-gradient-heading' => 'mix-blend-mode: {{VALUE}}',
208
  ],
209
  'separator' => 'none',
210
  ]
@@ -219,7 +215,7 @@ class Gradient_Heading extends Base {
219
  $this->add_inline_editing_attributes( 'title', 'basic' );
220
  $this->add_render_attribute( 'title', 'class', 'ha-gradient-heading' );
221
 
222
- $title = wp_kses_post( $settings['title' ] );
223
 
224
  if ( ! empty( $settings['link']['url'] ) ) {
225
  $this->add_render_attribute( 'link', 'href', esc_url( $settings['link']['url'] ) );
@@ -247,7 +243,7 @@ class Gradient_Heading extends Base {
247
  public function _content_template() {
248
  ?>
249
  <#
250
- view.addInlineEditingAttributes( 'title', 'none' );
251
  view.addRenderAttribute( 'title', 'class', 'ha-gradient-heading' );
252
 
253
  var title = _.isEmpty(settings.link.url) ? settings.title : '<a href="'+settings.link.url+'">'+settings.title+'</a>';
133
  'title' => __( 'Right', 'happy-elementor-addons' ),
134
  'icon' => 'fa fa-align-right',
135
  ],
 
 
 
 
136
  ],
137
  'toggle' => true,
138
  'selectors' => [
139
+ '{{WRAPPER}}' => 'text-align: {{VALUE}};'
140
  ]
141
  ]
142
  );
200
  'luminosity' => 'Luminosity',
201
  ],
202
  'selectors' => [
203
+ '{{WRAPPER}} .ha-gradient-heading' => 'mix-blend-mode: {{VALUE}};',
204
  ],
205
  'separator' => 'none',
206
  ]
215
  $this->add_inline_editing_attributes( 'title', 'basic' );
216
  $this->add_render_attribute( 'title', 'class', 'ha-gradient-heading' );
217
 
218
+ $title = ha_kses_basic( $settings['title' ] );
219
 
220
  if ( ! empty( $settings['link']['url'] ) ) {
221
  $this->add_render_attribute( 'link', 'href', esc_url( $settings['link']['url'] ) );
243
  public function _content_template() {
244
  ?>
245
  <#
246
+ view.addInlineEditingAttributes( 'title', 'basic' );
247
  view.addRenderAttribute( 'title', 'class', 'ha-gradient-heading' );
248
 
249
  var title = _.isEmpty(settings.link.url) ? settings.title : '<a href="'+settings.link.url+'">'+settings.title+'</a>';
widgets/icon-box/widget.php CHANGED
@@ -177,14 +177,10 @@ class Icon_Box extends Base {
177
  'title' => __( 'Right', 'happy-elementor-addons' ),
178
  'icon' => 'fa fa-align-right',
179
  ],
180
- 'justify' => [
181
- 'title' => __( 'Justify', 'happy-elementor-addons' ),
182
- 'icon' => 'fa fa-align-justify',
183
- ],
184
  ],
185
  'toggle' => true,
186
  'selectors' => [
187
- '{{WRAPPER}}' => 'text-align: {{VALUE}}'
188
  ]
189
  ]
190
  );
@@ -294,7 +290,7 @@ class Icon_Box extends Base {
294
  'label' => __( 'Color', 'happy-elementor-addons' ),
295
  'type' => Controls_Manager::COLOR,
296
  'selectors' => [
297
- '{{WRAPPER}} .ha-icon-box-icon' => 'color: {{VALUE}}',
298
  ],
299
  ]
300
  );
@@ -305,7 +301,7 @@ class Icon_Box extends Base {
305
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
306
  'type' => Controls_Manager::COLOR,
307
  'selectors' => [
308
- '{{WRAPPER}} .ha-icon-box-icon' => 'background-color: {{VALUE}}',
309
  ],
310
  ]
311
  );
@@ -350,7 +346,7 @@ class Icon_Box extends Base {
350
  'label' => __( 'Color', 'happy-elementor-addons' ),
351
  'type' => Controls_Manager::COLOR,
352
  'selectors' => [
353
- '{{WRAPPER}}:hover .ha-icon-box-icon' => 'color: {{VALUE}}',
354
  ],
355
  ]
356
  );
@@ -361,7 +357,7 @@ class Icon_Box extends Base {
361
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
362
  'type' => Controls_Manager::COLOR,
363
  'selectors' => [
364
- '{{WRAPPER}}:hover .ha-icon-box-icon' => 'background-color: {{VALUE}}',
365
  ],
366
  ]
367
  );
@@ -372,7 +368,7 @@ class Icon_Box extends Base {
372
  'label' => __( 'Border Color', 'happy-elementor-addons' ),
373
  'type' => Controls_Manager::COLOR,
374
  'selectors' => [
375
- '{{WRAPPER}}:hover .ha-icon-box-icon' => 'border-color: {{VALUE}}',
376
  ],
377
  'condition' => [
378
  'icon_border_border!' => '',
@@ -450,7 +446,7 @@ class Icon_Box extends Base {
450
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
451
  'type' => Controls_Manager::COLOR,
452
  'selectors' => [
453
- '{{WRAPPER}} .ha-icon-box-title' => 'color: {{VALUE}}',
454
  ],
455
  ]
456
  );
@@ -470,7 +466,7 @@ class Icon_Box extends Base {
470
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
471
  'type' => Controls_Manager::COLOR,
472
  'selectors' => [
473
- '{{WRAPPER}}:hover .ha-icon-box-title' => 'color: {{VALUE}}',
474
  ],
475
  ]
476
  );
@@ -566,7 +562,7 @@ class Icon_Box extends Base {
566
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
567
  'type' => Controls_Manager::COLOR,
568
  'selectors' => [
569
- '{{WRAPPER}} .ha-badge' => 'color: {{VALUE}}',
570
  ],
571
  ]
572
  );
@@ -577,7 +573,7 @@ class Icon_Box extends Base {
577
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
578
  'type' => Controls_Manager::COLOR,
579
  'selectors' => [
580
- '{{WRAPPER}} .ha-badge' => 'background-color: {{VALUE}}',
581
  ],
582
  ]
583
  );
@@ -672,7 +668,7 @@ class Icon_Box extends Base {
672
  return;
673
  }
674
 
675
- if ( \Elementor\Plugin::$instance->editor->is_edit_mode() ) {
676
  $this->render_edit_tools();
677
  }
678
 
@@ -716,7 +712,7 @@ class Icon_Box extends Base {
716
  protected function render() {
717
  $settings = $this->get_settings_for_display();
718
 
719
- $this->add_inline_editing_attributes( 'title', 'none' );
720
  $this->add_render_attribute( 'title', 'class', 'ha-icon-box-title' );
721
 
722
  $this->add_inline_editing_attributes( 'badge_text', 'none' );
@@ -724,21 +720,20 @@ class Icon_Box extends Base {
724
  ?>
725
 
726
  <?php if ( $settings['badge_text'] ) : ?>
727
- <span <?php echo $this->get_render_attribute_string( 'badge_text' ); ?>><?php echo esc_html( $settings['badge_text'] ); ?></span>
728
  <?php endif; ?>
729
 
730
  <?php if ( ! empty( $settings['icon'] ) || ! empty( $settings['selected_icon'] ) ) : ?>
731
  <span class="ha-icon-box-icon">
732
  <?php ha_render_icon( $settings, 'icon', 'selected_icon' ); ?>
733
  </span>
734
- <?php endif; ?>
735
 
736
- <?php
737
  if ( $settings['title' ] ) :
738
  printf( '<%1$s %2$s>%3$s</%1$s>',
739
  tag_escape( $settings['title_tag'] ),
740
  $this->get_render_attribute_string( 'title' ),
741
- esc_html( $settings['title' ] )
742
  );
743
  endif;
744
  }
@@ -753,7 +748,7 @@ class Icon_Box extends Base {
753
  migrated = elementor.helpers.isIconMigrated( settings, 'selected_icon' );
754
  }
755
 
756
- view.addInlineEditingAttributes( 'title', 'none' );
757
  view.addRenderAttribute( 'title', 'class', 'ha-icon-box-title' );
758
 
759
  view.addInlineEditingAttributes( 'badge_text', 'none' );
177
  'title' => __( 'Right', 'happy-elementor-addons' ),
178
  'icon' => 'fa fa-align-right',
179
  ],
 
 
 
 
180
  ],
181
  'toggle' => true,
182
  'selectors' => [
183
+ '{{WRAPPER}}' => 'text-align: {{VALUE}};'
184
  ]
185
  ]
186
  );
290
  'label' => __( 'Color', 'happy-elementor-addons' ),
291
  'type' => Controls_Manager::COLOR,
292
  'selectors' => [
293
+ '{{WRAPPER}} .ha-icon-box-icon' => 'color: {{VALUE}};',
294
  ],
295
  ]
296
  );
301
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
302
  'type' => Controls_Manager::COLOR,
303
  'selectors' => [
304
+ '{{WRAPPER}} .ha-icon-box-icon' => 'background-color: {{VALUE}};',
305
  ],
306
  ]
307
  );
346
  'label' => __( 'Color', 'happy-elementor-addons' ),
347
  'type' => Controls_Manager::COLOR,
348
  'selectors' => [
349
+ '{{WRAPPER}}:hover .ha-icon-box-icon' => 'color: {{VALUE}};',
350
  ],
351
  ]
352
  );
357
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
358
  'type' => Controls_Manager::COLOR,
359
  'selectors' => [
360
+ '{{WRAPPER}}:hover .ha-icon-box-icon' => 'background-color: {{VALUE}};',
361
  ],
362
  ]
363
  );
368
  'label' => __( 'Border Color', 'happy-elementor-addons' ),
369
  'type' => Controls_Manager::COLOR,
370
  'selectors' => [
371
+ '{{WRAPPER}}:hover .ha-icon-box-icon' => 'border-color: {{VALUE}};',
372
  ],
373
  'condition' => [
374
  'icon_border_border!' => '',
446
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
447
  'type' => Controls_Manager::COLOR,
448
  'selectors' => [
449
+ '{{WRAPPER}} .ha-icon-box-title' => 'color: {{VALUE}};',
450
  ],
451
  ]
452
  );
466
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
467
  'type' => Controls_Manager::COLOR,
468
  'selectors' => [
469
+ '{{WRAPPER}}:hover .ha-icon-box-title' => 'color: {{VALUE}};',
470
  ],
471
  ]
472
  );
562
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
563
  'type' => Controls_Manager::COLOR,
564
  'selectors' => [
565
+ '{{WRAPPER}} .ha-badge' => 'color: {{VALUE}};',
566
  ],
567
  ]
568
  );
573
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
574
  'type' => Controls_Manager::COLOR,
575
  'selectors' => [
576
+ '{{WRAPPER}} .ha-badge' => 'background-color: {{VALUE}};',
577
  ],
578
  ]
579
  );
668
  return;
669
  }
670
 
671
+ if ( ha_elementor()->editor->is_edit_mode() ) {
672
  $this->render_edit_tools();
673
  }
674
 
712
  protected function render() {
713
  $settings = $this->get_settings_for_display();
714
 
715
+ $this->add_inline_editing_attributes( 'title', 'basic' );
716
  $this->add_render_attribute( 'title', 'class', 'ha-icon-box-title' );
717
 
718
  $this->add_inline_editing_attributes( 'badge_text', 'none' );
720
  ?>
721
 
722
  <?php if ( $settings['badge_text'] ) : ?>
723
+ <span <?php $this->print_render_attribute_string( 'badge_text' ); ?>><?php echo esc_html( $settings['badge_text'] ); ?></span>
724
  <?php endif; ?>
725
 
726
  <?php if ( ! empty( $settings['icon'] ) || ! empty( $settings['selected_icon'] ) ) : ?>
727
  <span class="ha-icon-box-icon">
728
  <?php ha_render_icon( $settings, 'icon', 'selected_icon' ); ?>
729
  </span>
730
+ <?php endif;
731
 
 
732
  if ( $settings['title' ] ) :
733
  printf( '<%1$s %2$s>%3$s</%1$s>',
734
  tag_escape( $settings['title_tag'] ),
735
  $this->get_render_attribute_string( 'title' ),
736
+ ha_kses_basic( $settings['title' ] )
737
  );
738
  endif;
739
  }
748
  migrated = elementor.helpers.isIconMigrated( settings, 'selected_icon' );
749
  }
750
 
751
+ view.addInlineEditingAttributes( 'title', 'basic' );
752
  view.addRenderAttribute( 'title', 'class', 'ha-icon-box-title' );
753
 
754
  view.addInlineEditingAttributes( 'badge_text', 'none' );
widgets/image-compare/widget.php CHANGED
@@ -167,6 +167,7 @@ class Image_Compare extends Base {
167
  'default' => [
168
  'size' => .5,
169
  ],
 
170
  ]
171
  );
172
 
@@ -187,6 +188,7 @@ class Image_Compare extends Base {
187
  ],
188
  ],
189
  'default' => 'horizontal',
 
190
  ]
191
  );
192
 
@@ -198,7 +200,8 @@ class Image_Compare extends Base {
198
  'label_on' => __( 'Yes', 'happy-elementor-addons' ),
199
  'label_off' => __( 'No', 'happy-elementor-addons' ),
200
  'return_value' => 'yes',
201
- 'description' => __( 'Hide overlay with before and after label', 'happy-elementor-addons' )
 
202
  ]
203
  );
204
 
@@ -213,7 +216,8 @@ class Image_Compare extends Base {
213
  'on_click' => __( 'On Click', 'happy-elementor-addons' ),
214
  'on_swipe' => __( 'On Swipe', 'happy-elementor-addons' ),
215
  ],
216
- 'description' => __( 'Select handle movement type. Note: overlay does not work with On Hover.', 'happy-elementor-addons' )
 
217
  ]
218
  );
219
 
167
  'default' => [
168
  'size' => .5,
169
  ],
170
+ 'style_transfer' => true,
171
  ]
172
  );
173
 
188
  ],
189
  ],
190
  'default' => 'horizontal',
191
+ 'style_transfer' => true,
192
  ]
193
  );
194
 
200
  'label_on' => __( 'Yes', 'happy-elementor-addons' ),
201
  'label_off' => __( 'No', 'happy-elementor-addons' ),
202
  'return_value' => 'yes',
203
+ 'description' => __( 'Hide overlay with before and after label', 'happy-elementor-addons' ),
204
+ 'style_transfer' => true,
205
  ]
206
  );
207
 
216
  'on_click' => __( 'On Click', 'happy-elementor-addons' ),
217
  'on_swipe' => __( 'On Swipe', 'happy-elementor-addons' ),
218
  ],
219
+ 'description' => __( 'Select handle movement type. Note: overlay does not work with On Hover.', 'happy-elementor-addons' ),
220
+ 'style_transfer' => true,
221
  ]
222
  );
223
 
widgets/image-grid/widget.php CHANGED
@@ -64,8 +64,8 @@ class Image_Grid extends Base {
64
  'label' => __( 'Filter Name', 'happy-elementor-addons' ),
65
  'type' => Controls_Manager::TEXT,
66
  'placeholder' => __( 'Type gallery filter name', 'happy-elementor-addons' ),
67
- 'description' => __( 'Filter menu will be built using filter name', 'happy-elementor-addons' ),
68
- 'default' => __( 'Image Grid', 'happy-elementor-addons' ),
69
  ]
70
  );
71
 
@@ -73,6 +73,9 @@ class Image_Grid extends Base {
73
  'images',
74
  [
75
  'type' => Controls_Manager::GALLERY,
 
 
 
76
  ]
77
  );
78
 
@@ -81,10 +84,12 @@ class Image_Grid extends Base {
81
  [
82
  'type' => Controls_Manager::REPEATER,
83
  'fields' => $repeater->get_controls(),
84
- 'title_field' => 'Filter Group: {{ filter }}',
 
 
85
  'default' => [
86
  [
87
- 'filter' => __( 'Image Grid', 'happy-elementor-addons' ),
88
  ]
89
  ]
90
  ]
@@ -115,25 +120,25 @@ class Image_Grid extends Base {
115
  $this->add_control(
116
  'show_filter',
117
  [
118
- 'label' => __( 'Show Filter?', 'happy-elementor-addons' ),
119
  'type' => Controls_Manager::SWITCHER,
120
  'label_on' => __( 'Yes', 'happy-elementor-addons' ),
121
  'label_off' => __( 'No', 'happy-elementor-addons' ),
122
  'return_value' => 'yes',
123
- 'description' => __( 'Enable to display filter navigation. Filter navigation will be built using filter name from gallery', 'happy-elementor-addons' )
124
  ]
125
  );
126
 
127
  $this->add_control(
128
  'show_all_filter',
129
  [
130
- 'label' => __( 'Show All Filter?', 'happy-elementor-addons' ),
131
  'type' => Controls_Manager::SWITCHER,
132
  'label_on' => __( 'Yes', 'happy-elementor-addons' ),
133
  'label_off' => __( 'No', 'happy-elementor-addons' ),
134
  'return_value' => 'yes',
135
  'default' => 'yes',
136
- 'description' => __( 'Enable to display all filter button', 'happy-elementor-addons' ),
137
  'condition' => [
138
  'show_filter' => 'yes'
139
  ]
@@ -147,7 +152,7 @@ class Image_Grid extends Base {
147
  'type' => Controls_Manager::TEXT,
148
  'default' => __( 'All', 'happy-elementor-addons' ),
149
  'placeholder' => __( 'Type filter label', 'happy-elementor-addons' ),
150
- 'description' => __( 'Type all filter label', 'happy-elementor-addons' ),
151
  'condition' => [
152
  'show_all_filter' => 'yes',
153
  'show_filter' => 'yes'
@@ -166,6 +171,7 @@ class Image_Grid extends Base {
166
  4 => __( '4 Columns', 'happy-elementor-addons' ),
167
  5 => __( '5 Columns', 'happy-elementor-addons' ),
168
  ],
 
169
  'desktop_default' => 4,
170
  'tablet_default' => 3,
171
  'mobile_default' => 2,
@@ -193,6 +199,34 @@ class Image_Grid extends Base {
193
  ]
194
  );
195
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
196
  $this->end_controls_section();
197
  }
198
 
@@ -672,6 +706,14 @@ class Image_Grid extends Base {
672
  $this->add_render_attribute( 'container', 'class', 'hajs-isotope-' . $this->get_id() );
673
  }
674
 
 
 
 
 
 
 
 
 
675
  if ( $settings['show_filter'] ) : ?>
676
 
677
  <ul class="ha-gallery-filter hajs-gallery-filter">
@@ -688,8 +730,9 @@ class Image_Grid extends Base {
688
  <div <?php $this->print_render_attribute_string( 'container' ); ?>>
689
 
690
  <?php foreach ( $gallery['items'] as $id => $filters ) : ?>
 
691
 
692
- <figure class="ha-image-grid-item <?php echo esc_attr( implode( ' ', $filters ) ); ?>">
693
  <div class="ha-image-grid-inner">
694
  <?php echo wp_get_attachment_image(
695
  $id,
@@ -701,7 +744,7 @@ class Image_Grid extends Base {
701
  ]
702
  ); ?>
703
  </div>
704
- </figure>
705
 
706
  <?php endforeach; ?>
707
 
64
  'label' => __( 'Filter Name', 'happy-elementor-addons' ),
65
  'type' => Controls_Manager::TEXT,
66
  'placeholder' => __( 'Type gallery filter name', 'happy-elementor-addons' ),
67
+ 'description' => __( 'Filter name will be used in filter menu.', 'happy-elementor-addons' ),
68
+ 'default' => __( 'Filter Name', 'happy-elementor-addons' ),
69
  ]
70
  );
71
 
73
  'images',
74
  [
75
  'type' => Controls_Manager::GALLERY,
76
+ 'dynamic' => [
77
+ 'active' => true,
78
+ ]
79
  ]
80
  );
81
 
84
  [
85
  'type' => Controls_Manager::REPEATER,
86
  'fields' => $repeater->get_controls(),
87
+ 'show_label' => false,
88
+ /** translators: 1: Filter name */
89
+ 'title_field' => sprintf( __( 'Filter Group: %1$s', 'happy-elementor-addons' ), '{{filter}}' ),
90
  'default' => [
91
  [
92
+ 'filter' => __( 'Happy', 'happy-elementor-addons' ),
93
  ]
94
  ]
95
  ]
120
  $this->add_control(
121
  'show_filter',
122
  [
123
+ 'label' => __( 'Show Filter Menu?', 'happy-elementor-addons' ),
124
  'type' => Controls_Manager::SWITCHER,
125
  'label_on' => __( 'Yes', 'happy-elementor-addons' ),
126
  'label_off' => __( 'No', 'happy-elementor-addons' ),
127
  'return_value' => 'yes',
128
+ 'description' => __( 'Enable to display filter menu.', 'happy-elementor-addons' )
129
  ]
130
  );
131
 
132
  $this->add_control(
133
  'show_all_filter',
134
  [
135
+ 'label' => __( 'Show "All" Filter?', 'happy-elementor-addons' ),
136
  'type' => Controls_Manager::SWITCHER,
137
  'label_on' => __( 'Yes', 'happy-elementor-addons' ),
138
  'label_off' => __( 'No', 'happy-elementor-addons' ),
139
  'return_value' => 'yes',
140
  'default' => 'yes',
141
+ 'description' => __( 'Enable to display "All" filter in filter menu.', 'happy-elementor-addons' ),
142
  'condition' => [
143
  'show_filter' => 'yes'
144
  ]
152
  'type' => Controls_Manager::TEXT,
153
  'default' => __( 'All', 'happy-elementor-addons' ),
154
  'placeholder' => __( 'Type filter label', 'happy-elementor-addons' ),
155
+ 'description' => __( 'Type "All" filter label.', 'happy-elementor-addons' ),
156
  'condition' => [
157
  'show_all_filter' => 'yes',
158
  'show_filter' => 'yes'
171
  4 => __( '4 Columns', 'happy-elementor-addons' ),
172
  5 => __( '5 Columns', 'happy-elementor-addons' ),
173
  ],
174
+ 'separator' => 'before',
175
  'desktop_default' => 4,
176
  'tablet_default' => 3,
177
  'mobile_default' => 2,
199
  ]
200
  );
201
 
202
+ $this->add_control(
203
+ 'enable_popup',
204
+ [
205
+ 'label' => __( 'Enable Lightbox?', 'happy-elementor-addons' ),
206
+ 'type' => Controls_Manager::SWITCHER,
207
+ 'label_on' => __( 'Yes', 'happy-elementor-addons' ),
208
+ 'label_off' => __( 'No', 'happy-elementor-addons' ),
209
+ 'separator' => 'before',
210
+ 'return_value' => 'yes',
211
+ 'default' => 'yes',
212
+ 'frontend_available' => true,
213
+ ]
214
+ );
215
+
216
+ $this->add_group_control(
217
+ Group_Control_Image_Size::get_type(),
218
+ [
219
+ 'name' => 'popup_image',
220
+ 'default' => 'large',
221
+ 'exclude' => [
222
+ 'custom'
223
+ ],
224
+ 'condition' => [
225
+ 'enable_popup' => 'yes',
226
+ ]
227
+ ]
228
+ );
229
+
230
  $this->end_controls_section();
231
  }
232
 
706
  $this->add_render_attribute( 'container', 'class', 'hajs-isotope-' . $this->get_id() );
707
  }
708
 
709
+ $has_popup = $settings['enable_popup'];
710
+ $item_html_tag = 'figure';
711
+
712
+ if ( $has_popup ) {
713
+ $item_html_tag = 'a';
714
+ $this->add_render_attribute( 'container', 'class', 'ha-popup--is-enabled' );
715
+ }
716
+
717
  if ( $settings['show_filter'] ) : ?>
718
 
719
  <ul class="ha-gallery-filter hajs-gallery-filter">
730
  <div <?php $this->print_render_attribute_string( 'container' ); ?>>
731
 
732
  <?php foreach ( $gallery['items'] as $id => $filters ) : ?>
733
+ <?php $popup = $settings['enable_popup'] ? sprintf( 'href="%s"', esc_url( wp_get_attachment_image_url( $id, $settings['popup_image_size'] ) ) ) : ''; ?>
734
 
735
+ <<?php echo $item_html_tag; ?> <?php echo $popup; ?> class="ha-image-grid-item ha-js-popup <?php echo esc_attr( implode( ' ', $filters ) ); ?>">
736
  <div class="ha-image-grid-inner">
737
  <?php echo wp_get_attachment_image(
738
  $id,
744
  ]
745
  ); ?>
746
  </div>
747
+ </<?php echo $item_html_tag; ?>>
748
 
749
  <?php endforeach; ?>
750
 
widgets/infobox/widget.php CHANGED
@@ -162,7 +162,7 @@ class InfoBox extends Base {
162
  $this->add_control(
163
  'title',
164
  [
165
- 'label' => __( 'Title', 'happy-elementor-addons' ),
166
  'label_block' => true,
167
  'type' => Controls_Manager::TEXT,
168
  'default' => __( 'Happy Info Box Title', 'happy-elementor-addons' ),
@@ -177,6 +177,8 @@ class InfoBox extends Base {
177
  'description',
178
  [
179
  'label' => __( 'Description', 'happy-elementor-addons' ),
 
 
180
  'type' => Controls_Manager::TEXTAREA,
181
  'default' => __( 'Happy info box description goes here', 'happy-elementor-addons' ),
182
  'placeholder' => __( 'Type info box description', 'happy-elementor-addons' ),
@@ -241,14 +243,10 @@ class InfoBox extends Base {
241
  'title' => __( 'Right', 'happy-elementor-addons' ),
242
  'icon' => 'fa fa-align-right',
243
  ],
244
- 'justify' => [
245
- 'title' => __( 'Justify', 'happy-elementor-addons' ),
246
- 'icon' => 'fa fa-align-justify',
247
- ],
248
  ],
249
  'toggle' => true,
250
  'selectors' => [
251
- '{{WRAPPER}}' => 'text-align: {{VALUE}}'
252
  ]
253
  ]
254
  );
@@ -439,8 +437,8 @@ class InfoBox extends Base {
439
  [
440
  'label' => __( 'Offset', 'happy-elementor-addons' ),
441
  'type' => Controls_Manager::POPOVER_TOGGLE,
442
- 'label_off' => __( 'None', 'your-plugin' ),
443
- 'label_on' => __( 'Custom', 'your-plugin' ),
444
  'return_value' => 'yes',
445
  ]
446
  );
@@ -569,7 +567,7 @@ class InfoBox extends Base {
569
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
570
  'type' => Controls_Manager::COLOR,
571
  'selectors' => [
572
- '{{WRAPPER}} .ha-infobox-figure--icon' => 'background-color: {{VALUE}}',
573
  ],
574
  'condition' => [
575
  'type' => 'icon'
@@ -652,7 +650,7 @@ class InfoBox extends Base {
652
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
653
  'type' => Controls_Manager::COLOR,
654
  'selectors' => [
655
- '{{WRAPPER}} .ha-infobox-title' => 'color: {{VALUE}}',
656
  ],
657
  ]
658
  );
@@ -694,7 +692,7 @@ class InfoBox extends Base {
694
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
695
  'type' => Controls_Manager::COLOR,
696
  'selectors' => [
697
- '{{WRAPPER}} .ha-infobox-text' => 'color: {{VALUE}}',
698
  ],
699
  ]
700
  );
@@ -901,10 +899,10 @@ class InfoBox extends Base {
901
  protected function render() {
902
  $settings = $this->get_settings_for_display();
903
 
904
- $this->add_inline_editing_attributes( 'title', 'none' );
905
  $this->add_render_attribute( 'title', 'class', 'ha-infobox-title' );
906
 
907
- $this->add_inline_editing_attributes( 'description', 'basic' );
908
  $this->add_render_attribute( 'description', 'class', 'ha-infobox-text' );
909
 
910
  $this->add_inline_editing_attributes( 'button_text', 'none' );
@@ -920,18 +918,16 @@ class InfoBox extends Base {
920
  }
921
  ?>
922
 
923
- <?php if ( $settings['type'] === 'image' ) :
924
- if ( $settings['image']['url'] || $settings['image']['id'] ) :
925
- $this->add_render_attribute( 'image', 'src', $settings['image']['url'] );
926
- $this->add_render_attribute( 'image', 'alt', Control_Media::get_image_alt( $settings['image'] ) );
927
- $this->add_render_attribute( 'image', 'title', Control_Media::get_image_title( $settings['image'] ) );
928
- $settings['hover_animation'] = 'disable-animation'; // hack to prevent image hover animation
929
- ?>
930
- <figure class="ha-infobox-figure ha-infobox-figure--image">
931
- <?php echo Group_Control_Image_Size::get_attachment_image_html( $settings, 'thumbnail', 'image' ); ?>
932
- </figure>
933
- <?php endif;
934
- elseif ( ! empty( $settings['icon'] ) || ! empty( $settings['selected_icon'] ) ) : ?>
935
  <figure class="ha-infobox-figure ha-infobox-figure--icon">
936
  <?php ha_render_icon( $settings, 'icon', 'selected_icon' ); ?>
937
  </figure>
@@ -943,14 +939,14 @@ class InfoBox extends Base {
943
  printf( '<%1$s %2$s>%3$s</%1$s>',
944
  tag_escape( $settings['title_tag'] ),
945
  $this->get_render_attribute_string( 'title' ),
946
- esc_html( $settings['title' ] )
947
  );
948
  endif;
949
  ?>
950
 
951
  <?php if ( $settings['description'] ) : ?>
952
- <div <?php echo $this->get_render_attribute_string( 'description' ); ?>>
953
- <p><?php echo wp_kses_data( $settings['description'] ); ?></p>
954
  </div>
955
  <?php endif; ?>
956
 
@@ -994,10 +990,10 @@ class InfoBox extends Base {
994
  btnMigrated = elementor.helpers.isIconMigrated( settings, 'button_selected_icon' );
995
  }
996
 
997
- view.addInlineEditingAttributes( 'title', 'none' );
998
  view.addRenderAttribute( 'title', 'class', 'ha-infobox-title' );
999
 
1000
- view.addInlineEditingAttributes( 'description', 'basic' );
1001
  view.addRenderAttribute( 'description', 'class', 'ha-infobox-text' );
1002
 
1003
  view.addInlineEditingAttributes( 'button_text', 'none' );
162
  $this->add_control(
163
  'title',
164
  [
165
+ 'label' => __( 'Title & Description', 'happy-elementor-addons' ),
166
  'label_block' => true,
167
  'type' => Controls_Manager::TEXT,
168
  'default' => __( 'Happy Info Box Title', 'happy-elementor-addons' ),
177
  'description',
178
  [
179
  'label' => __( 'Description', 'happy-elementor-addons' ),
180
+ 'show_label' => false,
181
+ 'description' => ha_get_allowed_html_desc( 'intermediate' ),
182
  'type' => Controls_Manager::TEXTAREA,
183
  'default' => __( 'Happy info box description goes here', 'happy-elementor-addons' ),
184
  'placeholder' => __( 'Type info box description', 'happy-elementor-addons' ),
243
  'title' => __( 'Right', 'happy-elementor-addons' ),
244
  'icon' => 'fa fa-align-right',
245
  ],
 
 
 
 
246
  ],
247
  'toggle' => true,
248
  'selectors' => [
249
+ '{{WRAPPER}}' => 'text-align: {{VALUE}};'
250
  ]
251
  ]
252
  );
437
  [
438
  'label' => __( 'Offset', 'happy-elementor-addons' ),
439
  'type' => Controls_Manager::POPOVER_TOGGLE,
440
+ 'label_off' => __( 'None', 'happy-elementor-addons' ),
441
+ 'label_on' => __( 'Custom', 'happy-elementor-addons' ),
442
  'return_value' => 'yes',
443
  ]
444
  );
567
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
568
  'type' => Controls_Manager::COLOR,
569
  'selectors' => [
570
+ '{{WRAPPER}} .ha-infobox-figure--icon' => 'background-color: {{VALUE}};',
571
  ],
572
  'condition' => [
573
  'type' => 'icon'
650
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
651
  'type' => Controls_Manager::COLOR,
652
  'selectors' => [
653
+ '{{WRAPPER}} .ha-infobox-title' => 'color: {{VALUE}};',
654
  ],
655
  ]
656
  );
692
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
693
  'type' => Controls_Manager::COLOR,
694
  'selectors' => [
695
+ '{{WRAPPER}} .ha-infobox-text' => 'color: {{VALUE}};',
696
  ],
697
  ]
698
  );
899
  protected function render() {
900
  $settings = $this->get_settings_for_display();
901
 
902
+ $this->add_inline_editing_attributes( 'title', 'basic' );
903
  $this->add_render_attribute( 'title', 'class', 'ha-infobox-title' );
904
 
905
+ $this->add_inline_editing_attributes( 'description', 'intermediate' );
906
  $this->add_render_attribute( 'description', 'class', 'ha-infobox-text' );
907
 
908
  $this->add_inline_editing_attributes( 'button_text', 'none' );
918
  }
919
  ?>
920
 
921
+ <?php if ( $settings['type'] === 'image' && ( $settings['image']['url'] || $settings['image']['id'] ) ) :
922
+ $this->add_render_attribute( 'image', 'src', $settings['image']['url'] );
923
+ $this->add_render_attribute( 'image', 'alt', Control_Media::get_image_alt( $settings['image'] ) );
924
+ $this->add_render_attribute( 'image', 'title', Control_Media::get_image_title( $settings['image'] ) );
925
+ $settings['hover_animation'] = 'disable-animation'; // hack to prevent image hover animation
926
+ ?>
927
+ <figure class="ha-infobox-figure ha-infobox-figure--image">
928
+ <?php echo Group_Control_Image_Size::get_attachment_image_html( $settings, 'thumbnail', 'image' ); ?>
929
+ </figure>
930
+ <?php elseif ( ! empty( $settings['icon'] ) || ! empty( $settings['selected_icon'] ) ) : ?>
 
 
931
  <figure class="ha-infobox-figure ha-infobox-figure--icon">
932
  <?php ha_render_icon( $settings, 'icon', 'selected_icon' ); ?>
933
  </figure>
939
  printf( '<%1$s %2$s>%3$s</%1$s>',
940
  tag_escape( $settings['title_tag'] ),
941
  $this->get_render_attribute_string( 'title' ),
942
+ ha_kses_basic( $settings['title' ] )
943
  );
944
  endif;
945
  ?>
946
 
947
  <?php if ( $settings['description'] ) : ?>
948
+ <div <?php $this->print_render_attribute_string( 'description' ); ?>>
949
+ <p><?php echo ha_kses_intermediate( $settings['description'] ); ?></p>
950
  </div>
951
  <?php endif; ?>
952
 
990
  btnMigrated = elementor.helpers.isIconMigrated( settings, 'button_selected_icon' );
991
  }
992
 
993
+ view.addInlineEditingAttributes( 'title', 'basic' );
994
  view.addRenderAttribute( 'title', 'class', 'ha-infobox-title' );
995
 
996
+ view.addInlineEditingAttributes( 'description', 'intermediate' );
997
  view.addRenderAttribute( 'description', 'class', 'ha-infobox-text' );
998
 
999
  view.addInlineEditingAttributes( 'button_text', 'none' );
widgets/justified-gallery/widget.php CHANGED
@@ -65,7 +65,8 @@ class Justified_Gallery extends Base {
65
  'label' => __( 'Filter Name', 'happy-elementor-addons' ),
66
  'type' => Controls_Manager::TEXT,
67
  'placeholder' => __( 'Type gallery filter name', 'happy-elementor-addons' ),
68
- 'description' => __( 'Filter navigation will be built using filter name', 'happy-elementor-addons' ),
 
69
  ]
70
  );
71
 
@@ -73,6 +74,9 @@ class Justified_Gallery extends Base {
73
  'images',
74
  [
75
  'type' => Controls_Manager::GALLERY,
 
 
 
76
  ]
77
  );
78
 
@@ -82,7 +86,8 @@ class Justified_Gallery extends Base {
82
  'type' => Controls_Manager::REPEATER,
83
  'fields' => $repeater->get_controls(),
84
  'show_label' => false,
85
- 'title_field' => 'Filter Group: {{filter}}',
 
86
  'default' => [
87
  [
88
  'filter' => __( 'Happy', 'happy-elementor-addons' ),
@@ -116,25 +121,25 @@ class Justified_Gallery extends Base {
116
  $this->add_control(
117
  'show_filter',
118
  [
119
- 'label' => __( 'Show Filter?', 'happy-elementor-addons' ),
120
  'type' => Controls_Manager::SWITCHER,
121
  'label_on' => __( 'Yes', 'happy-elementor-addons' ),
122
  'label_off' => __( 'No', 'happy-elementor-addons' ),
123
  'return_value' => 'yes',
124
- 'description' => __( 'Enable to display filter navigation. Filter navigation will be built using filter name from gallery', 'happy-elementor-addons' )
125
  ]
126
  );
127
 
128
  $this->add_control(
129
  'show_all_filter',
130
  [
131
- 'label' => __( 'Show All Filter?', 'happy-elementor-addons' ),
132
  'type' => Controls_Manager::SWITCHER,
133
  'label_on' => __( 'Yes', 'happy-elementor-addons' ),
134
  'label_off' => __( 'No', 'happy-elementor-addons' ),
135
  'return_value' => 'yes',
136
  'default' => 'yes',
137
- 'description' => __( 'Enable to display all filter button', 'happy-elementor-addons' ),
138
  'condition' => [
139
  'show_filter' => 'yes'
140
  ]
@@ -148,7 +153,7 @@ class Justified_Gallery extends Base {
148
  'type' => Controls_Manager::TEXT,
149
  'default' => __( 'All', 'happy-elementor-addons' ),
150
  'placeholder' => __( 'Type filter label', 'happy-elementor-addons' ),
151
- 'description' => __( 'Type all filter label', 'happy-elementor-addons' ),
152
  'condition' => [
153
  'show_all_filter' => 'yes',
154
  'show_filter' => 'yes'
@@ -164,7 +169,8 @@ class Justified_Gallery extends Base {
164
  'label_on' => __( 'Yes', 'happy-elementor-addons' ),
165
  'label_off' => __( 'No', 'happy-elementor-addons' ),
166
  'return_value' => 'yes',
167
- 'description' => __( 'Make sure to add image caption otherwise you will not see anything', 'happy-elementor-addons' )
 
168
  ]
169
  );
170
 
@@ -218,6 +224,33 @@ class Justified_Gallery extends Base {
218
  ]
219
  );
220
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
  $this->end_controls_section();
222
  }
223
 
@@ -350,7 +383,7 @@ class Justified_Gallery extends Base {
350
  ],
351
  ],
352
  'selectors' => [
353
- '{{WRAPPER}} .ha-justified-gallery-item > img' => 'transition-duration: {{SIZE}}s',
354
  ],
355
  ]
356
  );
@@ -409,7 +442,7 @@ class Justified_Gallery extends Base {
409
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
410
  'type' => Controls_Manager::COLOR,
411
  'selectors' => [
412
- '{{WRAPPER}} .justified-gallery > .ha-justified-gallery-item > .caption' => 'color: {{VALUE}}',
413
  ],
414
  ]
415
  );
@@ -420,7 +453,7 @@ class Justified_Gallery extends Base {
420
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
421
  'type' => Controls_Manager::COLOR,
422
  'selectors' => [
423
- '{{WRAPPER}} .justified-gallery > .ha-justified-gallery-item > .caption' => 'background-color: {{VALUE}}',
424
  ],
425
  ]
426
  );
@@ -700,6 +733,7 @@ class Justified_Gallery extends Base {
700
  'margins.size' => 'margins.int',
701
  'row_height.size' => 'rowHeight.int',
702
  'last_row' => 'lastRow.str',
 
703
  ];
704
  return ha_prepare_data_prop_settings( $settings, $field_map );
705
  }
@@ -754,6 +788,14 @@ class Justified_Gallery extends Base {
754
  'hajs-justified-gallery',
755
  ] );
756
 
 
 
 
 
 
 
 
 
757
  $this->add_render_attribute( 'container', 'data-happy-settings', self::get_data_prop_settings( $settings ) );
758
 
759
  if ( $settings['show_filter'] === 'yes' ) : ?>
@@ -770,10 +812,11 @@ class Justified_Gallery extends Base {
770
  <div <?php echo $this->get_render_attribute_string( 'container' ); ?>>
771
  <?php foreach ( $gallery['items'] as $id => $filters ) :
772
  $caption = $settings['show_caption'] ? esc_attr( wp_get_attachment_caption( $id ) ) : '';
 
773
  ?>
774
- <a class="ha-justified-gallery-item <?php echo esc_attr( implode( ' ', $filters ) ); ?>">
775
  <?php echo wp_get_attachment_image( $id, $settings['thumbnail_size'], false, [ 'alt' => $caption, 'class' => 'elementor-animation-' . esc_attr( $settings['image_hover_animation'] ) ] ); ?>
776
- </a>
777
  <?php endforeach; ?>
778
  </div>
779
 
65
  'label' => __( 'Filter Name', 'happy-elementor-addons' ),
66
  'type' => Controls_Manager::TEXT,
67
  'placeholder' => __( 'Type gallery filter name', 'happy-elementor-addons' ),
68
+ 'description' => __( 'Filter name will be used in filter menu.', 'happy-elementor-addons' ),
69
+ 'default' => __( 'Filter Name', 'happy-elementor-addons' ),
70
  ]
71
  );
72
 
74
  'images',
75
  [
76
  'type' => Controls_Manager::GALLERY,
77
+ 'dynamic' => [
78
+ 'active' => true,
79
+ ]
80
  ]
81
  );
82
 
86
  'type' => Controls_Manager::REPEATER,
87
  'fields' => $repeater->get_controls(),
88
  'show_label' => false,
89
+ /** translators: 1: Filter name */
90
+ 'title_field' => sprintf( __( 'Filter Group: %1$s', 'happy-elementor-addons' ), '{{filter}}' ),
91
  'default' => [
92
  [
93
  'filter' => __( 'Happy', 'happy-elementor-addons' ),
121
  $this->add_control(
122
  'show_filter',
123
  [
124
+ 'label' => __( 'Show Filter Menu?', 'happy-elementor-addons' ),
125
  'type' => Controls_Manager::SWITCHER,
126
  'label_on' => __( 'Yes', 'happy-elementor-addons' ),
127
  'label_off' => __( 'No', 'happy-elementor-addons' ),
128
  'return_value' => 'yes',
129
+ 'description' => __( 'Enable to display filter menu.', 'happy-elementor-addons' )
130
  ]
131
  );
132
 
133
  $this->add_control(
134
  'show_all_filter',
135
  [
136
+ 'label' => __( 'Show "All" Filter?', 'happy-elementor-addons' ),
137
  'type' => Controls_Manager::SWITCHER,
138
  'label_on' => __( 'Yes', 'happy-elementor-addons' ),
139
  'label_off' => __( 'No', 'happy-elementor-addons' ),
140
  'return_value' => 'yes',
141
  'default' => 'yes',
142
+ 'description' => __( 'Enable to display "All" filter in filter menu.', 'happy-elementor-addons' ),
143
  'condition' => [
144
  'show_filter' => 'yes'
145
  ]
153
  'type' => Controls_Manager::TEXT,
154
  'default' => __( 'All', 'happy-elementor-addons' ),
155
  'placeholder' => __( 'Type filter label', 'happy-elementor-addons' ),
156
+ 'description' => __( 'Type "All" filter label.', 'happy-elementor-addons' ),
157
  'condition' => [
158
  'show_all_filter' => 'yes',
159
  'show_filter' => 'yes'
169
  'label_on' => __( 'Yes', 'happy-elementor-addons' ),
170
  'label_off' => __( 'No', 'happy-elementor-addons' ),
171
  'return_value' => 'yes',
172
+ 'separator' => 'before',
173
+ 'description' => __( 'Make sure to add image caption.', 'happy-elementor-addons' )
174
  ]
175
  );
176
 
224
  ]
225
  );
226
 
227
+ $this->add_control(
228
+ 'enable_popup',
229
+ [
230
+ 'label' => __( 'Enable Lightbox?', 'happy-elementor-addons' ),
231
+ 'type' => Controls_Manager::SWITCHER,
232
+ 'label_on' => __( 'Yes', 'happy-elementor-addons' ),
233
+ 'label_off' => __( 'No', 'happy-elementor-addons' ),
234
+ 'separator' => 'before',
235
+ 'return_value' => 'yes',
236
+ 'default' => 'yes'
237
+ ]
238
+ );
239
+
240
+ $this->add_group_control(
241
+ Group_Control_Image_Size::get_type(),
242
+ [
243
+ 'name' => 'popup_image',
244
+ 'default' => 'large',
245
+ 'exclude' => [
246
+ 'custom'
247
+ ],
248
+ 'condition' => [
249
+ 'enable_popup' => 'yes',
250
+ ]
251
+ ]
252
+ );
253
+
254
  $this->end_controls_section();
255
  }
256
 
383
  ],
384
  ],
385
  'selectors' => [
386
+ '{{WRAPPER}} .ha-justified-gallery-item > img' => 'transition-duration: {{SIZE}}s;',
387
  ],
388
  ]
389
  );
442
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
443
  'type' => Controls_Manager::COLOR,
444
  'selectors' => [
445
+ '{{WRAPPER}} .justified-gallery > .ha-justified-gallery-item > .caption' => 'color: {{VALUE}};',
446
  ],
447
  ]
448
  );
453
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
454
  'type' => Controls_Manager::COLOR,
455
  'selectors' => [
456
+ '{{WRAPPER}} .justified-gallery > .ha-justified-gallery-item > .caption' => 'background-color: {{VALUE}};',
457
  ],
458
  ]
459
  );
733
  'margins.size' => 'margins.int',
734
  'row_height.size' => 'rowHeight.int',
735
  'last_row' => 'lastRow.str',
736
+ 'enable_popup' => 'enable_popup.bool'
737
  ];
738
  return ha_prepare_data_prop_settings( $settings, $field_map );
739
  }
788
  'hajs-justified-gallery',
789
  ] );
790
 
791
+ $has_popup = $settings['enable_popup'];
792
+ $item_html_tag = 'div';
793
+
794
+ if ( $has_popup ) {
795
+ $item_html_tag = 'a';
796
+ $this->add_render_attribute( 'container', 'class', 'ha-popup--is-enabled' );
797
+ }
798
+
799
  $this->add_render_attribute( 'container', 'data-happy-settings', self::get_data_prop_settings( $settings ) );
800
 
801
  if ( $settings['show_filter'] === 'yes' ) : ?>
812
  <div <?php echo $this->get_render_attribute_string( 'container' ); ?>>
813
  <?php foreach ( $gallery['items'] as $id => $filters ) :
814
  $caption = $settings['show_caption'] ? esc_attr( wp_get_attachment_caption( $id ) ) : '';
815
+ $popup = $has_popup ? sprintf( 'href="%s"', esc_url( wp_get_attachment_image_url( $id, $settings['popup_image_size'] ) ) ) : '';
816
  ?>
817
+ <<?php echo $item_html_tag; ?> <?php echo $popup; ?> class="ha-justified-gallery-item ha-js-popup <?php echo esc_attr( implode( ' ', $filters ) ); ?>">
818
  <?php echo wp_get_attachment_image( $id, $settings['thumbnail_size'], false, [ 'alt' => $caption, 'class' => 'elementor-animation-' . esc_attr( $settings['image_hover_animation'] ) ] ); ?>
819
+ </<?php echo $item_html_tag; ?>>
820
  <?php endforeach; ?>
821
  </div>
822
 
widgets/member/widget.php CHANGED
@@ -136,6 +136,7 @@ class Member extends Base {
136
  'type' => Controls_Manager::TEXT,
137
  'default' => 'Happy Member Name',
138
  'placeholder' => __( 'Type Member Name', 'happy-elementor-addons' ),
 
139
  'dynamic' => [
140
  'active' => true,
141
  ]
@@ -160,6 +161,7 @@ class Member extends Base {
160
  'bio',
161
  [
162
  'label' => __( 'Short Bio', 'happy-elementor-addons' ),
 
163
  'type' => Controls_Manager::TEXTAREA,
164
  'placeholder' => __( 'Write something amazing about the happy member', 'happy-elementor-addons' ),
165
  'rows' => 5,
@@ -202,6 +204,7 @@ class Member extends Base {
202
  ],
203
  'default' => 'h2',
204
  'toggle' => false,
 
205
  ]
206
  );
207
 
@@ -223,14 +226,10 @@ class Member extends Base {
223
  'title' => __( 'Right', 'happy-elementor-addons' ),
224
  'icon' => 'fa fa-align-right',
225
  ],
226
- 'justify' => [
227
- 'title' => __( 'Justify', 'happy-elementor-addons' ),
228
- 'icon' => 'fa fa-align-justify',
229
- ],
230
  ],
231
  'toggle' => true,
232
  'selectors' => [
233
- '{{WRAPPER}}' => 'text-align: {{VALUE}}'
234
  ]
235
  ]
236
  );
@@ -387,18 +386,6 @@ class Member extends Base {
387
  $repeater->end_controls_tab();
388
  $repeater->end_controls_tabs();
389
 
390
- $this->add_control(
391
- 'show_profiles',
392
- [
393
- 'label' => __( 'Show Profiles', 'plugin-domain' ),
394
- 'type' => Controls_Manager::SWITCHER,
395
- 'label_on' => __( 'Show', 'your-plugin' ),
396
- 'label_off' => __( 'Hide', 'your-plugin' ),
397
- 'return_value' => 'yes',
398
- 'default' => 'yes',
399
- ]
400
- );
401
-
402
  $this->add_control(
403
  'profiles',
404
  [
@@ -423,6 +410,20 @@ class Member extends Base {
423
  ]
424
  );
425
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
426
  $this->end_controls_section();
427
  }
428
 
@@ -691,7 +692,7 @@ class Member extends Base {
691
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
692
  'type' => Controls_Manager::COLOR,
693
  'selectors' => [
694
- '{{WRAPPER}} .ha-member-bio' => 'color: {{VALUE}}',
695
  ],
696
  ]
697
  );
@@ -793,7 +794,7 @@ class Member extends Base {
793
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
794
  'type' => Controls_Manager::COLOR,
795
  'selectors' => [
796
- '{{WRAPPER}} .ha-member-links > a' => 'color: {{VALUE}}',
797
  ],
798
  ]
799
  );
@@ -804,7 +805,7 @@ class Member extends Base {
804
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
805
  'type' => Controls_Manager::COLOR,
806
  'selectors' => [
807
- '{{WRAPPER}} .ha-member-links > a' => 'background-color: {{VALUE}}',
808
  ],
809
  ]
810
  );
@@ -862,13 +863,13 @@ class Member extends Base {
862
  protected function render() {
863
  $settings = $this->get_settings_for_display();
864
 
865
- $this->add_inline_editing_attributes( 'title', 'none' );
866
  $this->add_render_attribute( 'title', 'class', 'ha-member-name' );
867
 
868
- $this->add_inline_editing_attributes( 'job_title', 'none' );
869
  $this->add_render_attribute( 'job_title', 'class', 'ha-member-position' );
870
 
871
- $this->add_inline_editing_attributes( 'bio', 'basic' );
872
  $this->add_render_attribute( 'bio', 'class', 'ha-member-bio' );
873
  ?>
874
 
@@ -888,17 +889,17 @@ class Member extends Base {
888
  printf( '<%1$s %2$s>%3$s</%1$s>',
889
  tag_escape( $settings['title_tag'] ),
890
  $this->get_render_attribute_string( 'title' ),
891
- esc_html( $settings['title'] )
892
  );
893
  endif; ?>
894
 
895
  <?php if ( $settings['job_title' ] ) : ?>
896
- <div <?php echo $this->get_render_attribute_string( 'job_title' ); ?>><?php echo esc_html( $settings['job_title' ] ); ?></div>
897
  <?php endif; ?>
898
 
899
  <?php if ( $settings['bio'] ) : ?>
900
- <div <?php echo $this->get_render_attribute_string( 'bio' ); ?>>
901
- <p><?php echo wp_kses_data( $settings['bio'] ); ?></p>
902
  </div>
903
  <?php endif; ?>
904
 
@@ -931,13 +932,13 @@ class Member extends Base {
931
  public function _content_template() {
932
  ?>
933
  <#
934
- view.addInlineEditingAttributes( 'title', 'none' );
935
  view.addRenderAttribute( 'title', 'class', 'ha-member-name' );
936
 
937
- view.addInlineEditingAttributes( 'job_title', 'none' );
938
  view.addRenderAttribute( 'job_title', 'class', 'ha-member-position' );
939
 
940
- view.addInlineEditingAttributes( 'bio', 'basic' );
941
  view.addRenderAttribute( 'bio', 'class', 'ha-member-bio' );
942
 
943
  if ( settings.image.url || settings.image.id ) {
136
  'type' => Controls_Manager::TEXT,
137
  'default' => 'Happy Member Name',
138
  'placeholder' => __( 'Type Member Name', 'happy-elementor-addons' ),
139
+ 'separator' => 'before',
140
  'dynamic' => [
141
  'active' => true,
142
  ]
161
  'bio',
162
  [
163
  'label' => __( 'Short Bio', 'happy-elementor-addons' ),
164
+ 'description' => ha_get_allowed_html_desc( 'intermediate' ),
165
  'type' => Controls_Manager::TEXTAREA,
166
  'placeholder' => __( 'Write something amazing about the happy member', 'happy-elementor-addons' ),
167
  'rows' => 5,
204
  ],
205
  'default' => 'h2',
206
  'toggle' => false,
207
+ 'separator' => 'before',
208
  ]
209
  );
210
 
226
  'title' => __( 'Right', 'happy-elementor-addons' ),
227
  'icon' => 'fa fa-align-right',
228
  ],
 
 
 
 
229
  ],
230
  'toggle' => true,
231
  'selectors' => [
232
+ '{{WRAPPER}}' => 'text-align: {{VALUE}};'
233
  ]
234
  ]
235
  );
386
  $repeater->end_controls_tab();
387
  $repeater->end_controls_tabs();
388
 
 
 
 
 
 
 
 
 
 
 
 
 
389
  $this->add_control(
390
  'profiles',
391
  [
410
  ]
411
  );
412
 
413
+ $this->add_control(
414
+ 'show_profiles',
415
+ [
416
+ 'label' => __( 'Show Profiles', 'happy-elementor-addons' ),
417
+ 'type' => Controls_Manager::SWITCHER,
418
+ 'label_on' => __( 'Show', 'happy-elementor-addons' ),
419
+ 'label_off' => __( 'Hide', 'happy-elementor-addons' ),
420
+ 'return_value' => 'yes',
421
+ 'default' => 'yes',
422
+ 'separator' => 'before',
423
+ 'style_transfer' => true,
424
+ ]
425
+ );
426
+
427
  $this->end_controls_section();
428
  }
429
 
692
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
693
  'type' => Controls_Manager::COLOR,
694
  'selectors' => [
695
+ '{{WRAPPER}} .ha-member-bio' => 'color: {{VALUE}};',
696
  ],
697
  ]
698
  );
794
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
795
  'type' => Controls_Manager::COLOR,
796
  'selectors' => [
797
+ '{{WRAPPER}} .ha-member-links > a' => 'color: {{VALUE}};',
798
  ],
799
  ]
800
  );
805
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
806
  'type' => Controls_Manager::COLOR,
807
  'selectors' => [
808
+ '{{WRAPPER}} .ha-member-links > a' => 'background-color: {{VALUE}};',
809
  ],
810
  ]
811
  );
863
  protected function render() {
864
  $settings = $this->get_settings_for_display();
865
 
866
+ $this->add_inline_editing_attributes( 'title', 'basic' );
867
  $this->add_render_attribute( 'title', 'class', 'ha-member-name' );
868
 
869
+ $this->add_inline_editing_attributes( 'job_title', 'basic' );
870
  $this->add_render_attribute( 'job_title', 'class', 'ha-member-position' );
871
 
872
+ $this->add_inline_editing_attributes( 'bio', 'intermediate' );
873
  $this->add_render_attribute( 'bio', 'class', 'ha-member-bio' );
874
  ?>
875
 
889
  printf( '<%1$s %2$s>%3$s</%1$s>',
890
  tag_escape( $settings['title_tag'] ),
891
  $this->get_render_attribute_string( 'title' ),
892
+ ha_kses_basic( $settings['title'] )
893
  );
894
  endif; ?>
895
 
896
  <?php if ( $settings['job_title' ] ) : ?>
897
+ <div <?php $this->print_render_attribute_string( 'job_title' ); ?>><?php echo ha_kses_basic( $settings['job_title' ] ); ?></div>
898
  <?php endif; ?>
899
 
900
  <?php if ( $settings['bio'] ) : ?>
901
+ <div <?php $this->print_render_attribute_string( 'bio' ); ?>>
902
+ <p><?php echo ha_kses_intermediate( $settings['bio'] ); ?></p>
903
  </div>
904
  <?php endif; ?>
905
 
932
  public function _content_template() {
933
  ?>
934
  <#
935
+ view.addInlineEditingAttributes( 'title', 'basic' );
936
  view.addRenderAttribute( 'title', 'class', 'ha-member-name' );
937
 
938
+ view.addInlineEditingAttributes( 'job_title', 'basic' );
939
  view.addRenderAttribute( 'job_title', 'class', 'ha-member-position' );
940
 
941
+ view.addInlineEditingAttributes( 'bio', 'intermediate' );
942
  view.addRenderAttribute( 'bio', 'class', 'ha-member-bio' );
943
 
944
  if ( settings.image.url || settings.image.id ) {
widgets/pricing-table/widget.php CHANGED
@@ -176,7 +176,7 @@ class Pricing_Table extends Base {
176
  'text',
177
  [
178
  'label' => __( 'Text', 'elementor-pro' ),
179
- 'type' => Controls_Manager::TEXT,
180
  'default' => __( 'Exciting Feature', 'elementor-pro' ),
181
  'dynamic' => [
182
  'active' => true
@@ -247,7 +247,7 @@ class Pricing_Table extends Base {
247
  'icon' => 'fa fa-check',
248
  ],
249
  ],
250
- 'title_field' => '{{{ text }}}',
251
  ]
252
  );
253
 
@@ -306,6 +306,7 @@ class Pricing_Table extends Base {
306
  'label_off' => __( 'Hide', 'happy-elementor-addons' ),
307
  'return_value' => 'yes',
308
  'default' => 'yes',
 
309
  ]
310
  );
311
 
@@ -327,6 +328,7 @@ class Pricing_Table extends Base {
327
  ],
328
  'toggle' => false,
329
  'default' => 'left',
 
330
  'condition' => [
331
  'show_badge' => 'yes'
332
  ]
@@ -939,10 +941,10 @@ class Pricing_Table extends Base {
939
  $this->add_inline_editing_attributes( 'title', 'basic' );
940
  $this->add_render_attribute( 'title', 'class', 'ha-pricing-table-title' );
941
 
942
- $this->add_inline_editing_attributes( 'price', 'none' );
943
  $this->add_render_attribute( 'price', 'class', 'ha-pricing-table-price-text' );
944
 
945
- $this->add_inline_editing_attributes( 'period', 'none' );
946
  $this->add_render_attribute( 'period', 'class', 'ha-pricing-table-period' );
947
 
948
  $this->add_inline_editing_attributes( 'features_title', 'basic' );
@@ -967,37 +969,37 @@ class Pricing_Table extends Base {
967
  ?>
968
 
969
  <?php if ( $settings['show_badge'] ) : ?>
970
- <span <?php $this->print_render_attribute_string( 'badge_text' ); ?>><?php echo $settings['badge_text']; ?></span>
971
  <?php endif; ?>
972
 
973
  <div class="ha-pricing-table-header">
974
  <?php if ( $settings['title'] ) : ?>
975
- <h2 <?php $this->print_render_attribute_string( 'title' ); ?>><?php echo $settings['title']; ?></h2>
976
  <?php endif; ?>
977
  </div>
978
  <div class="ha-pricing-table-price">
979
- <div class="ha-pricing-table-price-tag"><span class="ha-pricing-table-currency"><?php echo $currency; ?></span><span <?php $this->print_render_attribute_string( 'price' ); ?>><?php echo $settings['price']; ?></span></div>
980
  <?php if ( $settings['period'] ) : ?>
981
- <div <?php $this->print_render_attribute_string( 'period' ); ?>><?php echo $settings['period']; ?></div>
982
  <?php endif; ?>
983
  </div>
984
  <div class="ha-pricing-table-body">
985
  <?php if ( $settings['features_title'] ) : ?>
986
- <h3 <?php $this->print_render_attribute_string( 'features_title' ); ?>><?php echo $settings['features_title']; ?></h3>
987
  <?php endif; ?>
988
 
989
  <?php if ( is_array( $settings['features_list'] ) ) : ?>
990
  <ul class="ha-pricing-table-features-list">
991
  <?php foreach ( $settings['features_list'] as $index => $feature ) :
992
  $name_key = $this->get_repeater_setting_key( 'text', 'features_list', $index );
993
- $this->add_inline_editing_attributes( $name_key, 'basic' );
994
  $this->add_render_attribute( $name_key, 'class', 'ha-pricing-table-feature-text' );
995
  ?>
996
  <li class="<?php echo esc_attr( 'elementor-repeater-item-' . $feature['_id'] ); ?>">
997
  <?php if ( ! empty( $feature['icon'] ) || ! empty( $feature['selected_icon'] ) ) :
998
  ha_render_icon( $feature, 'icon', 'selected_icon' );
999
  endif; ?>
1000
- <span <?php $this->print_render_attribute_string( $name_key ); ?>><?php echo $feature['text']; ?></span>
1001
  </li>
1002
  <?php endforeach; ?>
1003
  </ul>
@@ -1005,7 +1007,7 @@ class Pricing_Table extends Base {
1005
  </div>
1006
 
1007
  <?php if ( $settings['button_text'] ) : ?>
1008
- <a <?php $this->print_render_attribute_string( 'button_text' ); ?>><?php echo $settings['button_text']; ?></a>
1009
  <?php endif; ?>
1010
 
1011
  <?php
176
  'text',
177
  [
178
  'label' => __( 'Text', 'elementor-pro' ),
179
+ 'type' => Controls_Manager::TEXTAREA,
180
  'default' => __( 'Exciting Feature', 'elementor-pro' ),
181
  'dynamic' => [
182
  'active' => true
247
  'icon' => 'fa fa-check',
248
  ],
249
  ],
250
+ 'title_field' => '<# print(ha_get_feature_label(text)); #>',
251
  ]
252
  );
253
 
306
  'label_off' => __( 'Hide', 'happy-elementor-addons' ),
307
  'return_value' => 'yes',
308
  'default' => 'yes',
309
+ 'style_transfer' => true,
310
  ]
311
  );
312
 
328
  ],
329
  'toggle' => false,
330
  'default' => 'left',
331
+ 'style_transfer' => true,
332
  'condition' => [
333
  'show_badge' => 'yes'
334
  ]
941
  $this->add_inline_editing_attributes( 'title', 'basic' );
942
  $this->add_render_attribute( 'title', 'class', 'ha-pricing-table-title' );
943
 
944
+ $this->add_inline_editing_attributes( 'price', 'basic' );
945
  $this->add_render_attribute( 'price', 'class', 'ha-pricing-table-price-text' );
946
 
947
+ $this->add_inline_editing_attributes( 'period', 'basic' );
948
  $this->add_render_attribute( 'period', 'class', 'ha-pricing-table-period' );
949
 
950
  $this->add_inline_editing_attributes( 'features_title', 'basic' );
969
  ?>
970
 
971
  <?php if ( $settings['show_badge'] ) : ?>
972
+ <span <?php $this->print_render_attribute_string( 'badge_text' ); ?>><?php echo esc_html( $settings['badge_text'] ); ?></span>
973
  <?php endif; ?>
974
 
975
  <div class="ha-pricing-table-header">
976
  <?php if ( $settings['title'] ) : ?>
977
+ <h2 <?php $this->print_render_attribute_string( 'title' ); ?>><?php echo ha_kses_basic( $settings['title'] ); ?></h2>
978
  <?php endif; ?>
979
  </div>
980
  <div class="ha-pricing-table-price">
981
+ <div class="ha-pricing-table-price-tag"><span class="ha-pricing-table-currency"><?php echo esc_html( $currency ); ?></span><span <?php $this->print_render_attribute_string( 'price' ); ?>><?php echo ha_kses_basic( $settings['price'] ); ?></span></div>
982
  <?php if ( $settings['period'] ) : ?>
983
+ <div <?php $this->print_render_attribute_string( 'period' ); ?>><?php echo ha_kses_basic( $settings['period'] ); ?></div>
984
  <?php endif; ?>
985
  </div>
986
  <div class="ha-pricing-table-body">
987
  <?php if ( $settings['features_title'] ) : ?>
988
+ <h3 <?php $this->print_render_attribute_string( 'features_title' ); ?>><?php echo ha_kses_basic( $settings['features_title'] ); ?></h3>
989
  <?php endif; ?>
990
 
991
  <?php if ( is_array( $settings['features_list'] ) ) : ?>
992
  <ul class="ha-pricing-table-features-list">
993
  <?php foreach ( $settings['features_list'] as $index => $feature ) :
994
  $name_key = $this->get_repeater_setting_key( 'text', 'features_list', $index );
995
+ $this->add_inline_editing_attributes( $name_key, 'intermediate' );
996
  $this->add_render_attribute( $name_key, 'class', 'ha-pricing-table-feature-text' );
997
  ?>
998
  <li class="<?php echo esc_attr( 'elementor-repeater-item-' . $feature['_id'] ); ?>">
999
  <?php if ( ! empty( $feature['icon'] ) || ! empty( $feature['selected_icon'] ) ) :
1000
  ha_render_icon( $feature, 'icon', 'selected_icon' );
1001
  endif; ?>
1002
+ <div <?php $this->print_render_attribute_string( $name_key ); ?>><?php echo ha_kses_intermediate( $feature['text'] ); ?></div>
1003
  </li>
1004
  <?php endforeach; ?>
1005
  </ul>
1007
  </div>
1008
 
1009
  <?php if ( $settings['button_text'] ) : ?>
1010
+ <a <?php $this->print_render_attribute_string( 'button_text' ); ?>><?php echo esc_html( $settings['button_text'] ); ?></a>
1011
  <?php endif; ?>
1012
 
1013
  <?php
widgets/review/widget.php CHANGED
@@ -83,13 +83,14 @@ class Review extends Base {
83
  $this->add_control(
84
  'ratting_style',
85
  [
86
- 'label' => __( 'Style', 'happy-elementor-addons' ),
87
  'type' => Controls_Manager::SELECT,
88
  'options' => [
89
- 'star' => __( 'Star Rating', 'happy-elementor-addons' ),
90
- 'num' => __( 'Number Rating', 'happy-elementor-addons' ),
91
  ],
92
  'default' => 'star',
 
93
  ]
94
  );
95
 
@@ -97,35 +98,38 @@ class Review extends Base {
97
  'review',
98
  [
99
  'label' => __( 'Review', 'happy-elementor-addons' ),
 
100
  'type' => Controls_Manager::TEXTAREA,
101
  'default' => __( 'Happy reviewer is super excited being part of happy addons family', 'happy-elementor-addons' ),
102
  'placeholder' => __( 'Type amazing review from happy reviewer', 'happy-elementor-addons' ),
 
103
  'dynamic' => [
104
  'active' => true,
105
  ]
106
  ]
107
  );
108
 
109
- $this->add_control(
110
- 'review_for',
111
- [
112
- 'label' => __( 'Review For', 'happy-elementor-addons' ),
113
- 'type' => Controls_Manager::TEXT,
114
- 'placeholder' => __( 'Movie, Games, Software name etc.', 'happy-elementor-addons' ),
115
- 'description' => __( '[This field is only for structured data (schema.org) purpose] Obviously this review belongs to something like Movie, Games, Software or Service. So type the name of that thing.', 'happy-elementor-addons' ),
116
- ]
117
- );
118
-
119
  $this->add_control(
120
  'review_position',
121
  [
122
  'label' => __( 'Review Position', 'happy-elementor-addons' ),
123
  'type' => Controls_Manager::SELECT,
124
  'options' => [
125
- 'before' => __( 'Review Before', 'happy-elementor-addons' ),
126
- 'after' => __( 'Review After', 'happy-elementor-addons' ),
127
  ],
128
  'default' => 'before',
 
 
 
 
 
 
 
 
 
 
 
129
  ]
130
  );
131
 
@@ -153,38 +157,12 @@ class Review extends Base {
153
  ]
154
  );
155
 
156
- $this->add_control(
157
- 'title',
158
- [
159
- 'label' => __( 'Name', 'happy-elementor-addons' ),
160
- 'type' => Controls_Manager::TEXT,
161
- 'default' => 'Happy Reviewer',
162
- 'placeholder' => __( 'Type Reviewer Name', 'happy-elementor-addons' ),
163
- 'dynamic' => [
164
- 'active' => true,
165
- ]
166
- ]
167
- );
168
-
169
- $this->add_control(
170
- 'job_title',
171
- [
172
- 'label' => __( 'Job Title', 'happy-elementor-addons' ),
173
- 'type' => Controls_Manager::TEXT,
174
- 'default' => __( 'Happy Officer', 'happy-elementor-addons' ),
175
- 'placeholder' => __( 'Type Reviewer Job Title', 'happy-elementor-addons' ),
176
- 'dynamic' => [
177
- 'active' => true,
178
- ]
179
- ]
180
- );
181
-
182
  $this->add_group_control(
183
  Group_Control_Image_Size::get_type(),
184
  [
185
  'name' => 'thumbnail',
186
  'default' => 'large',
187
- 'separator' => 'before',
188
  ]
189
  );
190
 
@@ -214,6 +192,33 @@ class Review extends Base {
214
  ]
215
  );
216
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
217
  $this->add_responsive_control(
218
  'align',
219
  [
@@ -232,14 +237,11 @@ class Review extends Base {
232
  'title' => __( 'Right', 'happy-elementor-addons' ),
233
  'icon' => 'fa fa-align-right',
234
  ],
235
- 'justify' => [
236
- 'title' => __( 'Justify', 'happy-elementor-addons' ),
237
- 'icon' => 'fa fa-align-justify',
238
- ],
239
  ],
240
  'toggle' => true,
 
241
  'selectors' => [
242
- '{{WRAPPER}} .elementor-widget-container' => 'text-align: {{VALUE}}'
243
  ]
244
  ]
245
  );
@@ -334,7 +336,7 @@ class Review extends Base {
334
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
335
  'type' => Controls_Manager::COLOR,
336
  'selectors' => [
337
- '{{WRAPPER}} .ha-review-ratting' => 'color: {{VALUE}}',
338
  ],
339
  ]
340
  );
@@ -345,7 +347,7 @@ class Review extends Base {
345
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
346
  'type' => Controls_Manager::COLOR,
347
  'selectors' => [
348
- '{{WRAPPER}} .ha-review-ratting' => 'background-color: {{VALUE}}',
349
  ],
350
  ]
351
  );
@@ -419,7 +421,7 @@ class Review extends Base {
419
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
420
  'type' => Controls_Manager::COLOR,
421
  'selectors' => [
422
- '{{WRAPPER}} .ha-review-reviewer' => 'color: {{VALUE}}',
423
  ],
424
  ]
425
  );
@@ -460,7 +462,7 @@ class Review extends Base {
460
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
461
  'type' => Controls_Manager::COLOR,
462
  'selectors' => [
463
- '{{WRAPPER}} .ha-review-position' => 'color: {{VALUE}}',
464
  ],
465
  ]
466
  );
@@ -501,7 +503,7 @@ class Review extends Base {
501
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
502
  'type' => Controls_Manager::COLOR,
503
  'selectors' => [
504
- '{{WRAPPER}} .ha-review-desc' => 'color: {{VALUE}}',
505
  ],
506
  ]
507
  );
@@ -571,8 +573,8 @@ class Review extends Base {
571
  [
572
  'label' => __( 'Offset', 'happy-elementor-addons' ),
573
  'type' => Controls_Manager::POPOVER_TOGGLE,
574
- 'label_off' => __( 'None', 'your-plugin' ),
575
- 'label_on' => __( 'Custom', 'your-plugin' ),
576
  'return_value' => 'yes',
577
  ]
578
  );
@@ -685,16 +687,16 @@ class Review extends Base {
685
  $this->add_render_attribute( '_wrapper', 'itemscope' );
686
  $this->add_render_attribute( '_wrapper', 'itemtype', 'https://schema.org/Review' );
687
 
688
- $this->add_inline_editing_attributes( 'title', 'none' );
689
  $this->add_render_attribute( 'title', 'class', 'ha-review-reviewer' );
690
  $this->add_render_attribute( 'title', 'itemprop', 'author' );
691
  $this->add_render_attribute( 'title', 'itemscope', '' );
692
  $this->add_render_attribute( 'title', 'itemtype', 'https://schema.org/Person' );
693
 
694
- $this->add_inline_editing_attributes( 'job_title', 'none' );
695
  $this->add_render_attribute( 'job_title', 'class', 'ha-review-position' );
696
 
697
- $this->add_inline_editing_attributes( 'review', 'basic' );
698
  $this->add_render_attribute( 'review', 'class', 'ha-review-desc' );
699
  $this->add_render_attribute( 'review', 'itemprop', 'reviewBody' );
700
 
@@ -723,8 +725,8 @@ class Review extends Base {
723
 
724
  <div class="ha-review-body">
725
  <?php if ( $settings['review_position'] === 'before' && $settings['review'] ) : ?>
726
- <div <?php echo $this->get_render_attribute_string( 'review' ); ?>>
727
- <p><?php echo wp_kses_data( $settings['review'] ); ?></p>
728
  </div>
729
  <?php endif; ?>
730
 
@@ -733,15 +735,15 @@ class Review extends Base {
733
  printf( '<%1$s %2$s>%3$s</%1$s>',
734
  tag_escape( $settings['title_tag'] ),
735
  $this->get_render_attribute_string( 'title' ),
736
- esc_html( $settings['title' ] )
737
  );
738
  endif; ?>
739
 
740
  <?php if ( $settings['job_title' ] ) : ?>
741
- <div <?php echo $this->get_render_attribute_string( 'job_title' ); ?>><?php echo esc_html( $settings['job_title' ] ); ?></div>
742
  <?php endif; ?>
743
 
744
- <div <?php echo $this->get_render_attribute_string( 'ratting' ); ?>>
745
  <meta itemprop="ratingValue" content="<?php echo esc_attr( $ratting ); ?>">
746
 
747
  <?php if ( $settings['ratting_style'] === 'num' ) : ?>
@@ -759,8 +761,8 @@ class Review extends Base {
759
  </div>
760
 
761
  <?php if ( $settings['review_position'] === 'after' && $settings['review'] ) : ?>
762
- <div <?php echo $this->get_render_attribute_string( 'review' ); ?>>
763
- <p><?php echo wp_kses_data( $settings['review'] ); ?></p>
764
  </div>
765
  <?php endif; ?>
766
  </div>
@@ -774,13 +776,13 @@ class Review extends Base {
774
  public function _content_template() {
775
  ?>
776
  <#
777
- view.addInlineEditingAttributes( 'title', 'none' );
778
  view.addRenderAttribute( 'title', 'class', 'ha-review-reviewer' );
779
 
780
- view.addInlineEditingAttributes( 'job_title', 'none' );
781
  view.addRenderAttribute( 'job_title', 'class', 'ha-review-position' );
782
 
783
- view.addInlineEditingAttributes( 'review', 'basic' );
784
  view.addRenderAttribute( 'review', 'class', 'ha-review-desc' );
785
 
786
  var ratting = Math.max(0, settings.ratting.size);
@@ -809,10 +811,10 @@ class Review extends Base {
809
  <# } #>
810
  <div class="ha-review-header">
811
  <# if (settings.title) { #>
812
- <{{ settings.title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{ settings.title }}</{{ settings.title_tag }}>
813
  <# } #>
814
  <# if (settings.job_title) { #>
815
- <div {{{ view.getRenderAttributeString( 'job_title' ) }}}>{{ settings.job_title }}</div>
816
  <# } #>
817
  <# if ( settings.ratting_style === 'num' ) { #>
818
  <div class="ha-review-ratting ha-review-ratting--num">{{ ratting }} <i class="fa fa-star"></i></div>
83
  $this->add_control(
84
  'ratting_style',
85
  [
86
+ 'label' => __( 'Ratting Style', 'happy-elementor-addons' ),
87
  'type' => Controls_Manager::SELECT,
88
  'options' => [
89
+ 'star' => __( 'Star', 'happy-elementor-addons' ),
90
+ 'num' => __( 'Number', 'happy-elementor-addons' ),
91
  ],
92
  'default' => 'star',
93
+ 'style_transfer' => true,
94
  ]
95
  );
96
 
98
  'review',
99
  [
100
  'label' => __( 'Review', 'happy-elementor-addons' ),
101
+ 'description' => ha_get_allowed_html_desc( 'intermediate' ),
102
  'type' => Controls_Manager::TEXTAREA,
103
  'default' => __( 'Happy reviewer is super excited being part of happy addons family', 'happy-elementor-addons' ),
104
  'placeholder' => __( 'Type amazing review from happy reviewer', 'happy-elementor-addons' ),
105
+ 'separator' => 'before',
106
  'dynamic' => [
107
  'active' => true,
108
  ]
109
  ]
110
  );
111
 
 
 
 
 
 
 
 
 
 
 
112
  $this->add_control(
113
  'review_position',
114
  [
115
  'label' => __( 'Review Position', 'happy-elementor-addons' ),
116
  'type' => Controls_Manager::SELECT,
117
  'options' => [
118
+ 'before' => __( 'Before Ratting', 'happy-elementor-addons' ),
119
+ 'after' => __( 'After Ratting', 'happy-elementor-addons' ),
120
  ],
121
  'default' => 'before',
122
+ 'style_transfer' => true,
123
+ ]
124
+ );
125
+
126
+ $this->add_control(
127
+ 'review_for',
128
+ [
129
+ 'label' => __( 'Review For', 'happy-elementor-addons' ),
130
+ 'type' => Controls_Manager::TEXT,
131
+ 'placeholder' => __( 'Movie, Games, Software name etc.', 'happy-elementor-addons' ),
132
+ 'description' => __( '[This field is only for structured data (schema.org) purpose] Obviously this review belongs to something like Movie, Games, Software or Service. So type the name of that thing.', 'happy-elementor-addons' ),
133
  ]
134
  );
135
 
157
  ]
158
  );
159
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
  $this->add_group_control(
161
  Group_Control_Image_Size::get_type(),
162
  [
163
  'name' => 'thumbnail',
164
  'default' => 'large',
165
+ 'separator' => 'none',
166
  ]
167
  );
168
 
192
  ]
193
  );
194
 
195
+ $this->add_control(
196
+ 'title',
197
+ [
198
+ 'label' => __( 'Name', 'happy-elementor-addons' ),
199
+ 'type' => Controls_Manager::TEXT,
200
+ 'default' => 'Happy Reviewer',
201
+ 'placeholder' => __( 'Type Reviewer Name', 'happy-elementor-addons' ),
202
+ 'separator' => 'before',
203
+ 'dynamic' => [
204
+ 'active' => true,
205
+ ]
206
+ ]
207
+ );
208
+
209
+ $this->add_control(
210
+ 'job_title',
211
+ [
212
+ 'label' => __( 'Job Title', 'happy-elementor-addons' ),
213
+ 'type' => Controls_Manager::TEXT,
214
+ 'default' => __( 'Happy Officer', 'happy-elementor-addons' ),
215
+ 'placeholder' => __( 'Type Reviewer Job Title', 'happy-elementor-addons' ),
216
+ 'dynamic' => [
217
+ 'active' => true,
218
+ ]
219
+ ]
220
+ );
221
+
222
  $this->add_responsive_control(
223
  'align',
224
  [
237
  'title' => __( 'Right', 'happy-elementor-addons' ),
238
  'icon' => 'fa fa-align-right',
239
  ],
 
 
 
 
240
  ],
241
  'toggle' => true,
242
+ 'separator' => 'before',
243
  'selectors' => [
244
+ '{{WRAPPER}} .elementor-widget-container' => 'text-align: {{VALUE}};'
245
  ]
246
  ]
247
  );
336
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
337
  'type' => Controls_Manager::COLOR,
338
  'selectors' => [
339
+ '{{WRAPPER}} .ha-review-ratting' => 'color: {{VALUE}};',
340
  ],
341
  ]
342
  );
347
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
348
  'type' => Controls_Manager::COLOR,
349
  'selectors' => [
350
+ '{{WRAPPER}} .ha-review-ratting' => 'background-color: {{VALUE}};',
351
  ],
352
  ]
353
  );
421
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
422
  'type' => Controls_Manager::COLOR,
423
  'selectors' => [
424
+ '{{WRAPPER}} .ha-review-reviewer' => 'color: {{VALUE}};',
425
  ],
426
  ]
427
  );
462
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
463
  'type' => Controls_Manager::COLOR,
464
  'selectors' => [
465
+ '{{WRAPPER}} .ha-review-position' => 'color: {{VALUE}};',
466
  ],
467
  ]
468
  );
503
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
504
  'type' => Controls_Manager::COLOR,
505
  'selectors' => [
506
+ '{{WRAPPER}} .ha-review-desc' => 'color: {{VALUE}};',
507
  ],
508
  ]
509
  );
573
  [
574
  'label' => __( 'Offset', 'happy-elementor-addons' ),
575
  'type' => Controls_Manager::POPOVER_TOGGLE,
576
+ 'label_off' => __( 'None', 'happy-elementor-addons' ),
577
+ 'label_on' => __( 'Custom', 'happy-elementor-addons' ),
578
  'return_value' => 'yes',
579
  ]
580
  );
687
  $this->add_render_attribute( '_wrapper', 'itemscope' );
688
  $this->add_render_attribute( '_wrapper', 'itemtype', 'https://schema.org/Review' );
689
 
690
+ $this->add_inline_editing_attributes( 'title', 'basic' );
691
  $this->add_render_attribute( 'title', 'class', 'ha-review-reviewer' );
692
  $this->add_render_attribute( 'title', 'itemprop', 'author' );
693
  $this->add_render_attribute( 'title', 'itemscope', '' );
694
  $this->add_render_attribute( 'title', 'itemtype', 'https://schema.org/Person' );
695
 
696
+ $this->add_inline_editing_attributes( 'job_title', 'basic' );
697
  $this->add_render_attribute( 'job_title', 'class', 'ha-review-position' );
698
 
699
+ $this->add_inline_editing_attributes( 'review', 'intermediate' );
700
  $this->add_render_attribute( 'review', 'class', 'ha-review-desc' );
701
  $this->add_render_attribute( 'review', 'itemprop', 'reviewBody' );
702
 
725
 
726
  <div class="ha-review-body">
727
  <?php if ( $settings['review_position'] === 'before' && $settings['review'] ) : ?>
728
+ <div <?php $this->print_render_attribute_string( 'review' ); ?>>
729
+ <p><?php echo ha_kses_intermediate( $settings['review'] ); ?></p>
730
  </div>
731
  <?php endif; ?>
732
 
735
  printf( '<%1$s %2$s>%3$s</%1$s>',
736
  tag_escape( $settings['title_tag'] ),
737
  $this->get_render_attribute_string( 'title' ),
738
+ ha_kses_basic( $settings['title' ] )
739
  );
740
  endif; ?>
741
 
742
  <?php if ( $settings['job_title' ] ) : ?>
743
+ <div <?php $this->print_render_attribute_string( 'job_title' ); ?>><?php echo ha_kses_basic( $settings['job_title' ] ); ?></div>
744
  <?php endif; ?>
745
 
746
+ <div <?php $this->print_render_attribute_string( 'ratting' ); ?>>
747
  <meta itemprop="ratingValue" content="<?php echo esc_attr( $ratting ); ?>">
748
 
749
  <?php if ( $settings['ratting_style'] === 'num' ) : ?>
761
  </div>
762
 
763
  <?php if ( $settings['review_position'] === 'after' && $settings['review'] ) : ?>
764
+ <div <?php $this->print_render_attribute_string( 'review' ); ?>>
765
+ <p><?php echo ha_kses_intermediate( $settings['review'] ); ?></p>
766
  </div>
767
  <?php endif; ?>
768
  </div>
776
  public function _content_template() {
777
  ?>
778
  <#
779
+ view.addInlineEditingAttributes( 'title', 'basic' );
780
  view.addRenderAttribute( 'title', 'class', 'ha-review-reviewer' );
781
 
782
+ view.addInlineEditingAttributes( 'job_title', 'basic' );
783
  view.addRenderAttribute( 'job_title', 'class', 'ha-review-position' );
784
 
785
+ view.addInlineEditingAttributes( 'review', 'intermediate' );
786
  view.addRenderAttribute( 'review', 'class', 'ha-review-desc' );
787
 
788
  var ratting = Math.max(0, settings.ratting.size);
811
  <# } #>
812
  <div class="ha-review-header">
813
  <# if (settings.title) { #>
814
+ <{{ settings.title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{{ settings.title }}}</{{ settings.title_tag }}>
815
  <# } #>
816
  <# if (settings.job_title) { #>
817
+ <div {{{ view.getRenderAttributeString( 'job_title' ) }}}>{{{ settings.job_title }}}</div>
818
  <# } #>
819
  <# if ( settings.ratting_style === 'num' ) { #>
820
  <div class="ha-review-ratting ha-review-ratting--num">{{ ratting }} <i class="fa fa-star"></i></div>
widgets/skills/widget.php CHANGED
@@ -61,8 +61,8 @@ class Skills extends Base {
61
  [
62
  'type' => Controls_Manager::TEXT,
63
  'label' => __( 'Name', 'happy-elementor-addons' ),
64
- 'default' => __( 'Happy Skill', 'happy-elementor-addons' ),
65
- 'placeholder' => __( 'Type Happy Skill Name', 'happy-elementor-addons' ),
66
  ]
67
  );
68
 
@@ -73,7 +73,7 @@ class Skills extends Base {
73
  'type' => Controls_Manager::SLIDER,
74
  'default' => [
75
  'unit' => '%',
76
- 'size' => 85
77
  ],
78
  'size_units' => ['%'],
79
  'range' => [
@@ -103,7 +103,7 @@ class Skills extends Base {
103
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
104
  'type' => Controls_Manager::COLOR,
105
  'selectors' => [
106
- '{{WRAPPER}} {{CURRENT_ITEM}} .ha-skill-info' => 'color: {{VALUE}}',
107
  ],
108
  'condition' => ['customize' => 'yes']
109
  ]
@@ -115,7 +115,7 @@ class Skills extends Base {
115
  'label' => __( 'Level Color', 'happy-elementor-addons' ),
116
  'type' => Controls_Manager::COLOR,
117
  'selectors' => [
118
- '{{WRAPPER}} {{CURRENT_ITEM}} .ha-skill-level' => 'background-color: {{VALUE}}',
119
  ],
120
  'condition' => ['customize' => 'yes']
121
  ]
@@ -127,7 +127,7 @@ class Skills extends Base {
127
  'label' => __( 'Base Color', 'happy-elementor-addons' ),
128
  'type' => Controls_Manager::COLOR,
129
  'selectors' => [
130
- '{{WRAPPER}} {{CURRENT_ITEM}}.ha-skill' => 'background-color: {{VALUE}}',
131
  ],
132
  'condition' => ['customize' => 'yes']
133
  ]
@@ -143,22 +143,22 @@ class Skills extends Base {
143
  'default' => [
144
  [
145
  'name' => 'Design',
146
- 'level' => ['size' => 97, 'unit' => 'px']
147
  ],
148
  [
149
  'name' => 'UX',
150
- 'level' => ['size' => 88, 'unit' => 'px']
151
  ],
152
  [
153
  'name' => 'Coding',
154
- 'level' => ['size' => 92, 'unit' => 'px']
155
  ],
156
  [
157
  'name' => 'Speed',
158
  ],
159
  [
160
  'name' => 'Passion',
161
- 'level' => ['size' => 100, 'unit' => 'px']
162
  ]
163
  ]
164
  ]
@@ -174,7 +174,8 @@ class Skills extends Base {
174
  'options' => [
175
  'inside' => __( 'Text Inside', 'happy-elementor-addons' ),
176
  'outside' => __( 'Text Outside', 'happy-elementor-addons' ),
177
- ]
 
178
  ]
179
  );
180
 
@@ -267,7 +268,7 @@ class Skills extends Base {
267
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
268
  'type' => Controls_Manager::COLOR,
269
  'selectors' => [
270
- '{{WRAPPER}} .ha-skill-info' => 'color: {{VALUE}}',
271
  ],
272
  ]
273
  );
@@ -278,7 +279,7 @@ class Skills extends Base {
278
  'label' => __( 'Level Color', 'happy-elementor-addons' ),
279
  'type' => Controls_Manager::COLOR,
280
  'selectors' => [
281
- '{{WRAPPER}} .ha-skill-level' => 'background-color: {{VALUE}}',
282
  ],
283
  ]
284
  );
@@ -289,7 +290,7 @@ class Skills extends Base {
289
  'label' => __( 'Base Color', 'happy-elementor-addons' ),
290
  'type' => Controls_Manager::COLOR,
291
  'selectors' => [
292
- '{{WRAPPER}} .ha-skill' => 'background-color: {{VALUE}}',
293
  ],
294
  ]
295
  );
61
  [
62
  'type' => Controls_Manager::TEXT,
63
  'label' => __( 'Name', 'happy-elementor-addons' ),
64
+ 'default' => __( 'Design', 'happy-elementor-addons' ),
65
+ 'placeholder' => __( 'Type a skill name', 'happy-elementor-addons' ),
66
  ]
67
  );
68
 
73
  'type' => Controls_Manager::SLIDER,
74
  'default' => [
75
  'unit' => '%',
76
+ 'size' => 95
77
  ],
78
  'size_units' => ['%'],
79
  'range' => [
103
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
104
  'type' => Controls_Manager::COLOR,
105
  'selectors' => [
106
+ '{{WRAPPER}} {{CURRENT_ITEM}} .ha-skill-info' => 'color: {{VALUE}};',
107
  ],
108
  'condition' => ['customize' => 'yes']
109
  ]
115
  'label' => __( 'Level Color', 'happy-elementor-addons' ),
116
  'type' => Controls_Manager::COLOR,
117
  'selectors' => [
118
+ '{{WRAPPER}} {{CURRENT_ITEM}} .ha-skill-level' => 'background-color: {{VALUE}};',
119
  ],
120
  'condition' => ['customize' => 'yes']
121
  ]
127
  'label' => __( 'Base Color', 'happy-elementor-addons' ),
128
  'type' => Controls_Manager::COLOR,
129
  'selectors' => [
130
+ '{{WRAPPER}} {{CURRENT_ITEM}}.ha-skill' => 'background-color: {{VALUE}};',
131
  ],
132
  'condition' => ['customize' => 'yes']
133
  ]
143
  'default' => [
144
  [
145
  'name' => 'Design',
146
+ 'level' => ['size' => 97, 'unit' => '%']
147
  ],
148
  [
149
  'name' => 'UX',
150
+ 'level' => ['size' => 88, 'unit' => '%']
151
  ],
152
  [
153
  'name' => 'Coding',
154
+ 'level' => ['size' => 92, 'unit' => '%']
155
  ],
156
  [
157
  'name' => 'Speed',
158
  ],
159
  [
160
  'name' => 'Passion',
161
+ 'level' => ['size' => 100, 'unit' => '%']
162
  ]
163
  ]
164
  ]
174
  'options' => [
175
  'inside' => __( 'Text Inside', 'happy-elementor-addons' ),
176
  'outside' => __( 'Text Outside', 'happy-elementor-addons' ),
177
+ ],
178
+ 'style_transfer' => true,
179
  ]
180
  );
181
 
268
  'label' => __( 'Text Color', 'happy-elementor-addons' ),
269
  'type' => Controls_Manager::COLOR,
270
  'selectors' => [
271
+ '{{WRAPPER}} .ha-skill-info' => 'color: {{VALUE}};',
272
  ],
273
  ]
274
  );
279
  'label' => __( 'Level Color', 'happy-elementor-addons' ),
280
  'type' => Controls_Manager::COLOR,
281
  'selectors' => [
282
+ '{{WRAPPER}} .ha-skill-level' => 'background-color: {{VALUE}};',
283
  ],
284
  ]
285
  );
290
  'label' => __( 'Base Color', 'happy-elementor-addons' ),
291
  'type' => Controls_Manager::COLOR,
292
  'selectors' => [
293
+ '{{WRAPPER}} .ha-skill' => 'background-color: {{VALUE}};',
294
  ],
295
  ]
296
  );
widgets/slider/widget.php CHANGED
@@ -85,7 +85,7 @@ class Slider extends Base {
85
  'type' => Controls_Manager::TEXTAREA,
86
  'label_block' => true,
87
  'show_label' => false,
88
- 'placeholder' => __( 'Type subtitle here', 'happy-elementor-addons' )
89
  ]
90
  );
91
 
@@ -707,10 +707,10 @@ class Slider extends Base {
707
  <?php if ( $slide['title'] || $slide['subtitle'] ) : ?>
708
  <div class="ha-slick-content">
709
  <?php if ( $slide['title'] ) : ?>
710
- <h2 class="ha-slick-title"><?php echo esc_html( $slide['title'] ); ?></h2>
711
  <?php endif; ?>
712
  <?php if ( $slide['subtitle'] ) : ?>
713
- <p class="ha-slick-subtitle"><?php echo esc_html( $slide['subtitle'] ); ?></p>
714
  <?php endif; ?>
715
  </div>
716
  <?php endif; ?>
85
  'type' => Controls_Manager::TEXTAREA,
86
  'label_block' => true,
87
  'show_label' => false,
88
+ 'placeholder' => __( 'Type subtitle here', 'happy-elementor-addons' ),
89
  ]
90
  );
91
 
707
  <?php if ( $slide['title'] || $slide['subtitle'] ) : ?>
708
  <div class="ha-slick-content">
709
  <?php if ( $slide['title'] ) : ?>
710
+ <h2 class="ha-slick-title"><?php echo ha_kses_basic( $slide['title'] ); ?></h2>
711
  <?php endif; ?>
712
  <?php if ( $slide['subtitle'] ) : ?>
713
+ <p class="ha-slick-subtitle"><?php echo ha_kses_basic( $slide['subtitle'] ); ?></p>
714
  <?php endif; ?>
715
  </div>
716
  <?php endif; ?>
widgets/step-flow/widget.php CHANGED
@@ -97,7 +97,7 @@ class Step_Flow extends Base {
97
  $this->add_control(
98
  'title',
99
  [
100
- 'label' => __( 'Title', 'happy-elementor-addons' ),
101
  'type' => Controls_Manager::TEXT,
102
  'label_block' => true,
103
  'placeholder' => __( 'Title', 'happy-elementor-addons' ),
@@ -113,6 +113,8 @@ class Step_Flow extends Base {
113
  'description',
114
  [
115
  'label' => __( 'Description', 'happy-elementor-addons' ),
 
 
116
  'type' => Controls_Manager::TEXTAREA,
117
  'placeholder' => __( 'Description', 'happy-elementor-addons' ),
118
  'default' => 'consectetur adipiscing elit, sed do<br>eiusmod Lorem ipsum dolor sit amet,<br> consectetur.',
@@ -153,14 +155,10 @@ class Step_Flow extends Base {
153
  'title' => __( 'Right', 'happy-elementor-addons' ),
154
  'icon' => 'fa fa-align-right',
155
  ],
156
- 'justify' => [
157
- 'title' => __( 'Justify', 'happy-elementor-addons' ),
158
- 'icon' => 'fa fa-align-justify',
159
- ],
160
  ],
161
  'toggle' => true,
162
  'selectors' => [
163
- '{{WRAPPER}} .elementor-widget-container' => 'text-align: {{VALUE}}'
164
  ]
165
  ]
166
  );
@@ -174,6 +172,7 @@ class Step_Flow extends Base {
174
  'label_off' => __( 'No', 'happy-elementor-addons' ),
175
  'return_value' => 'yes',
176
  'default' => 'yes',
 
177
  ]
178
  );
179
 
@@ -278,7 +277,7 @@ class Step_Flow extends Base {
278
  'label' => __( 'Color', 'happy-elementor-addons' ),
279
  'type' => Controls_Manager::COLOR,
280
  'selectors' => [
281
- '{{WRAPPER}} .ha-steps-icon i' => 'color: {{VALUE}}',
282
  ],
283
  ]
284
  );
@@ -289,7 +288,7 @@ class Step_Flow extends Base {
289
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
290
  'type' => Controls_Manager::COLOR,
291
  'selectors' => [
292
- '{{WRAPPER}} .ha-steps-icon' => 'background: {{VALUE}}',
293
  ],
294
  ]
295
  );
@@ -358,7 +357,7 @@ class Step_Flow extends Base {
358
  'badge!' => '',
359
  ],
360
  'selectors' => [
361
- '{{WRAPPER}} .ha-steps-label' => 'color: {{VALUE}}',
362
  ],
363
  ]
364
  );
@@ -372,7 +371,7 @@ class Step_Flow extends Base {
372
  'badge!' => '',
373
  ],
374
  'selectors' => [
375
- '{{WRAPPER}} .ha-steps-label' => 'background: {{VALUE}}',
376
  ],
377
  ]
378
  );
@@ -623,10 +622,11 @@ class Step_Flow extends Base {
623
  protected function render() {
624
  $settings = $this->get_settings_for_display();
625
 
 
626
  $this->add_render_attribute( 'title', 'class', 'ha-steps-title' );
627
 
 
628
  $this->add_render_attribute( 'description', 'class', 'ha-step-description' );
629
- $this->add_inline_editing_attributes( 'description', 'basic' );
630
 
631
  $this->add_render_attribute( 'badge', 'class', 'ha-steps-label' );
632
  $this->add_inline_editing_attributes( 'badge', 'none' );
@@ -661,14 +661,14 @@ class Step_Flow extends Base {
661
 
662
  <h2 <?php $this->print_render_attribute_string( 'title' ); ?>>
663
  <?php if ( ! empty( $settings['link']['url'] ) ) : ?>
664
- <a <?php $this->print_render_attribute_string( 'link' ); ?>><?php echo $settings['title']; ?></a>
665
  <?php else : ?>
666
- <?php echo $settings['title']; ?>
667
  <?php endif; ?>
668
  </h2>
669
 
670
  <?php if ( $settings['description'] ) : ?>
671
- <p <?php $this->print_render_attribute_string( 'description' ); ?>><?php echo $settings['description']; ?></p>
672
  <?php endif; ?>
673
 
674
  <?php
97
  $this->add_control(
98
  'title',
99
  [
100
+ 'label' => __( 'Title & Description', 'happy-elementor-addons' ),
101
  'type' => Controls_Manager::TEXT,
102
  'label_block' => true,
103
  'placeholder' => __( 'Title', 'happy-elementor-addons' ),
113
  'description',
114
  [
115
  'label' => __( 'Description', 'happy-elementor-addons' ),
116
+ 'show_label' => false,
117
+ 'description' => ha_get_allowed_html_desc( 'intermediate' ),
118
  'type' => Controls_Manager::TEXTAREA,
119
  'placeholder' => __( 'Description', 'happy-elementor-addons' ),
120
  'default' => 'consectetur adipiscing elit, sed do<br>eiusmod Lorem ipsum dolor sit amet,<br> consectetur.',
155
  'title' => __( 'Right', 'happy-elementor-addons' ),
156
  'icon' => 'fa fa-align-right',
157
  ],
 
 
 
 
158
  ],
159
  'toggle' => true,
160
  'selectors' => [
161
+ '{{WRAPPER}} .elementor-widget-container' => 'text-align: {{VALUE}};'
162
  ]
163
  ]
164
  );
172
  'label_off' => __( 'No', 'happy-elementor-addons' ),
173
  'return_value' => 'yes',
174
  'default' => 'yes',
175
+ 'style_transfer' => true,
176
  ]
177
  );
178
 
277
  'label' => __( 'Color', 'happy-elementor-addons' ),
278
  'type' => Controls_Manager::COLOR,
279
  'selectors' => [
280
+ '{{WRAPPER}} .ha-steps-icon i' => 'color: {{VALUE}};',
281
  ],
282
  ]
283
  );
288
  'label' => __( 'Background Color', 'happy-elementor-addons' ),
289
  'type' => Controls_Manager::COLOR,
290
  'selectors' => [
291
+ '{{WRAPPER}} .ha-steps-icon' => 'background: {{VALUE}};',
292
  ],
293
  ]
294
  );
357
  'badge!' => '',
358
  ],
359
  'selectors' => [
360
+ '{{WRAPPER}} .ha-steps-label' => 'color: {{VALUE}};',
361
  ],
362
  ]
363
  );
371
  'badge!' => '',
372
  ],
373
  'selectors' => [
374
+ '{{WRAPPER}} .ha-steps-label' => 'background: {{VALUE}};',
375
  ],
376
  ]
377
  );
622
  protected function render() {
623
  $settings = $this->get_settings_for_display();
624
 
625
+ $this->add_inline_editing_attributes( 'title', 'basic' );
626
  $this->add_render_attribute( 'title', 'class', 'ha-steps-title' );
627
 
628
+ $this->add_inline_editing_attributes( 'description', 'intermediate' );
629
  $this->add_render_attribute( 'description', 'class', 'ha-step-description' );
 
630
 
631
  $this->add_render_attribute( 'badge', 'class', 'ha-steps-label' );
632
  $this->add_inline_editing_attributes( 'badge', 'none' );
661
 
662
  <h2 <?php $this->print_render_attribute_string( 'title' ); ?>>
663
  <?php if ( ! empty( $settings['link']['url'] ) ) : ?>
664
+ <a <?php $this->print_render_attribute_string( 'link' ); ?>><?php echo ha_kses_basic( $settings['title'] ); ?></a>
665
  <?php else : ?>
666
+ <?php echo ha_kses_basic( $settings['title'] ); ?>
667
  <?php endif; ?>
668
  </h2>
669
 
670
  <?php if ( $settings['description'] ) : ?>
671
+ <p <?php $this->print_render_attribute_string( 'description' ); ?>><?php echo ha_kses_intermediate( $settings['description'] ); ?></p>
672
  <?php endif; ?>
673
 
674
  <?php
widgets/testimonial/widget.php CHANGED
@@ -76,15 +76,15 @@ class Testimonial extends Base {
76
  'options' => [
77
  'left' => [
78
  'title' => __( 'Left', 'happy-elementor-addons' ),
79
- 'icon' => 'eicon-h-align-left',
80
  ],
81
  'center' => [
82
  'title' => __( 'Center', 'happy-elementor-addons' ),
83
- 'icon' => 'eicon-h-align-center',
84
  ],
85
  'right' => [
86
  'title' => __( 'Right', 'happy-elementor-addons' ),
87
- 'icon' => 'eicon-h-align-right',
88
  ],
89
  ],
90
  'toggle' => false,
@@ -104,7 +104,8 @@ class Testimonial extends Base {
104
  'bubble' => __( 'Bubble', 'happy-elementor-addons' ),
105
  ],
106
  'default' => 'basic',
107
- 'prefix_class' => 'ha-testimonial--'
 
108
  ]
109
  );
110
 
@@ -427,18 +428,18 @@ class Testimonial extends Base {
427
  protected function render() {
428
  $settings = $this->get_settings_for_display();
429
 
430
- $this->add_inline_editing_attributes( 'testimonial', 'basic' );
431
  $this->add_render_attribute( 'testimonial', 'class', 'ha-testimonial__content' );
432
 
433
- $this->add_inline_editing_attributes( 'name', 'none' );
434
  $this->add_render_attribute( 'name', 'class', 'ha-testimonial__reviewer-name' );
435
 
436
- $this->add_inline_editing_attributes( 'title', 'none' );
437
  $this->add_render_attribute( 'title', 'class', 'ha-testimonial__reviewer-title' );
438
  ?>
439
 
440
- <div <?php echo $this->get_render_attribute_string( 'testimonial' ); ?>>
441
- <?php echo $settings['testimonial']; ?>
442
  </div>
443
  <div class="ha-testimonial__reviewer">
444
  <?php if ( ! empty( $settings['image']['url'] ) ) : ?>
@@ -448,8 +449,8 @@ class Testimonial extends Base {
448
  <?php endif; ?>
449
 
450
  <div class="ha-testimonial__reviewer-meta">
451
- <div <?php echo $this->get_render_attribute_string( 'name' ); ?>><?php echo $settings['name']; ?></div>
452
- <div <?php echo $this->get_render_attribute_string( 'title' ); ?>><?php echo $settings['title']; ?></div>
453
  </div>
454
  </div>
455
  <?php
76
  'options' => [
77
  'left' => [
78
  'title' => __( 'Left', 'happy-elementor-addons' ),
79
+ 'icon' => 'fa fa-align-left',
80
  ],
81
  'center' => [
82
  'title' => __( 'Center', 'happy-elementor-addons' ),
83
+ 'icon' => 'fa fa-align-center',
84
  ],
85
  'right' => [
86
  'title' => __( 'Right', 'happy-elementor-addons' ),
87
+ 'icon' => 'fa fa-align-right',
88
  ],
89
  ],
90
  'toggle' => false,
104
  'bubble' => __( 'Bubble', 'happy-elementor-addons' ),
105
  ],
106
  'default' => 'basic',
107
+ 'prefix_class' => 'ha-testimonial--',
108
+ 'style_transfer' => true,
109
  ]
110
  );
111
 
428
  protected function render() {
429
  $settings = $this->get_settings_for_display();
430
 
431
+ $this->add_inline_editing_attributes( 'testimonial', 'intermediate' );
432
  $this->add_render_attribute( 'testimonial', 'class', 'ha-testimonial__content' );
433
 
434
+ $this->add_inline_editing_attributes( 'name', 'basic' );
435
  $this->add_render_attribute( 'name', 'class', 'ha-testimonial__reviewer-name' );
436
 
437
+ $this->add_inline_editing_attributes( 'title', 'basic' );
438
  $this->add_render_attribute( 'title', 'class', 'ha-testimonial__reviewer-title' );
439
  ?>
440
 
441
+ <div <?php $this->print_render_attribute_string( 'testimonial' ); ?>>
442
+ <?php echo ha_kses_intermediate( $settings['testimonial'] ); ?>
443
  </div>
444
  <div class="ha-testimonial__reviewer">
445
  <?php if ( ! empty( $settings['image']['url'] ) ) : ?>
449
  <?php endif; ?>
450
 
451
  <div class="ha-testimonial__reviewer-meta">
452
+ <div <?php $this->print_render_attribute_string( 'name' ); ?>><?php echo ha_kses_basic( $settings['name'] ); ?></div>
453
+ <div <?php $this->print_render_attribute_string( 'title' ); ?>><?php echo ha_kses_basic( $settings['title'] ); ?></div>
454
  </div>
455
  </div>
456
  <?php