1import{a as ce,b as pe}from"./chunk-6YISPRDS.js";import{a as ue}from"./chunk-G4R2GKV2.js";import{d as le,e as de}from"./chunk-EWL6ORIH.js";import{m as oe,w as re}from"./chunk-PCX2G3SP.js";import"./chunk-VTY3WUO2.js";import"./chunk-LOALBELJ.js";import"./chunk-AE2J52ZS.js";import"./chunk-RUAHJGGB.js";import"./chunk-AVVVPSDJ.js";import"./chunk-3J3KCX3O.js";import"./chunk-4WZPATDK.js";import"./chunk-ZGVCAIA7.js";import"./chunk-F55KHM2L.js";import{a as se,b as me,c as M}from"./chunk-RK4QUFSD.js";import"./chunk-EQTHLO52.js";import{e as X}from"./chunk-VJHRSEGF.js";import"./chunk-7JCYNKI7.js";import"./chunk-YA6NTMQS.js";import{b as q}from"./chunk-2PVCL3PK.js";import"./chunk-7NMSBCYH.js";import"./chunk-C2DVZDGY.js";import{a as ae}from"./chunk-6SLRSBD4.js";import"./chunk-CUKU6G52.js";import"./chunk-6OEYWLK5.js";import"./chunk-XXOI2Q32.js";import{a as ee}from"./chunk-WZTGOJQA.js";import{n as te,q as ie}from"./chunk-2GWWZKJ2.js";import{h as ne}from"./chunk-EXFBZB4W.js";import"./chunk-FKGCZSZQ.js";import"./chunk-RZL25LU7.js";import{a as J}from"./chunk-TII7VHRV.js";import"./chunk-P5DN333D.js";import"./chunk-URASKXN6.js";import{a as Z}from"./chunk-EBZ4M7LM.js";import"./chunk-3LIJAQBG.js";import"./chunk-7OTRUV6W.js";import"./chunk-C3NZRFRO.js";import"./chunk-DWZCMMT2.js";import{Ab as P,Ga as R,Ib as _,Ka as e,Kb as c,Q as w,Rc as Q,Sb as z,Tb as U,Ub as W,V as k,W as I,Wb as p,Xa as C,Xb as r,Yb as d,Zb as m,_b as E,ab as S,ga as O,ic as A,jb as L,kb as x,lb as v,mb as j,nb as T,ob as g,oc as H,pb as f,qb as u,rb as i,rc as Y,sb as a,tb as b,tc as y,xc as G,zb as F}from"./chunk-FCWLYEAN.js";import"./chunk-QCZZC53R.js";import{a as V,b as K}from"./chunk-IELKNAHF.js";var ge=[58,64,61,70,66,74,72,82],we={seo:{title:"Omni alternative for embedded analytics | Luzmo",description:"Looking for an Omni alternative? Luzmo gives product teams embeddable analytics components and framework SDKs, so insights live in the screens customers already use. Published pricing.",schema:"Luzmo is embedded analytics that feels native to the product you ship, through web components, React, Vue and Angular SDKs, Flex and single items."},fold:{eyebrow:"Comparing Omni?",title:{lead:"An Omni alternative for analytics",accent:"that feels native to your product."},lede:["Omni is a strong choice when internal BI, embedded analytics and AI need to share one governed semantic layer. Luzmo gives product teams ",{b:"embeddable analytics components and framework SDKs"},", so insights can live ",{b:"in the screens customers already use"},"."],email:{placeholder:"Work email",submitLabel:"Talk to someone who builds this",successMessage:"Thanks. Taking you to the calendar.",errorMessage:"Something went wrong. Please try again, or book from the Get a demo button."},leadPageName:"LP Omni alternative",offer:["Luzmo: ",{b:"from \u20AC1,995 / $2,495 a month, published, billed annually"},". Need one governed semantic layer for internal BI, self-service and AI across the company? Omni may be the better choice."]},panel:{title:"Same app, same data. Where does the analytics live?",toggleLabel:"Compare Acme Logistics with analytics in a frame and in its own UI",appName:"Acme Logistics",screen:"Shipments",stats:[{label:"Open shipments",value:"128"},{label:"Delayed",value:"7"}],kpiLabel:"On-time",kpiValue:"94.2%",chartTitle:"Deliveries per week",tableTitle:"Top customers",rows:[{name:"Harbor Retail",onTime:"96%"},{name:"Maple Foods",onTime:"91%"},{name:"Orbit Parts",onTime:"93%"}],frameBar:"Embedded analytics",frameUrl:"analytics-vendor.example/embed",frameBoundary:"postMessage boundary",frameScroll:"Own scroll",clickHint:"Click a customer",opened:"Opened in Acme: Customers",posted:"postMessage to host: row-click",states:{native:{label:"In your UI",headline:"The analytics reads as Acme\u2019s own screen.",captions:["The KPI sits in the app\u2019s own stat row.","The chart follows the host\u2019s font and colours.","A click opens the customer in the app."],fact:"Luzmo provides first-party React, Vue and Angular SDKs and web components, plus Flex and single items, for analytics inside product screens."},frame:{label:"In a frame",headline:"A separate analytics area, inside a frame.",captions:["Its own header and its own scroll.","The KPI stays in the frame, away from the app\u2019s numbers.","A click crosses a postMessage boundary."],fact:"A generic embed pattern, for illustration, not any vendor\u2019s UI. Omni\u2019s public embedding documentation, reviewed in September 2026, centers on signed embed URLs."}},fictional:"Acme Logistics and its customers are fictional."},quote:{context:"Weeks instead of years of development.",text:"\u201CWe skipped three years of development time.\u201D",by:"Maarten Saeys, CPO at Lansweeper",portraitAlt:"Maarten Saeys, CPO at Lansweeper",linkLabel:"Read the Lansweeper case study",href:"/resources/case-study-lansweeper"}
1,diffs:{eyebrow:"Built for the product you ship",title:{lead:"Three things",accent:"your customers will see."},rows:[{id:"sdk",figure:"3 SDKs",figureLabel:"first-party: React, Vue, Angular",title:"Components in your stack, built for your product UI.",luzmo:"Luzmo provides first-party framework SDKs and web components for teams building analytics into product interfaces.",competitor:"Omni\u2019s public embedding documentation, reviewed in September 2026, centers on signed embed URLs."},{id:"single",figure:"1 KPI",figureLabel:"or one chart, in any product screen",title:"Embed more than full dashboards.",luzmo:"Add an individual KPI, chart or analytics component where the decision happens: a customer overview, an account page, an operational view.",competitor:"In your evaluation, place one KPI inside a non-analytics screen of your own app, on both platforms."},{id:"price",figure:"$2,495",figureLabel:"a month, published (\u20AC1,995), billed annually",title:"Published pricing for embedded analytics.",luzmo:"Luzmo plans start from \u20AC1,995 / $2,495 a month, billed annually and subject to current plan terms, plus AI and Warp usage.",competitor:"At the time of review, in September 2026, Omni did not list standard plan prices on its public website. Confirm current packaging and pricing with Omni."}]},straight:{explo:{eyebrow:"Leaving Explo?",title:"Evaluating your options after Explo?",body:"Omni acquired Explo in October 2025 and announced a 12-month transition period for existing Explo customers. If you are planning a migration, confirm your account timeline, feature mapping and commercial terms directly with Omni. Luzmo offers a product-first embedded analytics platform for teams that need branded, customer-facing analytics built into their application. Compare destinations on the same scope:",scope:["Embedded dashboards","Embed authentication","Tenant filters","Scheduled reports"],cta:{id:"explo",label:"Get an Explo migration assessment",hoverLabel:"Talk to an expert"}},better:{title:"When Omni may be the better choice",intro:"Omni may be a strong fit if your priority is a shared semantic layer for internal BI, governed self-service analytics and AI across the organization. Consider Omni when:",items:["You need deep alignment with your existing dbt, SQL, Git or analyst workflows.","Customer-facing analytics is one part of a broader internal BI strategy.","Customers need analyst-grade self-service on the same governed model.","Enterprise control over AI model providers is central to your evaluation. Review Omni\u2019s current Enterprise AI options with its team."]}},quiz:{eyebrow:"Not sure yet?",title:"30-second fit check",chip:"2 questions \xB7 no email",resultEyebrow:"Your fit",answerAgain:"Answer again",talkLabel:"Talk to someone who builds this",talkHover:"Pick a slot",questions:[{id:"audience",question:"Who is the analytics for?",options:[{label:"Our own team",value:0},{label:"Both, one model",value:2},{label:"Our customers",value:4}]},{id:"render",question:"Where should it show up?",options:[{label:"Its own area",value:0},{label:"A few screens",value:2},{label:"Inside our UI",value:4}]}],bands:[{id:"competitor",max:2,verdict:"Omni may fit you.",next:"One governed model with a contained analytics area is what Omni does well. Come back when the analytics has to live in your product."},{id:"split",max:5,verdict:"Split it.",next:"Keep Omni for your data team and put Luzmo in your product. Keeping Omni internally can be the right answer."},{id:"luzmo",max:8,verdict:"Luzmo fits.",next:"Customer analytics inside your UI is the job. Bring one screen from your product."}]},everywhere:{eyebrow:"Who keeps what",title:{lead:"Your data team keeps its model.",accent:"Your customers get a product."},keepTitle:"What can stay in Omni",keepItems:[{title:"The semantic model.",body:"Topics, shared models and promotion stay where your data team works."},{title:"dbt, Git and branches.",body:"The modeling workflow does not move."},{title:"Internal dashboards and AI.",body:"Only the customer-facing side moves."}],getTitle:"What your product team gets with Luzmo",getItems:[{title:"Your product experience, not a separate destination.",body:"Configure themes, branding and visual elements so analytics feels like part of your application."},{title:"Consistent authorization.",body:"Apply your access model consistently across embedded experiences, APIs and AI-powered analytics features."},{title:"White-labeling on the entry plan.",body:"Embedded Everywhere includes white-labeling, custom themes, custom charts and SDK access."}],note:"Moving the customer-facing side does not mean replacing Omni internally.",cta:{id:"everywhere",label:"Scope the customer side",hoverLabel:"Talk with sales"}},faq:{title:"What buyers ask before they switch",accent:"before they switch",items:[{question:"Is Omni good for embedding in SaaS apps?",answer:"Omni is a real embedded analytics platform. Its public documentation covers signed embedding, multi-tenant security, white-label themes, customer self-service and embedded AI. It is a strong choice when customer-facing analytics is one part of a broader governed BI strategy. If analytics has to live inside your own screens, test component-based integration on both platforms."},{question:"Does Omni have a React SDK?",answer:"Omni\u2019s public embedding documentation, reviewed in September 2026, centers on signed embed URLs. Check Omni\u2019s current documentation for framework options. Luzmo provides first-party React, Vue and Angular SDKs, plus web components and Flex. See the [Luzmo developer docs](https://developer.luzmo.com/guide/dashboard-embedding--embed-into-application)."},{question:"How is multi-tenant security handled on each side?",answer:"Omni\u2019s public documentation describes row-level access filters on user attributes, dynamic schemas, dynamic database environments and shared extension models. Luzmo scopes each customer session with a short-lived embed token and can switch database, schema or credentials per tenant. See [handling multi-tenant data](https://developer.luzmo.com/guide/dashboard-embedding--handling-multi-tenant-data). Test your own tenant model on both before you decide."},{question:"How much does each cost?",answer:"Luzmo plans start from \u20AC1,995 / $2,495 a month, billed annually and subject to current plan terms, plus AI and Warp usage. At the time of review, in September 2026, Omni did not list standard plan prices on its public website. AI usage models and overage pricing vary by vend
1or and plan: confirm included usage, overages and terms during your evaluation, and put warehouse compute and internal users on both quotes. Details on the [pricing page](https://www.luzmo.com/pricing)."},{question:"Can I move from Explo to Luzmo?",answer:"Yes, when your contract allows it. Confirm your Explo timeline with Omni first. There is no automated import from Explo to Luzmo: plan to rebuild embedded dashboards, embed authentication, tenant filters and scheduled reports. A migration assessment call scopes that work with you before you commit."},{question:"Do we have to replace Omni?",answer:"No. You may not need to replace Omni internally to move customer-facing analytics to Luzmo. Separate what your own teams use from what your customers see, then scope the customer side. The full side-by-side is on [Luzmo vs Omni](/compare/omni)."}]},methodology:{text:"Product and pricing comparisons are based on publicly available information reviewed in September 2026. Product capabilities, packaging and pricing may change.",linkLabel:"See the full Luzmo vs Omni comparison",href:"/compare/omni"},closing:{lead:"If your analytics should look like your product,",accent:"let\u2019s talk.",cta:{id:"closing",label:"Show us your product",hoverLabel:"Talk to an expert"}}};function D(){return we}function fe(o,l){return o.find(n=>l<=n.max)??o[o.length-1]}var Ce=(o,l)=>l.id,Se=(o,l)=>l.label;function Ee(o,l){if(o&1&&(i(0,"div",7),b(1,"app-pill-cta",9),a()),o&2){let n=c(2);e(),u("label",n.quiz.talkLabel)("hoverLabel",n.quiz.talkHover)("href",n.talkHref)}}function ke(o,l){if(o&1){let n=P();i(0,"div",1)(1,"div",3)(2,"p",4),r(3),a(),i(4,"p",5),r(5),a(),i(6,"p",6),r(7),a(),x(8,Ee,2,3,"div",7),a(),i(9,"button",8),_("click",function(){k(n);let s=c();return I(s.reset())}),r(10),a()()}if(o&2){let n=l,t=c();e(3),d(t.quiz.resultEyebrow),e(2),m(" ",n.band.verdict," "),e(2),m(" ",n.band.next," "),e(),v(n.band.id!=="competitor"?8:-1),e(),p(t.linkClass),e(),m(" ",t.quiz.answerAgain," ")}}function Ie(o,l){if(o&1){let n=P();i(0,"label")(1,"input",14),_("change",function(){let s=k(n).$implicit,h=c().$implicit,N=c(2);return I(N.select(h.id,s.value))}),a(),i(2,"span",15),r(3),a()()}if(o&2){let n=l.$implicit,t=c().$implicit,s=c(2);p(s.optionClass(t.id,n.value)),e(),u("name","fit-"+t.id)("value",n.value)("checked",s.answers()[t.id]===n.value),e(2),d(n.label)}}function Oe(o,l){if(o&1&&(i(0,"fieldset",10)(1,"legend",11),r(2),a(),i(3,"div",12),g(4,Ie,4,6,"label",13,Se),a()()),o&2){let n=l.$implicit,t=l.$index;e(2),E(" ",t+1,". ",n.question," "),e(2),f(n.options)}}function Le(o,l){if(o&1&&(i(0,"div",2),g(1,Oe,6,2,"fieldset",10,Ce),a()),o&2){let n=c();e(),f(n.questions)}}var B=class o{quiz=D().quiz;questions=this.quiz.questions;talkHref=`#${M}`;linkClass="shrink-0 cursor-pointer rounded-sm text-sm font-semibold text-brand-600 underline underline-offset-4 hover:text-brand-700 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring";answers=O({});result=y(()=>{let l=this.answers(),n=this.questions.map(s=>l[s.id]);if(n.some(s=>s===void 0))return null;let t=n.reduce((s,h)=>s+(h??0),0);return{band:fe(this.quiz.bands,t)}});select(l,n){this.answers.set(K(V({},this.answers()),{[l]:n}))}reset(){this.answers.set({})}optionClass(l,n){return["fit-option relative flex min-h-12 cursor-pointer items-center justify-center rounded-xl border px-2 py-2.5 transition-colors motion-reduce:transition-none",this.answers()[l]===n?"border-brand-600 bg-brand-500 text-foreground-inverted":"border-border bg-surface-elevated text-foreground hover:border-brand-300"].join(" ")}static \u0275fac=function(n){return new(n||o)};static \u0275cmp=C({type:o,selectors:[["app-omni-fit-widget"]],decls:3,vars:1,consts:[[1,"rounded-card-lg","bg-surface-elevated","p-6","shadow-card","md:p-8"],[1,"flex","flex-wrap","items-start","justify-between","gap-x-6","gap-y-3"],[1,"flex","flex-col","gap-5","md:flex-row","md:gap-6"],[1,"min-w-0"],[1,"text-xs","font-medium","text-foreground-muted"],[1,"mt-1","font-display","text-2xl","font-bold","tracking-tight","text-foreground"],[1,"mt-2","max-w-lg","text-base","leading-snug","text-foreground-muted"],[1,"mt-5"],["type","button",3,"click"],[3,"label","hoverLabel","href"],[1,"min-w-0","flex-1","border-0","p-0"],[1,"font-display","text-base","font-bold","leading-snug","tracking-tight","text-foreground"],[1,"mt-3","grid","grid-cols-3","gap-2"],[3,"class"],["type","radio",1,"fit-radio",3,"change","name","value","checked"],[1,"min-w-0","text-center","text-sm","font-bold","leading-tight"]],template:function(n,t){if(n&1&&(i(0,"div",0),x(1,ke,11,7,"div",1)(2,Le,3,0,"div",2),a()),n&2){let s;e(),v((s=t.result())?1:2,s)}},dependencies:[q],styles:[".fit-radio[_ngcontent-%COMP%]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.fit-option[_ngcontent-%COMP%]:has(.fit-radio:focus-visible){outline:2px solid var(--color-focus-ring);outline-offset:2px}"],changeDetection:0})};var xe=()=>({$implicit:"native"}),ve=()=>({$implicit:"frame"}),Te=(o,l)=>l.label,Fe=(o,l)=>l.name;function Pe(o,l){if(o&1&&(i(0,"div",15)(1,"p",22),r(2),a(),i(3,"p",23),r(4),a()()),o&2){let n=l.$implicit;e(2),d(n.label),e(2),d(n.value)}}function ze(o,l){if(o&1&&(i(0,"div",16)(1,"div",24)(2,"p",22),r(3),a(),i(4,"span",6),r(5,"1"),a()(),i(6,"p",23),r(7),a()()),o&2){let n=c();e(3),d(n.content().kpiLabel),e(),p(n.marker),e(3),m(" ",n.content().kpiValue," ")}}function Ae(o,l){o&1&&F(0)}function Me(o,l){o&1&&F(0)}function qe(o,l){if(o&1&&(i(0,"div",17)(1,"div",25)(2,"div",26)(3,"p",22),r(4),a(),i(5,"span",6),r(6,"2"),a()(),S(7,Ae,1,0,"ng-container",27),a(),i(8,"div",25)(9,"div",26)(10,"p",22),r(11),a(),i(12,"span",6),r(13,"3"),a()(),S(14,Me,1,0,"ng-container",27),a()()),o&2){let n=c(),t=z(36),s=z(38);
1e(4),d(n.content().chartTitle),e(),p(n.marker),e(2),u("ngTemplateOutlet",t)("ngTemplateOutletContext",A(10,xe)),e(4),d(n.content().tableTitle),e(),p(n.marker),e(2),u("ngTemplateOutlet",s)("ngTemplateOutletContext",A(11,xe))}}function De(o,l){o&1&&F(0)}function Be(o,l){o&1&&F(0)}function $e(o,l){if(o&1&&(i(0,"div",18)(1,"span",28)(2,"span",6),r(3,"3"),a(),r(4),a(),i(5,"div",29)(6,"div",30)(7,"span",31)(8,"span",6),r(9,"1"),a(),i(10,"span",32),r(11),a()(),i(12,"span",33),r(13),a()(),i(14,"div",34)(15,"div",35)(16,"div",36)(17,"div",26)(18,"p",37),r(19),a(),i(20,"span",6),r(21,"2"),a()(),i(22,"p",38),r(23),a()(),i(24,"div",39)(25,"p",37),r(26),a(),S(27,De,1,0,"ng-container",27),a(),i(28,"div",39)(29,"p",37),r(30),a(),S(31,Be,1,0,"ng-container",27),a()(),i(32,"span",40),r(33),a()()()()),o&2){let n=c(),t=z(36),s=z(38);e(2),p(n.marker),e(2),m(" ",n.content().frameBoundary," "),e(4),p(n.marker),e(3),d(n.content().frameBar),e(2),d(n.content().frameUrl),e(2),L("aria-label",n.content().frameBar),e(4),d(n.content().kpiLabel),e(),p(n.marker),e(3),d(n.content().kpiValue),e(3),d(n.content().chartTitle),e(),u("ngTemplateOutlet",t)("ngTemplateOutletContext",A(19,ve)),e(3),d(n.content().tableTitle),e(),u("ngTemplateOutlet",s)("ngTemplateOutletContext",A(20,ve)),e(2),m("\u2195 ",n.content().frameScroll)}}function Ne(o,l){if(o&1&&(i(0,"li",20)(1,"span",6),r(2),a(),i(3,"p",41),r(4),a()()),o&2){let n=l.$implicit,t=l.$index,s=c();e(),p(s.markerOnDark+" mt-0.5"),e(),d(t+1),e(2),d(n)}}function Re(o,l){if(o&1&&b(0,"span"),o&2){let n=l.$implicit,t=l.$index,s=l.$count,h=c().$implicit,N=c();p(N.barClass(h,t===s-1)),U("height",n,"%")}}function We(o,l){if(o&1&&(i(0,"div",42),g(1,Re,1,4,"span",43,j),a()),o&2){let n=l.$implicit,t=c();W("border-stone-300",n==="native")("border-zinc-300",n==="frame"),e(),f(t.barValues)}}function He(o,l){if(o&1){let n=P();i(0,"li")(1,"button",7),_("click",function(){let s=k(n).$implicit,h=c(2);return I(h.opened.set(s.name))}),i(2,"span",46),r(3),a(),i(4,"span",47),r(5),a()()()}if(o&2){let n=l.$implicit,t=c().$implicit,s=c();e(),p(s.rowClass(t,n.name)),e(2),d(n.name),e(2),d(n.onTime)}}function Ve(o,l){if(o&1&&r(0),o&2){let n=c(),t=c(2);E(" \u2713 ",t.content().opened," \u203A ",n," ")}}function Ke(o,l){if(o&1&&r(0),o&2){let n=c(),t=c(2);E(" \u2192 ",t.content().posted," \u201C",n,"\u201D ")}}function je(o,l){if(o&1&&x(0,Ve,1,2)(1,Ke,1,2),o&2){let n=c().$implicit;v(n==="native"?0:1)}}function Ue(o,l){if(o&1&&r(0),o&2){let n=c(2);m(" ",n.content().clickHint," ")}}function Ye(o,l){if(o&1&&(i(0,"ul",44),g(1,He,6,4,"li",null,Fe),a(),i(3,"p",45),x(4,je,2,1)(5,Ue,1,1),a()),o&2){let n,t=l.$implicit,s=c();e(),f(s.content().rows),e(2),W("text-stone-700",t==="native")("text-zinc-800",t==="frame"),e(),v((n=s.opened())?4:5,n)}}var Ge="inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-foreground font-mono text-[0.6875rem] font-bold text-foreground-inverted",Qe="inline-flex size-5 shrink-0 items-center justify-center rounded-full bg-white font-mono text-[0.6875rem] font-bold text-foreground",$=class o{content=G.required();barValues=ge;marker=Ge;markerOnDark=Qe;mode=O("native");opened=O(null);native=y(()=>this.mode()==="native");state=y(()=>this.content().states[this.mode()]);setMode(l){this.mode()!==l&&(this.opened.set(null),this.mode.set(l))}thumbClass=y(()=>["pointer-events-none absolute inset-y-1 left-1 w-[calc(50%-0.25rem)] rounded-pill","transition-[transform,background-color] duration-300 ease-[cubic-bezier(0.33,1,0.32,1)] motion-reduce:transition-none",this.native()?"translate-x-full bg-accent":"translate-x-0 bg-white"].join(" "));toggleClass(l){return["relative z-10 inline-flex min-h-12 cursor-pointer items-center justify-center gap-1.5 whitespace-nowrap rounded-pill px-4 text-sm font-bold transition-colors sm:px-5","focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring","motion-reduce:transition-none",this.mode()===l?"text-foreground":"text-white/80 hover:text-white"].join(" ")}barClass(l,n){return l==="native"?`block flex-1 rounded-t ${n?"bg-stone-800":"bg-stone-400"}`:`block flex-1 ${n?"bg-zinc-600":"bg-zinc-300"}`}rowClass(l,n){let t=this.opened()===n,s="flex min-h-8 w-full cursor-pointer items-center justify-between gap-2 border-b px-1 py-1 text-xs transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring motion-reduce:transition-none";return l==="native"?`${s} border-stone-200 text-stone-900 hover:bg-stone-100 ${t?"bg-stone-100":""}`:`${s} border-zinc-200 text-zinc-900 hover:bg-zinc-100 ${t?"bg-zinc-100":""}`}static \u0275fac=function(n){return new(n||o)};static \u0275cmp=C({type:o,selectors:[["app-omni-frame-panel"]],inputs:{content:[1,"content"]},decls:39,vars:21,consts:[["bars",""],["table",""],["aria-labelledby","omni-panel-title",1,"flex","flex-col","gap-4","rounded-card-lg","bg-foreground","p-4","shadow-elevated","sm:p-6"],["id","omni-panel-title",1,"font-display","text-base","font-medium","leading-snug","text-foreground-inverted","md:text-lg"],[1,"flex","flex-col","gap-2.5","sm:flex-row","sm:items-center","sm:gap-4"],["role","group",1,"relative","inline-grid","shrink-0","grid-cols-2","rounded-pill","bg-white/10","p-1"],["aria-hidden","true"],["type","button",3,"click"],["aria-live","polite",1,"text-sm","font-bold","leading-snug","text-foreground-inverted"],[1,"overflow-hidden","rounded-card","bg-stone-100"],[1,"flex","items-center","gap-2","bg-stone-800","px-3","py-2","text-stone-100"],["aria-hidden","true",1,"block","size-4","rounded","bg-stone-400"],[1,"text-sm","font-extrabold"],[1,"text-xs","text-stone-300"],[1,"flex","flex-col","gap-2.5","p-2.5","sm:p-3"],[1,"rounded-lg","bg-white","px-2.5","py-2"],[1,"rounded-lg","bg-white","px-2.5","py-2","ring-2","ring-accent"],[1,"grid","gap-2","sm:grid-cols-2"],[1,"relative","mt-1.5"],[1,"flex","flex-col","gap-1.5"],[1,"flex","items-start","gap-2.5"],[1,"max-w-[65ch]","font-mono","text-xs","leading-relaxed","text-white/80"],[1,"text-[0.6875rem]","font-bold","text-stone-600"],[1,"text-lg","font-extrabold","leading-tight","text-stone-900"],[1,"flex","items-center","justify-between","gap-1"],[1,"rounded-lg","bg-white","p-2.5"],[1,"flex","items-center","justify-between","gap-2"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"absolute","-top-2.5","right-3","z-10","inline-flex","items-center","gap-1","rounded-pill","border","border-dashed","border-stone-600","bg-stone-100","px-2","py-0.5","font-mono","text-[0.6875rem]","font-bold","text-stone-800"],[1,"overflow-hidden","border-2","border-dashed","border-stone-500","bg-zinc-50"],[1,"flex","items-center","justify-between","gap-2","border-b","border-zinc-300","bg-zinc-200","px-2.5","pb-1.5","pt-4"],[1,"flex","min-w-0","items-center","gap-1.5"],[1,"truncate","font-mono","text-[0.6875rem]","font-bold","text-zinc-800"],[1,"hidden","truncate","font-mono","text-[0.6875rem]","text-zinc-700","sm:block"],[1,"relative"],["tabindex","0",1,"h-44","overflow-y-scroll","p-2.5","font-mono"],[1,"border","border-zinc-300","bg-white","p-2.5"],[1,"text-[0.6875rem]","text-zinc-700"],[1,"text-lg","font-bold","text-zinc-900"],[1,"mt-2","border","border-zinc-300","bg-white","p-2.5"],["aria-hidden","true",1,"pointer-events-none","absolute","bottom-1.5","right-4","rounded-pill","bg-zinc-800","px-2","py-0.5","font-mono","text-[0.6875rem]","text-white"],[1,"text-sm","leading-snug","text-foreground-inverted"],["aria-hidden","true",1,"mt-2","flex","h-14","items-end","gap-1","border-b","pb-0.5"],[3,"class","height"],[1,"mt-1","flex","flex-col"],["aria-live","polite",1,"mt-1","min-h-4","text-[0.6875rem]","font-bold","leading-snug"],[1,"min-w-0","truncate","text-left","font-bold"],[1,"shrink-0","tabular-nums"]],template:function(n,t){n&1&&(i(0,"figure",2)(1,"p",3),r(2),a(),i(3,"div",4)(4,"div",5),b(5,"span",6),i(6,"button",7),_("click",function(){return t.setMode("frame")}),i(7,"span",6),r(8,"\u29C9"),a(),r(9),a(),i(10,"button",7),_("click",function(){return t.setMode("native")}
1),i(11,"span",6),r(12,"\u2713"),a(),r(13),a()(),i(14,"p",8),r(15),a()(),i(16,"div",9)(17,"div",10),b(18,"span",11),i(19,"span",12),r(20),a(),i(21,"span",13),r(22),a()(),i(23,"div",14)(24,"div"),g(25,Pe,5,2,"div",15,Te),x(27,ze,8,4,"div",16),a(),x(28,qe,15,12,"div",17)(29,$e,34,21,"div",18),a()(),i(30,"ol",19),g(31,Ne,5,4,"li",20,T),a(),i(33,"figcaption",21),r(34),a()(),S(35,We,3,4,"ng-template",null,0,H)(37,Ye,6,5,"ng-template",null,1,H)),n&2&&(e(2),m(" ",t.content().title," "),e(2),L("aria-label",t.content().toggleLabel),e(),p(t.thumbClass()),e(),p(t.toggleClass("frame")),L("aria-pressed",!t.native()),e(3),m(" ",t.content().states.frame.label," "),e(),p(t.toggleClass("native")),L("aria-pressed",t.native()),e(3),m(" ",t.content().states.native.label," "),e(2),m(" ",t.state().headline," "),e(5),d(t.content().appName),e(2),m("\xB7 ",t.content().screen),e(2),p(t.native()?"grid grid-cols-3 gap-2":"grid grid-cols-2 gap-2"),e(),f(t.content().stats),e(2),v(t.native()?27:-1),e(),v(t.native()?28:29),e(3),f(t.state().captions),e(3),E(" ",t.state().fact," ",t.content().fictional," "))},dependencies:[Q],encapsulation:2,changeDetection:0})};var Je=(o,l)=>l.id,he=(o,l)=>l.title;function Xe(o,l){if(o&1&&(i(0,"li",17)(1,"div",55)(2,"p",56),r(3),a(),i(4,"p",57),r(5),a()(),i(6,"div",58)(7,"h3",59),r(8),a(),i(9,"p",22),r(10),a(),i(11,"p",60),r(12),a()()()),o&2){let n=l.$implicit;e(3),m(" ",n.figure," "),e(2),d(n.figureLabel),e(3),m(" ",n.title," "),e(2),d(n.luzmo),e(2),d(n.competitor)}}function Ze(o,l){if(o&1&&(i(0,"li",24),r(1),a()),o&2){let n=l.$implicit;e(),m(" ",n," ")}}function et(o,l){if(o&1&&(i(0,"li",29),r(1),a()),o&2){let n=l.$implicit;e(),m(" ",n," ")}}function tt(o,l){if(o&1&&(i(0,"li",43)(1,"span",61),r(2,"\u2713"),a(),i(3,"div",7)(4,"p",62),r(5),a(),i(6,"p",63),r(7),a()()()),o&2){let n=l.$implicit;e(5),d(n.title),e(2),d(n.body)}}function nt(o,l){if(o&1&&(i(0,"li",43)(1,"span",64),r(2,"\u2713"),a(),i(3,"div",7)(4,"p",65),r(5),a(),i(6,"p",66),r(7),a()()()),o&2){let n=l.$implicit;e(5),d(n.title),e(2),d(n.body)}}var it="Omni alternative",_e=class o{seo=w(ne);structuredData=w(ie);localeId=w(Y);geo=w(X);canonicalPath=`/lp/${se}`;formAnchor=me;talkAnchor=M;talkHref=`#${M}`;eyebrow=ce;eyebrowDark=pe;c=D();faqs=this.c.faq.items;trustedByLogos=y(()=>le[this.geo.tenancy()??"us"]);trustedByOverlayLogos=y(()=>de[this.geo.tenancy()??"us"]);quotePortrait=J("shared/testimonial/maarten-saeys-portrait.png",this.c.quote.portraitAlt);constructor(){w(Z).setVariant("grey"),this.seo.configure({title:this.c.seo.title,description:this.c.seo.description,canonicalPath:this.canonicalPath,ogImage:ee,robots:"noindex,follow",enOnly:!0},this.localeId),this.structuredData.set(te({name:it,description:this.c.seo.schema,canonicalPath:this.canonicalPath,localeId:this.localeId}))}static \u0275fac=function(n){return new(n||o)};static \u0275cmp=C({type:o,selectors:[["app-lp-omni-page"]],decls:110,vars:57,consts:[[3,"logos","overlayLogos"],[3,"content","pageUri","formAnchor","talkAnchor"],["foldVisual","",3,"content"],[1,"bg-surface","py-14","md:py-16"],[1,"container-page"],[1,"mx-auto","flex","max-w-3xl","flex-col","items-start","gap-5","sm:flex-row","sm:gap-6"],["imgClass","size-16 shrink-0 rounded-full object-cover",3,"image"],[1,"min-w-0"],[1,"mt-3","font-display","text-xl","font-bold","leading-snug","tracking-tight","text-foreground","md:text-2xl"],[1,"mt-3","max-w-[65ch]","text-sm","text-foreground-muted"],["aria-hidden","true"],[1,"font-semibold","text-brand-600","underline","underline-offset-4","hover:text-brand-700",3,"href"],[1,"bg-surface-elevated","py-20","md:py-28"],[1,"max-w-2xl"],[1,"mt-4","font-display","text-display-2","font-bold","tracking-tight","text-foreground","md:text-display-marketing"],[1,"text-gradient-lavender-black","font-medium"],[1,"mt-10","flex","flex-col","md:mt-14"],[1,"grid","gap-4","border-t","border-border","py-8","md:grid-cols-12","md:gap-10","md:py-10"],[1,"bg-surface","py-20","md:py-24"],[1,"grid","gap-4","md:grid-cols-2","md:gap-6"],[1,"flex","flex-col","rounded-card","bg-surface-elevated","p-6","md:p-8"],[1,"mt-4","font-display","text-2xl","font-bold","leading-tight","tracking-tight","text-foreground"],[1,"mt-3","max-w-[38rem]","text-base","leading-[1.55]","text-foreground"],[1,"mt-5","flex","flex-col","gap-3"],[1,"border-l-2","border-brand-500","pl-4","text-base","leading-snug","text-foreground-muted"],[1,"mt-6"],[3,"label","hoverLabel","href"],[1,"rounded-card","bg-surface-elevated","p-6","md:p-8"],[1,"font-display","text-2xl","font-bold","leading-tight","tracking-tight","text-foreground"],[1,"border-l-2","border-border-strong","pl-4","text-base","leading-snug","text-foreground-muted"],[1,"bg-surface-elevated","py-16","md:py-20"],[1,"mx-auto","max-w-4xl"],[1,"flex","flex-wrap","items-end","justify-between","gap-3"],[1,"mt-3","font-display","text-display-2","font-bold","tracking-tight","text-foreground"],[1,"text-sm","text-foreground-muted"],[1,"bg-foreground","py-20","md:py-28"],[1,"max-w-3xl"],[1,"mt-4","font-display","text-display-2","font-bold","tracking-tight","text-foreground-inverted","md:text-display-marketing"],[1,"text-brand-300"],[1,"mt-10","grid","gap-4","md:mt-12","md:grid-cols-2","md:gap-6"],[1,"rounded-card","bg-surface-dark","p-6","md:p-8"],[1,"font-display","text-lg","font-bold","tracking-tight","text-brand-300"],[1,"mt-6","flex","flex-col","gap-5"],[1,"flex","gap-3"],[1,"rounded-card","bg-brand-lavender","p-6","md:p-8"],[1,"font-display","text-lg","font-bold","tracking-tight","text-foreground"],[1,"mt-10","flex","flex-wrap","items-center","gap-x-6","gap-y-3","md:mt-12"],[1,"text-sm","text-white/75"],[1,"container-page","mx-auto","max-w-3xl"],["layout","article","headingId","omni-faq-heading",3,"title","titleAccent","faqs"],[1,"mt-10","max-w-[65ch]","border-t","border-border","pt-6","text-sm","leading-[1.55]","text-foreground-muted"],[1,"bg-accent","py-16","md:py-20"],[1,"mx-auto","flex","max-w-5xl","flex-col","items-start","gap-7","md:flex-row","md:items-center","md:justify-between"],[1,"max-w-2xl","font-display","text-display-2","font-bold","tracking-tight","text-accent-foreground"],[1,"text-accent-foreground
1/60"],[1,"md:col-span-4"],[1,"font-display","text-[3rem]","font-bold","leading-none","tracking-tight","text-foreground","md:text-[4rem]"],[1,"mt-2","text-sm","text-foreground-muted"],[1,"md:col-span-8"],[1,"font-display","text-xl","font-bold","leading-tight","tracking-tight","text-foreground","md:text-2xl"],[1,"mt-2","max-w-[38rem]","text-base","leading-[1.55]","text-foreground-muted"],["aria-hidden","true",1,"mt-0.5","inline-flex","size-5","shrink-0","items-center","justify-center","rounded-full","bg-brand-300","text-xs","font-bold","text-foreground"],[1,"font-bold","text-foreground-inverted"],[1,"mt-1","text-sm","leading-[1.55]","text-white/75"],["aria-hidden","true",1,"mt-0.5","inline-flex","size-5","shrink-0","items-center","justify-center","rounded-full","bg-foreground","text-xs","font-bold","text-foreground-inverted"],[1,"font-bold","text-foreground"],[1,"mt-1","text-sm","leading-[1.55]","text-foreground"]],template:function(n,t){n&1&&(i(0,"app-trusted-by-hero-shell",0)(1,"app-competitor-fold",1),b(2,"app-omni-frame-panel",2),a()(),i(3,"section",3)(4,"div",4)(5,"figure",5),b(6,"app-optimized-image",6),i(7,"div",7)(8,"span"),r(9),a(),i(10,"blockquote",8),r(11),a(),i(12,"figcaption",9),r(13),i(14,"span",10),r(15," \xB7 "),a(),i(16,"a",11),r(17),a()()()()()(),i(18,"section",12)(19,"div",4)(20,"div",13)(21,"span"),r(22),a(),i(23,"h2",14),r(24),i(25,"span",15),r(26),a()()(),i(27,"ol",16),g(28,Xe,13,5,"li",17,Je),a()()(),i(30,"section",18)(31,"div",4)(32,"div",19)(33,"div",20)(34,"span"),r(35),a(),i(36,"h2",21),r(37),a(),i(38,"p",22),r(39),a(),i(40,"ul",23),g(41,Ze,2,1,"li",24,T),a(),i(43,"div",25),b(44,"app-pill-cta",26),a()(),i(45,"div",27)(46,"h2",28),r(47),a(),i(48,"p",22),r(49),a(),i(50,"ul",23),g(51,et,2,1,"li",29,T),a()()()()(),i(53,"section",30)(54,"div",4)(55,"div",31)(56,"div",32)(57,"div")(58,"span"),r(59),a(),i(60,"h2",33),r(61),a()(),i(62,"span",34),r(63),a()(),i(64,"div",25),b(65,"app-omni-fit-widget"),a()()()(),i(66,"section",35)(67,"div",4)(68,"div",36)(69,"span"),r(70),a(),i(71,"h2",37),r(72),i(73,"span",38),r(74),a()()(),i(75,"div",39)(76,"div",40)(77,"h3",41),r(78),a(),i(79,"ul",42),g(80,tt,8,2,"li",43,he),a()(),i(82,"div",44)(83,"h3",45),r(84),a(),i(85,"ul",42),g(86,nt,8,2,"li",43,he),a()()(),i(88,"div",46)(89,"span"),b(90,"app-pill-cta",26),a(),i(91,"p",47),r(92),a()()()(),i(93,"section",30)(94,"div",48),b(95,"app-faq-section",49),i(96,"p",50),r(97),i(98,"a",11),r(99),a(),r(100,". "),a()()(),i(101,"section",51)(102,"div",4)(103,"div",52)(104,"h2",53),r(105),i(106,"span",54),r(107),a()(),i(108,"span"),b(109,"app-pill-cta",26),a()()()()),n&2&&(u("logos",t.trustedByLogos())("overlayLogos",t.trustedByOverlayLogos()),e(),u("content",t.c.fold)("pageUri",t.canonicalPath)("formAnchor",t.formAnchor)("talkAnchor",t.talkAnchor),e(),u("content",t.c.panel),e(4),u("image",t.quotePortrait),e(2),p(t.eyebrow),e(),d(t.c.quote.context),e(2),m(" ",t.c.quote.text," "),e(2),m(" ",t.c.quote.by," "),e(3),u("href",t.c.quote.href,R),e(),d(t.c.quote.linkLabel),e(4),p(t.eyebrow),e(),d(t.c.diffs.eyebrow),e(2),m(" ",t.c.diffs.title.lead," "),e(2),d(t.c.diffs.title.accent),e(2),f(t.c.diffs.rows),e(6),p(t.eyebrow+" self-start"),e(),d(t.c.straight.explo.eyebrow),e(2),m(" ",t.c.straight.explo.title," "),e(2),d(t.c.straight.explo.body),e(2),f(t.c.straight.explo.scope),e(3),u("label",t.c.straight.explo.cta.label)("hoverLabel",t.c.straight.explo.cta.hoverLabel)("href",t.talkHref),e(3),m(" ",t.c.straight.better.title," "),e(2),d(t.c.straight.better.intro),e(2),f(t.c.straight.better.items),e(7),p(t.eyebrow),e(),d(t.c.quiz.eyebrow),e(2),m(" ",t.c.quiz.title," "),e(2),d(t.c.quiz.chip),e(6),p(t.eyebrowDark),e(),d(t.c.everywhere.eyebrow),e(2),m(" ",t.c.everywhere.title.lead," "),e(2),d(t.c.everywhere.title.accent),e(4),m(" ",t.c.everywhere.keepTitle," "),e(2),f(t.c.everywhere.keepItems),e(4),m(" ",t.c.everywhere.getTitle," "),e(2),f(t.c.everywhere.getItems),e(4),u("label",t.c.everywhere.cta.label)("hoverLabel",t.c.everywhere.cta.hoverLabel)("href",t.talkHref),e(2),d(t.c.everywhere.note),e(3),u("title",t.c.faq.title)("titleAccent",t.c.faq.accent)("faqs",t.faqs),e(2),m(" ",t.c.methodology.text," "),e(),u("href",t.c.methodology.href,R),e(),d(t.c.methodology.linkLabel),e(6),m(" ",t.c.closing.lead," "),e(2),d(t.c.closing.accent),e(2),u("label",t.c.closing.cta.label)("hoverLabel",t.c.closing.cta.hoverLabel)("href",t.talkHref))},dependencies:[ue,oe,B,$,ae,q,re],encapsulation:2,changeDetection:0})};export{_e as LpOmniPage}; 2/**i18n:c38e1e1169922bd1eb37bc7c546f4451e5264a7e2b0bc3f4a10c2507fb94229f*/
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.