appscms-tools-theme 3.7.0 → 3.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,123 +1,221 @@
1
1
  <style>
2
- /* Reset default browser styles */
3
-
4
- .infographic {
5
- display: flex;
6
- justify-content: space-between;
7
- align-items: center;
8
- margin: 50px auto;
9
- max-width: 800px;
2
+ .inforgraphics_section {
3
+ width: 100%;
4
+ padding: 50px 0px 50px 0px;
5
+ border-top: 1px solid rgb(224, 224, 224);
6
+ display: flex;
7
+ flex-direction: column;
8
+ align-items: center;
10
9
  }
11
- .infographic-item {
12
- flex-basis: 30%;
13
- text-align: center;
10
+
11
+ .inforgraphics_section .wrapper {
12
+ display: flex;
13
+ max-width: 700px;
14
+ position: relative;
14
15
  }
15
16
 
16
- .infographic-item img {
17
- max-width: 100%;
18
- height: auto;
19
- border-radius: 8px;
20
- margin-bottom: 10px;
17
+ .inforgraphics_section .wrapper i {
18
+ top: 50%;
19
+ height: 44px;
20
+ width: 44px;
21
+ color: #343F4F;
22
+ cursor: pointer;
23
+ font-size: 1.15rem;
24
+ position: absolute;
25
+ text-align: center;
26
+ line-height: 44px;
27
+ background: #eee;
28
+ border-radius: 50%;
29
+ transform: translateY(-50%);
30
+ transition: transform 0.1s linear;
21
31
  }
22
32
 
23
- .infographic-item h3 {
24
- font-size: 20px;
25
- margin-bottom: 10px;
33
+ .inforgraphics_section .wrapper i:active {
34
+ transform: translateY(-50%) scale(0.9);
26
35
  }
27
36
 
28
- .infographic-item p {
29
- font-size: 16px;
37
+ .inforgraphics_section .wrapper i:hover {
38
+ background: #f2f2f2;
30
39
  }
31
40
 
32
- @media (max-width: 600px) {
33
- .infographic {
34
- flex-wrap: wrap;
35
- }
41
+ .inforgraphics_section .wrapper i:first-child {
42
+ left: 0px;
43
+ display: none;
44
+ z-index: 999;
45
+ }
36
46
 
37
- .infographic-item {
38
- flex-basis: 100%;
39
- margin-bottom: 30px;
40
- }
47
+ .inforgraphics_section .wrapper i:last-child {
48
+ right: 0px;
49
+ }
50
+
51
+ .carousel {
52
+ display: flex;
53
+ max-width: 700px;
54
+ overflow-x: scroll;
55
+ scroll-snap-type: x mandatory;
56
+ scroll-behavior: smooth;
57
+ }
58
+
59
+ .carousel-inner {
60
+ display: flex;
61
+ flex-wrap: nowrap;
62
+ }
63
+
64
+ .slide {
65
+ flex: 0 0 calc(100% / 3);
66
+ scroll-snap-align: start;
67
+ padding: 20px;
68
+ }
69
+
70
+ .carousel img {
71
+ width: 100%;
72
+ object-fit: contain;
73
+ max-width: 100%;
74
+ height: auto;
75
+ border-radius: 8px;
76
+ }
77
+
78
+ .carousel-inner p {
79
+ text-align: center;
80
+ margin: 10px 0;
81
+ font-size: 14px;
82
+ white-space: normal;
83
+ word-wrap: break-word;
41
84
  }
42
- </style>
43
- <div class="infographics_section">
44
- <h3 class="text-center w-100 mb-5"><b>Other useful information</b></h3>
45
- <div class="infographic">
46
- {%- for item in featureData.infographics -%}
47
- <div class="infographic-item">
48
- <img src="{{item.image}}" alt="Image 1">
49
- <p class="infographic-desc">{{item.description | capitalize }}</p>
50
- </div>
51
- {%- endfor -%}
52
- </div>
53
85
 
86
+ @media screen and (max-width: 768px) {
87
+ .inforgraphics_section .wrapper {
88
+ max-width: 100%;
89
+ }
90
+
91
+
92
+ .carousel-inner p {
93
+ font-size: 20px;
94
+ }
95
+
96
+ .inforgraphics_section .wrapper i:first-child {
97
+ left: 0;
98
+ /* margin-left: 14px; */
99
+ z-index: 99;
100
+ }
101
+
102
+ .inforgraphics_section .wrapper i:last-child {
103
+ right: 0;
104
+ z-index: 99;
105
+ display: block !important;
106
+ }
107
+
108
+ .carousel {
109
+ overflow-x: hidden;
110
+ }
111
+ .slide {
112
+ flex: 0 0 100%;
113
+ margin-right: 0;
114
+ }
115
+ }
116
+ </style>
54
117
 
55
- <!-- <div class="slider">
56
- <div class="row">
57
- <div class="col-md-12 mx-auto">
58
- <div id="carousel">
59
- {%- for item in featureData.infographics -%}
60
- <div class="slide">
61
- <img src="{{item.image}}" alt="Photo1" />
62
- <p class="infographics-desc">{{item.description | capitalize }}</p>
63
- </div>
64
- {%- endfor -%}
118
+ <div class="inforgraphics_section">
119
+ <h3 class="text-center w-100 mb-5"><b>Other useful information</b></h3>
120
+ <div class="wrapper">
121
+ <i id="left" class="fas fa-angle-left"></i>
122
+ <div class="carousel">
123
+ <div class="carousel-inner">
124
+ {% for item in featureData.infographics %}
125
+ <div class="slide">
126
+ <img src="{{ item.image }}" alt="img" draggable="false">
127
+ <p class="infographic-desc">{{ item.description | capitalize }}</p>
65
128
  </div>
129
+ {% endfor %}
66
130
  </div>
67
131
  </div>
68
- <button class="btn-slide prev"><i class="fas fa-3x fa-chevron-circle-left"></i></button>
69
- <button class="btn-slide next"><i class="fas fa-3x fa-chevron-circle-right"></i></button>
70
- </div>
71
- <div class="dots-container">
72
- {%- for item in featureData.infographics -%}
73
- <span class="dot active" data-slide="{{ forloop.index0 }}"></span>
74
- {%- endfor -%}
75
- </div> -->
132
+ <i id="right" class="fas fa-angle-right"></i>
133
+ </div>
76
134
  </div>
77
135
 
78
- <!-- <script>
79
- function Slider() {
80
- const carouselSlides = document.querySelectorAll('.slide');
81
- const btnPrev = document.querySelector('.prev');
82
- const btnNext = document.querySelector('.next');
83
- const dotsSlide = document.querySelector('.dots-container');
84
- let currentSlide = 0;
85
-
86
- const activeDot = function (slide) {
87
- document.querySelectorAll('.dot').forEach(dot => dot.classList.remove('active'));
88
- document.querySelector(`.dot[data-slide="${slide}"]`).classList.add('active');
89
- };
90
- activeDot(currentSlide);
91
-
92
- const changeSlide = function (slides) {
93
- carouselSlides.forEach((slide, index) => (slide.style.transform = `translateX(${100 * (index - slides)}%)`));
94
- };
95
- changeSlide(currentSlide);
96
-
97
- btnNext.addEventListener('click', function () {
98
- currentSlide++;
99
- if (carouselSlides.length - 1 < currentSlide) {
100
- currentSlide = 0;
101
- };
102
- changeSlide(currentSlide);
103
- activeDot(currentSlide);
104
- });
105
- btnPrev.addEventListener('click', function () {
106
- currentSlide--;
107
- if (0 >= currentSlide) {
108
- currentSlide = 0;
109
- };
110
- changeSlide(currentSlide);
111
- activeDot(currentSlide);
112
- });
136
+ <script>
137
+ const carousel = document.querySelector(".carousel-inner"),
138
+ firstImg = carousel.querySelectorAll("img")[0],
139
+ arrowIcons = document.querySelectorAll(".wrapper i")
140
+
141
+ const numImages = carousel.querySelectorAll("img").length;
142
+ const isMobile = window.matchMedia("(max-width: 767px)").matches; // Check if screen width is less than or equal to 767px
113
143
 
114
- dotsSlide.addEventListener('click', function (e) {
115
- if (e.target.classList.contains('dot')) {
116
- const slide = e.target.dataset.slide;
117
- changeSlide(slide);
118
- activeDot(slide);
119
- }
144
+ if (numImages > 3) {
145
+ arrowIcons[1].style.display = "block"
146
+ } else {
147
+ arrowIcons[0].style.display = "none";
148
+ arrowIcons[1].style.display = "none";
149
+ }
150
+
151
+ let isDragStart = false, isDragging = false, prevPageX, prevScrollLeft, positionDiff;
152
+ const showHideIcons = () => {
153
+ let scrollWidth = carousel.scrollWidth - carousel.clientWidth; // getting max scrollable width
154
+ arrowIcons[0].style.display = carousel.scrollLeft == 0 ? "none" : "block";
155
+ arrowIcons[1].style.display = carousel.scrollLeft == scrollWidth ? "none" : "block";
156
+ }
157
+
158
+ arrowIcons.forEach(icon => {
159
+ icon.addEventListener("click", () => {
160
+ let firstImgWidth = firstImg.clientWidth + 40;
161
+ const scrollAmount = icon.id === "left" ? -firstImgWidth : firstImgWidth;
162
+ carousel.scrollBy({
163
+ left: scrollAmount,
164
+ behavior: "smooth",
165
+ });
166
+ setTimeout(() => showHideIcons(), 60); // calling showHideIcons after 60ms
120
167
  });
121
- };
122
- Slider();
123
- </script> -->
168
+ });
169
+
170
+ // const autoSlide = () => {
171
+ // // if there is no image left to scroll then return from here
172
+ // if (carousel.scrollLeft - (carousel.scrollWidth - carousel.clientWidth) > -1 || carousel.scrollLeft <= 0) return;
173
+
174
+ // positionDiff = Math.abs(positionDiff); // making positionDiff value to positive
175
+ // let firstImgWidth = firstImg.clientWidth + 14;
176
+ // // getting difference value that needs to add or reduce from carousel left to take middle img center
177
+ // let valDifference = firstImgWidth - positionDiff;
178
+
179
+ // if (carousel.scrollLeft > prevScrollLeft) { // if user is scrolling to the right
180
+ // return carousel.scrollLeft += positionDiff > firstImgWidth / 3 ? valDifference : -positionDiff;
181
+ // }
182
+ // // if user is scrolling to the left
183
+ // carousel.scrollLeft -= positionDiff > firstImgWidth / 3 ? valDifference : -positionDiff;
184
+ // }
185
+
186
+ // const dragStart = (e) => {
187
+ // // updatating global variables value on mouse down event
188
+ // isDragStart = true;
189
+ // prevPageX = e.pageX || e.touches[0].pageX;
190
+ // prevScrollLeft = carousel.scrollLeft;
191
+ // }
192
+
193
+ // const dragging = (e) => {
194
+ // // scrolling images/carousel to left according to mouse pointer
195
+ // if (!isDragStart) return;
196
+ // e.preventDefault();
197
+ // isDragging = true;
198
+ // carousel.classList.add("dragging");
199
+ // positionDiff = (e.pageX || e.touches[0].pageX) - prevPageX;
200
+ // carousel.scrollLeft = prevScrollLeft - positionDiff;
201
+ // showHideIcons();
202
+ // }
203
+
204
+ // const dragStop = () => {
205
+ // isDragStart = false;
206
+ // carousel.classList.remove("dragging");
207
+
208
+ // if (!isDragging) return;
209
+ // isDragging = false;
210
+ // autoSlide();
211
+ // }
212
+
213
+ // carousel.addEventListener("mousedown", dragStart);
214
+ // carousel.addEventListener("touchstart", dragStart);
215
+
216
+ // document.addEventListener("mousemove", dragging);
217
+ // carousel.addEventListener("touchmove", dragging);
218
+
219
+ // document.addEventListener("mouseup", dragStop);
220
+ // carousel.addEventListener("touchend", dragStop);
221
+ </script>
data/assets/.DS_Store CHANGED
Binary file
data/assets/css/tools.css CHANGED
@@ -1628,7 +1628,7 @@ ol li::marker {
1628
1628
  transition: transform 1s;
1629
1629
  }
1630
1630
 
1631
- .infographics_section .slide img {
1631
+ .infographics_section .slide img {
1632
1632
  width: 200px;
1633
1633
  height: 100%;
1634
1634
  /* object-fit: contain; */
@@ -1640,7 +1640,7 @@ ol li::marker {
1640
1640
  }
1641
1641
 
1642
1642
  .infographics_section button .fas {
1643
- color:#000;
1643
+ color: #000;
1644
1644
  }
1645
1645
 
1646
1646
  .infographics_section .btn-slide {
@@ -1692,6 +1692,15 @@ ol li::marker {
1692
1692
  }
1693
1693
  }
1694
1694
  @media screen and (min-width: 1920px) {
1695
+ .feature-card-title,
1696
+ .faq-question {
1697
+ font-size: 22px;
1698
+ }
1699
+ .feature-card-desc,
1700
+ .how-to-list-item,
1701
+ .faq-answer {
1702
+ font-size: 18px;
1703
+ }
1695
1704
  .appscms-sidebar-left {
1696
1705
  left: 300px !important;
1697
1706
  }
@@ -1754,3 +1763,55 @@ ol li::marker {
1754
1763
  .share-modal-social a i {
1755
1764
  font-size: 30px;
1756
1765
  }
1766
+ .authors-list {
1767
+ border-top: 1px solid rgb(224, 224, 224);
1768
+ margin-top: 100px;
1769
+ padding: 100px;
1770
+ }
1771
+
1772
+ .featurePageAuthor {
1773
+ display: flex;
1774
+ flex-direction: column;
1775
+ width: 100%;
1776
+ justify-content: center;
1777
+ }
1778
+
1779
+ .featurePageAuthor .author-meta {
1780
+ width: 500px;
1781
+ margin: 0 auto;
1782
+ padding-bottom: 5rem;
1783
+ }
1784
+
1785
+ .featurePageAuthor .author-meta .authorName {
1786
+ font-size: 20px;
1787
+ padding: 1rem 0px;
1788
+ font-weight: 900;
1789
+ }
1790
+
1791
+ .featurePageAuthor .author-img {
1792
+ width: 100px;
1793
+ height: 100px;
1794
+ border-radius: 100%;
1795
+ }
1796
+
1797
+ .featurePageAuthor .author_bio {
1798
+ font-size: 16px;
1799
+ }
1800
+
1801
+ @media (max-width: 768px) {
1802
+ .authors-list {
1803
+ padding: 25px;
1804
+ }
1805
+
1806
+ .featurePageAuthor .author-meta {
1807
+ width: 100%;
1808
+ }
1809
+ }
1810
+ .contributor {
1811
+ width: 100px;
1812
+ }
1813
+ .contributor .contributor-name {
1814
+ font-size: 13px;
1815
+ margin-top: 8px;
1816
+ text-transform: capitalize;
1817
+ }
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appscms-tools-theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.0
4
+ version: 3.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - vivek-appscms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-21 00:00:00.000000000 Z
11
+ date: 2023-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -347,6 +347,7 @@ files:
347
347
  - assets/images/bunnies.png
348
348
  - assets/images/cloud-computing.png
349
349
  - assets/images/cloud_new.svg
350
+ - assets/images/contributor.webp
350
351
  - assets/images/convert.png
351
352
  - assets/images/convert.svg
352
353
  - assets/images/cross.svg
@@ -476,7 +477,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
476
477
  - !ruby/object:Gem::Version
477
478
  version: '0'
478
479
  requirements: []
479
- rubygems_version: 3.3.7
480
+ rubygems_version: 3.4.10
480
481
  signing_key:
481
482
  specification_version: 4
482
483
  summary: Appscms theme for all tools