theWitcher commited on
Commit
3ae4480
·
1 Parent(s): db25122

הוספת מועדפים ושיתוף הכלי

Browse files
Files changed (3) hide show
  1. index.html +262 -30
  2. style.css +182 -62
  3. tools.json +1 -1
index.html CHANGED
@@ -887,36 +887,29 @@ https://bit.ly/a-tools
887
 
888
  // --- Initialize ---
889
  async function init() {
890
- showLoading();
 
891
  try {
892
- const savedSearch = localStorage.getItem('searchTerm');
893
- if (savedSearch) {
894
- searchInput.value = savedSearch;
895
- currentSearchTerm = savedSearch;
896
- }
897
 
898
- await loadData(); // ← הנתונים נטענים כאן
899
- sortTools(currentSort);
900
  renderTools();
901
  renderVideos();
902
  updateStats();
903
  setupEventListeners();
 
904
 
905
- // 👇 כאן נוסיף את הקריאה לבאנר לאחר שהכלים נטענו
906
- showNewToolBanner();
907
-
908
- if (!currentSearchTerm) {
909
- const allFilterBtn = document.querySelector(
910
- '.filter-btn[data-category="all"]'
911
- );
912
- if (allFilterBtn) {
913
- allFilterBtn.classList.add('active');
914
- }
915
  }
 
 
916
  } catch (error) {
917
- console.error('Initialization failed:', error);
918
- showError('שגיאה בטעינת הנתונים הראשונית. נסה לרענן את הדף.');
919
- } finally {
920
  hideLoading();
921
  }
922
  }
@@ -1154,7 +1147,7 @@ https://bit.ly/a-tools
1154
  toolsContainer.innerHTML =
1155
  '<p class="text-center text-gray-500 col-span-full">לא נמצאו כלים התואמים את החיפוש, הסינון והמיון.</p>';
1156
  } else {
1157
- filteredTools.forEach((tool) => {
1158
  const toolCard = document.createElement('div');
1159
  toolCard.className = `relative tool-card bg-white rounded-lg shadow-sm border border-gray-100 p-6 transition duration-300 ${
1160
  tool.isFeatured ? 'ring-2 ring-blue-500' : ''
@@ -1162,8 +1155,7 @@ https://bit.ly/a-tools
1162
 
1163
  // הכנת הטקסט להקראה - שילוב של שם הכלי והתיאור שלו
1164
  const speakableText = `${tool.name}. ${tool.description}`;
1165
- // `${tool.name}`;
1166
- //
1167
  // הוספת מאפיין לסינון כלים חינמיים
1168
  if (tool.free) {
1169
  toolCard.setAttribute('data-free', 'true');
@@ -1217,8 +1209,14 @@ https://bit.ly/a-tools
1217
  </div>
1218
  </div>
1219
 
1220
- <!-- אייקון הכלי -->
1221
- <i class="${tool.icon} text-gray-500 text-2xl"></i>
 
 
 
 
 
 
1222
  </div>
1223
 
1224
  <!-- תיאור -->
@@ -1254,15 +1252,23 @@ https://bit.ly/a-tools
1254
  tool.url !== '#' ? 'גישה לכלי' : 'אין קישור'
1255
  }
1256
  </a>
 
 
 
1257
  `;
1258
 
1259
  toolsContainer.appendChild(toolCard);
1260
- });
1261
- // אנימציה של הופעה חלקה
1262
- requestAnimationFrame(() => {
1263
- toolCard.classList.add('visible');
 
1264
  });
1265
 
 
 
 
 
1266
  // הוספת סגנון CSS לכפתור הקראה פעיל
1267
  if (!document.getElementById('speakButtonStyle')) {
1268
  const style = document.createElement('style');
@@ -1874,6 +1880,232 @@ https://bit.ly/a-tools
1874
  });
1875
  });
1876
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1877
  </script>
1878
 
1879
  <!-- /* --------------------------------- */
 
887
 
888
  // --- Initialize ---
