{"id":52,"date":"2026-08-17T08:12:32","date_gmt":"2026-08-17T08:12:32","guid":{"rendered":"https:\/\/bibliotea.com\/?page_id=52"},"modified":"2026-08-17T08:20:55","modified_gmt":"2026-08-17T08:20:55","slug":"wishlist","status":"publish","type":"page","link":"https:\/\/bibliotea.com\/?page_id=52","title":{"rendered":"Wishlist"},"content":{"rendered":"\n<div class=\"bt-wish\">\n  <div class=\"bt-w-inner\">\n    <h1>Wishlist y lecturas<\/h1>\n    <p class=\"bt-w-intro\">Lo que est\u00e1s leyendo y lo que quieres leer. A\u00f1\u00e1delos desde \u00abBuscar y valorar\u00bb o \u00abMis c\u00f3mics\u00bb.<\/p>\n    <div id=\"wWrap\"><\/div>\n  <\/div>\n  <div class=\"bt-ml-overlay\" id=\"wOverlay\">\n    <div class=\"bt-ml-modal\">\n      <div class=\"bt-mc-modhead\">\n        <img id=\"wmCover\" alt=\"\">\n        <div style=\"min-width:0\">\n          <h2 id=\"wmTitle\"><\/h2>\n          <div class=\"bt-ml-who\" id=\"wmWho\"><\/div>\n          <div class=\"bt-ml-stars\" id=\"wmStars\"><\/div>\n        <\/div>\n      <\/div>\n      <label for=\"wmOpinion\">Tu opini\u00f3n<\/label>\n      <textarea id=\"wmOpinion\" placeholder=\"Escribe tu rese\u00f1a...\"><\/textarea>\n      <div class=\"bt-ml-actions\">\n        <button class=\"bt-btn ghost\" id=\"wmCancel\">Cancelar<\/button>\n        <button class=\"bt-btn\" id=\"wmSave\">Guardar valoraci\u00f3n<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n  <div class=\"bt-toast\" id=\"wToast\"><\/div>\n<\/div>\n<style>\n.bt-wish{position:relative;box-sizing:border-box;width:100vw !important;max-width:100vw !important;margin-left:calc(50% - 50vw) !important;margin-right:calc(50% - 50vw) !important;background:#f5efe4;color:#2b2118;font-family:\"Iowan Old Style\",\"Palatino Linotype\",Georgia,serif;padding:2.5rem 1.2rem}\n.bt-w-inner{max-width:1100px;margin:0 auto}\n.bt-w-inner h1{font-size:1.9rem;margin:0 0 .2rem}\n.bt-w-intro{color:#7a6a58;margin:0 0 1rem}\n.bt-w-h{font-size:1.25rem;margin:1.6rem 0 .7rem}\n.bt-ml-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.1rem}\n.bt-ml-card{background:#fffdf8;border:1px solid #e4d8c5;border-radius:16px;box-shadow:0 10px 30px rgba(60,40,20,.10);padding:1rem;display:flex;flex-direction:column;gap:.5rem}\n.bt-ml-top{display:flex;gap:.8rem}\n.bt-ml-cover{width:60px;min-width:60px;height:90px;border-radius:6px;overflow:hidden;background:#8a5a3a}\n.bt-ml-cover img{width:100%;height:100%;object-fit:cover;display:block}\n.bt-ml-meta{min-width:0}\n.bt-ml-meta h3{font-size:1.02rem;margin:0 0 .15rem}\n.bt-ml-auth{color:#7a6a58;font-size:.85rem;margin-bottom:.25rem}\n.bt-badge{display:inline-block;font-size:.68rem;font-weight:700;letter-spacing:.4px;text-transform:uppercase;border-radius:999px;padding:.08rem .5rem;border:1px solid #9c3d2e;color:#9c3d2e}\n.bt-badge.read{background:#c98a3a;border-color:#c98a3a;color:#fff}\n.bt-ml-foot{display:flex;justify-content:space-between;align-items:center;gap:.4rem;flex-wrap:wrap}\n.bt-ml-date{color:#7a6a58;font-size:.78rem}\n.bt-link{background:none;border:none;color:#9c3d2e;font-weight:600;font-size:.82rem;cursor:pointer;padding:.2rem .3rem;text-decoration:none}\n.bt-ml-empty{color:#7a6a58;font-style:italic;text-align:center;padding:2rem}\n.bt-btn{border:none;background:#9c3d2e;color:#fff;padding:.7rem 1.3rem;border-radius:12px;font-weight:600;font-size:1rem;cursor:pointer;font-family:inherit}\n.bt-btn.ghost{background:transparent;color:#9c3d2e;border:1px solid #9c3d2e}\n.bt-ml-overlay{position:fixed;inset:0;background:rgba(20,12,6,.55);display:none;align-items:center;justify-content:center;z-index:99999;padding:1rem}\n.bt-ml-overlay.show{display:flex}\n.bt-ml-modal{background:#fffdf8;color:#2b2118;border-radius:16px;max-width:520px;width:100%;padding:1.6rem;box-shadow:0 20px 50px rgba(0,0,0,.35);font-family:inherit}\n.bt-mc-modhead{display:flex;gap:1rem;margin-bottom:.6rem}\n.bt-mc-modhead img{width:80px;height:120px;border-radius:8px;object-fit:cover;background:#8a5a3a}\n.bt-ml-modal h2{margin:0 0 .2rem}\n.bt-ml-who{color:#7a6a58;margin-bottom:.4rem}\n.bt-ml-stars{display:flex;gap:.15rem;font-size:1.6rem}\n.bt-ml-stars .st{background:none;border:none;cursor:pointer;color:#e4d8c5;font-size:inherit;padding:0}\n.bt-ml-stars .st.on{color:#e0a12b}\n.bt-ml-modal label{display:block;font-weight:600;margin:.6rem 0 .35rem}\n.bt-ml-modal textarea{width:100%;min-height:110px;padding:.75rem;border:1px solid #e4d8c5;border-radius:10px;font-family:inherit;font-size:1rem;background:#f5efe4;color:#2b2118;resize:vertical}\n.bt-ml-actions{display:flex;gap:.6rem;justify-content:flex-end;margin-top:1.2rem}\n.bt-toast{position:fixed;bottom:1.5rem;left:50%;transform:translateX(-50%) translateY(20px);background:#2b2118;color:#f5efe4;padding:.7rem 1.3rem;border-radius:999px;box-shadow:0 10px 30px rgba(0,0,0,.3);opacity:0;transition:.3s;z-index:100000;font-size:.9rem;pointer-events:none}\n.bt-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}\n<\/style>\n<script>\n(function(){\n  var LS_R = 'biblio.reviews.v1', LS_W = 'biblio.wishlist.v1', LS_G = 'biblio.reading.v1';\n  function getArr(k){ try{ return JSON.parse(localStorage.getItem(k)) || []; }catch(e){ return []; } }\n  function setArr(k, v){ localStorage.setItem(k, JSON.stringify(v)); }\n  function uid(p){ return p + Date.now() + Math.random().toString(36).slice(2, 6); }\n  function sameBook(a, b){ if(a.title !== b.title){ return false; } return (a.authors || '') === (b.authors || ''); }\n  function fmtDate(ts){ try{ return new Date(ts).toLocaleDateString('es-ES', {day:'numeric', month:'short', year:'numeric'}); }catch(e){ return ''; } }\n  function amazon(item){ return 'https:\/\/www.amazon.es\/s?k=' + encodeURIComponent([item.title, item.authors].filter(function(x){ return x; }).join(' ')); }\n  var wWrap = document.getElementById('wWrap');\n  var toastEl = document.getElementById('wToast'); var toastT;\n  function toast(msg){ toastEl.textContent = msg; toastEl.classList.add('show'); clearTimeout(toastT); toastT = setTimeout(function(){ toastEl.classList.remove('show'); }, 2200); }\n  function coverEl(item){\n    var cov = document.createElement('div'); cov.className = 'bt-ml-cover';\n    if(item.cover){ var im = document.createElement('img'); im.src = item.cover; im.alt = ''; cov.appendChild(im); }\n    return cov;\n  }\n  function metaEl(item, badgeText, badgeClass){\n    var meta = document.createElement('div'); meta.className = 'bt-ml-meta';\n    var h = document.createElement('h3'); h.textContent = item.title || 'Sin titulo'; meta.appendChild(h);\n    var au = document.createElement('div'); au.className = 'bt-ml-auth'; au.textContent = (item.authors || '') + (item.year ? ' \\u00b7 ' + item.year : ''); meta.appendChild(au);\n    var bd = document.createElement('span'); bd.className = 'bt-badge' + (badgeClass ? ' ' + badgeClass : ''); bd.textContent = badgeText; meta.appendChild(bd);\n    return meta;\n  }\n  function linkBtn(text, fn){ var b = document.createElement('button'); b.className = 'bt-link'; b.textContent = text; b.onclick = fn; return b; }\n  function readingCard(g){\n    var c = document.createElement('div'); c.className = 'bt-ml-card';\n    var top = document.createElement('div'); top.className = 'bt-ml-top';\n    top.appendChild(coverEl(g)); top.appendChild(metaEl(g, 'Leyendo', 'read')); c.appendChild(top);\n    var foot = document.createElement('div'); foot.className = 'bt-ml-foot';\n    var dt = document.createElement('span'); dt.className = 'bt-ml-date'; dt.textContent = 'Desde ' + fmtDate(g.date); foot.appendChild(dt);\n    var acts = document.createElement('span');\n    acts.appendChild(linkBtn('Terminar y valorar', function(){ openRate(g, 'reading'); }));\n    acts.appendChild(linkBtn('Quitar', function(){ removeReading(g.id); }));\n    foot.appendChild(acts); c.appendChild(foot);\n    return c;\n  }\n  function wishCard(w){\n    var c = document.createElement('div'); c.className = 'bt-ml-card';\n    var top = document.createElement('div'); top.className = 'bt-ml-top';\n    top.appendChild(coverEl(w)); top.appendChild(metaEl(w, w.kind === 'comic' ? 'C\u00f3mic' : 'Libro', '')); c.appendChild(top);\n    var foot = document.createElement('div'); foot.className = 'bt-ml-foot';\n    var dt = document.createElement('span'); dt.className = 'bt-ml-date'; dt.textContent = 'A\u00f1adido ' + fmtDate(w.date); foot.appendChild(dt);\n    var acts = document.createElement('span');\n    var az = document.createElement('a'); az.className = 'bt-link'; az.textContent = 'Amazon'; az.href = amazon(w); az.target = '_blank'; az.rel = 'noopener'; acts.appendChild(az);\n    acts.appendChild(linkBtn('Empezar', function(){ startFromWish(w.id); }));\n    acts.appendChild(linkBtn('Valorar', function(){ openRate(w, 'wish'); }));\n    acts.appendChild(linkBtn('Quitar', function(){ removeWish(w.id); }));\n    foot.appendChild(acts); c.appendChild(foot);\n    return c;\n  }\n  function removeReading(id){ var rd = getArr(LS_G).filter(function(x){ return x.id !== id; }); setArr(LS_G, rd); toast('Quitado de Leyendo ahora'); render(); }\n  function removeWish(id){ var wl = getArr(LS_W).filter(function(x){ return x.id !== id; }); setArr(LS_W, wl); toast('Quitado de la wishlist'); render(); }\n  function startFromWish(id){\n    var wl = getArr(LS_W); var w = null;\n    for(var i = 0; i < wl.length; i++){ if(wl[i].id === id){ w = wl[i]; break; } }\n    if(!w){ return; }\n    var rd = getArr(LS_G);\n    var dup = rd.some(function(g){ return sameBook(g, w); });\n    if(!dup){ rd.unshift({ id: uid('g'), title: w.title, authors: w.authors, year: w.year, cover: w.cover, kind: w.kind || 'libro', date: Date.now() }); setArr(LS_G, rd); }\n    setArr(LS_W, wl.filter(function(x){ return x.id !== id; }));\n    toast('Ahora leyendo'); render();\n  }\n  var overlay = document.getElementById('wOverlay');\n  var mCover = document.getElementById('wmCover');\n  var mTitle = document.getElementById('wmTitle');\n  var mWho = document.getElementById('wmWho');\n  var mStars = document.getElementById('wmStars');\n  var mOpinion = document.getElementById('wmOpinion');\n  var currentItem = null, currentSource = null, currentRating = 0;\n  function drawStars(){\n    mStars.innerHTML = '';\n    for(var i = 1; i <= 5; i++){ (function(n){ var b = document.createElement('button'); b.type = 'button'; b.className = 'st' + (n <= currentRating ? ' on' : ''); b.textContent = '\\u2605'; b.onclick = function(){ currentRating = n; drawStars(); }; mStars.appendChild(b); })(i); }\n  }\n  function openRate(item, source){\n    currentItem = item; currentSource = source; currentRating = 0;\n    if(item.cover){ mCover.src = item.cover; mCover.style.display = 'block'; } else { mCover.style.display = 'none'; }\n    mTitle.textContent = item.title || '';\n    mWho.textContent = [item.authors, item.year].filter(function(x){ return x; }).join(' \\u00b7 ');\n    mOpinion.value = '';\n    drawStars(); overlay.classList.add('show');\n  }\n  document.getElementById('wmCancel').onclick = function(){ overlay.classList.remove('show'); };\n  overlay.onclick = function(e){ if(e.target === overlay){ overlay.classList.remove('show'); } };\n  document.getElementById('wmSave').onclick = function(){\n    if(currentRating === 0){ toast('Pon al menos una estrella'); return; }\n    var reviews = getArr(LS_R);\n    reviews.unshift({ id: uid('r'), title: currentItem.title, authors: currentItem.authors, year: currentItem.year, cover: currentItem.cover, rating: currentRating, opinion: (mOpinion.value || '').trim(), date: Date.now(), kind: currentItem.kind === 'comic' ? 'comic' : 'libro' });\n    setArr(LS_R, reviews);\n    if(currentSource === 'wish'){ setArr(LS_W, getArr(LS_W).filter(function(x){ return x.id !== currentItem.id; })); }\n    if(currentSource === 'reading'){ setArr(LS_G, getArr(LS_G).filter(function(x){ return x.id !== currentItem.id; })); }\n    overlay.classList.remove('show'); toast('Valoraci\u00f3n guardada'); render();\n  };\n  function section(titleText, items, builder){\n    var h = document.createElement('h2'); h.className = 'bt-w-h'; h.textContent = titleText; wWrap.appendChild(h);\n    var grid = document.createElement('div'); grid.className = 'bt-ml-grid';\n    for(var i = 0; i < items.length; i++){ grid.appendChild(builder(items[i])); }\n    wWrap.appendChild(grid);\n  }\n  function render(){\n    var wl = getArr(LS_W), rd = getArr(LS_G);\n    wWrap.innerHTML = '';\n    if(rd.length === 0){ if(wl.length === 0){ var p = document.createElement('p'); p.className = 'bt-ml-empty'; p.textContent = 'Nada por aqui todavia. Anade libros o comics con \"+ Wishlist\" o \"Leyendo\" desde Buscar y valorar \/ Mis comics.'; wWrap.appendChild(p); return; } }\n    if(rd.length){ section('\\ud83d\\udcd6 Leyendo ahora (' + rd.length + ')', rd, readingCard); }\n    if(wl.length){ section('\\ud83d\\udccc Quiero leer (' + wl.length + ')', wl, wishCard); }\n  }\n  render();\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Wishlist y lecturas Lo que est\u00e1s leyendo y lo que quieres leer. A\u00f1\u00e1delos desde \u00abBuscar y valorar\u00bb o \u00abMis c\u00f3mics\u00bb. Tu opini\u00f3n Cancelar Guardar valoraci\u00f3n<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-52","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/bibliotea.com\/index.php?rest_route=\/wp\/v2\/pages\/52","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bibliotea.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bibliotea.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bibliotea.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bibliotea.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=52"}],"version-history":[{"count":4,"href":"https:\/\/bibliotea.com\/index.php?rest_route=\/wp\/v2\/pages\/52\/revisions"}],"predecessor-version":[{"id":75,"href":"https:\/\/bibliotea.com\/index.php?rest_route=\/wp\/v2\/pages\/52\/revisions\/75"}],"wp:attachment":[{"href":"https:\/\/bibliotea.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=52"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}