atagen

malice

public
Star0
Watch0
6381c09db9bfd2f6f31341eb87efa1dfcf65d2e0
2
ssh://brewery@pls.lobotomise.me:33/atagen/malice.git

Blame: web/src/lib/PinButton.svelte

7cca1d5628d1atagen2026-10-24 07:36 UTC1
<script lang="ts">
7cca1d5628d1atagen2026-10-24 07:36 UTC2
  export let pinned: boolean;
7cca1d5628d1atagen2026-10-24 07:36 UTC3
  export let label: string;
7cca1d5628d1atagen2026-10-24 07:36 UTC4
  export let onToggle: () => void;
7cca1d5628d1atagen2026-10-24 07:36 UTC5
</script>
7cca1d5628d1atagen2026-10-24 07:36 UTC6
7cca1d5628d1atagen2026-10-24 07:36 UTC7
<button
7cca1d5628d1atagen2026-10-24 07:36 UTC8
  type="button"
7cca1d5628d1atagen2026-10-24 07:36 UTC9
  class="pin-btn"
7cca1d5628d1atagen2026-10-24 07:36 UTC10
  class:pinned
7cca1d5628d1atagen2026-10-24 07:36 UTC11
  aria-pressed={pinned}
7cca1d5628d1atagen2026-10-24 07:36 UTC12
  aria-label={pinned ? `Unpin ${label}` : `Pin ${label}`}
7cca1d5628d1atagen2026-10-24 07:36 UTC13
  title={pinned ? 'Unpin' : 'Pin'}
7cca1d5628d1atagen2026-10-24 07:36 UTC14
  on:click={onToggle}
7cca1d5628d1atagen2026-10-24 07:36 UTC15
>
7cca1d5628d1atagen2026-10-24 07:36 UTC16
  <svg viewBox="0 0 24 24" width="14" height="14" aria-hidden="true">
7cca1d5628d1atagen2026-10-24 07:36 UTC17
    <path
7cca1d5628d1atagen2026-10-24 07:36 UTC18
      d="M9 3h6l-1 6 4 4v2h-5v6l-1 1-1-1v-6H6v-2l4-4z"
7cca1d5628d1atagen2026-10-24 07:36 UTC19
      fill={pinned ? 'currentColor' : 'none'}
7cca1d5628d1atagen2026-10-24 07:36 UTC20
      stroke="currentColor"
7cca1d5628d1atagen2026-10-24 07:36 UTC21
      stroke-width="1.8"
7cca1d5628d1atagen2026-10-24 07:36 UTC22
      stroke-linejoin="round"
7cca1d5628d1atagen2026-10-24 07:36 UTC23
    />
7cca1d5628d1atagen2026-10-24 07:36 UTC24
  </svg>
7cca1d5628d1atagen2026-10-24 07:36 UTC25
</button>
7cca1d5628d1atagen2026-10-24 07:36 UTC26
7cca1d5628d1atagen2026-10-24 07:36 UTC27
<style>
7cca1d5628d1atagen2026-10-24 07:36 UTC28
  .pin-btn {
7cca1d5628d1atagen2026-10-24 07:36 UTC29
    flex: none;
7cca1d5628d1atagen2026-10-24 07:36 UTC30
    display: grid;
7cca1d5628d1atagen2026-10-24 07:36 UTC31
    place-items: center;
7cca1d5628d1atagen2026-10-24 07:36 UTC32
    width: 24px;
7cca1d5628d1atagen2026-10-24 07:36 UTC33
    height: 24px;
7cca1d5628d1atagen2026-10-24 07:36 UTC34
    padding: 0;
7cca1d5628d1atagen2026-10-24 07:36 UTC35
    border: none;
05a48e9e7942atagen2026-10-24 09:32 UTC36
    border-radius: var(--r-sm);
7cca1d5628d1atagen2026-10-24 07:36 UTC37
    background: transparent;
7cca1d5628d1atagen2026-10-24 07:36 UTC38
    color: var(--muted);
7cca1d5628d1atagen2026-10-24 07:36 UTC39
    cursor: pointer;
7cca1d5628d1atagen2026-10-24 07:36 UTC40
    opacity: 0;
7cca1d5628d1atagen2026-10-24 07:36 UTC41
  }
7cca1d5628d1atagen2026-10-24 07:36 UTC42
  .pin-btn.pinned { opacity: 1; color: var(--accent); }
7cca1d5628d1atagen2026-10-24 07:36 UTC43
  .pin-btn:hover { background: var(--hover); color: var(--text); }
7cca1d5628d1atagen2026-10-24 07:36 UTC44
  :global(.room-item:hover) .pin-btn, :global(.room-item:focus-within) .pin-btn, .pin-btn:focus-visible { opacity: 1; }
7cca1d5628d1atagen2026-10-24 07:36 UTC45
</style>