word-games-theme 3.3.6 → 3.3.8

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
@@ -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.6
4
+ version: 3.3.8
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-08-20 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
@@ -61,7 +61,6 @@ extra_rdoc_files: []
61
61
  files:
62
62
  - LICENSE.txt
63
63
  - README.md
64
- - _data/.DS_Store
65
64
  - _data/WordPointTables.json
66
65
  - _data/autogenerated_data.json
67
66
  - _data/blog/alertbar.yml
@@ -75,6 +74,7 @@ files:
75
74
  - _data/footer/en/data.json
76
75
  - _data/footer/networksites.json
77
76
  - _data/header/en/data.json
77
+ - _data/home_sections.json
78
78
  - _data/noindexURLs.json
79
79
  - _data/rating/rating.json
80
80
  - _data/repeatLetter/en/repeat-letters.json
@@ -122,7 +122,6 @@ files:
122
122
  - _data/wordswithletters-noindexURls.json
123
123
  - _data/xyzPagesData/en/unscramble-letters-jumble.json
124
124
  - _data/xyzPagesData/en/words-with-letters-cheat.json
125
- - _includes/.DS_Store
126
125
  - _includes/Monumetric/Monumetric.html
127
126
  - _includes/Rating/rating.html
128
127
  - _includes/Rating/structureddata.html
@@ -147,6 +146,19 @@ files:
147
146
  - _includes/head/index.html
148
147
  - _includes/header/blogHeader.html
149
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
150
162
  - _includes/howto.html
151
163
  - _includes/infographics/infographics.html
152
164
  - _includes/languages/languages.html
@@ -174,6 +186,15 @@ files:
174
186
  - _includes/word-game/word-game-generator-online.html
175
187
  - _includes/word-game/word-game-play.html
176
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
177
198
  - _includes/wordgames/adblocker/adblocker.html
178
199
  - _includes/wordgames/advanced-filter/advanced-filter.html
179
200
  - _includes/wordgames/authorpagehead/authorpagehead.html
@@ -238,6 +259,7 @@ files:
238
259
  - _layouts/wordgames-autogencontent.html
239
260
  - _layouts/wordgames-blog.html
240
261
  - _layouts/wordgames-disclaimer.html
262
+ - _layouts/wordgames-home-v2.html
241
263
  - _layouts/wordgames-home.html
242
264
  - _layouts/wordgames-post.html
243
265
  - _layouts/wordgames-privacy-policy.html
@@ -248,7 +270,7 @@ files:
248
270
  - _layouts/wordgames-xyz.html
249
271
  - _layouts/wordgames.categories.html
250
272
  - _layouts/xyzpages.html
251
- - assets/.DS_Store
273
+ - assets/css/ad-preview.css
252
274
  - assets/css/adBlocker.css
253
275
  - assets/css/blog.css
254
276
  - assets/css/bootstrap-icons.css
@@ -261,6 +283,7 @@ files:
261
283
  - assets/css/fonts/bootstrap-icons.woff
262
284
  - assets/css/fonts/bootstrap-icons.woff2
263
285
  - assets/css/game.css
286
+ - assets/css/home-hub.css
264
287
  - assets/css/multiple-word-anagram-solver.css
265
288
  - assets/css/resultWordleSolver.css
266
289
  - assets/css/style.css
@@ -269,6 +292,7 @@ files:
269
292
  - assets/css/wordgames-autogencontent.css
270
293
  - assets/css/wordgames-blog.css
271
294
  - assets/css/wordgames-game.css
295
+ - assets/css/wordgames-home-v2.css
272
296
  - assets/css/wordgames-home.css
273
297
  - assets/css/wordgames-result.css
274
298
  - assets/css/wordgames-theme.css
@@ -335,6 +359,7 @@ files:
335
359
  - assets/images/linkedin2.svg
336
360
  - assets/images/loading.gif
337
361
  - assets/images/logo wordswithletter final black.svg
362
+ - assets/images/logo-hub.svg
338
363
  - assets/images/logo.svg
339
364
  - assets/images/mahika.jpeg
340
365
  - assets/images/manpreet-spinner.gif
@@ -383,16 +408,20 @@ files:
383
408
  - assets/images/wordle.png
384
409
  - assets/images/words with letters logo white text.svg
385
410
  - assets/images/wordswithletters-logo.png
411
+ - assets/images/wordswithletters-logo.svg
386
412
  - assets/images/wordswithletters-logo.webp
387
413
  - assets/images/yellow_bg.png
388
414
  - assets/js/TopScroll.js
389
415
  - assets/js/X-letter-test.js
390
416
  - assets/js/X-letter.js
417
+ - assets/js/ad-preview.js
391
418
  - assets/js/adBlocker.js
392
419
  - assets/js/confetti.js
393
420
  - assets/js/createWordle.js
394
421
  - assets/js/default.js
395
422
  - assets/js/game.js
423
+ - assets/js/home-hub.js
424
+ - assets/js/home-ui.js
396
425
  - assets/js/leftNav.js
397
426
  - assets/js/multiple-word-anagram-solver.js
398
427
  - assets/js/noRefreshAds.js
@@ -443,7 +472,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
443
472
  - !ruby/object:Gem::Version
444
473
  version: '0'
445
474
  requirements: []
446
- rubygems_version: 3.3.26
475
+ rubygems_version: 3.3.7
447
476
  signing_key:
448
477
  specification_version: 4
449
478
  summary: Word-Games theme for all word-games-sites
data/_data/.DS_Store DELETED
Binary file
data/_includes/.DS_Store DELETED
Binary file
data/assets/.DS_Store DELETED
Binary file