Spaces:
Running
Running
Commit
·
3ae4480
1
Parent(s):
db25122
הוספת מועדפים ושיתוף הכלי
Browse files- index.html +262 -30
- style.css +182 -62
- 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 |
-
|
| 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 |
-
|
| 907 |
-
|
| 908 |
-
|
| 909 |
-
|
| 910 |
-
|
| 911 |
-
);
|
| 912 |
-
if (allFilterBtn) {
|
| 913 |
-
allFilterBtn.classList.add('active');
|
| 914 |
-
}
|
| 915 |
}
|
|
|
|
|
|
|
| 916 |
} catch (error) {
|
| 917 |
-
console.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 |
-
|
| 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 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
-
|
| 1263 |
-
|
|
|
|
| 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 |
+
)}"e=${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 |
-
|
| 3 |
}
|
| 4 |
|
| 5 |
body {
|
| 6 |
-
|
| 7 |
-
|
| 8 |
}
|
| 9 |
-
button:hover,
|
| 10 |
-
|
| 11 |
-
|
|
|
|
| 12 |
}
|
| 13 |
|
| 14 |
h1 {
|
| 15 |
-
|
| 16 |
-
|
| 17 |
}
|
| 18 |
|
| 19 |
p {
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
}
|
| 25 |
|
| 26 |
.card {
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
}
|
| 33 |
|
| 34 |
.card p:last-child {
|
| 35 |
-
|
| 36 |
}
|
| 37 |
.scroll-container {
|
| 38 |
max-height: 90vh;
|
|
@@ -40,47 +41,46 @@ p {
|
|
| 40 |
padding-bottom: 80px; /* כדי לא להיתקע מאחורי הפוטר */
|
| 41 |
}
|
| 42 |
.tool-card {
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
}
|
| 47 |
.tool-card.visible {
|
| 48 |
-
|
| 49 |
-
|
| 50 |
}
|
| 51 |
.accessibility-mode {
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
}
|
| 57 |
|
| 58 |
.accessibility-mode .tool-card {
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
}
|
| 63 |
|
| 64 |
.accessibility-mode a,
|
| 65 |
.accessibility-mode button {
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
}
|
| 70 |
.category-filter .active {
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
}
|
| 76 |
|
| 77 |
-
|
| 78 |
.accessibility-mode input,
|
| 79 |
.accessibility-mode textarea {
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
}
|
| 85 |
#newToolBanner {
|
| 86 |
position: fixed;
|
|
@@ -92,41 +92,161 @@ p {
|
|
| 92 |
display: none;
|
| 93 |
}
|
| 94 |
|
| 95 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 96 |
@keyframes pulse {
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 100 |
}
|
| 101 |
|
| 102 |
.chat-pulse {
|
| 103 |
-
|
| 104 |
}
|
| 105 |
|
| 106 |
/* Smooth transitions */
|
| 107 |
#chatWindow {
|
| 108 |
-
|
| 109 |
-
|
| 110 |
}
|
| 111 |
|
| 112 |
.chat-intro-enter {
|
| 113 |
-
|
| 114 |
}
|
| 115 |
|
| 116 |
@keyframes slideDown {
|
| 117 |
-
|
| 118 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
}
|
| 120 |
|
| 121 |
/* Mobile adjustments */
|
| 122 |
@media (max-width: 640px) {
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 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://
|
| 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": "",
|