889
  async function init() {
890
+ showLoading('טוען נתונים...');
891
+
892
  try {
893
+ await loadData(); // המתנה לטעינת הנתונים
 
 
 
 
894
 
 
 
895
  renderTools();
896
  renderVideos();
897
  updateStats();
898
  setupEventListeners();
899
+ updateCategoryFilters(); // הוספת כפתור המועדפים
900
 
901
+ // הגדרת כפתור "הכל" כפעיל בהתחלה
902
+ const allFilterBtn = document.querySelector(
903
+ '.filter-btn[data-category="all"]'
904
+ );
905
+ if (allFilterBtn) {
906
+ allFilterBtn.classList.add('active');
 
 
 
 
907
  }
908
+
909
+ hideLoading();
910
  } catch (error) {
911
+ console.error('שגיאה באתחול:', error);
912
+ showError('אירעה שגיאה בטעינת האתר. אנא נסה לרענן את הדף.');
 
913
  hideLoading();
914
  }
915
  }
 
1147
  toolsContainer.innerHTML =
1148
  '<p class="text-center text-gray-500 col-span-full">לא נמצאו כלים התואמים את החיפוש, הסינון והמיון.</p>';
1149
  } else {
1150
+ filteredTools.forEach((tool, index) => {
1151
  const toolCard = document.createElement('div');
1152
  toolCard.className = `relative tool-card bg-white rounded-lg shadow-sm border border-gray-100 p-6 transition duration-300 ${
1153
  tool.isFeatured ? 'ring-2 ring-blue-500' : ''
 
1155
 
1156
  // הכנת הטקסט להקראה - שילוב של שם הכלי והתיאור שלו
1157
  const speakableText = `${tool.name}. ${tool.description}`;
1158
+
 
1159
  // הוספת מאפיין לסינון כלים חינמיים
1160
  if (tool.free) {
1161
  toolCard.setAttribute('data-free', 'true');
 
1209
  </div>
1210
  </div>
1211
 
1212
+ <!-- כפתור מועדפים -->
1213
+ <div class="flex items-center gap-2">
1214
+ <button class="favorite-btn p-2 text-yellow-400 hover:text-yellow-500 transition" data-id="${index}" title="הוסף למועדפים">
1215
+ <i class="far fa-star text-xl"></i>
1216
+ </button>
1217
+ <!-- אייקון הכלי -->
1218
+ <i class="${tool.icon} text-gray-500 text-2xl"></i>
1219
+ </div>
1220
  </div>
1221
 
1222
  <!-- תיאור -->
 
1252
  tool.url !== '#' ? 'גישה לכלי' : 'אין קישור'
1253
  }
1254
  </a>
1255
+
1256
+ <!-- כפתורי שיתוף -->
1257
+ ${renderShareButtons(tool)}
1258
  `;
1259
 
1260
  toolsContainer.appendChild(toolCard);
1261
+
1262
+ // אנימציה של הופעה חלקה
1263
+ requestAnimationFrame(() => {
1264
+ toolCard.classList.add('visible');
1265
+ });
1266
  });
1267
 
1268
+ // הפעלת פונקציות האתחול לאחר הוספת הכלים לדף
1269
+ setupFavorites();
1270
+ setupShareButtons();
1271
+
1272
  // הוספת סגנון CSS לכפתור הקראה פעיל
1273
  if (!document.getElementById('speakButtonStyle')) {
1274
  const style = document.createElement('style');
 
1880
  });
1881
  });
1882
  });
