svg-site 0.0.0-stage → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/.well-known/discord +1 -0
  2. package/21fn9e.js +54 -0
  3. package/assets/AccountPage-DmlYaBSE-8068ec8f.js +1 -0
  4. package/assets/AccountPage-fg4fizGa-8068ec8f.css +1 -0
  5. package/assets/AiPage-CTjB7gWo-8068ec8f.css +1 -0
  6. package/assets/AiPage-CbTtOj3W-8068ec8f.js +18 -0
  7. package/assets/DarkVeil-CC-BBhGo-8068ec8f.js +69 -0
  8. package/assets/GamesPage--YRYDVtw-8068ec8f.css +1 -0
  9. package/assets/GamesPage-D-HV0rpM-8068ec8f.js +1 -0
  10. package/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  11. package/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  12. package/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  13. package/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  14. package/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  15. package/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  16. package/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  17. package/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  18. package/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  19. package/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  20. package/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  21. package/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  22. package/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  23. package/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  24. package/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  25. package/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  26. package/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  27. package/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  28. package/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  29. package/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  30. package/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  31. package/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  32. package/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  33. package/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  34. package/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  35. package/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  36. package/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  37. package/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  38. package/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  39. package/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  40. package/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  41. package/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  42. package/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  43. package/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  44. package/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  45. package/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  46. package/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  47. package/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  48. package/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  49. package/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  50. package/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  51. package/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  52. package/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  53. package/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  54. package/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  55. package/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  56. package/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  57. package/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  58. package/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  59. package/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  60. package/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  61. package/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  62. package/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  63. package/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  64. package/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  65. package/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  66. package/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  67. package/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  68. package/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  69. package/assets/PlusPage-DBE836ej-8068ec8f.js +1 -0
  70. package/assets/PlusPage-vOvT9Zss-8068ec8f.css +1 -0
  71. package/assets/SettingsPage-CsV-N8Y0-8068ec8f.js +1 -0
  72. package/assets/boot-D3vqjHTs-8068ec8f.js +1 -0
  73. package/assets/fingerprint-Y5nV5FVa-8068ec8f.js +4 -0
  74. package/assets/index-COUSXtyQ-8068ec8f.js +3 -0
  75. package/assets/index-D4-Q3uqd-8068ec8f.css +1 -0
  76. package/assets/markdown-BtlGIx_H-8068ec8f.js +291 -0
  77. package/assets/markdown-dIRGbAJA-8068ec8f.css +1 -0
  78. package/assets/motion-B1hdS1Lc-8068ec8f.js +9 -0
  79. package/assets/ogl-BWe_HKY6-8068ec8f.js +1 -0
  80. package/assets/proxy-runtime-hRo6K69j-8068ec8f.js +13 -0
  81. package/assets/react-BNEptbwn-8068ec8f.js +49 -0
  82. package/assets/settings-page-B-LiQw8a-8068ec8f.css +1 -0
  83. package/assets/verity-mini-DjLHPujK.png +0 -0
  84. package/branding/ignite-os-browser-834cc7f9f1eda4fb.png +0 -0
  85. package/branding/ignite-os-browser-spooky-805a89482927bc04.png +0 -0
  86. package/branding/ignite-os-browser-spooky-no-drips-52ef55ca90dacae1.png +0 -0
  87. package/equ4q/67140b.js +2 -0
  88. package/equ4q/8tzsxm.js +41 -0
  89. package/equ4q/datyqq.js +2 -0
  90. package/favicon.svg +8 -0
  91. package/index.html +28 -0
  92. package/index.svg +35 -0
  93. package/jr1n9/4m74rv.js +31 -0
  94. package/jr1n9/cw3zk6.wasm +0 -0
  95. package/logo.svg +35 -0
  96. package/package.json +19 -4
  97. package/privacy.html +113 -0
  98. package/release-manifest.json +1 -0
  99. package/release.json +1 -0
  100. package/study.html +28 -0
  101. package/terms.html +96 -0
  102. package/README.md +0 -3
