uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 418
Obunachilar
Ma'lumot yo'q24 soatlar
-17 kunlar
-430 kunlar
Postlar arxiv
ToCode
1 417
ื‘ืจื•ืจ ืื ื™ ืจื•ืื” ืืช ื”ื‘ืื’ ื—ื™ืคื•ืฉ ื‘ืื’ ืขื AI ื”ื•ื ื—ื•ื•ื™ื” ืžืขื ื™ื™ื ืช. ืœื ืžืฉื ื” ืžื” ืื ื™ ืขื•ืฉื” ื” AI ืชืžื™ื“ "ืจื•ืื” ืืช ื”ื‘ืื’" ื•ืชืžื™ื“ ื™ืฉ ืœื• ืจืขื™ื•ื ื•ืช ืžื•ืคืœืื™ื ืื™ืš ืœืคืชื•ืจ ืืช ื”ื‘ืื’ ื”ืืžื™ืชื™ ืื• ื”ืžื“ื•ืžื™ื™ืŸ ืฉื”ื•ื ืจืื”. ื›ื›ื” ื ืจืื” ื”ื—ื™ืคื•ืฉ (ื•ื‘ืกื•ืฃ ื”ืชื™ืงื•ืŸ) ืฉืขืฉื™ื ื• ื”ื™ื•ื: ื ื™ืกื™ื•ืŸ ืจืืฉื•ืŸ - ืžืฆื‘ ืฉืืœื” ืื ื™ ืื•ื”ื‘ ื—ื™ืคื•ืฉื™ื ื‘ืงื•ื“ ื‘ืžืฆื‘ Ask ื›ื™ ื›ื›ื” ื” AI ืœื ืžืชื—ื™ืœ ืœื›ืชื•ื‘ ืชื™ืงื•ื ื™ื ืœื‘ืื’ื™ื ืฉื”ื•ื ืžืžืฆื™ื, ืื‘ืœ ื”ื‘ืขื™ื” ื‘ืžืฆื‘ Ask ื”ื™ื ืฉื—ื™ื™ื‘ื™ื ืœืกืคืง ืœ AI ืืช ื›ืœ ื”ืงื•ื ื˜ืงืกื˜. ื‘ื ื™ื’ื•ื“ ืœ Agent, ื‘ืžืฆื‘ Ask ื”ื•ื ืœื ืžื—ืคืฉ ืœื‘ื“. ื˜ื•ื‘ ื‘ืขื™ืงืจ ื›ืฉืืชื ื™ื•ื“ืขื™ื ืื™ืคื” ื”ื‘ืขื™ื”. ื”ื‘ืื’ ืฉืื ื™ ื—ื™ืคืฉืชื™ ื”ื™ื” ื‘ืขื™ื” ื‘ื‘ืœื•ื’ ืฉืœืคืขืžื™ื ื›ืคืชื•ืจื™ ื”ืฉื™ืชื•ืฃ ืคืชื—ื• ืืช ืžืกืš ื”ืฉื™ืชื•ืฃ ืฉืœ ืœื™ื ืงื“ืื™ืŸ ืื• ืคื™ื™ืกื‘ื•ืง ื‘ื˜ืื‘ ื—ื“ืฉ, ืื‘ืœ ืงืœืงืœื• ืืช ื”ื˜ืื‘ ื”ื ื•ื›ื—ื™ ื•ืฉื™ื ื• ืืช ื” URL ืฉืœื• ืœืžืฉื”ื• ืžื•ืžืฆื. ื”ืชื—ืœืชื™ ื‘ืžืฆื‘ Ask ืขื ืงื•ื“ ื” HTML ืฉืœ ืžืกืš ื”ืฉื™ืชื•ืฃ ื•ืงื™ื‘ืœืชื™ ื”ืžื•ืŸ ืจืขื™ื•ื ื•ืช ืœื ืจืœื•ื•ื ื˜ื™ื™ื. ื ื™ืกื™ื•ืŸ ืฉื ื™ - ืžืฆื‘ ืกื•ื›ืŸ ื™ื“ืขืชื™ ืฉื”ื‘ืื’ ืงืฉื•ืจ ืœ JavaScript ื›ื™ ื”ืงื™ืฉื•ืจ ื›ืŸ ื ืคืชื— ื‘ื˜ืื‘ ื—ื“ืฉ ื›ืžื• ืฉืฆืจื™ืš, ืื‘ืœ ืขื“ื™ื™ืŸ ืœื ื™ื“ืขืชื™ ืื™ืคื” ื‘ื“ื™ื•ืง. ื‘ื ื™ืกื™ื•ืŸ ื”ืฉื ื™ ื›ื‘ืจ ื—ืฉื‘ืชื™ ื‘ื’ื“ื•ืœ, ื‘ื™ืงืฉืชื™ ืžืžืฆื‘ Agent ืœื”ืกื‘ื™ืจ ืืช ื›ืœ ื” JavaScript ืฉื™ื›ื•ืœ ืœื”ืฉืคื™ืข ืขืœ ื”ืœื™ื ืง ื•ื’ื ื”ื•ืกืคืชื™ ืœืงื•ื ื˜ืงืกื˜ ืืช ื›ืœ ืงื‘ืฆื™ ื” JavaScript ืฉืœ ื”ืคืจื•ื™ืงื˜. ื”ื•ื ื‘ืชื’ื•ื‘ื” ื”ืžืฉื™ืš ืœื”ืžืฆื™ื ื‘ืื’ื™ื ืื‘ืœ ืœื ื”ื’ื™ืข ืœืชื•ืฆืื” ื”ื ื›ื•ื ื”. ื ื™ืกื™ื•ืŸ ืฉืœื™ืฉื™ ื•ืคื™ืชืจื•ืŸ - ื”ื“ื‘ืงืช ื” HTML ืžื”ื“ืคื“ืคืŸ ื”ืคื™ืชืจื•ืŸ ื‘ื ื™ืกื™ื•ืŸ ื”ืฉืœื™ืฉื™ ื”ื™ื” ืชื•ืฆืื” ืฉืœ ื™ื•ืชืจ ืžื–ืœ ืžืฉื›ืœ. ื‘ืฉื‘ื™ืœ ืœื”ื•ื›ื™ื— ืœ AI ืฉื™ืฉ ื‘ืขื™ื” ื‘ JavaScript ื”ื“ื‘ืงืชื™ ืืช ื” HTML ืฉืœ ื”ืขืžื•ื“ ืžื”ื“ืคื“ืคืŸ ืœืชื•ืš ื”ืคืจื•ืžืคื˜. ืชืจืื”, ืืžืจืชื™ ืœื•, ื–ื” ืœื™ื ืง ืชืงื™ืŸ ืœื’ืžืจื™ ื”ื‘ืขื™ื” ื—ื™ื™ื‘ืช ืœื”ื™ื•ืช ื‘ JavaScript. ื•ืื– ื” AI ืจืื” ืืช ืžื” ืฉืื ื™ ืœื ืจืื™ืชื™ ื‘ืœื™ื ืง:
<a href="https://www.linkedin.com/shareArticle?mini=true&amp;url=http://localhost:3000/blog/demo-post-4&amp;title=demo+post+4&amp;summary=this+is+a+my+fourth+post+.....Hello+World%21" target="_blank" class="p-2 text-gray-600 transition-colors rounded-full hover:text-white hover:bg-[#0A66C2]" title="Share on LinkedIn" data-turbo="false" onclick="saAutomatedLink(this, 'outbound');">
ืื—ืจื™ ื” URL ืžื•ืคื™ืข ืžืืคื™ื™ืŸ onclick ืฉืžืคืขื™ืœ ืคื•ื ืงืฆื™ื™ืช JavaScript ืฉืžื“ื•ื•ื—ืช ืœ SimpleAnalytics ืขืœ ืื™ืจื•ืข ืœื—ื™ืฆื”. ืื ืœื•ื—ืฆื™ื ืขืœ ื”ืงื™ืฉื•ืจ ืœืคื ื™ ืฉื”ืคื•ื ืงืฆื™ื” ืžื•ื’ื“ืจืช ื“ื‘ืจื™ื ืจืขื™ื ืงื•ืจื™ื. ืืคืฉืจ ืœื“ืžื™ื™ืŸ ื›ืœ ืžื™ื ื™ ืชื™ืงื•ื ื™ื ืื‘ืœ ื‘ืžืงืจื” ืฉืœื™ ืžืžื™ืœื ืจืฆื™ืชื™ ืœื”ื™ืคืจื“ ืž Simple Analytics ืื– ื ื™ืฆืœืชื™ ืืช ื”ื”ื–ื“ืžื ื•ืช ื•ื”ืขื‘ืจืชื™ ืืช ื”ืืชืจ ืœืžืขืจื›ืช ื” Analytics ืฉืœ ืงืœืื•ื“ืคืœื™ื™ืจ (ื—ื™ื ืžื™ืช ื•ืžืžืฉ ื ื—ืžื“ื”) ื•ื”ืชืงืœื” ื”ืžืฉื™ื›ื” ืœืžืงื•ื ื˜ื•ื‘ ื™ื•ืชืจ.