1883
+ // פונקציה להצגת כפתורי שיתוף
1884
+ function renderShareButtons(tool) {
1885
+ const encodedToolName = encodeURIComponent(tool.name);
1886
+ const encodedDesc = encodeURIComponent(
1887
+ `בדקו את הכלי ${tool.name} - ${tool.description}`
1888
+ );
1889
+ const encodedUrl = encodeURIComponent(tool.url);
1890
+
1891
+ // וודא שיש URL תקין לשיתוף
1892
+ if (!tool.url || tool.url === '#') {
1893
+ return ''; // לא מציג כפתורי שיתוף אם אין URL תקין
1894
+ }
1895
+
1896
+ return `
1897
+ <div class="flex justify-end mt-3 gap-2">
1898
+ <button class="share-btn text-blue-800 hover:bg-blue-50 p-1.5 rounded-full transition"
1899
+ data-platform="facebook"
1900
+ data-url="${tool.url}"
1901
+ data-title="${tool.name}"
1902
+ title="שתף בפייסבוק"
1903
+ aria-label="שתף בפייסבוק">
1904
+ <i class="fab fa-facebook-f text-sm"></i>
1905
+ </button>
1906
+ <button class="share-btn text-green-700 hover:bg-green-50 p-1.5 rounded-full transition"
1907
+ data-platform="whatsapp"
1908
+ data-url="${tool.url}"
1909
+ data-title="${tool.name}"
1910
+ title="שתף בוואטסאפ"
1911
+ aria-label="שתף בוואטסאפ">
1912
+ <i class="fab fa-whatsapp text-sm"></i>
1913
+ </button>
1914
+ <button class="share-btn text-blue-500 hover:bg-blue-50 p-1.5 rounded-full transition"
1915
+ data-platform="twitter"
1916
+ data-url="${tool.url}"
1917
+ data-title="${tool.name}"
1918
+ title="שתף בטוויטר"
1919
+ aria-label="שתף בטוויטר">
1920
+ <i class="fab fa-twitter text-sm"></i>
1921
+ </button>
1922
+ <button class="share-btn text-gray-700 hover:bg-gray-50 p-1.5 rounded-full transition"
1923
+ data-platform="copy"
1924
+ data-url="${tool.url}"
1925
+ title="העתק קישור"
1926
+ aria-label="העתק קישור">
1927
+ <i class="fas fa-link text-sm"></i>
1928
+ </button>
1929
+ </div>
1930
+ `;
1931
+ }
1932
+ // פונקציה לטיפול בלחיצה על כפתור המועדפים
1933
+ function setupFavorites() {
1934
+ // טעינת המועדפים מה-localStorage
1935
+ let favorites = JSON.parse(
1936
+ localStorage.getItem('aiToolsFavorites') || '[]'
1937
+ );
1938
+
1939
+ // הוספת אירוע לחיצה לכפתורי המועדפים
1940
+ document.querySelectorAll('.favorite-btn').forEach((btn) => {
1941
+ const toolId = btn.dataset.id;
1942
+
1943
+ // עדכון המראה הראשוני בהתאם למצב
1944
+ if (favorites.includes(toolId)) {
1945
+ btn.classList.add('active');
1946
+ btn.querySelector('i').classList.remove('far');
1947
+ btn.querySelector('i').classList.add('fas');
1948
+ }
1949
+
1950
+ btn.addEventListener('click', (e) => {
1951
+ e.preventDefault();
1952
+ e.stopPropagation();
1953
+
1954
+ const isFavorite = favorites.includes(toolId);
1955
+
1956
+ if (isFavorite) {
1957
+ // הסרה מהמועדפים
1958
+ favorites = favorites.filter((id) => id !== toolId);
1959
+ btn.classList.remove('active');
1960
+ btn.querySelector('i').classList.remove('fas');
1961
+ btn.querySelector('i').classList.add('far');
1962
+ } else {
1963
+ // הוספה למועדפים
1964
+ favorites.push(toolId);
1965
+ btn.classList.add('active');
1966
+ btn.querySelector('i').classList.remove('far');
1967
+ btn.querySelector('i').classList.add('fas');
1968
+ }
1969
+
1970
+ // שמירת המועדפים המעודכנים
1971
+ localStorage.setItem('aiToolsFavorites', JSON.stringify(favorites));
1972
+ });
1973
+ });
1974
+ }
1975
+ // עדכון של פונקציית filterTools הקיימת להוספת תמיכה במועדפים
1976
+ function filterTools() {
1977
+ if (!toolsData || !Array.isArray(toolsData.tools)) return [];
1978
+
1979
+ // טעינת המועדפים מה-localStorage
1980
+ const favorites = JSON.parse(
1981
+ localStorage.getItem('aiToolsFavorites') || '[]'
1982
+ );
1983
+
1984
+ let filtered = toolsData.tools;
1985
+
1986
+ // סינון לפי מועדפים (אם מסומן)
1987
+ if (currentCategory === 'favorites') {
1988
+ filtered = filtered.filter((_, index) =>
1989
+ favorites.includes(index.toString())
1990
+ );
1991
+ }
1992
+ // סינון לפי קטגוריה (כפי שהיה קודם)
1993
+ else if (currentCategory === 'free') {
1994
+ filtered = filtered.filter((tool) => tool.free === true);
1995
+ } else if (currentCategory !== 'all') {
1996
+ filtered = filtered.filter(
1997
+ (tool) => tool.category === currentCategory
1998
+ );
1999
+ }
2000
+
2001
+ // סינון לפי חיפוש (נשאר כפי שהיה)
2002
+ if (currentSearchTerm) {
2003
+ const searchLower = currentSearchTerm.toLowerCase();
2004
+ filtered = filtered.filter((tool) => {
2005
+ const nameMatch =
2006
+ tool.name && tool.name.toLowerCase().includes(searchLower);
2007
+ const descMatch =
2008
+ tool.description &&
2009
+ tool.description.toLowerCase().includes(searchLower);
2010
+ const categoryNameMatch = getCategoryName(tool.category)
2011
+ .toLowerCase()
2012
+ .includes(searchLower);
2013
+ return nameMatch || descMatch || categoryNameMatch;
2014
+ });
2015
+ }
2016
+
2017
+ // בדיקה אם יש סינון לפי סטטוס נתונים (filteredStatView)
2018
+ if (filteredStatView === 'topRated') {
2019
+ filtered = filtered.filter((tool) => tool.rating >= 5);
2020
+ } else if (filteredStatView === 'newTools') {
2021
+ filtered = filtered.filter((tool) => tool.isNew);
2022
+ }
2023
+
2024
+ return filtered;
2025
+ }
2026
+
2027
+ // פונקציה לטיפול בכפתורי שיתוף
2028
+ function setupShareButtons() {
2029
+ document.querySelectorAll('.share-btn').forEach((btn) => {
2030
+ btn.addEventListener('click', (e) => {
2031
+ e.preventDefault();
2032
+ e.stopPropagation();
2033
+
2034
+ const platform = btn.dataset.platform;
2035
+ const url = btn.dataset.url;
2036
+ const title = btn.dataset.title;
2037
+ const text = `בדקו את הכלי ${title} מארגז הכלים של שגיא בר און`;
2038
+
2039
+ let shareUrl;
2040
+
2041
+ switch (platform) {
2042
+ case 'facebook':
2043
+ shareUrl = `https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(
2044
+ url
2045
+ )}&quote=${encodeURIComponent(text)}`;
2046
+ window.open(shareUrl, '_blank', 'width=600,height=400');
2047
+ break;
2048
+ case 'twitter':
2049
+ shareUrl = `https://twitter.com/intent/tweet?url=${encodeURIComponent(
2050
+ url
2051
+ )}&text=${encodeURIComponent(text)}`;
2052
+ window.open(shareUrl, '_blank', 'width=600,height=400');
2053
+ break;
2054
+ case 'whatsapp':
2055
+ shareUrl = `https://api.whatsapp.com/send?text=${encodeURIComponent(
2056
+ text + ' ' + url
2057
+ )}`;
2058
+ window.open(shareUrl, '_blank');
2059
+ break;
2060
+ case 'copy':
2061
+ navigator.clipboard.writeText(url).then(() => {
2062
+ // הודעה זמנית על העתקה מוצלחת
2063
+ const toast = document.createElement('div');
2064
+ toast.className =
2065
+ 'fixed top-4 left-1/2 transform -translate-x-1/2 bg-green-500 text-white px-4 py-2 rounded shadow-lg z-50';
2066
+ toast.textContent = 'הקישור הועתק בהצלחה!';
2067
+ document.body.appendChild(toast);
2068
+
2069
+ setTimeout(() => {
2070
+ toast.remove();
2071
+ }, 2000);
2072
+ });
2073
+ break;
2074
+ }
2075
+ });
2076
+ });
2077
+ }
2078
+
2079
+ // פונקציה להוספת כפתור המועדפים לאזור הקטגוריות
2080
+ function updateCategoryFilters() {
2081
+ const categoryFilterDiv = document.querySelector('.category-filter');
2082
+
2083
+ // בודק אם כפתור המועדפים כבר קיים
2084
+ if (!document.querySelector('[data-category="favorites"]')) {
2085
+ const favoritesBtn = document.createElement('button');
2086
+ favoritesBtn.className =
2087
+ 'filter-btn px-3 py-1 rounded-full border border-gray-300 text-sm hover:bg-gray-100 transition';
2088
+ favoritesBtn.dataset.category = 'favorites';
2089
+ favoritesBtn.innerHTML =
2090
+ '<i class="fas fa-star text-yellow-400 ml-1"></i> מועדפים';
2091
+
2092
+ // הוספת הכפתור לאחר כפתור "הכל"
2093
+ const allBtn = document.querySelector('[data-category="all"]');
2094
+ if (allBtn && allBtn.parentNode) {
2095
+ allBtn.parentNode.insertBefore(favoritesBtn, allBtn.nextSibling);
2096
+
2097
+ // הוספת אירוע לחיצה
2098
+ favoritesBtn.addEventListener('click', () => {
2099
+ document
2100
+ .querySelectorAll('.filter-btn')
2101
+ .forEach((btn) => btn.classList.remove('active'));
2102
+ favoritesBtn.classList.add('active');
2103
+ currentCategory = 'favorites';
2104
+ renderTools();
2105
+ });
2106
+ }
2107
+ }
2108
+ }
2109
  </script>
