{
type="text"
value={query}
onChange={(e) => setQuery(e.target.value)}
- onKeyDown={handleKeyDown}
placeholder="Tutorial suchen..."
className="w-full pl-12 pr-12 py-3 bg-gray-50 dark:bg-gray-900 border border-gray-200 dark:border-gray-700 rounded-xl focus:outline-none focus:ring-2 focus:ring-primary-500 dark:text-gray-100"
/>
@@ -74,6 +133,7 @@ const SearchBar = ({ onClose }) => {
diff --git a/src/components/TutorialCard.jsx b/src/components/TutorialCard.jsx
index d23d345a..fd5b94b9 100644
--- a/src/components/TutorialCard.jsx
+++ b/src/components/TutorialCard.jsx
@@ -10,18 +10,7 @@ const TutorialCard = ({ icon: Icon, title, description, topics, color, onSelect,
scrollToSection('tutorials')
}
return (
-
{
- if (event.key === 'Enter' || event.key === ' ') {
- event.preventDefault()
- handleSelect()
- }
- }}
- >
+
+
)
}
diff --git a/src/index.css b/src/index.css
index b3be18bf..48db9663 100644
--- a/src/index.css
+++ b/src/index.css
@@ -154,12 +154,8 @@
}
/* Button utility styles for consistent CTA presentation */
- .btn-base {
- @apply inline-flex items-center justify-center gap-2 rounded-xl font-semibold transition-all duration-200 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500 disabled:opacity-60 disabled:cursor-not-allowed;
- }
-
.btn-primary {
- @apply btn-base px-6 py-3 text-white shadow-md bg-gradient-to-r from-primary-600 to-primary-700 hover:from-primary-500 hover:to-primary-600 hover:-translate-y-0.5;
+ @apply inline-flex items-center justify-center gap-2 rounded-xl font-semibold transition-all duration-200 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500 disabled:opacity-60 disabled:cursor-not-allowed px-6 py-3 text-white shadow-md bg-gradient-to-r from-primary-600 to-primary-700 hover:from-primary-500 hover:to-primary-600 hover:-translate-y-0.5;
}
.btn-primary--compact {
@@ -167,15 +163,15 @@
}
.btn-secondary {
- @apply btn-base px-6 py-3 border border-primary-600 text-primary-700 bg-white hover:bg-primary-50;
+ @apply inline-flex items-center justify-center gap-2 rounded-xl font-semibold transition-all duration-200 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500 disabled:opacity-60 disabled:cursor-not-allowed px-6 py-3 border border-primary-600 text-primary-700 bg-white hover:bg-primary-50;
}
.btn-secondary-inverse {
- @apply btn-base px-6 py-3 border border-white/40 text-white hover:bg-white/10;
+ @apply inline-flex items-center justify-center gap-2 rounded-xl font-semibold transition-all duration-200 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500 disabled:opacity-60 disabled:cursor-not-allowed px-6 py-3 border border-white/40 text-white hover:bg-white/10;
}
.btn-ghost {
- @apply btn-base px-6 py-3 text-gray-700 hover:text-primary-600 hover:bg-primary-50 dark:text-gray-300 dark:hover:text-primary-300 dark:hover:bg-gray-800/60;
+ @apply inline-flex items-center justify-center gap-2 rounded-xl font-semibold transition-all duration-200 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500 disabled:opacity-60 disabled:cursor-not-allowed px-6 py-3 text-gray-700 hover:text-primary-600 hover:bg-primary-50 dark:text-gray-300 dark:hover:text-primary-300 dark:hover:bg-gray-800/60;
}
/* Floating animation class for continuous up and down movement */
.floating {