ToCode
1 417
ื˜ื™ืคื•ืกื™ื ื—ื–ืงื™ื ื• AI ืื™ืŸ ืกืคืง ืฉ AI ืื•ื”ื‘ ืžื™ื“ืข ืขืœ ื˜ื™ืคื•ืกื™ื. ื”ื”ื‘ื“ืœ ื‘ื™ืŸ ื”ื›ื•ืชืจืช ื”ื–ื• ืœืคื•ื ืงืฆื™ื” ื‘ืคื™ื™ืชื•ืŸ:
def count_lines(fp: typing.IO):
ืœืคื•ื ืงืฆื™ื” ื”ื–ื•:
def count_lines(fp: str):
ืžืื•ื“ ื‘ืจื•ืจ ื’ื ืœื‘ื ื™ ืื“ื ื•ื’ื ืœ AI ื•ืžืืคืฉืจ ืœ AI ืœื™ื™ืฆืจ ืืช ื”ืžื™ืžื•ืฉ ื”ื ื›ื•ืŸ ืœื›ืœ ื›ื•ืชืจืช. ื™ื•ืชืจ ืžื–ื”, ื›ืฉืื ื™ ืžื‘ืงืฉ ืž Gemini ืœื”ืฉืœื™ื ืžื™ืžื•ืฉ ืฉืœ ืคื•ื ืงืฆื™ื™ืช ืคื™ื™ืชื•ืŸ ืฉืœื ืžื›ื™ืœื” Type Hints ื”ื•ื ืžื•ืกื™ืฃ ืœื™ ืื•ืชื ืžื™ื•ื–ืžืชื•. ื‘ืžืงื‘ื™ืœ ืื ื™ ืžื•ืคืชืข ืœื’ืœื•ืช ืฉื’ื ื‘ืฉืคื•ืช ืฉืœื ื›ื•ืœืœื•ืช Type Hints ืื ื™ ืžืงื‘ืœ ืžื™ืžื•ืฉื™ื ื˜ื•ื‘ื™ื ื•ื›ืžืขื˜ ื‘ืœื™ ื‘ืขื™ื•ืช ื˜ื™ืคื•ืกื™ื. ื‘ langlets ื™ืฉ ืœื™ ื›ื‘ืจ ื› 2,500 ืฉื•ืจื•ืช JavaScript ื•ื” AI ืžืฆืœื™ื— ืœื”ืชืžื•ื“ื“ ืขื ื–ื” ื‘ืœื™ ื˜ืขื•ื™ื•ืช. ื‘ Ruby ืฉืœ ื”ืคืจื•ื™ืงื˜ ื”ื•ื ื›ืŸ ื˜ื•ืขื” ืื‘ืœ ื‘ืขื™ืงืจ ื›ืฉืื ื™ ื›ื•ืชื‘ ืงื•ื“ ืžื‘ืœื‘ืœ. ืžื” ืฉืžื‘ื™ื ืื•ืชื ื• ืœืฉืืœื” - ืขื“ ื›ืžื” ื—ืฉื•ื‘ื™ื ื˜ื™ืคื•ืกื™ื ื—ื–ืงื™ื ื‘ืขื™ื“ืŸ ื” AI? ืฉืืœืชื™ ืืช ืงืœื•ื“ ื•ื”ื•ื ื”ืขืœื” 3 ืžืงืจื™ื ื—ืฉื•ื‘ื™ื ื‘ื”ื ืžืขืจื›ืช ื˜ื™ืคื•ืกื™ื ื”ื™ื ืžืžืฉ ืงืจื™ื˜ื™ืช ืœื”ื‘ื ืช ื”ืงื•ื“: 1. ืงื•ื“ ืฉืžืคื•ืชื— ืœืื•ืจืš ืฉื ื™ื ื‘ืกื˜ื ื“ืจื˜ื™ื ืžืฉืชื ื™ื. 2. ื”ื—ืœืคืช ืžืคืชื—ื™ื ื‘ืฆื•ื•ืช (ืฉื’ื•ืจืžืช ืœืฉื™ื ื•ื™ ื‘ืกื˜ื ื“ืจื˜ื™ื). 3. ืื™ื ื˜ื’ืจืฆื™ื” ื‘ื™ืŸ ืžืขืจื›ื•ืช. ื‘ืžื™ืœื™ื ืื—ืจื•ืช ื”ื—ื•ื›ืžื” ื”ื™ืฉื ื” ื—ื•ื–ืจืช ืื‘ืœ ื‘ืฉื™ื ื•ื™ื™ื ืงื˜ื ื™ื: ืื ืืชื ื™ื›ื•ืœื™ื ืœืฉืžื•ืจ ืขืœ ืกื˜ื ื“ืจื˜ ื’ื‘ื•ื” ืฉืœ ืงื•ื“ ื•ืžื•ื›ื ื™ื ืœืขืฉื•ืช Refactor ืœืขืชื™ื ืงืจื•ื‘ื•ืช (ื–ื” ืงืœ ืžืื™ ืคืขื ืขื ื” AI), ืœื”ื—ื–ื™ืง ืชื™ืขื•ื“ ืžืกื•ื“ืจ ื•ื‘ื“ื™ืงื•ืช ื‘ืชื•ืงืฃ ืื– ืœ AI ื™ื”ื™ื” ืžืื•ื“ ืงืœ ืœืขื‘ื•ื“ ืขืœ ื”ืคืจื•ื™ืงื˜ ืฉืœื›ื ื•ื”ื•ื ืœื ื™ืฆื˜ืจืš Strong Types. ืืชื ืžืžื™ืœื ืœื ื›ื•ืชื‘ื™ื ืืช ื”ืงื•ื“ ืขืฆืžื• ื•ืœื›ืŸ ื’ื ืœื›ื ืœื ื™ื”ื™ื• ื˜ืขื•ื™ื•ืช ื‘ื˜ื™ืคื•ืกื™ื.

ToCode
1 417
ื”ืฉื‘ื•ืข ื‘ื•ื•ื‘ื™ื ืจ - ืฉืจืชื™ MCP ื•ื—ื™ื‘ื•ืจื ืœ Copilot ื‘ืฉื‘ื•ืขื•ืช ื”ืื—ืจื•ื ื™ื ืขื‘ื“ื ื• ืขืœ ืคืจื•ืžืคื˜ื™ื ื•ืจืื™ื ื• ื›ืžื” ื—ืฉื•ื‘ ืœื ืกื— ื ื›ื•ืŸ ืืช ื”ืคืจื•ืžืคื˜ ื•ืื™ืš ืœื‘ื ื•ืช ืœืื˜ ืœืื˜ ืคืจื•ืžืคื˜ื™ื ืฉืขื•ืฉื™ื ื“ื‘ืจื™ื ื’ื“ื•ืœื™ื. ืื‘ืœ ื”ื”ื‘ื˜ื—ื” ื”ื›ื™ ื’ื“ื•ืœื” ืฉืœ AI ื”ื™ื•ื ื”ื™ื ื”ื™ื›ื•ืœืช ืœื—ื‘ืจ ืื•ืชื• ืœื“ื‘ืจื™ื ื‘ืขื•ืœื. ืœืžืขืฉื” ื›ืฉืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘ AI IDE ื›ืžื• ืงื•ืคื™ื™ืœื•ื˜ ืื• ืงืจืกืจ ืื ื—ื ื• ื›ื‘ืจ ืžื—ื•ื‘ืจื™ื ืœื“ื‘ืจื™ื ืžืกื•ื™ืžื™ื ื‘ืขื•ืœื: ื” AI ื™ื›ื•ืœ ืœืงืจื•ื ื•ืœื›ืชื•ื‘ ืงื‘ืฆื™ื ื•ืœืคืขืžื™ื ืœื”ืคืขื™ืœ ืคืงื•ื“ื•ืช. ืฉืจืชื™ MCP ื”ื ื”ื“ืจืš ืœื”ื•ืกื™ืฃ "ื™ื›ื•ืœื•ืช" ื ื•ืกืคื•ืช ืœืื•ืชื• AI IDE. ื›ืœ ืฉืจืช MCP ืฉื ืชืงื™ืŸ ืžืืคืฉืจ ืœ AI ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ ื ื•ืกืฃ ื›ื“ื™ ืœืขื ื•ืช ืขืœ ืคืจื•ืžืคื˜ ืฉืœื ื•. ืœื“ื•ื’ืžื” ืฉืจืช MCP ืฉืœ ื’ื™ื˜ื”ืื‘ ื™ืืคืฉืจ ืœ AI ืœื’ืฉืช ืœืžืื’ืจ ื‘ื’ื™ื˜ื”ืื‘ ืฉืœ ื”ืคืจื•ื™ืงื˜ ื•ืœื”ื‘ื™ืŸ ืื™ื–ื” Issues ืคืชื•ื—ื™ื ื™ืฉ ื›ืš ืฉื ื•ื›ืœ ืœื‘ืงืฉ ืžืžื ื• ืœืชืงืŸ ื‘ืื’ ืžืกื•ื™ื ืฉื›ื‘ืจ ืžืคื•ืจื˜ ื‘ืื•ืชื• Issue. ืฉืจืช MCP ืฉืœ Playwright ืžืืคืฉืจ ืœ AI ืœื”ืจื™ืฅ ื“ืคื“ืคืŸ ื•ืœื‘ืฆืข ืคืขื•ืœื•ืช ื‘ื“ืฃ ืื™ื ื˜ืจื ื˜, ืฉืจืช MCP ืฉืœ ืžื ื•ืข ื—ื™ืคื•ืฉ ื™ืืคืฉืจ ืœ AI ืœื—ืคืฉ ื‘ืื™ื ื˜ืจื ื˜ ื• MCP ืฉืœ ื‘ืกื™ืก ื ืชื•ื ื™ื ื™ืืคืฉืจ ืœ AI ืœื—ื˜ื˜ ื‘ื‘ืกื™ืก ื”ื ืชื•ื ื™ื ื›ื“ื™ ืœื”ื‘ื™ืŸ ืื™ื–ื” ืžื™ื“ืข ื’ืจื ืœื‘ืื’. ื‘ื™ื•ื ื—ืžื™ืฉื™ ื‘ื‘ื•ืงืจ ื ืขื‘ื•ืจ ืขืœ ืžืกืคืจ ืฉืจืชื™ MCP, ื ืชืงื™ืŸ ืื•ืชื ืœืชื•ืš ื” Copilot ื•ื ืจืื” ื‘ืื™ื–ื” ืžืฆื‘ื™ื ื”ื ื™ื›ื•ืœื™ื ืœืขื–ื•ืจ ืœื ื• ืœืงื‘ืœ ื™ื•ืชืจ ืžื—ื‘ืจื ื• ื”ืžืœืื›ื•ืชื™. ื›ืžื• ืชืžื™ื“ ื”ืžืคื’ืฉ ื‘ื—ื™ื ื ืœืœื ื”ืงืœื˜ื”, ื™ืชืงื™ื™ื ื‘ื™ื•ื ื—ืžื™ืฉื™ ื‘ืขืฉืจ ื‘ื‘ื•ืงืจ ื•ื‘ืฉื‘ื™ืœ ืœื”ืฆื˜ืจืฃ ืฆืจื™ืš ืจืง ืœื›ืชื•ื‘ ืืช ื”ืžื™ื™ืœ ื‘ื˜ื•ืคืก ื‘ืงื™ืฉื•ืจ ื•ืœื™ื ืง ืœื–ื•ื ื™ื™ืฉืœื— ืืœื™ื›ื ืœืชื™ื‘ื”: https://tocode.ravpage.co.il/tocodeai ื•ื”ื—ืจื•ืฆื™ื ืฉื‘ื™ื ื™ื›ื ืฉืจื•ืฆื™ื ืœื‘ื•ื ืžื•ื›ื ื™ื ืžื•ื–ืžื ื™ื ืœืงืจื•ื ืื• ืœืจืขื ืŸ ืคื•ืกื˜ ืฉื›ื‘ืจ ื›ืชื‘ืชื™ ืขืœ MCP ื•ืื™ืš ื›ื•ืชื‘ื™ื ืฉืจืช MCP ื‘ืคื™ื™ืชื•ืŸ ื‘ืงื™ืฉื•ืจ ื”ื–ื”: https://www.tocode.co.il/blog/2025-04-mcp-intro ื ืชืจืื” ื‘ื—ืžื™ืฉื™ ื‘ื‘ื•ืงืจ.