2110
 
2111
  <!-- /* --------------------------------- */
style.css CHANGED
@@ -1,38 +1,39 @@
1
  html {
2
- scroll-behavior: smooth;
3
  }
4
 
5
  body {
6
- padding: 2rem;
7
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
8
  }
9
- button:hover, a.button:hover {
10
- transform: scale(1.02);
11
- transition: transform 0.2s ease-in-out;
 
12
  }
13
 
14
  h1 {
15
- font-size: 16px;
16
- margin-top: 0;
17
  }
18
 
19
  p {
20
- color: rgb(107, 114, 128);
21
- font-size: 15px;
22
- margin-bottom: 10px;
23
- margin-top: 5px;
24
  }
25
 
26
  .card {
27
- max-width: 620px;
28
- margin: 0 auto;
29
- padding: 16px;
30
- border: 1px solid lightgray;
31
- border-radius: 16px;
32
  }
33
 
34
  .card p:last-child {
35
- margin-bottom: 0;
36
  }
37
  .scroll-container {
38
  max-height: 90vh;
@@ -40,47 +41,46 @@ p {
40
  padding-bottom: 80px; /* כדי לא להיתקע מאחורי הפוטר */
41
  }
42
  .tool-card {
43
- opacity: 0;
44
- transform: translateY(20px);
45
- transition: all 0.5s ease;
46
  }
47
  .tool-card.visible {
48
- opacity: 1;
49
- transform: translateY(0);
50
  }
51
  .accessibility-mode {
52
- font-size: 18px;
53
- line-height: 1.8;
54
- background-color: #000 !important;
55
- color: #fff !important;
56
  }
57
 
58
  .accessibility-mode .tool-card {
59
- background-color: #111 !important;
60
- color: #fff !important;
61
- border-color: #555 !important;
62
  }
63
 
64
  .accessibility-mode a,
65
  .accessibility-mode button {
66
- font-size: 18px !important;
67
- color: #fff !important;
68
- background-color: #333 !important;
69
  }
70
  .category-filter .active {
71
- background-color: #e0f2fe; /* תכלת עדין */
72
- color: #1e3a8a; /* כחול כהה */
73
- border-color: #1e3a8a;
74
- font-weight: 600;
75
  }
76
 
77
-
78
  .accessibility-mode input,
79
  .accessibility-mode textarea {
80
- font-size: 16px;
81
- background-color: #222;
82
- color: white;
83
- border-color: #666;
84
  }
85
  #newToolBanner {
86
  position: fixed;
@@ -92,41 +92,161 @@ p {
92
  display: none;
93
  }
94
 
95
- /* Chat animations and effects */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  @keyframes pulse {
97
- 0% { box-shadow: 0 0 0 0 rgba(139, 92, 246, 0.7); }
98
- 70% { box-shadow: 0 0 0 10px rgba(139, 92, 246, 0); }
99
- 100% { box-shadow: 0 0 0 0 rgba(139, 92, 246, 0); }
 
 
 
 
 
 
100
  }
101
 
102
  .chat-pulse {
103
- animation: pulse 2s infinite;
104
  }
105
 
106
  /* Smooth transitions */
107
  #chatWindow {
108
- transition: all 0.3s ease-in-out;
109
- transform-origin: bottom right;
110
  }
