@versini/sassysaint 8.106.0 → 8.107.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/chunks/{AboutChangelog.s7GI6rKD.js → AboutChangelog.SjeBKoP3.js} +2 -2
  2. package/dist/chunks/{AboutEntry.C1pRBz7A.js → AboutEntry.Dx70PfSW.js} +7 -7
  3. package/dist/chunks/{App.BeuOuicv.js → App.CRK1D8_p.js} +30 -32
  4. package/dist/chunks/Bubble.BfOIcmYO.js +183 -0
  5. package/dist/chunks/{Chart.C88S0q6n.js → Chart.BDkv6_qF.js} +2 -2
  6. package/dist/chunks/{ChatBubbleAssistant.nUmdAzup.js → ChatBubbleAssistant.BXp6-ZoJ.js} +462 -430
  7. package/dist/chunks/{ChatBubbleUser.BUuPXYPp.js → ChatBubbleUser.BcziRDGl.js} +3 -3
  8. package/dist/chunks/{ChatHistoryTable.BIjlz3xY.js → ChatHistoryTable.Dh8i_P43.js} +51 -51
  9. package/dist/chunks/{HistoryEntry.B-078Lxf.js → HistoryEntry.CRqDuJuI.js} +29 -28
  10. package/dist/chunks/{LoginEntry.B2RvYN-T.js → LoginEntry.MulnQ2ox.js} +4 -4
  11. package/dist/chunks/{LogoEntry.1MaZ0gB8.js → LogoEntry.DYecYZ2Y.js} +23 -23
  12. package/dist/chunks/{MemoriesEntry.DpL1iLZb.js → MemoriesEntry.agins9xZ.js} +39 -39
  13. package/dist/chunks/{ProfileEntry.T8wth0Is.js → ProfileEntry.DcvJm9lG.js} +4 -4
  14. package/dist/chunks/{SettingsEntry.CjOxw1Yx.js → SettingsEntry.CjUNaeTF.js} +34 -34
  15. package/dist/chunks/{Table.Bgj47jSZ.js → Table.CAFliCT0.js} +1 -1
  16. package/dist/chunks/{UsageEntry.B4I_GNgi.js → UsageEntry._XHUaG2y.js} +5 -5
  17. package/dist/chunks/{index.BBcCFGIa.js → index.BxFuyW85.js} +1 -1
  18. package/dist/chunks/{index.BV0ooasI.js → index.CGRIKPif.js} +1 -1
  19. package/dist/chunks/{index.DlzoJhEl.js → index.COrehOGK.js} +197 -183
  20. package/dist/chunks/{index.CzK9z_fW.js → index.COvsBKt7.js} +2 -2
  21. package/dist/chunks/{index.B3dMRcN0.js → index.ClDN1LM3.js} +3 -3
  22. package/dist/chunks/{index.C09CfrST.js → index.Cvhs29M0.js} +1 -1
  23. package/dist/chunks/{index.DbqNbLqk.js → index.D2r8OZJ8.js} +1 -1
  24. package/dist/chunks/{index.DaJTH3fN.js → index.DnIWTzcM.js} +1 -1
  25. package/dist/chunks/{index.lXY3xvX_.js → index.mPjUzcCU.js} +1 -1
  26. package/dist/chunks/{useMarkdown.BNKEX2AA.js → useMarkdown.B8MP9bLa.js} +7 -7
  27. package/dist/components/SassySaint/SassySaint.js +1 -1
  28. package/dist/index.js +4 -4
  29. package/dist/style.css +2 -2
  30. package/package.json +3 -3
  31. package/dist/chunks/index.B-dNm2To.js +0 -153
@@ -1,7 +1,7 @@
1
1
  import { jsxs as s, jsx as r } from "react/jsx-runtime";
2
- import { useInViewport as m, ButtonScroll as n } from "./App.BeuOuicv.js";
2
+ import { useInViewport as m, ButtonScroll as n } from "./App.CRK1D8_p.js";
3
3
  import { useRef as f, useCallback as u, useLayoutEffect as p } from "react";