ToCode
1 417
className="px-6 py-3 rounded-xl text-white font-bold bg-gradient-to-br from-red-400 to-pink-500 hover:scale-105 active:scale-95 transition transform duration-200 shadow-lg"
          >
            - Decrease
          </button>
          <button
            onClick={reset}
            className="px-6 py-3 rounded-xl text-white font-bold bg-gradient-to-br from-yellow-300 to-orange-400 hover:scale-105 active:scale-95 transition transform duration-200 shadow-lg"
          >
            Reset
          </button>
          <button
            onClick={increment}
            className="px-6 py-3 rounded-xl text-white font-bold bg-gradient-to-br from-green-400 to-blue-500 hover:scale-105 active:scale-95 transition transform duration-200 shadow-lg"
          >
            + Increase
          </button>
        </div>
      </div>
    </div>
  );
}

export { useCounter };
ื•ืขื›ืฉื™ื• ื” Counter ื‘ืขืžื•ื“ ื”ืฉื ื™ ื™ื•ื›ืœ ืœื”ื™ื•ืช ื”ืจื‘ื” ื™ื•ืชืจ ืžื™ื ื™ืžืœื™ืกื˜ื™ ืื• ืขืชื™ื“ื ื™ ืื• ืžื” ืฉื ื‘ื—ืจ ื•ืขื“ื™ื™ืŸ ื”ืœื•ื’ื™ืงื” ืœื ืชืฉืชื ื”. ืžื‘ื ื” ื–ื” ืžืชื—ื‘ืจ ืœื›ื— ื”ืขืœ ืฉืœ ื” AI ืœื–ื”ื•ืช ืชื‘ื ื™ื•ืช ื•ืœืฉื›ืคืœ ืื•ืชืŸ. ื‘ืžืงื•ื ืฉื™ื”ื™ื” ืœื™ ืงื•ื‘ืฅ CSS ืœืืชืจ ื•ื›ืœ HTML ื—ื“ืฉ ืื•ื˜ื•ืžื˜ื™ืช ื™ืงื‘ืœ ืืช ื”ืขื™ืฆื•ื‘ ืžืื•ืชื• ืงื•ื‘ืฅ CSS, ืขื›ืฉื™ื• ื™ืฉ ืœื™ ืงื•ืžืคื•ื ื ื˜ื” ื•ื‘ืฉื‘ื™ืœ ืœื”ืฉืชืžืฉ ื‘ื” ื‘ื“ืฃ ืื—ืจ ื‘ืืชืจ ืื• ื‘ืืชืจ ืื—ืจ ืื ื™ ืขื•ื‘ืจ ื“ืจืš ื” AI
Create a \HomepageCounter\ component based on the existing \AboutpageCounter\ but matching the design to the home page.

ToCode
1 417
ื”ืจื”ื•ืจื™ื ืขืœ ื˜ื™ื™ืœื•ื•ื™ื ื“ ื•ืขื™ืฆื•ื‘ ื‘ืชื•ืš ืงื•ืžืคื•ื ื ื˜ื•ืช ืื—ื“ ื”ืจืขื™ื•ื ื•ืช ืฉื”ื™ื• ืคื•ืคื•ืœืจื™ื™ื ื›ืฉื”ืชื—ืœืชื™ ืœืœืžื•ื“ HTML ื”ื™ื” ื”ืืคืฉืจื•ืช ืœื”ื—ืœื™ืฃ ืขื™ืฆื•ื‘ ืœื—ืœื•ื˜ื™ืŸ ื‘ืืžืฆืขื•ืช ืฉื™ื ื•ื™ CSS. ื–ื” ื”ืžืฉื™ืš ืœืœื•ื•ืช ืื•ืชื ื• ืœืชื•ืš ื”ืื™ืคื™ื•ืŸ ืฉืœ CSS3 ื•ื’ื ืœืžื•ื“ื•ืœื™ื ื—ื“ืฉื™ื ื™ื•ืชืจ ืฉืœ CSS, ื›ื•ืœืœ ื•ื‘ืžื™ื•ื—ื“ ื‘ืžื•ื“ื•ืœื™ื ืฉืœ ืคืœืงืกื‘ื•ืงืก ื•ื’ืจื™ื“. ื”ื’ื™ืฉื” ืื– ื”ื™ืชื” ืฉืืคืฉืจ ื™ื”ื™ื” ืœื›ืชื•ื‘ ืงื‘ืฆื™ CSS ืฉื•ื ื™ื ื›ื“ื™ ืœื™ื™ืฆืจ ืขื™ืฆื•ื‘ื™ื ืžืื•ื“ ืฉื•ื ื™ื ืœืื•ืชื” ืžืขืจื›ืช. ื”ืฉืชืžืฉื ื• ื‘ JavaScript ื›ื“ื™ ืœืฉื ื•ืช ืงืœืืกื™ื, ืื‘ืœ ื”ื’ื“ืจืช ื”ืขื™ืฆื•ื‘ ืขืฆืžื” ืฉื”ืชืื™ืžื” ืœืงืœืืกื™ื ืืœื” ื”ื’ื™ืขื” ืžืงื•ื‘ืฅ CSS ืฉืืžื•ืจ ืœื”ื™ื•ืช ืงืœ ืœืชื—ื–ื•ืงื” ื•ื”ื—ืœืคื”. ืื ื™ ืžื•ื“ื” ืฉื–ื” ืœื ืžืžืฉ ืขื‘ื“. ื‘ื”ืจื‘ื” ืืชืจื™ื ืฉื™ื ื•ื™ ืขื™ืฆื•ื‘ ื“ืจืฉ ื’ื ืฉื™ื ื•ื™ ื‘ืžื‘ื ื” ื” HTML ื•ืจืื™ื ื• ื”ืจื‘ื” ืžืขืงืคื™ื ื›ืžื• ืœื›ืชื•ื‘ ืืช ืื•ืชื• ืงื˜ืข ื‘ืขืžื•ื“ ืคืขืžื™ื™ื ื‘ HTML ื•ืœื”ื—ืœื™ื˜ ืžืชื•ืš CSS ืื™ื–ื” ืžื”ื ืœื”ืฆื™ื’. ื•ื‘ื›ืœ ื–ืืช ื”ื™ื” ืžืฉื”ื• ืงืกื•ื ื‘ื—ืœื•ื ื”ื–ื” ืฉืืคืฉืจ ื™ื”ื™ื” ืœื‘ื ื•ืช Theme ืฉื•ื ื” ืœืžืขืจื›ืช ืจืง ื‘ืืžืฆืขื•ืช ืงื•ื‘ืฅ CSS. ื”ื™ื•ื ืขื ืจื™ืืงื˜ ื•ื˜ื™ื™ืœื•ื•ื™ื ื“ ื ืจืื” ืฉื–ืจืงื ื• ืืช ื”ื—ืœื•ื ื”ื–ื” ืœื—ืœื•ื˜ื™ืŸ. ื”ื ื” ืงื•ืžืคื•ื ื ื˜ืช ืžื•ื ื” ืœื—ื™ืฆื•ืช ื”ืื”ื•ื‘ื” ืขืœื™ื™:
import React, { useState } from "react";

export default function ShinyCounter() {
  const [count, setCount] = useState(0);

  return (
    <div className="min-h-screen flex items-center justify-center bg-gradient-to-r from-pink-400 via-yellow-300 to-purple-500">
      <div className="bg-white bg-opacity-20 backdrop-blur-lg border border-white border-opacity-30 rounded-2xl p-10 shadow-2xl text-center">
        <h1 className="text-5xl font-extrabold text-white drop-shadow-md mb-6">
          Shiny Counter
        </h1>
        <div className="text-7xl font-bold text-white drop-shadow-lg mb-6">
          {count}
        </div>
        <div className="flex gap-4 justify-center">
          <button
            onClick={() => setCount(count - 1)}
            className="px-6 py-3 rounded-xl text-white font-bold bg-gradient-to-br from-red-400 to-pink-500 hover:scale-105 active:scale-95 transition transform duration-200 shadow-lg"
          >
            - Decrease
          </button>
          <button
            onClick={() => setCount(0)}
            className="px-6 py-3 rounded-xl text-white font-bold bg-gradient-to-br from-yellow-300 to-orange-400 hover:scale-105 active:scale-95 transition transform duration-200 shadow-lg"
          >
            Reset
          </button>
          <button
            onClick={() => setCount(count + 1)}
            className="px-6 py-3 rounded-xl text-white font-bold bg-gradient-to-br from-green-400 to-blue-500 hover:scale-105 active:scale-95 transition transform duration-200 shadow-lg"
          >
            + Increase
          </button>
        </div>
      </div>
    </div>
  );
}
ืื™ืŸ ืื™ืš ืœืฉื ื•ืช ืœื” ืืช ื” CSS ื›ื“ื™ ืœืงื‘ืœ ืขื™ืฆื•ื‘ ืื—ืจ ืื• ืœื”ืฉืชืžืฉ ื‘ื” ื‘ืขืžื•ื“ ืื—ืจ ื•ืฉื”ื™ื ืชืงื‘ืœ ืืช ื”ืขื™ืฆื•ื‘ ืžื”ืขืžื•ื“. ื–ืืช ื”ืงื•ืžืคื•ื ื ื˜ื”. ื–ื” ื”ืขื™ืฆื•ื‘ ืฉืœื”. Take it or leave it. ื”ื’ื™ืฉื” ื”ื™ื•ื ืจื•ืื” ืืช ื” HTML, ื” CSS ื•ื” JavaScript ื‘ืชื•ืจ ื™ื—ื™ื“ื” ืื—ืช. ื‘ืฉื‘ื™ืœ ืœืฉื ื•ืช ืืช ื”ืขื™ืฆื•ื‘ ืขืœื™ื ื• ืœื›ืชื•ื‘ ืงื•ืžืคื•ื ื ื˜ื” ืื—ืจืช. ื–ื” ื—ืœืง ืžื”ื—ืฉื™ื‘ื•ืช ืฉืœ ื”ื•ืฆืืช ื”ืœื•ื’ื™ืงื” ืœ Hook, ื›ืœื•ืžืจ ื‘ืกื™ืคื•ืจ ืฉืœ ื” Counter ื ื•ื›ืœ ืœื›ืชื•ื‘:
import React from "react";

