@burdenoff/fe-libs 2026.716.1 → 2026.717.1

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.
@@ -19,26 +19,26 @@ import { ShellUiProvider as b } from "./shell/ShellUiProvider.js";
19
19
  import { ContextManagerProvider as re } from "./shell/ContextManagerProvider.js";
20
20
  import { AuthTokenProvider as ie } from "./shell/AuthTokenProvider.js";
21
21
  import { MultiGatewayProvider as ae } from "./shell/MultiGatewayProvider.js";
22
- import { G as x, j as S, w as C } from "../../node_modules/web-vitals/dist/web-vitals.js";
23
- import { ProfileI18nBridge as oe } from "./shell/ProfileI18nBridge.js";
22
+ import { G as x, Q as S, j as C, w as oe } from "../../node_modules/web-vitals/dist/web-vitals.js";
23
+ import { ProfileI18nBridge as se } from "./shell/ProfileI18nBridge.js";
24
24
  import { ProfileGeographyBridge as w } from "./shell/ProfileGeographyBridge.js";
25
- import { DevtoolsSink as se } from "../events/sinks/DevtoolsSink.js";
26
- import { BroadcastChannelSink as T } from "../events/sinks/BroadcastChannelSink.js";
27
- import { BackendAuditSink as E } from "../events/sinks/BackendAuditSink.js";
28
- import { RybbitSink as D } from "../events/sinks/RybbitSink.js";
29
- import { OtelBrowserSink as O } from "../events/sinks/OtelBrowserSink.js";
30
- import { EventBusProvider as ce, useEventBus as k } from "../../shared-events.js";
31
- import { useReferralAttribution as A } from "../hooks/useReferralAttribution.js";
32
- import { TourPlayerProvider as j } from "../tours/TourPlayerProvider.js";
33
- import { ToursProvider as M, useToursContext as N } from "../tours/ToursContext.js";
34
- import { TourInitializer as P } from "../tours/TourInitializer.js";
35
- import { Suspense as F, useCallback as I, useEffect as L, useMemo as R, useRef as z } from "react";
36
- import { Fragment as B, jsx as V, jsxs as H } from "react/jsx-runtime";
37
- import { BrowserRouter as le, useLocation as U } from "react-router-dom";
38
- import { Toaster as W, toast as G } from "sonner";
25
+ import { DevtoolsSink as T } from "../events/sinks/DevtoolsSink.js";
26
+ import { BroadcastChannelSink as E } from "../events/sinks/BroadcastChannelSink.js";
27
+ import { BackendAuditSink as D } from "../events/sinks/BackendAuditSink.js";
28
+ import { RybbitSink as O } from "../events/sinks/RybbitSink.js";
29
+ import { OtelBrowserSink as k } from "../events/sinks/OtelBrowserSink.js";
30
+ import { EventBusProvider as ce, useEventBus as A } from "../../shared-events.js";
31
+ import { useReferralAttribution as j } from "../hooks/useReferralAttribution.js";
32
+ import { TourPlayerProvider as M } from "../tours/TourPlayerProvider.js";
33
+ import { ToursProvider as N, useToursContext as P } from "../tours/ToursContext.js";
34
+ import { TourInitializer as F } from "../tours/TourInitializer.js";
35
+ import { Suspense as I, useCallback as L, useEffect as R, useMemo as z, useRef as B } from "react";
36
+ import { Fragment as V, jsx as H, jsxs as U } from "react/jsx-runtime";
37
+ import { BrowserRouter as le, useLocation as W } from "react-router-dom";
38
+ import { Toaster as G, toast as K } from "sonner";
39
39
  import { MutationCache as ue, QueryCache as de, QueryClient as fe, QueryClientProvider as pe } from "@tanstack/react-query";
40
40
  //#region src/shared/providers/AppShellProvider.tsx
