from pathlib import Path
import html,json

root=Path(__file__).resolve().parents[1]
out=root/'site/flow'
def shell(file,title,body):
    value=f'''<!doctype html><html lang="hu"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>{html.escape(title)} · Komplex Logopédia</title><link rel="stylesheet" href="flow.css"></head><body><!-- THESIS: A readable next task and an honest local result. OWN-WORLD: inherited Komplex typography, blue primary actions and clear white surfaces. STORY: understand the offer, act deliberately, read the matching next state. FIRST VIEWPORT: task name, prototype status and clear next useful action. FORM: mobile frontend transaction or full message preview. FINISH: unreviewed and undocumented is unfinished; this build ends with the finish review, the verdict, DESIGN.md, and every shipping raster carrying its provenance --><header><strong>Komplex Logopédia</strong><span>Ügyfélút-bemutató · helyi adatokkal</span></header><main>{body}</main><footer><a href="../index.html">Vissza a teljes ügyfélút vásznára</a></footer><script src="flow.js"></script></body></html>'''
    (out/file).write_text(value)

shell('free-upload.html','Nézzük meg a saját beszédedet','''
<h1>Nézzük meg a saját beszédedet</h1><p>Egy rövid, spontán videóból személyes támpontot kaphatsz arról, mire érdemes figyelned a gyakorlásnál.</p><p class="demo-label">Ez működő bemutató. A kiválasztott videó ezen a böngészőn belül marad, nem kerül feltöltésre, és Rita nem kap értesítést.</p>
<section aria-labelledby="setup"><h2 id="setup">A saját beszéded érdekes</h2><p>Beszélj valamiről, ami közel áll hozzád. Nem kell betanulnod vagy többször újravenni. A kamerát tedd szemmagasságba, az arcod legyen jól megvilágítva, és a mellkasod felső része is látszódjon.</p><img src="../assets/landing/landing-01.png" alt="Szemmagasságban lévő kamera, jó fény és spontán beszéd"><p>A javasolt ingyenes belépőhöz legfeljebb egyperces felvétel tartozik. A visszajelzés a látható és hallható beszédmintáról szól, nem ígér teljes képet minden helyzetről.</p></section>
<form id="free-form" novalidate><h2>Válassz egy videót</h2><label class="field"><span>Videófájl</span><input id="free-video" type="file" accept="video/mp4,video/webm,video/quicktime"></label><button type="button" class="secondary" id="use-fixture">Kipróbálom a jelölt tesztvideóval</button><figure class="preview" id="video-preview" hidden><video controls playsinline preload="metadata" id="selected-video"></video><figcaption id="video-caption"></figcaption><div class="preview-actions"><button type="button" class="text-button" id="replace-video">Másik videót választok</button><button type="button" class="text-button" id="remove-video">Eltávolítom</button></div></figure><p id="file-status" class="status" aria-live="polite">Még nincs kiválasztott videó.</p>
<label class="field"><span>Neved a bemutatóban</span><input id="free-name" autocomplete="off" value="Minta Anna"></label><label class="field"><span>Bemutató emailcím</span><input id="free-email" type="email" autocomplete="off" value="anna@example.com"></label>
<p>A szolgáltatási útban a beküldésről és a személyes válaszról kapnál értesítést. Ehhez külön hírlevél-feliratkozás nem szükséges.</p><label class="check"><input id="free-service" type="checkbox"><span>Értem a videó és a kapcsolati adatok szerepét ebben a helyi bemutatóban.</span></label><label class="check"><input id="free-marketing" type="checkbox"><span>Szeretnék hasznos beszédgyakorlási leveleket és időszakos programmeghívót is. Ez külön, opcionális választás a bemutatóban.</span></label><p id="free-error" class="error" role="alert" hidden></p><button class="primary" type="submit">Beküldöm a bemutatóban</button></form>''')

shell('free-receipt.html','A videóbeküldés bemutatója','''<h1>A következő lépés a személyes visszajelzés</h1><p class="demo-label">A bemutatóban sikeresen rögzítettük a választásodat. Nem történt valódi videófeltöltés vagy értesítés.</p><section id="free-readback"></section><h2>Mire számíthatsz a javasolt útban?</h2><p>Rita a felvételen megfigyelhető beszédedhez ad személyes visszajelzést és egy következő gyakorlási fókuszt. A pontos válaszidőt a valódi indulás előtt kell véglegesíteni.</p><p>A következő képernyőn egy jelölt mintaválaszt látsz. Nem a tesztvideó valódi szakértői értékelése.</p><a class="primary" href="free-feedback.html">Megnézem a mintavisszajelzést</a><a class="secondary" href="free-upload.html">Vissza a saját videóhoz</a>''')