function useCounter(initialValue = 0) {
  const [count, setCount] = React.useState(initialValue);

  const increment = () => setCount(count + 1);
  const decrement = () => setCount(count - 1);
  const reset = () => setCount(initialValue);

  return { count, increment, decrement, reset };
}

export default function ShinyCounter() {
  const { count, increment, decrement, reset } = useCounter();

  return (
    <div className="min-h-screen flex items-center justify-center bg-gradient-to-r from-pink-400 via-yellow-300 to-purple-500">
      <div className="bg-white bg-opacity-20 backdrop-blur-lg border border-white border-opacity-30 rounded-2xl p-10 shadow-2xl text-center">
        <h1 className="text-5xl font-extrabold text-white drop-shadow-md mb-6">
          Shiny Counter
        </h1>
        <div className="text-7xl font-bold text-white drop-shadow-lg mb-6">
          {count}
        </div>
        <div className="flex gap-4 justify-center">
          <button
            onClick={decrement}

ToCode
1 417
className="px-6 py-3 rounded-xl text-white font-bold bg-gradient-to-br from-red-400 to-pink-500 hover:scale-105 active:scale-95 transition transform duration-200 shadow-lg"
          >
            - Decrease
          </button>
          <button
            onClick={reset}
            className="px-6 py-3 rounded-xl text-white font-bold bg-gradient-to-br from-yellow-300 to-orange-400 hover:scale-105 active:scale-95 transition transform duration-200 shadow-lg"
          >
            Reset
          </button>
          <button
            onClick={increment}
            className="px-6 py-3 rounded-xl text-white font-bold bg-gradient-to-br from-green-400 to-blue-500 hover:scale-105 active:scale-95 transition transform duration-200 shadow-lg"
          >
            + Increase
          </button>
        </div>
      </div>
    </div>
  );
}

export { useCounter };
ื•ืขื›ืฉื™ื• ื” Counter ื‘ืขืžื•ื“ ื”ืฉื ื™ ื™ื•ื›ืœ ืœื”ื™ื•ืช ื”ืจื‘ื” ื™ื•ืชืจ ืžื™ื ื™ืžืœื™ืกื˜ื™ ืื• ืขืชื™ื“ื ื™ ืื• ืžื” ืฉื ื‘ื—ืจ ื•ืขื“ื™ื™ืŸ ื”ืœื•ื’ื™ืงื” ืœื ืชืฉืชื ื”. ืžื‘ื ื” ื–ื” ืžืชื—ื‘ืจ ืœื›ื— ื”ืขืœ ืฉืœ ื” AI ืœื–ื”ื•ืช ืชื‘ื ื™ื•ืช ื•ืœืฉื›ืคืœ ืื•ืชืŸ. ื‘ืžืงื•ื ืฉื™ื”ื™ื” ืœื™ ืงื•ื‘ืฅ CSS ืœืืชืจ ื•ื›ืœ HTML ื—ื“ืฉ ืื•ื˜ื•ืžื˜ื™ืช ื™ืงื‘ืœ ืืช ื”ืขื™ืฆื•ื‘ ืžืื•ืชื• ืงื•ื‘ืฅ CSS, ืขื›ืฉื™ื• ื™ืฉ ืœื™ ืงื•ืžืคื•ื ื ื˜ื” ื•ื‘ืฉื‘ื™ืœ ืœื”ืฉืชืžืฉ ื‘ื” ื‘ื“ืฃ ืื—ืจ ื‘ืืชืจ ืื• ื‘ืืชืจ ืื—ืจ ืื ื™ ืขื•ื‘ืจ ื“ืจืš ื” AI
Create a \HomepageCounter\ component based on the existing \AboutpageCounter\ but matching the design to the home page.

ToCode
1 417
ื”ืจื”ื•ืจื™ื ืขืœ ื˜ื™ื™ืœื•ื•ื™ื ื“ ื•ืขื™ืฆื•ื‘ ื‘ืชื•ืš ืงื•ืžืคื•ื ื ื˜ื•ืช ืื—ื“ ื”ืจืขื™ื•ื ื•ืช ืฉื”ื™ื• ืคื•ืคื•ืœืจื™ื™ื ื›ืฉื”ืชื—ืœืชื™ ืœืœืžื•ื“ HTML ื”ื™ื” ื”ืืคืฉืจื•ืช ืœื”ื—ืœื™ืฃ ืขื™ืฆื•ื‘ ืœื—ืœื•ื˜ื™ืŸ ื‘ืืžืฆืขื•ืช ืฉื™ื ื•ื™ CSS. ื–ื” ื”ืžืฉื™ืš ืœืœื•ื•ืช ืื•ืชื ื• ืœืชื•ืš ื”ืื™ืคื™ื•ืŸ ืฉืœ CSS3 ื•ื’ื ืœืžื•ื“ื•ืœื™ื ื—ื“ืฉื™ื ื™ื•ืชืจ ืฉืœ CSS, ื›ื•ืœืœ ื•ื‘ืžื™ื•ื—ื“ ื‘ืžื•ื“ื•ืœื™ื ืฉืœ ืคืœืงืกื‘ื•ืงืก ื•ื’ืจื™ื“. ื”ื’ื™ืฉื” ืื– ื”ื™ืชื” ืฉืืคืฉืจ ื™ื”ื™ื” ืœื›ืชื•ื‘ ืงื‘ืฆื™ CSS ืฉื•ื ื™ื ื›ื“ื™ ืœื™ื™ืฆืจ ืขื™ืฆื•ื‘ื™ื ืžืื•ื“ ืฉื•ื ื™ื ืœืื•ืชื” ืžืขืจื›ืช. ื”ืฉืชืžืฉื ื• ื‘ JavaScript ื›ื“ื™ ืœืฉื ื•ืช ืงืœืืกื™ื, ืื‘ืœ ื”ื’ื“ืจืช ื”ืขื™ืฆื•ื‘ ืขืฆืžื” ืฉื”ืชืื™ืžื” ืœืงืœืืกื™ื ืืœื” ื”ื’ื™ืขื” ืžืงื•ื‘ืฅ CSS ืฉืืžื•ืจ ืœื”ื™ื•ืช ืงืœ ืœืชื—ื–ื•ืงื” ื•ื”ื—ืœืคื”. ืื ื™ ืžื•ื“ื” ืฉื–ื” ืœื ืžืžืฉ ืขื‘ื“. ื‘ื”ืจื‘ื” ืืชืจื™ื ืฉื™ื ื•ื™ ืขื™ืฆื•ื‘ ื“ืจืฉ ื’ื ืฉื™ื ื•ื™ ื‘ืžื‘ื ื” ื” HTML ื•ืจืื™ื ื• ื”ืจื‘ื” ืžืขืงืคื™ื ื›ืžื• ืœื›ืชื•ื‘ ืืช ืื•ืชื• ืงื˜ืข ื‘ืขืžื•ื“ ืคืขืžื™ื™ื ื‘ HTML ื•ืœื”ื—ืœื™ื˜ ืžืชื•ืš CSS ืื™ื–ื” ืžื”ื ืœื”ืฆื™ื’. ื•ื‘ื›ืœ ื–ืืช ื”ื™ื” ืžืฉื”ื• ืงืกื•ื ื‘ื—ืœื•ื ื”ื–ื” ืฉืืคืฉืจ ื™ื”ื™ื” ืœื‘ื ื•ืช Theme ืฉื•ื ื” ืœืžืขืจื›ืช ืจืง ื‘ืืžืฆืขื•ืช ืงื•ื‘ืฅ CSS. ื”ื™ื•ื ืขื ืจื™ืืงื˜ ื•ื˜ื™ื™ืœื•ื•ื™ื ื“ ื ืจืื” ืฉื–ืจืงื ื• ืืช ื”ื—ืœื•ื ื”ื–ื” ืœื—ืœื•ื˜ื™ืŸ. ื”ื ื” ืงื•ืžืคื•ื ื ื˜ืช ืžื•ื ื” ืœื—ื™ืฆื•ืช ื”ืื”ื•ื‘ื” ืขืœื™ื™:
import React, { useState } from "react";

