@bloomscorp/blooms-ai-embed 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ import{a as ve,b as xe,c as ge,d as be,e as he,f as Ce,g as we}from"./chunk-53INJES5.js";import{a as ue}from"./chunk-X2Q5WSIJ.js";import{c as oe,d as N,e as ae,f as re,h as le,i as se,l as ce,m as de,r as me,s as pe,t as _e}from"./chunk-VQEBAAHK.js";import{a as fe}from"./chunk-HLIQJSA7.js";import"./chunk-SPLW6L45.js";import{$a as R,Ca as g,Cb as L,D as O,Ga as M,Ha as D,Ia as y,J as p,K as _,La as u,Na as P,Oa as b,Pa as h,Qa as a,Ra as o,S as G,Sa as T,Ta as f,Ua as m,V as ee,Va as c,W as x,Wa as s,Xa as v,Ya as C,Za as q,a as Q,ab as W,b as K,bb as H,e as X,eb as B,gb as V,k as Z,na as j,nb as I,pa as l,tb as ie,v as w,xa as te,xb as ne}from"./chunk-WQW7QCHM.js";var F=(r,t)=>t._id,J=(r,t)=>t.date.toISOString();function Ee(r,t){r&1&&(a(0,"p",25),s(1,"No upcoming events"),o())}function Me(r,t){if(r&1){let e=f();a(0,"div",31),m("click",function(){let n=p(e).$implicit,d=c(2);return _(d.openEventDrawer(n._id))}),a(1,"span",32),s(2),o(),a(3,"div",33)(4,"span",34),s(5),o(),a(6,"span",35),s(7),B(8,"date"),o()()()}if(r&2){let e=t.$implicit,i=c(2);l(),D("color",i.platformColor(e.platform)),l(),C(" ",i.platformIcon(e.platform)," "),l(3),v(e.title),l(2),v(V(8,5,e.scheduledAt,"MMM d, h:mm a"))}}function De(r,t){if(r&1&&(a(0,"p",27),s(1),o()),r&2){let e=c(2);l(),C("+",e.upcomingEvents().length-5," more upcoming")}}function Te(r,t){r&1&&(a(0,"p",25),s(1,"No overdue events"),o())}function Be(r,t){if(r&1){let e=f();a(0,"div",36),m("click",function(){let n=p(e).$implicit,d=c(2);return _(d.openEventDrawer(n._id))}),a(1,"span",32),s(2),o(),a(3,"div",33)(4,"span",34),s(5),o(),a(6,"span",35),s(7),B(8,"date"),o()(),a(9,"button",37),m("click",function(n){let d=p(e).$implicit,S=c(2);return _(S.markOverdueCompleted(d._id,n))}),s(10,"\u2713"),o()()}if(r&2){let e=t.$implicit,i=c(2);l(),D("color",i.platformColor(e.platform)),l(),C(" ",i.platformIcon(e.platform)," "),l(3),v(e.title),l(2),v(V(8,5,e.scheduledAt,"MMM d, h:mm a"))}}function Ve(r,t){if(r&1&&(a(0,"p",30),s(1),o()),r&2){let e=c(2);l(),C(" +",e.overdueEvents().length-5," more overdue ")}}function Fe(r,t){if(r&1&&(a(0,"div",13)(1,"div",23)(2,"h3",24),s(3,"Upcoming (next 7 days)"),o(),g(4,Ee,2,0,"p",25),b(5,Me,9,8,"div",26,F),g(7,De,2,1,"p",27),o(),a(8,"div",23)(9,"h3",28),s(10),o(),g(11,Te,2,0,"p",25),b(12,Be,11,8,"div",29,F),g(14,Ve,2,1,"p",30),o()()),r&2){let e=c();l(4),u(e.upcomingEvents().length===0?4:-1),l(),h(e.upcomingEvents().slice(0,5)),l(2),u(e.upcomingEvents().length>5?7:-1),l(3),C(" \u26A0 Overdue (",e.overdueCount(),") "),l(),u(e.overdueEvents().length===0?11:-1),l(),h(e.overdueEvents().slice(0,5)),l(2),u(e.overdueEvents().length>5?14:-1)}}function Ie(r,t){if(r&1&&(a(0,"div",40),s(1),o()),r&2){let e=t.$implicit;l(),v(e)}}function $e(r,t){r&1&&(a(0,"span"),s(1,"\u26A0"),o())}function Pe(r,t){if(r&1){let e=f();a(0,"div",60),m("click",function(n){let d=p(e).$implicit,S=c(3);return n.stopPropagation(),_(S.openEventDrawer(d._id))}),g(1,$e,2,0,"span"),s(2),o()}if(r&2){let e=t.$implicit,i=c(3);D("background",i.platformColor(e.platform)),y("smc-chip--overdue",i.isOverdue(e)),M("appTooltip",e.title),l(),u(i.isOverdue(e)?1:-1),l(),q(" ",i.platformIcon(e.platform)," ",e.title," ")}}function qe(r,t){if(r&1){let e=f();a(0,"div",61),m("click",function(n){p(e);let d=c().$implicit,S=c(2);return n.stopPropagation(),_(S.showDayPopover(d))}),s(1),o()}if(r&2){let e=c().$implicit;l(),C(" +",e.events.length-3," more ")}}function Ae(r,t){if(r&1&&T(0,"span",62),r&2){let e=t.$implicit,i=c(3);D("background",i.platformColor(e.platform))}}function ze(r,t){if(r&1){let e=f();a(0,"div",49),m("click",function(){let n=p(e).$implicit,d=c(2);return _(d.onDayClick(n.date))}),a(1,"div",50)(2,"div",51),s(3),o(),a(4,"div",52)(5,"button",53),m("click",function(n){let d=p(e).$implicit,S=c(2);return n.stopPropagation(),_(S.openCreateDrawerForDate(d.date))}),s(6,"+"),o(),a(7,"a",54),m("click",function(n){return p(e),_(n.stopPropagation())}),s(8,"\u2261"),o()()(),a(9,"div",55),b(10,Pe,3,8,"div",56,F),g(12,qe,2,1,"div",57),o(),a(13,"div",58),b(14,Ae,1,2,"span",59,F),o()()}if(r&2){let e=t.$implicit,i=c(2);y("smc-day--other-month",!e.isCurrentMonth)("smc-day--today",e.isToday)("smc-day--has-events",e.events.length>0)("smc-day--mobile-selected",i.isSameDay(e.date,i.mobileSelectedDate())),l(3),v(e.date.getDate()),l(4),M("href",i.dayDetailUrl(e.date),j),l(3),h(e.events.slice(0,3)),l(2),u(e.events.length>3?12:-1),l(2),h(e.events.slice(0,3))}}function Oe(r,t){r&1&&(a(0,"p",47),s(1,"No events scheduled for this day."),o())}function je(r,t){r&1&&(a(0,"span",68),s(1," \xB7 \u26A0 Overdue"),o())}function Le(r,t){if(r&1){let e=f();a(0,"div",63),m("click",function(){let n=p(e).$implicit,d=c(2);return _(d.openEventDrawer(n._id))}),T(1,"div",64),a(2,"div",65)(3,"span",66),s(4),o(),a(5,"span",67),s(6),B(7,"date"),g(8,je,2,0,"span",68),o()(),a(9,"span",69),s(10),o()()}if(r&2){let e=t.$implicit,i=c(2);l(),D("background",i.platformColor(e.platform)),l(3),v(e.title),l(2),q(" ",i.platformLabel(e.platform)," \xB7 ",V(7,9,e.scheduledAt,"h:mm a")," "),l(2),u(i.isOverdue(e)?8:-1),l(),D("background",i.statusColor(e.status)),l(),C(" ",e.status," ")}}function Ne(r,t){if(r&1){let e=f();a(0,"div",38)(1,"div",39),b(2,Ie,2,1,"div",40,P),o(),a(4,"div",41),b(5,ze,16,11,"div",42,J),o()(),a(7,"div",43)(8,"div",44)(9,"span",45),s(10),B(11,"date"),o(),a(12,"button",46),m("click",function(){p(e);let n=c();return _(n.openCreateDrawerForDate(n.mobileSelectedDate()))}),s(13," + New Event "),o()(),g(14,Oe,2,0,"p",47),b(15,Le,11,12,"div",48,F),o()}if(r&2){let e=c();l(2),h(e.weekdays),l(3),h(e.calendarDays()),l(5),C(" ",V(11,2,e.mobileSelectedDate(),"EEEE, MMMM d")," "),l(4),u(e.mobileSelectedDayEvents().length===0?14:-1),l(),h(e.mobileSelectedDayEvents())}}function Ue(r,t){if(r&1){let e=f();a(0,"div",77)(1,"span",78),s(2),o(),a(3,"span",79),s(4),o(),a(5,"div",80)(6,"button",53),m("click",function(){let n=p(e).$implicit,d=c(2);return _(d.openCreateDrawerForDate(n.date))}),s(7,"+"),o(),a(8,"a",81),s(9,"\u2261"),o()()()}if(r&2){let e=t.$implicit,i=c(2);y("smc-week-header__day--today",e.isToday),l(2),v(i.weekdayName(e.date)),l(),y("smc-week-header__day-num--today",e.isToday),l(),C(" ",e.date.getDate()," "),l(4),M("href",i.dayDetailUrl(e.date),j)}}function Re(r,t){if(r&1&&(a(0,"div",75),s(1),o()),r&2){let e=t.$implicit,i=c(2);l(),v(i.formatHour(e))}}function We(r,t){if(r&1){let e=f();a(0,"div",83),m("click",function(){let n=p(e).$implicit,d=c(3);return _(d.openEventDrawer(n._id))}),s(1),o()}if(r&2){let e=t.$implicit,i=c(3);D("background",i.platformColor(e.platform))("top",i.eventTopPx(e),"px"),y("smc-week-event--overdue",i.isOverdue(e)),l(),q(" ",i.platformIcon(e.platform)," ",e.title," ")}}function He(r,t){if(r&1&&(a(0,"div",76),b(1,We,2,8,"div",82,F),o()),r&2){let e=t.$implicit;l(),h(e.events)}}function Ye(r,t){if(r&1&&(a(0,"div",21)(1,"div",70),T(2,"div",71),b(3,Ue,10,7,"div",72,J),o(),a(5,"div",73)(6,"div",74),b(7,Re,2,1,"div",75,P),o(),b(9,He,3,0,"div",76,J),o()()),r&2){let e=c();l(3),h(e.weekDays()),l(4),h(e.hours),l(2),h(e.weekDays())}}function Qe(r,t){if(r&1&&(a(0,"div",75),s(1),o()),r&2){let e=t.$implicit,i=c(2);l(),v(i.formatHour(e))}}function Ge(r,t){if(r&1){let e=f();a(0,"div",83),m("click",function(){let n=p(e).$implicit,d=c(2);return _(d.openEventDrawer(n._id))}),s(1),a(2,"span",89),s(3),B(4,"date"),o()()}if(r&2){let e=t.$implicit,i=c(2);D("background",i.platformColor(e.platform))("top",i.eventTopPx(e),"px"),y("smc-week-event--overdue",i.isOverdue(e)),l(),q(" ",i.platformIcon(e.platform)," ",e.title," "),l(2),v(V(4,9,e.scheduledAt,"h:mm a"))}}function Je(r,t){if(r&1){let e=f();a(0,"div",22)(1,"div",84)(2,"strong"),s(3),B(4,"date"),o(),a(5,"div",85)(6,"button",16),m("click",function(){p(e);let n=c();return _(n.openCreateDrawerForDate(n.cursor()))}),s(7,"+ New Event"),o(),a(8,"a",86),s(9,"View Day \u2197"),o()()(),a(10,"div",87)(11,"div",74),b(12,Qe,2,1,"div",75,P),o(),a(14,"div",88),b(15,Ge,5,12,"div",82,F),o()()()}if(r&2){let e=c();l(3),v(V(4,2,e.cursor(),"EEEE, MMMM d, y")),l(5),M("href",e.dayDetailUrl(e.cursor()),j),l(4),h(e.hours),l(3),h(e.dayEvents())}}function Ke(r,t){r&1&&(a(0,"div",92),s(1,"Loading event..."),o())}function Xe(r,t){if(r&1&&(a(0,"div",98),s(1),B(2,"date"),o()),r&2){let e=c(3);l(),C(" \u26A0 This event is overdue \u2014 scheduled for ",V(2,1,e.activeEvent().scheduledAt,"MMM d, y, h:mm a")," ")}}function Ze(r,t){if(r&1){let e=f();a(0,"input",121),H("ngModelChange",function(n){p(e);let d=c(3);return W(d.editTitle,n)||(d.editTitle=n),_(n)}),m("blur",function(){p(e);let n=c(3);return _(n.saveTitle())})("keydown.enter",function(){p(e);let n=c(3);return _(n.saveTitle())}),o()}if(r&2){let e=c(3);R("ngModel",e.editTitle)}}function et(r,t){if(r&1){let e=f();a(0,"h2",122),m("click",function(){p(e);let n=c(3);return _(n.startEditTitle())}),s(1),a(2,"span",123),s(3,"\u270F"),o()()}if(r&2){let e=c(3);l(),C(" ",e.activeEvent().title," ")}}function tt(r,t){if(r&1){let e=f();a(0,"span",106),s(1),a(2,"button",124),m("click",function(){let n=p(e).$implicit,d=c(3);return _(d.removeAssignee(n))}),s(3,"\u2715"),o()()}if(r&2){let e=t.$implicit,i=c(3);l(),C(" ",i.memberName(e)," ")}}function it(r,t){if(r&1){let e=f();a(0,"div",108)(1,"a",125),s(2),o(),a(3,"button",126),m("click",function(){let n=p(e).$implicit,d=c(3);return _(d.deleteAttachment(n._id))}),s(4,"\u{1F5D1}"),o()()}if(r&2){let e=t.$implicit,i=c(3);l(),M("href",e.url,j),l(),q(" ",i.attachmentIcon(e.type)," ",e.name," ")}}function nt(r,t){if(r&1&&(a(0,"span",117),s(1),o()),r&2){let e=t.$implicit;l(),v(e)}}function ot(r,t){if(r&1){let e=f();a(0,"button",127),m("click",function(){p(e);let n=c(3);return _(n.markCompleted())}),s(1),o()}if(r&2){let e=c(3);M("disabled",e.saving()),l(),C(" ",e.saving()?"Saving...":"\u2713 Mark Completed"," ")}}function at(r,t){if(r&1){let e=f();a(0,"div",93)(1,"div",94)(2,"span",95),s(3),o(),a(4,"span",96),s(5),o()(),a(6,"button",97),m("click",function(){p(e);let n=c(2);return _(n.closeDrawer())}),s(7,"\u2715"),o()(),g(8,Xe,3,4,"div",98),a(9,"div",99)(10,"label",100),s(11,"Title"),o(),g(12,Ze,1,1,"input",101)(13,et,4,1,"h2",102),o(),a(14,"div",99)(15,"label",100),s(16,"Scheduled"),o(),a(17,"input",103),B(18,"date"),m("change",function(n){p(e);let d=c(2);return _(d.onReschedule(n))}),o()(),a(19,"div",99)(20,"label",100),s(21,"Description / Caption"),o(),a(22,"textarea",104),m("change",function(n){p(e);let d=c(2);return _(d.onDescChange(n))}),o()(),a(23,"div",99)(24,"label",100),s(25,"Assigned To"),o(),a(26,"div",105),b(27,tt,4,1,"span",106,P),o()(),a(29,"div",99)(30,"label",100),s(31,"Attachments"),o(),a(32,"div",107),b(33,it,5,3,"div",108,F),o(),a(35,"div",109)(36,"label",110)(37,"input",111),m("change",function(n){p(e);let d=c(2);return _(d.onFileUpload(n))}),o(),s(38," \u{1F4CE} Upload files "),o(),a(39,"div",112)(40,"input",113),H("ngModelChange",function(n){p(e);let d=c(2);return W(d.linkUrl,n)||(d.linkUrl=n),_(n)}),o(),a(41,"input",114),H("ngModelChange",function(n){p(e);let d=c(2);return W(d.linkName,n)||(d.linkName=n),_(n)}),o(),a(42,"button",16),m("click",function(){p(e);let n=c(2);return _(n.addLink())}),s(43,"Add"),o()()()(),a(44,"div",99)(45,"label",100),s(46,"Internal Notes"),o(),a(47,"textarea",115),m("change",function(n){p(e);let d=c(2);return _(d.onNotesChange(n))}),o()(),a(48,"div",99)(49,"label",100),s(50,"Tags"),o(),a(51,"div",116),b(52,nt,2,1,"span",117,P),o()(),a(54,"div",118),g(55,ot,2,2,"button",119),a(56,"button",120),m("click",function(){p(e);let n=c(2);return _(n.confirmDelete())}),s(57," \u{1F5D1} Delete "),o()()}if(r&2){let e=c(2);l(2),D("background",e.platformColor(e.activeEvent().platform)),l(),q(" ",e.platformIcon(e.activeEvent().platform)," ",e.platformLabel(e.activeEvent().platform)," "),l(),D("background",e.statusColor(e.activeEvent().status)),l(),C(" ",e.activeEvent().status," "),l(3),u(e.isOverdue(e.activeEvent())?8:-1),l(4),u(e.editingTitle()?12:13),l(5),M("ngModel",V(18,15,e.activeEvent().scheduledAt,"yyyy-MM-ddTHH:mm")),l(5),M("ngModel",e.activeEvent().description||""),l(5),h(e.activeEvent().assignees),l(6),h(e.activeEvent().attachments),l(7),R("ngModel",e.linkUrl),l(),R("ngModel",e.linkName),l(6),M("ngModel",e.activeEvent().notes||""),l(5),h(e.activeEvent().tags),l(3),u(e.activeEvent().status!=="completed"?55:-1)}}function rt(r,t){if(r&1){let e=f();a(0,"div",90),m("click",function(){p(e);let n=c();return _(n.closeDrawer())}),o(),a(1,"div",91),g(2,Ke,2,0,"div",92)(3,at,58,18),o()}if(r&2){let e=c();l(),y("smc-drawer--open",e.drawerOpen()),l(),u(e.drawerLoading()?2:e.activeEvent()?3:-1)}}function lt(r,t){r&1&&(a(0,"span",132),s(1,"Title is required"),o())}function st(r,t){if(r&1){let e=f();a(0,"button",143),m("click",function(){let n=p(e).$implicit,d=c(2);return _(d.selectPlatform(n))}),a(1,"span",144),s(2),o(),a(3,"span",145),s(4),o()()}if(r&2){let e,i=t.$implicit,n=c(2);D("--pcolor",n.platformColor(i)),y("platform-option--selected",((e=n.createForm.get("platform"))==null?null:e.value)===i),l(2),v(n.platformIcon(i)),l(2),v(n.platformLabel(i))}}function ct(r,t){r&1&&(a(0,"span",132),s(1,"Platform is required"),o())}function dt(r,t){r&1&&(a(0,"p",138),s(1,"No other project members found."),o())}function mt(r,t){if(r&1){let e=f();a(0,"button",147),m("click",function(){let n=p(e).$implicit,d=c(3);return _(d.toggleAssignee(n._id))}),a(1,"span",148),s(2),o(),a(3,"span",149),s(4),o()()}if(r&2){let e=t.$implicit,i=c(3);y("assignee-chip--selected",i.isAssigneeSelected(e._id)),l(2),v(e.name.charAt(0).toUpperCase()),l(2),v(e.name)}}function pt(r,t){if(r&1&&(a(0,"div",139),b(1,mt,5,4,"button",146,F),o()),r&2){let e=c(2);l(),h(e.projectMembers())}}function _t(r,t){if(r&1&&(a(0,"div",140),s(1),o()),r&2){let e=c(2);l(),v(e.createError())}}function ut(r,t){if(r&1){let e=f();a(0,"div",90),m("click",function(){p(e);let n=c();return _(n.closeCreateDrawer())}),o(),a(1,"div",128)(2,"div",93)(3,"h3",129),s(4,"New Social Media Event"),o(),a(5,"button",97),m("click",function(){p(e);let n=c();return _(n.closeCreateDrawer())}),s(6,"\u2715"),o()(),a(7,"form",130),m("ngSubmit",function(){p(e);let n=c();return _(n.submitCreate())}),a(8,"div",99)(9,"label",100),s(10,"Title *"),o(),T(11,"input",131),g(12,lt,2,0,"span",132),o(),a(13,"div",99)(14,"label",100),s(15,"Platform *"),o(),a(16,"div",133),b(17,st,5,6,"button",134,P),o(),g(19,ct,2,0,"span",132),o(),a(20,"div",99)(21,"label",100),s(22,"Scheduled Date & Time *"),o(),T(23,"input",135),o(),a(24,"div",99)(25,"label",100),s(26,"Description"),o(),T(27,"textarea",136),o(),a(28,"div",99)(29,"label",100),s(30,"Notes"),o(),T(31,"textarea",137),o(),a(32,"div",99)(33,"label",100),s(34,"Assign To"),o(),g(35,dt,2,0,"p",138)(36,pt,3,0,"div",139),o(),g(37,_t,2,1,"div",140),a(38,"div",118)(39,"button",141),s(40),o(),a(41,"button",142),m("click",function(){p(e);let n=c();return _(n.closeCreateDrawer())}),s(42,"Cancel"),o()()()()}if(r&2){let e,i,n=c();l(),y("smc-drawer--open",n.createDrawerOpen()),l(6),M("formGroup",n.createForm),l(5),u((e=n.createForm.get("title"))!=null&&e.invalid&&((e=n.createForm.get("title"))!=null&&e.touched)?12:-1),l(5),h(n.platforms),l(2),u((i=n.createForm.get("platform"))!=null&&i.invalid&&((i=n.createForm.get("platform"))!=null&&i.touched)?19:-1),l(16),u(n.projectMembers().length===0?35:36),l(2),u(n.createError()?37:-1),l(2),M("disabled",n.createForm.invalid||n.creating()),l(),C(" ",n.creating()?"Creating...":"Create Event"," ")}}var ye=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],U=["January","February","March","April","May","June","July","August","September","October","November","December"],ke=class r{constructor(){this.smc=O(Ce);this.ums=O(we);this.fb=O(me);this.destroy$=new X;this.view=x("month");this.cursor=x(new Date);this.allEvents=x([]);this.filteredEvents=x([]);this.upcomingEvents=x([]);this.overdueEvents=x([]);this.overdueCount=I(()=>this.overdueEvents().length);this.drawerOpen=x(!1);this.drawerLoading=x(!1);this.activeEvent=x(null);this.saving=x(!1);this.editingTitle=x(!1);this.editTitle="";this.createDrawerOpen=x(!1);this.creating=x(!1);this.createError=x("");this.projectMembers=x([]);this.selectedAssignees=x([]);this.quickPanelOpen=x(!1);this.mobileSelectedDate=x(new Date);this.platformFilter="";this.linkUrl="";this.linkName="";this.platforms=he;this.weekdays=ye;this.hours=Array.from({length:24},(t,e)=>e);this.calendarDays=I(()=>this.view()!=="month"?[]:this.buildMonthGrid(this.cursor(),this.filteredEvents()));this.weekDays=I(()=>this.view()!=="week"?[]:this.buildWeekDays(this.cursor(),this.filteredEvents()));this.dayEvents=I(()=>{if(this.view()!=="day")return[];let t=this.cursor();return this.filteredEvents().filter(e=>this.isSameDay(new Date(e.scheduledAt),t))});this.mobileSelectedDayEvents=I(()=>{let t=this.mobileSelectedDate();return this.filteredEvents().filter(e=>this.isSameDay(new Date(e.scheduledAt),t))});this.headingLabel=I(()=>{let t=this.cursor();if(this.view()==="month")return`${U[t.getMonth()]} ${t.getFullYear()}`;if(this.view()==="week"){let e=this.buildWeekDays(t,[]);if(e.length===0)return"";let i=e[0].date,n=e[6].date;return i.getMonth()===n.getMonth()?`${U[i.getMonth()]} ${i.getDate()}\u2013${n.getDate()}, ${i.getFullYear()}`:`${U[i.getMonth()]} ${i.getDate()} \u2013 ${U[n.getMonth()]} ${n.getDate()}, ${i.getFullYear()}`}return`${U[t.getMonth()]} ${t.getDate()}, ${t.getFullYear()}`});this.createForm=this.fb.group({title:["",[N.required,N.maxLength(200)]],platform:["",N.required],scheduledAt:["",N.required],description:[""],notes:[""]});this.host=O(ee);this.projectId="";this._eventId=null;this.initialised=!1;this.bloomsnavigate=new G;this.bloomserror=new G;this.needsSignIn=I(()=>L.config()!==null&&L.session()===null)}toggleQuickPanel(){this.quickPanelOpen.set(!this.quickPanelOpen())}markOverdueCompleted(t,e){e.stopPropagation(),this.smc.updateStatus(t,"completed").subscribe({next:()=>{this.overdueEvents.update(i=>i.filter(n=>n._id!==t)),this.allEvents.update(i=>i.map(n=>n._id===t?K(Q({},n),{status:"completed"}):n))},error:()=>{}})}set eventId(t){this._eventId=t??null,this.initialised&&this.syncDrawerToInput()}get eventId(){return this._eventId}announce(t,e={}){let i={feature:"social-media-calendar",view:t,params:e};this.bloomsnavigate.emit(i),L.emit(Q({type:"navigate"},i))}goToLego(){this.announce("lego")}syncDrawerToInput(){let t=this._eventId;t&&(!this.activeEvent()||this.activeEvent()._id!==t)?this.openEventDrawer(t):!t&&this.drawerOpen()&&this.closeDrawer()}ngOnInit(){let t=this.host.nativeElement.shadowRoot;t&&ue(t),this.projectId||(this.projectId=L.project()?.id??""),this.loadEvents(),this.loadQuickAccess(),this.loadProjectMembers(),this.initialised=!0,this.syncDrawerToInput()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}loadEvents(){let t=this.cursor(),e=new Date(t.getFullYear(),t.getMonth()-1,1).toISOString(),i=new Date(t.getFullYear(),t.getMonth()+2,0).toISOString();this.smc.listEvents(this.projectId,{from:e,to:i,limit:500}).pipe(w(this.destroy$)).subscribe({next:n=>{this.allEvents.set(n.data||[]),this.applyFilter()}})}loadQuickAccess(){Z({upcoming:this.smc.getUpcomingEvents(this.projectId),overdue:this.smc.getOverdueEvents(this.projectId)}).pipe(w(this.destroy$)).subscribe({next:({upcoming:t,overdue:e})=>{this.upcomingEvents.set(t.data||[]),this.overdueEvents.set(e.data||[])}})}applyFilter(){let t=this.allEvents();this.platformFilter?this.filteredEvents.set(t.filter(e=>e.platform===this.platformFilter)):this.filteredEvents.set(t)}prev(){let t=new Date(this.cursor());this.view()==="month"?t.setMonth(t.getMonth()-1):this.view()==="week"?t.setDate(t.getDate()-7):t.setDate(t.getDate()-1),this.cursor.set(t),this.loadEvents()}next(){let t=new Date(this.cursor());this.view()==="month"?t.setMonth(t.getMonth()+1):this.view()==="week"?t.setDate(t.getDate()+7):t.setDate(t.getDate()+1),this.cursor.set(t),this.loadEvents()}goToday(){this.cursor.set(new Date),this.loadEvents()}setView(t){this.view.set(t)}onDayClick(t){if(window.innerWidth<=768){this.mobileSelectedDate.set(t);return}this.cursor.set(t),this.view()==="month"&&this.setView("day")}showDayPopover(t){this.cursor.set(t.date),this.setView("day")}openEventDrawer(t){this.drawerOpen.set(!0),this.drawerLoading.set(!0),this.announce("event",{eventId:t}),this.smc.getEvent(t).pipe(w(this.destroy$)).subscribe({next:e=>{this.activeEvent.set(e.data),this.drawerLoading.set(!1)},error:()=>{this.drawerLoading.set(!1)}})}closeDrawer(){this.drawerOpen.set(!1),this.activeEvent.set(null),this.editingTitle.set(!1),this.announce("calendar")}loadProjectMembers(){this.ums.getProjectMembers(this.projectId).subscribe({next:t=>this.projectMembers.set(t.data||[]),error:()=>{}})}openCreateDrawer(){this.createForm.reset(),this.createError.set(""),this.selectedAssignees.set([]),this.createDrawerOpen.set(!0)}openCreateDrawerForDate(t){this.createForm.reset(),this.createError.set(""),this.selectedAssignees.set([]);let e=E=>String(E).padStart(2,"0"),i=new Date,n=this.isSameDay(t,i),d=n?i.getHours():9,S=n?Math.ceil(i.getMinutes()/15)*15%60:0,A=`${t.getFullYear()}-${e(t.getMonth()+1)}-${e(t.getDate())}T${e(d)}:${e(S)}`;this.createForm.patchValue({scheduledAt:A}),this.createDrawerOpen.set(!0)}closeCreateDrawer(){this.createDrawerOpen.set(!1)}selectPlatform(t){this.createForm.patchValue({platform:t})}toggleAssignee(t){this.selectedAssignees.update(e=>e.includes(t)?e.filter(i=>i!==t):[...e,t])}isAssigneeSelected(t){return this.selectedAssignees().includes(t)}dayDetailUrl(t){let e=n=>String(n).padStart(2,"0"),i=`${t.getFullYear()}-${e(t.getMonth()+1)}-${e(t.getDate())}`;return`/projects/${this.projectId}/lego/social-media-calendar/day/${i}`}submitCreate(){if(this.createForm.invalid)return;this.creating.set(!0),this.createError.set("");let t=this.createForm.value;this.smc.createEvent(this.projectId,{title:t.title,platform:t.platform,scheduledAt:t.scheduledAt,description:t.description||void 0,notes:t.notes||void 0,assignees:this.selectedAssignees().length?this.selectedAssignees():void 0}).pipe(w(this.destroy$)).subscribe({next:e=>{this.creating.set(!1),this.closeCreateDrawer(),this.allEvents.update(i=>[...i,e.data]),this.applyFilter(),this.loadQuickAccess(),this.openEventDrawer(e.data._id)},error:e=>{this.creating.set(!1),this.createError.set(e?.error?.message||"Failed to create event")}})}startEditTitle(){this.editTitle=this.activeEvent().title,this.editingTitle.set(!0)}saveTitle(){this.editTitle.trim()&&(this.editingTitle.set(!1),this.saving.set(!0),this.smc.updateEvent(this.activeEvent()._id,{title:this.editTitle}).pipe(w(this.destroy$)).subscribe({next:t=>{this.activeEvent.set(t.data),this.saving.set(!1),this.refreshEventInList(t.data)}}))}onReschedule(t){let e=t.target.value;e&&this.smc.rescheduleEvent(this.activeEvent()._id,new Date(e).toISOString()).pipe(w(this.destroy$)).subscribe({next:i=>{this.activeEvent.set(i.data),this.refreshEventInList(i.data),this.loadQuickAccess()}})}onDescChange(t){let e=t.target.value;this.smc.updateEvent(this.activeEvent()._id,{description:e}).pipe(w(this.destroy$)).subscribe({next:i=>this.activeEvent.set(i.data)})}onNotesChange(t){let e=t.target.value;this.smc.updateEvent(this.activeEvent()._id,{notes:e}).pipe(w(this.destroy$)).subscribe({next:i=>this.activeEvent.set(i.data)})}markCompleted(){this.saving.set(!0),this.smc.updateStatus(this.activeEvent()._id,"completed").pipe(w(this.destroy$)).subscribe({next:t=>{this.activeEvent.set(t.data),this.saving.set(!1),this.refreshEventInList(t.data),this.loadQuickAccess()}})}confirmDelete(){confirm(`Delete event "${this.activeEvent().title}"?`)&&this.smc.deleteEvent(this.activeEvent()._id).pipe(w(this.destroy$)).subscribe({next:()=>{let t=this.activeEvent()._id;this.closeDrawer(),this.allEvents.update(e=>e.filter(i=>i._id!==t)),this.applyFilter(),this.loadQuickAccess()}})}removeAssignee(t){this.smc.removeAssignee(this.activeEvent()._id,t).pipe(w(this.destroy$)).subscribe({next:e=>this.activeEvent.set(e.data)})}onFileUpload(t){let e=t.target.files;e&&Array.from(e).forEach(i=>{this.smc.uploadFile(this.activeEvent()._id,i).pipe(w(this.destroy$)).subscribe({next:n=>this.activeEvent.set(n.data)})})}addLink(){this.linkUrl.trim()&&this.smc.addLink(this.activeEvent()._id,"link",this.linkName||this.linkUrl,this.linkUrl).pipe(w(this.destroy$)).subscribe({next:t=>{this.activeEvent.set(t.data),this.linkUrl="",this.linkName=""}})}deleteAttachment(t){this.smc.removeAttachment(this.activeEvent()._id,t).pipe(w(this.destroy$)).subscribe({next:e=>this.activeEvent.set(e.data)})}memberName(t){let e=this.projectMembers().find(i=>i._id===t);return e?e.name:t}platformLabel(t){return ve[t]||t}platformColor(t){return xe[t]||"#6366f1"}platformIcon(t){return ge[t]||"\u{1F4CC}"}statusColor(t){return be[t]||"#6b7280"}isOverdue(t){return this.smc.isOverdue(t)}attachmentIcon(t){return{image:"\u{1F5BC}",video:"\u{1F3A5}",audio:"\u{1F3B5}",pdf:"\u{1F4C4}",word:"\u{1F4DD}",excel:"\u{1F4CA}",link:"\u{1F517}","google-doc":"\u{1F4C3}","notion-doc":"\u{1F4D3}",youtube:"\u25B6\uFE0F"}[t]||"\u{1F4CE}"}weekdayName(t){return ye[t.getDay()]}formatHour(t){let e=t<12?"AM":"PM";return`${t===0?12:t>12?t-12:t} ${e}`}eventTopPx(t){let e=new Date(t.scheduledAt);return(e.getHours()*60+e.getMinutes())*1}isSameDay(t,e){return t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate()}refreshEventInList(t){this.allEvents.update(e=>e.map(i=>i._id===t._id?t:i)),this.applyFilter()}buildMonthGrid(t,e){let i=t.getFullYear(),n=t.getMonth(),d=new Date(i,n,1),S=new Date(i,n+1,0),A=new Date,E=[];for(let k=0;k<d.getDay();k++){let $=new Date(i,n,-d.getDay()+k+1);E.push({date:$,isCurrentMonth:!1,isToday:!1,events:[]})}for(let k=1;k<=S.getDate();k++){let $=new Date(i,n,k);E.push({date:$,isCurrentMonth:!0,isToday:this.isSameDay($,A),events:e.filter(Y=>this.isSameDay(new Date(Y.scheduledAt),$)).sort((Y,Se)=>new Date(Y.scheduledAt).getTime()-new Date(Se.scheduledAt).getTime())})}let z=42-E.length;for(let k=1;k<=z;k++){let $=new Date(i,n+1,k);E.push({date:$,isCurrentMonth:!1,isToday:!1,events:[]})}return E}buildWeekDays(t,e){let i=new Date,n=t.getDay(),d=new Date(t);return d.setDate(t.getDate()-n),Array.from({length:7},(S,A)=>{let E=new Date(d);return E.setDate(d.getDate()+A),{date:E,isCurrentMonth:!0,isToday:this.isSameDay(E,i),events:e.filter(z=>this.isSameDay(new Date(z.scheduledAt),E)).sort((z,k)=>new Date(z.scheduledAt).getTime()-new Date(k.scheduledAt).getTime())}})}static{this.\u0275fac=function(e){return new(e||r)}}static{this.\u0275cmp=te({type:r,selectors:[["blooms-social-media-calendar"]],inputs:{projectId:"projectId",eventId:"eventId"},outputs:{bloomsnavigate:"bloomsnavigate",bloomserror:"bloomserror"},decls:49,vars:18,consts:[[1,"smc-page"],[1,"smc-header"],[1,"smc-header__left"],["type","button",1,"back-link",3,"click"],[1,"smc-header__title"],[1,"smc-header__actions"],[1,"smc-quick-access"],[1,"smc-quick-access__bar",3,"click"],[1,"smc-quick-access__counts"],[1,"smc-qa-badge"],[1,"smc-qa-badge__label"],[1,"smc-qa-badge__num"],["type","button",1,"smc-quick-access__toggle"],[1,"smc-quick-access__body"],[1,"smc-toolbar"],[1,"smc-toolbar__nav"],[1,"btn","btn-sm","btn-ghost",3,"click"],[1,"smc-toolbar__heading"],[1,"smc-toolbar__right"],[1,"smc-view-switcher"],[3,"click"],[1,"smc-calendar","smc-calendar--week"],[1,"smc-calendar","smc-calendar--day"],[1,"smc-quick-access__col"],[1,"smc-quick-access__heading"],[1,"smc-quick-access__empty"],[1,"smc-quick-event"],[1,"smc-quick-access__more"],[1,"smc-quick-access__heading","smc-quick-access__heading--danger"],[1,"smc-quick-event","smc-quick-event--overdue"],[1,"smc-quick-access__more","smc-quick-access__more--danger"],[1,"smc-quick-event",3,"click"],[1,"smc-quick-event__platform"],[1,"smc-quick-event__info"],[1,"smc-quick-event__title"],[1,"smc-quick-event__time"],[1,"smc-quick-event","smc-quick-event--overdue",3,"click"],["appTooltip","Mark as completed",1,"smc-quick-event__complete-btn",3,"click"],[1,"smc-calendar","smc-calendar--month"],[1,"smc-calendar__weekdays"],[1,"smc-calendar__weekday"],[1,"smc-calendar__grid"],[1,"smc-day",3,"smc-day--other-month","smc-day--today","smc-day--has-events","smc-day--mobile-selected"],[1,"smc-mobile-events-panel"],[1,"smc-mobile-events-panel__header"],[1,"smc-mobile-events-panel__date"],[1,"smc-mobile-events-panel__add-btn",3,"click"],[1,"smc-mobile-events-panel__empty"],[1,"smc-mobile-event-item"],[1,"smc-day",3,"click"],[1,"smc-day__top-row"],[1,"smc-day__number"],[1,"smc-day__hover-actions"],["appTooltip","New event",1,"smc-day__action-btn",3,"click"],["target","_blank","rel","noopener","appTooltip","View all events for this day",1,"smc-day__action-btn",3,"click","href"],[1,"smc-day__events"],[1,"smc-chip",3,"smc-chip--overdue","background","appTooltip"],[1,"smc-chip","smc-chip--more"],[1,"smc-day__mobile-dot-row"],[1,"smc-day__dot",3,"background"],[1,"smc-chip",3,"click","appTooltip"],[1,"smc-chip","smc-chip--more",3,"click"],[1,"smc-day__dot"],[1,"smc-mobile-event-item",3,"click"],[1,"smc-mobile-event-item__bar"],[1,"smc-mobile-event-item__info"],[1,"smc-mobile-event-item__title"],[1,"smc-mobile-event-item__meta"],[1,"smc-mobile-event-item__overdue"],[1,"smc-mobile-event-item__status"],[1,"smc-week-header"],[1,"smc-week-header__time-col"],[1,"smc-week-header__day",3,"smc-week-header__day--today"],[1,"smc-week-body"],[1,"smc-week-times"],[1,"smc-week-time"],[1,"smc-week-col"],[1,"smc-week-header__day"],[1,"smc-week-header__day-name"],[1,"smc-week-header__day-num"],[1,"smc-week-header__actions"],["target","_blank","rel","noopener","appTooltip","View all events",1,"smc-day__action-btn",3,"href"],[1,"smc-week-event",3,"smc-week-event--overdue","background","top"],[1,"smc-week-event",3,"click"],[1,"smc-day-header"],[1,"smc-day-header__actions"],["target","_blank","rel","noopener",1,"btn","btn-sm","btn-ghost",3,"href"],[1,"smc-day-body"],[1,"smc-day-col"],[1,"smc-week-event__time"],[1,"smc-overlay",3,"click"],[1,"smc-drawer"],[1,"smc-drawer__loading"],[1,"smc-drawer__header"],[1,"smc-drawer__header-left"],[1,"smc-drawer__platform-badge"],[1,"smc-drawer__status-badge"],["appTooltip","Close",1,"smc-drawer__close",3,"click"],[1,"smc-drawer__overdue-banner"],[1,"smc-drawer__section"],[1,"smc-drawer__label"],["autofocus","",1,"form-input",3,"ngModel"],[1,"smc-drawer__event-title"],["type","datetime-local",1,"form-input",3,"change","ngModel"],["rows","4","placeholder","Post caption, copy, or description...",1,"form-textarea",3,"change","ngModel"],[1,"smc-drawer__assignees"],[1,"smc-drawer__assignee-chip"],[1,"smc-drawer__attachments"],[1,"smc-drawer__attachment"],[1,"smc-drawer__upload-zone"],[1,"smc-drawer__upload-label"],["type","file","multiple","",2,"display","none",3,"change"],[1,"smc-drawer__link-row"],["placeholder","Paste a link URL...",1,"form-input","form-input--sm",3,"ngModelChange","ngModel"],["placeholder","Link name",1,"form-input","form-input--sm",3,"ngModelChange","ngModel"],["rows","3","placeholder","Internal team notes (not published)...",1,"form-textarea",3,"change","ngModel"],[1,"smc-drawer__tags"],[1,"smc-drawer__tag"],[1,"smc-drawer__footer"],[1,"btn","btn-success","btn-sm",3,"disabled"],[1,"btn","btn-danger","btn-sm",3,"click"],["autofocus","",1,"form-input",3,"ngModelChange","blur","keydown.enter","ngModel"],[1,"smc-drawer__event-title",3,"click"],[1,"smc-drawer__edit-hint"],["appTooltip","Remove assignee",3,"click"],["target","_blank",1,"smc-drawer__attachment-name",3,"href"],["appTooltip","Remove",1,"btn-icon",3,"click"],[1,"btn","btn-success","btn-sm",3,"click","disabled"],[1,"smc-drawer","smc-drawer--create"],[1,"smc-drawer__create-title"],[1,"smc-drawer__form",3,"ngSubmit","formGroup"],["formControlName","title","placeholder","Event title",1,"form-input"],[1,"form-error"],[1,"platform-grid"],["type","button",1,"platform-option",3,"platform-option--selected","--pcolor"],["type","datetime-local","formControlName","scheduledAt",1,"form-input"],["rows","3","formControlName","description","placeholder","Post copy or description...",1,"form-textarea"],["rows","2","formControlName","notes","placeholder","Internal notes...",1,"form-textarea"],[1,"assignee-list__empty"],[1,"assignee-list"],[1,"error-msg"],["type","submit",1,"btn","btn-primary",3,"disabled"],["type","button",1,"btn","btn-ghost",3,"click"],["type","button",1,"platform-option",3,"click"],[1,"platform-option__icon"],[1,"platform-option__label"],["type","button",1,"assignee-chip",3,"assignee-chip--selected"],["type","button",1,"assignee-chip",3,"click"],[1,"assignee-chip__avatar"],[1,"assignee-chip__name"]],template:function(e,i){e&1&&(a(0,"div",0)(1,"div",1)(2,"div",2)(3,"button",3),m("click",function(){return i.goToLego()}),s(4,"\u2190 Lego"),o(),a(5,"h1",4),s(6,"\u{1F4C5} Social Media Calendar"),o()(),T(7,"div",5),o(),a(8,"div",6)(9,"div",7),m("click",function(){return i.toggleQuickPanel()}),a(10,"div",8)(11,"span",9),s(12," \u{1F4C5} "),a(13,"span",10),s(14,"Upcoming"),o(),a(15,"span",11),s(16),o()(),a(17,"span",9),s(18," \u26A0 "),a(19,"span",10),s(20,"Overdue"),o(),a(21,"span",11),s(22),o()()(),a(23,"button",12),s(24),o()(),g(25,Fe,15,5,"div",13),o(),a(26,"div",14)(27,"div",15)(28,"button",16),m("click",function(){return i.prev()}),s(29,"\u2039"),o(),a(30,"button",16),m("click",function(){return i.goToday()}),s(31,"Today"),o(),a(32,"button",16),m("click",function(){return i.next()}),s(33,"\u203A"),o(),a(34,"span",17),s(35),o()(),a(36,"div",18)(37,"div",19)(38,"button",20),m("click",function(){return i.setView("month")}),s(39,"Month"),o(),a(40,"button",20),m("click",function(){return i.setView("week")}),s(41,"Week"),o(),a(42,"button",20),m("click",function(){return i.setView("day")}),s(43,"Day"),o()()()(),g(44,Ne,17,5)(45,Ye,11,0,"div",21)(46,Je,17,5,"div",22)(47,rt,4,3)(48,ut,43,9),o()),e&2&&(l(16),v(i.upcomingEvents().length),l(),y("smc-qa-badge--danger",i.overdueCount()>0),l(5),v(i.overdueCount()),l(2),C(" ",i.quickPanelOpen()?"\u25B2 Collapse":"\u25BC Expand"," "),l(),u(i.quickPanelOpen()?25:-1),l(10),v(i.headingLabel()),l(3),y("active",i.view()==="month"),l(2),y("active",i.view()==="week"),l(2),y("active",i.view()==="day"),l(2),u(i.view()==="month"?44:-1),l(),u(i.view()==="week"?45:-1),l(),u(i.view()==="day"?46:-1),l(),u(i.drawerOpen()?47:-1),l(),u(i.createDrawerOpen()?48:-1))},dependencies:[ne,ie,pe,se,oe,ae,re,le,_e,ce,de,fe],styles:[`@charset "UTF-8";:host{--color-text: var(--color-text, #5d5f71);--color-text-muted: var(--color-text-muted, #9395a5);--color-bg: var(--color-bg, #f7f5fb);--color-card-bg: var(--color-card-bg, #ffffff);--color-border: var(--color-border, #ede9f6);--color-hover: var(--color-hover, #f5f2fb);--color-accent: var(--color-accent, #e84855);--radius-sm: var(--radius-sm, 6px);--radius-md: var(--radius-md, 10px);--radius-lg: var(--radius-lg, 16px);display:block;font-family:var(--font-sans, "Poppins", system-ui, -apple-system, sans-serif);color:var(--color-text)}:host>*{letter-spacing:normal;word-spacing:normal;line-height:1.5;text-transform:none;text-indent:0;font-style:normal;font-weight:400;font-variant:normal;text-align:left;white-space:normal}*,*:before,*:after{box-sizing:border-box}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:var(--radius-md);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,box-shadow .15s,opacity .15s;text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-sm{padding:6px 12px;font-size:12px}.btn-primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.btn-primary:hover:not(:disabled){background:#d13d4a;border-color:#d13d4a;box-shadow:0 2px 8px color-mix(in srgb,var(--color-accent) 30%,transparent)}.btn-outline{background:transparent;color:var(--color-text);border-color:var(--color-border)}.btn-outline:hover:not(:disabled){background:var(--color-hover);border-color:#d5d0e4}.btn-ghost{background:transparent;color:var(--color-text-muted);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--color-hover);color:var(--color-text)}
2
+ `,`@charset "UTF-8";.smc-page{padding:24px;max-width:1400px;margin:0 auto;font-family:var(--font-sans, system-ui, sans-serif)}.smc-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.smc-header__left{display:flex;align-items:center;gap:16px}.smc-header__title{font-size:1.5rem;font-weight:700;margin:0}.smc-header__actions{display:flex;align-items:center;gap:8px}.back-link{background:none;border:0;padding:0;cursor:pointer;font-family:inherit;color:var(--color-primary, #6366f1);text-decoration:none;font-size:.85rem}.back-link:hover{text-decoration:underline}.smc-quick-access{background:var(--color-surface, #f8f9fa);border:1px solid var(--color-border, #e5e7eb);border-radius:12px;margin-bottom:20px;overflow:hidden}.smc-quick-access__bar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s}.smc-quick-access__bar:hover{background:var(--color-hover, #f3f4f6)}.smc-quick-access__counts{display:flex;align-items:center;gap:16px}.smc-qa-badge{display:inline-flex;align-items:center;gap:6px;font-size:.82rem;color:#374151}.smc-qa-badge__label{font-weight:500}.smc-qa-badge__num{min-width:20px;height:20px;padding:0 6px;background:#e5e7eb;border-radius:10px;font-size:.75rem;font-weight:700;color:#374151;display:inline-flex;align-items:center;justify-content:center}.smc-qa-badge--danger .smc-qa-badge__num{background:#fee2e2;color:#dc2626}.smc-qa-badge--danger .smc-qa-badge__label{color:#dc2626}.smc-quick-access__toggle{font-size:.78rem;color:#6b7280;background:none;border:none;cursor:pointer;white-space:nowrap}.smc-quick-access__body{display:grid;grid-template-columns:1fr 1fr;gap:0;border-top:1px solid var(--color-border, #e5e7eb)}.smc-quick-access__col{padding:12px 16px;max-height:220px;overflow-y:auto}.smc-quick-access__col:first-child{border-right:1px solid var(--color-border, #e5e7eb)}.smc-quick-access__heading{font-size:.8rem;font-weight:600;margin:0 0 8px;color:#374151;text-transform:uppercase;letter-spacing:.04em}.smc-quick-access__heading--danger{color:#dc2626}.smc-quick-access__empty{font-size:.8rem;color:#9ca3af;margin:0}.smc-quick-access__more{font-size:.75rem;color:#6b7280;margin:4px 0 0;font-style:italic}.smc-quick-access__more--danger{color:#dc2626}.smc-quick-event{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:6px;cursor:pointer;transition:background .15s}.smc-quick-event:hover{background:var(--color-hover, #f3f4f6)}.smc-quick-event--overdue{border-left:3px solid #f59e0b;padding-left:8px}.smc-quick-event__platform{font-size:1rem;flex-shrink:0}.smc-quick-event__info{display:flex;flex-direction:column;min-width:0}.smc-quick-event__title{font-size:.8rem;font-weight:500;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.smc-quick-event__time{font-size:.72rem;color:#6b7280}.smc-quick-event__complete-btn{flex-shrink:0;width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:#10b9811a;border:1px solid rgba(16,185,129,.3);border-radius:50%;color:#10b981;font-size:11px;font-weight:700;cursor:pointer;opacity:0;transition:opacity .15s,background .12s,transform .1s}.smc-quick-event:hover .smc-quick-event__complete-btn{opacity:1}.smc-quick-event__complete-btn:hover{background:#10b98133;transform:scale(1.1)}.smc-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:12px;flex-wrap:wrap}.smc-toolbar__nav{display:flex;align-items:center;gap:4px}.smc-toolbar__heading{font-size:1.1rem;font-weight:600;margin-left:12px}.smc-toolbar__right{display:flex;align-items:center;gap:8px}.smc-view-switcher{display:flex;border:1px solid var(--color-border, #e5e7eb);border-radius:6px;overflow:hidden}.smc-view-switcher button{padding:5px 14px;font-size:.8rem;background:none;border:none;cursor:pointer;color:#6b7280;transition:background .15s}.smc-view-switcher button.active{background:var(--color-primary, #6366f1);color:#fff}.smc-view-switcher button:hover:not(.active){background:#f3f4f6}.smc-calendar--month{border:1px solid var(--color-border, #e5e7eb);border-radius:12px;overflow:hidden}.smc-calendar__weekdays{display:grid;grid-template-columns:repeat(7,1fr);background:var(--color-surface, #f8f9fa)}.smc-calendar__weekday{padding:8px;text-align:center;font-size:.78rem;font-weight:600;color:#6b7280;border-bottom:1px solid #e5e7eb}.smc-calendar__grid{display:grid;grid-template-columns:repeat(7,1fr)}.smc-day{height:130px;padding:6px;border-right:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;cursor:pointer;transition:background .1s;overflow:hidden;display:flex;flex-direction:column;box-sizing:border-box}.smc-day:hover{background:#f9fafb}.smc-day--other-month{opacity:.4}.smc-day--today .smc-day__number{background:var(--color-primary, #6366f1);color:#fff;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.smc-day__top-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;flex-shrink:0}.smc-day__number{font-size:.82rem;font-weight:500;color:#374151;width:24px;flex-shrink:0;text-align:center}.smc-day__hover-actions{display:flex;gap:3px;opacity:0;transition:opacity .15s}.smc-day:hover .smc-day__hover-actions{opacity:1}.smc-day__action-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;font-size:.9rem;background:none;border:1px solid var(--color-border, #e5e7eb);cursor:pointer;color:var(--color-text-muted, #6b7280);text-decoration:none;line-height:1;font-weight:700;transition:background .12s,color .12s,border-color .12s}.smc-day__action-btn:hover{background:var(--color-accent, #6366f1);color:#fff;border-color:var(--color-accent, #6366f1)}.smc-day__events{display:flex;flex-direction:column;gap:2px;flex:1;overflow:hidden}.smc-chip{font-size:.72rem;padding:2px 6px;border-radius:4px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:opacity .15s;flex-shrink:0}.smc-chip:hover{opacity:.85}.smc-chip--overdue{outline:2px solid #f59e0b}.smc-chip--more{background:#e5e7eb!important;color:#374151!important;font-style:italic}.smc-day__mobile-dot-row{display:none;gap:3px;justify-content:center;margin-top:3px;flex-shrink:0}.smc-day__dot{width:5px;height:5px;border-radius:50;flex-shrink:0}.smc-day--mobile-selected .smc-day__number{background:var(--color-accent, #6366f1);color:#fff;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.smc-day--today.smc-day--mobile-selected .smc-day__number{background:var(--color-accent, #6366f1)}.smc-mobile-events-panel{display:none}.smc-calendar--week{border:1px solid #e5e7eb;border-radius:12px;overflow:hidden}.smc-week-header{display:grid;grid-template-columns:60px repeat(7,1fr);border-bottom:1px solid #e5e7eb;background:#f8f9fa}.smc-week-header__time-col{padding:8px}.smc-week-header__day{padding:8px;text-align:center;border-left:1px solid #e5e7eb;position:relative}.smc-week-header__day-name{display:block;font-size:.75rem;color:#6b7280}.smc-week-header__day-num{display:inline-block;font-size:1rem;font-weight:600;width:30px;height:30px;line-height:30px;border-radius:50%;text-align:center}.smc-week-header__day-num--today{background:var(--color-primary, #6366f1);color:#fff}.smc-week-header__actions{display:flex;justify-content:center;gap:4px;margin-top:4px;opacity:0;transition:opacity .15s}.smc-week-header__day:hover .smc-week-header__actions{opacity:1}.smc-week-body{display:grid;grid-template-columns:60px repeat(7,1fr);height:600px;overflow-y:auto;position:relative}.smc-week-times{display:flex;flex-direction:column}.smc-week-time{height:60px;padding:2px 4px;font-size:.7rem;color:#9ca3af;border-bottom:1px solid #f3f4f6}.smc-week-col{position:relative;border-left:1px solid #e5e7eb;background:repeating-linear-gradient(to bottom,transparent 0px,transparent 59px,#f3f4f6 59px,#f3f4f6 60px)}.smc-week-event{position:absolute;left:2px;right:2px;min-height:20px;padding:2px 4px;border-radius:4px;font-size:.72rem;color:#fff;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.smc-week-event--overdue{outline:2px solid #f59e0b}.smc-week-event__time{font-size:.65rem;opacity:.85}.smc-calendar--day{border:1px solid #e5e7eb;border-radius:12px;overflow:hidden}.smc-day-header{padding:12px 16px;background:#f8f9fa;border-bottom:1px solid #e5e7eb;font-weight:600;display:flex;align-items:center;justify-content:space-between}.smc-day-header__actions{display:flex;gap:8px}.smc-day-body{display:grid;grid-template-columns:60px 1fr;height:600px;overflow-y:auto}.smc-day-col{position:relative;background:repeating-linear-gradient(to bottom,transparent 0px,transparent 59px,#f3f4f6 59px,#f3f4f6 60px)}.smc-overlay{position:fixed;inset:0;background:#00000059;z-index:200;backdrop-filter:blur(2px)}.smc-drawer{position:fixed;top:0;right:0;bottom:0;width:80%;background:var(--color-bg, #fff);z-index:201;box-shadow:-4px 0 24px #00000026;transform:translate(100%);transition:transform .25s ease;display:flex;flex-direction:column;overflow-y:auto}.smc-drawer--open{transform:translate(0)}.smc-drawer__loading{padding:40px;text-align:center;color:#6b7280}.smc-drawer__header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e5e7eb;flex-shrink:0}.smc-drawer__header-left{display:flex;align-items:center;gap:8px}.smc-drawer__close{background:none;border:none;font-size:1.1rem;cursor:pointer;padding:4px 8px;border-radius:4px;color:#6b7280}.smc-drawer__close:hover{background:#f3f4f6}.smc-drawer__platform-badge,.smc-drawer__status-badge{padding:3px 10px;border-radius:12px;font-size:.78rem;font-weight:600;color:#fff}.smc-drawer__overdue-banner{background:#fef3c7;color:#92400e;padding:10px 20px;font-size:.85rem;font-weight:500;border-bottom:1px solid #fde68a}.smc-drawer__section{padding:16px 20px;border-bottom:1px solid #f3f4f6}.smc-drawer__label{display:block;font-size:.78rem;font-weight:600;color:#6b7280;margin-bottom:6px;text-transform:uppercase;letter-spacing:.05em}.smc-drawer__event-title{font-size:1.3rem;font-weight:700;margin:0;cursor:pointer;display:flex;align-items:center;gap:6px}.smc-drawer__edit-hint{font-size:.8rem;color:#9ca3af;opacity:0;transition:opacity .15s}.smc-drawer__event-title:hover .smc-drawer__edit-hint{opacity:1}.smc-drawer__create-title{font-size:1.2rem;font-weight:700;margin:0}.smc-drawer__assignees{display:flex;flex-wrap:wrap;gap:6px}.smc-drawer__assignee-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:12px;font-size:.78rem;color:#1e40af}.smc-drawer__assignee-chip button{background:none;border:none;cursor:pointer;font-size:.7rem;color:#6b7280}.smc-drawer__attachments{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.smc-drawer__attachment{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;background:#f9fafb;border-radius:6px;border:1px solid #e5e7eb}.smc-drawer__attachment-name{font-size:.82rem;color:#111827;text-decoration:none}.smc-drawer__attachment-name:hover{text-decoration:underline}.smc-drawer__upload-zone{padding:10px;border:2px dashed #d1d5db;border-radius:8px}.smc-drawer__upload-label{cursor:pointer;font-size:.82rem;color:#6366f1;display:block;margin-bottom:8px}.smc-drawer__link-row{display:flex;gap:6px;flex-wrap:wrap}.smc-drawer__tags{display:flex;flex-wrap:wrap;gap:4px}.smc-drawer__tag{padding:2px 8px;background:#f3f4f6;border-radius:10px;font-size:.75rem;color:#374151}.smc-drawer__footer{display:flex;gap:8px;padding:16px 20px;margin-top:auto;border-top:1px solid #e5e7eb;flex-shrink:0;position:sticky;bottom:0;background:var(--color-bg, #fff);flex-wrap:wrap}.smc-drawer__form{display:flex;flex-direction:column;flex:1}.platform-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.platform-option{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 6px;border-radius:8px;cursor:pointer;border:2px solid var(--color-border, #e5e7eb);background:var(--color-bg, #fff);color:var(--color-text-muted, #6b7280);font-size:.72rem;transition:border-color .15s,background .15s,color .15s}.platform-option:hover:not(.platform-option--selected){border-color:#d1d5db;background:var(--color-hover, #f9fafb)}.platform-option--selected{border-color:var(--pcolor, var(--color-accent, #6366f1));background:var(--color-primary-soft, #eff6ff);color:var(--color-text, #111827);font-weight:600}.platform-option__icon{font-size:1.3rem}.platform-option__label{text-align:center;line-height:1.3}.assignee-list{display:flex;flex-wrap:wrap;gap:6px}.assignee-list__empty{font-size:.78rem;color:#9ca3af;margin:0}.assignee-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 4px;border-radius:20px;border:1px solid var(--color-border, #e5e7eb);background:var(--color-bg, #fff);color:var(--color-text-muted, #6b7280);font-size:.78rem;cursor:pointer;transition:border-color .15s,background .15s,color .15s}.assignee-chip:hover:not(.assignee-chip--selected){border-color:#d1d5db;background:var(--color-hover, #f9fafb)}.assignee-chip--selected{border-color:var(--color-accent, #6366f1);background:var(--color-primary-soft, #eff6ff);color:var(--color-accent, #6366f1);font-weight:600}.assignee-chip__avatar{width:22px;height:22px;border-radius:50%;background:var(--color-accent, #6366f1);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:700;flex-shrink:0}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:8px;font-size:.85rem;font-weight:500;cursor:pointer;border:none;transition:all .15s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{padding:5px 12px;font-size:.8rem}.btn-primary{background:var(--color-primary, #6366f1);color:#fff}.btn-primary:hover:not(:disabled){filter:brightness(1.1)}.btn-ghost{background:none;border:1px solid #e5e7eb;color:#374151}.btn-ghost:hover{background:#f3f4f6}.btn-success{background:#10b981;color:#fff}.btn-success:hover:not(:disabled){background:#059669}.btn-danger{background:#ef4444;color:#fff}.btn-danger:hover{background:#dc2626}.btn-icon{background:none;border:none;cursor:pointer;padding:2px 4px;color:#9ca3af}.btn-icon:hover{color:#ef4444}.form-input,.form-select,.form-textarea{width:100%;padding:8px 12px;border:1px solid #e5e7eb;border-radius:8px;font-size:.85rem;box-sizing:border-box;background:var(--color-bg, #fff);color:var(--color-text, #111827)}.form-input--sm{padding:5px 8px;font-size:.78rem}.form-textarea{resize:vertical}.form-error{font-size:.75rem;color:#ef4444;margin-top:4px;display:block}.error-msg{padding:10px;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#b91c1c;font-size:.82rem;margin:0 20px}@media (max-width: 768px){.smc-page{padding:12px}.smc-header__title{font-size:1.1rem}.smc-quick-access__body{grid-template-columns:1fr}.smc-quick-access__col:first-child{border-right:none;border-bottom:1px solid var(--color-border, #e5e7eb)}.smc-day{height:52px!important;padding:4px 2px}.smc-day__events{display:none}.smc-day__mobile-dot-row{display:flex}.smc-day__dot{border-radius:50%}.smc-day__hover-actions{opacity:1!important}.smc-day__action-btn{width:22px;height:22px;font-size:.8rem}.smc-calendar--week{overflow-x:auto}.smc-week-header,.smc-week-body{min-width:560px}.smc-toolbar{flex-direction:column;align-items:flex-start;gap:8px}.smc-toolbar__heading{font-size:.95rem;margin-left:0}.smc-drawer{width:100%}.smc-mobile-events-panel{display:block;margin-top:12px;border:1px solid var(--color-border, #e5e7eb);border-radius:12px;overflow:hidden;background:var(--color-bg, #fff)}.smc-mobile-events-panel__header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--color-surface, #f8f9fa);border-bottom:1px solid var(--color-border, #e5e7eb)}.smc-mobile-events-panel__date{font-size:.9rem;font-weight:600;color:#111827}.smc-mobile-events-panel__add-btn{font-size:.8rem;font-weight:600;color:var(--color-primary, #6366f1);background:none;border:1px solid var(--color-primary, #6366f1);border-radius:6px;padding:4px 10px;cursor:pointer;transition:background .15s,color .15s}.smc-mobile-events-panel__add-btn:hover{background:var(--color-primary, #6366f1);color:#fff}.smc-mobile-events-panel__empty{padding:16px;text-align:center;font-size:.82rem;color:#9ca3af;margin:0}.smc-mobile-event-item{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;border-bottom:1px solid #f3f4f6;transition:background .15s}.smc-mobile-event-item:last-child{border-bottom:none}.smc-mobile-event-item:hover{background:var(--color-hover, #f9fafb)}.smc-mobile-event-item__bar{width:4px;height:36px;border-radius:2px;flex-shrink:0}.smc-mobile-event-item__info{flex:1;min-width:0}.smc-mobile-event-item__title{display:block;font-size:.88rem;font-weight:600;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.smc-mobile-event-item__meta{font-size:.75rem;color:#6b7280;display:block}.smc-mobile-event-item__overdue{color:#f59e0b;font-weight:600}.smc-mobile-event-item__status{padding:2px 8px;border-radius:10px;font-size:.7rem;font-weight:600;color:#fff;white-space:nowrap;flex-shrink:0}.smc-drawer__link-row{flex-direction:column}.platform-option{padding:8px 4px}}
3
+ `],encapsulation:3,changeDetection:0})}};export{ke as BloomsSocialMediaCalendarComponent};
@@ -0,0 +1,3 @@
1
+ import{a as X}from"./chunk-7NQRVCWL.js";import{c as U,e as J,h as Y,s as G}from"./chunk-VQEBAAHK.js";import{a as K}from"./chunk-HLIQJSA7.js";import"./chunk-SPLW6L45.js";import{$a as S,Ca as q,Cb as B,D as z,Ga as V,Ha as b,Ia as _,J as m,K as h,La as g,Na as T,Oa as w,Pa as C,Qa as i,Ra as o,S as M,Sa as I,Ta as f,Ua as s,V as A,Va as p,W as v,Wa as a,Xa as u,Ya as x,Za as P,a as j,ab as D,bb as E,eb as y,fb as k,hb as W,nb as N,oa as $,pa as n,sb as Q,wb as R,xa as O,xb as H}from"./chunk-WQW7QCHM.js";var ee=(c,r)=>r._id,te=(c,r)=>r.platform;function ie(c,r){if(c&1){let e=f();i(0,"button",51),s("click",function(){let l=m(e).$implicit,d=p();return h(d.setTierFilter(d.tierFilter===l?"":l))}),i(1,"span",11),a(2),o(),i(3,"span",12),a(4),y(5,"titlecase"),o()()}if(c&2){let e=r.$implicit,t=p();b("--sc-accent",t.getTierColor(e).accent)("--sc-bg",t.getTierColor(e).bg)("--sc-text",t.getTierColor(e).text),_("ihq-stat-card--active",t.tierFilter===e),n(2),u(t.tierCount(e)),n(2),u(k(5,10,e))}}function oe(c,r){if(c&1){let e=f();i(0,"button",52),s("click",function(){m(e);let l=p();return l.searchQuery="",h(l.onSearch())}),a(1,"\u2715"),o()}}function re(c,r){if(c&1&&I(0,"span",53),c&2){let e=p();b("background",e.getTierAccent(e.tierFilter))}}function ne(c,r){if(c&1){let e=f();i(0,"button",25),s("click",function(){let l=m(e).$implicit,d=p();return h(d.setTierFilter(l))}),I(1,"span",54),a(2),y(3,"titlecase"),o()}if(c&2){let e=r.$implicit,t=p();_("ihq-dd__opt--on",t.tierFilter===e),n(),b("background",t.getTierColor(e).accent),n(),x(" ",k(3,5,e)," ")}}function ae(c,r){if(c&1){let e=f();i(0,"button",25),s("click",function(){let l=m(e).$implicit,d=p();return h(d.setPlatformFilter(l))}),a(1),y(2,"titlecase"),o()}if(c&2){let e=r.$implicit,t=p();_("ihq-dd__opt--on",t.platformFilter===e),n(),P(" ",t.getPlatformEmoji(e)," ",k(2,4,e)," ")}}function le(c,r){c&1&&(i(0,"div",31)(1,"div",55),I(2,"span")(3,"span")(4,"span"),o(),i(5,"span"),a(6,"Loading creators\u2026"),o()())}function ce(c,r){if(c&1){let e=f();i(0,"button",8),s("click",function(){m(e);let l=p(2);return h(l.openAddDrawer())}),a(1,"+ Add First Creator"),o()}}function de(c,r){if(c&1&&(i(0,"div",32)(1,"div",56),a(2,"\u{1F31F}"),o(),i(3,"h2",57),a(4),o(),i(5,"p",58),a(6),o(),q(7,ce,2,0,"button",59),o()),c&2){let e=p();n(4),x(" ",e.searchQuery||e.tierFilter||e.platformFilter?"No results":"No creators yet"," "),n(2),x(" ",e.searchQuery||e.tierFilter||e.platformFilter?"Try adjusting your filters or search term.":"Start building your influencer roster by adding the first creator."," "),n(),g(!e.searchQuery&&!e.tierFilter&&!e.platformFilter?7:-1)}}function se(c,r){if(c&1&&(i(0,"div",74)(1,"span"),a(2),o(),i(3,"span",80),a(4),o()()),c&2){let e=r.$implicit,t=p(4);n(2),u(t.getPlatformEmoji(e.platform)),n(2),x("@",e.handle||"\u2014","")}}function pe(c,r){c&1&&(i(0,"span",75),a(1,"No platforms added"),o())}function me(c,r){if(c&1){let e=f();i(0,"article",64),s("click",function(){let l=m(e).$implicit,d=p(3);return h(d.goToDetail(l._id))}),I(1,"div",65),i(2,"div",66)(3,"div",67)(4,"div",68),a(5),o(),i(6,"div",69)(7,"div",70),a(8),o(),i(9,"span",71),a(10),y(11,"titlecase"),o()(),i(12,"button",72),s("click",function(l){let d=m(e).$implicit;return p(3).openEditDrawer(d),h(l.stopPropagation())}),a(13,"\u270F\uFE0F"),o()(),i(14,"div",73),w(15,se,5,2,"div",74,te),q(17,pe,2,0,"span",75),o(),i(18,"div",76),I(19,"span",77),i(20,"span",78),a(21),o(),i(22,"button",79),s("click",function(l){let d=m(e).$implicit;return p(3).goToDetail(d._id),h(l.stopPropagation())}),a(23," Open \u2192 "),o()()()()}if(c&2){let e=r.$implicit,t=p(3);n(),b("background",t.getTierColor(e.tier).accent),n(3),b("background",t.getTierColor(e.tier).bg)("color",t.getTierColor(e.tier).text),n(),x(" ",t.getInitials(e.name)," "),n(2),V("appTooltip",e.name),n(),u(e.name),n(),b("background",t.getTierColor(e.tier).bg)("color",t.getTierColor(e.tier).text)("border-color",t.getTierColor(e.tier).accent),n(),x(" ",k(11,20,e.tier)," "),n(5),C(e.platforms),n(2),g(e.platforms.length===0?17:-1),n(2),b("background",t.getTierColor(e.tier).accent),n(2),u(t.getLastSyncLabel(e))}}function he(c,r){if(c&1){let e=f();i(0,"article",81),s("click",function(){m(e);let l=p(3);return h(l.loadMore())}),i(1,"span"),a(2,"Load more \u2193"),o()()}}function _e(c,r){if(c&1&&(i(0,"div",60),w(1,me,24,22,"article",62,ee),q(3,he,3,0,"article",63),o()),c&2){let e=p(2);n(),C(e.influencers()),n(2),g(e.hasMore()?3:-1)}}function ue(c,r){if(c&1&&(i(0,"span",99),a(1),o()),c&2){let e=r.$implicit,t=p(4);n(),P("",t.getPlatformEmoji(e.platform)," @",e.handle||"\u2014","")}}function fe(c,r){c&1&&(i(0,"span",100),a(1,"\u2014"),o())}function xe(c,r){if(c&1){let e=f();i(0,"tr",90),s("click",function(){let l=m(e).$implicit,d=p(3);return h(d.goToDetail(l._id))}),i(1,"td",91)(2,"div",92)(3,"div",93),a(4),o(),i(5,"div")(6,"div",94),a(7),o(),i(8,"div",95),a(9),y(10,"slice"),o()()()(),i(11,"td",96)(12,"span",71),a(13),y(14,"titlecase"),o()(),i(15,"td",97)(16,"div",98),w(17,ue,2,2,"span",99,te),q(19,fe,2,0,"span",100),o()(),i(20,"td",101),a(21),o(),i(22,"td",102),s("click",function(l){return m(e),h(l.stopPropagation())}),i(23,"div",103)(24,"button",104),s("click",function(){let l=m(e).$implicit,d=p(3);return h(d.goToDetail(l._id))}),a(25,"View \u2192"),o(),i(26,"button",105),s("click",function(){let l=m(e).$implicit,d=p(3);return h(d.openEditDrawer(l))}),a(27,"Edit"),o()()()()}if(c&2){let e=r.$implicit,t=p(3);n(3),b("background",t.getTierColor(e.tier).bg)("color",t.getTierColor(e.tier).text),n(),x(" ",t.getInitials(e.name)," "),n(3),u(e.name),n(2),x("",W(10,16,e._id,0,8),"\u2026"),n(3),b("background",t.getTierColor(e.tier).bg)("color",t.getTierColor(e.tier).text)("border-color",t.getTierColor(e.tier).accent),n(),x(" ",k(14,20,e.tier)," "),n(4),C(e.platforms),n(2),g(e.platforms.length===0?19:-1),n(2),u(t.getLastSyncLabel(e))}}function be(c,r){if(c&1){let e=f();i(0,"div",89)(1,"button",106),s("click",function(){m(e);let l=p(3);return h(l.loadMore())}),a(2,"Load more \u2193"),o()()}}function ge(c,r){if(c&1&&(i(0,"div",61)(1,"table",82)(2,"thead")(3,"tr")(4,"th",83),a(5,"Creator"),o(),i(6,"th",84),a(7,"Tier"),o(),i(8,"th",85),a(9,"Platforms"),o(),i(10,"th",86),a(11,"Last Activity"),o(),I(12,"th",87),o()(),i(13,"tbody"),w(14,xe,28,22,"tr",88,ee),o()(),q(16,be,3,0,"div",89),o()),c&2){let e=p(2);n(14),C(e.influencers()),n(2),g(e.hasMore()?16:-1)}}function ve(c,r){if(c&1&&q(0,_e,4,1,"div",60)(1,ge,17,1,"div",61),c&2){let e=p();g(e.viewMode()==="grid"?0:-1),n(),g(e.viewMode()==="table"?1:-1)}}function qe(c,r){if(c&1){let e=f();i(0,"button",107),s("click",function(){let l=m(e).$implicit,d=p();return h(d.form.tier=l)}),I(1,"span",108),a(2),y(3,"titlecase"),o()}if(c&2){let e=r.$implicit,t=p();b("--to-bg",t.getTierColor(e).bg)("--to-text",t.getTierColor(e).text)("--to-accent",t.getTierColor(e).accent),_("ihq-tier-opt--on",t.form.tier===e),n(2),x(" ",k(3,9,e)," ")}}function we(c,r){if(c&1){let e=f();i(0,"div",47)(1,"span",109),a(2),o(),i(3,"span",110),a(4),y(5,"titlecase"),o(),i(6,"input",111),E("ngModelChange",function(l){let d=m(e).$implicit,F=p();return D(F.form.platformInputs[d],l)||(F.form.platformInputs[d]=l),h(l)}),o()()}if(c&2){let e=r.$implicit,t=p();n(2),u(t.getPlatformEmoji(e)),n(2),u(k(5,3,e)),n(2),S("ngModel",t.form.platformInputs[e])}}var L={nano:{bg:"#ede9fe",text:"#5b21b6",accent:"#7c3aed"},micro:{bg:"#d1fae5",text:"#065f46",accent:"#059669"},macro:{bg:"#fef3c7",text:"#92400e",accent:"#d97706"},mega:{bg:"#fee2e2",text:"#991b1b",accent:"#E84855"}},Ce={instagram:"\u{1F4F8}",facebook:"\u{1F44D}",youtube:"\u{1F3AC}"},Z=class c{constructor(){this.svc=z(X);this.host=z(A);this.projectId="";this.bloomsnavigate=new M;this.bloomserror=new M;this.needsSignIn=N(()=>B.config()!==null&&B.session()===null);this.influencers=v([]);this.loading=v(!1);this.saving=v(!1);this.drawerOpen=v(!1);this.editMode=v(!1);this.hasMore=v(!1);this.totalCount=v(0);this.viewMode=v("grid");this.openDd=v("");this.searchQuery="";this.tierFilter="";this.platformFilter="";this.searchFocus=!1;this.cursor=null;this.tiers=["nano","micro","macro","mega"];this.platformList=["instagram","facebook","youtube"];this.form=this.emptyForm()}go(r,e={}){let t={feature:"influencers",view:r,params:e};this.bloomsnavigate.emit(t),B.emit(j({type:"navigate"},t))}onDocClick(){this.openDd.set("")}ngOnInit(){this.projectId||(this.projectId=B.project()?.id??""),this.loadInfluencers(!0)}emptyForm(){return{name:"",tier:"micro",notes:"",platformInputs:{instagram:"",facebook:"",youtube:""},editingId:null}}loadInfluencers(r=!1){r&&(this.cursor=null,this.influencers.set([])),this.loading.set(!0),this.svc.listInfluencers(this.projectId,{tier:this.tierFilter||void 0,platform:this.platformFilter||void 0,search:this.searchQuery||void 0,cursor:this.cursor??void 0,limit:20}).subscribe({next:e=>{let t=e.data;this.influencers.update(l=>r?t.influencers:[...l,...t.influencers]),this.hasMore.set(t.hasMore),this.cursor=t.nextCursor,this.totalCount.set(this.influencers().length),this.loading.set(!1)},error:()=>this.loading.set(!1)})}onSearch(){this.loadInfluencers(!0)}loadMore(){this.loadInfluencers(!1)}toggleDd(r,e){e.stopPropagation(),this.openDd.update(t=>t===r?"":r)}setTierFilter(r){this.tierFilter=r,this.openDd.set(""),this.loadInfluencers(!0)}setPlatformFilter(r){this.platformFilter=r,this.openDd.set(""),this.loadInfluencers(!0)}tierCount(r){return this.influencers().filter(e=>e.tier===r).length}openAddDrawer(){this.form=this.emptyForm(),this.editMode.set(!1),this.drawerOpen.set(!0)}openEditDrawer(r){this.form={name:r.name,tier:r.tier,notes:r.notes??"",platformInputs:{instagram:r.platforms.find(e=>e.platform==="instagram")?.handle??"",facebook:r.platforms.find(e=>e.platform==="facebook")?.handle??"",youtube:r.platforms.find(e=>e.platform==="youtube")?.handle??""},editingId:r._id},this.editMode.set(!0),this.drawerOpen.set(!0)}closeDrawer(){this.drawerOpen.set(!1)}saveInfluencer(){if(!this.form.name.trim()||!this.form.tier)return;this.saving.set(!0);let r=this.platformList.filter(t=>this.form.platformInputs[t]?.trim()).map(t=>({platform:t,handle:this.form.platformInputs[t].replace(/^@/,"").trim()})),e={name:this.form.name.trim(),tier:this.form.tier,notes:this.form.notes.trim()||void 0,platforms:r};this.form.editingId?this.svc.updateInfluencer(this.form.editingId,{name:e.name,tier:e.tier,notes:e.notes}).subscribe({next:()=>{this.saving.set(!1),this.closeDrawer(),this.loadInfluencers(!0)},error:()=>this.saving.set(!1)}):this.svc.createInfluencer(this.projectId,e).subscribe({next:()=>{this.saving.set(!1),this.closeDrawer(),this.loadInfluencers(!0)},error:()=>this.saving.set(!1)})}goToDetail(r){this.go("detail",{influencerId:r})}goToSources(){this.go("data-sources")}getTierColor(r){return L[r]??L.micro}getTierAccent(r){return L[r]?.accent??"#ccc"}getPlatformEmoji(r){return Ce[r]??"\u{1F310}"}getPlatformLabel(r){return{instagram:"\u{1F4F8} Instagram",facebook:"\u{1F44D} Facebook",youtube:"\u{1F3AC} YouTube"}[r]??r}getInitials(r){return r.split(" ").slice(0,2).map(e=>e[0]).join("").toUpperCase()}getLastSyncLabel(r){let e=r.updatedAt??r.createdAt;if(!e)return"No data";let t=Date.now()-new Date(e).getTime(),l=Math.floor(t/36e5);return l<1?"Just now":l<24?`${l}h ago`:`${Math.floor(l/24)}d ago`}static{this.\u0275fac=function(e){return new(e||c)}}static{this.\u0275cmp=O({type:c,selectors:[["blooms-influencer-dashboard"]],hostBindings:function(e,t){e&1&&s("click",function(){return t.onDocClick()},!1,$)},inputs:{projectId:"projectId"},outputs:{bloomsnavigate:"bloomsnavigate",bloomserror:"bloomserror"},decls:108,vars:37,consts:[[1,"ihq-shell"],[1,"ihq-header"],[1,"ihq-header__left"],[1,"ihq-header__icon"],[1,"ihq-header__title"],[1,"ihq-header__sub"],[1,"ihq-header__actions"],[1,"ihq-btn","ihq-btn--ghost",3,"click"],[1,"ihq-btn","ihq-btn--primary",3,"click"],[1,"ihq-stats"],[1,"ihq-stat-card","ihq-stat-card--total",3,"click"],[1,"ihq-stat-card__num"],[1,"ihq-stat-card__label"],[1,"ihq-stat-card",3,"ihq-stat-card--active","--sc-accent","--sc-bg","--sc-text"],[1,"ihq-toolbar"],[1,"ihq-search"],[1,"ihq-search__icon"],["type","text","placeholder","Search creators\u2026",1,"ihq-search__input",3,"ngModelChange","focus","blur","ngModel"],["appTooltip","Clear search",1,"ihq-search__clear"],[1,"ihq-toolbar__filters"],[1,"ihq-dd"],[1,"ihq-dd__btn",3,"click"],[1,"ihq-dd__dot",3,"background"],[1,"ihq-dd__arrow"],[1,"ihq-dd__menu",3,"click"],[1,"ihq-dd__opt",3,"click"],[1,"ihq-dd__opt",3,"ihq-dd__opt--on"],[1,"ihq-count"],[1,"ihq-view-seg"],["appTooltip","Grid view",1,"ihq-view-seg__btn",3,"click"],["appTooltip","List view",1,"ihq-view-seg__btn",3,"click"],[1,"ihq-state"],[1,"ihq-empty"],[1,"ihq-backdrop",3,"click"],[1,"ihq-drawer"],[1,"ihq-drawer__head"],[1,"ihq-drawer__eyebrow"],[1,"ihq-drawer__title"],["appTooltip","Close",1,"ihq-drawer__x",3,"click"],[1,"ihq-drawer__body"],[1,"ihq-field"],[1,"ihq-label"],[1,"ihq-req"],["type","text","placeholder","Full creator name",1,"ihq-input",3,"ngModelChange","ngModel"],[1,"ihq-tier-grid"],["type","button",1,"ihq-tier-opt",3,"ihq-tier-opt--on","--to-bg","--to-text","--to-accent"],[1,"ihq-pstack"],[1,"ihq-prow"],["rows","4","placeholder","Brand fit, contact info, campaign notes\u2026",1,"ihq-textarea",3,"ngModelChange","ngModel"],[1,"ihq-drawer__foot"],[1,"ihq-btn","ihq-btn--primary",3,"click","disabled"],[1,"ihq-stat-card",3,"click"],["appTooltip","Clear search",1,"ihq-search__clear",3,"click"],[1,"ihq-dd__dot"],[1,"ihq-dd__opt-dot"],[1,"ihq-dots"],[1,"ihq-empty__icon"],[1,"ihq-empty__title"],[1,"ihq-empty__sub"],[1,"ihq-btn","ihq-btn--primary"],[1,"ihq-grid"],[1,"ihq-tbl-wrap"],[1,"ihq-card"],[1,"ihq-card","ihq-card--load"],[1,"ihq-card",3,"click"],[1,"ihq-card__accent-bar"],[1,"ihq-card__inner"],[1,"ihq-card__head"],[1,"ihq-card__avatar"],[1,"ihq-card__meta"],[1,"ihq-card__name",3,"appTooltip"],[1,"ihq-tier-badge"],["appTooltip","Edit creator",1,"ihq-card__edit-btn",3,"click"],[1,"ihq-card__platforms"],[1,"ihq-card__prow"],[1,"ihq-card__nop"],[1,"ihq-card__foot"],[1,"ihq-card__dot"],[1,"ihq-card__sync"],[1,"ihq-card__open-btn",3,"click"],[1,"ihq-card__handle"],[1,"ihq-card","ihq-card--load",3,"click"],[1,"ihq-tbl"],[1,"ihq-th"],[1,"ihq-th","ihq-th--tier"],[1,"ihq-th","ihq-th--platforms"],[1,"ihq-th","ihq-th--activity"],[1,"ihq-th","ihq-th--actions"],[1,"ihq-tr"],[1,"ihq-tbl-more"],[1,"ihq-tr",3,"click"],[1,"ihq-td"],[1,"ihq-tcreator"],[1,"ihq-tavatar"],[1,"ihq-tname"],[1,"ihq-tid"],[1,"ihq-td","ihq-td--tier"],[1,"ihq-td","ihq-td--platforms"],[1,"ihq-tplatforms"],[1,"ihq-tpchip"],[1,"ihq-tno-p"],[1,"ihq-td","ihq-td--muted","ihq-td--activity"],[1,"ihq-td","ihq-td--actions",3,"click"],[1,"ihq-tactions"],[1,"ihq-tact","ihq-tact--view",3,"click"],[1,"ihq-tact","ihq-tact--edit",3,"click"],[1,"ihq-btn","ihq-btn--outline",3,"click"],["type","button",1,"ihq-tier-opt",3,"click"],[1,"ihq-tier-opt__dot"],[1,"ihq-prow__icon"],[1,"ihq-prow__label"],["type","text","placeholder","URL or @handle",1,"ihq-pinput",3,"ngModelChange","ngModel"]],template:function(e,t){e&1&&(i(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3),a(4,"\u{1F31F}"),o(),i(5,"div")(6,"h1",4),a(7,"Influencer HQ"),o(),i(8,"p",5),a(9,"Creator roster & campaign management"),o()()(),i(10,"div",6)(11,"button",7),s("click",function(){return t.goToSources()}),i(12,"span"),a(13,"\u26A1"),o(),a(14," Sources "),o(),i(15,"button",8),s("click",function(){return t.openAddDrawer()}),i(16,"span"),a(17,"+"),o(),a(18," Add Creator "),o()()(),i(19,"div",9)(20,"button",10),s("click",function(){return t.setTierFilter("")}),i(21,"span",11),a(22),o(),i(23,"span",12),a(24,"All Creators"),o()(),w(25,ie,6,12,"button",13,T),o(),i(27,"div",14)(28,"div",15)(29,"span",16),a(30,"\u{1F50D}"),o(),i(31,"input",17),E("ngModelChange",function(d){return D(t.searchQuery,d)||(t.searchQuery=d),d}),s("ngModelChange",function(){return t.onSearch()})("focus",function(){return t.searchFocus=!0})("blur",function(){return t.searchFocus=!1}),o(),q(32,oe,2,0,"button",18),o(),i(33,"div",19)(34,"div",20)(35,"button",21),s("click",function(d){return t.toggleDd("tier",d)}),q(36,re,1,2,"span",22),i(37,"span"),a(38),y(39,"titlecase"),o(),i(40,"span",23),a(41,"\u25BE"),o()(),i(42,"div",24),s("click",function(d){return d.stopPropagation()}),i(43,"button",25),s("click",function(){return t.setTierFilter("")}),a(44," All Tiers "),o(),w(45,ne,4,7,"button",26,T),o()(),i(47,"div",20)(48,"button",21),s("click",function(d){return t.toggleDd("platform",d)}),i(49,"span"),a(50),o(),i(51,"span",23),a(52,"\u25BE"),o()(),i(53,"div",24),s("click",function(d){return d.stopPropagation()}),i(54,"button",25),s("click",function(){return t.setPlatformFilter("")}),a(55," All Platforms "),o(),w(56,ae,3,6,"button",26,T),o()(),i(58,"span",27),a(59),o(),i(60,"div",28)(61,"button",29),s("click",function(){return t.viewMode.set("grid")}),a(62,"\u229E"),o(),i(63,"button",30),s("click",function(){return t.viewMode.set("table")}),a(64,"\u2630"),o()()()(),q(65,le,7,0,"div",31)(66,de,8,3,"div",32)(67,ve,2,2),i(68,"div",33),s("click",function(){return t.closeDrawer()}),o(),i(69,"aside",34)(70,"div",35)(71,"div")(72,"div",36),a(73),o(),i(74,"h2",37),a(75),o()(),i(76,"button",38),s("click",function(){return t.closeDrawer()}),a(77,"\u2715"),o()(),i(78,"div",39)(79,"div",40)(80,"label",41),a(81,"Name "),i(82,"span",42),a(83,"*"),o()(),i(84,"input",43),E("ngModelChange",function(d){return D(t.form.name,d)||(t.form.name=d),d}),o()(),i(85,"div",40)(86,"label",41),a(87,"Tier "),i(88,"span",42),a(89,"*"),o()(),i(90,"div",44),w(91,qe,4,11,"button",45,T),o()(),i(93,"div",40)(94,"label",41),a(95,"Platform Handles"),o(),i(96,"div",46),w(97,we,7,5,"div",47,T),o()(),i(99,"div",40)(100,"label",41),a(101,"Notes"),o(),i(102,"textarea",48),E("ngModelChange",function(d){return D(t.form.notes,d)||(t.form.notes=d),d}),o()()(),i(103,"div",49)(104,"button",7),s("click",function(){return t.closeDrawer()}),a(105,"Cancel"),o(),i(106,"button",50),s("click",function(){return t.saveInfluencer()}),a(107),o()()()()),e&2&&(n(20),_("ihq-stat-card--active",!t.tierFilter&&!t.platformFilter),n(2),u(t.totalCount()),n(3),C(t.tiers),n(3),_("ihq-search--focus",t.searchFocus),n(3),S("ngModel",t.searchQuery),n(),g(t.searchQuery?32:-1),n(2),_("ihq-dd--open",t.openDd()==="tier"),n(2),g(t.tierFilter?36:-1),n(2),u(t.tierFilter?k(39,35,t.tierFilter):"All Tiers"),n(5),_("ihq-dd__opt--on",!t.tierFilter),n(2),C(t.tiers),n(2),_("ihq-dd--open",t.openDd()==="platform"),n(3),u(t.platformFilter?t.getPlatformLabel(t.platformFilter):"All Platforms"),n(4),_("ihq-dd__opt--on",!t.platformFilter),n(2),C(t.platformList),n(3),P("",t.totalCount()," result",t.totalCount()!==1?"s":"",""),n(2),_("ihq-view-seg__btn--on",t.viewMode()==="grid"),n(2),_("ihq-view-seg__btn--on",t.viewMode()==="table"),n(2),g(t.loading()?65:t.influencers().length===0?66:67),n(3),_("ihq-backdrop--on",t.drawerOpen()),n(),_("ihq-drawer--open",t.drawerOpen()),n(4),u(t.editMode()?"EDIT":"NEW"),n(2),u(t.editMode()?t.form.name||"Edit Creator":"Add Creator"),n(9),S("ngModel",t.form.name),n(7),C(t.tiers),n(6),C(t.platformList),n(5),S("ngModel",t.form.notes),n(4),V("disabled",t.saving()),n(),x(" ",t.saving()?"Saving\u2026":t.editMode()?"Update Creator":"Create Creator"," "))},dependencies:[H,R,Q,G,U,J,Y,K],styles:[`@charset "UTF-8";:host{--color-text: var(--color-text, #5d5f71);--color-text-muted: var(--color-text-muted, #9395a5);--color-bg: var(--color-bg, #f7f5fb);--color-card-bg: var(--color-card-bg, #ffffff);--color-border: var(--color-border, #ede9f6);--color-hover: var(--color-hover, #f5f2fb);--color-accent: var(--color-accent, #e84855);--radius-sm: var(--radius-sm, 6px);--radius-md: var(--radius-md, 10px);--radius-lg: var(--radius-lg, 16px);display:block;font-family:var(--font-sans, "Poppins", system-ui, -apple-system, sans-serif);color:var(--color-text)}:host>*{letter-spacing:normal;word-spacing:normal;line-height:1.5;text-transform:none;text-indent:0;font-style:normal;font-weight:400;font-variant:normal;text-align:left;white-space:normal}*,*:before,*:after{box-sizing:border-box}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:var(--radius-md);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,box-shadow .15s,opacity .15s;text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-sm{padding:6px 12px;font-size:12px}.btn-primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.btn-primary:hover:not(:disabled){background:#d13d4a;border-color:#d13d4a;box-shadow:0 2px 8px color-mix(in srgb,var(--color-accent) 30%,transparent)}.btn-outline{background:transparent;color:var(--color-text);border-color:var(--color-border)}.btn-outline:hover:not(:disabled){background:var(--color-hover);border-color:#d5d0e4}.btn-ghost{background:transparent;color:var(--color-text-muted);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--color-hover);color:var(--color-text)}
2
+ `,`@charset "UTF-8";.ihq-shell{padding:24px;font-family:var(--font-sans);position:relative;min-height:100%;max-width:1280px}.ihq-header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}.ihq-header__left{display:flex;align-items:center;gap:12px}.ihq-header__icon{font-size:28px;line-height:1;flex-shrink:0}.ihq-header__title{font-size:20px;font-weight:700;color:var(--color-text);margin:0 0 2px}.ihq-header__sub{font-size:12px;color:var(--color-text-muted);margin:0}.ihq-header__actions{display:flex;gap:8px;flex-shrink:0}.ihq-stats{display:flex;gap:8px;margin-bottom:16px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.ihq-stats::-webkit-scrollbar{display:none}.ihq-stat-card{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 20px;border-radius:10px;border:1.5px solid var(--color-border);background:var(--color-card-bg);cursor:pointer;transition:border-color .15s,box-shadow .15s,background .15s;min-width:72px}.ihq-stat-card:hover{border-color:var(--sc-accent, var(--color-accent))}.ihq-stat-card--total:hover{border-color:var(--color-accent)}.ihq-stat-card--active.ihq-stat-card--total{background:color-mix(in srgb,var(--color-accent) 10%,var(--color-card-bg));border-color:var(--color-accent)}.ihq-stat-card--active:not(.ihq-stat-card--total){background:var(--sc-bg);border-color:var(--sc-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--sc-accent) 18%,transparent)}.ihq-stat-card__num{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--sc-accent, var(--color-text));line-height:1}.ihq-stat-card--total .ihq-stat-card__num{color:var(--color-text)}.ihq-stat-card--active.ihq-stat-card--total .ihq-stat-card__num{color:var(--color-accent)}.ihq-stat-card__label{font-size:10px;font-weight:600;color:var(--color-text-muted);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.ihq-stat-card--active:not(.ihq-stat-card--total) .ihq-stat-card__label{color:var(--sc-text)}.ihq-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:16px}.ihq-toolbar__filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1}.ihq-search{flex:1;min-width:180px;display:flex;align-items:center;gap:8px;background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:8px;padding:0 10px;transition:border-color .15s}.ihq-search--focus,.ihq-search:focus-within{border-color:var(--color-accent)}.ihq-search__icon{font-size:13px;color:var(--color-text-muted);flex-shrink:0}.ihq-search__input{flex:1;border:none;background:none;padding:8px 0;font-family:var(--font-sans);font-size:13px;color:var(--color-text);outline:none;min-width:0}.ihq-search__input::placeholder{color:var(--color-text-muted)}.ihq-search__clear{background:none;border:none;color:var(--color-text-muted);cursor:pointer;font-size:11px;padding:2px 4px;border-radius:4px}.ihq-search__clear:hover{background:var(--color-hover)}.ihq-count{font-size:12px;color:var(--color-text-muted);white-space:nowrap;font-variant-numeric:tabular-nums}.ihq-dd{position:relative}.ihq-dd__btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-card-bg);font-family:var(--font-sans);font-size:13px;cursor:pointer;color:var(--color-text);white-space:nowrap;transition:border-color .15s}.ihq-dd__btn:hover,.ihq-dd--open .ihq-dd__btn{border-color:var(--color-accent)}.ihq-dd__dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.ihq-dd__arrow{font-size:10px;color:var(--color-text-muted);transition:transform .15s}.ihq-dd--open .ihq-dd__arrow{transform:rotate(180deg)}.ihq-dd__menu{display:none;position:absolute;top:calc(100% + 4px);left:0;min-width:160px;background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:10px;box-shadow:0 8px 24px #0000001f;z-index:100;overflow:hidden}.ihq-dd--open .ihq-dd__menu{display:block}.ihq-dd__opt{display:flex;align-items:center;gap:8px;width:100%;padding:9px 14px;background:none;border:none;text-align:left;font-family:var(--font-sans);font-size:13px;cursor:pointer;color:var(--color-text);transition:background .1s}.ihq-dd__opt:hover{background:var(--color-hover)}.ihq-dd__opt--on{font-weight:600;background:var(--color-hover)}.ihq-dd__opt-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.ihq-view-seg{display:flex;border:1px solid var(--color-border);border-radius:8px;overflow:hidden}.ihq-view-seg__btn{padding:7px 10px;background:none;border:none;font-size:14px;cursor:pointer;color:var(--color-text-muted);transition:background .15s,color .15s}.ihq-view-seg__btn--on{background:var(--color-accent);color:#fff}.ihq-btn{display:inline-flex;align-items:center;gap:5px;padding:8px 14px;border-radius:8px;font-family:var(--font-sans);font-size:13px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:all .15s;white-space:nowrap}.ihq-btn:disabled{opacity:.5;cursor:not-allowed}.ihq-btn--primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.ihq-btn--primary:hover:not(:disabled){box-shadow:0 3px 10px #e848554d}.ihq-btn--outline{background:transparent;border-color:var(--color-border);color:var(--color-text)}.ihq-btn--outline:hover{border-color:var(--color-accent)}.ihq-btn--ghost{background:transparent;color:var(--color-text-muted);border-color:var(--color-border)}.ihq-btn--ghost:hover{background:var(--color-hover);color:var(--color-text)}.ihq-state{display:flex;align-items:center;gap:12px;padding:60px 24px;color:var(--color-text-muted);font-size:14px}.ihq-dots{display:flex;gap:4px}.ihq-dots span{width:7px;height:7px;border-radius:50%;background:var(--color-accent);animation:ihq-blink 1.2s infinite both}.ihq-dots span:nth-child(2){animation-delay:.2s}.ihq-dots span:nth-child(3){animation-delay:.4s}@keyframes ihq-blink{0%,80%,to{opacity:.15}40%{opacity:1}}.ihq-empty{text-align:center;padding:64px 24px}.ihq-empty__icon{font-size:40px;margin-bottom:16px}.ihq-empty__title{font-size:18px;font-weight:700;color:var(--color-text);margin:0 0 8px}.ihq-empty__sub{font-size:13px;color:var(--color-text-muted);max-width:360px;margin:0 auto 24px}.ihq-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.ihq-card{position:relative;background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:10px;overflow:hidden;cursor:pointer;transition:box-shadow .2s,border-color .2s,transform .15s}.ihq-card:hover{box-shadow:0 4px 20px #0000001a;border-color:color-mix(in srgb,var(--color-border) 50%,var(--color-accent));transform:translateY(-1px)}.ihq-card__accent-bar{height:3px;width:100%}.ihq-card__inner{padding:14px}.ihq-card__head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.ihq-card__avatar{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;flex-shrink:0}.ihq-card__meta{flex:1;min-width:0}.ihq-card__name{font-size:14px;font-weight:600;color:var(--color-text);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ihq-tier-badge{display:inline-block;font-size:10px;font-weight:600;letter-spacing:.04em;padding:2px 8px;border-radius:20px;border:1px solid transparent}.ihq-card__edit-btn{background:none;border:1px solid var(--color-border);border-radius:6px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px;flex-shrink:0;opacity:0;transition:opacity .15s,background .1s}.ihq-card:hover .ihq-card__edit-btn{opacity:1}.ihq-card__edit-btn:hover{background:var(--color-hover)}.ihq-card__platforms{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;min-height:32px}.ihq-card__prow{display:flex;align-items:center;gap:6px;font-size:12px}.ihq-card__handle{color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ihq-card__nop{font-size:11px;color:var(--color-text-muted);font-style:italic}.ihq-card__foot{display:flex;align-items:center;gap:6px;padding-top:10px;border-top:1px solid var(--color-border)}.ihq-card__dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;opacity:.7}.ihq-card__sync{flex:1;font-size:11px;color:var(--color-text-muted)}.ihq-card__open-btn{font-size:11px;font-weight:600;color:var(--color-accent);background:none;border:none;cursor:pointer;padding:2px 6px;border-radius:4px;opacity:0;transition:opacity .15s,background .1s}.ihq-card:hover .ihq-card__open-btn{opacity:1}.ihq-card__open-btn:hover{background:color-mix(in srgb,var(--color-accent) 10%,transparent)}.ihq-card--load{display:flex;align-items:center;justify-content:center;min-height:160px;border-style:dashed;color:var(--color-text-muted);font-size:13px}.ihq-tbl-wrap{border:1px solid var(--color-border);border-radius:10px;overflow-x:auto}.ihq-tbl{width:100%;border-collapse:collapse;font-size:13px}.ihq-th{padding:10px 12px;text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);background:var(--color-card-bg);border-bottom:1px solid var(--color-border);white-space:nowrap}.ihq-tr{cursor:pointer;transition:background .1s}.ihq-tr:last-child .ihq-td{border-bottom:none}.ihq-tr:hover{background:var(--color-hover)}.ihq-td{padding:10px 12px;border-bottom:1px solid var(--color-border);color:var(--color-text);vertical-align:middle}.ihq-td--muted{color:var(--color-text-muted);font-size:12px}.ihq-tcreator{display:flex;align-items:center;gap:10px}.ihq-tavatar{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0}.ihq-tname{font-weight:600;font-size:13px}.ihq-tid{font-size:11px;color:var(--color-text-muted);font-family:monospace}.ihq-tplatforms{display:flex;gap:4px;flex-wrap:wrap;align-items:center}.ihq-tpchip{font-size:11px;padding:2px 7px;border-radius:5px;background:var(--color-bg);border:1px solid var(--color-border);white-space:nowrap}.ihq-tno-p{font-size:12px;color:var(--color-text-muted)}.ihq-tactions{display:flex;gap:6px;justify-content:flex-end}.ihq-tact{padding:5px 10px;border-radius:6px;font-family:var(--font-sans);font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .15s}.ihq-tact--view{background:var(--color-accent);border:none;color:#fff}.ihq-tact--view:hover{box-shadow:0 2px 8px #e848554d}.ihq-tact--edit{background:transparent;border:1px solid var(--color-border);color:var(--color-text)}.ihq-tact--edit:hover{border-color:var(--color-accent)}.ihq-tbl-more{padding:12px;text-align:center}.ihq-backdrop{position:fixed;inset:0;background:#0006;z-index:90;opacity:0;pointer-events:none;transition:opacity .25s}.ihq-backdrop--on{opacity:1;pointer-events:all}.ihq-drawer{position:fixed;top:0;right:0;bottom:0;width:min(460px,100vw);background:var(--color-card-bg);z-index:95;display:flex;flex-direction:column;box-shadow:-4px 0 32px #0000001f;transform:translate(100%);transition:transform .3s cubic-bezier(.25,.46,.45,.94)}.ihq-drawer--open{transform:translate(0)}.ihq-drawer__head{display:flex;align-items:flex-start;justify-content:space-between;padding:20px;border-bottom:1px solid var(--color-border);flex-shrink:0}.ihq-drawer__eyebrow{font-size:10px;font-weight:700;letter-spacing:.1em;color:var(--color-accent);margin-bottom:4px}.ihq-drawer__title{font-size:16px;font-weight:700;margin:0}.ihq-drawer__x{background:var(--color-bg);border:1px solid var(--color-border);border-radius:7px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px;color:var(--color-text-muted);flex-shrink:0;transition:background .1s}.ihq-drawer__x:hover{background:var(--color-hover)}.ihq-drawer__body{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:18px}.ihq-drawer__foot{padding:16px 20px;border-top:1px solid var(--color-border);display:flex;gap:8px;justify-content:flex-end;flex-shrink:0}.ihq-field{display:flex;flex-direction:column;gap:6px}.ihq-label{font-size:12px;font-weight:600;color:var(--color-text)}.ihq-req{color:var(--color-accent)}.ihq-input{padding:8px 12px;border:1px solid var(--color-border);border-radius:8px;font-family:var(--font-sans);font-size:13px;background:var(--color-bg);color:var(--color-text);width:100%;box-sizing:border-box;transition:border-color .15s}.ihq-input:focus{outline:none;border-color:var(--color-accent)}.ihq-textarea{padding:8px 12px;border:1px solid var(--color-border);border-radius:8px;font-family:var(--font-sans);font-size:13px;background:var(--color-bg);color:var(--color-text);width:100%;box-sizing:border-box;resize:vertical;transition:border-color .15s}.ihq-textarea:focus{outline:none;border-color:var(--color-accent)}.ihq-tier-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.ihq-tier-opt{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;border-radius:8px;border:1.5px solid var(--color-border);background:transparent;cursor:pointer;font-family:var(--font-sans);font-size:11px;font-weight:600;color:var(--color-text-muted);transition:border-color .15s,background .15s,color .15s}.ihq-tier-opt__dot{width:8px;height:8px;border-radius:50%;background:var(--to-accent)}.ihq-tier-opt--on{border-color:var(--to-accent);background:var(--to-bg);color:var(--to-text)}.ihq-pstack{border:1px solid var(--color-border);border-radius:8px;overflow:hidden}.ihq-prow{display:flex;align-items:center;gap:10px;padding:0 12px;border-bottom:1px solid var(--color-border)}.ihq-prow:last-child{border-bottom:none}.ihq-prow__icon{font-size:15px;flex-shrink:0}.ihq-prow__label{font-size:11px;font-weight:600;color:var(--color-text-muted);width:72px;flex-shrink:0}.ihq-pinput{flex:1;border:none;background:transparent;padding:9px 0;font-family:var(--font-sans);font-size:13px;color:var(--color-text);outline:none;min-width:0}@media (max-width: 768px){.ihq-shell{padding:16px}.ihq-header__title{font-size:17px}.ihq-header__sub{display:none}.ihq-toolbar{flex-direction:column;align-items:stretch}.ihq-toolbar__filters{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px}.ihq-toolbar__filters::-webkit-scrollbar{display:none}.ihq-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}.ihq-th--activity,.ihq-td--activity{display:none}}@media (max-width: 480px){.ihq-header__actions .ihq-btn--ghost{display:none}.ihq-grid{grid-template-columns:1fr 1fr}.ihq-th--platforms,.ihq-td--platforms{display:none}}
3
+ `],encapsulation:3,changeDetection:0})}};export{Z as BloomsInfluencerDashboardComponent};
package/dist/index.d.ts CHANGED
@@ -160,7 +160,15 @@ export interface EmbedManifest {
160
160
  // ── SDK ─────────────────────────────────────────────────────────────────────
161
161
 
162
162
  export interface MountOptions {
163
- /** Which component to mount, e.g. `'login'` for `<blooms-login>`. */
163
+ /**
164
+ * Which component to mount, as the tag name without the `blooms-` prefix:
165
+ * `'login'`, `'crawl-insights'`, `'sitemap-crawl'`, `'sitemap-crawl-detail'`,
166
+ * `'keywords'`, `'keyword-detail'`, `'reports'`, `'gmc-analytics'`,
167
+ * `'social-media-calendar'`, `'smc-day-detail'`, `'influencer-dashboard'`,
168
+ * `'influencer-detail'`, `'blog-strategy'`.
169
+ *
170
+ * An unknown name throws, listing what the bundle has.
171
+ */
164
172
  feature: string;
165
173
  /** Initial height in px before the frame reports its own. Iframe mode only. */
166
174
  minHeight?: number;
@@ -223,11 +231,32 @@ export interface BloomsEmbedSdk {
223
231
  * call is the same either way — the mode is resolved by `configure()`.
224
232
  */
225
233
  mount(target: HTMLElement | string, options: MountOptions): MountedFrame | HTMLElement;
234
+ /**
235
+ * Fetch one or more components' code before they are needed.
236
+ *
237
+ * The bundle is code-split: a small core, then one lazy chunk per component,
238
+ * fetched the first time that component is used. A host that knows what is
239
+ * coming — a nav item under the cursor, the next step of a wizard — can warm
240
+ * the chunk and remove the round trip from the user's path.
241
+ *
242
+ * ```js
243
+ * BloomsEmbed.preload('crawl-insights', 'keywords');
244
+ * ```
245
+ *
246
+ * Purely an optimisation. Never required, never throws: a failed preload just
247
+ * means the chunk is fetched later, when it is actually mounted.
248
+ */
249
+ preload(...features: string[]): Promise<void>;
226
250
  }
227
251
 
228
252
  /**
229
- * The SDK. Importing this package defines the custom elements and installs the
230
- * same object on `window.BloomsEmbed`.
253
+ * The SDK. Importing this package installs the same object on
254
+ * `window.BloomsEmbed` and starts watching the page for blooms.ai tags.
255
+ *
256
+ * Elements are defined lazily — the bundle is code-split, one chunk per
257
+ * component, fetched when a tag is first used. Your markup is unaffected and
258
+ * there is nothing to await; `customElements.get(tag)` simply returns undefined
259
+ * until that component has been used once. Use `preload()` to warm a chunk.
231
260
  */
232
261
  export const BloomsEmbed: BloomsEmbedSdk;
233
262
 
@@ -270,6 +299,183 @@ export interface BloomsLoginElement extends HTMLElement {
270
299
  ): void;
271
300
  }
272
301
 
302
+ /**
303
+ * `<blooms-crawl-insights>` — technical crawl results for a project: pages
304
+ * crawled, broken links, page-level issues, missing metadata and duplicate
305
+ * titles, with a health score.
306
+ *
307
+ * Renders a sign-in prompt until a session exists, so it can be placed
308
+ * unconditionally.
309
+ */
310
+ export interface BloomsCrawlInsightsElement extends HTMLElement {
311
+ /**
312
+ * Which project to show. Omit it and the element follows the session's active
313
+ * project, so `BloomsEmbed.setProject()` moves it.
314
+ *
315
+ * As an attribute this is `project-id`.
316
+ */
317
+ projectId?: string;
318
+
319
+ addEventListener(
320
+ type: 'bloomscrawl',
321
+ listener: (event: CustomEvent<{ status: string; crawlId?: string }>) => void,
322
+ options?: boolean | AddEventListenerOptions,
323
+ ): void;
324
+ addEventListener(
325
+ type: 'bloomserror',
326
+ listener: (event: CustomEvent<{ code?: string; message: string }>) => void,
327
+ options?: boolean | AddEventListenerOptions,
328
+ ): void;
329
+ addEventListener<K extends keyof HTMLElementEventMap>(
330
+ type: K,
331
+ listener: (this: HTMLElement, event: HTMLElementEventMap[K]) => unknown,
332
+ options?: boolean | AddEventListenerOptions,
333
+ ): void;
334
+ addEventListener(
335
+ type: string,
336
+ listener: EventListenerOrEventListenerObject,
337
+ options?: boolean | AddEventListenerOptions,
338
+ ): void;
339
+ }
340
+
341
+ // ── The other eleven elements ────────────────────────────────────────────────
342
+
343
+ /**
344
+ * What a component emits instead of navigating.
345
+ *
346
+ * A custom element cannot own the host page's URL, so a component that used to
347
+ * call the router now describes where it would have gone and leaves the decision
348
+ * to you: show another element, open a window, or ignore it.
349
+ */
350
+ export interface BloomsNavigateDetail {
351
+ /** The target component, without the `blooms-` prefix, e.g. `'keyword-detail'`. */
352
+ feature: string;
353
+ /** Which view within it, e.g. `'detail'`, `'list'`. */
354
+ view: string;
355
+ /** Identifiers the target needs, e.g. `{ keywordId: '…' }`. */
356
+ params: Record<string, unknown>;
357
+ }
358
+
359
+ export interface BloomsErrorDetail {
360
+ code?: string;
361
+ message: string;
362
+ }
363
+
364
+ /**
365
+ * Shared surface of every element except `<blooms-login>`: a project to show,
366
+ * and the two events.
367
+ *
368
+ * Note what is deliberately NOT here. Some components accept inputs that gate a
369
+ * control whose output is delivered to the blooms.ai portal — report generation,
370
+ * bulk delete. Those are wired by the portal, not by a host app, and they are
371
+ * left undeclared on purpose: enabling one from an embed would start a job whose
372
+ * result the user cannot collect.
373
+ */
374
+ export interface BloomsProjectElement extends HTMLElement {
375
+ /**
376
+ * Which project to show. Omit it and the element follows the session's active
377
+ * project, so `BloomsEmbed.setProject()` moves it.
378
+ *
379
+ * As an attribute this is `project-id`.
380
+ */
381
+ projectId?: string;
382
+
383
+ addEventListener(
384
+ type: 'bloomsnavigate',
385
+ listener: (event: CustomEvent<BloomsNavigateDetail>) => void,
386
+ options?: boolean | AddEventListenerOptions,
387
+ ): void;
388
+ addEventListener(
389
+ type: 'bloomserror',
390
+ listener: (event: CustomEvent<BloomsErrorDetail>) => void,
391
+ options?: boolean | AddEventListenerOptions,
392
+ ): void;
393
+ addEventListener<K extends keyof HTMLElementEventMap>(
394
+ type: K,
395
+ listener: (this: HTMLElement, event: HTMLElementEventMap[K]) => unknown,
396
+ options?: boolean | AddEventListenerOptions,
397
+ ): void;
398
+ addEventListener(
399
+ type: string,
400
+ listener: EventListenerOrEventListenerObject,
401
+ options?: boolean | AddEventListenerOptions,
402
+ ): void;
403
+ }
404
+
405
+ /** Sitemap crawl runs for a project. Emits `bloomsnavigate` to open one. */
406
+ export interface BloomsSitemapCrawlElement extends BloomsProjectElement {}
407
+
408
+ /** One sitemap crawl run. */
409
+ export interface BloomsSitemapCrawlDetailElement extends BloomsProjectElement {
410
+ /** Which run to show. Attribute: `crawl-id`. Required — there is no sensible default. */
411
+ crawlId?: string;
412
+ }
413
+
414
+ /** Tracked keywords for a project. Emits `bloomsnavigate` to open one. */
415
+ export interface BloomsKeywordsElement extends BloomsProjectElement {}
416
+
417
+ /**
418
+ * One keyword's detail.
419
+ *
420
+ * Its Search Console section is empty when embedded: the underlying route takes
421
+ * its project id as a query parameter and carries no authorization of its own,
422
+ * so exposing it would leak cross-project data. Being fixed server-side.
423
+ */
424
+ export interface BloomsKeywordDetailElement extends BloomsProjectElement {
425
+ /** Which keyword to show. Attribute: `keyword-id`. */
426
+ keywordId?: string;
427
+ }
428
+
429
+ /** Generated reports for a project. */
430
+ export interface BloomsReportsElement extends BloomsProjectElement {}
431
+
432
+ /** Google Merchant Centre overview for a project. */
433
+ export interface BloomsGmcAnalyticsElement extends BloomsProjectElement {}
434
+
435
+ /** A project's social media calendar. */
436
+ export interface BloomsSocialMediaCalendarElement extends BloomsProjectElement {
437
+ /**
438
+ * Opens that event's drawer. Attribute: `event-id`.
439
+ *
440
+ * The component reports drawer changes through `bloomsnavigate`, so you can
441
+ * keep this in your own URL if you want the view to be linkable.
442
+ */
443
+ eventId?: string;
444
+ }
445
+
446
+ /** One day of the social media calendar. */
447
+ export interface BloomsSmcDayDetailElement extends BloomsProjectElement {
448
+ /**
449
+ * Which day, as `YYYY-MM-DD`. Attribute: `date-iso`.
450
+ *
451
+ * Required: a day has no sensible default, so the element reports an error
452
+ * rather than guessing one.
453
+ */
454
+ dateIso?: string;
455
+ }
456
+
457
+ /** Influencers tracked for a project. */
458
+ export interface BloomsInfluencerDashboardElement extends BloomsProjectElement {}
459
+
460
+ /** One influencer's profile and snapshots. */
461
+ export interface BloomsInfluencerDetailElement extends BloomsProjectElement {
462
+ /** Which influencer. Attribute: `influencer-id`. */
463
+ influencerId?: string;
464
+ }
465
+
466
+ /** A blog strategy's authoring workflow. */
467
+ export interface BloomsBlogStrategyElement extends BloomsProjectElement {
468
+ /** Which strategy. Attribute: `strategy-id`. */
469
+ strategyId?: string;
470
+ /**
471
+ * Which workflow step is open, e.g. `'topic-selection'`. Attribute: `step`.
472
+ *
473
+ * Omit it and the component opens the first step and announces that through
474
+ * `bloomsnavigate` — it never changes the address bar itself.
475
+ */
476
+ step?: string;
477
+ }
478
+
273
479
  declare global {
274
480
  interface Window {
275
481
  /** Installed by the bundle as it evaluates, i.e. by importing this package. */
@@ -280,5 +486,17 @@ declare global {
280
486
 
281
487
  interface HTMLElementTagNameMap {
282
488
  'blooms-login': BloomsLoginElement;
489
+ 'blooms-crawl-insights': BloomsCrawlInsightsElement;
490
+ 'blooms-sitemap-crawl': BloomsSitemapCrawlElement;
491
+ 'blooms-sitemap-crawl-detail': BloomsSitemapCrawlDetailElement;
492
+ 'blooms-keywords': BloomsKeywordsElement;
493
+ 'blooms-keyword-detail': BloomsKeywordDetailElement;
494
+ 'blooms-reports': BloomsReportsElement;
495
+ 'blooms-gmc-analytics': BloomsGmcAnalyticsElement;
496
+ 'blooms-social-media-calendar': BloomsSocialMediaCalendarElement;
497
+ 'blooms-smc-day-detail': BloomsSmcDayDetailElement;
498
+ 'blooms-influencer-dashboard': BloomsInfluencerDashboardElement;
499
+ 'blooms-influencer-detail': BloomsInfluencerDetailElement;
500
+ 'blooms-blog-strategy': BloomsBlogStrategyElement;
283
501
  }
284
502
  }
package/dist/index.js CHANGED
@@ -2,18 +2,28 @@
2
2
  * `@bloomscorp/blooms-ai-embed` — the blooms.ai embeddable web components.
3
3
  *
4
4
  * Importing this module has two effects:
5
- * 1. it defines the custom elements (`<blooms-login>`, …) on the page, and
6
- * 2. it installs and re-exports the `BloomsEmbed` SDK object.
5
+ * 1. it installs and re-exports the `BloomsEmbed` SDK object, and
6
+ * 2. it starts watching the page for blooms.ai tags.
7
7
  *
8
- * Both come from the prebuilt bundle, which self-registers when it evaluates.
9
- * This entry deliberately adds no behaviour of its own — the bundle is the
10
- * single implementation, shared with the CDN-hosted bundle at
8
+ * It does NOT define every custom element up front. The bundle is code-split —
9
+ * one lazy chunk per component — so a tag is defined the first time an instance
10
+ * of it appears, and the browser upgrades that element when the definition
11
+ * lands. Nothing in your markup changes, and you never await anything; the only
12
+ * observable difference is that `customElements.get('blooms-login')` is
13
+ * undefined until a `<blooms-login>` has been used. `BloomsEmbed.preload()`
14
+ * warms a chunk ahead of time if you want to.
15
+ *
16
+ * Both effects come from the prebuilt bundle, which self-registers when it
17
+ * evaluates. This entry deliberately adds no behaviour of its own — the bundle
18
+ * is the single implementation, shared with the CDN-hosted bundle at
11
19
  * https://embed-ai.bloomscorp.com/v1/blooms-embed.js.
12
20
  */
13
21
 
14
22
  // Must stay first: it fails loudly outside a browser before the bundle runs.
15
23
  import './browser-guard.js';
16
- // Side-effect import: defines the custom elements and sets window.BloomsEmbed.
24
+ // Side-effect import: sets window.BloomsEmbed and starts the element loader,
25
+ // which defines each tag on first use. Your bundler follows the dynamic imports
26
+ // inside it and emits one chunk per component.
17
27
  import './blooms-embed.js';
18
28
 
19
29
  const sdk = /** @type {any} */ (window).BloomsEmbed;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bloomscorp/blooms-ai-embed",
3
- "version": "0.1.0",
4
- "description": "blooms.ai embeddable web components \u2014 prebuilt bundle and typed JS SDK for host dashboards, including Electron.",
3
+ "version": "0.2.0",
4
+ "description": "blooms.ai embeddable web components — prebuilt bundle and typed JS SDK for host dashboards, including Electron.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,
7
7
  "type": "module",
@@ -16,19 +16,24 @@
16
16
  },
17
17
  "./blooms-embed.css": "./dist/blooms-embed.css",
18
18
  "./blooms-embed.js": "./dist/blooms-embed.js",
19
- "./package.json": "./package.json"
19
+ "./chunk-*.js": "./dist/chunk-*.js",
20
+ "./package.json": "./package.json",
21
+ "./media/*": "./dist/media/*"
20
22
  },
21
23
  "files": [
22
24
  "dist/index.js",
23
25
  "dist/index.d.ts",
24
26
  "dist/browser-guard.js",
25
27
  "dist/blooms-embed.js",
28
+ "dist/chunk-*.js",
26
29
  "dist/blooms-embed.css",
30
+ "dist/media/",
27
31
  "README.md",
28
32
  "CHANGELOG.md"
29
33
  ],
30
34
  "scripts": {
31
35
  "build": "node scripts/build.mjs",
36
+ "typecheck": "../client/node_modules/.bin/tsc --noEmit --strict --skipLibCheck --moduleResolution bundler --module esnext --target es2022 --lib es2022,dom typecheck/usage.ts",
32
37
  "prepack": "node scripts/build.mjs --skip-client-build"
33
38
  },
34
39
  "keywords": [