111
 
112
  .chat-intro-enter {
113
- animation: slideDown 0.3s forwards;
114
  }
115
 
116
  @keyframes slideDown {
117
- from { transform: translateY(-20px); opacity: 0; }
118
- to { transform: translateY(0); opacity: 1; }
 
 
 
 
 
 
119
  }
120
 
121
  /* Mobile adjustments */
122
  @media (max-width: 640px) {
123
- #chatWindow {
124
- width: 90vw !important;
125
- right: 5vw;
126
- left: 5vw;
127
- }
128
-
129
- #chatBubble {
130
- bottom: 75px; /* Move above footer on mobile */
131
- }
132
- }
 
1
  html {
2
+ scroll-behavior: smooth;
3
  }
4
 
5
  body {
6
+ padding: 2rem;
7
+ font-family: -apple-system, BlinkMacSystemFont, 'Arial', sans-serif;
8
  }
9
+ button:hover,
10
+ a.button:hover {
11
+ transform: scale(1.02);
12
+ transition: transform 0.2s ease-in-out;
13
  }
14
 
15
  h1 {
16
+ font-size: 16px;
17
+ margin-top: 0;
18
  }
19
 
20
  p {
21
+ color: rgb(107, 114, 128);
22
+ font-size: 15px;
23
+ margin-bottom: 10px;
24
+ margin-top: 5px;
25
  }
