word-games-theme 3.3.6 → 3.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/_data/footer/en/data.json +95 -0
  3. data/_data/header/en/data.json +559 -36
  4. data/_data/home_sections.json +453 -0
  5. data/_data/wordgames/en/root.json +16 -13
  6. data/_includes/featurePageAuthors/featurePageAuthors.html +36 -59
  7. data/_includes/home/ad-preview.html +3 -0
  8. data/_includes/home/ad-slot.html +3 -0
  9. data/_includes/home/chips.html +6 -0
  10. data/_includes/home/crosswords.html +18 -0
  11. data/_includes/home/daily-hints.html +15 -0
  12. data/_includes/home/footer.html +212 -0
  13. data/_includes/home/game-art.html +18 -0
  14. data/_includes/home/game-cards.html +22 -0
  15. data/_includes/home/header.html +82 -0
  16. data/_includes/home/icon.html +19 -0
  17. data/_includes/home/letter-lists.html +17 -0
  18. data/_includes/home/logo.html +84 -0
  19. data/_includes/home/solvers.html +9 -0
  20. data/_includes/wordgames/advanced-filter/advanced-filter.html +15 -14
  21. data/_includes/wordgames/faqs/faqs.html +2 -4
  22. data/_includes/wordgames/headings/headings.html +1 -1
  23. data/_includes/wordgames/infographics/infographics.html +2 -136
  24. data/_includes/wordgames/search-box/search-box.html +1 -1
  25. data/_includes/wordgames-v2/advanced-filter/advanced-filter.html +421 -0
  26. data/_includes/wordgames-v2/faqs/faqs.html +35 -0
  27. data/_includes/wordgames-v2/featurehighlights/featurehighlights.html +70 -0
  28. data/_includes/wordgames-v2/head/head.html +170 -0
  29. data/_includes/wordgames-v2/headings/headings.html +14 -0
  30. data/_includes/wordgames-v2/howto/howto.html +94 -0
  31. data/_includes/wordgames-v2/infographics/infographics.html +358 -0
  32. data/_includes/wordgames-v2/search-box/dict-picker.html +26 -0
  33. data/_includes/wordgames-v2/search-box/search-box.html +87 -0
  34. data/_layouts/wordgames-home-v2.html +141 -0
  35. data/assets/css/ad-preview.css +85 -0
  36. data/assets/css/home-hub.css +1879 -0
  37. data/assets/css/wordfinder-result.css +5 -5
  38. data/assets/css/wordgames-home-v2.css +2955 -0
  39. data/assets/css/wordgames-home.css +3 -4
  40. data/assets/css/wordgames-result.css +1 -1
  41. data/assets/css/wordle-solver.css +2 -2
  42. data/assets/images/close-menu.svg +1 -14
  43. data/assets/images/hamburger-menu.svg +1 -5
  44. data/assets/images/logo-hub.svg +24 -0
  45. data/assets/images/logo.svg +13 -106
  46. data/assets/images/questionmark.svg +1 -1
  47. data/assets/images/wordswithletters-logo.svg +96 -0
  48. data/assets/js/ad-preview.js +141 -0
  49. data/assets/js/home-hub.js +275 -0
  50. data/assets/js/home-ui.js +286 -0
  51. data/assets/js/scrabbleDictonary.js +8 -202
  52. data/assets/js/wordleSolver-worker.js +2 -7
  53. data/assets/js/wordleSolver.js +2 -2
  54. metadata +35 -6
  55. data/_data/.DS_Store +0 -0
  56. data/_includes/.DS_Store +0 -0
  57. data/assets/.DS_Store +0 -0
