Search this site
Embedded Files
CoachingKaarten
  • Coachingkaarten
  • Translator
    • Code
  • M1
  • v1
  • Design
  • 1000
    • backup
    • Mobiel
  • NL to EN
    • CodeNLtoEN
  • NL to ES
    • Code
  • Doelgroepen
  • Developments
  • ⌘
  • STARTPAGES
  • Stijn Gabeler
  • Gabeler.eu Coaching
  • BudgetCoach Online
  • PolitiekEnZo
  • KlantKompas
  • v5
  • v4
  • v3
  • v2
  • V1
CoachingKaarten
  • Coachingkaarten
  • Translator
    • Code
  • M1
  • v1
  • Design
  • 1000
    • backup
    • Mobiel
  • NL to EN
    • CodeNLtoEN
  • NL to ES
    • Code
  • Doelgroepen
  • Developments
  • ⌘
  • STARTPAGES
  • Stijn Gabeler
  • Gabeler.eu Coaching
  • BudgetCoach Online
  • PolitiekEnZo
  • KlantKompas
  • v5
  • v4
  • v3
  • v2
  • V1
  • More
    • Coachingkaarten
    • Translator
      • Code
    • M1
    • v1
    • Design
    • 1000
      • backup
      • Mobiel
    • NL to EN
      • CodeNLtoEN
    • NL to ES
      • Code
    • Doelgroepen
    • Developments
    • ⌘
    • STARTPAGES
    • Stijn Gabeler
    • Gabeler.eu Coaching
    • BudgetCoach Online
    • PolitiekEnZo
    • KlantKompas
    • v5
    • v4
    • v3
    • v2
    • V1

1000 /Sheet /Script /Site

Mobiele Index.html 

<!DOCTYPE html>

<html lang="nl">

<head>

  <meta charset="UTF-8">

  <meta name="viewport"

        content="width=device-width, initial-scale=1, viewport-fit=cover">


  <title>GTKTP – Zinnenplayer Mobile</title>


  <style>

    * {

      box-sizing: border-box;

    }


    html {

      scroll-behavior: smooth;

    }


    body {

      margin: 0;

      padding: 0;

      font-family: Arial, Helvetica, sans-serif;

      background: #f5f7fa;

      color: #172033;

    }


    .app {

      width: 100%;

      max-width: 760px;

      margin: 0 auto;

      padding: 10px 12px 30px;

    }


    header {

      padding: 8px 4px 12px;

    }


    .brand {

      font-size: 25px;

      font-weight: 800;

      line-height: 1.1;

    }


    .subtitle {

      margin-top: 4px;

      font-size: 13px;

      color: #64748b;

    }


    .status {

      margin-top: 8px;

      padding: 8px 10px;

      border-radius: 10px;

      background: #e9eef5;

      font-size: 13px;

    }


    .player {

      background: white;

      border-radius: 18px;

      padding: 18px;

      box-shadow: 0 4px 18px rgba(0,0,0,.08);

      scroll-margin-top: 8px;

    }


    .counter {

      text-align: center;

      color: #64748b;

      font-size: 13px;

      margin-bottom: 12px;

    }


    .sentence {

      min-height: 145px;

      display: flex;

      align-items: center;

      justify-content: center;

      text-align: center;

      font-size: clamp(25px, 7vw, 42px);

      line-height: 1.2;

      font-weight: 700;

      padding: 15px 5px 25px;

    }


    .favorite {

      width: 100%;

      border: 0;

      background: transparent;

      font-size: 30px;

      padding: 5px;

      cursor: pointer;

    }


    .favorite.active {

      transform: scale(1.08);

    }


    .startButton {

      width: 100%;

      min-height: 64px;

      border: 0;

      border-radius: 15px;

      font-size: 21px;

      font-weight: 800;

      cursor: pointer;

      margin: 8px 0;

      background: #172033;

      color: white;

    }


    .startButton.pause {

      background: #b42318;

    }


    .controls {

      display: grid;

      grid-template-columns: repeat(2, 1fr);

      gap: 9px;

      margin-top: 12px;

    }


    button.control {

      min-height: 48px;

      border: 0;

      border-radius: 12px;

      background: #e8edf3;

      color: #172033;

      font-size: 15px;

      font-weight: 700;

      cursor: pointer;

      padding: 8px;

    }


    button.control:active,

    .startButton:active {

      transform: scale(.98);

    }


    .settings {

      margin-top: 14px;

      background: white;

      border-radius: 16px;

      padding: 15px;

      box-shadow: 0 3px 14px rgba(0,0,0,.06);

    }


    .settings h2 {

      margin: 0 0 12px;

      font-size: 18px;

    }


    .setting {

      margin-bottom: 13px;

    }


    label {

      display: block;

      font-size: 13px;

      font-weight: 700;

      margin-bottom: 5px;

      color: #475569;

    }


    select,

    input[type="number"] {

      width: 100%;

      min-height: 45px;

      border: 1px solid #cbd5e1;

      border-radius: 10px;

      padding: 8px 10px;

      font-size: 16px;

      background: white;

    }


    .stats {

      display: grid;

      grid-template-columns: repeat(3, 1fr);

      gap: 8px;

      margin-top: 14px;

    }


    .stat {

      background: white;

      border-radius: 12px;

      padding: 11px 6px;

      text-align: center;

      box-shadow: 0 2px 9px rgba(0,0,0,.05);

    }


    .statValue {

      font-size: 21px;

      font-weight: 800;

    }


    .statLabel {

      font-size: 11px;

      color: #64748b;

      margin-top: 2px;

    }


    .favoritesList {

      margin-top: 14px;

      background: white;

      border-radius: 16px;

      padding: 15px;

    }


    .favoritesList h2 {

      margin: 0 0 10px;

      font-size: 18px;

    }


    .favoriteItem {

      border-bottom: 1px solid #e2e8f0;

      padding: 10px 0;

      cursor: pointer;

    }


    .favoriteItem:last-child {

      border-bottom: 0;

    }


    .favoriteId {

      font-size: 11px;

      color: #64748b;

      margin-bottom: 3px;

    }


    .favoriteText {

      font-size: 14px;

      line-height: 1.35;

    }


    .empty {

      color: #64748b;

      font-size: 14px;

      padding: 5px 0;

    }


    .footer {

      text-align: center;

      margin-top: 20px;

      font-size: 12px;

      color: #94a3b8;

    }


    @media (min-width: 600px) {

      .app {

        padding-top: 18px;

      }


      .sentence {

        min-height: 190px;

      }

    }

  </style>

</head>


<body>


<div class="app">


  <header>

    <div class="brand">GTKTP</div>

    <div class="subtitle">

      Together we make life easier · Zinnenplayer

    </div>


    <div id="status" class="status">

      Laden...

    </div>

  </header>


  <!-- START / PAUZE BOVEN -->

  <button

    id="startTop"

    class="startButton"

    onclick="togglePlayer()">

    ▶ Start

  </button>


  <section id="player" class="player">


    <div id="counter" class="counter">

      0 / 0

    </div>


    <div id="sentence" class="sentence">

      Zinnen worden geladen...

    </div>


    <button

      id="favoriteButton"

      class="favorite"

      onclick="toggleFavorite()"

      aria-label="Favoriet">

      ☆

    </button>


  </section>


  <!-- START / PAUZE ONDER -->

  <button

    id="startBottom"

    class="startButton"

    onclick="togglePlayer()">

    ▶ Start

  </button>


  <!-- BEDIENING -->

  <div class="controls">


    <button class="control" onclick="previousSentence()">

      ◀ Vorige

    </button>


    <button class="control" onclick="nextSentence()">

      Volgende ▶

    </button>


    <button class="control" onclick="showRandomSentence()">

      🔀 Random

    </button>


    <button class="control" onclick="showFavorites()">

      ★ Favorieten

    </button>


    <button class="control" onclick="exportJSON()">

      📤 Export JSON

    </button>


    <button class="control" onclick="document.getElementById('jsonFile').click()">

      📥 Import JSON

    </button>


    <input

      id="jsonFile"

      type="file"

      accept=".json,application/json"

      style="display:none"

      onchange="importJSON(event)">


  </div>


  <!-- INSTELLINGEN -->

  <section class="settings">


    <h2>Instellingen</h2>


    <div class="setting">

      <label for="playMode">Afspelen</label>


      <select id="playMode" onchange="changeMode()">

        <option value="all">Alle zinnen</option>

        <option value="random">Random</option>

        <option value="favorites">Alleen favorieten</option>

      </select>

    </div>


    <div class="setting">

      <label for="repeatCount">Herhalen per zin</label>


      <input

        id="repeatCount"

        type="number"

        min="1"

        max="100"

        value="1"

        onchange="changeRepeat()">

    </div>


  </section>


  <!-- STATISTIEKEN -->

  <section class="stats">


    <div class="stat">

      <div id="totalCount" class="statValue">0</div>

      <div class="statLabel">Zinnen</div>

    </div>


    <div class="stat">

      <div id="favoriteCount" class="statValue">0</div>

      <div class="statLabel">Favorieten</div>

    </div>


    <div class="stat">

      <div id="playedCount" class="statValue">0</div>

      <div class="statLabel">Gespeeld</div>

    </div>


  </section>


  <!-- FAVORIETEN -->

  <section class="favoritesList">


    <h2>Mijn favorieten</h2>


    <div id="favoritesContainer">

      <div class="empty">

        Nog geen favorieten.

      </div>

    </div>


  </section>


  <div class="footer">

    GTKTP · We keep it simple.

  </div>


</div>



