SearchField.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <template>
  2. <div
  3. class="group flex flex-auto items-stretch rounded-md border border-surface-300
  4. text-base has-hover:border-surface-400 has-focus:border-primary
  5. has-p-invalid:border-danger-300 has-hover:has-p-invalid:border-danger-400
  6. has-focus:has-p-invalid:border-danger dark:border-surface-700
  7. dark:has-hover:border-surface-600 dark:has-p-invalid:border-danger-700
  8. dark:has-hover:has-p-invalid:border-danger-600"
  9. >
  10. <div
  11. class="relative inline-flex cursor-pointer items-center justify-center gap-2
  12. overflow-hidden rounded-s-md bg-surface-0 px-3 py-2 text-primary-300 select-none
  13. group-has-hover:text-primary-400 group-has-focus:text-primary!
  14. dark:bg-surface-950 dark:text-primary-700 dark:group-has-hover:text-primary-600"
  15. >
  16. <Icon name="ph:magnifying-glass-bold" />
  17. </div>
  18. <input
  19. v-model="model"
  20. v-bind="$attrs"
  21. class="w-full appearance-none rounded-s-none rounded-e-md bg-surface-0 py-2 ps-0.5 pe-3
  22. text-surface-700 shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] outline-hidden
  23. transition-colors duration-200 placeholder:text-surface-500
  24. disabled:bg-surface-200 disabled:text-surface-500 dark:bg-surface-950
  25. dark:text-surface-0 dark:placeholder:text-surface-400
  26. dark:disabled:bg-surface-700 dark:disabled:text-surface-400"
  27. />
  28. </div>
  29. </template>
  30. <script setup>
  31. defineOptions({
  32. inheritAttrs: false
  33. })
  34. const model = defineModel()
  35. </script>
  36. <style scoped></style>