index.pug 1.6 KB

1234567891011121314151617181920212223242526272829303132
  1. div(class="language-switcher relative")
  2. button(
  3. @click="toggleDropdown"
  4. class="flex items-center space-x-2 px-3 py-2 rounded-lg border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors"
  5. )
  6. span(class="text-sm font-medium") {{ currentLanguageName }}
  7. svg(
  8. :class="{ 'transform rotate-180': isOpen }"
  9. class="w-4 h-4 transition-transform"
  10. fill="none"
  11. stroke="currentColor"
  12. viewBox="0 0 24 24"
  13. )
  14. path(stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7")
  15. div(
  16. v-if="isOpen"
  17. class="absolute top-full right-0 mt-2 w-48 bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 z-50"
  18. )
  19. div(class="py-1")
  20. button(
  21. v-for="language in languages"
  22. :key="language.code"
  23. @click="changeLanguage(language.code)"
  24. :class="{'bg-blue-50 dark:bg-blue-900 text-blue-600 dark:text-blue-400': currentLanguage === language.code, 'text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-700': currentLanguage !== language.code }"
  25. class="w-full text-left px-4 py-2 text-sm transition-colors flex items-center space-x-2"
  26. )
  27. span {{ language.native }}
  28. span(
  29. v-if="currentLanguage === language.code"
  30. class="text-blue-600 dark:text-blue-400"
  31. ) ✓