@omg-dev/app 0.6.1 → 0.6.3

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.
@@ -99,6 +99,11 @@ export interface EmbeddedViewer {
99
99
  avatar?: string;
100
100
  }
101
101
 
102
+ export type EmbeddedAnalyticsEventHandler = (
103
+ name: string,
104
+ data?: Record<string, unknown>,
105
+ ) => void;
106
+
102
107
  export interface OmgAppSurfaceProps {
103
108
  transport: OmgTransport;
104
109
  assetBaseUrl?: string;
@@ -112,6 +117,8 @@ export interface OmgAppSurfaceProps {
112
117
  * keep provider connections as an optional Settings action.
113
118
  */
114
119
  connectionOnboarding?: boolean;
120
+ /** Deliver embedded product events through the host's analytics client. */
121
+ onAnalyticsEvent?: EmbeddedAnalyticsEventHandler;
115
122
  /**
116
123
  * Personalizes hosted welcome/status copy without changing LFG roster,
117
124
  * session ownership, filtering, or authorization semantics.
package/dist-lib/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import "react/jsx-runtime";
2
2
  import "react";
3
3
  import "@tanstack/react-router";
4
- import { af as m, ag as o, ah as s } from "./embedded-PUsgcSTE.js";
4
+ import { af as m, ag as o, ah as s } from "./embedded-DPWsHnEw.js";
5
5
  export {
6
6
  m as OmgAppSurface,
7
7
  o as OmgSettingsSurface,
@@ -0,0 +1,21 @@
1
+ import { f as h } from "./embedded-DPWsHnEw.js";
2
+ /**
3
+ * @license lucide-react v0.577.0 - ISC
4
+ *
5
+ * This source code is licensed under the ISC license.
6
+ * See the LICENSE file in the root directory of this source tree.
7
+ */
8
+ const e = [
9
+ ["path", { d: "M10 8h.01", key: "1r9ogq" }],
10
+ ["path", { d: "M12 12h.01", key: "1mp3jc" }],
11
+ ["path", { d: "M14 8h.01", key: "1primd" }],
12
+ ["path", { d: "M16 12h.01", key: "1l6xoz" }],
13
+ ["path", { d: "M18 8h.01", key: "emo2bl" }],
14
+ ["path", { d: "M6 8h.01", key: "x9i8wu" }],
15
+ ["path", { d: "M7 16h10", key: "wp8him" }],
16
+ ["path", { d: "M8 12h.01", key: "czm47f" }],
17
+ ["rect", { width: "20", height: "16", x: "2", y: "4", rx: "2", key: "18n3k1" }]
18
+ ], d = h("keyboard", e);
19
+ export {
20
+ d as K
21
+ };
@@ -1,5 +1,5 @@
1
1
  import { jsx as t, jsxs as s, Fragment as R } from "react/jsx-runtime";
2
- import { r as X, P as J, a as le, f as oe, g as ie, h as ce, X as K, A as P, R as Y, i as de, S as ue, j as Z, T as me, k as he, l as pe, C as fe, L as ge } from "./embedded-PUsgcSTE.js";
2
+ import { r as X, P as J, a as le, g as oe, h as ie, i as ce, X as K, A as P, R as Y, j as de, S as ue, k as Z, T as me, l as he, m as pe, C as fe, L as ge } from "./embedded-DPWsHnEw.js";
3
3
  import { cn as x } from "cnfast";
4
4
  import { useState as a, useRef as E, useEffect as C, useCallback as xe } from "react";
5
5
  function be(r) {
@@ -1,5 +1,5 @@
1
1
  import { jsx as s, jsxs as a, Fragment as w } from "react/jsx-runtime";
2
- import { a as $, D as C, b as T, c as M, d as D, G as S, e as F, t as L, L as R } from "./embedded-PUsgcSTE.js";
2
+ import { a as $, D as C, b as T, c as M, d as D, G as S, e as F, t as L, L as R } from "./embedded-DPWsHnEw.js";
3
3
  import { useState as g, useCallback as j, useEffect as z } from "react";
4
4
  import "@base-ui/react/collapsible";
5
5
  import { cn as P } from "cnfast";
@@ -1,6 +1,6 @@
1
1
  import { jsxs as o, jsx as r, Fragment as ce } from "react/jsx-runtime";
2
2
  import { useState as f, useEffect as v, useRef as ue, useContext as _e, useMemo as $e } from "react";
3
- import { z as ze, E as me, F as Se, H as _, I as fe, J as Te, N as Pe, O as je, B as Fe, L as he, Q as Ge, j as Q, C as Ye, R as Be, T as Ke, U as Ue, u as pe, p as He, V as Ve, a as C, W as N, Y as D, v as R, Z as X, _ as Je, $ as Qe, a0 as Xe, a1 as qe, m as Oe, a2 as We } from "./embedded-PUsgcSTE.js";
3
+ import { f as Se, E as me, F as Te, H as _, I as fe, J as ze, N as Pe, O as Fe, B as Ge, L as he, Q as je, k as J, C as Ye, R as Be, T as Ke, U as Ue, v as pe, q as He, V as Ve, a as C, W as N, Y as D, w as R, Z as Q, _ as qe, $ as Je, a0 as Qe, a1 as Xe, n as Oe, a2 as We } from "./embedded-DPWsHnEw.js";
4
4
  import { cn as $ } from "cnfast";
5
5
  /**
6
6
  * @license lucide-react v0.577.0 - ISC
@@ -19,7 +19,7 @@ const Ze = [
19
19
  ["path", { d: "M7 11h10", key: "1twpyw" }],
20
20
  ["path", { d: "M7 15h6", key: "d9of3u" }],
21
21
  ["path", { d: "M7 7h8", key: "af5zfr" }]
22
- ], et = ze("message-square-text", Ze), O = "lfg-notification-read-state", tt = "lfg_notification_reads_v1:";
22
+ ], et = Se("message-square-text", Ze), O = "lfg-notification-read-state", tt = "lfg_notification_reads_v1:";
23
23
  function be(n) {
24
24
  return `${tt}${n?.trim().toLowerCase() || "__device__"}`;
25
25
  }
@@ -43,10 +43,10 @@ function xe(n, i) {
43
43
  })
44
44
  )), i;
45
45
  }
46
- function z(n) {
46
+ function S(n) {
47
47
  return `shipped:${n.id}:${n.rev}`;
48
48
  }
49
- function q(n, i) {
49
+ function X(n, i) {
50
50
  return n ? i.ts > n.through && !n.ids.includes(i.id) : !1;
51
51
  }
52
52
  function st(n, i) {
@@ -69,7 +69,7 @@ function nt({
69
69
  children: c
70
70
  }) {
71
71
  return /* @__PURE__ */ o("div", { className: "relative h-32 w-full overflow-hidden bg-background", children: [
72
- /* @__PURE__ */ r(Qe, { path: n, cacheKey: i, className: "h-full w-full" }),
72
+ /* @__PURE__ */ r(Je, { path: n, cacheKey: i, className: "h-full w-full" }),
73
73
  c
74
74
  ] });
75
75
  }
@@ -98,7 +98,7 @@ function at({
98
98
  className: "relative size-[52px] shrink-0 overflow-hidden rounded-lg border border-border/60 bg-muted transition-transform active:scale-[0.97]",
99
99
  children: [
100
100
  l.kind === "image" ? /* @__PURE__ */ r(
101
- Xe,
101
+ Qe,
102
102
  {
103
103
  path: l.url,
104
104
  alt: l.caption || l.name,
@@ -109,7 +109,7 @@ function at({
109
109
  // Deliberately an icon, not a live preview. A document scaled into a
110
110
  // 52px box is two words of giant text — unreadable, and it costs a
111
111
  // fetch + parse per row. The Artifacts page is where previews belong.
112
- /* @__PURE__ */ r("span", { className: "flex size-full items-center justify-center bg-primary/10 text-primary", children: /* @__PURE__ */ r(qe, { className: "size-4" }) })
112
+ /* @__PURE__ */ r("span", { className: "flex size-full items-center justify-center bg-primary/10 text-primary", children: /* @__PURE__ */ r(Xe, { className: "size-4" }) })
113
113
  ) : /* @__PURE__ */ r("span", { className: "flex size-full items-center justify-center bg-black/80 text-white/80", children: /* @__PURE__ */ r(Oe, { className: "size-4" }) }),
114
114
  u > 0 ? /* @__PURE__ */ o("span", { className: "absolute inset-x-0 bottom-0 bg-black/55 py-0.5 text-center text-[9px] font-semibold text-white", children: [
115
115
  "+",
@@ -142,13 +142,13 @@ function ut({
142
142
  artifactsOnly: p = !1,
143
143
  active: g = !0
144
144
  }) {
145
- const h = p ? "artifacts" : "feed", S = p ? me(D) : null, T = p ? null : me(X), [m, P] = f(() => T?.items ?? null), [j, W] = f(() => T?.total ?? 0), [F, Z] = f(!1), [w, k] = f(
145
+ const h = p ? "artifacts" : "feed", T = p ? me(D) : null, z = p ? null : me(Q), [m, P] = f(() => z?.items ?? null), [F, W] = f(() => z?.total ?? 0), [G, Z] = f(!1), [w, k] = f(
146
146
  () => p ? null : L(u)
147
- ), [G, ee] = f(!1), [Y, te] = f(null), { questions: b, busy: ye, dismissAll: ve } = Se(), [B, M] = f(!1);
147
+ ), [j, ee] = f(!1), [Y, te] = f(null), { questions: b, busy: ye, dismissAll: ve } = Te(), [B, M] = f(!1);
148
148
  v(() => {
149
149
  M(!1);
150
150
  }, [b.length]);
151
- const [y, A] = f(() => S?.items ?? null), [E, K] = f(() => S?.total ?? 0), [U, re] = f(!1), [se, ne] = f(null), [ae, ie] = f(null), oe = "&kind=html", I = ue(Math.max(_, S?.items.length ?? 0)), H = ue(Math.max(fe, T?.items.length ?? 0)), le = _e(Te), Ne = Pe();
151
+ const [y, A] = f(() => T?.items ?? null), [E, K] = f(() => T?.total ?? 0), [U, re] = f(!1), [se, ne] = f(null), [ae, ie] = f(null), oe = "&kind=html", I = ue(Math.max(_, T?.items.length ?? 0)), H = ue(Math.max(fe, z?.items.length ?? 0)), le = _e(ze), Ne = Pe();
152
152
  v(() => {
153
153
  h === "feed" && k(L(u));
154
154
  }, [u, h]), v(() => {
@@ -173,7 +173,7 @@ function ut({
173
173
  if (!e) return;
174
174
  const s = Array.isArray(a.artifacts) ? a.artifacts : [], x = a.total ?? s.length;
175
175
  A((Re) => {
176
- const Le = new Set(s.map((J) => J.id)), Me = (Re ?? []).filter((J) => !Le.has(J.id)), V = [...s, ...Me];
176
+ const Le = new Set(s.map((q) => q.id)), Me = (Re ?? []).filter((q) => !Le.has(q.id)), V = [...s, ...Me];
177
177
  return I.current = Math.max(_, V.length), N(D, V, x), V;
178
178
  }), K(x);
179
179
  } catch {
@@ -264,19 +264,19 @@ function ut({
264
264
  };
265
265
  v(() => {
266
266
  if (!(h !== "feed" || !g))
267
- return je((e) => {
267
+ return Fe((e) => {
268
268
  if (!e.ok) {
269
269
  P((t) => (t === null && te(e.error), t));
270
270
  return;
271
271
  }
272
272
  P((t) => {
273
273
  const d = new Set(e.posts.map((x) => x.id)), a = (t ?? []).filter((x) => !d.has(x.id)), s = [...e.posts, ...a];
274
- return H.current = Math.max(We, s.length), N(X, s, e.total), s;
274
+ return H.current = Math.max(We, s.length), N(Q, s, e.total), s;
275
275
  }), W(e.total), te(null);
276
276
  });
277
277
  }, [h, g]);
278
278
  const Ee = async () => {
279
- if (!F) {
279
+ if (!G) {
280
280
  Z(!0);
281
281
  try {
282
282
  const e = await C(
@@ -285,7 +285,7 @@ function ut({
285
285
  );
286
286
  P((t) => {
287
287
  const d = new Set((t ?? []).map((s) => s.id)), a = [...t ?? [], ...e.posts.filter((s) => !d.has(s.id))];
288
- return H.current = a.length, N(X, a, e.total ?? j), a;
288
+ return H.current = a.length, N(Q, a, e.total ?? F), a;
289
289
  }), W((t) => e.total ?? t);
290
290
  } catch {
291
291
  } finally {
@@ -293,8 +293,8 @@ function ut({
293
293
  }
294
294
  }
295
295
  }, de = m?.filter(
296
- (e) => q(w, {
297
- id: z(e),
296
+ (e) => X(w, {
297
+ id: S(e),
298
298
  ts: e.ts
299
299
  })
300
300
  ).length ?? 0, Ie = $e(() => {
@@ -306,18 +306,18 @@ function ut({
306
306
  }
307
307
  return t;
308
308
  }, [m]), Ce = (e) => {
309
- q(w, {
310
- id: z(e),
309
+ X(w, {
310
+ id: S(e),
311
311
  ts: e.ts
312
312
  }) && k(
313
- st(u, z(e))
313
+ st(u, S(e))
314
314
  );
315
315
  }, De = async () => {
316
- if (!G) {
316
+ if (!j) {
317
317
  ee(!0);
318
318
  try {
319
319
  const e = Math.max(Date.now(), ...(m ?? []).map((t) => t.ts));
320
- k(ge(u, e)), await Je(), R.success("Notifications marked read");
320
+ k(ge(u, e)), await qe(), R.success("Notifications marked read");
321
321
  } finally {
322
322
  ee(!1);
323
323
  }
@@ -333,15 +333,15 @@ function ut({
333
333
  // Icon only. It is a rare, undoable housekeeping action — it does not
334
334
  // need to be the second-loudest thing on the page.
335
335
  /* @__PURE__ */ r(
336
- Fe,
336
+ Ge,
337
337
  {
338
338
  size: "icon-sm",
339
339
  variant: "ghost",
340
340
  "aria-label": "Mark all read",
341
341
  title: "Mark all read — clears the app icon badge",
342
- disabled: G,
342
+ disabled: j,
343
343
  onClick: () => void De(),
344
- children: G ? /* @__PURE__ */ r(he, { className: "size-4 animate-spin" }) : /* @__PURE__ */ r(Ge, { className: "size-4" })
344
+ children: j ? /* @__PURE__ */ r(he, { className: "size-4 animate-spin" }) : /* @__PURE__ */ r(je, { className: "size-4" })
345
345
  }
346
346
  )
347
347
  ) : null
@@ -378,7 +378,7 @@ function ut({
378
378
  ] }) : null }),
379
379
  /* @__PURE__ */ o("div", { className: "px-2.5 py-2 pr-9", children: [
380
380
  /* @__PURE__ */ r("div", { className: "truncate text-xs font-medium", children: e.title || e.caption || e.name }),
381
- /* @__PURE__ */ r("div", { className: "mt-0.5 truncate text-[10px] text-muted-foreground", children: e.lastRefreshedAt ? `Refreshed ${Q(e.lastRefreshedAt)}` : `Published ${Q(e.ts)}` })
381
+ /* @__PURE__ */ r("div", { className: "mt-0.5 truncate text-[10px] text-muted-foreground", children: e.lastRefreshedAt ? `Refreshed ${J(e.lastRefreshedAt)}` : `Published ${J(e.ts)}` })
382
382
  ] })
383
383
  ]
384
384
  }
@@ -469,8 +469,8 @@ function ut({
469
469
  Ie.map((e) => /* @__PURE__ */ o("section", { className: "space-y-1.5", children: [
470
470
  /* @__PURE__ */ r("h2", { className: "px-1 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground", children: e.label }),
471
471
  /* @__PURE__ */ r("div", { className: "overflow-hidden rounded-2xl border border-border bg-card/40 shadow-sm", children: e.items.map((t) => {
472
- const d = !!t.sessionId && l.has(t.sessionId), a = q(w, {
473
- id: z(t),
472
+ const d = !!t.sessionId && l.has(t.sessionId), a = X(w, {
473
+ id: S(t),
474
474
  ts: t.ts
475
475
  }), s = t.mediaItems.length > 0;
476
476
  return /* @__PURE__ */ o("article", { className: "relative border-b border-border/50 last:border-b-0", children: [
@@ -520,7 +520,7 @@ function ut({
520
520
  "· ",
521
521
  t.project
522
522
  ] }) : null,
523
- /* @__PURE__ */ r("span", { className: "ml-auto shrink-0 tabular-nums", children: Q(t.ts) })
523
+ /* @__PURE__ */ r("span", { className: "ml-auto shrink-0 tabular-nums", children: J(t.ts) })
524
524
  ] }),
525
525
  /* @__PURE__ */ r("h3", { className: "mt-0.5 line-clamp-2 text-[13.5px] font-semibold leading-snug tracking-[-0.01em]", children: t.title }),
526
526
  t.summary ? (
@@ -544,14 +544,14 @@ function ut({
544
544
  ] }, t.id);
545
545
  }) })
546
546
  ] }, e.label)),
547
- m !== null && m.length < j ? /* @__PURE__ */ r(
547
+ m !== null && m.length < F ? /* @__PURE__ */ r(
548
548
  "button",
549
549
  {
550
550
  type: "button",
551
551
  onClick: () => void Ee(),
552
- disabled: F,
552
+ disabled: G,
553
553
  className: "w-full rounded-xl border border-border bg-card/40 px-4 py-2.5 text-sm font-medium text-muted-foreground transition-colors hover:border-foreground/20 hover:text-foreground disabled:opacity-60",
554
- children: F ? "Loading…" : `Load more · ${j - m.length} left`
554
+ children: G ? "Loading…" : `Load more · ${F - m.length} left`
555
555
  }
556
556
  ) : null
557
557
  ] })
@@ -3,7 +3,7 @@ import { useMemo as We, useState as Ce, useEffect as xe, useRef as Ve } from "re
3
3
  import { B as Ue, C as T, m as He, E as be, F as G, G as Qe, Q as Je } from "./chunk-BO2N2NFS-BbJdm-59.js";
4
4
  import { b as Xe, c as Ye, a as Ze, d as Ke } from "./engine-compile-D_stzVMa.js";
5
5
  import { cn as je } from "cnfast";
6
- import { a9 as et, x as tt, aa as nt } from "./embedded-PUsgcSTE.js";
6
+ import { a9 as et, y as tt, aa as nt } from "./embedded-DPWsHnEw.js";
7
7
  const d = (
8
8
  /** @type {const} */
9
9
  {