export default function ShinyCounter() {
  const [count, setCount] = useState(0);

  return (
    <div className="min-h-screen flex items-center justify-center bg-gradient-to-r from-pink-400 via-yellow-300 to-purple-500">
      <div className="bg-white bg-opacity-20 backdrop-blur-lg border border-white border-opacity-30 rounded-2xl p-10 shadow-2xl text-center">
        <h1 className="text-5xl font-extrabold text-white drop-shadow-md mb-6">
          Shiny Counter
        </h1>
        <div className="text-7xl font-bold text-white drop-shadow-lg mb-6">
          {count}
        </div>
        <div className="flex gap-4 justify-center">
          <button
            onClick={() => setCount(count - 1)}
            className="px-6 py-3 rounded-xl text-white font-bold bg-gradient-to-br from-red-400 to-pink-500 hover:scale-105 active:scale-95 transition transform duration-200 shadow-lg"
          >
            - Decrease
          </button>
          <button
            onClick={() => setCount(0)}
            className="px-6 py-3 rounded-xl text-white font-bold bg-gradient-to-br from-yellow-300 to-orange-400 hover:scale-105 active:scale-95 transition transform duration-200 shadow-lg"
          >
            Reset
          </button>
          <button
            onClick={() => setCount(count + 1)}
            className="px-6 py-3 rounded-xl text-white font-bold bg-gradient-to-br from-green-400 to-blue-500 hover:scale-105 active:scale-95 transition transform duration-200 shadow-lg"
          >
            + Increase
          </button>
        </div>
      </div>
    </div>
  );
}
ืื™ืŸ ืื™ืš ืœืฉื ื•ืช ืœื” ืืช ื” CSS ื›ื“ื™ ืœืงื‘ืœ ืขื™ืฆื•ื‘ ืื—ืจ ืื• ืœื”ืฉืชืžืฉ ื‘ื” ื‘ืขืžื•ื“ ืื—ืจ ื•ืฉื”ื™ื ืชืงื‘ืœ ืืช ื”ืขื™ืฆื•ื‘ ืžื”ืขืžื•ื“. ื–ืืช ื”ืงื•ืžืคื•ื ื ื˜ื”. ื–ื” ื”ืขื™ืฆื•ื‘ ืฉืœื”. Take it or leave it. ื”ื’ื™ืฉื” ื”ื™ื•ื ืจื•ืื” ืืช ื” HTML, ื” CSS ื•ื” JavaScript ื‘ืชื•ืจ ื™ื—ื™ื“ื” ืื—ืช. ื‘ืฉื‘ื™ืœ ืœืฉื ื•ืช ืืช ื”ืขื™ืฆื•ื‘ ืขืœื™ื ื• ืœื›ืชื•ื‘ ืงื•ืžืคื•ื ื ื˜ื” ืื—ืจืช. ื–ื” ื—ืœืง ืžื”ื—ืฉื™ื‘ื•ืช ืฉืœ ื”ื•ืฆืืช ื”ืœื•ื’ื™ืงื” ืœ Hook, ื›ืœื•ืžืจ ื‘ืกื™ืคื•ืจ ืฉืœ ื” Counter ื ื•ื›ืœ ืœื›ืชื•ื‘:
import React from "react";

function useCounter(initialValue = 0) {
  const [count, setCount] = React.useState(initialValue);

  const increment = () => setCount(count + 1);
  const decrement = () => setCount(count - 1);
  const reset = () => setCount(initialValue);

  return { count, increment, decrement, reset };
}