@@ -0,0 +1 @@
1
+ dh=96fad608dc9b677d26fa896e887bac97b76b1da5
package/21fn9e.js ADDED
@@ -0,0 +1,54 @@
1
+ let activationCheck = null;
2
+
3
+ self.__requestWorkerActivation = () => {
4
+ if (activationCheck) return activationCheck;
5
+ activationCheck = (async () => {
6
+ const scope = self.registration.scope;
7
+ const base = new URL(scope).pathname;
8
+ const clients = (await self.clients.matchAll({ includeUncontrolled: true, type: "window" }))
9
+ .filter((client) => client.url.startsWith(scope))
10
+ .filter((client) => !/^[a-z0-9]{6}\/[a-z0-9]+\/[a-z0-9]+\//.test(new URL(client.url).pathname.slice(base.length)));
11
+ const ready = await Promise.all(clients.map((client) => new Promise((resolve) => {
12
+ const channel = new MessageChannel();
13
+ const finish = (value) => {
14
+ clearTimeout(timer);
15
+ channel.port1.close();
16
+ resolve(value);
17
+ };
18
+ const timer = setTimeout(() => finish(false), 500);
19
+ channel.port1.onmessage = (event) => finish(event.data === true);
20
+ try { client.postMessage({ type: "runtime-handover-ready" }, [channel.port2]); }
21
+ catch { finish(false); }
22
+ })));
23
+ if (ready.every(Boolean)) await self.skipWaiting();
24
+ })().finally(() => { activationCheck = null; });
25
+ return activationCheck;
26
+ };
27
+
28
+ importScripts("equ4q/datyqq.js");
29
+
30
+ self.addEventListener("install", (event) => event.waitUntil(self.__requestWorkerActivation()));
31
+ self.addEventListener("message", (event) => {
32
+ if (event.data?.type === "runtime-activate-compatible") event.waitUntil(self.__requestWorkerActivation());
33
+ });
34
+ self.addEventListener("activate", (event) => event.waitUntil(self.clients.claim()));
35
+
36
+ function skipProxy(url) {
37
+ try {
38
+ const parsed = new URL(url);
39
+ const host = parsed.hostname;
40
+ if (parsed.origin !== self.location.origin && (host === "cdn.jsdelivr.net" || host.endsWith(".jsdelivr.net") || host === "luminsdk.com" || host.endsWith(".luminsdk.com"))) {
41
+ return true;
42
+ }
43
+ return /^\/(?:stores|covers|cdn)\//.test(parsed.pathname);
44
+ } catch {
45
+ return false;
46
+ }
47
+ }
48
+
49
+ self.addEventListener("fetch", (event) => {
50
+ if (skipProxy(event.request.url)) return;
51
+ if (_u806vei.shouldRoute(event)) {
52
+ event.respondWith(_u806vei.route(event));
53
+ }
54
+ });
@@ -0,0 +1 @@
1
+ import{r,j as s}from"./react-BNEptbwn-8068ec8f.js";import{$ as j,V as h,a0 as v}from"./index-COUSXtyQ-8068ec8f.js";/* empty css *//* empty css */import"./motion-B1hdS1Lc-8068ec8f.js";function m(i){if(!i)return"—";const a=new Date(i);return Number.isNaN(a.getTime())?"—":a.toLocaleDateString(void 0,{year:"numeric",month:"long",day:"numeric"})}function k({account:i}){var o;const[a,d]=r.useState(""),[x,c]=r.useState(!1);if(r.useEffect(()=>{var l;d(((l=i.user)==null?void 0:l.discordHandle)??""),c(!1)},[(o=i.user)==null?void 0:o.discordHandle]),i.status==="loading")return null;if(i.status!=="signed-in")return s.jsx("div",{className:"account-auth-auth-shell",children:s.jsx("div",{className:"account-auth-panel",children:s.jsx(j,{account:i,loginTagline:"Backs up your bookmarks, settings, and theme across devices.",brand:s.jsxs("div",{className:"account-auth-auth-brand",children:[s.jsx(h,{size:18}),s.jsx("span",{children:"IGNITE OS BROWSER Account"})]})})})});const{user:e,billing:n,isPlus:t}=i,g=n!=null&&n.cancelAtPeriodEnd?"Cancels on":"Renews on",u=async()=>{c(!1),await i.setDiscord(a.trim()||null)&&c(!0)};return s.jsx("div",{className:"settings-page account-settings",children:s.jsxs("div",{className:"settings-page-inner",children:[s.jsxs("div",{className:"settings-page-head",children:[s.jsx("h1",{children:"Account"}),s.jsx("p",{children:e==null?void 0:e.email})]}),s.jsxs("section",{className:"settings-section",children:[s.jsx("div",{className:"settings-section-title",children:"Profile"}),s.jsxs("div",{className:"settings-row",children:[s.jsxs("div",{className:"settings-row-text",children:[s.jsx("div",{className:"settings-row-label",children:"Email"}),s.jsx("div",{className:"settings-row-hint",children:e==null?void 0:e.email})]}),s.jsx("span",{className:`account-pill ${e!=null&&e.emailVerified?"ok":""}`,children:e!=null&&e.emailVerified?"Verified":"Unverified"})]}),s.jsxs("div",{className:"settings-row",children:[s.jsxs("div",{className:"settings-row-text",children:[s.jsx("div",{className:"settings-row-label",children:"Member since"}),s.jsx("div",{className:"settings-row-hint",children:"When you created this IGNITE OS BROWSER account"})]}),s.jsx("div",{className:"account-value",children:m(e==null?void 0:e.createdAt)})]}),s.jsx("div",{className:"settings-field-grid",children:s.jsxs("label",{className:"settings-field",children:[s.jsx("span",{className:"settings-field-label",children:"Discord username or user ID"}),s.jsxs("div",{className:"settings-row",style:{gap:8},children:[s.jsx("input",{className:"settings-input",style:{flex:1},value:a,placeholder:"username or 17–20 digit ID",onChange:l=>{d(l.target.value),c(!1)}}),s.jsx("button",{type:"button",className:"account-btn ghost",disabled:i.busy,onClick:()=>void u(),children:"Save"})]}),s.jsx("span",{className:"settings-field-label",children:x?"Saved — used for the Plus role in the IGNITE OS BROWSER Discord.":"Optional. Used for the Plus role in the IGNITE OS BROWSER Discord. You can also enter this at checkout."})]})})]}),s.jsxs("section",{className:"settings-section",children:[s.jsx("div",{className:"settings-section-title",children:"IGNITE OS BROWSER Plus"}),s.jsxs("div",{className:"settings-row",children:[s.jsxs("div",{className:"settings-row-text",children:[s.jsx("div",{className:"settings-row-label",children:"Status"}),s.jsx("div",{className:"settings-row-hint",children:t?"3M AI tokens/day, exclusive links, and an ad-free experience are unlocked.":"Upgrade for 3M AI tokens/day, exclusive links, and an ad-free experience."})]}),s.jsx("span",{className:`account-pill ${t?"plus":""}`,children:t?"Active":"Free"})]}),t&&(n==null?void 0:n.currentPeriodEnd)&&s.jsxs("div",{className:"settings-row",children:[s.jsxs("div",{className:"settings-row-text",children:[s.jsx("div",{className:"settings-row-label",children:g}),s.jsx("div",{className:"settings-row-hint",children:"Manage or cancel anytime in the billing portal"})]}),s.jsx("div",{className:"account-value",children:m(n.currentPeriodEnd)})]}),s.jsxs("div",{className:"settings-row",children:[s.jsxs("div",{className:"settings-row-text",children:[s.jsx("div",{className:"settings-row-label",children:t?"Billing":"Upgrade"}),s.jsx("div",{className:"settings-row-hint",children:t?"Update payment, invoices, or cancel.":"Subscribe to IGNITE OS BROWSER Plus."})]}),t?s.jsx("button",{type:"button",className:"account-btn ghost",onClick:()=>void i.manageBilling(),children:"Manage billing"}):s.jsx("button",{type:"button",className:"account-btn primary",onClick:()=>void i.checkout((e==null?void 0:e.email)??void 0),children:"Upgrade to Plus"})]}),!t&&s.jsx(v,{}),i.authError&&s.jsx("div",{className:"account-error",children:i.authError})]}),s.jsxs("section",{className:"settings-section",children:[s.jsx("div",{className:"settings-section-title",children:"Cloud sync"}),s.jsxs("div",{className:"settings-row",children:[s.jsxs("div",{className:"settings-row-text",children:[s.jsx("div",{className:"settings-row-label",children:"Backup & device sync"}),s.jsx("div",{className:"settings-row-hint",children:"Bookmarks, settings, theme, and proxied-site logins (cookies) sync to this account automatically."})]}),s.jsx("span",{className:"account-pill ok",children:"On"})]})]}),s.jsxs("section",{className:"settings-section",children:[s.jsx("div",{className:"settings-section-title",children:"Session"}),s.jsxs("div",{className:"settings-row",children:[s.jsxs("div",{className:"settings-row-text",children:[s.jsx("div",{className:"settings-row-label",children:"Sign out"}),s.jsx("div",{className:"settings-row-hint",children:"Signs out on this device only."})]}),s.jsx("button",{type:"button",className:"account-btn ghost",onClick:()=>void i.logout(),children:"Sign out"})]})]}),s.jsxs("div",{className:"settings-page-foot",children:[s.jsx(h,{size:14}),s.jsx("span",{children:"IGNITE OS BROWSER"})]})]})})}export{k as AccountPage};
@@ -0,0 +1 @@
1
+ .account-settings .settings-row+.settings-row{margin-top:1.1rem}.account-value{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.account-pill{flex-shrink:0;font-size:11px;font-weight:600;padding:.2rem .6rem;border-radius:999px;background:var(--surface-3);color:var(--muted)}.account-pill.ok{background:color-mix(in srgb,#34d399 20%,transparent);color:#34d399}.account-pill.plus{background:color-mix(in srgb,#f5c518 22%,transparent);color:#f5c518}.account-btn{flex-shrink:0;min-width:128px;height:34px;padding:0 .9rem;border-radius:var(--radius-xs);font-size:13px;font-weight:500;transition:background-color .15s ease,color .15s ease,filter .15s ease}.account-btn.primary{background:var(--text);color:var(--bg)}.account-btn.primary:hover:not(:disabled){filter:brightness(.92)}.account-btn.ghost{background:transparent;border:1px solid var(--border-2);color:var(--muted)}.account-btn.ghost:hover{color:var(--text);background:var(--surface-2)}.account-error{margin-top:.8rem;font-size:12px;color:#f87171}
@@ -0,0 +1 @@
1
+ .ai{--ai-accent: #5227ff;--ai-accent-2: #7b5cff;position:absolute;top:0;right:0;bottom:0;left:0;display:flex;min-height:0;overflow:hidden;background:transparent}.ai-verity-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;pointer-events:none}.ai-verity-cursor{position:absolute;top:0;left:0;width:48px;height:48px;border-radius:50%;object-fit:cover;opacity:0;pointer-events:none;filter:drop-shadow(0 6px 10px color-mix(in srgb,var(--bg) 62%,transparent));transition:opacity .16s ease;will-change:transform}.ai-verity-cursor[data-visible=true]{opacity:1}@media(pointer:coarse){.ai-verity-cursor{display:none}}.ai-rail{width:248px;flex-shrink:0;display:flex;flex-direction:column;gap:.5rem;padding:.7rem;background:color-mix(in srgb,var(--bg) 55%,transparent);backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);border-right:1px solid var(--border)}._9gmixa5._z51tprw .ai-rail{background:var(--bg)}.ai-rail-head{display:flex;align-items:center;justify-content:space-between;padding:.25rem .35rem .4rem}.ai-rail-title{display:flex;align-items:center;gap:.5rem;font-weight:700;font-size:15px;letter-spacing:-.01em}.ai-rail-title svg{color:var(--ai-accent-2)}.ai-thread-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px;overflow-y:auto;flex:1;min-height:0}.ai-thread{position:relative;display:flex;align-items:center;gap:.5rem;padding:.55rem .65rem;border-radius:var(--radius-sm);cursor:pointer;color:var(--muted);border:1px solid transparent;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.ai-thread:hover{background:var(--surface-2);color:var(--text)}.ai-thread.active{background:var(--surface-2);border-color:var(--border);color:var(--text)}.ai-thread-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}.ai-thread-acts{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:none;gap:2px;padding-left:16px;background:linear-gradient(to right,transparent,var(--surface-2) 40%)}.ai-thread:hover .ai-thread-acts,.ai-thread.active .ai-thread-acts{display:flex}.ai-thread-act{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--radius-xs);color:var(--muted);transition:background-color .15s ease,color .15s ease}.ai-thread-act:hover{background:var(--border);color:var(--text)}.ai-thread-edit{flex:1;min-width:0;background:var(--bg);border:1px solid var(--border-2);border-radius:var(--radius-xs);color:var(--text);font:inherit;font-size:13px;padding:.15rem .4rem;outline:none}.ai-model{position:relative;flex-shrink:0}.ai-model-trigger{height:32px;max-width:220px;display:flex;align-items:center;gap:.4rem;padding:0 .5rem 0 .35rem;background:color-mix(in srgb,var(--surface-2) 88%,var(--accent) 12%);border:1px solid color-mix(in srgb,var(--border) 70%,var(--accent) 30%);border-radius:var(--radius);color:var(--text);font-size:12px;cursor:pointer;transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease}.ai-brand.tinted[data-provider=openai]{color:var(--brand-openai)}.ai-brand.tinted[data-provider=anthropic]{color:var(--brand-anthropic)}.ai-brand.tinted[data-provider=google]{color:var(--brand-google)}.ai-brand.tinted[data-provider=deepseek]{color:var(--brand-deepseek)}.ai-brand.tinted[data-provider=qwen]{color:var(--brand-qwen)}.ai-model-tile{width:22px;height:22px;display:grid;place-items:center;border-radius:var(--radius-xs);background:var(--surface-solid);flex-shrink:0}.ai-model-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:550}.ai-model-chip{flex-shrink:0;padding:.1rem .35rem;border-radius:var(--radius-xs);background:color-mix(in srgb,var(--accent) 22%,transparent);color:var(--accent);font-size:10px;font-weight:600;letter-spacing:.02em}.ai-model-trigger:hover,.ai-model-trigger.open{border-color:color-mix(in srgb,var(--accent) 55%,var(--border));box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 18%,transparent)}.ai-model-trigger>svg{color:var(--muted);flex-shrink:0}.ai-model-trigger>svg:last-child{margin-left:.1rem;transition:transform .15s ease}.ai-model-trigger.open>svg:last-child{transform:rotate(180deg)}.ai-model-panel{position:absolute;right:0;bottom:calc(100% + 8px);z-index:30;width:min(348px,calc(100vw - 2rem));display:flex;flex-direction:column;background:color-mix(in srgb,var(--surface-solid) 92%,black 8%);border:1px solid var(--border-2);border-radius:var(--radius);box-shadow:0 18px 44px -18px #000000b3;overflow:hidden;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.ai-model-search{display:flex;align-items:center;gap:.5rem;padding:.6rem .75rem;border-bottom:1px solid var(--border);color:var(--muted-2)}.ai-model-search input{flex:1;min-width:0;border:0;background:transparent;color:var(--text);font:inherit;font-size:13px;outline:none}.ai-model-search input::placeholder{color:var(--muted-2)}.ai-model-list{max-height:min(400px,52vh);overflow:auto;padding:.35rem;scrollbar-width:thin}.ai-model-group+.ai-model-group{margin-top:.3rem;padding-top:.3rem;border-top:1px solid color-mix(in srgb,var(--border) 70%,transparent)}.ai-model-group-head{display:flex;align-items:center;gap:.4rem;padding:.4rem .55rem .3rem;color:var(--muted-2);font-size:10px;font-weight:650;letter-spacing:.07em;text-transform:uppercase}.ai-model-empty{margin:0;padding:1.4rem .75rem;text-align:center;color:var(--muted-2);font-size:12px}.ai-pick{width:100%;display:flex;align-items:center;gap:.6rem;padding:.45rem .55rem;border:0;border-radius:var(--radius-sm);background:transparent;text-align:left;cursor:pointer;transition:background-color .12s ease}.ai-pick-tile{width:28px;height:28px;display:grid;place-items:center;border-radius:var(--radius-xs);background:var(--surface-2);border:1px solid color-mix(in srgb,var(--border) 60%,transparent);flex-shrink:0}.ai-pick-copy{min-width:0;flex:1;display:flex;flex-direction:column;gap:.05rem}.ai-pick-name{display:flex;align-items:center;gap:.35rem;color:var(--text);font-size:13px;font-weight:550;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ai-pick-tag{padding:.02rem .3rem;border-radius:var(--radius-xs);border:1px solid color-mix(in srgb,var(--border-2) 90%,transparent);color:var(--muted-2);font-size:9px;font-weight:650;letter-spacing:.03em;text-transform:uppercase}.ai-pick-blurb{font-size:11px;color:var(--muted-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ai-pick-end{display:flex;align-items:center;gap:.35rem;flex-shrink:0;color:var(--muted)}.ai-pick.cursor{background:var(--surface-2)}.ai-pick.active{background:color-mix(in srgb,var(--accent) 12%,var(--surface-2));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 26%,transparent)}.ai-pick.active .ai-pick-end{color:var(--accent)}.ai-think{display:flex;align-items:center;gap:.6rem;padding:.55rem .6rem .55rem .75rem;border-top:1px solid var(--border);background:color-mix(in srgb,var(--surface-2) 60%,transparent)}.ai-think.disabled{opacity:.5}.ai-think-head{display:flex;align-items:center;gap:.4rem;color:var(--text);font-size:12px;font-weight:600}.ai-think-head svg{color:var(--muted)}.ai-think-hint{color:var(--muted-2);font-size:10px;font-weight:500}.ai-think-levels{margin-left:auto;display:grid;grid-template-columns:repeat(4,minmax(34px,1fr));gap:.15rem;padding:.15rem;border-radius:var(--radius-sm);background:var(--surface-solid);border:1px solid var(--border)}.ai-think-btn{height:24px;border:0;border-radius:var(--radius-xs);background:transparent;color:var(--muted);font:inherit;font-size:11px;font-weight:600;cursor:pointer;transition:background-color .12s ease,color .12s ease}.ai-think-btn:hover:not(:disabled){color:var(--text)}.ai-think-btn.active{background:color-mix(in srgb,var(--accent) 20%,var(--surface-2));color:var(--text)}.ai-think-btn:disabled{cursor:not-allowed}.ai-main{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.ai-scroll{flex:1;overflow-y:auto;min-height:0}.ai-messages{width:min(760px,100%);margin:0 auto;padding:1.75rem 1.25rem 1rem;display:flex;flex-direction:column;gap:1.4rem}.ai-msg{display:flex;flex-direction:column;gap:.5rem;animation:ai-rise .28s ease both}@keyframes ai-rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.ai-msg.user{align-items:flex-end}.ai-bubble{max-width:min(560px,100%);padding:.6rem .85rem;border-radius:var(--radius);background:var(--surface-3);border:1px solid var(--border);color:var(--text);white-space:pre-wrap;word-break:break-word;font-size:14px;line-height:1.5}.ai-bubble-assistant{max-width:min(760px,100%);background:transparent;border:none;padding:.15rem .1rem;white-space:normal}.ai-msg-images{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:flex-end}.ai-msg-images img{max-width:180px;max-height:180px;border-radius:6px;border:1px solid var(--border)}.ai-msg.assistant{align-items:flex-start}.ai-error{color:#e5675f;font-size:14px}.ai-actions{display:flex;align-items:center;gap:.25rem;margin-top:.1rem}.ai-act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-xs);color:var(--muted-2);transition:background-color .15s ease,color .15s ease}.ai-act:hover{background:var(--surface-2);color:var(--text)}.ai-meta{margin-left:.35rem;font-size:11px;color:var(--muted-2);font-variant-numeric:tabular-nums}.ai-typing{display:inline-flex;gap:5px;padding:.5rem 0}.ai-typing span{width:7px;height:7px;border-radius:50%;background:var(--muted);animation:ai-bounce 1.2s infinite ease-in-out}.ai-typing span:nth-child(2){animation-delay:.15s}.ai-typing span:nth-child(3){animation-delay:.3s}@keyframes ai-bounce{0%,60%,to{transform:translateY(0);opacity:.5}30%{transform:translateY(-4px);opacity:1}}.ai-empty{min-height:100%;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.75rem;padding:2rem}.ai-empty-title{margin:0;font-family:Manrope Variable,Geist Variable,sans-serif;font-size:32px;font-weight:700;letter-spacing:-.025em;color:var(--text)}.ai-empty-sub{margin:-1rem 0 0;max-width:420px;text-align:center;font-size:13px;line-height:1.45;color:var(--muted)}.ai-suggestions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;width:min(560px,100%);animation:ai-sugg-fade .4s ease both}@keyframes ai-sugg-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.ai-suggestion{padding:.85rem 1rem;text-align:left;background:color-mix(in srgb,var(--surface) 80%,transparent);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--muted);font-size:13px;line-height:1.4;transition:transform .15s ease,background-color .15s ease,border-color .15s ease,color .15s ease}.ai-suggestion:hover{transform:translateY(-2px);background:var(--surface-2);border-color:var(--border-2);color:var(--text)}.ai-banner{width:min(760px,100%);margin:0 auto;padding:.5rem 1.25rem;color:#e5675f;font-size:13px}.ai-composer{position:relative;z-index:20;width:min(760px,100%);margin:0 auto 1rem;flex-shrink:0;padding:.7rem;display:flex;flex-direction:column;gap:.5rem;background:color-mix(in srgb,var(--surface-solid) 80%,transparent);backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 14px 40px -22px #0009;transition:border-color .15s ease,box-shadow .15s ease}.ai-composer.dragging{border-color:var(--border-2)}.ai-drop-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:grid;place-items:center;border:1px dashed var(--border-2);border-radius:var(--radius);background:color-mix(in srgb,var(--surface-solid) 88%,transparent);color:var(--text);font-size:13px;font-weight:600;pointer-events:none}.ai-composer:focus-within{border-color:var(--border-2)}.ai-composer textarea{width:100%;resize:none;border:none;outline:none;background:transparent;color:var(--text);font:inherit;font-size:14px;line-height:1.5;max-height:160px}.ai-composer textarea::placeholder{color:var(--muted-2)}.ai-composer-actions{display:flex;align-items:center;gap:.3rem}.ai-composer-spacer{flex:1}.ai-tool{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-xs);color:var(--muted);transition:background-color .15s ease,color .15s ease,border-color .15s ease;border:1px solid transparent}.ai-tool:hover{background:var(--surface-2);color:var(--text)}.ai-tool.active{border-color:var(--border-2);background:var(--surface-2);color:var(--text)}.ai-send{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--radius-xs);background:var(--text);color:var(--bg);transition:filter .15s ease,opacity .15s ease,transform .1s ease}.ai-send:hover:not(:disabled){filter:brightness(1.08)}.ai-send:active:not(:disabled){transform:scale(.94)}.ai-send:disabled{opacity:.5}.ai-attachments{display:flex;flex-wrap:wrap;gap:.4rem}.ai-attachment{position:relative;width:52px;height:52px}.ai-attachment img{width:100%;height:100%;object-fit:cover;border-radius:var(--radius-xs);border:1px solid var(--border)}.ai-attachment button{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:50%;background:var(--surface-3);border:1px solid var(--border);color:var(--text);display:inline-flex;align-items:center;justify-content:center}.md{font-size:14px;line-height:1.6;color:var(--text);word-break:break-word}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md p{margin:.6rem 0}.md h1,.md h2,.md h3{margin:1rem 0 .5rem;font-weight:600;line-height:1.3}.md h1{font-size:1.4em}.md h2{font-size:1.25em}.md h3{font-size:1.1em}.md ul,.md ol{margin:.6rem 0;padding-left:1.4rem}.md li{margin:.25rem 0}.md a{color:var(--ai-accent-2);text-decoration:underline;text-underline-offset:2px}.md code{background:var(--surface-2);border:1px solid var(--border);padding:.1em .35em;border-radius:5px;font-family:ui-monospace,JetBrains Mono,Menlo,Consolas,monospace;font-size:.88em}.md pre{margin:.7rem 0;padding:.85rem 1rem;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);overflow-x:auto}.md pre code{background:transparent;border:none;padding:0;font-size:.85em}.md blockquote{margin:.7rem 0;padding-left:.9rem;border-left:3px solid var(--ai-accent-2);color:var(--muted)}.md table{width:100%;border-collapse:collapse;margin:.7rem 0;font-size:.9em}.md th,.md td{border:1px solid var(--border);padding:.4rem .6rem;text-align:left}.md img{max-width:100%;border-radius:var(--radius-sm)}.md code{color:#e1d5a1}.md pre code{color:var(--text)}.md .katex-display{margin:.9rem 0;padding:.85rem 1rem;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);overflow-x:auto;overflow-y:hidden}.ai-embeds{display:flex;flex-direction:column;gap:8px;margin-top:10px}.ai-embed{display:flex;gap:12px;max-width:460px;padding:10px 12px;border:1px solid var(--border);border-left:3px solid var(--ai-accent-2);border-radius:var(--radius-sm);background:var(--surface-2);color:inherit;text-decoration:none;transition:border-color .15s ease,background-color .15s ease}.ai-embed:hover{background:var(--surface-3);border-color:var(--border-2)}.ai-embed-thumb{width:64px;height:64px;flex:none;border-radius:var(--radius-xs);object-fit:cover;background:var(--surface-3)}.ai-embed-body{min-width:0;display:flex;flex-direction:column;gap:2px;justify-content:center}.ai-embed-site{font-size:11px;color:var(--muted-2);text-transform:uppercase;letter-spacing:.04em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ai-embed-title{font-size:13px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.ai-embed-desc{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.ai-rail-head-actions{display:flex;align-items:center;gap:.15rem}.ai-rail-head-actions ._1lqv40d.active{color:#22c55e;background:color-mix(in srgb,#22c55e 16%,transparent)}.ai-screen-error{margin:0 .35rem .4rem;padding:.4rem .55rem;border-radius:var(--radius-xs);background:color-mix(in srgb,#e5675f 14%,transparent);color:#e5675f;font-size:12px}.ai-screen-panel{position:fixed;bottom:20px;right:20px;width:380px;max-width:calc(100vw - 40px);z-index:60;animation:ai-rise .2s ease both}.ai-usage{margin-top:auto;padding:.85rem .75rem;margin:auto .4rem .5rem;border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--surface) 60%,transparent);display:flex;flex-direction:column;gap:.4rem}.ai-usage-head{display:flex;justify-content:space-between;align-items:baseline;font-size:12px}.ai-usage-label{color:var(--muted)}.ai-usage-val{color:var(--text);font-weight:700;font-variant-numeric:tabular-nums}.ai-usage-bar{height:5px;border-radius:999px;background:var(--surface-3);overflow:hidden;margin:1px 0 .3rem}.ai-usage-bar-fill{height:100%;border-radius:999px;background:var(--accent);transition:width .3s ease}.ai-usage-bar.high .ai-usage-bar-fill{background:#f5a623}.ai-usage-bar.full .ai-usage-bar-fill{background:#ef4444}.ai-usage-upgrade{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:.5rem;padding:.55rem;border:none;border-radius:var(--radius-xs);background:var(--text);color:var(--bg);font-size:12px;font-weight:700;cursor:pointer;transition:filter .15s ease,transform .1s ease}.ai-usage-upgrade:hover{filter:brightness(.92)}.ai-usage-upgrade:active{transform:translateY(1px)}.ai-msg-files{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:flex-end}.ai-file-chip{padding:.3rem .6rem;border-radius:var(--radius-xs);background:var(--surface-3);border:1px solid var(--border);color:var(--muted);font-size:12px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ai-attachment-file{position:relative;display:inline-flex;align-items:center;height:32px;padding:0 .6rem;border-radius:var(--radius-xs);background:var(--surface-2);border:1px solid var(--border);color:var(--muted);font-size:12px;max-width:180px}.ai-attachment-file span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ai-attachment-file button{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:50%;background:var(--surface-3);border:1px solid var(--border);color:var(--text);display:inline-flex;align-items:center;justify-content:center}.ai-edit{width:min(560px,100%);display:flex;flex-direction:column;gap:.5rem}.ai-edit textarea{width:100%;resize:vertical;min-height:72px;padding:.6rem .85rem;border-radius:var(--radius);background:var(--surface-3);border:1px solid var(--border-2);color:var(--text);font:inherit;font-size:14px;line-height:1.5;outline:none}.ai-edit-actions{display:flex;justify-content:flex-end;gap:.4rem}.ai-edit-cancel,.ai-edit-save{padding:.4rem .8rem;border-radius:var(--radius-xs);font-size:13px;font-weight:600;cursor:pointer;transition:filter .15s ease,background-color .15s ease}.ai-edit-cancel{background:var(--surface-2);border:1px solid var(--border);color:var(--muted)}.ai-edit-cancel:hover{color:var(--text)}.ai-edit-save{background:var(--text);color:var(--bg);border:none}.ai-edit-save:hover:not(:disabled){filter:brightness(1.08)}.ai-edit-save:disabled{opacity:.5}.ai-sources{display:flex;flex-direction:column;gap:.3rem;padding:.55rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);max-width:min(560px,100%)}.ai-sources-label{display:inline-flex;align-items:center;gap:.35rem;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-2)}.ai-sources-list{margin:0;padding-left:1.2rem;display:flex;flex-direction:column;gap:.15rem}.ai-sources-list a{color:var(--ai-accent-2);font-size:13px;text-decoration:none}.ai-sources-list a:hover{text-decoration:underline;text-underline-offset:2px}.ai-version-nav{display:inline-flex;align-items:center;gap:.1rem}.ai-version-label{font-size:11px;color:var(--muted-2);font-variant-numeric:tabular-nums;min-width:30px;text-align:center}.ai-act:disabled{opacity:.4;pointer-events:none}.ai-settings{position:relative;flex-shrink:0}.ai-settings-panel{position:absolute;left:0;bottom:calc(100% + 6px);z-index:20;width:280px;display:flex;flex-direction:column;gap:.6rem;padding:.75rem;background:var(--surface-solid);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:0 18px 40px -16px #00000080}.ai-settings-field{display:flex;flex-direction:column;gap:.3rem;flex:1;min-width:0}.ai-settings-field>span{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-2)}.ai-settings-field select,.ai-settings-field input,.ai-settings-field textarea{width:100%;padding:.4rem .55rem;border-radius:var(--radius-xs);background:var(--surface-2);border:1px solid var(--border);color:var(--text);font:inherit;font-size:13px;outline:none}.ai-settings-field textarea{resize:vertical;min-height:60px;line-height:1.4}.ai-settings-field select:focus,.ai-settings-field input:focus,.ai-settings-field textarea:focus{border-color:var(--border-2)}.ai-settings-row{display:flex;gap:.5rem}.ai-settings-reset{align-self:flex-end;padding:.35rem .7rem;border-radius:var(--radius-xs);background:var(--surface-2);border:1px solid var(--border);color:var(--muted);font-size:12px;font-weight:600;cursor:pointer}.ai-settings-reset:hover{color:var(--text)}.ai-search-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:flex;align-items:flex-start;justify-content:center;padding-top:14vh;background:color-mix(in srgb,#000 45%,transparent)}.ai-search{width:min(520px,calc(100vw - 32px));display:flex;flex-direction:column;background:var(--surface-solid);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 24px 60px -20px #0009;overflow:hidden}.ai-search-input{display:flex;align-items:center;gap:.55rem;padding:.75rem .9rem;border-bottom:1px solid var(--border);color:var(--muted)}.ai-search-input input{flex:1;min-width:0;border:none;outline:none;background:transparent;color:var(--text);font:inherit;font-size:14px}.ai-search-input input::placeholder{color:var(--muted-2)}.ai-search-input kbd{padding:.1rem .4rem;border:1px solid var(--border);border-radius:5px;background:var(--surface-2);color:var(--muted-2);font-size:11px;font-family:inherit}.ai-search-results{list-style:none;margin:0;padding:.3rem;max-height:320px;overflow-y:auto}.ai-search-row{width:100%;display:flex;flex-direction:column;gap:.15rem;padding:.55rem .65rem;border-radius:var(--radius-xs);text-align:left;cursor:pointer}.ai-search-row.active{background:var(--surface-2)}.ai-search-title{font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ai-search-sub{font-size:12px;color:var(--muted-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ai-search-empty{padding:.9rem;text-align:center;color:var(--muted-2);font-size:13px}.ai-tools-trace{display:flex;flex-wrap:wrap;gap:.35rem;margin:0 0 .5rem}.ai-tool-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .55rem;border-radius:999px;border:1px solid var(--border);background:color-mix(in srgb,var(--surface) 80%,transparent);font-size:11px;color:var(--muted)}.ai-tool-chip.start{color:var(--ai-accent-2)}.ai-tool-chip.error{color:#f87171}.ai-tool-chip em{font-style:normal;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted-2)}.ai-ask{margin:.6rem 0;padding:.7rem .8rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.ai-ask p{margin:0 0 .5rem;font-size:13px}.ai-ask-options{display:flex;flex-wrap:wrap;gap:.4rem}.ai-ask-options button{border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:999px;padding:.3rem .7rem;font-size:12px;cursor:pointer}.ai-artifact{width:min(420px,42vw);flex-shrink:0;display:flex;flex-direction:column;border-left:1px solid var(--border);background:var(--bg)}.ai-artifact-head{display:flex;align-items:center;gap:.4rem;padding:.45rem .6rem;border-bottom:1px solid var(--border)}.ai-artifact-tabs{display:flex;gap:.25rem;flex:1;min-width:0;overflow:auto}.ai-artifact-tabs button{border:0;background:transparent;color:var(--muted);font-size:12px;padding:.2rem .4rem;cursor:pointer}.ai-artifact-tabs button.on{color:var(--text);font-weight:600}.ai-artifact-frame{flex:1;border:0;background:#fff}.ai-fallback-list{display:flex;flex-direction:column;gap:.35rem;margin:0 0 .6rem}.ai-fallback{display:inline-flex;align-items:flex-start;align-self:flex-start;gap:.45rem;max-width:min(680px,100%);padding:.45rem .6rem;border:1px solid var(--border);border-radius:var(--radius-xs);background:color-mix(in srgb,var(--surface) 76%,transparent);color:var(--muted);font-size:12px;line-height:1.4}.ai-fallback svg{flex:0 0 auto;margin-top:1px;color:var(--text)}
@@ -0,0 +1,18 @@
1
+ var Je=Object.defineProperty;var Ye=(e,t,s)=>t in e?Je(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var J=(e,t,s)=>Ye(e,typeof t!="symbol"?t+"":t,s);import{r as o,j as n,c as Qe,a as Ze}from"./react-BNEptbwn-8068ec8f.js";import{r as et,a as tt,b as K,C as B,c as Le,G as fe,E as Ae,S as nt,d as st,R as at,e as rt,f as it,g as re,L as ot,I as ct,h as lt,i as ut,j as pe,M as dt,k as me,P as ft,T as pt,l as mt,m as ht,n as gt,o as xt,p as bt,q as be,w as ye,U as yt}from"./index-COUSXtyQ-8068ec8f.js";import{i as vt}from"./fingerprint-Y5nV5FVa-8068ec8f.js";import{M as wt,r as jt,a as kt,b as St}from"./markdown-BtlGIx_H-8068ec8f.js";import{m as Ie,A as Nt}from"./motion-B1hdS1Lc-8068ec8f.js";function ve(e){return Math.max(1,Math.round(e.trim().length/4))}function Et(e){return e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}function De(e){const t=e;return!!t&&typeof t.id=="string"&&Array.isArray(t.messages)&&typeof t.title=="string"}function ie(){return Math.random().toString(36).slice(2,10)+Date.now().toString(36)}function Ct(e){const t=e.trim().replace(/\s+/g," ");return t?t.length>42?t.slice(0,42).trimEnd()+"…":t:"New chat"}const Tt="IGNITE OS BROWSER-ai",H="threads",Mt=400,_e=100;let Y=null;function he(){return Y||(Y=new Promise((e,t)=>{const s=indexedDB.open(Tt,1);s.onupgradeneeded=()=>{s.result.objectStoreNames.contains(H)||s.result.createObjectStore(H,{keyPath:"id"})},s.onsuccess=()=>e(s.result),s.onerror=()=>t(s.error)})),Y}function ge(e){return new Promise((t,s)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>s(e.error)})}async function Pe(e){const t=await he();await ge(t.transaction(H,"readwrite").objectStore(H).put(e))}async function Rt(e){try{const t=await he();await ge(t.transaction(H,"readwrite").objectStore(H).delete(e))}catch{}}const Q=new Map;function Lt(e){const t=Q.get(e.id);t&&clearTimeout(t),Q.set(e.id,setTimeout(()=>{Q.delete(e.id),Pe(e).catch(()=>{})},Mt))}async function At(){const e=et("ai.threads",null);if(!(!Array.isArray(e)||e.length===0)){for(const t of e)De(t)&&await Pe(t);tt("ai.threads")}}async function It(){try{const e=await he();return await At(),(await ge(e.transaction(H,"readonly").objectStore(H).getAll())).filter(De).sort((s,r)=>r.updatedAt-s.updatedAt).slice(0,_e)}catch{return[]}}function Dt(e){return{id:ie(),title:"New chat",model:e,messages:[],updatedAt:Date.now()}}function _t(){const[e,t]=o.useState([]),[s,r]=o.useState(!1),[a,l]=o.useState(""),h=o.useRef([]);o.useEffect(()=>{let w=!0;return It().then(y=>{w&&(h.current=y,t(y),r(!0))}),()=>{w=!1}},[]),o.useEffect(()=>{if(!s)return;const w=new Map(h.current.map(b=>[b.id,b])),y=new Map(e.map(b=>[b.id,b]));for(const b of e)w.get(b.id)!==b&&Lt(b);for(const b of h.current)y.has(b.id)||Rt(b.id);h.current=e},[e,s]),o.useEffect(()=>{var w;a&&!e.some(y=>y.id===a)&&l(((w=e[0])==null?void 0:w.id)??"")},[e,a]);const g=e.find(w=>w.id===a),j=o.useCallback(w=>{const y=Dt(w);return t(b=>[y,...b].slice(0,_e)),l(y.id),y.id},[]),N=o.useCallback(w=>l(w),[]),M=o.useCallback(()=>l(""),[]),D=o.useCallback(w=>{t(y=>y.filter(b=>b.id!==w))},[]),f=o.useCallback((w,y)=>{const b=y.trim();b&&t(k=>k.map(T=>T.id===w?{...T,title:b}:T))},[]),x=o.useCallback((w,y)=>{t(b=>b.map(k=>k.id===w?y(k):k))},[]);return{threads:e,loaded:s,activeId:a,activeThread:g,create:j,select:N,startNew:M,remove:D,rename:f,update:x}}let Z=null,W=null;function Pt(){try{const e=[navigator.userAgent,navigator.language,screen.width,screen.height,screen.colorDepth,new Date().getTimezoneOffset(),navigator.hardwareConcurrency,navigator.deviceMemory].join("|");let t=2166136261;for(let s=0;s<e.length;s++)t^=e.charCodeAt(s),t=Math.imul(t,16777619);return`fb_${(t>>>0).toString(36)}`}catch{return""}}function we(e,t){return Promise.race([e,new Promise(s=>setTimeout(()=>s(null),t))])}async function $t(){try{const e=await we(vt.load(),2500);if(e){const t=await we(e.get(),2500);if(t!=null&&t.visitorId)return t.visitorId}}catch{}return Pt()}function $e(){return Z?Promise.resolve(Z):(W||(W=$t().then(e=>(Z=e||null,W=null,e))),W)}function ze(e){return!!e&&typeof e=="object"&&typeof e.p=="string"}function zt(e){let t="";for(let s=0;s<e.length;s+=1)t+=String.fromCharCode(e[s]);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Ot(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");for(;t.length%4;)t+="=";const s=atob(t),r=new Uint8Array(s.length);for(let a=0;a<s.length;a+=1)r[a]=s.charCodeAt(a);return r}function Ft(e){return zt(new TextEncoder().encode(e))}function Oe(e){return new TextDecoder().decode(Ot(e))}function Ht(e){return{p:Ft(JSON.stringify(e))}}function qt(e){if(!ze(e))return null;try{return JSON.parse(Oe(e.p))}catch{return null}}function Fe(e){return Ht(e)}function Ut(e){const t=qt(e);if(t===null)throw new Error("packed");return t}function Wt(e){if(!ze(e))throw new Error("packed");return Oe(e.p)}class oe extends Error{constructor(s,r,a=null){super(s);J(this,"code");J(this,"reason");this.code=r,this.reason=a}}async function Vt(e){try{const t=await fetch(K("/api/ai/title"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(Fe({message:e})),credentials:B});if(!t.ok)return null;const s=Ut(await t.json());return typeof(s==null?void 0:s.title)=="string"&&s.title?s.title:null}catch{return null}}async function He(e,t,s,r,a,l,h,g,j){var w,y,b,k;const N=await $e(),M=await fetch(K("/api/ai/chat"),{method:"POST",headers:{"content-type":"application/json","x-fingerprint":N,...Le("account")},body:JSON.stringify(Fe(e)),signal:t,credentials:B});if(!M.ok||!M.body){let T=`The AI request failed (${M.status}).`,p=null,c=null,v="";try{v=await M.text();const S=JSON.parse(v);S!=null&&S.error&&(T=S.error),S!=null&&S.code&&(p=S.code),S!=null&&S.reason&&(c=S.reason)}catch{}throw new oe(T,p,c)}const D=M.body.getReader(),f=new TextDecoder;let x="";try{for(;;){const{done:T,value:p}=await D.read();if(T)break;x+=f.decode(p,{stream:!0});const c=x.split(/\r?\n\r?\n/);x=c.pop()??"";for(const v of c)for(const S of v.split(/\r?\n/)){if(!S.startsWith("data:"))continue;const _=S.slice(5).trim();if(!_)continue;let C=_;try{C=Wt(JSON.parse(_))}catch{continue}if(C==="[DONE]")return;let m;try{m=JSON.parse(C)}catch{continue}if(m.error&&typeof m.error=="string"&&!m.choices)throw new oe(m.error,"provider");try{if(m.IGNITE OS BROWSER_tool&&typeof m.IGNITE OS BROWSER_tool=="object"){l==null||l(m.IGNITE OS BROWSER_tool);continue}if(m.IGNITE OS BROWSER_artifact&&typeof m.IGNITE OS BROWSER_artifact=="object"){h==null||h(m.IGNITE OS BROWSER_artifact);continue}if(m.IGNITE OS BROWSER_ask&&typeof m.IGNITE OS BROWSER_ask=="object"){g==null||g(m.IGNITE OS BROWSER_ask);continue}if(m.IGNITE OS BROWSER_fallback&&typeof m.IGNITE OS BROWSER_fallback=="object"){j==null||j(m.IGNITE OS BROWSER_fallback);continue}if(Array.isArray(m.IGNITE OS BROWSER_sources)){const u=m.IGNITE OS BROWSER_sources.map(d=>d).filter(d=>typeof d.title=="string"&&typeof d.url=="string").map(d=>({title:d.title,url:d.url}));u.length>0&&(a==null||a(u));continue}const A=(w=m.choices)==null?void 0:w[0],L=((y=A==null?void 0:A.delta)==null?void 0:y.content)??((b=A==null?void 0:A.message)==null?void 0:b.content);typeof L=="string"&&L&&s(L);const R=(k=m.usage)==null?void 0:k.total_tokens;typeof R=="number"&&R>0&&(r==null||r(R))}catch{}}}}catch(T){throw T}}const Kt=[{id:"none",label:"Off"},{id:"low",label:"Low"},{id:"medium",label:"Med"},{id:"high",label:"High"}],ce="medium",Bt=[{id:"deepseek",label:"DeepSeek"},{id:"qwen",label:"Qwen"},{id:"openai",label:"OpenAI"},{id:"anthropic",label:"Anthropic"}],G=[{id:"deepseek/deepseek-v4-flash-0731",label:"DeepSeek V4 Flash",provider:"deepseek",blurb:"Default chat",thinking:!0,vision:!1},{id:"qwen/qwen3.8-flash",label:"Qwen 3.8 Flash",provider:"qwen",blurb:"Vision and screenshare",thinking:!0,vision:!0},{id:"openai/gpt-6-luna",label:"GPT-6 Luna",provider:"openai",blurb:"Optional OpenAI lane",thinking:!0,vision:!0}],V="deepseek/deepseek-v4-flash-0731",le="qwen/qwen3.8-flash",ee={"openai/gpt-5.6-luna":"openai/gpt-6-luna","gpt-5.6-luna":"openai/gpt-6-luna","gpt-5.6-terra":"openai/gpt-6-luna","gpt-5.6-sol":"openai/gpt-6-luna","gpt-6-luna":"openai/gpt-6-luna","google/gemini-3.8-flash":"qwen/qwen3.8-flash","google/gemini-3.6-flash":"qwen/qwen3.8-flash","gemini-3.8-flash":"qwen/qwen3.8-flash","gemini-3.6-flash":"qwen/qwen3.8-flash","gemini-3.1-pro-preview":V,"google/gemini-3.1-pro-preview":V,"claude-sonnet-5":"openai/gpt-6-luna","claude-opus-5":"openai/gpt-6-luna","deepseek-v4-flash":"deepseek/deepseek-v4-flash-0731","deepseek-v4-pro":"deepseek/deepseek-v4-flash-0731"};function je(e){return G.some(t=>t.id===e)}function qe(e){return e&&je(e)?e:e&&ee[e]&&je(ee[e])?ee[e]:V}function Ue(e){var t;return((t=G.find(s=>s.id===e))==null?void 0:t.thinking)??!1}function ke(e){var t;return((t=G.find(s=>s.id===e))==null?void 0:t.provider)??null}function Gt(e){return e==="openai"||e==="deepseek"||e==="qwen"}function We(e){return e==="none"||e==="low"||e==="medium"||e==="high"}function Ve(e,t){return!Ue(e)||!Gt(ke(e))||!We(t)||t==="none"?null:ke(e)==="deepseek"?t==="low"?"low":"high":t}function Se(){return Bt.map(e=>({provider:e,models:G.filter(t=>t.provider===e.id)})).filter(e=>e.models.length>0)}function Xt(e){var t;return(t=e.files)!=null&&t.length?[e.content,...e.files.map(s=>`--- ${s.name} ---
2
+ ${s.content}`)].filter(Boolean).join(`
3
+
4
+ `):e.content}function Jt(e){const t=[];for(const s of e){if(s.error)continue;const r=Xt(s),a=s.role==="user"?s.images:void 0;if(!r.trim()&&!(a!=null&&a.length))continue;if(s.role==="user"&&(a!=null&&a.length)){const g={role:"user",content:[{type:"text",text:r},...a.map(N=>({type:"image_url",image_url:{url:N}}))]},j=t[t.length-1];(j==null?void 0:j.role)==="user"?t[t.length-1]=g:t.push(g);continue}const l={role:s.role,content:r},h=t[t.length-1];if((h==null?void 0:h.role)===l.role){l.role==="user"&&typeof h.content=="string"?h.content=[h.content,r].filter(Boolean).join(`
5
+
6
+ `):t[t.length-1]=l;continue}t.push(l)}return t}function Yt(e,t,s,r,a){var N;const l=e==null?void 0:e.settings,h=qe((l==null?void 0:l.model)??(e==null?void 0:e.model)??t),g={model:h,messages:Jt(r),web_search:a};e!=null&&e.id&&(g.session_id=e.id),(N=l==null?void 0:l.systemPrompt)!=null&&N.trim()&&(g.system_prompt=l.systemPrompt.trim()),typeof(l==null?void 0:l.temperature)=="number"&&(g.temperature=l.temperature);const j=Ve(h,(l==null?void 0:l.thinking)??s);return j&&(g.reasoning_effort=j),g}function Qt(e,t,s,r){const[a,l]=o.useState(!1),[h,g]=o.useState(null),j=o.useRef(null),N=o.useCallback(async(y,b,k,T)=>{const p=e.threads.find(L=>L.id===y),c=T??ie();e.update(y,L=>{const R=T?L.messages.find(d=>d.id===T):null,u=R?(()=>{const d=[...R.versions??[{content:R.content,meta:R.meta}],{content:""}];return{...R,versions:d,version:d.length-1,content:"",meta:void 0,sources:void 0,tools:void 0,artifacts:void 0,ask:void 0,fallbacks:void 0,error:void 0,pending:!0}})():{id:c,role:"assistant",content:"",pending:!0};return{...L,messages:[...b,u],updatedAt:Date.now()}});const v=new AbortController;j.current=v,l(!0),g(null);const S=performance.now(),_=L=>e.update(y,R=>({...R,messages:R.messages.map(u=>u.id===c?{...u,...L}:u)})),C=()=>e.update(y,L=>({...L,messages:L.messages.map(R=>{var i,E;if(R.id!==c||!R.versions)return R;const u=R.versions.slice(0,-1),d=u.length-1;return{...R,versions:u,version:d,content:((i=u[d])==null?void 0:i.content)??"",meta:(E=u[d])==null?void 0:E.meta,pending:!1}})}));let m="",A=0;try{await He(Yt(p,t,s,b,k),v.signal,u=>e.update(y,d=>({...d,messages:d.messages.map(i=>i.id!==c?i:(m=i.content+u,{...i,content:m}))})),u=>{A=u},u=>e.update(y,d=>({...d,messages:d.messages.map(i=>i.id===c?{...i,sources:[...i.sources??[],...u]}:i)})),u=>e.update(y,d=>({...d,messages:d.messages.map(i=>{if(i.id!==c)return i;const E=[...i.tools??[]],I=E.findIndex(P=>P.id===u.id);return I>=0?E[I]={...E[I],...u}:E.push(u),{...i,tools:E}})})),u=>e.update(y,d=>({...d,messages:d.messages.map(i=>{if(i.id!==c)return i;const E=[...(i.artifacts??[]).filter(I=>I.id!==u.id),u];return{...i,artifacts:E}})})),u=>_({ask:u}),u=>e.update(y,d=>({...d,messages:d.messages.map(i=>{if(i.id!==c)return i;const E=`${u.from.model}:${u.to.model}:${u.reason}`,I=[...i.fallbacks??[]];return I.some(P=>`${P.from.model}:${P.to.model}:${P.reason}`===E)||I.push(u),{...i,fallbacks:I}})})));const R={tokens:A>0?A:ve(m),ms:Math.round(performance.now()-S),estimated:A===0};e.update(y,u=>({...u,messages:u.messages.map(d=>{var E;if(d.id!==c)return d;const i=(E=d.versions)==null?void 0:E.map((I,P)=>P===(d.version??0)?{content:m,meta:R}:I);return{...d,content:m,pending:!1,meta:R,versions:i}})}))}catch(L){if(v.signal.aborted)e.update(y,R=>({...R,messages:R.messages.map(u=>{var i;if(u.id!==c)return u;const d=(i=u.versions)==null?void 0:i.map((E,I)=>I===(u.version??0)?{content:u.content}:E);return{...u,pending:!1,versions:d}})}));else if(L instanceof oe&&L.code==="rate_limit")T?C():e.update(y,R=>({...R,messages:R.messages.filter(u=>u.id!==c)})),r==null||r({code:L.code,reason:L.reason});else{const R=L instanceof Error?L.message:"Something went wrong.";if(g(R),m.trim()){const d={tokens:A>0?A:ve(m),ms:Math.round(performance.now()-S),estimated:A===0};_({content:m,pending:!1,error:!1,meta:d})}else T?C():_({content:R,pending:!1,error:!0})}}finally{l(!1),j.current=null}},[e,t,s,r]),M=o.useCallback((y,b,k,T)=>{var C,m;const p=y.trim();if(!p&&b.length===0&&k.length===0)return;const c=e.threads.find(A=>A.id===e.activeId),v=c?c.id:e.create(t),S=(c==null?void 0:c.messages)??[],_={id:ie(),role:"user",content:p,images:b.length?b:void 0,files:k.length?k:void 0};if(S.length===0){const A=Ct(p||((C=k[0])==null?void 0:C.name)||"New chat");e.update(v,L=>({...L,title:A})),Vt(p||((m=k[0])==null?void 0:m.content.slice(0,500))||"").then(L=>{L&&e.update(v,R=>R.title===A||R.title==="New chat"?{...R,title:L}:R)})}N(v,[...S,_],T)},[e,t,N]),D=o.useCallback(()=>{var y;return(y=j.current)==null?void 0:y.abort()},[]),f=o.useCallback((y,b)=>{const k=e.activeThread;if(!k)return;const T=b?k.messages.find(v=>v.id===b&&v.role==="assistant"):[...k.messages].reverse().find(v=>v.role==="assistant"&&!v.error);if(!T)return;let c=k.messages.findIndex(v=>v.id===T.id)-1;for(;c>=0&&k.messages[c].role!=="user";)c--;c<0||N(k.id,k.messages.slice(0,c+1),y,T.id)},[e,N]),x=o.useCallback((y,b,k)=>{const T=e.activeThread,p=b.trim();if(!T||!p)return;const c=T.messages.findIndex(S=>S.id===y&&S.role==="user");if(c<0)return;const v={...T.messages[c],content:p};N(T.id,[...T.messages.slice(0,c),v],k)},[e,N]),w=o.useCallback((y,b)=>{const k=e.activeThread;k&&e.update(k.id,T=>({...T,messages:T.messages.map(p=>p.id!==y||!p.versions||b<0||b>=p.versions.length?p:{...p,version:b,content:p.versions[b].content,meta:p.versions[b].meta})}))},[e]);return{isStreaming:a,error:h,send:M,stop:D,regenerate:f,editResend:x,setVersion:w}}function Zt(e){return e.replace(/\r\n?/g,`
7
+ `).replace(/\\\[([\s\S]*?)\\\]/g,(t,s)=>`$$${s}$$`).replace(/\\\(([\s\S]*?)\\\)/g,(t,s)=>`$${s}$`)}const en=/https?:\/\/[^\s<>()]+[^\s<>().,;:!?'"]/g;function tn(e,t=3){const s=new Set,r=[];for(const a of e.matchAll(en)){const l=a[0];if(!s.has(l)&&(s.add(l),r.push(l),r.length>=t))break}return r}function Ke({content:e}){return n.jsx("div",{className:"md",children:n.jsx(wt,{remarkPlugins:[kt,St],rehypePlugins:[jt],skipHtml:!0,components:{a:({node:t,...s})=>n.jsx("a",{...s,target:"_blank",rel:"noreferrer noopener"})},children:Zt(e)})})}const nn=250,F=new Map;function Ne(e,t){F.delete(e),F.set(e,t),F.size>nn&&F.delete(F.keys().next().value)}function sn(e){const[t,s]=o.useState(()=>F.get(e)??null);return o.useEffect(()=>{if(F.has(e)){s(F.get(e)??null);return}let r=!1;return fetch(K(`/api/ai/embed?url=${encodeURIComponent(e)}`),{credentials:B}).then(a=>a.ok?a.json():null).then(a=>{Ne(e,a),r||s(a)}).catch(()=>{Ne(e,null)}),()=>{r=!0}},[e]),t}function an({url:e}){const t=sn(e);return!t||!t.title&&!t.description?null:n.jsxs("a",{className:"ai-embed",href:t.url,target:"_blank",rel:"noreferrer noopener",children:[t.image&&n.jsx("img",{className:"ai-embed-thumb",src:t.image,alt:"",loading:"lazy"}),n.jsxs("div",{className:"ai-embed-body",children:[t.siteName&&n.jsx("span",{className:"ai-embed-site",children:t.siteName}),t.title&&n.jsx("span",{className:"ai-embed-title",children:t.title}),t.description&&n.jsx("span",{className:"ai-embed-desc",children:t.description})]})]})}function rn({content:e}){const t=tn(e);return t.length===0?null:n.jsx("div",{className:"ai-embeds",children:t.map(s=>n.jsx(an,{url:s},s))})}function on(e){return e==="web_search"?"Searching":e==="fetch_url"?"Reading page":e==="create_artifact"||e==="edit_artifact"?"Building":e==="ask_user"?"Asking":e}function cn({tools:e}){return e.length?n.jsx("div",{className:"ai-tools-trace",children:e.map(t=>n.jsxs("div",{className:`ai-tool-chip ${t.status}`,title:t.detail,children:[n.jsx(fe,{size:11}),n.jsx("span",{children:on(t.name)}),t.detail?n.jsx("em",{children:t.detail}):null]},t.id))}):null}function ln({message:e,canRegenerate:t,onRegenerate:s,onEdit:r,onSetVersion:a,onAskPick:l}){var b,k,T,p,c,v,S,_;const[h,g]=o.useState(!1),[j,N]=o.useState(!1),[M,D]=o.useState(""),f=()=>{navigator.clipboard.writeText(e.content).then(()=>{g(!0),setTimeout(()=>g(!1),1500)}).catch(()=>{})};if(e.role==="user"){const C=()=>{const m=M.trim();N(!1),m&&m!==e.content&&(r==null||r(m))};return n.jsxs("div",{className:"ai-msg user",children:[(b=e.images)!=null&&b.length?n.jsx("div",{className:"ai-msg-images",children:e.images.map((m,A)=>n.jsx("img",{src:m,alt:""},A))}):null,(k=e.files)!=null&&k.length?n.jsx("div",{className:"ai-msg-files",children:e.files.map((m,A)=>n.jsx("span",{className:"ai-file-chip",children:m.name},A))}):null,j?n.jsxs("div",{className:"ai-edit",children:[n.jsx("textarea",{value:M,autoFocus:!0,rows:3,onChange:m=>D(m.target.value),onKeyDown:m=>{m.key==="Enter"&&!m.shiftKey?(m.preventDefault(),C()):m.key==="Escape"&&N(!1)}}),n.jsxs("div",{className:"ai-edit-actions",children:[n.jsx("button",{type:"button",className:"ai-edit-cancel",onClick:()=>N(!1),children:"Cancel"}),n.jsx("button",{type:"button",className:"ai-edit-save",onClick:C,disabled:!M.trim(),children:"Save & resend"})]})]}):e.content?n.jsx("div",{className:"ai-bubble",children:e.content}):null,!j&&r&&e.content?n.jsx("div",{className:"ai-actions",children:n.jsx("button",{className:"ai-act",type:"button",title:"Edit & resend","aria-label":"Edit & resend",onClick:()=>{D(e.content),N(!0)},children:n.jsx(Ae,{size:14})})}):null]})}const x=((T=e.versions)==null?void 0:T.length)??0,w=e.version??x-1,y=C=>C.from.model===C.to.model?C.reason==="slow"?`${C.from.provider} is responding slowly. Falling back to ${C.to.provider}.`:`${C.from.provider} failed. Falling back to ${C.to.provider}.`:`${C.from.provider} failed. Switching to ${C.to.label} on ${C.to.provider}.`;return n.jsxs("div",{className:"ai-msg assistant",children:[(p=e.fallbacks)!=null&&p.length?n.jsx("div",{className:"ai-fallback-list",role:"status","aria-label":"AI fallback status",children:e.fallbacks.map((C,m)=>n.jsxs("div",{className:"ai-fallback",children:[n.jsx(nt,{size:13}),n.jsx("span",{children:y(C)})]},`${C.from.model}:${C.to.model}:${C.reason}:${m}`))}):null,(c=e.tools)!=null&&c.length?n.jsx(cn,{tools:e.tools}):null,e.pending&&!e.content&&!((v=e.tools)!=null&&v.length)?n.jsxs("div",{className:"ai-typing","aria-label":"Thinking",children:[n.jsx("span",{}),n.jsx("span",{}),n.jsx("span",{})]}):e.error?n.jsx("div",{className:"ai-error",children:e.content}):n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"ai-bubble ai-bubble-assistant",children:n.jsx(Ke,{content:e.content})}),(S=e.ask)!=null&&S.options.length?n.jsxs("div",{className:"ai-ask",children:[n.jsx("p",{children:e.ask.question}),n.jsx("div",{className:"ai-ask-options",children:e.ask.options.map(C=>n.jsx("button",{type:"button",onClick:()=>l==null?void 0:l(C),disabled:e.pending,children:C},C))})]}):null,!e.pending&&((_=e.sources)!=null&&_.length)?n.jsxs("div",{className:"ai-sources",children:[n.jsxs("span",{className:"ai-sources-label",children:[n.jsx(fe,{size:12})," Sources"]}),n.jsx("ol",{className:"ai-sources-list",children:e.sources.map((C,m)=>n.jsx("li",{children:n.jsx("a",{href:C.url,target:"_blank",rel:"noreferrer noopener",children:C.title||C.url})},m))})]}):null,!e.pending&&n.jsx(rn,{content:e.content}),!e.pending&&n.jsxs("div",{className:"ai-actions",children:[n.jsx("button",{className:"ai-act",type:"button",onClick:f,title:h?"Copied":"Copy","aria-label":"Copy",children:n.jsx(st,{size:14})}),t&&s&&n.jsx("button",{className:"ai-act",type:"button",onClick:s,title:"Regenerate","aria-label":"Regenerate",children:n.jsx(at,{size:14})}),x>1&&a&&n.jsxs("span",{className:"ai-version-nav",children:[n.jsx("button",{className:"ai-act",type:"button","aria-label":"Previous version",disabled:w<=0,onClick:()=>a(w-1),children:n.jsx(rt,{size:14})}),n.jsxs("span",{className:"ai-version-label",children:[w+1,"/",x]}),n.jsx("button",{className:"ai-act",type:"button","aria-label":"Next version",disabled:w>=x-1,onClick:()=>a(w+1),children:n.jsx(it,{size:14})})]}),e.meta&&n.jsxs("span",{className:"ai-meta",children:[e.meta.estimated?"~":"",e.meta.tokens," tokens · ",Et(e.meta.ms)]})]})]})]})}const un=1280,dn=.85;function fn(e){return new Promise((t,s)=>{const r=new FileReader;r.onerror=()=>s(r.error),r.onload=()=>{const a=new Image;a.onerror=()=>s(new Error("Could not load image")),a.onload=()=>{const l=Math.min(1,un/Math.max(a.width,a.height)),h=document.createElement("canvas");h.width=Math.round(a.width*l),h.height=Math.round(a.height*l);const g=h.getContext("2d");if(!g){t(r.result);return}g.drawImage(a,0,0,h.width,h.height),t(h.toDataURL("image/jpeg",dn))},a.src=r.result},r.readAsDataURL(e)})}const te=4,Ee=5e4,Be=[".txt",".md",".markdown",".csv",".json",".js",".ts",".tsx",".jsx",".py",".html",".css",".xml",".yml",".yaml",".log",".java",".c",".cpp",".h",".rs",".go",".rb",".php",".sql",".sh",".toml",".ini",".env"];function pn(e){if(e.type.startsWith("text/")||e.type==="application/json")return!0;const t=e.name.toLowerCase();return Be.some(s=>t.endsWith(s))}async function mn(e){let t=await e.text();return t.length>Ee&&(t=`${t.slice(0,Ee)}
8
+ [truncated]`),{name:e.name,content:t}}function hn({disabled:e,isStreaming:t,webSearch:s,searchLocked:r,onToggleWebSearch:a,onSend:l,onStop:h,modelSlot:g}){const[j,N]=o.useState(""),[M,D]=o.useState([]),[f,x]=o.useState([]),[w,y]=o.useState(!1),b=o.useRef(null),k=o.useRef(null),T=M.length+f.length,p=i=>Array.from(i.dataTransfer.types).includes("Files"),c=i=>{p(i)&&(i.preventDefault(),y(!0))},v=i=>{i.currentTarget===i.target&&y(!1)},S=i=>{p(i)&&(i.preventDefault(),y(!1),_(i.dataTransfer.files))},_=async i=>{if(!i)return;const E=te-T;if(E<=0)return;const I=Array.from(i).slice(0,E),P=await Promise.all(I.filter($=>$.type.startsWith("image/")).map(fn)),z=await Promise.all(I.filter($=>!$.type.startsWith("image/")&&pn($)).filter($=>!f.some(O=>O.name===$.name)).map(mn));P.length&&D($=>[...$,...P].slice(0,te)),z.length&&x($=>[...$,...z].slice(0,te))},C=()=>{k.current&&(k.current.style.height="auto")},m=!j.trim()&&M.length===0&&f.length===0,A=()=>{t||e||m||(l(j,M,f),N(""),D([]),x([]),C())},L=i=>{i.preventDefault(),A()},R=i=>{i.key==="Enter"&&!i.shiftKey&&(i.preventDefault(),A())},u=()=>{const i=k.current;i&&(i.style.height="auto",i.style.height=`${Math.min(i.scrollHeight,160)}px`)},d=i=>{Array.from(i.clipboardData.files).length>0&&(i.preventDefault(),_(i.clipboardData.files))};return n.jsxs("form",{className:`ai-composer ${w?"dragging":""}`,onSubmit:L,onDragOver:c,onDragLeave:v,onDrop:S,children:[w&&n.jsx("div",{className:"ai-drop-overlay",children:"Drop image or text file to attach"}),T>0&&n.jsxs("div",{className:"ai-attachments",children:[M.map((i,E)=>n.jsxs("div",{className:"ai-attachment",children:[n.jsx("img",{src:i,alt:""}),n.jsx("button",{type:"button","aria-label":"Remove",onClick:()=>D(I=>I.filter((P,z)=>z!==E)),children:n.jsx(re,{size:12})})]},`img-${E}`)),f.map((i,E)=>n.jsxs("div",{className:"ai-attachment-file",children:[n.jsx("span",{children:i.name}),n.jsx("button",{type:"button","aria-label":"Remove",onClick:()=>x(I=>I.filter((P,z)=>z!==E)),children:n.jsx(re,{size:12})})]},`file-${E}`))]}),n.jsx("textarea",{ref:k,value:j,rows:1,spellCheck:!0,disabled:e,placeholder:"Message Lucidity AI",onChange:i=>N(i.target.value),onInput:u,onKeyDown:R,onPaste:d}),n.jsxs("div",{className:"ai-composer-actions",children:[n.jsxs("button",{type:"button",className:`ai-tool ${s?"active":""}`,"aria-label":r?"Web search (Plus)":"Web search",title:r?"Web search · Plus":"Web search","aria-pressed":s,onClick:a,children:[n.jsx(fe,{size:15}),r?n.jsx(ot,{size:10}):null]}),n.jsx("button",{type:"button",className:"ai-tool","aria-label":"Attach image or file",title:"Attach",onClick:()=>{var i;return(i=b.current)==null?void 0:i.click()},children:n.jsx(ct,{size:15})}),n.jsx("div",{className:"ai-composer-spacer"}),g,t?n.jsx("button",{type:"button",className:"ai-send","aria-label":"Stop",onClick:h,children:n.jsx(lt,{size:16})}):n.jsx("button",{type:"submit",className:"ai-send","aria-label":"Send",disabled:e||m,children:n.jsx(ut,{size:16})})]}),n.jsx("input",{ref:b,type:"file",accept:`image/*,${Be.join(",")}`,multiple:!0,hidden:!0,onChange:i=>{_(i.target.files),i.target.value=""}})]})}function Ce(e){return Number.isInteger(e)?String(e):e.toFixed(1)}function Te(e){return e>=1e6?`${Ce(e/1e6)}M`:e>=1e3?`${Ce(e/1e3)}k`:String(e)}function gn({streaming:e,isPlus:t,onUpgrade:s}){const[r,a]=o.useState(null),l=o.useCallback(async()=>{try{const N=await $e(),M=await fetch(K("/api/ai/usage"),{headers:{"x-fingerprint":N,...Le("account")},credentials:B});M.ok&&a(await M.json())}catch{}},[]);o.useEffect(()=>{e||l()},[e,l]);const h=!!r&&r.limit>0,g=h?Math.min(100,Math.round(r.used/r.limit*100)):0,j=g>=100?"full":g>=80?"high":"";return n.jsxs("div",{className:"ai-usage",children:[n.jsxs("div",{className:"ai-usage-head",children:[n.jsx("span",{className:"ai-usage-label",children:"Tokens today"}),n.jsx("span",{className:"ai-usage-val",children:h?`${Te(r.used)} / ${Te(r.limit)}`:"—"})]}),n.jsx("div",{className:`ai-usage-bar ${j}`,children:n.jsx("div",{className:"ai-usage-bar-fill",style:{width:`${g}%`}})}),!t&&n.jsxs("button",{type:"button",className:"ai-usage-upgrade",onClick:s,children:[n.jsx(pe,{size:14}),n.jsx("span",{children:"Upgrade for 3M tokens/day"})]})]})}function xn({threads:e,activeId:t,streaming:s,isPlus:r,screenSharing:a,screenError:l,onToggleScreen:h,onOpenSearch:g,onNew:j,onSelect:N,onRemove:M,onRename:D,onUpgrade:f}){const[x,w]=o.useState(null),[y,b]=o.useState(""),k=(p,c)=>{w(p),b(c)},T=()=>{x&&D(x,y),w(null)};return n.jsxs("aside",{className:"ai-rail",children:[n.jsxs("div",{className:"ai-rail-head",children:[n.jsxs("span",{className:"ai-rail-title",children:[n.jsx(pe,{size:15})," Lucidity AI"]}),n.jsxs("div",{className:"ai-rail-head-actions",children:[n.jsx("button",{className:`_1lqv40d ${a?"active":""}`,type:"button","aria-label":a?"Stop screen share":"Share screen with AI",title:a?"Stop screen share":"Share screen with AI",onClick:h,children:n.jsx(dt,{size:15})}),n.jsx("button",{className:"_1lqv40d",type:"button","aria-label":"Search chats",title:"Search chats (⌘K)",onClick:g,children:n.jsx(me,{size:15})}),n.jsx("button",{className:"_1lqv40d",type:"button","aria-label":"New chat",onClick:j,children:n.jsx(ft,{size:15})})]})]}),l&&n.jsx("div",{className:"ai-screen-error",children:l}),n.jsx("ul",{className:"ai-thread-list",children:e.map(p=>n.jsxs("li",{className:`ai-thread ${p.id===t?"active":""}`,onClick:()=>N(p.id),children:[x===p.id?n.jsx("input",{className:"ai-thread-edit",value:y,autoFocus:!0,onClick:c=>c.stopPropagation(),onChange:c=>b(c.target.value),onBlur:T,onKeyDown:c=>{c.key==="Enter"?(c.preventDefault(),T()):c.key==="Escape"&&w(null)}}):n.jsx("span",{className:"ai-thread-title",children:p.title}),n.jsxs("div",{className:"ai-thread-acts",children:[n.jsx("button",{className:"ai-thread-act",type:"button","aria-label":"Rename chat",onClick:c=>{c.stopPropagation(),k(p.id,p.title)},children:n.jsx(Ae,{size:13})}),n.jsx("button",{className:"ai-thread-act",type:"button","aria-label":"Delete chat",onClick:c=>{c.stopPropagation(),M(p.id)},children:n.jsx(pt,{size:13})})]})]},p.id))}),n.jsx(gn,{streaming:s,isPlus:r,onUpgrade:f})]})}const bn=20;function yn(e,t){if(!t)return{thread:e,snippet:null};if(e.title.toLowerCase().includes(t))return{thread:e,snippet:null};const s=e.messages.find(h=>h.content.toLowerCase().includes(t));if(!s)return null;const r=s.content.toLowerCase().indexOf(t),a=Math.max(0,r-40),l=`${a>0?"…":""}${s.content.slice(a,r+t.length+60).replace(/\s+/g," ")}`;return{thread:e,snippet:l}}function vn({threads:e,onSelect:t,onClose:s}){const r=o.useRef(null),a=o.useRef(null),[l,h]=o.useState(""),[g,j]=o.useState(0),N=o.useMemo(()=>{const f=l.trim().toLowerCase();return e.map(x=>yn(x,f)).filter(x=>x!==null).slice(0,bn)},[e,l]);o.useEffect(()=>{var f;(f=r.current)==null||f.focus()},[]),o.useEffect(()=>{j(0)},[l]),o.useEffect(()=>{var x;const f=(x=a.current)==null?void 0:x.children[g];f==null||f.scrollIntoView({block:"nearest"})},[g]);const M=f=>{t(f.thread.id),s()},D=f=>{if(f.key==="Escape")f.preventDefault(),s();else if(f.key==="ArrowDown")f.preventDefault(),j(x=>Math.min(x+1,N.length-1));else if(f.key==="ArrowUp")f.preventDefault(),j(x=>Math.max(x-1,0));else if(f.key==="Enter"){f.preventDefault();const x=N[g];x&&M(x)}};return n.jsx("div",{className:"ai-search-backdrop",onMouseDown:f=>f.target===f.currentTarget&&s(),children:n.jsxs(Ie.div,{className:"ai-search",initial:{opacity:0,scale:.97,y:-8},animate:{opacity:1,scale:1,y:0},transition:{type:"spring",stiffness:480,damping:34},children:[n.jsxs("div",{className:"ai-search-input",children:[n.jsx(me,{size:15}),n.jsx("input",{ref:r,value:l,onChange:f=>h(f.target.value),onKeyDown:D,placeholder:"Search chats"}),n.jsx("kbd",{children:"esc"})]}),n.jsxs("ul",{className:"ai-search-results",ref:a,children:[N.map((f,x)=>n.jsx("li",{children:n.jsxs("button",{type:"button",className:`ai-search-row ${x===g?"active":""}`,onMouseEnter:()=>j(x),onClick:()=>M(f),children:[n.jsx("span",{className:"ai-search-title",children:f.thread.title}),n.jsx("span",{className:"ai-search-sub",children:f.snippet??`${f.thread.messages.length} messages`})]})},f.thread.id)),N.length===0&&n.jsx("li",{className:"ai-search-empty",children:"No matching chats."})]})]})})}const wn={openai:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.4114-.6813zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z",anthropic:"M17.3041 3.541h-3.6718l6.696 16.918H24Zm-10.6082 0L0 20.459h3.7442l1.3693-3.5527h7.0052l1.3693 3.5528h3.7442L10.5363 3.5409Zm-.3712 10.2225 2.2914-5.9456 2.2914 5.9456Z",deepseek:"M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 0 1-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 0 0-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 0 1-.465.137 9.597 9.597 0 0 0-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 0 0 1.545-.475c1.271-.686 1.784-1.815 1.905-3.182.018-.209-.002-.425-.24-.522zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 0 1 1.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 0 1 .415-.287.302.302 0 0 1 .2.288.306.306 0 0 1-.31.307.303.303 0 0 1-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 0 1-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 0 1 .016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 0 1-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.196-.019.354-.25.452z",qwen:"M23.919 14.545 20.817 9.17l1.47-2.544a.56.56 0 0 0 0-.566l-1.633-2.83a.57.57 0 0 0-.49-.283h-6.207L12.487.402a.57.57 0 0 0-.49-.284H8.732a.56.56 0 0 0-.49.284L5.139 5.775h-2.94a.56.56 0 0 0-.49.284L.077 8.887a.56.56 0 0 0 0 .567L3.18 14.83l-1.47 2.545a.56.56 0 0 0 0 .566l1.634 2.83a.57.57 0 0 0 .49.283h6.205l1.47 2.545a.57.57 0 0 0 .49.284h3.266a.57.57 0 0 0 .49-.284l3.104-5.375h2.94a.57.57 0 0 0 .49-.283l1.634-2.828a.55.55 0 0 0-.004-.568M8.733.686l1.634 2.828-1.634 2.828H21.8L20.164 9.17H7.425L5.63 6.06Zm1.306 19.801-6.205-.002 1.634-2.83h3.265L2.201 6.344h3.267q3.182 5.517 6.367 11.032zm10.124-5.66L18.53 12l-6.532 11.315-1.634-2.83c2.129-3.673 4.25-7.351 6.373-11.028h3.592l3.102 5.374z"};function ne({provider:e,size:t=16,tinted:s=!0}){return n.jsx("svg",{className:`ai-brand ${s?"tinted":""}`,"data-provider":e,width:t,height:t,viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0,children:n.jsx("path",{d:wn[e]})})}function jn({value:e,onChange:t,enabled:s}){return n.jsxs("div",{className:`ai-think ${s?"":"disabled"}`,children:[n.jsxs("div",{className:"ai-think-head",children:[n.jsx(pe,{size:13}),n.jsx("span",{children:"Thinking"}),!s&&n.jsx("span",{className:"ai-think-hint",children:"Unavailable"})]}),n.jsx("div",{className:"ai-think-levels",role:"group","aria-label":"Thinking level",children:Kt.map(r=>n.jsx("button",{type:"button",disabled:!s,"aria-pressed":e===r.id,className:`ai-think-btn ${e===r.id?"active":""}`,onClick:()=>t(r.id),children:r.label},r.id))})]})}function kn(e,t){const s=t.trim().toLowerCase();return s?`${e.label} ${e.blurb} ${e.provider}`.toLowerCase().includes(s):!0}function Sn({value:e,onChange:t,thinking:s,onThinkingChange:r}){const[a,l]=o.useState(!1),[h,g]=o.useState(""),[j,N]=o.useState(0),M=o.useRef(null),D=o.useRef(null),f=o.useRef(null),x=o.useMemo(()=>Se().map(c=>({...c,models:c.models.filter(v=>kn(v,h))})).filter(c=>c.models.length>0),[h]),w=o.useMemo(()=>x.flatMap(c=>c.models),[x]),y=o.useMemo(()=>Se().flatMap(c=>c.models),[]),b=y.find(c=>c.id===e)??y[0],k=b?Ue(b.id):!1;if(o.useEffect(()=>{if(!a)return;const c=_=>{var C;(C=M.current)!=null&&C.contains(_.target)||l(!1)},v=_=>{_.key==="Escape"&&l(!1)},S=gt();return S.addEventListener("mousedown",c),S.addEventListener("keydown",v),()=>{S.removeEventListener("mousedown",c),S.removeEventListener("keydown",v)}},[a]),o.useEffect(()=>{var c;if(!a){g("");return}N(Math.max(0,y.findIndex(v=>v.id===e))),(c=D.current)==null||c.focus()},[a,y,e]),o.useEffect(()=>{j>=w.length&&N(0)},[j,w.length]),o.useEffect(()=>{!k&&s!==ce&&r(ce)},[k,s,r]),o.useEffect(()=>{var c,v;(v=(c=f.current)==null?void 0:c.querySelector(".ai-pick.cursor"))==null||v.scrollIntoView({block:"nearest"})},[j,h]),!b)return null;const T=c=>{t(c.id),l(!1)},p=c=>{if(c.key==="Escape")return l(!1);if(c.key==="ArrowDown")c.preventDefault(),N(v=>w.length?(v+1)%w.length:0);else if(c.key==="ArrowUp")c.preventDefault(),N(v=>w.length?(v-1+w.length)%w.length:0);else if(c.key==="Enter"){c.preventDefault();const v=w[j];v&&T(v)}};return n.jsxs("div",{className:"ai-model",ref:M,children:[n.jsxs("button",{type:"button",className:`ai-model-trigger ${a?"open":""}`,onClick:()=>l(c=>!c),children:[n.jsx("span",{className:"ai-model-tile",children:n.jsx(ne,{provider:b.provider,size:14})}),n.jsx("span",{className:"ai-model-name",children:b.label}),k&&s!=="none"&&n.jsx("span",{className:"ai-model-chip",children:"Thinking"}),n.jsx(mt,{size:14})]}),n.jsx(Nt,{children:a&&n.jsxs(Ie.div,{className:"ai-model-panel",initial:{opacity:0,y:10,scale:.97},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:10,scale:.97},transition:{duration:.16,ease:[.16,1,.3,1]},children:[n.jsxs("div",{className:"ai-model-search",children:[n.jsx(me,{size:14}),n.jsx("input",{ref:D,value:h,placeholder:"Search models",onChange:c=>{g(c.target.value),N(0)},onKeyDown:p})]}),n.jsxs("div",{className:"ai-model-list",ref:f,children:[x.map(c=>n.jsxs("section",{className:"ai-model-group",children:[n.jsxs("header",{className:"ai-model-group-head",children:[n.jsx(ne,{provider:c.provider.id,size:12}),n.jsx("span",{children:c.provider.label})]}),c.models.map(v=>{const S=w.indexOf(v);return n.jsxs("button",{type:"button",className:`ai-pick ${v.id===e?"active":""} ${S===j?"cursor":""}`,onMouseMove:()=>N(S),onClick:()=>T(v),children:[n.jsx("span",{className:"ai-pick-tile",children:n.jsx(ne,{provider:v.provider,size:17})}),n.jsxs("span",{className:"ai-pick-copy",children:[n.jsxs("span",{className:"ai-pick-name",children:[v.label,v.thinking&&n.jsx("span",{className:"ai-pick-tag",children:"Thinks"})]}),n.jsx("span",{className:"ai-pick-blurb",children:v.blurb})]}),n.jsx("span",{className:"ai-pick-end",children:v.id===e?n.jsx(ht,{size:14}):null})]},v.id)})]},c.provider.id)),x.length===0&&n.jsxs("p",{className:"ai-model-empty",children:["No models match “",h.trim(),"”"]})]}),n.jsx(jn,{value:s,onChange:r,enabled:k})]})})]})}const se="Geist Variable, ui-sans-serif, system-ui, sans-serif",Nn="Look at what's on my screen and directly answer or solve the question, problem, or task shown. Give the final answer clearly and concisely, with brief working only if it helps.";function Ge({tokens:e,isSharing:t,isAsking:s,output:r,error:a,onAsk:l,onClose:h,onPopOut:g}){const j=t&&!s,N=!!a||s||r.trim().length>0,M=!N,D={height:"34px",borderRadius:"6px",border:`1px solid ${e.border}`,background:e.surface2,color:e.text,padding:"0 14px",cursor:"pointer",fontFamily:se,fontWeight:600,fontSize:"12px"};return n.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:M?"8px":"10px",boxSizing:"border-box",padding:M?"10px":"12px",background:e.bg,color:e.text},children:[M?null:n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[n.jsx("span",{style:{width:"8px",height:"8px",borderRadius:"999px",background:t?"#22c55e":"#ef4444",boxShadow:t?"0 0 8px rgba(34,197,94,0.55)":"0 0 8px rgba(239,68,68,0.55)"}}),n.jsx("span",{style:{fontSize:"12px",color:e.muted},children:t?"Screen sharing active":"Screen sharing inactive"})]}),n.jsx("textarea",{onKeyDown:f=>{if(f.key==="Enter"&&!f.shiftKey){f.preventDefault();const x=f.currentTarget,w=x.value.trim();if(!j||!w)return;l(w),x.value=""}},placeholder:"Ask about what's on your screen...",rows:1,disabled:s,style:{width:"100%",minHeight:M?"36px":"56px",maxHeight:"120px",resize:"none",boxSizing:"border-box",borderRadius:"6px",border:`1px solid ${e.border}`,background:e.surface2,color:e.text,padding:"10px",outline:"none",fontFamily:se,fontSize:"13px",lineHeight:"1.45",opacity:s?.72:1}}),n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[n.jsx("button",{type:"button",onClick:()=>j&&l(Nn),disabled:!j,style:{...D,border:"none",background:e.accent,color:e.bg,fontWeight:700,opacity:j?1:.5,cursor:j?"pointer":"default"},children:s?"Solving…":"Solve question"}),g?n.jsx("button",{type:"button",onClick:g,style:{...D,marginLeft:"auto"},children:"Pop out"}):null,n.jsx("button",{type:"button",onClick:h,style:g?D:{...D,marginLeft:"auto"},children:"Close"})]}),N?n.jsx("div",{style:{overflow:"auto",maxHeight:"560px",borderRadius:"6px",border:`1px solid ${e.border}`,background:e.surface2,padding:"10px",color:e.text,boxSizing:"border-box",fontFamily:se,fontSize:"13px",lineHeight:"1.55",whiteSpace:"normal"},children:a?n.jsx("p",{style:{margin:0,color:"#fca5a5"},children:a}):n.jsx(Ke,{content:r})}):null]})}const En="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css",Cn={video:{cursor:"always"},audio:!1};function ue(){const e=getComputedStyle(document.documentElement),t=(s,r)=>e.getPropertyValue(s).trim()||r;return{bg:t("--bg","#0b0f14"),surface:t("--surface","#111827"),surface2:t("--surface-2","#1f2937"),border:t("--border","#374151"),text:t("--text","#f3f4f6"),muted:t("--muted","#9ca3af"),accent:t("--accent","#ffffff")}}function Tn(){try{if(window.top&&window.top!==window&&window.top.location.origin===window.location.origin)return window.top}catch{return window}return window}function Mn(e){const t="popup=yes,width=430,height=120";return e.open("","sa",t)??window.open("","sa",t)}function Rn(e){const t=e.document;if(t.title="Assistant",t.body.innerHTML="",t.body.style.margin="0",t.documentElement.style.overflow="hidden",t.body.style.overflow="hidden",t.body.style.fontFamily="Manrope Variable, Geist Variable, ui-sans-serif, system-ui, sans-serif",!t.getElementById("_rwcxeuq")){const r=t.createElement("style");r.id="_rwcxeuq",r.textContent=`
9
+ .md { overflow-wrap: anywhere; font-size: 13px; line-height: 1.55; }
10
+ .md p { margin: 0 0 8px; }
11
+ .md p:last-child { margin-bottom: 0; }
12
+ .md ul, .md ol { margin: 0 0 8px; padding-left: 18px; }
13
+ .md pre { margin: 8px 0; border: 1px solid var(--assistant-border); border-radius: 8px; background: var(--assistant-code-bg); padding: 8px; overflow-x: auto; }
14
+ .md code { border-radius: 6px; background: var(--assistant-code-bg); padding: 1px 4px; }
15
+ .md pre code { background: transparent; padding: 0; }
16
+ .md a { color: var(--assistant-accent); text-decoration: underline; }
17
+ .md blockquote { margin: 8px 0; border-left: 2px solid var(--assistant-border); padding-left: 8px; opacity: 0.9; }
18
+ `,t.head.append(r)}if(!t.getElementById("_1u0ijh5")){const r=t.createElement("link");r.id="_1u0ijh5",r.rel="stylesheet",r.href=En,t.head.append(r)}const s=t.createElement("div");return s.style.width="100%",s.style.display="block",t.body.append(s),s}function Ln(){return new Promise(e=>{window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>e())})})}function An({onError:e,onStateChange:t}){const[s,r]=o.useState(!1),a=o.useRef(null),l=o.useRef(null),h=o.useRef(null),g=o.useRef(!1),j=o.useCallback(()=>{if(l.current)return l.current;const f=document.createElement("video");return f.muted=!0,f.autoplay=!0,f.playsInline=!0,l.current=f,f},[]),N=o.useCallback(()=>{const f=a.current;if(f)for(const x of f.getTracks())x.stop();a.current=null,l.current&&(l.current.srcObject=null),h.current=null,g.current=!1,r(!1),t()},[t]),M=o.useCallback(async f=>{if(a.current)return!0;try{const w=await(f??window).navigator.mediaDevices.getDisplayMedia(Cn);w.getVideoTracks()[0].addEventListener("ended",()=>N());const b=j();return b.srcObject=w,await b.play().catch(()=>{}),a.current=w,g.current=!0,r(!0),t(),!0}catch(x){const w=x instanceof Error?x.message:"Could not start screen sharing";return e(w),!1}},[j,e,t,N]),D=o.useCallback(async()=>{if(!a.current)throw new Error("Screen sharing is not active");const f=j();(!f.videoWidth||!f.videoHeight)&&await new Promise((S,_)=>{const C=window.setTimeout(()=>_(new Error("Timed out waiting for screen frame")),1200),m=()=>{window.clearTimeout(C),f.removeEventListener("loadeddata",m),S()};f.addEventListener("loadeddata",m)});const x=Math.max(1,f.videoWidth),w=Math.max(1,f.videoHeight),y=960,b=x>y?y/x:1,k=Math.max(1,Math.round(x*b)),T=Math.max(1,Math.round(w*b)),p=h.current??document.createElement("canvas");h.current=p,p.width=k,p.height=T;const c=p.getContext("2d");if(!c)throw new Error("Canvas context unavailable");c.drawImage(f,0,0,k,T);const v=await new Promise(S=>p.toBlob(S,"image/jpeg",.72));return v?await new Promise((S,_)=>{const C=new FileReader;C.onload=()=>{typeof C.result=="string"?S(C.result):_(new Error("Failed to encode screen capture"))},C.onerror=()=>_(new Error("Failed to encode screen capture")),C.readAsDataURL(v)}):p.toDataURL("image/jpeg",.72)},[j]);return{isSharing:s,isSharingRef:g,streamRef:a,startSharing:M,stopSharing:N,captureFrameDataUrl:D}}const In=380,Dn=240,_n=820,Pn=150;function $n(e){const t=e.document.body.firstElementChild;return t instanceof HTMLElement?Math.ceil(t.getBoundingClientRect().height):0}function de(e){try{if(e.closed)return;const t=$n(e)-e.innerHeight;if(Math.abs(t)<=1)return;const s=Math.min(_n,Math.max(Pn,e.outerHeight+t));s!==e.outerHeight&&e.resizeTo(e.outerWidth,s)}catch{}}function zn(e){try{e.requestAnimationFrame(()=>{de(e),e.setTimeout(()=>e.requestAnimationFrame(()=>de(e)),90)})}catch{}}function On({onAsk:e}){const[t,s]=o.useState("closed"),[r,a]=o.useState(""),[l,h]=o.useState(!1),[g,j]=o.useState(null),[N,M]=o.useState(null),[D,f]=o.useState(le),x=o.useRef(null),w=o.useRef(null),y=o.useRef(!1);y.current=l;const b=o.useCallback(d=>M(d),[]),k=o.useCallback(()=>{},[]),{isSharing:T,isSharingRef:p,streamRef:c,startSharing:v,stopSharing:S,captureFrameDataUrl:_}=An({onError:b,onStateChange:k}),C=o.useCallback(()=>{var i;const d=x.current;if(x.current=null,d){(i=d.resizeObserver)==null||i.disconnect(),window.setTimeout(()=>d.root.unmount(),0);try{d.window.close()}catch{}}},[]),m=o.useCallback(()=>{C(),S(),s("closed"),a(""),j(null)},[C,S]),A=o.useCallback(async d=>{var P,z,$;if(y.current)return;const i=d.trim();if(!i){j("Type a question first.");return}if(!p.current){j("Start screen sharing first.");return}h(!0),j(null),a("Thinking…");const E=x.current,I=(E==null?void 0:E.mountElement)??w.current;try{const q=(($=(z=(P=c.current)==null?void 0:P.getVideoTracks()[0])==null?void 0:z.getSettings())==null?void 0:$.displaySurface)==="monitor"&&I;q&&(I.style.visibility="hidden",await Ln());const Xe=await _();q&&(I.style.visibility="visible",E==null||E.window.focus());let xe=!1,X="";await e(i,Xe,{onDelta:U=>{xe||(X="",xe=!0),X+=U,a(X),j(null)},onError:U=>{a(U),j(U)},onComplete:()=>h(!1)})}catch(O){I&&(I.style.visibility="visible");const q=O instanceof Error?O.message:"Failed to ask about screen";a(q),j(q)}finally{h(!1)}},[_,p,e,c]),L=o.useCallback(()=>{var d;if(p.current){S();return}v(t==="window"?(d=x.current)==null?void 0:d.window:window)},[p,t,v,S]);o.useEffect(()=>{if(t!=="window")return;const d=x.current;if(!d)return;const i=ue(),E=d.window.document;E.documentElement.style.background=i.bg,E.body.style.background=i.bg,E.body.style.margin="0",E.body.style.padding="0",E.documentElement.style.setProperty("--assistant-border",i.border),E.documentElement.style.setProperty("--assistant-code-bg",`color-mix(in srgb, ${i.surface} 78%, black 22%)`),E.documentElement.style.setProperty("--assistant-accent",i.accent),d.root.render(n.jsx(Ge,{tokens:i,isSharing:T,isAsking:l,output:r,error:g,onAsk:I=>void A(I),onClose:m})),zn(d.window)},[t,T,l,r,g,A,m]);const R=o.useCallback(async()=>{const d=Tn(),i=d.documentPictureInPicture;let E=null;if(i!=null&&i.requestWindow)try{E=await i.requestWindow({width:In,height:Dn,disallowReturnToOpener:!0,preferInitialWindowPlacement:!0})}catch{E=null}if(!E)try{E=Mn(d)}catch{E=null}if(!E){s("inpage");return}const I=Rn(E),P=Qe.createRoot(I),z=E.ResizeObserver,$=z?new z(()=>de(E)):null;$==null||$.observe(I),x.current={window:E,root:P,mountElement:I,resizeObserver:$},E.addEventListener("pagehide",()=>{var O;((O=x.current)==null?void 0:O.window)===E&&m()},{once:!0}),s("window")},[m]),u=o.useCallback(async()=>{if(!p.current){if(!await v(window))return;M(null)}await R()},[p,v,R]);return o.useEffect(()=>()=>{C(),S()},[C,S]),{isSharing:T,mode:t,error:N,output:r,isAsking:l,askError:g,selectedModel:D,panelRef:w,start:u,popOut:R,stop:S,close:m,ask:A,toggleSharing:L,setSelectedModel:f,tokens:ue}}const Fn=""+new URL("verity-mini-DjLHPujK.png",import.meta.url).href,Me=16,Re=.14;function Hn(){const e=o.useRef(null);return o.useEffect(()=>{const t=e.current;if(!t)return;let s=0,r=0,a=0,l=0,h=0,g=!1;const j=()=>{l+=(r-l)*Re,h+=(a-h)*Re,t.style.transform=`translate3d(${l}px, ${h}px, 0)`,s=requestAnimationFrame(j)},N=D=>{r=D.clientX+Me,a=D.clientY+Me,g||(l=r,h=a,g=!0,t.dataset.visible="true")},M=()=>{g=!1,t.dataset.visible="false"};return window.addEventListener("mousemove",N,{passive:!0}),document.documentElement.addEventListener("mouseleave",M),s=requestAnimationFrame(j),()=>{window.removeEventListener("mousemove",N),document.documentElement.removeEventListener("mouseleave",M),cancelAnimationFrame(s)}},[]),Ze.createPortal(n.jsx("div",{className:"ai-verity-layer",children:n.jsx("img",{ref:e,className:"ai-verity-cursor",src:Fn,alt:"","aria-hidden":"true"})}),xt())}function qn({artifacts:e,onClose:t}){var h;const[s,r]=o.useState(((h=e[e.length-1])==null?void 0:h.id)??""),a=e.find(g=>g.id===s)??e[e.length-1],l=o.useMemo(()=>URL.createObjectURL(new Blob([(a==null?void 0:a.html)||"<!doctype html><title></title>"],{type:"text/html"})),[a==null?void 0:a.id,a==null?void 0:a.html]);return o.useEffect(()=>()=>URL.revokeObjectURL(l),[l]),a?n.jsxs("aside",{className:"ai-artifact",children:[n.jsxs("header",{className:"ai-artifact-head",children:[n.jsx(bt,{size:14}),n.jsx("nav",{className:"ai-artifact-tabs",children:e.map(g=>n.jsx("button",{type:"button",className:g.id===a.id?"on":"",onClick:()=>r(g.id),children:g.title||"Preview"},g.id))}),n.jsx("a",{className:"ai-act",href:l,target:"_blank",rel:"noreferrer",children:"Open"}),n.jsx("button",{type:"button",className:"ai-act","aria-label":"Close preview",onClick:t,children:n.jsx(re,{size:14})})]}),n.jsx("iframe",{className:"ai-artifact-frame",title:a.title||"Artifact",sandbox:"allow-scripts",src:l})]}):null}const ae=["What is the capital of france","What does a cow say","How do i become exit liquidity?","Plan a 3-day trip to Tokyo","Summarize the plot of Hamlet","Give me a 20-minute HIIT workout","Explain how HTTPS works","Suggest a name for my startup","What's the difference between TCP and UDP?","Recommend three sci-fi books","Turn this idea into a to-do list","Explain Docker like I'm five"];function Xn({account:e,onOpenAccount:t}){const s=_t(),[r,a]=o.useState(null),[l,h]=o.useState(!1),[g,j]=o.useState(()=>qe(be("ai.model")??V)),[N,M]=o.useState(()=>{const u=be("ai.thinking");return We(u)?u:ce}),[D,f]=o.useState(!1),[x,w]=o.useState(!1),[y,b]=o.useState(!0),k=Qt(s,g,N,a),T=o.useRef(null),p=On({onAsk:async(u,d,i)=>{const E=new AbortController,I=[{role:"user",content:[{type:"text",text:u},{type:"image_url",image_url:{url:d}}]}],P=Ve(le,N);try{await He({model:le,web_search:!1,screen:!0,messages:I,...P?{reasoning_effort:P}:{}},E.signal,i.onDelta),i.onComplete()}catch(z){i.onError(z instanceof Error?z.message:"Could not ask about your screen.")}}}),c=()=>{if(p.mode!=="closed"){p.close();return}p.start()};o.useEffect(()=>{ye("ai.model",g)},[g]),o.useEffect(()=>{ye("ai.thinking",N)},[N]),o.useEffect(()=>{const u=d=>{(d.metaKey||d.ctrlKey)&&d.key.toLowerCase()==="k"&&(d.preventDefault(),h(i=>!i))};return window.addEventListener("keydown",u),()=>window.removeEventListener("keydown",u)},[]);const v=s.activeThread,S=(v==null?void 0:v.messages)??[],[_]=o.useState(()=>Math.floor(Math.random()*ae.length)),C=Array.from({length:4},(u,d)=>ae[(_+d)%ae.length]);o.useEffect(()=>{const u=T.current;u&&(u.scrollTop=u.scrollHeight)},[S]);const m=D&&e.isPlus,A=(u,d,i)=>{k.send(u,d,i,m)},L=S[S.length-1],R=!k.isStreaming&&(L==null?void 0:L.role)==="assistant"&&!L.error;return n.jsxs("div",{className:"ai",children:[n.jsx(Hn,{}),n.jsx(xn,{threads:s.threads,activeId:s.activeId,streaming:k.isStreaming,isPlus:e.isPlus,screenSharing:p.isSharing,screenError:p.error,onToggleScreen:()=>void c(),onOpenSearch:()=>h(!0),onNew:s.startNew,onSelect:s.select,onRemove:s.remove,onRename:s.rename,onUpgrade:()=>a({code:"manual",reason:null})}),n.jsxs("div",{className:"ai-main",children:[n.jsx("div",{className:"ai-scroll",ref:T,children:S.length===0?n.jsxs("div",{className:"ai-empty",children:[n.jsx("h1",{className:"ai-empty-title",children:"How can Verity help?"}),n.jsx("p",{className:"ai-empty-sub",children:"Use the globe for live web search with Plus."}),n.jsx("div",{className:"ai-suggestions",children:C.map(u=>n.jsx("button",{type:"button",className:"ai-suggestion",onClick:()=>A(u,[],[]),children:u},u))},_)]}):n.jsx("div",{className:"ai-messages",children:S.map((u,d)=>n.jsx(ln,{message:u,canRegenerate:R&&d===S.length-1,onRegenerate:()=>k.regenerate(m,u.id),onEdit:u.role==="user"&&!k.isStreaming?i=>k.editResend(u.id,i,m):void 0,onSetVersion:i=>k.setVersion(u.id,i),onAskPick:i=>A(i,[],[])},u.id))})}),k.error&&n.jsx("div",{className:"ai-banner",children:k.error}),n.jsx(hn,{disabled:!s.loaded,isStreaming:k.isStreaming,webSearch:m,searchLocked:!e.isPlus,onToggleWebSearch:()=>{if(!e.isPlus){w(!0);return}f(u=>!u)},onSend:A,onStop:k.stop,modelSlot:n.jsx(Sn,{value:g,onChange:j,thinking:N,onThinkingChange:M})})]}),l&&n.jsx(vn,{threads:s.threads,onSelect:s.select,onClose:()=>h(!1)}),p.mode==="inpage"&&n.jsx("div",{className:"ai-screen-panel",ref:p.panelRef,children:n.jsx(Ge,{tokens:ue(),isSharing:p.isSharing,isAsking:p.isAsking,output:p.output,error:p.askError??p.error,onAsk:u=>void p.ask(u),onClose:p.close,onPopOut:()=>void p.popOut()})}),y&&S.some(u=>{var d;return(d=u.artifacts)==null?void 0:d.length})&&n.jsx(qn,{artifacts:S.flatMap(u=>u.artifacts??[]),onClose:()=>b(!1)}),n.jsx(yt,{open:!!r||x,onClose:()=>{a(null),w(!1)},account:e,heading:x?"Web search needs IGNITE OS BROWSER Plus":(r==null?void 0:r.code)==="rate_limit"?r.reason==="minute"?"Slow down a moment":"You've hit your daily AI limit":void 0,blurb:x?"Live web search is a Plus perk. Plus also includes 3M tokens/day and 50 messages a minute.":(r==null?void 0:r.code)==="rate_limit"?r.reason==="minute"?"Free accounts get 5 messages a minute. IGNITE OS BROWSER Plus raises that to 50/min — plus a 3M token/day budget.":"Free accounts get 60k AI tokens a day. IGNITE OS BROWSER Plus gives 3M tokens/day and 50/min.":void 0,onSignUp:()=>{a(null),w(!1),t==null||t()}})]})}export{Xn as AiPage};
@@ -0,0 +1,69 @@
1
+ import{r as d,j as W}from"./react-BNEptbwn-8068ec8f.js";import{R as N,T as P,P as B,V as j,M as G}from"./ogl-BWe_HKY6-8068ec8f.js";const V=`
2
+ attribute vec2 position;
3
+ void main(){gl_Position=vec4(position,0.0,1.0);}
4
+ `,k=`
5
+ #ifdef GL_ES
6
+ precision lowp float;
7
+ #endif
8
+ uniform vec2 uResolution;
9
+ uniform float uTime;
10
+ uniform float uHueShift;
11
+ uniform float uNoise;
12
+ uniform float uScan;
13
+ uniform float uScanFreq;
14
+ uniform float uWarp;
15
+ #define iTime uTime
16
+ #define iResolution uResolution
17
+
18
+ vec4 buf[8];
19
+ float rand(vec2 c){return fract(sin(dot(c,vec2(12.9898,78.233)))*43758.5453);}
20
+
21
+ mat3 rgb2yiq=mat3(0.299,0.587,0.114,0.596,-0.274,-0.322,0.211,-0.523,0.312);
22
+ mat3 yiq2rgb=mat3(1.0,0.956,0.621,1.0,-0.272,-0.647,1.0,-1.106,1.703);
23
+
24
+ vec3 hueShiftRGB(vec3 col,float deg){
25
+ vec3 yiq=rgb2yiq*col;
26
+ float rad=radians(deg);
27
+ float cosh=cos(rad),sinh=sin(rad);
28
+ vec3 yiqShift=vec3(yiq.x,yiq.y*cosh-yiq.z*sinh,yiq.y*sinh+yiq.z*cosh);
29
+ return clamp(yiq2rgb*yiqShift,0.0,1.0);
30
+ }
31
+
32
+ vec4 sigmoid(vec4 x){return 1./(1.+exp(-x));}
33
+
34
+ vec4 cppn_fn(vec2 coordinate,float in0,float in1,float in2){
35
+ buf[6]=vec4(coordinate.x,coordinate.y,0.3948333106474662+in0,0.36+in1);
36
+ buf[7]=vec4(0.14+in2,sqrt(coordinate.x*coordinate.x+coordinate.y*coordinate.y),0.,0.);
37
+ buf[0]=mat4(vec4(6.5404263,-3.6126034,0.7590882,-1.13613),vec4(2.4582713,3.1660357,1.2219609,0.06276096),vec4(-5.478085,-6.159632,1.8701609,-4.7742867),vec4(6.039214,-5.542865,-0.90925294,3.251348))*buf[6]+mat4(vec4(0.8473259,-5.722911,3.975766,1.6522468),vec4(-0.24321538,0.5839259,-1.7661959,-5.350116),vec4(0.,0.,0.,0.),vec4(0.,0.,0.,0.))*buf[7]+vec4(0.21808943,1.1243913,-1.7969975,5.0294676);
38
+ buf[1]=mat4(vec4(-3.3522482,-6.0612736,0.55641043,-4.4719114),vec4(0.8631464,1.7432913,5.643898,1.6106541),vec4(2.4941394,-3.5012043,1.7184316,6.357333),vec4(3.310376,8.209261,1.1355612,-1.165539))*buf[6]+mat4(vec4(5.24046,-13.034365,0.009859298,15.870829),vec4(2.987511,3.129433,-0.89023495,-1.6822904),vec4(0.,0.,0.,0.),vec4(0.,0.,0.,0.))*buf[7]+vec4(-5.9457836,-6.573602,-0.8812491,1.5436668);
39
+ buf[0]=sigmoid(buf[0]);buf[1]=sigmoid(buf[1]);
40
+ buf[2]=mat4(vec4(-15.219568,8.095543,-2.429353,-1.9381982),vec4(-5.951362,4.3115187,2.6393783,1.274315),vec4(-7.3145227,6.7297835,5.2473326,5.9411426),vec4(5.0796127,8.979051,-1.7278991,-1.158976))*buf[6]+mat4(vec4(-11.967154,-11.608155,6.1486754,11.237008),vec4(2.124141,-6.263192,-1.7050359,-0.7021966),vec4(0.,0.,0.,0.),vec4(0.,0.,0.,0.))*buf[7]+vec4(-4.17164,-3.2281182,-4.576417,-3.6401186);
41
+ buf[3]=mat4(vec4(3.1832156,-13.738922,1.879223,3.233465),vec4(0.64300746,12.768129,1.9141049,0.50990224),vec4(-0.049295485,4.4807224,1.4733979,1.801449),vec4(5.0039253,13.000481,3.3991797,-4.5561905))*buf[6]+mat4(vec4(-0.1285731,7.720628,-3.1425676,4.742367),vec4(0.6393625,3.714393,-0.8108378,-0.39174938),vec4(0.,0.,0.,0.),vec4(0.,0.,0.,0.))*buf[7]+vec4(-1.1811101,-21.621881,0.7851888,1.2329718);
42
+ buf[2]=sigmoid(buf[2]);buf[3]=sigmoid(buf[3]);
43
+ buf[4]=mat4(vec4(5.214916,-7.183024,2.7228765,2.6592617),vec4(-5.601878,-25.3591,4.067988,0.4602802),vec4(-10.57759,24.286327,21.102104,37.546658),vec4(4.3024497,-1.9625226,2.3458803,-1.372816))*buf[0]+mat4(vec4(-17.6526,-10.507558,2.2587414,12.462782),vec4(6.265566,-502.75443,-12.642513,0.9112289),vec4(-10.983244,20.741234,-9.701768,-0.7635988),vec4(5.383626,1.4819539,-4.1911616,-4.8444734))*buf[1]+mat4(vec4(12.785233,-16.345072,-0.39901125,1.7955981),vec4(-30.48365,-1.8345358,1.4542528,-1.1118771),vec4(19.872723,-7.337935,-42.941723,-98.52709),vec4(8.337645,-2.7312303,-2.2927687,-36.142323))*buf[2]+mat4(vec4(-16.298317,3.5471997,-0.44300047,-9.444417),vec4(57.5077,-35.609753,16.163465,-4.1534753),vec4(-0.07470326,-3.8656476,-7.0901804,3.1523974),vec4(-12.559385,-7.077619,1.490437,-0.8211543))*buf[3]+vec4(-7.67914,15.927437,1.3207729,-1.6686112);
44
+ buf[5]=mat4(vec4(-1.4109162,-0.372762,-3.770383,-21.367174),vec4(-6.2103205,-9.35908,0.92529047,8.82561),vec4(11.460242,-22.348068,13.625772,-18.693201),vec4(-0.3429052,-3.9905605,-2.4626114,-0.45033523))*buf[0]+mat4(vec4(7.3481627,-4.3661838,-6.3037653,-3.868115),vec4(1.5462853,6.5488915,1.9701879,-0.58291394),vec4(6.5858274,-2.2180402,3.7127688,-1.3730392),vec4(-5.7973905,10.134961,-2.3395722,-5.965605))*buf[1]+mat4(vec4(-2.5132585,-6.6685553,-1.4029363,-0.16285264),vec4(-0.37908727,0.53738135,4.389061,-1.3024765),vec4(-0.70647055,2.0111287,-5.1659346,-3.728635),vec4(-13.562562,10.487719,-0.9173751,-2.6487076))*buf[2]+mat4(vec4(-8.645013,6.5546675,-6.3944063,-5.5933375),vec4(-0.57783127,-1.077275,36.91025,5.736769),vec4(14.283112,3.7146652,7.1452246,-4.5958776),vec4(2.7192075,3.6021907,-4.366337,-2.3653464))*buf[3]+vec4(-5.9000807,-4.329569,1.2427121,8.59503);
45
+ buf[4]=sigmoid(buf[4]);buf[5]=sigmoid(buf[5]);
46
+ buf[6]=mat4(vec4(-1.61102,0.7970257,1.4675229,0.20917463),vec4(-28.793737,-7.1390953,1.5025433,4.656581),vec4(-10.94861,39.66238,0.74318546,-10.095605),vec4(-0.7229728,-1.5483948,0.7301322,2.1687684))*buf[0]+mat4(vec4(3.2547753,21.489103,-1.0194173,-3.3100595),vec4(-3.7316632,-3.3792162,-7.223193,-0.23685838),vec4(13.1804495,0.7916005,5.338587,5.687114),vec4(-4.167605,-17.798311,-6.815736,-1.6451967))*buf[1]+mat4(vec4(0.604885,-7.800309,-7.213122,-2.741014),vec4(-3.522382,-0.12359311,-0.5258442,0.43852118),vec4(9.6752825,-22.853785,2.062431,0.099892326),vec4(-4.3196306,-17.730087,2.5184598,5.30267))*buf[2]+mat4(vec4(-6.545563,-15.790176,-6.0438633,-5.415399),vec4(-43.591583,28.551912,-16.00161,18.84728),vec4(4.212382,8.394307,3.0958717,8.657522),vec4(-5.0237565,-4.450633,-4.4768,-5.5010443))*buf[3]+mat4(vec4(1.6985557,-67.05806,6.897715,1.9004834),vec4(1.8680354,2.3915145,2.5231109,4.081538),vec4(11.158006,1.7294737,2.0738268,7.386411),vec4(-4.256034,-306.24686,8.258898,-17.132736))*buf[4]+mat4(vec4(1.6889864,-4.5852966,3.8534803,-6.3482175),vec4(1.3543309,-1.2640043,9.932754,2.9079645),vec4(-5.2770967,0.07150358,-0.13962056,3.3269649),vec4(28.34703,-4.918278,6.1044083,4.085355))*buf[5]+vec4(6.6818056,12.522166,-3.7075126,-4.104386);
47
+ buf[7]=mat4(vec4(-8.265602,-4.7027016,5.098234,0.7509808),vec4(8.6507845,-17.15949,16.51939,-8.884479),vec4(-4.036479,-2.3946867,-2.6055532,-1.9866527),vec4(-2.2167742,-1.8135649,-5.9759874,4.8846445))*buf[0]+mat4(vec4(6.7790847,3.5076547,-2.8191125,-2.7028968),vec4(-5.743024,-0.27844876,1.4958696,-5.0517144),vec4(13.122226,15.735168,-2.9397483,-4.101023),vec4(-14.375265,-5.030483,-6.2599335,2.9848232))*buf[1]+mat4(vec4(4.0950394,-0.94011575,-5.674733,4.755022),vec4(4.3809423,4.8310084,1.7425908,-3.437416),vec4(2.117492,0.16342592,-104.56341,16.949184),vec4(-5.22543,-2.994248,3.8350096,-1.9364246))*buf[2]+mat4(vec4(-5.900337,1.7946124,-13.604192,-3.8060522),vec4(6.6583457,31.911177,25.164474,91.81147),vec4(11.840538,4.1503043,-0.7314397,6.768467),vec4(-6.3967767,4.034772,6.1714606,-0.32874924))*buf[3]+mat4(vec4(3.4992442,-196.91893,-8.923708,2.8142626),vec4(3.4806502,-3.1846354,5.1725626,5.1804223),vec4(-2.4009497,15.585794,1.2863957,2.0252278),vec4(-71.25271,-62.441242,-8.138444,0.50670296))*buf[4]+mat4(vec4(-12.291733,-11.176166,-7.3474145,4.390294),vec4(10.805477,5.6337385,-0.9385842,-4.7348723),vec4(-12.869276,-7.039391,5.3029537,7.5436664),vec4(1.4593618,8.91898,3.5101583,5.840625))*buf[5]+vec4(2.2415268,-6.705987,-0.98861027,-2.117676);
48
+ buf[6]=sigmoid(buf[6]);buf[7]=sigmoid(buf[7]);
49
+ buf[0]=mat4(vec4(1.6794263,1.3817469,2.9625452,0.),vec4(-1.8834411,-1.4806935,-3.5924516,0.),vec4(-1.3279216,-1.0918057,-2.3124623,0.),vec4(0.2662234,0.23235129,0.44178495,0.))*buf[0]+mat4(vec4(-0.6299101,-0.5945583,-0.9125601,0.),vec4(0.17828953,0.18300213,0.18182953,0.),vec4(-2.96544,-2.5819945,-4.9001055,0.),vec4(1.4195864,1.1868085,2.5176322,0.))*buf[1]+mat4(vec4(-1.2584374,-1.0552157,-2.1688404,0.),vec4(-0.7200217,-0.52666044,-1.438251,0.),vec4(0.15345335,0.15196142,0.272854,0.),vec4(0.945728,0.8861938,1.2766753,0.))*buf[2]+mat4(vec4(-2.4218085,-1.968602,-4.35166,0.),vec4(-22.683098,-18.0544,-41.954372,0.),vec4(0.63792,0.5470648,1.1078634,0.),vec4(-1.5489894,-1.3075932,-2.6444845,0.))*buf[3]+mat4(vec4(-0.49252132,-0.39877754,-0.91366625,0.),vec4(0.95609266,0.7923952,1.640221,0.),vec4(0.30616966,0.15693925,0.8639857,0.),vec4(1.1825981,0.94504964,2.176963,0.))*buf[4]+mat4(vec4(0.35446745,0.3293795,0.59547555,0.),vec4(-0.58784515,-0.48177817,-1.0614829,0.),vec4(2.5271258,1.9991658,4.6846647,0.),vec4(0.13042648,0.08864098,0.30187556,0.))*buf[5]+mat4(vec4(-1.7718065,-1.4033192,-3.3355875,0.),vec4(3.1664357,2.638297,5.378702,0.),vec4(-3.1724713,-2.6107926,-5.549295,0.),vec4(-2.851368,-2.249092,-5.3013067,0.))*buf[6]+mat4(vec4(1.5203838,1.2212278,2.8404984,0.),vec4(1.5210563,1.2651345,2.683903,0.),vec4(2.9789467,2.4364579,5.2347264,0.),vec4(2.2270417,1.8825914,3.8028636,0.))*buf[7]+vec4(-1.5468478,-3.6171484,0.24762098,0.);
50
+ buf[0]=sigmoid(buf[0]);
51
+ return vec4(buf[0].x,buf[0].y,buf[0].z,1.);
52
+ }
53
+
54
+ void mainImage(out vec4 fragColor,in vec2 fragCoord){
55
+ vec2 uv=fragCoord/uResolution.xy*2.-1.;
56
+ uv.y*=-1.;
57
+ uv+=uWarp*vec2(sin(uv.y*6.283+uTime*0.5),cos(uv.x*6.283+uTime*0.5))*0.05;
58
+ fragColor=cppn_fn(uv,0.1*sin(0.3*uTime),0.1*sin(0.69*uTime),0.1*sin(0.44*uTime));
59
+ }
60
+
61
+ void main(){
62
+ vec4 col;mainImage(col,gl_FragCoord.xy);
63
+ col.rgb=hueShiftRGB(col.rgb,uHueShift);
64
+ float scanline_val=sin(gl_FragCoord.y*uScanFreq)*0.5+0.5;
65
+ col.rgb*=1.-(scanline_val*scanline_val)*uScan;
66
+ col.rgb+=(rand(gl_FragCoord.xy+uTime)-0.5)*uNoise;
67
+ gl_FragColor=vec4(clamp(col.rgb,0.0,1.0),1.0);
68
+ }
69
+ `;function J({hueShift:i=0,noiseIntensity:n=0,scanlineIntensity:f=0,speed:g=.5,scanlineFrequency:s=0,warpAmount:m=0,resolutionScale:l=1}){const h=d.useRef(null),[E,L]=d.useState(0);return d.useEffect(()=>{const t=h.current,x=t.parentElement,p=window.matchMedia("(prefers-reduced-motion: reduce)").matches,w=p||navigator.hardwareConcurrency<=4||(navigator.deviceMemory??8)<=4,_=w?Math.min(l,.5):l;let o;try{o=new N({dpr:Math.max(.35,Math.min(window.devicePixelRatio,2)*_),canvas:t})}catch{return}const c=o.gl,F=new P(c),v=new B(c,{vertex:V,fragment:k,uniforms:{uTime:{value:0},uResolution:{value:new j},uHueShift:{value:i},uNoise:{value:n},uScan:{value:f},uScanFreq:{value:s},uWarp:{value:m}}}),M=new G(c,{geometry:F,program:v}),z=1e3/(w?15:45);let a=!0,u=0,y=0;const r=()=>{a=!1,cancelAnimationFrame(u),u=0},q=()=>{if(!(!a||c.isContextLost()))try{o.render({scene:M})}catch{r()}},b=()=>{if(!a||c.isContextLost())return;const e=x.clientWidth,T=x.clientHeight;e<1||T<1||(o.setSize(e,T),v.uniforms.uResolution.value.set(c.drawingBufferWidth,c.drawingBufferHeight))},S=e=>{e.preventDefault(),r()},C=()=>{r(),L(e=>e+1)};window.addEventListener("resize",b),t.addEventListener("webglcontextlost",S),t.addEventListener("webglcontextrestored",C),b();const H=performance.now(),R=e=>{a&&(u=requestAnimationFrame(R),!(document.hidden||c.isContextLost()||e-y<z)&&(y=e,v.uniforms.uTime.value=(e-H)/1e3*g,v.uniforms.uHueShift.value=i,v.uniforms.uNoise.value=n,v.uniforms.uScan.value=f,v.uniforms.uScanFreq.value=s,v.uniforms.uWarp.value=m,q()))};return p?q():u=requestAnimationFrame(R),()=>{r(),window.removeEventListener("resize",b),t.removeEventListener("webglcontextlost",S),t.removeEventListener("webglcontextrestored",C)}},[i,n,f,g,s,m,l,E]),W.jsx("canvas",{ref:h,className:"dark-veil-canvas"})}export{J as default};
@@ -0,0 +1 @@
1
+ ._j54ff7r{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;background:transparent}._5cmgbsy{overflow:hidden}._9j181ai{width:min(1600px,100%);margin:0 auto;padding:1.5rem 1.5rem 4rem}._f17g5y4{display:flex;align-items:center;gap:.6rem;margin-bottom:1rem}._2pwuuvh{flex:1;min-width:0;display:flex;align-items:center;gap:.5rem;height:38px;padding:0 .85rem;border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--surface) 80%,transparent);color:var(--muted);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}._2pwuuvh:focus-within{border-color:var(--border-2)}._2pwuuvh input{flex:1;min-width:0;background:transparent;border:none;outline:none;color:var(--text);font-size:14px}.games-filter{flex:none;display:inline-flex;align-items:center;gap:.4rem;height:38px;padding:0 .9rem;border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--surface) 80%,transparent);color:var(--muted);font-size:13px;font-weight:600;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.games-filter:hover{color:var(--text);border-color:var(--border-2)}.games-filter.on{color:var(--text);border-color:var(--border-2);background:var(--surface-2)}.games-count{min-width:18px;height:18px;padding:0 5px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:var(--text);color:var(--bg);font-size:11px;font-weight:800}.games-section{margin-bottom:1.75rem}.games-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:.7rem}._p3xhvnp{position:relative;aspect-ratio:1;border-radius:var(--radius);overflow:hidden;cursor:pointer;background:var(--surface-2);border:1px solid var(--border);transition:transform .12s ease,border-color .15s ease,box-shadow .15s ease}._p3xhvnp:hover{transform:translateY(-2px);border-color:var(--border-2);box-shadow:0 12px 28px -14px #000000b3}._45j08ng{width:100%;height:100%;object-fit:cover;display:block}._43oo6jb{position:absolute;left:0;right:0;bottom:0;padding:1.4rem .55rem .5rem;background:linear-gradient(to top,rgba(0,0,0,.9),transparent);color:#fff;font-size:12px;font-weight:600;line-height:1.25;opacity:0;transition:opacity .15s ease;pointer-events:none;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}._p3xhvnp:hover ._43oo6jb,._p3xhvnp:focus-visible ._43oo6jb{opacity:1}._j427epn{position:absolute;top:6px;right:6px;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-xs);background:color-mix(in srgb,#000 55%,transparent);color:#fff;opacity:0;transition:opacity .15s ease,color .15s ease}._p3xhvnp:hover ._j427epn,._j427epn.on{opacity:1}._j427epn.on{color:#f5c451}.games-empty{min-height:40vh;display:grid;place-items:center;color:var(--muted);font-size:14px}.games-error{margin-bottom:1rem;padding:.7rem .9rem;border:1px solid color-mix(in srgb,#ff5a5a 35%,var(--border));border-left:3px solid #ff5a5a;border-radius:var(--radius-sm);background:color-mix(in srgb,#ff5a5a 10%,transparent);color:var(--text);font-size:13px}._p3xhvnp.launching{pointer-events:none}._p3xhvnp.launching:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#0000008c}.game-tile-spin{position:absolute;top:50%;left:50%;z-index:1;width:22px;height:22px;margin:-11px 0 0 -11px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:games-spin .7s linear infinite}@keyframes games-spin{to{transform:rotate(360deg)}}._mih0yj4{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;background:var(--bg)}._kt8yn17{width:100%;height:100%;border:0;background:var(--bg)}.games-stage-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--muted);font-size:14px}._k2ow2d7{position:absolute;top:.7rem;right:.7rem;z-index:1;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--surface) 88%,transparent);color:var(--text)}._k2ow2d7:hover{border-color:var(--border-2);background:var(--surface-2)}
@@ -0,0 +1 @@
1
+ import{r as i,j as r}from"./react-BNEptbwn-8068ec8f.js";import{b as F,s as M,C as T,t as I,u as q,v as P,x as _,g as z,n as $,k as D,y as L,S as O,r as U,z as B}from"./index-COUSXtyQ-8068ec8f.js";import"./motion-B1hdS1Lc-8068ec8f.js";const Q=300;function k(e){return e&&typeof e=="object"?e:{}}function A(e){const t=k(e);return typeof t.id!="string"||typeof t.name!="string"||t.type!=="embed"&&t.type!=="proxy"?null:{id:t.id,name:t.name,type:t.type,thumb:typeof t.thumb=="string"?t.thumb:""}}async function G(e){await M();const t=await fetch(F(e),{credentials:T,cache:"no-store"}),a=await t.json().catch(()=>null),l=k(a);if(!t.ok){const c=typeof l.error=="string"&&l.error?l.error:"Couldn't reach the games service. Try reloading.";throw new Error(c)}return l}function E(e){return e?/^https?:\/\//i.test(e)?e:F(e.startsWith("/")?e:`/${e}`):""}async function Y(e){const t=new URLSearchParams;e.q&&t.set("q",e.q),e.random&&t.set("random","1");const a=await G(`/api/games?${t}`),l=Array.isArray(a.games)?a.games.map(A).filter(c=>!!c):[];return{games:l,total:typeof a.total=="number"?a.total:l.length,page:1,pages:1}}async function H(e){const t=await G(`/api/games/${encodeURIComponent(e)}`),a=A(t.meta),l=typeof t.url=="string"?t.url:"";if(!l||!a)throw new Error("Couldn't launch that game.");return{url:E(l),thumb:typeof t.thumb=="string"?E(t.thumb):"",type:t.type==="proxy"?"proxy":"embed",meta:a}}function K(e,t){const[a,l]=i.useState(e);return i.useEffect(()=>{const c=window.setTimeout(()=>l(e),t);return()=>window.clearTimeout(c)},[e,t]),a}function V(e,t){return e instanceof Error&&e.message?e.message:t}function W(e=!1){const[t,a]=i.useState("loading"),[l,c]=i.useState([]),[m,n]=i.useState({}),[u,f]=i.useState(0),[y,b]=i.useState(!1),[x,d]=i.useState(null),[v,N]=i.useState(""),[g,S]=i.useState(null),p=K(v.trim(),Q),j=!p;i.useEffect(()=>{if(e)return;let o=!0;return b(!0),d(null),Y({q:p||void 0,random:j}).then(h=>{if(!o)return;c(h.games),f(h.total);const w={};for(const C of h.games)w[C.id]=E(C.thumb);n(w),a("ready"),d(null)}).catch(h=>{o&&(a("error"),d(V(h,"Couldn't load games.")))}).finally(()=>{o&&b(!1)}),()=>{o=!1}},[p,e,j]);const s=i.useCallback(async o=>{d(null),S(o.id);try{return await H(o.id)}catch{return null}finally{S(null)}},[]);return{status:t,error:x,games:l,images:m,total:u,pageLoading:y,query:v,setQuery:N,shuffled:j,launching:g,play:s,debouncedQuery:p}}const R="_mih0yj4";function X({controller:e,name:t,src:a,onClose:l}){const c=i.useRef(null),m=i.useRef(I());return i.useEffect(()=>{const n=$(),u=f=>{f.key==="Escape"&&l()};return n.addEventListener("keydown",u),()=>n.removeEventListener("keydown",u)},[l]),i.useEffect(()=>{const n=c.current;return!e||!n?void 0:(q(e,R,n,m.current,{onUrl:()=>{},onTitle:()=>{}}).go(a),()=>P(m.current,R))},[e,a]),r.jsxs("div",{className:"_mih0yj4",children:[!e&&r.jsx("div",{className:"games-stage-loading",children:"Starting game…"}),r.jsx("iframe",{ref:c,className:"_kt8yn17",title:t,allow:_,allowFullScreen:!0,onPointerDown:n=>n.currentTarget.focus()}),r.jsx("button",{type:"button",className:"_k2ow2d7",onClick:l,"aria-label":"Close",children:r.jsx(z,{size:16})})]})}const J={ids:[],entries:{}},Z="games.saved.v2";function ee(e){const[t,a]=i.useState(()=>U(e,J));return i.useEffect(()=>B(e,t),[e,t]),[t,a]}function te({game:e,src:t,favorited:a,launching:l,onPlay:c,onToggleFav:m,onUnavailable:n}){const[u,f]=i.useState(!1);return i.useEffect(()=>{t||n(e.id)},[t,e.id,n]),!t||u?null:r.jsxs("div",{className:`_p3xhvnp ${l?"launching":""}`,onClick:c,role:"button",tabIndex:0,title:e.name,children:[r.jsx("img",{className:"_45j08ng",src:t,alt:e.name,loading:"lazy",onError:()=>{f(!0),n(e.id)}}),l&&r.jsx("span",{className:"game-tile-spin"}),r.jsx("span",{className:"_43oo6jb",children:e.name}),r.jsx("button",{type:"button",className:`_j427epn ${a?"on":""}`,onClick:y=>{y.stopPropagation(),m()},"aria-label":"Favorite",children:r.jsx(L,{size:15,filled:a})})]})}function re({controller:e,onOpenUrl:t}){const[a,l]=i.useState(!1),[c,m]=ee(Z),n=W(a),[u,f]=i.useState(null),[y,b]=i.useState({}),x=i.useCallback(s=>b(o=>o[s]?o:{...o,[s]:!0}),[]),d=i.useMemo(()=>c.ids.map(s=>c.entries[s]).filter(Boolean),[c]),v=i.useCallback(async s=>{const o=await n.play(s);if(!o){x(s.id);return}o.type==="proxy"?t(o.url):f({url:o.url,name:s.name})},[n.play,t,x]),N=i.useCallback(s=>{m(o=>{if(o.ids.includes(s.id)){const h={...o.entries};return delete h[s.id],{ids:o.ids.filter(w=>w!==s.id),entries:h}}return{ids:[s.id,...o.ids],entries:{...o.entries,[s.id]:s}}})},[m]),g=i.useMemo(()=>(a?d.filter(o=>!n.query.trim()||o.name.toLowerCase().includes(n.query.trim().toLowerCase())):n.games).filter(o=>!y[o.id]),[a,n.games,n.query,d,y]),S=i.useMemo(()=>{if(!a)return n.images;const s={};for(const o of d)s[o.id]=E(o.thumb);return s},[a,n.images,d]),p=a?"No favorites yet.":"No games found.",j=(n.status==="loading"||n.pageLoading)&&g.length===0;return r.jsxs("div",{className:`_j54ff7r${u?" _5cmgbsy":""}`,children:[r.jsxs("div",{className:"_9j181ai",children:[r.jsxs("div",{className:"_f17g5y4",children:[r.jsxs("div",{className:"_2pwuuvh",children:[r.jsx(D,{size:15}),r.jsx("input",{value:n.query,onChange:s=>n.setQuery(s.target.value),placeholder:"Search games"})]}),r.jsxs("button",{type:"button",className:`games-filter ${a?"on":""}`,onClick:()=>l(s=>!s),children:[r.jsx(L,{size:14,filled:a})," Favorites"," ",c.ids.length>0&&r.jsx("span",{className:"games-count",children:c.ids.length})]}),!a&&g.length>0&&r.jsxs("button",{type:"button",className:"games-filter",onClick:()=>void v(g[Math.floor(Math.random()*g.length)]),children:[r.jsx(O,{size:14})," Random"]})]}),n.status==="error"&&!n.error&&r.jsx("div",{className:"games-error",children:"Couldn't reach the games service. Try reloading."}),n.error&&r.jsx("div",{className:"games-error",children:n.error}),r.jsx("section",{className:"games-section",children:j?r.jsx("div",{className:"games-empty",children:"Loading games…"}):g.length===0?r.jsx("div",{className:"games-empty",children:p}):r.jsx("div",{className:"games-grid",children:g.map(s=>r.jsx(te,{game:s,src:S[s.id],favorited:c.ids.includes(s.id),launching:n.launching===s.id,onPlay:()=>void v(s),onToggleFav:()=>N(s),onUnavailable:x},s.id))})})]}),u&&r.jsx(X,{controller:e,name:u.name,src:u.url,onClose:()=>f(null)})]})}export{re as GamesPage};
@@ -0,0 +1 @@
1
+ import{r as d,j as s}from"./react-BNEptbwn-8068ec8f.js";import{a0 as u,V as p}from"./index-COUSXtyQ-8068ec8f.js";/* empty css *//* empty css */import"./motion-B1hdS1Lc-8068ec8f.js";const h=["No ads","3M AI tokens/day","Exclusive Plus links","Discord Plus role"];function y({account:e,onOpenAccount:a}){var r;const[t,n]=d.useState(!1),l=e.status==="signed-in",c=e.isPlus,o=async()=>{var i;if(!l){a();return}n(!0);try{await e.checkout(((i=e.user)==null?void 0:i.email)??void 0)}finally{n(!1)}};return s.jsx("div",{className:"settings-page plus-page",children:s.jsxs("div",{className:"settings-page-inner",children:[s.jsxs("div",{className:"settings-page-head",children:[s.jsxs("h1",{children:["IGNITE OS BROWSER",s.jsx("span",{className:"plus-page-mark",children:"+"})]}),s.jsx("p",{children:"Remove ads, unlock 3M AI tokens/day, and get Discord perks."})]}),s.jsxs("section",{className:"settings-section",children:[s.jsx("div",{className:"settings-section-title",children:"What you get"}),s.jsx("ul",{className:"plus-page-perks",children:h.map(i=>s.jsx("li",{children:i},i))}),s.jsx("p",{className:"plus-page-price",children:"$6.99 / month · cancel anytime"})]}),s.jsxs("section",{className:"settings-section",children:[s.jsx("div",{className:"settings-section-title",children:"Get Plus"}),e.status==="loading"?s.jsx("p",{className:"plus-page-hint",children:"Checking your account…"}):c?s.jsxs(s.Fragment,{children:[s.jsx("p",{className:"plus-page-hint",children:"You're already on IGNITE OS BROWSER Plus."}),s.jsx("button",{type:"button",className:"account-btn ghost",onClick:()=>void e.manageBilling(),children:"Manage billing"})]}):l?s.jsxs(s.Fragment,{children:[s.jsxs("p",{className:"plus-page-hint",children:["Signed in as ",(r=e.user)==null?void 0:r.email,". Continue to Stripe to subscribe."]}),s.jsx(u,{}),e.authError&&s.jsx("div",{className:"account-error",children:e.authError}),s.jsx("button",{type:"button",className:"account-btn primary",disabled:t,onClick:()=>void o(),children:t?"Opening Stripe…":"Upgrade to Plus"})]}):s.jsxs(s.Fragment,{children:[s.jsx("p",{className:"plus-page-hint",children:"Create a IGNITE OS BROWSER account first, then you can buy Plus."}),s.jsx("button",{type:"button",className:"account-btn primary",onClick:a,children:"Create an account"})]})]}),s.jsxs("div",{className:"settings-page-foot",children:[s.jsx(p,{size:14}),s.jsx("span",{children:"IGNITE OS BROWSER"})]})]})})}export{y as PlusPage};
@@ -0,0 +1 @@
1
+ .plus-page-mark{color:#f5c518}.plus-page-perks{margin:0;padding:0 0 0 1.15rem;display:grid;gap:.55rem;color:var(--text);font-size:14px;line-height:1.45}.plus-page-price{margin:1rem 0 0;font-size:13px;font-weight:600;color:var(--muted)}.plus-page-hint{margin:0 0 .9rem;font-size:13px;line-height:1.45;color:var(--muted)}.plus-page .account-btn{margin-top:.35rem}.plus-page .plus-blocked-note{margin:0 0 .9rem}.plus-page .account-error{margin-bottom:.8rem}