<script>


  let sentences = [];


  let currentIndex = 0;


  let playing = false;


  let timer = null;


  let repeatCount = 1;


  let currentRepeat = 0;


  let mode = "all";


  let favorites = new Set();


  let playedCount = 0;



  /*

   * ---------------------------------------------------------

   * START

   * ---------------------------------------------------------

   */


  window.addEventListener("load", function() {


    loadLocalSettings();


    loadSentences();


  });



  /*

   * ---------------------------------------------------------

   * ZINNEN LADEN

   * ---------------------------------------------------------

   */


  function loadSentences() {


    setStatus("Zinnen laden...");


    if (

      typeof google !== "undefined" &&

      google.script &&

      google.script.run

    ) {


      google.script.run

        .withSuccessHandler(function(data) {


          if (!data) {

            setStatus("Geen zinnen ontvangen.");

            return;

          }


          if (typeof data === "string") {


            try {

              data = JSON.parse(data);

            } catch (e) {

              console.error(e);

            }


          }


          if (Array.isArray(data)) {


            sentences = normalizeSentences(data);


          } else if (data.sentences) {


            sentences = normalizeSentences(data.sentences);


          }


          finishLoading();


        })

        .withFailureHandler(function(error) {


          console.error(error);


          setStatus(

            "Zinnen konden niet worden geladen."

          );


        })

        .getSentences();


    } else {


      setStatus(

        "Deze HTML is niet gekoppeld aan Apps Script."

      );


    }


  }



  /*

   * ---------------------------------------------------------

   * NORMALISEREN

   * ---------------------------------------------------------

   */


  function normalizeSentences(data) {


    return data

      .map(function(item, index) {


        if (typeof item === "string") {


          return {

            id: index + 1,

            text: item

          };


        }


        return {

          id:

            item.id ??

            item.ID ??

            index + 1,


          text:

            item.text ??

            item.zin ??

            item.Zin ??

            item.sentence ??

            ""

        };


      })

      .filter(function(item) {


        return String(item.text).trim() !== "";


      });


  }



  /*

   * ---------------------------------------------------------

   * KLAAR

   * ---------------------------------------------------------

   */


  function finishLoading() {


    if (!sentences.length) {


      setStatus(

        "Geen zinnen gevonden."

      );


      return;

    }


    document.getElementById(

      "totalCount"

    ).textContent = sentences.length;


    updateFavoriteCount();


    updateFavoriteList();


    showCurrentSentence();


    setStatus(

      sentences.length +

      " zinnen geladen."

    );


  }



  /*

   * ---------------------------------------------------------

   * DISPLAY

   * ---------------------------------------------------------

   */


  function showCurrentSentence() {


    if (!sentences.length) return;


    const item = sentences[currentIndex];


    document.getElementById(

      "sentence"

    ).textContent = item.text;


    document.getElementById(

      "counter"

    ).textContent =

      (currentIndex + 1) +

      " / " +

      sentences.length;


    updateFavoriteButton();


  }



  /*

   * ---------------------------------------------------------

   * FAVORIET

   * ---------------------------------------------------------

   */


  function toggleFavorite() {


    if (!sentences.length) return;


    const id = String(

      sentences[currentIndex].id

    );


    if (favorites.has(id)) {


      favorites.delete(id);


    } else {


      favorites.add(id);


    }


    saveLocalSettings();


    updateFavoriteButton();


    updateFavoriteCount();


    updateFavoriteList();


  }



  function updateFavoriteButton() {


    if (!sentences.length) return;


    const id = String(

      sentences[currentIndex].id

    );


    const button =

      document.getElementById(

        "favoriteButton"

      );


    if (favorites.has(id)) {


      button.textContent = "★";

      button.classList.add("active");


    } else {


      button.textContent = "☆";

      button.classList.remove("active");


    }


  }



  function updateFavoriteCount() {


    document.getElementById(

      "favoriteCount"

    ).textContent = favorites.size;


  }



  /*

   * ---------------------------------------------------------

   * FAVORIETEN LIJST

   * ---------------------------------------------------------

   */


  function updateFavoriteList() {


    const container =

      document.getElementById(

        "favoritesContainer"

      );


    if (!favorites.size) {


      container.innerHTML =

        '<div class="empty">Nog geen favorieten.</div>';


      return;


    }


    let html = "";


    sentences.forEach(function(item, index) {


      if (!favorites.has(String(item.id))) {

        return;

      }


      html +=

        '<div class="favoriteItem" onclick="openFavorite(' +

        index +

        ')">' +


        '<div class="favoriteId">' +

        "ID " +

        item.id +

        "</div>" +


        '<div class="favoriteText">' +

        escapeHTML(item.text) +

        "</div>" +


        "</div>";


    });


    container.innerHTML = html;


  }



  function openFavorite(index) {


    currentIndex = index;


    showCurrentSentence();


    scrollToPlayer();


  }



  /*

   * ---------------------------------------------------------

   * VOLGENDE / VORIGE

   * ---------------------------------------------------------

   */


  function nextSentence() {


    if (!sentences.length) return;


    const list = getPlaybackList();


    if (!list.length) {


      setStatus(

        "Er zijn geen zinnen beschikbaar in deze selectie."

      );


      pausePlayer();


      return;


    }


    let position =

      list.indexOf(currentIndex);


    if (position === -1) {

      position = 0;

    } else {

      position++;

    }


    if (position >= list.length) {


      position = 0;


    }


    currentIndex = list[position];


    currentRepeat = 0;


    playedCount++;


    document.getElementById(

      "playedCount"

    ).textContent = playedCount;


    showCurrentSentence();


    scrollToPlayer();


  }



  function previousSentence() {


    if (!sentences.length) return;


    const list = getPlaybackList();


    if (!list.length) return;


    let position =

      list.indexOf(currentIndex);


    if (position <= 0) {


      position = list.length - 1;


    } else {


      position--;


    }


    currentIndex = list[position];


    currentRepeat = 0;


    showCurrentSentence();


    scrollToPlayer();


  }



  /*

   * ---------------------------------------------------------

   * PLAYBACK

   * ---------------------------------------------------------

   */


  function getPlaybackList() {


    if (mode === "favorites") {


      return sentences

        .map(function(item, index) {


          return favorites.has(

            String(item.id)

          )

            ? index

            : null;


        })

        .filter(function(index) {


          return index !== null;


        });


    }


    return sentences.map(function(item, index) {


      return index;


    });


  }



  function togglePlayer() {


    if (playing) {


      pausePlayer();


    } else {


      startPlayer();


    }


  }



  function startPlayer() {


    if (!sentences.length) {


      setStatus(

        "Er zijn nog geen zinnen geladen."

      );


      return;


    }


    if (

      mode === "favorites" &&

      favorites.size === 0

    ) {


      setStatus(

        "Voeg eerst favorieten toe."

      );


      return;


    }


    playing = true;


    updateStartButtons();


    setStatus(

      "Afspelen actief."

    );


    playCurrent();


  }



  function pausePlayer() {


    playing = false;


    if (timer) {


      clearTimeout(timer);

      timer = null;


    }


    updateStartButtons();


    setStatus(

      "Gepauzeerd. Instellingen kunnen nu worden gewijzigd."

    );


  }



  function playCurrent() {


    if (!playing) return;


    showCurrentSentence();


    speakCurrent();


  }



  /*

   * ---------------------------------------------------------

   * SPRAAK

   * ---------------------------------------------------------

   */


  function speakCurrent() {


    if (!("speechSynthesis" in window)) {


      setStatus(

        "Tekst-naar-spraak wordt niet ondersteund."

      );


      return;


    }


    window.speechSynthesis.cancel();


    const item = sentences[currentIndex];


    const utterance =

      new SpeechSynthesisUtterance(

        item.text

      );


    utterance.lang = "nl-NL";


    utterance.rate = 0.9;


    utterance.onend = function() {


      if (!playing) return;


      currentRepeat++;


      if (currentRepeat < repeatCount) {


        timer = setTimeout(

          playCurrent,

          500

        );


      } else {


        currentRepeat = 0;


        timer = setTimeout(

          nextSentenceAndPlay,

          700

        );


      }


    };


    window.speechSynthesis.speak(

      utterance

    );


  }



  function nextSentenceAndPlay() {


    if (!playing) return;


    nextSentence();


    playCurrent();


  }



  /*

   * ---------------------------------------------------------

   * RANDOM

   * ---------------------------------------------------------

   */


  function showRandomSentence() {


    if (!sentences.length) return;


    const list = getPlaybackList();


    if (!list.length) {


      setStatus(

        "Geen zinnen in deze selectie."

      );


      return;


    }


    const randomPosition =

      Math.floor(

        Math.random() * list.length

      );


    currentIndex =

      list[randomPosition];


    currentRepeat = 0;


    showCurrentSentence();


    scrollToPlayer();


  }



  /*

   * ---------------------------------------------------------

   * FAVORIETEN MODE

   * ---------------------------------------------------------

   */


  function showFavorites() {


    mode = "favorites";


    document.getElementById(

      "playMode"

    ).value = "favorites";


    saveLocalSettings();


    if (!favorites.size) {


      setStatus(

        "Nog geen favorieten."

      );


      return;


    }


    const list = getPlaybackList();


    currentIndex = list[0];


    showCurrentSentence();


    setStatus(

      favorites.size +

      " favorieten geselecteerd."

    );


    scrollToPlayer();


  }



  /*

   * ---------------------------------------------------------

   * INSTELLINGEN

   * ---------------------------------------------------------

 */


  function changeMode() {


    mode =

      document.getElementById(

        "playMode"

      ).value;


    saveLocalSettings();


    if (

      mode === "favorites" &&

      favorites.size === 0

    ) {


      setStatus(

        "Favorietenmodus gekozen, maar er zijn nog geen favorieten."

      );


      return;


    }


    setStatus(

      "Modus: " +

      document.getElementById(

        "playMode"

      ).selectedOptions[0].text

    );


  }



  function changeRepeat() {


    let value =

      parseInt(

        document.getElementById(

          "repeatCount"

        ).value,

        10

      );


    if (!Number.isFinite(value)) {

      value = 1;

    }


    value =

      Math.max(

        1,

        Math.min(

          100,

          value

        )

      );


    repeatCount = value;


    document.getElementById(

      "repeatCount"

    ).value = value;


    saveLocalSettings();


  }



  /*

   * ---------------------------------------------------------

   * START BUTTONS

   * ---------------------------------------------------------

   */


  function updateStartButtons() {


    const buttons = [

      document.getElementById("startTop"),

      document.getElementById("startBottom")

    ];


    buttons.forEach(function(button) {


      if (playing) {


        button.textContent =

          "⏸ Pauze";


        button.classList.add("pause");


      } else {


        button.textContent =

          "▶ Start";


        button.classList.remove("pause");


      }


    });


  }



  /*

   * ---------------------------------------------------------

   * LOCAL OPSLAG

   * ---------------------------------------------------------

   */


  function saveLocalSettings() {


    const data = {


      version: "GTKTP-MOBILE-1.0",


      favorites:

        Array.from(favorites),


      mode: mode,


      repeatCount: repeatCount


    };


    localStorage.setItem(

      "GTKTP_MOBILE_SETTINGS",

      JSON.stringify(data)

    );


  }



  function loadLocalSettings() {


    const raw =

      localStorage.getItem(

        "GTKTP_MOBILE_SETTINGS"

      );


    if (!raw) return;


    try {


      const data =

        JSON.parse(raw);


      if (Array.isArray(data.favorites)) {


        favorites =

          new Set(

            data.favorites.map(String)

          );


      }


      if (data.mode) {


        mode = data.mode;


        const select =

          document.getElementById(

            "playMode"

          );


        if (select) {

          select.value = mode;

        }


      }


      if (

        data.repeatCount &&

        Number.isFinite(

          Number(data.repeatCount)

        )

      ) {


        repeatCount =

          Math.max(

            1,

            Math.min(

              100,

              Number(data.repeatCount)

            )

          );


        document.getElementById(

          "repeatCount"

        ).value =

          repeatCount;


      }


    } catch (error) {


      console.error(

        "Instellingen konden niet worden geladen.",

        error

      );


    }


  }



  /*

   * ---------------------------------------------------------

   * JSON EXPORT

   * ---------------------------------------------------------

   */


  function exportJSON() {


    const data = {


      gtkp: "GTKTP",


      version: "1.0",


      exported:

        new Date().toISOString(),


      settings: {


        mode: mode,


        repeatCount: repeatCount


      },


      favorites:

        Array.from(favorites),


      favoriteSentences:

        sentences

          .filter(function(item) {


            return favorites.has(

              String(item.id)

            );


          })

          .map(function(item) {


            return {


              id: item.id,


              zin: item.text


            };


          })


    };


    const blob =

      new Blob(

        [

          JSON.stringify(

            data,

            null,

            2

          )

        ],

        {

          type: "application/json"

        }

      );


    const url =

      URL.createObjectURL(blob);


    const a =

      document.createElement("a");


    a.href = url;


    a.download =

      "GTKTP-favorieten-" +

      dateForFilename() +

      ".json";


    document.body.appendChild(a);


    a.click();


    a.remove();


    URL.revokeObjectURL(url);


    setStatus(

      favorites.size +

      " favorieten geëxporteerd."

    );


  }



  /*

   * ---------------------------------------------------------

   * JSON IMPORT

   * ---------------------------------------------------------

   */


  function importJSON(event) {


    const file =

      event.target.files[0];


    if (!file) return;


    const reader =

      new FileReader();


    reader.onload =

      function(e) {


        try {


          const data =

            JSON.parse(

              e.target.result

            );


          if (

            data.favorites &&

            Array.isArray(

              data.favorites

            )

          ) {


            favorites =

              new Set(

                data.favorites.map(String)

              );


          }


          if (

            data.settings &&

            data.settings.mode

          ) {


            mode =

              data.settings.mode;


            document.getElementById(

              "playMode"

            ).value =

              mode;


          }


          if (

            data.settings &&

            data.settings.repeatCount

          ) {


            repeatCount =

              Number(

                data.settings.repeatCount

              );


            document.getElementById(

              "repeatCount"

            ).value =

              repeatCount;


          }


          saveLocalSettings();


          updateFavoriteCount();


          updateFavoriteList();


          updateFavoriteButton();


          setStatus(

            favorites.size +

            " favorieten geïmporteerd."

          );


        } catch (error) {


          console.error(error);


          setStatus(

            "Ongeldig JSON-bestand."

          );


        }


      };


    reader.readAsText(file);


    event.target.value = "";


  }



  /*

   * ---------------------------------------------------------

   * HULPFUNCTIES

   * ---------------------------------------------------------

   */


  function scrollToPlayer() {


    document

      .getElementById("player")

      .scrollIntoView({

        behavior: "smooth",

        block: "start"

      });


  }



  function setStatus(text) {


    document.getElementById(

      "status"

    ).textContent = text;


  }



  function dateForFilename() {


    const d = new Date();


    return d

      .toISOString()

      .slice(0, 10);


  }



  function escapeHTML(text) {


    return String(text)

      .replace(/&/g, "&amp;")

      .replace(/</g, "&lt;")

      .replace(/>/g, "&gt;")

      .replace(/"/g, "&quot;")

      .replace(/'/g, "&#039;");


  }


</script>


</body>

</html>

Ja. Nu de ZINNEN-tab schoon is en de metadata naar ZINNEN_META is verplaatst, kunnen we de mobiele versie daarop bouwen zonder dat Notitie / Aangemaakt / Gewijzigd de zinnenplayer nog kan verstoren.

Ik zou de nieuwe mobiele versie zo opzetten:

  • 1000 zinnen uit ZINNEN

  • standaard iedere zin 1×

  • Pauze stopt de automatische cyclus

  • tijdens pauze zijn instellingen volledig bewerkbaar

  • Herhalen ×: bijvoorbeeld 2×, 3×, 5×, 10×

  • Random

  • Favorieten

  • Favorieten zijn volledig persoonlijk en modulair

  • Export JSON bevat instellingen + favorieten

  • Import JSON zet alles weer terug

  • favorieten blijven dus behouden bij een nieuwe sessie

  • grote Start / Pauze knop boven én onder

  • overige knoppen onder de player

  • mobiel-first ontwerp

  • de tekst begint direct bovenin

  • scherm scrollt automatisch naar de actuele zin

  • geen afhankelijkheid van ZINNEN_META voor het afspelen

Nieuwe mobiele index.html


Code.gs


const CONFIG = {

 SPREADSHEET_ID: '1kbVFtLb_zw7xwCdFPHzdwIU-bVNEbHNlJbXbQHGzhVg',

 SENTENCE_SHEET: 'Zinnen',

 SETTINGS_SHEET: 'Settings',

 FAVORITES_SHEET: 'Favorieten'

};


function doGet() {

 return HtmlService

   .createTemplateFromFile('Index')

   .evaluate()

   .setTitle('1000 Zinnen · Presentator')

   .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);

}


function include(filename) {

 return HtmlService.createHtmlOutputFromFile(filename).getContent();

}


function getSpreadsheet_() {

 return SpreadsheetApp.openById(CONFIG.SPREADSHEET_ID);

}


function setupSheets() {

 const ss = getSpreadsheet_();


 let sentenceSheet = ss.getSheetByName(CONFIG.SENTENCE_SHEET);


 if (!sentenceSheet) {

   sentenceSheet = ss.insertSheet(CONFIG.SENTENCE_SHEET);

 }


 if (sentenceSheet.getLastRow() === 0) {

   sentenceSheet.getRange(1, 1, 1, 7).setValues([[

     'ID',

     'Zin',

     'Actief',

     'Favoriet',

     'Notitie',

     'Aangemaakt',

     'Gewijzigd'

   ]]);

 }


 let settingsSheet = ss.getSheetByName(CONFIG.SETTINGS_SHEET);


 if (!settingsSheet) {

   settingsSheet = ss.insertSheet(CONFIG.SETTINGS_SHEET);


   settingsSheet.getRange(1, 1, 1, 3).setValues([[

     'Key',

     'Value',

     'Gewijzigd'

   ]]);

 }


 let favoritesSheet = ss.getSheetByName(CONFIG.FAVORITES_SHEET);


 if (!favoritesSheet) {

   favoritesSheet = ss.insertSheet(CONFIG.FAVORITES_SHEET);


   favoritesSheet.getRange(1, 1, 1, 6).setValues([[

     'ID',

     'Zin',

     'Notitie',

     'Toegevoegd',

     'Naam',

     'Telefoon'

   ]]);

 }


 return {

   ok: true,

   message: 'Sheets gecontroleerd en klaargezet.'

 };

}


function getSentences() {

 setupSheets();


 const sheet = getSpreadsheet_().getSheetByName(CONFIG.SENTENCE_SHEET);

 const lastRow = sheet.getLastRow();


 if (lastRow < 2) {

   return [];

 }


 const values = sheet.getRange(2, 1, lastRow - 1, 7).getValues();


 return values

   .map(function(row, index) {

     return {

       id: Number(row[0]) || index + 1,

       text: String(row[1] || '').trim(),

       active: row[2] !== false,

       favorite: row[3] === true,

       note: String(row[4] || ''),

       created: row[5] || '',

       modified: row[6] || ''

     };

   })

   .filter(function(item) {

     return item.text;

   });

}


function saveSentence(sentence) {

 setupSheets();


 const sheet = getSpreadsheet_().getSheetByName(CONFIG.SENTENCE_SHEET);

 const lastRow = sheet.getLastRow();


 if (!sentence.id) {

   sentence.id = lastRow;

 }


 const data = sheet.getRange(2, 1, Math.max(1, lastRow - 1), 7).getValues();


 let targetRow = -1;


 for (let i = 0; i < data.length; i++) {

   if (Number(data[i][0]) === Number(sentence.id)) {

     targetRow = i + 2;

     break;

   }

 }


 const now = new Date();


 if (targetRow === -1) {

   targetRow = sheet.getLastRow() + 1;


   sheet.getRange(targetRow, 1, 1, 7).setValues([[

     Number(sentence.id),

     sentence.text,

     sentence.active !== false,

     sentence.favorite === true,

     sentence.note || '',

     now,

     now

   ]]);

 } else {

   const existing = sheet.getRange(targetRow, 1, 1, 7).getValues()[0];


   sheet.getRange(targetRow, 1, 1, 7).setValues([[

     Number(sentence.id),

     sentence.text,

     sentence.active !== false,

     sentence.favorite === true,

     sentence.note || '',

     existing[5] || now,

     now

   ]]);

 }


 return {

   ok: true,

   sentence: sentence

 };

}


function updateSentenceText(id, text) {

 const sheet = getSpreadsheet_().getSheetByName(CONFIG.SENTENCE_SHEET);


 if (!sheet) {

   setupSheets();

   return updateSentenceText(id, text);

 }


 const lastRow = sheet.getLastRow();


 if (lastRow < 2) {

   return false;

 }


 const ids = sheet.getRange(2, 1, lastRow - 1, 1).getValues();


 for (let i = 0; i < ids.length; i++) {

   if (Number(ids[i][0]) === Number(id)) {

     sheet.getRange(i + 2, 2).setValue(text);

     sheet.getRange(i + 2, 7).setValue(new Date());

     return true;

   }

 }


 return false;

}


function setFavorite(id, favorite) {

 const sheet = getSpreadsheet_().getSheetByName(CONFIG.SENTENCE_SHEET);


 if (!sheet) {

   setupSheets();

   return setFavorite(id, favorite);

 }


 const lastRow = sheet.getLastRow();


 if (lastRow < 2) {

   return false;

 }


 const ids = sheet.getRange(2, 1, lastRow - 1, 1).getValues();


 for (let i = 0; i < ids.length; i++) {

   if (Number(ids[i][0]) === Number(id)) {

     sheet.getRange(i + 2, 4).setValue(Boolean(favorite));

     sheet.getRange(i + 2, 7).setValue(new Date());


     syncFavorite_(id, favorite);


     return true;

   }

 }


 return false;

}


function syncFavorite_(id, favorite) {

 const ss = getSpreadsheet_();

 const source = ss.getSheetByName(CONFIG.SENTENCE_SHEET);

 const target = ss.getSheetByName(CONFIG.FAVORITES_SHEET);


 if (!target) {

   setupSheets();

   return syncFavorite_(id, favorite);

 }


 const sourceLast = source.getLastRow();


 if (sourceLast < 2) {

   return;

 }


 const values = source.getRange(2, 1, sourceLast - 1, 7).getValues();


 let sentence = null;


 for (let i = 0; i < values.length; i++) {

   if (Number(values[i][0]) === Number(id)) {

     sentence = values[i];

     break;

   }

 }


 if (!sentence) {

   return;

 }


 const targetLast = target.getLastRow();


 if (targetLast >= 2) {

   const favorites = target.getRange(2, 1, targetLast - 1, 6).getValues();


   for (let i = 0; i < favorites.length; i++) {

     if (Number(favorites[i][0]) === Number(id)) {

       if (!favorite) {

         target.deleteRow(i + 2);

       }


       return;

     }

   }

 }


 if (favorite) {

   target.appendRow([

     sentence[0],

     sentence[1],

     sentence[4],

     new Date(),

     '',

     ''

   ]);

 }

}


function getSettings() {

 setupSheets();


 const sheet = getSpreadsheet_().getSheetByName(CONFIG.SETTINGS_SHEET);

 const lastRow = sheet.getLastRow();


 const defaults = {

   name: '',

   phone: '',

   site: '',

   slogan: 'Accepteer nu wat is, verander op jouw manier wat kan.',

   note: '',

   speed: 650,

   repeats: 3,

   fontSize: 58,

   wordColor: '#ffffff',

   background: '#111827',

   animation: 'fade',

   fullscreen: false

 };


 if (lastRow < 2) {

   return defaults;

 }


 const values = sheet.getRange(2, 1, lastRow - 1, 2).getValues();


 values.forEach(function(row) {

   const key = String(row[0] || '');


   if (key) {

     defaults[key] = row[1];

   }

 });


 return defaults;

}


function saveSettings(settings) {

 setupSheets();


 const sheet = getSpreadsheet_().getSheetByName(CONFIG.SETTINGS_SHEET);


 const keys = Object.keys(settings);


 if (sheet.getLastRow() > 1) {

   sheet.getRange(

     2,

     1,

     sheet.getLastRow() - 1,

     3

   ).clearContent();

 }


 const rows = keys.map(function(key) {

   return [

     key,

     settings[key],

     new Date()

   ];

 });


 if (rows.length) {

   sheet.getRange(2, 1, rows.length, 3).setValues(rows);

 }


 return true;

}


function seedStructure() {

 setupSheets();


 const sheet = getSpreadsheet_().getSheetByName(CONFIG.SENTENCE_SHEET);

 const lastRow = sheet.getLastRow();


 if (lastRow < 2) {

   return {

     ok: false,

     count: 0,

     message: 'De sheet Zinnen is nog leeg. Plak de 1000 zinnen in kolom B en voer daarna normalizeSentences() uit.'

   };

 }


 return normalizeSentences();

}


function normalizeSentences() {

 setupSheets();


 const sheet = getSpreadsheet_().getSheetByName(CONFIG.SENTENCE_SHEET);

 const lastRow = sheet.getLastRow();


 if (lastRow < 2) {

   return {

     ok: false,

     count: 0,

     message: 'Geen zinnen gevonden.'

   };

 }


 const values = sheet.getRange(2, 1, lastRow - 1, 7).getValues();


 const output = [];


 values.forEach(function(row, index) {

   const text = String(row[1] || '').trim();


   if (!text) {

     return;

   }


   output.push([

     index + 1,

     text,

     row[2] === false ? false : true,

     row[3] === true,

     row[4] || '',

     row[5] || new Date(),

     new Date()

   ]);

 });


 if (output.length) {

   sheet.getRange(2, 1, output.length, 7).setValues(output);

 }


 if (output.length >= 1000) {

   sheet.getRange(1001, 2).setValue(

     'Accepteer nu wat is, verander op jouw manier wat kan.'

   );

 }


 return {

   ok: true,

   count: output.length,

   message: output.length + ' zinnen verwerkt.'

 };

}


function importSentencesFromText(text) {

 setupSheets();


 const sheet = getSpreadsheet_().getSheetByName(CONFIG.SENTENCE_SHEET);


 const lines = String(text || '')

   .split(/\r?\n/)

   .map(function(line) {

     return line.trim();

   })

   .filter(function(line) {

     return line;

   });


 if (!lines.length) {

   return {

     ok: false,

     count: 0

   };

 }


 const rows = lines.map(function(line, index) {

   return [

     index + 1,

     line.replace(/^\d+[\.\)]\s*/, ''),

     true,

     false,

     '',

     new Date(),

     new Date()

   ];

 });


 sheet.clearContents();


 sheet.getRange(1, 1, 1, 7).setValues([[

   'ID',

   'Zin',

   'Actief',

   'Favoriet',

   'Notitie',

   'Aangemaakt',

   'Gewijzigd'

 ]]);


 sheet.getRange(2, 1, rows.length, 7).setValues(rows);


 if (rows.length >= 1000) {

   sheet.getRange(1001, 2).setValue(

     'Accepteer nu wat is, verander op jouw manier wat kan.'

   );

 }


 return {

   ok: true,

   count: rows.length

 };

}