4
- import { useMarkdown as d } from "./useMarkdown.BNKEX2AA.js";
4
+ import { useMarkdown as d } from "./useMarkdown.B8MP9bLa.js";
5
5
  const b = ({ content: o }) => {
6
6
  const [l, t] = d(), { ref: a, inViewport: i } = m(), e = f(null), c = u(() => {
7
7
  e.current && e.current.scrollIntoView({
@@ -1,14 +1,14 @@
1
1
  import { jsxs as b, Fragment as n, jsx as e } from "react/jsx-runtime";
2
- import { pluralize as g, isProbablyMobile as A, Panel as f, CancelButton as B } from "./App.BeuOuicv.js";
3
- import { useUniqueId as c, CARDS as r, ABOUT_TITLE as E, L as I, j as S } from "./LogoEntry.1MaZ0gB8.js";
2
+ import { pluralize as g, isProbablyMobile as A, Panel as f, CancelButton as B } from "./App.CRK1D8_p.js";
3
+ import { useUniqueId as c, CARDS as r, ABOUT_TITLE as E, L as I, j as S } from "./LogoEntry.DYecYZ2Y.js";
4
4
  import { Suspense as C, lazy as O, useRef as U } from "react";
5
- import { Card as t } from "./index.lXY3xvX_.js";
5
+ import { Card as t } from "./index.mPjUzcCU.js";
6
6
  import L from "clsx";
7
- import { useServerCapabilities as N, useChangelogs as R, renderDataAsList as d } from "./index.DlzoJhEl.js";
7
+ import { useServerCapabilities as N, useChangelogs as R, renderDataAsList as d } from "./index.COrehOGK.js";
8
8
  const _ = O(
9
9
  () => import(
10
10
  /* webpackChunkName: "LazyAboutChangelog" */
11
- "./AboutChangelog.s7GI6rKD.js"
11
+ "./AboutChangelog.SjeBKoP3.js"
12
12
  )
13
13
  ), k = () => {
14
14
  const o = c(), i = c(), { data: s, isSuccess: m } = N(), { data: u, isSuccess: h } = R(), T = s?.version || "", a = s?.models || [], p = s?.buildTime || "";
@@ -20,8 +20,8 @@ const _ = O(
20
20
  className: "prose-dark dark:prose-lighter mb-4",
21
21
  noBorder: !0,
22
22
  children: d(o, {
23
- [r.ABOUT.VERSION]: "8.106.0",
24
- [r.ABOUT.BUILD_TIMESTAMP]: "12/21/2025 01:29 PM EST"
23
+ [r.ABOUT.VERSION]: "8.107.0",
24
+ [r.ABOUT.BUILD_TIMESTAMP]: "12/22/2025 08:27 PM EST"
25
25
  })
26
26
  }
27
27
  ),
@@ -1,8 +1,8 @@
1
1
  import { jsx as h, jsxs as $, Fragment as ct } from "react/jsx-runtime";
2
- import { ACTION_SORT as au, ACTION_SEARCH as iu, ACTION_RESET_PROMPT as Za, ACTION_TOGGLE_PROMPT as Fa, LOCAL_STORAGE_PREFIX as je, LOCAL_STORAGE_CHAT_ID as Vn, n as $e, isDev as cu, isTauri as on, useChat as lu, DEFAULT_ICON_ACTION_SIZE as Qe, useUserPreferences as vt, serverUrl as Ua, useEntitlements as No, useSaveChat as uu, LOCAL_STORAGE_PRIVATE_DISCLOSURE as du, w as er, LOCAL_STORAGE_REASONING_DISCLOSURE as fu, PROMPT_EDITABLE_AREA_CLASSNAME as pu, PROMPT_CLASSNAME as mu, j as ja, ERROR_MESSAGE as hu, o as sn, U as gu, INPUT_BOTTOM_OFFSET_IPHONE as vu, INPUT_BOTTOM_OFFSET_IPAD as yu, INPUT_BOTTOM_OFFSET as Ba, INPUT_BOTTOM_OFFSET_EXTRA as zr, getLayoutPaddingClass as lo, canEvaluateModels as ls, k as wu, a as bu, i as _u, s as Eu, x as Su, p as Zr, setNewProvider as us, useQueryClient as Iu, n$1 as Va, useServerCapabilities as Cu, getMessageContaintWrapperClass as Tu, UI_FOOTER_BUFFER as Ha, UI_BUTTON_SCROLL_BUFFER as xu, UI_DEFAULT_MAIN_HEIGHT as ds, e as Au, applyOledMode as Ru, UI_DEFAULT_MAIN_HEIGHT_IPHONE as Ou, y as fs, v as Nu, LOCAL_STORAGE_SORT as Mu, LOCAL_STORAGE_SEARCH as ku, LOCAL_STORAGE_OLED_MODE as Pu, LOCAL_STORAGE_FULL_SCREEN as Du, LOCAL_STORAGE_SORT_TIMESTAMP as $u, LOCAL_STORAGE_SORT_TOKEN_USAGE as Lu } from "./index.DlzoJhEl.js";
2
+ import { ACTION_SORT as au, ACTION_SEARCH as iu, ACTION_RESET_PROMPT as Za, ACTION_TOGGLE_PROMPT as Fa, LOCAL_STORAGE_PREFIX as je, LOCAL_STORAGE_CHAT_ID as Vn, n as $e, isDev as cu, isTauri as on, useChat as lu, DEFAULT_ICON_ACTION_SIZE as Qe, useUserPreferences as vt, serverUrl as Ua, useEntitlements as No, useSaveChat as uu, LOCAL_STORAGE_PRIVATE_DISCLOSURE as du, w as er, LOCAL_STORAGE_REASONING_DISCLOSURE as fu, PROMPT_EDITABLE_AREA_CLASSNAME as pu, PROMPT_CLASSNAME as mu, j as ja, ERROR_MESSAGE as hu, o as sn, U as gu, INPUT_BOTTOM_OFFSET_IPHONE as vu, INPUT_BOTTOM_OFFSET_IPAD as yu, INPUT_BOTTOM_OFFSET as Ba, INPUT_BOTTOM_OFFSET_EXTRA as zr, getLayoutPaddingClass as lo, canEvaluateModels as ls, k as wu, a as bu, i as _u, s as Eu, x as Su, p as Zr, setNewProvider as us, useQueryClient as Iu, n$1 as Va, useServerCapabilities as Cu, getMessageContaintWrapperClass as Tu, UI_FOOTER_BUFFER as Ha, UI_BUTTON_SCROLL_BUFFER as xu, UI_DEFAULT_MAIN_HEIGHT as ds, e as Au, applyOledMode as Ru, UI_DEFAULT_MAIN_HEIGHT_IPHONE as Ou, y as fs, v as Nu, LOCAL_STORAGE_SORT as Mu, LOCAL_STORAGE_SEARCH as ku, LOCAL_STORAGE_OLED_MODE as Pu, LOCAL_STORAGE_FULL_SCREEN as Du, LOCAL_STORAGE_SORT_TIMESTAMP as $u, LOCAL_STORAGE_SORT_TOKEN_USAGE as Lu } from "./index.COrehOGK.js";
3
3
  import * as w from "react";
4
4
  import st, { useSyncExternalStore as Hn, useCallback as G, useEffect as U, useRef as X, useState as B, createContext as Wa, useContext as ue, useMemo as xe, forwardRef as wr, useId as Ga, useLayoutEffect as vn, cloneElement as Ka, Suspense as tr, lazy as nt, useReducer as Rn } from "react";
5
- import { e as tn, ChatContext as Le, useTheme as Ke, ButtonIcon as rt, IconAddLight as zu, IconCloseLight as Zu, IconEditLight as Fu, Button as Ya, L as uo, j as Ft, IconLockedLight as Uu, IconUnlockedLight as ju, IconNext as Bu, IconSelected as Vu, IconUnSelected as Hu, PromptsContext as Mo, IconBookSparklesLight as Wu, IconRewrite as Gu, IconProofread as Ku, IconMagic as Yu, IconLightBulbLight as Ju, IconSendLight as Xu, INPUT_PLACEHOLDER_TEXT_IN_SESSION as Ja, INPUT_PLACEHOLDER_TEXT_MORNING as qu, INPUT_PLACEHOLDER_TEXT_TODAY as Qu, INPUT_PLACEHOLDER_TEXT_AFTERNOON as ed, INPUT_PLACEHOLDER_TEXT_EVENING as td, INPUT_PLACEHOLDER_TEXT_NIGHT as nd, INPUT_PLACEHOLDER_TEXT_DEFAULT as rd, IconClose as od, AppContext as yn, useUniqueId as sd, CLIPBOARD_PROMPT as ps, FOOTER_DISCLAIMERS as ms, useResizeObserver as Xa, APP_SET_FOOTER_HEIGHT as ad, FOOTER_TOP as fo, FOOTER_BOTTOM as nn, APP_SET_FOOTER_POSITION as Fr, IconOpenAI as id, IconAnthropic as cd, IconGoogleGemini as ld, TOAST_PROVIDER_CHANGED as hs, LOG_OUT as gs, IconProfile as ud, IconSliders as dd, IconHistory as fd, IconEditUser as pd, IconChart as md, IconInfo as hd, IconBack as gd, IconSettings as vd, Logo as yd, appReducer as wd, APP_SET_OLED_MODE as bd, APP_SET_FULL_SCREEN as _d, APP_SET_THEME_MODE as Ed, APP_SET_THEME_PALETTE as Sd, HistoryContext as Id, APP_CLASSNAME as Cd, TOAST_CACHE_ENABLED as Td, TOAST_CACHE_DISABLED as xd } from "./LogoEntry.1MaZ0gB8.js";
5
+ import { e as tn, ChatContext as Le, useTheme as Ke, ButtonIcon as rt, IconAddLight as zu, IconCloseLight as Zu, IconEditLight as Fu, Button as Ya, L as uo, j as Ft, IconLockedLight as Uu, IconUnlockedLight as ju, IconNext as Bu, IconSelected as Vu, IconUnSelected as Hu, PromptsContext as Mo, IconBookSparklesLight as Wu, IconRewrite as Gu, IconProofread as Ku, IconMagic as Yu, IconLightBulbLight as Ju, IconSendLight as Xu, INPUT_PLACEHOLDER_TEXT_IN_SESSION as Ja, INPUT_PLACEHOLDER_TEXT_MORNING as qu, INPUT_PLACEHOLDER_TEXT_TODAY as Qu, INPUT_PLACEHOLDER_TEXT_AFTERNOON as ed, INPUT_PLACEHOLDER_TEXT_EVENING as td, INPUT_PLACEHOLDER_TEXT_NIGHT as nd, INPUT_PLACEHOLDER_TEXT_DEFAULT as rd, IconClose as od, AppContext as yn, useUniqueId as sd, CLIPBOARD_PROMPT as ps, FOOTER_DISCLAIMERS as ms, useResizeObserver as Xa, APP_SET_FOOTER_HEIGHT as ad, FOOTER_TOP as fo, FOOTER_BOTTOM as nn, APP_SET_FOOTER_POSITION as Fr, IconOpenAI as id, IconAnthropic as cd, IconGoogleGemini as ld, TOAST_PROVIDER_CHANGED as hs, LOG_OUT as gs, IconProfile as ud, IconSliders as dd, IconHistory as fd, IconEditUser as pd, IconChart as md, IconInfo as hd, IconBack as gd, IconSettings as vd, Logo as yd, appReducer as wd, APP_SET_OLED_MODE as bd, APP_SET_FULL_SCREEN as _d, APP_SET_THEME_MODE as Ed, APP_SET_THEME_PALETTE as Sd, HistoryContext as Id, APP_CLASSNAME as Cd, TOAST_CACHE_ENABLED as Td, TOAST_CACHE_DISABLED as xd } from "./LogoEntry.DYecYZ2Y.js";
6
6
  import Z, { clsx as lt } from "clsx";
7
7
  import { useMergeRefs as Ad, FloatingPortal as Rd, FloatingOverlay as Od, FloatingFocusManager as Nd, useFloating as Md, useClick as kd, useDismiss as Pd, useRole as Dd, useInteractions as $d } from "@floating-ui/react";
8
8
  import * as qa from "react-dom";
@@ -106,12 +106,7 @@ const vI = (e, t) => {
106
106
  return String.fromCharCode(+`0x${r}`);
107
107
  })), _I = (e) => decodeURIComponent(window.atob(e).split("").map(function(t) {
108
108
  return `%${`00${t.charCodeAt(0).toString(16)}`.slice(-2)}`;
109
- }).join("")), EI = (e) => {
110
- if (!e)
111
- return "";
112
- const t = e.replace(/([A-Z])/g, " $1").replace(/\s+/g, " ").trim();
113
- return t ? t.charAt(0).toUpperCase() + t.slice(1) : "";
114
- };
109
+ }).join(""));
115
110
  var ni = "vercel.ai.error", jd = Symbol.for(ni), ri, Bd = class oi extends Error {
116
111
  /**
117
112
  * Creates an AI SDK Error.
@@ -5841,7 +5836,7 @@ const sc = async () => (Gr || (Gr = import(
5841
5836
  "./index.790ujKXR.js"
5842
5837
  )), Gr), ac = async () => (Kr || (Kr = import(
5843
5838
  /* webpackChunkName: "toast-utilities" */
5844
- "./index.DlzoJhEl.js"
5839
+ "./index.COrehOGK.js"
5845
5840
  ).then((e) => e.utilities)), Kr), kv = async () => {
5846
5841
  try {
5847
5842
  await Promise.all([sc(), ac()]);
@@ -5881,17 +5876,18 @@ const sc = async () => (Gr || (Gr = import(
5881
5876
  privateChat: t.payload.privateChat
5882
5877
  };
5883
5878
  case xt: {
5884
- let n = !1, r = !1, o = !1, s = !1, i = "", a = 0, c = e.tokenUsage;
5885
- return typeof t?.payload?.loading == "boolean" ? o = t.payload.loading : typeof e.loading == "boolean" && (o = e.loading), typeof t?.payload?.streaming == "boolean" ? r = t.payload.streaming : typeof e.streaming == "boolean" && (r = e.streaming), typeof t?.payload?.restoring == "boolean" ? (n = t.payload.restoring, i = t.payload.restoredModel || "", a = t.payload.restoredUsage || 0, n && (c = a)) : typeof e.restoring == "boolean" && (n = e.restoring, i = e.restoredModel || "", a = e.restoredUsage || 0), typeof t?.payload?.aborted == "boolean" ? s = t.payload.aborted : typeof e.aborted == "boolean" && (s = e.aborted), (r || o) && (n = !1, i = "", a = 0, s = !1), {
5879
+ let n = !1, r = !1, o = !1, s = !1, i = "", a = "", c = 0, l = e.tokenUsage;
5880
+ return typeof t?.payload?.loading == "boolean" ? o = t.payload.loading : typeof e.loading == "boolean" && (o = e.loading), typeof t?.payload?.streaming == "boolean" ? r = t.payload.streaming : typeof e.streaming == "boolean" && (r = e.streaming), typeof t?.payload?.restoring == "boolean" ? (n = t.payload.restoring, i = t.payload.restoredModel || "", a = t.payload.restoredTimestamp || "", c = t.payload.restoredUsage || 0, n && (l = c)) : typeof e.restoring == "boolean" && (n = e.restoring, i = e.restoredModel || "", a = e.restoredTimestamp || "", c = e.restoredUsage || 0), typeof t?.payload?.aborted == "boolean" ? s = t.payload.aborted : typeof e.aborted == "boolean" && (s = e.aborted), (r || o) && (n = !1, i = "", a = "", c = 0, s = !1), {
5886
5881
  ...e,
5887
5882
  reseting: !1,
5888
5883
  streaming: r,
5889
5884
  loading: o,
5890
5885
  restoring: n,
5891
5886
  restoredModel: i,
5892
- restoredUsage: a,
5887
+ restoredTimestamp: a,
5888
+ restoredUsage: c,
5893
5889
  aborted: s,
5894
- tokenUsage: t.payload.tokenUsage ? c + t.payload.tokenUsage : c,
5890
+ tokenUsage: t.payload.tokenUsage ? l + t.payload.tokenUsage : l,
5895
5891
  attachments: t.payload.attachments !== void 0 ? t.payload.attachments : e.attachments,
5896
5892
  lastStreamingTimestamp: r ? Date.now() : e.lastStreamingTimestamp
5897
5893
  };
@@ -5912,6 +5908,7 @@ const sc = async () => (Gr || (Gr = import(
5912
5908
  streaming: !1,
5913
5909
  loading: !1,
5914
5910
  restoring: !1,
5911
+ restoredTimestamp: "",
5915
5912
  aborted: !1,
5916
5913
  lastResetTimestamp: Date.now(),
5917
5914
  lastStreamingTimestamp: 0
@@ -6237,6 +6234,7 @@ const ta = ({
6237
6234
  loading: !1,
6238
6235
  restoring: !0,
6239
6236
  restoredModel: u?.model || "",
6237
+ restoredTimestamp: u?.timestamp || "",
6240
6238
  restoredUsage: u?.tokenUsage || 0
6241
6239
  }
6242
6240
  }), t(c), n(u.messages), a(!0));
@@ -12398,38 +12396,38 @@ const uS = [".png", ".jpg", ".jpeg", ".webp"], dS = [".pdf", ".txt"], fS = [
12398
12396
  }, jS = nt(
12399
12397
  () => import(
12400
12398
  /* webpackChunkName: "modal-chunk" */
12401
- "./ProfileEntry.T8wth0Is.js"
12399
+ "./ProfileEntry.DcvJm9lG.js"
12402
12400
  ).then((e) => ({
12403
12401
  default: e.Profile
12404
12402
  }))
12405
12403
  ), BS = nt(
12406
12404
  () => import(
12407
12405
  /* webpackChunkName: "modal-chunk" */
12408
- "./SettingsEntry.CjOxw1Yx.js"
12406
+ "./SettingsEntry.CjUNaeTF.js"
12409
12407
  ).then((e) => ({
12410
12408
  default: e.SettingsPanel
12411
12409
  }))
12412
12410
  ), VS = nt(
12413
12411
  () => import(
12414
12412
  /* webpackChunkName: "modal-chunk" */
12415
- "./HistoryEntry.B-078Lxf.js"
12413
+ "./HistoryEntry.CRqDuJuI.js"
12416
12414
  ).then((e) => ({
12417
12415
  default: e.HistoryPanel
12418
12416
  }))
12419
12417
  ), HS = nt(
12420
12418
  () => import(
12421
12419
  /* webpackChunkName: "modal-chunk" */
12422
- "./AboutEntry.C1pRBz7A.js"
12420
+ "./AboutEntry.Dx70PfSW.js"
12423
12421
  ).then((e) => ({ default: e.About }))
12424
12422
  ), WS = nt(
12425
12423
  () => import(
12426
12424
  /* webpackChunkName: "modal-chunk" */
12427
- "./UsageEntry.B4I_GNgi.js"
12425
+ "./UsageEntry._XHUaG2y.js"
12428
12426
  ).then((e) => ({ default: e.Usage }))
12429
12427
  ), GS = nt(
12430
12428
  () => import(
12431
12429
  /* webpackChunkName: "modal-chunk" */
12432
- "./MemoriesEntry.DpL1iLZb.js"
12430
+ "./MemoriesEntry.agins9xZ.js"
12433
12431
  ).then((e) => ({ default: e.default }))
12434
12432
  ), KS = ({
12435
12433
  open: e,
@@ -12477,23 +12475,23 @@ const uS = [".png", ".jpg", ".jpeg", ".webp"], dS = [".pdf", ".txt"], fS = [
12477
12475
  p || Promise.all([
12478
12476
  import(
12479
12477
  /* webpackChunkName: "modal-chunk" */
12480
- "./ProfileEntry.T8wth0Is.js"
12478
+ "./ProfileEntry.DcvJm9lG.js"
12481
12479
  ),
12482
12480
  import(
12483
12481
  /* webpackChunkName: "modal-chunk" */
12484
- "./SettingsEntry.CjOxw1Yx.js"
12482
+ "./SettingsEntry.CjUNaeTF.js"
12485
12483
  ),
12486
12484
  import(
12487
12485
  /* webpackChunkName: "modal-chunk" */
12488
- "./HistoryEntry.B-078Lxf.js"
12486
+ "./HistoryEntry.CRqDuJuI.js"
12489
12487
  ),
12490
12488
  import(
12491
12489
  /* webpackChunkName: "modal-chunk" */
12492
- "./AboutEntry.C1pRBz7A.js"
12490
+ "./AboutEntry.Dx70PfSW.js"
12493
12491
  ),
12494
12492
  import(
12495
12493
  /* webpackChunkName: "modal-chunk" */
12496
- "./UsageEntry.B4I_GNgi.js"
12494
+ "./UsageEntry._XHUaG2y.js"
12497
12495
  )
12498
12496
  ]).finally(() => f(!0));
12499
12497
  }, [p]), y = G((O) => {
@@ -12642,7 +12640,7 @@ const uS = [".png", ".jpg", ".jpeg", ".webp"], dS = [".pdf", ".txt"], fS = [
12642
12640
  {
12643
12641
  label: "Log out",
12644
12642
  onClick: S,
12645
- icon: /* @__PURE__ */ h("div", { className: "text-red-700", children: /* @__PURE__ */ h(gd, { monotone: !0 }) })
12643
+ icon: /* @__PURE__ */ h("div", { className: "text-copy-error-dark", children: /* @__PURE__ */ h(gd, { monotone: !0 }) })
12646
12644
  }
12647
12645
  )
12648
12646
  ] })
@@ -12787,18 +12785,18 @@ const La = "av-spinner", ru = ({ spinnerRef: e, mode: t = "system", type: n = "c
12787
12785
  ]
12788
12786
  });
12789
12787
  }, QS = nt(
12790
- () => import("./index.B-dNm2To.js").then((e) => ({ default: e.Bubble }))
12788
+ () => import("./Bubble.BfOIcmYO.js").then((e) => ({ default: e.Bubble }))
12791
12789
  ), is = (e) => /* @__PURE__ */ h(tr, { fallback: /* @__PURE__ */ h("span", { className: "inline-block" }), children: /* @__PURE__ */ h(QS, { ...e }) });
12792
12790
  is.displayName = "AsyncBubble";
12793
12791
  const za = 1, eI = 150, tI = nt(
12794
12792
  () => import(
12795
12793
  /* webpackChunkName: "LazyMessageAssistant" */
12796
- "./ChatBubbleAssistant.nUmdAzup.js"
12794
+ "./ChatBubbleAssistant.BXp6-ZoJ.js"
12797
12795
  )
12798
12796
  ), nI = nt(
12799
12797
  () => import(
12800
12798
  /* webpackChunkName: "LazyMessageUser" */
12801
- "./ChatBubbleUser.BUuPXYPp.js"
12799
+ "./ChatBubbleUser.BcziRDGl.js"
12802
12800
  )
12803
12801
  ), rI = st.memo(
12804
12802
  ({
@@ -12993,7 +12991,8 @@ function ou({
12993
12991
  tokenUsage: 0,
12994
12992
  attachments: 0,
12995
12993
  lastStreamingTimestamp: 0,
12996
- lastResetTimestamp: 0
12994
+ lastResetTimestamp: 0,
12995
+ restoredTimestamp: ""
12997
12996
  }), { data: P } = vt({
12998
12997
  user: n?.username,
12999
12998
  getAccessToken: r
@@ -13132,9 +13131,9 @@ function ou({
13132
13131
  );
13133
13132
  }
13134
13133
  ou.displayName = "App";
13135
- const SI = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, default: ou }, Symbol.toStringTag, { value: "Module" }));
13134
+ const EI = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, default: ou }, Symbol.toStringTag, { value: "Module" }));
13136
13135
  export {
13137
- SI as App,
13136
+ EI as App,
13138
13137
  is as AsyncBubble,
13139
13138
  qS as ButtonScroll,
13140
13139
  Bt as CHAT_RESET,
@@ -13150,7 +13149,6 @@ export {
13150
13149
  ww as Panel,
13151
13150
  wt as ResponsiveTooltip,
13152
13151
  Mw as Toggle,
13153
- EI as convertStringToHumanReadable,
13154
13152
  vI as debounce,
13155
13153
  rv as getDefaultExportFromCjs,
13156
13154
  ei as isProbablyMobile,
@@ -0,0 +1,183 @@
1
+ import { jsxs as _, jsx as o } from "react/jsx-runtime";
2
+ import { ButtonIcon as I, IconCopied as E, IconCopy as N } from "./LogoEntry.DYecYZ2Y.js";
3
+ import { useState as S, useEffect as U } from "react";
4
+ import t from "clsx";
5
+ /*!
6
+ @versini/ui-bubble v10.1.0
7
+ © 2025 gizmette.com
8
+ */
9
+ try {
10
+ window.__VERSINI_UI_BUBBLE__ || (window.__VERSINI_UI_BUBBLE__ = {
11
+ version: "10.1.0",
12
+ buildTime: "12/22/2025 07:40 PM EST",
13
+ homepage: "https://www.npmjs.com/package/@versini/ui-bubble",
14
+ license: "MIT"
15
+ });
16
+ } catch {
17
+ }
18
+ const i = "av-bubble";
19
+ /*!
20
+ @versini/ui-bubble v10.1.0
21
+ © 2025 gizmette.com
22
+ */
23
+ try {
24
+ window.__VERSINI_UI_BUBBLE__ || (window.__VERSINI_UI_BUBBLE__ = {
25
+ version: "10.1.0",
26
+ buildTime: "12/22/2025 07:40 PM EST",
27
+ homepage: "https://www.npmjs.com/package/@versini/ui-bubble",
28
+ license: "MIT"
29
+ });
30
+ } catch {
31
+ }
32
+ const C = ({ kind: e, noMaxWidth: r }) => t("px-4 py-2", {
33
+ "max-w-xs sm:max-w-md md:max-w-2xl": !r,
34
+ "lg:max-w-3xl": e === "left" && !r
35
+ }), T = ({ kind: e, gradient: r }) => r ? r === "light" ? t({
36
+ "bg-linear-to-b from-surface-light/80 to-surface-light dark:from-surface-dark/80 dark:to-surface-dark": e === "left",
37
+ "bg-linear-to-b from-surface-accent/80 to-surface-accent": e === "right"
38
+ }) : r === "medium" ? t({
39
+ "bg-linear-to-b from-surface-light/65 to-surface-light dark:from-surface-dark/65 dark:to-surface-dark": e === "left",
40
+ "bg-linear-to-b from-surface-accent/65 to-surface-accent": e === "right"
41
+ }) : t({
42
+ "bg-linear-to-b from-surface-light/50 to-surface-light dark:from-surface-dark/50 dark:to-surface-dark": e === "left",
43
+ "bg-linear-to-b from-surface-accent/50 to-surface-accent": e === "right"
44
+ }) : t({
45
+ "bg-surface-light dark:bg-surface-dark": e === "left",
46
+ "bg-surface-accent": e === "right"
47
+ }), L = ({ kind: e }) => t("prose prose-dark dark:prose-lighter", "prose-blockquote:my-1", "prose-ol:my-1 prose-ul:my-1", {
48
+ "text-copy-lighter": e === "right"
49
+ }), $ = ({ kind: e, tail: r }) => {
50
+ if (r)
51
+ return t(`${i}-${e}-tail`, "rounded-3xl", "relative", "before:content-['']", "before:w-3", "before:h-2", "before:absolute", "before:bottom-0", {
52
+ "last-bubble-right:before:right-0.5 last-bubble-right:before:border-l-8 last-bubble-right:before:border-l-surface-accent last-bubble-right:before:rounded-bl-[100%]": e === "right",
53
+ "last-bubble-left:before:left-0.5 last-bubble-left:before:border-r-8 last-bubble-left:before:border-r-surface-light last-bubble-left:dark:before:border-r-surface-dark last-bubble-left:before:rounded-br-[100%]": e === "left"
54
+ });
55
+ if (!r)
56
+ return t("rounded-b-xl", {
57
+ "rounded-tr-xl": e === "left",
58
+ "rounded-tl-xl": e === "right"
59
+ });
60
+ }, j = ({ kind: e, className: r, contentClassName: u, footerClassName: n, noMaxWidth: m, tail: l, gradient: b }) => {
61
+ const s = t(i, `${i}-${e}`, "flex items-start", {
62
+ "flex-row-reverse": e === "right"
63
+ }, r), p = t(`${i}-content`, "flex flex-col empty:hidden", C({
64
+ kind: e,
65
+ noMaxWidth: m
66
+ }), L({
67
+ kind: e
68
+ }), T({
69
+ kind: e,
70
+ gradient: b
71
+ }), $({
72
+ kind: e,
73
+ tail: l
74
+ }), u), d = t("pr-2 pt-1 text-end text-xs text-copy-light", n), g = t("flex flex-col-reverse sm:flex-row", {
75
+ "ml-2": e === "left" && !l,
76
+ "mr-2": e === "right" && !l,
77
+ "ml-1": e === "left" && l,
78
+ "mr-1": e === "right" && l
79
+ });
80
+ return {
81
+ wrapper: s,
82
+ main: p,
83
+ footer: d,
84
+ copyButton: g
85
+ };
86
+ };
87
+ /*!
88
+ @versini/ui-bubble v10.1.0
89
+ © 2025 gizmette.com
90
+ */
91
+ try {
92
+ window.__VERSINI_UI_BUBBLE__ || (window.__VERSINI_UI_BUBBLE__ = {
93
+ version: "10.1.0",
94
+ buildTime: "12/22/2025 07:40 PM EST",
95
+ homepage: "https://www.npmjs.com/package/@versini/ui-bubble",
96
+ license: "MIT"
97
+ });
98
+ } catch {
99
+ }
100
+ const k = (e) => typeof e == "object" && e !== null && "isEmpty" in e && e.isEmpty === !0, M = (e) => typeof e == "object" && e !== null && "key" in e && "value" in e, A = ({ children: e, kind: r = "left", className: u, contentClassName: n, footerClassName: m, footer: l, rawFooter: b, copyToClipboard: s, copyToClipboardFocusMode: p = "system", copyToClipboardMode: d = "system", noMaxWidth: g = !1, tail: w = !1, gradient: y }) => {
101
+ const [f, B] = S(!1), c = j({
102
+ kind: r,
103
+ className: u,
104
+ contentClassName: n,
105
+ footerClassName: m,
106
+ noMaxWidth: g,
107
+ tail: w,
108
+ gradient: y
109
+ }), x = !!s && (typeof s == "function" || typeof s == "string" || typeof e == "string"), v = () => {
110
+ B(!0), typeof s == "function" ? s(e) : typeof s == "string" ? navigator.clipboard.writeText(s) : typeof e == "string" && navigator.clipboard.writeText(e);
111
+ };
112
+ return U(() => {
113
+ let a;
114
+ return f && (a = window.setTimeout(() => {
115
+ B(!1);
116
+ }, 3e3)), () => {
117
+ clearTimeout(a);
118
+ };
119
+ }, [
120
+ f
121
+ ]), /* @__PURE__ */ _("div", {
122
+ className: c.wrapper,
123
+ children: [
124
+ /* @__PURE__ */ _("div", {
125
+ children: [
126
+ /* @__PURE__ */ o("div", {
127
+ className: c.main,
128
+ children: e
129
+ }),
130
+ l && l.map((a, h) => k(a) ? /* @__PURE__ */ o("div", {
131
+ className: "prose-p:m-0",
132
+ children: /* @__PURE__ */ o("p", {
133
+ className: c.footer,
134
+ "aria-hidden": "true",
135
+ children: /* @__PURE__ */ o("span", {
136
+ className: "invisible",
137
+ children: " "
138
+ })
139
+ })
140
+ }, `footer-empty-${h}`) : M(a) ? /* @__PURE__ */ o("div", {
141
+ className: "prose-p:m-0",
142
+ children: /* @__PURE__ */ _("p", {
143
+ className: c.footer,
144
+ children: [
145
+ a.key,
146
+ ": ",
147
+ a.value
148
+ ]
149
+ })
150
+ }, `footer-kv-${h}`) : /* @__PURE__ */ o("div", {
151
+ className: "prose-p:m-0",
152
+ children: /* @__PURE__ */ o("p", {
153
+ className: c.footer,
154
+ children: a.value
155
+ })
156
+ }, `footer-val-${h}`)),
157
+ b && b
158
+ ]
159
+ }),
160
+ x && /* @__PURE__ */ o("div", {
161
+ className: c.copyButton,
162
+ children: /* @__PURE__ */ o(I, {
163
+ noBorder: !0,
164
+ noBackground: !0,
165
+ size: "small",
166
+ mode: d,
167
+ focusMode: p,
168
+ label: f ? "Copied to clipboard" : "Copy to clipboard",
169
+ onClick: v,
170
+ disabled: f,
171
+ children: f ? /* @__PURE__ */ o(E, {
172
+ size: "size-3"
173
+ }) : /* @__PURE__ */ o(N, {
174
+ size: "size-3"
175
+ })
176
+ })
177
+ })
178
+ ]
179
+ });
180
+ };
181
+ export {
182
+ A as Bubble
183
+ };
@@ -1,7 +1,7 @@
1
1
  import { jsx as Pp } from "react/jsx-runtime";
2
- import { getDefaultExportFromCjs as dn, isProbablyMobile as Op } from "./App.BeuOuicv.js";
2
+ import { getDefaultExportFromCjs as dn, isProbablyMobile as Op } from "./App.CRK1D8_p.js";
3
3
  import Lp, { useMemo as Ep } from "react";
4
- import { TRIMESTERS_SHORT as Ip, TRIMESTERS as on, TIME_RANGES as ls, TIME_RANGE_LABELS as an } from "./LogoEntry.1MaZ0gB8.js";
4
+ import { TRIMESTERS_SHORT as Ip, TRIMESTERS as on, TIME_RANGES as ls, TIME_RANGE_LABELS as an } from "./LogoEntry.DYecYZ2Y.js";
5
5
  var hs = { exports: {} }, Dp = hs.exports, nn;
6
6
  function Bp() {
7
7
  return nn || (nn = 1, (function(Ae, pe) {