About this site

Lékárnice s celostním přístupem is an independent publication launched in April 2025 by Lenka Sobkova. If you subscribe today, you'll get full access to the website as well as email newsletters about new content when it's available. Your subscription makes this site possible, and allows Lékárnice s celostním přístupem to continue to exist. Thank you!

Access all areas

By signing up, you'll get access to the full archive of everything that's been published before and everything that's still to come. Your very own private library.

Fresh content, delivered

Stay up to date with new content sent straight to your inbox! No more worrying about whether you missed something because of a pesky algorithm or news feed.

Meet people like you

Join a community of other subscribers who share the same interests.


Start your own thing

Enjoying the experience? Get started for free and set up your very own subscription business using Ghost, the same platform that powers this website.

// databáze přípravků const itemsDB = { vitC_250: { name: 'Celaskon 250 mg', desc: 'Akutní vitamín C pro náročné situace' }, vitC_100: { name: 'Celaskon 100 mg (děti 3–7 let)', desc: 'Akutní vitamín C pro děti' }, zinc_nup: { name: 'Bioaktivní Zinek Nupreme', desc: 'Akutní zinek pro imunitu a regeneraci' }, teaTree: { name: 'Tea tree olej', desc: 'Štípance, mykózy a opary' }, dragon: { name: 'Dračí krev', desc: 'Rány, puchýře, ošklivé štípance' }, charcoal: { name: 'Aktivní uhlí', desc: 'Běžný průjem, nadýmání, žáha' }, influ: { name: 'InfluZinek / Strep Herbal', desc: 'Aktivace imunity přímo v krku' }, enterol: { name: 'Enterol', desc: 'Silnější průjem, i preventivně' }, imodium: { name: 'Imodium', desc: 'Průjem ze stresu / záchranná brzda' }, tussirex: { name: 'Tussirex pastilky', desc: 'Chrání dýchací cesty před viry' }, strepHerbal: { name: 'Lišejníkové pastilky', desc: 'Podpora krčních sliznic' }, auris: { name: 'Aurisclean', desc: 'Preventivní dezinfekce' }, lichoKap: { name: 'Lichořeřišnice kapky', desc: 'Přírodní antibiotikum' }, pinio: { name: 'Pinio Nasal', desc: 'Léčí všechny druhy rýmy' }, samahan: { name: 'Samahan', desc: 'Přírodní Coldrex' }, panthen: { name: 'Panthenol pěna / mléko', desc: 'Hojí spáleniny' }, pycno: { name: 'Pycnogenol', desc: 'Chrání kůži před sluneční alergií / pigmentovými skvrnami' }, trauma: { name: 'Traumaplant', desc: 'Hojí úrazy, pohmožděniny' }, coccul: { name: 'Cocculine', desc: 'Rozpustí cestovní nevolnost' }, travelPop: { name: 'TravelPop', desc: 'Pomoc při cestovní nevolnosti' }, melat: { name: 'Melatonin', desc: 'Spolehlivá pomoc pro usnutí' }, rescue: { name: 'Rescue pastilky', desc: 'Při strachu a úzkosti' } }; function Wizard() { const { useState, useMemo } = React; const [step, setStep] = useState(0); const [ans, setAns] = useState({ dest: '', kidsAges: [], concerns: [] }); // sestavení doporučených položek const items = useMemo(() => { const s = new Set(); // základní vždy ['teaTree', 'dragon', 'charcoal', 'influ', 'zinc_nup'].forEach(x => s.add(x)); // vitamín C podle věku if (ans.kidsAges.includes('3-7')) s.add('vitC_100'); if (ans.kidsAges.includes('8-14') || ans.kidsAges.includes('none')) s.add('vitC_250'); // destinace if (ans.dest === 'sea') { s.add('enterol'); s.add('imodium'); } if (ans.dest === 'mountains') { s.add('enterol'); } if (ans.dest === 'city') { s.add('enterol'); } if (ans.dest === 'exotic') { s.add('enterol'); s.add('imodium'); } // obavy if (ans.concerns.includes('diarrhoea')) s.add('enterol'); if (ans.concerns.includes('bites')) s.add('strepHerbal'); if (ans.concerns.includes('angina')) s.add('tussirex'); if (ans.concerns.includes('ear')) s.add('auris'), s.add('lichoKap'); if (ans.concerns.includes('uti')) s.add('lichoKap'); if (ans.concerns.includes('resp')) s.add('pinio'), s.add('tussirex'), s.add('samahan'); if (ans.concerns.includes('sun')) s.add('panthen'), s.add('pycno'); if (ans.concerns.includes('injury')) s.add('trauma'); if (ans.concerns.includes('motion')) s.add('coccul'), s.add('travelPop'); if (ans.concerns.includes('stress')) s.add('melat'), s.add('rescue'); // zachovat pořadí const order = ['vitC_250', 'vitC_100', 'zinc_nup', 'teaTree', 'dragon', 'charcoal', 'influ', 'enterol', 'imodium', 'tussirex', 'strepHerbal', 'auris', 'lichoKap', 'pinio', 'samahan', 'panthen', 'pycno', 'trauma', 'coccul', 'travelPop', 'melat', 'rescue']; return order.filter(k => s.has(k)).map(k => ({ key: k, ...itemsDB[k] })); }, [ans]); // export do TXT const exportTxt = () => { const lines = ['Cestovní lékárnička na míru', '', ...items.map(i => `• ${i.name} – ${i.desc}`), '', 'Potřebujete poradit?', 'Poradna: https://klub.lenkasobkova.cz/online-poradna/', '']; const blob = new Blob([lines.join('\n')], { type: 'text/plain' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'lekarnicka.txt'; a.click(); URL.revokeObjectURL(url); }; // export do PDF const exportPdf = () => { import('https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js').then(m => { const { jsPDF } = m.jspdf, doc = new jsPDF(); doc.setFontSize(14); doc.text('Cestovní lékárnička na míru', 10, 15); doc.setFontSize(10); let y = 25; items.forEach(i => { doc.text(`• ${i.name} – ${i.desc}`, 10, y); y += 6; if (y > 280) { doc.addPage(); y = 15; } }); doc.save('lekarnicka.pdf'); }); }; // tlačítko pro modál const ModalBtn = ({ type }) => /*#__PURE__*/React.createElement("button", { onClick: () => { const url = type === 'vitC' ? 'https://klub.lenkasobkova.cz/kalkulacka-vitaminu-c-2/' : 'https://klub.lenkasobkova.cz/kalkulacka-selenu-zinku/'; const wrap = document.createElement('div'); Object.assign(wrap.style, { position: 'fixed', inset: 0, background: 'rgba(0,0,0,0.4)', display: 'flex', justifyContent: 'center', alignItems: 'center', zIndex: 999 }); const box = document.createElement('div'); Object.assign(box.style, { background: '#fff', padding: '24px', borderRadius: '16px', maxWidth: '380px', textAlign: 'center' }); const link = document.createElement('a'); link.href = url; link.target = '_blank'; link.style = 'color:#15803d;text-decoration:none;margin-bottom:12px;display:block'; link.textContent = 'Chci si vybrat jinou značku'; const close = document.createElement('button'); close.textContent = 'Zavřít'; close.onclick = () => document.body.removeChild(wrap); Object.assign(close.style, { marginTop: '12px', padding: '8px 16px', background: '#e5e7eb', border: 'none', borderRadius: '8px', cursor: 'pointer' }); box.append(link, close); wrap.append(box); document.body.appendChild(wrap); } }, "\u2753"); // UI komponenty const Card = ({ title, children }) => /*#__PURE__*/React.createElement("div", { style: { maxWidth: 480, width: '90%', margin: '40px auto', padding: 24, background: '#fff', borderRadius: 20, boxShadow: '0 4px 20px rgba(0,0,0,.05)', textAlign: 'center' } }, /*#__PURE__*/React.createElement("h2", { style: { fontSize: '1.4rem', marginBottom: 16 } }, title), children); const Btn = ({ children, onClick, secondary = false, disabled = false }) => /*#__PURE__*/React.createElement("button", { onClick: onClick, disabled: disabled, style: { padding: '8px 16px', border: 'none', borderRadius: 8, margin: '8px', background: secondary ? '#e5e7eb' : '#ecf3eb', cursor: disabled ? 'not-allowed' : 'pointer', opacity: disabled ? 0.5 : 1 } }, children); const Label = ({ children }) => /*#__PURE__*/React.createElement("label", { style: { display: 'block', margin: '8px 0', textAlign: 'left' } }, children); // kroky wizardu if (step === 0) return /*#__PURE__*/React.createElement(Card, { title: "Kam cestujete?" }, ['sea:K moři', 'mountains:Do hor', 'city:Do velkoměsta', 'exotic:Do exotiky'].map(s => { const [v, l] = s.split(':'); return /*#__PURE__*/React.createElement(Label, { key: v }, /*#__PURE__*/React.createElement("input", { type: "radio", checked: ans.dest === v, onChange: () => setAns(a => ({ ...a, dest: v })) }), " ", l); }), /*#__PURE__*/React.createElement("div", { style: { textAlign: 'right' } }, /*#__PURE__*/React.createElement(Btn, { onClick: () => setStep(1), disabled: !ans.dest }, "Dal\u0161\xED"))); if (step === 1) return /*#__PURE__*/React.createElement(Card, { title: "Cestujete s d\u011Btmi? (v\xEDce mo\u017Enost\xED)" }, ['3-7:3–7 let', '8-14:8–14 let', 'none:Všem je víc než 15 let'].map(s => { const [v, l] = s.split(':'); return /*#__PURE__*/React.createElement(Label, { key: v }, /*#__PURE__*/React.createElement("input", { type: "checkbox", checked: ans.kidsAges.includes(v), onChange: e => setAns(a => { let arr = e.target.checked ? [...a.kidsAges.filter(x => x !== 'none'), v] : a.kidsAges.filter(x => x !== v); if (v === 'none') arr = e.target.checked ? ['none'] : []; return { ...a, kidsAges: arr }; }) }), " ", l); }), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Btn, { onClick: () => setStep(0), secondary: true }, "Zp\u011Bt"), /*#__PURE__*/React.createElement(Btn, { onClick: () => setStep(2) }, "Dal\u0161\xED"))); if (step === 2) return /*#__PURE__*/React.createElement(Card, { title: "\u010Ceho se nejv\xEDc boj\xEDte? (v\xEDce mo\u017Enost\xED)" }, [['diarrhoea', 'Průjem a trávicí potíže'], ['bites', 'Štípance'], ['angina', 'Angíny z klimatizace'], ['ear', 'Bolavé oučko'], ['uti', 'Zánět močových cest / mykóza'], ['resp', 'Rýma, kašel, horečka'], ['sun', 'Spáleniny / sluneční alergie'], ['injury', 'Úrazy a natažené svaly'], ['motion', 'Cestovní nevolnost'], ['stress', 'Stres / nespavost']].map(([v, l]) => { return /*#__PURE__*/React.createElement(Label, { key: v }, /*#__PURE__*/React.createElement("input", { type: "checkbox", checked: ans.concerns.includes(v), onChange: e => setAns(a => ({ ...a, concerns: e.target.checked ? [...a.concerns, v] : a.concerns.filter(x => x !== v) })) }), " ", l); }), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Btn, { onClick: () => setStep(1), secondary: true }, "Zp\u011Bt"), /*#__PURE__*/React.createElement(Btn, { onClick: () => setStep(3) }, "Zobrazit seznam"))); // krok 3 – seznam if (step === 3) return /*#__PURE__*/React.createElement(Card, { title: "Va\u0161e doporu\u010Den\xE1 l\xE9k\xE1rni\u010Dka" }, /*#__PURE__*/React.createElement("ul", { style: { listStyle: 'none', padding: 0, textAlign: 'left' } }, items.map(i => /*#__PURE__*/React.createElement("li", { key: i.key, style: { margin: '4px 0' } }, /*#__PURE__*/React.createElement("b", null, i.name), " \u2013 ", i.desc, (i.key === 'vitC_250' || i.key === 'vitC_100') && /*#__PURE__*/React.createElement(ModalBtn, { type: "vitC" }), i.key === 'zinc_nup' && /*#__PURE__*/React.createElement(ModalBtn, { type: "zinc" })))), /*#__PURE__*/React.createElement("div", { style: { textAlign: 'center' } }, /*#__PURE__*/React.createElement(Btn, { onClick: exportTxt }, "St\xE1hnout TXT"), /*#__PURE__*/React.createElement(Btn, { onClick: exportPdf, secondary: true }, "St\xE1hnout PDF"), /*#__PURE__*/React.createElement(Btn, { onClick: () => setStep(4) }, "A co te\u010F?"))); // krok 4 – děkovná stránka return /*#__PURE__*/React.createElement(Card, { title: "D\u011Bkujeme!" }, /*#__PURE__*/React.createElement("h3", { style: { margin: '16px 0' } }, "D\xEDky za sta\u017Een\xED va\u0161\xED cestovn\xED l\xE9k\xE1rni\u010Dky na m\xEDru!"), /*#__PURE__*/React.createElement("p", null, "V\u0161echny informace, jak je d\xE1vkovat v p\u0159\xEDpad\u011B pot\xED\u017E\xED, najdete"), /*#__PURE__*/React.createElement("a", { href: "https://klub.lenkasobkova.cz/knihovna-navodu-ke-zdravi/", target: "_blank", style: { display: 'inline-block', margin: '8px', padding: '10px 20px', background: '#ecf3eb', borderRadius: 8, textDecoration: 'none', color: 'inherit' } }, "v Knihovn\u011B"), /*#__PURE__*/React.createElement("p", null, "Kdyby v\xE1m cokoli nebylo jasn\xE9,"), /*#__PURE__*/React.createElement("a", { href: "https://klub.lenkasobkova.cz/online-poradna/", target: "_blank", style: { display: 'inline-block', margin: '8px', padding: '10px 20px', background: '#ecf3eb', borderRadius: 8, textDecoration: 'none', color: 'inherit' } }, "nev\xE1hejte mi napsat do Poradny"), /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement("b", null, "Nebojte, spolu nemoc p\u0159edb\u011Bhneme!")), /*#__PURE__*/React.createElement("p", null, "Mgr. Lenka Sobkov\xE1", /*#__PURE__*/React.createElement("br", null), "nez\xE1visl\xE1 l\xE9k\xE1rnice,", /*#__PURE__*/React.createElement("br", null), "zam\u011B\u0159en\xE1 na klasickou i p\u0159\xEDrodn\xED l\xE9\u010Dbu"), /*#__PURE__*/React.createElement("img", { src: "https://klub.lenkasobkova.cz/content/images/2025/06/web_dsc06927.jpg", style: { maxWidth: 220, borderRadius: '50%', margin: '16px auto' }, alt: "Mgr. Lenka Sobkov\xE1" })); } // render wizard ReactDOM.createRoot(document.getElementById('lekarnicka-wizard')).render(/*#__PURE__*/React.createElement(Wizard, null));