word-games-theme 3.3.5 → 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 (53) 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/home/ad-preview.html +3 -0
  7. data/_includes/home/ad-slot.html +3 -0
  8. data/_includes/home/chips.html +6 -0
  9. data/_includes/home/crosswords.html +18 -0
  10. data/_includes/home/daily-hints.html +15 -0
  11. data/_includes/home/footer.html +212 -0
  12. data/_includes/home/game-art.html +18 -0
  13. data/_includes/home/game-cards.html +22 -0
  14. data/_includes/home/header.html +82 -0
  15. data/_includes/home/icon.html +19 -0
  16. data/_includes/home/letter-lists.html +17 -0
  17. data/_includes/home/logo.html +84 -0
  18. data/_includes/home/solvers.html +9 -0
  19. data/_includes/wordgames/advanced-filter/advanced-filter.html +15 -14
  20. data/_includes/wordgames/faqs/faqs.html +2 -4
  21. data/_includes/wordgames/headings/headings.html +1 -1
  22. data/_includes/wordgames/infographics/infographics.html +2 -136
  23. data/_includes/wordgames/search-box/search-box.html +1 -1
  24. data/_includes/wordgames-v2/advanced-filter/advanced-filter.html +421 -0
  25. data/_includes/wordgames-v2/faqs/faqs.html +35 -0
  26. data/_includes/wordgames-v2/featurehighlights/featurehighlights.html +70 -0
  27. data/_includes/wordgames-v2/head/head.html +170 -0
  28. data/_includes/wordgames-v2/headings/headings.html +14 -0
  29. data/_includes/wordgames-v2/howto/howto.html +94 -0
  30. data/_includes/wordgames-v2/infographics/infographics.html +358 -0
  31. data/_includes/wordgames-v2/search-box/dict-picker.html +26 -0
  32. data/_includes/wordgames-v2/search-box/search-box.html +87 -0
  33. data/_layouts/wordgames-home-v2.html +141 -0
  34. data/assets/css/ad-preview.css +85 -0
  35. data/assets/css/home-hub.css +1879 -0
  36. data/assets/css/wordfinder-result.css +5 -5
  37. data/assets/css/wordgames-home-v2.css +2955 -0
  38. data/assets/css/wordgames-home.css +3 -4
  39. data/assets/css/wordgames-result.css +1 -1
  40. data/assets/css/wordle-solver.css +2 -2
  41. data/assets/images/close-menu.svg +1 -14
  42. data/assets/images/hamburger-menu.svg +1 -5
  43. data/assets/images/logo-hub.svg +24 -0
  44. data/assets/images/logo.svg +13 -106
  45. data/assets/images/questionmark.svg +1 -1
  46. data/assets/images/wordswithletters-logo.svg +96 -0
  47. data/assets/js/ad-preview.js +141 -0
  48. data/assets/js/home-hub.js +275 -0
  49. data/assets/js/home-ui.js +286 -0
  50. data/assets/js/scrabbleDictonary.js +8 -202
  51. data/assets/js/wordleSolver-worker.js +2 -7
  52. data/assets/js/wordleSolver.js +2 -2
  53. metadata +34 -2
@@ -6,79 +6,15 @@ let defintions = document.querySelector("#Defintions")
6
6
  let txtBox = document.querySelector('.txtBox')
7
7
  txtBox.value = serachValue
8
8
 
