{"id":3038,"date":"2025-10-02T11:07:37","date_gmt":"2025-10-02T11:07:37","guid":{"rendered":"https:\/\/takidaki.com\/randomizer-listy\/"},"modified":"2026-03-20T16:48:34","modified_gmt":"2026-03-20T16:48:34","slug":"randomizer-listy","status":"publish","type":"page","link":"https:\/\/takidaki.com\/pl\/randomizer-listy\/","title":{"rendered":"Randomizer listy"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3038\" class=\"elementor elementor-3038 elementor-655\" data-elementor-post-type=\"page\">\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" data-dce-background-color=\"#FEE4C7\" class=\"elementor-element elementor-element-46c063d e-flex e-con-boxed e-con e-parent\" data-id=\"46c063d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div data-dce-title-color=\"#151413\" class=\"elementor-element elementor-element-0af3668 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"0af3668\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Losowanie z listy<\/h1>\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-d3d101a e-con-full e-flex e-con e-child\" data-id=\"d3d101a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-eb86743 elementor-widget elementor-widget-html\" data-id=\"eb86743\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<link href=\"https:\/\/fonts.googleapis.com\/css2?family=PT+Mono&amp;display=swap\" rel=\"stylesheet\">\n<style>\n  :root {\n    --cols: 1;\n    --win-h: 76px;\n    --name: 18px;\n    --id: 12px;\n    --gap: 15px;\n  }\n\n  @keyframes slideInFromRight {\n    from { transform: translateX(100px); opacity: 0; }\n    to   { transform: translateX(0); opacity: 1; }\n  }\n\n  .randomizer-container {\n    background: white;\n    border-radius: 20px;\n    display: flex;\n    max-width: 1200px;\n    margin: 0 auto;\n    min-height: 600px;\n    font-family: 'PT Mono', monospace;\n    overflow: hidden;\n  }\n\n  .left-panel {\n    flex: 1;\n    padding: 40px;\n    background: #f8f9fa;\n    display: flex;\n    flex-direction: column;\n    gap: 30px;\n  }\n\n  .right-panel {\n    flex: 1;\n    padding: 40px;\n    background: #FFECD6;\n    color: #101010;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n  }\n\n  .title, .label, .results-title {\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    font-weight: bold;\n  }\n\n  .title { font-size: 28px; color: #333; text-align: center; }\n  .label { font-size: 16px; color: #555; }\n  .results-title { font-size: 24px; margin-bottom: 20px; }\n\n  .input-group { display: flex; flex-direction: column; gap: 15px; }\n\n  .participants-textarea {\n    width: 100%; height: 200px; padding: 15px;\n    border: 2px solid #e1e5e9; border-radius: 10px;\n    font-size: 14px; resize: vertical; font-family: inherit;\n  }\n\n  .participants-textarea:focus {\n    outline: none; border-color: #778541;\n  }\n\n  .number-input-container {\n    display: flex; align-items: center;\n    border: 2px solid #e1e5e9; border-radius: 10px;\n    background: white; overflow: hidden;\n  }\n\n  .number-btn {\n    background: #f8f9fa; border: none; padding: 12px 16px;\n    font-size: 18px; font-weight: bold; color: #778541;\n    cursor: pointer; min-width: 50px; text-transform: uppercase;\n  }\n\n  .number-btn:hover { background: #778541; color: white; }\n  .number-btn:disabled { background: #e9ecef; color: #6c757d; }\n\n  .winners-input {\n    flex: 1; border: none; padding: 12px 15px;\n    font-size: 16px; text-align: center; background: white; outline: none;\n  }\n\n  .select-button {\n    background: #778541; color: white; border: none;\n    padding: 15px 30px; border-radius: 10px;\n    font-size: 16px; font-weight: bold;\n    cursor: pointer; text-transform: uppercase;\n    letter-spacing: 0.5px; width: 100%;\n  }\n\n  .select-button:hover { opacity: 0.9; }\n\n  .remove-duplicates-btn {\n    background: #EA806C; color: white;\n    padding: 12px 20px; border: none; border-radius: 10px;\n    font-size: 14px; font-weight: bold;\n    text-transform: uppercase; letter-spacing: 0.5px;\n    cursor: pointer;\n  }\n\n  .winners-container {\n    display: grid;\n    grid-template-columns: repeat(var(--cols), 1fr);\n    gap: var(--gap); width: 100%; overflow: hidden;\n  }\n\n  .winner-card {\n    height: var(--win-h); background: rgba(255, 255, 255, 0.2);\n    backdrop-filter: blur(10px); border-radius: 12px;\n    padding: 12px; text-align: center; font-weight: 600;\n    border: 2px solid rgba(255, 255, 255, 0.3);\n    display: flex; flex-direction: column;\n    justify-content: center; align-items: center;\n    animation: slideInFromRight 0.6s ease-out;\n    animation-fill-mode: both;\n  }\n\n  .winner-number { font-size: var(--id); opacity: 0.85; margin-bottom: 3px; }\n  .winner-name { font-size: var(--name); }\n\n  .empty-state { text-align: center; opacity: 0.7; font-size: 18px; }\n  .stats { margin-top: 12px; text-align: center; font-size: 14px; opacity: 0.8; }\n\n  @media (max-width: 768px) {\n    .randomizer-container { flex-direction: column; }\n    .left-panel, .right-panel { padding: 20px; }\n    .winners-container { --cols: 1; }\n  }\n<\/style>\n\n<div class=\"randomizer-container\">\n  <div class=\"left-panel\">\n    <h3 class=\"title\">Losowanie zwyci\u0119zc\u00f3w na Instagramie<\/h3>\n    <div class=\"input-group\">\n      <label class=\"label\" for=\"participants\">Lista uczestnik\u00f3w (jeden na lini\u0119):<\/label>\n      <textarea id=\"participants\" class=\"participants-textarea\" placeholder=\"Wpisz imiona uczestnik\u00f3w, jedno w ka\u017cdej linii...\"><\/textarea>\n    <\/div>\n    <div class=\"input-group\">\n      <button id=\"remove-duplicates\" class=\"remove-duplicates-btn\" onclick=\"removeDuplicates()\">Usu\u0144 duplikaty<\/button>\n    <\/div>\n    <div class=\"input-group\">\n      <label class=\"label\" for=\"winners-count\">Liczba zwyci\u0119zc\u00f3w:<\/label>\n      <div class=\"number-input-container\">\n        <button type=\"button\" class=\"number-btn\" onclick=\"changeCount(-1)\">\u2013<\/button>\n<input type=\"number\" id=\"winners-count\" class=\"winners-input\" value=\"1\" min=\"1\">\n<button type=\"button\" class=\"number-btn\" onclick=\"changeCount(1)\">+<\/button>\n      <\/div>\n    <\/div>\n    <button class=\"select-button\" onclick=\"pickWinners()\">Losowanie zwyci\u0119zc\u00f3w<\/button>\n  <\/div>\n\n  <div class=\"right-panel\">\n    <h2 class=\"results-title\">Winners<\/h2>\n    <div id=\"winners-container\" class=\"winners-container\">\n      <div class=\"empty-state\">Kliknij przycisk \u201eLosuj zwyci\u0119zc\u00f3w\", aby rozpocz\u0105\u0107<\/div>\n    <\/div>\n    <div class=\"stats\" id=\"stats\"><\/div>\n    <button class=\"select-button\" style=\"margin-top:12px;\" onclick=\"copyWinners()\">Kopiuj zwyci\u0119zc\u00f3w<\/button>\n  <\/div>\n<\/div>\n\n<script>\n  function getParticipants() {\n    return [...new Set(document.getElementById(\"participants\").value\n      .split(\"\\n\").map(p => p.trim()).filter(Boolean))];\n  }\n\n  function changeCount(change) {\n    const input = document.getElementById(\"winners-count\");\n    let value = parseInt(input.value) || 1;\n    value += change;\n    if (value < 1) value = 1;\n    if (value > getParticipants().length) value = getParticipants().length;\n    input.value = value;\n  }\n\n  function pickWinners() {\n    const participants = getParticipants();\n    const count = parseInt(document.getElementById(\"winners-count\").value) || 1;\n    const container = document.getElementById(\"winners-container\");\n    const stats = document.getElementById(\"stats\");\n\n    if (participants.length === 0) {\n      container.innerHTML = \"<div class='empty-state'>Please enter at least one participant.<\/div>\";\n      stats.textContent = \"\";\n      return;\n    }\n\n    if (count > participants.length) {\n      container.innerHTML = \"<div class='empty-state'>Not enough participants.<\/div>\";\n      stats.textContent = \"\";\n      return;\n    }\n\n    const shuffled = participants.sort(() => 0.5 - Math.random());\n    const winners = shuffled.slice(0, count);\n\n    container.innerHTML = winners.map((name, i) => `\n      <div class=\"winner-card\" style=\"animation-delay:${i * 0.05}s\">\n        <div class=\"winner-number\">#${i + 1}<\/div>\n        <div class=\"winner-name\">${name}<\/div>\n      <\/div>\n    `).join(\"\");\n\n    stats.textContent = `Total participants: ${participants.length} | Winners: ${winners.length}`;\n    applyWinnersLayout(winners.length);\n  }\n\n  function copyWinners() {\n    const names = Array.from(document.querySelectorAll(\".winner-name\")).map((el, i) =>\n      `${i + 1}. ${el.textContent}`).join(\"\\n\");\n\n    if (!names) return;\n    navigator.clipboard.writeText(names).then(() => {\n      alert(\"Winners copied!\");\n    });\n  }\n\n  function removeDuplicates() {\n    const textarea = document.getElementById(\"participants\");\n    const unique = getParticipants();\n    textarea.value = unique.join(\"\\n\");\n  }\n\n  function applyWinnersLayout(count = null) {\n    const container = document.getElementById('winners-container');\n    const cards = container.querySelectorAll('.winner-card').length;\n    const n = count ?? cards;\n    if (!n) return;\n\n    let cols = 1;\n    if (n > 32) cols = 8;\n    else if (n > 16) cols = 4;\n    else if (n > 8) cols = 2;\n\n    const h    = (n > 32) ? 36 : (n > 16) ? 48 : (n > 8) ? 60 : 76;\n    const name = (n > 32) ? 10 : (n > 16) ? 13 : (n > 8) ? 16 : 18;\n    const id   = Math.max(10, name - 4);\n\n    container.style.setProperty('--cols', cols);\n    container.style.setProperty('--win-h', `${h}px`);\n    container.style.setProperty('--name', `${name}px`);\n    container.style.setProperty('--id', `${id}px`);\n  }\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" data-dce-background-color=\"#FFFDFA\" class=\"elementor-element elementor-element-74bcc145 e-flex e-con-boxed e-con e-parent\" data-id=\"74bcc145\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div data-dce-text-color=\"#232323\" class=\"elementor-element elementor-element-4f1d69da elementor-widget elementor-widget-text-editor\" data-id=\"4f1d69da\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p class=\"p1\"><b>Randomizer listy TakiDaki<\/b> to przejrzyste i wydajne narz\u0119dzie do wy\u0142aniania zwyci\u0119zc\u00f3w w konkursach, losowaniach lub dowolnym wydarzeniu, w kt\u00f3rym liczy si\u0119 uczciwo\u015b\u0107.<\/p><p class=\"p1\">Wklej swoj\u0105 list\u0119, wybierz liczb\u0119 zwyci\u0119zc\u00f3w \u2014 i pozw\u00f3l systemowi zrobi\u0107 reszt\u0119.<\/p><p class=\"p1\">Idealne rozwi\u0105zanie dla tw\u00f3rc\u00f3w, marek i zespo\u0142\u00f3w SMM prowadz\u0105cych konkursy na<b> Instagramie,<\/b> a wkr\u00f3tce tak\u017ce na <b>TikToku, Facebooku<\/b> i innych platformach.<\/p><p class=\"p1\">Dzi\u0119ki przejrzystemu algorytmowi Twoja spo\u0142eczno\u015b\u0107 zobaczy: proces jest szybki, uczciwy i bezstronny.<\/p><h3><b>\ud83d\udfe2 Mo\u017cesz go u\u017cy\u0107 do:<\/b><\/h3><ul><li><p class=\"p1\">Losowa\u0144 w mediach spo\u0142eczno\u015bciowych w\u015br\u00f3d obserwator\u00f3w<\/p><\/li><li><p class=\"p1\">Promocji lub loterii w Twoim sklepie<\/p><\/li><li><p class=\"p1\">Wy\u0142aniania zwyci\u0119zcy spo\u015br\u00f3d klient\u00f3w lub pracownik\u00f3w<\/p><\/li><li><p class=\"p1\">Charytatywnych losowa\u0144, w kt\u00f3rych liczy si\u0119 ka\u017cdy szczeg\u00f3\u0142<\/p><\/li><\/ul><h3><b>\u2728 G\u0142\u00f3wne zalety:<\/b><\/h3><ul><li><p class=\"p1\">Bardzo prosty interfejs \u2014 bez rejestracji i konfiguracji<\/p><\/li><li><p class=\"p1\">Dzia\u0142a bezpo\u015brednio w przegl\u0105darce \u2014 bez pobierania<\/p><\/li><li><p class=\"p1\">Wbudowane usuwanie duplikat\u00f3w<\/p><\/li><li><p class=\"p1\">Wyniki mo\u017cna skopiowa\u0107 lub zapisa\u0107<\/p><\/li><li><p class=\"p1\">Uczciwe, szybkie i bezpieczne \u2014 bez \u017cadnej ingerencji r\u0119cznej<\/p><\/li><\/ul><p class=\"p1\">Szukasz darmowego i <b>uczciwego narz\u0119dzia do losowania<\/b>, kt\u00f3remu mo\u017cesz zaufa\u0107?<\/p><p class=\"p1\"><b>TakiDaki <\/b>sprawia, \u017ce to dziecinnie proste \u2014 i wygl\u0105da \u015bwietnie.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-2dfd4aa e-flex e-con-boxed e-con e-parent\" data-id=\"2dfd4aa\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7ee7b95 dce_masking-none elementor-widget elementor-widget-image\" data-id=\"7ee7b95\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"491\" src=\"https:\/\/takidaki.com\/wp-content\/uploads\/2025\/11\/takidaki-list-randomizer-1024x628.png\" class=\"attachment-large size-large wp-image-3039\" alt=\"list randomizer\" srcset=\"https:\/\/takidaki.com\/wp-content\/uploads\/2025\/11\/takidaki-list-randomizer-1024x628.png 1024w, https:\/\/takidaki.com\/wp-content\/uploads\/2025\/11\/takidaki-list-randomizer-300x184.png 300w, https:\/\/takidaki.com\/wp-content\/uploads\/2025\/11\/takidaki-list-randomizer-768x471.png 768w, https:\/\/takidaki.com\/wp-content\/uploads\/2025\/11\/takidaki-list-randomizer.png 1171w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Losowanie z listy Losowanie zwyci\u0119zc\u00f3w na Instagramie Lista uczestnik\u00f3w (jeden na lini\u0119): Usu\u0144 duplikaty Liczba zwyci\u0119zc\u00f3w: \u2013 + Losowanie zwyci\u0119zc\u00f3w Winners Kliknij przycisk \u201eLosuj zwyci\u0119zc\u00f3w&#8221;, aby rozpocz\u0105\u0107 Kopiuj zwyci\u0119zc\u00f3w Randomizer listy TakiDaki to przejrzyste i wydajne narz\u0119dzie do wy\u0142aniania zwyci\u0119zc\u00f3w w konkursach, losowaniach lub dowolnym wydarzeniu, w kt\u00f3rym liczy si\u0119 uczciwo\u015b\u0107. Wklej swoj\u0105 list\u0119, wybierz [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2339,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-3038","page","type-page","status-publish","has-post-thumbnail","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/takidaki.com\/pl\/wp-json\/wp\/v2\/pages\/3038","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/takidaki.com\/pl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/takidaki.com\/pl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/takidaki.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/takidaki.com\/pl\/wp-json\/wp\/v2\/comments?post=3038"}],"version-history":[{"count":1,"href":"https:\/\/takidaki.com\/pl\/wp-json\/wp\/v2\/pages\/3038\/revisions"}],"predecessor-version":[{"id":3040,"href":"https:\/\/takidaki.com\/pl\/wp-json\/wp\/v2\/pages\/3038\/revisions\/3040"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/takidaki.com\/pl\/wp-json\/wp\/v2\/media\/2339"}],"wp:attachment":[{"href":"https:\/\/takidaki.com\/pl\/wp-json\/wp\/v2\/media?parent=3038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}