@@ -0,0 +1,70 @@
1
+ {% assign file = page.fileName %}
2
+ {% assign lang = page.lang %}
3
+ {% assign dataToShow = site.data.[page.folderName][lang][file] %}
4
+
5
+ {%- if dataToShow.featureList.first.feature_heading !='' -%}
6
+
7
+ <div class="container" id="featureContainer" style="margin-top:7rem;">
8
+ <div class="row">
9
+ <h2 class="feature-highlight-title mb-0">Features</h2>
10
+ {%- if dataToShow.feature_description -%}
11
+ <p class="description">{{dataToShow.feature_description}}</p>
12
+ {%- endif -%}
13
+
14
+
15
+ {%- if site.ezoicAds -%}
16
+ <div class="container p-0">
17
+ <div class="m-0 row text-center features_data">
18
+ {% assign totalHeaderCount = 0 %}
19
+ {% for data in dataToShow.featureList %}
20
+ {% assign words = data.feature_heading | split: " " %}
21
+ {% assign word_count = words | size %}
22
+ {% assign totalHeaderCount = totalHeaderCount | plus: word_count %}
23
+ {% endfor %}
24
+
25
+ <div class="col-md-9 mx-auto">
26
+ <div class="row">
27
+ {% for entry in dataToShow.featureList %}
28
+ <div class="col-md-6 my-3">
29
+ <div class="card-body h-100">
30
+ {%- if totalHeaderCount > site.count_of_words_in_headings -%}
31
+ <h2 class="card-title">{{ entry.feature_heading }}</h2>
32
+ {%- else -%}
33
+ <div class="card-title">{{entry.feature_heading}}</div>
34
+ {%- endif -%}
35
+ <div class="card-text" style="color: #3E3E3E; font-size: 14px;">{{ entry.feature_text}}
36
+ </div>
37
+ </div>
38
+ </div>
39
+ {% endfor %}
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ {%- else -%}
45
+ <div class="m-0 row text-center features_data">
46
+ {% assign totalHeaderCount = 0 %}
47
+ {% for data in dataToShow.featureList %}
48
+ {% assign words = data.feature_heading | split: " " %}
49
+ {% assign word_count = words | size %}
50
+ {% assign totalHeaderCount = totalHeaderCount | plus: word_count %}
51
+ {% endfor %}
52
+
53
+ {% for entry in dataToShow.featureList %}
54
+ <div class="col-lg-4 pl-0 col-md-6 my-3 card-body">
55
+ <div class="card-title">
56
+ {%- if totalHeaderCount > site.count_of_words_in_headings -%}
57
+ {{entry.feature_heading}}
58
+ {%- else -%}
59
+ {{ entry.feature_heading }}
60
+ {%- endif -%}
61
+ </div>
62
+ <div class="text-left card-text" style="color: #3E3E3E; font-size: 14px;">{{ entry.feature_text}}
63
+ </div>
64
+ </div>
65
+ {% endfor %}
66
+ </div>
67
+ {%- endif -%}
68
+ </div>
69
+ </div>
70
+ {%- endif -%}
@@ -0,0 +1,170 @@
1
+ <head>
2
+ {% assign file = page.fileName %}
3
+ {% assign lang = page.lang %}
4
+ {% assign dataArr = site.data.[page.folderName][lang][file] %}
5
+ {% assign dataToShow = dataArr %}
6
+ {% assign title = dataToShow.title | replace: "$variable", page.value | default: page.title | default: site.title %}
7
+ {%- assign title = title | split: ' ' -%}
8
+ {%- assign newtitle = '' %}
9
+ {% for operation in title %}
10
+ {%- if forloop.first -%}
11
+ {% assign word = operation | capitalize %}
12
+ {% assign newtitle = newtitle | append: word %}
13
+ {% assign newtitle = newtitle | append: " " %}
14
+ {%- else -%}
15
+ {% assign word = operation %}
16
+ {%- if forloop.last -%}
17
+ {% assign newtitle = newtitle | append: word %}
18
+ {%- else -%}
19
+ {% assign newtitle = newtitle | append: word %}
20
+ {% assign newtitle = newtitle | append : " " %}
21
+ {%- endif -%}
22
+ {%- endif -%}
23
+ {% endfor %}
24
+ {% assign favicon = site.favicon %}
25
+
26
+ <meta charset="utf-8" />
27
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
28
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
29
+ <link rel="shortcut icon" href="{{favicon}}" />
30
+
31
+ {%- if page.noindex -%}
32
+ <meta name="robots" content="noindex" />
33
+ {%- endif -%}
34
+
35
+ {% assign whitelist_urls = site.data.noindexURLs.internatlionalization_whitelist_urls %}
36
+ {% assign noindex_languages = site.data.noindexURLs.noindex_languages %}
37
+ {% if noindex_languages contains page.lang %}
38
+ {% unless whitelist_urls contains page.url %}
39
+ <meta name="robots" content="noindex" />
40
+ {% endunless %}
41
+ {% endif %}
42
+
43
+ {% assign blacklist_urls = site.data.noindexURLs.blacklist_urls %}
44
+ {% if blacklist_urls contains page.url %}
45
+ <meta name="robots" content="noindex" />
46
+ {% endif %}
47
+
48
+
49
+ <title>{{ newtitle }}</title>
50
+
51
+ {% include wordgames/seo/seo.html %}
52
+ {%- if page.customLink -%}
53
+ <link rel="canonical" href="{{site.url | append: page.customLink}}" />
54
+ {%- else -%}
55
+ <link rel="canonical" href="{{site.url | append: page.url}}" />
56
+ {%- endif -%}
57
+
58
+
59
+ {%- if site.keyboard -%}
60
+ <meta name="keywords" content="{{site.keyboard}}" />
61
+ {%- endif -%}
62
+
63
+ <link rel="stylesheet" href="/assets/css/bootstrap.min.css" />
64
+ <link rel="stylesheet" href="/assets/css/wordgames-variables.css" />
65
+ <link rel="stylesheet" href="/assets/css/wordgames-theme.css" />
66
+ <link rel="stylesheet" href="/assets/css/wordgames-home-v2.css" />
67
+
68
+ {%- if site.noResultPage or page.noResultPage -%}
69
+ <link rel="stylesheet" href="/assets/css/wordgames-result.css" />
70
+ {%- endif -%}
71
+
72
+ {%- if site.show_allow_ad_blocker_pop -%}
73
+ <link rel="stylesheet" href="/assets/css/adBlocker.css" />
74
+ {%- endif -%}
75
+
76
+ {%- if site.internationalizationall -%}
77
+ {%- include alternates/alternates.html -%}
78
+ {%- endif -%}
79
+
80
+ {% include /cssfile/links.html %}
81
+
82
+
83
+ {%- if page.wordle == 'solver' -%}
84
+ <style>
85
+ .trywordle {
86
+ color: #fff;
87
+ background-color: #404040;
88
+ padding: 12px 100px;
89
+ border-radius: 50px;
90
+ }
91
+
92
+ .trywordle:hover {
93
+ color: #fff !important;
94
+ }
95
+
96
+ @media (max-width: 768px) {
97
+ .trywordle {
98
+ margin-bottom: 2rem;
99
+ }
100
+
101
+ }
102
+ </style>
103
+ {%- endif -%}
104
+
105
+ <link rel="manifest" href="/manifest.json">
106
+
107
+ <script type="application/ld+json">
108
+ {
109
+ "@context": "http://schema.org",
110
+ "@type": "Organization",
111
+ "url": "{{site.siteurl}}",
112
+ "logo": "{{site.siteurl}}{{site.favicon}}"
113
+ }
114
+ </script>
115
+
116
+ <script type="application/ld+json">
117
+ {
118
+ "@context": "http://schema.org",
119
+ "@type": "WebSite",
120
+ "name": "{{site.name}}",
121
+ "alternateName": "{{site.alternateName}}",
122
+ "url": "{{site.siteurl}}"}
123
+ </script>
124
+
125
+ {%- if dataToShow.faqList -%}
126
+ {%- if dataToShow.faqList.first.Question !='' -%}
127
+ <script type="application/ld+json">
128
+ {
129
+ "@context": "http://schema.org",
130
+ "@type": "FAQPage",
131
+ "mainEntity": [
132
+ {%- for item in dataToShow.faqList-%}
133
+ {%- if forloop.last == true -%}
134
+ {"@type": "Question",
135
+ "name": "{{item.Question | replace:'"', "'"}}",
136
+ "acceptedAnswer": {
137
+ "@type": "Answer",
138
+ "text": "{{item.Answer | replace:'"', "'"}}"
139
+ }
140
+ }
141
+ {%- else -%}
142
+ {"@type": "Question",
143
+ "name": "{{item.Question | replace:'"', "'"}}",
144
+ "acceptedAnswer": {
145
+ "@type": "Answer",
146
+ "text": "{{item.Answer | replace:'"', "'"}}"
147
+ }
148
+ },
149
+ {%- endif -%}
150
+ {%- endfor -%}
151
+ ]
152
+ }
153
+ </script>
154
+ {%- endif -%}
155
+ {%- endif -%}
156
+
157
+ {%- if page.tool -%}
158
+ {%- include wordgames/rating/structureddata.html -%}
159
+ {%- endif -%}
160
+
161
+ <script>
162
+ if ('serviceWorker' in navigator) {
163
+ window.addEventListener('load', () => {
164
+ navigator.serviceWorker.register('/serviceworker.js')
165
+ .then((reg) => console.log('Success: ', reg.scope))
166
+ .catch((err) => console.log('Failure: ', err));
167
+ })
168
+ }
169
+ </script>
170
+ </head>
@@ -0,0 +1,14 @@
1
+ {% assign file = page.fileName %}
2
+ {% assign lang = page.lang %}
3
+ {% assign dataToShow = site.data.[page.folderName][lang][file] %}
4
+ {%- assign CustomColor = site.data.theme.colors -%}
5
+ <div class="container">
6
+ <div class="pageHeading text-center py-4">
7
+ <h1 class="heading pb-0 mb-3">
8
+ {{dataToShow.h1}}</h1>
9
+ {%- if dataToShow.h2 != "" -%}
10
+ <h2 class="heading-h2">
11
+ {{dataToShow.h2}}</h2>
12
+ {%- endif -%}
13
+ </div>
14
+ </div>
@@ -0,0 +1,94 @@
1
+ {%- if dataToShow.HOW_TO_CONTENT -%}
2
+ <div class="container" id="howContainer">
3
+ <h2 class="howto mb-0">How to</h2>
4
+ <div class="how-to-section mt-5 align-items-center row pt-5 justify-content-center">
5
+ {%- if site.ezoicAds -%}
6
+ <div class="col-md-9 mx-auto">
7
+ <div class="row">
8
+ {%- endif -%}
9
+ <div class="col-md-6 order-0 ">
10
+ {%- if dataToShow.HOW_TO_CONTENT.YoutubeVideoUrl.size > 0 -%}
11
+ <div class="how-to-video-wrapper">
12
+ {% assign video_url = dataToShow.HOW_TO_CONTENT.YoutubeVideoUrl %}
13
+ {% assign video_id = "" %}
14
+ {% if video_url contains "youtu.be/" %}
15
+ {% assign parts = video_url | split: "/" %}
16
+ {% assign video_id = parts[3] %}
17
+ {% elsif video_url contains "youtube.com/watch" %}
18
+ {% assign params = video_url | split: "?" | last | split: "&" %}
19
+ {% for param in params %}
20
+ {% if param contains "v=" %}
21
+ {% assign video_id = param | split: "=" | last %}
22
+ {% endif %}
23
+ {% endfor %}
24
+ {% endif %}
25
+
26
+ <div class="how-to-video" data-videoid="{{video_id}}">
27
+ <img class="youtubeVideoPlayer mb-5" width="100%" height="100%" id="thumbnail-img"
28
+ alt="thumbnail-img" />
29
+ <div class="youtube-play-btn-wrapper">
30
+ <button class="play-btn btn btn-primary" onClick="loadVideo()">►</button>
31
+ </div>
32
+ </div>
33
+
34
+
35
+
36
+
37
+
38
+ </div>
39
+ {%- else -%}
40
+ <div class="how-to-img-wrapper ">
41
+ <img width="100%" height="100%" class="how-to-leftimg"
42
+ src="{{dataToShow.HOW_TO_CONTENT.logoImageUrl}}" loading="lazy"
43
+ alt="{{dataToShow.HOW_TO_CONTENT.logoImageAlt | default: 'how to image' }}">
44
+ </div>
45
+ {%- endif -%}
46
+ </div>
47
+ <div class="col-md-6 order-1">
48
+ <h3 class="how-to-title">{{dataToShow.HOW_TO_CONTENT.heading | replace: "$variable",
49
+ page.value}}</h3>
50
+ {% for data in dataToShow.HOW_TO_CONTENT.steps %}
51
+ <div id="step{{forloop.index}}" class="how-to-list-item">
52
+ <span class="how-to-step-num">{{forloop.index}}</span>
53
+ <span class="how-to-step-text">{{data | replace: "$variable", page.value}}</span>
54
+ </div>
55
+ {% endfor %}
56
+ </div>
57
+ {%- if site.ezoicAds -%}
58
+ </div>
59
+ </div>
60
+ {%- endif -%}
61
+ </div>
62
+ </div>
63
+ {%- endif -%}
64
+
65
+
66
+ {%- if dataToShow.HOW_TO_CONTENT.YoutubeVideoUrl.size > 0 -%}
67
+ <script>
68
+ let videoContainer = document.querySelector('.how-to-video');
69
+ let videoId = videoContainer.getAttribute("data-videoid")
70
+ let thumbnail = document.getElementById('thumbnail-img');
71
+ let thumbnailUrl = 'https://img.youtube.com/vi/' + videoId + '/maxresdefault.jpg';
72
+
73
+ // Function to load video
74
+ function loadVideo() {
75
+ videoContainer.innerHTML = '<iframe loading="lazy" class="youtubeVideoPlayer mb-5" width="100%" height="315" src="https://www.youtube.com/embed/' + videoId + '?autoplay=1&mute=1" allowfullscreen></iframe>';
76
+ }
77
+ // Function to handle lazy loading of the thumbnail
78
+ function lazyLoadThumbnail(entries, observer) {
79
+ entries.forEach(entry => {
80
+ if (entry.isIntersecting) {
81
+ // Load thumbnail when it becomes visible
82
+ thumbnail.src = thumbnailUrl;
83
+ // Stop observing once loaded
84
+ observer.unobserve(entry.target);
85
+ }
86
+ });
87
+ }
88
+ // Set up the Intersection Observer
89
+ var observer = new IntersectionObserver(lazyLoadThumbnail, { threshold: 0.1 });
90
+ observer.observe(thumbnail);
91
+ // Optionally, you can add an event listener to trigger video loading on click or other interactions
92
+ thumbnail.addEventListener('click', loadVideo);
93
+ </script>
94
+ {%- endif -%}