index.vue 562 B

12345678910111213141516171819202122232425262728
  1. <template>
  2. <component :is="icon" :class="className" />
  3. </template>
  4. <script setup>
  5. import { computed } from 'vue'
  6. import * as heroIcons from '@heroicons/vue/24/outline'
  7. const props = defineProps({
  8. name: {
  9. type: String,
  10. required: true,
  11. },
  12. className: {
  13. type: String,
  14. required: false,
  15. default: "w-5 h-5"
  16. }
  17. })
  18. const icon = computed(() => {
  19. let name = ''
  20. props.name.split('-').forEach(v => {
  21. name += v[0].toUpperCase() + v.substr(1)
  22. })
  23. return heroIcons[name + 'Icon']
  24. })
  25. </script>