9
- defintions.innerHTML = `Defintion(s) for ${serachValue}`
10
-
11
-
12
- const makeSynonymsClickable = (text) => {
13
- const synonymsMatch = text.match(/Synonyms:\s*(.+?)(?:\.|$)/i);
14
-
15
- if (synonymsMatch) {
16
- const synonymsPart = synonymsMatch[1];
17
- const synonyms = synonymsPart.split(',').map(s => {
18
- // Clean the synonym text - remove HTML tags and extra characters
19
- return s.trim()
20
- .replace(/<[^>]*>/g, '') // Remove HTML tags
21
- .replace(/&[^;]*;/g, '') // Remove HTML entities
22
- .replace(/[^\w\s-]/g, '') // Keep only letters, numbers, spaces, hyphens
23
- .trim();
24
- }).filter(s => s.length > 0); // Remove empty strings
25
-
26
- // Create clean links
27
- const linkedSynonyms = synonyms.map(synonym => {
28
- const cleanSynonym = synonym.replace(/\s+/g, '_'); // Replace spaces with underscores
29
- return `<a href="?search=${encodeURIComponent(cleanSynonym)}" class="synonym-link">${synonym}</a>`;
30
- }).join(', ');
31
-
32
- return text.replace(synonymsMatch[0], `Synonyms: ${linkedSynonyms}`);
33
- }
34
-
35
- return text;
36
- }
37
-
38
- function createResultCard(entry, index) {
39
- const synonymsHTML = entry.synonyms.length > 0
40
- ? entry.synonyms.map(syn =>
41
- `<span class="synonym-tag" onclick="searchForWord('${syn}')">${syn}</span>`
42
- ).join("")
43
- : '<span style="color: #999; font-style: italic;">No synonyms available</span>';
44
-
45
- return `
46
- <div class="result-card" style="animation-delay: ${index * 0.1}s">
47
- <div class="word-title">
48
- ${entry.word}
49
- <span class="pos-tag">${entry.partOfSpeech || 'unknown'}</span>
50
- </div>
51
-
52
- <div class="definition-section">
53
- <div class="definition-text">
54
- ${entry.definition || 'No definition available'}
55
- </div>
56
- </div>
57
-
58
- <div class="synonyms-section">
59
- <div class="section-title">
60
- 🔗 Synonyms ${entry.synonymCount > 0 ? `(${entry.synonymCount})` : ''}:
61
- </div>
62
- <div class="synonyms-container">
63
- ${synonymsHTML}
64
- </div>
65
- </div>
66
-
67
- <div class="synset-info">
68
- <strong>Synset ID:</strong> ${entry.synsetId} |
69
- <strong>Entry ID:</strong> ${entry.id}
70
- </div>
71
- </div>
72
- `;
73
- }
9
+ defintions.innerHTML = `Defintion(s) for ${serachValue}`
74
10
 
