HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/europequiz/src/componenst/Checkbox.svelte
<script>
  export let name = 'checkbox';
  export let text = '';
  export let checked = false;
  export let onChange;
</script>

<div class="checkbox {checked ? 'active' : ''}">
  <input {name} id={name} type="checkbox" class="checkbox__input" on:change={(e) => onChange(e.target?.checked)} />
  <label for={name} class="checkbox__label">
    <span class="checkbox__icon" />
    <span class="checkbox__text">{@html text}</span>
  </label>
</div>

<style lang="scss">
  @import 'src/scss/variables';
  @import 'src/scss/media';

  .checkbox {
    position: relative;
    user-select: none;
    margin-inline: auto;
    margin-top: 10px;

    &__input {
      display: none;
      visibility: hidden;
      opacity: 0;
      appearance: none;
      position: absolute;
      left: 0;
      top: 0;
    }

    &__label {
      display: flex;
      align-items: center;
      gap: 8px;
    }

    &__icon {
      width: 18px;
      height: 18px;
      display: block;
      border: 2px solid $yellow1;
      border-radius: 3px;
    }

    &__text {
      display: block;
      font-size: 14px;
      line-height: 30px;

      @include breakpoint-up('tabS') {
        font-size: 14px;
        line-height: 30px;
      }

      :global(a) {
        color: $yellow1;
      }
    }

    &.active {
      .checkbox__icon {
        background-image: url('/src/assets/icons/checkbox.png');
        background-size: calc(100% + 4px);
        background-repeat: no-repeat;
        background-position: -2px -2px;
      }
    }
  }
</style>