From d422218c6b21427369a257c3ab255abde1ddf9fe Mon Sep 17 00:00:00 2001 From: archipelago Date: Fri, 14 Aug 2026 13:41:17 -0400 Subject: [PATCH] chore(demo): rebuild bundled AIUI with the Routstr provider picker Co-Authored-By: Claude Fable 5 --- demo/aiui/BUILD-INFO | 4 +- ...age-CfZ78QhW.js => BrowsePage-CfjXsLXM.js} | 2 +- ...tPage-AitDGZKH.js => ChatPage-CK1N_k-N.js} | 6 +- ...w-CHiy55Bk.css => ChatWindow-CUHShQFq.css} | 2 +- ...e_type_script_setup_true_lang-BoEjFUAe.js} | 80 +++++++++---------- ....js => ConversationViewerPage-Ds_4mdf_.js} | 2 +- ...ail-0aNPT6Ze.js => FilmDetail-D9AyPH42.js} | 2 +- ...e_type_script_setup_true_lang-Cgf4f-Ng.js} | 2 +- demo/aiui/assets/FilmGrid-BM-3a1vS.js | 1 - demo/aiui/assets/FilmGrid-Dz4qYSg3.js | 1 + ...e_type_script_setup_true_lang-CkIQ4bRp.js} | 2 +- ...Page-DncbNAAY.js => GuidePage-Dek3UCFo.js} | 2 +- ...ail-BiVK4Yzb.js => SongDetail-Cdt_oumO.js} | 2 +- ...e_type_script_setup_true_lang-0mQhUBE8.js} | 2 +- demo/aiui/assets/SongGrid-BdJzZ_PP.js | 1 + demo/aiui/assets/SongGrid-C568K-c_.js | 1 - ...e_type_script_setup_true_lang-70SttNTZ.js} | 2 +- ...ode-DBTMRZ0t.js => ThreadNode-mLK8lEzr.js} | 2 +- ...Mol6efr5.js => WidgetDemoPage-CuakxOSz.js} | 2 +- ...By-CL4iQUG-.js => _basePickBy-8KTOl_Ov.js} | 2 +- ...Uniq-DAOs4kUj.js => _baseUniq-T1y-Xwdr.js} | 2 +- .../{arc-UjuE1bPP.js => arc-P9DEh39j.js} | 2 +- ... architectureDiagram-VXUJARFQ-DW61hM-r.js} | 2 +- ...Q.js => blockDiagram-VD42YOAC-D2M-kw9y.js} | 2 +- ...hgr3.js => c4Diagram-YG6GDRKO-Dh7_MG0A.js} | 2 +- demo/aiui/assets/channel-BXJ3-Z4Z.js | 1 + demo/aiui/assets/channel-Dg2Em7BA.js | 1 - .../{chat-BVoaeFpp.js => chat-6rSjUpgv.js} | 2 +- ...DWDvTYfd.js => chunk-4BX2VUAB-DHPPu6Xd.js} | 2 +- ...CtULfmDo.js => chunk-55IACEB6-fbeP3Dtn.js} | 2 +- ...eem5VR5l.js => chunk-B4BG7PRW-Cq2XT3QN.js} | 2 +- ...BzH7fNN2.js => chunk-DI55MBZ5-C35X8NbN.js} | 2 +- ...HblipWIM.js => chunk-FMBD7UC4-BALYpKmy.js} | 2 +- ...DSThOC6-.js => chunk-QN33PNHL-B0_3_NGo.js} | 2 +- ...Diifi0zg.js => chunk-QZHKN3VN-CalXKSQa.js} | 2 +- ...93PKdbpb.js => chunk-TZMSLE5B-Cajwq1yU.js} | 2 +- .../assets/classDiagram-2ON5EDUG-C3bw5j9n.js | 1 + .../assets/classDiagram-2ON5EDUG-ClBnCz4x.js | 1 - .../classDiagram-v2-WZHVMYZB-C3bw5j9n.js | 1 + .../classDiagram-v2-WZHVMYZB-ClBnCz4x.js | 1 - demo/aiui/assets/clone-4l7SFgdX.js | 1 + demo/aiui/assets/clone-C1u3K6Fy.js | 1 - ...x.js => cose-bilkent-S5V4N54A-C3IpZmgG.js} | 2 +- ...B0u-JQFh.js => dagre-6UL2VRFP-DAP2ypYE.js} | 2 +- ...dn47Al.js => diagram-PSM6KHXK-CBFFqdR1.js} | 2 +- ...tLuIsF.js => diagram-QEK2KX5R-D9RN6ErQ.js} | 2 +- ...VNSi9i.js => diagram-S2PKOQOG-W7ZZ-s_N.js} | 2 +- ...71lJ.js => erDiagram-Q2GNP2WA-Cg9Yai53.js} | 2 +- demo/aiui/assets/film-renderer-CWa3YMln.js | 2 - demo/aiui/assets/film-renderer-DRL3cLhG.js | 2 + ...T7.js => flowDiagram-NV44I4VS-C-ifjV8R.js} | 2 +- ...e.js => ganttDiagram-JELNMOA3-D-5uEWaX.js} | 2 +- ...s => gitGraphDiagram-V2S2FVAM-Cney2tSD.js} | 2 +- .../{graph-C1er8lVu.js => graph-CJlClM7M.js} | 2 +- demo/aiui/assets/index-BJh-vGUe.css | 1 + demo/aiui/assets/index-BJkaQ2c4.css | 1 - .../{index-8cIrvc8q.js => index-DNCGxUDM.js} | 4 +- ...ju.js => infoDiagram-HS3SLOUP-CXIZtsn8.js} | 2 +- ...js => journeyDiagram-XKPGCS4Q-BhTw_KBN.js} | 2 +- ...=> kanban-definition-3W4ZIXB7-Do4DMxAn.js} | 2 +- ...{layout-D8RlHuWE.js => layout-B4bmdUah.js} | 2 +- ...{linear-Bzk-L7jX.js => linear-D4DGi1E3.js} | 2 +- ...e-v0oo9NRr.js => mermaid.core-CFUktQ8s.js} | 8 +- ...> mindmap-definition-VGOIOE7T-B9y8aRYB.js} | 2 +- ...PKE.js => pieDiagram-ADFJNKIX-C9YBJbSM.js} | 2 +- ...s => quadrantDiagram-AYHSOK5B-bvTnd9PI.js} | 2 +- ...> requirementDiagram-UZGBJVZJ-Cl_456Ex.js} | 2 +- ....js => sankeyDiagram-TZEHDZUN-BajteCEj.js} | 2 +- ...s => sequenceDiagram-WL72ISMW-DqAci553.js} | 2 +- demo/aiui/assets/song-renderer-C7kO7K9V.js | 2 - demo/aiui/assets/song-renderer-DRaN7zwE.js | 2 + ...V.js => stateDiagram-FKZM4ZOC-DMvEfx5L.js} | 2 +- .../stateDiagram-v2-4FDKWEC3-BVCuRZ2H.js | 1 + .../stateDiagram-v2-4FDKWEC3-LzueEDky.js | 1 - ... timeline-definition-IT6M3QCI-xenwtZln.js} | 2 +- ...jQsbt8.js => treemap-GDKQZRPO-DWvWdchV.js} | 2 +- ...LVntsF.js => useContentImages-DdjyABL9.js} | 2 +- ...Nostr-XONW-p_l.js => useNostr-CNDx2L4S.js} | 2 +- ...js => xychartDiagram-PRI3JC2R-D6TjQ54N.js} | 2 +- demo/aiui/index.html | 4 +- demo/aiui/sw.js | 2 +- 81 files changed, 120 insertions(+), 120 deletions(-) rename demo/aiui/assets/{BrowsePage-CfZ78QhW.js => BrowsePage-CfjXsLXM.js} (99%) rename demo/aiui/assets/{ChatPage-AitDGZKH.js => ChatPage-CK1N_k-N.js} (99%) rename demo/aiui/assets/{ChatWindow-CHiy55Bk.css => ChatWindow-CUHShQFq.css} (66%) rename demo/aiui/assets/{ChatWindow.vue_vue_type_script_setup_true_lang-zPFvWywX.js => ChatWindow.vue_vue_type_script_setup_true_lang-BoEjFUAe.js} (62%) rename demo/aiui/assets/{ConversationViewerPage-PTutY4Lq.js => ConversationViewerPage-Ds_4mdf_.js} (96%) rename demo/aiui/assets/{FilmDetail-0aNPT6Ze.js => FilmDetail-D9AyPH42.js} (51%) rename demo/aiui/assets/{FilmDetail.vue_vue_type_script_setup_true_lang-BhKlPG3Y.js => FilmDetail.vue_vue_type_script_setup_true_lang-Cgf4f-Ng.js} (98%) delete mode 100644 demo/aiui/assets/FilmGrid-BM-3a1vS.js create mode 100644 demo/aiui/assets/FilmGrid-Dz4qYSg3.js rename demo/aiui/assets/{FilmGrid.vue_vue_type_script_setup_true_lang-Dj0SEfcW.js => FilmGrid.vue_vue_type_script_setup_true_lang-CkIQ4bRp.js} (97%) rename demo/aiui/assets/{GuidePage-DncbNAAY.js => GuidePage-Dek3UCFo.js} (98%) rename demo/aiui/assets/{SongDetail-BiVK4Yzb.js => SongDetail-Cdt_oumO.js} (51%) rename demo/aiui/assets/{SongDetail.vue_vue_type_script_setup_true_lang-B3om3Z8v.js => SongDetail.vue_vue_type_script_setup_true_lang-0mQhUBE8.js} (98%) create mode 100644 demo/aiui/assets/SongGrid-BdJzZ_PP.js delete mode 100644 demo/aiui/assets/SongGrid-C568K-c_.js rename demo/aiui/assets/{SongGrid.vue_vue_type_script_setup_true_lang-IvAOIQYW.js => SongGrid.vue_vue_type_script_setup_true_lang-70SttNTZ.js} (97%) rename demo/aiui/assets/{ThreadNode-DBTMRZ0t.js => ThreadNode-mLK8lEzr.js} (95%) rename demo/aiui/assets/{WidgetDemoPage-Mol6efr5.js => WidgetDemoPage-CuakxOSz.js} (97%) rename demo/aiui/assets/{_basePickBy-CL4iQUG-.js => _basePickBy-8KTOl_Ov.js} (95%) rename demo/aiui/assets/{_baseUniq-DAOs4kUj.js => _baseUniq-T1y-Xwdr.js} (98%) rename demo/aiui/assets/{arc-UjuE1bPP.js => arc-P9DEh39j.js} (98%) rename demo/aiui/assets/{architectureDiagram-VXUJARFQ-CKJFX1bN.js => architectureDiagram-VXUJARFQ-DW61hM-r.js} (99%) rename demo/aiui/assets/{blockDiagram-VD42YOAC-B0IT7n2Q.js => blockDiagram-VD42YOAC-D2M-kw9y.js} (99%) rename demo/aiui/assets/{c4Diagram-YG6GDRKO-DXp1hgr3.js => c4Diagram-YG6GDRKO-Dh7_MG0A.js} (99%) create mode 100644 demo/aiui/assets/channel-BXJ3-Z4Z.js delete mode 100644 demo/aiui/assets/channel-Dg2Em7BA.js rename demo/aiui/assets/{chat-BVoaeFpp.js => chat-6rSjUpgv.js} (99%) rename demo/aiui/assets/{chunk-4BX2VUAB-DWDvTYfd.js => chunk-4BX2VUAB-DHPPu6Xd.js} (71%) rename demo/aiui/assets/{chunk-55IACEB6-CtULfmDo.js => chunk-55IACEB6-fbeP3Dtn.js} (72%) rename demo/aiui/assets/{chunk-B4BG7PRW-eem5VR5l.js => chunk-B4BG7PRW-Cq2XT3QN.js} (99%) rename demo/aiui/assets/{chunk-DI55MBZ5-BzH7fNN2.js => chunk-DI55MBZ5-C35X8NbN.js} (99%) rename demo/aiui/assets/{chunk-FMBD7UC4-HblipWIM.js => chunk-FMBD7UC4-BALYpKmy.js} (83%) rename demo/aiui/assets/{chunk-QN33PNHL-DSThOC6-.js => chunk-QN33PNHL-B0_3_NGo.js} (87%) rename demo/aiui/assets/{chunk-QZHKN3VN-Diifi0zg.js => chunk-QZHKN3VN-CalXKSQa.js} (66%) rename demo/aiui/assets/{chunk-TZMSLE5B-93PKdbpb.js => chunk-TZMSLE5B-Cajwq1yU.js} (95%) create mode 100644 demo/aiui/assets/classDiagram-2ON5EDUG-C3bw5j9n.js delete mode 100644 demo/aiui/assets/classDiagram-2ON5EDUG-ClBnCz4x.js create mode 100644 demo/aiui/assets/classDiagram-v2-WZHVMYZB-C3bw5j9n.js delete mode 100644 demo/aiui/assets/classDiagram-v2-WZHVMYZB-ClBnCz4x.js create mode 100644 demo/aiui/assets/clone-4l7SFgdX.js delete mode 100644 demo/aiui/assets/clone-C1u3K6Fy.js rename demo/aiui/assets/{cose-bilkent-S5V4N54A-BayuTRyx.js => cose-bilkent-S5V4N54A-C3IpZmgG.js} (99%) rename demo/aiui/assets/{dagre-6UL2VRFP-B0u-JQFh.js => dagre-6UL2VRFP-DAP2ypYE.js} (97%) rename demo/aiui/assets/{diagram-PSM6KHXK-DIdn47Al.js => diagram-PSM6KHXK-CBFFqdR1.js} (97%) rename demo/aiui/assets/{diagram-QEK2KX5R-BNtLuIsF.js => diagram-QEK2KX5R-D9RN6ErQ.js} (94%) rename demo/aiui/assets/{diagram-S2PKOQOG-a8VNSi9i.js => diagram-S2PKOQOG-W7ZZ-s_N.js} (92%) rename demo/aiui/assets/{erDiagram-Q2GNP2WA-BmCE71lJ.js => erDiagram-Q2GNP2WA-Cg9Yai53.js} (98%) delete mode 100644 demo/aiui/assets/film-renderer-CWa3YMln.js create mode 100644 demo/aiui/assets/film-renderer-DRL3cLhG.js rename demo/aiui/assets/{flowDiagram-NV44I4VS-CWTX8pT7.js => flowDiagram-NV44I4VS-C-ifjV8R.js} (99%) rename demo/aiui/assets/{ganttDiagram-JELNMOA3-CgBtZE6e.js => ganttDiagram-JELNMOA3-D-5uEWaX.js} (99%) rename demo/aiui/assets/{gitGraphDiagram-V2S2FVAM-txN368h-.js => gitGraphDiagram-V2S2FVAM-Cney2tSD.js} (98%) rename demo/aiui/assets/{graph-C1er8lVu.js => graph-CJlClM7M.js} (97%) create mode 100644 demo/aiui/assets/index-BJh-vGUe.css delete mode 100644 demo/aiui/assets/index-BJkaQ2c4.css rename demo/aiui/assets/{index-8cIrvc8q.js => index-DNCGxUDM.js} (99%) rename demo/aiui/assets/{infoDiagram-HS3SLOUP-CDB_zSju.js => infoDiagram-HS3SLOUP-CXIZtsn8.js} (62%) rename demo/aiui/assets/{journeyDiagram-XKPGCS4Q-BH_LnklX.js => journeyDiagram-XKPGCS4Q-BhTw_KBN.js} (98%) rename demo/aiui/assets/{kanban-definition-3W4ZIXB7-DD0wGwEr.js => kanban-definition-3W4ZIXB7-Do4DMxAn.js} (99%) rename demo/aiui/assets/{layout-D8RlHuWE.js => layout-B4bmdUah.js} (99%) rename demo/aiui/assets/{linear-Bzk-L7jX.js => linear-D4DGi1E3.js} (98%) rename demo/aiui/assets/{mermaid.core-v0oo9NRr.js => mermaid.core-CFUktQ8s.js} (99%) rename demo/aiui/assets/{mindmap-definition-VGOIOE7T-DQT8gnk8.js => mindmap-definition-VGOIOE7T-B9y8aRYB.js} (99%) rename demo/aiui/assets/{pieDiagram-ADFJNKIX-1zGTmPKE.js => pieDiagram-ADFJNKIX-C9YBJbSM.js} (92%) rename demo/aiui/assets/{quadrantDiagram-AYHSOK5B-D5eqUBKn.js => quadrantDiagram-AYHSOK5B-bvTnd9PI.js} (99%) rename demo/aiui/assets/{requirementDiagram-UZGBJVZJ-oASOEzEc.js => requirementDiagram-UZGBJVZJ-Cl_456Ex.js} (99%) rename demo/aiui/assets/{sankeyDiagram-TZEHDZUN-Bdq3WEjh.js => sankeyDiagram-TZEHDZUN-BajteCEj.js} (99%) rename demo/aiui/assets/{sequenceDiagram-WL72ISMW-VBErL0-f.js => sequenceDiagram-WL72ISMW-DqAci553.js} (99%) delete mode 100644 demo/aiui/assets/song-renderer-C7kO7K9V.js create mode 100644 demo/aiui/assets/song-renderer-DRaN7zwE.js rename demo/aiui/assets/{stateDiagram-FKZM4ZOC-pVxTgt6V.js => stateDiagram-FKZM4ZOC-DMvEfx5L.js} (96%) create mode 100644 demo/aiui/assets/stateDiagram-v2-4FDKWEC3-BVCuRZ2H.js delete mode 100644 demo/aiui/assets/stateDiagram-v2-4FDKWEC3-LzueEDky.js rename demo/aiui/assets/{timeline-definition-IT6M3QCI-DY7_afEv.js => timeline-definition-IT6M3QCI-xenwtZln.js} (99%) rename demo/aiui/assets/{treemap-GDKQZRPO-DJjQsbt8.js => treemap-GDKQZRPO-DWvWdchV.js} (99%) rename demo/aiui/assets/{useContentImages-7wLVntsF.js => useContentImages-DdjyABL9.js} (90%) rename demo/aiui/assets/{useNostr-XONW-p_l.js => useNostr-CNDx2L4S.js} (98%) rename demo/aiui/assets/{xychartDiagram-PRI3JC2R-7BKZJd6v.js => xychartDiagram-PRI3JC2R-D6TjQ54N.js} (99%) diff --git a/demo/aiui/BUILD-INFO b/demo/aiui/BUILD-INFO index 01121d9a..b71ba4ed 100644 --- a/demo/aiui/BUILD-INFO +++ b/demo/aiui/BUILD-INFO @@ -1,3 +1,3 @@ -commit=7b82dfc779f94e068ed4d7b2ada39d6fd8f77dce -built_at=2026-08-09T19:43:11Z +commit=a4be1b4b7d8e50d16ed602d5f9b3f905a048f9a9 +built_at=2026-08-14T17:41:17Z base_path=/aiui/ diff --git a/demo/aiui/assets/BrowsePage-CfZ78QhW.js b/demo/aiui/assets/BrowsePage-CfjXsLXM.js similarity index 99% rename from demo/aiui/assets/BrowsePage-CfZ78QhW.js rename to demo/aiui/assets/BrowsePage-CfjXsLXM.js index 0a0fe3c7..a8f87ba5 100644 --- a/demo/aiui/assets/BrowsePage-CfZ78QhW.js +++ b/demo/aiui/assets/BrowsePage-CfjXsLXM.js @@ -1,2 +1,2 @@ -import{a as E,c as o,F as b,g as M,b as s,e,n as F,t as p,E as g,i as y,r as w,J as P,k as D,D as T,o as L,G as H,K as z,V as S,W as j}from"./index-8cIrvc8q.js";const V={class:"space-y-0.5"},A=["onClick"],O={key:1,class:"w-3 shrink-0"},I=["d"],R={class:"text-sm truncate"},N={key:0,class:"pl-4 ml-[18px] border-l border-white/5"},W="M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z",G="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z",U="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4",K="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z",X="M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z",q=E({__name:"FileTree",props:{items:{}},emits:["selectFile"],setup(m,{emit:_}){const h=w(new Set),v=_;function n(l){if(l.isDirectory){const a=new Set(h.value);a.has(l.path)?a.delete(l.path):a.add(l.path),h.value=a}else v("selectFile",l)}const r=new Set(["ts","tsx","js","jsx","vue","svelte","py","rs","go","java","c","cpp","h","hpp","rb","php","swift","kt","cs","css","scss","less","html","xml","yaml","yml","toml","json","sh","bash","zsh","sql","md","mdx"]),c=new Set(["png","jpg","jpeg","gif","svg","webp","ico","bmp","avif"]);function x(l){return l.split(".").pop()?.toLowerCase()??""}function k(l){if(l.isDirectory)return"text-yellow-500/70";const a=x(l.name);return r.has(a)?"text-blue-400/70":c.has(a)?"text-green-400/70":"text-white/40"}function $(l){if(l.isDirectory)return h.value.has(l.path)?G:W;const a=x(l.name);return r.has(a)?U:c.has(a)?K:X}return(l,a)=>{const C=P("FileTree",!0);return s(),o("div",V,[(s(!0),o(b,null,M(m.items,u=>(s(),o("div",{key:u.path},[e("button",{class:F(["w-full flex items-center gap-2 px-2 py-1.5 rounded-md text-left transition-colors min-h-[32px]",u.isDirectory?"hover:bg-white/5 text-white/70 hover:text-white/80":"hover:bg-white/8 text-white/60 hover:text-white/80"]),onClick:i=>n(u)},[u.isDirectory?(s(),o("svg",{key:0,class:F(["w-3 h-3 text-white/30 shrink-0 transition-transform duration-150",{"rotate-90":h.value.has(u.path)}]),fill:"currentColor",viewBox:"0 0 20 20"},[...a[1]||(a[1]=[e("path",{"fill-rule":"evenodd",d:"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z","clip-rule":"evenodd"},null,-1)])],2)):(s(),o("span",O)),(s(),o("svg",{class:F(["w-4 h-4 shrink-0",k(u)]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:$(u)},null,8,I)],2)),e("span",R,p(u.name),1)],10,A),u.isDirectory&&u.children?.length&&h.value.has(u.path)?(s(),o("div",N,[g(C,{items:u.children,onSelectFile:a[0]||(a[0]=i=>l.$emit("selectFile",i))},null,8,["items"])])):y("",!0)]))),128))])}}}),J={class:"h-full flex flex-col"},Q={class:"flex items-center justify-between px-4 py-3 border-b border-white/5 shrink-0"},Y={class:"min-w-0 flex-1"},Z={class:"text-sm font-medium text-white/80 truncate"},ee={class:"text-xs text-white/30 truncate mt-0.5"},te={class:"flex items-center gap-2 shrink-0 ml-3"},se={class:"text-xs text-white/25 font-mono"},oe={class:"flex-1 overflow-auto"},ne={class:"text-xs font-mono leading-relaxed w-full"},le={class:"text-white/20 text-right pr-4 pl-4 py-0 select-none align-top whitespace-nowrap sticky left-0 bg-[#0a0a0a]"},ae={class:"text-white/70 pr-4 py-0 whitespace-pre"},B=E({__name:"FilePreview",props:{file:{}},emits:["close"],setup(m){const _=m,h=D(()=>_.file.content.split(` +import{a as E,c as o,F as b,g as M,b as s,e,n as F,t as p,E as g,i as y,r as w,J as P,k as D,D as T,o as L,G as H,K as z,V as S,W as j}from"./index-DNCGxUDM.js";const V={class:"space-y-0.5"},A=["onClick"],O={key:1,class:"w-3 shrink-0"},I=["d"],R={class:"text-sm truncate"},N={key:0,class:"pl-4 ml-[18px] border-l border-white/5"},W="M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z",G="M5 19a2 2 0 01-2-2V7a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1M5 19h14a2 2 0 002-2v-5a2 2 0 00-2-2H9a2 2 0 00-2 2v5a2 2 0 01-2 2z",U="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4",K="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z",X="M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z",q=E({__name:"FileTree",props:{items:{}},emits:["selectFile"],setup(m,{emit:_}){const h=w(new Set),v=_;function n(l){if(l.isDirectory){const a=new Set(h.value);a.has(l.path)?a.delete(l.path):a.add(l.path),h.value=a}else v("selectFile",l)}const r=new Set(["ts","tsx","js","jsx","vue","svelte","py","rs","go","java","c","cpp","h","hpp","rb","php","swift","kt","cs","css","scss","less","html","xml","yaml","yml","toml","json","sh","bash","zsh","sql","md","mdx"]),c=new Set(["png","jpg","jpeg","gif","svg","webp","ico","bmp","avif"]);function x(l){return l.split(".").pop()?.toLowerCase()??""}function k(l){if(l.isDirectory)return"text-yellow-500/70";const a=x(l.name);return r.has(a)?"text-blue-400/70":c.has(a)?"text-green-400/70":"text-white/40"}function $(l){if(l.isDirectory)return h.value.has(l.path)?G:W;const a=x(l.name);return r.has(a)?U:c.has(a)?K:X}return(l,a)=>{const C=P("FileTree",!0);return s(),o("div",V,[(s(!0),o(b,null,M(m.items,u=>(s(),o("div",{key:u.path},[e("button",{class:F(["w-full flex items-center gap-2 px-2 py-1.5 rounded-md text-left transition-colors min-h-[32px]",u.isDirectory?"hover:bg-white/5 text-white/70 hover:text-white/80":"hover:bg-white/8 text-white/60 hover:text-white/80"]),onClick:i=>n(u)},[u.isDirectory?(s(),o("svg",{key:0,class:F(["w-3 h-3 text-white/30 shrink-0 transition-transform duration-150",{"rotate-90":h.value.has(u.path)}]),fill:"currentColor",viewBox:"0 0 20 20"},[...a[1]||(a[1]=[e("path",{"fill-rule":"evenodd",d:"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z","clip-rule":"evenodd"},null,-1)])],2)):(s(),o("span",O)),(s(),o("svg",{class:F(["w-4 h-4 shrink-0",k(u)]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:$(u)},null,8,I)],2)),e("span",R,p(u.name),1)],10,A),u.isDirectory&&u.children?.length&&h.value.has(u.path)?(s(),o("div",N,[g(C,{items:u.children,onSelectFile:a[0]||(a[0]=i=>l.$emit("selectFile",i))},null,8,["items"])])):y("",!0)]))),128))])}}}),J={class:"h-full flex flex-col"},Q={class:"flex items-center justify-between px-4 py-3 border-b border-white/5 shrink-0"},Y={class:"min-w-0 flex-1"},Z={class:"text-sm font-medium text-white/80 truncate"},ee={class:"text-xs text-white/30 truncate mt-0.5"},te={class:"flex items-center gap-2 shrink-0 ml-3"},se={class:"text-xs text-white/25 font-mono"},oe={class:"flex-1 overflow-auto"},ne={class:"text-xs font-mono leading-relaxed w-full"},le={class:"text-white/20 text-right pr-4 pl-4 py-0 select-none align-top whitespace-nowrap sticky left-0 bg-[#0a0a0a]"},ae={class:"text-white/70 pr-4 py-0 whitespace-pre"},B=E({__name:"FilePreview",props:{file:{}},emits:["close"],setup(m){const _=m,h=D(()=>_.file.content.split(` `));function v(n){return n<1024?`${n} B`:n<1024*1024?`${(n/1024).toFixed(1)} KB`:`${(n/(1024*1024)).toFixed(1)} MB`}return(n,r)=>(s(),o("div",J,[e("div",Q,[e("div",Y,[e("p",Z,p(m.file.name),1),e("p",ee,p(m.file.path),1)]),e("div",te,[e("span",se,p(v(m.file.size)),1),e("button",{class:"min-w-[32px] min-h-[32px] flex items-center justify-center rounded-md text-white/40 hover:text-white/70 hover:bg-white/10 transition-colors","aria-label":"Close preview",onClick:r[0]||(r[0]=c=>n.$emit("close"))},[...r[1]||(r[1]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])])])]),e("div",oe,[e("table",ne,[e("tbody",null,[(s(!0),o(b,null,M(h.value,(c,x)=>(s(),o("tr",{key:x,class:"hover:bg-white/3"},[e("td",le,p(x+1),1),e("td",ae,p(c),1)]))),128))])])])]))}}),ie={class:"h-full flex flex-col bg-[#0a0a0a]"},re={class:"glass shrink-0 px-4 py-3 flex items-center gap-3 border-b border-white/5"},ce={class:"px-4 py-2 flex items-center gap-1 text-xs text-white/40 shrink-0"},ue={class:"text-white/60 min-h-[28px] px-1 flex items-center"},he={class:"flex-1 overflow-hidden flex"},de={class:"flex-1 overflow-y-auto px-2 py-2"},pe={key:0,class:"flex items-center justify-center h-32"},ve={key:1,class:"flex items-center justify-center h-32"},fe={class:"text-sm text-red-400/70"},xe={key:2,class:"space-y-1"},we=["onClick"],me={class:"min-w-0 flex-1"},_e={class:"text-sm text-white/80 truncate group-hover:text-white/90"},ke={class:"text-xs text-white/25 truncate"},ge={key:0,class:"w-[400px] xl:w-[500px] border-l border-white/5 overflow-y-auto shrink-0"},ye={key:0,class:"fixed inset-0 z-50 bg-[#0a0a0a] overflow-y-auto"},Ce=E({__name:"BrowsePage",setup(m){const _=w([]),h=w([]),v=w(!0),n=w(""),r=w(null),c=w(null),x=w(window.innerWidth),k=D(()=>x.value<1024);async function $(){v.value=!0,n.value="";try{const i=await j("/api/fs/list");if(!i.ok)throw new Error(`Failed to load: ${i.status}`);const t=await i.json();_.value=t.projects??[]}catch(i){n.value=i instanceof Error?i.message:"Failed to load projects"}finally{v.value=!1}}async function l(i){r.value=i,c.value=null,v.value=!0,n.value="";try{const t=await j(`/api/fs/tree?path=${encodeURIComponent(i.path)}`);if(!t.ok)throw new Error(`Failed to load: ${t.status}`);const d=await t.json();h.value=d.files??[]}catch(t){n.value=t instanceof Error?t.message:"Failed to load files"}finally{v.value=!1}}function a(){r.value=null,c.value=null,h.value=[]}async function C(i){if(!r.value)return;const t=r.value.path+"/"+i.path;try{const d=await j(`/api/fs/read?path=${encodeURIComponent(t)}`);if(!d.ok){if(d.status===413){n.value="File too large to preview (max 1MB)";return}throw new Error(`Failed to read: ${d.status}`)}const f=await d.json();c.value={name:i.name,path:i.path,content:f.content,size:f.size}}catch(d){n.value=d instanceof Error?d.message:"Failed to read file"}}function u(){x.value=window.innerWidth}return T(()=>{$(),window.addEventListener("resize",u)}),L(()=>{window.removeEventListener("resize",u)}),(i,t)=>{const d=P("router-link");return s(),o("div",ie,[e("header",re,[g(d,{to:"/",class:"min-w-[44px] min-h-[44px] flex items-center justify-center rounded-lg text-white/60 hover:text-white/80 hover:bg-white/10 transition-colors","aria-label":"Back to chat"},{default:H(()=>[...t[2]||(t[2]=[e("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)])]),_:1}),t[3]||(t[3]=e("h1",{class:"text-white/90 text-base font-medium truncate"},"Files",-1))]),e("nav",ce,[e("button",{class:"hover:text-white/70 transition-colors min-h-[28px] px-1",onClick:a}," Projects "),r.value?(s(),o(b,{key:0},[t[4]||(t[4]=e("span",{class:"text-white/20"},"/",-1)),e("span",ue,p(r.value.name),1)],64)):y("",!0)]),e("main",he,[e("div",de,[v.value?(s(),o("div",pe,[...t[5]||(t[5]=[e("span",{class:"text-sm text-white/50"},"Loading...",-1)])])):n.value?(s(),o("div",ve,[e("span",fe,p(n.value),1)])):r.value?(s(),z(q,{key:3,items:h.value,onSelectFile:C},null,8,["items"])):(s(),o("div",xe,[(s(!0),o(b,null,M(_.value,f=>(s(),o("button",{key:f.path,class:"w-full flex items-center gap-3 px-3 py-2.5 rounded-lg text-left hover:bg-white/5 transition-colors group",onClick:be=>l(f)},[t[6]||(t[6]=e("svg",{class:"w-5 h-5 text-white/30 shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"})],-1)),e("div",me,[e("p",_e,p(f.name),1),e("p",ke,p(f.language),1)])],8,we))),128))]))]),c.value&&!k.value?(s(),o("aside",ge,[g(B,{file:c.value,onClose:t[0]||(t[0]=f=>c.value=null)},null,8,["file"])])):y("",!0)]),(s(),z(S,{to:"body"},[c.value&&k.value?(s(),o("div",ye,[g(B,{file:c.value,onClose:t[1]||(t[1]=f=>c.value=null)},null,8,["file"])])):y("",!0)]))])}}});export{Ce as default}; diff --git a/demo/aiui/assets/ChatPage-AitDGZKH.js b/demo/aiui/assets/ChatPage-CK1N_k-N.js similarity index 99% rename from demo/aiui/assets/ChatPage-AitDGZKH.js rename to demo/aiui/assets/ChatPage-CK1N_k-N.js index 43a26c7a..79084402 100644 --- a/demo/aiui/assets/ChatPage-AitDGZKH.js +++ b/demo/aiui/assets/ChatPage-CK1N_k-N.js @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/useNostr-XONW-p_l.js","assets/index-8cIrvc8q.js","assets/index-BJkaQ2c4.css","assets/ThreadNode-DBTMRZ0t.js"])))=>i.map(i=>d[i]); -import{a as G,Z as Gt,$ as rt,p as Ne,b as s,c as n,e,h as q,u as t,n as i,t as u,f as ie,w as W,v as Q,F as I,g as P,i as f,j as Z,r as S,k as B,a0 as Ot,a1 as ct,H as ne,a2 as dt,a3 as ut,a4 as ht,a5 as xt,a6 as $e,O as De,a7 as Ht,a8 as Wt,a9 as Kt,J as Yt,z as xe,K as U,D as oe,aa as ae,ab as ye,_ as pt,A as ce,B as Pe,d as Jt,ac as Qt,E as se,ad as Zt,ae as Xt,af as es,ag as ts,ah as ss,M as ns,q as ls,ai as os,o as as,G as ue,aj as Le,ak as is}from"./index-8cIrvc8q.js";import{u as rs}from"./chat-BVoaeFpp.js";import{u as pe,e as He,d as gt,M as cs,a as ds,b as fe,_ as tt}from"./ChatWindow.vue_vue_type_script_setup_true_lang-zPFvWywX.js";import{_ as us}from"./FilmGrid.vue_vue_type_script_setup_true_lang-Dj0SEfcW.js";import{u as Ae}from"./useContentImages-7wLVntsF.js";import{_ as hs}from"./SongGrid.vue_vue_type_script_setup_true_lang-IvAOIQYW.js";import{useNostr as Ie}from"./useNostr-XONW-p_l.js";import{u as bt,_ as xs}from"./FilmDetail.vue_vue_type_script_setup_true_lang-BhKlPG3Y.js";import{_ as ps}from"./SongDetail.vue_vue_type_script_setup_true_lang-B3om3Z8v.js";const gs={class:"h-full flex flex-col"},bs={class:"flex items-center justify-between gap-2"},vs={class:"flex items-center gap-2 shrink-0"},fs={key:0,class:"flex flex-wrap gap-1.5"},ms=["onClick"],ws={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},ys={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},ks=["aria-label","onClick"],$s={class:"cover-card flex-1 min-h-0 relative"},_s={key:0,class:"absolute inset-0 animate-shimmer"},Cs=["src","alt","onError"],js=["src","alt"],Ss={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},Ms={class:"absolute bottom-0 left-0 right-0 p-2"},Ts={class:"text-xs font-semibold text-white/90 leading-tight truncate"},Ds={class:"text-xs text-white/40 truncate mt-0.5"},Is={key:4,class:"absolute top-1.5 left-1.5"},Bs={class:"text-xs px-1.5 py-0.5 rounded bg-black/60 text-amber-400 backdrop-blur-sm font-medium"},Ls={key:5,class:"absolute top-1.5 right-1.5"},Ps={class:"text-xs px-1 py-0.5 rounded bg-black/60 text-white/70 backdrop-blur-sm"},Ns={key:0,class:"flex items-center justify-center py-12"},As=G({__name:"BookGrid",props:{books:{},title:{default:"Recommended Books"}},emits:["selectBook"],setup(a){const c=a,{isDark:l}=Z(),w=S(""),g=S(null),{coverSrc:v,fallbackSrc:x,onError:m,isLoading:_}=Ae({items:Ne(c,"books"),id:d=>d.id,existingUrl:d=>d.coverUrl,fetch:d=>rt(d.title,d.author),fallback:d=>Gt(d.title,d.author)}),$=B(()=>{const d=new Map;for(const o of c.books)for(const r of o.genres??[])d.set(r,(d.get(r)??0)+1);return[...d.entries()].sort((o,r)=>r[1]-o[1]).slice(0,8).map(([o])=>o)}),b=B(()=>{let d=c.books;if(w.value){const o=w.value.toLowerCase();d=d.filter(r=>r.title.toLowerCase().includes(o)||r.author.toLowerCase().includes(o)||(r.genres??[]).some(h=>h.toLowerCase().includes(o)))}return g.value&&(d=d.filter(o=>(o.genres??[]).includes(g.value))),d});return(d,o)=>(s(),n("div",gs,[e("div",{class:"p-4 space-y-3",style:q(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",bs,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",vs,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(b.value.length)+" books ",3),ie(d.$slots,"header-actions")])]),W(e("input",{"onUpdate:modelValue":o[0]||(o[0]=r=>w.value=r),type:"text",placeholder:"Search books...",class:i(["w-full px-3 py-2 rounded-lg text-base outline-none transition-colors",t(l)?"bg-white/5 text-white/80 placeholder:text-white/25 focus:bg-white/10":"bg-black/3 text-gray-800 placeholder:text-gray-400 focus:bg-black/5"])},null,2),[[Q,w.value]]),$.value.length>0?(s(),n("div",fs,[(s(!0),n(I,null,P($.value,r=>(s(),n("button",{key:r,class:i(["text-xs px-2 py-1 rounded-md transition-all duration-150",g.value===r?"nav-tab-active":t(l)?"text-white/40 hover:text-white/70 hover:bg-white/5":"text-gray-500 hover:text-gray-800 hover:bg-black/5"]),onClick:h=>g.value=g.value===r?null:r},u(r),11,ms))),128))])):f("",!0)],4),e("div",ws,[e("div",ys,[(s(!0),n(I,null,P(b.value,r=>(s(),n("button",{key:r.id,class:"group flex flex-col items-stretch text-left w-full path-glass-bubble rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105","aria-label":`${r.title} by ${r.author}`,onClick:h=>d.$emit("selectBook",r)},[e("div",$s,[e("div",{class:i(["aspect-[2/3] relative w-full overflow-hidden rounded-[10px]",t(v)(r)?"":t(l)?"bg-white/[0.06]":"bg-black/[0.04]"])},[t(_)(r)?(s(),n("div",_s)):f("",!0),t(v)(r)?(s(),n("img",{key:1,src:t(v)(r),alt:`${r.title} by ${r.author}`,class:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-110",loading:"lazy",onError:h=>t(m)(r)},null,40,Cs)):t(_)(r)?f("",!0):(s(),n("img",{key:2,src:t(x)(r),alt:r.title,class:"w-full h-full object-cover"},null,8,js)),t(v)(r)?(s(),n("div",Ss)):f("",!0),e("div",Ms,[e("p",Ts,u(r.title),1),e("p",Ds,u(r.author),1)]),r.rating?(s(),n("div",Is,[e("span",Bs," ★ "+u(r.rating.toFixed(1)),1)])):f("",!0),r.year?(s(),n("div",Ls,[e("span",Ps,u(r.year),1)])):f("",!0)],2)])],8,ks))),128))]),b.value.length===0?(s(),n("div",Ns,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No books match your search ",2)])):f("",!0)])]))}}),zs={class:"h-full flex flex-col"},Es={class:"flex items-center justify-between gap-2"},Fs={class:"flex items-center gap-2 shrink-0"},Rs={key:0,class:"flex flex-wrap gap-1.5"},Vs=["onClick"],Us={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},qs={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},Gs=["aria-label","onClick"],Os={class:"cover-card flex-1 min-h-0 relative"},Hs={key:0,class:"absolute inset-0 animate-shimmer"},Ws=["src","alt","onError"],Ks=["src","alt"],Ys={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},Js={class:"absolute bottom-0 left-0 right-0 p-2"},Qs={class:"text-xs font-semibold text-white/90 leading-tight truncate"},Zs={class:"text-xs text-white/40 truncate mt-0.5"},Xs={key:4,class:"absolute top-1.5 left-1.5"},en={class:"text-xs px-1.5 py-0.5 rounded bg-black/60 text-amber-400 backdrop-blur-sm font-medium"},tn={key:5,class:"absolute top-1.5 right-1.5"},sn={class:"absolute top-1.5 right-1.5 flex gap-0.5 flex-wrap justify-end max-w-[60%]"},nn={key:0,class:"flex items-center justify-center py-12"},ln=G({__name:"TVSeriesGrid",props:{series:{},title:{default:"Recommended TV Series"}},emits:["selectSeries"],setup(a){const c=a,{isDark:l}=Z(),w=S(""),g=S(null),{coverSrc:v,fallbackSrc:x,onError:m,isLoading:_}=Ae({items:Ne(c,"series"),id:o=>o.id,existingUrl:o=>o.posterUrl||o.backdropUrl,fetch:o=>ct(o.title,o.year).then(r=>r.posterUrl),fallback:o=>Ot(o.title,o.year)});function $(o){return o.year?o.endYear&&o.endYear!==o.year?`${o.year}–${o.endYear}`:o.status==="ongoing"?`${o.year}–`:String(o.year):""}const b=B(()=>{const o=new Map;for(const r of c.series)for(const h of r.genres??[])o.set(h,(o.get(h)??0)+1);return[...o.entries()].sort((r,h)=>h[1]-r[1]).slice(0,8).map(([r])=>r)}),d=B(()=>{let o=c.series;if(w.value){const r=w.value.toLowerCase();o=o.filter(h=>h.title.toLowerCase().includes(r)||(h.creator??"").toLowerCase().includes(r)||(h.network??"").toLowerCase().includes(r)||(h.genres??[]).some(M=>M.toLowerCase().includes(r)))}return g.value&&(o=o.filter(r=>(r.genres??[]).includes(g.value))),o});return(o,r)=>(s(),n("div",zs,[e("div",{class:"p-4 space-y-3",style:q(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",Es,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",Fs,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(d.value.length)+" series ",3),ie(o.$slots,"header-actions")])]),W(e("input",{"onUpdate:modelValue":r[0]||(r[0]=h=>w.value=h),type:"text",placeholder:"Search TV series...",class:i(["w-full px-3 py-2 rounded-lg text-base outline-none transition-colors",t(l)?"bg-white/5 text-white/80 placeholder:text-white/25 focus:bg-white/10":"bg-black/3 text-gray-800 placeholder:text-gray-400 focus:bg-black/5"])},null,2),[[Q,w.value]]),b.value.length>0?(s(),n("div",Rs,[(s(!0),n(I,null,P(b.value,h=>(s(),n("button",{key:h,class:i(["text-xs px-2 py-1 rounded-md transition-all duration-150",g.value===h?"nav-tab-active":t(l)?"text-white/40 hover:text-white/70 hover:bg-white/5":"text-gray-500 hover:text-gray-800 hover:bg-black/5"]),onClick:M=>g.value=g.value===h?null:h},u(h),11,Vs))),128))])):f("",!0)],4),e("div",Us,[e("div",qs,[(s(!0),n(I,null,P(d.value,h=>(s(),n("button",{key:h.id,class:"group flex flex-col items-stretch text-left w-full path-glass-bubble rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105","aria-label":h.title,onClick:M=>o.$emit("selectSeries",h)},[e("div",Os,[e("div",{class:i(["aspect-[2/3] relative w-full overflow-hidden rounded-[10px]",t(v)(h)?"":t(l)?"bg-white/[0.06]":"bg-black/[0.04]"])},[t(_)(h)?(s(),n("div",Hs)):f("",!0),t(v)(h)?(s(),n("img",{key:1,src:t(v)(h),alt:`${h.title} — TV Series`,class:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-110",loading:"lazy",onError:M=>t(m)(h)},null,40,Ws)):t(_)(h)?f("",!0):(s(),n("img",{key:2,src:t(x)(h),alt:h.title,class:"w-full h-full object-cover"},null,8,Ks)),t(v)(h)?(s(),n("div",Ys)):f("",!0),e("div",Js,[e("p",Qs,u(h.title),1),e("p",Zs,[ne(u($(h)),1),h.seasons?(s(),n(I,{key:0},[ne(" · "+u(h.seasons)+"S",1)],64)):f("",!0)])]),h.rating?(s(),n("div",Xs,[e("span",en," ★ "+u(h.rating.toFixed(1)),1)])):f("",!0),h.status==="ongoing"?(s(),n("div",tn,[...r[1]||(r[1]=[e("span",{class:"text-xs px-1 py-0.5 rounded bg-emerald-500/80 text-white backdrop-blur-sm"}," ongoing ",-1)])])):f("",!0),e("div",sn,[(s(!0),n(I,null,P((h.sources??[]).slice(0,2),M=>(s(),n("span",{key:M.type,class:"text-xs px-1 py-0.5 rounded bg-black/60 text-white/70 backdrop-blur-sm"},u(M.type),1))),128))])],2)])],8,Gs))),128))]),d.value.length===0?(s(),n("div",nn,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No TV series match your search ",2)])):f("",!0)])]))}}),on={class:"h-full flex flex-col"},an={class:"flex items-center justify-between gap-2"},rn={class:"flex items-center gap-2 shrink-0"},cn={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},dn={class:"columns-2 sm:columns-3 gap-3 space-y-3"},un=["aria-label","onClick"],hn=["src","alt","onError"],xn={key:2,class:"absolute bottom-0 left-0 right-0 p-2 bg-gradient-to-t from-black/70 via-black/30 to-transparent"},pn={key:0,class:"text-xs font-medium text-white/90 truncate"},gn={key:1,class:"text-xs text-white/50 truncate"},bn={key:0,class:"flex items-center justify-center py-12"},vn=G({__name:"ImageGrid",props:{images:{},title:{default:"Images"}},emits:["selectImage"],setup(a){const{isDark:c}=Z(),l=S(new Set);function w(g){l.value.add(g.id),l.value=new Set(l.value)}return(g,v)=>(s(),n("div",on,[e("div",{class:"p-4 space-y-3",style:q(t(c)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",an,[e("h3",{class:i(["text-sm font-bold",t(c)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",rn,[e("span",{class:i(["text-xs font-mono",t(c)?"text-white/30":"text-gray-400"])},u(a.images.length)+" images ",3),ie(g.$slots,"header-actions")])])],4),e("div",cn,[e("div",dn,[(s(!0),n(I,null,P(a.images,x=>(s(),n("button",{key:x.id,class:i(["group w-full break-inside-avoid text-left rounded-xl overflow-hidden transition-all duration-200 hover:brightness-110 relative",t(c)?"bg-white/5":"bg-black/3"]),"aria-label":x.alt||x.title||"Image",onClick:m=>g.$emit("selectImage",x)},[l.value.has(x.id)?(s(),n("div",{key:1,class:i(["w-full aspect-[4/3] flex items-center justify-center",t(c)?"bg-white/5":"bg-black/5"])},[(s(),n("svg",{class:i(["w-8 h-8",t(c)?"text-white/15":"text-gray-300"]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...v[0]||(v[0]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"},null,-1)])],2))],2)):(s(),n("img",{key:0,src:x.url,alt:x.alt||x.title||"Image",class:"w-full block transition-transform duration-300 group-hover:scale-[1.03]",loading:"lazy",onError:m=>w(x)},null,40,hn)),x.title||x.source?(s(),n("div",xn,[x.title?(s(),n("p",pn,u(x.title),1)):f("",!0),x.source?(s(),n("p",gn,u(x.source),1)):f("",!0)])):f("",!0)],10,un))),128))]),a.images.length===0?(s(),n("div",bn,[e("p",{class:i(["text-sm",t(c)?"text-white/30":"text-gray-400"])}," No images found ",2)])):f("",!0)])]))}}),fn={class:"h-full flex flex-col"},mn={class:"p-4 space-y-3"},wn={class:"flex items-center justify-between"},yn={class:"shrink-0 flex items-center gap-2"},kn={key:0,class:"flex flex-wrap gap-1.5"},$n=["onClick"],_n={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pb-16"},Cn={class:"grid grid-cols-2 sm:grid-cols-3 gap-3"},jn=["aria-label","onClick"],Sn={class:"aspect-[4/3] relative w-full overflow-hidden rounded-t-[10px]"},Mn={key:0,class:"absolute inset-0 animate-shimmer"},Tn=["src","alt","onError"],Dn=["src","alt"],In={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},Bn={class:"absolute bottom-0 left-0 right-0 p-2"},Ln={class:"text-xs font-semibold text-white/90 truncate"},Pn={class:"text-xs text-white/40 truncate mt-0.5"},Nn={key:4,class:"absolute top-1.5 right-1.5"},An={class:"text-xs px-1.5 py-0.5 rounded bg-black/60 text-amber-400 backdrop-blur-sm font-semibold"},zn={key:5,class:"absolute top-1.5 left-1.5"},En={class:"text-xs px-1 py-0.5 rounded bg-black/60 text-white/70 backdrop-blur-sm"},Fn={key:0,class:"flex items-center justify-center py-12"},Rn=G({__name:"PlaceGrid",props:{places:{},title:{default:"Places"}},emits:["selectPlace"],setup(a){const c=a,{isDark:l}=Z(),w=S(""),g=S(null),{coverSrc:v,fallbackSrc:x,onError:m,isLoading:_}=Ae({items:Ne(c,"places"),id:d=>d.id,existingUrl:d=>d.photoUrl,fetch:d=>ut(d.name,d.city),fallback:d=>dt(d.name,d.cuisine||d.category)}),$=B(()=>{const d=new Map;for(const o of c.places){const r=o.cuisine||o.category;r&&d.set(r,(d.get(r)??0)+1)}return[...d.entries()].sort((o,r)=>r[1]-o[1]).slice(0,8).map(([o])=>o)}),b=B(()=>{let d=c.places;if(w.value){const o=w.value.toLowerCase();d=d.filter(r=>r.name.toLowerCase().includes(o)||r.cuisine?.toLowerCase().includes(o)||r.category?.toLowerCase().includes(o)||r.city?.toLowerCase().includes(o)||r.address?.toLowerCase().includes(o))}return g.value&&(d=d.filter(o=>o.cuisine===g.value||o.category===g.value)),d});return(d,o)=>(s(),n("div",fn,[e("div",mn,[e("div",wn,[e("h3",{class:i(["text-base font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title||"Places"),3),e("div",yn,[e("span",{class:i(["text-xs",t(l)?"text-white/30":"text-gray-400"])},u(b.value.length)+" places ",3),ie(d.$slots,"header-actions")])]),W(e("input",{"onUpdate:modelValue":o[0]||(o[0]=r=>w.value=r),type:"text",placeholder:"Search places...",class:i(["w-full text-base px-3 py-2 rounded-lg outline-none transition-colors",t(l)?"bg-white/5 text-white/80 placeholder-white/25 focus:bg-white/8":"bg-black/5 text-gray-800 placeholder-gray-400 focus:bg-black/8"])},null,2),[[Q,w.value]]),$.value.length>1?(s(),n("div",kn,[(s(!0),n(I,null,P($.value,r=>(s(),n("button",{key:r,class:i(["text-xs px-2 py-1 rounded-md font-medium transition-all duration-150",g.value===r?"nav-tab-active":t(l)?"bg-white/5 text-white/40 hover:text-white/70":"bg-black/5 text-gray-500 hover:text-gray-800"]),onClick:h=>g.value=g.value===r?null:r},u(r),11,$n))),128))])):f("",!0)]),e("div",_n,[e("div",Cn,[(s(!0),n(I,null,P(b.value,r=>(s(),n("button",{key:r.id,class:"group flex flex-col items-stretch text-left w-full path-glass-bubble rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105","aria-label":r.name,onClick:h=>d.$emit("selectPlace",r)},[e("div",Sn,[t(_)(r)?(s(),n("div",Mn)):f("",!0),t(v)(r)?(s(),n("img",{key:1,src:t(v)(r),alt:r.name,class:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-110",loading:"lazy",onError:h=>t(m)(r)},null,40,Tn)):t(_)(r)?f("",!0):(s(),n("img",{key:2,src:t(x)(r),alt:r.name,class:"w-full h-full object-cover"},null,8,Dn)),t(v)(r)?(s(),n("div",In)):f("",!0),e("div",Bn,[e("p",Ln,u(r.name),1),e("p",Pn,u(r.cuisine||r.category),1)]),r.rating?(s(),n("div",Nn,[e("span",An," ★ "+u(r.rating.toFixed(1)),1)])):f("",!0),r.priceLevel?(s(),n("div",zn,[e("span",En,u("$".repeat(r.priceLevel)),1)])):f("",!0)])],8,jn))),128))]),b.value.length===0?(s(),n("div",Fn,[e("p",{class:i(["text-xs",t(l)?"text-white/30":"text-gray-400"])}," No places match your search ",2)])):f("",!0)])]))}}),Vn={class:"h-full flex flex-col"},Un={class:"flex items-center justify-between gap-2"},qn={class:"flex items-center gap-2 shrink-0"},Gn={key:0,class:"flex flex-wrap gap-1.5"},On=["onClick"],Hn={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},Wn={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},Kn=["aria-label","onClick"],Yn={class:"cover-card flex-1 min-h-0 relative"},Jn={key:0,class:"absolute inset-0 animate-shimmer"},Qn=["src","alt","onError"],Zn=["src","alt"],Xn={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},el={class:"absolute bottom-0 left-0 right-0 p-2"},tl={class:"text-xs font-semibold text-white/90 leading-tight truncate"},sl={class:"text-xs text-white/40 truncate mt-0.5"},nl={class:"absolute top-1.5 right-1.5 flex gap-0.5 flex-wrap justify-end max-w-[60%]"},ll={key:0,class:"flex items-center justify-center py-12"},ol=G({__name:"PodcastGrid",props:{podcasts:{},title:{default:"Recommended Podcasts"}},emits:["selectPodcast"],setup(a){const c=a,{isDark:l}=Z(),w=S(""),g=S(null),{coverSrc:v,fallbackSrc:x,onError:m,isLoading:_}=Ae({items:Ne(c,"podcasts"),id:d=>d.id,existingUrl:d=>d.coverUrl,fetch:d=>xt(d.title,d.host),fallback:d=>ht(d.title,d.host)}),$=B(()=>{const d=new Map;for(const o of c.podcasts)for(const r of o.genres??[])d.set(r,(d.get(r)??0)+1);return[...d.entries()].sort((o,r)=>r[1]-o[1]).slice(0,8).map(([o])=>o)}),b=B(()=>{let d=c.podcasts;if(w.value){const o=w.value.toLowerCase();d=d.filter(r=>r.title.toLowerCase().includes(o)||(r.host??"").toLowerCase().includes(o)||(r.genres??[]).some(h=>h.toLowerCase().includes(o)))}return g.value&&(d=d.filter(o=>(o.genres??[]).includes(g.value))),d});return(d,o)=>(s(),n("div",Vn,[e("div",{class:"p-4 space-y-3",style:q(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",Un,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",qn,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(b.value.length)+" podcasts ",3),ie(d.$slots,"header-actions")])]),W(e("input",{"onUpdate:modelValue":o[0]||(o[0]=r=>w.value=r),type:"text",placeholder:"Search podcasts...",class:i(["w-full px-3 py-2 rounded-lg text-base outline-none transition-colors",t(l)?"bg-white/5 text-white/80 placeholder:text-white/25 focus:bg-white/10":"bg-black/3 text-gray-800 placeholder:text-gray-400 focus:bg-black/5"])},null,2),[[Q,w.value]]),$.value.length>0?(s(),n("div",Gn,[(s(!0),n(I,null,P($.value,r=>(s(),n("button",{key:r,class:i(["text-xs px-2 py-1 rounded-md transition-all duration-150",g.value===r?"nav-tab-active":t(l)?"text-white/40 hover:text-white/70 hover:bg-white/5":"text-gray-500 hover:text-gray-800 hover:bg-black/5"]),onClick:h=>g.value=g.value===r?null:r},u(r),11,On))),128))])):f("",!0)],4),e("div",Hn,[e("div",Wn,[(s(!0),n(I,null,P(b.value,r=>(s(),n("button",{key:r.id,class:"group flex flex-col items-stretch text-left w-full path-glass-bubble rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105","aria-label":r.title,onClick:h=>d.$emit("selectPodcast",r)},[e("div",Yn,[e("div",{class:i(["aspect-square relative w-full overflow-hidden rounded-[10px]",t(v)(r)?"":t(l)?"bg-white/[0.06]":"bg-black/[0.04]"])},[t(_)(r)?(s(),n("div",Jn)):f("",!0),t(v)(r)?(s(),n("img",{key:1,src:t(v)(r),alt:r.title,class:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-110",loading:"lazy",onError:h=>t(m)(r)},null,40,Qn)):t(_)(r)?f("",!0):(s(),n("img",{key:2,src:t(x)(r),alt:r.title,class:"w-full h-full object-cover"},null,8,Zn)),t(v)(r)?(s(),n("div",Xn)):f("",!0),e("div",el,[e("p",tl,u(r.title),1),e("p",sl,u(r.host||"Podcast"),1)]),e("div",nl,[(s(!0),n(I,null,P(r.sources.slice(0,2),h=>(s(),n("span",{key:h.type,class:"text-xs px-1 py-0.5 rounded bg-black/60 text-white/70 backdrop-blur-sm"},u(h.type),1))),128))])],2)])],8,Kn))),128))]),b.value.length===0?(s(),n("div",ll,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No podcasts match your search ",2)])):f("",!0)])]))}}),al={class:"shrink-0"},il={class:"flex-1 overflow-y-auto custom-scrollbar"},rl={key:0,class:"relative overflow-hidden",style:{minHeight:"180px"}},cl={class:"absolute inset-0"},dl=["src"],ul={class:"relative z-10 flex flex-col justify-end h-full px-5 pb-5 pt-12",style:{"min-height":"180px"}},hl={class:"px-3 pt-2 pb-8"},xl={key:0,"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 2a10 10 0 100 20 10 10 0 000-20zm0 0v2m0 16v2m10-10h-2M4 12H2m15.07-5.07l-1.41 1.41M8.34 15.66l-1.41 1.41m0-11.14l1.41 1.41m7.32 7.32l1.41 1.41"},pl={key:1,"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 5a2 2 0 012-2h10a2 2 0 012 2v16l-7-3.5L5 21V5z"},gl={key:2,"stroke-linecap":"round","stroke-linejoin":"round",d:"M13 2L3 14h9l-1 8 10-12h-9l1-8z"},bl={key:3,"stroke-linecap":"round","stroke-linejoin":"round",d:"M4 6h16M4 12h16M4 18h7"},vl=["onClick"],fl=["onClick"],ml={key:1,class:"flex items-center justify-center py-16 px-4"},wl=G({__name:"MagazineGrid",props:{sections:{},heroImageUrl:{default:null},title:{default:"Brief"},query:{default:""}},setup(a){const c=a,{isDark:l}=Z(),{openMagazineSectionDetail:w}=$e(),g=["compass","bookmark","lightning","lines"];function v(b){return b.replace(/\[([^\]]*)\]\([^)]+\)/g,"$1").replace(/https?:\/\/\S+/g,"").replace(/\uFE0F/g,"").replace(new RegExp("(?:^|(?<=\\s))[\\p{Emoji_Presentation}\\p{Extended_Pictographic}]+\\s*","gu"),"").replace(/---+/g,"").replace(/^#+\s*/gm,"").replace(/\*\*/g,"").replace(/\*([^*\n]+)\*/g,"$1").replace(/\|/g,", ").replace(/,\s*,+/g,",").replace(/^\s*[-•]\s+/gm,"").replace(/\n+/g," ").replace(/(^|\s),\s*/g,"$1").trim()}function x(b,d){const o=v(b);return o.length<=d?o:o.slice(0,d).replace(/\s+\S*$/,"")+" ..."}const m=B(()=>{const b=[],d=c.sections;if(!d.length)return b;let o=0;for(const j of c.query||"brief")o=(o<<5)-o+j.charCodeAt(0)|0;let r="",h=0,M=!1;return d.forEach((j,L)=>{if(L===0&&!j.group){b.push({type:"wide",title:j.title,text:x(j.content,200),label:"The Lead",author:j.author,section:j});return}const D=j.group||"";if(D&&D!==r&&(M&&(b.push({type:"dark",title:"",text:""}),M=!1),b.push({type:"banner",title:"",text:"",icon:g[h%g.length],label:D}),h++,r=D),D){const C=M?"dark":"half",k=v(j.content),p=v(j.title),y=k.toLowerCase().startsWith(p.toLowerCase().slice(0,30));b.push({type:C,title:y?"":j.title,text:x(j.content,y?160:100),section:j}),M=!M}else M&&(b.push({type:"dark",title:"",text:""}),M=!1),b.push({type:"wide",title:j.title,text:x(j.content,180),author:j.author,section:j})}),M&&b.push({type:"dark",title:"",text:""}),b});function _(b){const d=c.sections.indexOf(b);w(b,d>=0?d:0)}const $=B(()=>{const b=(c.query??"").trim();return b?b.length>100?b.slice(0,97)+"...":b:c.title});return(b,d)=>(s(),n("div",{class:i(["magazine h-full flex flex-col",t(l)?"magazine-dark":"magazine-light"])},[e("header",{class:i(["shrink-0 px-5 py-4 flex items-center justify-between border-b",t(l)?"border-white/10":"border-black/10"])},[e("h1",{class:i(["font-serif text-xl font-bold tracking-tight",t(l)?"text-white":"text-black"])}," AI Brief ",2),e("div",al,[ie(b.$slots,"header-actions",{},void 0,!0)])],2),e("div",il,[$.value?(s(),n("div",rl,[e("div",cl,[a.heroImageUrl?(s(),n("img",{key:0,src:a.heroImageUrl,alt:"",class:"w-full h-full object-cover",style:{filter:"saturate(0.3) contrast(1.1)"}},null,8,dl)):(s(),n("div",{key:1,class:i(["w-full h-full",t(l)?"bg-gradient-to-br from-white/[0.04] via-white/[0.02] to-transparent":"bg-gradient-to-br from-black/[0.06] via-black/[0.03] to-transparent"])},null,2))]),e("div",{class:i(["absolute inset-0",t(l)?"bg-gradient-to-t from-[#0a0a0a] via-[#0a0a0a]/80 to-[#0a0a0a]/60":"bg-gradient-to-t from-[#faf9f6] via-[#faf9f6]/85 to-[#faf9f6]/65"])},null,2),e("div",ul,[e("p",{class:i(["text-xs uppercase tracking-[0.3em] font-medium mb-2",t(l)?"text-white/40":"text-black/40"])}," In response to ",2),e("p",{class:i(["font-serif text-2xl italic leading-tight",t(l)?"text-white/70":"text-black/60"])},u($.value),3)])])):f("",!0),e("div",hl,[e("div",{class:i(["grid grid-cols-2 gap-px",t(l)?"bg-white/12":"bg-black/10"])},[(s(!0),n(I,null,P(m.value,(o,r)=>(s(),n(I,{key:r},[o.type==="banner"?(s(),n("div",{key:0,class:i(["col-span-2 flex flex-col items-center justify-center py-8 px-5",t(l)?"bg-[#0a0a0a]":"bg-[#faf9f6]"])},[(s(),n("svg",{class:i(["w-5 h-5 mb-2.5",t(l)?"text-white/20":"text-black/15"]),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[o.icon==="compass"?(s(),n("path",xl)):o.icon==="bookmark"?(s(),n("path",pl)):o.icon==="lightning"?(s(),n("path",gl)):(s(),n("path",bl))],2)),e("p",{class:i(["text-xs uppercase tracking-[0.3em] font-semibold text-center",t(l)?"text-white/30":"text-black/30"])},u(o.label),3)],2)):o.type==="wide"?(s(),n("button",{key:1,class:i(["col-span-2 text-left px-5 py-5 transition-colors cursor-pointer",t(l)?"bg-[#0a0a0a] hover:bg-white/[0.03]":"bg-[#faf9f6] hover:bg-black/[0.02]"]),onClick:h=>o.section&&_(o.section)},[o.label?(s(),n("p",{key:0,class:i(["text-xs uppercase tracking-[0.3em] font-semibold mb-2",t(l)?"text-white/30":"text-black/35"])},u(o.label),3)):f("",!0),e("h2",{class:i(["font-serif text-lg font-bold leading-snug mb-2",t(l)?"text-white/95":"text-black/90"])},u(o.title),3),o.author?(s(),n("p",{key:1,class:i(["text-xs mb-2",t(l)?"text-white/40":"text-black/40"])}," By "+u(o.author),3)):f("",!0),e("p",{class:i(["font-serif text-sm leading-relaxed",t(l)?"text-white/70":"text-black/60"])},u(o.text),3)],10,vl)):(s(),n("button",{key:2,class:i(["text-left px-4 py-4 transition-colors flex flex-col cursor-pointer",[t(l)?"bg-[#0a0a0a] hover:bg-white/[0.03]":"bg-[#faf9f6] hover:bg-black/[0.02]",o.type==="dark"?t(l)?"bg-white/[0.04]":"bg-black/[0.04]":""]]),onClick:h=>o.section&&_(o.section)},[o.label?(s(),n("p",{key:0,class:i(["text-xs uppercase tracking-[0.25em] font-semibold mb-1.5",t(l)?"text-white/25":"text-black/30"])},u(o.label),3)):f("",!0),o.title?(s(),n("h3",{key:1,class:i(["font-serif text-sm font-bold leading-snug mb-1",t(l)?"text-white/90":"text-black/85"])},u(o.title),3)):f("",!0),e("p",{class:i(["font-serif text-xs leading-relaxed flex-1",[t(l)?"text-white/55":"text-black/50",o.title?"":"italic"]])},u(o.text),3)],10,fl))],64))),128))],2)]),a.sections.length===0?(s(),n("div",ml,[e("p",{class:i(["text-sm",t(l)?"text-white/40":"text-gray-400"])}," No sections to display ",2)])):f("",!0)])],2))}}),st=De(wl,[["__scopeId","data-v-02741b8c"]]),yl={class:"h-full flex flex-col"},kl={class:"flex items-center justify-between gap-2"},$l={class:"flex items-center gap-2 shrink-0"},_l=["placeholder"],Cl={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},jl={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},Sl=["aria-label","onClick"],Ml={class:"cover-card flex-1 min-h-0 relative"},Tl={class:"aspect-[4/3] flex flex-col w-full overflow-hidden rounded-[10px]"},Dl={class:"flex-1 min-h-0 relative"},Il=["src","alt","onError"],Bl={key:2,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-black/20 to-transparent pointer-events-none"},Ll={key:0,class:"flex items-center justify-center py-12"},nt=G({__name:"NewsGrid",props:{articles:{},title:{default:"News & Articles"},query:{default:""},variant:{default:"news"}},setup(a){const c=a,{isDark:l}=Z(),{openArticleDetail:w,openWebsiteDetail:g}=$e(),v=S(""),x=S(new Set);function m(h){return!h||typeof h!="string"?!1:/^https?:\/\//i.test(h.trim())}function _(h){x.value=new Set([...x.value,h])}function $(h){try{return new URL(h).hostname.replace(/^www\./,"")}catch{return h}}function b(h){return c.variant==="websites"?Ht(h.title,$(h.url)):Wt(h.title,$(h.url))}function d(h){c.variant==="websites"?g(h):w(h)}function o(h,M){if(!M.trim())return 0;const L=M.toLowerCase().split(/\s+/).filter(y=>y.length>1);if(L.length===0)return 0;const D=h.title.toLowerCase(),C=(h.content??"").toLowerCase(),k=h.url.toLowerCase();let p=0;for(const y of L)D.includes(y)&&(p+=3),C.includes(y)&&(p+=2),k.includes(y)&&(p+=1);return p}const r=B(()=>{let h=c.articles;if(v.value.trim()){const M=v.value.toLowerCase();h=h.filter(j=>j.title.toLowerCase().includes(M)||(j.content??"").toLowerCase().includes(M)||j.url.toLowerCase().includes(M))}return c.query.trim()?[...h].sort((M,j)=>o(j,c.query)-o(M,c.query)):h});return(h,M)=>(s(),n("div",yl,[e("div",{class:"p-4 space-y-3",style:q(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",kl,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",$l,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(r.value.length)+" "+u(a.variant==="websites"?"websites":"articles"),3),ie(h.$slots,"header-actions")])]),W(e("input",{"onUpdate:modelValue":M[0]||(M[0]=j=>v.value=j),type:"text",placeholder:a.variant==="websites"?"Search websites...":"Search articles...",class:i(["w-full px-3 py-2 rounded-lg text-base outline-none transition-colors",t(l)?"bg-white/5 text-white/80 placeholder:text-white/25 focus:bg-white/10":"bg-black/3 text-gray-800 placeholder:text-gray-400 focus:bg-black/5"])},null,10,_l),[[Q,v.value]])],4),e("div",Cl,[e("div",jl,[(s(!0),n(I,null,P(r.value,(j,L)=>(s(),n("button",{key:L,class:"group flex flex-col items-stretch text-left w-full path-glass-bubble rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105","aria-label":j.title,onClick:D=>d(j)},[e("div",Ml,[e("div",Tl,[e("div",Dl,[m(j.imgSrc)&&!x.value.has(j.url)?(s(),n("img",{key:0,src:j.imgSrc,alt:j.title,class:"absolute inset-0 w-full h-full object-cover transition-transform duration-300 group-hover:scale-110",loading:"lazy",onError:D=>_(j.url)},null,40,Il)):(s(),n("div",{key:1,class:"absolute inset-0 bg-cover bg-center",style:q({backgroundImage:`url(${b(j)})`})},null,4)),m(j.imgSrc)&&!x.value.has(j.url)?(s(),n("div",Bl)):f("",!0)]),e("div",{class:i(["shrink-0 p-2 backdrop-blur-md rounded-b-[10px]",[t(l)?"bg-black shadow-[inset_0_1px_0_rgba(255,255,255,0.12)]":"bg-white shadow-[inset_0_1px_0_rgba(0,0,0,0.06)]"]])},[e("p",{class:i(["text-xs font-semibold leading-tight line-clamp-2",t(l)?"text-white/95":"text-gray-900"])},u(j.title),3),j.content?(s(),n("p",{key:0,class:i(["text-xs line-clamp-1 mt-0.5",t(l)?"text-white/70":"text-gray-600"])},u(j.content),3)):f("",!0),e("p",{class:i(["text-xs truncate mt-0.5",t(l)?"text-white/50":"text-gray-500"])},u($(j.url)),3)],2)])])],8,Sl))),128))]),r.value.length===0?(s(),n("div",Ll,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])},u(a.variant==="websites"?"No websites match your search":"No articles match your search"),3)])):f("",!0)])]))}}),Pl={class:"h-full flex flex-col"},Nl={class:"flex items-center justify-between gap-2"},Al={class:"flex items-center gap-2 shrink-0"},zl={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},El={class:"grid grid-cols-1 sm:grid-cols-2 gap-3"},Fl=["aria-label","onClick"],Rl={class:"aspect-[3/1] relative w-full overflow-hidden"},Vl=["src","alt"],Ul={class:"p-3"},ql={class:"flex items-center gap-3 mt-2 flex-wrap"},Gl={key:0,class:"flex items-center justify-center py-12"},Ol=G({__name:"RecipeGrid",props:{recipes:{},title:{default:"Recipes"}},emits:["selectRecipe"],setup(a){const c=a,{isDark:l}=Z(),w=S(""),g=B(()=>{if(!w.value.trim())return c.recipes;const v=w.value.toLowerCase();return c.recipes.filter(x=>x.title.toLowerCase().includes(v)||x.ingredients.some(m=>m.toLowerCase().includes(v)))});return(v,x)=>(s(),n("div",Pl,[e("div",{class:"p-4 space-y-3",style:q(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",Nl,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",Al,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(g.value.length)+" recipes ",3),ie(v.$slots,"header-actions")])]),a.recipes.length>3?W((s(),n("input",{key:0,"onUpdate:modelValue":x[0]||(x[0]=m=>w.value=m),type:"text",placeholder:"Search recipes...",class:i(["w-full px-3 py-2 rounded-lg text-base outline-none transition-colors",t(l)?"bg-white/5 text-white/80 placeholder:text-white/25 focus:bg-white/10":"bg-black/3 text-gray-800 placeholder:text-gray-400 focus:bg-black/5"])},null,2)),[[Q,w.value]]):f("",!0)],4),e("div",zl,[e("div",El,[(s(!0),n(I,null,P(g.value,(m,_)=>(s(),n("button",{key:_,class:i(["group flex flex-col items-stretch text-left w-full rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105",t(l)?"bg-white/[0.04] border border-white/8 hover:bg-white/[0.07]":"bg-black/[0.02] border border-black/5 hover:bg-black/[0.05]"]),"aria-label":m.title,onClick:$=>v.$emit("selectRecipe",m)},[e("div",Rl,[e("img",{src:t(Kt)(m.title,m.time),alt:m.title,class:"w-full h-full object-cover"},null,8,Vl)]),e("div",Ul,[e("p",{class:i(["text-sm font-semibold leading-tight line-clamp-2",t(l)?"text-white/90":"text-gray-900"])},u(m.title),3),e("div",ql,[m.time?(s(),n("span",{key:0,class:i(["flex items-center gap-1 text-xs",t(l)?"text-white/40":"text-gray-500"])},[x[1]||(x[1]=e("svg",{class:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),ne(" "+u(m.time),1)],2)):f("",!0),m.servings?(s(),n("span",{key:1,class:i(["flex items-center gap-1 text-xs",t(l)?"text-white/40":"text-gray-500"])},[x[2]||(x[2]=e("svg",{class:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0z"})],-1)),ne(" "+u(m.servings),1)],2)):f("",!0),m.calories?(s(),n("span",{key:2,class:i(["text-xs",t(l)?"text-white/40":"text-gray-500"])},u(m.calories)+" cal ",3)):f("",!0)]),m.ingredients.length>0?(s(),n("p",{key:0,class:i(["text-xs mt-2 line-clamp-1",t(l)?"text-white/25":"text-gray-400"])},u(m.ingredients.slice(0,4).join(" · ")),3)):f("",!0)])],10,Fl))),128))]),g.value.length===0?(s(),n("div",Gl,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No recipes match your search ",2)])):f("",!0)])]))}}),Hl={class:"h-full flex flex-col"},Wl={class:"flex items-center justify-between gap-2"},Kl={class:"flex flex-wrap gap-1.5"},Yl=["onClick"],Jl={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},Ql={class:"space-y-2"},Zl=["aria-label","onClick"],Xl={class:"text-white/90"},eo={class:"flex-1 min-w-0"},to={class:"flex items-center gap-2"},so={class:"flex gap-1 mt-1.5"},no={key:0,class:"flex items-center justify-center py-12"},lo=G({__name:"AppsGrid",props:{apps:{},title:{default:"Recommended Apps"}},emits:["selectApp"],setup(a){const c=a,{isDark:l}=Z(),w=S(""),g=S(null),v=[{value:"nostr-client",label:"Nostr"},{value:"lightning-wallet",label:"Lightning"},{value:"bitcoin-wallet",label:"Bitcoin"},{value:"privacy",label:"Privacy"},{value:"node",label:"Nodes"},{value:"dev-tool",label:"Dev"}];function x(b){return v.find(d=>d.value===b)?.label??b}function m(b){return{ios:"iOS",android:"Android",web:"Web",desktop:"Desktop",cli:"CLI",nodeos:"Node"}[b]??b}function _(b){let d=0;for(let r=0;r{let b=c.apps;if(w.value){const d=w.value.toLowerCase();b=b.filter(o=>o.name.toLowerCase().includes(d)||o.description.toLowerCase().includes(d)||o.keywords.some(r=>r.toLowerCase().includes(d)))}return g.value&&(b=b.filter(d=>d.category===g.value)),b});return(b,d)=>(s(),n("div",Hl,[e("div",{class:"p-4 space-y-3",style:q(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",Wl,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u($.value.length)+" apps ",3)]),W(e("input",{"onUpdate:modelValue":d[0]||(d[0]=o=>w.value=o),type:"text",placeholder:"Search apps...",class:i(["w-full px-3 py-2 rounded-lg text-base outline-none transition-colors",t(l)?"bg-white/5 text-white/80 placeholder:text-white/25 focus:bg-white/10":"bg-black/3 text-gray-800 placeholder:text-gray-400 focus:bg-black/5"])},null,2),[[Q,w.value]]),e("div",Kl,[(s(),n(I,null,P(v,o=>e("button",{key:o.value,class:i(["text-xs px-2 py-1 rounded-md transition-all duration-150",g.value===o.value?"nav-tab-active":t(l)?"text-white/40 hover:text-white/70 hover:bg-white/5":"text-gray-500 hover:text-gray-800 hover:bg-black/5"]),onClick:r=>g.value=g.value===o.value?null:o.value},u(o.label),11,Yl)),64))])],4),e("div",Jl,[e("div",Ql,[(s(!0),n(I,null,P($.value,o=>(s(),n("button",{key:o.id,class:i(["w-full text-left p-3 rounded-xl transition-all duration-200 flex items-start gap-3",t(l)?"bg-white/5 hover:bg-white/10":"bg-black/3 hover:bg-black/5"]),"aria-label":o.name,onClick:r=>b.$emit("selectApp",o)},[e("div",{class:"w-10 h-10 rounded-xl flex items-center justify-center text-lg font-bold shrink-0",style:q({background:_(o.id)})},[e("span",Xl,u(o.name.charAt(0)),1)],4),e("div",eo,[e("div",to,[e("p",{class:i(["text-xs font-semibold truncate",t(l)?"text-white/90":"text-gray-900"])},u(o.name),3),e("span",{class:i(["text-xs px-1.5 py-0.5 rounded font-medium shrink-0",t(l)?"bg-white/10 text-white/50":"bg-black/5 text-gray-500"])},u(x(o.category)),3)]),e("p",{class:i(["text-xs mt-0.5 line-clamp-2",t(l)?"text-white/50":"text-gray-500"])},u(o.description),3),e("div",so,[(s(!0),n(I,null,P(o.platforms,r=>(s(),n("span",{key:r,class:i(["text-xs px-1 py-0.5 rounded",t(l)?"bg-white/5 text-white/30":"bg-black/3 text-gray-400"])},u(m(r)),3))),128))])])],10,Zl))),128))]),$.value.length===0?(s(),n("div",no,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No apps match your search ",2)])):f("",!0)])]))}}),oo={class:"group/node"},ao={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"},io={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"},ro={class:"truncate flex-1"},co={key:0,class:"w-2.5 h-2.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},uo={key:0,class:"w-2.5 h-2.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ho={key:0},xo=G({__name:"FileTreeNode",props:{entry:{},activeFile:{},depth:{}},emits:["select","toggle-context"],setup(a,{emit:c}){const l=a,{isFileSelected:w}=pe(),g=c,{isDark:v}=Z(),x=S(l.depth<1),m=B(()=>!l.entry.isDirectory&&l.activeFile===l.entry.path),_=B(()=>!l.entry.isDirectory&&w(l.entry.path)),$=B(()=>l.entry.isDirectory&&w(l.entry.path));function b(){l.entry.isDirectory?x.value=!x.value:g("select",l.entry.path)}function d(){g("toggle-context",l.entry.path)}function o(){g("toggle-context",l.entry.path)}return(r,h)=>{const M=Yt("FileTreeNode",!0);return s(),n("div",oo,[e("div",{class:i(["w-full flex items-center gap-1.5 py-1 px-2 rounded-lg text-xs transition-colors cursor-pointer",[m.value?t(v)?"bg-white/10 text-white/90":"bg-black/8 text-gray-900":t(v)?"text-white/60 hover:bg-white/[0.04] hover:text-white/80":"text-gray-600 hover:bg-black/[0.03] hover:text-gray-800"]]),style:q({paddingLeft:`${a.depth*12+8}px`}),onClick:b},[a.entry.isDirectory?(s(),n("svg",{key:0,class:i(["w-3 h-3 shrink-0 transition-transform duration-150",x.value?"rotate-90":""]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...h[2]||(h[2]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"},null,-1)])],2)):f("",!0),(s(),n("svg",{class:i(["w-3.5 h-3.5 shrink-0",a.entry.isDirectory?"text-accent/70":t(v)?"text-white/30":"text-gray-400"]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[a.entry.isDirectory?(s(),n("path",ao)):(s(),n("path",io))],2)),e("span",ro,u(a.entry.name),1),a.entry.isDirectory?f("",!0):(s(),n("button",{key:1,class:i(["shrink-0 w-4 h-4 rounded-full border flex items-center justify-center transition-all ml-auto",[_.value?"bg-accent border-accent text-white":t(v)?"border-white/20 opacity-0 group-hover/node:opacity-100 hover:border-white/40":"border-black/15 opacity-0 group-hover/node:opacity-100 hover:border-black/30"]]),"aria-label":"Toggle file for chat context",onClick:xe(d,["stop"])},[_.value?(s(),n("svg",co,[...h[3]||(h[3]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"3",d:"M5 13l4 4L19 7"},null,-1)])])):f("",!0)],2)),a.entry.isDirectory?(s(),n("button",{key:2,class:i(["shrink-0 w-4 h-4 rounded-full border flex items-center justify-center transition-all ml-auto",[$.value?"bg-accent border-accent text-white":t(v)?"border-white/20 opacity-0 group-hover/node:opacity-100 hover:border-white/40":"border-black/15 opacity-0 group-hover/node:opacity-100 hover:border-black/30"]]),"aria-label":"Add folder to chat context",onClick:xe(o,["stop"])},[$.value?(s(),n("svg",uo,[...h[4]||(h[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"3",d:"M5 13l4 4L19 7"},null,-1)])])):f("",!0)],2)):f("",!0)],6),a.entry.isDirectory&&x.value&&a.entry.children?(s(),n("div",ho,[(s(!0),n(I,null,P(a.entry.children,j=>(s(),U(M,{key:j.path,entry:j,"active-file":a.activeFile,depth:a.depth+1,onSelect:h[0]||(h[0]=L=>r.$emit("select",L)),onToggleContext:h[1]||(h[1]=L=>r.$emit("toggle-context",L))},null,8,["entry","active-file","depth"]))),128))])):f("",!0)])}}}),po={class:"flex flex-col h-full"},go={class:"flex items-center gap-1 min-w-0 flex-1"},bo={class:"flex items-center gap-2 shrink-0"},vo={key:0,class:"flex-1 overflow-y-auto custom-scrollbar p-3"},fo={class:"mb-3 flex gap-2"},mo={class:"flex justify-end gap-2"},wo=["disabled"],yo={class:"grid grid-cols-2 gap-2"},ko=["onClick"],$o={key:1,class:"flex-1 overflow-y-auto custom-scrollbar p-2"},_o={key:0,class:"flex items-center justify-center py-12"},Co=G({__name:"ProjectGrid",props:{isWideDesktop:{type:Boolean},isMobile:{type:Boolean}},setup(a){const{isDark:c}=Z(),{projectList:l,activeProject:w,fileTree:g,activeFile:v,codeMode:x,selectedFiles:m,selectProject:_,openFile:$,createProject:b,clearActiveFile:d,toggleFileSelection:o,isFileSelected:r,loadProjects:h}=pe();oe(()=>{l.value.length===0&&h()});const M=S(""),j=S(!1),L=S(""),D=S(null),C=B(()=>w.value?"filetree":"projects"),k=B(()=>C.value==="projects"?"Projects":w.value?.name??"Projects"),p=B(()=>{const F=M.value.toLowerCase();return F?l.value.filter(O=>O.name.toLowerCase().includes(F)||(O.language??"").toLowerCase().includes(F)):l.value});function y(F){_(F)}function A(){const{activeProject:F,fileTree:O}=pe();F.value=null,O.value=[],d()}function V(F){$(F)}function E(F){o(F)}function J(){j.value=!0,L.value="",ye(()=>D.value?.focus())}function H(){j.value=!1,L.value=""}function K(){const F=L.value.trim();F&&(b(F),j.value=!1,L.value="")}return(F,O)=>(s(),n("div",po,[e("div",{class:"shrink-0 px-4 py-3 flex items-center justify-between gap-2",style:q(t(c)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",go,[C.value!=="projects"?(s(),n("button",{key:0,class:i(["text-xs shrink-0 transition-colors",t(c)?"text-white/40 hover:text-white/70 hover:underline":"text-gray-400 hover:text-gray-700 hover:underline"]),onClick:A}," Projects ",2)):f("",!0),C.value!=="projects"?(s(),n("span",{key:1,class:i(["text-xs shrink-0",t(c)?"text-white/20":"text-gray-300"])},"/",2)):f("",!0),e("span",{class:i(["text-sm font-semibold truncate",t(c)?"text-white/90":"text-gray-900"])},u(k.value),3)]),e("div",bo,[C.value==="projects"?(s(),n("p",{key:0,class:i(["text-xs",t(c)?"text-white/30":"text-gray-400"])},u(t(l).length)+" repos ",3)):C.value==="filetree"?(s(),n("p",{key:1,class:i(["text-xs",t(c)?"text-white/30":"text-gray-400"])},u(t(w)?.language),3)):f("",!0),ie(F.$slots,"header-actions")])],4),C.value==="projects"?(s(),n("div",vo,[e("div",fo,[W(e("input",{"onUpdate:modelValue":O[0]||(O[0]=X=>M.value=X),type:"text",placeholder:"Search projects...",class:i(["flex-1 min-w-0 px-3 py-2 rounded-lg text-base bg-transparent outline-none",t(c)?"text-white/80 placeholder:text-white/20 border border-white/10 focus:border-white/25":"text-gray-800 placeholder:text-gray-400 border border-black/10 focus:border-black/20"])},null,2),[[Q,M.value]]),e("button",{class:i(["shrink-0 px-3 py-2 rounded-lg text-xs font-medium transition-colors flex items-center gap-1.5",t(c)?"bg-accent/20 text-accent hover:bg-accent/30":"bg-accent/10 text-accent hover:bg-accent/20"]),onClick:J},[...O[2]||(O[2]=[e("svg",{class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),ne(" New ",-1)])],2)]),j.value?(s(),n("div",{key:0,class:i(["mb-3 p-3 rounded-xl",t(c)?"bg-white/[0.05] border border-white/10":"bg-black/[0.03] border border-black/8"])},[e("p",{class:i(["text-xs font-medium mb-2",t(c)?"text-white/70":"text-gray-700"])}," New Project ",2),W(e("input",{ref_key:"newProjectInputRef",ref:D,"onUpdate:modelValue":O[1]||(O[1]=X=>L.value=X),type:"text",placeholder:"Project name...",class:i(["w-full px-3 py-2 rounded-lg text-base bg-transparent outline-none mb-2",t(c)?"text-white/80 placeholder:text-white/20 border border-white/10 focus:border-white/25":"text-gray-800 placeholder:text-gray-400 border border-black/10 focus:border-black/20"]),onKeydown:[ae(K,["enter"]),ae(H,["escape"])]},null,34),[[Q,L.value]]),e("div",mo,[e("button",{class:i(["text-xs px-2.5 py-1 rounded-lg transition-colors",t(c)?"text-white/40 hover:text-white/70":"text-gray-500 hover:text-gray-800"]),onClick:H}," Cancel ",2),e("button",{class:i(["text-xs px-2.5 py-1 rounded-lg font-medium transition-colors",t(c)?"bg-accent/20 text-accent hover:bg-accent/30":"bg-accent/10 text-accent hover:bg-accent/20"]),disabled:!L.value.trim(),onClick:K}," Create ",10,wo)])],2)):f("",!0),e("div",yo,[(s(!0),n(I,null,P(p.value,X=>(s(),n("button",{key:X.path,class:i(["text-left p-3 rounded-xl transition-all duration-150",t(c)?"bg-white/[0.03] hover:bg-white/[0.07] border border-white/5":"bg-black/[0.02] hover:bg-black/[0.05] border border-black/5"]),onClick:ge=>y(X)},[e("div",{class:i(["w-8 h-8 rounded-lg flex items-center justify-center mb-2",t(c)?"bg-white/5":"bg-black/5"])},[(s(),n("svg",{class:i(["w-4 h-4",X.isGit?"text-accent":t(c)?"text-white/40":"text-gray-400"]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...O[3]||(O[3]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"},null,-1)])],2))],2),e("p",{class:i(["text-xs font-medium truncate",t(c)?"text-white/80":"text-gray-800"])},u(X.name),3),e("p",{class:i(["text-xs mt-0.5 truncate",t(c)?"text-white/25":"text-gray-400"])},u(X.language),3)],10,ko))),128))])])):C.value==="filetree"?(s(),n("div",$o,[(s(!0),n(I,null,P(t(g),X=>(s(),U(xo,{key:X.path,entry:X,"active-file":t(v),depth:0,onSelect:V,onToggleContext:E},null,8,["entry","active-file"]))),128)),t(g).length===0?(s(),n("div",_o,[e("p",{class:i(["text-xs",t(c)?"text-white/30":"text-gray-400"])}," Loading file tree... ",2)])):f("",!0)])):f("",!0)]))}}),jo={class:"flex flex-col h-full"},So={class:"shrink-0 px-4 py-2 flex gap-1.5 overflow-x-auto scrollbar-hide"},Mo=["onClick"],To={class:"flex-1 overflow-y-auto px-4 py-3"},Do={class:"grid grid-cols-2 gap-2"},Io=["onClick"],Bo=["onClick"],Lo={key:0,class:"w-3 h-3 text-white",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Po={key:2,class:"h-8 flex items-end gap-0.5 mb-2"},No={key:3,class:"h-8 flex items-center mb-2"},Ao={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"},zo={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"},Eo={key:2,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z"},Fo={key:3,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M7 21a4 4 0 01-4-4V5a2 2 0 012-2h4a2 2 0 012 2v12a4 4 0 01-4 4zm0 0h12a2 2 0 002-2v-4a2 2 0 00-2-2h-2.343M11 7.343l1.657-1.657a2 2 0 012.828 0l2.829 2.829a2 2 0 010 2.828l-8.486 8.485M7 17h.01"},Ro=G({__name:"DesignSystemGrid",setup(a){const{isDark:c}=Z(),{openDesignSystemItem:l}=$e(),{codeMode:w,toggleDesignToken:g,isDesignTokenSelected:v}=pe(),x=S("all"),m=[{id:"all",label:"All"},{id:"colors",label:"Colors"},{id:"typography",label:"Typography"},{id:"spacing",label:"Spacing"},{id:"atoms",label:"Atoms"},{id:"molecules",label:"Molecules"},{id:"organisms",label:"Organisms"}],_=[{id:"color-bg",name:"Background",category:"colors",preview:"inline",description:"Primary app background",code:`background-color: #0a0a0a; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/useNostr-CNDx2L4S.js","assets/index-DNCGxUDM.js","assets/index-BJh-vGUe.css","assets/ThreadNode-mLK8lEzr.js"])))=>i.map(i=>d[i]); +import{a as G,Z as Gt,$ as rt,p as Ne,b as s,c as n,e,h as q,u as t,n as i,t as u,f as ie,w as W,v as Q,F as I,g as P,i as f,j as Z,r as S,k as B,a0 as Ot,a1 as ct,H as ne,a2 as dt,a3 as ut,a4 as ht,a5 as xt,a6 as $e,O as De,a7 as Ht,a8 as Wt,a9 as Kt,J as Yt,z as xe,K as U,D as oe,aa as ae,ab as ye,_ as pt,A as ce,B as Pe,d as Jt,ac as Qt,E as se,ad as Zt,ae as Xt,af as es,ag as ts,ah as ss,M as ns,q as ls,ai as os,o as as,G as ue,aj as Le,ak as is}from"./index-DNCGxUDM.js";import{u as rs}from"./chat-6rSjUpgv.js";import{u as pe,e as He,d as gt,M as cs,a as ds,b as fe,_ as tt}from"./ChatWindow.vue_vue_type_script_setup_true_lang-BoEjFUAe.js";import{_ as us}from"./FilmGrid.vue_vue_type_script_setup_true_lang-CkIQ4bRp.js";import{u as Ae}from"./useContentImages-DdjyABL9.js";import{_ as hs}from"./SongGrid.vue_vue_type_script_setup_true_lang-70SttNTZ.js";import{useNostr as Ie}from"./useNostr-CNDx2L4S.js";import{u as bt,_ as xs}from"./FilmDetail.vue_vue_type_script_setup_true_lang-Cgf4f-Ng.js";import{_ as ps}from"./SongDetail.vue_vue_type_script_setup_true_lang-0mQhUBE8.js";const gs={class:"h-full flex flex-col"},bs={class:"flex items-center justify-between gap-2"},vs={class:"flex items-center gap-2 shrink-0"},fs={key:0,class:"flex flex-wrap gap-1.5"},ms=["onClick"],ws={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},ys={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},ks=["aria-label","onClick"],$s={class:"cover-card flex-1 min-h-0 relative"},_s={key:0,class:"absolute inset-0 animate-shimmer"},Cs=["src","alt","onError"],js=["src","alt"],Ss={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},Ms={class:"absolute bottom-0 left-0 right-0 p-2"},Ts={class:"text-xs font-semibold text-white/90 leading-tight truncate"},Ds={class:"text-xs text-white/40 truncate mt-0.5"},Is={key:4,class:"absolute top-1.5 left-1.5"},Bs={class:"text-xs px-1.5 py-0.5 rounded bg-black/60 text-amber-400 backdrop-blur-sm font-medium"},Ls={key:5,class:"absolute top-1.5 right-1.5"},Ps={class:"text-xs px-1 py-0.5 rounded bg-black/60 text-white/70 backdrop-blur-sm"},Ns={key:0,class:"flex items-center justify-center py-12"},As=G({__name:"BookGrid",props:{books:{},title:{default:"Recommended Books"}},emits:["selectBook"],setup(a){const c=a,{isDark:l}=Z(),w=S(""),g=S(null),{coverSrc:v,fallbackSrc:x,onError:m,isLoading:_}=Ae({items:Ne(c,"books"),id:d=>d.id,existingUrl:d=>d.coverUrl,fetch:d=>rt(d.title,d.author),fallback:d=>Gt(d.title,d.author)}),$=B(()=>{const d=new Map;for(const o of c.books)for(const r of o.genres??[])d.set(r,(d.get(r)??0)+1);return[...d.entries()].sort((o,r)=>r[1]-o[1]).slice(0,8).map(([o])=>o)}),b=B(()=>{let d=c.books;if(w.value){const o=w.value.toLowerCase();d=d.filter(r=>r.title.toLowerCase().includes(o)||r.author.toLowerCase().includes(o)||(r.genres??[]).some(h=>h.toLowerCase().includes(o)))}return g.value&&(d=d.filter(o=>(o.genres??[]).includes(g.value))),d});return(d,o)=>(s(),n("div",gs,[e("div",{class:"p-4 space-y-3",style:q(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",bs,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",vs,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(b.value.length)+" books ",3),ie(d.$slots,"header-actions")])]),W(e("input",{"onUpdate:modelValue":o[0]||(o[0]=r=>w.value=r),type:"text",placeholder:"Search books...",class:i(["w-full px-3 py-2 rounded-lg text-base outline-none transition-colors",t(l)?"bg-white/5 text-white/80 placeholder:text-white/25 focus:bg-white/10":"bg-black/3 text-gray-800 placeholder:text-gray-400 focus:bg-black/5"])},null,2),[[Q,w.value]]),$.value.length>0?(s(),n("div",fs,[(s(!0),n(I,null,P($.value,r=>(s(),n("button",{key:r,class:i(["text-xs px-2 py-1 rounded-md transition-all duration-150",g.value===r?"nav-tab-active":t(l)?"text-white/40 hover:text-white/70 hover:bg-white/5":"text-gray-500 hover:text-gray-800 hover:bg-black/5"]),onClick:h=>g.value=g.value===r?null:r},u(r),11,ms))),128))])):f("",!0)],4),e("div",ws,[e("div",ys,[(s(!0),n(I,null,P(b.value,r=>(s(),n("button",{key:r.id,class:"group flex flex-col items-stretch text-left w-full path-glass-bubble rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105","aria-label":`${r.title} by ${r.author}`,onClick:h=>d.$emit("selectBook",r)},[e("div",$s,[e("div",{class:i(["aspect-[2/3] relative w-full overflow-hidden rounded-[10px]",t(v)(r)?"":t(l)?"bg-white/[0.06]":"bg-black/[0.04]"])},[t(_)(r)?(s(),n("div",_s)):f("",!0),t(v)(r)?(s(),n("img",{key:1,src:t(v)(r),alt:`${r.title} by ${r.author}`,class:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-110",loading:"lazy",onError:h=>t(m)(r)},null,40,Cs)):t(_)(r)?f("",!0):(s(),n("img",{key:2,src:t(x)(r),alt:r.title,class:"w-full h-full object-cover"},null,8,js)),t(v)(r)?(s(),n("div",Ss)):f("",!0),e("div",Ms,[e("p",Ts,u(r.title),1),e("p",Ds,u(r.author),1)]),r.rating?(s(),n("div",Is,[e("span",Bs," ★ "+u(r.rating.toFixed(1)),1)])):f("",!0),r.year?(s(),n("div",Ls,[e("span",Ps,u(r.year),1)])):f("",!0)],2)])],8,ks))),128))]),b.value.length===0?(s(),n("div",Ns,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No books match your search ",2)])):f("",!0)])]))}}),zs={class:"h-full flex flex-col"},Es={class:"flex items-center justify-between gap-2"},Fs={class:"flex items-center gap-2 shrink-0"},Rs={key:0,class:"flex flex-wrap gap-1.5"},Vs=["onClick"],Us={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},qs={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},Gs=["aria-label","onClick"],Os={class:"cover-card flex-1 min-h-0 relative"},Hs={key:0,class:"absolute inset-0 animate-shimmer"},Ws=["src","alt","onError"],Ks=["src","alt"],Ys={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},Js={class:"absolute bottom-0 left-0 right-0 p-2"},Qs={class:"text-xs font-semibold text-white/90 leading-tight truncate"},Zs={class:"text-xs text-white/40 truncate mt-0.5"},Xs={key:4,class:"absolute top-1.5 left-1.5"},en={class:"text-xs px-1.5 py-0.5 rounded bg-black/60 text-amber-400 backdrop-blur-sm font-medium"},tn={key:5,class:"absolute top-1.5 right-1.5"},sn={class:"absolute top-1.5 right-1.5 flex gap-0.5 flex-wrap justify-end max-w-[60%]"},nn={key:0,class:"flex items-center justify-center py-12"},ln=G({__name:"TVSeriesGrid",props:{series:{},title:{default:"Recommended TV Series"}},emits:["selectSeries"],setup(a){const c=a,{isDark:l}=Z(),w=S(""),g=S(null),{coverSrc:v,fallbackSrc:x,onError:m,isLoading:_}=Ae({items:Ne(c,"series"),id:o=>o.id,existingUrl:o=>o.posterUrl||o.backdropUrl,fetch:o=>ct(o.title,o.year).then(r=>r.posterUrl),fallback:o=>Ot(o.title,o.year)});function $(o){return o.year?o.endYear&&o.endYear!==o.year?`${o.year}–${o.endYear}`:o.status==="ongoing"?`${o.year}–`:String(o.year):""}const b=B(()=>{const o=new Map;for(const r of c.series)for(const h of r.genres??[])o.set(h,(o.get(h)??0)+1);return[...o.entries()].sort((r,h)=>h[1]-r[1]).slice(0,8).map(([r])=>r)}),d=B(()=>{let o=c.series;if(w.value){const r=w.value.toLowerCase();o=o.filter(h=>h.title.toLowerCase().includes(r)||(h.creator??"").toLowerCase().includes(r)||(h.network??"").toLowerCase().includes(r)||(h.genres??[]).some(M=>M.toLowerCase().includes(r)))}return g.value&&(o=o.filter(r=>(r.genres??[]).includes(g.value))),o});return(o,r)=>(s(),n("div",zs,[e("div",{class:"p-4 space-y-3",style:q(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",Es,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",Fs,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(d.value.length)+" series ",3),ie(o.$slots,"header-actions")])]),W(e("input",{"onUpdate:modelValue":r[0]||(r[0]=h=>w.value=h),type:"text",placeholder:"Search TV series...",class:i(["w-full px-3 py-2 rounded-lg text-base outline-none transition-colors",t(l)?"bg-white/5 text-white/80 placeholder:text-white/25 focus:bg-white/10":"bg-black/3 text-gray-800 placeholder:text-gray-400 focus:bg-black/5"])},null,2),[[Q,w.value]]),b.value.length>0?(s(),n("div",Rs,[(s(!0),n(I,null,P(b.value,h=>(s(),n("button",{key:h,class:i(["text-xs px-2 py-1 rounded-md transition-all duration-150",g.value===h?"nav-tab-active":t(l)?"text-white/40 hover:text-white/70 hover:bg-white/5":"text-gray-500 hover:text-gray-800 hover:bg-black/5"]),onClick:M=>g.value=g.value===h?null:h},u(h),11,Vs))),128))])):f("",!0)],4),e("div",Us,[e("div",qs,[(s(!0),n(I,null,P(d.value,h=>(s(),n("button",{key:h.id,class:"group flex flex-col items-stretch text-left w-full path-glass-bubble rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105","aria-label":h.title,onClick:M=>o.$emit("selectSeries",h)},[e("div",Os,[e("div",{class:i(["aspect-[2/3] relative w-full overflow-hidden rounded-[10px]",t(v)(h)?"":t(l)?"bg-white/[0.06]":"bg-black/[0.04]"])},[t(_)(h)?(s(),n("div",Hs)):f("",!0),t(v)(h)?(s(),n("img",{key:1,src:t(v)(h),alt:`${h.title} — TV Series`,class:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-110",loading:"lazy",onError:M=>t(m)(h)},null,40,Ws)):t(_)(h)?f("",!0):(s(),n("img",{key:2,src:t(x)(h),alt:h.title,class:"w-full h-full object-cover"},null,8,Ks)),t(v)(h)?(s(),n("div",Ys)):f("",!0),e("div",Js,[e("p",Qs,u(h.title),1),e("p",Zs,[ne(u($(h)),1),h.seasons?(s(),n(I,{key:0},[ne(" · "+u(h.seasons)+"S",1)],64)):f("",!0)])]),h.rating?(s(),n("div",Xs,[e("span",en," ★ "+u(h.rating.toFixed(1)),1)])):f("",!0),h.status==="ongoing"?(s(),n("div",tn,[...r[1]||(r[1]=[e("span",{class:"text-xs px-1 py-0.5 rounded bg-emerald-500/80 text-white backdrop-blur-sm"}," ongoing ",-1)])])):f("",!0),e("div",sn,[(s(!0),n(I,null,P((h.sources??[]).slice(0,2),M=>(s(),n("span",{key:M.type,class:"text-xs px-1 py-0.5 rounded bg-black/60 text-white/70 backdrop-blur-sm"},u(M.type),1))),128))])],2)])],8,Gs))),128))]),d.value.length===0?(s(),n("div",nn,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No TV series match your search ",2)])):f("",!0)])]))}}),on={class:"h-full flex flex-col"},an={class:"flex items-center justify-between gap-2"},rn={class:"flex items-center gap-2 shrink-0"},cn={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},dn={class:"columns-2 sm:columns-3 gap-3 space-y-3"},un=["aria-label","onClick"],hn=["src","alt","onError"],xn={key:2,class:"absolute bottom-0 left-0 right-0 p-2 bg-gradient-to-t from-black/70 via-black/30 to-transparent"},pn={key:0,class:"text-xs font-medium text-white/90 truncate"},gn={key:1,class:"text-xs text-white/50 truncate"},bn={key:0,class:"flex items-center justify-center py-12"},vn=G({__name:"ImageGrid",props:{images:{},title:{default:"Images"}},emits:["selectImage"],setup(a){const{isDark:c}=Z(),l=S(new Set);function w(g){l.value.add(g.id),l.value=new Set(l.value)}return(g,v)=>(s(),n("div",on,[e("div",{class:"p-4 space-y-3",style:q(t(c)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",an,[e("h3",{class:i(["text-sm font-bold",t(c)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",rn,[e("span",{class:i(["text-xs font-mono",t(c)?"text-white/30":"text-gray-400"])},u(a.images.length)+" images ",3),ie(g.$slots,"header-actions")])])],4),e("div",cn,[e("div",dn,[(s(!0),n(I,null,P(a.images,x=>(s(),n("button",{key:x.id,class:i(["group w-full break-inside-avoid text-left rounded-xl overflow-hidden transition-all duration-200 hover:brightness-110 relative",t(c)?"bg-white/5":"bg-black/3"]),"aria-label":x.alt||x.title||"Image",onClick:m=>g.$emit("selectImage",x)},[l.value.has(x.id)?(s(),n("div",{key:1,class:i(["w-full aspect-[4/3] flex items-center justify-center",t(c)?"bg-white/5":"bg-black/5"])},[(s(),n("svg",{class:i(["w-8 h-8",t(c)?"text-white/15":"text-gray-300"]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...v[0]||(v[0]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"},null,-1)])],2))],2)):(s(),n("img",{key:0,src:x.url,alt:x.alt||x.title||"Image",class:"w-full block transition-transform duration-300 group-hover:scale-[1.03]",loading:"lazy",onError:m=>w(x)},null,40,hn)),x.title||x.source?(s(),n("div",xn,[x.title?(s(),n("p",pn,u(x.title),1)):f("",!0),x.source?(s(),n("p",gn,u(x.source),1)):f("",!0)])):f("",!0)],10,un))),128))]),a.images.length===0?(s(),n("div",bn,[e("p",{class:i(["text-sm",t(c)?"text-white/30":"text-gray-400"])}," No images found ",2)])):f("",!0)])]))}}),fn={class:"h-full flex flex-col"},mn={class:"p-4 space-y-3"},wn={class:"flex items-center justify-between"},yn={class:"shrink-0 flex items-center gap-2"},kn={key:0,class:"flex flex-wrap gap-1.5"},$n=["onClick"],_n={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pb-16"},Cn={class:"grid grid-cols-2 sm:grid-cols-3 gap-3"},jn=["aria-label","onClick"],Sn={class:"aspect-[4/3] relative w-full overflow-hidden rounded-t-[10px]"},Mn={key:0,class:"absolute inset-0 animate-shimmer"},Tn=["src","alt","onError"],Dn=["src","alt"],In={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},Bn={class:"absolute bottom-0 left-0 right-0 p-2"},Ln={class:"text-xs font-semibold text-white/90 truncate"},Pn={class:"text-xs text-white/40 truncate mt-0.5"},Nn={key:4,class:"absolute top-1.5 right-1.5"},An={class:"text-xs px-1.5 py-0.5 rounded bg-black/60 text-amber-400 backdrop-blur-sm font-semibold"},zn={key:5,class:"absolute top-1.5 left-1.5"},En={class:"text-xs px-1 py-0.5 rounded bg-black/60 text-white/70 backdrop-blur-sm"},Fn={key:0,class:"flex items-center justify-center py-12"},Rn=G({__name:"PlaceGrid",props:{places:{},title:{default:"Places"}},emits:["selectPlace"],setup(a){const c=a,{isDark:l}=Z(),w=S(""),g=S(null),{coverSrc:v,fallbackSrc:x,onError:m,isLoading:_}=Ae({items:Ne(c,"places"),id:d=>d.id,existingUrl:d=>d.photoUrl,fetch:d=>ut(d.name,d.city),fallback:d=>dt(d.name,d.cuisine||d.category)}),$=B(()=>{const d=new Map;for(const o of c.places){const r=o.cuisine||o.category;r&&d.set(r,(d.get(r)??0)+1)}return[...d.entries()].sort((o,r)=>r[1]-o[1]).slice(0,8).map(([o])=>o)}),b=B(()=>{let d=c.places;if(w.value){const o=w.value.toLowerCase();d=d.filter(r=>r.name.toLowerCase().includes(o)||r.cuisine?.toLowerCase().includes(o)||r.category?.toLowerCase().includes(o)||r.city?.toLowerCase().includes(o)||r.address?.toLowerCase().includes(o))}return g.value&&(d=d.filter(o=>o.cuisine===g.value||o.category===g.value)),d});return(d,o)=>(s(),n("div",fn,[e("div",mn,[e("div",wn,[e("h3",{class:i(["text-base font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title||"Places"),3),e("div",yn,[e("span",{class:i(["text-xs",t(l)?"text-white/30":"text-gray-400"])},u(b.value.length)+" places ",3),ie(d.$slots,"header-actions")])]),W(e("input",{"onUpdate:modelValue":o[0]||(o[0]=r=>w.value=r),type:"text",placeholder:"Search places...",class:i(["w-full text-base px-3 py-2 rounded-lg outline-none transition-colors",t(l)?"bg-white/5 text-white/80 placeholder-white/25 focus:bg-white/8":"bg-black/5 text-gray-800 placeholder-gray-400 focus:bg-black/8"])},null,2),[[Q,w.value]]),$.value.length>1?(s(),n("div",kn,[(s(!0),n(I,null,P($.value,r=>(s(),n("button",{key:r,class:i(["text-xs px-2 py-1 rounded-md font-medium transition-all duration-150",g.value===r?"nav-tab-active":t(l)?"bg-white/5 text-white/40 hover:text-white/70":"bg-black/5 text-gray-500 hover:text-gray-800"]),onClick:h=>g.value=g.value===r?null:r},u(r),11,$n))),128))])):f("",!0)]),e("div",_n,[e("div",Cn,[(s(!0),n(I,null,P(b.value,r=>(s(),n("button",{key:r.id,class:"group flex flex-col items-stretch text-left w-full path-glass-bubble rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105","aria-label":r.name,onClick:h=>d.$emit("selectPlace",r)},[e("div",Sn,[t(_)(r)?(s(),n("div",Mn)):f("",!0),t(v)(r)?(s(),n("img",{key:1,src:t(v)(r),alt:r.name,class:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-110",loading:"lazy",onError:h=>t(m)(r)},null,40,Tn)):t(_)(r)?f("",!0):(s(),n("img",{key:2,src:t(x)(r),alt:r.name,class:"w-full h-full object-cover"},null,8,Dn)),t(v)(r)?(s(),n("div",In)):f("",!0),e("div",Bn,[e("p",Ln,u(r.name),1),e("p",Pn,u(r.cuisine||r.category),1)]),r.rating?(s(),n("div",Nn,[e("span",An," ★ "+u(r.rating.toFixed(1)),1)])):f("",!0),r.priceLevel?(s(),n("div",zn,[e("span",En,u("$".repeat(r.priceLevel)),1)])):f("",!0)])],8,jn))),128))]),b.value.length===0?(s(),n("div",Fn,[e("p",{class:i(["text-xs",t(l)?"text-white/30":"text-gray-400"])}," No places match your search ",2)])):f("",!0)])]))}}),Vn={class:"h-full flex flex-col"},Un={class:"flex items-center justify-between gap-2"},qn={class:"flex items-center gap-2 shrink-0"},Gn={key:0,class:"flex flex-wrap gap-1.5"},On=["onClick"],Hn={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},Wn={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},Kn=["aria-label","onClick"],Yn={class:"cover-card flex-1 min-h-0 relative"},Jn={key:0,class:"absolute inset-0 animate-shimmer"},Qn=["src","alt","onError"],Zn=["src","alt"],Xn={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},el={class:"absolute bottom-0 left-0 right-0 p-2"},tl={class:"text-xs font-semibold text-white/90 leading-tight truncate"},sl={class:"text-xs text-white/40 truncate mt-0.5"},nl={class:"absolute top-1.5 right-1.5 flex gap-0.5 flex-wrap justify-end max-w-[60%]"},ll={key:0,class:"flex items-center justify-center py-12"},ol=G({__name:"PodcastGrid",props:{podcasts:{},title:{default:"Recommended Podcasts"}},emits:["selectPodcast"],setup(a){const c=a,{isDark:l}=Z(),w=S(""),g=S(null),{coverSrc:v,fallbackSrc:x,onError:m,isLoading:_}=Ae({items:Ne(c,"podcasts"),id:d=>d.id,existingUrl:d=>d.coverUrl,fetch:d=>xt(d.title,d.host),fallback:d=>ht(d.title,d.host)}),$=B(()=>{const d=new Map;for(const o of c.podcasts)for(const r of o.genres??[])d.set(r,(d.get(r)??0)+1);return[...d.entries()].sort((o,r)=>r[1]-o[1]).slice(0,8).map(([o])=>o)}),b=B(()=>{let d=c.podcasts;if(w.value){const o=w.value.toLowerCase();d=d.filter(r=>r.title.toLowerCase().includes(o)||(r.host??"").toLowerCase().includes(o)||(r.genres??[]).some(h=>h.toLowerCase().includes(o)))}return g.value&&(d=d.filter(o=>(o.genres??[]).includes(g.value))),d});return(d,o)=>(s(),n("div",Vn,[e("div",{class:"p-4 space-y-3",style:q(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",Un,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",qn,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(b.value.length)+" podcasts ",3),ie(d.$slots,"header-actions")])]),W(e("input",{"onUpdate:modelValue":o[0]||(o[0]=r=>w.value=r),type:"text",placeholder:"Search podcasts...",class:i(["w-full px-3 py-2 rounded-lg text-base outline-none transition-colors",t(l)?"bg-white/5 text-white/80 placeholder:text-white/25 focus:bg-white/10":"bg-black/3 text-gray-800 placeholder:text-gray-400 focus:bg-black/5"])},null,2),[[Q,w.value]]),$.value.length>0?(s(),n("div",Gn,[(s(!0),n(I,null,P($.value,r=>(s(),n("button",{key:r,class:i(["text-xs px-2 py-1 rounded-md transition-all duration-150",g.value===r?"nav-tab-active":t(l)?"text-white/40 hover:text-white/70 hover:bg-white/5":"text-gray-500 hover:text-gray-800 hover:bg-black/5"]),onClick:h=>g.value=g.value===r?null:r},u(r),11,On))),128))])):f("",!0)],4),e("div",Hn,[e("div",Wn,[(s(!0),n(I,null,P(b.value,r=>(s(),n("button",{key:r.id,class:"group flex flex-col items-stretch text-left w-full path-glass-bubble rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105","aria-label":r.title,onClick:h=>d.$emit("selectPodcast",r)},[e("div",Yn,[e("div",{class:i(["aspect-square relative w-full overflow-hidden rounded-[10px]",t(v)(r)?"":t(l)?"bg-white/[0.06]":"bg-black/[0.04]"])},[t(_)(r)?(s(),n("div",Jn)):f("",!0),t(v)(r)?(s(),n("img",{key:1,src:t(v)(r),alt:r.title,class:"w-full h-full object-cover transition-transform duration-300 group-hover:scale-110",loading:"lazy",onError:h=>t(m)(r)},null,40,Qn)):t(_)(r)?f("",!0):(s(),n("img",{key:2,src:t(x)(r),alt:r.title,class:"w-full h-full object-cover"},null,8,Zn)),t(v)(r)?(s(),n("div",Xn)):f("",!0),e("div",el,[e("p",tl,u(r.title),1),e("p",sl,u(r.host||"Podcast"),1)]),e("div",nl,[(s(!0),n(I,null,P(r.sources.slice(0,2),h=>(s(),n("span",{key:h.type,class:"text-xs px-1 py-0.5 rounded bg-black/60 text-white/70 backdrop-blur-sm"},u(h.type),1))),128))])],2)])],8,Kn))),128))]),b.value.length===0?(s(),n("div",ll,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No podcasts match your search ",2)])):f("",!0)])]))}}),al={class:"shrink-0"},il={class:"flex-1 overflow-y-auto custom-scrollbar"},rl={key:0,class:"relative overflow-hidden",style:{minHeight:"180px"}},cl={class:"absolute inset-0"},dl=["src"],ul={class:"relative z-10 flex flex-col justify-end h-full px-5 pb-5 pt-12",style:{"min-height":"180px"}},hl={class:"px-3 pt-2 pb-8"},xl={key:0,"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 2a10 10 0 100 20 10 10 0 000-20zm0 0v2m0 16v2m10-10h-2M4 12H2m15.07-5.07l-1.41 1.41M8.34 15.66l-1.41 1.41m0-11.14l1.41 1.41m7.32 7.32l1.41 1.41"},pl={key:1,"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 5a2 2 0 012-2h10a2 2 0 012 2v16l-7-3.5L5 21V5z"},gl={key:2,"stroke-linecap":"round","stroke-linejoin":"round",d:"M13 2L3 14h9l-1 8 10-12h-9l1-8z"},bl={key:3,"stroke-linecap":"round","stroke-linejoin":"round",d:"M4 6h16M4 12h16M4 18h7"},vl=["onClick"],fl=["onClick"],ml={key:1,class:"flex items-center justify-center py-16 px-4"},wl=G({__name:"MagazineGrid",props:{sections:{},heroImageUrl:{default:null},title:{default:"Brief"},query:{default:""}},setup(a){const c=a,{isDark:l}=Z(),{openMagazineSectionDetail:w}=$e(),g=["compass","bookmark","lightning","lines"];function v(b){return b.replace(/\[([^\]]*)\]\([^)]+\)/g,"$1").replace(/https?:\/\/\S+/g,"").replace(/\uFE0F/g,"").replace(new RegExp("(?:^|(?<=\\s))[\\p{Emoji_Presentation}\\p{Extended_Pictographic}]+\\s*","gu"),"").replace(/---+/g,"").replace(/^#+\s*/gm,"").replace(/\*\*/g,"").replace(/\*([^*\n]+)\*/g,"$1").replace(/\|/g,", ").replace(/,\s*,+/g,",").replace(/^\s*[-•]\s+/gm,"").replace(/\n+/g," ").replace(/(^|\s),\s*/g,"$1").trim()}function x(b,d){const o=v(b);return o.length<=d?o:o.slice(0,d).replace(/\s+\S*$/,"")+" ..."}const m=B(()=>{const b=[],d=c.sections;if(!d.length)return b;let o=0;for(const j of c.query||"brief")o=(o<<5)-o+j.charCodeAt(0)|0;let r="",h=0,M=!1;return d.forEach((j,L)=>{if(L===0&&!j.group){b.push({type:"wide",title:j.title,text:x(j.content,200),label:"The Lead",author:j.author,section:j});return}const D=j.group||"";if(D&&D!==r&&(M&&(b.push({type:"dark",title:"",text:""}),M=!1),b.push({type:"banner",title:"",text:"",icon:g[h%g.length],label:D}),h++,r=D),D){const C=M?"dark":"half",k=v(j.content),p=v(j.title),y=k.toLowerCase().startsWith(p.toLowerCase().slice(0,30));b.push({type:C,title:y?"":j.title,text:x(j.content,y?160:100),section:j}),M=!M}else M&&(b.push({type:"dark",title:"",text:""}),M=!1),b.push({type:"wide",title:j.title,text:x(j.content,180),author:j.author,section:j})}),M&&b.push({type:"dark",title:"",text:""}),b});function _(b){const d=c.sections.indexOf(b);w(b,d>=0?d:0)}const $=B(()=>{const b=(c.query??"").trim();return b?b.length>100?b.slice(0,97)+"...":b:c.title});return(b,d)=>(s(),n("div",{class:i(["magazine h-full flex flex-col",t(l)?"magazine-dark":"magazine-light"])},[e("header",{class:i(["shrink-0 px-5 py-4 flex items-center justify-between border-b",t(l)?"border-white/10":"border-black/10"])},[e("h1",{class:i(["font-serif text-xl font-bold tracking-tight",t(l)?"text-white":"text-black"])}," AI Brief ",2),e("div",al,[ie(b.$slots,"header-actions",{},void 0,!0)])],2),e("div",il,[$.value?(s(),n("div",rl,[e("div",cl,[a.heroImageUrl?(s(),n("img",{key:0,src:a.heroImageUrl,alt:"",class:"w-full h-full object-cover",style:{filter:"saturate(0.3) contrast(1.1)"}},null,8,dl)):(s(),n("div",{key:1,class:i(["w-full h-full",t(l)?"bg-gradient-to-br from-white/[0.04] via-white/[0.02] to-transparent":"bg-gradient-to-br from-black/[0.06] via-black/[0.03] to-transparent"])},null,2))]),e("div",{class:i(["absolute inset-0",t(l)?"bg-gradient-to-t from-[#0a0a0a] via-[#0a0a0a]/80 to-[#0a0a0a]/60":"bg-gradient-to-t from-[#faf9f6] via-[#faf9f6]/85 to-[#faf9f6]/65"])},null,2),e("div",ul,[e("p",{class:i(["text-xs uppercase tracking-[0.3em] font-medium mb-2",t(l)?"text-white/40":"text-black/40"])}," In response to ",2),e("p",{class:i(["font-serif text-2xl italic leading-tight",t(l)?"text-white/70":"text-black/60"])},u($.value),3)])])):f("",!0),e("div",hl,[e("div",{class:i(["grid grid-cols-2 gap-px",t(l)?"bg-white/12":"bg-black/10"])},[(s(!0),n(I,null,P(m.value,(o,r)=>(s(),n(I,{key:r},[o.type==="banner"?(s(),n("div",{key:0,class:i(["col-span-2 flex flex-col items-center justify-center py-8 px-5",t(l)?"bg-[#0a0a0a]":"bg-[#faf9f6]"])},[(s(),n("svg",{class:i(["w-5 h-5 mb-2.5",t(l)?"text-white/20":"text-black/15"]),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[o.icon==="compass"?(s(),n("path",xl)):o.icon==="bookmark"?(s(),n("path",pl)):o.icon==="lightning"?(s(),n("path",gl)):(s(),n("path",bl))],2)),e("p",{class:i(["text-xs uppercase tracking-[0.3em] font-semibold text-center",t(l)?"text-white/30":"text-black/30"])},u(o.label),3)],2)):o.type==="wide"?(s(),n("button",{key:1,class:i(["col-span-2 text-left px-5 py-5 transition-colors cursor-pointer",t(l)?"bg-[#0a0a0a] hover:bg-white/[0.03]":"bg-[#faf9f6] hover:bg-black/[0.02]"]),onClick:h=>o.section&&_(o.section)},[o.label?(s(),n("p",{key:0,class:i(["text-xs uppercase tracking-[0.3em] font-semibold mb-2",t(l)?"text-white/30":"text-black/35"])},u(o.label),3)):f("",!0),e("h2",{class:i(["font-serif text-lg font-bold leading-snug mb-2",t(l)?"text-white/95":"text-black/90"])},u(o.title),3),o.author?(s(),n("p",{key:1,class:i(["text-xs mb-2",t(l)?"text-white/40":"text-black/40"])}," By "+u(o.author),3)):f("",!0),e("p",{class:i(["font-serif text-sm leading-relaxed",t(l)?"text-white/70":"text-black/60"])},u(o.text),3)],10,vl)):(s(),n("button",{key:2,class:i(["text-left px-4 py-4 transition-colors flex flex-col cursor-pointer",[t(l)?"bg-[#0a0a0a] hover:bg-white/[0.03]":"bg-[#faf9f6] hover:bg-black/[0.02]",o.type==="dark"?t(l)?"bg-white/[0.04]":"bg-black/[0.04]":""]]),onClick:h=>o.section&&_(o.section)},[o.label?(s(),n("p",{key:0,class:i(["text-xs uppercase tracking-[0.25em] font-semibold mb-1.5",t(l)?"text-white/25":"text-black/30"])},u(o.label),3)):f("",!0),o.title?(s(),n("h3",{key:1,class:i(["font-serif text-sm font-bold leading-snug mb-1",t(l)?"text-white/90":"text-black/85"])},u(o.title),3)):f("",!0),e("p",{class:i(["font-serif text-xs leading-relaxed flex-1",[t(l)?"text-white/55":"text-black/50",o.title?"":"italic"]])},u(o.text),3)],10,fl))],64))),128))],2)]),a.sections.length===0?(s(),n("div",ml,[e("p",{class:i(["text-sm",t(l)?"text-white/40":"text-gray-400"])}," No sections to display ",2)])):f("",!0)])],2))}}),st=De(wl,[["__scopeId","data-v-02741b8c"]]),yl={class:"h-full flex flex-col"},kl={class:"flex items-center justify-between gap-2"},$l={class:"flex items-center gap-2 shrink-0"},_l=["placeholder"],Cl={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},jl={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},Sl=["aria-label","onClick"],Ml={class:"cover-card flex-1 min-h-0 relative"},Tl={class:"aspect-[4/3] flex flex-col w-full overflow-hidden rounded-[10px]"},Dl={class:"flex-1 min-h-0 relative"},Il=["src","alt","onError"],Bl={key:2,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-black/20 to-transparent pointer-events-none"},Ll={key:0,class:"flex items-center justify-center py-12"},nt=G({__name:"NewsGrid",props:{articles:{},title:{default:"News & Articles"},query:{default:""},variant:{default:"news"}},setup(a){const c=a,{isDark:l}=Z(),{openArticleDetail:w,openWebsiteDetail:g}=$e(),v=S(""),x=S(new Set);function m(h){return!h||typeof h!="string"?!1:/^https?:\/\//i.test(h.trim())}function _(h){x.value=new Set([...x.value,h])}function $(h){try{return new URL(h).hostname.replace(/^www\./,"")}catch{return h}}function b(h){return c.variant==="websites"?Ht(h.title,$(h.url)):Wt(h.title,$(h.url))}function d(h){c.variant==="websites"?g(h):w(h)}function o(h,M){if(!M.trim())return 0;const L=M.toLowerCase().split(/\s+/).filter(y=>y.length>1);if(L.length===0)return 0;const D=h.title.toLowerCase(),C=(h.content??"").toLowerCase(),k=h.url.toLowerCase();let p=0;for(const y of L)D.includes(y)&&(p+=3),C.includes(y)&&(p+=2),k.includes(y)&&(p+=1);return p}const r=B(()=>{let h=c.articles;if(v.value.trim()){const M=v.value.toLowerCase();h=h.filter(j=>j.title.toLowerCase().includes(M)||(j.content??"").toLowerCase().includes(M)||j.url.toLowerCase().includes(M))}return c.query.trim()?[...h].sort((M,j)=>o(j,c.query)-o(M,c.query)):h});return(h,M)=>(s(),n("div",yl,[e("div",{class:"p-4 space-y-3",style:q(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",kl,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",$l,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(r.value.length)+" "+u(a.variant==="websites"?"websites":"articles"),3),ie(h.$slots,"header-actions")])]),W(e("input",{"onUpdate:modelValue":M[0]||(M[0]=j=>v.value=j),type:"text",placeholder:a.variant==="websites"?"Search websites...":"Search articles...",class:i(["w-full px-3 py-2 rounded-lg text-base outline-none transition-colors",t(l)?"bg-white/5 text-white/80 placeholder:text-white/25 focus:bg-white/10":"bg-black/3 text-gray-800 placeholder:text-gray-400 focus:bg-black/5"])},null,10,_l),[[Q,v.value]])],4),e("div",Cl,[e("div",jl,[(s(!0),n(I,null,P(r.value,(j,L)=>(s(),n("button",{key:L,class:"group flex flex-col items-stretch text-left w-full path-glass-bubble rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105","aria-label":j.title,onClick:D=>d(j)},[e("div",Ml,[e("div",Tl,[e("div",Dl,[m(j.imgSrc)&&!x.value.has(j.url)?(s(),n("img",{key:0,src:j.imgSrc,alt:j.title,class:"absolute inset-0 w-full h-full object-cover transition-transform duration-300 group-hover:scale-110",loading:"lazy",onError:D=>_(j.url)},null,40,Il)):(s(),n("div",{key:1,class:"absolute inset-0 bg-cover bg-center",style:q({backgroundImage:`url(${b(j)})`})},null,4)),m(j.imgSrc)&&!x.value.has(j.url)?(s(),n("div",Bl)):f("",!0)]),e("div",{class:i(["shrink-0 p-2 backdrop-blur-md rounded-b-[10px]",[t(l)?"bg-black shadow-[inset_0_1px_0_rgba(255,255,255,0.12)]":"bg-white shadow-[inset_0_1px_0_rgba(0,0,0,0.06)]"]])},[e("p",{class:i(["text-xs font-semibold leading-tight line-clamp-2",t(l)?"text-white/95":"text-gray-900"])},u(j.title),3),j.content?(s(),n("p",{key:0,class:i(["text-xs line-clamp-1 mt-0.5",t(l)?"text-white/70":"text-gray-600"])},u(j.content),3)):f("",!0),e("p",{class:i(["text-xs truncate mt-0.5",t(l)?"text-white/50":"text-gray-500"])},u($(j.url)),3)],2)])])],8,Sl))),128))]),r.value.length===0?(s(),n("div",Ll,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])},u(a.variant==="websites"?"No websites match your search":"No articles match your search"),3)])):f("",!0)])]))}}),Pl={class:"h-full flex flex-col"},Nl={class:"flex items-center justify-between gap-2"},Al={class:"flex items-center gap-2 shrink-0"},zl={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},El={class:"grid grid-cols-1 sm:grid-cols-2 gap-3"},Fl=["aria-label","onClick"],Rl={class:"aspect-[3/1] relative w-full overflow-hidden"},Vl=["src","alt"],Ul={class:"p-3"},ql={class:"flex items-center gap-3 mt-2 flex-wrap"},Gl={key:0,class:"flex items-center justify-center py-12"},Ol=G({__name:"RecipeGrid",props:{recipes:{},title:{default:"Recipes"}},emits:["selectRecipe"],setup(a){const c=a,{isDark:l}=Z(),w=S(""),g=B(()=>{if(!w.value.trim())return c.recipes;const v=w.value.toLowerCase();return c.recipes.filter(x=>x.title.toLowerCase().includes(v)||x.ingredients.some(m=>m.toLowerCase().includes(v)))});return(v,x)=>(s(),n("div",Pl,[e("div",{class:"p-4 space-y-3",style:q(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",Nl,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",Al,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(g.value.length)+" recipes ",3),ie(v.$slots,"header-actions")])]),a.recipes.length>3?W((s(),n("input",{key:0,"onUpdate:modelValue":x[0]||(x[0]=m=>w.value=m),type:"text",placeholder:"Search recipes...",class:i(["w-full px-3 py-2 rounded-lg text-base outline-none transition-colors",t(l)?"bg-white/5 text-white/80 placeholder:text-white/25 focus:bg-white/10":"bg-black/3 text-gray-800 placeholder:text-gray-400 focus:bg-black/5"])},null,2)),[[Q,w.value]]):f("",!0)],4),e("div",zl,[e("div",El,[(s(!0),n(I,null,P(g.value,(m,_)=>(s(),n("button",{key:_,class:i(["group flex flex-col items-stretch text-left w-full rounded-2xl overflow-hidden transition-all duration-200 hover:brightness-105",t(l)?"bg-white/[0.04] border border-white/8 hover:bg-white/[0.07]":"bg-black/[0.02] border border-black/5 hover:bg-black/[0.05]"]),"aria-label":m.title,onClick:$=>v.$emit("selectRecipe",m)},[e("div",Rl,[e("img",{src:t(Kt)(m.title,m.time),alt:m.title,class:"w-full h-full object-cover"},null,8,Vl)]),e("div",Ul,[e("p",{class:i(["text-sm font-semibold leading-tight line-clamp-2",t(l)?"text-white/90":"text-gray-900"])},u(m.title),3),e("div",ql,[m.time?(s(),n("span",{key:0,class:i(["flex items-center gap-1 text-xs",t(l)?"text-white/40":"text-gray-500"])},[x[1]||(x[1]=e("svg",{class:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),ne(" "+u(m.time),1)],2)):f("",!0),m.servings?(s(),n("span",{key:1,class:i(["flex items-center gap-1 text-xs",t(l)?"text-white/40":"text-gray-500"])},[x[2]||(x[2]=e("svg",{class:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0z"})],-1)),ne(" "+u(m.servings),1)],2)):f("",!0),m.calories?(s(),n("span",{key:2,class:i(["text-xs",t(l)?"text-white/40":"text-gray-500"])},u(m.calories)+" cal ",3)):f("",!0)]),m.ingredients.length>0?(s(),n("p",{key:0,class:i(["text-xs mt-2 line-clamp-1",t(l)?"text-white/25":"text-gray-400"])},u(m.ingredients.slice(0,4).join(" · ")),3)):f("",!0)])],10,Fl))),128))]),g.value.length===0?(s(),n("div",Gl,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No recipes match your search ",2)])):f("",!0)])]))}}),Hl={class:"h-full flex flex-col"},Wl={class:"flex items-center justify-between gap-2"},Kl={class:"flex flex-wrap gap-1.5"},Yl=["onClick"],Jl={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},Ql={class:"space-y-2"},Zl=["aria-label","onClick"],Xl={class:"text-white/90"},eo={class:"flex-1 min-w-0"},to={class:"flex items-center gap-2"},so={class:"flex gap-1 mt-1.5"},no={key:0,class:"flex items-center justify-center py-12"},lo=G({__name:"AppsGrid",props:{apps:{},title:{default:"Recommended Apps"}},emits:["selectApp"],setup(a){const c=a,{isDark:l}=Z(),w=S(""),g=S(null),v=[{value:"nostr-client",label:"Nostr"},{value:"lightning-wallet",label:"Lightning"},{value:"bitcoin-wallet",label:"Bitcoin"},{value:"privacy",label:"Privacy"},{value:"node",label:"Nodes"},{value:"dev-tool",label:"Dev"}];function x(b){return v.find(d=>d.value===b)?.label??b}function m(b){return{ios:"iOS",android:"Android",web:"Web",desktop:"Desktop",cli:"CLI",nodeos:"Node"}[b]??b}function _(b){let d=0;for(let r=0;r{let b=c.apps;if(w.value){const d=w.value.toLowerCase();b=b.filter(o=>o.name.toLowerCase().includes(d)||o.description.toLowerCase().includes(d)||o.keywords.some(r=>r.toLowerCase().includes(d)))}return g.value&&(b=b.filter(d=>d.category===g.value)),b});return(b,d)=>(s(),n("div",Hl,[e("div",{class:"p-4 space-y-3",style:q(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",Wl,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u($.value.length)+" apps ",3)]),W(e("input",{"onUpdate:modelValue":d[0]||(d[0]=o=>w.value=o),type:"text",placeholder:"Search apps...",class:i(["w-full px-3 py-2 rounded-lg text-base outline-none transition-colors",t(l)?"bg-white/5 text-white/80 placeholder:text-white/25 focus:bg-white/10":"bg-black/3 text-gray-800 placeholder:text-gray-400 focus:bg-black/5"])},null,2),[[Q,w.value]]),e("div",Kl,[(s(),n(I,null,P(v,o=>e("button",{key:o.value,class:i(["text-xs px-2 py-1 rounded-md transition-all duration-150",g.value===o.value?"nav-tab-active":t(l)?"text-white/40 hover:text-white/70 hover:bg-white/5":"text-gray-500 hover:text-gray-800 hover:bg-black/5"]),onClick:r=>g.value=g.value===o.value?null:o.value},u(o.label),11,Yl)),64))])],4),e("div",Jl,[e("div",Ql,[(s(!0),n(I,null,P($.value,o=>(s(),n("button",{key:o.id,class:i(["w-full text-left p-3 rounded-xl transition-all duration-200 flex items-start gap-3",t(l)?"bg-white/5 hover:bg-white/10":"bg-black/3 hover:bg-black/5"]),"aria-label":o.name,onClick:r=>b.$emit("selectApp",o)},[e("div",{class:"w-10 h-10 rounded-xl flex items-center justify-center text-lg font-bold shrink-0",style:q({background:_(o.id)})},[e("span",Xl,u(o.name.charAt(0)),1)],4),e("div",eo,[e("div",to,[e("p",{class:i(["text-xs font-semibold truncate",t(l)?"text-white/90":"text-gray-900"])},u(o.name),3),e("span",{class:i(["text-xs px-1.5 py-0.5 rounded font-medium shrink-0",t(l)?"bg-white/10 text-white/50":"bg-black/5 text-gray-500"])},u(x(o.category)),3)]),e("p",{class:i(["text-xs mt-0.5 line-clamp-2",t(l)?"text-white/50":"text-gray-500"])},u(o.description),3),e("div",so,[(s(!0),n(I,null,P(o.platforms,r=>(s(),n("span",{key:r,class:i(["text-xs px-1 py-0.5 rounded",t(l)?"bg-white/5 text-white/30":"bg-black/3 text-gray-400"])},u(m(r)),3))),128))])])],10,Zl))),128))]),$.value.length===0?(s(),n("div",no,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No apps match your search ",2)])):f("",!0)])]))}}),oo={class:"group/node"},ao={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"},io={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"},ro={class:"truncate flex-1"},co={key:0,class:"w-2.5 h-2.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},uo={key:0,class:"w-2.5 h-2.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ho={key:0},xo=G({__name:"FileTreeNode",props:{entry:{},activeFile:{},depth:{}},emits:["select","toggle-context"],setup(a,{emit:c}){const l=a,{isFileSelected:w}=pe(),g=c,{isDark:v}=Z(),x=S(l.depth<1),m=B(()=>!l.entry.isDirectory&&l.activeFile===l.entry.path),_=B(()=>!l.entry.isDirectory&&w(l.entry.path)),$=B(()=>l.entry.isDirectory&&w(l.entry.path));function b(){l.entry.isDirectory?x.value=!x.value:g("select",l.entry.path)}function d(){g("toggle-context",l.entry.path)}function o(){g("toggle-context",l.entry.path)}return(r,h)=>{const M=Yt("FileTreeNode",!0);return s(),n("div",oo,[e("div",{class:i(["w-full flex items-center gap-1.5 py-1 px-2 rounded-lg text-xs transition-colors cursor-pointer",[m.value?t(v)?"bg-white/10 text-white/90":"bg-black/8 text-gray-900":t(v)?"text-white/60 hover:bg-white/[0.04] hover:text-white/80":"text-gray-600 hover:bg-black/[0.03] hover:text-gray-800"]]),style:q({paddingLeft:`${a.depth*12+8}px`}),onClick:b},[a.entry.isDirectory?(s(),n("svg",{key:0,class:i(["w-3 h-3 shrink-0 transition-transform duration-150",x.value?"rotate-90":""]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...h[2]||(h[2]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"},null,-1)])],2)):f("",!0),(s(),n("svg",{class:i(["w-3.5 h-3.5 shrink-0",a.entry.isDirectory?"text-accent/70":t(v)?"text-white/30":"text-gray-400"]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[a.entry.isDirectory?(s(),n("path",ao)):(s(),n("path",io))],2)),e("span",ro,u(a.entry.name),1),a.entry.isDirectory?f("",!0):(s(),n("button",{key:1,class:i(["shrink-0 w-4 h-4 rounded-full border flex items-center justify-center transition-all ml-auto",[_.value?"bg-accent border-accent text-white":t(v)?"border-white/20 opacity-0 group-hover/node:opacity-100 hover:border-white/40":"border-black/15 opacity-0 group-hover/node:opacity-100 hover:border-black/30"]]),"aria-label":"Toggle file for chat context",onClick:xe(d,["stop"])},[_.value?(s(),n("svg",co,[...h[3]||(h[3]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"3",d:"M5 13l4 4L19 7"},null,-1)])])):f("",!0)],2)),a.entry.isDirectory?(s(),n("button",{key:2,class:i(["shrink-0 w-4 h-4 rounded-full border flex items-center justify-center transition-all ml-auto",[$.value?"bg-accent border-accent text-white":t(v)?"border-white/20 opacity-0 group-hover/node:opacity-100 hover:border-white/40":"border-black/15 opacity-0 group-hover/node:opacity-100 hover:border-black/30"]]),"aria-label":"Add folder to chat context",onClick:xe(o,["stop"])},[$.value?(s(),n("svg",uo,[...h[4]||(h[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"3",d:"M5 13l4 4L19 7"},null,-1)])])):f("",!0)],2)):f("",!0)],6),a.entry.isDirectory&&x.value&&a.entry.children?(s(),n("div",ho,[(s(!0),n(I,null,P(a.entry.children,j=>(s(),U(M,{key:j.path,entry:j,"active-file":a.activeFile,depth:a.depth+1,onSelect:h[0]||(h[0]=L=>r.$emit("select",L)),onToggleContext:h[1]||(h[1]=L=>r.$emit("toggle-context",L))},null,8,["entry","active-file","depth"]))),128))])):f("",!0)])}}}),po={class:"flex flex-col h-full"},go={class:"flex items-center gap-1 min-w-0 flex-1"},bo={class:"flex items-center gap-2 shrink-0"},vo={key:0,class:"flex-1 overflow-y-auto custom-scrollbar p-3"},fo={class:"mb-3 flex gap-2"},mo={class:"flex justify-end gap-2"},wo=["disabled"],yo={class:"grid grid-cols-2 gap-2"},ko=["onClick"],$o={key:1,class:"flex-1 overflow-y-auto custom-scrollbar p-2"},_o={key:0,class:"flex items-center justify-center py-12"},Co=G({__name:"ProjectGrid",props:{isWideDesktop:{type:Boolean},isMobile:{type:Boolean}},setup(a){const{isDark:c}=Z(),{projectList:l,activeProject:w,fileTree:g,activeFile:v,codeMode:x,selectedFiles:m,selectProject:_,openFile:$,createProject:b,clearActiveFile:d,toggleFileSelection:o,isFileSelected:r,loadProjects:h}=pe();oe(()=>{l.value.length===0&&h()});const M=S(""),j=S(!1),L=S(""),D=S(null),C=B(()=>w.value?"filetree":"projects"),k=B(()=>C.value==="projects"?"Projects":w.value?.name??"Projects"),p=B(()=>{const F=M.value.toLowerCase();return F?l.value.filter(O=>O.name.toLowerCase().includes(F)||(O.language??"").toLowerCase().includes(F)):l.value});function y(F){_(F)}function A(){const{activeProject:F,fileTree:O}=pe();F.value=null,O.value=[],d()}function V(F){$(F)}function E(F){o(F)}function J(){j.value=!0,L.value="",ye(()=>D.value?.focus())}function H(){j.value=!1,L.value=""}function K(){const F=L.value.trim();F&&(b(F),j.value=!1,L.value="")}return(F,O)=>(s(),n("div",po,[e("div",{class:"shrink-0 px-4 py-3 flex items-center justify-between gap-2",style:q(t(c)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",go,[C.value!=="projects"?(s(),n("button",{key:0,class:i(["text-xs shrink-0 transition-colors",t(c)?"text-white/40 hover:text-white/70 hover:underline":"text-gray-400 hover:text-gray-700 hover:underline"]),onClick:A}," Projects ",2)):f("",!0),C.value!=="projects"?(s(),n("span",{key:1,class:i(["text-xs shrink-0",t(c)?"text-white/20":"text-gray-300"])},"/",2)):f("",!0),e("span",{class:i(["text-sm font-semibold truncate",t(c)?"text-white/90":"text-gray-900"])},u(k.value),3)]),e("div",bo,[C.value==="projects"?(s(),n("p",{key:0,class:i(["text-xs",t(c)?"text-white/30":"text-gray-400"])},u(t(l).length)+" repos ",3)):C.value==="filetree"?(s(),n("p",{key:1,class:i(["text-xs",t(c)?"text-white/30":"text-gray-400"])},u(t(w)?.language),3)):f("",!0),ie(F.$slots,"header-actions")])],4),C.value==="projects"?(s(),n("div",vo,[e("div",fo,[W(e("input",{"onUpdate:modelValue":O[0]||(O[0]=X=>M.value=X),type:"text",placeholder:"Search projects...",class:i(["flex-1 min-w-0 px-3 py-2 rounded-lg text-base bg-transparent outline-none",t(c)?"text-white/80 placeholder:text-white/20 border border-white/10 focus:border-white/25":"text-gray-800 placeholder:text-gray-400 border border-black/10 focus:border-black/20"])},null,2),[[Q,M.value]]),e("button",{class:i(["shrink-0 px-3 py-2 rounded-lg text-xs font-medium transition-colors flex items-center gap-1.5",t(c)?"bg-accent/20 text-accent hover:bg-accent/30":"bg-accent/10 text-accent hover:bg-accent/20"]),onClick:J},[...O[2]||(O[2]=[e("svg",{class:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1),ne(" New ",-1)])],2)]),j.value?(s(),n("div",{key:0,class:i(["mb-3 p-3 rounded-xl",t(c)?"bg-white/[0.05] border border-white/10":"bg-black/[0.03] border border-black/8"])},[e("p",{class:i(["text-xs font-medium mb-2",t(c)?"text-white/70":"text-gray-700"])}," New Project ",2),W(e("input",{ref_key:"newProjectInputRef",ref:D,"onUpdate:modelValue":O[1]||(O[1]=X=>L.value=X),type:"text",placeholder:"Project name...",class:i(["w-full px-3 py-2 rounded-lg text-base bg-transparent outline-none mb-2",t(c)?"text-white/80 placeholder:text-white/20 border border-white/10 focus:border-white/25":"text-gray-800 placeholder:text-gray-400 border border-black/10 focus:border-black/20"]),onKeydown:[ae(K,["enter"]),ae(H,["escape"])]},null,34),[[Q,L.value]]),e("div",mo,[e("button",{class:i(["text-xs px-2.5 py-1 rounded-lg transition-colors",t(c)?"text-white/40 hover:text-white/70":"text-gray-500 hover:text-gray-800"]),onClick:H}," Cancel ",2),e("button",{class:i(["text-xs px-2.5 py-1 rounded-lg font-medium transition-colors",t(c)?"bg-accent/20 text-accent hover:bg-accent/30":"bg-accent/10 text-accent hover:bg-accent/20"]),disabled:!L.value.trim(),onClick:K}," Create ",10,wo)])],2)):f("",!0),e("div",yo,[(s(!0),n(I,null,P(p.value,X=>(s(),n("button",{key:X.path,class:i(["text-left p-3 rounded-xl transition-all duration-150",t(c)?"bg-white/[0.03] hover:bg-white/[0.07] border border-white/5":"bg-black/[0.02] hover:bg-black/[0.05] border border-black/5"]),onClick:ge=>y(X)},[e("div",{class:i(["w-8 h-8 rounded-lg flex items-center justify-center mb-2",t(c)?"bg-white/5":"bg-black/5"])},[(s(),n("svg",{class:i(["w-4 h-4",X.isGit?"text-accent":t(c)?"text-white/40":"text-gray-400"]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...O[3]||(O[3]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"},null,-1)])],2))],2),e("p",{class:i(["text-xs font-medium truncate",t(c)?"text-white/80":"text-gray-800"])},u(X.name),3),e("p",{class:i(["text-xs mt-0.5 truncate",t(c)?"text-white/25":"text-gray-400"])},u(X.language),3)],10,ko))),128))])])):C.value==="filetree"?(s(),n("div",$o,[(s(!0),n(I,null,P(t(g),X=>(s(),U(xo,{key:X.path,entry:X,"active-file":t(v),depth:0,onSelect:V,onToggleContext:E},null,8,["entry","active-file"]))),128)),t(g).length===0?(s(),n("div",_o,[e("p",{class:i(["text-xs",t(c)?"text-white/30":"text-gray-400"])}," Loading file tree... ",2)])):f("",!0)])):f("",!0)]))}}),jo={class:"flex flex-col h-full"},So={class:"shrink-0 px-4 py-2 flex gap-1.5 overflow-x-auto scrollbar-hide"},Mo=["onClick"],To={class:"flex-1 overflow-y-auto px-4 py-3"},Do={class:"grid grid-cols-2 gap-2"},Io=["onClick"],Bo=["onClick"],Lo={key:0,class:"w-3 h-3 text-white",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Po={key:2,class:"h-8 flex items-end gap-0.5 mb-2"},No={key:3,class:"h-8 flex items-center mb-2"},Ao={key:0,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4"},zo={key:1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"},Eo={key:2,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z"},Fo={key:3,"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M7 21a4 4 0 01-4-4V5a2 2 0 012-2h4a2 2 0 012 2v12a4 4 0 01-4 4zm0 0h12a2 2 0 002-2v-4a2 2 0 00-2-2h-2.343M11 7.343l1.657-1.657a2 2 0 012.828 0l2.829 2.829a2 2 0 010 2.828l-8.486 8.485M7 17h.01"},Ro=G({__name:"DesignSystemGrid",setup(a){const{isDark:c}=Z(),{openDesignSystemItem:l}=$e(),{codeMode:w,toggleDesignToken:g,isDesignTokenSelected:v}=pe(),x=S("all"),m=[{id:"all",label:"All"},{id:"colors",label:"Colors"},{id:"typography",label:"Typography"},{id:"spacing",label:"Spacing"},{id:"atoms",label:"Atoms"},{id:"molecules",label:"Molecules"},{id:"organisms",label:"Organisms"}],_=[{id:"color-bg",name:"Background",category:"colors",preview:"inline",description:"Primary app background",code:`background-color: #0a0a0a; /* Tailwind: bg-[#0a0a0a] */`,usedIn:"ChatPage, all panels, base layout"},{id:"color-accent",name:"Accent / Bitcoin",category:"colors",preview:"inline",description:"Primary action color, Bitcoin orange",code:`color: #F7931A; /* Tailwind: text-accent */`,usedIn:"Gradient buttons, active tabs, zap counts, CTA elements"},{id:"color-primary",name:"Primary",category:"colors",preview:"inline",description:"Primary neutral tone",code:`color: #606060; /* Tailwind: text-primary */`,usedIn:"Secondary text, borders, muted elements"},{id:"color-surface",name:"Glass Surface",category:"colors",preview:"inline",description:"Glass morphism panel background",code:`background: rgba(0, 0, 0, 0.35); @@ -238,7 +238,7 @@ rounded-full /* pill buttons */`,usedIn:"Badges (md), buttons (lg), cards (xl), opacity: 1; transform: scale(1); } -}`,usedIn:"Modal entries, tooltip appearances, popovers"}],$=B(()=>x.value==="all"?_:_.filter(o=>o.category===x.value));function b(o){l(o)}function d(o){const r=/(?:background-color|color|background):\s*([^;]+)/i.exec(o);if(!r)return"#333";const h=r[1].trim();return h.startsWith("#")||h.startsWith("rgb")||h.startsWith("hsl")?h:"#333"}return(o,r)=>(s(),n("div",jo,[e("div",{class:"shrink-0 px-4 py-3 flex items-center justify-between gap-2",style:q(t(c)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("span",{class:i(["text-sm font-semibold",t(c)?"text-white/90":"text-gray-900"])}," Design System ",2),e("p",{class:i(["text-xs",t(c)?"text-white/30":"text-gray-400"])},u($.value.length)+" items ",3)],4),e("div",So,[(s(),n(I,null,P(m,h=>e("button",{key:h.id,class:i(["text-xs px-2.5 py-1 rounded-md font-medium whitespace-nowrap transition-colors",x.value===h.id?"bg-accent/20 text-accent":t(c)?"bg-white/5 text-white/50 hover:bg-white/10":"bg-black/5 text-gray-500 hover:bg-black/10"]),onClick:M=>x.value=h.id},u(h.label),11,Mo)),64))]),e("div",To,[e("div",Do,[(s(!0),n(I,null,P($.value,h=>(s(),n("button",{key:h.id,class:i(["text-left p-3 rounded-xl transition-all duration-150 group relative",[t(w)&&t(v)(h.id)?"ring-2 ring-accent/50 bg-accent/10 cursor-pointer":t(c)?"bg-white/[0.03] hover:bg-white/[0.07] cursor-pointer":"bg-black/[0.02] hover:bg-black/[0.05] cursor-pointer"]]),onClick:M=>b(h)},[t(w)?(s(),n("div",{key:0,class:i(["absolute top-2 right-2 min-w-[44px] min-h-[44px] rounded-full flex items-center justify-center z-10 cursor-pointer transition-colors",t(v)(h.id)?"bg-accent":t(c)?"bg-white/10 hover:bg-white/20":"bg-black/10 hover:bg-black/20"]),onClick:xe(M=>t(g)(h.id),["stop"])},[t(v)(h.id)?(s(),n("svg",Lo,[...r[0]||(r[0]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"3",d:"M5 13l4 4L19 7"},null,-1)])])):f("",!0)],10,Bo)):f("",!0),h.category==="colors"&&h.preview==="inline"?(s(),n("div",{key:1,class:i(["h-8 rounded-md mb-2 border",t(c)?"border-white/10":"border-black/10"]),style:q({background:d(h.code)})},null,6)):h.category==="spacing"&&h.preview==="inline"?(s(),n("div",Po,[...r[1]||(r[1]=[e("div",{class:"bg-accent/40 rounded-sm",style:{width:"4px",height:"30%"}},null,-1),e("div",{class:"bg-accent/40 rounded-sm",style:{width:"4px",height:"50%"}},null,-1),e("div",{class:"bg-accent/40 rounded-sm",style:{width:"4px",height:"70%"}},null,-1),e("div",{class:"bg-accent/40 rounded-sm",style:{width:"4px",height:"100%"}},null,-1)])])):(s(),n("div",No,[(s(),n("svg",{class:i(["w-5 h-5 transition-colors",t(c)?"text-white/20 group-hover:text-white/40":"text-black/15 group-hover:text-black/30"]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[h.category==="atoms"?(s(),n("path",Ao)):h.category==="molecules"?(s(),n("path",zo)):h.category==="organisms"?(s(),n("path",Eo)):(s(),n("path",Fo))],2))])),e("h3",{class:i(["text-xs font-semibold leading-tight mb-0.5",t(c)?"text-white/80":"text-gray-800"])},u(h.name),3),e("p",{class:i(["text-xs leading-snug line-clamp-2",t(c)?"text-white/40":"text-gray-400"])},u(h.description),3)],10,Io))),128))])])]))}}),we=S(null),lt=S(!1),Re=S(!1),he=S(null);function me(){const a=B(()=>{if(!we.value)return null;try{return He(we.value)}catch{return null}}),c=B(()=>!!we.value),l=B(()=>a.value?a.value.slice(0,12)+"..."+a.value.slice(-8):null);function w(){lt.value=typeof window<"u"&&!!window.nostr}async function g(){if(he.value=null,!window.nostr){he.value="No Nostr extension detected. Install nos2x, Alby, or another NIP-07 extension.";return}Re.value=!0;try{const m=await window.nostr.getPublicKey();we.value=m}catch(m){he.value=m instanceof Error?m.message:"Failed to get public key"}finally{Re.value=!1}}async function v(m){if(he.value=null,!window.nostr)return he.value="No Nostr extension detected",null;try{return await window.nostr.signEvent(m)}catch(_){return he.value=_ instanceof Error?_.message:"Failed to sign event",null}}function x(){we.value=null,he.value=null}return oe(()=>{w(),setTimeout(w,500)}),{pubkey:we,npub:a,isAvailable:lt,isLoggedIn:c,isLoading:Re,error:he,truncatedNpub:l,login:g,logout:x,signEvent:v,checkAvailability:w}}const Vo="aiui-nostr-dms",Uo=1,ke="messages",je=S([]),Se=S(null),Ve=S(!1);let Me=null;function vt(){return Me||(Me=new Promise((a,c)=>{const l=indexedDB.open(Vo,Uo);l.onupgradeneeded=()=>{const w=l.result;if(!w.objectStoreNames.contains(ke)){const g=w.createObjectStore(ke,{keyPath:"id"});g.createIndex("contact","contactPubkey",{unique:!1}),g.createIndex("created_at","created_at",{unique:!1})}},l.onsuccess=()=>a(l.result),l.onerror=()=>{Me=null,c(l.error)}}),Me)}function qo(a){return a.length<=12?a:a.slice(0,8)+"..."+a.slice(-4)}async function ot(a,c){const l=await vt(),w=a.fromPubkey===c?a.toPubkey:a.fromPubkey,g={...a,contactPubkey:w};return new Promise((v,x)=>{const m=l.transaction(ke,"readwrite");m.objectStore(ke).put(g),m.oncomplete=()=>v(),m.onerror=()=>x(m.error)})}async function Ue(){const a=await vt();return new Promise((c,l)=>{const g=a.transaction(ke,"readonly").objectStore(ke).getAll();g.onsuccess=()=>c(g.result),g.onerror=()=>l(g.error)})}function qe(a){const c=new Map;for(const w of a){const g=c.get(w.contactPubkey)??[];g.push(w),c.set(w.contactPubkey,g)}const l=[];for(const[w,g]of c)g.sort((v,x)=>v.created_at-x.created_at),l.push({contactPubkey:w,contactName:qo(w),messages:g,lastMessage:g[g.length-1]??null,unread:0});return l.sort((w,g)=>(g.lastMessage?.created_at??0)-(w.lastMessage?.created_at??0)),l}function Go(){const{pubkey:a,isLoggedIn:c}=me(),l=B(()=>Se.value?je.value.find(_=>_.contactPubkey===Se.value)??null:null);async function w(){if(c.value){Ve.value=!0;try{const _=await Ue();je.value=qe(_)}catch{}finally{Ve.value=!1}}}async function g(_,$){if(!window.nostr?.nip04||!a.value)return!1;try{const b=await window.nostr.nip04.encrypt(_,$),d={kind:4,created_at:Math.floor(Date.now()/1e3),tags:[["p",_]],content:b},o=await window.nostr.signEvent(d);if(!o)return!1;const r={id:o.id,fromPubkey:a.value,toPubkey:_,content:$,created_at:o.created_at,decrypted:!0};await ot(r,a.value);const{publishEvent:h}=await pt(()=>import("./useNostr-XONW-p_l.js"),__vite__mapDeps([0,1,2])).then(j=>j.useNostr());await h(o);const M=await Ue();return je.value=qe(M),!0}catch{return!1}}async function v(_,$,b,d){if(!(!window.nostr?.nip04||!a.value))try{const o=await window.nostr.nip04.decrypt($,b),r={id:_,fromPubkey:$,toPubkey:a.value,content:o,created_at:d,decrypted:!0};await ot(r,a.value);const h=await Ue();je.value=qe(h)}catch{}}function x(_){Se.value=_}function m(){Se.value=null}return{threads:je,activeThread:l,activeContact:Se,isLoading:Ve,loadDMs:w,sendDM:g,receiveDM:v,selectContact:x,clearActiveContact:m}}const Oo={class:"h-full flex flex-col"},Ho={class:"flex items-center gap-2 px-4 py-3 border-b border-white/[0.08]"},Wo={class:"flex-1 min-w-0"},Ko={class:"text-xs font-semibold text-white/80 truncate"},Yo={class:"text-xs text-white/30 font-mono truncate"},Jo={class:"text-xs leading-relaxed break-words"},Qo={class:"text-xs mt-1 text-white/25 tabular-nums"},Zo={class:"px-4 py-3 border-t border-white/[0.08]"},Xo={class:"flex gap-2"},ea=["disabled"],ta={class:"p-4 border-b border-white/[0.08]"},sa={class:"flex items-center justify-between gap-2 mb-3"},na={key:0,class:"space-y-2 mb-3"},la=["disabled"],oa={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-1"},aa={key:0,class:"flex items-center justify-center py-12"},ia={key:1,class:"flex items-center justify-center py-12"},ra={key:2,class:"flex items-center justify-center py-12"},ca=["onClick"],da={class:"flex items-start gap-2.5"},ua={class:"w-8 h-8 rounded-full shrink-0 flex items-center justify-center text-xs font-bold bg-accent/20 text-accent"},ha={class:"flex-1 min-w-0"},xa={class:"flex items-center gap-1.5"},pa={class:"text-xs font-semibold truncate text-white/80"},ga={key:0,class:"text-xs ml-auto shrink-0 text-white/20"},ba={key:0,class:"text-xs mt-1 text-white/40 truncate"},va=G({__name:"NostrDMs",setup(a){const{threads:c,activeThread:l,activeContact:w,isLoading:g,loadDMs:v,sendDM:x,selectContact:m,clearActiveContact:_}=Go(),{pubkey:$,isLoggedIn:b}=me(),d=S(""),o=S(!1),r=S(null),h=S(!1),M=S("");function j(k){const p=new Date(k*1e3),A=Math.floor((new Date().getTime()-p.getTime())/864e5);return A===0?p.toLocaleTimeString("en",{hour:"2-digit",minute:"2-digit"}):A<7?p.toLocaleDateString("en",{weekday:"short"}):p.toLocaleDateString("en",{month:"short",day:"numeric"})}async function L(){if(!d.value.trim()||o.value||!w.value)return;o.value=!0,await x(w.value,d.value.trim())&&(d.value="",await ye(),D()),o.value=!1}function D(){r.value&&(r.value.scrollTop=r.value.scrollHeight)}function C(){let k=M.value.trim();if(k.startsWith("npub"))try{k=gt(k)}catch{return}k.length===64&&(m(k),h.value=!1,M.value="")}return ce(w,async()=>{await ye(),D()}),oe(()=>{v()}),(k,p)=>(s(),n("div",Oo,[t(l)?(s(),n(I,{key:0},[e("div",Ho,[e("button",{class:"min-w-[44px] min-h-[44px] flex items-center justify-center rounded-lg text-white/60 hover:text-white/80 hover:bg-white/10 transition-colors",onClick:p[0]||(p[0]=(...y)=>t(_)&&t(_)(...y))},[...p[4]||(p[4]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)])]),e("div",Wo,[e("p",Ko,u(t(l).contactName),1),e("p",Yo,u(t(l).contactPubkey),1)])]),e("div",{ref_key:"messagesRef",ref:r,class:"flex-1 overflow-y-auto custom-scrollbar px-4 py-3 space-y-2"},[(s(!0),n(I,null,P(t(l).messages,y=>(s(),n("div",{key:y.id,class:i(["flex",y.fromPubkey===t($)?"justify-end":"justify-start"])},[e("div",{class:i(["max-w-[80%] rounded-xl px-3 py-2",y.fromPubkey===t($)?"bg-accent/15 text-white/80":"bg-white/5 text-white/70"])},[e("p",Jo,u(y.content),1),e("p",Qo,u(j(y.created_at)),1)],2)],2))),128))],512),e("div",Zo,[e("div",Xo,[W(e("input",{"onUpdate:modelValue":p[1]||(p[1]=y=>d.value=y),type:"text",placeholder:"Type a message...",class:"flex-1 px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors",onKeydown:ae(L,["enter"])},null,544),[[Q,d.value]]),e("button",{class:"px-3 py-2 rounded-lg text-xs bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors disabled:opacity-30",disabled:!d.value.trim()||o.value,onClick:L}," Send ",8,ea)])])],64)):(s(),n(I,{key:1},[e("div",ta,[e("div",sa,[p[5]||(p[5]=e("h3",{class:"text-sm font-bold text-white/90"},"Messages",-1)),e("button",{class:"text-xs px-2.5 py-1 rounded bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors",onClick:p[2]||(p[2]=y=>h.value=!h.value)},u(h.value?"Cancel":"New"),1)]),h.value?(s(),n("div",na,[W(e("input",{"onUpdate:modelValue":p[3]||(p[3]=y=>M.value=y),type:"text",placeholder:"Recipient hex pubkey or npub...",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono"},null,512),[[Q,M.value]]),e("button",{class:"text-xs px-2.5 py-1 rounded bg-white/5 text-white/60 hover:bg-white/10 transition-colors disabled:opacity-30",disabled:!M.value.trim(),onClick:C}," Start conversation ",8,la)])):f("",!0)]),e("div",oa,[t(b)?t(g)?(s(),n("div",ia,[...p[7]||(p[7]=[e("p",{class:"text-xs text-white/30"},"Loading messages...",-1)])])):t(c).length===0?(s(),n("div",ra,[...p[8]||(p[8]=[e("p",{class:"text-xs text-white/30"},"No messages yet",-1)])])):f("",!0):(s(),n("div",aa,[...p[6]||(p[6]=[e("p",{class:"text-xs text-white/30"},"Sign in with Nostr to use DMs",-1)])])),(s(!0),n(I,null,P(t(c),y=>(s(),n("button",{key:y.contactPubkey,class:"w-full text-left p-3 rounded-xl transition-all duration-150 bg-white/[0.03] hover:bg-white/[0.07] border border-white/5",onClick:A=>t(m)(y.contactPubkey)},[e("div",da,[e("div",ua,u(y.contactName.charAt(0).toUpperCase()),1),e("div",ha,[e("div",xa,[e("span",pa,u(y.contactName),1),y.lastMessage?(s(),n("span",ga,u(j(y.lastMessage.created_at)),1)):f("",!0)]),y.lastMessage?(s(),n("p",ba,u(y.lastMessage.content),1)):f("",!0)])])],8,ca))),128))])],64))]))}}),fa={class:"h-full flex flex-col"},ma={class:"p-4 border-b border-white/[0.08]"},wa={class:"flex gap-2"},ya=["disabled"],ka={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-2"},$a={class:"flex items-center gap-2"},_a={class:"text-xs font-mono text-white/70 truncate flex-1"},Ca={class:"flex items-center gap-2 flex-wrap"},ja=["onClick"],Sa=["onClick"],Ma=["disabled","onClick"],Ta=["onClick"],Da={key:0,class:"mt-4 pt-4 border-t border-white/5"},Ia=["disabled"],Ba={key:0,class:"text-xs mt-1 text-white/30"},La=G({__name:"NostrRelayManager",setup(a){const{relayStates:c,addRelay:l,removeRelay:w,toggleRelayRead:g,toggleRelayWrite:v,testRelay:x,importNIP65Relays:m,fetchNote:_}=Ie(),{isLoggedIn:$,pubkey:b}=me(),d=S(""),o=S(null),r=Pe({}),h=S(!1),M=S("");function j(){let C=d.value.trim();C&&(!C.startsWith("wss://")&&!C.startsWith("ws://")&&(C="wss://"+C),l(C),d.value="")}async function L(C){o.value=C;const k=await x(C);r[C]=k,o.value=null}async function D(){if(!b.value)return;h.value=!0,M.value="Fetching relay list...";const C=await _(b.value,5e3);C?(m({id:C.id,pubkey:C.pubkey,kind:10002,content:C.content,created_at:C.created_at,tags:C.tags,sig:""}),M.value="Imported relays from NIP-65"):M.value="No NIP-65 relay list found",h.value=!1}return(C,k)=>(s(),n("div",fa,[e("div",ma,[k[1]||(k[1]=e("h3",{class:"text-sm font-bold text-white/90 mb-3"},"Relay Management",-1)),e("div",wa,[W(e("input",{"onUpdate:modelValue":k[0]||(k[0]=p=>d.value=p),type:"text",placeholder:"wss://relay.example.com",class:"flex-1 px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono",onKeydown:ae(j,["enter"])},null,544),[[Q,d.value]]),e("button",{class:"px-4 min-h-[44px] rounded-lg text-sm bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors disabled:opacity-30",disabled:!d.value.trim(),onClick:j}," Add ",8,ya)])]),e("div",ka,[(s(!0),n(I,null,P(t(c),p=>(s(),n("div",{key:p.url,class:"rounded-xl bg-white/[0.03] border border-white/5 p-3 space-y-2"},[e("div",$a,[e("span",{class:i(["w-2 h-2 rounded-full shrink-0",p.connected?"bg-emerald-500":"bg-red-400/60"])},null,2),e("span",_a,u(p.url),1),p.latencyMs!==null?(s(),n("span",{key:0,class:i(["text-xs tabular-nums shrink-0",p.latencyMs<200?"text-emerald-400/60":p.latencyMs<500?"text-yellow-400/60":"text-red-400/60"])},u(p.latencyMs)+"ms ",3)):f("",!0),e("span",{class:i(["text-xs shrink-0",p.connected?"text-emerald-400/60":"text-red-400/60"])},u(p.connected?"Connected":"Disconnected"),3)]),e("div",Ca,[e("button",{class:i(["text-sm px-3 min-h-[44px] rounded-lg transition-colors",p.read?"bg-accent/15 text-accent/80":"bg-white/5 text-white/30 hover:text-white/50"]),onClick:y=>t(g)(p.url)}," Read ",10,ja),e("button",{class:i(["text-sm px-3 min-h-[44px] rounded-lg transition-colors",p.write?"bg-accent/15 text-accent/80":"bg-white/5 text-white/30 hover:text-white/50"]),onClick:y=>t(v)(p.url)}," Write ",10,Sa),k[2]||(k[2]=e("div",{class:"flex-1"},null,-1)),e("button",{class:"text-sm px-3 min-h-[44px] rounded-lg bg-white/5 text-white/30 hover:text-white/50 transition-colors",disabled:o.value===p.url,onClick:y=>L(p.url)},u(o.value===p.url?"Testing...":"Test"),9,Ma),e("button",{class:"text-sm px-3 min-h-[44px] rounded-lg bg-white/5 text-red-400/50 hover:text-red-400/80 hover:bg-red-400/10 transition-colors",onClick:y=>t(w)(p.url)}," Remove ",8,Ta)]),r[p.url]!==void 0?(s(),n("p",{key:0,class:i(["text-xs",r[p.url]!==null?"text-emerald-400/60":"text-red-400/60"])},u(r[p.url]!==null?`Reachable (${r[p.url]}ms)`:"Unreachable"),3)):f("",!0)]))),128)),t($)?(s(),n("div",Da,[e("button",{class:"w-full text-left px-3 min-h-[44px] rounded-lg text-sm bg-white/5 text-white/40 hover:text-white/60 hover:bg-white/10 transition-colors",disabled:h.value,onClick:D},u(h.value?"Importing...":"Import relays from NIP-65 (kind:10002)"),9,Ia),M.value?(s(),n("p",Ba,u(M.value),1)):f("",!0)])):f("",!0)])]))}}),Pa={class:"h-full flex flex-col"},Na={key:0,class:"flex-1 flex items-center justify-center"},Aa={key:1,class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-4"},za={class:"rounded-xl overflow-hidden border border-white/5"},Ea={class:"px-4 pb-4 -mt-8"},Fa={key:0,class:"text-lg font-bold text-accent"},Ra={class:"text-sm font-bold text-white/90 mt-2"},Va={key:0,class:"text-xs text-purple-400/60"},Ua={key:1,class:"text-xs text-white/50 mt-1 line-clamp-2"},qa={class:"space-y-3"},Ga=["disabled"],Oa=G({__name:"NostrProfileEditor",setup(a){const{isLoggedIn:c,signEvent:l,pubkey:w}=me(),{publishEvent:g,fetchNote:v}=Ie(),x=Pe({name:"",display_name:"",about:"",picture:"",banner:"",website:"",nip05:"",lud16:""}),m=S(!1),_=S(""),$=S(!1);async function b(){if(!w.value)return;const o=await v(w.value,5e3);if(o&&o.kind===0)try{const r=JSON.parse(o.content);Object.assign(x,r)}catch{}}async function d(){if(!c.value)return;m.value=!0,_.value="";const o={};for(const[L,D]of Object.entries(x))D&&(o[L]=D);const r={kind:0,created_at:Math.floor(Date.now()/1e3),tags:[],content:JSON.stringify(o)},h=await l(r);if(!h){m.value=!1,_.value="Signing failed",$.value=!1;return}const M=await g(h),j=M.filter(L=>L.success).length;m.value=!1,j>0?(_.value=`Published to ${j}/${M.length} relays`,$.value=!0):(_.value="Failed to publish to any relay",$.value=!1)}return oe(()=>{b()}),(o,r)=>(s(),n("div",Pa,[r[17]||(r[17]=e("div",{class:"p-4 border-b border-white/[0.08]"},[e("h3",{class:"text-sm font-bold text-white/90"},"Nostr Profile")],-1)),t(c)?(s(),n("div",Aa,[e("div",za,[e("div",{class:i(["h-24 bg-cover bg-center",x.banner?"":"bg-gradient-to-r from-accent/20 to-purple-500/20"]),style:q(x.banner?{backgroundImage:`url(${x.banner})`}:{})},null,6),e("div",Ea,[e("div",{class:i(["w-16 h-16 rounded-full border-2 border-black bg-cover bg-center flex items-center justify-center",x.picture?"":"bg-accent/20"]),style:q(x.picture?{backgroundImage:`url(${x.picture})`}:{})},[x.picture?f("",!0):(s(),n("span",Fa,u((x.display_name||x.name||"?").charAt(0).toUpperCase()),1))],6),e("p",Ra,u(x.display_name||x.name||"Anonymous"),1),x.nip05?(s(),n("p",Va,u(x.nip05),1)):f("",!0),x.about?(s(),n("p",Ua,u(x.about),1)):f("",!0)])]),e("div",qa,[e("div",null,[r[9]||(r[9]=e("label",{class:"text-xs text-white/30 block mb-1"},"Display Name",-1)),W(e("input",{"onUpdate:modelValue":r[0]||(r[0]=h=>x.display_name=h),type:"text",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors",placeholder:"Your display name"},null,512),[[Q,x.display_name]])]),e("div",null,[r[10]||(r[10]=e("label",{class:"text-xs text-white/30 block mb-1"},"Username",-1)),W(e("input",{"onUpdate:modelValue":r[1]||(r[1]=h=>x.name=h),type:"text",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors",placeholder:"username"},null,512),[[Q,x.name]])]),e("div",null,[r[11]||(r[11]=e("label",{class:"text-xs text-white/30 block mb-1"},"Bio",-1)),W(e("textarea",{"onUpdate:modelValue":r[2]||(r[2]=h=>x.about=h),class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors resize-none min-h-[60px]",placeholder:"Tell the world about yourself"},null,512),[[Q,x.about]])]),e("div",null,[r[12]||(r[12]=e("label",{class:"text-xs text-white/30 block mb-1"},"Avatar URL",-1)),W(e("input",{"onUpdate:modelValue":r[3]||(r[3]=h=>x.picture=h),type:"url",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono",placeholder:"https://example.com/avatar.jpg"},null,512),[[Q,x.picture]])]),e("div",null,[r[13]||(r[13]=e("label",{class:"text-xs text-white/30 block mb-1"},"Banner URL",-1)),W(e("input",{"onUpdate:modelValue":r[4]||(r[4]=h=>x.banner=h),type:"url",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono",placeholder:"https://example.com/banner.jpg"},null,512),[[Q,x.banner]])]),e("div",null,[r[14]||(r[14]=e("label",{class:"text-xs text-white/30 block mb-1"},"Website",-1)),W(e("input",{"onUpdate:modelValue":r[5]||(r[5]=h=>x.website=h),type:"url",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono",placeholder:"https://example.com"},null,512),[[Q,x.website]])]),e("div",null,[r[15]||(r[15]=e("label",{class:"text-xs text-white/30 block mb-1"},"NIP-05 Address",-1)),W(e("input",{"onUpdate:modelValue":r[6]||(r[6]=h=>x.nip05=h),type:"text",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono",placeholder:"you@example.com"},null,512),[[Q,x.nip05]])]),e("div",null,[r[16]||(r[16]=e("label",{class:"text-xs text-white/30 block mb-1"},"Lightning Address",-1)),W(e("input",{"onUpdate:modelValue":r[7]||(r[7]=h=>x.lud16=h),type:"text",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono",placeholder:"you@getalby.com"},null,512),[[Q,x.lud16]])]),e("button",{class:"w-full min-h-[44px] rounded-lg text-sm font-medium bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors disabled:opacity-30",disabled:m.value,onClick:d},u(m.value?"Publishing...":"Publish Profile (kind:0)"),9,Ga),_.value?(s(),n("div",{key:0,class:i(["text-xs text-center",$.value?"text-emerald-400/60":"text-red-400/60"])},u(_.value),3)):f("",!0)])])):(s(),n("div",Na,[...r[8]||(r[8]=[e("p",{class:"text-xs text-white/30"},"Sign in with Nostr to edit your profile",-1)])]))]))}}),Ha={class:"relative glass-card w-[320px] max-w-[90vw] p-5 space-y-4 animate-scale-in"},Wa={class:"flex items-center justify-between"},Ka={class:"text-xs text-white/40 truncate font-mono"},Ya={class:"flex gap-1.5 flex-wrap"},Ja=["onClick"],Qa=["disabled"],Za={key:0,class:"space-y-2"},Xa={class:"flex justify-center"},ei={class:"flex gap-1"},ti=["value"],si=["href"],ni={key:1,class:"text-xs text-red-400/60 text-center"},li=G({__name:"ZapDialog",props:{isOpen:{type:Boolean},targetName:{},lightningAddress:{}},emits:["close"],setup(a,{emit:c}){const l=a,w=c,g=S(null),v=S(null),x=[21,100,500,1e3,5e3,1e4],m=S(21),_=S(""),$=S(""),b=S(!1),d=S(""),o=S(!1),r=S(null);function h(k){return k>=1e3?`${(k/1e3).toFixed(k%1e3===0?0:1)}k`:String(k)}function M(){w("close"),$.value="",d.value="",_.value=""}async function j(){if(!(!l.lightningAddress||!m.value)){b.value=!0,d.value="",$.value="";try{const[k,p]=l.lightningAddress.split("@");if(!k||!p)throw new Error("Invalid Lightning address");const y=await fetch(`https://${p}/.well-known/lnurlp/${k}`);if(!y.ok)throw new Error("Failed to fetch LNURL");const A=await y.json();if(A.status==="ERROR")throw new Error(A.reason||"LNURL error");const V=m.value*1e3;if(V<(A.minSendable??0))throw new Error(`Minimum: ${Math.ceil((A.minSendable??0)/1e3)} sats`);if(V>(A.maxSendable??1/0))throw new Error(`Maximum: ${Math.floor((A.maxSendable??0)/1e3)} sats`);let E=A.callback;const J=E.includes("?")?"&":"?";E+=`${J}amount=${V}`,_.value&&(E+=`&comment=${encodeURIComponent(_.value)}`);const H=await fetch(E);if(!H.ok)throw new Error("Failed to get invoice");const K=await H.json();if(K.status==="ERROR")throw new Error(K.reason||"Invoice error");$.value=K.pr,await ye(),L(K.pr)}catch(k){d.value=k instanceof Error?k.message:"Zap failed"}finally{b.value=!1}}}function L(k){const p=r.value;if(!p)return;const y=p.getContext("2d");if(!y)return;y.fillStyle="#1a1a1a",y.fillRect(0,0,200,200),y.fillStyle="#F7931A",y.font="10px monospace",y.textAlign="center";const A=[];for(let E=0;E{y.fillText(E,100,V+J*12)})}function D(){navigator.clipboard.writeText($.value),o.value=!0,setTimeout(()=>{o.value=!1},2e3)}function C(k){const p=g.value;if(!p)return;const y=p.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');if(y.length===0)return;const A=y[0],V=y[y.length-1];k.shiftKey&&document.activeElement===A?(k.preventDefault(),V.focus()):!k.shiftKey&&document.activeElement===V&&(k.preventDefault(),A.focus())}return ce(()=>l.isOpen,async k=>{k?(await ye(),v.value?.focus()):($.value="",d.value="")}),(k,p)=>a.isOpen?(s(),n("div",{key:0,ref_key:"dialogRef",ref:g,role:"dialog","aria-modal":"true","aria-label":"Send zap",class:"fixed inset-0 z-50 flex items-center justify-center",onClick:xe(M,["self"]),onKeydown:[ae(M,["escape"]),ae(C,["tab"])]},[e("div",{class:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:M}),e("div",Ha,[e("div",Wa,[p[3]||(p[3]=e("h3",{class:"text-sm font-bold text-white/90"},"Zap",-1)),e("button",{ref_key:"closeButtonRef",ref:v,class:"min-w-[44px] min-h-[44px] flex items-center justify-center rounded text-white/40 hover:text-white/70 transition-colors","aria-label":"Close",onClick:M},[...p[2]||(p[2]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])],512)]),e("p",Ka,u(a.targetName),1),e("div",Ya,[(s(),n(I,null,P(x,y=>e("button",{key:y,class:i(["text-xs px-2.5 py-1.5 rounded-lg transition-colors",m.value===y?"bg-accent/20 text-accent border border-accent/30":"bg-white/5 text-white/50 hover:bg-white/10"]),onClick:A=>m.value=y},u(h(y)),11,Ja)),64))]),e("div",null,[p[4]||(p[4]=e("label",{class:"text-xs text-white/30 block mb-1"},"Amount (sats)",-1)),W(e("input",{"onUpdate:modelValue":p[0]||(p[0]=y=>m.value=y),type:"number",min:"1",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors tabular-nums",placeholder:"21"},null,512),[[Q,m.value,void 0,{number:!0}]])]),e("div",null,[p[5]||(p[5]=e("label",{class:"text-xs text-white/30 block mb-1"},"Message (optional)",-1)),W(e("input",{"onUpdate:modelValue":p[1]||(p[1]=y=>_.value=y),type:"text",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors",placeholder:"Great post!"},null,512),[[Q,_.value]])]),e("button",{class:"w-full py-2.5 rounded-lg text-xs font-medium bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors disabled:opacity-30",disabled:!m.value||m.value<1||b.value,onClick:j},u(b.value?"Generating invoice...":`Zap ${h(m.value)} sats`),9,Qa),$.value?(s(),n("div",Za,[p[6]||(p[6]=e("p",{class:"text-xs text-white/30 text-center"},"Scan or tap to pay",-1)),e("div",Xa,[e("canvas",{ref_key:"qrCanvas",ref:r,class:"rounded-lg",width:"200",height:"200"},null,512)]),e("div",ei,[e("input",{value:$.value,readonly:"",class:"flex-1 px-2 py-1.5 rounded text-base bg-white/5 text-white/40 font-mono truncate outline-none"},null,8,ti),e("button",{class:"px-2 py-1.5 rounded text-xs bg-white/5 text-white/40 hover:text-white/60 transition-colors",onClick:D},u(o.value?"Copied":"Copy"),1)]),e("a",{href:"lightning:"+$.value,class:"block w-full py-2 rounded-lg text-xs text-center bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors"}," Open in wallet ",8,si)])):f("",!0),d.value?(s(),n("p",ni,u(d.value),1)):f("",!0)])],544)):f("",!0)}}),oi={class:"h-full flex flex-col"},ai={class:"flex items-center gap-2 px-4 py-3 border-b border-white/[0.08]"},ii={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-2"},ri={key:0,class:"flex items-center justify-center py-12"},ci={key:1,class:"rounded-xl bg-white/[0.05] border border-white/10 p-3"},di={class:"flex items-center gap-1.5 mb-1"},ui={class:"w-6 h-6 rounded-full shrink-0 flex items-center justify-center text-xs font-bold bg-purple-500/20 text-purple-400"},hi={class:"text-xs font-semibold text-white/80"},xi={class:"text-xs ml-auto text-white/20"},pi={class:"text-xs text-white/70 leading-relaxed whitespace-pre-wrap"},gi={key:2,class:"space-y-1"},bi={class:"text-xs text-white/30 font-medium mt-3 mb-1"},vi={key:3,class:"flex items-center justify-center py-12"},fi={key:0,class:"px-4 py-3 border-t border-white/[0.08]"},mi={key:0,class:"text-xs text-white/30 mb-1"},wi={class:"flex gap-2"},yi=["disabled"],ki=G({__name:"NostrThread",props:{noteId:{}},emits:["back"],setup(a){const c=Jt(()=>pt(()=>import("./ThreadNode-DBTMRZ0t.js"),__vite__mapDeps([3,1,2]))),l=a,{fetchNote:w,publishEvent:g}=Ie(),{isLoggedIn:v,signEvent:x,pubkey:m}=me(),_=S(null),$=S([]),b=S(!0),d=S(null),o=S("");function r(k){const p=new Date(k*1e3);return p.toLocaleTimeString("en",{hour:"2-digit",minute:"2-digit"})+" "+p.toLocaleDateString("en",{month:"short",day:"numeric"})}function h(k){return k.length<=12?k:k.slice(0,8)+"..."+k.slice(-4)}async function M(){b.value=!0;const k=await w(l.noteId);if(!k){b.value=!1;return}_.value=k;const p=await j(l.noteId);$.value=L(p,l.noteId),b.value=!1}async function j(k){return new Promise(p=>{const y=[],A="thread-"+Math.random().toString(36).slice(2,8);let V=!1;const E=setTimeout(()=>{V||(V=!0,p(y))},8e3),J="wss://relay.nostr.band";try{const H=new WebSocket(J);H.onopen=()=>{H.send(JSON.stringify(["REQ",A,{kinds:[1],"#e":[k],limit:100}]))},H.onmessage=K=>{try{const F=JSON.parse(K.data);if(Array.isArray(F)&&F[0]==="EVENT"&&F[1]===A&&F[2]){const O=F[2];y.find(X=>X.id===O.id)||y.push({id:O.id,pubkey:O.pubkey,authorName:h(O.pubkey),kind:O.kind,content:O.content,created_at:O.created_at,tags:O.tags??[]})}Array.isArray(F)&&F[0]==="EOSE"&&F[1]===A&&(clearTimeout(E),H.close(),V||(V=!0,p(y)))}catch{}},H.onerror=()=>{clearTimeout(E),V||(V=!0,p(y))},H.onclose=()=>{V||(V=!0,p(y))}}catch{clearTimeout(E),p(y)}})}function L(k,p,y=5){const A=new Map;for(const E of k){let J=p;const H=E.tags.filter(F=>F[0]==="e");if(H.length>0){const F=H.find(O=>O[3]==="reply");J=F?F[1]:H[H.length-1][1]}const K=A.get(J)??[];K.push(E),A.set(J,K)}function V(E,J){const H=A.get(E)??[];return H.sort((K,F)=>K.created_at-F.created_at),H.map(K=>({note:K,children:J{M()}),(k,p)=>(s(),n("div",oi,[e("div",ai,[e("button",{class:"min-w-[44px] min-h-[44px] flex items-center justify-center rounded-lg text-white/60 hover:text-white/80 hover:bg-white/10 transition-colors",onClick:p[0]||(p[0]=y=>k.$emit("back"))},[...p[3]||(p[3]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)])]),p[4]||(p[4]=e("h3",{class:"text-sm font-bold text-white/90"},"Thread",-1))]),e("div",ii,[b.value?(s(),n("div",ri,[...p[5]||(p[5]=[e("p",{class:"text-xs text-white/30"},"Loading thread...",-1)])])):f("",!0),_.value?(s(),n("div",ci,[e("div",di,[e("div",ui,u(_.value.authorName?.charAt(0)?.toUpperCase()??"?"),1),e("span",hi,u(_.value.authorName??"anon"),1),e("span",xi,u(r(_.value.created_at)),1)]),e("p",pi,u(_.value.content),1)])):f("",!0),$.value.length>0?(s(),n("div",gi,[e("p",bi,u($.value.length)+" replies",1),(s(!0),n(I,null,P($.value,y=>(s(),U(t(c),{key:y.note.id,node:y,depth:0,onReply:D},null,8,["node"]))),128))])):f("",!0),!b.value&&!_.value?(s(),n("div",vi,[...p[6]||(p[6]=[e("p",{class:"text-xs text-white/30"},"Thread not found",-1)])])):f("",!0)]),_.value&&t(v)?(s(),n("div",fi,[d.value?(s(),n("p",mi,[ne(" Replying to "+u(d.value.authorName??"anon")+" ",1),e("button",{class:"text-accent/60 ml-1",onClick:p[1]||(p[1]=y=>d.value=null)},"cancel")])):f("",!0),e("div",wi,[W(e("input",{"onUpdate:modelValue":p[2]||(p[2]=y=>o.value=y),type:"text",placeholder:"Reply...",class:"flex-1 px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors",onKeydown:ae(C,["enter"])},null,544),[[Q,o.value]]),e("button",{class:"px-3 py-2 rounded-lg text-xs bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors disabled:opacity-30",disabled:!o.value.trim(),onClick:C}," Reply ",8,yi)])])):f("",!0)]))}}),$i={class:"h-full flex flex-col"},_i={class:"p-4 border-b border-white/[0.08]"},Ci={class:"flex gap-1.5 flex-wrap"},ji=["onClick"],Si={key:0,class:"flex-1 flex items-center justify-center"},Mi={key:1,class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-2"},Ti={key:0,class:"flex items-center justify-center py-12"},Di={class:"flex gap-2 mb-3"},Ii=["placeholder"],Bi=["disabled"],Li={class:"w-6 h-6 rounded-full shrink-0 flex items-center justify-center text-xs font-bold bg-purple-500/20 text-purple-400"},Pi={class:"flex-1 min-w-0"},Ni={class:"text-xs text-white/60 font-mono truncate"},Ai={key:0,class:"text-xs text-white/30"},zi=["onClick"],Ei={key:1,class:"flex items-center justify-center py-12"},Fi=["disabled"],Ri=G({__name:"NostrLists",setup(a){const{isLoggedIn:c,signEvent:l,pubkey:w}=me(),{publishEvent:g}=Ie(),v=[{kind:3,label:"Follows"},{kind:1e4,label:"Mute"},{kind:10001,label:"Pin"},{kind:10003,label:"Bookmarks"}],x=S(3),m=S([]),_=S(!1),$=S(!1),b=S(""),d=S(!1),o=S(""),r=S(!1);function h(k){return k.length<=16?k:k.slice(0,8)+"..."+k.slice(-8)}function M(k){return k.filter(p=>p[0]==="p"||p[0]==="e"||p[0]==="t").map(p=>{let y=h(p[1]);if(p[0]==="p")try{y=He(p[1])}catch{}return{tag:p[0],value:p[1],displayValue:y,relay:p[2]||void 0,petname:p[3]||void 0}})}async function j(k){if(w.value){_.value=!0,$.value=!1,m.value=[];try{const p=new WebSocket("wss://relay.nostr.band"),y="list-"+Math.random().toString(36).slice(2,8),A=setTimeout(()=>{p.close(),_.value=!1},8e3);p.onopen=()=>{p.send(JSON.stringify(["REQ",y,{kinds:[k],authors:[w.value],limit:1}]))},p.onmessage=V=>{try{const E=JSON.parse(V.data);if(Array.isArray(E)&&E[0]==="EVENT"&&E[1]===y&&E[2]){const J=E[2];m.value=M(J.tags)}Array.isArray(E)&&E[0]==="EOSE"&&(clearTimeout(A),p.close(),_.value=!1)}catch{}},p.onerror=()=>{clearTimeout(A),_.value=!1}}catch{_.value=!1}}}function L(){let k=b.value.trim();if(!k)return;let p=k;const y=x.value===3||x.value===1e4?"p":"e";if(k.startsWith("npub"))try{p=gt(k)}catch{return}if(m.value.find(V=>V.value===p))return;let A=h(p);if(y==="p")try{A=He(p)}catch{}m.value.push({tag:y,value:p,displayValue:A}),$.value=!0,b.value=""}function D(k){m.value=m.value.filter(p=>p.value!==k.value),$.value=!0}async function C(){if(!w.value)return;d.value=!0,o.value="";const k=m.value.map(E=>{const J=[E.tag,E.value];return E.relay&&J.push(E.relay),E.petname&&J.push(E.petname),J}),p={kind:x.value,created_at:Math.floor(Date.now()/1e3),tags:k,content:""},y=await l(p);if(!y){d.value=!1,o.value="Signing failed",r.value=!1;return}const A=await g(y),V=A.filter(E=>E.success).length;d.value=!1,$.value=!1,V>0?(o.value=`Published to ${V}/${A.length} relays`,r.value=!0):(o.value="Failed to publish",r.value=!1)}return oe(()=>{j(x.value)}),(k,p)=>(s(),n("div",$i,[e("div",_i,[p[1]||(p[1]=e("h3",{class:"text-sm font-bold text-white/90 mb-3"},"Nostr Lists",-1)),e("div",Ci,[(s(),n(I,null,P(v,y=>e("button",{key:y.kind,class:i(["text-xs px-2 py-1 rounded-md transition-all duration-150",x.value===y.kind?"nav-tab-active":"text-white/40 hover:text-white/70 hover:bg-white/5"]),onClick:A=>{x.value=y.kind,j(y.kind)}},u(y.label),11,ji)),64))])]),t(c)?(s(),n("div",Mi,[_.value?(s(),n("div",Ti,[...p[3]||(p[3]=[e("p",{class:"text-xs text-white/30"},"Loading list...",-1)])])):f("",!0),e("div",Di,[W(e("input",{"onUpdate:modelValue":p[0]||(p[0]=y=>b.value=y),type:"text",placeholder:x.value===3?"Add npub or hex pubkey...":"Add item (hex id or npub)...",class:"flex-1 px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono",onKeydown:ae(L,["enter"])},null,40,Ii),[[Q,b.value]]),e("button",{class:"px-2.5 py-2 rounded-lg text-xs bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors disabled:opacity-30",disabled:!b.value.trim(),onClick:L}," Add ",8,Bi)]),(s(!0),n(I,null,P(m.value,y=>(s(),n("div",{key:y.value,class:"flex items-center gap-2 p-2.5 rounded-xl bg-white/[0.03] border border-white/5"},[e("div",Li,u(y.tag==="p"?"P":y.tag==="e"?"E":y.tag==="t"?"#":"?"),1),e("div",Pi,[e("p",Ni,u(y.displayValue),1),y.petname?(s(),n("p",Ai,u(y.petname),1)):f("",!0)]),e("button",{class:"text-xs px-2 py-1 rounded bg-white/5 text-red-400/50 hover:text-red-400/80 hover:bg-red-400/10 transition-colors shrink-0",onClick:A=>D(y)}," Remove ",8,zi)]))),128)),!_.value&&m.value.length===0?(s(),n("div",Ei,[...p[4]||(p[4]=[e("p",{class:"text-xs text-white/30"},"List is empty",-1)])])):f("",!0),$.value?(s(),n("button",{key:2,class:"w-full py-2.5 rounded-lg text-xs font-medium bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors disabled:opacity-30 mt-4",disabled:d.value,onClick:C},u(d.value?"Publishing...":"Publish updated list"),9,Fi)):f("",!0),o.value?(s(),n("p",{key:3,class:i(["text-xs text-center",r.value?"text-emerald-400/60":"text-red-400/60"])},u(o.value),3)):f("",!0)])):(s(),n("div",Si,[...p[2]||(p[2]=[e("p",{class:"text-xs text-white/30"},"Sign in with Nostr to manage lists",-1)])]))]))}}),Vi={class:"article-reader h-full flex"},Ui={key:0,class:"hidden lg:flex flex-col w-56 shrink-0 border-r border-white/5 overflow-y-auto scrollbar-hide py-4 px-3"},qi=["onClick"],Gi={class:"sticky top-0 z-10 flex items-center gap-2 px-4 py-2 bg-black/60 backdrop-blur-md border-b border-white/5"},Oi={class:"flex-1 text-xs text-white/40 truncate"},Hi=["disabled"],Wi=["disabled"],Ki={key:0,class:"lg:hidden bg-black/40 backdrop-blur-md border-b border-white/5 px-4 py-2 space-y-0.5 animate-fade-up-fast"},Yi=["onClick"],Ji={key:0,class:"text-xl font-bold text-white/96 mb-4"},Qi=["innerHTML"],Zi=G({__name:"ArticleReader",props:{content:{},title:{}},emits:["back"],setup(a){const c=a,l=[13,15,17,19,21],w=localStorage.getItem("aiui-article-font-size"),g=S(w?parseInt(w,10):1);ce(g,D=>{localStorage.setItem("aiui-article-font-size",String(D))});const v=S(!1),x=new cs({html:!1,linkify:!0,breaks:!0});x.renderer.rules.heading_open=(D,C,k,p,y)=>{const A=D[C],V=parseInt(A.tag.slice(1),10);if(V===2||V===3){const H=(D[C+1]?.children?.reduce((K,F)=>K+(F.content||""),"")||"").toLowerCase().replace(/[^\w]+/g,"-").replace(/(^-|-$)/g,"");A.attrSet("id",H)}return y.renderToken(D,C,k)};const m=x.renderer.rules.link_open||function(D,C,k,p,y){return y.renderToken(D,C,k)};x.renderer.rules.link_open=function(D,C,k,p,y){return D[C].attrSet("target","_blank"),D[C].attrSet("rel","noopener noreferrer"),m(D,C,k,p,y)};const _=B(()=>x.render(c.content)),$=B(()=>{const D=[],C=/^(#{2,3})\s+(.+)$/gm;let k;for(;(k=C.exec(c.content))!==null;){const p=k[2].trim(),y=p.toLowerCase().replace(/[^\w]+/g,"-").replace(/(^-|-$)/g,"");D.push({text:p,id:y,level:k[1].length})}return D}),b=B(()=>{const D=c.content.split(/\s+/).length;return Math.max(1,Math.ceil(D/200))}),d=S(null),o=S(null),r=S(0);let h=null;function M(){if(!d.value)return;h?.disconnect(),h=new IntersectionObserver(C=>{for(const k of C)if(k.isIntersecting){const p=k.target.id,y=$.value.findIndex(A=>A.id===p);y>=0&&(r.value=y)}},{root:d.value,rootMargin:"-20% 0px -60% 0px",threshold:0}),o.value?.querySelectorAll("h2[id], h3[id]")?.forEach(C=>h.observe(C))}oe(()=>{setTimeout(M,100)}),ce(()=>c.content,()=>{setTimeout(M,100)}),Qt(()=>{h?.disconnect()});function j(D){o.value?.querySelector(`#${CSS.escape(D)}`)?.scrollIntoView({behavior:"smooth",block:"start"})}function L(){const D=window.open("","_blank");D&&(D.document.write(` +}`,usedIn:"Modal entries, tooltip appearances, popovers"}],$=B(()=>x.value==="all"?_:_.filter(o=>o.category===x.value));function b(o){l(o)}function d(o){const r=/(?:background-color|color|background):\s*([^;]+)/i.exec(o);if(!r)return"#333";const h=r[1].trim();return h.startsWith("#")||h.startsWith("rgb")||h.startsWith("hsl")?h:"#333"}return(o,r)=>(s(),n("div",jo,[e("div",{class:"shrink-0 px-4 py-3 flex items-center justify-between gap-2",style:q(t(c)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("span",{class:i(["text-sm font-semibold",t(c)?"text-white/90":"text-gray-900"])}," Design System ",2),e("p",{class:i(["text-xs",t(c)?"text-white/30":"text-gray-400"])},u($.value.length)+" items ",3)],4),e("div",So,[(s(),n(I,null,P(m,h=>e("button",{key:h.id,class:i(["text-xs px-2.5 py-1 rounded-md font-medium whitespace-nowrap transition-colors",x.value===h.id?"bg-accent/20 text-accent":t(c)?"bg-white/5 text-white/50 hover:bg-white/10":"bg-black/5 text-gray-500 hover:bg-black/10"]),onClick:M=>x.value=h.id},u(h.label),11,Mo)),64))]),e("div",To,[e("div",Do,[(s(!0),n(I,null,P($.value,h=>(s(),n("button",{key:h.id,class:i(["text-left p-3 rounded-xl transition-all duration-150 group relative",[t(w)&&t(v)(h.id)?"ring-2 ring-accent/50 bg-accent/10 cursor-pointer":t(c)?"bg-white/[0.03] hover:bg-white/[0.07] cursor-pointer":"bg-black/[0.02] hover:bg-black/[0.05] cursor-pointer"]]),onClick:M=>b(h)},[t(w)?(s(),n("div",{key:0,class:i(["absolute top-2 right-2 min-w-[44px] min-h-[44px] rounded-full flex items-center justify-center z-10 cursor-pointer transition-colors",t(v)(h.id)?"bg-accent":t(c)?"bg-white/10 hover:bg-white/20":"bg-black/10 hover:bg-black/20"]),onClick:xe(M=>t(g)(h.id),["stop"])},[t(v)(h.id)?(s(),n("svg",Lo,[...r[0]||(r[0]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"3",d:"M5 13l4 4L19 7"},null,-1)])])):f("",!0)],10,Bo)):f("",!0),h.category==="colors"&&h.preview==="inline"?(s(),n("div",{key:1,class:i(["h-8 rounded-md mb-2 border",t(c)?"border-white/10":"border-black/10"]),style:q({background:d(h.code)})},null,6)):h.category==="spacing"&&h.preview==="inline"?(s(),n("div",Po,[...r[1]||(r[1]=[e("div",{class:"bg-accent/40 rounded-sm",style:{width:"4px",height:"30%"}},null,-1),e("div",{class:"bg-accent/40 rounded-sm",style:{width:"4px",height:"50%"}},null,-1),e("div",{class:"bg-accent/40 rounded-sm",style:{width:"4px",height:"70%"}},null,-1),e("div",{class:"bg-accent/40 rounded-sm",style:{width:"4px",height:"100%"}},null,-1)])])):(s(),n("div",No,[(s(),n("svg",{class:i(["w-5 h-5 transition-colors",t(c)?"text-white/20 group-hover:text-white/40":"text-black/15 group-hover:text-black/30"]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[h.category==="atoms"?(s(),n("path",Ao)):h.category==="molecules"?(s(),n("path",zo)):h.category==="organisms"?(s(),n("path",Eo)):(s(),n("path",Fo))],2))])),e("h3",{class:i(["text-xs font-semibold leading-tight mb-0.5",t(c)?"text-white/80":"text-gray-800"])},u(h.name),3),e("p",{class:i(["text-xs leading-snug line-clamp-2",t(c)?"text-white/40":"text-gray-400"])},u(h.description),3)],10,Io))),128))])])]))}}),we=S(null),lt=S(!1),Re=S(!1),he=S(null);function me(){const a=B(()=>{if(!we.value)return null;try{return He(we.value)}catch{return null}}),c=B(()=>!!we.value),l=B(()=>a.value?a.value.slice(0,12)+"..."+a.value.slice(-8):null);function w(){lt.value=typeof window<"u"&&!!window.nostr}async function g(){if(he.value=null,!window.nostr){he.value="No Nostr extension detected. Install nos2x, Alby, or another NIP-07 extension.";return}Re.value=!0;try{const m=await window.nostr.getPublicKey();we.value=m}catch(m){he.value=m instanceof Error?m.message:"Failed to get public key"}finally{Re.value=!1}}async function v(m){if(he.value=null,!window.nostr)return he.value="No Nostr extension detected",null;try{return await window.nostr.signEvent(m)}catch(_){return he.value=_ instanceof Error?_.message:"Failed to sign event",null}}function x(){we.value=null,he.value=null}return oe(()=>{w(),setTimeout(w,500)}),{pubkey:we,npub:a,isAvailable:lt,isLoggedIn:c,isLoading:Re,error:he,truncatedNpub:l,login:g,logout:x,signEvent:v,checkAvailability:w}}const Vo="aiui-nostr-dms",Uo=1,ke="messages",je=S([]),Se=S(null),Ve=S(!1);let Me=null;function vt(){return Me||(Me=new Promise((a,c)=>{const l=indexedDB.open(Vo,Uo);l.onupgradeneeded=()=>{const w=l.result;if(!w.objectStoreNames.contains(ke)){const g=w.createObjectStore(ke,{keyPath:"id"});g.createIndex("contact","contactPubkey",{unique:!1}),g.createIndex("created_at","created_at",{unique:!1})}},l.onsuccess=()=>a(l.result),l.onerror=()=>{Me=null,c(l.error)}}),Me)}function qo(a){return a.length<=12?a:a.slice(0,8)+"..."+a.slice(-4)}async function ot(a,c){const l=await vt(),w=a.fromPubkey===c?a.toPubkey:a.fromPubkey,g={...a,contactPubkey:w};return new Promise((v,x)=>{const m=l.transaction(ke,"readwrite");m.objectStore(ke).put(g),m.oncomplete=()=>v(),m.onerror=()=>x(m.error)})}async function Ue(){const a=await vt();return new Promise((c,l)=>{const g=a.transaction(ke,"readonly").objectStore(ke).getAll();g.onsuccess=()=>c(g.result),g.onerror=()=>l(g.error)})}function qe(a){const c=new Map;for(const w of a){const g=c.get(w.contactPubkey)??[];g.push(w),c.set(w.contactPubkey,g)}const l=[];for(const[w,g]of c)g.sort((v,x)=>v.created_at-x.created_at),l.push({contactPubkey:w,contactName:qo(w),messages:g,lastMessage:g[g.length-1]??null,unread:0});return l.sort((w,g)=>(g.lastMessage?.created_at??0)-(w.lastMessage?.created_at??0)),l}function Go(){const{pubkey:a,isLoggedIn:c}=me(),l=B(()=>Se.value?je.value.find(_=>_.contactPubkey===Se.value)??null:null);async function w(){if(c.value){Ve.value=!0;try{const _=await Ue();je.value=qe(_)}catch{}finally{Ve.value=!1}}}async function g(_,$){if(!window.nostr?.nip04||!a.value)return!1;try{const b=await window.nostr.nip04.encrypt(_,$),d={kind:4,created_at:Math.floor(Date.now()/1e3),tags:[["p",_]],content:b},o=await window.nostr.signEvent(d);if(!o)return!1;const r={id:o.id,fromPubkey:a.value,toPubkey:_,content:$,created_at:o.created_at,decrypted:!0};await ot(r,a.value);const{publishEvent:h}=await pt(()=>import("./useNostr-CNDx2L4S.js"),__vite__mapDeps([0,1,2])).then(j=>j.useNostr());await h(o);const M=await Ue();return je.value=qe(M),!0}catch{return!1}}async function v(_,$,b,d){if(!(!window.nostr?.nip04||!a.value))try{const o=await window.nostr.nip04.decrypt($,b),r={id:_,fromPubkey:$,toPubkey:a.value,content:o,created_at:d,decrypted:!0};await ot(r,a.value);const h=await Ue();je.value=qe(h)}catch{}}function x(_){Se.value=_}function m(){Se.value=null}return{threads:je,activeThread:l,activeContact:Se,isLoading:Ve,loadDMs:w,sendDM:g,receiveDM:v,selectContact:x,clearActiveContact:m}}const Oo={class:"h-full flex flex-col"},Ho={class:"flex items-center gap-2 px-4 py-3 border-b border-white/[0.08]"},Wo={class:"flex-1 min-w-0"},Ko={class:"text-xs font-semibold text-white/80 truncate"},Yo={class:"text-xs text-white/30 font-mono truncate"},Jo={class:"text-xs leading-relaxed break-words"},Qo={class:"text-xs mt-1 text-white/25 tabular-nums"},Zo={class:"px-4 py-3 border-t border-white/[0.08]"},Xo={class:"flex gap-2"},ea=["disabled"],ta={class:"p-4 border-b border-white/[0.08]"},sa={class:"flex items-center justify-between gap-2 mb-3"},na={key:0,class:"space-y-2 mb-3"},la=["disabled"],oa={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-1"},aa={key:0,class:"flex items-center justify-center py-12"},ia={key:1,class:"flex items-center justify-center py-12"},ra={key:2,class:"flex items-center justify-center py-12"},ca=["onClick"],da={class:"flex items-start gap-2.5"},ua={class:"w-8 h-8 rounded-full shrink-0 flex items-center justify-center text-xs font-bold bg-accent/20 text-accent"},ha={class:"flex-1 min-w-0"},xa={class:"flex items-center gap-1.5"},pa={class:"text-xs font-semibold truncate text-white/80"},ga={key:0,class:"text-xs ml-auto shrink-0 text-white/20"},ba={key:0,class:"text-xs mt-1 text-white/40 truncate"},va=G({__name:"NostrDMs",setup(a){const{threads:c,activeThread:l,activeContact:w,isLoading:g,loadDMs:v,sendDM:x,selectContact:m,clearActiveContact:_}=Go(),{pubkey:$,isLoggedIn:b}=me(),d=S(""),o=S(!1),r=S(null),h=S(!1),M=S("");function j(k){const p=new Date(k*1e3),A=Math.floor((new Date().getTime()-p.getTime())/864e5);return A===0?p.toLocaleTimeString("en",{hour:"2-digit",minute:"2-digit"}):A<7?p.toLocaleDateString("en",{weekday:"short"}):p.toLocaleDateString("en",{month:"short",day:"numeric"})}async function L(){if(!d.value.trim()||o.value||!w.value)return;o.value=!0,await x(w.value,d.value.trim())&&(d.value="",await ye(),D()),o.value=!1}function D(){r.value&&(r.value.scrollTop=r.value.scrollHeight)}function C(){let k=M.value.trim();if(k.startsWith("npub"))try{k=gt(k)}catch{return}k.length===64&&(m(k),h.value=!1,M.value="")}return ce(w,async()=>{await ye(),D()}),oe(()=>{v()}),(k,p)=>(s(),n("div",Oo,[t(l)?(s(),n(I,{key:0},[e("div",Ho,[e("button",{class:"min-w-[44px] min-h-[44px] flex items-center justify-center rounded-lg text-white/60 hover:text-white/80 hover:bg-white/10 transition-colors",onClick:p[0]||(p[0]=(...y)=>t(_)&&t(_)(...y))},[...p[4]||(p[4]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)])]),e("div",Wo,[e("p",Ko,u(t(l).contactName),1),e("p",Yo,u(t(l).contactPubkey),1)])]),e("div",{ref_key:"messagesRef",ref:r,class:"flex-1 overflow-y-auto custom-scrollbar px-4 py-3 space-y-2"},[(s(!0),n(I,null,P(t(l).messages,y=>(s(),n("div",{key:y.id,class:i(["flex",y.fromPubkey===t($)?"justify-end":"justify-start"])},[e("div",{class:i(["max-w-[80%] rounded-xl px-3 py-2",y.fromPubkey===t($)?"bg-accent/15 text-white/80":"bg-white/5 text-white/70"])},[e("p",Jo,u(y.content),1),e("p",Qo,u(j(y.created_at)),1)],2)],2))),128))],512),e("div",Zo,[e("div",Xo,[W(e("input",{"onUpdate:modelValue":p[1]||(p[1]=y=>d.value=y),type:"text",placeholder:"Type a message...",class:"flex-1 px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors",onKeydown:ae(L,["enter"])},null,544),[[Q,d.value]]),e("button",{class:"px-3 py-2 rounded-lg text-xs bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors disabled:opacity-30",disabled:!d.value.trim()||o.value,onClick:L}," Send ",8,ea)])])],64)):(s(),n(I,{key:1},[e("div",ta,[e("div",sa,[p[5]||(p[5]=e("h3",{class:"text-sm font-bold text-white/90"},"Messages",-1)),e("button",{class:"text-xs px-2.5 py-1 rounded bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors",onClick:p[2]||(p[2]=y=>h.value=!h.value)},u(h.value?"Cancel":"New"),1)]),h.value?(s(),n("div",na,[W(e("input",{"onUpdate:modelValue":p[3]||(p[3]=y=>M.value=y),type:"text",placeholder:"Recipient hex pubkey or npub...",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono"},null,512),[[Q,M.value]]),e("button",{class:"text-xs px-2.5 py-1 rounded bg-white/5 text-white/60 hover:bg-white/10 transition-colors disabled:opacity-30",disabled:!M.value.trim(),onClick:C}," Start conversation ",8,la)])):f("",!0)]),e("div",oa,[t(b)?t(g)?(s(),n("div",ia,[...p[7]||(p[7]=[e("p",{class:"text-xs text-white/30"},"Loading messages...",-1)])])):t(c).length===0?(s(),n("div",ra,[...p[8]||(p[8]=[e("p",{class:"text-xs text-white/30"},"No messages yet",-1)])])):f("",!0):(s(),n("div",aa,[...p[6]||(p[6]=[e("p",{class:"text-xs text-white/30"},"Sign in with Nostr to use DMs",-1)])])),(s(!0),n(I,null,P(t(c),y=>(s(),n("button",{key:y.contactPubkey,class:"w-full text-left p-3 rounded-xl transition-all duration-150 bg-white/[0.03] hover:bg-white/[0.07] border border-white/5",onClick:A=>t(m)(y.contactPubkey)},[e("div",da,[e("div",ua,u(y.contactName.charAt(0).toUpperCase()),1),e("div",ha,[e("div",xa,[e("span",pa,u(y.contactName),1),y.lastMessage?(s(),n("span",ga,u(j(y.lastMessage.created_at)),1)):f("",!0)]),y.lastMessage?(s(),n("p",ba,u(y.lastMessage.content),1)):f("",!0)])])],8,ca))),128))])],64))]))}}),fa={class:"h-full flex flex-col"},ma={class:"p-4 border-b border-white/[0.08]"},wa={class:"flex gap-2"},ya=["disabled"],ka={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-2"},$a={class:"flex items-center gap-2"},_a={class:"text-xs font-mono text-white/70 truncate flex-1"},Ca={class:"flex items-center gap-2 flex-wrap"},ja=["onClick"],Sa=["onClick"],Ma=["disabled","onClick"],Ta=["onClick"],Da={key:0,class:"mt-4 pt-4 border-t border-white/5"},Ia=["disabled"],Ba={key:0,class:"text-xs mt-1 text-white/30"},La=G({__name:"NostrRelayManager",setup(a){const{relayStates:c,addRelay:l,removeRelay:w,toggleRelayRead:g,toggleRelayWrite:v,testRelay:x,importNIP65Relays:m,fetchNote:_}=Ie(),{isLoggedIn:$,pubkey:b}=me(),d=S(""),o=S(null),r=Pe({}),h=S(!1),M=S("");function j(){let C=d.value.trim();C&&(!C.startsWith("wss://")&&!C.startsWith("ws://")&&(C="wss://"+C),l(C),d.value="")}async function L(C){o.value=C;const k=await x(C);r[C]=k,o.value=null}async function D(){if(!b.value)return;h.value=!0,M.value="Fetching relay list...";const C=await _(b.value,5e3);C?(m({id:C.id,pubkey:C.pubkey,kind:10002,content:C.content,created_at:C.created_at,tags:C.tags,sig:""}),M.value="Imported relays from NIP-65"):M.value="No NIP-65 relay list found",h.value=!1}return(C,k)=>(s(),n("div",fa,[e("div",ma,[k[1]||(k[1]=e("h3",{class:"text-sm font-bold text-white/90 mb-3"},"Relay Management",-1)),e("div",wa,[W(e("input",{"onUpdate:modelValue":k[0]||(k[0]=p=>d.value=p),type:"text",placeholder:"wss://relay.example.com",class:"flex-1 px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono",onKeydown:ae(j,["enter"])},null,544),[[Q,d.value]]),e("button",{class:"px-4 min-h-[44px] rounded-lg text-sm bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors disabled:opacity-30",disabled:!d.value.trim(),onClick:j}," Add ",8,ya)])]),e("div",ka,[(s(!0),n(I,null,P(t(c),p=>(s(),n("div",{key:p.url,class:"rounded-xl bg-white/[0.03] border border-white/5 p-3 space-y-2"},[e("div",$a,[e("span",{class:i(["w-2 h-2 rounded-full shrink-0",p.connected?"bg-emerald-500":"bg-red-400/60"])},null,2),e("span",_a,u(p.url),1),p.latencyMs!==null?(s(),n("span",{key:0,class:i(["text-xs tabular-nums shrink-0",p.latencyMs<200?"text-emerald-400/60":p.latencyMs<500?"text-yellow-400/60":"text-red-400/60"])},u(p.latencyMs)+"ms ",3)):f("",!0),e("span",{class:i(["text-xs shrink-0",p.connected?"text-emerald-400/60":"text-red-400/60"])},u(p.connected?"Connected":"Disconnected"),3)]),e("div",Ca,[e("button",{class:i(["text-sm px-3 min-h-[44px] rounded-lg transition-colors",p.read?"bg-accent/15 text-accent/80":"bg-white/5 text-white/30 hover:text-white/50"]),onClick:y=>t(g)(p.url)}," Read ",10,ja),e("button",{class:i(["text-sm px-3 min-h-[44px] rounded-lg transition-colors",p.write?"bg-accent/15 text-accent/80":"bg-white/5 text-white/30 hover:text-white/50"]),onClick:y=>t(v)(p.url)}," Write ",10,Sa),k[2]||(k[2]=e("div",{class:"flex-1"},null,-1)),e("button",{class:"text-sm px-3 min-h-[44px] rounded-lg bg-white/5 text-white/30 hover:text-white/50 transition-colors",disabled:o.value===p.url,onClick:y=>L(p.url)},u(o.value===p.url?"Testing...":"Test"),9,Ma),e("button",{class:"text-sm px-3 min-h-[44px] rounded-lg bg-white/5 text-red-400/50 hover:text-red-400/80 hover:bg-red-400/10 transition-colors",onClick:y=>t(w)(p.url)}," Remove ",8,Ta)]),r[p.url]!==void 0?(s(),n("p",{key:0,class:i(["text-xs",r[p.url]!==null?"text-emerald-400/60":"text-red-400/60"])},u(r[p.url]!==null?`Reachable (${r[p.url]}ms)`:"Unreachable"),3)):f("",!0)]))),128)),t($)?(s(),n("div",Da,[e("button",{class:"w-full text-left px-3 min-h-[44px] rounded-lg text-sm bg-white/5 text-white/40 hover:text-white/60 hover:bg-white/10 transition-colors",disabled:h.value,onClick:D},u(h.value?"Importing...":"Import relays from NIP-65 (kind:10002)"),9,Ia),M.value?(s(),n("p",Ba,u(M.value),1)):f("",!0)])):f("",!0)])]))}}),Pa={class:"h-full flex flex-col"},Na={key:0,class:"flex-1 flex items-center justify-center"},Aa={key:1,class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-4"},za={class:"rounded-xl overflow-hidden border border-white/5"},Ea={class:"px-4 pb-4 -mt-8"},Fa={key:0,class:"text-lg font-bold text-accent"},Ra={class:"text-sm font-bold text-white/90 mt-2"},Va={key:0,class:"text-xs text-purple-400/60"},Ua={key:1,class:"text-xs text-white/50 mt-1 line-clamp-2"},qa={class:"space-y-3"},Ga=["disabled"],Oa=G({__name:"NostrProfileEditor",setup(a){const{isLoggedIn:c,signEvent:l,pubkey:w}=me(),{publishEvent:g,fetchNote:v}=Ie(),x=Pe({name:"",display_name:"",about:"",picture:"",banner:"",website:"",nip05:"",lud16:""}),m=S(!1),_=S(""),$=S(!1);async function b(){if(!w.value)return;const o=await v(w.value,5e3);if(o&&o.kind===0)try{const r=JSON.parse(o.content);Object.assign(x,r)}catch{}}async function d(){if(!c.value)return;m.value=!0,_.value="";const o={};for(const[L,D]of Object.entries(x))D&&(o[L]=D);const r={kind:0,created_at:Math.floor(Date.now()/1e3),tags:[],content:JSON.stringify(o)},h=await l(r);if(!h){m.value=!1,_.value="Signing failed",$.value=!1;return}const M=await g(h),j=M.filter(L=>L.success).length;m.value=!1,j>0?(_.value=`Published to ${j}/${M.length} relays`,$.value=!0):(_.value="Failed to publish to any relay",$.value=!1)}return oe(()=>{b()}),(o,r)=>(s(),n("div",Pa,[r[17]||(r[17]=e("div",{class:"p-4 border-b border-white/[0.08]"},[e("h3",{class:"text-sm font-bold text-white/90"},"Nostr Profile")],-1)),t(c)?(s(),n("div",Aa,[e("div",za,[e("div",{class:i(["h-24 bg-cover bg-center",x.banner?"":"bg-gradient-to-r from-accent/20 to-purple-500/20"]),style:q(x.banner?{backgroundImage:`url(${x.banner})`}:{})},null,6),e("div",Ea,[e("div",{class:i(["w-16 h-16 rounded-full border-2 border-black bg-cover bg-center flex items-center justify-center",x.picture?"":"bg-accent/20"]),style:q(x.picture?{backgroundImage:`url(${x.picture})`}:{})},[x.picture?f("",!0):(s(),n("span",Fa,u((x.display_name||x.name||"?").charAt(0).toUpperCase()),1))],6),e("p",Ra,u(x.display_name||x.name||"Anonymous"),1),x.nip05?(s(),n("p",Va,u(x.nip05),1)):f("",!0),x.about?(s(),n("p",Ua,u(x.about),1)):f("",!0)])]),e("div",qa,[e("div",null,[r[9]||(r[9]=e("label",{class:"text-xs text-white/30 block mb-1"},"Display Name",-1)),W(e("input",{"onUpdate:modelValue":r[0]||(r[0]=h=>x.display_name=h),type:"text",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors",placeholder:"Your display name"},null,512),[[Q,x.display_name]])]),e("div",null,[r[10]||(r[10]=e("label",{class:"text-xs text-white/30 block mb-1"},"Username",-1)),W(e("input",{"onUpdate:modelValue":r[1]||(r[1]=h=>x.name=h),type:"text",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors",placeholder:"username"},null,512),[[Q,x.name]])]),e("div",null,[r[11]||(r[11]=e("label",{class:"text-xs text-white/30 block mb-1"},"Bio",-1)),W(e("textarea",{"onUpdate:modelValue":r[2]||(r[2]=h=>x.about=h),class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors resize-none min-h-[60px]",placeholder:"Tell the world about yourself"},null,512),[[Q,x.about]])]),e("div",null,[r[12]||(r[12]=e("label",{class:"text-xs text-white/30 block mb-1"},"Avatar URL",-1)),W(e("input",{"onUpdate:modelValue":r[3]||(r[3]=h=>x.picture=h),type:"url",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono",placeholder:"https://example.com/avatar.jpg"},null,512),[[Q,x.picture]])]),e("div",null,[r[13]||(r[13]=e("label",{class:"text-xs text-white/30 block mb-1"},"Banner URL",-1)),W(e("input",{"onUpdate:modelValue":r[4]||(r[4]=h=>x.banner=h),type:"url",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono",placeholder:"https://example.com/banner.jpg"},null,512),[[Q,x.banner]])]),e("div",null,[r[14]||(r[14]=e("label",{class:"text-xs text-white/30 block mb-1"},"Website",-1)),W(e("input",{"onUpdate:modelValue":r[5]||(r[5]=h=>x.website=h),type:"url",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono",placeholder:"https://example.com"},null,512),[[Q,x.website]])]),e("div",null,[r[15]||(r[15]=e("label",{class:"text-xs text-white/30 block mb-1"},"NIP-05 Address",-1)),W(e("input",{"onUpdate:modelValue":r[6]||(r[6]=h=>x.nip05=h),type:"text",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono",placeholder:"you@example.com"},null,512),[[Q,x.nip05]])]),e("div",null,[r[16]||(r[16]=e("label",{class:"text-xs text-white/30 block mb-1"},"Lightning Address",-1)),W(e("input",{"onUpdate:modelValue":r[7]||(r[7]=h=>x.lud16=h),type:"text",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono",placeholder:"you@getalby.com"},null,512),[[Q,x.lud16]])]),e("button",{class:"w-full min-h-[44px] rounded-lg text-sm font-medium bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors disabled:opacity-30",disabled:m.value,onClick:d},u(m.value?"Publishing...":"Publish Profile (kind:0)"),9,Ga),_.value?(s(),n("div",{key:0,class:i(["text-xs text-center",$.value?"text-emerald-400/60":"text-red-400/60"])},u(_.value),3)):f("",!0)])])):(s(),n("div",Na,[...r[8]||(r[8]=[e("p",{class:"text-xs text-white/30"},"Sign in with Nostr to edit your profile",-1)])]))]))}}),Ha={class:"relative glass-card w-[320px] max-w-[90vw] p-5 space-y-4 animate-scale-in"},Wa={class:"flex items-center justify-between"},Ka={class:"text-xs text-white/40 truncate font-mono"},Ya={class:"flex gap-1.5 flex-wrap"},Ja=["onClick"],Qa=["disabled"],Za={key:0,class:"space-y-2"},Xa={class:"flex justify-center"},ei={class:"flex gap-1"},ti=["value"],si=["href"],ni={key:1,class:"text-xs text-red-400/60 text-center"},li=G({__name:"ZapDialog",props:{isOpen:{type:Boolean},targetName:{},lightningAddress:{}},emits:["close"],setup(a,{emit:c}){const l=a,w=c,g=S(null),v=S(null),x=[21,100,500,1e3,5e3,1e4],m=S(21),_=S(""),$=S(""),b=S(!1),d=S(""),o=S(!1),r=S(null);function h(k){return k>=1e3?`${(k/1e3).toFixed(k%1e3===0?0:1)}k`:String(k)}function M(){w("close"),$.value="",d.value="",_.value=""}async function j(){if(!(!l.lightningAddress||!m.value)){b.value=!0,d.value="",$.value="";try{const[k,p]=l.lightningAddress.split("@");if(!k||!p)throw new Error("Invalid Lightning address");const y=await fetch(`https://${p}/.well-known/lnurlp/${k}`);if(!y.ok)throw new Error("Failed to fetch LNURL");const A=await y.json();if(A.status==="ERROR")throw new Error(A.reason||"LNURL error");const V=m.value*1e3;if(V<(A.minSendable??0))throw new Error(`Minimum: ${Math.ceil((A.minSendable??0)/1e3)} sats`);if(V>(A.maxSendable??1/0))throw new Error(`Maximum: ${Math.floor((A.maxSendable??0)/1e3)} sats`);let E=A.callback;const J=E.includes("?")?"&":"?";E+=`${J}amount=${V}`,_.value&&(E+=`&comment=${encodeURIComponent(_.value)}`);const H=await fetch(E);if(!H.ok)throw new Error("Failed to get invoice");const K=await H.json();if(K.status==="ERROR")throw new Error(K.reason||"Invoice error");$.value=K.pr,await ye(),L(K.pr)}catch(k){d.value=k instanceof Error?k.message:"Zap failed"}finally{b.value=!1}}}function L(k){const p=r.value;if(!p)return;const y=p.getContext("2d");if(!y)return;y.fillStyle="#1a1a1a",y.fillRect(0,0,200,200),y.fillStyle="#F7931A",y.font="10px monospace",y.textAlign="center";const A=[];for(let E=0;E{y.fillText(E,100,V+J*12)})}function D(){navigator.clipboard.writeText($.value),o.value=!0,setTimeout(()=>{o.value=!1},2e3)}function C(k){const p=g.value;if(!p)return;const y=p.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');if(y.length===0)return;const A=y[0],V=y[y.length-1];k.shiftKey&&document.activeElement===A?(k.preventDefault(),V.focus()):!k.shiftKey&&document.activeElement===V&&(k.preventDefault(),A.focus())}return ce(()=>l.isOpen,async k=>{k?(await ye(),v.value?.focus()):($.value="",d.value="")}),(k,p)=>a.isOpen?(s(),n("div",{key:0,ref_key:"dialogRef",ref:g,role:"dialog","aria-modal":"true","aria-label":"Send zap",class:"fixed inset-0 z-50 flex items-center justify-center",onClick:xe(M,["self"]),onKeydown:[ae(M,["escape"]),ae(C,["tab"])]},[e("div",{class:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:M}),e("div",Ha,[e("div",Wa,[p[3]||(p[3]=e("h3",{class:"text-sm font-bold text-white/90"},"Zap",-1)),e("button",{ref_key:"closeButtonRef",ref:v,class:"min-w-[44px] min-h-[44px] flex items-center justify-center rounded text-white/40 hover:text-white/70 transition-colors","aria-label":"Close",onClick:M},[...p[2]||(p[2]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])],512)]),e("p",Ka,u(a.targetName),1),e("div",Ya,[(s(),n(I,null,P(x,y=>e("button",{key:y,class:i(["text-xs px-2.5 py-1.5 rounded-lg transition-colors",m.value===y?"bg-accent/20 text-accent border border-accent/30":"bg-white/5 text-white/50 hover:bg-white/10"]),onClick:A=>m.value=y},u(h(y)),11,Ja)),64))]),e("div",null,[p[4]||(p[4]=e("label",{class:"text-xs text-white/30 block mb-1"},"Amount (sats)",-1)),W(e("input",{"onUpdate:modelValue":p[0]||(p[0]=y=>m.value=y),type:"number",min:"1",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors tabular-nums",placeholder:"21"},null,512),[[Q,m.value,void 0,{number:!0}]])]),e("div",null,[p[5]||(p[5]=e("label",{class:"text-xs text-white/30 block mb-1"},"Message (optional)",-1)),W(e("input",{"onUpdate:modelValue":p[1]||(p[1]=y=>_.value=y),type:"text",class:"w-full px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors",placeholder:"Great post!"},null,512),[[Q,_.value]])]),e("button",{class:"w-full py-2.5 rounded-lg text-xs font-medium bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors disabled:opacity-30",disabled:!m.value||m.value<1||b.value,onClick:j},u(b.value?"Generating invoice...":`Zap ${h(m.value)} sats`),9,Qa),$.value?(s(),n("div",Za,[p[6]||(p[6]=e("p",{class:"text-xs text-white/30 text-center"},"Scan or tap to pay",-1)),e("div",Xa,[e("canvas",{ref_key:"qrCanvas",ref:r,class:"rounded-lg",width:"200",height:"200"},null,512)]),e("div",ei,[e("input",{value:$.value,readonly:"",class:"flex-1 px-2 py-1.5 rounded text-base bg-white/5 text-white/40 font-mono truncate outline-none"},null,8,ti),e("button",{class:"px-2 py-1.5 rounded text-xs bg-white/5 text-white/40 hover:text-white/60 transition-colors",onClick:D},u(o.value?"Copied":"Copy"),1)]),e("a",{href:"lightning:"+$.value,class:"block w-full py-2 rounded-lg text-xs text-center bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors"}," Open in wallet ",8,si)])):f("",!0),d.value?(s(),n("p",ni,u(d.value),1)):f("",!0)])],544)):f("",!0)}}),oi={class:"h-full flex flex-col"},ai={class:"flex items-center gap-2 px-4 py-3 border-b border-white/[0.08]"},ii={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-2"},ri={key:0,class:"flex items-center justify-center py-12"},ci={key:1,class:"rounded-xl bg-white/[0.05] border border-white/10 p-3"},di={class:"flex items-center gap-1.5 mb-1"},ui={class:"w-6 h-6 rounded-full shrink-0 flex items-center justify-center text-xs font-bold bg-purple-500/20 text-purple-400"},hi={class:"text-xs font-semibold text-white/80"},xi={class:"text-xs ml-auto text-white/20"},pi={class:"text-xs text-white/70 leading-relaxed whitespace-pre-wrap"},gi={key:2,class:"space-y-1"},bi={class:"text-xs text-white/30 font-medium mt-3 mb-1"},vi={key:3,class:"flex items-center justify-center py-12"},fi={key:0,class:"px-4 py-3 border-t border-white/[0.08]"},mi={key:0,class:"text-xs text-white/30 mb-1"},wi={class:"flex gap-2"},yi=["disabled"],ki=G({__name:"NostrThread",props:{noteId:{}},emits:["back"],setup(a){const c=Jt(()=>pt(()=>import("./ThreadNode-mLK8lEzr.js"),__vite__mapDeps([3,1,2]))),l=a,{fetchNote:w,publishEvent:g}=Ie(),{isLoggedIn:v,signEvent:x,pubkey:m}=me(),_=S(null),$=S([]),b=S(!0),d=S(null),o=S("");function r(k){const p=new Date(k*1e3);return p.toLocaleTimeString("en",{hour:"2-digit",minute:"2-digit"})+" "+p.toLocaleDateString("en",{month:"short",day:"numeric"})}function h(k){return k.length<=12?k:k.slice(0,8)+"..."+k.slice(-4)}async function M(){b.value=!0;const k=await w(l.noteId);if(!k){b.value=!1;return}_.value=k;const p=await j(l.noteId);$.value=L(p,l.noteId),b.value=!1}async function j(k){return new Promise(p=>{const y=[],A="thread-"+Math.random().toString(36).slice(2,8);let V=!1;const E=setTimeout(()=>{V||(V=!0,p(y))},8e3),J="wss://relay.nostr.band";try{const H=new WebSocket(J);H.onopen=()=>{H.send(JSON.stringify(["REQ",A,{kinds:[1],"#e":[k],limit:100}]))},H.onmessage=K=>{try{const F=JSON.parse(K.data);if(Array.isArray(F)&&F[0]==="EVENT"&&F[1]===A&&F[2]){const O=F[2];y.find(X=>X.id===O.id)||y.push({id:O.id,pubkey:O.pubkey,authorName:h(O.pubkey),kind:O.kind,content:O.content,created_at:O.created_at,tags:O.tags??[]})}Array.isArray(F)&&F[0]==="EOSE"&&F[1]===A&&(clearTimeout(E),H.close(),V||(V=!0,p(y)))}catch{}},H.onerror=()=>{clearTimeout(E),V||(V=!0,p(y))},H.onclose=()=>{V||(V=!0,p(y))}}catch{clearTimeout(E),p(y)}})}function L(k,p,y=5){const A=new Map;for(const E of k){let J=p;const H=E.tags.filter(F=>F[0]==="e");if(H.length>0){const F=H.find(O=>O[3]==="reply");J=F?F[1]:H[H.length-1][1]}const K=A.get(J)??[];K.push(E),A.set(J,K)}function V(E,J){const H=A.get(E)??[];return H.sort((K,F)=>K.created_at-F.created_at),H.map(K=>({note:K,children:J{M()}),(k,p)=>(s(),n("div",oi,[e("div",ai,[e("button",{class:"min-w-[44px] min-h-[44px] flex items-center justify-center rounded-lg text-white/60 hover:text-white/80 hover:bg-white/10 transition-colors",onClick:p[0]||(p[0]=y=>k.$emit("back"))},[...p[3]||(p[3]=[e("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 19l-7-7 7-7"})],-1)])]),p[4]||(p[4]=e("h3",{class:"text-sm font-bold text-white/90"},"Thread",-1))]),e("div",ii,[b.value?(s(),n("div",ri,[...p[5]||(p[5]=[e("p",{class:"text-xs text-white/30"},"Loading thread...",-1)])])):f("",!0),_.value?(s(),n("div",ci,[e("div",di,[e("div",ui,u(_.value.authorName?.charAt(0)?.toUpperCase()??"?"),1),e("span",hi,u(_.value.authorName??"anon"),1),e("span",xi,u(r(_.value.created_at)),1)]),e("p",pi,u(_.value.content),1)])):f("",!0),$.value.length>0?(s(),n("div",gi,[e("p",bi,u($.value.length)+" replies",1),(s(!0),n(I,null,P($.value,y=>(s(),U(t(c),{key:y.note.id,node:y,depth:0,onReply:D},null,8,["node"]))),128))])):f("",!0),!b.value&&!_.value?(s(),n("div",vi,[...p[6]||(p[6]=[e("p",{class:"text-xs text-white/30"},"Thread not found",-1)])])):f("",!0)]),_.value&&t(v)?(s(),n("div",fi,[d.value?(s(),n("p",mi,[ne(" Replying to "+u(d.value.authorName??"anon")+" ",1),e("button",{class:"text-accent/60 ml-1",onClick:p[1]||(p[1]=y=>d.value=null)},"cancel")])):f("",!0),e("div",wi,[W(e("input",{"onUpdate:modelValue":p[2]||(p[2]=y=>o.value=y),type:"text",placeholder:"Reply...",class:"flex-1 px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors",onKeydown:ae(C,["enter"])},null,544),[[Q,o.value]]),e("button",{class:"px-3 py-2 rounded-lg text-xs bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors disabled:opacity-30",disabled:!o.value.trim(),onClick:C}," Reply ",8,yi)])])):f("",!0)]))}}),$i={class:"h-full flex flex-col"},_i={class:"p-4 border-b border-white/[0.08]"},Ci={class:"flex gap-1.5 flex-wrap"},ji=["onClick"],Si={key:0,class:"flex-1 flex items-center justify-center"},Mi={key:1,class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-2"},Ti={key:0,class:"flex items-center justify-center py-12"},Di={class:"flex gap-2 mb-3"},Ii=["placeholder"],Bi=["disabled"],Li={class:"w-6 h-6 rounded-full shrink-0 flex items-center justify-center text-xs font-bold bg-purple-500/20 text-purple-400"},Pi={class:"flex-1 min-w-0"},Ni={class:"text-xs text-white/60 font-mono truncate"},Ai={key:0,class:"text-xs text-white/30"},zi=["onClick"],Ei={key:1,class:"flex items-center justify-center py-12"},Fi=["disabled"],Ri=G({__name:"NostrLists",setup(a){const{isLoggedIn:c,signEvent:l,pubkey:w}=me(),{publishEvent:g}=Ie(),v=[{kind:3,label:"Follows"},{kind:1e4,label:"Mute"},{kind:10001,label:"Pin"},{kind:10003,label:"Bookmarks"}],x=S(3),m=S([]),_=S(!1),$=S(!1),b=S(""),d=S(!1),o=S(""),r=S(!1);function h(k){return k.length<=16?k:k.slice(0,8)+"..."+k.slice(-8)}function M(k){return k.filter(p=>p[0]==="p"||p[0]==="e"||p[0]==="t").map(p=>{let y=h(p[1]);if(p[0]==="p")try{y=He(p[1])}catch{}return{tag:p[0],value:p[1],displayValue:y,relay:p[2]||void 0,petname:p[3]||void 0}})}async function j(k){if(w.value){_.value=!0,$.value=!1,m.value=[];try{const p=new WebSocket("wss://relay.nostr.band"),y="list-"+Math.random().toString(36).slice(2,8),A=setTimeout(()=>{p.close(),_.value=!1},8e3);p.onopen=()=>{p.send(JSON.stringify(["REQ",y,{kinds:[k],authors:[w.value],limit:1}]))},p.onmessage=V=>{try{const E=JSON.parse(V.data);if(Array.isArray(E)&&E[0]==="EVENT"&&E[1]===y&&E[2]){const J=E[2];m.value=M(J.tags)}Array.isArray(E)&&E[0]==="EOSE"&&(clearTimeout(A),p.close(),_.value=!1)}catch{}},p.onerror=()=>{clearTimeout(A),_.value=!1}}catch{_.value=!1}}}function L(){let k=b.value.trim();if(!k)return;let p=k;const y=x.value===3||x.value===1e4?"p":"e";if(k.startsWith("npub"))try{p=gt(k)}catch{return}if(m.value.find(V=>V.value===p))return;let A=h(p);if(y==="p")try{A=He(p)}catch{}m.value.push({tag:y,value:p,displayValue:A}),$.value=!0,b.value=""}function D(k){m.value=m.value.filter(p=>p.value!==k.value),$.value=!0}async function C(){if(!w.value)return;d.value=!0,o.value="";const k=m.value.map(E=>{const J=[E.tag,E.value];return E.relay&&J.push(E.relay),E.petname&&J.push(E.petname),J}),p={kind:x.value,created_at:Math.floor(Date.now()/1e3),tags:k,content:""},y=await l(p);if(!y){d.value=!1,o.value="Signing failed",r.value=!1;return}const A=await g(y),V=A.filter(E=>E.success).length;d.value=!1,$.value=!1,V>0?(o.value=`Published to ${V}/${A.length} relays`,r.value=!0):(o.value="Failed to publish",r.value=!1)}return oe(()=>{j(x.value)}),(k,p)=>(s(),n("div",$i,[e("div",_i,[p[1]||(p[1]=e("h3",{class:"text-sm font-bold text-white/90 mb-3"},"Nostr Lists",-1)),e("div",Ci,[(s(),n(I,null,P(v,y=>e("button",{key:y.kind,class:i(["text-xs px-2 py-1 rounded-md transition-all duration-150",x.value===y.kind?"nav-tab-active":"text-white/40 hover:text-white/70 hover:bg-white/5"]),onClick:A=>{x.value=y.kind,j(y.kind)}},u(y.label),11,ji)),64))])]),t(c)?(s(),n("div",Mi,[_.value?(s(),n("div",Ti,[...p[3]||(p[3]=[e("p",{class:"text-xs text-white/30"},"Loading list...",-1)])])):f("",!0),e("div",Di,[W(e("input",{"onUpdate:modelValue":p[0]||(p[0]=y=>b.value=y),type:"text",placeholder:x.value===3?"Add npub or hex pubkey...":"Add item (hex id or npub)...",class:"flex-1 px-3 py-2 rounded-lg text-base bg-white/5 text-white/80 placeholder:text-white/25 outline-none focus:bg-white/10 transition-colors font-mono",onKeydown:ae(L,["enter"])},null,40,Ii),[[Q,b.value]]),e("button",{class:"px-2.5 py-2 rounded-lg text-xs bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors disabled:opacity-30",disabled:!b.value.trim(),onClick:L}," Add ",8,Bi)]),(s(!0),n(I,null,P(m.value,y=>(s(),n("div",{key:y.value,class:"flex items-center gap-2 p-2.5 rounded-xl bg-white/[0.03] border border-white/5"},[e("div",Li,u(y.tag==="p"?"P":y.tag==="e"?"E":y.tag==="t"?"#":"?"),1),e("div",Pi,[e("p",Ni,u(y.displayValue),1),y.petname?(s(),n("p",Ai,u(y.petname),1)):f("",!0)]),e("button",{class:"text-xs px-2 py-1 rounded bg-white/5 text-red-400/50 hover:text-red-400/80 hover:bg-red-400/10 transition-colors shrink-0",onClick:A=>D(y)}," Remove ",8,zi)]))),128)),!_.value&&m.value.length===0?(s(),n("div",Ei,[...p[4]||(p[4]=[e("p",{class:"text-xs text-white/30"},"List is empty",-1)])])):f("",!0),$.value?(s(),n("button",{key:2,class:"w-full py-2.5 rounded-lg text-xs font-medium bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors disabled:opacity-30 mt-4",disabled:d.value,onClick:C},u(d.value?"Publishing...":"Publish updated list"),9,Fi)):f("",!0),o.value?(s(),n("p",{key:3,class:i(["text-xs text-center",r.value?"text-emerald-400/60":"text-red-400/60"])},u(o.value),3)):f("",!0)])):(s(),n("div",Si,[...p[2]||(p[2]=[e("p",{class:"text-xs text-white/30"},"Sign in with Nostr to manage lists",-1)])]))]))}}),Vi={class:"article-reader h-full flex"},Ui={key:0,class:"hidden lg:flex flex-col w-56 shrink-0 border-r border-white/5 overflow-y-auto scrollbar-hide py-4 px-3"},qi=["onClick"],Gi={class:"sticky top-0 z-10 flex items-center gap-2 px-4 py-2 bg-black/60 backdrop-blur-md border-b border-white/5"},Oi={class:"flex-1 text-xs text-white/40 truncate"},Hi=["disabled"],Wi=["disabled"],Ki={key:0,class:"lg:hidden bg-black/40 backdrop-blur-md border-b border-white/5 px-4 py-2 space-y-0.5 animate-fade-up-fast"},Yi=["onClick"],Ji={key:0,class:"text-xl font-bold text-white/96 mb-4"},Qi=["innerHTML"],Zi=G({__name:"ArticleReader",props:{content:{},title:{}},emits:["back"],setup(a){const c=a,l=[13,15,17,19,21],w=localStorage.getItem("aiui-article-font-size"),g=S(w?parseInt(w,10):1);ce(g,D=>{localStorage.setItem("aiui-article-font-size",String(D))});const v=S(!1),x=new cs({html:!1,linkify:!0,breaks:!0});x.renderer.rules.heading_open=(D,C,k,p,y)=>{const A=D[C],V=parseInt(A.tag.slice(1),10);if(V===2||V===3){const H=(D[C+1]?.children?.reduce((K,F)=>K+(F.content||""),"")||"").toLowerCase().replace(/[^\w]+/g,"-").replace(/(^-|-$)/g,"");A.attrSet("id",H)}return y.renderToken(D,C,k)};const m=x.renderer.rules.link_open||function(D,C,k,p,y){return y.renderToken(D,C,k)};x.renderer.rules.link_open=function(D,C,k,p,y){return D[C].attrSet("target","_blank"),D[C].attrSet("rel","noopener noreferrer"),m(D,C,k,p,y)};const _=B(()=>x.render(c.content)),$=B(()=>{const D=[],C=/^(#{2,3})\s+(.+)$/gm;let k;for(;(k=C.exec(c.content))!==null;){const p=k[2].trim(),y=p.toLowerCase().replace(/[^\w]+/g,"-").replace(/(^-|-$)/g,"");D.push({text:p,id:y,level:k[1].length})}return D}),b=B(()=>{const D=c.content.split(/\s+/).length;return Math.max(1,Math.ceil(D/200))}),d=S(null),o=S(null),r=S(0);let h=null;function M(){if(!d.value)return;h?.disconnect(),h=new IntersectionObserver(C=>{for(const k of C)if(k.isIntersecting){const p=k.target.id,y=$.value.findIndex(A=>A.id===p);y>=0&&(r.value=y)}},{root:d.value,rootMargin:"-20% 0px -60% 0px",threshold:0}),o.value?.querySelectorAll("h2[id], h3[id]")?.forEach(C=>h.observe(C))}oe(()=>{setTimeout(M,100)}),ce(()=>c.content,()=>{setTimeout(M,100)}),Qt(()=>{h?.disconnect()});function j(D){o.value?.querySelector(`#${CSS.escape(D)}`)?.scrollIntoView({behavior:"smooth",block:"start"})}function L(){const D=window.open("","_blank");D&&(D.document.write(` ${c.title||"Article"} "+y+""+x+"":h==="javascript"||h==="js"?""+y+""+b+x+m+"":h==="css"?"
CSS Preview
':""}function a(){u.value=[],n.value=!1,requestAnimationFrame(()=>{n.value=!0})}function l(){u.value=[]}function d(h){h.data?.type==="code-runner-console"&&u.value.push({type:h.data.level==="error"?"error":"log",text:h.data.text})}return ve(()=>{window.addEventListener("message",d)}),uu(()=>{window.removeEventListener("message",d)}),(h,x)=>(f(),p("div",Uc,[c("div",Hc,[c("span",Vc,k(e.language),1),x[0]||(x[0]=c("div",{class:"flex-1"},null,-1)),c("button",{class:"text-xs px-2.5 py-1 rounded bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors",onClick:a}," Run "),u.value.length>0?(f(),p("button",{key:0,class:"text-xs px-2 py-1 rounded bg-white/5 text-white/40 hover:text-white/60 hover:bg-white/10 transition-colors",onClick:l}," Clear ")):C("",!0)]),c("pre",Wc,[c("code",null,k(e.code),1)]),n.value?(f(),p("iframe",{key:0,ref_key:"iframeRef",ref:s,srcdoc:i.value,sandbox:"allow-scripts",class:A(["w-full border-t border-white/5",o.value?"h-48":"h-0 invisible"]),title:"Code output"},null,10,Gc)):C("",!0),u.value.length>0?(f(),p("div",Zc,[x[1]||(x[1]=c("p",{class:"text-xs text-white/20 uppercase tracking-wider mb-1"},"Console",-1)),(f(!0),p(q,null,W(u.value,(b,m)=>(f(),p("div",{key:m,class:A(["text-xs font-mono leading-relaxed",b.type==="error"?"text-red-400/80":"text-white/60"])},k(b.text),3))),128))])):C("",!0)]))}}),Yc={class:"rounded-xl bg-white/5 border border-white/10 p-3 space-y-2"},Jc={class:"flex items-center gap-2"},Qc={class:"text-xs px-1.5 py-0.5 rounded bg-white/5 text-white/30"},Xc={class:"text-xs font-mono text-white/70 break-all leading-relaxed select-all"},ed={class:"flex justify-center py-2"},td={class:"flex gap-2"},ud=["href"],nd=K({__name:"BitcoinAddressCard",props:{address:{}},setup(e){const t=e,u=D(null),n=D(!1),s=_(()=>{const a=t.address;return a.startsWith("bc1q")?"SegWit (bech32)":a.startsWith("bc1p")?"Taproot (bech32m)":a.startsWith("1")?"Legacy (P2PKH)":a.startsWith("3")?"Nested SegWit (P2SH)":a.startsWith("tb1")||a.startsWith("2")||a.startsWith("m")||a.startsWith("n")?"Testnet":"Unknown"}),o=_(()=>`https://mempool.space/address/${t.address}`);function i(){navigator.clipboard.writeText(t.address),n.value=!0,setTimeout(()=>{n.value=!1},2e3)}function r(){const a=u.value;if(!a)return;const l=a.getContext("2d");if(!l)return;l.fillStyle="#1a1a1a",l.fillRect(0,0,160,160),l.fillStyle="#F7931A",l.font="8px monospace",l.textAlign="center";const d=`bitcoin:${t.address}`,h=[];for(let b=0;b{l.fillText(b,80,x+m*10)})}return ve(()=>{r()}),(a,l)=>(f(),p("div",Yc,[c("div",Jc,[l[0]||(l[0]=c("span",{class:"text-xs text-accent/60 uppercase tracking-wider font-bold"},"Bitcoin Address",-1)),c("span",Qc,k(s.value),1)]),c("p",Xc,k(e.address),1),c("div",ed,[c("canvas",{ref_key:"qrCanvas",ref:u,class:"rounded-lg",width:"160",height:"160"},null,512)]),c("div",td,[c("button",{class:"flex-1 py-2 rounded-lg text-xs bg-white/5 text-white/50 hover:text-white/70 hover:bg-white/10 transition-colors",onClick:i},k(n.value?"Copied!":"Copy Address"),1),c("a",{href:o.value,target:"_blank",rel:"noopener noreferrer",class:"flex-1 py-2 rounded-lg text-xs text-center bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors"}," View on Mempool ",8,ud)])]))}}),sd={class:"rounded-xl bg-white/5 border border-white/10 p-3 space-y-2"},od={class:"flex items-center gap-2"},rd={key:0,class:"text-xs px-1.5 py-0.5 rounded bg-red-400/15 text-red-400/80"},id={key:0,class:"flex items-center gap-2"},ad={class:"text-lg font-bold text-accent tabular-nums"},ld={key:1,class:"text-xs text-white/50"},cd={key:2,class:"flex items-center gap-1.5"},dd={class:"text-xs font-mono text-white/30 break-all line-clamp-2 select-all"},fd={class:"flex gap-2"},hd=["href"],pd=K({__name:"Bolt11InvoiceCard",props:{invoice:{}},setup(e){const t=e,u=D(!1),n=D(Math.floor(Date.now()/1e3));let s=null;const o=_(()=>{const m=t.invoice.toLowerCase().match(/^lnbc(\d+)([munp]?)1/);if(!m)return null;const y=parseInt(m[1]);switch(m[2]){case"m":return y*1e5;case"u":return y*100;case"n":return Math.round(y*.1);case"p":return Math.round(y*1e-4);default:return y*1e8}}),i=_(()=>null),r=_(()=>null),a=_(()=>r.value?n.value>r.value:!1),l=_(()=>r.value?r.value-n.value<300:!1),d=_(()=>{if(!r.value)return null;const b=r.value-n.value;if(b<=0)return"Expired";const m=Math.floor(b/60);return m<60?`Expires in ${m}m`:`Expires in ${Math.floor(m/60)}h ${m%60}m`});function h(b){return b.toLocaleString()}function x(){navigator.clipboard.writeText(t.invoice),u.value=!0,setTimeout(()=>{u.value=!1},2e3)}return ve(()=>{s=setInterval(()=>{n.value=Math.floor(Date.now()/1e3)},1e3)}),uu(()=>{s&&clearInterval(s)}),(b,m)=>(f(),p("div",sd,[c("div",od,[m[0]||(m[0]=c("span",{class:"text-xs text-accent/60 uppercase tracking-wider font-bold"},"Lightning Invoice",-1)),a.value?(f(),p("span",rd," Expired ")):C("",!0)]),o.value?(f(),p("div",id,[c("span",ad,k(h(o.value)),1),m[1]||(m[1]=c("span",{class:"text-xs text-white/30"},"sats",-1))])):C("",!0),i.value?(f(),p("p",ld,k(i.value),1)):C("",!0),d.value?(f(),p("div",cd,[c("span",{class:A(["text-xs tabular-nums",a.value||l.value?"text-red-400/60":"text-white/30"])},k(d.value),3)])):C("",!0),c("p",dd,k(e.invoice),1),c("div",fd,[c("button",{class:"flex-1 py-2 rounded-lg text-xs bg-white/5 text-white/50 hover:text-white/70 hover:bg-white/10 transition-colors",onClick:x},k(u.value?"Copied!":"Copy"),1),c("a",{href:"lightning:"+e.invoice,class:"flex-1 py-2 rounded-lg text-xs text-center bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors"}," Pay with wallet ",8,hd)])]))}}),xd={class:"rounded-xl bg-white/5 border border-white/10 p-3 space-y-2"},md={class:"text-xs font-mono text-white/50 break-all line-clamp-2 select-all"},bd={class:"flex justify-center py-2"},gd={class:"flex gap-2"},vd=["href"],kd=K({__name:"Bolt12OfferCard",props:{offer:{}},setup(e){const t=e,u=D(null),n=D(!1);function s(){navigator.clipboard.writeText(t.offer),n.value=!0,setTimeout(()=>{n.value=!1},2e3)}function o(){const i=u.value;if(!i)return;const r=i.getContext("2d");if(!r)return;r.fillStyle="#1a1a1a",r.fillRect(0,0,140,140),r.fillStyle="#F7931A",r.font="7px monospace",r.textAlign="center";const a=[];for(let d=0;d{r.fillText(d,70,l+h*9)})}return ve(()=>{o()}),(i,r)=>(f(),p("div",xd,[r[0]||(r[0]=c("div",{class:"flex items-center gap-2"},[c("span",{class:"text-xs text-accent/60 uppercase tracking-wider font-bold"},"BOLT12 Offer")],-1)),c("p",md,k(e.offer),1),c("div",bd,[c("canvas",{ref_key:"qrCanvas",ref:u,class:"rounded-lg",width:"140",height:"140"},null,512)]),c("div",gd,[c("button",{class:"flex-1 py-2 rounded-lg text-xs bg-white/5 text-white/50 hover:text-white/70 hover:bg-white/10 transition-colors",onClick:s},k(n.value?"Copied!":"Copy Offer"),1),c("a",{href:"lightning:"+e.offer,class:"flex-1 py-2 rounded-lg text-xs text-center bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors"}," Pay with wallet ",8,vd)])]))}}),wd={class:"rounded-xl bg-white/5 border border-white/10 p-3 space-y-2"},yd={class:"flex items-center gap-2"},_d={class:"text-xs font-mono text-white/40 break-all select-all"},Cd={key:0,class:"grid grid-cols-2 gap-2 text-xs"},Ed={class:"text-white/60 tabular-nums"},Dd={class:"text-white/60 tabular-nums"},Ad={class:"text-white/60 tabular-nums"},Fd={class:"text-white/60 tabular-nums"},$d={key:1,class:"py-2"},Sd={key:2,class:"py-2"},Md={class:"text-xs text-red-400/60"},Td=["href"],Id=K({__name:"MempoolTxCard",props:{txid:{}},setup(e){const t=e,u=D(null),n=D(!0),s=D("");async function o(){n.value=!0,s.value="";try{const i=await fetch(`https://mempool.space/api/tx/${t.txid}`);if(!i.ok)throw new Error("Transaction not found");const r=await i.json(),a=!!r.status?.confirmed;let l=0;if(a&&r.status?.block_height){const d=await fetch("https://mempool.space/api/blocks/tip/height");d.ok&&(l=parseInt(await d.text())-r.status.block_height+1)}u.value={fee:r.fee??0,feeRate:r.weight?Math.round(r.fee/r.weight*4):0,size:r.weight?Math.round(r.weight/4):r.size??0,confirmed:a,confirmations:l,blockHeight:r.status?.block_height??null}}catch(i){s.value=i instanceof Error?i.message:"Failed to load transaction"}finally{n.value=!1}}return ve(()=>{o()}),(i,r)=>(f(),p("div",wd,[c("div",yd,[r[0]||(r[0]=c("span",{class:"text-xs text-accent/60 uppercase tracking-wider font-bold"},"Transaction",-1)),u.value?(f(),p("span",{key:0,class:A(["text-xs px-1.5 py-0.5 rounded",u.value.confirmed?"bg-emerald-400/15 text-emerald-400/80":"bg-yellow-400/15 text-yellow-400/80"])},k(u.value.confirmed?`${u.value.confirmations} confirmations`:"Unconfirmed"),3)):C("",!0)]),c("p",_d,k(e.txid),1),u.value?(f(),p("div",Cd,[c("div",null,[r[1]||(r[1]=c("p",{class:"text-white/25"},"Fee",-1)),c("p",Ed,k(u.value.fee.toLocaleString())+" sats",1)]),c("div",null,[r[2]||(r[2]=c("p",{class:"text-white/25"},"Fee Rate",-1)),c("p",Dd,k(u.value.feeRate)+" sat/vB",1)]),c("div",null,[r[3]||(r[3]=c("p",{class:"text-white/25"},"Size",-1)),c("p",Ad,k(u.value.size)+" vB",1)]),c("div",null,[r[4]||(r[4]=c("p",{class:"text-white/25"},"Block",-1)),c("p",Fd,k(u.value.blockHeight??"Pending"),1)])])):n.value?(f(),p("div",$d,[...r[5]||(r[5]=[c("p",{class:"text-xs text-white/30"},"Loading transaction...",-1)])])):s.value?(f(),p("div",Sd,[c("p",Md,k(s.value),1)])):C("",!0),c("a",{href:`https://mempool.space/tx/${e.txid}`,target:"_blank",rel:"noopener noreferrer",class:"block w-full py-2 rounded-lg text-xs text-center bg-accent/15 text-accent/80 hover:bg-accent/25 transition-colors"}," View on Mempool.space ",8,Td)]))}}),Rd=/\b(bc1q[a-z0-9]{38,62})\b/gi,Bd=/\b(bc1p[a-z0-9]{38,62})\b/gi,Ld=/\b(1[13456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{25,34})\b/g,zd=/\b(3[13456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{25,34})\b/g,Pd=/\b(tb1[a-z0-9]{38,62})\b/gi,Od=/\b(lnbc[a-z0-9]+)\b/gi,jd=/\b(lno1[a-z0-9]+)\b/gi,Nd=/\b([a-f0-9]{64})\b/gi;function qd(e){const t=[],u=new Set;for(const n of e.matchAll(Rd))u.has(n[1].toLowerCase())||(u.add(n[1].toLowerCase()),t.push({address:n[1],type:"bech32"}));for(const n of e.matchAll(Bd))u.has(n[1].toLowerCase())||(u.add(n[1].toLowerCase()),t.push({address:n[1],type:"bech32m"}));for(const n of e.matchAll(Ld))u.has(n[1])||(u.add(n[1]),t.push({address:n[1],type:"p2pkh"}));for(const n of e.matchAll(zd))u.has(n[1])||(u.add(n[1]),t.push({address:n[1],type:"p2sh"}));for(const n of e.matchAll(Pd))u.has(n[1].toLowerCase())||(u.add(n[1].toLowerCase()),t.push({address:n[1],type:"testnet"}));return t}function Ud(e){const t=[],u=new Set;for(const n of e.matchAll(Od)){const s=n[1].toLowerCase();u.has(s)||(u.add(s),t.push({invoice:n[1]}))}return t}function Hd(e){const t=[],u=new Set;for(const n of e.matchAll(jd)){const s=n[1].toLowerCase();u.has(s)||(u.add(s),t.push({offer:n[1]}))}return t}function Vd(e){const t=[],u=new Set;for(const n of e.matchAll(Nd))u.has(n[1])||(u.add(n[1]),t.push({txid:n[1]}));return t}const Vn=/^(\|[^\n]+\|)\n(\|[\s:|-]+\|)\n((?:\|[^\n]+\|\n?)+)/gm;function Wd(e){const t=[];let u;const n=new RegExp(Vn.source,Vn.flags);for(;(u=n.exec(e))!==null;){const s=u[1],o=u[3],i=Wn(s),r=o.trim().split(` -`).map(Wn).filter(a=>a.length>0);i.length>0&&r.length>0&&t.push({headers:i,rows:r,raw:u[0]})}return t}function Wn(e){return e.replace(/^\|/,"").replace(/\|$/,"").split("|").map(t=>t.trim())}const Gd=new Set(["html","javascript","js","css"]),Gn=/```(html|javascript|js|css)\n([\s\S]*?)```/gi;function Zd(e){const t=[];let u;const n=new RegExp(Gn.source,Gn.flags);for(;(u=n.exec(e))!==null;){const s=u[1].toLowerCase(),o=u[2].trim();Gd.has(s)&&o.length>0&&t.push({language:s,code:o})}return t}const Kd={class:"relative max-w-[85%] md:max-w-[75%]"},Yd={class:"flex items-center gap-2 px-1 py-0.5 rounded-lg bg-black/60 backdrop-blur-md border border-white/10 shadow-lg"},Jd={key:3,class:"w-px h-4 bg-white/10 mx-0.5"},Qd=["onKeydown"],Xd={key:0,class:"flex gap-2 flex-wrap mb-2"},e1=["src","alt"],t1=["innerHTML"],u1={key:2,class:"text-sm leading-relaxed whitespace-pre-wrap break-words text-white/90"},n1={key:21,class:"flex items-center gap-2 mt-1.5"},s1={class:"text-xs select-none text-white/30"},o1={key:0,class:"text-xs text-white/25 select-none"},r1=["title"],i1={key:2,class:"text-xs select-none"},a1=K({__name:"ChatMessage",props:{message:{},index:{},triggeringQuery:{default:""}},emits:["edit","regenerate","branch","reply","feedback"],setup(e,{emit:t}){const u=e,n=t;function s(N){const S=u.message.feedback===N?void 0:N;n("feedback",u.message.id,S)}const o=D(!1),i=D(""),r=D(null);function a(){i.value=u.message.content,o.value=!0,be(()=>{r.value?.focus(),r.value&&(r.value.style.height="auto",r.value.style.height=r.value.scrollHeight+"px")})}function l(){o.value=!1,i.value=""}function d(){const N=i.value.trim();N&&(n("edit",u.message.id,N),o.value=!1,i.value="")}const{getContextualInlineContent:h,stripContentTags:x,stripMarkdownLinks:b,updatePanelFromText:m,panelOpen:y,availableTabs:F,setActiveTab:T,openFilmDetail:v,openBookDetail:g,openTVSeriesDetail:w,openPlaceDetail:$,openSongDetail:I,openPodcastDetail:j,openArticleDetail:Q,openWebsiteDetail:P,openLongFormArticle:R,openMapView:Z,closeFilmDetail:te,closeBookDetail:V,closeTVSeriesDetail:M,closePlaceDetail:G,closeSongDetail:ue,closePodcastDetail:ce}=Et(),Oe=Ou(),Y=_(()=>u.message.role==="user"),me=_(()=>Y.value?{films:[],books:[],tvSeries:[],images:[],places:[],songs:[],podcasts:[],newsLinks:[],websitesLinks:[],magazineSections:[]}:h(u.message.content,u.triggeringQuery,u.message.webResults??[])),tt=_(()=>Y.value?"path-glass-bubble-user rounded-br-md rounded-2xl":"path-glass-bubble rounded-bl-md rounded-2xl"),Se=_(()=>me.value.films),O=_(()=>me.value.books??[]),H=_(()=>me.value.tvSeries??[]),ie=_(()=>me.value.images??[]),le=_(()=>me.value.places??[]),Ae=_(()=>me.value.songs),Ke=_(()=>me.value.podcasts),je=_(()=>me.value.newsLinks??[]),Ne=_(()=>me.value.websitesLinks??[]),$t=_(()=>me.value.magazineSections??[]),Ye=/nostr:(note1[a-z0-9]{58}|npub1[a-z0-9]{58}|nevent1[a-z0-9]+|nprofile1[a-z0-9]+)/g,dt=_(()=>{if(Y.value)return[];const N=u.message.content.match(Ye);return N?[...new Set(N)]:[]}),B=_(()=>Y.value?[]:z0(u.message.content)),z=_(()=>Y.value?[]:Do(u.message.content)),ee=_(()=>Y.value?[]:Wd(u.message.content)),ae=_(()=>Y.value?[]:Ao(u.message.content)),J=_(()=>Y.value?[]:Zd(u.message.content)),ke=_(()=>Y.value?[]:qd(u.message.content)),Je=_(()=>Y.value?[]:Ud(u.message.content)),Yu=_(()=>Y.value?[]:Hd(u.message.content)),Ju=_(()=>Y.value?[]:Vd(u.message.content)),Qu=_(()=>!Y.value&&u.triggeringQuery.trim().toLowerCase()==="/code"),Xu=_(()=>!Y.value&&(Qu.value||Se.value.length>0||O.value.length>0||H.value.length>0||ie.value.length>0||Ae.value.length>0||Ke.value.length>0||je.value.length>0||Ne.value.length>0||$t.value.length>0)),iu=new Ce({html:!1,linkify:!0,breaks:!0}),Ns=iu.renderer.rules.link_open||function(N,S,L,oe,lu){return lu.renderToken(N,S,L)};iu.renderer.rules.link_open=function(N,S,L,oe,lu){return N[S].attrSet("target","_blank"),N[S].attrSet("rel","noopener noreferrer"),Ns(N,S,L,oe,lu)};const St=_(()=>{if(Y.value)return u.message.content;let N=x(u.message.content);if((je.value.length>0||Ne.value.length>0)&&(N=b(N)),dt.value.length>0&&(N=N.replace(Ye,"").replace(/\n{3,}/g,` +`+x,m=new Blob([b],{type:"text/csv"}),w=URL.createObjectURL(m),A=document.createElement("a");A.href=w,A.download="table.csv",A.click(),URL.revokeObjectURL(w)}function d(h){return h.includes(",")||h.includes('"')||h.includes(` +`)?`"${h.replace(/"/g,'""')}"`:h}return(h,x)=>(f(),p("div",Ac,[c("div",Fc,[pe(c("input",{"onUpdate:modelValue":x[0]||(x[0]=b=>u.value=b),type:"text",class:"flex-1 bg-white/5 border border-white/10 rounded px-2 py-1 text-base text-white/80 outline-none focus:border-accent/40 placeholder:text-white/25",placeholder:"Filter rows..."},null,512),[[ge,u.value]]),c("button",{class:"text-xs px-2 py-1 rounded bg-white/5 border border-white/10 text-white/50 hover:text-white/80 hover:bg-white/10 transition-colors",title:"Export CSV",onClick:l}," CSV ")]),c("div",$c,[c("table",Sc,[c("thead",null,[c("tr",Mc,[(f(!0),p(q,null,W(e.headers,(b,m)=>(f(),p("th",{key:m,class:"px-3 py-2 text-left text-white/50 font-medium cursor-pointer hover:text-white/70 select-none whitespace-nowrap",onClick:w=>o(m)},[c("span",Ic,[ne(k(b)+" ",1),n.value===m?(f(),p("span",Rc,k(s.value==="asc"?"↑":"↓"),1)):C("",!0)])],8,Tc))),128))])]),c("tbody",null,[(f(!0),p(q,null,W(a.value,(b,m)=>(f(),p("tr",{key:m,class:"border-b border-white/5 hover:bg-white/5 transition-colors"},[(f(!0),p(q,null,W(b,(w,A)=>(f(),p("td",{key:A,class:"px-3 py-1.5 text-white/70 whitespace-nowrap"},k(w),1))),128))]))),128))])])]),i.value.length===0?(f(),p("div",Bc," No matching rows ")):C("",!0),i.value.length>0?(f(),p("div",Lc,[ne(k(i.value.length)+" row"+k(i.value.length===1?"":"s")+" ",1),u.value?(f(),p("span",zc," (filtered from "+k(e.rows.length)+")",1)):C("",!0)])):C("",!0)]))}}),Oc={class:"timeline-renderer my-4"},jc={class:"relative"},Nc={class:"text-xs text-white/40 tabular-nums pt-1"},qc={class:"ml-10 md:ml-0 md:w-[calc(50%-2rem)] shrink-0"},Uc={class:"rounded-lg bg-white/5 border border-white/10 px-3 py-2"},Hc={class:"text-xs text-white/30 md:hidden tabular-nums"},Vc={class:"text-xs font-medium text-white/90"},Wc={key:0,class:"text-xs text-white/40 mt-0.5"},Gc={key:1,class:"text-xs text-white/50 mt-1 line-clamp-2"},Zc=J({__name:"TimelineRenderer",props:{events:{}},setup(e){function t(u){if(!u)return"";const n=new Date(u);return isNaN(n.getTime())?u:n.toLocaleDateString("en",{year:"numeric",month:"short",day:"numeric"})}return(u,n)=>(f(),p("div",Oc,[c("div",jc,[n[1]||(n[1]=c("div",{class:"absolute left-4 md:left-1/2 top-0 bottom-0 w-px bg-white/10 md:-translate-x-px"},null,-1)),(f(!0),p(q,null,W(e.events,(s,o)=>(f(),p("div",{key:o,class:F(["relative flex items-start gap-4 mb-6 animate-fade-up-fast",o%2===0?"md:flex-row":"md:flex-row-reverse"]),style:xe({animationDelay:`${o*80}ms`})},[n[0]||(n[0]=c("div",{class:"absolute left-4 md:left-1/2 w-3 h-3 rounded-full bg-accent border-2 border-black z-10 md:-translate-x-1.5",style:{top:"6px"}},null,-1)),c("div",{class:F(["hidden md:block w-[calc(50%-2rem)] text-right shrink-0",o%2===0?"":"order-last text-left"])},[c("p",Nc,k(t(s.date)),1)],2),c("div",qc,[c("div",Uc,[c("p",Hc,k(t(s.date)),1),c("h4",Vc,k(s.title),1),s.location?(f(),p("p",Wc,k(s.location),1)):C("",!0),s.description?(f(),p("p",Gc,k(s.description),1)):C("",!0)])])],6))),128))])]))}}),Jc={class:"code-runner rounded-xl bg-white/5 border border-white/10 overflow-hidden"},Kc={class:"flex items-center gap-2 px-3 py-2 border-b border-white/5"},Yc={class:"text-xs text-white/30 uppercase tracking-wider"},Qc={class:"px-3 py-2 text-xs text-white/70 overflow-x-auto max-h-48 bg-black/20"},Xc=["srcdoc"],ed={key:1,class:"border-t border-white/5 bg-black/30 px-3 py-2 max-h-32 overflow-y-auto"},td=J({__name:"CodeRunner",props:{code:{},language:{}},setup(e){const t=e,u=D([]),n=D(!1),s=D(null),o=_(()=>t.language==="html"),i=_(()=>r(t.language,t.code));function r(h,x){const b=" - + +
diff --git a/demo/aiui/sw.js b/demo/aiui/sw.js index 7ee265be..e0cae50d 100644 --- a/demo/aiui/sw.js +++ b/demo/aiui/sw.js @@ -1 +1 @@ -if(!self.define){let s,e={};const i=(i,l)=>(i=new URL(i+".js",l).href,e[i]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=i,s.onload=e,document.head.appendChild(s)}else s=i,importScripts(i),e()}).then(()=>{let s=e[i];if(!s)throw new Error(`Module ${i} didn’t register its module`);return s}));self.define=(l,n)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let a={};const u=s=>i(s,r),t={module:{uri:r},exports:a,require:u};e[r]=Promise.all(l.map(s=>t[s]||u(s))).then(s=>(n(...s),a))}}define(["./workbox-3c177d20"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"registerSW.js",revision:"c492f944af160ee2e9a237c509dd270a"},{url:"index.html",revision:"4289dfcc6202f1f590f889e27db369ca"},{url:"icon.svg",revision:"dba94027bbb3b869c0ebf9b6beee1953"},{url:"favicon.svg",revision:"72e74ad8f660d9400c34fa69912b94a3"},{url:"images/loading-poster.svg",revision:"97c56238c72450e4953e1d7db2f6e8e6"},{url:"assets/xychartDiagram-PRI3JC2R-7BKZJd6v.js",revision:null},{url:"assets/wikipedia-BNDKhpH7.js",revision:null},{url:"assets/useNostr-XONW-p_l.js",revision:null},{url:"assets/useContentImages-7wLVntsF.js",revision:null},{url:"assets/treemap-GDKQZRPO-DJjQsbt8.js",revision:null},{url:"assets/timeline-definition-IT6M3QCI-DY7_afEv.js",revision:null},{url:"assets/stateDiagram-v2-4FDKWEC3-LzueEDky.js",revision:null},{url:"assets/stateDiagram-FKZM4ZOC-pVxTgt6V.js",revision:null},{url:"assets/song-renderer-C7kO7K9V.js",revision:null},{url:"assets/sequenceDiagram-WL72ISMW-VBErL0-f.js",revision:null},{url:"assets/sankeyDiagram-TZEHDZUN-Bdq3WEjh.js",revision:null},{url:"assets/requirementDiagram-UZGBJVZJ-oASOEzEc.js",revision:null},{url:"assets/quadrantDiagram-AYHSOK5B-D5eqUBKn.js",revision:null},{url:"assets/pieDiagram-ADFJNKIX-1zGTmPKE.js",revision:null},{url:"assets/ordinal-Cboi1Yqb.js",revision:null},{url:"assets/openlibrary-B8IPeH2e.js",revision:null},{url:"assets/nodeDemoPrompts-ByvlmttR.js",revision:null},{url:"assets/mindmap-definition-VGOIOE7T-DQT8gnk8.js",revision:null},{url:"assets/mermaid.core-v0oo9NRr.js",revision:null},{url:"assets/linear-Bzk-L7jX.js",revision:null},{url:"assets/layout-D8RlHuWE.js",revision:null},{url:"assets/katex.min-CASE1JAf.css",revision:null},{url:"assets/katex-DGN8GczM.js",revision:null},{url:"assets/kanban-definition-3W4ZIXB7-DD0wGwEr.js",revision:null},{url:"assets/journeyDiagram-XKPGCS4Q-BH_LnklX.js",revision:null},{url:"assets/init-Gi6I4Gst.js",revision:null},{url:"assets/infoDiagram-HS3SLOUP-CDB_zSju.js",revision:null},{url:"assets/index-BJkaQ2c4.css",revision:null},{url:"assets/index-8cIrvc8q.js",revision:null},{url:"assets/guideConversation-BYC5cBFP.js",revision:null},{url:"assets/graph-C1er8lVu.js",revision:null},{url:"assets/gitGraphDiagram-V2S2FVAM-txN368h-.js",revision:null},{url:"assets/ganttDiagram-JELNMOA3-CgBtZE6e.js",revision:null},{url:"assets/freeFilms-B9DmMKj5.js",revision:null},{url:"assets/flowDiagram-NV44I4VS-CWTX8pT7.js",revision:null},{url:"assets/film-renderer-CWa3YMln.js",revision:null},{url:"assets/erDiagram-Q2GNP2WA-BmCE71lJ.js",revision:null},{url:"assets/diagram-S2PKOQOG-a8VNSi9i.js",revision:null},{url:"assets/diagram-QEK2KX5R-BNtLuIsF.js",revision:null},{url:"assets/diagram-PSM6KHXK-DIdn47Al.js",revision:null},{url:"assets/defaultLocale-DX6XiGOO.js",revision:null},{url:"assets/dagre-6UL2VRFP-B0u-JQFh.js",revision:null},{url:"assets/cytoscape.esm-5J0xJHOV.js",revision:null},{url:"assets/cose-bilkent-S5V4N54A-BayuTRyx.js",revision:null},{url:"assets/clone-C1u3K6Fy.js",revision:null},{url:"assets/claude-provider-DbzPoW6j.js",revision:null},{url:"assets/classDiagram-v2-WZHVMYZB-ClBnCz4x.js",revision:null},{url:"assets/classDiagram-2ON5EDUG-ClBnCz4x.js",revision:null},{url:"assets/chunk-TZMSLE5B-93PKdbpb.js",revision:null},{url:"assets/chunk-QZHKN3VN-Diifi0zg.js",revision:null},{url:"assets/chunk-QN33PNHL-DSThOC6-.js",revision:null},{url:"assets/chunk-FMBD7UC4-HblipWIM.js",revision:null},{url:"assets/chunk-DI55MBZ5-BzH7fNN2.js",revision:null},{url:"assets/chunk-B4BG7PRW-eem5VR5l.js",revision:null},{url:"assets/chunk-55IACEB6-CtULfmDo.js",revision:null},{url:"assets/chunk-4BX2VUAB-DWDvTYfd.js",revision:null},{url:"assets/chat-BVoaeFpp.js",revision:null},{url:"assets/channel-Dg2Em7BA.js",revision:null},{url:"assets/c4Diagram-YG6GDRKO-DXp1hgr3.js",revision:null},{url:"assets/blockDiagram-VD42YOAC-B0IT7n2Q.js",revision:null},{url:"assets/architectureDiagram-VXUJARFQ-CKJFX1bN.js",revision:null},{url:"assets/arc-UjuE1bPP.js",revision:null},{url:"assets/_baseUniq-DAOs4kUj.js",revision:null},{url:"assets/_basePickBy-CL4iQUG-.js",revision:null},{url:"assets/WidgetDemoPage-Mol6efr5.js",revision:null},{url:"assets/WidgetDemoPage-BSWX2CxO.css",revision:null},{url:"assets/ThreadNode-DBTMRZ0t.js",revision:null},{url:"assets/SongGrid.vue_vue_type_script_setup_true_lang-IvAOIQYW.js",revision:null},{url:"assets/SongGrid-C568K-c_.js",revision:null},{url:"assets/SongDetail.vue_vue_type_script_setup_true_lang-B3om3Z8v.js",revision:null},{url:"assets/SongDetail-BiVK4Yzb.js",revision:null},{url:"assets/GuidePage-DncbNAAY.js",revision:null},{url:"assets/GuidePage-CXT-xcyj.css",revision:null},{url:"assets/FilmGrid.vue_vue_type_script_setup_true_lang-Dj0SEfcW.js",revision:null},{url:"assets/FilmGrid-BM-3a1vS.js",revision:null},{url:"assets/FilmDetail.vue_vue_type_script_setup_true_lang-BhKlPG3Y.js",revision:null},{url:"assets/FilmDetail-0aNPT6Ze.js",revision:null},{url:"assets/ConversationViewerPage-PTutY4Lq.js",revision:null},{url:"assets/ChatWindow.vue_vue_type_script_setup_true_lang-zPFvWywX.js",revision:null},{url:"assets/ChatWindow-CHiy55Bk.css",revision:null},{url:"assets/ChatPage-B49DA8RU.css",revision:null},{url:"assets/ChatPage-AitDGZKH.js",revision:null},{url:"assets/BrowsePage-CfZ78QhW.js",revision:null},{url:"assets/icons/microphone.svg",revision:null},{url:"apple-touch-icon-180x180.png",revision:"7c24333289dd2af70268ed3018b06188"},{url:"favicon.svg",revision:"72e74ad8f660d9400c34fa69912b94a3"},{url:"icon.svg",revision:"dba94027bbb3b869c0ebf9b6beee1953"},{url:"pwa-192x192.png",revision:"b808488f273b70ad731254043774b56f"},{url:"pwa-512x512.png",revision:"93c28a922e11a852a2ff9c277dc60037"},{url:"manifest.webmanifest",revision:"28fc12e11969e378feb1aaa569dafb80"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html"))),s.registerRoute(/^https:\/\/api\.anthropic\.com\/.*/i,new s.NetworkOnly,"GET"),s.registerRoute(/^https:\/\/openrouter\.ai\/.*/i,new s.NetworkOnly,"GET"),s.registerRoute(/\/api\/web-search\?.*/i,new s.NetworkOnly,"GET"),s.registerRoute(/\/api\/rss-articles\?.*/i,new s.NetworkOnly,"GET"),s.registerRoute(/\/api\/tmdb\/.*/i,new s.StaleWhileRevalidate({cacheName:"tmdb-cache",plugins:[new s.ExpirationPlugin({maxEntries:200,maxAgeSeconds:86400})]}),"GET"),s.registerRoute(/^https:\/\/image\.tmdb\.org\/.*/i,new s.CacheFirst({cacheName:"tmdb-images",plugins:[new s.ExpirationPlugin({maxEntries:500,maxAgeSeconds:604800})]}),"GET"),s.registerRoute(/^https:\/\/upload\.wikimedia\.org\/.*/i,new s.CacheFirst({cacheName:"wiki-images",plugins:[new s.ExpirationPlugin({maxEntries:200,maxAgeSeconds:604800})]}),"GET"),s.registerRoute(/^https:\/\/d12wklypp119aj\.cloudfront\.net\/image\/.*/i,new s.CacheFirst({cacheName:"wavlake-images",plugins:[new s.ExpirationPlugin({maxEntries:300,maxAgeSeconds:604800})]}),"GET")}); +if(!self.define){let s,e={};const i=(i,l)=>(i=new URL(i+".js",l).href,e[i]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=i,s.onload=e,document.head.appendChild(s)}else s=i,importScripts(i),e()}).then(()=>{let s=e[i];if(!s)throw new Error(`Module ${i} didn’t register its module`);return s}));self.define=(l,n)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let a={};const u=s=>i(s,r),t={module:{uri:r},exports:a,require:u};e[r]=Promise.all(l.map(s=>t[s]||u(s))).then(s=>(n(...s),a))}}define(["./workbox-3c177d20"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"registerSW.js",revision:"c492f944af160ee2e9a237c509dd270a"},{url:"index.html",revision:"c12ab7f4251df86d467b45d3e53582d3"},{url:"icon.svg",revision:"dba94027bbb3b869c0ebf9b6beee1953"},{url:"favicon.svg",revision:"72e74ad8f660d9400c34fa69912b94a3"},{url:"images/loading-poster.svg",revision:"97c56238c72450e4953e1d7db2f6e8e6"},{url:"assets/xychartDiagram-PRI3JC2R-D6TjQ54N.js",revision:null},{url:"assets/wikipedia-BNDKhpH7.js",revision:null},{url:"assets/useNostr-CNDx2L4S.js",revision:null},{url:"assets/useContentImages-DdjyABL9.js",revision:null},{url:"assets/treemap-GDKQZRPO-DWvWdchV.js",revision:null},{url:"assets/timeline-definition-IT6M3QCI-xenwtZln.js",revision:null},{url:"assets/stateDiagram-v2-4FDKWEC3-BVCuRZ2H.js",revision:null},{url:"assets/stateDiagram-FKZM4ZOC-DMvEfx5L.js",revision:null},{url:"assets/song-renderer-DRaN7zwE.js",revision:null},{url:"assets/sequenceDiagram-WL72ISMW-DqAci553.js",revision:null},{url:"assets/sankeyDiagram-TZEHDZUN-BajteCEj.js",revision:null},{url:"assets/requirementDiagram-UZGBJVZJ-Cl_456Ex.js",revision:null},{url:"assets/quadrantDiagram-AYHSOK5B-bvTnd9PI.js",revision:null},{url:"assets/pieDiagram-ADFJNKIX-C9YBJbSM.js",revision:null},{url:"assets/ordinal-Cboi1Yqb.js",revision:null},{url:"assets/openlibrary-B8IPeH2e.js",revision:null},{url:"assets/nodeDemoPrompts-ByvlmttR.js",revision:null},{url:"assets/mindmap-definition-VGOIOE7T-B9y8aRYB.js",revision:null},{url:"assets/mermaid.core-CFUktQ8s.js",revision:null},{url:"assets/linear-D4DGi1E3.js",revision:null},{url:"assets/layout-B4bmdUah.js",revision:null},{url:"assets/katex.min-CASE1JAf.css",revision:null},{url:"assets/katex-DGN8GczM.js",revision:null},{url:"assets/kanban-definition-3W4ZIXB7-Do4DMxAn.js",revision:null},{url:"assets/journeyDiagram-XKPGCS4Q-BhTw_KBN.js",revision:null},{url:"assets/init-Gi6I4Gst.js",revision:null},{url:"assets/infoDiagram-HS3SLOUP-CXIZtsn8.js",revision:null},{url:"assets/index-DNCGxUDM.js",revision:null},{url:"assets/index-BJh-vGUe.css",revision:null},{url:"assets/guideConversation-BYC5cBFP.js",revision:null},{url:"assets/graph-CJlClM7M.js",revision:null},{url:"assets/gitGraphDiagram-V2S2FVAM-Cney2tSD.js",revision:null},{url:"assets/ganttDiagram-JELNMOA3-D-5uEWaX.js",revision:null},{url:"assets/freeFilms-B9DmMKj5.js",revision:null},{url:"assets/flowDiagram-NV44I4VS-C-ifjV8R.js",revision:null},{url:"assets/film-renderer-DRL3cLhG.js",revision:null},{url:"assets/erDiagram-Q2GNP2WA-Cg9Yai53.js",revision:null},{url:"assets/diagram-S2PKOQOG-W7ZZ-s_N.js",revision:null},{url:"assets/diagram-QEK2KX5R-D9RN6ErQ.js",revision:null},{url:"assets/diagram-PSM6KHXK-CBFFqdR1.js",revision:null},{url:"assets/defaultLocale-DX6XiGOO.js",revision:null},{url:"assets/dagre-6UL2VRFP-DAP2ypYE.js",revision:null},{url:"assets/cytoscape.esm-5J0xJHOV.js",revision:null},{url:"assets/cose-bilkent-S5V4N54A-C3IpZmgG.js",revision:null},{url:"assets/clone-4l7SFgdX.js",revision:null},{url:"assets/claude-provider-DbzPoW6j.js",revision:null},{url:"assets/classDiagram-v2-WZHVMYZB-C3bw5j9n.js",revision:null},{url:"assets/classDiagram-2ON5EDUG-C3bw5j9n.js",revision:null},{url:"assets/chunk-TZMSLE5B-Cajwq1yU.js",revision:null},{url:"assets/chunk-QZHKN3VN-CalXKSQa.js",revision:null},{url:"assets/chunk-QN33PNHL-B0_3_NGo.js",revision:null},{url:"assets/chunk-FMBD7UC4-BALYpKmy.js",revision:null},{url:"assets/chunk-DI55MBZ5-C35X8NbN.js",revision:null},{url:"assets/chunk-B4BG7PRW-Cq2XT3QN.js",revision:null},{url:"assets/chunk-55IACEB6-fbeP3Dtn.js",revision:null},{url:"assets/chunk-4BX2VUAB-DHPPu6Xd.js",revision:null},{url:"assets/chat-6rSjUpgv.js",revision:null},{url:"assets/channel-BXJ3-Z4Z.js",revision:null},{url:"assets/c4Diagram-YG6GDRKO-Dh7_MG0A.js",revision:null},{url:"assets/blockDiagram-VD42YOAC-D2M-kw9y.js",revision:null},{url:"assets/architectureDiagram-VXUJARFQ-DW61hM-r.js",revision:null},{url:"assets/arc-P9DEh39j.js",revision:null},{url:"assets/_baseUniq-T1y-Xwdr.js",revision:null},{url:"assets/_basePickBy-8KTOl_Ov.js",revision:null},{url:"assets/WidgetDemoPage-CuakxOSz.js",revision:null},{url:"assets/WidgetDemoPage-BSWX2CxO.css",revision:null},{url:"assets/ThreadNode-mLK8lEzr.js",revision:null},{url:"assets/SongGrid.vue_vue_type_script_setup_true_lang-70SttNTZ.js",revision:null},{url:"assets/SongGrid-BdJzZ_PP.js",revision:null},{url:"assets/SongDetail.vue_vue_type_script_setup_true_lang-0mQhUBE8.js",revision:null},{url:"assets/SongDetail-Cdt_oumO.js",revision:null},{url:"assets/GuidePage-Dek3UCFo.js",revision:null},{url:"assets/GuidePage-CXT-xcyj.css",revision:null},{url:"assets/FilmGrid.vue_vue_type_script_setup_true_lang-CkIQ4bRp.js",revision:null},{url:"assets/FilmGrid-Dz4qYSg3.js",revision:null},{url:"assets/FilmDetail.vue_vue_type_script_setup_true_lang-Cgf4f-Ng.js",revision:null},{url:"assets/FilmDetail-D9AyPH42.js",revision:null},{url:"assets/ConversationViewerPage-Ds_4mdf_.js",revision:null},{url:"assets/ChatWindow.vue_vue_type_script_setup_true_lang-BoEjFUAe.js",revision:null},{url:"assets/ChatWindow-CUHShQFq.css",revision:null},{url:"assets/ChatPage-CK1N_k-N.js",revision:null},{url:"assets/ChatPage-B49DA8RU.css",revision:null},{url:"assets/BrowsePage-CfjXsLXM.js",revision:null},{url:"assets/icons/microphone.svg",revision:null},{url:"apple-touch-icon-180x180.png",revision:"7c24333289dd2af70268ed3018b06188"},{url:"favicon.svg",revision:"72e74ad8f660d9400c34fa69912b94a3"},{url:"icon.svg",revision:"dba94027bbb3b869c0ebf9b6beee1953"},{url:"pwa-192x192.png",revision:"b808488f273b70ad731254043774b56f"},{url:"pwa-512x512.png",revision:"93c28a922e11a852a2ff9c277dc60037"},{url:"manifest.webmanifest",revision:"28fc12e11969e378feb1aaa569dafb80"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html"))),s.registerRoute(/^https:\/\/api\.anthropic\.com\/.*/i,new s.NetworkOnly,"GET"),s.registerRoute(/^https:\/\/openrouter\.ai\/.*/i,new s.NetworkOnly,"GET"),s.registerRoute(/\/api\/web-search\?.*/i,new s.NetworkOnly,"GET"),s.registerRoute(/\/api\/rss-articles\?.*/i,new s.NetworkOnly,"GET"),s.registerRoute(/\/api\/tmdb\/.*/i,new s.StaleWhileRevalidate({cacheName:"tmdb-cache",plugins:[new s.ExpirationPlugin({maxEntries:200,maxAgeSeconds:86400})]}),"GET"),s.registerRoute(/^https:\/\/image\.tmdb\.org\/.*/i,new s.CacheFirst({cacheName:"tmdb-images",plugins:[new s.ExpirationPlugin({maxEntries:500,maxAgeSeconds:604800})]}),"GET"),s.registerRoute(/^https:\/\/upload\.wikimedia\.org\/.*/i,new s.CacheFirst({cacheName:"wiki-images",plugins:[new s.ExpirationPlugin({maxEntries:200,maxAgeSeconds:604800})]}),"GET"),s.registerRoute(/^https:\/\/d12wklypp119aj\.cloudfront\.net\/image\/.*/i,new s.CacheFirst({cacheName:"wavlake-images",plugins:[new s.ExpirationPlugin({maxEntries:300,maxAgeSeconds:604800})]}),"GET")});