1import{a as yt}from"./chunk-ECNIIZ2Z.js";import{D as mt,Ie as zt,Ka as vt,Ma as Ct,Oe as St,Pa as bt,Q as ft,Qe as Tt,R as gt,S as ut,Sa as Pt,Wd as xt,Xa as Mt,Xd as Ot,Ya as wt,be as kt,o as rt,oa as ht,p as M,pa as _t,v as ct,x as dt,y as pt}from"./chunk-HIVZMOGT.js";import"./chunk-UKNSY7J4.js";import{$b as C,Ab as u,Bb as c,Da as H,Ea as Q,Ec as it,Fb as U,G as z,Ga as q,Gb as V,Hb as j,Ia as a,Ib as X,Ic as nt,Jc as ot,Kb as k,Lc as at,Mb as m,Nb as $,R as A,S as R,Sa as W,Tc as lt,U as D,Ub as J,Uc as st,Vb as K,Wa as O,Wb as Z,X as I,Ya as S,Yb as tt,aa as y,ac as b,cc as et,f as E,fa as h,ga as _,kb as T,la as F,mb as d,nb as p,oa as x,qb as G,ra as B,rb as Y,sb as f,tb as o,ub as r,vb as g,y as L,yb as N,zb as v}from"./chunk-L45A6KDO.js";import{a as P}from"./chunk-6MDQTQU3.js";var Nt=["scrollContainer"],Ut=["mobileScrollContainer"],Vt=(i,s)=>s.id;function jt(i,s){if(i&1){let t=v();o(0,"uni-icon-button",16),u("onClick",function(){h(t);let n=c();return _(n.openNotificationsPage())}),r()}i&2&&f("circle",!1)("square",!0)}function $t(i,s){if(i&1){let t=v();o(0,"div",7)(1,"button",17),u("click",function(){h(t);let n=c();return _(n.markAllAsRead())}),g(2,"ng-icon",18),o(3,"span"),m(4,"Mark all as read"),r()()()}}function Et(i,s){i&1&&N(0)}function Lt(i,s){if(i&1){let t=v();o(0,"div",12)(1,"h2",19),m(2,"Notifications"),r(),o(3,"uni-icon-button",16),u("onClick",function(){h(t);let n=c();return _(n.openNotificationsPage())}),r()()}i&2&&(a(3),f("circle",!1)("square",!0))}function At(i,s){if(i&1){let t=v();o(0,"div",14)(1,"button",20),u("click",function(){h(t);let n=c();return _(n.markAllAsRead())}),g(2,"ng-icon",18),o(3,"span"),m(4,"Mark all as read"),r()()()}}function Rt(i,s){i&1&&N(0)}function Dt(i,s){i&1&&(o(0,"div",21),g(1,"ng-icon",24),o(2,"p"),m(3,"Loading notifications..."),r()())}function It(i,s){i&1&&(o(0,"div",22),g(1,"ng-icon",25),o(2,"p"),m(3,"No notifications yet"),r(),o(4,"span"),m(5,"When you get notifications, they'll show up here"),r()())}
1function Ft(i,s){if(i&1&&g(0,"uni-progressive-image",42),i&2){c();let t=Z(0),e=c().$implicit;f("lowQualityUrl",t.lowQuality)("highQualityUrl",t.highQuality)("alt",e.main_object.title||"")}}function Bt(i,s){if(i&1&&(J(0),d(1,Ft,1,3,"uni-progressive-image",42)),i&2){let t=c().$implicit,e=K(c(3).getOptimizedImageUrls(t.main_object.image));a(),p(e?1:-1)}}function Ht(i,s){if(i&1&&(o(0,"div",32),g(1,"ng-icon",43),r()),i&2){let t=c().$implicit,e=c(3);f("ngClass",e.getNotificationTypeClass(t)),a(),f("name",e.getNotificationIcon(e.getNotificationType(t)))}}function Qt(i,s){if(i&1){let t=v();o(0,"span",44),u("click",function(n){h(t);let l=c().$implicit,w=c(3);return _(w.navigateToProfile(n,l.subject))}),g(1,"uni-progressive-avatar",45),r()}if(i&2){let t,e=c().$implicit;T("title",(e.subject.first_name||e.subject.username)+"\u2019s profile"),a(),f("imageUrl",e.subject.avatar_url||null)("alt",e.subject.username)("initial",(e.subject.username==null||(t=e.subject.username.charAt(0))==null?null:t.toUpperCase())||"U")("user",e.subject)("size",24)("showInitial",!1)}}function qt(i,s){if(i&1&&(o(0,"span",38),m(1),r()),i&2){let t=c().$implicit;a(),$(t.subject.first_name||t.subject.username)}}function Wt(i,s){i&1&&g(0,"div",41)}function Gt(i,s){if(i&1){let t=v();o(0,"a",30),u("click",function(n){let l=h(t).$implicit,w=c(3);return _(w.handleNotificationClick(n,l))}),o(1,"div",31),d(2,Bt,2,2)(3,Ht,2,2,"div",32),r(),d(4,Qt,2,7,"span",33),o(5,"div",34)(6,"div",35)(7,"div",36)(8,"p",37),d(9,qt,2,1,"span",38),g(10,"span",39),r(),o(11,"span",40),m(12),r()()()(),d(13,Wt,1,0,"div",41),r()}if(i&2){let t=s.$implicit,e=c(3);k("unread",!t.read),f("href",e.getNotificationUrl(t),Q),T("aria-label",e.getNotificationAriaLabel(t)),a(2),p(t.main_object&&t.main_object.image?2:3),a(2),p(t.subject?4:-1),a(5),p(t.subject?9:-1),a(),f("innerHTML",e.getFormattedAction(t),H),a(2),$(e.getTimeAgo(t.created_at)),a(),p(t.read?-1:13)}}function Yt(i,s){i&1&&(o(0,"div",27),g(1,"ng-icon",46),o(2,"span"),m(3,"Loading more notifications..."),r()())}function Xt(i,s){if(i&1){let t=v();o(0,"div",28)(1,"button",47),u("click",function(){h(t);let n=c(3);return _(n.loadMore())}),m(2," Load more "),r()()}}function Jt(i,s){i&1&&(o(0,"div",29),g(1,"ng-icon",48),o(2,"p"),m(3,"You've reached the end!"),r(),o(4,"span"),m(5,"No more notifications at the moment"),r()())}function Kt(i,s){if(i&1&&(o(0,"div",23),G(1,Gt,14,10,"a",26,Vt),C(3,"async"),d(4,Yt,4,0,"div",27),d(5,Xt,3,0,"div",28),d(6,Jt,6,0,"div",29),C(7,"async"),r()),i&2){let t,e=c(2);a(),Y(b(3,3,e.notifications$)),a(3),p(e.loadingMore()?4:-1),a(),p(e.hasMore()&&!e.loadingMore()?5:-1),a(),p(!e.hasMore()&&((t=b(7,5,e.notifications$))!=null&&t.length)&&!e.loadingMore()?6:-1)}}function Zt(i,s){if(i&1&&(d(0,Dt,4,0,"div",21),C(1,"async"),C(2,"async"),d(3,It,6,0,"div",22),C(4,"async"),C(5,"async"),d(6,Kt,8,7,"div",23),C(7,"async")),i&2){let t,e,n,l=c();p(b(1,3,l.loading$)&&((t=b(2,5,l.notifications$))==null?null:t.length)===0?0:-1),a(3),p(!b(4,7,l.loading$)&&((e=b(5,9,l.notifications$))==null?null:e.length)===0?3:-1),a(3),p(((n=b(7,11,l.notifications$))==null?null:n.length)??!1?6:-1)}}var te=(()=>{class i{destroy$=new E;scrollSub=null;defaultConfig={scrollThreshold:.8,throttleTime:300};config;scrollState={isLoading:!1,hasMore:!0,currentPage:1};onLoadMore;constructor(){this.config=P({},this.defaultConfig)}initializeScroll(t,e,n){t?.nativeElement&&(e&&(this.config=P(P({},this.defaultConfig),e)),this.onLoadMore=n,this.cleanup(),this.scrollSub=L(t.nativeElement,"scroll").pipe(D(this.config.throttleTime),R(this.destroy$)).subscribe(()=>{this.checkScrollPosition(t.nativeElement)}))}checkScrollPosition(t){if(this.scrollState.isLoading||!this.scrollState.hasMore)return;(t.scrollTop+t.clientHeight)/t.scrollHeight>this.config.scrollThreshold&&this.triggerLoadMore()}triggerLoadMore(){this.onLoadMore&&!this.scrollState.isLoading&&(this.scrollState.isLoading=!0,this.onLoadMore())}updateState(t){this.scrollState=P(P({},this.scrollState),t)}resetState(){this.scrollState={isLoading:!1,hasMore:!0,currentPage:1}}getState(){return P({},this.scrollState)}incrementPage(){this.scrollState.currentPage++}canLoadMore(){return!this.scrollState.isLoading&&this.scrollState.hasMore}cleanup(){this.scrollSub&&(this.scrollSub.unsubscribe(),this.scrollSub=null)}ngOnDestroy(){this.cleanup(),this.destroy$.next(),this.destroy$.complete()}static \u0275fac=function(e){return new(e||i)};static \u0275prov=I({token:i,factory:i.\u0275fac,providedIn:"root"})}return i})(),Ce=(()=>
1{class i{show=!1;username=null;close=new S;mobileDrawerStateChange=new S;scrollContainer;mobileScrollContainer;notificationService=y(xt);notificationTypeService=y(Ot);notificationScrollService=y(te);notificationUtilsService=y(kt);destroyRef=y(F);scrollSetupTimeout=null;notifications$=this.notificationService.notifications$;loading$=this.notificationService.loading$;unreadCount$=this.notificationService.unreadCount$;isMobileView=x(!1);hasUnread=x(!1);loadingMore=x(!1);hasMore=x(!0);onWindowResize(){this.checkMobileView()}ngOnInit(){this.checkMobileView(),this.notifications$.pipe(M(this.destroyRef)).subscribe(t=>{this.updateUnreadStatus(t)})}ngOnChanges(t){t.show&&t.show.currentValue!==t.show.previousValue&&this.handlePanelVisibilityChange(t.show.currentValue)}handlePanelVisibilityChange(t){t?(this.isMobileView()&&this.mobileDrawerStateChange.emit(!0),this.notificationScrollService.resetState(),this.hasMore.set(!0),this.loadingMore.set(!1),this.notificationService.clearNotifications(),this.loadNotifications(),this.setupScrollListener(),this.notifications$.pipe(z(1),M(this.destroyRef)).subscribe(e=>{this.updateUnreadStatus(e)})):this.isMobileView()&&this.mobileDrawerStateChange.emit(!1)}ngOnDestroy(){this.scrollSetupTimeout&&(clearTimeout(this.scrollSetupTimeout),this.scrollSetupTimeout=null),this.notificationScrollService.cleanup()}setupScrollListener(){this.scrollSetupTimeout&&clearTimeout(this.scrollSetupTimeout),this.scrollSetupTimeout=setTimeout(()=>{let t=this.isMobileView()?this.mobileScrollContainer:this.scrollContainer;this.notificationScrollService.initializeScroll(t,{scrollThreshold:.8,throttleTime:300},()=>this.loadMore())})}checkMobileView(){this.isMobileView.set(window.innerWidth<=1024)}loadNotifications(){let t=this.notificationScrollService.getState();t.currentPage===1&&this.notificationService.fetchUnreadCount().pipe(M(this.destroyRef)).subscribe({error:e=>console.error("[NotificationPanel] Failed to fetch unread count:",e)}),this.loadingMore.set(!0),this.notificationService.fetchNotifications(t.currentPage).pipe(M(this.destroyRef)).subscribe({next:e=>{this.hasMore.set(!!e.next),this.loadingMore.set(!1),this.notificationScrollService.updateState({hasMore:!!e.next,isLoading:!1})},error:()=>{this.loadingMore.set(!1),this.notificationScrollService.updateState({isLoading:!1})}})}loadMore(){this.loadingMore()||!this.hasMore()||(this.notificationScrollService.incrementPage(),this.loadNotifications())}markAsRead(t){t.read||this.notificationService.markAsRead(t.id).pipe(A(()=>this.notifications$.pipe(z(1))),M(this.destroyRef)).subscribe(e=>{this.updateUnreadStatus(e)})}markAllAsRead(){this.notificationService.markAllAsRead().pipe(M(this.destroyRef)).subscribe({next:()=>{this.hasUnread.set(!1)},error:t=>console.error("[NotificationPanel] Failed to mark all as read:",t)})}getNotificationType(t){return this.notificationTypeService.detectType(t.main_action_statement)}getNotificationIcon(t){return this.notificationTypeService.getIcon(t)}getNotificationTypeClass(t){let e=this.getNotificationType(t);return this.notificationTypeService.getCssClass(e)}getTimeAgo(t){return this.notificationService.getTimeAgo(t)}closePanel(){this.close.emit(),this.isMobileView()&&this.mobileDrawerStateChange.emit(!1),this.notificationScrollService.resetState()}handleNotificationClick(t,e){this.notificationUtilsService.handleNotificationClick(t,e,{markAsRead:n=>this.markAsRead(n),closePanel:()=>this.closePanel()})}getNotificationUrl(t){return this.notificationUtilsService.getNotificationUrl(t)}navigateToProfile(t,e){e?.username&&(t.stopPropagation(),t.preventDefault(),window.location.href="/profile/"+e.username)}getOptimizedImageUrls(t){return this.notificationUtilsService.getOptimizedImageUrls(t)}getFormattedAction(t){return this.notificationUtilsService.getFormattedAction(t)}getNotificationAriaLabel(t){let e=t.subject?`from ${t.subject.first_name||t.subject.username}`:"",n=this.getFormattedAction(t).replace(/<[^>]*>/g,""),l=this.getTimeAgo(t.created_at);return`${t.read?"read":"unread"} notification: ${n} ${e}, ${l}`}hasUnreadNotifications(){return this.hasUnread()}updateUnreadStatus(t){this.hasUnread.set(this.notificationUtilsService.hasUnreadNotifications(t))}openNotificationsPage(){this.username&&window.open(`/profile/edit/${this.username}/notifications`,"_blank")}trackByNotification(t,e){return e.id}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=W({type:i,selectors:[["lib-notification-panel"]],viewQuery:function(e,n){if(e&1&&(U(Nt,5),U(Ut,5)),e&2){let l;V(l=j())&&(n.scrollContainer=l.first),V(l=j())&&(n.mobileScrollContainer=l.first)}},hostBindings:function(e,n){e&1&&u("resize",function(){return n.onWindowResize()},q)},inputs:{show:"show",username:"username"},outputs:{close:"close",mobileDrawerStateChange:"mobileDrawerStateChange"},features:[tt([lt({phosphorBell:pt,phosphorBellSlash:dt,phosphorCheck:ut,phosphorCheckCircle:gt,phosphorX:wt,phosphorSpinnerGap:vt,phosphorTrophy:bt,phosphorHeart:ht,phosphorChatCircle:ft,phosphorUserPlus:Pt,phosphorStar:Ct,phosphorWarning:Mt,phosphorInfo:_t,phosphorArrowSquareOut:ct,phosphorBriefcase:mt}
vendor: 1,452 bytes, line 1
1)]),B],decls:19,vars:13,consts:[["scrollContainer",""],["mobileScrollContainer",""],["notificationContent",""],[1,"notification-panel","desktop-panel"],[1,"panel-header"],["id","notifications-title",1,"panel-title"],["icon","phosphorArrowSquareOut","size","small","variant","ghost","ariaLabel","Open notifications page in new tab","tooltip","Open in new tab",3,"circle","square"],[1,"desktop-mark-all-container"],[1,"panel-content"],[4,"ngTemplateOutlet"],[1,"notification-backdrop",3,"click"],["position","right",3,"closeDrawer","isOpen","showCustomHeader","title"],["drawer-header","",1,"mobile-custom-header"],[1,"mobile-panel-wrapper"],[1,"mobile-mark-all-container"],[1,"mobile-panel-content"],["icon","phosphorArrowSquareOut","size","small","variant","ghost","ariaLabel","Open notifications page in new tab","tooltip","Open in new tab",3,"onClick","circle","square"],["aria-label","Mark all notifications as read",1,"mark-all-read-desktop",3,"click"],["name","phosphorCheckCircle","size","16","aria-hidden","true"],[1,"drawer-title"],["aria-label","Mark all notifications as read",1,"mark-all-read-mobile",3,"click"],[1,"loading-state"],[1,"empty-state"],[1,"notifications-list"],["name","phosphorSpinnerGap","size","24","aria-hidden","true",1,"spinner"],["name","phosphorBellSlash","size","48","aria-hidden","true"],[1,"notification-item",3,"unread","href"],[1,"loading-more-indicator"],[1,"load-more-container"],[1,"end-of-notifications"],[1,"n
1otification-item",3,"click","href"],[1,"notification-media"],[1,"notification-icon",3,"ngClass"],[1,"user-avatar-link"],[1,"notification-content"],[1,"notification-header"],[1,"notification-info"],[1,"notification-message"],[1,"user-name"],[3,"innerHTML"],[1,"notification-time"],[1,"unread-indicator"],["aspectRatio","1",1,"notification-image",3,"lowQualityUrl","highQualityUrl","alt"],["size","20","aria-hidden","true",3,"name"],[1,"user-avatar-link",3,"click"],[1,"user-avatar",3,"imageUrl","alt","initial","user","size","showInitial"],["name","phosphorSpinnerGap","size","20","aria-hidden","true",1,"spinner"],[1,"load-more-button",3,"click"],["name","phosphorCheckCircle","size","24","aria-hidden","true"]],template:function(e,n){if(e&1){let l=v();o(0,"div",3)(1,"div",4)(2,"h3",5),m(3,"Notifications"),r(),d(4,jt,1,2,"uni-icon-button",6),r(),d(5,$t,5,0,"div",7),o(6,"div",8,0),O(8,Et,1,0,"ng-container",9),r()(),o(9,"div",10),u("click",function(){return h(l),_(n.closePanel())}),r(),o(10,"lib-mobile-drawer",11),u("closeDrawer",function(){return h(l),_(n.closePanel())}),d(11,Lt,4,2,"div",12),o(12,"div",13),d(13,At,5,0,"div",14),o(14,"div",15,1),O(16,Rt,1,0,"ng-container",9),r()()(),O(17,Zt,8,13,"ng-template",null,2,et)}if(e&2){let l=X(18);k("show",n.show&&!n.isMobileView()),a(4),p(n.username?4:-1),a(),p(n.hasUnread()?5:-1),a(3),f("ngTemplateOutlet",l),a(),k("show",n.show&&!n.isMobileView()),a(),f("isOpen",n.show&&n.isMobileView())("showCustomHeader",!!n.username)("title",n.username?"":"Notifications"),a(),p(n.username?11:-1),a(2),p(n.hasUnread()?13:-1),a(3),f("ngTemplateOutlet",l)}},dependencies:[at,it,nt,ot,rt,st,Tt,St,yt,zt],styles:['@charset "UTF-8";.notification-panel.desktop-panel[_ngcontent-%COMP%]{position:absolute;top:calc(100% + var(--size-2-5));right:0;width:var(--size-96);min-width:var(--size-80);max-height:calc(100vh - var(--navbar-height) - var(--size-20) - env(safe-area-inset-bottom,0));box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);content-visibility:auto;contain:layout style paint;contain-intrinsic-size:var(--size-96) var(--size-150);transition:var(--transition-fast);display:flex;flex-direction:column;background:var(--surface);border:var(--border-width-thin) solid var(--border);border-radius:var(--radius-lg)}@media (prefers-reduced-motion: reduce){.notification-panel.desktop-panel[_ngcontent-%COMP%]{animation-duration:var(--duration-150)!important;transition-duration:var(--duration-150)!important;transition-delay:0ms!important;animation-delay:0ms!important}}.notification-panel.desktop-panel[_ngcontent-%COMP%]{opacity:var(--opacity-0);visibility:hidden;transform:translateY(var(--spacing-n2))}.notification-panel.desktop-panel.show[_ngcontent-%COMP%]{opacity:var(--opacity-100);visibility:visible;transform:translateY(var(--size-0))}@media (max-width: 767.98px){.notification-panel.desktop-panel[_ngcontent-%COMP%]{display:none}}.mobile-panel-wrapper[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%}.mobile-mark-all-container[_ngcontent-%COMP%], .desktop-mark-all-container[_ngcontent-%COMP%]{padding:var(--size-3) var(--size-4);border-bottom:var(--border-width-thin) solid var(--border);background:var(--bg-secondary)}.mobile-panel-content[_ngcontent-%COMP%]{flex:1;overflow-y:auto;padding:var(--size-0)}.mobile-panel-content[_ngcontent-%COMP%]::-webkit-scrollbar{width:var(--size-1)}.mobile-panel-content[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:transparent}.mobile-panel-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:var(--radius-full)}.mobile-panel-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:var(--bg-secondary)}.mark-all-read-mobile[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:var(--size-1-5);width:100%;padding:var(--size-2) var(--size-3);background:var(--surface);border:var(--border-width-thin) solid var(--border);border-radius:var(--radius-sm);cursor:pointer;color:var(--text-secondary);transition:var(--transition-fast);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);white-space:nowrap}.mark-all-read-mobile[_ngcontent-%COMP%]:hover{background:var(--bg-tertiary)}.mark-all-read-mobile[_ngcontent-%COMP%]:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-primary);outline-offset:var(--size-px);color:var(--text-primary);border-color:var(--border-strong)}.mark-all-read-mobile[_ngcontent-%COMP%]:active{background:var(--bg-secondary)}.mark-all-read-mobile[_ngcontent-%COMP%] ng-icon[_ngcontent-%COMP%]{flex-shrink:0}.mark-all-read-desktop[_ngcontent-%COMP%]{appearance:none;padding:var(--size-0);margin:var(--size-0);font:inherit;box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:var(--size-1-5);width:100%;padding:var(--size-2) var(--size-3);background:var(--surface);border:var(--border-width-thin) solid var(--border);border-radius:var(--radius-sm);cursor:pointer;color:var(--text-secondary);transition:var(--transition-fast);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);white-space:nowrap}.mark-all-read-desktop[_ngcontent-%COMP%]:hover{background:var(--bg-tertiary)}.mark-all-read-desktop[_ngcontent-%COMP%]:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-primary);outline-offset:var(--size-px);color:var(--text-primary);border-color:var(--border-strong)}.mark-all-read-desktop[_ngcontent-%COMP%]:active{background:var(--bg-secondary)}.mark-all-read-desktop[_ngcontent-%COMP%] ng-icon[_ngcontent-%COMP%]{flex-shrink:0}.panel-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:var(--size-5) var(--size-6);border-bottom:var(--border-width-thin) solid var(--border);position:relative;z-index:var(--z-base);min-height:var(--size-16)}[data-theme=dark][_nghost-%COMP%] .panel-header[_ngcontent-%COMP%], [data-theme=dark] [_nghost-%COMP%] .panel-header[_ngcontent-%COMP%], html[data-theme=dark][_nghost-%COMP%] .panel-header[_ngcontent-%COMP%], [data-theme=dark] [_nghost-%COMP%] .panel-header[_ngcontent-%COMP%], body[data-theme=dark][_nghost-%COMP%] .panel-header[_ngcontent-%COMP%], [data-theme=dark] [_nghost-%COMP%] .panel-header[_ngcontent-%COMP%]{border-color:var(--border)}.panel-header[_ngcontent-%COMP%] .panel-title[_ngcontent-%COMP%]{margin:var(--size-0);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary)}.mobile-custom-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;width:100%}.mobile-custom-header[_ngcontent-%COMP%] .drawer-title[_ngcontent-%COMP%]{margin:var(--size-0);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary)}.notification-backdrop[_ngcontent-%COMP%]{position:fixed;top:env(safe-area-inset-top,0);right:env(safe-area-inset-right,0);bottom:env(safe-area-inset-bottom,0);left:env(safe-area-inset-left,0);background:transparent;z-index:calc(var(--z-dropdown) - 1);display:none}.notification-backdrop.show[_ngcontent-%COMP%]{display:block}@media (max-width: 767.98px){.notification-backdrop[_ngcontent-%COMP%]{display:none!important}}.panel-content[_ngcontent-%COMP%]{flex:1 1 0%;overflow-y:auto;position:relative;z-index:var(--z-base);min-height:0}.panel-content[_ngcontent-%COMP%]::-webkit-scrollbar{width:var(--size-1)}.panel-content[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:transparent}.panel-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:var(--radius-full)}.panel-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:var(--bg-secondary)}.loading-state[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;padding:var(--size-6)}.loading-state[_ngcontent-%COMP%] ng-icon[_ngcontent-%COMP%]{font-size:var(--size-6);color:var(--primary-500);animation:_ngcontent-%COMP%_spin var(--duration-1000) var(--easing-linear) infinite;will-change:transform}.empty-state[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--size-12) var(--size-6);text-align:center}.empty-state[_ngcontent-%COMP%] ng-icon[_ngcontent-%COMP%]{font-size:var(--size-12);color:var(--text-tertiary);margin-bottom:var(--size-3)}.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:var(--size-0);color:var(--text-secondary);font-size:var(--font-size-base)}.notification-item[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:var(--size-3);padding:var(--size-4);background:var(--surface);text-decoration:none;transition:var(--transition-fast);border-bottom:var(--border-width-thin) solid var(--border);cursor:pointer;position:relative}.notification-item[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.notification-item.unread[_ngcontent-%COMP%]{background:var(--bg-secondary)}.notification-item.unread[_ngcontent-%COMP%]:before{content:"";position:absolute;top:var(--size-2);right:var(--size-2);width:var(--size-2);height:var(--size-2);background:var(--primary-500);border-radius:var(--radius-full)}.notification-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.notification-item[_ngcontent-%COMP%]:focus-visible{outline:var(--focus-ring-width) solid var(--primary-200);outline-offset:var(--size-px);border-radius:var(--radius-sm)}.notification-media[_ngcontent-%COMP%]{width:var(--size-10);height:var(--size-10);min-width:var(--size-10);margin-right:var(--size-3);position:relative}.notification-media[_ngcontent-%COMP%] .notification-image[_ngcontent-%COMP%]{width:var(--size-full);height:var(--size-full);border-radius:var(--radius-md);overflow:hidden}.user-avatar-link[_ngcontent-%COMP%]{position:absolute;top:var(--size-3);left:var(--size-11);width:var(--size-6);height:var(--size-6);z-index:var(--z-base);cursor:pointer;border-radius:var(--radius-full)}
1.user-avatar[_ngcontent-%COMP%]{display:block;width:100%;height:100%;border:var(--border-width-medium) solid var(--surface);border-radius:var(--radius-full)}.notification-avatar[_ngcontent-%COMP%]{flex-shrink:0;width:var(--size-12);height:var(--size-12);border-radius:var(--radius-full);overflow:hidden;background:var(--bg-tertiary)}.notification-content[_ngcontent-%COMP%]{flex:1;min-width:0}.notification-content[_ngcontent-%COMP%] .notification-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--size-2);margin-bottom:var(--size-1)}.notification-content[_ngcontent-%COMP%] .notification-message[_ngcontent-%COMP%]{margin:var(--size-0);color:var(--text-primary);font-size:var(--font-size-xs);line-height:var(--line-height-normal);word-break:break-word}.notification-content[_ngcontent-%COMP%] .notification-message[_ngcontent-%COMP%] .username[_ngcontent-%COMP%]{font-weight:var(--font-weight-semibold);color:var(--text-primary)}.notification-content[_ngcontent-%COMP%] .notification-time[_ngcontent-%COMP%]{margin:var(--size-0);color:var(--text-tertiary);font-size:var(--font-size-xs);flex-shrink:0}.notification-icon[_ngcontent-%COMP%]{flex-shrink:0;width:var(--size-8);height:var(--size-8);display:flex;align-items:center;justify-content:center;border-radius:var(--radius-full);background:var(--bg-tertiary)}.notification-icon[_ngcontent-%COMP%] ng-icon[_ngcontent-%COMP%]{font-size:var(--size-4);color:var(--primary-500)}.notification-icon.competition[_ngcontent-%COMP%] ng-icon[_ngcontent-%COMP%]{color:var(--primary-500)}.notification-icon.like[_ngcontent-%COMP%] ng-icon[_ngcontent-%COMP%]{color:var(--error-500)}.notification-icon.comment[_ngcontent-%COMP%] ng-icon[_ngcontent-%COMP%]{color:var(--primary-500)}.notification-icon.follow[_ngcontent-%COMP%] ng-icon[_ngcontent-%COMP%]{color:var(--primary-500)}.notification-icon.rating[_ngcontent-%COMP%] ng-icon[_ngcontent-%COMP%]{color:var(--warning-500)}.notification-icon.warning[_ngcontent-%COMP%] ng-icon[_ngcontent-%COMP%]{color:var(--error-600)}.notification-icon.info[_ngcontent-%COMP%] ng-icon[_ngcontent-%COMP%]{color:var(--primary-500)}.notification-object[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--size-2);margin-top:var(--size-2);padding:var(--size-2) var(--size-3);background:var(--bg-tertiary);border-radius:var(--radius-sm)}.notification-object[_ngcontent-%COMP%] .object-image[_ngcontent-%COMP%]{flex-shrink:0;width:var(--size-10);height:var(--size-10);border-radius:var(--radius-xs);object-fit:cover;background:var(--bg-secondary)}.notification-object[_ngcontent-%COMP%] .object-title[_ngcontent-%COMP%]{margin:var(--size-0);color:var(--text-secondary);font-size:var(--font-size-xs);line-height:var(--line-height-tight);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.load-more[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;padding:var(--size-6);padding:var(--size-4)}.load-more[_ngcontent-%COMP%] ng-icon[_ngcontent-%COMP%]{font-size:var(--size-6);color:var(--primary-500);animation:_ngcontent-%COMP%_spin var(--duration-1000) var(--easing-linear) infinite;will-change:transform}.load-more-container[_ngcontent-%COMP%]{display:flex;justify-content:center;padding:var(--size-3) var(--size-4);border-top:var(--border-width-thin) solid var(--border)}.load-more-button[_ngcontent-%COMP%]{background:none;border:var(--border-width-thin) solid var(--border);border-radius:var(--radius-md);padding:var(--size-2) var(--size-6);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast)}.load-more-button[_ngcontent-%COMP%]:hover{background:var(--bg-secondary);color:var(--text-primary);border-color:var(--text-tertiary)}.loading-more-indicator[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;padding:var(--size-6);padding:var(--size-4)}.loading-more-indicator[_ngcontent-%COMP%] ng-icon[_ngcontent-%COMP%]{font-size:var(--size-6);color:var(--primary-500);animation:_ngcontent-%COMP%_spin var(--duration-1000) var(--easing-linear) infinite;will-change:transform}.loading-more-indicator[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{margin-left:var(--size-2);color:var(--text-secondary);font-size:var(--font-size-sm)}.end-of-notifications[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--size-6) var(--size-4);text-align:center}.end-of-notifications[_ngcontent-%COMP%] ng-icon[_ngcontent-%COMP%]{font-size:var(--size-6);color:var(--success-500);margin-bottom:var(--size-2)}.end-of-notifications[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:var(--size-0) var(--size-0) var(--size-1);color:var(--text-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.end-of-notifications[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:var(--text-secondary);font-size:var(--font-size-xs);line-height:var(--line-height-normal)}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes _ngcontent-%COMP%_spinReduced{0%{opacity:var(--opacity-80)}to{opacity:var(--opacity-100)}}@media (prefers-reduced-motion: reduce){.loading-state[_ngcontent-%COMP%], .load-more[_ngcontent-%COMP%], .loading-more-indicator[_ngcontent-%COMP%]{animation-name:spinReduced}}'],changeDetection:0})}return i})();
1export{Ce as NotificationPanelComponent};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.