shell('free-feedback.html','Személyes visszajelzés mintája','''<h1>Egy megfigyelés, egy következő fókusz</h1><p class="demo-label">Kitalált mintaválasz. A valódi visszajelzést Rita a résztvevő saját felvétele alapján írja.</p><section class="sample-feedback"><h2>Szia, Anna!</h2><p>Ebben a mintában a mondat első fele nyugodt tempóban halad, a végén viszont gyorsabb lesz a lezárás. Érdemes megfigyelni, hol fogy el a levegőd és hol tudsz szünetet hagyni.</p><p>A következő gyakorlásnál mondj el egy számodra ismerős mondatot. Ne az egy levegővel elmondott hossz legyen a cél. Figyeld meg, mikor marad könnyed a hang, és hagyj időt a levegő beáramlására.</p><p>Egy rövid felvétel nem mutat meg minden beszédhelyzetet. Ha szeretnél rendszeresen gyakorolni, a 14 napos kihívásban konkrét feladatok és napi személyes visszajelzés kísérik a munkát.</p><p>Üdv,<br>Rita</p></section><h2>Ha folytatnád a gyakorlást</h2><p>A program a beszéd alapjait veszi sorra. A napi feladat mellett videót küldesz, személyes visszajelzést kapsz, majd a kihívás után online konzultáció következik.</p><a class="primary" href="../landing/challenge-a.html">Megnézem a 14 napos programot</a><a class="secondary" href="emails.html?topic=nurture-1">Megnézem a következő levél mintáját</a><p>A meghívó önkéntes következő lépés. A heti hasznos levelek és a kohorszmeghívók külön hozzájáruláshoz tartoznak.</p>''')

shell('checkout.html','A kihívás fizetési bemutatója','''<div id="checkout-content"></div><section class="branch-controls"><h2>A fizetési ágak ellenőrzése</h2><p>Az alábbi választások a prototípus állapotai. Nem Stripe-munkamenetek.</p><a data-branch="ready" href="checkout.html">Ajánlat és sikeres bemutató</a><a data-branch="cancel" href="checkout.html?state=cancel">Megszakítás</a><a data-branch="pending" href="checkout.html?state=pending">Függőben</a><a data-branch="error" href="checkout.html?state=error">Hiba és újrapróbálás</a><a data-branch="sold-out" href="checkout.html?state=sold-out">Betelt csoport és várólista</a></section>''')

shell('confirmation.html','Bemutató visszaigazolás és hozzáférés','''<h1>Innen indul a napi gyakorlás</h1><p class="demo-label">A fizetés és a hozzáférés szimulált. Nem történt terhelés, valódi beiratkozás vagy emailküldés.</p><section id="purchase-readback"></section><h2>Mi vár a programban?</h2><ul class="offer-list"><li>14 nap feladatok a hat eredeti témakörből.</li><li>Napi videóbeküldés és napi személyes Rita-visszajelzés a pilot javaslat szerint.</li><li>Napló és önértékelés a saját megfigyeléseidhez.</li><li>Online konzultáció a kihívás után, a folytatás áttekintésére.</li></ul><a class="primary" href="../app/index.html?from=confirmation">Belépek a bemutató programba</a><a class="secondary" href="../app/overview.html">Megnézem mind a 14 napot</a><p>A valódi dátumot, oktatóvideókat, válaszidőt és foglalási lehetőségeket indulás előtt kell megerősíteni.</p>''')

shell('consent.html','Hozzájárulás és levélküldési állapotok','''<h1>A következő üzenetnek legyen oka</h1><p class="demo-label">Ez helyi állapotbemutató. Sem feliratkozást, sem küldést nem indít.</p><label class="check"><input id="consent-marketing" type="checkbox"><span>Opcionális hasznos levelek és programmeghívók</span></label><label class="check"><input id="consent-feedback" type="checkbox"><span>Az ingyenes videóhoz tartozó mintavisszajelzés már megérkezett</span></label><label class="check"><input id="consent-paid" type="checkbox"><span>Már fizető résztvevő a bemutatóban</span></label><label class="check"><input id="consent-promo" type="checkbox"><span>Éppen fix kohorszpromóció fut a bemutatóban</span></label><button class="primary" id="consent-save" type="button">Mentem a bemutató állapotot</button><p class="status" id="consent-status" aria-live="polite"></p><section id="consent-result"></section><h2>Szolgáltatási és opcionális üzenetek</h2><p>A beküldési visszaigazolás, a megígért személyes válasz, a hozzáférés és a résztvevői napi értesítés a szolgáltatás folyamatát segíti. A hasznos heti levél és a program értékesítési sorozata külön hozzájárulást igényel.</p><p>Ha fix kohorszmeghívó sorozat fut, az váltja ki a heti hírlevelet. A két marketingfolyam nem érkezik egyszerre. A már fizető résztvevő a program leveleit kapja, értékesítési emlékeztetőt nem.</p><a class="secondary" href="emails.html">Megnézem a teljes levéltárat</a>''')

shell('emails.html','A teljes levéltár és alternatívák','''<h1>Minden levél a megfelelő lépésnél</h1><p class="demo-label">Teljes A/B szövegek az ügyfélút bemutatójához. Ezek előnézetek, semmit nem küldenek.</p><p>A hasznos heti levél és a fix kohorsz promóciója külön terv. Promóciós időszakban a heti hírlevél helyére a kohorszlevelek kerülnek. A fizető résztvevő nem kap értékesítési emlékeztetőt.</p><label class="field email-picker"><span>Levél kiválasztása</span><select id="email-picker"></select></label><label class="field"><span>Kapcsolódó értesítési nézet</span><select id="notification-channel"><option value="email">Email</option><option value="app">Alkalmazáson belüli jelzés</option><option value="messenger">Messenger-üzenet előnézete</option></select></label><p class="notification-preview" id="notification-preview"></p><section id="email-inventory"></section>''')
print('8 connected flow shells written')