11
+ // DICTONARY
75
12
  const fetchMeaning = async (serachValue) => {
76
13
  try {
77
14
  let resMeaning = await fetch(`/.netlify/functions/wordMeaning?search=${serachValue}`)
78
15
  let getDef = await resMeaning.text()
79
16
 
80
- const hasData = getDef && resMeaning.status == 200 && getDef.trim() !== '' && getDef.trim().replace(/^"(.*)"$/, "$1") !== "&&&";
81
- if (hasData) {
17
+ if (getDef && resMeaning.status == 200) {
82
18
  let removeQuote = getDef.replaceAll(`"`, ``);
83
19
  let arr = removeQuote.split("&");
84
20
  let cols1 = null;
@@ -103,7 +39,7 @@ const fetchMeaning = async (serachValue) => {
103
39
  let temp = document.createElement("li");
104
40
  temp.setAttribute("class", "list-group-item my-2");
105
41
  temp.style.display = "list-item";
106
- temp.innerHTML = makeSynonymsClickable(cols1[i]);
42
+ temp.innerHTML = cols1[i];
107
43
  oList.appendChild(temp);
108
44
  }
109
45
  noun.appendChild(oList);
@@ -119,7 +55,7 @@ const fetchMeaning = async (serachValue) => {
119
55
  let temp = document.createElement("li");
120
56
  temp.setAttribute("class", "list-group-item my-2");
121
57
  temp.style.display = "list-item";
122
- temp.innerHTML = makeSynonymsClickable(cols2[i]);
58
+ temp.innerHTML = cols2[i];
123
59
  oList.appendChild(temp);
124
60
  }
125
61
  verb.appendChild(oList);
@@ -135,7 +71,7 @@ const fetchMeaning = async (serachValue) => {
135
71
  let temp = document.createElement("li");
136
72
  temp.setAttribute("class", "list-group-item my-2");
137
73
  temp.style.display = "list-item";
138
- temp.innerHTML = makeSynonymsClickable(cols3[i]);
74
+ temp.innerHTML = cols3[i];
139
75
  oList.appendChild(temp);
140
76
  }
141
77
  adj.appendChild(oList);
@@ -151,7 +87,7 @@ const fetchMeaning = async (serachValue) => {
151
87
  let temp = document.createElement("li");
152
88
  temp.setAttribute("class", "list-group-item my-2");
153
89
  temp.style.display = "list-item";
154
- temp.innerHTML = makeSynonymsClickable(cols4[i]);
90
+ temp.innerHTML = cols4[i];
155
91
  oList.appendChild(temp);
156
92
  }
157
93
  adv.appendChild(oList);
@@ -160,136 +96,6 @@ const fetchMeaning = async (serachValue) => {
160
96
  document.getElementById("loaderMeaning").style.display = "none";
161
97
  document.getElementById("loaderMeaning1").style.display = "none";
162
98
  } else {
163
- // OEWN fallback inline
164
- try {
165
- const response = await fetch("/assets/js/oewn_dictionary.json");
166
- if (response.ok) {
167
- const dictionaryData = await response.json();
168
- const query = serachValue.toLowerCase().trim();
169
- const exactMatches = dictionaryData.filter(entry =>
170
- entry.word.toLowerCase() === query
171
- );
172
-
173
- if (exactMatches.length > 0) {
174
- // Convert OEWN data to your format
175
- let nounDefs = [];
176
- let verbDefs = [];
177
- let adjDefs = [];
178
- let advDefs = [];
179
-
180
- exactMatches.forEach(entry => {
181
- const pos = entry.partOfSpeech?.toLowerCase() || 'noun';
182
- let labeledDefinition = '';
183
-
184
- // Add meaning label
185
- if (entry.definition) {
186
- labeledDefinition += `<strong style="color: #2d3748;">Meaning:</strong> ${entry.definition}`;
187
- }
188
-
189
- // Add synonyms label if available
190
- if (entry.synonyms && entry.synonyms.length > 0) {
191
- const synonymLinks = entry.synonyms.map(syn =>
192
- `<a href="?search=${encodeURIComponent(syn)}" style="color: #007bff; text-decoration: underline;">${syn}</a>`
193
- ).join(', ');
194
-
195
- if (labeledDefinition) labeledDefinition += '<br><br>';
196
- labeledDefinition += `<strong style="color: #2d3748;">Synonyms:</strong> ${synonymLinks}`;
197
- }
198
-
199
- switch(pos) {
200
- case 'noun': case 'n':
201
- nounDefs.push(labeledDefinition);
202
- break;
203
- case 'verb': case 'v':
204
- verbDefs.push(labeledDefinition);
205
- break;
206
- case 'adjective': case 'adj': case 'a':
207
- adjDefs.push(labeledDefinition);
208
- break;
209
- case 'adverb': case 'adv': case 'r':
210
- advDefs.push(labeledDefinition);
211
- break;
212
- default:
213
- nounDefs.push(labeledDefinition);
214
- }})
215
-
216
- // Process OEWN data using your existing logic
217
- if (nounDefs.length > 0) {
218
- let noun = document.getElementById("noun");
219
- let oList = document.createElement("ol");
220
- oList.setAttribute("class", "list-group list-group-numbered");
221
- for (let i = 0; i < nounDefs.length; i++) {
222
- let temp = document.createElement("li");
223
- temp.setAttribute("class", "list-group-item my-2");
224
- temp.style.display = "list-item";
225
- temp.innerHTML = makeSynonymsClickable(nounDefs[i]);
226
- oList.appendChild(temp);
227
- }
228
- noun.appendChild(oList);
229
- noun.style.display = "inherit";
230
- }
231
-
232
- if (verbDefs.length > 0) {
233
- let verb = document.getElementById("verb");
234
- let oList = document.createElement("ol");
235
- oList.setAttribute("class", "list-group list-group-numbered");
236
- for (let i = 0; i < verbDefs.length; i++) {
237
- let temp = document.createElement("li");
238
- temp.setAttribute("class", "list-group-item my-2");
239
- temp.style.display = "list-item";
240
- temp.innerHTML = makeSynonymsClickable(verbDefs[i]);
241
- oList.appendChild(temp);
242
- }
243
- verb.appendChild(oList);
244
- verb.style.display = "inherit";
245
- }
246
-
247
- if (adjDefs.length > 0) {
248
- let adj = document.getElementById("adj");
249
- let oList = document.createElement("ol");
250
- oList.setAttribute("class", "list-group list-group-numbered");
251
- for (let i = 0; i < adjDefs.length; i++) {
252
- let temp = document.createElement("li");
253
- temp.setAttribute("class", "list-group-item my-2");
254
- temp.style.display = "list-item";
255
- temp.innerHTML = makeSynonymsClickable(adjDefs[i]);
256
- oList.appendChild(temp);
257
- }
258
- adj.appendChild(oList);
259
- adj.style.display = "inherit";
260
- }
261
-
262
- if (advDefs.length > 0) {
263
- let adv = document.getElementById("adv");
264
- let oList = document.createElement("ol");
265
- oList.setAttribute("class", "list-group list-group-numbered");
266
- for (let i = 0; i < advDefs.length; i++) {
267
- let temp = document.createElement("li");
268
- temp.setAttribute("class", "list-group-item my-2");
269
- temp.style.display = "list-item";
270
- temp.innerHTML = makeSynonymsClickable(advDefs[i]);
271
- oList.appendChild(temp);
272
- }
273
- adv.appendChild(oList);
274
- adv.style.display = "inherit";
275
- }
276
-
277
- // Show fallback indicator
278
- const indicator = document.createElement('div');
279
- indicator.innerHTML = ``;
280
- const defintions = document.querySelector("#Defintions");
281
- if (defintions) defintions.parentNode.insertBefore(indicator, defintions.nextElementSibling);
282
-
283
- document.getElementById("loaderMeaning").style.display = "none";
284
- document.getElementById("loaderMeaning1").style.display = "none";
285
- return; // Exit successfully
286
- }
287
- }
288
- } catch (oewnError) {
289
- console.log("OEWN fallback failed:", oewnError);
290
- }
291
-
292
- // Show error if both primary and OEWN fail
293
99
  document.getElementById("loaderMeaning").style.display = "none";
294
100
  document.getElementById("loaderMeaning1").style.display = "none";
295
101
  document.getElementById("err").style.display = "block";
@@ -466,4 +272,4 @@ const fetchEnableDic = async (serachValue) => {
466
272
  }
467
273
  }
468
274
 
469
- fetchEnableDic(serachValue)
275
+ fetchEnableDic(serachValue)
@@ -31,11 +31,7 @@ self.onmessage = async (event) => {
31
31
  sum += ScrabbleLetterScore[item[i]] || 0 // for unknown characters
32
32
  }
33
33
  return `
34
- <a style='color: #000!important;
35
- font-size: 2rem;
36
- text-decoration: none!important;
37
- font-weight: 600;'
38
- class="anchor__style" title="Lookup ${item} in Dictionary" target="_blank" href="/word-meaning?search=${item.toLowerCase()}">
34
+ <a class="anchor__style" title="Lookup ${item} in Dictionary" target="_blank" href="/word-meaning?search=${item.toLowerCase()}">
39
35
  <li>
40
36
  ${item.toLowerCase()}
41
37
  <span class="points" value="${sum}" style="position:relative; top:4px; font-size:12px"> ${sum}</span>
@@ -113,5 +109,4 @@ const ScrabbleScore = (dictonary) => {
113
109
  } else {
114
110
  return twl06_sowpods;
115
111
  }
116
- };
117
-
112
+ };
@@ -214,7 +214,7 @@ const wordleSolver = async (value, value2, value3, greenWithIndex) => {
214
214
 
215
215
  worker.postMessage({
216
216
  type: "api",
217
- endpoint: `/.netlify/functions/wordleSolver`,
217
+ endpoint: `/.netlify/functions/wordleSolver/wordleSolver`,
218
218
  greenLetters: value,
219
219
  yellowLetters: value2,
220
220
  greyLetters: value3,
@@ -293,4 +293,4 @@ const getIndexs = (object) => {
293
293
  document.querySelector(".refineSerach").addEventListener("click", () => {
294
294
  const scrollingElement = (document.scrollingElement || document.body);
295
295
  scrollingElement.scroll({ top: 0, behavior: 'smooth' });
296
- })
296
+ })
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: word-games-theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.5
4
+ version: 3.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - manpreet-appscms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-07-10 00:00:00.000000000 Z
11
+ date: 2026-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -74,6 +74,7 @@ files:
74
74
  - _data/footer/en/data.json
75
75
  - _data/footer/networksites.json
76
76
  - _data/header/en/data.json
77
+ - _data/home_sections.json
77
78
  - _data/noindexURLs.json
78
79
  - _data/rating/rating.json
79
80
  - _data/repeatLetter/en/repeat-letters.json
@@ -145,6 +146,19 @@ files:
145
146
  - _includes/head/index.html
146
147
  - _includes/header/blogHeader.html
147
148
  - _includes/header/index.html
149
+ - _includes/home/ad-preview.html
150
+ - _includes/home/ad-slot.html
151
+ - _includes/home/chips.html
152
+ - _includes/home/crosswords.html
153
+ - _includes/home/daily-hints.html
154
+ - _includes/home/footer.html
155
+ - _includes/home/game-art.html
156
+ - _includes/home/game-cards.html
157
+ - _includes/home/header.html
158
+ - _includes/home/icon.html
159
+ - _includes/home/letter-lists.html
160
+ - _includes/home/logo.html
161
+ - _includes/home/solvers.html
148
162
  - _includes/howto.html
149
163
  - _includes/infographics/infographics.html
150
164
  - _includes/languages/languages.html
@@ -172,6 +186,15 @@ files:
172
186
  - _includes/word-game/word-game-generator-online.html
173
187
  - _includes/word-game/word-game-play.html
174
188
  - _includes/wordfinderstrategy/content.html
189
+ - _includes/wordgames-v2/advanced-filter/advanced-filter.html
190
+ - _includes/wordgames-v2/faqs/faqs.html
191
+ - _includes/wordgames-v2/featurehighlights/featurehighlights.html
192
+ - _includes/wordgames-v2/head/head.html
193
+ - _includes/wordgames-v2/headings/headings.html
194
+ - _includes/wordgames-v2/howto/howto.html
195
+ - _includes/wordgames-v2/infographics/infographics.html
196
+ - _includes/wordgames-v2/search-box/dict-picker.html
197
+ - _includes/wordgames-v2/search-box/search-box.html
175
198
  - _includes/wordgames/adblocker/adblocker.html
176
199
  - _includes/wordgames/advanced-filter/advanced-filter.html
177
200
  - _includes/wordgames/authorpagehead/authorpagehead.html
@@ -236,6 +259,7 @@ files:
236
259
  - _layouts/wordgames-autogencontent.html
237
260
  - _layouts/wordgames-blog.html
238
261
  - _layouts/wordgames-disclaimer.html
262
+ - _layouts/wordgames-home-v2.html
239
263
  - _layouts/wordgames-home.html
240
264
  - _layouts/wordgames-post.html
241
265
  - _layouts/wordgames-privacy-policy.html
@@ -246,6 +270,7 @@ files:
246
270
  - _layouts/wordgames-xyz.html
247
271
  - _layouts/wordgames.categories.html
248
272
  - _layouts/xyzpages.html
273
+ - assets/css/ad-preview.css
249
274
  - assets/css/adBlocker.css
250
275
  - assets/css/blog.css
251
276
  - assets/css/bootstrap-icons.css
@@ -258,6 +283,7 @@ files:
258
283
  - assets/css/fonts/bootstrap-icons.woff
259
284
  - assets/css/fonts/bootstrap-icons.woff2
260
285
  - assets/css/game.css
286
+ - assets/css/home-hub.css
261
287
  - assets/css/multiple-word-anagram-solver.css
262
288
  - assets/css/resultWordleSolver.css
263
289
  - assets/css/style.css
@@ -266,6 +292,7 @@ files:
266
292
  - assets/css/wordgames-autogencontent.css
267
293
  - assets/css/wordgames-blog.css
268
294
  - assets/css/wordgames-game.css
295
+ - assets/css/wordgames-home-v2.css
269
296
  - assets/css/wordgames-home.css
270
297
  - assets/css/wordgames-result.css
271
298
  - assets/css/wordgames-theme.css
@@ -332,6 +359,7 @@ files:
332
359
  - assets/images/linkedin2.svg
333
360
  - assets/images/loading.gif
334
361
  - assets/images/logo wordswithletter final black.svg
362
+ - assets/images/logo-hub.svg
335
363
  - assets/images/logo.svg
336
364
  - assets/images/mahika.jpeg
337
365
  - assets/images/manpreet-spinner.gif
@@ -380,16 +408,20 @@ files:
380
408
  - assets/images/wordle.png
381
409
  - assets/images/words with letters logo white text.svg
382
410
  - assets/images/wordswithletters-logo.png
411
+ - assets/images/wordswithletters-logo.svg
383
412
  - assets/images/wordswithletters-logo.webp
384
413
  - assets/images/yellow_bg.png
385
414
  - assets/js/TopScroll.js
386
415
  - assets/js/X-letter-test.js
387
416
  - assets/js/X-letter.js
417
+ - assets/js/ad-preview.js
388
418
  - assets/js/adBlocker.js
389
419
  - assets/js/confetti.js
390
420
  - assets/js/createWordle.js
391
421
  - assets/js/default.js
392
422
  - assets/js/game.js
423
+ - assets/js/home-hub.js
424
+ - assets/js/home-ui.js
393
425
  - assets/js/leftNav.js
394
426
  - assets/js/multiple-word-anagram-solver.js
395
427
  - assets/js/noRefreshAds.js