From b62635874f2fa8f84a1c2827fbdafa9e42b57c4b Mon Sep 17 00:00:00 2001 From: Dorian Date: Sat, 7 Mar 2026 22:20:51 +0000 Subject: [PATCH] chore: rebuild AIUI dist with latest changes Co-Authored-By: Claude Opus 4.6 --- .../{BrowsePage-gmAlMEXj.js => BrowsePage-94Rqap7l.js} | 2 +- .../assets/{ChatPage-CvJyonWj.js => ChatPage-C2on_8FI.js} | 6 +++--- ...indow.vue_vue_type_script_setup_true_lang-7vgqEAo_.js} | 6 +++--- ...age-Ba08jsEU.js => ConversationViewerPage-BeR2xi5F.js} | 2 +- .../{FilmDetail-DAXO70NW.js => FilmDetail-DGS_xRpZ.js} | 2 +- ...etail.vue_vue_type_script_setup_true_lang-BLBfc-Dd.js} | 2 +- demo/aiui/assets/FilmGrid-BPnKqO15.js | 1 + demo/aiui/assets/FilmGrid-DASqK3YR.js | 1 - ...mGrid.vue_vue_type_script_setup_true_lang-Cl2DU5il.js} | 2 +- .../{GuidePage-IrS_ea-v.js => GuidePage-CdB1uP7p.js} | 2 +- .../{SongDetail-M_GlU4Mz.js => SongDetail-DkAvv-hZ.js} | 2 +- ...etail.vue_vue_type_script_setup_true_lang-DDoNuI2v.js} | 2 +- demo/aiui/assets/SongGrid-BExWOpji.js | 1 + demo/aiui/assets/SongGrid-Dt5bo8zM.js | 1 - ...gGrid.vue_vue_type_script_setup_true_lang-BIWcNOWf.js} | 2 +- .../{ThreadNode-CF2XPC8C.js => ThreadNode-35X1piJL.js} | 2 +- ...getDemoPage-ecxRMF7z.js => WidgetDemoPage-EOJpdsOy.js} | 2 +- .../{_basePickBy-BBMshl-v.js => _basePickBy-DQzTP8-u.js} | 2 +- .../{_baseUniq-CenknSnb.js => _baseUniq-CBsqs4sK.js} | 2 +- demo/aiui/assets/{arc-DX9GpQH4.js => arc-BttmX6kN.js} | 2 +- ...L4JWwP.js => architectureDiagram-VXUJARFQ-CG5JvDqC.js} | 2 +- ...YOAC-BCiKdVc8.js => blockDiagram-VD42YOAC-DFvwHLlA.js} | 2 +- ...G6GDRKO-BBOdfxMZ.js => c4Diagram-YG6GDRKO-CLGNkwkq.js} | 2 +- demo/aiui/assets/channel-BMNvF04a.js | 1 - demo/aiui/assets/channel-DvR-WIAX.js | 1 + demo/aiui/assets/chat-BmHsA0em.js | 1 - demo/aiui/assets/chat-DlXHO11l.js | 1 + ...nk-4BX2VUAB-C7aSyncb.js => chunk-4BX2VUAB-BDzF9-g8.js} | 2 +- ...nk-55IACEB6-zM9goCtL.js => chunk-55IACEB6-ChweiSQX.js} | 2 +- ...nk-B4BG7PRW-BXU3S2QS.js => chunk-B4BG7PRW-C3t9KQVJ.js} | 2 +- ...nk-DI55MBZ5-Clmyx62i.js => chunk-DI55MBZ5-ycVu39FE.js} | 2 +- ...nk-FMBD7UC4-CawlvmRh.js => chunk-FMBD7UC4-CyYke2zq.js} | 2 +- ...nk-QN33PNHL-CSllQMMS.js => chunk-QN33PNHL-B3Ni5bQM.js} | 2 +- ...nk-QZHKN3VN-01nA56jS.js => chunk-QZHKN3VN-hUumKzZo.js} | 2 +- ...nk-TZMSLE5B-8ngCSXJW.js => chunk-TZMSLE5B-EoJO86Yl.js} | 2 +- demo/aiui/assets/classDiagram-2ON5EDUG-6xyXU9W_.js | 1 - demo/aiui/assets/classDiagram-2ON5EDUG-CFYylqxM.js | 1 + demo/aiui/assets/classDiagram-v2-WZHVMYZB-6xyXU9W_.js | 1 - demo/aiui/assets/classDiagram-v2-WZHVMYZB-CFYylqxM.js | 1 + demo/aiui/assets/clone-Bfx_vmKG.js | 1 + demo/aiui/assets/clone-DT41vzT6.js | 1 - ...N54A-Bs-Pq0bU.js => cose-bilkent-S5V4N54A-Drqzrlto.js} | 2 +- ...re-6UL2VRFP-Dz3cszNo.js => dagre-6UL2VRFP-_LKpPyuB.js} | 2 +- ...-PSM6KHXK-DNgk_k0l.js => diagram-PSM6KHXK-DWkd1Rjj.js} | 2 +- ...-QEK2KX5R-Bg_DbrXn.js => diagram-QEK2KX5R-Domlyzeh.js} | 2 +- ...-S2PKOQOG-DU40VH4K.js => diagram-S2PKOQOG-XYWi1SWc.js} | 2 +- ...2GNP2WA-Cs-ByisQ.js => erDiagram-Q2GNP2WA-cCtJYblk.js} | 2 +- demo/aiui/assets/film-renderer-DBPqbNdO.js | 2 -- demo/aiui/assets/film-renderer-jXRQLsKB.js | 2 ++ ...4I4VS-DKg6n4y6.js => flowDiagram-NV44I4VS-CsW37Umj.js} | 2 +- ...MOA3-V4s5o1Vu.js => ganttDiagram-JELNMOA3-fF13qwV0.js} | 2 +- ...M-BRU3D8S-.js => gitGraphDiagram-V2S2FVAM-DRG1Y88p.js} | 2 +- demo/aiui/assets/{graph-BSfK3b8T.js => graph-BxZy3Dnp.js} | 2 +- demo/aiui/assets/{index-xgP_Yxxn.js => index-Db_Wzg4I.js} | 4 ++-- ...SLOUP-zD5cw5Pm.js => infoDiagram-HS3SLOUP-CTKfq-AB.js} | 2 +- ...4Q-D9kOudQ3.js => journeyDiagram-XKPGCS4Q-C_hM20RV.js} | 2 +- ...DWM1OTPg.js => kanban-definition-3W4ZIXB7-CedXPq4m.js} | 2 +- .../assets/{layout-NUi_G0DZ.js => layout-BGKAmy0w.js} | 2 +- .../assets/{linear-CtM424rk.js => linear-DA18TJVe.js} | 2 +- ...{mermaid.core-iePVYd9u.js => mermaid.core-C9TmjPnh.js} | 8 ++++---- ...5u25L7P.js => mindmap-definition-VGOIOE7T-CqKvXVlE.js} | 2 +- ...FJNKIX-BwviJsE1.js => pieDiagram-ADFJNKIX--iEYbj9m.js} | 2 +- ...B-Co03J7FY.js => quadrantDiagram-AYHSOK5B-CiOqRI9P.js} | 2 +- ...brgehjg.js => requirementDiagram-UZGBJVZJ-CBsC64O1.js} | 2 +- ...ZUN-9MsZOyR8.js => sankeyDiagram-TZEHDZUN-CdMz-Xtr.js} | 2 +- ...W-DG2y6YeX.js => sequenceDiagram-WL72ISMW-DwbPbBM5.js} | 2 +- demo/aiui/assets/song-renderer-DBjSE8Nl.js | 2 ++ demo/aiui/assets/song-renderer-DDu9Ncnt.js | 2 -- ...4ZOC-CgSjOKBR.js => stateDiagram-FKZM4ZOC-DKZWt5_I.js} | 2 +- demo/aiui/assets/stateDiagram-v2-4FDKWEC3-BlBn2oBG.js | 1 + demo/aiui/assets/stateDiagram-v2-4FDKWEC3-D58BlsiP.js | 1 - ...Tf59N6.js => timeline-definition-IT6M3QCI-B6FUcMtu.js} | 2 +- ...-GDKQZRPO-Di5Yn9U8.js => treemap-GDKQZRPO-dMs9T_bo.js} | 2 +- ...entImages-Vu33AzxO.js => useContentImages-DEvPOTqY.js} | 2 +- .../assets/{useNostr-C64NofB2.js => useNostr-r0q7Zk5I.js} | 2 +- ...2R-3XDydmCT.js => xychartDiagram-PRI3JC2R-B9bDSYMG.js} | 2 +- demo/aiui/index.html | 2 +- demo/aiui/sw.js | 2 +- 78 files changed, 78 insertions(+), 78 deletions(-) rename demo/aiui/assets/{BrowsePage-gmAlMEXj.js => BrowsePage-94Rqap7l.js} (99%) rename demo/aiui/assets/{ChatPage-CvJyonWj.js => ChatPage-C2on_8FI.js} (99%) rename demo/aiui/assets/{ChatWindow.vue_vue_type_script_setup_true_lang-mndCLJgR.js => ChatWindow.vue_vue_type_script_setup_true_lang-7vgqEAo_.js} (99%) rename demo/aiui/assets/{ConversationViewerPage-Ba08jsEU.js => ConversationViewerPage-BeR2xi5F.js} (96%) rename demo/aiui/assets/{FilmDetail-DAXO70NW.js => FilmDetail-DGS_xRpZ.js} (51%) rename demo/aiui/assets/{FilmDetail.vue_vue_type_script_setup_true_lang-CvP1bsRD.js => FilmDetail.vue_vue_type_script_setup_true_lang-BLBfc-Dd.js} (97%) create mode 100644 demo/aiui/assets/FilmGrid-BPnKqO15.js delete mode 100644 demo/aiui/assets/FilmGrid-DASqK3YR.js rename demo/aiui/assets/{FilmGrid.vue_vue_type_script_setup_true_lang-DeUdxOuC.js => FilmGrid.vue_vue_type_script_setup_true_lang-Cl2DU5il.js} (97%) rename demo/aiui/assets/{GuidePage-IrS_ea-v.js => GuidePage-CdB1uP7p.js} (98%) rename demo/aiui/assets/{SongDetail-M_GlU4Mz.js => SongDetail-DkAvv-hZ.js} (51%) rename demo/aiui/assets/{SongDetail.vue_vue_type_script_setup_true_lang-C3aBvFsB.js => SongDetail.vue_vue_type_script_setup_true_lang-DDoNuI2v.js} (98%) create mode 100644 demo/aiui/assets/SongGrid-BExWOpji.js delete mode 100644 demo/aiui/assets/SongGrid-Dt5bo8zM.js rename demo/aiui/assets/{SongGrid.vue_vue_type_script_setup_true_lang-D_qvs2R5.js => SongGrid.vue_vue_type_script_setup_true_lang-BIWcNOWf.js} (97%) rename demo/aiui/assets/{ThreadNode-CF2XPC8C.js => ThreadNode-35X1piJL.js} (95%) rename demo/aiui/assets/{WidgetDemoPage-ecxRMF7z.js => WidgetDemoPage-EOJpdsOy.js} (97%) rename demo/aiui/assets/{_basePickBy-BBMshl-v.js => _basePickBy-DQzTP8-u.js} (95%) rename demo/aiui/assets/{_baseUniq-CenknSnb.js => _baseUniq-CBsqs4sK.js} (98%) rename demo/aiui/assets/{arc-DX9GpQH4.js => arc-BttmX6kN.js} (98%) rename demo/aiui/assets/{architectureDiagram-VXUJARFQ-BpL4JWwP.js => architectureDiagram-VXUJARFQ-CG5JvDqC.js} (99%) rename demo/aiui/assets/{blockDiagram-VD42YOAC-BCiKdVc8.js => blockDiagram-VD42YOAC-DFvwHLlA.js} (99%) rename demo/aiui/assets/{c4Diagram-YG6GDRKO-BBOdfxMZ.js => c4Diagram-YG6GDRKO-CLGNkwkq.js} (99%) delete mode 100644 demo/aiui/assets/channel-BMNvF04a.js create mode 100644 demo/aiui/assets/channel-DvR-WIAX.js delete mode 100644 demo/aiui/assets/chat-BmHsA0em.js create mode 100644 demo/aiui/assets/chat-DlXHO11l.js rename demo/aiui/assets/{chunk-4BX2VUAB-C7aSyncb.js => chunk-4BX2VUAB-BDzF9-g8.js} (71%) rename demo/aiui/assets/{chunk-55IACEB6-zM9goCtL.js => chunk-55IACEB6-ChweiSQX.js} (72%) rename demo/aiui/assets/{chunk-B4BG7PRW-BXU3S2QS.js => chunk-B4BG7PRW-C3t9KQVJ.js} (99%) rename demo/aiui/assets/{chunk-DI55MBZ5-Clmyx62i.js => chunk-DI55MBZ5-ycVu39FE.js} (99%) rename demo/aiui/assets/{chunk-FMBD7UC4-CawlvmRh.js => chunk-FMBD7UC4-CyYke2zq.js} (83%) rename demo/aiui/assets/{chunk-QN33PNHL-CSllQMMS.js => chunk-QN33PNHL-B3Ni5bQM.js} (87%) rename demo/aiui/assets/{chunk-QZHKN3VN-01nA56jS.js => chunk-QZHKN3VN-hUumKzZo.js} (66%) rename demo/aiui/assets/{chunk-TZMSLE5B-8ngCSXJW.js => chunk-TZMSLE5B-EoJO86Yl.js} (95%) delete mode 100644 demo/aiui/assets/classDiagram-2ON5EDUG-6xyXU9W_.js create mode 100644 demo/aiui/assets/classDiagram-2ON5EDUG-CFYylqxM.js delete mode 100644 demo/aiui/assets/classDiagram-v2-WZHVMYZB-6xyXU9W_.js create mode 100644 demo/aiui/assets/classDiagram-v2-WZHVMYZB-CFYylqxM.js create mode 100644 demo/aiui/assets/clone-Bfx_vmKG.js delete mode 100644 demo/aiui/assets/clone-DT41vzT6.js rename demo/aiui/assets/{cose-bilkent-S5V4N54A-Bs-Pq0bU.js => cose-bilkent-S5V4N54A-Drqzrlto.js} (99%) rename demo/aiui/assets/{dagre-6UL2VRFP-Dz3cszNo.js => dagre-6UL2VRFP-_LKpPyuB.js} (97%) rename demo/aiui/assets/{diagram-PSM6KHXK-DNgk_k0l.js => diagram-PSM6KHXK-DWkd1Rjj.js} (97%) rename demo/aiui/assets/{diagram-QEK2KX5R-Bg_DbrXn.js => diagram-QEK2KX5R-Domlyzeh.js} (94%) rename demo/aiui/assets/{diagram-S2PKOQOG-DU40VH4K.js => diagram-S2PKOQOG-XYWi1SWc.js} (92%) rename demo/aiui/assets/{erDiagram-Q2GNP2WA-Cs-ByisQ.js => erDiagram-Q2GNP2WA-cCtJYblk.js} (98%) delete mode 100644 demo/aiui/assets/film-renderer-DBPqbNdO.js create mode 100644 demo/aiui/assets/film-renderer-jXRQLsKB.js rename demo/aiui/assets/{flowDiagram-NV44I4VS-DKg6n4y6.js => flowDiagram-NV44I4VS-CsW37Umj.js} (99%) rename demo/aiui/assets/{ganttDiagram-JELNMOA3-V4s5o1Vu.js => ganttDiagram-JELNMOA3-fF13qwV0.js} (99%) rename demo/aiui/assets/{gitGraphDiagram-V2S2FVAM-BRU3D8S-.js => gitGraphDiagram-V2S2FVAM-DRG1Y88p.js} (98%) rename demo/aiui/assets/{graph-BSfK3b8T.js => graph-BxZy3Dnp.js} (97%) rename demo/aiui/assets/{index-xgP_Yxxn.js => index-Db_Wzg4I.js} (99%) rename demo/aiui/assets/{infoDiagram-HS3SLOUP-zD5cw5Pm.js => infoDiagram-HS3SLOUP-CTKfq-AB.js} (62%) rename demo/aiui/assets/{journeyDiagram-XKPGCS4Q-D9kOudQ3.js => journeyDiagram-XKPGCS4Q-C_hM20RV.js} (98%) rename demo/aiui/assets/{kanban-definition-3W4ZIXB7-DWM1OTPg.js => kanban-definition-3W4ZIXB7-CedXPq4m.js} (99%) rename demo/aiui/assets/{layout-NUi_G0DZ.js => layout-BGKAmy0w.js} (99%) rename demo/aiui/assets/{linear-CtM424rk.js => linear-DA18TJVe.js} (98%) rename demo/aiui/assets/{mermaid.core-iePVYd9u.js => mermaid.core-C9TmjPnh.js} (99%) rename demo/aiui/assets/{mindmap-definition-VGOIOE7T-D5u25L7P.js => mindmap-definition-VGOIOE7T-CqKvXVlE.js} (99%) rename demo/aiui/assets/{pieDiagram-ADFJNKIX-BwviJsE1.js => pieDiagram-ADFJNKIX--iEYbj9m.js} (92%) rename demo/aiui/assets/{quadrantDiagram-AYHSOK5B-Co03J7FY.js => quadrantDiagram-AYHSOK5B-CiOqRI9P.js} (99%) rename demo/aiui/assets/{requirementDiagram-UZGBJVZJ-Dbrgehjg.js => requirementDiagram-UZGBJVZJ-CBsC64O1.js} (99%) rename demo/aiui/assets/{sankeyDiagram-TZEHDZUN-9MsZOyR8.js => sankeyDiagram-TZEHDZUN-CdMz-Xtr.js} (99%) rename demo/aiui/assets/{sequenceDiagram-WL72ISMW-DG2y6YeX.js => sequenceDiagram-WL72ISMW-DwbPbBM5.js} (99%) create mode 100644 demo/aiui/assets/song-renderer-DBjSE8Nl.js delete mode 100644 demo/aiui/assets/song-renderer-DDu9Ncnt.js rename demo/aiui/assets/{stateDiagram-FKZM4ZOC-CgSjOKBR.js => stateDiagram-FKZM4ZOC-DKZWt5_I.js} (96%) create mode 100644 demo/aiui/assets/stateDiagram-v2-4FDKWEC3-BlBn2oBG.js delete mode 100644 demo/aiui/assets/stateDiagram-v2-4FDKWEC3-D58BlsiP.js rename demo/aiui/assets/{timeline-definition-IT6M3QCI-DUTf59N6.js => timeline-definition-IT6M3QCI-B6FUcMtu.js} (99%) rename demo/aiui/assets/{treemap-GDKQZRPO-Di5Yn9U8.js => treemap-GDKQZRPO-dMs9T_bo.js} (99%) rename demo/aiui/assets/{useContentImages-Vu33AzxO.js => useContentImages-DEvPOTqY.js} (90%) rename demo/aiui/assets/{useNostr-C64NofB2.js => useNostr-r0q7Zk5I.js} (98%) rename demo/aiui/assets/{xychartDiagram-PRI3JC2R-3XDydmCT.js => xychartDiagram-PRI3JC2R-B9bDSYMG.js} (99%) diff --git a/demo/aiui/assets/BrowsePage-gmAlMEXj.js b/demo/aiui/assets/BrowsePage-94Rqap7l.js similarity index 99% rename from demo/aiui/assets/BrowsePage-gmAlMEXj.js rename to demo/aiui/assets/BrowsePage-94Rqap7l.js index ff60340d..4a624eaa 100644 --- a/demo/aiui/assets/BrowsePage-gmAlMEXj.js +++ b/demo/aiui/assets/BrowsePage-94Rqap7l.js @@ -1,2 +1,2 @@ -import{a as M,c as o,F as b,g as E,b as s,e,n as F,t as p,L as g,i as y,r as w,P as B,k as D,K as L,o as T,M as H,Q as z,V as S,W as j}from"./index-xgP_Yxxn.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",U="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",G="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=M({__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)?U:W;const a=x(l.name);return r.has(a)?G:c.has(a)?K:X}return(l,a)=>{const C=B("FileTree",!0);return s(),o("div",V,[(s(!0),o(b,null,E(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))])}}}),Q={class:"h-full flex flex-col"},J={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"},P=M({__name:"FilePreview",props:{file:{}},emits:["close"],setup(m){const _=m,h=D(()=>_.file.content.split(` +import{a as M,c as o,F as b,g as E,b as s,e,n as F,t as p,L as g,i as y,r as w,P as B,k as D,K as L,o as T,M as H,Q as z,V as S,W as j}from"./index-Db_Wzg4I.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",U="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",G="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=M({__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)?U:W;const a=x(l.name);return r.has(a)?G:c.has(a)?K:X}return(l,a)=>{const C=B("FileTree",!0);return s(),o("div",V,[(s(!0),o(b,null,E(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))])}}}),Q={class:"h-full flex flex-col"},J={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"},P=M({__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",Q,[e("div",J,[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,E(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=M({__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 L(()=>{$(),window.addEventListener("resize",u)}),T(()=>{window.removeEventListener("resize",u)}),(i,t)=>{const d=B("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,E(_.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(P,{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(P,{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-CvJyonWj.js b/demo/aiui/assets/ChatPage-C2on_8FI.js similarity index 99% rename from demo/aiui/assets/ChatPage-CvJyonWj.js rename to demo/aiui/assets/ChatPage-C2on_8FI.js index c8f17826..356bbac5 100644 --- a/demo/aiui/assets/ChatPage-CvJyonWj.js +++ b/demo/aiui/assets/ChatPage-C2on_8FI.js @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/useNostr-C64NofB2.js","assets/index-xgP_Yxxn.js","assets/index-CIeswVLz.css","assets/ThreadNode-CF2XPC8C.js"])))=>i.map(i=>d[i]); -import{a as O,Z as qt,$ as rt,p as Ne,b as s,c as n,e,h as G,u as t,n as i,t as u,f as ie,w as K,v as J,F as D,g as L,i as m,j as Z,r as j,k as B,a0 as Gt,a1 as ct,N as se,a2 as dt,a3 as ut,a4 as ht,a5 as xt,U as Ie,a6 as Ot,a7 as Ht,a8 as Wt,P as Kt,Q as q,K as ne,a9 as ae,aa as ye,z as we,_ as pt,A as ce,B as Pe,d as Yt,ab as Qt,L as te,ac as Jt,ad as Zt,ae as Xt,S as es,q as ts,af as ss,o as ns,M as ue,ag as Le,ah as ls}from"./index-xgP_Yxxn.js";import{u as os}from"./chat-BmHsA0em.js";import{u as $e,a as xe,e as He,d as gt,M as as,b as is,s as rs,c as cs,f as be,_ as tt}from"./ChatWindow.vue_vue_type_script_setup_true_lang-mndCLJgR.js";import{_ as ds}from"./FilmGrid.vue_vue_type_script_setup_true_lang-DeUdxOuC.js";import{u as Ae}from"./useContentImages-Vu33AzxO.js";import{_ as us}from"./SongGrid.vue_vue_type_script_setup_true_lang-D_qvs2R5.js";import{useNostr as De}from"./useNostr-C64NofB2.js";import{u as bt,_ as hs}from"./FilmDetail.vue_vue_type_script_setup_true_lang-CvP1bsRD.js";import{_ as xs}from"./SongDetail.vue_vue_type_script_setup_true_lang-C3aBvFsB.js";const ps={class:"h-full flex flex-col"},gs={class:"flex items-center justify-between gap-2"},bs={class:"flex items-center gap-2 shrink-0"},vs={key:0,class:"flex flex-wrap gap-1.5"},fs=["onClick"],ms={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},ws={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},ys=["aria-label","onClick"],ks={class:"cover-card flex-1 min-h-0 relative"},$s={key:0,class:"absolute inset-0 animate-shimmer"},_s=["src","alt","onError"],Cs=["src","alt"],js={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},Ss={class:"absolute bottom-0 left-0 right-0 p-2"},Ms={class:"text-xs font-semibold text-white/90 leading-tight truncate"},Ts={class:"text-xs text-white/40 truncate mt-0.5"},Is={key:4,class:"absolute top-1.5 left-1.5"},Ds={class:"text-xs px-1.5 py-0.5 rounded bg-black/60 text-amber-400 backdrop-blur-sm font-medium"},Bs={key:5,class:"absolute top-1.5 right-1.5"},Ls={class:"text-xs px-1 py-0.5 rounded bg-black/60 text-white/70 backdrop-blur-sm"},Ps={key:0,class:"flex items-center justify-center py-12"},Ns=O({__name:"BookGrid",props:{books:{},title:{default:"Recommended Books"}},emits:["selectBook"],setup(a){const d=a,{isDark:l}=Z(),w=j(""),g=j(null),{coverSrc:v,fallbackSrc:x,onError:f,isLoading:$}=Ae({items:Ne(d,"books"),id:c=>c.id,existingUrl:c=>c.coverUrl,fetch:c=>rt(c.title,c.author),fallback:c=>qt(c.title,c.author)}),_=B(()=>{const c=new Map;for(const o of d.books)for(const r of o.genres??[])c.set(r,(c.get(r)??0)+1);return[...c.entries()].sort((o,r)=>r[1]-o[1]).slice(0,8).map(([o])=>o)}),b=B(()=>{let c=d.books;if(w.value){const o=w.value.toLowerCase();c=c.filter(r=>r.title.toLowerCase().includes(o)||r.author.toLowerCase().includes(o)||(r.genres??[]).some(h=>h.toLowerCase().includes(o)))}return g.value&&(c=c.filter(o=>(o.genres??[]).includes(g.value))),c});return(c,o)=>(s(),n("div",ps,[e("div",{class:"p-4 space-y-3",style:G(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",gs,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",bs,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(b.value.length)+" books ",3),ie(c.$slots,"header-actions")])]),K(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),[[J,w.value]]),_.value.length>0?(s(),n("div",vs,[(s(!0),n(D,null,L(_.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,fs))),128))])):m("",!0)],4),e("div",ms,[e("div",ws,[(s(!0),n(D,null,L(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=>c.$emit("selectBook",r)},[e("div",ks,[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)):m("",!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(f)(r)},null,40,_s)):t($)(r)?m("",!0):(s(),n("img",{key:2,src:t(x)(r),alt:r.title,class:"w-full h-full object-cover"},null,8,Cs)),t(v)(r)?(s(),n("div",js)):m("",!0),e("div",Ss,[e("p",Ms,u(r.title),1),e("p",Ts,u(r.author),1)]),r.rating?(s(),n("div",Is,[e("span",Ds," ★ "+u(r.rating.toFixed(1)),1)])):m("",!0),r.year?(s(),n("div",Bs,[e("span",Ls,u(r.year),1)])):m("",!0)],2)])],8,ys))),128))]),b.value.length===0?(s(),n("div",Ps,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No books match your search ",2)])):m("",!0)])]))}}),As={class:"h-full flex flex-col"},zs={class:"flex items-center justify-between gap-2"},Es={class:"flex items-center gap-2 shrink-0"},Fs={key:0,class:"flex flex-wrap gap-1.5"},Rs=["onClick"],Vs={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},Us={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},qs=["aria-label","onClick"],Gs={class:"cover-card flex-1 min-h-0 relative"},Os={key:0,class:"absolute inset-0 animate-shimmer"},Hs=["src","alt","onError"],Ws=["src","alt"],Ks={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},Ys={class:"absolute bottom-0 left-0 right-0 p-2"},Qs={class:"text-xs font-semibold text-white/90 leading-tight truncate"},Js={class:"text-xs text-white/40 truncate mt-0.5"},Zs={key:4,class:"absolute top-1.5 left-1.5"},Xs={class:"text-xs px-1.5 py-0.5 rounded bg-black/60 text-amber-400 backdrop-blur-sm font-medium"},en={key:5,class:"absolute top-1.5 right-1.5"},tn={class:"absolute top-1.5 right-1.5 flex gap-0.5 flex-wrap justify-end max-w-[60%]"},sn={key:0,class:"flex items-center justify-center py-12"},nn=O({__name:"TVSeriesGrid",props:{series:{},title:{default:"Recommended TV Series"}},emits:["selectSeries"],setup(a){const d=a,{isDark:l}=Z(),w=j(""),g=j(null),{coverSrc:v,fallbackSrc:x,onError:f,isLoading:$}=Ae({items:Ne(d,"series"),id:o=>o.id,existingUrl:o=>o.posterUrl||o.backdropUrl,fetch:o=>ct(o.title,o.year).then(r=>r.posterUrl),fallback:o=>Gt(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 d.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)}),c=B(()=>{let o=d.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",As,[e("div",{class:"p-4 space-y-3",style:G(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",zs,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",Es,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(c.value.length)+" series ",3),ie(o.$slots,"header-actions")])]),K(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),[[J,w.value]]),b.value.length>0?(s(),n("div",Fs,[(s(!0),n(D,null,L(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,Rs))),128))])):m("",!0)],4),e("div",Vs,[e("div",Us,[(s(!0),n(D,null,L(c.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",Gs,[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",Os)):m("",!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(f)(h)},null,40,Hs)):t($)(h)?m("",!0):(s(),n("img",{key:2,src:t(x)(h),alt:h.title,class:"w-full h-full object-cover"},null,8,Ws)),t(v)(h)?(s(),n("div",Ks)):m("",!0),e("div",Ys,[e("p",Qs,u(h.title),1),e("p",Js,[se(u(_(h)),1),h.seasons?(s(),n(D,{key:0},[se(" · "+u(h.seasons)+"S",1)],64)):m("",!0)])]),h.rating?(s(),n("div",Zs,[e("span",Xs," ★ "+u(h.rating.toFixed(1)),1)])):m("",!0),h.status==="ongoing"?(s(),n("div",en,[...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)])])):m("",!0),e("div",tn,[(s(!0),n(D,null,L((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,qs))),128))]),c.value.length===0?(s(),n("div",sn,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No TV series match your search ",2)])):m("",!0)])]))}}),ln={class:"h-full flex flex-col"},on={class:"flex items-center justify-between gap-2"},an={class:"flex items-center gap-2 shrink-0"},rn={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},cn={class:"columns-2 sm:columns-3 gap-3 space-y-3"},dn=["aria-label","onClick"],un=["src","alt","onError"],hn={key:2,class:"absolute bottom-0 left-0 right-0 p-2 bg-gradient-to-t from-black/70 via-black/30 to-transparent"},xn={key:0,class:"text-xs font-medium text-white/90 truncate"},pn={key:1,class:"text-xs text-white/50 truncate"},gn={key:0,class:"flex items-center justify-center py-12"},bn=O({__name:"ImageGrid",props:{images:{},title:{default:"Images"}},emits:["selectImage"],setup(a){const{isDark:d}=Z(),l=j(new Set);function w(g){l.value.add(g.id),l.value=new Set(l.value)}return(g,v)=>(s(),n("div",ln,[e("div",{class:"p-4 space-y-3",style:G(t(d)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",on,[e("h3",{class:i(["text-sm font-bold",t(d)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",an,[e("span",{class:i(["text-xs font-mono",t(d)?"text-white/30":"text-gray-400"])},u(a.images.length)+" images ",3),ie(g.$slots,"header-actions")])])],4),e("div",rn,[e("div",cn,[(s(!0),n(D,null,L(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(d)?"bg-white/5":"bg-black/3"]),"aria-label":x.alt||x.title||"Image",onClick:f=>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(d)?"bg-white/5":"bg-black/5"])},[(s(),n("svg",{class:i(["w-8 h-8",t(d)?"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:f=>w(x)},null,40,un)),x.title||x.source?(s(),n("div",hn,[x.title?(s(),n("p",xn,u(x.title),1)):m("",!0),x.source?(s(),n("p",pn,u(x.source),1)):m("",!0)])):m("",!0)],10,dn))),128))]),a.images.length===0?(s(),n("div",gn,[e("p",{class:i(["text-sm",t(d)?"text-white/30":"text-gray-400"])}," No images found ",2)])):m("",!0)])]))}}),vn={class:"h-full flex flex-col"},fn={class:"p-4 space-y-3"},mn={class:"flex items-center justify-between"},wn={class:"shrink-0 flex items-center gap-2"},yn={key:0,class:"flex flex-wrap gap-1.5"},kn=["onClick"],$n={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pb-16"},_n={class:"grid grid-cols-2 sm:grid-cols-3 gap-3"},Cn=["aria-label","onClick"],jn={class:"aspect-[4/3] relative w-full overflow-hidden rounded-t-[10px]"},Sn={key:0,class:"absolute inset-0 animate-shimmer"},Mn=["src","alt","onError"],Tn=["src","alt"],In={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},Dn={class:"absolute bottom-0 left-0 right-0 p-2"},Bn={class:"text-xs font-semibold text-white/90 truncate"},Ln={class:"text-xs text-white/40 truncate mt-0.5"},Pn={key:4,class:"absolute top-1.5 right-1.5"},Nn={class:"text-xs px-1.5 py-0.5 rounded bg-black/60 text-amber-400 backdrop-blur-sm font-semibold"},An={key:5,class:"absolute top-1.5 left-1.5"},zn={class:"text-xs px-1 py-0.5 rounded bg-black/60 text-white/70 backdrop-blur-sm"},En={key:0,class:"flex items-center justify-center py-12"},Fn=O({__name:"PlaceGrid",props:{places:{},title:{default:"Places"}},emits:["selectPlace"],setup(a){const d=a,{isDark:l}=Z(),w=j(""),g=j(null),{coverSrc:v,fallbackSrc:x,onError:f,isLoading:$}=Ae({items:Ne(d,"places"),id:c=>c.id,existingUrl:c=>c.photoUrl,fetch:c=>ut(c.name,c.city),fallback:c=>dt(c.name,c.cuisine||c.category)}),_=B(()=>{const c=new Map;for(const o of d.places){const r=o.cuisine||o.category;r&&c.set(r,(c.get(r)??0)+1)}return[...c.entries()].sort((o,r)=>r[1]-o[1]).slice(0,8).map(([o])=>o)}),b=B(()=>{let c=d.places;if(w.value){const o=w.value.toLowerCase();c=c.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&&(c=c.filter(o=>o.cuisine===g.value||o.category===g.value)),c});return(c,o)=>(s(),n("div",vn,[e("div",fn,[e("div",mn,[e("h3",{class:i(["text-base font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title||"Places"),3),e("div",wn,[e("span",{class:i(["text-xs",t(l)?"text-white/30":"text-gray-400"])},u(b.value.length)+" places ",3),ie(c.$slots,"header-actions")])]),K(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),[[J,w.value]]),_.value.length>1?(s(),n("div",yn,[(s(!0),n(D,null,L(_.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,kn))),128))])):m("",!0)]),e("div",$n,[e("div",_n,[(s(!0),n(D,null,L(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=>c.$emit("selectPlace",r)},[e("div",jn,[t($)(r)?(s(),n("div",Sn)):m("",!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(f)(r)},null,40,Mn)):t($)(r)?m("",!0):(s(),n("img",{key:2,src:t(x)(r),alt:r.name,class:"w-full h-full object-cover"},null,8,Tn)),t(v)(r)?(s(),n("div",In)):m("",!0),e("div",Dn,[e("p",Bn,u(r.name),1),e("p",Ln,u(r.cuisine||r.category),1)]),r.rating?(s(),n("div",Pn,[e("span",Nn," ★ "+u(r.rating.toFixed(1)),1)])):m("",!0),r.priceLevel?(s(),n("div",An,[e("span",zn,u("$".repeat(r.priceLevel)),1)])):m("",!0)])],8,Cn))),128))]),b.value.length===0?(s(),n("div",En,[e("p",{class:i(["text-xs",t(l)?"text-white/30":"text-gray-400"])}," No places match your search ",2)])):m("",!0)])]))}}),Rn={class:"h-full flex flex-col"},Vn={class:"flex items-center justify-between gap-2"},Un={class:"flex items-center gap-2 shrink-0"},qn={key:0,class:"flex flex-wrap gap-1.5"},Gn=["onClick"],On={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},Hn={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},Wn=["aria-label","onClick"],Kn={class:"cover-card flex-1 min-h-0 relative"},Yn={key:0,class:"absolute inset-0 animate-shimmer"},Qn=["src","alt","onError"],Jn=["src","alt"],Zn={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},Xn={class:"absolute bottom-0 left-0 right-0 p-2"},el={class:"text-xs font-semibold text-white/90 leading-tight truncate"},tl={class:"text-xs text-white/40 truncate mt-0.5"},sl={class:"absolute top-1.5 right-1.5 flex gap-0.5 flex-wrap justify-end max-w-[60%]"},nl={key:0,class:"flex items-center justify-center py-12"},ll=O({__name:"PodcastGrid",props:{podcasts:{},title:{default:"Recommended Podcasts"}},emits:["selectPodcast"],setup(a){const d=a,{isDark:l}=Z(),w=j(""),g=j(null),{coverSrc:v,fallbackSrc:x,onError:f,isLoading:$}=Ae({items:Ne(d,"podcasts"),id:c=>c.id,existingUrl:c=>c.coverUrl,fetch:c=>xt(c.title,c.host),fallback:c=>ht(c.title,c.host)}),_=B(()=>{const c=new Map;for(const o of d.podcasts)for(const r of o.genres??[])c.set(r,(c.get(r)??0)+1);return[...c.entries()].sort((o,r)=>r[1]-o[1]).slice(0,8).map(([o])=>o)}),b=B(()=>{let c=d.podcasts;if(w.value){const o=w.value.toLowerCase();c=c.filter(r=>r.title.toLowerCase().includes(o)||(r.host??"").toLowerCase().includes(o)||(r.genres??[]).some(h=>h.toLowerCase().includes(o)))}return g.value&&(c=c.filter(o=>(o.genres??[]).includes(g.value))),c});return(c,o)=>(s(),n("div",Rn,[e("div",{class:"p-4 space-y-3",style:G(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",Vn,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",Un,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(b.value.length)+" podcasts ",3),ie(c.$slots,"header-actions")])]),K(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),[[J,w.value]]),_.value.length>0?(s(),n("div",qn,[(s(!0),n(D,null,L(_.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,Gn))),128))])):m("",!0)],4),e("div",On,[e("div",Hn,[(s(!0),n(D,null,L(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=>c.$emit("selectPodcast",r)},[e("div",Kn,[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",Yn)):m("",!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(f)(r)},null,40,Qn)):t($)(r)?m("",!0):(s(),n("img",{key:2,src:t(x)(r),alt:r.title,class:"w-full h-full object-cover"},null,8,Jn)),t(v)(r)?(s(),n("div",Zn)):m("",!0),e("div",Xn,[e("p",el,u(r.title),1),e("p",tl,u(r.host||"Podcast"),1)]),e("div",sl,[(s(!0),n(D,null,L(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,Wn))),128))]),b.value.length===0?(s(),n("div",nl,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No podcasts match your search ",2)])):m("",!0)])]))}}),ol={class:"shrink-0"},al={class:"flex-1 overflow-y-auto custom-scrollbar"},il={key:0,class:"relative overflow-hidden",style:{minHeight:"180px"}},rl={class:"absolute inset-0"},cl=["src"],dl={class:"relative z-10 flex flex-col justify-end h-full px-5 pb-5 pt-12",style:{"min-height":"180px"}},ul={class:"px-3 pt-2 pb-8"},hl={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"},xl={key:1,"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 5a2 2 0 012-2h10a2 2 0 012 2v16l-7-3.5L5 21V5z"},pl={key:2,"stroke-linecap":"round","stroke-linejoin":"round",d:"M13 2L3 14h9l-1 8 10-12h-9l1-8z"},gl={key:3,"stroke-linecap":"round","stroke-linejoin":"round",d:"M4 6h16M4 12h16M4 18h7"},bl=["onClick"],vl=["onClick"],fl={key:1,class:"flex items-center justify-center py-16 px-4"},ml=O({__name:"MagazineGrid",props:{sections:{},heroImageUrl:{default:null},title:{default:"Brief"},query:{default:""}},setup(a){const d=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,c){const o=v(b);return o.length<=c?o:o.slice(0,c).replace(/\s+\S*$/,"")+" ..."}const f=B(()=>{const b=[],c=d.sections;if(!c.length)return b;let o=0;for(const S of d.query||"brief")o=(o<<5)-o+S.charCodeAt(0)|0;let r="",h=0,M=!1;return c.forEach((S,N)=>{if(N===0&&!S.group){b.push({type:"wide",title:S.title,text:x(S.content,200),label:"The Lead",author:S.author,section:S});return}const I=S.group||"";if(I&&I!==r&&(M&&(b.push({type:"dark",title:"",text:""}),M=!1),b.push({type:"banner",title:"",text:"",icon:g[h%g.length],label:I}),h++,r=I),I){const C=M?"dark":"half",k=v(S.content),p=v(S.title),y=k.toLowerCase().startsWith(p.toLowerCase().slice(0,30));b.push({type:C,title:y?"":S.title,text:x(S.content,y?160:100),section:S}),M=!M}else M&&(b.push({type:"dark",title:"",text:""}),M=!1),b.push({type:"wide",title:S.title,text:x(S.content,180),author:S.author,section:S})}),M&&b.push({type:"dark",title:"",text:""}),b});function $(b){const c=d.sections.indexOf(b);w(b,c>=0?c:0)}const _=B(()=>{const b=(d.query??"").trim();return b?b.length>100?b.slice(0,97)+"...":b:d.title});return(b,c)=>(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",ol,[ie(b.$slots,"header-actions",{},void 0,!0)])],2),e("div",al,[_.value?(s(),n("div",il,[e("div",rl,[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,cl)):(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",dl,[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)])])):m("",!0),e("div",ul,[e("div",{class:i(["grid grid-cols-2 gap-px",t(l)?"bg-white/12":"bg-black/10"])},[(s(!0),n(D,null,L(f.value,(o,r)=>(s(),n(D,{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",hl)):o.icon==="bookmark"?(s(),n("path",xl)):o.icon==="lightning"?(s(),n("path",pl)):(s(),n("path",gl))],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)):m("",!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)):m("",!0),e("p",{class:i(["font-serif text-sm leading-relaxed",t(l)?"text-white/70":"text-black/60"])},u(o.text),3)],10,bl)):(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)):m("",!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)):m("",!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,vl))],64))),128))],2)]),a.sections.length===0?(s(),n("div",fl,[e("p",{class:i(["text-sm",t(l)?"text-white/40":"text-gray-400"])}," No sections to display ",2)])):m("",!0)])],2))}}),st=Ie(ml,[["__scopeId","data-v-02741b8c"]]),wl={class:"h-full flex flex-col"},yl={class:"flex items-center justify-between gap-2"},kl={class:"flex items-center gap-2 shrink-0"},$l=["placeholder"],_l={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},Cl={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},jl=["aria-label","onClick"],Sl={class:"cover-card flex-1 min-h-0 relative"},Ml={class:"aspect-[4/3] flex flex-col w-full overflow-hidden rounded-[10px]"},Tl={class:"flex-1 min-h-0 relative"},Il=["src","alt","onError"],Dl={key:2,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-black/20 to-transparent pointer-events-none"},Bl={key:0,class:"flex items-center justify-center py-12"},nt=O({__name:"NewsGrid",props:{articles:{},title:{default:"News & Articles"},query:{default:""},variant:{default:"news"}},setup(a){const d=a,{isDark:l}=Z(),{openArticleDetail:w,openWebsiteDetail:g}=$e(),v=j(""),x=j(new Set);function f(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 d.variant==="websites"?Ot(h.title,_(h.url)):Ht(h.title,_(h.url))}function c(h){d.variant==="websites"?g(h):w(h)}function o(h,M){if(!M.trim())return 0;const N=M.toLowerCase().split(/\s+/).filter(y=>y.length>1);if(N.length===0)return 0;const I=h.title.toLowerCase(),C=(h.content??"").toLowerCase(),k=h.url.toLowerCase();let p=0;for(const y of N)I.includes(y)&&(p+=3),C.includes(y)&&(p+=2),k.includes(y)&&(p+=1);return p}const r=B(()=>{let h=d.articles;if(v.value.trim()){const M=v.value.toLowerCase();h=h.filter(S=>S.title.toLowerCase().includes(M)||(S.content??"").toLowerCase().includes(M)||S.url.toLowerCase().includes(M))}return d.query.trim()?[...h].sort((M,S)=>o(S,d.query)-o(M,d.query)):h});return(h,M)=>(s(),n("div",wl,[e("div",{class:"p-4 space-y-3",style:G(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",yl,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",kl,[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")])]),K(e("input",{"onUpdate:modelValue":M[0]||(M[0]=S=>v.value=S),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),[[J,v.value]])],4),e("div",_l,[e("div",Cl,[(s(!0),n(D,null,L(r.value,(S,N)=>(s(),n("button",{key:N,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":S.title,onClick:I=>c(S)},[e("div",Sl,[e("div",Ml,[e("div",Tl,[f(S.imgSrc)&&!x.value.has(S.url)?(s(),n("img",{key:0,src:S.imgSrc,alt:S.title,class:"absolute inset-0 w-full h-full object-cover transition-transform duration-300 group-hover:scale-110",loading:"lazy",onError:I=>$(S.url)},null,40,Il)):(s(),n("div",{key:1,class:"absolute inset-0 bg-cover bg-center",style:G({backgroundImage:`url(${b(S)})`})},null,4)),f(S.imgSrc)&&!x.value.has(S.url)?(s(),n("div",Dl)):m("",!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(S.title),3),S.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(S.content),3)):m("",!0),e("p",{class:i(["text-xs truncate mt-0.5",t(l)?"text-white/50":"text-gray-500"])},u(_(S.url)),3)],2)])])],8,jl))),128))]),r.value.length===0?(s(),n("div",Bl,[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)])):m("",!0)])]))}}),Ll={class:"h-full flex flex-col"},Pl={class:"flex items-center justify-between gap-2"},Nl={class:"flex items-center gap-2 shrink-0"},Al={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},zl={class:"grid grid-cols-1 sm:grid-cols-2 gap-3"},El=["aria-label","onClick"],Fl={class:"aspect-[3/1] relative w-full overflow-hidden"},Rl=["src","alt"],Vl={class:"p-3"},Ul={class:"flex items-center gap-3 mt-2 flex-wrap"},ql={key:0,class:"flex items-center justify-center py-12"},Gl=O({__name:"RecipeGrid",props:{recipes:{},title:{default:"Recipes"}},emits:["selectRecipe"],setup(a){const d=a,{isDark:l}=Z(),w=j(""),g=B(()=>{if(!w.value.trim())return d.recipes;const v=w.value.toLowerCase();return d.recipes.filter(x=>x.title.toLowerCase().includes(v)||x.ingredients.some(f=>f.toLowerCase().includes(v)))});return(v,x)=>(s(),n("div",Ll,[e("div",{class:"p-4 space-y-3",style:G(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",Pl,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",Nl,[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?K((s(),n("input",{key:0,"onUpdate:modelValue":x[0]||(x[0]=f=>w.value=f),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)),[[J,w.value]]):m("",!0)],4),e("div",Al,[e("div",zl,[(s(!0),n(D,null,L(g.value,(f,$)=>(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":f.title,onClick:_=>v.$emit("selectRecipe",f)},[e("div",Fl,[e("img",{src:t(Wt)(f.title,f.time),alt:f.title,class:"w-full h-full object-cover"},null,8,Rl)]),e("div",Vl,[e("p",{class:i(["text-sm font-semibold leading-tight line-clamp-2",t(l)?"text-white/90":"text-gray-900"])},u(f.title),3),e("div",Ul,[f.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)),se(" "+u(f.time),1)],2)):m("",!0),f.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)),se(" "+u(f.servings),1)],2)):m("",!0),f.calories?(s(),n("span",{key:2,class:i(["text-xs",t(l)?"text-white/40":"text-gray-500"])},u(f.calories)+" cal ",3)):m("",!0)]),f.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(f.ingredients.slice(0,4).join(" · ")),3)):m("",!0)])],10,El))),128))]),g.value.length===0?(s(),n("div",ql,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No recipes match your search ",2)])):m("",!0)])]))}}),Ol={class:"h-full flex flex-col"},Hl={class:"flex items-center justify-between gap-2"},Wl={class:"flex flex-wrap gap-1.5"},Kl=["onClick"],Yl={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},Ql={class:"space-y-2"},Jl=["aria-label","onClick"],Zl={class:"text-white/90"},Xl={class:"flex-1 min-w-0"},eo={class:"flex items-center gap-2"},to={class:"flex gap-1 mt-1.5"},so={key:0,class:"flex items-center justify-center py-12"},no=O({__name:"AppsGrid",props:{apps:{},title:{default:"Recommended Apps"}},emits:["selectApp"],setup(a){const d=a,{isDark:l}=Z(),w=j(""),g=j(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(c=>c.value===b)?.label??b}function f(b){return{ios:"iOS",android:"Android",web:"Web",desktop:"Desktop",cli:"CLI",nodeos:"Node"}[b]??b}function $(b){let c=0;for(let r=0;r{let b=d.apps;if(w.value){const c=w.value.toLowerCase();b=b.filter(o=>o.name.toLowerCase().includes(c)||o.description.toLowerCase().includes(c)||o.keywords.some(r=>r.toLowerCase().includes(c)))}return g.value&&(b=b.filter(c=>c.category===g.value)),b});return(b,c)=>(s(),n("div",Ol,[e("div",{class:"p-4 space-y-3",style:G(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",Hl,[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)]),K(e("input",{"onUpdate:modelValue":c[0]||(c[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),[[J,w.value]]),e("div",Wl,[(s(),n(D,null,L(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,Kl)),64))])],4),e("div",Yl,[e("div",Ql,[(s(!0),n(D,null,L(_.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:G({background:$(o.id)})},[e("span",Zl,u(o.name.charAt(0)),1)],4),e("div",Xl,[e("div",eo,[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",to,[(s(!0),n(D,null,L(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(f(r)),3))),128))])])],10,Jl))),128))]),_.value.length===0?(s(),n("div",so,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No apps match your search ",2)])):m("",!0)])]))}}),lo={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"},oo={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"},ao={class:"truncate"},io={key:1,class:"w-3 h-3 shrink-0 text-accent ml-auto",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ro={key:0},co=O({__name:"FileTreeNode",props:{entry:{},activeFile:{},depth:{}},emits:["select"],setup(a,{emit:d}){const l=a,{isFileSelected:w}=xe(),g=d,{isDark:v}=Z(),x=j(l.depth<1),f=B(()=>!l.entry.isDirectory&&l.activeFile===l.entry.path),$=B(()=>!l.entry.isDirectory&&w(l.entry.path));function _(){l.entry.isDirectory?x.value=!x.value:g("select",l.entry.path)}return(b,c)=>{const o=Kt("FileTreeNode",!0);return s(),n("div",null,[e("button",{class:i(["w-full text-left flex items-center gap-1.5 py-1 px-2 rounded-lg text-xs transition-colors",[$.value?"bg-accent/15 text-accent ring-1 ring-accent/30":f.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:G({paddingLeft:`${a.depth*12+8}px`}),onClick:_},[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"},[...c[1]||(c[1]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"},null,-1)])],2)):m("",!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",lo)):(s(),n("path",oo))],2)),e("span",ao,u(a.entry.name),1),$.value?(s(),n("svg",io,[...c[2]||(c[2]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"3",d:"M5 13l4 4L19 7"},null,-1)])])):m("",!0)],6),a.entry.isDirectory&&x.value&&a.entry.children?(s(),n("div",ro,[(s(!0),n(D,null,L(a.entry.children,r=>(s(),q(o,{key:r.path,entry:r,"active-file":a.activeFile,depth:a.depth+1,onSelect:c[0]||(c[0]=h=>b.$emit("select",h))},null,8,["entry","active-file","depth"]))),128))])):m("",!0)])}}}),uo={class:"flex flex-col h-full"},ho={class:"flex items-center gap-1 min-w-0 flex-1"},xo={class:"flex items-center gap-2 shrink-0"},po={key:0,class:"flex-1 overflow-y-auto custom-scrollbar p-3"},go={class:"mb-3 flex gap-2"},bo={class:"flex justify-end gap-2"},vo=["disabled"],fo={class:"grid grid-cols-2 gap-2"},mo=["onClick"],wo={key:1,class:"flex-1 overflow-y-auto custom-scrollbar p-2"},yo={key:0,class:"flex items-center justify-center py-12"},ko=O({__name:"ProjectGrid",props:{isWideDesktop:{type:Boolean},isMobile:{type:Boolean}},setup(a){const{isDark:d}=Z(),{projectList:l,activeProject:w,fileTree:g,activeFile:v,codeMode:x,selectedFiles:f,selectProject:$,openFile:_,createProject:b,clearActiveFile:c,toggleFileSelection:o,isFileSelected:r,loadProjects:h}=xe();ne(()=>{l.value.length===0&&h()});const M=j(""),S=j(!1),N=j(""),I=j(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(U=>U.name.toLowerCase().includes(F)||(U.language??"").toLowerCase().includes(F)):l.value});function y(F){$(F)}function A(){const{activeProject:F,fileTree:U}=xe();F.value=null,U.value=[],c()}function V(F){o(F),_(F)}function E(){S.value=!0,N.value="",ye(()=>I.value?.focus())}function Y(){S.value=!1,N.value=""}function H(){const F=N.value.trim();F&&(b(F),S.value=!1,N.value="")}return(F,U)=>(s(),n("div",uo,[e("div",{class:"shrink-0 px-4 py-3 flex items-center justify-between gap-2",style:G(t(d)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",ho,[C.value!=="projects"?(s(),n("button",{key:0,class:i(["text-xs shrink-0 transition-colors",t(d)?"text-white/40 hover:text-white/70 hover:underline":"text-gray-400 hover:text-gray-700 hover:underline"]),onClick:A}," Projects ",2)):m("",!0),C.value!=="projects"?(s(),n("span",{key:1,class:i(["text-xs shrink-0",t(d)?"text-white/20":"text-gray-300"])},"/",2)):m("",!0),e("span",{class:i(["text-sm font-semibold truncate",t(d)?"text-white/90":"text-gray-900"])},u(k.value),3)]),e("div",xo,[C.value==="projects"?(s(),n("p",{key:0,class:i(["text-xs",t(d)?"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(d)?"text-white/30":"text-gray-400"])},u(t(w)?.language),3)):m("",!0),ie(F.$slots,"header-actions")])],4),C.value==="projects"?(s(),n("div",po,[e("div",go,[K(e("input",{"onUpdate:modelValue":U[0]||(U[0]=W=>M.value=W),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(d)?"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),[[J,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(d)?"bg-accent/20 text-accent hover:bg-accent/30":"bg-accent/10 text-accent hover:bg-accent/20"]),onClick:E},[...U[2]||(U[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),se(" New ",-1)])],2)]),S.value?(s(),n("div",{key:0,class:i(["mb-3 p-3 rounded-xl",t(d)?"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(d)?"text-white/70":"text-gray-700"])}," New Project ",2),K(e("input",{ref_key:"newProjectInputRef",ref:I,"onUpdate:modelValue":U[1]||(U[1]=W=>N.value=W),type:"text",placeholder:"Project name...",class:i(["w-full px-3 py-2 rounded-lg text-base bg-transparent outline-none mb-2",t(d)?"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(H,["enter"]),ae(Y,["escape"])]},null,34),[[J,N.value]]),e("div",bo,[e("button",{class:i(["text-xs px-2.5 py-1 rounded-lg transition-colors",t(d)?"text-white/40 hover:text-white/70":"text-gray-500 hover:text-gray-800"]),onClick:Y}," Cancel ",2),e("button",{class:i(["text-xs px-2.5 py-1 rounded-lg font-medium transition-colors",t(d)?"bg-accent/20 text-accent hover:bg-accent/30":"bg-accent/10 text-accent hover:bg-accent/20"]),disabled:!N.value.trim(),onClick:H}," Create ",10,vo)])],2)):m("",!0),e("div",fo,[(s(!0),n(D,null,L(p.value,W=>(s(),n("button",{key:W.path,class:i(["text-left p-3 rounded-xl transition-all duration-150",t(d)?"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:le=>y(W)},[e("div",{class:i(["w-8 h-8 rounded-lg flex items-center justify-center mb-2",t(d)?"bg-white/5":"bg-black/5"])},[(s(),n("svg",{class:i(["w-4 h-4",W.isGit?"text-accent":t(d)?"text-white/40":"text-gray-400"]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...U[3]||(U[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(d)?"text-white/80":"text-gray-800"])},u(W.name),3),e("p",{class:i(["text-xs mt-0.5 truncate",t(d)?"text-white/25":"text-gray-400"])},u(W.language),3)],10,mo))),128))])])):C.value==="filetree"?(s(),n("div",wo,[(s(!0),n(D,null,L(t(g),W=>(s(),q(co,{key:W.path,entry:W,"active-file":t(v),depth:0,onSelect:V},null,8,["entry","active-file"]))),128)),t(g).length===0?(s(),n("div",yo,[e("p",{class:i(["text-xs",t(d)?"text-white/30":"text-gray-400"])}," Loading file tree... ",2)])):m("",!0)])):m("",!0)]))}}),$o={class:"flex flex-col h-full"},_o={class:"shrink-0 px-4 py-2 flex gap-1.5 overflow-x-auto scrollbar-hide"},Co=["onClick"],jo={class:"flex-1 overflow-y-auto px-4 py-3"},So={class:"grid grid-cols-2 gap-2"},Mo=["onClick"],To=["onClick"],Io={key:0,class:"w-3 h-3 text-white",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Do={key:2,class:"h-8 flex items-end gap-0.5 mb-2"},Bo={key:3,class:"h-8 flex items-center mb-2"},Lo={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"},Po={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"},No={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"},Ao={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"},zo=O({__name:"DesignSystemGrid",setup(a){const{isDark:d}=Z(),{openDesignSystemItem:l}=$e(),{codeMode:w,toggleDesignToken:g,isDesignTokenSelected:v}=xe(),x=j("all"),f=[{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-r0q7Zk5I.js","assets/index-Db_Wzg4I.js","assets/index-CIeswVLz.css","assets/ThreadNode-35X1piJL.js"])))=>i.map(i=>d[i]); +import{a as O,Z as qt,$ as rt,p as Ne,b as s,c as n,e,h as G,u as t,n as i,t as u,f as ie,w as K,v as J,F as D,g as L,i as m,j as Z,r as j,k as B,a0 as Gt,a1 as ct,N as se,a2 as dt,a3 as ut,a4 as ht,a5 as xt,U as Ie,a6 as Ot,a7 as Ht,a8 as Wt,P as Kt,Q as q,K as ne,a9 as ae,aa as ye,z as we,_ as pt,A as ce,B as Pe,d as Yt,ab as Qt,L as te,ac as Jt,ad as Zt,ae as Xt,S as es,q as ts,af as ss,o as ns,M as ue,ag as Le,ah as ls}from"./index-Db_Wzg4I.js";import{u as os}from"./chat-DlXHO11l.js";import{u as $e,a as xe,e as He,d as gt,M as as,b as is,s as rs,c as cs,f as be,_ as tt}from"./ChatWindow.vue_vue_type_script_setup_true_lang-7vgqEAo_.js";import{_ as ds}from"./FilmGrid.vue_vue_type_script_setup_true_lang-Cl2DU5il.js";import{u as Ae}from"./useContentImages-DEvPOTqY.js";import{_ as us}from"./SongGrid.vue_vue_type_script_setup_true_lang-BIWcNOWf.js";import{useNostr as De}from"./useNostr-r0q7Zk5I.js";import{u as bt,_ as hs}from"./FilmDetail.vue_vue_type_script_setup_true_lang-BLBfc-Dd.js";import{_ as xs}from"./SongDetail.vue_vue_type_script_setup_true_lang-DDoNuI2v.js";const ps={class:"h-full flex flex-col"},gs={class:"flex items-center justify-between gap-2"},bs={class:"flex items-center gap-2 shrink-0"},vs={key:0,class:"flex flex-wrap gap-1.5"},fs=["onClick"],ms={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},ws={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},ys=["aria-label","onClick"],ks={class:"cover-card flex-1 min-h-0 relative"},$s={key:0,class:"absolute inset-0 animate-shimmer"},_s=["src","alt","onError"],Cs=["src","alt"],js={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},Ss={class:"absolute bottom-0 left-0 right-0 p-2"},Ms={class:"text-xs font-semibold text-white/90 leading-tight truncate"},Ts={class:"text-xs text-white/40 truncate mt-0.5"},Is={key:4,class:"absolute top-1.5 left-1.5"},Ds={class:"text-xs px-1.5 py-0.5 rounded bg-black/60 text-amber-400 backdrop-blur-sm font-medium"},Bs={key:5,class:"absolute top-1.5 right-1.5"},Ls={class:"text-xs px-1 py-0.5 rounded bg-black/60 text-white/70 backdrop-blur-sm"},Ps={key:0,class:"flex items-center justify-center py-12"},Ns=O({__name:"BookGrid",props:{books:{},title:{default:"Recommended Books"}},emits:["selectBook"],setup(a){const d=a,{isDark:l}=Z(),w=j(""),g=j(null),{coverSrc:v,fallbackSrc:x,onError:f,isLoading:$}=Ae({items:Ne(d,"books"),id:c=>c.id,existingUrl:c=>c.coverUrl,fetch:c=>rt(c.title,c.author),fallback:c=>qt(c.title,c.author)}),_=B(()=>{const c=new Map;for(const o of d.books)for(const r of o.genres??[])c.set(r,(c.get(r)??0)+1);return[...c.entries()].sort((o,r)=>r[1]-o[1]).slice(0,8).map(([o])=>o)}),b=B(()=>{let c=d.books;if(w.value){const o=w.value.toLowerCase();c=c.filter(r=>r.title.toLowerCase().includes(o)||r.author.toLowerCase().includes(o)||(r.genres??[]).some(h=>h.toLowerCase().includes(o)))}return g.value&&(c=c.filter(o=>(o.genres??[]).includes(g.value))),c});return(c,o)=>(s(),n("div",ps,[e("div",{class:"p-4 space-y-3",style:G(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",gs,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",bs,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(b.value.length)+" books ",3),ie(c.$slots,"header-actions")])]),K(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),[[J,w.value]]),_.value.length>0?(s(),n("div",vs,[(s(!0),n(D,null,L(_.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,fs))),128))])):m("",!0)],4),e("div",ms,[e("div",ws,[(s(!0),n(D,null,L(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=>c.$emit("selectBook",r)},[e("div",ks,[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)):m("",!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(f)(r)},null,40,_s)):t($)(r)?m("",!0):(s(),n("img",{key:2,src:t(x)(r),alt:r.title,class:"w-full h-full object-cover"},null,8,Cs)),t(v)(r)?(s(),n("div",js)):m("",!0),e("div",Ss,[e("p",Ms,u(r.title),1),e("p",Ts,u(r.author),1)]),r.rating?(s(),n("div",Is,[e("span",Ds," ★ "+u(r.rating.toFixed(1)),1)])):m("",!0),r.year?(s(),n("div",Bs,[e("span",Ls,u(r.year),1)])):m("",!0)],2)])],8,ys))),128))]),b.value.length===0?(s(),n("div",Ps,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No books match your search ",2)])):m("",!0)])]))}}),As={class:"h-full flex flex-col"},zs={class:"flex items-center justify-between gap-2"},Es={class:"flex items-center gap-2 shrink-0"},Fs={key:0,class:"flex flex-wrap gap-1.5"},Rs=["onClick"],Vs={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},Us={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},qs=["aria-label","onClick"],Gs={class:"cover-card flex-1 min-h-0 relative"},Os={key:0,class:"absolute inset-0 animate-shimmer"},Hs=["src","alt","onError"],Ws=["src","alt"],Ks={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},Ys={class:"absolute bottom-0 left-0 right-0 p-2"},Qs={class:"text-xs font-semibold text-white/90 leading-tight truncate"},Js={class:"text-xs text-white/40 truncate mt-0.5"},Zs={key:4,class:"absolute top-1.5 left-1.5"},Xs={class:"text-xs px-1.5 py-0.5 rounded bg-black/60 text-amber-400 backdrop-blur-sm font-medium"},en={key:5,class:"absolute top-1.5 right-1.5"},tn={class:"absolute top-1.5 right-1.5 flex gap-0.5 flex-wrap justify-end max-w-[60%]"},sn={key:0,class:"flex items-center justify-center py-12"},nn=O({__name:"TVSeriesGrid",props:{series:{},title:{default:"Recommended TV Series"}},emits:["selectSeries"],setup(a){const d=a,{isDark:l}=Z(),w=j(""),g=j(null),{coverSrc:v,fallbackSrc:x,onError:f,isLoading:$}=Ae({items:Ne(d,"series"),id:o=>o.id,existingUrl:o=>o.posterUrl||o.backdropUrl,fetch:o=>ct(o.title,o.year).then(r=>r.posterUrl),fallback:o=>Gt(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 d.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)}),c=B(()=>{let o=d.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",As,[e("div",{class:"p-4 space-y-3",style:G(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",zs,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",Es,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(c.value.length)+" series ",3),ie(o.$slots,"header-actions")])]),K(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),[[J,w.value]]),b.value.length>0?(s(),n("div",Fs,[(s(!0),n(D,null,L(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,Rs))),128))])):m("",!0)],4),e("div",Vs,[e("div",Us,[(s(!0),n(D,null,L(c.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",Gs,[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",Os)):m("",!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(f)(h)},null,40,Hs)):t($)(h)?m("",!0):(s(),n("img",{key:2,src:t(x)(h),alt:h.title,class:"w-full h-full object-cover"},null,8,Ws)),t(v)(h)?(s(),n("div",Ks)):m("",!0),e("div",Ys,[e("p",Qs,u(h.title),1),e("p",Js,[se(u(_(h)),1),h.seasons?(s(),n(D,{key:0},[se(" · "+u(h.seasons)+"S",1)],64)):m("",!0)])]),h.rating?(s(),n("div",Zs,[e("span",Xs," ★ "+u(h.rating.toFixed(1)),1)])):m("",!0),h.status==="ongoing"?(s(),n("div",en,[...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)])])):m("",!0),e("div",tn,[(s(!0),n(D,null,L((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,qs))),128))]),c.value.length===0?(s(),n("div",sn,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No TV series match your search ",2)])):m("",!0)])]))}}),ln={class:"h-full flex flex-col"},on={class:"flex items-center justify-between gap-2"},an={class:"flex items-center gap-2 shrink-0"},rn={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},cn={class:"columns-2 sm:columns-3 gap-3 space-y-3"},dn=["aria-label","onClick"],un=["src","alt","onError"],hn={key:2,class:"absolute bottom-0 left-0 right-0 p-2 bg-gradient-to-t from-black/70 via-black/30 to-transparent"},xn={key:0,class:"text-xs font-medium text-white/90 truncate"},pn={key:1,class:"text-xs text-white/50 truncate"},gn={key:0,class:"flex items-center justify-center py-12"},bn=O({__name:"ImageGrid",props:{images:{},title:{default:"Images"}},emits:["selectImage"],setup(a){const{isDark:d}=Z(),l=j(new Set);function w(g){l.value.add(g.id),l.value=new Set(l.value)}return(g,v)=>(s(),n("div",ln,[e("div",{class:"p-4 space-y-3",style:G(t(d)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",on,[e("h3",{class:i(["text-sm font-bold",t(d)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",an,[e("span",{class:i(["text-xs font-mono",t(d)?"text-white/30":"text-gray-400"])},u(a.images.length)+" images ",3),ie(g.$slots,"header-actions")])])],4),e("div",rn,[e("div",cn,[(s(!0),n(D,null,L(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(d)?"bg-white/5":"bg-black/3"]),"aria-label":x.alt||x.title||"Image",onClick:f=>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(d)?"bg-white/5":"bg-black/5"])},[(s(),n("svg",{class:i(["w-8 h-8",t(d)?"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:f=>w(x)},null,40,un)),x.title||x.source?(s(),n("div",hn,[x.title?(s(),n("p",xn,u(x.title),1)):m("",!0),x.source?(s(),n("p",pn,u(x.source),1)):m("",!0)])):m("",!0)],10,dn))),128))]),a.images.length===0?(s(),n("div",gn,[e("p",{class:i(["text-sm",t(d)?"text-white/30":"text-gray-400"])}," No images found ",2)])):m("",!0)])]))}}),vn={class:"h-full flex flex-col"},fn={class:"p-4 space-y-3"},mn={class:"flex items-center justify-between"},wn={class:"shrink-0 flex items-center gap-2"},yn={key:0,class:"flex flex-wrap gap-1.5"},kn=["onClick"],$n={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pb-16"},_n={class:"grid grid-cols-2 sm:grid-cols-3 gap-3"},Cn=["aria-label","onClick"],jn={class:"aspect-[4/3] relative w-full overflow-hidden rounded-t-[10px]"},Sn={key:0,class:"absolute inset-0 animate-shimmer"},Mn=["src","alt","onError"],Tn=["src","alt"],In={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},Dn={class:"absolute bottom-0 left-0 right-0 p-2"},Bn={class:"text-xs font-semibold text-white/90 truncate"},Ln={class:"text-xs text-white/40 truncate mt-0.5"},Pn={key:4,class:"absolute top-1.5 right-1.5"},Nn={class:"text-xs px-1.5 py-0.5 rounded bg-black/60 text-amber-400 backdrop-blur-sm font-semibold"},An={key:5,class:"absolute top-1.5 left-1.5"},zn={class:"text-xs px-1 py-0.5 rounded bg-black/60 text-white/70 backdrop-blur-sm"},En={key:0,class:"flex items-center justify-center py-12"},Fn=O({__name:"PlaceGrid",props:{places:{},title:{default:"Places"}},emits:["selectPlace"],setup(a){const d=a,{isDark:l}=Z(),w=j(""),g=j(null),{coverSrc:v,fallbackSrc:x,onError:f,isLoading:$}=Ae({items:Ne(d,"places"),id:c=>c.id,existingUrl:c=>c.photoUrl,fetch:c=>ut(c.name,c.city),fallback:c=>dt(c.name,c.cuisine||c.category)}),_=B(()=>{const c=new Map;for(const o of d.places){const r=o.cuisine||o.category;r&&c.set(r,(c.get(r)??0)+1)}return[...c.entries()].sort((o,r)=>r[1]-o[1]).slice(0,8).map(([o])=>o)}),b=B(()=>{let c=d.places;if(w.value){const o=w.value.toLowerCase();c=c.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&&(c=c.filter(o=>o.cuisine===g.value||o.category===g.value)),c});return(c,o)=>(s(),n("div",vn,[e("div",fn,[e("div",mn,[e("h3",{class:i(["text-base font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title||"Places"),3),e("div",wn,[e("span",{class:i(["text-xs",t(l)?"text-white/30":"text-gray-400"])},u(b.value.length)+" places ",3),ie(c.$slots,"header-actions")])]),K(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),[[J,w.value]]),_.value.length>1?(s(),n("div",yn,[(s(!0),n(D,null,L(_.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,kn))),128))])):m("",!0)]),e("div",$n,[e("div",_n,[(s(!0),n(D,null,L(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=>c.$emit("selectPlace",r)},[e("div",jn,[t($)(r)?(s(),n("div",Sn)):m("",!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(f)(r)},null,40,Mn)):t($)(r)?m("",!0):(s(),n("img",{key:2,src:t(x)(r),alt:r.name,class:"w-full h-full object-cover"},null,8,Tn)),t(v)(r)?(s(),n("div",In)):m("",!0),e("div",Dn,[e("p",Bn,u(r.name),1),e("p",Ln,u(r.cuisine||r.category),1)]),r.rating?(s(),n("div",Pn,[e("span",Nn," ★ "+u(r.rating.toFixed(1)),1)])):m("",!0),r.priceLevel?(s(),n("div",An,[e("span",zn,u("$".repeat(r.priceLevel)),1)])):m("",!0)])],8,Cn))),128))]),b.value.length===0?(s(),n("div",En,[e("p",{class:i(["text-xs",t(l)?"text-white/30":"text-gray-400"])}," No places match your search ",2)])):m("",!0)])]))}}),Rn={class:"h-full flex flex-col"},Vn={class:"flex items-center justify-between gap-2"},Un={class:"flex items-center gap-2 shrink-0"},qn={key:0,class:"flex flex-wrap gap-1.5"},Gn=["onClick"],On={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},Hn={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},Wn=["aria-label","onClick"],Kn={class:"cover-card flex-1 min-h-0 relative"},Yn={key:0,class:"absolute inset-0 animate-shimmer"},Qn=["src","alt","onError"],Jn=["src","alt"],Zn={key:3,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent pointer-events-none"},Xn={class:"absolute bottom-0 left-0 right-0 p-2"},el={class:"text-xs font-semibold text-white/90 leading-tight truncate"},tl={class:"text-xs text-white/40 truncate mt-0.5"},sl={class:"absolute top-1.5 right-1.5 flex gap-0.5 flex-wrap justify-end max-w-[60%]"},nl={key:0,class:"flex items-center justify-center py-12"},ll=O({__name:"PodcastGrid",props:{podcasts:{},title:{default:"Recommended Podcasts"}},emits:["selectPodcast"],setup(a){const d=a,{isDark:l}=Z(),w=j(""),g=j(null),{coverSrc:v,fallbackSrc:x,onError:f,isLoading:$}=Ae({items:Ne(d,"podcasts"),id:c=>c.id,existingUrl:c=>c.coverUrl,fetch:c=>xt(c.title,c.host),fallback:c=>ht(c.title,c.host)}),_=B(()=>{const c=new Map;for(const o of d.podcasts)for(const r of o.genres??[])c.set(r,(c.get(r)??0)+1);return[...c.entries()].sort((o,r)=>r[1]-o[1]).slice(0,8).map(([o])=>o)}),b=B(()=>{let c=d.podcasts;if(w.value){const o=w.value.toLowerCase();c=c.filter(r=>r.title.toLowerCase().includes(o)||(r.host??"").toLowerCase().includes(o)||(r.genres??[]).some(h=>h.toLowerCase().includes(o)))}return g.value&&(c=c.filter(o=>(o.genres??[]).includes(g.value))),c});return(c,o)=>(s(),n("div",Rn,[e("div",{class:"p-4 space-y-3",style:G(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",Vn,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",Un,[e("span",{class:i(["text-xs font-mono",t(l)?"text-white/30":"text-gray-400"])},u(b.value.length)+" podcasts ",3),ie(c.$slots,"header-actions")])]),K(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),[[J,w.value]]),_.value.length>0?(s(),n("div",qn,[(s(!0),n(D,null,L(_.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,Gn))),128))])):m("",!0)],4),e("div",On,[e("div",Hn,[(s(!0),n(D,null,L(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=>c.$emit("selectPodcast",r)},[e("div",Kn,[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",Yn)):m("",!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(f)(r)},null,40,Qn)):t($)(r)?m("",!0):(s(),n("img",{key:2,src:t(x)(r),alt:r.title,class:"w-full h-full object-cover"},null,8,Jn)),t(v)(r)?(s(),n("div",Zn)):m("",!0),e("div",Xn,[e("p",el,u(r.title),1),e("p",tl,u(r.host||"Podcast"),1)]),e("div",sl,[(s(!0),n(D,null,L(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,Wn))),128))]),b.value.length===0?(s(),n("div",nl,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No podcasts match your search ",2)])):m("",!0)])]))}}),ol={class:"shrink-0"},al={class:"flex-1 overflow-y-auto custom-scrollbar"},il={key:0,class:"relative overflow-hidden",style:{minHeight:"180px"}},rl={class:"absolute inset-0"},cl=["src"],dl={class:"relative z-10 flex flex-col justify-end h-full px-5 pb-5 pt-12",style:{"min-height":"180px"}},ul={class:"px-3 pt-2 pb-8"},hl={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"},xl={key:1,"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 5a2 2 0 012-2h10a2 2 0 012 2v16l-7-3.5L5 21V5z"},pl={key:2,"stroke-linecap":"round","stroke-linejoin":"round",d:"M13 2L3 14h9l-1 8 10-12h-9l1-8z"},gl={key:3,"stroke-linecap":"round","stroke-linejoin":"round",d:"M4 6h16M4 12h16M4 18h7"},bl=["onClick"],vl=["onClick"],fl={key:1,class:"flex items-center justify-center py-16 px-4"},ml=O({__name:"MagazineGrid",props:{sections:{},heroImageUrl:{default:null},title:{default:"Brief"},query:{default:""}},setup(a){const d=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,c){const o=v(b);return o.length<=c?o:o.slice(0,c).replace(/\s+\S*$/,"")+" ..."}const f=B(()=>{const b=[],c=d.sections;if(!c.length)return b;let o=0;for(const S of d.query||"brief")o=(o<<5)-o+S.charCodeAt(0)|0;let r="",h=0,M=!1;return c.forEach((S,N)=>{if(N===0&&!S.group){b.push({type:"wide",title:S.title,text:x(S.content,200),label:"The Lead",author:S.author,section:S});return}const I=S.group||"";if(I&&I!==r&&(M&&(b.push({type:"dark",title:"",text:""}),M=!1),b.push({type:"banner",title:"",text:"",icon:g[h%g.length],label:I}),h++,r=I),I){const C=M?"dark":"half",k=v(S.content),p=v(S.title),y=k.toLowerCase().startsWith(p.toLowerCase().slice(0,30));b.push({type:C,title:y?"":S.title,text:x(S.content,y?160:100),section:S}),M=!M}else M&&(b.push({type:"dark",title:"",text:""}),M=!1),b.push({type:"wide",title:S.title,text:x(S.content,180),author:S.author,section:S})}),M&&b.push({type:"dark",title:"",text:""}),b});function $(b){const c=d.sections.indexOf(b);w(b,c>=0?c:0)}const _=B(()=>{const b=(d.query??"").trim();return b?b.length>100?b.slice(0,97)+"...":b:d.title});return(b,c)=>(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",ol,[ie(b.$slots,"header-actions",{},void 0,!0)])],2),e("div",al,[_.value?(s(),n("div",il,[e("div",rl,[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,cl)):(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",dl,[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)])])):m("",!0),e("div",ul,[e("div",{class:i(["grid grid-cols-2 gap-px",t(l)?"bg-white/12":"bg-black/10"])},[(s(!0),n(D,null,L(f.value,(o,r)=>(s(),n(D,{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",hl)):o.icon==="bookmark"?(s(),n("path",xl)):o.icon==="lightning"?(s(),n("path",pl)):(s(),n("path",gl))],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)):m("",!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)):m("",!0),e("p",{class:i(["font-serif text-sm leading-relaxed",t(l)?"text-white/70":"text-black/60"])},u(o.text),3)],10,bl)):(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)):m("",!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)):m("",!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,vl))],64))),128))],2)]),a.sections.length===0?(s(),n("div",fl,[e("p",{class:i(["text-sm",t(l)?"text-white/40":"text-gray-400"])}," No sections to display ",2)])):m("",!0)])],2))}}),st=Ie(ml,[["__scopeId","data-v-02741b8c"]]),wl={class:"h-full flex flex-col"},yl={class:"flex items-center justify-between gap-2"},kl={class:"flex items-center gap-2 shrink-0"},$l=["placeholder"],_l={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},Cl={class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},jl=["aria-label","onClick"],Sl={class:"cover-card flex-1 min-h-0 relative"},Ml={class:"aspect-[4/3] flex flex-col w-full overflow-hidden rounded-[10px]"},Tl={class:"flex-1 min-h-0 relative"},Il=["src","alt","onError"],Dl={key:2,class:"absolute inset-0 bg-gradient-to-t from-black/60 via-black/20 to-transparent pointer-events-none"},Bl={key:0,class:"flex items-center justify-center py-12"},nt=O({__name:"NewsGrid",props:{articles:{},title:{default:"News & Articles"},query:{default:""},variant:{default:"news"}},setup(a){const d=a,{isDark:l}=Z(),{openArticleDetail:w,openWebsiteDetail:g}=$e(),v=j(""),x=j(new Set);function f(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 d.variant==="websites"?Ot(h.title,_(h.url)):Ht(h.title,_(h.url))}function c(h){d.variant==="websites"?g(h):w(h)}function o(h,M){if(!M.trim())return 0;const N=M.toLowerCase().split(/\s+/).filter(y=>y.length>1);if(N.length===0)return 0;const I=h.title.toLowerCase(),C=(h.content??"").toLowerCase(),k=h.url.toLowerCase();let p=0;for(const y of N)I.includes(y)&&(p+=3),C.includes(y)&&(p+=2),k.includes(y)&&(p+=1);return p}const r=B(()=>{let h=d.articles;if(v.value.trim()){const M=v.value.toLowerCase();h=h.filter(S=>S.title.toLowerCase().includes(M)||(S.content??"").toLowerCase().includes(M)||S.url.toLowerCase().includes(M))}return d.query.trim()?[...h].sort((M,S)=>o(S,d.query)-o(M,d.query)):h});return(h,M)=>(s(),n("div",wl,[e("div",{class:"p-4 space-y-3",style:G(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",yl,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",kl,[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")])]),K(e("input",{"onUpdate:modelValue":M[0]||(M[0]=S=>v.value=S),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),[[J,v.value]])],4),e("div",_l,[e("div",Cl,[(s(!0),n(D,null,L(r.value,(S,N)=>(s(),n("button",{key:N,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":S.title,onClick:I=>c(S)},[e("div",Sl,[e("div",Ml,[e("div",Tl,[f(S.imgSrc)&&!x.value.has(S.url)?(s(),n("img",{key:0,src:S.imgSrc,alt:S.title,class:"absolute inset-0 w-full h-full object-cover transition-transform duration-300 group-hover:scale-110",loading:"lazy",onError:I=>$(S.url)},null,40,Il)):(s(),n("div",{key:1,class:"absolute inset-0 bg-cover bg-center",style:G({backgroundImage:`url(${b(S)})`})},null,4)),f(S.imgSrc)&&!x.value.has(S.url)?(s(),n("div",Dl)):m("",!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(S.title),3),S.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(S.content),3)):m("",!0),e("p",{class:i(["text-xs truncate mt-0.5",t(l)?"text-white/50":"text-gray-500"])},u(_(S.url)),3)],2)])])],8,jl))),128))]),r.value.length===0?(s(),n("div",Bl,[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)])):m("",!0)])]))}}),Ll={class:"h-full flex flex-col"},Pl={class:"flex items-center justify-between gap-2"},Nl={class:"flex items-center gap-2 shrink-0"},Al={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},zl={class:"grid grid-cols-1 sm:grid-cols-2 gap-3"},El=["aria-label","onClick"],Fl={class:"aspect-[3/1] relative w-full overflow-hidden"},Rl=["src","alt"],Vl={class:"p-3"},Ul={class:"flex items-center gap-3 mt-2 flex-wrap"},ql={key:0,class:"flex items-center justify-center py-12"},Gl=O({__name:"RecipeGrid",props:{recipes:{},title:{default:"Recipes"}},emits:["selectRecipe"],setup(a){const d=a,{isDark:l}=Z(),w=j(""),g=B(()=>{if(!w.value.trim())return d.recipes;const v=w.value.toLowerCase();return d.recipes.filter(x=>x.title.toLowerCase().includes(v)||x.ingredients.some(f=>f.toLowerCase().includes(v)))});return(v,x)=>(s(),n("div",Ll,[e("div",{class:"p-4 space-y-3",style:G(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",Pl,[e("h3",{class:i(["text-sm font-bold",t(l)?"text-white/90":"text-gray-900"])},u(a.title),3),e("div",Nl,[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?K((s(),n("input",{key:0,"onUpdate:modelValue":x[0]||(x[0]=f=>w.value=f),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)),[[J,w.value]]):m("",!0)],4),e("div",Al,[e("div",zl,[(s(!0),n(D,null,L(g.value,(f,$)=>(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":f.title,onClick:_=>v.$emit("selectRecipe",f)},[e("div",Fl,[e("img",{src:t(Wt)(f.title,f.time),alt:f.title,class:"w-full h-full object-cover"},null,8,Rl)]),e("div",Vl,[e("p",{class:i(["text-sm font-semibold leading-tight line-clamp-2",t(l)?"text-white/90":"text-gray-900"])},u(f.title),3),e("div",Ul,[f.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)),se(" "+u(f.time),1)],2)):m("",!0),f.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)),se(" "+u(f.servings),1)],2)):m("",!0),f.calories?(s(),n("span",{key:2,class:i(["text-xs",t(l)?"text-white/40":"text-gray-500"])},u(f.calories)+" cal ",3)):m("",!0)]),f.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(f.ingredients.slice(0,4).join(" · ")),3)):m("",!0)])],10,El))),128))]),g.value.length===0?(s(),n("div",ql,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No recipes match your search ",2)])):m("",!0)])]))}}),Ol={class:"h-full flex flex-col"},Hl={class:"flex items-center justify-between gap-2"},Wl={class:"flex flex-wrap gap-1.5"},Kl=["onClick"],Yl={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-4 pb-16"},Ql={class:"space-y-2"},Jl=["aria-label","onClick"],Zl={class:"text-white/90"},Xl={class:"flex-1 min-w-0"},eo={class:"flex items-center gap-2"},to={class:"flex gap-1 mt-1.5"},so={key:0,class:"flex items-center justify-center py-12"},no=O({__name:"AppsGrid",props:{apps:{},title:{default:"Recommended Apps"}},emits:["selectApp"],setup(a){const d=a,{isDark:l}=Z(),w=j(""),g=j(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(c=>c.value===b)?.label??b}function f(b){return{ios:"iOS",android:"Android",web:"Web",desktop:"Desktop",cli:"CLI",nodeos:"Node"}[b]??b}function $(b){let c=0;for(let r=0;r{let b=d.apps;if(w.value){const c=w.value.toLowerCase();b=b.filter(o=>o.name.toLowerCase().includes(c)||o.description.toLowerCase().includes(c)||o.keywords.some(r=>r.toLowerCase().includes(c)))}return g.value&&(b=b.filter(c=>c.category===g.value)),b});return(b,c)=>(s(),n("div",Ol,[e("div",{class:"p-4 space-y-3",style:G(t(l)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",Hl,[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)]),K(e("input",{"onUpdate:modelValue":c[0]||(c[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),[[J,w.value]]),e("div",Wl,[(s(),n(D,null,L(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,Kl)),64))])],4),e("div",Yl,[e("div",Ql,[(s(!0),n(D,null,L(_.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:G({background:$(o.id)})},[e("span",Zl,u(o.name.charAt(0)),1)],4),e("div",Xl,[e("div",eo,[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",to,[(s(!0),n(D,null,L(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(f(r)),3))),128))])])],10,Jl))),128))]),_.value.length===0?(s(),n("div",so,[e("p",{class:i(["text-sm",t(l)?"text-white/30":"text-gray-400"])}," No apps match your search ",2)])):m("",!0)])]))}}),lo={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"},oo={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"},ao={class:"truncate"},io={key:1,class:"w-3 h-3 shrink-0 text-accent ml-auto",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ro={key:0},co=O({__name:"FileTreeNode",props:{entry:{},activeFile:{},depth:{}},emits:["select"],setup(a,{emit:d}){const l=a,{isFileSelected:w}=xe(),g=d,{isDark:v}=Z(),x=j(l.depth<1),f=B(()=>!l.entry.isDirectory&&l.activeFile===l.entry.path),$=B(()=>!l.entry.isDirectory&&w(l.entry.path));function _(){l.entry.isDirectory?x.value=!x.value:g("select",l.entry.path)}return(b,c)=>{const o=Kt("FileTreeNode",!0);return s(),n("div",null,[e("button",{class:i(["w-full text-left flex items-center gap-1.5 py-1 px-2 rounded-lg text-xs transition-colors",[$.value?"bg-accent/15 text-accent ring-1 ring-accent/30":f.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:G({paddingLeft:`${a.depth*12+8}px`}),onClick:_},[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"},[...c[1]||(c[1]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"},null,-1)])],2)):m("",!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",lo)):(s(),n("path",oo))],2)),e("span",ao,u(a.entry.name),1),$.value?(s(),n("svg",io,[...c[2]||(c[2]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"3",d:"M5 13l4 4L19 7"},null,-1)])])):m("",!0)],6),a.entry.isDirectory&&x.value&&a.entry.children?(s(),n("div",ro,[(s(!0),n(D,null,L(a.entry.children,r=>(s(),q(o,{key:r.path,entry:r,"active-file":a.activeFile,depth:a.depth+1,onSelect:c[0]||(c[0]=h=>b.$emit("select",h))},null,8,["entry","active-file","depth"]))),128))])):m("",!0)])}}}),uo={class:"flex flex-col h-full"},ho={class:"flex items-center gap-1 min-w-0 flex-1"},xo={class:"flex items-center gap-2 shrink-0"},po={key:0,class:"flex-1 overflow-y-auto custom-scrollbar p-3"},go={class:"mb-3 flex gap-2"},bo={class:"flex justify-end gap-2"},vo=["disabled"],fo={class:"grid grid-cols-2 gap-2"},mo=["onClick"],wo={key:1,class:"flex-1 overflow-y-auto custom-scrollbar p-2"},yo={key:0,class:"flex items-center justify-center py-12"},ko=O({__name:"ProjectGrid",props:{isWideDesktop:{type:Boolean},isMobile:{type:Boolean}},setup(a){const{isDark:d}=Z(),{projectList:l,activeProject:w,fileTree:g,activeFile:v,codeMode:x,selectedFiles:f,selectProject:$,openFile:_,createProject:b,clearActiveFile:c,toggleFileSelection:o,isFileSelected:r,loadProjects:h}=xe();ne(()=>{l.value.length===0&&h()});const M=j(""),S=j(!1),N=j(""),I=j(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(U=>U.name.toLowerCase().includes(F)||(U.language??"").toLowerCase().includes(F)):l.value});function y(F){$(F)}function A(){const{activeProject:F,fileTree:U}=xe();F.value=null,U.value=[],c()}function V(F){o(F),_(F)}function E(){S.value=!0,N.value="",ye(()=>I.value?.focus())}function Y(){S.value=!1,N.value=""}function H(){const F=N.value.trim();F&&(b(F),S.value=!1,N.value="")}return(F,U)=>(s(),n("div",uo,[e("div",{class:"shrink-0 px-4 py-3 flex items-center justify-between gap-2",style:G(t(d)?"border-bottom: 1px solid rgba(255, 255, 255, 0.08)":"border-bottom: 1px solid rgba(0, 0, 0, 0.06)")},[e("div",ho,[C.value!=="projects"?(s(),n("button",{key:0,class:i(["text-xs shrink-0 transition-colors",t(d)?"text-white/40 hover:text-white/70 hover:underline":"text-gray-400 hover:text-gray-700 hover:underline"]),onClick:A}," Projects ",2)):m("",!0),C.value!=="projects"?(s(),n("span",{key:1,class:i(["text-xs shrink-0",t(d)?"text-white/20":"text-gray-300"])},"/",2)):m("",!0),e("span",{class:i(["text-sm font-semibold truncate",t(d)?"text-white/90":"text-gray-900"])},u(k.value),3)]),e("div",xo,[C.value==="projects"?(s(),n("p",{key:0,class:i(["text-xs",t(d)?"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(d)?"text-white/30":"text-gray-400"])},u(t(w)?.language),3)):m("",!0),ie(F.$slots,"header-actions")])],4),C.value==="projects"?(s(),n("div",po,[e("div",go,[K(e("input",{"onUpdate:modelValue":U[0]||(U[0]=W=>M.value=W),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(d)?"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),[[J,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(d)?"bg-accent/20 text-accent hover:bg-accent/30":"bg-accent/10 text-accent hover:bg-accent/20"]),onClick:E},[...U[2]||(U[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),se(" New ",-1)])],2)]),S.value?(s(),n("div",{key:0,class:i(["mb-3 p-3 rounded-xl",t(d)?"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(d)?"text-white/70":"text-gray-700"])}," New Project ",2),K(e("input",{ref_key:"newProjectInputRef",ref:I,"onUpdate:modelValue":U[1]||(U[1]=W=>N.value=W),type:"text",placeholder:"Project name...",class:i(["w-full px-3 py-2 rounded-lg text-base bg-transparent outline-none mb-2",t(d)?"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(H,["enter"]),ae(Y,["escape"])]},null,34),[[J,N.value]]),e("div",bo,[e("button",{class:i(["text-xs px-2.5 py-1 rounded-lg transition-colors",t(d)?"text-white/40 hover:text-white/70":"text-gray-500 hover:text-gray-800"]),onClick:Y}," Cancel ",2),e("button",{class:i(["text-xs px-2.5 py-1 rounded-lg font-medium transition-colors",t(d)?"bg-accent/20 text-accent hover:bg-accent/30":"bg-accent/10 text-accent hover:bg-accent/20"]),disabled:!N.value.trim(),onClick:H}," Create ",10,vo)])],2)):m("",!0),e("div",fo,[(s(!0),n(D,null,L(p.value,W=>(s(),n("button",{key:W.path,class:i(["text-left p-3 rounded-xl transition-all duration-150",t(d)?"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:le=>y(W)},[e("div",{class:i(["w-8 h-8 rounded-lg flex items-center justify-center mb-2",t(d)?"bg-white/5":"bg-black/5"])},[(s(),n("svg",{class:i(["w-4 h-4",W.isGit?"text-accent":t(d)?"text-white/40":"text-gray-400"]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...U[3]||(U[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(d)?"text-white/80":"text-gray-800"])},u(W.name),3),e("p",{class:i(["text-xs mt-0.5 truncate",t(d)?"text-white/25":"text-gray-400"])},u(W.language),3)],10,mo))),128))])])):C.value==="filetree"?(s(),n("div",wo,[(s(!0),n(D,null,L(t(g),W=>(s(),q(co,{key:W.path,entry:W,"active-file":t(v),depth:0,onSelect:V},null,8,["entry","active-file"]))),128)),t(g).length===0?(s(),n("div",yo,[e("p",{class:i(["text-xs",t(d)?"text-white/30":"text-gray-400"])}," Loading file tree... ",2)])):m("",!0)])):m("",!0)]))}}),$o={class:"flex flex-col h-full"},_o={class:"shrink-0 px-4 py-2 flex gap-1.5 overflow-x-auto scrollbar-hide"},Co=["onClick"],jo={class:"flex-1 overflow-y-auto px-4 py-3"},So={class:"grid grid-cols-2 gap-2"},Mo=["onClick"],To=["onClick"],Io={key:0,class:"w-3 h-3 text-white",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Do={key:2,class:"h-8 flex items-end gap-0.5 mb-2"},Bo={key:3,class:"h-8 flex items-center mb-2"},Lo={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"},Po={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"},No={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"},Ao={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"},zo=O({__name:"DesignSystemGrid",setup(a){const{isDark:d}=Z(),{openDesignSystemItem:l}=$e(),{codeMode:w,toggleDesignToken:g,isDesignTokenSelected:v}=xe(),x=j("all"),f=[{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 c(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",$o,[e("div",{class:"shrink-0 px-4 py-3 flex items-center justify-between gap-2",style:G(t(d)?"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(d)?"text-white/90":"text-gray-900"])}," Design System ",2),e("p",{class:i(["text-xs",t(d)?"text-white/30":"text-gray-400"])},u(_.value.length)+" items ",3)],4),e("div",_o,[(s(),n(D,null,L(f,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(d)?"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,Co)),64))]),e("div",jo,[e("div",So,[(s(!0),n(D,null,L(_.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(d)?"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(d)?"bg-white/10 hover:bg-white/20":"bg-black/10 hover:bg-black/20"]),onClick:we(M=>t(g)(h.id),["stop"])},[t(v)(h.id)?(s(),n("svg",Io,[...r[0]||(r[0]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"3",d:"M5 13l4 4L19 7"},null,-1)])])):m("",!0)],10,To)):m("",!0),h.category==="colors"&&h.preview==="inline"?(s(),n("div",{key:1,class:i(["h-8 rounded-md mb-2 border",t(d)?"border-white/10":"border-black/10"]),style:G({background:c(h.code)})},null,6)):h.category==="spacing"&&h.preview==="inline"?(s(),n("div",Do,[...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",Bo,[(s(),n("svg",{class:i(["w-5 h-5 transition-colors",t(d)?"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",Lo)):h.category==="molecules"?(s(),n("path",Po)):h.category==="organisms"?(s(),n("path",No)):(s(),n("path",Ao))],2))])),e("h3",{class:i(["text-xs font-semibold leading-tight mb-0.5",t(d)?"text-white/80":"text-gray-800"])},u(h.name),3),e("p",{class:i(["text-xs leading-snug line-clamp-2",t(d)?"text-white/40":"text-gray-400"])},u(h.description),3)],10,Mo))),128))])])]))}}),me=j(null),lt=j(!1),Re=j(!1),he=j(null);function ve(){const a=B(()=>{if(!me.value)return null;try{return He(me.value)}catch{return null}}),d=B(()=>!!me.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 f=await window.nostr.getPublicKey();me.value=f}catch(f){he.value=f instanceof Error?f.message:"Failed to get public key"}finally{Re.value=!1}}async function v(f){if(he.value=null,!window.nostr)return he.value="No Nostr extension detected",null;try{return await window.nostr.signEvent(f)}catch($){return he.value=$ instanceof Error?$.message:"Failed to sign event",null}}function x(){me.value=null,he.value=null}return ne(()=>{w(),setTimeout(w,500)}),{pubkey:me,npub:a,isAvailable:lt,isLoggedIn:d,isLoading:Re,error:he,truncatedNpub:l,login:g,logout:x,signEvent:v,checkAvailability:w}}const Eo="aiui-nostr-dms",Fo=1,ke="messages",je=j([]),Se=j(null),Ve=j(!1);let Me=null;function vt(){return Me||(Me=new Promise((a,d)=>{const l=indexedDB.open(Eo,Fo);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,d(l.error)}}),Me)}function Ro(a){return a.length<=12?a:a.slice(0,8)+"..."+a.slice(-4)}async function ot(a,d){const l=await vt(),w=a.fromPubkey===d?a.toPubkey:a.fromPubkey,g={...a,contactPubkey:w};return new Promise((v,x)=>{const f=l.transaction(ke,"readwrite");f.objectStore(ke).put(g),f.oncomplete=()=>v(),f.onerror=()=>x(f.error)})}async function Ue(){const a=await vt();return new Promise((d,l)=>{const g=a.transaction(ke,"readonly").objectStore(ke).getAll();g.onsuccess=()=>d(g.result),g.onerror=()=>l(g.error)})}function qe(a){const d=new Map;for(const w of a){const g=d.get(w.contactPubkey)??[];g.push(w),d.set(w.contactPubkey,g)}const l=[];for(const[w,g]of d)g.sort((v,x)=>v.created_at-x.created_at),l.push({contactPubkey:w,contactName:Ro(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 Vo(){const{pubkey:a,isLoggedIn:d}=ve(),l=B(()=>Se.value?je.value.find($=>$.contactPubkey===Se.value)??null:null);async function w(){if(d.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($,_),c={kind:4,created_at:Math.floor(Date.now()/1e3),tags:[["p",$]],content:b},o=await window.nostr.signEvent(c);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-C64NofB2.js"),__vite__mapDeps([0,1,2])).then(S=>S.useNostr());await h(o);const M=await Ue();return je.value=qe(M),!0}catch{return!1}}async function v($,_,b,c){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:c,decrypted:!0};await ot(r,a.value);const h=await Ue();je.value=qe(h)}catch{}}function x($){Se.value=$}function f(){Se.value=null}return{threads:je,activeThread:l,activeContact:Se,isLoading:Ve,loadDMs:w,sendDM:g,receiveDM:v,selectContact:x,clearActiveContact:f}}const Uo={class:"h-full flex flex-col"},qo={class:"flex items-center gap-2 px-4 py-3 border-b border-white/[0.08]"},Go={class:"flex-1 min-w-0"},Oo={class:"text-xs font-semibold text-white/80 truncate"},Ho={class:"text-xs text-white/30 font-mono truncate"},Wo={class:"text-xs leading-relaxed break-words"},Ko={class:"text-xs mt-1 text-white/25 tabular-nums"},Yo={class:"px-4 py-3 border-t border-white/[0.08]"},Qo={class:"flex gap-2"},Jo=["disabled"],Zo={class:"p-4 border-b border-white/[0.08]"},Xo={class:"flex items-center justify-between gap-2 mb-3"},ea={key:0,class:"space-y-2 mb-3"},ta=["disabled"],sa={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-1"},na={key:0,class:"flex items-center justify-center py-12"},la={key:1,class:"flex items-center justify-center py-12"},oa={key:2,class:"flex items-center justify-center py-12"},aa=["onClick"],ia={class:"flex items-start gap-2.5"},ra={class:"w-8 h-8 rounded-full shrink-0 flex items-center justify-center text-xs font-bold bg-accent/20 text-accent"},ca={class:"flex-1 min-w-0"},da={class:"flex items-center gap-1.5"},ua={class:"text-xs font-semibold truncate text-white/80"},ha={key:0,class:"text-xs ml-auto shrink-0 text-white/20"},xa={key:0,class:"text-xs mt-1 text-white/40 truncate"},pa=O({__name:"NostrDMs",setup(a){const{threads:d,activeThread:l,activeContact:w,isLoading:g,loadDMs:v,sendDM:x,selectContact:f,clearActiveContact:$}=Vo(),{pubkey:_,isLoggedIn:b}=ve(),c=j(""),o=j(!1),r=j(null),h=j(!1),M=j("");function S(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 N(){if(!c.value.trim()||o.value||!w.value)return;o.value=!0,await x(w.value,c.value.trim())&&(c.value="",await ye(),I()),o.value=!1}function I(){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&&(f(k),h.value=!1,M.value="")}return ce(w,async()=>{await ye(),I()}),ne(()=>{v()}),(k,p)=>(s(),n("div",Uo,[t(l)?(s(),n(D,{key:0},[e("div",qo,[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",Go,[e("p",Oo,u(t(l).contactName),1),e("p",Ho,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(D,null,L(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",Wo,u(y.content),1),e("p",Ko,u(S(y.created_at)),1)],2)],2))),128))],512),e("div",Yo,[e("div",Qo,[K(e("input",{"onUpdate:modelValue":p[1]||(p[1]=y=>c.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(N,["enter"])},null,544),[[J,c.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:!c.value.trim()||o.value,onClick:N}," Send ",8,Jo)])])],64)):(s(),n(D,{key:1},[e("div",Zo,[e("div",Xo,[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",ea,[K(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),[[J,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,ta)])):m("",!0)]),e("div",sa,[t(b)?t(g)?(s(),n("div",la,[...p[7]||(p[7]=[e("p",{class:"text-xs text-white/30"},"Loading messages...",-1)])])):t(d).length===0?(s(),n("div",oa,[...p[8]||(p[8]=[e("p",{class:"text-xs text-white/30"},"No messages yet",-1)])])):m("",!0):(s(),n("div",na,[...p[6]||(p[6]=[e("p",{class:"text-xs text-white/30"},"Sign in with Nostr to use DMs",-1)])])),(s(!0),n(D,null,L(t(d),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(f)(y.contactPubkey)},[e("div",ia,[e("div",ra,u(y.contactName.charAt(0).toUpperCase()),1),e("div",ca,[e("div",da,[e("span",ua,u(y.contactName),1),y.lastMessage?(s(),n("span",ha,u(S(y.lastMessage.created_at)),1)):m("",!0)]),y.lastMessage?(s(),n("p",xa,u(y.lastMessage.content),1)):m("",!0)])])],8,aa))),128))])],64))]))}}),ga={class:"h-full flex flex-col"},ba={class:"p-4 border-b border-white/[0.08]"},va={class:"flex gap-2"},fa=["disabled"],ma={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-2"},wa={class:"flex items-center gap-2"},ya={class:"text-xs font-mono text-white/70 truncate flex-1"},ka={class:"flex items-center gap-2 flex-wrap"},$a=["onClick"],_a=["onClick"],Ca=["disabled","onClick"],ja=["onClick"],Sa={key:0,class:"mt-4 pt-4 border-t border-white/5"},Ma=["disabled"],Ta={key:0,class:"text-xs mt-1 text-white/30"},Ia=O({__name:"NostrRelayManager",setup(a){const{relayStates:d,addRelay:l,removeRelay:w,toggleRelayRead:g,toggleRelayWrite:v,testRelay:x,importNIP65Relays:f,fetchNote:$}=De(),{isLoggedIn:_,pubkey:b}=ve(),c=j(""),o=j(null),r=Pe({}),h=j(!1),M=j("");function S(){let C=c.value.trim();C&&(!C.startsWith("wss://")&&!C.startsWith("ws://")&&(C="wss://"+C),l(C),c.value="")}async function N(C){o.value=C;const k=await x(C);r[C]=k,o.value=null}async function I(){if(!b.value)return;h.value=!0,M.value="Fetching relay list...";const C=await $(b.value,5e3);C?(f({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",ga,[e("div",ba,[k[1]||(k[1]=e("h3",{class:"text-sm font-bold text-white/90 mb-3"},"Relay Management",-1)),e("div",va,[K(e("input",{"onUpdate:modelValue":k[0]||(k[0]=p=>c.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(S,["enter"])},null,544),[[J,c.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:!c.value.trim(),onClick:S}," Add ",8,fa)])]),e("div",ma,[(s(!0),n(D,null,L(t(d),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",wa,[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",ya,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)):m("",!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",ka,[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,$a),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,_a),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=>N(p.url)},u(o.value===p.url?"Testing...":"Test"),9,Ca),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,ja)]),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)):m("",!0)]))),128)),t(_)?(s(),n("div",Sa,[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:I},u(h.value?"Importing...":"Import relays from NIP-65 (kind:10002)"),9,Ma),M.value?(s(),n("p",Ta,u(M.value),1)):m("",!0)])):m("",!0)])]))}}),Da={class:"h-full flex flex-col"},Ba={key:0,class:"flex-1 flex items-center justify-center"},La={key:1,class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-4"},Pa={class:"rounded-xl overflow-hidden border border-white/5"},Na={class:"px-4 pb-4 -mt-8"},Aa={key:0,class:"text-lg font-bold text-accent"},za={class:"text-sm font-bold text-white/90 mt-2"},Ea={key:0,class:"text-xs text-purple-400/60"},Fa={key:1,class:"text-xs text-white/50 mt-1 line-clamp-2"},Ra={class:"space-y-3"},Va=["disabled"],Ua=O({__name:"NostrProfileEditor",setup(a){const{isLoggedIn:d,signEvent:l,pubkey:w}=ve(),{publishEvent:g,fetchNote:v}=De(),x=Pe({name:"",display_name:"",about:"",picture:"",banner:"",website:"",nip05:"",lud16:""}),f=j(!1),$=j(""),_=j(!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 c(){if(!d.value)return;f.value=!0,$.value="";const o={};for(const[N,I]of Object.entries(x))I&&(o[N]=I);const r={kind:0,created_at:Math.floor(Date.now()/1e3),tags:[],content:JSON.stringify(o)},h=await l(r);if(!h){f.value=!1,$.value="Signing failed",_.value=!1;return}const M=await g(h),S=M.filter(N=>N.success).length;f.value=!1,S>0?($.value=`Published to ${S}/${M.length} relays`,_.value=!0):($.value="Failed to publish to any relay",_.value=!1)}return ne(()=>{b()}),(o,r)=>(s(),n("div",Da,[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(d)?(s(),n("div",La,[e("div",Pa,[e("div",{class:i(["h-24 bg-cover bg-center",x.banner?"":"bg-gradient-to-r from-accent/20 to-purple-500/20"]),style:G(x.banner?{backgroundImage:`url(${x.banner})`}:{})},null,6),e("div",Na,[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:G(x.picture?{backgroundImage:`url(${x.picture})`}:{})},[x.picture?m("",!0):(s(),n("span",Aa,u((x.display_name||x.name||"?").charAt(0).toUpperCase()),1))],6),e("p",za,u(x.display_name||x.name||"Anonymous"),1),x.nip05?(s(),n("p",Ea,u(x.nip05),1)):m("",!0),x.about?(s(),n("p",Fa,u(x.about),1)):m("",!0)])]),e("div",Ra,[e("div",null,[r[9]||(r[9]=e("label",{class:"text-xs text-white/30 block mb-1"},"Display Name",-1)),K(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),[[J,x.display_name]])]),e("div",null,[r[10]||(r[10]=e("label",{class:"text-xs text-white/30 block mb-1"},"Username",-1)),K(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),[[J,x.name]])]),e("div",null,[r[11]||(r[11]=e("label",{class:"text-xs text-white/30 block mb-1"},"Bio",-1)),K(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),[[J,x.about]])]),e("div",null,[r[12]||(r[12]=e("label",{class:"text-xs text-white/30 block mb-1"},"Avatar URL",-1)),K(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),[[J,x.picture]])]),e("div",null,[r[13]||(r[13]=e("label",{class:"text-xs text-white/30 block mb-1"},"Banner URL",-1)),K(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),[[J,x.banner]])]),e("div",null,[r[14]||(r[14]=e("label",{class:"text-xs text-white/30 block mb-1"},"Website",-1)),K(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),[[J,x.website]])]),e("div",null,[r[15]||(r[15]=e("label",{class:"text-xs text-white/30 block mb-1"},"NIP-05 Address",-1)),K(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),[[J,x.nip05]])]),e("div",null,[r[16]||(r[16]=e("label",{class:"text-xs text-white/30 block mb-1"},"Lightning Address",-1)),K(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),[[J,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:f.value,onClick:c},u(f.value?"Publishing...":"Publish Profile (kind:0)"),9,Va),$.value?(s(),n("div",{key:0,class:i(["text-xs text-center",_.value?"text-emerald-400/60":"text-red-400/60"])},u($.value),3)):m("",!0)])])):(s(),n("div",Ba,[...r[8]||(r[8]=[e("p",{class:"text-xs text-white/30"},"Sign in with Nostr to edit your profile",-1)])]))]))}}),qa={class:"relative glass-card w-[320px] max-w-[90vw] p-5 space-y-4 animate-scale-in"},Ga={class:"flex items-center justify-between"},Oa={class:"text-xs text-white/40 truncate font-mono"},Ha={class:"flex gap-1.5 flex-wrap"},Wa=["onClick"],Ka=["disabled"],Ya={key:0,class:"space-y-2"},Qa={class:"flex justify-center"},Ja={class:"flex gap-1"},Za=["value"],Xa=["href"],ei={key:1,class:"text-xs text-red-400/60 text-center"},ti=O({__name:"ZapDialog",props:{isOpen:{type:Boolean},targetName:{},lightningAddress:{}},emits:["close"],setup(a,{emit:d}){const l=a,w=d,g=j(null),v=j(null),x=[21,100,500,1e3,5e3,1e4],f=j(21),$=j(""),_=j(""),b=j(!1),c=j(""),o=j(!1),r=j(null);function h(k){return k>=1e3?`${(k/1e3).toFixed(k%1e3===0?0:1)}k`:String(k)}function M(){w("close"),_.value="",c.value="",$.value=""}async function S(){if(!(!l.lightningAddress||!f.value)){b.value=!0,c.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=f.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 Y=E.includes("?")?"&":"?";E+=`${Y}amount=${V}`,$.value&&(E+=`&comment=${encodeURIComponent($.value)}`);const H=await fetch(E);if(!H.ok)throw new Error("Failed to get invoice");const F=await H.json();if(F.status==="ERROR")throw new Error(F.reason||"Invoice error");_.value=F.pr,await ye(),N(F.pr)}catch(k){c.value=k instanceof Error?k.message:"Zap failed"}finally{b.value=!1}}}function N(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+Y*12)})}function I(){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="",c.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:we(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",qa,[e("div",Ga,[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",Oa,u(a.targetName),1),e("div",Ha,[(s(),n(D,null,L(x,y=>e("button",{key:y,class:i(["text-xs px-2.5 py-1.5 rounded-lg transition-colors",f.value===y?"bg-accent/20 text-accent border border-accent/30":"bg-white/5 text-white/50 hover:bg-white/10"]),onClick:A=>f.value=y},u(h(y)),11,Wa)),64))]),e("div",null,[p[4]||(p[4]=e("label",{class:"text-xs text-white/30 block mb-1"},"Amount (sats)",-1)),K(e("input",{"onUpdate:modelValue":p[0]||(p[0]=y=>f.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),[[J,f.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)),K(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),[[J,$.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:!f.value||f.value<1||b.value,onClick:S},u(b.value?"Generating invoice...":`Zap ${h(f.value)} sats`),9,Ka),_.value?(s(),n("div",Ya,[p[6]||(p[6]=e("p",{class:"text-xs text-white/30 text-center"},"Scan or tap to pay",-1)),e("div",Qa,[e("canvas",{ref_key:"qrCanvas",ref:r,class:"rounded-lg",width:"200",height:"200"},null,512)]),e("div",Ja,[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,Za),e("button",{class:"px-2 py-1.5 rounded text-xs bg-white/5 text-white/40 hover:text-white/60 transition-colors",onClick:I},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,Xa)])):m("",!0),c.value?(s(),n("p",ei,u(c.value),1)):m("",!0)])],544)):m("",!0)}}),si={class:"h-full flex flex-col"},ni={class:"flex items-center gap-2 px-4 py-3 border-b border-white/[0.08]"},li={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-2"},oi={key:0,class:"flex items-center justify-center py-12"},ai={key:1,class:"rounded-xl bg-white/[0.05] border border-white/10 p-3"},ii={class:"flex items-center gap-1.5 mb-1"},ri={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"},ci={class:"text-xs font-semibold text-white/80"},di={class:"text-xs ml-auto text-white/20"},ui={class:"text-xs text-white/70 leading-relaxed whitespace-pre-wrap"},hi={key:2,class:"space-y-1"},xi={class:"text-xs text-white/30 font-medium mt-3 mb-1"},pi={key:3,class:"flex items-center justify-center py-12"},gi={key:0,class:"px-4 py-3 border-t border-white/[0.08]"},bi={key:0,class:"text-xs text-white/30 mb-1"},vi={class:"flex gap-2"},fi=["disabled"],mi=O({__name:"NostrThread",props:{noteId:{}},emits:["back"],setup(a){const d=Yt(()=>pt(()=>import("./ThreadNode-CF2XPC8C.js"),__vite__mapDeps([3,1,2]))),l=a,{fetchNote:w,publishEvent:g}=De(),{isLoggedIn:v,signEvent:x,pubkey:f}=ve(),$=j(null),_=j([]),b=j(!0),c=j(null),o=j("");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 S(l.noteId);_.value=N(p,l.noteId),b.value=!1}async function S(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),Y="wss://relay.nostr.band";try{const H=new WebSocket(Y);H.onopen=()=>{H.send(JSON.stringify(["REQ",A,{kinds:[1],"#e":[k],limit:100}]))},H.onmessage=F=>{try{const U=JSON.parse(F.data);if(Array.isArray(U)&&U[0]==="EVENT"&&U[1]===A&&U[2]){const W=U[2];y.find(le=>le.id===W.id)||y.push({id:W.id,pubkey:W.pubkey,authorName:h(W.pubkey),kind:W.kind,content:W.content,created_at:W.created_at,tags:W.tags??[]})}Array.isArray(U)&&U[0]==="EOSE"&&U[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 N(k,p,y=5){const A=new Map;for(const E of k){let Y=p;const H=E.tags.filter(U=>U[0]==="e");if(H.length>0){const U=H.find(W=>W[3]==="reply");Y=U?U[1]:H[H.length-1][1]}const F=A.get(Y)??[];F.push(E),A.set(Y,F)}function V(E,Y){const H=A.get(E)??[];return H.sort((F,U)=>F.created_at-U.created_at),H.map(F=>({note:F,children:Y{M()}),(k,p)=>(s(),n("div",si,[e("div",ni,[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",li,[b.value?(s(),n("div",oi,[...p[5]||(p[5]=[e("p",{class:"text-xs text-white/30"},"Loading thread...",-1)])])):m("",!0),$.value?(s(),n("div",ai,[e("div",ii,[e("div",ri,u($.value.authorName?.charAt(0)?.toUpperCase()??"?"),1),e("span",ci,u($.value.authorName??"anon"),1),e("span",di,u(r($.value.created_at)),1)]),e("p",ui,u($.value.content),1)])):m("",!0),_.value.length>0?(s(),n("div",hi,[e("p",xi,u(_.value.length)+" replies",1),(s(!0),n(D,null,L(_.value,y=>(s(),q(t(d),{key:y.note.id,node:y,depth:0,onReply:I},null,8,["node"]))),128))])):m("",!0),!b.value&&!$.value?(s(),n("div",pi,[...p[6]||(p[6]=[e("p",{class:"text-xs text-white/30"},"Thread not found",-1)])])):m("",!0)]),$.value&&t(v)?(s(),n("div",gi,[c.value?(s(),n("p",bi,[se(" Replying to "+u(c.value.authorName??"anon")+" ",1),e("button",{class:"text-accent/60 ml-1",onClick:p[1]||(p[1]=y=>c.value=null)},"cancel")])):m("",!0),e("div",vi,[K(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),[[J,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,fi)])])):m("",!0)]))}}),wi={class:"h-full flex flex-col"},yi={class:"p-4 border-b border-white/[0.08]"},ki={class:"flex gap-1.5 flex-wrap"},$i=["onClick"],_i={key:0,class:"flex-1 flex items-center justify-center"},Ci={key:1,class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-2"},ji={key:0,class:"flex items-center justify-center py-12"},Si={class:"flex gap-2 mb-3"},Mi=["placeholder"],Ti=["disabled"],Ii={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"},Di={class:"flex-1 min-w-0"},Bi={class:"text-xs text-white/60 font-mono truncate"},Li={key:0,class:"text-xs text-white/30"},Pi=["onClick"],Ni={key:1,class:"flex items-center justify-center py-12"},Ai=["disabled"],zi=O({__name:"NostrLists",setup(a){const{isLoggedIn:d,signEvent:l,pubkey:w}=ve(),{publishEvent:g}=De(),v=[{kind:3,label:"Follows"},{kind:1e4,label:"Mute"},{kind:10001,label:"Pin"},{kind:10003,label:"Bookmarks"}],x=j(3),f=j([]),$=j(!1),_=j(!1),b=j(""),c=j(!1),o=j(""),r=j(!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 S(k){if(w.value){$.value=!0,_.value=!1,f.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 Y=E[2];f.value=M(Y.tags)}Array.isArray(E)&&E[0]==="EOSE"&&(clearTimeout(A),p.close(),$.value=!1)}catch{}},p.onerror=()=>{clearTimeout(A),$.value=!1}}catch{$.value=!1}}}function N(){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(f.value.find(V=>V.value===p))return;let A=h(p);if(y==="p")try{A=He(p)}catch{}f.value.push({tag:y,value:p,displayValue:A}),_.value=!0,b.value=""}function I(k){f.value=f.value.filter(p=>p.value!==k.value),_.value=!0}async function C(){if(!w.value)return;c.value=!0,o.value="";const k=f.value.map(E=>{const Y=[E.tag,E.value];return E.relay&&Y.push(E.relay),E.petname&&Y.push(E.petname),Y}),p={kind:x.value,created_at:Math.floor(Date.now()/1e3),tags:k,content:""},y=await l(p);if(!y){c.value=!1,o.value="Signing failed",r.value=!1;return}const A=await g(y),V=A.filter(E=>E.success).length;c.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 ne(()=>{S(x.value)}),(k,p)=>(s(),n("div",wi,[e("div",yi,[p[1]||(p[1]=e("h3",{class:"text-sm font-bold text-white/90 mb-3"},"Nostr Lists",-1)),e("div",ki,[(s(),n(D,null,L(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,S(y.kind)}},u(y.label),11,$i)),64))])]),t(d)?(s(),n("div",Ci,[$.value?(s(),n("div",ji,[...p[3]||(p[3]=[e("p",{class:"text-xs text-white/30"},"Loading list...",-1)])])):m("",!0),e("div",Si,[K(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(N,["enter"])},null,40,Mi),[[J,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:N}," Add ",8,Ti)]),(s(!0),n(D,null,L(f.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",Ii,u(y.tag==="p"?"P":y.tag==="e"?"E":y.tag==="t"?"#":"?"),1),e("div",Di,[e("p",Bi,u(y.displayValue),1),y.petname?(s(),n("p",Li,u(y.petname),1)):m("",!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=>I(y)}," Remove ",8,Pi)]))),128)),!$.value&&f.value.length===0?(s(),n("div",Ni,[...p[4]||(p[4]=[e("p",{class:"text-xs text-white/30"},"List is empty",-1)])])):m("",!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:c.value,onClick:C},u(c.value?"Publishing...":"Publish updated list"),9,Ai)):m("",!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)):m("",!0)])):(s(),n("div",_i,[...p[2]||(p[2]=[e("p",{class:"text-xs text-white/30"},"Sign in with Nostr to manage lists",-1)])]))]))}}),Ei={class:"article-reader h-full flex"},Fi={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"},Ri=["onClick"],Vi={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"},Ui={class:"flex-1 text-xs text-white/40 truncate"},qi=["disabled"],Gi=["disabled"],Oi={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"},Hi=["onClick"],Wi={key:0,class:"text-xl font-bold text-white/96 mb-4"},Ki=["innerHTML"],Yi=O({__name:"ArticleReader",props:{content:{},title:{}},emits:["back"],setup(a){const d=a,l=[13,15,17,19,21],w=localStorage.getItem("aiui-article-font-size"),g=j(w?parseInt(w,10):1);ce(g,I=>{localStorage.setItem("aiui-article-font-size",String(I))});const v=j(!1),x=new as({html:!1,linkify:!0,breaks:!0});x.renderer.rules.heading_open=(I,C,k,p,y)=>{const A=I[C],V=parseInt(A.tag.slice(1),10);if(V===2||V===3){const H=(I[C+1]?.children?.reduce((F,U)=>F+(U.content||""),"")||"").toLowerCase().replace(/[^\w]+/g,"-").replace(/(^-|-$)/g,"");A.attrSet("id",H)}return y.renderToken(I,C,k)};const f=x.renderer.rules.link_open||function(I,C,k,p,y){return y.renderToken(I,C,k)};x.renderer.rules.link_open=function(I,C,k,p,y){return I[C].attrSet("target","_blank"),I[C].attrSet("rel","noopener noreferrer"),f(I,C,k,p,y)};const $=B(()=>x.render(d.content)),_=B(()=>{const I=[],C=/^(#{2,3})\s+(.+)$/gm;let k;for(;(k=C.exec(d.content))!==null;){const p=k[2].trim(),y=p.toLowerCase().replace(/[^\w]+/g,"-").replace(/(^-|-$)/g,"");I.push({text:p,id:y,level:k[1].length})}return I}),b=B(()=>{const I=d.content.split(/\s+/).length;return Math.max(1,Math.ceil(I/200))}),c=j(null),o=j(null),r=j(0);let h=null;function M(){if(!c.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:c.value,rootMargin:"-20% 0px -60% 0px",threshold:0}),o.value?.querySelectorAll("h2[id], h3[id]")?.forEach(C=>h.observe(C))}ne(()=>{setTimeout(M,100)}),ce(()=>d.content,()=>{setTimeout(M,100)}),Qt(()=>{h?.disconnect()});function S(I){o.value?.querySelector(`#${CSS.escape(I)}`)?.scrollIntoView({behavior:"smooth",block:"start"})}function N(){const I=window.open("","_blank");I&&(I.document.write(` +}`,usedIn:"Modal entries, tooltip appearances, popovers"}],_=B(()=>x.value==="all"?$:$.filter(o=>o.category===x.value));function b(o){l(o)}function c(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",$o,[e("div",{class:"shrink-0 px-4 py-3 flex items-center justify-between gap-2",style:G(t(d)?"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(d)?"text-white/90":"text-gray-900"])}," Design System ",2),e("p",{class:i(["text-xs",t(d)?"text-white/30":"text-gray-400"])},u(_.value.length)+" items ",3)],4),e("div",_o,[(s(),n(D,null,L(f,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(d)?"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,Co)),64))]),e("div",jo,[e("div",So,[(s(!0),n(D,null,L(_.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(d)?"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(d)?"bg-white/10 hover:bg-white/20":"bg-black/10 hover:bg-black/20"]),onClick:we(M=>t(g)(h.id),["stop"])},[t(v)(h.id)?(s(),n("svg",Io,[...r[0]||(r[0]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"3",d:"M5 13l4 4L19 7"},null,-1)])])):m("",!0)],10,To)):m("",!0),h.category==="colors"&&h.preview==="inline"?(s(),n("div",{key:1,class:i(["h-8 rounded-md mb-2 border",t(d)?"border-white/10":"border-black/10"]),style:G({background:c(h.code)})},null,6)):h.category==="spacing"&&h.preview==="inline"?(s(),n("div",Do,[...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",Bo,[(s(),n("svg",{class:i(["w-5 h-5 transition-colors",t(d)?"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",Lo)):h.category==="molecules"?(s(),n("path",Po)):h.category==="organisms"?(s(),n("path",No)):(s(),n("path",Ao))],2))])),e("h3",{class:i(["text-xs font-semibold leading-tight mb-0.5",t(d)?"text-white/80":"text-gray-800"])},u(h.name),3),e("p",{class:i(["text-xs leading-snug line-clamp-2",t(d)?"text-white/40":"text-gray-400"])},u(h.description),3)],10,Mo))),128))])])]))}}),me=j(null),lt=j(!1),Re=j(!1),he=j(null);function ve(){const a=B(()=>{if(!me.value)return null;try{return He(me.value)}catch{return null}}),d=B(()=>!!me.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 f=await window.nostr.getPublicKey();me.value=f}catch(f){he.value=f instanceof Error?f.message:"Failed to get public key"}finally{Re.value=!1}}async function v(f){if(he.value=null,!window.nostr)return he.value="No Nostr extension detected",null;try{return await window.nostr.signEvent(f)}catch($){return he.value=$ instanceof Error?$.message:"Failed to sign event",null}}function x(){me.value=null,he.value=null}return ne(()=>{w(),setTimeout(w,500)}),{pubkey:me,npub:a,isAvailable:lt,isLoggedIn:d,isLoading:Re,error:he,truncatedNpub:l,login:g,logout:x,signEvent:v,checkAvailability:w}}const Eo="aiui-nostr-dms",Fo=1,ke="messages",je=j([]),Se=j(null),Ve=j(!1);let Me=null;function vt(){return Me||(Me=new Promise((a,d)=>{const l=indexedDB.open(Eo,Fo);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,d(l.error)}}),Me)}function Ro(a){return a.length<=12?a:a.slice(0,8)+"..."+a.slice(-4)}async function ot(a,d){const l=await vt(),w=a.fromPubkey===d?a.toPubkey:a.fromPubkey,g={...a,contactPubkey:w};return new Promise((v,x)=>{const f=l.transaction(ke,"readwrite");f.objectStore(ke).put(g),f.oncomplete=()=>v(),f.onerror=()=>x(f.error)})}async function Ue(){const a=await vt();return new Promise((d,l)=>{const g=a.transaction(ke,"readonly").objectStore(ke).getAll();g.onsuccess=()=>d(g.result),g.onerror=()=>l(g.error)})}function qe(a){const d=new Map;for(const w of a){const g=d.get(w.contactPubkey)??[];g.push(w),d.set(w.contactPubkey,g)}const l=[];for(const[w,g]of d)g.sort((v,x)=>v.created_at-x.created_at),l.push({contactPubkey:w,contactName:Ro(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 Vo(){const{pubkey:a,isLoggedIn:d}=ve(),l=B(()=>Se.value?je.value.find($=>$.contactPubkey===Se.value)??null:null);async function w(){if(d.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($,_),c={kind:4,created_at:Math.floor(Date.now()/1e3),tags:[["p",$]],content:b},o=await window.nostr.signEvent(c);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-r0q7Zk5I.js"),__vite__mapDeps([0,1,2])).then(S=>S.useNostr());await h(o);const M=await Ue();return je.value=qe(M),!0}catch{return!1}}async function v($,_,b,c){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:c,decrypted:!0};await ot(r,a.value);const h=await Ue();je.value=qe(h)}catch{}}function x($){Se.value=$}function f(){Se.value=null}return{threads:je,activeThread:l,activeContact:Se,isLoading:Ve,loadDMs:w,sendDM:g,receiveDM:v,selectContact:x,clearActiveContact:f}}const Uo={class:"h-full flex flex-col"},qo={class:"flex items-center gap-2 px-4 py-3 border-b border-white/[0.08]"},Go={class:"flex-1 min-w-0"},Oo={class:"text-xs font-semibold text-white/80 truncate"},Ho={class:"text-xs text-white/30 font-mono truncate"},Wo={class:"text-xs leading-relaxed break-words"},Ko={class:"text-xs mt-1 text-white/25 tabular-nums"},Yo={class:"px-4 py-3 border-t border-white/[0.08]"},Qo={class:"flex gap-2"},Jo=["disabled"],Zo={class:"p-4 border-b border-white/[0.08]"},Xo={class:"flex items-center justify-between gap-2 mb-3"},ea={key:0,class:"space-y-2 mb-3"},ta=["disabled"],sa={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-1"},na={key:0,class:"flex items-center justify-center py-12"},la={key:1,class:"flex items-center justify-center py-12"},oa={key:2,class:"flex items-center justify-center py-12"},aa=["onClick"],ia={class:"flex items-start gap-2.5"},ra={class:"w-8 h-8 rounded-full shrink-0 flex items-center justify-center text-xs font-bold bg-accent/20 text-accent"},ca={class:"flex-1 min-w-0"},da={class:"flex items-center gap-1.5"},ua={class:"text-xs font-semibold truncate text-white/80"},ha={key:0,class:"text-xs ml-auto shrink-0 text-white/20"},xa={key:0,class:"text-xs mt-1 text-white/40 truncate"},pa=O({__name:"NostrDMs",setup(a){const{threads:d,activeThread:l,activeContact:w,isLoading:g,loadDMs:v,sendDM:x,selectContact:f,clearActiveContact:$}=Vo(),{pubkey:_,isLoggedIn:b}=ve(),c=j(""),o=j(!1),r=j(null),h=j(!1),M=j("");function S(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 N(){if(!c.value.trim()||o.value||!w.value)return;o.value=!0,await x(w.value,c.value.trim())&&(c.value="",await ye(),I()),o.value=!1}function I(){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&&(f(k),h.value=!1,M.value="")}return ce(w,async()=>{await ye(),I()}),ne(()=>{v()}),(k,p)=>(s(),n("div",Uo,[t(l)?(s(),n(D,{key:0},[e("div",qo,[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",Go,[e("p",Oo,u(t(l).contactName),1),e("p",Ho,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(D,null,L(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",Wo,u(y.content),1),e("p",Ko,u(S(y.created_at)),1)],2)],2))),128))],512),e("div",Yo,[e("div",Qo,[K(e("input",{"onUpdate:modelValue":p[1]||(p[1]=y=>c.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(N,["enter"])},null,544),[[J,c.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:!c.value.trim()||o.value,onClick:N}," Send ",8,Jo)])])],64)):(s(),n(D,{key:1},[e("div",Zo,[e("div",Xo,[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",ea,[K(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),[[J,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,ta)])):m("",!0)]),e("div",sa,[t(b)?t(g)?(s(),n("div",la,[...p[7]||(p[7]=[e("p",{class:"text-xs text-white/30"},"Loading messages...",-1)])])):t(d).length===0?(s(),n("div",oa,[...p[8]||(p[8]=[e("p",{class:"text-xs text-white/30"},"No messages yet",-1)])])):m("",!0):(s(),n("div",na,[...p[6]||(p[6]=[e("p",{class:"text-xs text-white/30"},"Sign in with Nostr to use DMs",-1)])])),(s(!0),n(D,null,L(t(d),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(f)(y.contactPubkey)},[e("div",ia,[e("div",ra,u(y.contactName.charAt(0).toUpperCase()),1),e("div",ca,[e("div",da,[e("span",ua,u(y.contactName),1),y.lastMessage?(s(),n("span",ha,u(S(y.lastMessage.created_at)),1)):m("",!0)]),y.lastMessage?(s(),n("p",xa,u(y.lastMessage.content),1)):m("",!0)])])],8,aa))),128))])],64))]))}}),ga={class:"h-full flex flex-col"},ba={class:"p-4 border-b border-white/[0.08]"},va={class:"flex gap-2"},fa=["disabled"],ma={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-2"},wa={class:"flex items-center gap-2"},ya={class:"text-xs font-mono text-white/70 truncate flex-1"},ka={class:"flex items-center gap-2 flex-wrap"},$a=["onClick"],_a=["onClick"],Ca=["disabled","onClick"],ja=["onClick"],Sa={key:0,class:"mt-4 pt-4 border-t border-white/5"},Ma=["disabled"],Ta={key:0,class:"text-xs mt-1 text-white/30"},Ia=O({__name:"NostrRelayManager",setup(a){const{relayStates:d,addRelay:l,removeRelay:w,toggleRelayRead:g,toggleRelayWrite:v,testRelay:x,importNIP65Relays:f,fetchNote:$}=De(),{isLoggedIn:_,pubkey:b}=ve(),c=j(""),o=j(null),r=Pe({}),h=j(!1),M=j("");function S(){let C=c.value.trim();C&&(!C.startsWith("wss://")&&!C.startsWith("ws://")&&(C="wss://"+C),l(C),c.value="")}async function N(C){o.value=C;const k=await x(C);r[C]=k,o.value=null}async function I(){if(!b.value)return;h.value=!0,M.value="Fetching relay list...";const C=await $(b.value,5e3);C?(f({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",ga,[e("div",ba,[k[1]||(k[1]=e("h3",{class:"text-sm font-bold text-white/90 mb-3"},"Relay Management",-1)),e("div",va,[K(e("input",{"onUpdate:modelValue":k[0]||(k[0]=p=>c.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(S,["enter"])},null,544),[[J,c.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:!c.value.trim(),onClick:S}," Add ",8,fa)])]),e("div",ma,[(s(!0),n(D,null,L(t(d),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",wa,[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",ya,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)):m("",!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",ka,[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,$a),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,_a),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=>N(p.url)},u(o.value===p.url?"Testing...":"Test"),9,Ca),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,ja)]),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)):m("",!0)]))),128)),t(_)?(s(),n("div",Sa,[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:I},u(h.value?"Importing...":"Import relays from NIP-65 (kind:10002)"),9,Ma),M.value?(s(),n("p",Ta,u(M.value),1)):m("",!0)])):m("",!0)])]))}}),Da={class:"h-full flex flex-col"},Ba={key:0,class:"flex-1 flex items-center justify-center"},La={key:1,class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-4"},Pa={class:"rounded-xl overflow-hidden border border-white/5"},Na={class:"px-4 pb-4 -mt-8"},Aa={key:0,class:"text-lg font-bold text-accent"},za={class:"text-sm font-bold text-white/90 mt-2"},Ea={key:0,class:"text-xs text-purple-400/60"},Fa={key:1,class:"text-xs text-white/50 mt-1 line-clamp-2"},Ra={class:"space-y-3"},Va=["disabled"],Ua=O({__name:"NostrProfileEditor",setup(a){const{isLoggedIn:d,signEvent:l,pubkey:w}=ve(),{publishEvent:g,fetchNote:v}=De(),x=Pe({name:"",display_name:"",about:"",picture:"",banner:"",website:"",nip05:"",lud16:""}),f=j(!1),$=j(""),_=j(!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 c(){if(!d.value)return;f.value=!0,$.value="";const o={};for(const[N,I]of Object.entries(x))I&&(o[N]=I);const r={kind:0,created_at:Math.floor(Date.now()/1e3),tags:[],content:JSON.stringify(o)},h=await l(r);if(!h){f.value=!1,$.value="Signing failed",_.value=!1;return}const M=await g(h),S=M.filter(N=>N.success).length;f.value=!1,S>0?($.value=`Published to ${S}/${M.length} relays`,_.value=!0):($.value="Failed to publish to any relay",_.value=!1)}return ne(()=>{b()}),(o,r)=>(s(),n("div",Da,[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(d)?(s(),n("div",La,[e("div",Pa,[e("div",{class:i(["h-24 bg-cover bg-center",x.banner?"":"bg-gradient-to-r from-accent/20 to-purple-500/20"]),style:G(x.banner?{backgroundImage:`url(${x.banner})`}:{})},null,6),e("div",Na,[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:G(x.picture?{backgroundImage:`url(${x.picture})`}:{})},[x.picture?m("",!0):(s(),n("span",Aa,u((x.display_name||x.name||"?").charAt(0).toUpperCase()),1))],6),e("p",za,u(x.display_name||x.name||"Anonymous"),1),x.nip05?(s(),n("p",Ea,u(x.nip05),1)):m("",!0),x.about?(s(),n("p",Fa,u(x.about),1)):m("",!0)])]),e("div",Ra,[e("div",null,[r[9]||(r[9]=e("label",{class:"text-xs text-white/30 block mb-1"},"Display Name",-1)),K(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),[[J,x.display_name]])]),e("div",null,[r[10]||(r[10]=e("label",{class:"text-xs text-white/30 block mb-1"},"Username",-1)),K(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),[[J,x.name]])]),e("div",null,[r[11]||(r[11]=e("label",{class:"text-xs text-white/30 block mb-1"},"Bio",-1)),K(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),[[J,x.about]])]),e("div",null,[r[12]||(r[12]=e("label",{class:"text-xs text-white/30 block mb-1"},"Avatar URL",-1)),K(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),[[J,x.picture]])]),e("div",null,[r[13]||(r[13]=e("label",{class:"text-xs text-white/30 block mb-1"},"Banner URL",-1)),K(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),[[J,x.banner]])]),e("div",null,[r[14]||(r[14]=e("label",{class:"text-xs text-white/30 block mb-1"},"Website",-1)),K(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),[[J,x.website]])]),e("div",null,[r[15]||(r[15]=e("label",{class:"text-xs text-white/30 block mb-1"},"NIP-05 Address",-1)),K(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),[[J,x.nip05]])]),e("div",null,[r[16]||(r[16]=e("label",{class:"text-xs text-white/30 block mb-1"},"Lightning Address",-1)),K(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),[[J,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:f.value,onClick:c},u(f.value?"Publishing...":"Publish Profile (kind:0)"),9,Va),$.value?(s(),n("div",{key:0,class:i(["text-xs text-center",_.value?"text-emerald-400/60":"text-red-400/60"])},u($.value),3)):m("",!0)])])):(s(),n("div",Ba,[...r[8]||(r[8]=[e("p",{class:"text-xs text-white/30"},"Sign in with Nostr to edit your profile",-1)])]))]))}}),qa={class:"relative glass-card w-[320px] max-w-[90vw] p-5 space-y-4 animate-scale-in"},Ga={class:"flex items-center justify-between"},Oa={class:"text-xs text-white/40 truncate font-mono"},Ha={class:"flex gap-1.5 flex-wrap"},Wa=["onClick"],Ka=["disabled"],Ya={key:0,class:"space-y-2"},Qa={class:"flex justify-center"},Ja={class:"flex gap-1"},Za=["value"],Xa=["href"],ei={key:1,class:"text-xs text-red-400/60 text-center"},ti=O({__name:"ZapDialog",props:{isOpen:{type:Boolean},targetName:{},lightningAddress:{}},emits:["close"],setup(a,{emit:d}){const l=a,w=d,g=j(null),v=j(null),x=[21,100,500,1e3,5e3,1e4],f=j(21),$=j(""),_=j(""),b=j(!1),c=j(""),o=j(!1),r=j(null);function h(k){return k>=1e3?`${(k/1e3).toFixed(k%1e3===0?0:1)}k`:String(k)}function M(){w("close"),_.value="",c.value="",$.value=""}async function S(){if(!(!l.lightningAddress||!f.value)){b.value=!0,c.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=f.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 Y=E.includes("?")?"&":"?";E+=`${Y}amount=${V}`,$.value&&(E+=`&comment=${encodeURIComponent($.value)}`);const H=await fetch(E);if(!H.ok)throw new Error("Failed to get invoice");const F=await H.json();if(F.status==="ERROR")throw new Error(F.reason||"Invoice error");_.value=F.pr,await ye(),N(F.pr)}catch(k){c.value=k instanceof Error?k.message:"Zap failed"}finally{b.value=!1}}}function N(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+Y*12)})}function I(){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="",c.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:we(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",qa,[e("div",Ga,[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",Oa,u(a.targetName),1),e("div",Ha,[(s(),n(D,null,L(x,y=>e("button",{key:y,class:i(["text-xs px-2.5 py-1.5 rounded-lg transition-colors",f.value===y?"bg-accent/20 text-accent border border-accent/30":"bg-white/5 text-white/50 hover:bg-white/10"]),onClick:A=>f.value=y},u(h(y)),11,Wa)),64))]),e("div",null,[p[4]||(p[4]=e("label",{class:"text-xs text-white/30 block mb-1"},"Amount (sats)",-1)),K(e("input",{"onUpdate:modelValue":p[0]||(p[0]=y=>f.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),[[J,f.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)),K(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),[[J,$.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:!f.value||f.value<1||b.value,onClick:S},u(b.value?"Generating invoice...":`Zap ${h(f.value)} sats`),9,Ka),_.value?(s(),n("div",Ya,[p[6]||(p[6]=e("p",{class:"text-xs text-white/30 text-center"},"Scan or tap to pay",-1)),e("div",Qa,[e("canvas",{ref_key:"qrCanvas",ref:r,class:"rounded-lg",width:"200",height:"200"},null,512)]),e("div",Ja,[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,Za),e("button",{class:"px-2 py-1.5 rounded text-xs bg-white/5 text-white/40 hover:text-white/60 transition-colors",onClick:I},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,Xa)])):m("",!0),c.value?(s(),n("p",ei,u(c.value),1)):m("",!0)])],544)):m("",!0)}}),si={class:"h-full flex flex-col"},ni={class:"flex items-center gap-2 px-4 py-3 border-b border-white/[0.08]"},li={class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-2"},oi={key:0,class:"flex items-center justify-center py-12"},ai={key:1,class:"rounded-xl bg-white/[0.05] border border-white/10 p-3"},ii={class:"flex items-center gap-1.5 mb-1"},ri={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"},ci={class:"text-xs font-semibold text-white/80"},di={class:"text-xs ml-auto text-white/20"},ui={class:"text-xs text-white/70 leading-relaxed whitespace-pre-wrap"},hi={key:2,class:"space-y-1"},xi={class:"text-xs text-white/30 font-medium mt-3 mb-1"},pi={key:3,class:"flex items-center justify-center py-12"},gi={key:0,class:"px-4 py-3 border-t border-white/[0.08]"},bi={key:0,class:"text-xs text-white/30 mb-1"},vi={class:"flex gap-2"},fi=["disabled"],mi=O({__name:"NostrThread",props:{noteId:{}},emits:["back"],setup(a){const d=Yt(()=>pt(()=>import("./ThreadNode-35X1piJL.js"),__vite__mapDeps([3,1,2]))),l=a,{fetchNote:w,publishEvent:g}=De(),{isLoggedIn:v,signEvent:x,pubkey:f}=ve(),$=j(null),_=j([]),b=j(!0),c=j(null),o=j("");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 S(l.noteId);_.value=N(p,l.noteId),b.value=!1}async function S(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),Y="wss://relay.nostr.band";try{const H=new WebSocket(Y);H.onopen=()=>{H.send(JSON.stringify(["REQ",A,{kinds:[1],"#e":[k],limit:100}]))},H.onmessage=F=>{try{const U=JSON.parse(F.data);if(Array.isArray(U)&&U[0]==="EVENT"&&U[1]===A&&U[2]){const W=U[2];y.find(le=>le.id===W.id)||y.push({id:W.id,pubkey:W.pubkey,authorName:h(W.pubkey),kind:W.kind,content:W.content,created_at:W.created_at,tags:W.tags??[]})}Array.isArray(U)&&U[0]==="EOSE"&&U[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 N(k,p,y=5){const A=new Map;for(const E of k){let Y=p;const H=E.tags.filter(U=>U[0]==="e");if(H.length>0){const U=H.find(W=>W[3]==="reply");Y=U?U[1]:H[H.length-1][1]}const F=A.get(Y)??[];F.push(E),A.set(Y,F)}function V(E,Y){const H=A.get(E)??[];return H.sort((F,U)=>F.created_at-U.created_at),H.map(F=>({note:F,children:Y{M()}),(k,p)=>(s(),n("div",si,[e("div",ni,[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",li,[b.value?(s(),n("div",oi,[...p[5]||(p[5]=[e("p",{class:"text-xs text-white/30"},"Loading thread...",-1)])])):m("",!0),$.value?(s(),n("div",ai,[e("div",ii,[e("div",ri,u($.value.authorName?.charAt(0)?.toUpperCase()??"?"),1),e("span",ci,u($.value.authorName??"anon"),1),e("span",di,u(r($.value.created_at)),1)]),e("p",ui,u($.value.content),1)])):m("",!0),_.value.length>0?(s(),n("div",hi,[e("p",xi,u(_.value.length)+" replies",1),(s(!0),n(D,null,L(_.value,y=>(s(),q(t(d),{key:y.note.id,node:y,depth:0,onReply:I},null,8,["node"]))),128))])):m("",!0),!b.value&&!$.value?(s(),n("div",pi,[...p[6]||(p[6]=[e("p",{class:"text-xs text-white/30"},"Thread not found",-1)])])):m("",!0)]),$.value&&t(v)?(s(),n("div",gi,[c.value?(s(),n("p",bi,[se(" Replying to "+u(c.value.authorName??"anon")+" ",1),e("button",{class:"text-accent/60 ml-1",onClick:p[1]||(p[1]=y=>c.value=null)},"cancel")])):m("",!0),e("div",vi,[K(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),[[J,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,fi)])])):m("",!0)]))}}),wi={class:"h-full flex flex-col"},yi={class:"p-4 border-b border-white/[0.08]"},ki={class:"flex gap-1.5 flex-wrap"},$i=["onClick"],_i={key:0,class:"flex-1 flex items-center justify-center"},Ci={key:1,class:"flex-1 overflow-y-auto custom-scrollbar px-4 pt-3 pb-16 space-y-2"},ji={key:0,class:"flex items-center justify-center py-12"},Si={class:"flex gap-2 mb-3"},Mi=["placeholder"],Ti=["disabled"],Ii={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"},Di={class:"flex-1 min-w-0"},Bi={class:"text-xs text-white/60 font-mono truncate"},Li={key:0,class:"text-xs text-white/30"},Pi=["onClick"],Ni={key:1,class:"flex items-center justify-center py-12"},Ai=["disabled"],zi=O({__name:"NostrLists",setup(a){const{isLoggedIn:d,signEvent:l,pubkey:w}=ve(),{publishEvent:g}=De(),v=[{kind:3,label:"Follows"},{kind:1e4,label:"Mute"},{kind:10001,label:"Pin"},{kind:10003,label:"Bookmarks"}],x=j(3),f=j([]),$=j(!1),_=j(!1),b=j(""),c=j(!1),o=j(""),r=j(!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 S(k){if(w.value){$.value=!0,_.value=!1,f.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 Y=E[2];f.value=M(Y.tags)}Array.isArray(E)&&E[0]==="EOSE"&&(clearTimeout(A),p.close(),$.value=!1)}catch{}},p.onerror=()=>{clearTimeout(A),$.value=!1}}catch{$.value=!1}}}function N(){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(f.value.find(V=>V.value===p))return;let A=h(p);if(y==="p")try{A=He(p)}catch{}f.value.push({tag:y,value:p,displayValue:A}),_.value=!0,b.value=""}function I(k){f.value=f.value.filter(p=>p.value!==k.value),_.value=!0}async function C(){if(!w.value)return;c.value=!0,o.value="";const k=f.value.map(E=>{const Y=[E.tag,E.value];return E.relay&&Y.push(E.relay),E.petname&&Y.push(E.petname),Y}),p={kind:x.value,created_at:Math.floor(Date.now()/1e3),tags:k,content:""},y=await l(p);if(!y){c.value=!1,o.value="Signing failed",r.value=!1;return}const A=await g(y),V=A.filter(E=>E.success).length;c.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 ne(()=>{S(x.value)}),(k,p)=>(s(),n("div",wi,[e("div",yi,[p[1]||(p[1]=e("h3",{class:"text-sm font-bold text-white/90 mb-3"},"Nostr Lists",-1)),e("div",ki,[(s(),n(D,null,L(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,S(y.kind)}},u(y.label),11,$i)),64))])]),t(d)?(s(),n("div",Ci,[$.value?(s(),n("div",ji,[...p[3]||(p[3]=[e("p",{class:"text-xs text-white/30"},"Loading list...",-1)])])):m("",!0),e("div",Si,[K(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(N,["enter"])},null,40,Mi),[[J,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:N}," Add ",8,Ti)]),(s(!0),n(D,null,L(f.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",Ii,u(y.tag==="p"?"P":y.tag==="e"?"E":y.tag==="t"?"#":"?"),1),e("div",Di,[e("p",Bi,u(y.displayValue),1),y.petname?(s(),n("p",Li,u(y.petname),1)):m("",!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=>I(y)}," Remove ",8,Pi)]))),128)),!$.value&&f.value.length===0?(s(),n("div",Ni,[...p[4]||(p[4]=[e("p",{class:"text-xs text-white/30"},"List is empty",-1)])])):m("",!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:c.value,onClick:C},u(c.value?"Publishing...":"Publish updated list"),9,Ai)):m("",!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)):m("",!0)])):(s(),n("div",_i,[...p[2]||(p[2]=[e("p",{class:"text-xs text-white/30"},"Sign in with Nostr to manage lists",-1)])]))]))}}),Ei={class:"article-reader h-full flex"},Fi={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"},Ri=["onClick"],Vi={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"},Ui={class:"flex-1 text-xs text-white/40 truncate"},qi=["disabled"],Gi=["disabled"],Oi={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"},Hi=["onClick"],Wi={key:0,class:"text-xl font-bold text-white/96 mb-4"},Ki=["innerHTML"],Yi=O({__name:"ArticleReader",props:{content:{},title:{}},emits:["back"],setup(a){const d=a,l=[13,15,17,19,21],w=localStorage.getItem("aiui-article-font-size"),g=j(w?parseInt(w,10):1);ce(g,I=>{localStorage.setItem("aiui-article-font-size",String(I))});const v=j(!1),x=new as({html:!1,linkify:!0,breaks:!0});x.renderer.rules.heading_open=(I,C,k,p,y)=>{const A=I[C],V=parseInt(A.tag.slice(1),10);if(V===2||V===3){const H=(I[C+1]?.children?.reduce((F,U)=>F+(U.content||""),"")||"").toLowerCase().replace(/[^\w]+/g,"-").replace(/(^-|-$)/g,"");A.attrSet("id",H)}return y.renderToken(I,C,k)};const f=x.renderer.rules.link_open||function(I,C,k,p,y){return y.renderToken(I,C,k)};x.renderer.rules.link_open=function(I,C,k,p,y){return I[C].attrSet("target","_blank"),I[C].attrSet("rel","noopener noreferrer"),f(I,C,k,p,y)};const $=B(()=>x.render(d.content)),_=B(()=>{const I=[],C=/^(#{2,3})\s+(.+)$/gm;let k;for(;(k=C.exec(d.content))!==null;){const p=k[2].trim(),y=p.toLowerCase().replace(/[^\w]+/g,"-").replace(/(^-|-$)/g,"");I.push({text:p,id:y,level:k[1].length})}return I}),b=B(()=>{const I=d.content.split(/\s+/).length;return Math.max(1,Math.ceil(I/200))}),c=j(null),o=j(null),r=j(0);let h=null;function M(){if(!c.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:c.value,rootMargin:"-20% 0px -60% 0px",threshold:0}),o.value?.querySelectorAll("h2[id], h3[id]")?.forEach(C=>h.observe(C))}ne(()=>{setTimeout(M,100)}),ce(()=>d.content,()=>{setTimeout(M,100)}),Qt(()=>{h?.disconnect()});function S(I){o.value?.querySelector(`#${CSS.escape(I)}`)?.scrollIntoView({behavior:"smooth",block:"start"})}function N(){const I=window.open("","_blank");I&&(I.document.write(` ${d.title||"Article"}