[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"verticals":3,"tag-package-1":44,"tags-all":78,"search-suggestions":155},[4,20,32],{"id":5,"slug":6,"name":7,"tagline":8,"description":9,"accentFrom":10,"accentTo":11,"icon":12,"defaultLocale":13,"locales":14,"features":16,"position":19},"019fe637-3d33-714b-b57f-23e163ffca0c","dev","Web Development","Read it. Run it. Prove it.","A post a day on modern web development — most with an editable playground and a quiz that explains every answer. Free, no account needed.","violet-500","cyan-400","◇","en",[13,15],"fa",{"courses":17,"paths":17,"articles":17,"exams":18,"flashcards":18,"packages":17,"community":17,"certificates":17,"teams":17,"commerce":17},true,false,0,{"id":21,"slug":22,"name":23,"tagline":24,"description":25,"accentFrom":26,"accentTo":10,"icon":27,"defaultLocale":13,"locales":28,"features":30,"position":31},"019fe637-3dc2-754c-8657-0f175bfee7c6","lang","Languages","Learn a language the way you learn a codebase.","Grammar explained the way good documentation explains an API — one idea at a time, each with a quiz.","amber-400","⌘",[13,15,29],"es",{"courses":18,"paths":18,"articles":17,"exams":18,"flashcards":17,"packages":18,"community":17,"certificates":17,"teams":18,"commerce":18},2,{"id":33,"slug":34,"name":35,"tagline":36,"description":37,"accentFrom":38,"accentTo":39,"icon":40,"defaultLocale":13,"locales":41,"features":42,"position":43},"7b3c16f2-931d-410e-802e-e1fa4edab7de","soft","Soft Skills","The half of the job nobody wrote documentation for.","Weekly, on the parts of working life that decide more than your code does — first weeks, meetings, interviews, promotions, and the people around you. Written from what actually happens, and recorded as a podcast you can listen to on the walk.","emerald-400","teal-300","◉",[13],{"courses":18,"paths":18,"articles":17,"exams":18,"flashcards":18,"packages":18,"community":17,"certificates":18,"teams":18,"commerce":18},3,{"items":45,"meta":75},[46],{"id":47,"slug":48,"title":49,"subtitle":50,"excerpt":51,"coverUrl":52,"locale":13,"readingMinutes":53,"publishedAt":54,"viewCount":55,"likeCount":19,"commentCount":19,"author":56,"vertical":62,"topic":60,"tags":63,"_count":74,"playground":60,"hasQuiz":18,"hasPlayground":18},"01a05242-45d4-724a-b453-6b7432196185","react-multi-step-form-the-complete-guide-with-cheat-sheet","React Multi-Step Form: The Complete Guide (with Cheat Sheet)","You already know how to fix that. You also know that the moment the step index stops living in `useState`, the browser back button, the per-step validation, and the focus ring all become your problem too.","Build a React multi-step form that validates per step, survives a refresh, and stays accessible — the mental model, the traps, and a copy-paste cheat sheet.","\u002Fmedia\u002Fcovers\u002Freact-form-wizard-component-v2.png",20,"2026-08-30T10:41:23.244Z",65,{"id":57,"name":58,"username":59,"avatarUrl":60,"headline":61},"019fe637-3c25-7088-9034-39c9f15dc3c8","Parsa Jiravand","parsa",null,"Frontend engineer · building bestpractic",{"slug":6,"name":7,"accentFrom":10,"accentTo":11},[64,67,70,72],{"slug":65,"name":66,"color":60},"frontend","Frontend",{"slug":68,"name":69,"color":60},"react","React",{"slug":71,"name":71,"color":60},"next",{"slug":73,"name":73,"color":60},"package",{"assessments":19},{"page":76,"perPage":77,"total":76,"totalPages":76},1,12,[79,83,85,89,93,97,101,105,107,111,115,119,122,125,128,131,134,137,140,143,146,149,152],{"slug":80,"name":81,"color":60,"articles":82},"webdev","Webdev",73,{"slug":65,"name":66,"color":60,"articles":84},64,{"slug":86,"name":87,"color":60,"articles":88},"javascript","Javascript",61,{"slug":90,"name":91,"color":60,"articles":92},"css","Css",29,{"slug":94,"name":95,"color":60,"articles":96},"tutorial","Tutorial",13,{"slug":98,"name":99,"color":60,"articles":100},"typescript","Typescript",11,{"slug":102,"name":103,"color":60,"articles":104},"performance","Performance",9,{"slug":68,"name":69,"color":60,"articles":106},7,{"slug":108,"name":109,"color":60,"articles":110},"grammar","Grammar",6,{"slug":112,"name":113,"color":60,"articles":114},"node","Node",5,{"slug":116,"name":117,"color":60,"articles":118},"programming","Programming",4,{"slug":120,"name":121,"color":60,"articles":118},"html","Html",{"slug":123,"name":124,"color":60,"articles":43},"ai","Ai",{"slug":126,"name":127,"color":60,"articles":43},"accessibility","Accessibility",{"slug":129,"name":130,"color":60,"articles":31},"async","Async",{"slug":132,"name":133,"color":60,"articles":31},"english","English",{"slug":135,"name":136,"color":60,"articles":31},"verbs","Verbs",{"slug":138,"name":139,"color":60,"articles":31},"spanish","Spanish",{"slug":141,"name":142,"color":60,"articles":31},"a1","A1",{"slug":144,"name":145,"color":60,"articles":31},"a2","A2",{"slug":147,"name":148,"color":60,"articles":31},"tenses","Tenses",{"slug":150,"name":151,"color":60,"articles":31},"turkish","Turkish",{"slug":153,"name":154,"color":60,"articles":31},"browser","Browser",[156,157,158,159,160,161,162,163,164,165,166,167],{"slug":80,"name":81,"articles":82},{"slug":65,"name":66,"articles":84},{"slug":86,"name":87,"articles":88},{"slug":90,"name":91,"articles":92},{"slug":94,"name":95,"articles":96},{"slug":98,"name":99,"articles":100},{"slug":102,"name":103,"articles":104},{"slug":68,"name":69,"articles":106},{"slug":108,"name":109,"articles":110},{"slug":112,"name":113,"articles":114},{"slug":116,"name":117,"articles":118},{"slug":120,"name":121,"articles":118}]