26
 
27
  .card {
28
+ max-width: 620px;
29
+ margin: 0 auto;
30
+ padding: 16px;
31
+ border: 1px solid lightgray;
32
+ border-radius: 16px;
33
  }
34
 
35
  .card p:last-child {
36
+ margin-bottom: 0;
37
  }
38
  .scroll-container {
39
  max-height: 90vh;
 
41
  padding-bottom: 80px; /* כדי לא להיתקע מאחורי הפוטר */
42
  }
43
  .tool-card {
44
+ opacity: 0;
45
+ transform: translateY(20px);
46
+ transition: all 0.5s ease;
47
  }
48
  .tool-card.visible {
49
+ opacity: 1;
50
+ transform: translateY(0);
51
  }
52
  .accessibility-mode {
53
+ font-size: 18px;
54
+ line-height: 1.8;
55
+ background-color: #000 !important;
56
+ color: #fff !important;
57
  }
58
 
59
  .accessibility-mode .tool-card {
60
+ background-color: #111 !important;
61
+ color: #fff !important;
62
+ border-color: #555 !important;
63
  }
64
 
65
  .accessibility-mode a,
66
  .accessibility-mode button {
67
+ font-size: 18px !important;
68
+ color: #fff !important;
69
+ background-color: #333 !important;
70
  }
71
  .category-filter .active {
72
+ background-color: #e0f2fe; /* תכלת עדין */
73
+ color: #1e3a8a; /* כחול כהה */
74
+ border-color: #1e3a8a;
75
+ font-weight: 600;
76
  }
77
 
 
78
  .accessibility-mode input,
79
  .accessibility-mode textarea {
80
+ font-size: 16px;
81
+ background-color: #222;
82
+ color: white;
83
+ border-color: #666;
84
  }
85
  #newToolBanner {
86
  position: fixed;
 
92
  display: none;
93
  }
94
 
95
+ /* סגנונות עבור כפתורי שיתוף ומועדפים */
96
+ .favorite-btn {
97
+ transition: all 0.2s ease;
98
+ }
99
+
100
+ .favorite-btn.active {
101
+ transform: scale(1.1);
102
+ }
103
+
104
+ .favorite-btn:hover {
105
+ transform: scale(1.15);
106
+ }
107
+
108
+ .share-btn {
109
+ transition: all 0.2s ease;
110
+ }
111
+
112
+ .share-btn:hover {
113
+ transform: translateY(-2px);
114
+ }
115
+
116
+ .favorite-btn:focus,
117
+ .share-btn:focus {
118
+ outline: none;
119
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.5);
120
+ }
121
+
122
+ /* הודעת העתקה */
123
+ .copy-toast {
124
+ position: fixed;
125
+ top: 1rem;
126
+ left: 50%;
127
+ transform: translateX(-50%);
128
+ background-color: rgba(16, 185, 129, 0.9);
129
+ color: white;
130
+ padding: 0.5rem 1rem;
131
+ border-radius: 0.375rem;
132
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1),
133
+ 0 2px 4px -1px rgba(0, 0, 0, 0.06);
134
+ z-index: 50;
135
+ opacity: 0;
136
+ transition: opacity 0.3s ease;
137
+ }
138
+
139
+ .copy-toast.show {
140
+ opacity: 1;
141
+ }
142
+
143
+ /* סגנונות עבור כפתור המועדפים בפילטרים */
144
+ .filter-btn[data-category='favorites'] {
145
+ background-color: #fef3c7;
146
+ border-color: #f59e0b;
147
+ }
148
+
149
+ .filter-btn[data-category='favorites'].active {
150
+ background-color: #f59e0b;
151
+ color: white;
152
+ }
153
+
154
+ .filter-btn[data-category='favorites'] i {
155
+ color: #f59e0b;
156
+ }
157
+
158
+ .filter-btn[data-category='favorites'].active i {
159
+ color: white;
160
+ }
161
+ /* סגנונות עבור כפתורי שיתוף ומועדפים */
162
+ .favorite-btn {
163
+ transition: all 0.2s ease;
164
+ }
165
+
166
+ .favorite-btn.active {
167
+ transform: scale(1.1);
168
+ }
169
+
170
+ .favorite-btn:hover {
171
+ transform: scale(1.15);
172
+ }
173
+
174
+ .share-btn {
175
+ transition: all 0.2s ease;
176
+ }
177
+
178
+ .share-btn:hover {
179
+ transform: translateY(-2px);
180
+ }
181
+
182
+ .favorite-btn:focus,
183
+ .share-btn:focus {
184
+ outline: none;
185
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.5);
186
+ }
187
+
188
+ /* עיצוב כפתור מועדפים בסינון */
189
+ .filter-btn[data-category='favorites'] {
190
+ background-color: #fef3c7 !important;
191
+ border-color: #f59e0b !important;
192
+ color: #b45309 !important;
193
+ }
194
+
195
+ .filter-btn[data-category='favorites'].active {
196
+ background-color: #f59e0b !important;
197
+ color: white !important;
198
+ }
199
+
200
+ .filter-btn[data-category='favorites'] i {
201
+ color: inherit;
202
+ }
203
+ /* Chat animations and effects */
204
  @keyframes pulse {
205
+ 0% {
206
+ box-shadow: 0 0 0 0 rgba(139, 92, 246, 0.7);
207
+ }
208
+ 70% {
209
+ box-shadow: 0 0 0 10px rgba(139, 92, 246, 0);
210
+ }
211
+ 100% {
212
+ box-shadow: 0 0 0 0 rgba(139, 92, 246, 0);
213
+ }
214
  }
