Radish alpha
r
rad:z4D5UCArafTzTQpDZNQRuqswh3ury
Radicle desktop app
Radicle
Git
radicle-desktop src modals Settings.svelte
<script lang="ts">
  import { hide } from "@app/lib/modal";
  import { updateChecker } from "@app/lib/updateChecker.svelte";

  import AnnounceSwitch from "@app/components/AnnounceSwitch.svelte";
  import BadgeCounterSwitch from "@app/components/BadgeCounterSwitch.svelte";
  import Button from "@app/components/Button.svelte";
  import CodeFontSwitch from "@app/components/CodeFontSwitch.svelte";
  import ExternalLink from "@app/components/ExternalLink.svelte";
  import FontSizeSwitch from "@app/components/FontSizeSwitch.svelte";
  import Icon from "@app/components/Icon.svelte";
  import ThemeSwitch from "@app/components/ThemeSwitch.svelte";
  import UpdateSwitch from "@app/components/UpdateSwitch.svelte";
</script>

<style>
  .modal {
    width: 40rem;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--border-radius-lg);
    background-color: var(--color-surface-canvas);
    overflow: hidden;
  }
  .header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 1.5rem;
    height: 3.25rem;
    flex-shrink: 0;
    border-bottom: 1px solid var(--color-border-subtle);
  }
  .title {
    font: var(--txt-heading-s);
    color: var(--color-text-primary);
  }
  .rows {
    display: flex;
    flex-direction: column;
    padding: 1.5rem;
    gap: 1.5rem;
  }
  .row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
  }
  .row-label {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    min-width: 0;
  }
  .row-title {
    font: var(--txt-body-m-medium);
    color: var(--color-text-primary);
  }
  .row-description {
    font: var(--txt-body-m-regular);
    color: var(--color-text-secondary);
  }
  .footer {
    padding: 7rem 1.5rem 1.5rem;
    font: var(--txt-body-m-regular);
    color: var(--color-text-tertiary);
  }
</style>

<div class="modal">
  <div class="header">
    <span class="title">Settings</span>
    <Button variant="naked" onclick={hide}>
      <span style:color="var(--color-text-tertiary)">
        <Icon name="close" />
      </span>
    </Button>
  </div>
  <div class="rows">
    <div class="row">
      <div class="row-label">
        <span class="row-title">Appearance</span>
        <span class="row-description">Light, dark, or follow your system</span>
      </div>
      <ThemeSwitch />
    </div>
    <div class="row">
      <div class="row-label">
        <span class="row-title">Font size</span>
        <span class="row-description">
          Make the interface text larger or smaller
        </span>
      </div>
      <FontSizeSwitch />
    </div>
    <div class="row">
      <div class="row-label">
        <span class="row-title">Notification badge</span>
        <span class="row-description">Show unread count on the dock icon</span>
      </div>
      <BadgeCounterSwitch />
    </div>
    <div class="row">
      <div class="row-label">
        <span class="row-title">Announce changes</span>
        <span class="row-description">
          Broadcast your activity to the network right away or periodically
        </span>
      </div>
      <AnnounceSwitch />
    </div>
    <div class="row">
      <div class="row-label">
        <span class="row-title">Code font</span>
        <span class="row-description">Use a monospace font in code views</span>
      </div>
      <CodeFontSwitch />
    </div>
    <div class="row">
      <div class="row-label">
        <span class="row-title">Notify on new versions</span>
        <span class="row-description">
          Check for new versions in the background
        </span>
      </div>
      <UpdateSwitch
        active={updateChecker.isEnabled}
        disable={updateChecker.disable}
        enable={updateChecker.enable} />
    </div>
  </div>
  <div class="footer">
    {#if updateChecker.currentVersion}
      <span class="txt-selectable">
        Version {updateChecker.currentVersion}
      </span>
      {#if updateChecker.newVersion}
        · <ExternalLink href="https://radicle.dev/desktop">
          Update to {updateChecker.newVersion}
        </ExternalLink>
      {:else}
        · Up to date
      {/if}
    {/if}
  </div>
</div>