export default function ShinyCounter() {
  const { count, increment, decrement, reset } = useCounter();

  return (
    <div className="min-h-screen flex items-center justify-center bg-gradient-to-r from-pink-400 via-yellow-300 to-purple-500">
      <div className="bg-white bg-opacity-20 backdrop-blur-lg border border-white border-opacity-30 rounded-2xl p-10 shadow-2xl text-center">
        <h1 className="text-5xl font-extrabold text-white drop-shadow-md mb-6">
          Shiny Counter
        </h1>
        <div className="text-7xl font-bold text-white drop-shadow-lg mb-6">
          {count}
        </div>
        <div className="flex gap-4 justify-center">
          <button
            onClick={decrement}

ToCode
1 417
3. ื™ืฆื™ืจืช ื“ืคื™ ืคืขื™ืœื•ืช ื—ื“ืฉื™ื - ืื ืชื›ื ืกื• ืœืื—ื“ ื”ืงื•ืจืกื™ื ื‘ืœืื ื’ืœื˜ืก ืชืจืื• ืฉื”ื ืžื•ืจื›ื‘ื™ื ืžื“ืคื™ ืคืขื™ืœื•ื™ื•ืช ืžืกื•ื’ื™ื ืฉื•ื ื™ื ื›ืžื• ื”ืชืืžืช ืžืฉืคื˜ ืœืชืจื’ื•ื, ื”ืจื›ื‘ืช ืžืฉืคื˜ ืžื‘ื ืง ืžื™ืœื™ื, ื”ืชืืžืช ืžื™ืœื™ื ืœืชืจื’ื•ืžื™ื ื•ืขื•ื“. ื‘ืขื‘ืจ ื”ืฉืงืขืชื™ ื”ืจื‘ื” ืžื—ืฉื‘ื” ื‘ื‘ื ื™ื™ืช ืื‘ืกื˜ืจืงืฆื™ื•ืช ื›ื“ื™ ืฉืืคืฉืจ ื™ื”ื™ื” ืœื‘ื ื•ืช "ื“ืคื™ ืคืขื™ืœื•ืช" ื—ื“ืฉื™ื ื‘ืงืœื•ืช. ื–ื” ื”ื™ื” ืžืืชื’ืจ ื›ื™ ืžืฆื“ ืื—ื“ ืฆืจื™ืš ืงื•ืžืคื•ื ื ื˜ื•ืช ืžืฉื•ืชืคื•ืช ืฉื ืจืื•ืช ื“ื•ืžื” (Design System ืื—ื™ื“) ืื‘ืœ ืžืฆื“ ืฉื ื™ ื”ื”ืชื ื”ื’ื•ืช ืฉืœ ื›ืœ ืžืกืš ื™ื›ื•ืœื” ืœื”ื™ื•ืช ืžืื•ื“ ืฉื•ื ื”. ื‘ืขื–ืจืช AI ืื ื™ ื™ื›ื•ืœ ื”ื™ื•ื ืœื™ืฆื•ืจ ื“ืคื™ ืคืขื™ืœื•ื™ื•ืช ื—ื“ืฉื™ื ื‘ืคืจื•ืžืคื˜ ืื—ื“ ื•ื›ืžืขื˜ ืชืžื™ื“ ืžืงื‘ืœ ืชื•ืฆืื” ื˜ื•ื‘ื” ืžื”ืคืจื•ืžืคื˜ ื”ืจืืฉื•ืŸ. ื›ืœ ืžื” ืฉืฆืจื™ืš ื–ื” ืœื”ื“ื‘ื™ืง ืืช ื”ืงื•ื“ ืฉืœ 3-4 ื“ืคื™ ืคืขื™ืœื•ื™ื•ืช ื•ืœื‘ื“ ื” AI ืžื‘ื™ืŸ ืืช ื”ืชื‘ื ื™ืช, ืžื” ืžืฉื•ืชืฃ, ืœืคื™ ืื™ื–ื” ืกื˜ื ื“ืจื˜ื™ื ื›ื•ืชื‘ื™ื ืืช ื”ืงื•ื“ ื•ืžืื™ืคื” ืžื’ื™ืข ื”ืžื™ื“ืข. ื›ืŸ ืœื›ืœ ื“ืฃ ื™ืฉ ืืช ื”ืืชื’ืจื™ื ืฉืœื• ืื‘ืœ ื”ื™ืชืจื•ืŸ ืฉืื ื™ ืžืฆืœื™ื— ื‘ื›ืชื™ื‘ืช ื“ืฃ ืคืขื™ืœื•ืช ื—ื“ืฉ ืœืงื‘ืœ ื‘ืกื™ืก ืจืืฉื•ื ื™ ืฉื ืจืื” ืžืขื•ืฆื‘ ืœืคื™ ื”ืžื‘ื ื” ืฉืœ ื”ืžืขืจื›ืช ื•ืื– ืื ื™ ื™ื›ื•ืœ ืœื”ืชืžืงื“ ื‘ JavaScript ื•ื‘ CSS ืฉืœ ืื•ืชื• ื“ืฃ ืคืขื™ืœื•ืช ื›ื“ื™ ืœืกื“ืจ ืื•ืชื•. ืฉื•ืจื” ืชื—ืชื•ื ื” ื”ืขื‘ื•ื“ื” ืขื AI ืฉื•ื ื” ื‘ื™ืŸ ื”ื“ื‘ืจื™ื ื”ืงืฉื™ื ืœื“ื‘ืจื™ื ื”ืงืœื™ื: 1. ื‘ื“ื‘ืจื™ื ื”ืงืฉื™ื, ื›ืžื• ืฉื™ื ื•ื™ื™ ืืจื›ื™ื˜ืงื˜ื•ืจื”, ื” AI ืžืืคืฉืจ ืœื™ ืœื”ืฉืงื™ืข ื™ื•ืชืจ ื–ืžืŸ ื‘ื—ืฉื™ื‘ื” ื•ืœื”ื‘ื™ืŸ ืื™ืคื” ืื ื™ ืจื•ืฆื” ื›ืœ ื—ืœืง ื‘ืคืจื•ื™ืงื˜. ื”ื•ื ืžืืคืฉืจ ืœื™ ืœืฉื ื•ืช ืืช ื“ืขืชื™, ืœื ืกื•ืช ืžื‘ื ื™ื ืฉื•ื ื™ื ื•ื”ืฉื™ื—ื•ืช ื•ื‘ื ื™ื™ืช ื”ืคืจื•ืžืคื˜ ื•ื”ืชื•ื›ื ื™ืช ื–ื” ื—ืœืง ืžืชื”ืœื™ืš ื”ื”ื‘ื ื” ื•ื”ื—ืฉื™ื‘ื”. 2. ื‘ื“ื‘ืจื™ื ื”ืงืœื™ื, ื•ื‘ืขื™ืงืจ ืคื™ืชื•ื— ืคื™ืฆ'ืจื™ื ื‘ืชื•ืš ืขื™ืฆื•ื‘ ื•ืืจื›ื™ื˜ืงื˜ื•ืจื” ืงื™ื™ืžืช, ื” AI ื™ื›ื•ืœ ืœืจื•ืฅ ืžืื•ื“ ืžื”ืจ ื•ืœืชืช ืžืื•ืช ื•ืืœืคื™ ืฉื•ืจื•ืช ืงื•ื“ ืฉืœื ืฉื•ื‘ืจื™ื ืฉื•ื ื“ื‘ืจ. ื’ื ื›ืฉื™ืฉ ื‘ื”ื ื‘ืื’ื™ื ืื•ืชื ื‘ืื’ื™ื ืชื—ื•ืžื™ื ื‘ืชื•ืš ืคื•ื ืงืฆื™ื” ืื• ืงืœืืก ื‘ื•ื“ื“ ื•ืœื ืžืฉืคื™ืขื™ื ืขืœ ื”ืžื‘ื ื” ืฉืœ ื›ืœ ื”ืžืขืจื›ืช. ื”ื‘ื ืช ื”ื”ื‘ื“ืœ ื‘ื™ืŸ ืคื™ืฆ'ืจื™ื ืงืฉื™ื ืœืงืœื™ื ื”ื™ื ืื—ื“ ื”ืžืคืชื—ื•ืช ืœืขื‘ื•ื“ื” ื™ืขื™ืœื” ืขื AI ื•ืžื™ืžื•ืฉ ืคื™ืฆ'ืจื™ื ืžื”ืจ ื‘ืœื™ ืœืคื’ื•ืข ื‘ืื™ื›ื•ืช.

ToCode
1 417
ื“ื‘ืจื™ื ืฉ AI ืขืฉื” ืžืžืฉ ื˜ื•ื‘ ื‘ื•ื•ื‘ื™ื ืจ ืืชืžื•ืœ ื“ื™ื‘ืจื ื• ืขืœ ืื™ืš ืœื’ืฉืช ืœืฉื™ื ื•ื™ื™ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื’ื“ื•ืœื™ื ืขื AI. ืจืื™ื ื• ื›ืžื” ื—ืฉื•ื‘ ืœื”ืฉืงื™ืข ื–ืžืŸ ื‘ืœื‘ื ื•ืช ืชื•ื›ื ื™ืช ืžืจืืฉ ื‘ืขื–ืจืช ืžืฆื‘ Ask ืฉืœ ื” AI, ืื™ืš ืžืฉืคืจื™ื ืืช ื”ืชื•ื›ื ื™ืช ื‘ืขืฆืžื ื• ืื• ื‘ืขื–ืจืช ืจืขื™ื•ื ื•ืช ืฉืœ ืื•ืชื• AI ื•ืื™ืš ื‘ืกื•ืฃ ื”ื•ืคื›ื™ื ืื•ืชื” ืœืชื•ื›ื ื™ืช ืขื‘ื•ื“ื” ืžืกื•ื“ืจืช, ืงื•ื‘ืฅ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืžื™ืžื•ืฉ. ืœืงืจืืช ืกื•ืฃ ื”ื•ื•ื‘ื™ื ืจ ืขืœืชื” ืฉืืœื” ื—ืฉื•ื‘ื” - ืื ืื ื—ื ื• "ืžื‘ื–ื‘ื–ื™ื" ื›ืœ ื›ืš ื”ืจื‘ื” ื–ืžืŸ ื‘ืื™ื˜ืจืฆื™ื” ืขืœ ื”ืคืจื•ืžืคื˜ื™ื ื•ื‘ืžื—ืฉื‘ื” ืขืœ ื›ืœ ืคืจื˜ ืงื˜ืŸ, ืื•ืœื™ ื”ื™ื” ืขื“ื™ืฃ ืœื›ืชื•ื‘ ืืช ื”ืฉื™ื ื•ื™ ื”ื–ื” ื›ื‘ืจ ื™ื“ื ื™ืช? ื—ืœืง ืžื”ืฉื™ื ื•ื™ื™ื ื‘ืžืขืจื›ืช ื”ื ื‘ืืžืช ืฉื™ื ื•ื™ื™ื ืงืฉื™ื. ื”ื ื“ื•ืจืฉื™ื ื”ื—ืœื˜ื•ืช ื›ืžื• ืื™ื–ื” ื˜ื‘ืœืื•ืช ื•ืขืžื•ื“ื•ืช ื—ื“ืฉื•ืช ื ื•ืกื™ืฃ ืœื‘ืกื™ืก ื”ื ืชื•ื ื™ื, ืื™ืคื” ื›ืœ ื—ืœืง ื‘ืงื•ื“ ื™ืฉื‘, ื‘ืื™ื–ื” ืžืงืจื™ ืงืฆื” ื ืจืฆื” ืœื˜ืคืœ ื•ืื™ื–ื” ืžืงืจื™ื ืคืฉื•ื˜ ืœื ืžืกืคื™ืง ื—ืฉื•ื‘ื™ื ื•ื”ื˜ื™ืคื•ืœ ื‘ื”ื ืจืง ื™ืกื‘ืš ืืช ื”ืงื•ื“ ื™ื•ืชืจ ืžื“ื™ ื•ืฉืœื ืœืฆื•ืจืš. ืื™ื–ื” ื—ืœืงื™ื ื‘ืงื•ื“ ืื ื—ื ื• ืจื•ืฆื™ื ืœื‘ื ื•ืช ื‘ืฆื•ืจื” ืฉื™ื”ื™ื” ืงืœ ืœืฉื ื•ืช ื‘ืขืชื™ื“ ื•ืื™ื–ื” ื“ื‘ืจื™ื ืื ื—ื ื• ื‘ื˜ื•ื—ื™ื ืฉื™ื™ืฉืืจื• ืื™ืชื ื• ืœืชืงื•ืคื” ืืจื•ื›ื”. ื”ื—ืœื˜ื•ืช ื–ื” ืœื ื”ืฆื“ ื”ื—ื–ืง ืฉืœ ื” AI. ื”ื•ื ื™ื›ื•ืœ ืœืขื–ื•ืจ ืœื ื• ืœืจืื•ืช ืืช ื”ื”ืฉืœื›ื•ืช ืฉืœ ื›ืœ ื”ื—ืœื˜ื”, ืื‘ืœ ื›ืžืขื˜ ื‘ืืฃ ืžืฆื‘ ืžืขื ื™ื™ืŸ ืœื ื”ื™ื™ืชื™ ื ื•ืชืŸ ืœื• ืœื”ื—ืœื™ื˜. ืจื•ื‘ ื”ืฉื™ื ื•ื™ื™ื ื‘ืžืขืจื›ืช ื”ื ืœื ื›ืืœื”. ืจื•ื‘ ื”ืฉื™ื ื•ื™ื™ื ื‘ืžืขืจื›ืช ื”ื ืฉื™ื ื•ื™ื™ื ื”ืžืฉื›ื™ื™ื, ืฉื™ื ื•ื™ื™ื ืฉืžืชื‘ืกืกื™ื ืขืœ ื”ืžืฆื‘ ื”ืงื™ื™ื ื•ืžืจื—ื™ื‘ื™ื ืื•ืชื•: ืคื™ืชื•ื— ืคื™ืฆ'ืจ ืฉืœื ืžืฉื ื” ืืช ืื™ืš ืฉื”ืžื™ื“ืข ืฉืžื•ืจ ื‘ื‘ืกื™ืก ื”ื ืชื•ื ื™ื, ืชื™ืงื•ืŸ ื‘ืขื™ื™ืช ื‘ื™ืฆื•ืขื™ื ืฉืžืชืคืจืกืช ืขืœ ืขืฉืจื•ืช ืื• ืžืื•ืช ืงื‘ืฆื™ื, ื”ืชืงื ืช ืกืคืจื™ื™ืช JavaScript ื—ื“ืฉื” ื•ืขื“ื›ื•ืŸ ื”ืงื•ื“ ื‘ื›ืœ ื”ืืคืœื™ืงืฆื™ื” ืœื”ืฉืชืžืฉ ื‘ื”. ื–ื” ืœื ื”ื™ื” ื‘ืžืกื’ืจืช ื”ื ื•ืฉืื™ื ืฉืœ ื”ื•ื•ื‘ื™ื ืจ (ืื•ืœื™ ื™ืชืื™ื ืœืžืคื’ืฉ ืื—ืจ), ืื‘ืœ ื”ื ื” ื›ืžื” ืคื™ืฆ'ืจื™ื ืฉื‘ื ื™ืชื™ ื‘ langlets ืฉื‘ื–ื›ื•ืช ื” AI ืœืงื—ื• ื”ืจื‘ื” ื”ืจื‘ื” ืคื—ื•ืช ื–ืžืŸ ืžืžื” ืฉื”ื™ื• ืฆืจื™ื›ื™ื ืœืงื—ืช. 1. ืžืกืš ื‘ื™ืช ืฉืžืฆื™ื’ ื’ืจื™ื“ ืฉืœ ืงื•ืจืกื™ื - ื“ืฃ ื”ื‘ื™ืช ืฉืœ ืœืื ื’ืœื˜ืก ืžื•ืจื›ื‘ ืžื’ืจื™ื“ ืฉืœ ื›ืœ ื”ืงื•ืจืกื™ื ื‘ืžืขืจื›ืช. ื–ื” ื”ื™ื” ื”ืคืจื•ืžืคื˜ ื‘ืฉื‘ื™ืœื•:
Implement the courses#index page based on the attached HTML file, matching the design to our system #file:show.html.erb

List of courses in top row is taken from current_user.recommended_for_me. If the list is empty or user is not signed in do not show the first row

List of learning path in the second row is LearningPath.all

Use swiper js library to handle swiping (it's already installed in the project). Add a stimulus controller to handle the JS

When writing JavaScript use stimulus best practice that is data-target for element querying and data-action for events

Provide only filter by language (use course's language) for this one

Use our existing site's top bar for user authentication. Ignore the top bar in the provided HTML

Use only tailwind native classes

Design to integrate:
...
ื–ื” ืคืจื•ืžืคื˜ ืืจื•ืš ื•ืœื ื”ื“ื‘ืงืชื™ ื›ืืŸ ืืช ื›ื•ืœื• ื›ื™ ืกื™ื™ืžืชื™ ืื•ืชื• ืžืžืฉ ื‘ื“ื•ื’ืžืช HTML/CSS ืฉืขื™ืฆื‘ืชื™ ืขื Gemini ืœืžืกืš ื‘ื™ืช ืžืงื‘ื™ืœ, ืื‘ืœ ืฉื™ืžื• ืœื‘ ืœืขื™ืงืจื™ ื”ื“ื‘ืจื™ื - ื”ืคืจื•ืžืคื˜ ืœื•ืงื— ื“ืฃ ืงื•ื ืกืคื˜ ื‘ืขื™ืฆื•ื‘ ืฉื•ื ื” ืœื’ืžืจื™ ืžื”ืžืขืจื›ืช ืฉืœื™ ื•ืื•ื˜ื•ืžื˜ื™ืช ืžืชืื™ื ืืช ื”ืขื™ืฆื•ื‘ ืœืฉืืจ ื”ื“ืคื™ื ื‘ืžืขืจื›ืช, ื”ื•ื ืžืฉืœื‘ ืกืคืจื™ื™ืช ืฆื“-ืœืงื•ื— ื‘ืฉื swiper ื•ื—ื•ืกืš ืœื™ ืœื—ืคืฉ ืืช ื” API ืฉืœื”. ื”ืคืจื•ืžืคื˜ ื™ืฆืจ ืงื•ื‘ืฅ HTML, ืงื•ื‘ืฅ JavaScript ื•ืฉื™ื ื” ื›ืžื” ืงื‘ืฆื™ ืจื•ื‘ื™, ืฉื™ื ื•ื™ ืฉืœ ื›ืžื” ืžืื•ืช ืฉื•ืจื•ืช ืกืš ื”ื›ืœ. ืื—ืจื™ ื”ื”ืจืฆื” ืขื“ื™ื™ืŸ ื”ื™ื• ืชืงืœื•ืช ื•ื”ื™ื™ืชื™ ืฆืจื™ืš ืœื”ืžืฉื™ืš ืขื•ื“ ื›ืžื” ืื™ื˜ืจืฆื™ื•ืช ืฉืœ ืชื™ืงื•ื ื™ื ื•ืฉื™ืคื•ืจื™ื ืื‘ืœ ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ื”ืคื™ืชืจื•ืŸ ื”ื™ืชื” ื ื›ื•ื ื” ืžื”ื”ืคืขืœื” ื”ืจืืฉื•ื ื” ื‘ื’ืœืœ ืฉื“ื‘ืจื™ื ื”ืฉืชืœื‘ื• ื‘ืžื‘ื ื” ื”ืคืจื•ื™ืงื˜ ื”ืงื™ื™ื. 2. ื”ืชืืžืช ืขื™ืฆื•ื‘ ืฉืœ ื›ืœ ื“ืคื™ ื”ืžืฉืชืžืฉื™ื ื‘ืžื›ื” ืื—ืช - ื”ืชื—ื‘ืจื•ืช, ืจื™ืฉื•ื ื•ืฉื›ื—ืชื™ ืกื™ืกืžื” ืžืฆื™ื’ื™ื ื˜ื•ืคืก ืฉื ืจืื” ืžืื•ื“ ื“ื•ืžื”. ื›ืฉืžืฉื ื™ื ืžืฉื”ื• ื‘ืื—ื“ ืžื”ื ืฆืจื™ืš ืœืฉื ื•ืช ืื•ืชื• ื’ื ื‘ื“ืคื™ื ื”ืื—ืจื™ื. ื‘ืคืจื•ื™ืงื˜ ืฉืœื™ ืœื ืจืฆื™ืชื™ ืœื›ืชื•ื‘ ืื‘ืกื˜ืจืงืฆื™ื” ืœื—ืœืง ื”ืžืฉื•ืชืฃ ื›ื™ ื™ืฉ ืกื™ื›ื•ื™ ื˜ื•ื‘ ืฉืืจืฆื” ืœืฉื ื•ืช ื—ืœืง ืžื”ืžืกื›ื™ื ื‘ืœื™ ืœื”ืฉืคื™ืข ืขืœ ื”ืื—ืจื™ื. ื” AI ืžืชืžื•ื“ื“ ืขื ื”ืฉื›ืคื•ืœ ื‘ืฆื•ืจื” ืžื“ื”ื™ืžื”. ื‘ืจื’ืข ืฉืื ื™ ืžื‘ืงืฉ ืฉื™ื ื•ื™ ื‘ื˜ื•ืคืก ื•ืžื“ื‘ื™ืง ื‘ Context ืฉืœ ืฉืœื•ืฉืช ื”ื“ืคื™ื ื”ื•ื ืžืฉื ื” ื‘ืžื›ื” ืื—ืช ืืช ืฉืœื•ืฉืชื.

ToCode
1 417
ื—ื•ืคืฉ ื”ืคืขื•ืœื” ืฉืœ ื”ื˜ื™ื™ืก ื”ืื•ื˜ื•ืžื˜ื™ ื”ื™ื™ืชื ื ื•ืชื ื™ื ืœื˜ื™ื™ืก ืื•ื˜ื•ืžื˜ื™ ืœืงื‘ื•ืข ืœืืŸ ืฆืจื™ืš ืœื”ื’ื™ืข? ืžื” ืœื’ื‘ื™ ืฉื™ื ื•ื™ื™ื ื‘ืžืกืœื•ืœ? ื”ื™ื™ืชื ื ื•ืชื ื™ื ืœื˜ื™ื™ืก ืื•ื˜ื•ืžื˜ื™ ืœื”ื˜ื™ืก ืืช ื”ืžื˜ื•ืก ืžื“ืจืš ืื—ืจืช ื›ื™ ื”ื•ื ื—ื•ืฉื‘ ืฉืฉื ื™ื•ืชืจ ื‘ื˜ื•ื— ืื• ืฉื™ืฉ ื ื•ืฃ ื™ื•ืชืจ ื™ืคื”? ื‘ืžื˜ื•ืก ื—ืœื•ืงืช ื”ืชืคืงื™ื“ื™ื ื‘ื™ืŸ ื”ื˜ื™ื™ืก ื”ืื ื•ืฉื™ ืœืื•ื˜ื•ืžื˜ื™ ื‘ืจื•ืจื” ืœื›ื•ืœื ื•ืžื”ื•ื•ื” Industry Standard. ืืฆืœ ืžืชื›ื ืชื™ื ื›ืžื• ืชืžื™ื“ ื”ืกื™ืคื•ืจ ื™ื•ืชืจ ืžื•ืจื›ื‘. ืื™ืŸ ืœื ื• ื ื•ืกืขื™ื, ืื™ืŸ ื™ืขื“ ืžื•ื’ื“ืจ ืžืจืืฉ ื•ืจื•ื‘ ื”ื–ืžืŸ ืื ื—ื ื• ืœื ื‘ื˜ื•ื—ื™ื ื‘ืขืฆืžื ื• ืžื” ื”ืžืกืœื•ืœ ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ. ื›ืŸ ื™ืฉ ืœื ื• ื˜ื™ื™ืก ืื•ื˜ื•ืžื˜ื™ ื™ืฆื™ืจืชื™ ืฉืžื•ื›ืŸ ืœื‘ืฆืข ื›ืœ ืžืฉื™ืžื” ืฉื ื™ืชืŸ ืœื•, ืœืžืจื•ืช ืฉืœื ืชืžื™ื“ ืขืœ ื”ืฆื“ ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ. ื‘ืฉื ื™ื ื”ืงืจื•ื‘ื•ืช ืื ื—ื ื• ื”ื•ืœื›ื™ื ืœื‘ื ื•ืช ืžืขืจื›ืช ื™ื—ืกื™ื ืขื ื”ื˜ื™ื™ืก ืื• ื”ื˜ื™ื™ืกื™ื ื”ืื•ื˜ื•ืžื˜ื™ื™ื ืฉืœื ื•. ื—ืœืงื ื™ืขื‘ื“ื• ื‘ืฆื•ืจื” ืื•ื˜ื•ื ื•ืžื™ืช ืœื’ืžืจื™ ื‘ืชื•ืจ "ื—ื‘ืจื™ื ื‘ืฆื•ื•ืช" ื‘ืžืกื’ืจืช ืžื’ื‘ืœื•ืช ื•ื™ืขื“ื™ื ืฉื ืฆื™ื‘ ืžืจืืฉ. ื—ืœืงื ื™ืขื‘ื“ื• ืืชื ื• ื™ื•ืชืจ ืžืงืจื•ื‘, ื™ืชืจื’ืžื• ืืช ื”ืžื—ืฉื‘ื•ืช ืฉืœื ื• ืœืงื•ื“ ื•ื™ืืคืฉืจื• ืœื ื• ืœื—ืงื•ืจ ืจืขื™ื•ื ื•ืช ืžื”ืจ ื™ื•ืชืจ ื•ืœื”ืชืงื“ื ื‘ืคื™ืชื•ื— ืžื”ืจ ื™ื•ืชืจ. ื›ื‘ืจ ื”ื™ื•ื ืื ื—ื ื• ื ืื‘ืงื™ื ืœืžืฆื•ื ืืช ื”ืื™ื–ื•ืŸ ื‘ืขื‘ื•ื“ื” ืขื AI IDEs, ืžื‘ื™ื ื™ื ืฉืื™ ืืคืฉืจ ืœืชืช ืœ AI ืœืงื‘ืœ ื”ื—ืœื˜ื•ืช ื•ืžื—ืคืฉื™ื ืื™ืš ืœืขื‘ื•ืจ ืžืจื—ืงื™ื ื’ื“ื•ืœื™ื ื™ื•ืชืจ ืขื ื›ืœ ืคืจื•ืžืคื˜. ื”ื“ืจืš ืœื”ื’ื“ื™ืจ ืœื˜ื™ื™ืก ื”ืื•ื˜ื•ืžื˜ื™ ืฉืœื ื• ืืช ื”ื™ืขื“ ื•ื”ืžืกืœื•ืœ ื”ื™ื ื›ืชื™ื‘ืช ืคืจื•ืžืคื˜, ื•ื’ื ืคื” ื‘ืฉื•ื ื” ืžื˜ื™ื™ืกื™ื ืจื’ื™ืœื™ื ื”ืคืจื•ืžืคื˜ ื”ื•ื ื“ื™ื ืžื™, ื—ืกืจ ืคืจื˜ื™ื ืจื‘ื™ื ื•ื”ืจื‘ื” ืคืขืžื™ื ืœื ืžืฆืœื™ื— ืœื”ืขื‘ื™ืจ ื‘ื“ื™ื•ืง ืืช ื”ืžืกืจ ืฉืจืฆื™ื ื• (ื‘ืžื™ื•ื—ื“ ื›ืฉืฆืจื™ืš ืœืขื‘ื•ืจ ืžืจื—ืงื™ื ื’ื“ื•ืœื™ื). ื‘ื•ื•ื‘ื™ื ืจ ื”ื™ื•ื ืืจืื” ืžืกืคืจ ืคืจื•ืžืคื˜ื™ื ืฉืขื•ื‘ืจื™ื ืžืจื—ืง ื’ื“ื•ืœ. ื‘ื›ืœ ืคืจื•ืžืคื˜ ื ื‘ื™ืŸ ืืช ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ื”ืžืขืจื›ืช, ืืช ื”ืžืฉื™ืžื” ืœื‘ื™ืฆื•ืข ื•ืื™ืš ืœื›ืชื•ื‘ ืืช ื”ืคืจื•ืžืคื˜ ื›ื“ื™ ืฉื’ื ื” AI ื™ื‘ื™ืŸ ื˜ื•ื‘ ืืช ื”ืžืฉื™ืžื”. ื‘ืฆื•ืจื” ืื™ื˜ืจื˜ื™ื‘ื™ืช ื ืœืžื“ ืืช ื”ื‘ืขื™ื•ืช ื•ืืช ืื™ ื”ื”ื‘ื ื•ืช ืฉื™ืฉ ื‘ื™ื ื™ื ื• ืœื‘ื™ืŸ ื”ื˜ื™ื™ืก ื”ืื•ื˜ื•ืžื˜ื™ ื•ืœืื˜ ืœืื˜ ื’ื ืื™ืš ืœืชืงืŸ ืื•ืชืŸ. ื ืชืœื‘ื˜ ืžืชื™ ื›ื“ืื™ ืœื”ืžืฉื™ืš ืœื›ืชื•ื‘ ืคืจื•ืžืคื˜ ื ื•ืกืฃ ื•ืžืชื™ ืขื“ื™ืฃ ืœืงื—ืช ืฆืขื“ ืื—ื•ืจื” ื•ืœืฉืคืจ ืืช ื”ืคืจื•ืžืคื˜ ื”ืจืืฉื•ืŸ ื•ืื™ืš ืœืฆืžืฆื ืกื™ื›ื•ื ื™ื ืœื”ื–ื™ื•ืช ื•ืœ Loop-ื™ื. ืชื—ืฉื‘ื• ืขืœ ื–ื” ื›ืžื• Prompt Engineering ืžืชืงื“ื ืœืžืชื›ื ืชื™ื. ืจื•ืฆื™ื ืœื”ืฆื˜ืจืฃ? ืœื ืžืกื•ื‘ืš ืžืœืื• ืืช ื”ืžื™ื™ืœ ื‘ืชื™ื‘ื” ื‘ืขืžื•ื“ ื”ื‘ื ื•ืืฉืœื— ืœื›ื ืืช ื”ืงื™ืฉื•ืจ ืœื–ื•ื ื‘ืžื™ื™ืœ ื—ื•ื–ืจ: https://tocode.ravpage.co.il/tocodeai ื ืชืจืื” ื‘ืขืฉืจ.

ToCode
1 417
ื”ื™ื•ื ืœืžื“ืชื™: ื”ืคืงื•ื“ื” sendBeacon ื‘ JavaScript ื‘ืขื™ื” ื ืคื•ืฆื” ื‘ืฉืœื™ื—ืช ืื™ืจื•ืขื™ื ืžื”ื“ืคื“ืคืŸ ืœืฉืจืช ื”ื™ื ื”ืฆื™ืคื™ื•ืช ืฉืœื ื•. ืื ื—ื ื• ืจื•ืฆื™ื ืœื“ื•ื•ื— ืœืฉืจืช ื›ืฉืžืฉืชืžืฉ ืขื•ื–ื‘ ืขืžื•ื“ ืžืกื•ื™ื ื›ื“ื™ ืœื“ืขืช ื›ืžื” ื–ืžืŸ ืžืฉืชืžืฉ ื‘ื™ืœื” ื‘ืื•ืชื• ืขืžื•ื“, ืื‘ืœ ื”ืžืฉืชืžืฉ ืžืขื“ื™ืฃ ื‘ืื•ืชื• ื–ืžืŸ ืœืฆืืช ืžื”ื“ืฃ ื•ืœื ืœื—ื›ื•ืช ืฉื ื’ืžื•ืจ ืœื“ื•ื•ื— ืœืฉืจืช ืฉืœื ื• ื•ื‘ื˜ื— ืœื ืœื—ื›ื•ืช ืœืฉืจืช ืฉื™ื—ื–ื™ืจ ืชืฉื•ื‘ื”. ื“ืคื“ืคื ื™ื ื ื•ื˜ื™ื ืœืงื—ืช ืืช ื”ืฆื“ ืฉืœ ื”ืžืฉืชืžืฉ ื‘ืกื™ืคื•ืจ ื”ื–ื” ื•ื›ืฉืžื ืกื™ื ืœืฉืœื•ื— fetch ืื• XMLHttpRequest ื‘ื™ืฆื™ืื” ืžื”ืขืžื•ื“ ื”ื“ืคื“ืคืŸ ืคืฉื•ื˜ ืœื ื™ืฉืœื— ืืช ื”ื”ื•ื“ืขื”. ืœืคื™ ื”ืชื™ืขื•ื“ ื‘ MDN ืื ืฉื™ื ื”ืฉืชืžืฉื• ื‘ื›ืœ ืžื™ื ื™ ื˜ืจื™ืงื™ื ื›ื“ื™ ืœื’ืจื•ื ืœื“ืคื“ืคืŸ ืœื”ื™ืฉืืจ ืขื•ื“ ืงืฆืช ื‘ืขืžื•ื“ ื”ืื”ื•ื‘ ืขืœื™ื™ ื”ื™ื” ืœื™ืฆื•ืจ ืืœืžื ื˜ img ืฉื” src ืฉืœื• ื”ื•ื ื›ืชื•ื‘ืช ื”ืฉืจืช ืœื“ื™ื•ื•ื— ืขืœ ื™ืฆื™ืื”. ืคืงื•ื“ืช navigator.sendBeacon ื”ื™ื ื”ื“ืจืš ืฉืœ ื™ืฆืจื ื™ ื”ื“ืคื“ืคื ื™ื ืœืขื–ื•ืจ ืœืฉื ื™ ื”ืฆื“ื“ื™ื: ื’ื ืœืืคืฉืจ ืœืžืคืชื—ื™ื ืœืงื‘ืœ ืื™ืจื•ืขื™ื ื›ืฉืžืฉืชืžืฉื™ื ืขื•ื–ื‘ื™ื ืืช ื”ืขืžื•ื“ ื•ื’ื ืœืืคืฉืจ ืœืžืฉืชืžืฉื™ื ืœืขื–ื•ื‘ ืขืžื•ื“ื™ื ืžื”ืจ ื‘ืœื™ ืœื—ื›ื•ืช ืœื“ื™ื•ื•ื—ื™ ื”ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช. ื›ืš ื–ื” ืขื•ื‘ื“: 1. ืื ื—ื ื• ืžืคืขื™ืœื™ื ืคืงื•ื“ืช navigator.sendBeacon ืฉื—ื•ื–ืจืช ืžื™ื“ ื‘ืœื™ ืœื—ื›ื•ืช ืœื‘ืงืฉืช ื”ืชืงืฉื•ืจืช. 2. ืžืฉืชืžืฉ ื™ื›ื•ืœ ืœื”ืžืฉื™ืš ืœืขื–ื•ื‘ ืืช ื”ืขืžื•ื“. 3. ื›ืฉืœื“ืคื“ืคืŸ ื™ื”ื™ื” ื–ืžืŸ ื”ื•ื ื™ืฉืœื— ืืช ื”ื“ื™ื•ื•ื— ืœืืชืจ ืฉืœื›ื. ืื ื”ืฉืจืช ืฉืœื›ื ืžืฆืคื” ืœืงื‘ืœ ืžื™ื“ืข ื‘ืคื•ืจืžื˜ JSON ืชื•ื›ืœื• ืœื”ืฉืชืžืฉ ื‘ืงื•ื“ ื”ื‘ื ื›ื“ื™ ืœืฉืœื•ื— ืืช ื”ืžื™ื“ืข ืžื”ื“ืคื“ืคืŸ ืœืฉืจืช ื‘ืœื™ ืœื—ื›ื•ืช ืœืชืฉื•ื‘ื”:
const url = 'https://example.com/collect';
const data = {
  event: 'pageUnload',
  timestamp: Date.now(),
  userId: 'abc123'
};

// Convert the JSON object to a string
const jsonString = JSON.stringify(data);

// Convert the string to a Blob with the appropriate MIME type
const blob = new Blob([jsonString], { type: 'application/json' });

// Send the beacon
navigator.sendBeacon(url, blob);
ื”ืงื•ื“ ืฉื•ืœื— ืืช ื”ืžื™ื“ืข ื‘ืชื•ืจ blob ื‘ืฉื‘ื™ืœ ืœืงื‘ื•ืข ืืช ื” content-type ืฉืœ ื”ื‘ืงืฉื” (ืžื” ืฉื’ื•ืจื ืœืคืจื™ื™ืžื•ื•ืจืง ืฆื“ ืฉืจืช ื‘ื“ืจืš ื›ืœืœ ืœืคืขื ื— ืืช ื” JSON ื‘ืฆื•ืจื” ืื•ื˜ื•ืžื˜ื™ืช). ืื ื–ื” ืœื ื—ืฉื•ื‘ ืœื›ื ื•ืืชื ืžื•ื›ื ื™ื ืœืฉืœื•ื— ื˜ืงืกื˜ ื•ืœืคืขื ื— ืืช ื” JSON ื‘ืฉืจืช ื‘ืขืฆืžื›ื ืชื•ื›ืœื• ืœื›ืชื•ื‘ ื’ื:
navigator.sendBeacon(url, JSON.stringify(data));
ื•ื”ืจื‘ื” ืคืขืžื™ื ืชืจืฆื• ืœื”ืคืขื™ืœ ืืช ื–ื” ื›ืฉืžืฉืชืžืฉ ืขื•ื–ื‘ ืืช ื”ืขืžื•ื“ ื•ื‘ืฉื‘ื™ืœ ื–ื” ื›ื“ืื™ ืœื”ืชื—ื‘ืจ ืœืื™ืจื•ืข visibilitychange ื‘ืื•ืคืŸ ื”ื‘ื:
document.addEventListener("visibilitychange", () => {
  if (document.visibilityState === "hidden") {
    navigator.sendBeacon("/log", analyticsData);
  }
});