215
 
216
  .chat-pulse {
217
+ animation: pulse 2s infinite;
218
  }
219
 
220
  /* Smooth transitions */
221
  #chatWindow {
222
+ transition: all 0.3s ease-in-out;
223
+ transform-origin: bottom right;
224
  }
225
 
226
  .chat-intro-enter {
227
+ animation: slideDown 0.3s forwards;
228
  }
229
 
230
  @keyframes slideDown {
231
+ from {
232
+ transform: translateY(-20px);
233
+ opacity: 0;
234
+ }
235
+ to {
236
+ transform: translateY(0);
237
+ opacity: 1;
238
+ }
239
  }
240
 
241
  /* Mobile adjustments */
242
  @media (max-width: 640px) {
243
+ #chatWindow {
244
+ width: 90vw !important;
245
+ right: 5vw;
246
+ left: 5vw;
247
+ }
248
+
249
+ #chatBubble {
250
+ bottom: 75px; /* Move above footer on mobile */
251
+ }
252
+ }
tools.json CHANGED
@@ -3,7 +3,7 @@
3
  "name": "אליעזר - בוט תמלול הודעות קוליות בוואטסאפ",
4
  "description": "בוט WhatsApp לתמלול הודעות קוליות לעברית במהירות ובחינם. שלחו הודעה קולית ל־'אליעזר' ותקבלו תמלול מדויק תוך שניות. הבוט מבוסס על טכנולוגיית Whisper-Turbo.",
5
  "url": "https://wa.me/972559571223",
6
- "logo": "https://pps.whatsapp.net/v/t61.24694-24/491869625_1181606280415417_1942649546857677633_n.jpg?ccb=11-4&oh=01_Q5Aa1QFEbJz6AneI0ygM_PiDUhy5zYH8lDlMi26n5XQ6XE0s-w&oe=6808DCD6&_nc_sid=5e03e0&_nc_cat=110",
7
  "category": "utility",
8
  "icon": "fas fa-microphone-alt",
9
  "video": "",
 
3
  "name": "אליעזר - בוט תמלול הודעות קוליות בוואטסאפ",
4
  "description": "בוט WhatsApp לתמלול הודעות קוליות לעברית במהירות ובחינם. שלחו הודעה קולית ל־'אליעזר' ותקבלו תמלול מדויק תוך שניות. הבוט מבוסס על טכנולוגיית Whisper-Turbo.",
5
  "url": "https://wa.me/972559571223",
6
+ "logo": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcToJht3wuQrsZ3KNMXckeCrtKGVHgLF1PAB3A&s",
7
  "category": "utility",
8
  "icon": "fas fa-microphone-alt",
9
  "video": "",