Model.svelte 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <script lang="ts">
  2. import { getContext, createEventDispatcher } from 'svelte';
  3. const dispatch = createEventDispatcher();
  4. const i18n = getContext('i18n');
  5. import Cog6 from '$lib/components/icons/Cog6.svelte';
  6. import ArenaModelModal from './ArenaModelModal.svelte';
  7. export let model;
  8. let showModel = false;
  9. </script>
  10. <ArenaModelModal
  11. bind:show={showModel}
  12. edit={true}
  13. {model}
  14. on:submit={async (e) => {
  15. dispatch('edit', e.detail);
  16. }}
  17. on:delete={async () => {
  18. dispatch('delete');
  19. }}
  20. />
  21. <div class="py-0.5">
  22. <div class="flex justify-between items-center mb-1">
  23. <div class="flex flex-col flex-1">
  24. <div class="flex gap-2.5 items-center">
  25. <img
  26. src={model.meta.profile_image_url}
  27. alt={model.name}
  28. class="size-8 rounded-full object-cover shrink-0"
  29. />
  30. <div class="w-full flex flex-col">
  31. <div class="flex items-center gap-1">
  32. <div class="shrink-0 line-clamp-1">
  33. {model.name}
  34. </div>
  35. </div>
  36. <div class="flex items-center gap-1">
  37. <div class=" text-xs w-full text-gray-500 bg-transparent line-clamp-1">
  38. {model?.meta?.description ?? model.id}
  39. </div>
  40. </div>
  41. </div>
  42. </div>
  43. </div>
  44. <div class="flex items-center">
  45. <button
  46. class="self-center w-fit text-sm p-1.5 dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5 rounded-xl"
  47. type="button"
  48. on:click={() => {
  49. showModel = true;
  50. }}
  51. >
  52. <Cog6 />
  53. </button>
  54. </div>
  55. </div>
  56. </div>