41
- var K = {
41
+ var q = {
42
42
  artistrybase: { prod: "cfbecacb6002" },
43
43
  atheletebridge: { prod: "c34c6ead7aa8" },
44
44
  adaptercloud: {},
@@ -67,8 +67,8 @@ var K = {
67
67
  subscriberbot: {},
68
68
  intelwatchtower: {},
69
69
  kadaikodi: {}
70
- }, q = /* @__PURE__ */ "nav.route.changed,auth.signed_in,auth.signed_out,support.ticket.created,support.ticket.closed,support.ticket.reopened,support.kb.article_rated,conversations.conversation.created,conversations.conversation.archived,notification.item.opened,notification.preference.updated,notification.admin.sent,notification.template.saved,notification.schedule.updated,collabkin.tree.created,collabkin.person.created,collabkin.memory.created,collabkin.story.created,collabkin.member.invited,crewfoundry.page.viewed,crewfoundry.dashboard.viewed,crewfoundry.job_posting.created,crewfoundry.candidate.created,crewfoundry.employee.created,crewfoundry.team.created,crewfoundry.project.created,crewfoundry.course.enrolled,crewfoundry.learning_path.created,crewfoundry.service.listed,crewfoundry.leave.approved,crewfoundry.payroll.processed,crewfoundry.invoice.created,coolandlovely.page.viewed,coolandlovely.brand.created,coolandlovely.collection.created,coolandlovely.style_item.created,coolandlovely.look.created,coolandlovely.collaboration.created,coolandlovely.lookbook.created,coolandlovely.wardrobe.item_added,coolandlovely.search.performed,vibecontrols.agent.registered,atheletebridge.page.viewed,atheletebridge.team.created,atheletebridge.fixture.created,atheletebridge.program.created,atheletebridge.session.completed,atheletebridge.metric.logged,atheletebridge.tournament.created,vibecontrols.agent.gateway_auth_setup,vibecontrols.session.created,vibecontrols.session.started,vibecontrols.session.terminal_opened_in_browser,vibecontrols.session.share_link_created,vibecontrols.session.joined_shared,vibecontrols.tunnel.created,vibecontrols.tunnel.started,vibecontrols.vibedeck.button_executed,vibecontrols.quota.agent_limit_hit,vibecontrols.quota.session_limit_hit,vibecontrols.quota.tunnel_limit_hit,vibecontrols.billing.upgrade_clicked,bigconsole.dashboard.imported,bigconsole.dashboard.shared,bigconsole.data_sink.imported,bigconsole.widget.created,bigconsole.widget.duplicated,bigconsole.ai.dashboard_generated,bigconsole.ai.dashboard_created,assethandler.page.viewed,assethandler.asset.viewed,assethandler.asset.created,assethandler.work_order.viewed,assethandler.work_order.created,assethandler.incident.viewed,assethandler.incident.created,assethandler.change.viewed,assethandler.change.created,assethandler.problem.viewed,assethandler.problem.created,assethandler.maintenance.viewed,assethandler.maintenance.created,assethandler.report.viewed,assethandler.analytics.viewed,movethewheels.page.viewed,movethewheels.shipment.created,movethewheels.shipment.delivered,movethewheels.order.created,movethewheels.route.planned,movethewheels.vehicle.assigned,movethewheels.warehouse.inbound_received,theglobalfuel.dashboard.viewed,theglobalfuel.asset.created,theglobalfuel.production.recorded,theglobalfuel.reserve.created,theglobalfuel.contract.created,theglobalfuel.shipment.scheduled,theglobalfuel.shipment.delivered,theglobalfuel.inventory_lot.created,theglobalfuel.emission.recorded,theglobalfuel.emission.verified,theglobalfuel.compliance_cert.created,housingvista.dashboard.viewed,housingvista.property.created,housingvista.property.updated,housingvista.property.deleted,housingvista.property.viewed,housingvista.shortlist.property_added,housingvista.transaction.created,housingvista.transaction.updated,housingvista.investment.created,housingvista.offer.created,housingvista.viewing.scheduled,housingvista.chat.conversation_opened,housingvista.chat.message_sent,housingvista.analytics.viewed,housingvista.asset.created,housingvista.asset.updated,housingvista.amc.purchased,housingvista.verification.submitted,housingvista.home_loan.apply_clicked,housingvista.market_analytics.viewed,housingvista.search.performed,housingvista.export.requested,manufacturedops.production_order.created,manufacturedops.production_order.updated,manufacturedops.production_order.transitioned,manufacturedops.operation.added,manufacturedops.operation.recorded,manufacturedops.work_center.created,manufacturedops.work_center.updated,manufacturedops.work_center.archived,manufacturedops.material_lot.created,manufacturedops.material_lot.updated,manufacturedops.material_lot.status_updated,manufacturedops.inspection_plan.created,manufacturedops.quality_inspection.recorded,manufacturedops.non_conformance.raised,manufacturedops.non_conformance.updated,manufacturedops.non_conformance.transitioned,manufacturedops.asset.created,manufacturedops.maintenance_work_order.created,manufacturedops.maintenance_work_order.transitioned,manufacturedops.downtime_event.recorded,manufacturedops.page.viewed,subscriberbot.page.viewed,adaptercloud.page.viewed,comradecircle.page.viewed,comradecircle.circle.created,comradecircle.post.created,comradecircle.event.created,comradecircle.member.invited,psw.client.created,psw.client.updated,psw.client.archived,psw.engagement.created,psw.engagement.transitioned,psw.matter.created,psw.matter.closed,psw.timeentry.created,psw.invoice.created,psw.compliance.resolved,psw.conflictcheck.recorded,psw.document.created,psw.practicearea.created,psw.search.performed,psw.export.requested,mybodyshield.page.viewed,mybodyshield.program.created,mybodyshield.program.updated,mybodyshield.program.status_changed,mybodyshield.program.archived,mybodyshield.workout.created,mybodyshield.exercise.created,mybodyshield.session.started,intelwatchtower.page.viewed,intelwatchtower.source.created,intelwatchtower.mission.created,intelwatchtower.mission.assigned,intelwatchtower.mission.completed,intelwatchtower.entity.created,intelwatchtower.entity.linked,intelwatchtower.indicator.created,intelwatchtower.observation.created,intelwatchtower.alert.created,intelwatchtower.alert.escalated,intelwatchtower.case.created,intelwatchtower.case.closed,intelwatchtower.report.created,intelwatchtower.report.exported,intelwatchtower.task.created,intelwatchtower.task.completed,intelwatchtower.cop.opened,govcitizenhub.page.viewed,govcitizenhub.dashboard.viewed,govcitizenhub.service.published,govcitizenhub.application.submitted,govcitizenhub.application.decided,govcitizenhub.permit.issued,govcitizenhub.payment.settled,govcitizenhub.grievance.reported,govcitizenhub.grievance.resolved,govcitizenhub.search.performed,cosmicintersection.page.viewed,labsofscience.page.viewed,labsofscience.project.created,labsofscience.experiment.created,labsofscience.protocol.created,labsofscience.dataset.created,labsofscience.inventory_item.created,labsofscience.notebook_entry.signed,labsofscience.pipeline.run_started,hookmovies.page.viewed,headshotmarketing.page.viewed,timecampus.page.viewed,timecampus.dashboard.viewed,timecampus.timer.started,timecampus.timer.stopped,timecampus.time_entry.created,timecampus.timesheet.submitted,timecampus.report.viewed,timecampus.project.viewed,timecampus.meeting.created,timecampus.pomodoro.session.completed,timecampus.focus_score.viewed,kadaikodi.page.viewed,healthybowl.farm.created,healthybowl.crop.created,healthybowl.crop.updated,healthybowl.harvest.recorded".split(","), J = 4e3;
71
- function Y(e) {
70
+ }, J = /* @__PURE__ */ "nav.route.changed,auth.signed_in,auth.signed_out,support.ticket.created,support.ticket.closed,support.ticket.reopened,support.kb.article_rated,conversations.conversation.created,conversations.conversation.archived,notification.item.opened,notification.preference.updated,notification.admin.sent,notification.template.saved,notification.schedule.updated,collabkin.tree.created,collabkin.person.created,collabkin.memory.created,collabkin.story.created,collabkin.member.invited,crewfoundry.page.viewed,crewfoundry.dashboard.viewed,crewfoundry.job_posting.created,crewfoundry.candidate.created,crewfoundry.employee.created,crewfoundry.team.created,crewfoundry.project.created,crewfoundry.course.enrolled,crewfoundry.learning_path.created,crewfoundry.service.listed,crewfoundry.leave.approved,crewfoundry.payroll.processed,crewfoundry.invoice.created,coolandlovely.page.viewed,coolandlovely.brand.created,coolandlovely.collection.created,coolandlovely.style_item.created,coolandlovely.look.created,coolandlovely.collaboration.created,coolandlovely.lookbook.created,coolandlovely.wardrobe.item_added,coolandlovely.search.performed,vibecontrols.agent.registered,atheletebridge.page.viewed,atheletebridge.team.created,atheletebridge.fixture.created,atheletebridge.program.created,atheletebridge.session.completed,atheletebridge.metric.logged,atheletebridge.tournament.created,vibecontrols.agent.gateway_auth_setup,vibecontrols.session.created,vibecontrols.session.started,vibecontrols.session.terminal_opened_in_browser,vibecontrols.session.share_link_created,vibecontrols.session.joined_shared,vibecontrols.tunnel.created,vibecontrols.tunnel.started,vibecontrols.vibedeck.button_executed,vibecontrols.quota.agent_limit_hit,vibecontrols.quota.session_limit_hit,vibecontrols.quota.tunnel_limit_hit,vibecontrols.billing.upgrade_clicked,bigconsole.dashboard.imported,bigconsole.dashboard.shared,bigconsole.data_sink.imported,bigconsole.widget.created,bigconsole.widget.duplicated,bigconsole.ai.dashboard_generated,bigconsole.ai.dashboard_created,assethandler.page.viewed,assethandler.asset.viewed,assethandler.asset.created,assethandler.work_order.viewed,assethandler.work_order.created,assethandler.incident.viewed,assethandler.incident.created,assethandler.change.viewed,assethandler.change.created,assethandler.problem.viewed,assethandler.problem.created,assethandler.maintenance.viewed,assethandler.maintenance.created,assethandler.report.viewed,assethandler.analytics.viewed,movethewheels.page.viewed,movethewheels.shipment.created,movethewheels.shipment.delivered,movethewheels.order.created,movethewheels.route.planned,movethewheels.vehicle.assigned,movethewheels.warehouse.inbound_received,theglobalfuel.dashboard.viewed,theglobalfuel.asset.created,theglobalfuel.production.recorded,theglobalfuel.reserve.created,theglobalfuel.contract.created,theglobalfuel.shipment.scheduled,theglobalfuel.shipment.delivered,theglobalfuel.inventory_lot.created,theglobalfuel.emission.recorded,theglobalfuel.emission.verified,theglobalfuel.compliance_cert.created,housingvista.dashboard.viewed,housingvista.property.created,housingvista.property.updated,housingvista.property.deleted,housingvista.property.viewed,housingvista.shortlist.property_added,housingvista.transaction.created,housingvista.transaction.updated,housingvista.investment.created,housingvista.offer.created,housingvista.viewing.scheduled,housingvista.chat.conversation_opened,housingvista.chat.message_sent,housingvista.analytics.viewed,housingvista.asset.created,housingvista.asset.updated,housingvista.amc.purchased,housingvista.verification.submitted,housingvista.home_loan.apply_clicked,housingvista.market_analytics.viewed,housingvista.search.performed,housingvista.export.requested,manufacturedops.production_order.created,manufacturedops.production_order.updated,manufacturedops.production_order.transitioned,manufacturedops.operation.added,manufacturedops.operation.recorded,manufacturedops.work_center.created,manufacturedops.work_center.updated,manufacturedops.work_center.archived,manufacturedops.material_lot.created,manufacturedops.material_lot.updated,manufacturedops.material_lot.status_updated,manufacturedops.inspection_plan.created,manufacturedops.quality_inspection.recorded,manufacturedops.non_conformance.raised,manufacturedops.non_conformance.updated,manufacturedops.non_conformance.transitioned,manufacturedops.asset.created,manufacturedops.maintenance_work_order.created,manufacturedops.maintenance_work_order.transitioned,manufacturedops.downtime_event.recorded,manufacturedops.page.viewed,subscriberbot.page.viewed,adaptercloud.page.viewed,comradecircle.page.viewed,comradecircle.circle.created,comradecircle.post.created,comradecircle.event.created,comradecircle.member.invited,psw.client.created,psw.client.updated,psw.client.archived,psw.engagement.created,psw.engagement.transitioned,psw.matter.created,psw.matter.closed,psw.timeentry.created,psw.invoice.created,psw.compliance.resolved,psw.conflictcheck.recorded,psw.document.created,psw.practicearea.created,psw.search.performed,psw.export.requested,mybodyshield.page.viewed,mybodyshield.program.created,mybodyshield.program.updated,mybodyshield.program.status_changed,mybodyshield.program.archived,mybodyshield.workout.created,mybodyshield.exercise.created,mybodyshield.session.started,intelwatchtower.page.viewed,intelwatchtower.source.created,intelwatchtower.mission.created,intelwatchtower.mission.assigned,intelwatchtower.mission.completed,intelwatchtower.entity.created,intelwatchtower.entity.linked,intelwatchtower.indicator.created,intelwatchtower.observation.created,intelwatchtower.alert.created,intelwatchtower.alert.escalated,intelwatchtower.case.created,intelwatchtower.case.closed,intelwatchtower.report.created,intelwatchtower.report.exported,intelwatchtower.task.created,intelwatchtower.task.completed,intelwatchtower.cop.opened,govcitizenhub.page.viewed,govcitizenhub.dashboard.viewed,govcitizenhub.service.published,govcitizenhub.application.submitted,govcitizenhub.application.decided,govcitizenhub.permit.issued,govcitizenhub.payment.settled,govcitizenhub.grievance.reported,govcitizenhub.grievance.resolved,govcitizenhub.search.performed,cosmicintersection.page.viewed,labsofscience.page.viewed,labsofscience.project.created,labsofscience.experiment.created,labsofscience.protocol.created,labsofscience.dataset.created,labsofscience.inventory_item.created,labsofscience.notebook_entry.signed,labsofscience.pipeline.run_started,hookmovies.page.viewed,headshotmarketing.page.viewed,timecampus.page.viewed,timecampus.dashboard.viewed,timecampus.timer.started,timecampus.timer.stopped,timecampus.time_entry.created,timecampus.timesheet.submitted,timecampus.report.viewed,timecampus.project.viewed,timecampus.meeting.created,timecampus.pomodoro.session.completed,timecampus.focus_score.viewed,kadaikodi.page.viewed,healthybowl.farm.created,healthybowl.crop.created,healthybowl.crop.updated,healthybowl.harvest.recorded".split(","), Y = 4e3;
71
+ function X(e) {
72
72
  let t = e.technicalMessage ?? e.extensions?.technicalMessage, n = {
73
73
  code: e.code,
74
74
  operationName: e.operationName,
@@ -80,13 +80,13 @@ function Y(e) {
80
80
  };
81
81
  console.error("[Burdenoff backend error]", e.message, n);
82
82
  }
83
- function X(e) {
83
+ function Z(e) {
84
84
  return e === "prod" || e === "production" ? "prod" : e === "alpha" || e === "staging" ? "alpha" : "dev";
85
85
  }
86
- function Z(e, t) {
86
+ function me(e, t) {
87
87
  return e.VITE_DISABLE_ANALYTICS === "true" ? !1 : e.VITE_ENABLE_ANALYTICS === "true" || e.PROD || t !== "dev" ? !0 : e.VITE_ENABLE_ANALYTICS !== "false";
88
88
  }
89
- function me() {
89
+ function he() {
90
90
  return {
91
91
  BASE_URL: "/",
92
92
  DEV: !1,
@@ -96,7 +96,7 @@ function me() {
96
96
  };
97
97
  }
98
98
  function Q(e, t) {
99
- let n = X(t.VITE_DEPLOY_ENV ?? t.MODE), r = Z(t, n), i = K[e], a = n === "prod" ? i?.prod : i?.nonProd, o = t.VITE_RYBBIT_SITE_ID || a, s = t.VITE_BACKEND_AUDIT_ENDPOINT || (t.PROD ? "/api/fe-events" : void 0);
99
+ let n = Z(t.VITE_DEPLOY_ENV ?? t.MODE), r = me(t, n), i = q[e], a = n === "prod" ? i?.prod : i?.nonProd, o = t.VITE_RYBBIT_SITE_ID || a, s = t.VITE_BACKEND_AUDIT_ENDPOINT || (t.PROD ? "/api/fe-events" : void 0);
100
100
  return {
101
101
  enabled: r,
102
102
  appVersion: t.VITE_APP_VERSION || "0.0.0",
@@ -107,7 +107,7 @@ function Q(e, t) {
107
107
  enabled: r && !!o,
108
108
  siteId: o,
109
109
  scriptUrl: t.VITE_RYBBIT_SCRIPT_URL,
110
- allowlist: q,
110
+ allowlist: J,
111
111
  identifyOn: "auth.signed_in",
112
112
  rename: { "nav.route.changed": "pageview" }
113
113
  },
@@ -122,16 +122,16 @@ function Q(e, t) {
122
122
  }
123
123
  };
124
124
  }
125
- function he({ children: e, enablePWA: t, toasterPosition: n, productName: r, brandInitial: i }) {
126
- let { trackProgress: a, recordStepCompletion: o, trackEvent: s } = N(), c = I((e, t) => e.steps?.[t], []);
127
- return /* @__PURE__ */ H(j, {
128
- onTourStart: I((e) => {
125
+ function ge({ children: e, enablePWA: t, toasterPosition: n, productName: r, brandInitial: i }) {
126
+ let { trackProgress: a, recordStepCompletion: o, trackEvent: s } = P(), c = L((e, t) => e.steps?.[t], []);
127
+ return /* @__PURE__ */ U(M, {
128
+ onTourStart: L((e) => {
129
129
  a(e.id, "started"), s("TOUR_STARTED", e.id);
130
130
  }, [s, a]),
131
- onTourComplete: I((e) => {
131
+ onTourComplete: L((e) => {
132
132
  a(e.id, "completed"), s("TOUR_COMPLETED", e.id);
133
133
  }, [s, a]),
134
- onTourSkip: I((e, t) => {
134
+ onTourSkip: L((e, t) => {
135
135
  let n = c(e, t);
136
136
  a(e.id, "skipped"), s("TOUR_SKIPPED", e.id, {
137
137
  stepId: n?.id,
@@ -142,14 +142,14 @@ function he({ children: e, enablePWA: t, toasterPosition: n, productName: r, bra
142
142
  s,
143
143
  a
144
144
  ]),
145
- onStepChange: I((e, t) => {
145
+ onStepChange: L((e, t) => {
146
146
  let n = c(e, t);
147
147
  n && s("STEP_VIEWED", e.id, {
148
148
  stepId: n.id,
149
149
  stepOrder: n.stepOrder
150
150
  });
151
151
  }, [c, s]),
152
- onStepComplete: I((e, t) => {
152
+ onStepComplete: L((e, t) => {
153
153
  let n = c(e, t);
154
154
  n && (o(e.id, n.id), s("STEP_COMPLETED", e.id, {
155
155
  stepId: n.id,
@@ -161,18 +161,18 @@ function he({ children: e, enablePWA: t, toasterPosition: n, productName: r, bra
161
161
  s
162
162
  ]),
163
163
  children: [
164
- /* @__PURE__ */ V(P, {}),
164
+ /* @__PURE__ */ H(F, {}),
165
165
  e,
166
- /* @__PURE__ */ V(ge, {}),
167
- /* @__PURE__ */ V(ve, {}),
168
- /* @__PURE__ */ V(W, {
166
+ /* @__PURE__ */ H(_e, {}),
167
+ /* @__PURE__ */ H(ye, {}),
168
+ /* @__PURE__ */ H(G, {
169
169
  position: n,
170
170
  richColors: !0,
171
171
  closeButton: !0
172
172
  }),
173
- t && /* @__PURE__ */ V(F, {
173
+ t && /* @__PURE__ */ H(I, {
174
174
  fallback: null,
175
- children: /* @__PURE__ */ V(g, {
175
+ children: /* @__PURE__ */ H(g, {
176
176
  productName: r,
177
177
  brandInitial: i
178
178
  })
@@ -180,44 +180,44 @@ function he({ children: e, enablePWA: t, toasterPosition: n, productName: r, bra
180
180
  ]
181
181
  });
182
182
  }
183
- function ge() {
184
- let e = z(null);
185
- return L(() => {
183
+ function _e() {
184
+ let e = B(null);
185
+ return R(() => {
186
186
  let t = (t) => {
187
187
  let n = t instanceof CustomEvent && a(t.detail) ? t.detail : null;
188
188
  if (!o(n)) return;
189
- Y(n);
189
+ X(n);
190
190
  let r = `${n.code ?? ""}|${n.message}`, i = Date.now(), s = e.current;
191
- s?.key === r && i - s.shownAt < J || (e.current = {
191
+ s?.key === r && i - s.shownAt < Y || (e.current = {
192
192
  key: r,
193
193
  shownAt: i
194
- }, G.error(n.message, { duration: 7e3 }));
194
+ }, K.error(n.message, { duration: 7e3 }));
195
195
  };
196
196
  return window.addEventListener(n, t), () => window.removeEventListener(n, t);
197
197
  }, []), null;
198
198
  }
199
- var $ = "burdenoff-connection-status", _e = 1500;
200
- function ve() {
201
- let e = z(null), t = z(!1);
202
- return L(() => {
199
+ var $ = "burdenoff-connection-status", ve = 1500;
200
+ function ye() {
201
+ let e = B(null), t = B(!1);
202
+ return R(() => {
203
203
  let n = () => {
204
- t.current || (t.current = !0, G.error("Connection lost. Trying to reconnect…", {
204
+ t.current || (t.current = !0, K.error("Connection lost. Trying to reconnect…", {
205
205
  id: $,
206
206
  duration: Infinity
207
207
  }));
208
208
  }, i = () => {
209
209
  t.current || e.current || (e.current = setTimeout(() => {
210
210
  e.current = null, n();
211
- }, _e));
211
+ }, ve));
212
212
  }, a = (n) => {
213
213
  if (e.current &&= (clearTimeout(e.current), null), !t.current) {
214
- G.dismiss($);
214
+ K.dismiss($);
215
215
  return;
216
216
  }
217
- t.current = !1, n ? G.success("Back online", {
217
+ t.current = !1, n ? K.success("Back online", {
218
218
  id: $,
219
219
  duration: 2500
220
- }) : G.dismiss($);
220
+ }) : K.dismiss($);
221
221
  }, o = (e) => {
222
222
  if (!(e instanceof CustomEvent)) return;
223
223
  let t = e.detail;
@@ -230,18 +230,18 @@ function ve() {
230
230
  };
231
231
  }, []), null;
232
232
  }
233
- function ye({ children: e, i18nProductId: t, fallbackTranslations: n, defaultBrand: r, defaultMode: i, defaultDensity: a, defaultTypography: o, defaultGlass: s, productName: c, brandInitial: l, enablePWA: u, toasterPosition: d }) {
234
- let f = U();
235
- A();
236
- let p = /* @__PURE__ */ V(w, { children: /* @__PURE__ */ V(_, { children: /* @__PURE__ */ V(v, {
233
+ function be({ children: e, i18nProductId: t, fallbackTranslations: n, defaultBrand: r, defaultMode: i, defaultDensity: a, defaultTypography: o, defaultGlass: s, productName: c, brandInitial: l, enablePWA: u, toasterPosition: d }) {
234
+ let f = W();
235
+ j();
236
+ let p = /* @__PURE__ */ H(w, { children: /* @__PURE__ */ H(_, { children: /* @__PURE__ */ H(v, {
237
237
  workspaceId: null,
238
238
  gateway: "global",
239
239
  defaultEnabled: !0,
240
- children: /* @__PURE__ */ V(y, { children: /* @__PURE__ */ V(b, { children: /* @__PURE__ */ V(h, {
240
+ children: /* @__PURE__ */ H(y, { children: /* @__PURE__ */ H(b, { children: /* @__PURE__ */ H(h, {
241
241
  fallback: null,
242
- children: /* @__PURE__ */ V(M, {
242
+ children: /* @__PURE__ */ H(N, {
243
243
  disabled: f.pathname.startsWith("/devportal") || f.pathname.startsWith("/organizations") || f.pathname.startsWith("/workspaces"),
244
- children: /* @__PURE__ */ V(he, {
244
+ children: /* @__PURE__ */ H(ge, {
245
245
  enablePWA: u,
246
246
  toasterPosition: d,
247
247
  productName: c,
@@ -251,22 +251,22 @@ function ye({ children: e, i18nProductId: t, fallbackTranslations: n, defaultBra
251
251
  })
252
252
  }) }) })
253
253
  }) }) });
254
- return /* @__PURE__ */ H(m, {
254
+ return /* @__PURE__ */ U(m, {
255
255
  defaultBrand: r,
256
256
  defaultMode: i,
257
257
  defaultDensity: a,
258
258
  defaultTypography: o,
259
259
  defaultGlass: s,
260
- children: [/* @__PURE__ */ V(be, {}), /* @__PURE__ */ V(oe, {
260
+ children: [/* @__PURE__ */ H(xe, {}), /* @__PURE__ */ H(se, {
261
261
  i18nProductId: t,
262
262
  fallbackTranslations: n,
263
263
  children: p
264
264
  })]
265
265
  });
266
266
  }
267
- function be() {
268
- let e = U();
269
- return L(() => {
267
+ function xe() {
268
+ let e = W();
269
+ return R(() => {
270
270
  e.hash || requestAnimationFrame(() => {
271
271
  window.scrollTo({
272
272
  top: 0,
@@ -284,7 +284,7 @@ function be() {
284
284
  e.hash
285
285
  ]), null;
286
286
  }
287
- function xe(e) {
287
+ function Se(e) {
288
288
  if (e instanceof Error) return e.message;
289
289
  if (typeof e == "string") return e;
290
290
  try {
@@ -293,9 +293,9 @@ function xe(e) {
293
293
  return String(e);
294
294
  }
295
295
  }
296
- function Se() {
297
- let e = k(), t = U(), n = z(void 0), r = z(void 0), i = z(null);
298
- return L(() => {
296
+ function Ce() {
297
+ let e = A(), t = W(), n = B(void 0), r = B(void 0), i = B(null);
298
+ return R(() => {
299
299
  let a = `${t.pathname}${t.search}${t.hash}`;
300
300
  if (r.current !== a) return i.current && clearTimeout(i.current), i.current = setTimeout(() => {
301
301
  i.current = null;
@@ -315,7 +315,7 @@ function Se() {
315
315
  t.hash,
316
316
  t.pathname,
317
317
  t.search
318
- ]), L(() => {
318
+ ]), R(() => {
319
319
  let t = (t) => {
320
320
  e.emit("error.runtime.caught", {
321
321
  message: t.message || "Runtime error",
@@ -325,12 +325,12 @@ function Se() {
325
325
  errorName: t.error instanceof Error ? t.error.name : void 0
326
326
  });
327
327
  }, n = (t) => {
328
- e.emit("error.unhandledrejection", { reason: xe(t.reason) });
328
+ e.emit("error.unhandledrejection", { reason: Se(t.reason) });
329
329
  };
330
330
  return window.addEventListener("error", t), window.addEventListener("unhandledrejection", n), () => {
331
331
  window.removeEventListener("error", t), window.removeEventListener("unhandledrejection", n);
332
332
  };
333
- }, [e]), L(() => {
333
+ }, [e]), R(() => {
334
334
  x((t) => {
335
335
  e.emit("perf.lcp.measured", {
336
336
  metric: "LCP",
@@ -338,44 +338,51 @@ function Se() {
338
338
  id: t.id,
339
339
  rating: t.rating
340
340
  });
341
- }), C((t) => {
341
+ }), oe((t) => {
342
342
  e.emit("perf.cls.measured", {
343
343
  metric: "CLS",
344
344
  value: t.value,
345
345
  id: t.id,
346
346
  rating: t.rating
347
347
  });
348
- }), S((t) => {
348
+ }), C((t) => {
349
349
  e.emit("perf.inp.measured", {
350
350
  metric: "INP",
351
351
  value: t.value,
352
352
  id: t.id,
353
353
  rating: t.rating
354
354
  });
355
+ }), S((t) => {
356
+ e.emit("perf.ttfb.measured", {
357
+ metric: "TTFB",
358
+ value: t.value,
359
+ id: t.id,
360
+ rating: t.rating
361
+ });
355
362
  });
356
363
  }, [e]), null;
357
364
  }
358
- function Ce({ config: e, productSlug: t }) {
359
- return /* @__PURE__ */ H(B, { children: [/* @__PURE__ */ V(Se, {}), e.enabled === !1 ? null : /* @__PURE__ */ H(B, { children: [
360
- e.devtools ? /* @__PURE__ */ V(se, { enabled: !0 }) : null,
361
- e.broadcast === !1 ? null : /* @__PURE__ */ V(T, {}),
362
- e.backendAudit?.enabled && e.backendAudit.endpoint ? /* @__PURE__ */ V(E, { endpoint: e.backendAudit.endpoint }) : null,
363
- e.rybbit?.enabled && e.rybbit.siteId ? /* @__PURE__ */ V(D, {
365
+ function we({ config: e, productSlug: t }) {
366
+ return /* @__PURE__ */ U(V, { children: [/* @__PURE__ */ H(Ce, {}), e.enabled === !1 ? null : /* @__PURE__ */ U(V, { children: [
367
+ e.devtools ? /* @__PURE__ */ H(T, { enabled: !0 }) : null,
368
+ e.broadcast === !1 ? null : /* @__PURE__ */ H(E, {}),
369
+ e.backendAudit?.enabled && e.backendAudit.endpoint ? /* @__PURE__ */ H(D, { endpoint: e.backendAudit.endpoint }) : null,
370
+ e.rybbit?.enabled && e.rybbit.siteId ? /* @__PURE__ */ H(O, {
364
371
  siteId: e.rybbit.siteId,
365
372
  scriptUrl: e.rybbit.scriptUrl,
366
373
  allowlist: e.rybbit.allowlist,
367
374
  identifyOn: e.rybbit.identifyOn,
368
375
  rename: e.rybbit.rename
369
376
  }) : null,
370
- e.otel?.enabled && e.otel.endpoint ? /* @__PURE__ */ V(O, {
377
+ e.otel?.enabled && e.otel.endpoint ? /* @__PURE__ */ H(k, {
371
378
  endpoint: e.otel.endpoint,
372
379
  serviceName: e.otel.serviceName ?? `${t}-app`,
373
380
  flushInterval: e.otel.flushInterval
374
381
  }) : null
375
382
  ] })] });
376
383
  }
377
- function we({ config: n, children: r, clearAuthStore: a }) {
378
- let { productName: o, productSlug: m = o.toLowerCase().replace(/\s+/g, ""), tagline: g = "", domain: _, i18nProductId: v, gatewayUrls: y, authBridge: b, defaultBrand: x = "default", defaultMode: S, defaultDensity: C, defaultTypography: oe, defaultGlass: w, enablePWA: se = !0, brandInitial: T = o.charAt(0), defaultGateway: E = "workspace", enableSubscriptions: D = !0, fallbackTranslations: O, queryClientOptions: k, toasterPosition: A = "bottom-right", observability: j } = n, M = j ?? Q(m, me()), N = R(() => ({
384
+ function Te({ config: n, children: r, clearAuthStore: a }) {
385
+ let { productName: o, productSlug: m = o.toLowerCase().replace(/\s+/g, ""), tagline: g = "", domain: _, i18nProductId: v, gatewayUrls: y, authBridge: b, defaultBrand: x = "default", defaultMode: S, defaultDensity: C, defaultTypography: oe, defaultGlass: se, enablePWA: w = !0, brandInitial: T = o.charAt(0), defaultGateway: E = "workspace", enableSubscriptions: D = !0, fallbackTranslations: O, queryClientOptions: k, toasterPosition: A = "bottom-right", observability: j } = n, M = j ?? Q(m, he()), N = z(() => ({
379
386
  productName: o,
380
387
  productSlug: m,
381
388
  brandInitial: T,
@@ -387,7 +394,7 @@ function we({ config: n, children: r, clearAuthStore: a }) {
387
394
  T,
388
395
  g,
389
396
  _
390
- ]), P = z(!1), F = z(!1), B = z(null), U = z(!!b?.url), W = I(() => {
397
+ ]), P = B(!1), F = B(!1), I = B(null), V = B(!!b?.url), W = L(() => {
391
398
  if ((() => {
392
399
  try {
393
400
  let e = sessionStorage.getItem("bf-active-profile");
@@ -397,7 +404,7 @@ function we({ config: n, children: r, clearAuthStore: a }) {
397
404
  } catch {
398
405
  return !1;
399
406
  }
400
- })() || U.current || P.current) return;
407
+ })() || V.current || P.current) return;
401
408
  P.current = !0, l(a);
402
409
  let t = `${window.location.pathname}${window.location.search}`, n = `/auth/login?reason=session-expired&returnTo=${encodeURIComponent(t)}`, r = /^\/vibecontrols\/(share|deck)\//.test(window.location.pathname);
403
410
  if (window.location.pathname.startsWith("/auth/") || e(window.location.pathname) || r) {
@@ -405,15 +412,15 @@ function we({ config: n, children: r, clearAuthStore: a }) {
405
412
  return;
406
413
  }
407
414
  window.location.replace(n);
408
- }, [a]), G = R(() => ({
415
+ }, [a]), G = z(() => ({
409
416
  globalBaseUrl: y.globalBaseUrl,
410
417
  isRefreshing: F,
411
- refreshPromise: B
412
- }), [y.globalBaseUrl]), K = I(async () => c(G), [G]), q = I(async () => {
418
+ refreshPromise: I
419
+ }), [y.globalBaseUrl]), K = L(async () => c(G), [G]), q = L(async () => {
413
420
  window.location.pathname.startsWith("/auth/") || await K() || W();
414
- }, [K, W]), J = I(async (e) => {
421
+ }, [K, W]), J = L(async (e) => {
415
422
  u(e) ? await K() || W() : console.error("[Network] Backend unreachable:", e.message);
416
- }, [K, W]), Y = I(async (e) => {
423
+ }, [K, W]), Y = L(async (e) => {
417
424
  let t = await s({
418
425
  gateway: "global",
419
426
  baseUrl: y.globalBaseUrl,
@@ -428,7 +435,7 @@ function we({ config: n, children: r, clearAuthStore: a }) {
428
435
  refreshToken: n.refreshToken,
429
436
  expiresAt: n.expiresIn ? Date.now() + n.expiresIn * 1e3 : void 0
430
437
  };
431
- }, [y.globalBaseUrl]), X = I(() => t("organization"), []), Z = R(() => {
438
+ }, [y.globalBaseUrl]), X = L(() => t("organization"), []), Z = z(() => {
432
439
  let e = new fe({
433
440
  queryCache: new de({ onError: (e) => {
434
441
  i(e);
@@ -449,24 +456,24 @@ function we({ config: n, children: r, clearAuthStore: a }) {
449
456
  });
450
457
  return e;
451
458
  }, [k]);
452
- return L(() => {
459
+ return R(() => {
453
460
  let e = ee.getInstance();
454
461
  e.getLogger("shell") || e.getLogger("shell").addTransport(new te());
455
- }, []), /* @__PURE__ */ V(d, {
462
+ }, []), /* @__PURE__ */ H(d, {
456
463
  value: N,
457
- children: /* @__PURE__ */ V(ce, {
464
+ children: /* @__PURE__ */ H(ce, {
458
465
  appName: m,
459
466
  appVersion: M.appVersion,
460
467
  appEnv: M.appEnv,
461
468
  sourceMfe: m,
462
- children: /* @__PURE__ */ V(h, {
469
+ children: /* @__PURE__ */ H(h, {
463
470
  FallbackComponent: ne,
464
- children: /* @__PURE__ */ H(le, { children: [/* @__PURE__ */ V(Ce, {
471
+ children: /* @__PURE__ */ U(le, { children: [/* @__PURE__ */ H(we, {
465
472
  config: M,
466
473
  productSlug: m
467
- }), /* @__PURE__ */ V(pe, {
474
+ }), /* @__PURE__ */ H(pe, {
468
475
  client: Z,
469
- children: /* @__PURE__ */ V(ie, { children: /* @__PURE__ */ V(ae, {
476
+ children: /* @__PURE__ */ H(ie, { children: /* @__PURE__ */ H(ae, {
470
477
  workspaceBaseUrl: y.workspaceBaseUrl,
471
478
  globalBaseUrl: y.globalBaseUrl,
472
479
  organizationId: X,
@@ -476,13 +483,13 @@ function we({ config: n, children: r, clearAuthStore: a }) {
476
483
  onAuthError: q,
477
484
  onNetworkError: J,
478
485
  onRefreshToken: K,
479
- children: /* @__PURE__ */ V(f, {
486
+ children: /* @__PURE__ */ H(f, {
480
487
  bridgeUrl: b?.url,
481
488
  bridgeAllowedOrigins: b?.allowedOrigins,
482
489
  bridgeDebug: b?.debug,
483
490
  onRefreshToken: Y,
484
491
  onBridgeReady: () => {
485
- U.current = !1;
492
+ V.current = !1;
486
493
  },
487
494
  onSessionExpiringSoon: () => {
488
495
  console.warn("[Auth] Session will expire in 5 minutes");
@@ -490,19 +497,19 @@ function we({ config: n, children: r, clearAuthStore: a }) {
490
497
  onTokenExpired: () => {
491
498
  W();
492
499
  },
493
- children: /* @__PURE__ */ V(p, {
500
+ children: /* @__PURE__ */ H(p, {
494
501
  syncToUrl: !0,
495
- children: /* @__PURE__ */ V(re, { children: /* @__PURE__ */ V(ye, {
502
+ children: /* @__PURE__ */ H(re, { children: /* @__PURE__ */ H(be, {
496
503
  i18nProductId: v,
497
504
  fallbackTranslations: O,
498
505
  defaultBrand: x,
499
506
  defaultMode: S,
500
507
  defaultDensity: C,
501
508
  defaultTypography: oe,
502
- defaultGlass: w,
509
+ defaultGlass: se,
503
510
  productName: o,
504
511
  brandInitial: T,
505
- enablePWA: se,
512
+ enablePWA: w,
506
513
  toasterPosition: A,
507
514
  children: r
508
515
  }) })
@@ -515,4 +522,4 @@ function we({ config: n, children: r, clearAuthStore: a }) {
515
522
  });
516
523
  }
517
524
  //#endregion
518
- export { we as AppShellProvider, Q as resolveAppShellObservabilityConfig };
525
+ export { Te as AppShellProvider, Q as resolveAppShellObservabilityConfig };
@@ -9,7 +9,20 @@ export interface ObservabilityProviderProps {
9
9
  * ObservabilityProvider handles frontend telemetry, including:
10
10
  * 1. Global JS error capture
11
11
  * 2. Unhandled promise rejection capture
12
- * 3. Core Web Vitals monitoring (LCP, CLS, INP)
12
+ * 3. Core Web Vitals monitoring (LCP, CLS, INP, TTFB)
13
+ *
14
+ * TRANSPORT CAVEAT — read before relying on this for RUM.
15
+ * Everything below writes to the END USER'S browser console and nowhere else.
16
+ * There is no beacon, no collector, and no log-shipping agent inside a user's
17
+ * browser, so these values are NOT retrievable off-device and this provider
18
+ * alone does NOT constitute real-user monitoring.
19
+ *
20
+ * The transport that CAN ship these off-device is the event-bus path:
21
+ * AppShellProvider -> ShellTelemetryEmitter (perf.* events) -> OtelBrowserSink,
22
+ * which POSTs to VITE_OTEL_HTTP_ENDPOINT. That sink only mounts when the
23
+ * endpoint is configured; as of 2026-07-16 it is provisioned for no product,
24
+ * so the fleet has no field CWV data. Tracked as the RUM-sink follow-up
25
+ * (see atheletebridge-specs/business/status/PERFORMANCE_REPORT.md).
13
26
  */
14
27
  export declare function ObservabilityProvider({ children, appName, release, environment, }: ObservabilityProviderProps): import("react/jsx-runtime").JSX.Element;
15
28
  //# sourceMappingURL=ObservabilityProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ObservabilityProvider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/shell/ObservabilityProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,OAAO,EACP,OAAO,EACP,WAAW,GACZ,EAAE,0BAA0B,2CA0D5B"}
1
+ {"version":3,"file":"ObservabilityProvider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/shell/ObservabilityProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,OAAO,EACP,OAAO,EACP,WAAW,GACZ,EAAE,0BAA0B,2CAgE5B"}
@@ -1,35 +1,37 @@
1
1
  "use client";
2
- import { G as e, j as t, w as n } from "../../../node_modules/web-vitals/dist/web-vitals.js";
3
- import { useEffect as r } from "react";
4
- import { Fragment as i, jsx as a } from "react/jsx-runtime";
2
+ import { G as e, Q as t, j as n, w as r } from "../../../node_modules/web-vitals/dist/web-vitals.js";
3
+ import { useEffect as i } from "react";
4
+ import { Fragment as a, jsx as o } from "react/jsx-runtime";
5
5
  //#region src/shared/providers/shell/ObservabilityProvider.tsx
6
- function o({ children: o, appName: s, release: c, environment: l }) {
7
- return r(() => {
8
- let r = (e) => {
9
- console.error(`[TELEMETRY][ERROR] app=${s} release=${c} env=${l} type=runtime`, {
6
+ function s({ children: s, appName: c, release: l, environment: u }) {
7
+ return i(() => {
8
+ let i = (e) => {
9
+ console.error(`[TELEMETRY][ERROR] app=${c} release=${l} env=${u} type=runtime`, {
10
10
  message: e.message,
11
11
  filename: e.filename,
12
12
  lineno: e.lineno,
13
13
  colno: e.colno,
14
14
  stack: e.error?.stack
15
15
  });
16
- }, i = (e) => {
17
- console.error(`[TELEMETRY][ERROR] app=${s} release=${c} env=${l} type=unhandledrejection`, { reason: e.reason });
16
+ }, a = (e) => {
17
+ console.error(`[TELEMETRY][ERROR] app=${c} release=${l} env=${u} type=unhandledrejection`, { reason: e.reason });
18
18
  };
19
- return window.addEventListener("error", r), window.addEventListener("unhandledrejection", i), e((e) => {
20
- console.info(`[TELEMETRY][PERF] app=${s} release=${c} env=${l} metric=LCP value=${e.value} id=${e.id}`);
19
+ return window.addEventListener("error", i), window.addEventListener("unhandledrejection", a), e((e) => {
20
+ console.info(`[TELEMETRY][PERF] app=${c} release=${l} env=${u} metric=LCP value=${e.value} id=${e.id}`);
21
+ }), r((e) => {
22
+ console.info(`[TELEMETRY][PERF] app=${c} release=${l} env=${u} metric=CLS value=${e.value} id=${e.id}`);
21
23
  }), n((e) => {
22
- console.info(`[TELEMETRY][PERF] app=${s} release=${c} env=${l} metric=CLS value=${e.value} id=${e.id}`);
24
+ console.info(`[TELEMETRY][PERF] app=${c} release=${l} env=${u} metric=INP value=${e.value} id=${e.id}`);
23
25
  }), t((e) => {
24
- console.info(`[TELEMETRY][PERF] app=${s} release=${c} env=${l} metric=INP value=${e.value} id=${e.id}`);
26
+ console.info(`[TELEMETRY][PERF] app=${c} release=${l} env=${u} metric=TTFB value=${e.value} id=${e.id}`);
25
27
  }), () => {
26
- window.removeEventListener("error", r), window.removeEventListener("unhandledrejection", i);
28
+ window.removeEventListener("error", i), window.removeEventListener("unhandledrejection", a);
27
29
  };
28
30
  }, [
29
- s,
30
31
  c,
31
- l
32
- ]), /* @__PURE__ */ a(i, { children: o });
32
+ l,
33
+ u
34
+ ]), /* @__PURE__ */ o(a, { children: s });
33
35
  }
34
36
  //#endregion
35
- export { o as ObservabilityProvider };
37
+ export { s as ObservabilityProvider };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fe-libs",
3
- "version": "2026.716.1",
3
+ "version": "2026.717.1",
4
4
  "description": "Burdenoff frontend primitives and domain libraries",
5
5
  "type": "module",
6
6
  "imports": {
@@ -135,6 +135,8 @@
135
135
  "import": "./shared/config/eslint.config.mjs"
136
136
  },
137
137
  "./shared/config/tsconfig.base.json": "./shared/config/tsconfig.base.json",
138
+ "./shared/config/lighthouserc.base.json": "./shared/config/lighthouserc.base.json",
139
+ "./shared/config/lighthouse-budget.json": "./shared/config/lighthouse-budget.json",
138
140
  "./shared/config/prettier.config.mjs": {
139
141
  "types": "./shared/config/prettier.config.d.mts",
140
142
  "import": "./shared/config/prettier.config.mjs"
@@ -0,0 +1,19 @@
1
+ [
2
+ {
3
+ "path": "/*",
4
+ "timings": [
5
+ { "metric": "largest-contentful-paint", "budget": 2500 },
6
+ { "metric": "cumulative-layout-shift", "budget": 0.1 },
7
+ { "metric": "total-blocking-time", "budget": 200 },
8
+ { "metric": "interactive", "budget": 3500 },
9
+ { "metric": "first-contentful-paint", "budget": 1800 }
10
+ ],
11
+ "resourceSizes": [
12
+ { "resourceType": "script", "budget": 1000 },
13
+ { "resourceType": "stylesheet", "budget": 150 },
14
+ { "resourceType": "image", "budget": 500 },
15
+ { "resourceType": "font", "budget": 200 },
16
+ { "resourceType": "total", "budget": 2000 }
17
+ ]
18
+ }
19
+ ]