PageSourceSearch

https://evlek.app/_next/static/chunks/16767.d41ac77a4d85378a.js

js evlek.app collected 2026-09-24 13:38:51 UTC 23,330 bytes, 4 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[16767],{16767:(e,t,a)=>{a.r(t),a.d(t,{default:()=>j});var r=a(95155),n=a(37196),i=a(52917),s=a(12115),l=a(67333),o=a(17479),d=a(34193);let c="evlek_chat_history",p="evlek_chat_gemini_consent",m={tr:"Merhaba, ben Evlek AI asistanınızım. KKTC'de m\xfclk aramanızda size yardımcı olabilirim. B\xfct\xe7enizi, b\xf6lgenizi veya arzu ettiğiniz \xf6zellikleri s\xf6yleyin!",en:"Hello, I'm Evlek AI assistant. I can help you find properties in North Cyprus. Tell me your budget, preferred area, or desired features!",ru:"Здравствуйте! Я AI-помощник Evlek. Помогу найти недвижимость на Северном Кипре. Расскажите о бюджете, районе или желаемых особенностях!",de:"Hallo! Ich bin der Evlek KI-Assistent. Ich helfe Ihnen bei der Immobiliensuche in Nordzypern!",ar:"مرحباً! أنا مساعد إيفلك الذكي. يمكنني مساعدتك في البحث عن عقارات في شمال قبرص"},u={tr:"Mesajınızı yazın...",en:"Type your message...",ru:"Введите сообщение...",de:"Nachricht eingeben...",ar:"...اكتب رسالتك"},h={tr:{fiyat:"G\xfcncel ilan fiyatlarını evlek.app/properties \xfczerinden karşılaştırabilirsiniz. İlan fiyatı, ger\xe7ekleşmiş satış fiyatı veya bağımsız değerleme değildir.",kira:"Uzun d\xf6nem kiralık ilanlar i\xe7in evlek.app/properties?type=rent adresini kullanabilirsiniz.",girne:"Girne ilanlarını konum, b\xfct\xe7e, oda sayısı ve m\xfclk tipine g\xf6re evlek.app/properties \xfczerinden filtreleyebilirsiniz.",lefkosa:"Lefkoşa ilanlarını konum, b\xfct\xe7e, oda sayısı ve m\xfclk tipine g\xf6re evlek.app/properties \xfczerinden filtreleyebilirsiniz.",hukuk:"İşleme \xf6zel hukuki, vergi veya finansal değerlendirme yapamam. Bağımsız ve yetkili bir uzmandan g\xfcncel g\xf6r\xfcş alın.",default:"İlan aramanıza yardımcı olabilirim. Şehir, b\xfct\xe7e, oda sayısı ve satılık veya uzun d\xf6nem kiralık tercihinizi belirtin."},en:{price:"Compare current asking prices at evlek.app/properties. An asking price is not a completed sale price or an independent valuation.",rent:"Browse long-term rental listings at evlek.app/properties?type=rent.",kyrenia:"Filter Kyrenia listings by location, budget, bedrooms, and property type at evlek.app/properties.",nicosia:"Filter Nicosia listings by location, budget, bedrooms, and property type at evlek.app/properties.",legal:"I cannot assess transaction-specific legal, tax, or financial matters. Obtain current advice from an independent qualified professional.",default:"I can help with listing discovery. Tell me the city, budget, bedrooms, and whether you want sale or long-term rental listings."},ru:{цена:"Сравните актуальные цены предложений на evlek.app/properties. Цена объявления не является ценой сделки или независимой оценкой.",аренда:"Долгосрочная аренда: evlek.app/properties?type=rent.",кирения:"Отфильтруйте объявления Кирении по району, бюджету, числу комнат и типу объекта на evlek.app/properties.",никосия:"Отфильтруйте объявления Никосии по району, бюджету, числу комнат и типу объекта на evlek.app/properties.",default:"Я помогу с поиском объявлений. Укажите город, бюджет, число комнат и продажу или долгосрочную аренду."},de:{preis:"Vergleichen Sie aktuelle Angebotspreise auf evlek.app/properties. Ein Angebotspreis ist weder ein Verkaufspreis noch ein unabh\xe4ngiges Wertgutachten.",miete:"Langzeitmieten: evlek.app/properties?type=rent.",kyrenia:"Filtern Sie Angebote in Kyrenia nach Lage, Budget, Zimmerzahl und Immobilientyp auf evlek.app/properties.",nikosia:"Filtern Sie Angebote in Nikosia nach Lage, Budget, Zimmerzahl und Immobilientyp auf evlek.app/properties.",default:"Ich helfe bei der Angebotssuche. Nennen Sie Stadt, Budget, Zimmerzahl und Kauf oder Langzeitmiete."},ar:{سعر:"قارن أسعار العرض الحالية عبر evlek.app/properties. سعر الإعلان ليس سعر بيع مكتملًا ولا تقييمًا مستقلًا.",إيجار:"إعلانات الإيجار طويل الأجل: evlek.app/properties?type=rent.",default:"يمكنني المساعدة في البحث عن الإعلانات. اذكر المدينة والميزانية وعدد الغرف والبيع أو الإيجار طويل الأجل."}},b={tr:[{label:"Kiralık Daire",message:"Kiralık daire arıyorum, bana yardımcı olabilir misin?"},{label:"Fiyat Bilgisi",message:"KKTC'de ortalama kira ve satış fiyatları nedir?"},{label:"B\xf6lge Tavsiyesi",message:"Hangi b\xf6lgede oturmamı tavsiye edersiniz?"}],en:[{label:"Find Rental",message:"I'm looking for a rental apartment, can you help?"},{label:"Price Info",message:"What are the average rental and sale prices in KKTC?"},{label:"Area Advice",message:"Which area do you recommend for living?"}],ru:[{label:"Аренда",message:"Ищу квартиру в аренду, можете помочь?"},{label:"Цены",message:"Какие средние цены аренды и продажи на Северном Кипре?"},{label:"Район",message:"Какой район вы порекомендуете для проживания?"}],de:[{label:"Miete",message:"Ich suche eine Mietwohnung, k\xf6nnen Sie helfen?"}
1,{label:"Preise",message:"Was sind die durchschnittlichen Miet- und Kaufpreise in Nordzypern?"},{label:"Gebiet",message:"Welche Region empfehlen Sie zum Wohnen?"}],ar:[{label:"إيجار",message:"أبحث عن شقة للإيجار، هل يمكنك المساعدة؟"},{label:"أسعار",message:"ما متوسط أسعار الإيجار والبيع في شمال قبرص؟"},{label:"منطقة",message:"أي منطقة تنصحون بها للسكن؟"}]},g={tr:{timeout:"\xc7ok fazla mesaj g\xf6nderdiniz. L\xfctfen biraz bekleyin.",maintenance:"AI servisimiz şu an bakımda. L\xfctfen birka\xe7 dakika sonra tekrar deneyin.",default:"Bir sorun oluştu. L\xfctfen tekrar deneyin."},en:{timeout:"Too many messages. Please wait a moment.",maintenance:"Our AI service is currently under maintenance. Please try again in a few minutes.",default:"Something went wrong. Please try again."},ru:{timeout:"Слишком много сообщений. Пожалуйста, подождите.",maintenance:"Наш ИИ-сервис сейчас на обслуживании. Попробуйте позже.",default:"Что-то пошло не так. Попробуйте еще раз."},de:{timeout:"Zu viele Nachrichten. Bitte warten Sie einen Moment.",maintenance:"Unser KI-Service wird gewartet. Bitte versuchen Sie es sp\xe4ter erneut.",default:"Etwas ist schief gelaufen. Bitte versuchen Sie es erneut."},ar:{timeout:"رسائل كثيرة جداً. يرجى الانتظار قليلاً.",maintenance:"خدمة الذكاء الاصطناعي لدينا تحت الصيانة حالياً. يرجى المحاولة لاحقاً.",default:"حدث خطأ ما. يرجى المحاولة مرة أخرى."}},x={tr:"\n\nDaha kişisel yardım i\xe7in iletişim sayfamızdan bize ulaşabilirsiniz: evlek.app/contact",en:"\n\nFor more personalized help, reach out to us at: evlek.app/contact",ru:"\n\nДля более персональной помощи свяжитесь с нами: evlek.app/contact",de:"\n\nF\xfcr pers\xf6nlichere Hilfe kontaktieren Sie uns: evlek.app/contact",ar:"\n\nللحصول على مساعدة أكثر تخصيصاً، تواصلوا معنا: evlek.app/contact"},v={tr:"Bu g\xf6r\xfcşme yapay zek\xe2 desteklidir. Yanıtlar otomatik oluşturulabilir ve hata i\xe7erebilir. Yanıt \xfcretmek i\xe7in mesajlarınız Google Gemini'ye g\xf6nderilir. \xd6nemli kararlar \xf6ncesi bilgileri doğrulayın.",en:"This conversation is AI-assisted. Replies may be generated automatically and may contain errors. To generate replies, your messages are sent to Google Gemini. Verify details before important decisions.",ru:"Это ИИ-ассистент. Для ответов ваши сообщения отправляются в Google Gemini. Проверяйте данные перед важными решениями.",de:"Dies ist ein KI-Assistent. F\xfcr Antworten werden Ihre Nachrichten an Google Gemini gesendet. Pr\xfcfen Sie Angaben vor wichtigen Entscheidungen.",ar:"هذا مساعد ذكاء اصطناعي. لتوليد الردود تُرسل رسائلك إلى Google Gemini. تحقق من المعلومات قبل القرارات المهمة."},f={tr:"Onaylıyorum, devam et",en:"I agree, continue",ru:"Согласен, продолжить",de:"Einverstanden, weiter",ar:"أوافق، متابعة"},y={tr:"Yanıtı bildir",en:"Report a reply",ru:"Сообщить об ответе",de:"Antwort melden",ar:"الإبلاغ عن رد"},k={tr:"Evlek AI yanıt bildirimi",en:"Evlek AI reply report",ru:"Жалоба на ответ Evlek AI",de:"Evlek AI Antwort-Meldung",ar:"الإبلاغ عن رد Evlek AI"},w={tr:"Bu g\xf6r\xfcşme yapay zek\xe2 desteklidir. Yanıtlar otomatik oluşturulabilir ve hata i\xe7erebilir.",en:"This conversation is AI-assisted. Replies may be generated automatically and may contain errors.",ru:"Этот разговор ведётся с поддержкой ИИ. Ответы могут создаваться автоматически и содержать ошибки.",de:"Dieses Gespr\xe4ch wird durch KI unter
1st\xfctzt. Antworten k\xf6nnen automatisch erstellt werden und Fehler enthalten.",ar:"هذه المحادثة مدعومة بالذكاء الاصطناعي. قد تُنشأ الردود تلقائياً وقد تحتوي على أخطاء."};function j({locale:e}){let[t,a]=(0,s.useState)(!1),N=(0,i.tH)(t,"panel"),[z,I]=(0,s.useState)(()=>[{role:"bot",content:m[e]||m.en}]);(0,s.useEffect)(()=>{let e=function(){try{let e=localStorage.getItem(c);if(!e)return null;let t=JSON.parse(e);if(Array.isArray(t)&&t.length>0)return t.slice(-50)}catch{}return null}();e&&e.length>0&&I(e)},[]);let[S,A]=(0,s.useState)(""),[_,E]=(0,s.useState)(!1),[C,K]=(0,s.useState)(!1),[T,B]=(0,s.useState)(),[G,$]=(0,s.useState)(),F=(0,s.useRef)(null),L=(0,s.useMemo)(()=>z.filter(e=>"user"===e.role).length,[z]);async function O(t){if(!t.trim()||_||!C)return;let a=t.trim().slice(0,500),r={role:"user",content:a};I(e=>[...e,r]),A(""),E(!0),(0,d.ck)(a.length,z.length<=1);try{let t=z.slice(1).map(e=>({role:"bot"===e.role?"assistant":"user",content:e.content})),{data:{session:r}}=await o.e.auth.getSession(),i={"Content-Type":"application/json",Accept:"text/event-stream"};r?.access_token&&(i.Authorization=`Bearer ${r.access_token}`);let s=await fetch("/api/chat",{method:"POST",headers:i,body:JSON.stringify({message:a,history:t,locale:e,userId:T,userEmail:G})});if(s.ok&&s.headers.get("content-type")?.includes("text/event-stream")&&s.body){let t=s.body.getReader(),a=new TextDecoder,r="",n="";for(I(e=>[...e,{role:"bot",content:""}]);;){let{done:e,value:i}=await t.read();if(e)break;let s=(n+=a.decode(i,{stream:!0})).split("\n");for(let e of(n=s.pop()||"",s)){if(!e.startsWith("data: "))continue;let t=e.slice(6).trim();if("[DONE]"!==t)try{let e=JSON.parse(t);e.t&&(r+=e.t,I(e=>{let t=[...e];return t[t.length-1]={role:"bot",content:r},t}))}catch{}}}L>=5&&L%5==0&&(r+=x[e]||x.en,I(e=>{let t=[...e];return t[t.length-1]={role:"bot",content:r},t}))}else if(s.ok){let t=(await s.json()).reply;L>=5&&L%5==0&&(t+=x[e]||x.en),I(e=>[...e,{role:"bot",content:t}])}else{var n;let t,a=s.headers.get("retry-after"),r=a?parseInt(a,10):30,i=g[e]||g.en,l=429===s.status?i.timeout.replace("L\xfctfen biraz bekleyin.",`${r} saniye bekleyin.`).replace("Please wait a moment.",`Wait ${r} seconds.`):(n=s.status,t=g[e]||g.en,429===n?t.timeout:503===n?t.maintenance:t.default);I(e=>[...e,{role:"bot",content:l}])}}catch{let a=function(e,t){let a=e.toLowerCase(),r=h[t]||h.en;for(let[e,t]of Object.entries(r))if("default"!==e&&a.includes(e))return t;return r.default}(t,e);I(e=>[...e,{role:"bot",content:a}])}finally{E(!1)}}function M(){O(S)}return(0,s.useEffect)(()=>{o.e.auth.getUser().then(({data:e})=>{e.user&&(B(e.user.id),$(e.user.email||void 0))})},[]),(0,s.useEffect)(()=>{try{K("1"===localStorage.getItem(p))}catch{}},[]),(0,s.useEffect)(()=>{F.current?.scrollIntoView({behavior:"smooth"})},[z]),(0,s.useEffect)(()=>{z.length>1&&function(e){try{localStorage.setItem(c,JSON.stringify(e.slice(-50)))}catch{}}(z)},[z]),(0,s.useEffect)(()=>{I(t=>{if(0===t.length)return[{role:"bot",content:m[e]||m.en}];let a=[...t];return a[0]={role:"bot",content:m[e]||m.en},a})},[e]),(0,r.jsxs)("div",{className:"chatbot-fab fixed bottom-[calc(var(--bottom-nav-height,0px)+20px)] right-4 z-[1000] max-[640px]:bottom-[calc(var(--bottom-nav-height,0px)+18px+env(safe-area-inset-bottom,0px))] max-[640px]:right-[max(12px,env(safe-area-inset-right,0px))]",children:[N.present&&(0,r.jsxs)("div",{...N.props,className:"chatbot-panel fixed bottom-[calc(var(--bottom-nav-height,0px)+78px)] right-4 z-[1000] flex max-h-[600px] w-[392px] flex-col overflow-hidden rounded-[20px] border [border:var(--hairline)] bg-[var(--bg-card)] shadow-[0_24px_60px_rgba(10,37,64,0.18)] max-[640px]:bottom-[calc(var(--bottom-nav-height,0px)+70px+env(safe-area-inset-bottom,0px))] max-[640px]:left-3 max-[640px]:right-3 max-[640px]:max-h-[min(560px,calc(100dvh-var(--bottom-nav-height,0px)-108px))] max-[640px]:w-auto max-[640px]:max-w-none",children:[(0,r.jsxs)("div",{className:"chatbot-header flex items-center justify-between gap-3 border-b border-[var(--border)] bg-[var(--bg-card)] px-5 py-4 text-[var(--text-primary)]",children:[(0,r.jsxs)("div",{className:"chatbot-header-left flex items-center gap-3",children:[(0,r.jsx)("div",{className:"chatbot-header-avatar flex h-9 w-9 shrink-0 items-center justify-center rounded-[10px] bg-[var(--ai-accent)] text-[var(--text-on-dark)]","aria-hidden":"true",children:(0,r.jsx)(l.default,{icon:l.cC,size:18,color:"white"})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("h3",{className:"m-0 font-[var(--font-outfit)] text-body font-bold leading-[1.2] tracking-[-0.01em] text-[var(--text-primary)]",children:"Evlek AI"}),(0,r.jsx)("p",{className:"chatbot-header-sub m-0 text-caption leading-[1.3] tracking-[0.01em] text-[var(--text-muted)]",children:"tr"===e?"KKTC emlak asistanı":"ru"===e?"Ассистент по недвижимости ТРСК":"de"===e?"Nordzypern-Immobilien":"ar"===e?"مساعد عقارات شمال قبرص":"North Cyprus property assistant"})]})]}),(0,r.jsx)("button",{className:"closeBtn flex h-8 w-8 shrink-0 items-center justify-center rounded-lg border [border:var(--hairline)] bg-transparent text-[var(--text-muted)] transition-[background,color,border-color] duration-150 hover:border-[var(--border-hover,var(--primary))] hover:bg-[var(--bg-secondary)] hover:text-[var(--text-primary)]",onClick:()=>a(!1),"aria-label":"tr"===e?"Kapat":"Close",children:(0,r.jsx)(l.default,{icon:l.X,size:16})})]}),(0,r.jsx)("div",{className:"chatbot-ai-notice border-b border-[var(--border)] bg-[var(--bg-card)] px-[14px] py-[7px] text-sm leading-[1.45] text-[var(--text-muted)]",role:"note",children:w[e]||w.en}),(0,r.jsxs)("div",{className:"chatbot-messages flex min-h-[320px] max-h-[420px] flex-1 flex-col gap-3.5 overflow-y-auto bg-[var(--bg-card)] p-5",role:"log","aria-live":"polite","aria-label":"Chat messages",children:[z.map((t,a)=>(0,r.jsxs)("div",{className:["chat-message max-w-[85%] rounded-xl px-4 py-3 text-body leading-[1.55] [word-wrap:break-word]","bot"===t.role?"self-start bg-[var(--bg-secondary)] text-[var(--text-primary)]":"self-end bg-[var(--primary)] font-medium text-[var(--text-on-dark)]"].join(" "),children:["bot"===t.role?function(e,t=!1){let a=/^(https?:\/\/|evlek\.app)/i;return e.split(/(https?:\/\/[^\s]+|evlek\.app[^\s]*)/gi).map((e,i)=>{if(a.test(e)){let t=e.startsWith("http")?e:`https://${e}`;return(0,r.jsx)("a",{href:t,target:"_blank",rel:"noopener noreferrer",className:"break-normal text-sky-400 underline [overflow-wrap:anywhere]",children:e},i)}return e.includes("\n")?e.split("\n").map((e,a,s)=>(0,r.jsxs)("span",{children:[(0,r.jsx)(n.a8,{active:t,children:e}),a<s.length-1&&(0,r.jsx)("br",{})]},`${i}-${a}
1`)):(0,r.jsx)(n.a8,{active:t,children:e},i)})}(t.content,_&&a===z.length-1):t.content,"bot"===t.role&&0===a&&1===z.length&&!_&&C&&(0,r.jsx)("div",{className:"quickReplies mt-2.5 flex flex-wrap gap-1.5",children:(b[e]||b.en).map(e=>(0,r.jsx)("button",{className:"quickReplyBtn rounded-lg border px-[14px] py-2 text-meta font-medium [border:var(--hairline)] bg-[var(--bg-card)] text-[var(--text-primary)] transition-[border-color,background,color] duration-150 hover:border-[var(--primary)] hover:bg-[var(--bg-secondary)] hover:text-[var(--ink)]",onClick:()=>O(e.message),type:"button",children:e.label},e.label))})]},a)),_&&(0,r.jsxs)("div",{className:"chat-message chat-message--typing inline-flex max-w-[85%] items-center self-start rounded-xl bg-[var(--bg-secondary)] px-4 py-3 text-body text-[var(--text-muted)]",role:"status",children:[(0,r.jsx)(n.H_,{}),(0,r.jsx)(n.p2,{children:"tr"===e?" D\xfcş\xfcn\xfcyor...":"ru"===e?" Думает...":"de"===e?" Denkt...":"ar"===e?" يفكر...":" Thinking..."})]}),(0,r.jsx)("div",{ref:F})]}),C?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"chatbotInput flex items-center gap-2.5 border-t border-[var(--border)] bg-[var(--bg-card)] px-4 pb-4 pt-[14px]",children:[(0,r.jsx)("input",{className:"min-h-[42px] flex-1 rounded-[10px] border [border:var(--hairline)] bg-transparent px-4 py-3 font-[var(--font-inter)] text-body text-[var(--text-primary)] outline-none transition-[background-color] duration-150 placeholder:text-[var(--text-muted)] focus:bg-[var(--bg-secondary)]",value:S,onChange:e=>A(e.target.value.slice(0,500)),onKeyDown:function(e){"Enter"!==e.key||e.shiftKey||(e.preventDefault(),M())},placeholder:u[e]||u.en,disabled:_,maxLength:500,"aria-label":u[e]||u.en}),(0,r.jsx)("button",{className:"flex h-[42px] w-[42px] shrink-0 items-center justify-center rounded-[10px] border-0 bg-[var(--primary)] text-[var(--text-on-dark)] transition-[background,transform] duration-150 hover:-translate-y-px hover:bg-[var(--primary-dark)] disabled:cursor-not-allowed disabled:opacity-55 disabled:hover:translate-y-0",onClick:M,disabled:_||!S.trim(),"aria-label":"Send",children:_?(0,r.jsx)(n.H_,{}):(0,r.jsx)(l.default,{icon:l.Vn,size:16,color:"white"})})]}),(0,r.jsx)("div",{className:"flex justify-end px-[14px] pb-2 pt-0.5",children:(0,r.jsx)("button",{type:"button",onClick:function(){let t=[...z].reverse().find(e=>"bot"===e.role),a=encodeURIComponent(k[e]||k.en),r=encodeURIComponent(`---
2${(t?.content||"").slice(0,800)}
3---
4`);window.location.href=`mailto:[email protected]?subject=${a}&body=${r}`},className:"p-0 text-sm text-[var(--text-muted)] underline",children:y[e]||y.en})})]}):(0,r.jsxs)("div",{className:"chatbot-consent border-t border-[var(--border)] bg-[var(--bg-card)] p-[14px]",children:[(0,r.jsx)("p",{className:"mb-[10px] text-sm leading-6 text-[var(--text-secondary)]",children:v[e]||v.en}),(0,r.jsx)("button",{type:"button",onClick:function(){try{localStorage.setItem(p,"1")}catch{}K(!0)},className:"w-full rounded-[var(--radius-md)] bg-[var(--coral)] px-[14px] py-2.5 text-sm font-bold text-[var(--surface)]",children:f[e]||f.en})]})]}),(0,r.jsx)("button",{className:"chatbot-toggle inline-flex h-12 w-12 items-center justify-center rounded-[16px] border border-[color-mix(in_srgb,var(--border,#d8dee7)_84%,transparent)] bg-[color-mix(in_srgb,var(--bg-card,#fff)_90%,transparent)] text-[var(--primary)] shadow-[0_14px_28px_rgba(10,37,64,0.12)] [backdrop-filter:blur(12px)] [webkit-backdrop-filter:blur(12px)] transition-[transform,box-shadow,background-color,border-color,color] duration-200 hover:-translate-y-0.5 hover:border-[color-mix(in_srgb,var(--primary)_18%,var(--border,#d8dee7))] hover:bg-[color-mix(in_srgb,var(--bg-card,#fff)_96%,transparent)] hover:text-[var(--primary-deep)] hover:shadow-[0_18px_34px_rgba(10,37,64,0.16)] active:translate-y-0 active:scale-[0.98] max-[640px]:h-11 max-[640px]:w-11 max-[640px]:rounded-[14px]",onClick:()=>{t||(0,d.Xc)(),a(!t)},"aria-label":t?"Close chat":"Open chat",children:(0,r.jsx)(n.jN,{active:t,first:(0,r.jsx)(l.default,{icon:l.cC,size:20}),second:(0,r.jsx)(l.default,{icon:l.X,size:20})})})]})}},37196:(e,t,a)=>{a.d(t,{H_:()=>d,Om:()=>s,a8:()=>l,jN:()=>i,p2:()=>
4o,s4:()=>n});var r=a(95155);function n({value:e}){let t=String(e);return(0,r.jsxs)("span",{className:"evlek-motion-number",children:[(0,r.jsx)("span",{className:"sr-only",children:t}),(0,r.jsx)("span",{className:"t-digit-group is-animating","aria-hidden":"true",children:Array.from(t).map((e,a)=>(0,r.jsx)("span",{className:"t-digit","data-stagger":a===t.length-1?"2":a===t.length-2?"1":void 0,children:" "===e?"\xa0":e},a))},t)]})}function i({active:e,first:t,second:a}){return(0,r.jsxs)("span",{className:"t-icon-swap","data-state":e?"b":"a","aria-hidden":"true",children:[(0,r.jsx)("span",{className:"t-icon","data-icon":"a",children:t}),(0,r.jsx)("span",{className:"t-icon","data-icon":"b",children:a})]})}function s({children:e}){return(0,r.jsx)("span",{className:"evlek-motion-text",children:e},e)}function l({children:e,active:t}){return e.split(/(\s+)/).map((e,a)=>/^\s+$/.test(e)?e:(0,r.jsx)("span",{className:t?"evlek-stream-word":void 0,children:e},a))}function o({children:e}){return(0,r.jsxs)("span",{children:[(0,r.jsx)("span",{className:"sr-only",children:e}),(0,r.jsx)("span",{className:"t-shimmer evlek-motion-text","data-text":e,"aria-hidden":"true",children:e},e)]})}function d(){return(0,r.jsx)("span",{className:"t-matrix","data-variant":"scan","aria-hidden":"true",children:Array.from({length:16},(e,t)=>(0,r.jsx)("i",{style:{"--d":`calc(var(--matrix-cycle) * ${t%4/10})`}},t))})}},52917:(e,t,a)=>{a.d(t,{$w:()=>l,Ib:()=>s,tH:()=>o});var r=a(12115);let n={dropdown:["--dropdown-close-dur",150],modal:["--modal-close-dur",150],panel:["--panel-close-dur",350],toast:["--toast-close",350]};function i(e){let t=window.matchMedia?.("(prefers-reduced-motion: reduce)");return t?.addEventListener("change",e),()=>t?.removeEventListener("change",e)}function s(){return(0,r.useSyncExternalStore)(i,()=>window.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1,()=>!1)}function l(e,t){if("u"<typeof document)return t;let a=getComputedStyle(document.documentElement).getPropertyValue(e).trim(),r=Number.parseFloat(a);return Number.isFinite(r)?Math.max(0,a.endsWith("ms")?r:1e3*r):t}function o(e,t="modal"){let[a,i]=(0,r.useState)(e),d=s(),c=!!e;return c&&a!==e&&i(e),(0,r.useEffect)(()=>{if(c||!a)return;let[r,s]=n[t],o=window.setTimeout(()=>i(e),d?0:l(r,s));return()=>window.clearTimeout(o)},[c,e,a,t,d]),{present:c||!d&&!!a,value:c?e:a,className:`t-${"panel"===t?"panel-slide":t} ${c?"is-open":"is-closing"}`,props:{"data-motion":t,"data-state":c?"open":"closed","data-open":c?"true":"false",inert:!c,"aria-hidden":!c||void 0}}}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.