function getFavorites() {

 const sheet = getSpreadsheet_().getSheetByName(CONFIG.FAVORITES_SHEET);


 if (!sheet || sheet.getLastRow() < 2) {

   return [];

 }


 return sheet

   .getRange(2, 1, sheet.getLastRow() - 1, 6)

   .getValues()

   .map(function(row) {

     return {

       id: Number(row[0]),

       text: String(row[1] || ''),

       note: String(row[2] || ''),

       added: row[3] || '',

       name: String(row[4] || ''),

       phone: String(row[5] || '')

     };

   });

}


Index.html 

<!DOCTYPE html>

<html lang="nl">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width,initial-scale=1">


<title>1000 Zinnen · Presentator</title>


<style>

:root {

 --bg: #111827;

 --panel: #1f2937;

 --panel2: #273449;

 --text: #ffffff;

 --muted: #9ca3af;

 --accent: #facc15;

 --blue: #38bdf8;

 --green: #4ade80;

 --red: #fb7185;

}


* {

 box-sizing: border-box;

}


body {

 margin: 0;

 font-family: Arial, Helvetica, sans-serif;

 background: var(--bg);

 color: var(--text);

}


button,

input,

textarea,

select {

 font: inherit;

}


button {

 cursor: pointer;

}


.app {

 min-height: 100vh;

}


.topbar {

 position: sticky;

 top: 0;

 z-index: 20;

 display: flex;

 gap: 8px;

 align-items: center;

 justify-content: space-between;

 padding: 12px;

 background: #020617;

 border-bottom: 1px solid #334155;

}


.logo {

 font-size: 20px;

 font-weight: 800;

}


.logo span {

 color: var(--accent);

}


.controls {

 display: flex;

 gap: 7px;

 flex-wrap: wrap;

}


.btn {

 border: 0;

 border-radius: 9px;

 padding: 9px 13px;

 background: var(--panel2);

 color: white;

}


.btn:hover {

 filter: brightness(1.15);

}


.btn.primary {

 background: var(--accent);

 color: #111827;

 font-weight: 700;

}


.btn.blue {

 background: var(--blue);

 color: #082f49;

}


.btn.green {

 background: var(--green);

 color: #052e16;

}


.btn.red {

 background: var(--red);

 color: #4c0519;

}


.main {

 display: grid;

 grid-template-columns: minmax(240px, 310px) 1fr;

 min-height: calc(100vh - 61px);

}


.sidebar {

 padding: 15px;

 background: #0f172a;

 border-right: 1px solid #334155;

 overflow-y: auto;

}


.sidebar h3 {

 margin-top: 5px;

}


.sentence-list {

 display: flex;

 flex-direction: column;

 gap: 5px;

 max-height: 65vh;

 overflow-y: auto;

}


.sentence-item {

 display: flex;

 gap: 8px;

 padding: 8px;

 border-radius: 8px;

 background: #1e293b;

 cursor: pointer;

}


.sentence-item.active {

 background: #854d0e;

}


.sentence-number {

 min-width: 36px;

 color: var(--accent);

 font-weight: 700;

}


.stage {

 position: relative;

 display: flex;

 align-items: center;

 justify-content: center;

 min-height: calc(100vh - 61px);

 padding: 40px;

 overflow: hidden;

}


.presentation {

 width: 100%;

 max-width: 1200px;

 min-height: 55vh;

 display: flex;

 flex-direction: column;

 justify-content: center;

 align-items: center;

 text-align: center;

}


.meta {

 margin-bottom: 35px;

 color: var(--muted);

}


.word-stage {

 min-height: 220px;

 width: 100%;

 display: flex;

 flex-wrap: wrap;

 gap: 18px;

 justify-content: center;

 align-content: center;

 perspective: 1000px;

}


.word {

 display: inline-block;

 font-weight: 800;

 color: var(--word-color, #fff);

 font-size: var(--font-size, 58px);

 line-height: 1.1;

 transition: all .45s ease;

}


.word.fade {

 animation: fadeWord .55s ease both;

}


.word.slide-left {

 animation: slideLeft .55s ease both;

}


.word.slide-right {

 animation: slideRight .55s ease both;

}


.word.slide-up {

 animation: slideUp .55s ease both;

}


.word.zoom {

 animation: zoomWord .55s ease both;

}


@keyframes fadeWord {

 from {

   opacity: 0;

   transform: scale(.75);

 }

 to {

   opacity: 1;

   transform: scale(1);

 }

}


@keyframes slideLeft {

 from {

   opacity: 0;

   transform: translateX(-120px);

 }

 to {

   opacity: 1;

   transform: translateX(0);

 }

}


@keyframes slideRight {

 from {

   opacity: 0;

   transform: translateX(120px);

 }

 to {

   opacity: 1;

   transform: translateX(0);

 }

}


@keyframes slideUp {

 from {

   opacity: 0;

   transform: translateY(80px);

 }

 to {

   opacity: 1;

   transform: translateY(0);

 }

}


@keyframes zoomWord {

 from {

   opacity: 0;

   transform: scale(.1);

 }

 to {

   opacity: 1;

   transform: scale(1);

 }

}


.full-sentence {

 margin-top: 30px;

 font-size: 22px;

 color: var(--muted);

 opacity: .8;

}


.status {

 margin-top: 15px;

 color: var(--accent);

}


.editor {

 display: none;

 position: fixed;

 inset: 0;

 z-index: 100;

 background: rgba(2, 6, 23, .92);

 padding: 30px;

 overflow: auto;

}


.editor.open {

 display: block;

}


.editor-card {

 max-width: 800px;

 margin: 30px auto;

 padding: 25px;

 border-radius: 15px;

 background: var(--panel);

}


textarea,

input,

select {

 width: 100%;

 padding: 10px;

 border-radius: 8px;

 border: 1px solid #475569;

 background: #0f172a;

 color: white;

}


.field {

 margin-bottom: 14px;

}


.field label {

 display: block;

 margin-bottom: 5px;

 color: var(--muted);

}


.settings {

 display: none;

 position: fixed;

 inset: 0;

 z-index: 100;

 background: rgba(2, 6, 23, .94);

 padding: 25px;

 overflow: auto;

}


.settings.open {

 display: block;

}


.settings-card {

 max-width: 800px;

 margin: 20px auto;

 padding: 25px;

 background: var(--panel);

 border-radius: 15px;

}


.grid {

 display: grid;

 grid-template-columns: 1fr 1fr;

 gap: 12px;

}


.export-menu {

 display: none;

 position: absolute;

 right: 10px;

 top: 55px;

 width: 230px;

 padding: 8px;

 background: #020617;

 border: 1px solid #334155;

 border-radius: 10px;

 z-index: 50;

}


.export-menu.open {

 display: block;

}


.export-menu button {

 display: block;

 width: 100%;

 text-align: left;

 margin: 3px 0;

}


@media(max-width: 850px) {

 .main {

   grid-template-columns: 1fr;

 }


 .sidebar {

   border-right: 0;

   border-bottom: 1px solid #334155;

 }


 .sentence-list {

   max-height: 180px;

 }


 .stage {

   padding: 20px;

 }


 .grid {

   grid-template-columns: 1fr;

 }


 .word {

   font-size: 40px !important;

 }

}

</style>

</head>


<body>


<div class="app">


 <div class="topbar">


   <div class="logo">

     1000 <span>Zinnen</span>

   </div>


   <div class="controls">


     <button class="btn" onclick="previousSentence()">◀</button>


     <button class="btn primary" onclick="togglePresentation()" id="playBtn">

       ▶ Start

     </button>


     <button class="btn" onclick="nextSentence()">▶</button>


     <button class="btn" onclick="randomSentence()">🔀</button>


     <button class="btn" onclick="toggleFavorite()">⭐</button>


     <button class="btn" onclick="openEditor()">✏️</button>


     <button class="btn" onclick="openSettings()">⚙️</button>


     <button class="btn blue" onclick="shareWhatsApp()">📲 WhatsApp</button>


     <div style="position:relative">


       <button class="btn green" onclick="toggleExportMenu()">

         📤 Export

       </button>


       <div class="export-menu" id="exportMenu">


         <button class="btn" onclick="exportTXT()">TXT</button>

         <button class="btn" onclick="exportJSON()">JSON</button>

         <button class="btn" onclick="exportCSV()">CSV / XLS</button>

         <button class="btn" onclick="exportDOC()">DOC</button>

         <button class="btn" onclick="exportPNG()">PNG</button>

         <button class="btn" onclick="exportJPG()">JPG</button>

         <button class="btn" onclick="exportPDF()">PDF</button>


       </div>


     </div>


   </div>


 </div>


 <div class="main">


   <aside class="sidebar">


     <h3>Zinnen</h3>


     <input

       id="searchInput"

       placeholder="Zoek in 1000 zinnen..."

       oninput="renderSentenceList()"

     >


     <br>


     <select id="filterSelect" onchange="renderSentenceList()">


       <option value="all">Alle zinnen</option>

       <option value="favorites">Favorieten</option>


     </select>


     <br><br>


     <div class="sentence-list" id="sentenceList"></div>


   </aside>


   <main class="stage" id="stage">


     <div class="presentation">


       <div class="meta" id="meta">

         Zin 1 / 1000 · Herhaling 1 / 3

       </div>


       <div

         class="word-stage"

         id="wordStage"

       ></div>


       <div

         class="full-sentence"

         id="fullSentence"

       ></div>


       <div

         class="status"

         id="status"

       ></div>


     </div>


   </main>


 </div>


</div>



<div class="editor" id="editor">


 <div class="editor-card">


   <h2>Zin bewerken</h2>


   <div class="field">


     <label>Zin</label>


     <textarea

       id="editText"

       rows="5"

     ></textarea>


   </div>


   <div class="field">


     <label>Notitie</label>


     <textarea

       id="editNote"

       rows="4"

     ></textarea>


   </div>


   <button

     class="btn green"

     onclick="saveEditedSentence()"

   >

     💾 Opslaan

   </button>


   <button

     class="btn"

     onclick="closeEditor()"

   >

     Sluiten

   </button>


 </div>


</div>



<div class="settings" id="settings">


 <div class="settings-card">


   <h2>Instellingen</h2>


   <div class="grid">


     <div class="field">

       <label>Naam</label>

       <input id="settingName">

     </div>


     <div class="field">

       <label>Telefoonnummer</label>

       <input id="settingPhone">

     </div>


     <div class="field">

       <label>Sitelink</label>

       <input id="settingSite">

     </div>


     <div class="field">

       <label>Slogan</label>

       <input id="settingSlogan">

     </div>


     <div class="field">

       <label>Presentatienotitie</label>

       <textarea id="settingNote"></textarea>

     </div>


     <div class="field">

       <label>Woordtempo in milliseconden</label>

       <input

         id="settingSpeed"

         type="number"

         min="100"

         max="5000"

       >

     </div>


     <div class="field">

       <label>Aantal herhalingen</label>

       <input

         id="settingRepeats"

         type="number"

         min="1"

         max="10"

       >

     </div>


     <div class="field">

       <label>Lettergrootte</label>

       <input

         id="settingFontSize"

         type="number"

         min="18"

         max="160"

       >

     </div>


     <div class="field">

       <label>Woordkleur</label>

       <input

         id="settingWordColor"

         type="color"

       >

     </div>


     <div class="field">

       <label>Achtergrond</label>

       <input

         id="settingBackground"

         type="color"

       >

     </div>


     <div class="field">

       <label>Animatie</label>


       <select id="settingAnimation">


         <option value="fade">Fade</option>

         <option value="slide-left">Slide links</option>

         <option value="slide-right">Slide rechts</option>

         <option value="slide-up">Slide omhoog</option>

         <option value="zoom">Zoom</option>


       </select>


     </div>


   </div>


   <br>


   <button

     class="btn green"

     onclick="saveSettings()"

   >

     💾 Instellingen opslaan

   </button>


   <button

     class="btn"

     onclick="closeSettings()"

   >

     Sluiten

   </button>


 </div>


</div>



<script>


let sentences = [];

let currentIndex = 0;


let playing = false;

let repeatNumber = 1;

let wordTimer = null;

let nextSentenceTimer = null;


let settings = {

 name: '',

 phone: '',

 site: '',

 slogan: 'Accepteer nu wat is, verander op jouw manier wat kan.',

 note: '',

 speed: 650,

 repeats: 3,

 fontSize: 58,

 wordColor: '#ffffff',

 background: '#111827',

 animation: 'fade'

};


function loadApp() {


 google.script.run

   .withSuccessHandler(function(data) {


     sentences = data || [];


     if (!sentences.length) {


       document.getElementById('status').textContent =

         'Geen zinnen gevonden. Voer eerst setup/seed uit in Apps Script.';


       return;

     }


     renderSentenceList();

     showSentence();


   })

   .getSentences();


 google.script.run

   .withSuccessHandler(function(data) {


     if (data) {

       settings = Object.assign(settings, data);

     }


     applySettings();

     fillSettings();


   })

   .getSettings();


}


function applySettings() {


 document.documentElement.style

   .setProperty('--font-size', settings.fontSize + 'px');


 document.documentElement.style

   .setProperty('--word-color', settings.wordColor);


 document.documentElement.style

   .setProperty('--bg', settings.background);


 document.body.style.background = settings.background;


}


function renderSentenceList() {


 const list = document.getElementById('sentenceList');


 const search = document.getElementById('searchInput')

   .value

   .toLowerCase();


 const filter = document.getElementById('filterSelect').value;


 list.innerHTML = '';


 sentences.forEach(function(sentence, index) {


   if (

     search &&

     !sentence.text.toLowerCase().includes(search)

   ) {

     return;

   }


   if (

     filter === 'favorites' &&

     !sentence.favorite

   ) {

     return;

   }


   const div = document.createElement('div');


   div.className =

     'sentence-item' +

     (index === currentIndex ? ' active' : '');


   div.onclick = function() {

     stopPresentation();

     currentIndex = index;

     repeatNumber = 1;

     showSentence();

     renderSentenceList();

   };


   div.innerHTML =

     '<div class="sentence-number">' +

     sentence.id +

     '</div>' +

     '<div>' +

     escapeHtml(sentence.text) +

     '</div>';


   list.appendChild(div);


 });


}


function showSentence() {


 const sentence = sentences[currentIndex];


 if (!sentence) {

   return;

 }


 document.getElementById('meta').textContent =

   'Zin ' +

   sentence.id +

   ' / ' +

   sentences.length +

   ' · Herhaling ' +

   repeatNumber +

   ' / ' +

   settings.repeats;


 document.getElementById('fullSentence').textContent =

   sentence.text;


 document.getElementById('wordStage').innerHTML = '';


 document.getElementById('status').textContent =

   sentence.favorite ? '⭐ Favoriet' : '';


}


function startSentenceAnimation() {


 clearTimeout(wordTimer);

 clearTimeout(nextSentenceTimer);


 const sentence = sentences[currentIndex];


 if (!sentence) {

   return;

 }


 const words = sentence.text

   .split(/\s+/)

   .filter(Boolean);


 const stage = document.getElementById('wordStage');


 stage.innerHTML = '';


 let position = 0;


 function addWord() {


   if (position >= words.length) {


     nextSentenceTimer = setTimeout(

       finishSentenceCycle,

       Math.max(settings.speed * 1.4, 800)

     );


     return;

   }


   const span = document.createElement('span');


   span.className =

     'word ' +

     settings.animation;


   span.textContent = words[position];


   stage.appendChild(span);


   position++;


   wordTimer = setTimeout(

     addWord,

     Number(settings.speed) || 650

   );


 }


 addWord();


}


function finishSentenceCycle() {


 if (!playing) {

   return;

 }


 if (repeatNumber < Number(settings.repeats)) {


   repeatNumber++;


   showSentence();


   startSentenceAnimation();


   return;

 }


 if (currentIndex < sentences.length - 1) {


   currentIndex++;


 } else {


   currentIndex = 0;


 }


 repeatNumber = 1;


 renderSentenceList();


 showSentence();


 startSentenceAnimation();


}


function togglePresentation() {


 if (playing) {


   stopPresentation();


 } else {


   playing = true;


   document.getElementById('playBtn').textContent =

     '⏸ Pauze';


   startSentenceAnimation();


 }


}


function stopPresentation() {


 playing = false;


 clearTimeout(wordTimer);

 clearTimeout(nextSentenceTimer);


 document.getElementById('playBtn').textContent =

   '▶ Start';


}


function nextSentence() {


 stopPresentation();


 currentIndex++;


 if (currentIndex >= sentences.length) {

   currentIndex = 0;

 }


 repeatNumber = 1;


 renderSentenceList();

 showSentence();


}


function previousSentence() {


 stopPresentation();


 currentIndex--;


 if (currentIndex < 0) {

   currentIndex = sentences.length - 1;

 }


 repeatNumber = 1;


 renderSentenceList();

 showSentence();


}


function randomSentence() {


 stopPresentation();


 currentIndex =

   Math.floor(Math.random() * sentences.length);


 repeatNumber = 1;


 renderSentenceList();

 showSentence();


}


function toggleFavorite() {


 const sentence = sentences[currentIndex];


 if (!sentence) {

   return;

 }


 sentence.favorite = !sentence.favorite;


 google.script.run.setFavorite(

   sentence.id,

   sentence.favorite

 );


 renderSentenceList();

 showSentence();


}


function openEditor() {


 const sentence = sentences[currentIndex];


 if (!sentence) {

   return;

 }


 document.getElementById('editText').value =

   sentence.text;


 document.getElementById('editNote').value =

   sentence.note || '';


 document.getElementById('editor')

   .classList.add('open');


}


function closeEditor() {


 document.getElementById('editor')

   .classList.remove('open');


}


function saveEditedSentence() {


 const sentence = sentences[currentIndex];


 if (!sentence) {

   return;

 }


 sentence.text =

   document.getElementById('editText').value.trim();


 sentence.note =

   document.getElementById('editNote').value.trim();


 google.script.run

   .withSuccessHandler(function() {


     closeEditor();


     showSentence();

     renderSentenceList();


   })

   .saveSentence(sentence);


}


function openSettings() {


 fillSettings();


 document.getElementById('settings')

   .classList.add('open');


}


function closeSettings() {


 document.getElementById('settings')

   .classList.remove('open');


}


function fillSettings() {


 document.getElementById('settingName').value =

   settings.name || '';


 document.getElementById('settingPhone').value =

   settings.phone || '';


 document.getElementById('settingSite').value =

   settings.site || '';


 document.getElementById('settingSlogan').value =

   settings.slogan || '';


 document.getElementById('settingNote').value =

   settings.note || '';


 document.getElementById('settingSpeed').value =

   settings.speed || 650;


 document.getElementById('settingRepeats').value =

   settings.repeats || 3;


 document.getElementById('settingFontSize').value =

   settings.fontSize || 58;


 document.getElementById('settingWordColor').value =

   settings.wordColor || '#ffffff';


 document.getElementById('settingBackground').value =

   settings.background || '#111827';


 document.getElementById('settingAnimation').value =

   settings.animation || 'fade';


}


function saveSettings() {


 settings.name =

   document.getElementById('settingName').value;


 settings.phone =

   document.getElementById('settingPhone').value;


 settings.site =

   document.getElementById('settingSite').value;


 settings.slogan =

   document.getElementById('settingSlogan').value;


 settings.note =

   document.getElementById('settingNote').value;


 settings.speed =

   Number(document.getElementById('settingSpeed').value) || 650;


 settings.repeats =

   Number(document.getElementById('settingRepeats').value) || 3;


 settings.fontSize =

   Number(document.getElementById('settingFontSize').value) || 58;


 settings.wordColor =

   document.getElementById('settingWordColor').value;


 settings.background =

   document.getElementById('settingBackground').value;


 settings.animation =

   document.getElementById('settingAnimation').value;


 applySettings();


 google.script.run.saveSettings(settings);


 closeSettings();


}


function toggleExportMenu() {


 document.getElementById('exportMenu')

   .classList.toggle('open');


}


function buildExportText() {


 let output = '';


 output += settings.slogan + '\n\n';


 sentences.forEach(function(sentence) {


   output +=

     sentence.id +

     '. ' +

     sentence.text +

     '\n';


   if (sentence.note) {


     output +=

       'Notitie: ' +

       sentence.note +

       '\n';


   }


   output += '\n';


 });


 output += '\n';


 if (settings.name) {

   output += settings.name + '\n';

 }


 if (settings.phone) {

   output += settings.phone + '\n';

 }


 if (settings.site) {

   output += settings.site + '\n';

 }


 if (settings.note) {

   output += settings.note + '\n';

 }


 return output;


}


function downloadBlob(content, filename, type) {


 const blob =

   new Blob([content], {type: type});


 const url =

   URL.createObjectURL(blob);


 const a =

   document.createElement('a');


 a.href = url;

 a.download = filename;


 document.body.appendChild(a);


 a.click();


 a.remove();


 URL.revokeObjectURL(url);


}


function exportTXT() {


 downloadBlob(

   buildExportText(),

   '1000-zinnen.txt',

   'text/plain;charset=utf-8'

 );


}


function exportJSON() {


 const data = {


   version: '1.0',


   title: '1000 Zinnen',


   settings: settings,


   sentences: sentences


 };


 downloadBlob(

   JSON.stringify(data, null, 2),

   '1000-zinnen.json',

   'application/json'

 );


}


function exportCSV() {


 const rows = [

   ['ID', 'Zin', 'Favoriet', 'Notitie']

 ];


 sentences.forEach(function(sentence) {


   rows.push([

     sentence.id,

     sentence.text,

     sentence.favorite ? 'JA' : 'NEE',

     sentence.note || ''

   ]);


 });


 const csv = rows

   .map(function(row) {


     return row

       .map(function(value) {


         return '"' +

           String(value)

             .replace(/"/g, '""') +

           '"';


       })

       .join(';');


   })

   .join('\n');


 downloadBlob(

   '\ufeff' + csv,

   '1000-zinnen.xls.csv',

   'text/csv;charset=utf-8'

 );


}


function exportDOC() {


 const html =

   '<html><head><meta charset="utf-8"></head>' +

   '<body>' +

   '<h1>1000 Zinnen</h1>' +

   '<p>' +

   escapeHtml(settings.slogan) +

   '</p>' +

   '<ol>' +

   sentences.map(function(sentence) {


     return '<li>' +

       escapeHtml(sentence.text) +

       '</li>';


   }).join('') +

   '</ol>' +

   '</body></html>';


 downloadBlob(

   html,

   '1000-zinnen.doc',

   'application/msword'

 );


}


function exportPDF() {


 const oldTitle = document.title;


 document.title = '1000 Zinnen';


 window.print();


 setTimeout(function() {

   document.title = oldTitle;

 }, 1000);


}


function getCanvas() {


 const canvas =

   document.createElement('canvas');


 canvas.width = 1600;

 canvas.height = 900;


 const ctx =

   canvas.getContext('2d');


 ctx.fillStyle =

   settings.background;


 ctx.fillRect(

   0,

   0,

   canvas.width,

   canvas.height

 );


 ctx.fillStyle =

   settings.wordColor;


 ctx.textAlign = 'center';

 ctx.textBaseline = 'middle';


 ctx.font =

   'bold ' +

   Math.min(settings.fontSize, 110) +

   'px Arial';


 const sentence =

   sentences[currentIndex]?.text || '';


 wrapCanvasText(

   ctx,

   sentence,

   canvas.width / 2,

   canvas.height / 2,

   canvas.width - 200,

   settings.fontSize * 1.4

 );


 ctx.font =

   '28px Arial';


 ctx.fillStyle =

   '#9ca3af';


 ctx.fillText(

   'Zin ' +

   (currentIndex + 1) +

   ' / ' +

   sentences.length,

   canvas.width / 2,

   canvas.height - 70

 );


 return canvas;


}


function wrapCanvasText(

 ctx,

 text,

 x,

 y,

 maxWidth,

 lineHeight

) {


 const words =

   text.split(' ');


 const lines = [];


 let line = '';


 words.forEach(function(word) {


   const test =

     line ?

     line + ' ' + word :

     word;


   if (

     ctx.measureText(test).width >

     maxWidth &&

     line

   ) {


     lines.push(line);

     line = word;


   } else {


     line = test;


   }


 });


 if (line) {

   lines.push(line);

 }


 const startY =

   y -

   ((lines.length - 1) * lineHeight) / 2;


 lines.forEach(function(line, index) {


   ctx.fillText(

     line,

     x,

     startY + index * lineHeight

   );


 });


}


function exportPNG() {


 const canvas = getCanvas();


 canvas.toBlob(function(blob) {


   downloadBlob(

     blob,

     'zin-' + (currentIndex + 1) + '.png',

     'image/png'

   );


 }, 'image/png');


}


function exportJPG() {


 const canvas = getCanvas();


 canvas.toBlob(function(blob) {


   downloadBlob(

     blob,

     'zin-' + (currentIndex + 1) + '.jpg',

     'image/jpeg'

   );


 }, 'image/jpeg', .95);


}


function shareWhatsApp() {


 const sentence =

   sentences[currentIndex];


 if (!sentence) {

   return;

 }


 let text = '';


 text += sentence.text;


 if (settings.note) {

   text += '\n\n' + settings.note;

 }


 if (settings.slogan) {

   text += '\n\n' + settings.slogan;

 }


 if (settings.name) {

   text += '\n\n' + settings.name;

 }


 if (settings.phone) {

   text += '\n' + settings.phone;

 }


 if (settings.site) {

   text += '\n' + settings.site;

 }


 const url =

   'https://wa.me/?text=' +

   encodeURIComponent(text);


 window.open(

   url,

   '_blank'

 );


}


function escapeHtml(value) {


 return String(value || '')

   .replace(/&/g, '&amp;')

   .replace(/</g, '&lt;')

   .replace(/>/g, '&gt;')

   .replace(/"/g, '&quot;')

   .replace(/'/g, '&#039;');


}


document.addEventListener(

 'keydown',

 function(event) {


   if (

     event.code === 'Space' &&

     event.target.tagName !== 'INPUT' &&

     event.target.tagName !== 'TEXTAREA'

   ) {


     event.preventDefault();


     togglePresentation();


   }


   if (event.key === 'ArrowRight') {

     nextSentence();

   }


   if (event.key === 'ArrowLeft') {

     previousSentence();

   }


   if (event.key === 'Escape') {


     closeEditor();

     closeSettings();


   }


 }

);


loadApp();


</script>


</body>

</html>


Zin → woord voor woord → volledige zin → maximaal 3 herhalingen → volgende zin

Daarnaast krijgt de gebruiker:

  • 🔢 keuze uit alle 1000 zinnen

  • ▶️ automatische presentatie

  • ⏮️ vorige / volgende

  • 🔀 willekeurige zin

  • ✏️ zin bewerken

  • ⭐ favoriet

  • 📝 eigen notitie

  • 👤 eigen naam

  • 📱 telefoonnummer

  • 🌐 sitelink

  • 💬 slogan

  • 📲 WhatsApp-delen

  • 📤 TXT / JSON / CSV

  • 🖼️ PNG / JPG

  • 📄 PDF via print/export

  • 📃 DOC

  • 📊 XLS-compatibele export

  • ⚙️ snelheid instellen

  • 🔁 aantal herhalingen instellen

  • 🎨 woordkleur instellen

  • 🔤 lettergrootte instellen

  • ✨ woordanimatie instellen

  • 🖥️ volledig scherm

  • 💾 instellingen en favorieten bewaren

  • ☁️ Google Sheet als centrale bron

Belangrijk: ik kan de Google Sheet zelf van


1–100

  1. Accepteer wat is, verander wat kan.

  2. Begin waar je bent, groei van daaruit.

  3. Zie wat er is, kies wat volgt.

  4. Laat los wat was, bouw aan wat komt.

  5. Doe wat kan, vertrouw op de rest.

  6. Ken je grens, verleg je horizon.

  7. Neem het moment, maak er iets van.

  8. Kies je richting, zet je eerste stap.

  9. Luister naar jezelf, handel met aandacht.

  10. Erken je gevoel, bepaal je reactie.

  11. Kijk vooruit, leer achteruit.

  12. Maak ruimte, ontdek wat past.

  13. Stop met wachten, begin met doen.

  14. Weet wat je wilt, bepaal wat nodig is.

  15. Zie het probleem, zoek de mogelijkheid.

  16. Houd vast aan waarden, laat verwachtingen los.

  17. Vraag wat helpt, doe wat werkt.

  18. Maak fouten, maak er lessen van.

  19. Blijf rustig, blijf bewegen.

  20. Denk groot, begin klein.

  21. Wees eerlijk, blijf vriendelijk.

  22. Ken je kracht, erken je kwetsbaarheid.

  23. Neem verantwoordelijkheid, laat schuld los.

  24. Kies bewust, leef gericht.

  25. Vertrouw het proces, stuur je stappen.

  26. Maak het eenvoudig, houd het vol.

  27. Wees aanwezig, wees betrokken.

  28. Geef aandacht, ontvang inzicht.

  29. Stel grenzen, behoud verbinding.

  30. Zoek balans, vermijd stilstand.

  31. Kijk naar mogelijkheden, niet alleen naar beperkingen.

  32. Begin opnieuw, begin wijzer.

  33. Laat twijfel bestaan, zet toch een stap.

  34. Neem tijd, verlies jezelf niet.

  35. Blijf leren, blijf nieuwsgierig.

  36. Vraag door, oordeel minder.

  37. Spreek duidelijk, luister echt.

  38. Wees geduldig, blijf doelgericht.

  39. Erken verlies, waardeer wat blijft.

  40. Kies eenvoud, verminder ruis.

  41. Maak plannen, blijf flexibel.

  42. Zie verschil, zoek verbinding.

  43. Durf te kiezen, durf te veranderen.

  44. Houd koers, pas tempo aan.

  45. Bescherm je energie, richt je aandacht.

  46. Geef ruimte, neem verantwoordelijkheid.

  47. Wees zacht, blijf sterk.

  48. Ken je waarom, bepaal je hoe.

  49. Kijk rustig, handel duidelijk.

  50. Vertrouw jezelf, controleer je keuzes.

  51. Zoek geen perfectie, zoek vooruitgang.

  52. Maak tijd, geef aandacht.

  53. Wees nieuwsgierig, blijf open.

  54. Ervaar het moment, leer ervan.

  55. Laat verwachtingen los, houd je waarden vast.

  56. Zie de mens, niet alleen het gedrag.

  57. Vraag eerst, oordeel later.

  58. Luister langer, reageer rustiger.

  59. Kies je woorden, bepaal je toon.

  60. Wees duidelijk, blijf menselijk.

  61. Geef vertrouwen, bouw verantwoordelijkheid.

  62. Deel kennis, vergroot mogelijkheden.

  63. Help waar nodig, laat ruimte waar mogelijk.

  64. Geef richting, bied vrijheid.

  65. Maak contact, creëer vertrouwen.

  66. Wees betrouwbaar, blijf flexibel.

  67. Houd het eerlijk, houd het eenvoudig.

  68. Zoek waarheid, vermijd aannames.

  69. Kijk opnieuw, ontdek meer.

  70. Neem afstand, krijg overzicht.

  71. Kom dichterbij, begrijp beter.

  72. Vertraag bewust, versnel gericht.

  73. Stop even, kijk opnieuw.

  74. Adem rustig, denk helder.

  75. Voel wat speelt, kies wat helpt.

  76. Erken spanning, zoek ontspanning.

  77. Neem rust, hervind richting.

  78. Zorg goed, blijf groeien.

  79. Geef jezelf ruimte, geef anderen ruimte.

  80. Laat controle los, behoud invloed.

  81. Ken het verschil, kies verstandig.

  82. Doe minder, bereik meer.

  83. Maak keuzes, voorkom chaos.

  84. Orden je gedachten, vereenvoudig je acties.

  85. Begin vandaag, wacht niet op morgen.

  86. Maak het concreet, maak het haalbaar.

  87. Kies één stap, zet die goed.

  88. Vier vooruitgang, leer van terugval.

  89. Zie wat lukt, verbeter wat kan.

  90. Blijf proberen, blijf aanpassen.

  91. Houd hoop, blijf realistisch.

  92. Droom vrij, plan verstandig.

  93. Denk helder, voel eerlijk.

  94. Kies moed, laat angst meedenken.

  95. Erken angst, geef haar geen stuur.

  96. Neem risico, ken je grens.

  97. Durf te vragen, durf te luisteren.

  98. Geef feedback, ontvang feedback.

  99. Corrigeer koers, behoud je doel.

  100. Blijf jezelf, blijf ontwikkelen.

101–200

  1. Kies rust, verminder haast.

  2. Maak overzicht, creëer ruimte.

  3. Begin met één ding, eindig met aandacht.

  4. Ruim op wat stoort, behoud wat waarde heeft.

  5. Bewaar wat helpt, laat weg wat belast.

  6. Kijk naar binnen, handel naar buiten.

  7. Ken je behoefte, communiceer duidelijk.

  8. Geef aan wat nodig is, luister naar wat mogelijk is.

  9. Respecteer jezelf, respecteer de ander.

  10. Wees trouw aan jezelf, blijf open voor groei.

  11. Laat gisteren leren, laat vandaag leven.

  12. Gebruik je ervaring, blijf nieuwsgierig.

  13. Maak vrede met vroeger, bouw aan later.

  14. Erken het verleden, kies het heden.

  15. Laat spijt spreken, maar niet sturen.

  16. Vergeef wat kan, begrens wat moet.

  17. Herstel waar mogelijk, accepteer waar nodig.

  18. Zoek geen schuldige, zoek een oplossing.

  19. Zie de oorzaak, verbeter het gevolg.

  20. Benoem het probleem, bepaal de volgende stap.

  21. Maak het bespreekbaar, maak het hanteerbaar.

  22. Spreek uit wat speelt, voorkom wat groeit.

  23. Wees eerlijk over wat lukt, wees eerlijk over wat niet lukt.

  24. Vraag om hulp, behoud je zelfstandigheid.

  25. Werk samen, blijf verantwoordelijk.

  26. Deel de last, versterk de kracht.

  27. Geef steun, ontvang steun.

  28. Bouw vertrouwen, stap voor stap.

  29. Houd woord, wees duidelijk.

  30. Zeg wat je doet, doe wat je zegt.

  31. Maak afspraken, houd ze eenvoudig.

  32. Leg uit wat nodig is, vraag wat mogelijk is.

  33. Geef verwachtingen, geef ook ruimte.

  34. Maak regels duidelijk, blijf menselijk.

  35. Ken de afspraak, begrijp de bedoeling.

  36. Volg de route, verbeter het systeem.

  37. Werk zorgvuldig, blijf praktisch.

  38. Denk vooruit, bereid rustig voor.

  39. Plan verstandig, blijf flexibel.

  40. Houd rekening, houd richting.

  41. Wees voorbereid, wees niet bang voor verandering.

  42. Verwacht verandering, bouw veerkracht.

  43. Accepteer onzekerheid, blijf handelen.

  44. Ken het risico, kies je reactie.

  45. Kijk naar feiten, erken gevoelens.

  46. Combineer kennis, ervaring en aandacht.

  47. Zoek balans, vermijd extremen.

  48. Maak onderscheid, voorkom verwarring.

  49. Vraag wat belangrijk is, laat bijzaken los.

  50. Kies prioriteiten, bescherm je tijd.

  51. Geef aandacht aan wat telt, laat ruis verdwijnen.

  52. Maak tijd voor mensen, maak ruimte voor jezelf.

  53. Zorg voor anderen, vergeet jezelf niet.

  54. Help een ander, behoud je eigen grens.

  55. Geef zonder jezelf te verliezen, ontvang zonder schuld.

  56. Wees gul met aandacht, zuinig met oordeel.

  57. Kijk met begrip, handel met grenzen.

  58. Toon medeleven, behoud duidelijkheid.

  59. Begrijp eerst, reageer daarna.

  60. Luister naar woorden, hoor ook de stilte.

  61. Kijk naar gedrag, vraag naar de reden.

  62. Zoek context, vermijd snelle conclusies.

  63. Stel vragen, vul minder in.

  64. Controleer aannames, ontdek feiten.

  65. Leer van verschil, groei door gesprek.

  66. Zoek overeenkomsten, respecteer verschillen.

  67. Blijf nieuwsgierig, blijf menselijk.

  68. Geef ruimte aan twijfel, zoek helderheid.

  69. Wees kritisch, blijf constructief.

  70. Vraag waarom, ontdek waarvoor.

  71. Ken het doel, kies het middel.

  72. Begin bij het probleem, eindig bij de oplossing.

  73. Kies wat werkt, laat los wat niet werkt.

  74. Test een idee, leer van het resultaat.

  75. Probeer iets nieuws, behoud wat goed is.

  76. Verbeter stap voor stap, bouw duurzaam.

  77. Maak vooruitgang zichtbaar, houd motivatie levend.

  78. Houd bij wat werkt, verander wat hapert.

  79. Meet wat belangrijk is, niet alles wat meetbaar is.

  80. Kijk naar resultaat, leer van het proces.

  81. Maak fouten zichtbaar, maak leren normaal.

  82. Erken een fout, herstel wat kan.

  83. Zeg sorry wanneer nodig, verander daarna.

  84. Neem verantwoordelijkheid, blijf niet hangen in schuld.

  85. Leer de les, laat de last los.

  86. Val je, sta op.

  87. Mis je een kans, zoek de volgende.

  88. Verlies je richting, kijk opnieuw.

  89. Loop vast, verander je aanpak.

  90. Lukt iets niet, onderzoek waarom.

  91. Zie weerstand, zoek de oorzaak.

  92. Voel frustratie, gebruik haar als signaal.

  93. Ervaar twijfel, verzamel informatie.

  94. Voel angst, zoek houvast.

  95. Voel verdriet, geef het ruimte.

  96. Voel vreugde, geniet ervan.

  97. Vier kleine stappen, bouw grote verandering.

  98. Waardeer wat goed gaat, verbeter wat beter kan.

  99. Kijk naar groei, niet alleen naar afstand.

  100. Blijf gaan, op jouw manier.

201–300

  1. Maak je dag bewust, laat hem niet zomaar gebeuren.

  2. Kies je ochtend, vorm je dag.

  3. Begin rustig, werk gericht.

  4. Plan je energie, niet alleen je tijd.

  5. Doe eerst wat telt, daarna wat kan wachten.

  6. Maak ruimte voor rust, bescherm je focus.

  7. Werk met aandacht, pauzeer bewust.

  8. Rond af wat kan, noteer wat blijft.

  9. Maak een lijst, kies een prioriteit.

  10. Houd het haalbaar, houd het vol.

  11. Maak klein wat groot voelt, maak concreet wat vaag blijft.

  12. Knip een probleem op, pak één deel.

  13. Zet één stap, kijk daarna verder.

  14. Begin met vijf minuten, ontdek wat volgt.

  15. Maak starten makkelijk, maak doorgaan logisch.

  16. Verminder drempels, vergroot beweging.

  17. Maak ruimte op papier, maak ruimte in je hoofd.

  18. Schrijf het op, laat het los.

  19. Benoem wat moet, kies wat mag.

  20. Orden je omgeving, orden je aandacht.

  21. Ruim één plek op, creëer één rustig punt.

  22. Behoud wat gebruikt wordt, laat weg wat niet dient.

  23. Koester wat waarde heeft, laat ballast gaan.

  24. Vraag wat betekenis heeft, niet alleen wat geld kost.

  25. Gebruik wat je hebt, koop alleen wat nodig is.

  26. Herstel wat kan, vervang wat moet.

  27. Deel wat over is, geef door wat helpt.

  28. Laat spullen gaan, houd herinneringen bij je.

  29. Bewaar herinneringen, niet per se de spullen.

  30. Maak ruimte voor morgen, door vandaag los te laten.

  31. Kies eenvoud, ontdek vrijheid.

  32. Minder bezit, meer ruimte.

  33. Minder ruis, meer aandacht.

  34. Minder haast, meer overzicht.

  35. Minder oordeel, meer begrip.

  36. Minder angst, meer nieuwsgierigheid.

  37. Minder uitstel, meer beweging.

  38. Minder moeten, meer bewust kiezen.

  39. Minder vergelijken, meer waarderen.

  40. Minder perfectie, meer progressie.

  41. Wees tevreden met genoeg, blijf open voor beter.

  42. Maak het goed, niet perfect.

  43. Kies kwaliteit, vermijd overdaad.

  44. Gebruik je tijd, bescherm je leven.

  45. Geef je aandacht, waar je hart ligt.

  46. Maak keuzes die passen, niet alleen keuzes die kunnen.

  47. Volg je waarden, niet alleen je gemak.

  48. Kies betekenis, niet alleen snelheid.

  49. Doe wat klopt, ook als niemand kijkt.

  50. Wees betrouwbaar, vooral voor jezelf.

  51. Houd je belofte, of bespreek waarom niet.

  52. Spreek je waarheid, zonder een ander kleiner te maken.

  53. Wees duidelijk zonder hard te worden.

  54. Wees vriendelijk zonder jezelf weg te cijferen.

  55. Wees sterk zonder onverschillig te worden.

  56. Wees zacht zonder je grens te verliezen.

  57. Kies moed zonder roekeloos te worden.

  58. Kies voorzichtigheid zonder stil te vallen.

  59. Neem ruimte zonder ruimte af te nemen.

  60. Geef ruimte zonder jezelf te verliezen.

  61. Vraag respect, geef respect.

  62. Zoek verbinding, behoud autonomie.

  63. Vertrouw anderen, controleer wat belangrijk is.

  64. Geef kansen, stel grenzen.

  65. Laat mensen groeien, laat jezelf ook groeien.

  66. Begeleid zonder over te nemen.

  67. Help zonder afhankelijk te maken.

  68. Leer samen, groei samen.

  69. Deel verantwoordelijkheid, behoud eigenaarschap.

  70. Geef feedback op gedrag, niet op waarde.

  71. Benoem het effect, niet alleen de fout.

  72. Vraag naar intentie, kijk naar resultaat.

  73. Erken goede bedoelingen, verbeter slechte gevolgen.

  74. Geef complimenten eerlijk, geef kritiek bruikbaar.

  75. Maak kritiek concreet, maak waardering persoonlijk.

  76. Zeg wat goed gaat, benoem wat beter kan.

  77. Corrigeer rustig, blijf betrokken.

  78. Geef richting, laat keuzevrijheid.

  79. Stel een vraag, open een deur.

  80. Geef een antwoord, nodig uit tot nadenken.

  81. Leer iemand iets, leer zelf mee.

  82. Leg eenvoudig uit, maak ruimte voor vragen.

  83. Maak ingewikkeld begrijpelijk, zonder het te versimpelen.

  84. Zoek de kern, laat bijzaken wachten.

  85. Benoem het doel, verduidelijk de route.

  86. Begin bij de mens, daarna bij de methode.

  87. Kijk naar behoefte, kies de aanpak.

  88. Observeer eerst, stuur daarna.

  89. Vraag wat iemand ziet, vraag wat iemand wil.

  90. Maak keuzes zichtbaar, maak gevolgen begrijpelijk.

  91. Leer door doen, verbeter door reflectie.

  92. Oefen bewust, herhaal met doel.

  93. Doe het opnieuw, maar niet hetzelfde.

  94. Herhaal wat werkt, verander wat niet werkt.

  95. Houd het simpel, maak het sterk.

  96. Geef structuur, behoud vrijheid.

  97. Maak regels dienend, niet leidend.

  98. Gebruik systemen, blijf menselijk.

  99. Laat technologie helpen, laat mensen beslissen.

  100. Maak processen eenvoudiger, maak resultaten beter.

301–400

  1. Denk eerst, handel daarna.

  2. Kijk eerst, kies daarna.

  3. Luister eerst, antwoord daarna.

  4. Vraag eerst, adviseer daarna.

  5. Begrijp eerst, verander daarna.

  6. Observeer eerst, beoordeel later.

  7. Adem eerst, reageer daarna.

  8. Tel tot tien, kies dan je woorden.

  9. Neem afstand, krijg perspectief.

  10. Neem perspectief, vind begrip.

  11. Zie meerdere kanten, kies bewust.

  12. Ken je voorkeur, erken je blinde vlek.

  13. Vraag feedback, ontdek wat je mist.

  14. Leer van anderen, behoud je eigen stem.

  15. Zoek advies, maak zelf de keuze.

  16. Hoor kritiek, bepaal wat bruikbaar is.

  17. Neem complimenten aan, blijf nuchter.

  18. Erken succes, blijf leren.

  19. Vier vooruitgang, bewaak je richting.

  20. Kijk naar cijfers, vergeet de mens niet.

  21. Kijk naar de mens, vergeet de feiten niet.

  22. Combineer gevoel met verstand.

  23. Gebruik ervaring, blijf open voor nieuwe kennis.

  24. Respecteer traditie, onderzoek verbetering.

  25. Behoud wat werkt, vernieuw wat niet meer past.

  26. Eer het verleden, ontwerp de toekomst.

  27. Gebruik geschiedenis, maak geen kopie van vroeger.

  28. Leer van anderen, ontdek je eigen weg.

  29. Laat inspiratie leiden, niet bepalen.

  30. Neem ideeën over, pas ze aan.

  31. Maak iets eigens, blijf verbonden met de bron.

  32. Begin met een voorbeeld, eindig met je eigen oplossing.

  33. Durf anders te denken, blijf logisch handelen.

  34. Stel oude antwoorden opnieuw ter discussie.

  35. Vraag of het nog werkt, voordat je het herhaalt.

  36. Kijk opnieuw naar gewoontes, kies bewust.

  37. Verander één gewoonte, observeer het effect.

  38. Maak goed gedrag makkelijk, maak slecht gedrag moeilijk.

  39. Bouw routines, maar blijf flexibel.

  40. Gebruik discipline, zonder jezelf te breken.

  41. Maak afspraken met jezelf, houd ze realistisch.

  42. Geef jezelf rust, zonder op te geven.

  43. Neem pauze, niet ontslag van je doel.

  44. Vertraag wanneer nodig, versnel wanneer mogelijk.

  45. Luister naar je energie, respecteer je grenzen.

  46. Werk met je kracht, ontwikkel je zwakte.

  47. Ken je sterke kant, train je moeilijke kant.

  48. Gebruik talent, bouw vaardigheid.

  49. Vertrouw aanleg, investeer in oefening.

  50. Oefen geduldig, verwacht groei.

  51. Begin als beginner, blijf leerling.

  52. Weet dat je nog niet alles weet.

  53. Stel vragen, blijf leren.

  54. Zoek voorbeelden, maak eigen ervaringen.

  55. Leer de regel, begrijp de reden.

  56. Ken de theorie, oefen de praktijk.

  57. Denk tactisch, handel technisch sterk.

  58. Kies het doel, dan het middel.

  59. Zie de situatie, bepaal je keuze.

  60. Kies bewust, voer rustig uit.

  61. Observeer het resultaat, pas je aanpak aan.

  62. Reflecteer kort, verbeter gericht.

  63. Maak leren praktisch, maak praktijk leerzaam.

  64. Geef jezelf feedback, zonder jezelf af te breken.

  65. Zoek verbetering, geen bevestiging.

  66. Laat ego los, houd kwaliteit vast.

  67. Geef toe wat je niet weet, zoek het uit.

  68. Vraag hulp voordat het probleem groter wordt.

  69. Deel twijfel, vergroot helderheid.

  70. Benoem onzekerheid, zoek informatie.

  71. Wees eerlijk over fouten, wees actief in herstel.

  72. Neem verantwoordelijkheid, zoek geen excuus.

  73. Kijk naar invloed, niet alleen naar schuld.

  74. Vraag wat jij kunt veranderen.

  75. Zoek je eigen aandeel, zonder alles op jezelf te nemen.

  76. Verander wat van jou is, begrens wat niet van jou is.

  77. Respecteer andermans keuze, bewaak je eigen grens.

  78. Laat een ander anders zijn, blijf jezelf.

  79. Geef ruimte aan verschil, zoek gemeenschappelijke grond.

  80. Zoek verbinding zonder gelijkheid te eisen.

  81. Begrijp verschil zonder afstand te creëren.

  82. Verschil hoeft geen conflict te zijn.

  83. Conflict hoeft geen einde te zijn.

  84. Spreek spanning uit, voordat ze afstand wordt.

  85. Kies gesprek boven aannames.

  86. Kies duidelijkheid boven interpretatie.

  87. Vraag uitleg voordat je conclusies trekt.

  88. Herstel contact, wanneer vertrouwen beschadigd is.

  89. Bouw vertrouwen langzaam, bescherm het zorgvuldig.

  90. Vertrouwen groeit door gedrag, niet alleen door woorden.

  91. Betrouwbaarheid begint bij kleine afspraken.

  92. Kleine keuzes vormen grote gewoontes.

  93. Grote doelen bestaan uit kleine stappen.

  94. Kleine stappen verdienen grote waardering.

  95. Elke dag biedt een nieuwe keuze.

  96. Elke keuze vormt een stukje richting.

  97. Richting is belangrijker dan snelheid.

  98. Vooruitgang is belangrijker dan perfectie.

  99. Volhouden is belangrijker dan beginnen.

  100. Begin opnieuw wanneer doorgaan niet meer werkt.

401–500

  1. Laat je verleden informeren, niet definiëren.

  2. Neem je ervaring mee, niet je ballast.

  3. Erken wat pijn deed, kies wat helpt.

  4. Laat verdriet bestaan, laat hoop groeien.

  5. Accepteer littekens, blijf bewegen.

  6. Geef jezelf tijd, geef jezelf richting.

  7. Herstel heeft geen haast, maar wel aandacht.

  8. Wees geduldig met jezelf, blijf eerlijk tegen jezelf.

  9. Praat over wat pijn doet, zoek wat helpt.

  10. Deel je verhaal, behoud je privacy.

  11. Vraag steun, zonder je kracht weg te geven.

  12. Laat anderen helpen, blijf eigenaar van je leven.

  13. Zoek veiligheid, daarna groei.

  14. Bouw vertrouwen, daarna snelheid.

  15. Zorg voor basis, daarna ambitie.

  16. Rust is geen stilstand, herstel is vooruitgang.

  17. Een pauze kan richting geven.

  18. Stilte kan antwoord geven.

  19. Tijd kan inzicht brengen.

  20. Afstand kan begrip vergroten.

  21. Verlies kan prioriteiten veranderen.

  22. Verandering kan ruimte creëren.

  23. Onzekerheid kan nieuwsgierigheid openen.

  24. Een fout kan een richtingaanwijzer zijn.

  25. Een grens kan vrijheid geven.

  26. Een nee kan een beter ja beschermen.

  27. Een vraag kan een oplossing openen.

  28. Een gesprek kan afstand verkleinen.

  29. Een luisterend oor kan veel veranderen.

  30. Een klein gebaar kan groot voelen.

  31. Aandacht is soms het beste antwoord.

  32. Aanwezig zijn is soms genoeg.

  33. Niet alles hoeft opgelost te worden.

  34. Niet elke vraag heeft vandaag een antwoord.

  35. Niet elke keuze hoeft definitief te zijn.

  36. Je mag van gedachten veranderen.

  37. Je mag opnieuw beginnen.

  38. Je mag een andere richting kiezen.

  39. Je mag stoppen met wat niet meer past.

  40. Je mag doorgaan met wat betekenis heeft.

  41. Kies wat bij je past, niet wat iedereen verwacht.

  42. Maak je eigen maatstaf, respecteer die van anderen.

  43. Vergelijk jezelf met gisteren, niet met iedereen.

  44. Kijk naar je groei, niet naar andermans tempo.

  45. Laat sociale druk los, houd je waarden vast.

  46. Kies betekenis boven goedkeuring.

  47. Kies waarheid boven indruk.

  48. Kies rust boven schijnbare controle.

  49. Kies verbinding boven gelijk krijgen.

  50. Kies leren boven winnen.

  51. Kies luisteren boven reageren.

  52. Kies nieuwsgierigheid boven oordeel.

  53. Kies verantwoordelijkheid boven excuses.

  54. Kies actie boven uitstel.

  55. Kies eenvoud boven complexiteit.

  56. Kies kwaliteit boven kwantiteit.

  57. Kies duurzaamheid boven snelheid.

  58. Kies aandacht boven afleiding.

  59. Kies aanwezigheid boven haast.

  60. Kies herstel boven doorgaan ten koste van jezelf.

  61. Kies moed boven vermijding.

  62. Kies hoop boven cynisme.

  63. Kies realisme boven angst.

  64. Kies vertrouwen boven wantrouwen, met verstand.

  65. Kies openheid, behoud je grenzen.

  66. Kies eerlijkheid, behoud je zachtheid.

  67. Kies duidelijkheid, behoud je respect.

  68. Kies vrijheid, neem verantwoordelijkheid.

  69. Kies verantwoordelijkheid, creëer vrijheid.

  70. Kies je woorden, beïnvloed je wereld.

  71. Kies je omgeving, beïnvloed je gewoontes.

  72. Kies je gewoontes, beïnvloed je toekomst.

  73. Kies je aandacht, beïnvloed je ervaring.

  74. Kies je reactie, beïnvloed je richting.

  75. Je kunt niet alles bepalen, wel veel beïnvloeden.

  76. Je kunt niet alles voorkomen, wel voorbereiden.

  77. Je kunt niet alles weten, wel blijven leren.

  78. Je kunt niet alles controleren, wel je grenzen kennen.

  79. Je kunt niet iedereen overtuigen, wel duidelijk zijn.

  80. Je kunt niet iedereen helpen, wel iemand helpen.

  81. Je kunt niet alles dragen, wel delen.

  82. Je kunt niet alles herstellen, wel beginnen.

  83. Je kunt niet teruggaan, wel vooruitgaan.

  84. Je kunt niet wissen wat gebeurde, wel betekenis geven.

  85. Je kunt niet voorspellen, wel voorbereiden.

  86. Je kunt niet versnellen wat tijd nodig heeft.

  87. Je kunt wel kiezen hoe je wacht.

  88. Je kunt wel kiezen hoe je reageert.

  89. Je kunt wel kiezen waar je aandacht naartoe gaat.

  90. Je kunt wel kiezen welke stap volgt.

  91. Laat onmogelijk niet automatisch betekenen: nooit.

  92. Laat moeilijk niet automatisch betekenen: niet doen.

  93. Laat langzaam niet automatisch betekenen: verkeerd.

  94. Laat anders niet automatisch betekenen: slecht.

  95. Laat onbekend niet automatisch betekenen: gevaarlijk.

  96. Laat kritiek niet automatisch betekenen: afwijzing.

  97. Laat stilte niet automatisch betekenen: onverschilligheid.

  98. Laat een fout niet automatisch betekenen: falen.

  99. Laat een tegenslag niet automatisch betekenen: einde.

  100. Laat vandaag niet bepalen wat morgen onmogelijk is.

501–600

  1. Maak ruimte voor wat groeit.

  2. Geef aandacht aan wat leeft.

  3. Bescherm wat waardevol is.

  4. Laat los wat niet meer dient.

  5. Voed wat sterker mag worden.

  6. Stop wat schade veroorzaakt.

  7. Herstel wat beschadigd is.

  8. Bouw wat ontbreekt.

  9. Versterk wat werkt.

  10. Vereenvoudig wat ingewikkeld is.

  11. Verhelder wat vaag is.

  12. Benoem wat verborgen blijft.

  13. Bespreek wat spanning geeft.

  14. Vraag wat onbekend is.

  15. Leer wat je nog niet begrijpt.

  16. Oefen wat nog niet lukt.

  17. Herhaal wat belangrijk is.

  18. Bewaar wat waardevol is.

  19. Deel wat anderen kan helpen.

  20. Geef terug wat je hebt ontvangen.

  21. Maak kennis bruikbaar, maak ervaring deelbaar.

  22. Leer niet alleen voor jezelf, leer ook voor anderen.

  23. Deel je succes, deel ook je lessen.

  24. Laat anderen profiteren van wat jij geleerd hebt.

  25. Maak fouten minder duur door ervan te leren.

  26. Maak ervaring sterker door haar te delen.

  27. Maak feedback waardevol door er iets mee te doen.

  28. Maak plannen sterker door ze te testen.

  29. Maak doelen haalbaar door ze op te delen.

  30. Maak verandering duurzaam door haar klein te beginnen.

  31. Maak discipline makkelijker door structuur.

  32. Maak rust mogelijk door grenzen.

  33. Maak focus mogelijk door keuzes.

  34. Maak vertrouwen mogelijk door betrouwbaarheid.

  35. Maak samenwerking mogelijk door duidelijkheid.

  36. Maak groei mogelijk door veiligheid.

  37. Maak leren mogelijk door vragen.

  38. Maak verbetering mogelijk door eerlijkheid.

  39. Maak ruimte voor fouten, maar niet voor herhaling zonder leren.

  40. Maak ruimte voor verschil, maar niet voor disrespect.

  41. Maak ruimte voor emoties, maar blijf verantwoordelijk voor gedrag.

  42. Geef gevoelens een plek, geef keuzes een richting.

  43. Erken boosheid, kies geen schade.

  44. Erken angst, kies geen stilstand.

  45. Erken verdriet, kies geen isolatie.

  46. Erken vreugde, deel haar waar mogelijk.

  47. Erken vermoeidheid, neem herstel serieus.

  48. Erken twijfel, zoek informatie.

  49. Erken onzekerheid, maak een plan.

  50. Erken verandering, blijf flexibel.

  51. Hou vast aan wat telt, beweeg mee met wat verandert.

  52. Blijf trouw aan waarden, verander je strategie.

  53. Houd je doel vast, pas je route aan.

  54. Bewaar je intentie, verander je aanpak.

  55. Ken je grens, zoek nieuwe mogelijkheden.

  56. Respecteer je beperking, benut je ruimte.

  57. Gebruik wat je hebt, ontwikkel wat ontbreekt.

  58. Vraag wat nodig is, geef wat mogelijk is.

  59. Doe wat binnen je invloed ligt.

  60. Laat de rest niet je energie bepalen.

  61. Investeer in invloed, niet in machteloosheid.

  62. Zoek mogelijkheden, ook binnen beperkingen.

  63. Zie obstakels, zoek openingen.

  64. Zie weerstand, onderzoek wat erachter zit.

  65. Zie vertraging, controleer de richting.

  66. Zie een omweg, kijk wat je leert.

  67. Zie een deur dichtgaan, zoek een andere ingang.

  68. Zie een einde, vraag wat nu begint.

  69. Zie een pauze, gebruik haar bewust.

  70. Zie een probleem, maak het concreet.

  71. Maak een groot probleem klein genoeg om te beginnen.

  72. Maak een klein probleem belangrijk genoeg om te voorkomen.

  73. Pak vroeg aan wat later groter wordt.

  74. Spreek vroeg uit wat later pijn doet.

  75. Ruim vroeg op wat later chaos wordt.

  76. Plan vroeg wat later belangrijk wordt.

  77. Leer vroeg wat later tijd bespaart.

  78. Vraag vroeg om hulp wat later moeilijker wordt.

  79. Stel grenzen voordat frustratie groeit.

  80. Maak afspraken voordat verwachtingen botsen.

  81. Spreek uit wat je nodig hebt.

  82. Vraag wat de ander nodig heeft.

  83. Zoek een oplossing waar beiden mee kunnen leven.

  84. Geef ruimte waar ruimte helpt.

  85. Neem positie waar duidelijkheid nodig is.

  86. Blijf rustig wanneer anderen versnellen.

  87. Blijf duidelijk wanneer anderen verwarren.

  88. Blijf menselijk wanneer regels botsen.

  89. Blijf zorgvuldig wanneer snelheid lokt.

  90. Blijf flexibel wanneer plannen veranderen.

  91. Blijf doelgericht wanneer omstandigheden wisselen.

  92. Blijf nieuwsgierig wanneer je weerstand voelt.

  93. Blijf luisteren wanneer je denkt het al te weten.

  94. Blijf leren wanneer je succes hebt.

  95. Blijf nederig wanneer anderen je prijzen.

  96. Blijf moedig wanneer anderen twijfelen.

  97. Blijf eerlijk wanneer een leugen makkelijker lijkt.

  98. Blijf vriendelijk wanneer hardheid aantrekkelijk lijkt.

  99. Blijf jezelf wanneer aanpassen je leegmaakt.

  100. Blijf bewegen wanneer wachten niets meer oplevert.

601–700

  1. Maak van aandacht een gewoonte.

  2. Maak van luisteren een kracht.

  3. Maak van vragen een instrument.

  4. Maak van feedback een kans.

  5. Maak van fouten een leerpunt.

  6. Maak van twijfel een onderzoek.

  7. Maak van angst een gesprek.

  8. Maak van chaos een overzicht.

  9. Maak van plannen een actie.

  10. Maak van actie een gewoonte.

  11. Maak van gewoonte een resultaat.

  12. Maak van resultaat een les.

  13. Maak van een les een volgende stap.

  14. Maak van een stap een beweging.

  15. Maak van beweging vooruitgang.

  16. Maak van vooruitgang vertrouwen.

  17. Maak van vertrouwen verantwoordelijkheid.

  18. Maak van verantwoordelijkheid vrijheid.

  19. Maak van vrijheid ruimte voor anderen.

  20. Maak van ruimte verbinding.

  21. Geef betekenis aan wat je doet.

  22. Geef richting aan wat je voelt.

  23. Geef woorden aan wat je nodig hebt.

  24. Geef grenzen aan wat je niet kunt dragen.

  25. Geef tijd aan wat belangrijk is.

  26. Geef aandacht aan wie belangrijk is.

  27. Geef rust aan wat te druk is.

  28. Geef moed aan wat spannend is.

  29. Geef hoop aan wat moeilijk voelt.

  30. Geef perspectief aan wat vastzit.

  31. Zoek een ander perspectief wanneer één blik niet helpt.

  32. Zoek een andere aanpak wanneer de eerste niet werkt.

  33. Zoek een andere route wanneer de weg blokkeert.

  34. Zoek een andere vraag wanneer het antwoord niet helpt.

  35. Zoek een andere timing wanneer het moment verkeerd is.

  36. Zoek een andere schaal wanneer het probleem te groot voelt.

  37. Zoek een ander tempo wanneer je uitgeput raakt.

  38. Zoek een andere omgeving wanneer je vastloopt.

  39. Zoek een ander gesprek wanneer woorden blijven botsen.

  40. Zoek een ander doel wanneer het oude niet meer klopt.

  41. Verander niet alles, verander wat nodig is.

  42. Gooi niet alles weg, behoud wat werkt.

  43. Begin niet overal, begin waar het verschil maakt.

  44. Probeer niet alles tegelijk, kies één focus.

  45. Los niet alles vandaag op, zet vandaag een stap.

  46. Verwacht niet direct resultaat, bouw vertrouwen.

  47. Eis geen perfect antwoord, zoek een bruikbaar antwoord.

  48. Zoek geen perfecte dag, maak een goede dag.

  49. Wacht niet op motivatie, begin met beweging.

  50. Wacht niet op zekerheid, verzamel informatie.

  51. Wacht niet op toestemming om te groeien.

  52. Wacht niet op een beter verleden.

  53. Wacht niet op een perfecte toekomst.

  54. Gebruik vandaag als vertrekpunt.

  55. Gebruik wat je weet, leer wat je mist.

  56. Gebruik je tijd bewust, niet automatisch.

  57. Gebruik je energie waar ze verschil maakt.

  58. Gebruik je stem om duidelijkheid te creëren.

  59. Gebruik je stilte om te luisteren.

  60. Gebruik je ervaring om anderen te helpen.

  61. Geef jezelf toestemming om te leren.

  62. Geef jezelf toestemming om te veranderen.

  63. Geef jezelf toestemming om te rusten.

  64. Geef jezelf toestemming om nee te zeggen.

  65. Geef jezelf toestemming om opnieuw te beginnen.

  66. Geef jezelf toestemming om trots te zijn.

  67. Geef jezelf toestemming om hulp te vragen.

  68. Geef jezelf toestemming om niet alles te weten.

  69. Geef jezelf toestemming om anders te kiezen.

  70. Geef jezelf toestemming om vooruit te gaan.

  71. Laat jezelf groeien zonder haast.

  72. Laat jezelf leren zonder schaamte.

  73. Laat jezelf rusten zonder schuld.

  74. Laat jezelf kiezen zonder uitleg aan iedereen.

  75. Laat jezelf veranderen zonder toestemming van vroeger.

  76. Laat jezelf dromen zonder garantie.

  77. Laat jezelf proberen zonder zekerheid.

  78. Laat jezelf falen zonder jezelf te veroordelen.

  79. Laat jezelf herstellen zonder haast.

  80. Laat jezelf opnieuw beginnen zonder excuses.

  81. Wees niet perfect, wees aanwezig.

  82. Wees niet sneller, wees gerichter.

  83. Wees niet harder, wees duidelijker.

  84. Wees niet luider, wees beter verstaanbaar.

  85. Wees niet drukker, wees effectiever.

  86. Wees niet strenger, wees consequenter.

  87. Wees niet afstandelijk, wees begrensd.

  88. Wees niet afhankelijk, wees verbonden.

  89. Wees niet gesloten, wees zorgvuldig open.

  90. Wees niet bang voor verandering, wees voorbereid.

  91. Zoek geen applaus, zoek betekenis.

  92. Zoek geen gelijk, zoek begrip.

  93. Zoek geen controle, zoek invloed.

  94. Zoek geen excuses, zoek mogelijkheden.

  95. Zoek geen schuld, zoek verantwoordelijkheid.

  96. Zoek geen perfectie, zoek verbetering.

  97. Zoek geen snelheid, zoek richting.

  98. Zoek geen zekerheid, zoek houvast.

  99. Zoek geen antwoord, zoek de juiste vraag.

  100. Zoek geen einde, zoek de volgende stap.

701–800

  1. Elke stap telt wanneer de richting klopt.

  2. Elke dag begint opnieuw.

  3. Elke keuze heeft een gevolg.

  4. Elke grens beschermt iets.

  5. Elke vraag opent iets.

  6. Elke fout vertelt iets.

  7. Elke ervaring leert iets.

  8. Elke ontmoeting kan iets veranderen.

  9. Elke pauze kan inzicht geven.

  10. Elke verandering begint ergens.

  11. Elke verbetering begint klein.

  12. Elke gewoonte begint met één keuze.

  13. Elke relatie groeit door aandacht.

  14. Elk vertrouwen groeit door gedrag.

  15. Elk doel vraagt om actie.

  16. Elk plan vraagt om flexibiliteit.

  17. Elke uitdaging vraagt om aanpassing.

  18. Elke tegenslag vraagt om perspectief.

  19. Elke overwinning vraagt om dankbaarheid.

  20. Elke les vraagt om toepassing.

  21. Vandaag hoeft niet perfect te zijn.

  22. Vandaag hoeft alleen betekenisvol te zijn.

  23. Morgen hoeft niet vast te staan.

  24. Morgen mag ontstaan uit vandaag.

  25. Gisteren mag blijven waar het hoort.

  26. Het verleden mag een les zijn.

  27. De toekomst mag een mogelijkheid zijn.

  28. Het heden is je werkplek.

  29. Dit moment is je vertrekpunt.

  30. Deze keuze is je invloed.

  31. Je hoeft niet alles te begrijpen om te beginnen.

  32. Je hoeft niet alles te weten om te leren.

  33. Je hoeft niet alles te kunnen om te groeien.

  34. Je hoeft niet alles te dragen om sterk te zijn.

  35. Je hoeft niet alles te controleren om veilig te zijn.

  36. Je hoeft niet iedereen tevreden te stellen om goed te leven.

  37. Je hoeft niet sneller te gaan om vooruit te komen.

  38. Je hoeft niet meer te doen om meer te betekenen.

  39. Je hoeft niet perfect te zijn om waardevol te zijn.

  40. Je hoeft niet klaar te zijn om te beginnen.

  41. Soms is minder precies genoeg.

  42. Soms is wachten verstandig.

  43. Soms is stoppen moedig.

  44. Soms is doorgaan nodig.

  45. Soms is loslaten de beste keuze.

  46. Soms is vasthouden precies wat nodig is.

  47. Soms is stilte het juiste antwoord.

  48. Soms is spreken noodzakelijk.

  49. Soms is afstand gezond.

  50. Soms is nabijheid helend.

  51. Soms moet je kiezen.

  52. Soms moet je luisteren.

  53. Soms moet je vragen.

  54. Soms moet je wachten.

  55. Soms moet je handelen.

  56. Soms moet je loslaten.

  57. Soms moet je opnieuw beginnen.

  58. Soms moet je gewoon blijven staan.

  59. Soms is één kleine stap genoeg.

  60. Soms is een grote keuze nodig.

  61. Ken het verschil tussen moeten en kunnen.

  62. Ken het verschil tussen willen en nodig hebben.

  63. Ken het verschil tussen schuld en verantwoordelijkheid.

  64. Ken het verschil tussen controle en invloed.

  65. Ken het verschil tussen rust en vermijden.

  66. Ken het verschil tussen moed en roekeloosheid.

  67. Ken het verschil tussen vrijheid en vrijblijvendheid.

  68. Ken het verschil tussen hulp en overname.

  69. Ken het verschil tussen aandacht en controle.

  70. Ken het verschil tussen luisteren en instemmen.

  71. Ken het verschil tussen begrijpen en goedkeuren.

  72. Ken het verschil tussen accepteren en opgeven.

  73. Ken het verschil tussen loslaten en vergeten.

  74. Ken het verschil tussen veranderen en vluchten.

  75. Ken het verschil tussen aanpassen en jezelf verliezen.

  76. Ken het verschil tussen ambitie en overbelasting.

  77. Ken het verschil tussen discipline en straf.

  78. Ken het verschil tussen feedback en afwijzing.

  79. Ken het verschil tussen kritiek en aanval.

  80. Ken het verschil tussen een probleem en een persoon.

  81. Behandel een probleem als iets dat opgelost kan worden.

  82. Behandel een mens als iemand die begrepen wil worden.

  83. Behandel een fout als informatie.

  84. Behandel feedback als materiaal.

  85. Behandel tijd als waarde.

  86. Behandel aandacht als keuze.

  87. Behandel grenzen als bescherming.

  88. Behandel rust als onderdeel van werk.

  89. Behandel verandering als onderdeel van groei.

  90. Behandel groei als een proces.

  91. Bouw vertrouwen met kleine daden.

  92. Bouw duidelijkheid met goede vragen.

  93. Bouw rust met grenzen.

  94. Bouw focus met keuzes.

  95. Bouw energie met herstel.

  96. Bouw kennis met nieuwsgierigheid.

  97. Bouw vaardigheden met oefening.

  98. Bouw relaties met aandacht.

  99. Bouw vrijheid met verantwoordelijkheid.

  100. Bouw de toekomst met wat je vandaag doet.

801–900

  1. Kijk wat nodig is, niet alleen wat ontbreekt.

  2. Kijk wat werkt, niet alleen wat fout gaat.

  3. Kijk wat mogelijk is, niet alleen wat moeilijk is.

  4. Kijk naar de volgende stap, niet alleen naar de eindbestemming.

  5. Kijk naar groei, niet alleen naar resultaat.

  6. Kijk naar gedrag, niet alleen naar intentie.

  7. Kijk naar patronen, niet alleen naar incidenten.

  8. Kijk naar het geheel, zonder details te vergeten.

  9. Kijk naar details, zonder het geheel te verliezen.

  10. Kijk opnieuw wanneer je eerste oordeel sterk voelt.

  11. Vraag wat je niet ziet.

  12. Vraag wat je nog niet begrijpt.

  13. Vraag wat anders kan.

  14. Vraag wat belangrijker is.

  15. Vraag wat vandaag nodig is.

  16. Vraag wat morgen geholpen zou zijn.

  17. Vraag wat jij kunt doen.

  18. Vraag wat de ander nodig heeft.

  19. Vraag wat het doel werkelijk is.

  20. Vraag wat er verandert als je niets doet.

  21. Maak ruimte voor antwoorden.

  22. Maak ruimte voor stilte.

  23. Maak ruimte voor verschil.

  24. Maak ruimte voor herstel.

  25. Maak ruimte voor groei.

  26. Maak ruimte voor plezier.

  27. Maak ruimte voor fouten.

  28. Maak ruimte voor nieuwe ideeën.

  29. Maak ruimte voor mensen.

  30. Maak ruimte voor jezelf.

  31. Laat haast niet beslissen.

  32. Laat angst niet beslissen.

  33. Laat boosheid niet beslissen.

  34. Laat schuld niet beslissen.

  35. Laat trots niet beslissen.

  36. Laat druk niet beslissen.

  37. Laat gewoonte niet automatisch beslissen.

  38. Laat anderen niet voortdurend voor jou beslissen.

  39. Laat omstandigheden niet alles bepalen.

  40. Laat één slechte dag niet je hele verhaal schrijven.

  41. Schrijf op wat je weet.

  42. Schrijf op wat je wilt.

  43. Schrijf op wat je nodig hebt.

  44. Schrijf op wat je kunt doen.

  45. Schrijf op wat je hebt geleerd.

  46. Schrijf op wat je loslaat.

  47. Schrijf op waar je dankbaar voor bent.

  48. Schrijf op waar je trots op bent.

  49. Schrijf op waar je hulp bij nodig hebt.

  50. Schrijf op wat morgen belangrijk is.

  51. Een heldere gedachte geeft ruimte.

  52. Een duidelijke keuze geeft richting.

  53. Een kleine actie geeft beweging.

  54. Een goede vraag geeft inzicht.

  55. Een eerlijk gesprek geeft verbinding.

  56. Een duidelijke grens geeft rust.

  57. Een bewuste pauze geeft overzicht.

  58. Een gemaakte fout geeft informatie.

  59. Een nieuwe poging geeft hoop.

  60. Een kleine overwinning geeft vertrouwen.

  61. Rustig beginnen kan sterk zijn.

  62. Langzaam leren kan duurzaam zijn.

  63. Klein veranderen kan groot effect hebben.

  64. Eenvoudig werken kan professioneel zijn.

  65. Duidelijk zijn kan vriendelijk zijn.

  66. Grenzen stellen kan liefdevol zijn.

  67. Nee zeggen kan zorgzaam zijn.

  68. Hulp vragen kan krachtig zijn.

  69. Toegeven kan moedig zijn.

  70. Luisteren kan leiden.

  71. Een plan is een richting, geen gevangenis.

  72. Een doel is een kompas, geen oordeel.

  73. Een fout is een gebeurtenis, geen identiteit.

  74. Een grens is een afspraak, geen aanval.

  75. Een mening is informatie, geen bevel.

  76. Een gevoel is echt, maar niet altijd een feit.

  77. Een gedachte is mogelijk, niet automatisch waarheid.

  78. Een risico is geen zekerheid.

  79. Een kans is geen garantie.

  80. Een verandering is geen verlies van jezelf.

  81. Blijf dicht bij wat belangrijk is.

  82. Blijf weg van wat je leegmaakt.

  83. Blijf open voor wat je verrast.

  84. Blijf alert op wat je schaadt.

  85. Blijf nieuwsgierig naar wat je niet kent.

  86. Blijf eerlijk over wat je nodig hebt.

  87. Blijf trouw aan wat je belangrijk vindt.

  88. Blijf flexibel over hoe je daar komt.

  89. Blijf rustig wanneer het tempo verandert.

  90. Blijf bewegen wanneer de omstandigheden veranderen.

  91. Geef richting aan je aandacht.

  92. Geef grenzen aan je tijd.

  93. Geef betekenis aan je werk.

  94. Geef ruimte aan je relaties.

  95. Geef rust aan je lichaam.

  96. Geef voeding aan je nieuwsgierigheid.

  97. Geef woorden aan je ervaring.

  98. Geef vorm aan je plannen.

  99. Geef vertrouwen aan het proces.

  100. Geef jezelf de kans om opnieuw te kiezen.

901–1000

  1. Accepteer de realiteit, verbeter de mogelijkheden.

  2. Zie de beperking, ontdek de ruimte.

  3. Erken het probleem, zoek de opening.

  4. Voel de weerstand, onderzoek de reden.

  5. Zie de fout, leer de les.

  6. Ervaar de twijfel, zoek de feiten.

  7. Voel de angst, kies je volgende stap.

  8. Erken de pijn, zoek de zorg.

  9. Zie het verlies, waardeer wat blijft.

  10. Zie de verandering, ontdek wat ontstaat.

  11. Laat los wat voorbij is, bescherm wat nog leeft.

  12. Laat gaan wat zwaar is, houd vast aan wat waardevol is.

  13. Laat verwachtingen zakken, laat waarden staan.

  14. Laat oordeel los, houd onderscheid.

  15. Laat haast los, houd richting.

  16. Laat controle los, houd verantwoordelijkheid.

  17. Laat perfectionisme los, houd kwaliteit.

  18. Laat excuses los, zoek mogelijkheden.

  19. Laat schuld los, neem verantwoordelijkheid.

  20. Laat angst spreken, maar laat haar niet sturen.

  21. Kies opnieuw wanneer je keuze niet meer klopt.

  22. Begin opnieuw wanneer je aanpak niet werkt.

  23. Vraag opnieuw wanneer je antwoord onvoldoende is.

  24. Kijk opnieuw wanneer je oordeel te snel was.

  25. Luister opnieuw wanneer je iemand niet begreep.

  26. Leer opnieuw wanneer de oude les niet genoeg is.

  27. Bouw opnieuw wanneer het oude niet meer past.

  28. Vertrouw opnieuw wanneer gedrag vertrouwen verdient.

  29. Probeer opnieuw wanneer de kans er is.

  30. Adem opnieuw wanneer alles te veel wordt.

  31. Maak vandaag bruikbaar, ook als het niet ideaal is.

  32. Maak een moeilijke dag niet groter dan nodig.

  33. Maak een grote droom niet kleiner uit angst.

  34. Maak een kleine stap niet onbelangrijk.

  35. Maak een fout niet persoonlijker dan nodig.

  36. Maak een grens niet harder dan nodig.

  37. Maak een gesprek niet ingewikkelder dan nodig.

  38. Maak een plan niet strakker dan nodig.

  39. Maak een doel niet vager dan nodig.

  40. Maak ruimte voor wat werkelijk telt.

  41. Kies wat helpt, laat wat hindert.

  42. Kies wat past, laat wat niet meer past.

  43. Kies wat voedt, laat wat leegmaakt.

  44. Kies wat verbindt, laat wat verdeelt.

  45. Kies wat leert, laat wat verhardt.

  46. Kies wat groeit, laat wat stilstaat.

  47. Kies wat eerlijk is, laat wat misleidt.

  48. Kies wat rustig maakt, laat wat onnodig opjaagt.

  49. Kies wat duurzaam is, laat wat alleen snel werkt.

  50. Kies wat betekenis heeft, laat wat alleen indruk maakt.

  51. Blijf klein genoeg om te luisteren.

  52. Blijf groot genoeg om te dromen.

  53. Blijf sterk genoeg om grenzen te stellen.

  54. Blijf zacht genoeg om te voelen.

  55. Blijf moedig genoeg om te veranderen.

  56. Blijf wijs genoeg om te wachten.

  57. Blijf eerlijk genoeg om toe te geven.

  58. Blijf nieuwsgierig genoeg om te leren.

  59. Blijf rustig genoeg om te kiezen.

  60. Blijf actief genoeg om vooruit te gaan.

  61. Wat je aandacht geeft, groeit.

  62. Wat je herhaalt, wordt een gewoonte.

  63. Wat je oefent, wordt sterker.

  64. Wat je bespreekt, wordt duidelijker.

  65. Wat je deelt, kan anderen helpen.

  66. Wat je loslaat, kan ruimte maken.

  67. Wat je beschermt, kan blijven groeien.

  68. Wat je accepteert, hoeft je niet te beheersen.

  69. Wat je verandert, vraagt om actie.

  70. Wat je wilt behouden, vraagt om aandacht.

  71. Je hoeft niet alles vandaag te dragen.

  72. Je hoeft niet alles morgen te weten.

  73. Je hoeft niet iedereen te begrijpen.

  74. Je hoeft niet door iedereen begrepen te worden.

  75. Je hoeft niet altijd sterk te lijken.

  76. Je hoeft niet altijd gelijk te hebben.

  77. Je hoeft niet altijd vooruit te rennen.

  78. Je hoeft niet altijd terug te kijken.

  79. Je hoeft alleen de volgende goede stap te vinden.

  80. Je hoeft alleen eerlijk te blijven over wat belangrijk is.

  81. Begin met wat je weet.

  82. Leer wat je nog niet weet.

  83. Doe wat binnen je invloed ligt.

  84. Laat los wat buiten je invloed ligt.

  85. Bewaar wat waardevol is.

  86. Verander wat niet meer werkt.

  87. Herstel wat beschadigd is.

  88. Bescherm wat goed is.

  89. Deel wat anderen helpt.

  90. Vier wat groeit.

  91. Accepteer wat niet anders kan.

  92. Verander wat binnen bereik ligt.

  93. Leer van wat achter je ligt.

  94. Bouw aan wat voor je ligt.

  95. Vertrouw op je waarden.

  96. Handel naar je keuzes.

  97. Reflecteer op je resultaten.

  98. Verbeter je volgende stap.

  99. Blijf leren, blijf leven.

  100. Accepteer nu wat is, verander op jouw manier wat kan.


Be the energy you want to see in the world.

questions → silence → space → thinking → feeling → choosing → acting.

**Stay confident.

Be secure & safe.
Create success.
Learn from every moment.
Attract energy.
Lift people up.
Encourage.
Ask. Listen. Give space.
Celebrate goodness.
Be an inspiration.**

Gabeler.eu Coaching / Stichting GODOGOOD.eu 


Google Sites
Report abuse
Page details
Page updated
Google Sites
Report abuse