@versini/sassysaint 8.87.1 → 8.88.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 (26) hide show
  1. package/dist/chunks/{AboutChangelog.o0RrePDe.js → AboutChangelog.D7aQ3yNn.js} +3 -3
  2. package/dist/chunks/{AboutEntry.B-jI9DmU.js → AboutEntry.CnCxYnL_.js} +5 -5
  3. package/dist/chunks/{App.Cw4x07xc.js → App.BP6R5ShT.js} +16 -16
  4. package/dist/chunks/{Chart.Cnr0zcD_.js → Chart.3BnmAUFZ.js} +2 -2
  5. package/dist/chunks/{ChatBubbleAssistant.Dov1Kdlx.js → ChatBubbleAssistant.D8fDaVAX.js} +4 -4
  6. package/dist/chunks/{ChatBubbleUser.BpJ-IsSf.js → ChatBubbleUser.DvGLUvJD.js} +3 -3
  7. package/dist/chunks/{ChatHistoryTable.BjqwKZJO.js → ChatHistoryTable.DGnHbyHe.js} +3 -3
  8. package/dist/chunks/{HistoryEntry.CYnHVo3I.js → HistoryEntry.B__DZCu8.js} +3 -3
  9. package/dist/chunks/{ProfileEntry.U3mHnYGY.js → ProfileEntry.BsWrvAtz.js} +2 -2
  10. package/dist/chunks/{SettingsEntry.2ursSi4P.js → SettingsEntry.7cEFtg_0.js} +3 -3
  11. package/dist/chunks/UsageEntry.D2ug5HeG.js +150 -0
  12. package/dist/chunks/{UserMemoriesPanel.BBBhJt3_.js → UserMemoriesPanel.S5107xYq.js} +4 -4
  13. package/dist/chunks/{index.BrE3_o6F.js → index.5eJh6P0y.js} +2 -2
  14. package/dist/chunks/{index.CpMnKe5v.js → index.Bnc2_qab.js} +3 -3
  15. package/dist/chunks/{index.CFqFrOCp.js → index.ByAefkkb.js} +1 -1
  16. package/dist/chunks/{index.Bfo9JTHh.js → index.CJbIm0Z4.js} +1 -1
  17. package/dist/chunks/{index.BUPcQvlr.js → index.CdXZBNtC.js} +1 -1
  18. package/dist/chunks/{index.euuiion4.js → index.CoLzqnos.js} +1 -1
  19. package/dist/chunks/{index.o7M2h5Kz.js → index.DwOoD2V-.js} +1 -1
  20. package/dist/chunks/{index.nlBBvIGH.js → index.TmgOWqTS.js} +1 -1
  21. package/dist/chunks/{index.DoR-38mQ.js → index.cjUqp69v.js} +1 -1
  22. package/dist/chunks/{useMarkdown.Cwmhcac2.js → useMarkdown.DrPCmE-F.js} +6 -6
  23. package/dist/components/SassySaint/SassySaint.js +1 -1
  24. package/dist/index.js +4 -4
  25. package/package.json +3 -3
  26. package/dist/chunks/UsageEntry.BOr75SBT.js +0 -131
@@ -1,8 +1,8 @@
1
1
  import { jsxs as s, jsx as r } from "react/jsx-runtime";
2
- import { useInViewport as c } from "./index.DoR-38mQ.js";
2
+ import { useInViewport as c } from "./index.cjUqp69v.js";
3
3
  import { useRef as n, useCallback as f, useLayoutEffect as u } from "react";
4
- import { ButtonScroll as p } from "./App.Cw4x07xc.js";
5
- import { useMarkdown as d } from "./useMarkdown.Cwmhcac2.js";
4
+ import { ButtonScroll as p } from "./App.BP6R5ShT.js";
5
+ import { useMarkdown as d } from "./useMarkdown.DrPCmE-F.js";
6
6
  const x = ({ content: o }) => {
7
7
  const [l, t] = d(), { ref: i, inViewport: a } = c(), e = n(null), m = f(() => {
8
8
  e.current && e.current.scrollIntoView({
@@ -1,12 +1,12 @@
1
1
  import { jsxs as b, Fragment as l, jsx as e } from "react/jsx-runtime";
2
- import { Panel as g } from "./App.Cw4x07xc.js";
3
- import { useUniqueId as d, useServerCapabilities as A, useChangelogs as I, Card as t, renderDataAsList as c, CARDS as r, pluralize as B, isProbablyMobile as E, ABOUT_TITLE as S } from "./index.DoR-38mQ.js";
2
+ import { Panel as g } from "./App.BP6R5ShT.js";
3
+ import { useUniqueId as d, useServerCapabilities as A, useChangelogs as I, Card as t, renderDataAsList as c, CARDS as r, pluralize as B, isProbablyMobile as E, ABOUT_TITLE as S } from "./index.cjUqp69v.js";
4
4
  import O from "clsx";
5
5
  import { Suspense as C, lazy as U } from "react";
6
6
  const L = U(
7
7
  () => import(
8
8
  /* webpackChunkName: "LazyAboutChangelog" */
9
- "./AboutChangelog.o0RrePDe.js"
9
+ "./AboutChangelog.D7aQ3yNn.js"
10
10
  )
11
11
  ), N = () => {
12
12
  const s = d(), i = d(), { data: a, isSuccess: m } = A(), { data: T, isSuccess: h } = I(), u = a?.version || "", o = a?.models || [], p = a?.buildTime || "";
@@ -18,8 +18,8 @@ const L = U(
18
18
  className: "prose-dark dark:prose-lighter mb-4",
19
19
  noBorder: !0,
20
20
  children: c(s, {
21
- [r.ABOUT.VERSION]: "8.87.1",
22
- [r.ABOUT.BUILD_TIMESTAMP]: "11/19/2025 12:18 PM EST"
21
+ [r.ABOUT.VERSION]: "8.88.0",
22
+ [r.ABOUT.BUILD_TIMESTAMP]: "11/19/2025 01:58 PM EST"
23
23
  })
24
24
  }
25
25
  ),
@@ -1,5 +1,5 @@
1
1
  import { jsx as d, jsxs as x, Fragment as Ne } from "react/jsx-runtime";
2
- import { ACTION_SORT as na, e$1 as gt, ACTION_SEARCH as oa, ACTION_RESET_PROMPT as co, ACTION_TOGGLE_PROMPT as lo, useLocalStorage as xe, LOCAL_STORAGE_PREFIX as $e, LOCAL_STORAGE_CHAT_ID as uo, n as ge, isDev as sa, isPWAMode as po, isTauri as _t, useChat as aa, useClickOutside as ia, useInterval as ca, useTheme as Ee, ButtonIcon as Te, IconAddLight as la, DEFAULT_ICON_ACTION_SIZE as Ae, ChatContext as Se, useUserPreferences as Be, useHotkeys as Ur, isProbablyiPhone as Ze, IconCloseLight as ua, IconEditLight as da, serverUrl as fo, useEntitlements as jr, IconClose as ho, useHaptic as pa, L as Tr, j$1 as at, Button as on, LOCAL_STORAGE_PRIVATE_DISCLOSURE as fa, j as Gt, IconLockedLight as ha, IconUnlockedLight as ma, IconSelected as ga, IconUnSelected as va, IconNext as ya, PromptsContext as Fr, IconBookSparklesLight as _a, IconRewrite as ba, IconProofread as wa, IconMagic as Ia, LOCAL_STORAGE_REASONING_DISCLOSURE as Ea, IconLightBulbLight as Ta, useSaveChat as Sa, IconDownloadLight as ka, TOAST_CHAT_SAVED as Ca, IconSendLight as xa, INPUT_PLACEHOLDER_TEXT_MORNING as Aa, INPUT_PLACEHOLDER_TEXT_AFTERNOON as Na, INPUT_PLACEHOLDER_TEXT_EVENING as Oa, INPUT_PLACEHOLDER_TEXT_NIGHT as Pa, INPUT_PLACEHOLDER_TEXT_DEFAULT as mo, PROMPT_EDITABLE_AREA_CLASSNAME as za, PROMPT_CLASSNAME as Ra, AppContext as kt, HistoryContext as go, useChatsHistory as Ma, useUniqueId as $a, q as vo, ERROR_MESSAGE as Za, o as bt, CLIPBOARD_PROMPT as sn, getHotkeyHandler as Da, Y as La, FOOTER_DISCLAIMERS as an, useViewportSize as Ua, useVisualViewportSize as ja, useResizeObserver as yo, isProbablyiPad as Fa, INPUT_BOTTOM_OFFSET_EXTRA as cn, INPUT_BOTTOM_OFFSET_IPHONE as Ba, INPUT_BOTTOM_OFFSET_IPAD as Va, INPUT_BOTTOM_OFFSET as _o, APP_SET_FOOTER_HEIGHT as Ha, FOOTER_TOP as Sr, FOOTER_BOTTOM as vt, APP_SET_FOOTER_POSITION as ur, getLayoutPaddingClass as kr, canEvaluateModels as ln, X as Ga, IconOpenAI as Ja, l as Wa, IconAnthropic as Ya, _ as qa, IconGoogleGemini as Xa, R as Ka, z as Qa, H as dr, setNewProvider as un, TOAST_PROVIDER_CHANGED as dn, useQueryClient as ei, LOG_OUT as pn, IconProfile as ti, IconSliders as ri, IconHistory as ni, IconEditUser as oi, IconChart as si, IconInfo as ai, IconBack as ii, IconSettings as ci, i as bo, O as fn, useInViewport as li, useServerCapabilities as ui, getMessageContaintWrapperClass as di, UI_FOOTER_BUFFER as wo, UI_BUTTON_SCROLL_BUFFER as pi, Logo as fi, isProbablyMobile as hi, UI_DEFAULT_MAIN_HEIGHT as hn, e as mi, appReducer as gi, applyOledMode as vi, APP_SET_OLED_MODE as yi, APP_SET_FULL_SCREEN as _i, APP_SET_THEME_MODE as bi, APP_SET_THEME_PALETTE as wi, UI_DEFAULT_MAIN_HEIGHT_IPHONE as Ii, APP_CLASSNAME as Ei, B as mn, F as Ti, LOCAL_STORAGE_SORT as Si, LOCAL_STORAGE_SEARCH as ki, LOCAL_STORAGE_OLED_MODE as Ci, LOCAL_STORAGE_FULL_SCREEN as xi, LOCAL_STORAGE_SORT_TIMESTAMP as Ai, LOCAL_STORAGE_SORT_TOKEN_USAGE as Ni, TOAST_CACHE_ENABLED as Oi, TOAST_CACHE_DISABLED as Pi } from "./index.DoR-38mQ.js";
2
+ import { ACTION_SORT as na, e$1 as gt, ACTION_SEARCH as oa, ACTION_RESET_PROMPT as co, ACTION_TOGGLE_PROMPT as lo, useLocalStorage as xe, LOCAL_STORAGE_PREFIX as $e, LOCAL_STORAGE_CHAT_ID as uo, n as ge, isDev as sa, isPWAMode as po, isTauri as _t, useChat as aa, useClickOutside as ia, useInterval as ca, useTheme as Ee, ButtonIcon as Te, IconAddLight as la, DEFAULT_ICON_ACTION_SIZE as Ae, ChatContext as Se, useUserPreferences as Be, useHotkeys as Ur, isProbablyiPhone as Ze, IconCloseLight as ua, IconEditLight as da, serverUrl as fo, useEntitlements as jr, IconClose as ho, useHaptic as pa, L as Tr, j$1 as at, Button as on, LOCAL_STORAGE_PRIVATE_DISCLOSURE as fa, j as Gt, IconLockedLight as ha, IconUnlockedLight as ma, IconSelected as ga, IconUnSelected as va, IconNext as ya, PromptsContext as Fr, IconBookSparklesLight as _a, IconRewrite as ba, IconProofread as wa, IconMagic as Ia, LOCAL_STORAGE_REASONING_DISCLOSURE as Ea, IconLightBulbLight as Ta, useSaveChat as Sa, IconDownloadLight as ka, TOAST_CHAT_SAVED as Ca, IconSendLight as xa, INPUT_PLACEHOLDER_TEXT_MORNING as Aa, INPUT_PLACEHOLDER_TEXT_AFTERNOON as Na, INPUT_PLACEHOLDER_TEXT_EVENING as Oa, INPUT_PLACEHOLDER_TEXT_NIGHT as Pa, INPUT_PLACEHOLDER_TEXT_DEFAULT as mo, PROMPT_EDITABLE_AREA_CLASSNAME as za, PROMPT_CLASSNAME as Ra, AppContext as kt, HistoryContext as go, useChatsHistory as Ma, useUniqueId as $a, q as vo, ERROR_MESSAGE as Za, o as bt, CLIPBOARD_PROMPT as sn, getHotkeyHandler as Da, Y as La, FOOTER_DISCLAIMERS as an, useViewportSize as Ua, useVisualViewportSize as ja, useResizeObserver as yo, isProbablyiPad as Fa, INPUT_BOTTOM_OFFSET_EXTRA as cn, INPUT_BOTTOM_OFFSET_IPHONE as Ba, INPUT_BOTTOM_OFFSET_IPAD as Va, INPUT_BOTTOM_OFFSET as _o, APP_SET_FOOTER_HEIGHT as Ha, FOOTER_TOP as Sr, FOOTER_BOTTOM as vt, APP_SET_FOOTER_POSITION as ur, getLayoutPaddingClass as kr, canEvaluateModels as ln, X as Ga, IconOpenAI as Ja, l as Wa, IconAnthropic as Ya, _ as qa, IconGoogleGemini as Xa, R as Ka, z as Qa, H as dr, setNewProvider as un, TOAST_PROVIDER_CHANGED as dn, useQueryClient as ei, LOG_OUT as pn, IconProfile as ti, IconSliders as ri, IconHistory as ni, IconEditUser as oi, IconChart as si, IconInfo as ai, IconBack as ii, IconSettings as ci, i as bo, O as fn, useInViewport as li, useServerCapabilities as ui, getMessageContaintWrapperClass as di, UI_FOOTER_BUFFER as wo, UI_BUTTON_SCROLL_BUFFER as pi, Logo as fi, isProbablyMobile as hi, UI_DEFAULT_MAIN_HEIGHT as hn, e as mi, appReducer as gi, applyOledMode as vi, APP_SET_OLED_MODE as yi, APP_SET_FULL_SCREEN as _i, APP_SET_THEME_MODE as bi, APP_SET_THEME_PALETTE as wi, UI_DEFAULT_MAIN_HEIGHT_IPHONE as Ii, APP_CLASSNAME as Ei, B as mn, F as Ti, LOCAL_STORAGE_SORT as Si, LOCAL_STORAGE_SEARCH as ki, LOCAL_STORAGE_OLED_MODE as Ci, LOCAL_STORAGE_FULL_SCREEN as xi, LOCAL_STORAGE_SORT_TIMESTAMP as Ai, LOCAL_STORAGE_SORT_TOKEN_USAGE as Ni, TOAST_CACHE_ENABLED as Oi, TOAST_CACHE_DISABLED as Pi } from "./index.cjUqp69v.js";
3
3
  import Io, { useRef as J, useCallback as Y, useSyncExternalStore as pr, useEffect as M, useState as R, createContext as Br, useContext as q, forwardRef as Qe, cloneElement as zi, useId as Eo, useLayoutEffect as Vr, useMemo as Ie, Suspense as Jt, lazy as Pe, useReducer as zt } from "react";
4
4
  import z, { clsx as De } from "clsx";
5
5
  import { computePosition as Ri, offset as To, flip as So, shift as ko, arrow as Mi, useMergeRefs as Hr, FloatingPortal as Cr, FloatingOverlay as $i, FloatingFocusManager as xr, useFloating as Co, useClick as xo, useDismiss as Ao, useRole as No, useInteractions as Oo, useFloatingParentNodeId as Po, FloatingTree as Zi, useListItem as zo, useFloatingTree as Ro, useFloatingNodeId as Di, autoUpdate as Li, useHover as Ui, safePolygon as ji, useListNavigation as Fi, useTypeahead as Bi, FloatingNode as gn, FloatingList as vn } from "@floating-ui/react";
@@ -5700,7 +5700,7 @@ const Zs = async () => (_r || (_r = import(
5700
5700
  "./index.790ujKXR.js"
5701
5701
  )), _r), Ds = async () => (br || (br = import(
5702
5702
  /* webpackChunkName: "toast-utilities" */
5703
- "./index.DoR-38mQ.js"
5703
+ "./index.cjUqp69v.js"
5704
5704
  ).then((e) => e.utilities)), br), Zf = async () => {
5705
5705
  try {
5706
5706
  await Promise.all([Zs(), Ds()]);
@@ -8307,38 +8307,38 @@ const Zh = [".png", ".jpg", ".jpeg", ".webp"], Dh = [".pdf", ".txt"], Lh = [
8307
8307
  }, sm = Pe(
8308
8308
  () => import(
8309
8309
  /* webpackChunkName: "modal-chunk" */
8310
- "./ProfileEntry.U3mHnYGY.js"
8310
+ "./ProfileEntry.BsWrvAtz.js"
8311
8311
  ).then((e) => ({
8312
8312
  default: e.Profile
8313
8313
  }))
8314
8314
  ), am = Pe(
8315
8315
  () => import(
8316
8316
  /* webpackChunkName: "modal-chunk" */
8317
- "./SettingsEntry.2ursSi4P.js"
8317
+ "./SettingsEntry.7cEFtg_0.js"
8318
8318
  ).then((e) => ({
8319
8319
  default: e.SettingsPanel
8320
8320
  }))
8321
8321
  ), im = Pe(
8322
8322
  () => import(
8323
8323
  /* webpackChunkName: "modal-chunk" */
8324
- "./HistoryEntry.CYnHVo3I.js"
8324
+ "./HistoryEntry.B__DZCu8.js"
8325
8325
  ).then((e) => ({
8326
8326
  default: e.HistoryPanel
8327
8327
  }))
8328
8328
  ), cm = Pe(
8329
8329
  () => import(
8330
8330
  /* webpackChunkName: "modal-chunk" */
8331
- "./AboutEntry.B-jI9DmU.js"
8331
+ "./AboutEntry.CnCxYnL_.js"
8332
8332
  ).then((e) => ({ default: e.About }))
8333
8333
  ), lm = Pe(
8334
8334
  () => import(
8335
8335
  /* webpackChunkName: "modal-chunk" */
8336
- "./UsageEntry.BOr75SBT.js"
8336
+ "./UsageEntry.D2ug5HeG.js"
8337
8337
  ).then((e) => ({ default: e.Usage }))
8338
8338
  ), um = Pe(
8339
8339
  () => import(
8340
8340
  /* webpackChunkName: "modal-chunk" */
8341
- "./UserMemoriesPanel.BBBhJt3_.js"
8341
+ "./UserMemoriesPanel.S5107xYq.js"
8342
8342
  ).then(
8343
8343
  (e) => ({ default: e.default })
8344
8344
  )
@@ -8388,23 +8388,23 @@ const Zh = [".png", ".jpg", ".jpeg", ".webp"], Dh = [".pdf", ".txt"], Lh = [
8388
8388
  h || Promise.all([
8389
8389
  import(
8390
8390
  /* webpackChunkName: "modal-chunk" */
8391
- "./ProfileEntry.U3mHnYGY.js"
8391
+ "./ProfileEntry.BsWrvAtz.js"
8392
8392
  ),
8393
8393
  import(
8394
8394
  /* webpackChunkName: "modal-chunk" */
8395
- "./SettingsEntry.2ursSi4P.js"
8395
+ "./SettingsEntry.7cEFtg_0.js"
8396
8396
  ),
8397
8397
  import(
8398
8398
  /* webpackChunkName: "modal-chunk" */
8399
- "./HistoryEntry.CYnHVo3I.js"
8399
+ "./HistoryEntry.B__DZCu8.js"
8400
8400
  ),
8401
8401
  import(
8402
8402
  /* webpackChunkName: "modal-chunk" */
8403
- "./AboutEntry.B-jI9DmU.js"
8403
+ "./AboutEntry.CnCxYnL_.js"
8404
8404
  ),
8405
8405
  import(
8406
8406
  /* webpackChunkName: "modal-chunk" */
8407
- "./UsageEntry.BOr75SBT.js"
8407
+ "./UsageEntry.D2ug5HeG.js"
8408
8408
  )
8409
8409
  ]).finally(() => f(!0));
8410
8410
  }, [h]), m = Y(($) => {
@@ -8674,18 +8674,18 @@ const ao = "av-spinner", Ys = ({ spinnerRef: e, mode: t = "system", type: r = "c
8674
8674
  ]
8675
8675
  });
8676
8676
  }, mm = Pe(
8677
- () => import("./index.CFqFrOCp.js").then((e) => ({ default: e.Bubble }))
8677
+ () => import("./index.ByAefkkb.js").then((e) => ({ default: e.Bubble }))
8678
8678
  ), tn = (e) => /* @__PURE__ */ d(Jt, { fallback: /* @__PURE__ */ d("span", { className: "inline-block" }), children: /* @__PURE__ */ d(mm, { ...e }) });
8679
8679
  tn.displayName = "AsyncBubble";
8680
8680
  const io = 1, gm = 150, vm = Pe(
8681
8681
  () => import(
8682
8682
  /* webpackChunkName: "LazyMessageAssistant" */
8683
- "./ChatBubbleAssistant.Dov1Kdlx.js"
8683
+ "./ChatBubbleAssistant.D8fDaVAX.js"
8684
8684
  )
8685
8685
  ), ym = Pe(
8686
8686
  () => import(
8687
8687
  /* webpackChunkName: "LazyMessageUser" */
8688
- "./ChatBubbleUser.BpJ-IsSf.js"
8688
+ "./ChatBubbleUser.DvGLUvJD.js"
8689
8689
  )
8690
8690
  ), _m = Io.memo(
8691
8691
  ({
@@ -1,7 +1,7 @@
1
1
  import { jsx as Ap } from "react/jsx-runtime";
2
- import { getDefaultExportFromCjs as ln } from "./App.Cw4x07xc.js";
2
+ import { getDefaultExportFromCjs as ln } from "./App.BP6R5ShT.js";
3
3
  import Cp, { useState as Pp, useEffect as Op } from "react";
4
- import { TRIMESTERS as rn, TRIMESTERS_SHORT as Lp, isProbablyMobile as Ep } from "./index.DoR-38mQ.js";
4
+ import { TRIMESTERS as rn, TRIMESTERS_SHORT as Lp, isProbablyMobile as Ep } from "./index.cjUqp69v.js";
5
5
  var ls = { exports: {} }, Ip = ls.exports, on;
6
6
  function Dp() {
7
7
  return on || (on = 1, (function(we, he) {
@@ -1,10 +1,10 @@
1
1
  import { jsx as x } from "react/jsx-runtime";
2
- import { ChatContext as P, AppContext as R, n as y, useUserPreferences as L, convertCamelCaseToReadable as _, numberFormatter as v, pluralize as B, O as G } from "./index.DoR-38mQ.js";
3
- import { BUBBLE_FOOTER_EMPTY as D } from "./index.CFqFrOCp.js";
2
+ import { ChatContext as P, AppContext as R, n as y, useUserPreferences as L, convertCamelCaseToReadable as _, numberFormatter as v, pluralize as B, O as G } from "./index.cjUqp69v.js";
3
+ import { BUBBLE_FOOTER_EMPTY as D } from "./index.ByAefkkb.js";
4
4
  import U from "clsx";
5
5
  import j, { useState as M, useRef as E, useEffect as O, useContext as S } from "react";
6
- import { AsyncBubble as k } from "./App.Cw4x07xc.js";
7
- import { useMarkdown as q } from "./useMarkdown.Cwmhcac2.js";
6
+ import { AsyncBubble as k } from "./App.BP6R5ShT.js";
7
+ import { useMarkdown as q } from "./useMarkdown.DrPCmE-F.js";
8
8
  const I = 2, W = I * 1e3, b = "", V = (e) => e * (2 - e);
9
9
  function Y(e, n = !0) {
10
10
  const [a, d] = M(0), [i, p] = M(0), [t, C] = M(e), r = E(0), s = E(0);
@@ -1,8 +1,8 @@
1
1
  import { jsx as a, Fragment as h, jsxs as S } from "react/jsx-runtime";
2
- import { Button as C } from "./index.DoR-38mQ.js";
2
+ import { Button as C } from "./index.cjUqp69v.js";
3
3
  import { useState as _, useMemo as m, isValidElement as T, useEffect as b } from "react";
4
- import { AsyncBubble as w } from "./App.Cw4x07xc.js";
5
- import { useMarkdown as x } from "./useMarkdown.Cwmhcac2.js";
4
+ import { AsyncBubble as w } from "./App.BP6R5ShT.js";
5
+ import { useMarkdown as x } from "./useMarkdown.DrPCmE-F.js";
6
6
  /*!
7
7
  @versini/ui-truncate v5.2.1
8
8
  © 2025 gizmette.com
@@ -1,7 +1,7 @@
1
1
  import { jsxs as c, jsx as e } from "react/jsx-runtime";
2
- import { B as x, F as u, INFINITE_SCROLL_THRESHOLD as v, CARDS as I, pluralize as M, ButtonIcon as i, IconRestore as U, IconStarInCircle as y, IconStarInCircleLight as D, IconDelete as z, numberFormatter as L, isProbablyMobile as _ } from "./index.DoR-38mQ.js";
3
- import { W as $, j as B, G as m, H as P, M as a, F as f } from "./index.nlBBvIGH.js";
4
- import { Tooltip as d } from "./App.Cw4x07xc.js";
2
+ import { B as x, F as u, INFINITE_SCROLL_THRESHOLD as v, CARDS as I, pluralize as M, ButtonIcon as i, IconRestore as U, IconStarInCircle as y, IconStarInCircleLight as D, IconDelete as z, numberFormatter as L, isProbablyMobile as _ } from "./index.cjUqp69v.js";
3
+ import { W as $, j as B, G as m, H as P, M as a, F as f } from "./index.TmgOWqTS.js";
4
+ import { Tooltip as d } from "./App.BP6R5ShT.js";
5
5
  import h from "clsx";
6
6
  import { Fragment as F } from "react";
7
7
  const s = {
@@ -1,12 +1,12 @@
1
1
  import { jsxs as c, Fragment as te, jsx as t } from "react/jsx-runtime";
2
- import { n as P, INFINITE_SCROLL_LIMIT as M, INFINITE_SCROLL_THRESHOLD as ae, HistoryContext as U, ChatContext as re, useLocalStorage as C, LOCAL_STORAGE_PREFIX as S, LOCAL_STORAGE_SORT_TIMESTAMP as se, e$1 as h, LOCAL_STORAGE_SORT_TOKEN_USAGE as oe, LOCAL_STORAGE_SORT as ne, B as I, LOCAL_STORAGE_CHAT_ID as ie, useDeleteChat as ce, useToggleFavoriteChat as le, APP_CLASSNAME as de, TOAST_CHAT_DELETED as he, graphQLRequest as me, SERVICE_TYPES as ue, ACTION_SORT as Ce, F as Se, useChatsHistory as fe, useUserChatStats as ye, LOCAL_STORAGE_SEARCH as Te, LOCAL_STORAGE_FAVORITES_ONLY as pe, HISTORY_TITLE as ge, Card as Ae, TextInput as Ee, debounce as _e, IconSearch as De, Button as z, L as Le, j$1 as ve, ACTION_SEARCH as Oe } from "./index.DoR-38mQ.js";
3
- import { useAiChat as ke, ConfirmationPanel as Re, LazyToastContainerWrapper as Ie, showErrorToast as be, v4 as He, CHAT_RESET as xe, CHAT_SET_ATTACHMENTS as Ne, CHAT_SET_STATUS as we, Panel as Fe, Toggle as Ge } from "./App.Cw4x07xc.js";
2
+ import { n as P, INFINITE_SCROLL_LIMIT as M, INFINITE_SCROLL_THRESHOLD as ae, HistoryContext as U, ChatContext as re, useLocalStorage as C, LOCAL_STORAGE_PREFIX as S, LOCAL_STORAGE_SORT_TIMESTAMP as se, e$1 as h, LOCAL_STORAGE_SORT_TOKEN_USAGE as oe, LOCAL_STORAGE_SORT as ne, B as I, LOCAL_STORAGE_CHAT_ID as ie, useDeleteChat as ce, useToggleFavoriteChat as le, APP_CLASSNAME as de, TOAST_CHAT_DELETED as he, graphQLRequest as me, SERVICE_TYPES as ue, ACTION_SORT as Ce, F as Se, useChatsHistory as fe, useUserChatStats as ye, LOCAL_STORAGE_SEARCH as Te, LOCAL_STORAGE_FAVORITES_ONLY as pe, HISTORY_TITLE as ge, Card as Ae, TextInput as Ee, debounce as _e, IconSearch as De, Button as z, L as Le, j$1 as ve, ACTION_SEARCH as Oe } from "./index.cjUqp69v.js";
3
+ import { useAiChat as ke, ConfirmationPanel as Re, LazyToastContainerWrapper as Ie, showErrorToast as be, v4 as He, CHAT_RESET as xe, CHAT_SET_ATTACHMENTS as Ne, CHAT_SET_STATUS as we, Panel as Fe, Toggle as Ge } from "./App.BP6R5ShT.js";
4
4
  import Me from "clsx";
5
5
  import { useRef as x, useState as N, useContext as w, useCallback as V, Suspense as ze, lazy as Ve, useEffect as Pe } from "react";
6
6
  const Ue = Ve(
7
7
  () => import(
8
8
  /* webpackChunkName: "history-table" */
9
- "./ChatHistoryTable.BjqwKZJO.js"
9
+ "./ChatHistoryTable.DGnHbyHe.js"
10
10
  ).then((m) => ({ default: m.ChatHistoryTable }))
11
11
  ), Be = ({
12
12
  filteredHistory: m,
@@ -1,6 +1,6 @@
1
1
  import { jsxs as l, Fragment as K, jsx as e } from "react/jsx-runtime";
2
- import { n as O, useUniqueId as W, useUserPreferences as Y, useServerCapabilities as $, H as V, setUserPlan as q, Card as d, renderDataAsList as J, CARDS as n, L as h, j$1 as i, Button as L, it as Q, isTauri as X, ButtonIcon as Z, IconPasskey as g, PROFILE_TITLE as ee } from "./index.DoR-38mQ.js";
3
- import { preloadToast as ae, showSuccessToast as se, showErrorToast as ne, ConfirmationPanel as re, LazyToastContainerWrapper as le, Panel as te } from "./App.Cw4x07xc.js";
2
+ import { n as O, useUniqueId as W, useUserPreferences as Y, useServerCapabilities as $, H as V, setUserPlan as q, Card as d, renderDataAsList as J, CARDS as n, L as h, j$1 as i, Button as L, it as Q, isTauri as X, ButtonIcon as Z, IconPasskey as g, PROFILE_TITLE as ee } from "./index.cjUqp69v.js";
3
+ import { preloadToast as ae, showSuccessToast as se, showErrorToast as ne, ConfirmationPanel as re, LazyToastContainerWrapper as le, Panel as te } from "./App.BP6R5ShT.js";
4
4
  import ie from "clsx";
5
5
  import { useState as m, useMemo as oe, useCallback as P } from "react";
6
6
  const ce = () => {
@@ -1,7 +1,7 @@
1
1
  import { jsxs as n, jsx as t } from "react/jsx-runtime";
2
- import { n as je, useEntitlements as Ve, AppContext as Fe, useUserPreferences as We, j as ie, useLocalStorage as de, LOCAL_STORAGE_OLED_MODE as $e, LOCAL_STORAGE_FULL_SCREEN as ze, e as ue, canEvaluateModels as He, Z as Ye, getCacheInfo as qe, isServiceWorkerEnabled as Ke, SETTINGS_TITLE as Qe, Card as E, CARDS as r, k as Ze, Button as v, PROMPTS_DESCRIPTION as Je, ee as me, L as Xe, j$1 as he, applyOledMode as Ee, APP_SET_OLED_MODE as fe, APP_SET_FULL_SCREEN as Se, getCurrentGeoLocation as et, graphQLRequest as pe, handleServiceWorkerToggle as tt, SERVICE_TYPES as ge } from "./index.DoR-38mQ.js";
3
- import { useCapability as be, Panel as ot, Toggle as l } from "./App.Cw4x07xc.js";
4
- import { TextArea as Te } from "./index.Bfo9JTHh.js";
2
+ import { n as je, useEntitlements as Ve, AppContext as Fe, useUserPreferences as We, j as ie, useLocalStorage as de, LOCAL_STORAGE_OLED_MODE as $e, LOCAL_STORAGE_FULL_SCREEN as ze, e as ue, canEvaluateModels as He, Z as Ye, getCacheInfo as qe, isServiceWorkerEnabled as Ke, SETTINGS_TITLE as Qe, Card as E, CARDS as r, k as Ze, Button as v, PROMPTS_DESCRIPTION as Je, ee as me, L as Xe, j$1 as he, applyOledMode as Ee, APP_SET_OLED_MODE as fe, APP_SET_FULL_SCREEN as Se, getCurrentGeoLocation as et, graphQLRequest as pe, handleServiceWorkerToggle as tt, SERVICE_TYPES as ge } from "./index.cjUqp69v.js";
3
+ import { useCapability as be, Panel as ot, Toggle as l } from "./App.BP6R5ShT.js";
4
+ import { TextArea as Te } from "./index.CJbIm0Z4.js";
5
5
  import { useContext as at, useState as a, useMemo as st, useCallback as nt, useEffect as Ne } from "react";
6
6
  const ut = ({
7
7
  open: Ce,
@@ -0,0 +1,150 @@
1
+ import { jsxs as i, jsx as e } from "react/jsx-runtime";
2
+ import { n as L, useUniqueId as v, useUserChatStats as z, useChatsUsage as _, USAGE_TITLE as B, Card as A, CARDS as a, L as u, j$1 as h, Button as o, renderDataAsList as P, pluralize as T } from "./index.cjUqp69v.js";
3
+ import { Panel as b } from "./App.BP6R5ShT.js";
4
+ import { useState as C, Suspense as H, lazy as j } from "react";
5
+ const s = [0, 3, 6, 9], n = {
6
+ TOKEN: "token",
7
+ MODEL: "model"
8
+ }, G = j(() => import(
9
+ /* webpackChunkName: "LazyChart" */
10
+ "./Chart.3BnmAUFZ.js"
11
+ )), R = ({
12
+ open: E,
13
+ onOpenChange: I
14
+ }) => {
15
+ const { getAccessToken: S, user: g } = L(), N = v(), { data: t, isSuccess: x } = z({
16
+ user: g?.username,
17
+ getAccessToken: S
18
+ }), { data: r, isSuccess: M } = _({
19
+ user: g?.username,
20
+ getAccessToken: S
21
+ }), f = Math.floor((/* @__PURE__ */ new Date()).getMonth() / 3) * 3, [c, p] = C(f), [l, k] = C(n.MODEL), U = (d) => {
22
+ d.preventDefault();
23
+ const m = (s.indexOf(c) + 1) % s.length;
24
+ p(s[m]);
25
+ }, D = (d) => {
26
+ d.preventDefault();
27
+ const m = (s.indexOf(c) - 1 + s.length) % s.length;
28
+ p(s[m]);
29
+ };
30
+ return /* @__PURE__ */ i(
31
+ b,
32
+ {
33
+ open: E,
34
+ onOpenChange: I,
35
+ title: B,
36
+ animation: !0,
37
+ animationType: "fade",
38
+ footer: /* @__PURE__ */ e(
39
+ u,
40
+ {
41
+ columnGap: 2,
42
+ alignHorizontal: "flex-end",
43
+ className: "pb-8 sm:pb-0",
44
+ children: /* @__PURE__ */ e(h, { children: /* @__PURE__ */ e(
45
+ o,
46
+ {
47
+ mode: "dark",
48
+ variant: "secondary",
49
+ focusMode: "light",
50
+ noBorder: !0,
51
+ onClick: () => I(!1),
52
+ children: "Dismiss"
53
+ }
54
+ ) })
55
+ }
56
+ ),
57
+ children: [
58
+ /* @__PURE__ */ e(
59
+ A,
60
+ {
61
+ header: a.MAIN_STATISTICS.USAGE,
62
+ className: "prose-dark dark:prose-lighter mb-4 min-h-[555px]",
63
+ noBorder: !0,
64
+ children: M && r && r.tokenUsage && r.tokenUsage.series && r.tokenUsage.series.length ? /* @__PURE__ */ i(H, { fallback: /* @__PURE__ */ e("div", {}), children: [
65
+ /* @__PURE__ */ e(u, { className: "mb-2", alignHorizontal: "center", children: /* @__PURE__ */ i(h, { children: [
66
+ /* @__PURE__ */ e(
67
+ o,
68
+ {
69
+ onClick: () => k(n.MODEL),
70
+ size: "small",
71
+ noBorder: !0,
72
+ mode: l === n.MODEL ? "dark" : "light",
73
+ className: "mr-2",
74
+ children: "Model Usage"
75
+ }
76
+ ),
77
+ /* @__PURE__ */ e(
78
+ o,
79
+ {
80
+ onClick: () => k(n.TOKEN),
81
+ size: "small",
82
+ noBorder: !0,
83
+ mode: l === n.TOKEN ? "dark" : "light",
84
+ children: "Token Usage"
85
+ }
86
+ )
87
+ ] }) }),
88
+ /* @__PURE__ */ e(
89
+ G,
90
+ {
91
+ tokenUsage: l === n.TOKEN ? r.tokenUsage.series : r.modelUsage?.series || [],
92
+ page: c,
93
+ viewMode: l
94
+ }
95
+ ),
96
+ /* @__PURE__ */ e(u, { className: "mt-2", alignHorizontal: "center", children: /* @__PURE__ */ i(h, { children: [
97
+ /* @__PURE__ */ e(
98
+ o,
99
+ {
100
+ onClick: D,
101
+ className: "mr-2",
102
+ size: "small",
103
+ noBorder: !0,
104
+ children: "Previous"
105
+ }
106
+ ),
107
+ /* @__PURE__ */ e(
108
+ o,
109
+ {
110
+ onClick: U,
111
+ className: "mr-2",
112
+ size: "small",
113
+ noBorder: !0,
114
+ children: "Next"
115
+ }
116
+ )
117
+ ] }) })
118
+ ] }) : null
119
+ }
120
+ ),
121
+ /* @__PURE__ */ e(
122
+ A,
123
+ {
124
+ header: a.MAIN_STATISTICS.TITLE,
125
+ className: "prose-dark dark:prose-lighter min-h-[170px]",
126
+ noBorder: !0,
127
+ children: x ? P(
128
+ N,
129
+ {
130
+ [T(a.MAIN_STATISTICS.TOTAL, t.totalChats)]: t.totalChats,
131
+ [T(
132
+ a.MAIN_STATISTICS.TOTAL_PRIVATE,
133
+ t.privateChats
134
+ )]: t.privateChats,
135
+ [T(
136
+ a.MAIN_STATISTICS.TOTAL_DELETED,
137
+ t.deletedChats
138
+ )]: t.deletedChats
139
+ },
140
+ !0
141
+ ) : null
142
+ }
143
+ )
144
+ ]
145
+ }
146
+ );
147
+ };
148
+ export {
149
+ R as Usage
150
+ };
@@ -1,10 +1,10 @@
1
1
  import { jsx as e, jsxs as r, Fragment as L } from "react/jsx-runtime";
2
- import { L as E, j$1 as f, Button as b, n as ke, useLocalStorage as Q, LOCAL_STORAGE_PREFIX as Z, LOCAL_STORAGE_SORT_MEMORY_DIRECTION as we, e$1 as l, LOCAL_STORAGE_SORT_MEMORY_COLUMN as Te, useUserMemories as Se, useExpiredMemories as ve, useDeleteMemory as De, useDeleteAllActiveMemories as be, useDeleteAllExpiredMemories as Me, useUpdateMemory as Ee, useRestoreMemory as Re, ButtonIcon as O, IconEdit as Ie, IconDelete as ee, IconRestore as Le } from "./index.DoR-38mQ.js";
3
- import { Panel as se, Toggle as _, ConfirmationPanel as te, Tooltip as z } from "./App.Cw4x07xc.js";
4
- import { W as re, j as ie, G as D, M as s, F as B, H as oe, D as ne } from "./index.nlBBvIGH.js";
2
+ import { L as E, j$1 as f, Button as b, n as ke, useLocalStorage as Q, LOCAL_STORAGE_PREFIX as Z, LOCAL_STORAGE_SORT_MEMORY_DIRECTION as we, e$1 as l, LOCAL_STORAGE_SORT_MEMORY_COLUMN as Te, useUserMemories as Se, useExpiredMemories as ve, useDeleteMemory as De, useDeleteAllActiveMemories as be, useDeleteAllExpiredMemories as Me, useUpdateMemory as Ee, useRestoreMemory as Re, ButtonIcon as O, IconEdit as Ie, IconDelete as ee, IconRestore as Le } from "./index.cjUqp69v.js";
3
+ import { Panel as se, Toggle as _, ConfirmationPanel as te, Tooltip as z } from "./App.BP6R5ShT.js";
4
+ import { W as re, j as ie, G as D, M as s, F as B, H as oe, D as ne } from "./index.TmgOWqTS.js";
5
5
  import A from "clsx";
6
6
  import { useState as y, useEffect as Oe, useRef as le } from "react";
7
- import { TextArea as _e } from "./index.Bfo9JTHh.js";
7
+ import { TextArea as _e } from "./index.CJbIm0Z4.js";
8
8
  const ze = ({
9
9
  open: C,
10
10
  onOpenChange: M,
@@ -1,5 +1,5 @@
1
- import { find as Aa, parse as Ft, parse$1 as Ht, normalize as Pt, html as Ta, svg as Ba, visitParents as Na, SKIP as Da } from "./useMarkdown.Cwmhcac2.js";
2
- import { toText as Ca } from "./index.euuiion4.js";
1
+ import { find as Aa, parse as Ft, parse$1 as Ht, normalize as Pt, html as Ta, svg as Ba, visitParents as Na, SKIP as Da } from "./useMarkdown.DrPCmE-F.js";
2
+ import { toText as Ca } from "./index.CoLzqnos.js";
3
3
  const Gt = /[#.]/g;
4
4
  function qa(r, e) {
5
5
  const t = r || "", a = {};
@@ -1,6 +1,6 @@
1
- import { getDefaultExportFromCjs as kn } from "./App.Cw4x07xc.js";
2
- import { visit as In } from "./useMarkdown.Cwmhcac2.js";
3
- import { toText as Cn } from "./index.euuiion4.js";
1
+ import { getDefaultExportFromCjs as kn } from "./App.BP6R5ShT.js";
2
+ import { visit as In } from "./useMarkdown.DrPCmE-F.js";
3
+ import { toText as Cn } from "./index.CoLzqnos.js";
4
4
  function xn(e) {
5
5
  const t = e.regex, i = e.COMMENT("//", "$", { contains: [{ begin: /\\\n/ }] }), a = "decltype\\(auto\\)", r = "[a-zA-Z_]\\w*::", d = "(?!struct)(" + a + "|" + t.optional(r) + "[a-zA-Z_]\\w*" + t.optional("<[^<>]+>") + ")", c = {
6
6
  className: "type",
@@ -1,5 +1,5 @@
1
1
  import { jsxs as h, jsx as l } from "react/jsx-runtime";
2
- import { ButtonIcon as E, IconCopied as C, IconCopy as I } from "./index.DoR-38mQ.js";
2
+ import { ButtonIcon as E, IconCopied as C, IconCopy as I } from "./index.cjUqp69v.js";
3
3
  import { useState as N, useEffect as $ } from "react";
4
4
  import t from "clsx";
5
5
  /*!
@@ -1,5 +1,5 @@
1
1
  import { jsxs as oe, jsx as h } from "react/jsx-runtime";
2
- import { useMergeRefs as ce, useResizeObserver as W, useUniqueId as ne, useUncontrolled as le, LiveRegion as ie } from "./index.DoR-38mQ.js";
2
+ import { useMergeRefs as ce, useResizeObserver as W, useUniqueId as ne, useUncontrolled as le, LiveRegion as ie } from "./index.cjUqp69v.js";
3
3
  import ue, { useRef as k, useState as I, useLayoutEffect as R } from "react";
4
4
  import o from "clsx";
5
5
  /*!
@@ -1,4 +1,4 @@
1
- import { convert as se, visitParents as Me, unicodeWhitespace as I, unicodePunctuation as N, normalizeIdentifier as _, classifyCharacter as W, visit as _e, toString as ce, EXIT as Oe, asciiAlphanumeric as Z, asciiAlpha as P, markdownLineEndingOrSpace as A, asciiControl as je, blankLine as Be, factorySpace as S, splice as q, resolveAll as We, markdownLineEnding as R, markdownSpace as T, combineExtensions as $e } from "./useMarkdown.Cwmhcac2.js";
1
+ import { convert as se, visitParents as Me, unicodeWhitespace as I, unicodePunctuation as N, normalizeIdentifier as _, classifyCharacter as W, visit as _e, toString as ce, EXIT as Oe, asciiAlphanumeric as Z, asciiAlpha as P, markdownLineEndingOrSpace as A, asciiControl as je, blankLine as Be, factorySpace as S, splice as q, resolveAll as We, markdownLineEnding as R, markdownSpace as T, combineExtensions as $e } from "./useMarkdown.DrPCmE-F.js";
2
2
  import { longestStreak as qe } from "./index.Cyw5OC0t.js";
3
3
  function ne(e, n) {
4
4
  const t = String(e);
@@ -1,4 +1,4 @@
1
- import { convert as E, convertElement as u } from "./useMarkdown.Cwmhcac2.js";
1
+ import { convert as E, convertElement as u } from "./useMarkdown.DrPCmE-F.js";
2
2
  const f = (
3
3
  // Note: overloads like this are needed to support optional generics.
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { factorySpace as M, markdownLineEnding as g } from "./useMarkdown.Cwmhcac2.js";
1
+ import { factorySpace as M, markdownLineEnding as g } from "./useMarkdown.DrPCmE-F.js";
2
2
  import { longestStreak as q } from "./index.Cyw5OC0t.js";
3
3
  function b() {
4
4
  return {
@@ -1,5 +1,5 @@
1
1
  import { jsx as l, jsxs as y } from "react/jsx-runtime";
2
- import { ButtonSort_private as f, e$1 as k } from "./index.DoR-38mQ.js";
2
+ import { ButtonSort_private as f, e$1 as k } from "./index.cjUqp69v.js";
3
3
  import o from "clsx";
4
4
  import v, { useContext as b } from "react";
5
5
  /*!
@@ -7776,7 +7776,7 @@ const sc = "ASK! ME! ANYTHING!", nc = "Log in with a password", ac = "Log in wit
7776
7776
  ] });
7777
7777
  }, Sc = new URL(document.location.href).searchParams, Ur = !!Sc.get("debug") || !1, bc = tn(() => import(
7778
7778
  /* webpackChunkName: "LazyApp" */
7779
- "./App.Cw4x07xc.js"
7779
+ "./App.BP6R5ShT.js"
7780
7780
  ).then((e) => e.App)), vc = new _n(), Hr = ({
7781
7781
  isComponent: e,
7782
7782
  headerHeight: t
@@ -1,7 +1,7 @@
1
1
  import { jsx as Le, jsxs as vt, Fragment as Tr } from "react/jsx-runtime";
2
- import { isTauri as Lr, ButtonCopy as zr, unObfuscate as _r, obfuscate as Mr } from "./index.DoR-38mQ.js";
2
+ import { isTauri as Lr, ButtonCopy as zr, unObfuscate as _r, obfuscate as Mr } from "./index.cjUqp69v.js";
3
3
  import { useCallback as Dt, useRef as vn, useState as Nr, useEffect as Rr } from "react";
4
- import { getDefaultExportFromCjs as Ot } from "./App.Cw4x07xc.js";
4
+ import { getDefaultExportFromCjs as Ot } from "./App.BP6R5ShT.js";
5
5
  const Ft = -1, ee = 0, Hn = 1, ne = 2, ze = 3, _e = 4, Me = 5, Ne = 6, Bt = 7, Ut = 8, Qe = typeof self == "object" ? self : globalThis, vr = (n, e) => {
6
6
  const t = (i, l) => (n.set(l, i), i), r = (i) => {
7
7
  if (n.has(i))
@@ -7110,7 +7110,7 @@ class vu {
7110
7110
  if (!this.remarkGfm) {
7111
7111
  const { default: e } = await import(
7112
7112
  /* webpackChunkName: "md-remark" */
7113
- "./index.BUPcQvlr.js"
7113
+ "./index.CdXZBNtC.js"
7114
7114
  );
7115
7115
  this.remarkGfm = e;
7116
7116
  }
@@ -7121,7 +7121,7 @@ class vu {
7121
7121
  Uu("https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css");
7122
7122
  const { default: e } = await import(
7123
7123
  /* webpackChunkName: "md-rehype-katex" */
7124
- "./index.BrE3_o6F.js"
7124
+ "./index.5eJh6P0y.js"
7125
7125
  );
7126
7126
  this.rehypeKatex = e;
7127
7127
  }
@@ -7131,7 +7131,7 @@ class vu {
7131
7131
  if (!this.remarkMath) {
7132
7132
  const { default: e } = await import(
7133
7133
  /* webpackChunkName: "md-remark" */
7134
- "./index.o7M2h5Kz.js"
7134
+ "./index.DwOoD2V-.js"
7135
7135
  );
7136
7136
  this.remarkMath = e;
7137
7137
  }
@@ -7141,7 +7141,7 @@ class vu {
7141
7141
  if (!this.rehypeHighlight) {
7142
7142
  const { default: e } = await import(
7143
7143
  /* webpackChunkName: "md-rehype-highlight" */
7144
- "./index.CpMnKe5v.js"
7144
+ "./index.Bnc2_qab.js"
7145
7145
  );
7146
7146
  this.rehypeHighlight = e;
7147
7147
  }
@@ -1,5 +1,5 @@
1
1
  import "react/jsx-runtime";
2
- import { SassySaint as a } from "../../chunks/index.DoR-38mQ.js";
2
+ import { SassySaint as a } from "../../chunks/index.cjUqp69v.js";
3
3
  export {
4
4
  a as SassySaint
5
5
  };
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
- import { SassySaint as r } from "./chunks/index.DoR-38mQ.js";
1
+ import { SassySaint as r } from "./chunks/index.cjUqp69v.js";
2
2
  /*!
3
- @sassysaint/client v8.87.1
3
+ @sassysaint/client v8.88.0
4
4
  © 2025 gizmette.com
5
5
  */
6
6
  try {
7
7
  window.__VERSINI_SASSY_GLOBAL__ || (window.__VERSINI_SASSY_GLOBAL__ = {
8
- version: "8.87.1",
9
- buildTime: "11/19/2025 12:18 PM EST",
8
+ version: "8.88.0",
9
+ buildTime: "11/19/2025 01:58 PM EST",
10
10
  license: "MIT"
11
11
  });
12
12
  } catch {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@versini/sassysaint",
3
- "version": "8.87.1",
3
+ "version": "8.88.0",
4
4
  "license": "MIT",
5
5
  "author": "Arno Versini",
6
6
  "publishConfig": {
@@ -33,7 +33,7 @@
33
33
  "react-dom": "^18.3.1 || ^19.0.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@sassysaint/client": "8.87.1",
36
+ "@sassysaint/client": "8.88.0",
37
37
  "@tailwindcss/vite": "4.1.17",
38
38
  "@versini/ui-styles": "6.1.2"
39
39
  },
@@ -45,5 +45,5 @@
45
45
  "sideEffects": [
46
46
  "**/*.css"
47
47
  ],
48
- "gitHead": "7726a26826ab931c0417fe23b2b03af41fab520a"
48
+ "gitHead": "9778f3eb87cba6e62d6e253e9ab26d49604e7eb9"
49
49
  }
@@ -1,131 +0,0 @@
1
- import { jsxs as l, jsx as e } from "react/jsx-runtime";
2
- import { n as f, useUniqueId as v, useUserChatStats as _, useChatsUsage as z, USAGE_TITLE as B, Card as g, renderDataAsList as P, CARDS as a, L as p, j$1 as A, Button as i, pluralize as m } from "./index.DoR-38mQ.js";
3
- import { Panel as j } from "./App.Cw4x07xc.js";
4
- import { useState as C, Suspense as H, lazy as K } from "react";
5
- const s = [0, 3, 6, 9], n = {
6
- TOKEN: "token",
7
- MODEL: "model"
8
- }, w = K(() => import(
9
- /* webpackChunkName: "LazyChart" */
10
- "./Chart.Cnr0zcD_.js"
11
- )), R = ({
12
- open: k,
13
- onOpenChange: E
14
- }) => {
15
- const { getAccessToken: h, user: T } = f(), N = v(), { data: t, isSuccess: x } = _({
16
- user: T?.username,
17
- getAccessToken: h
18
- }), { data: r, isSuccess: M } = z({
19
- user: T?.username,
20
- getAccessToken: h
21
- }), O = Math.floor((/* @__PURE__ */ new Date()).getMonth() / 3) * 3, [c, I] = C(O), [o, S] = C(n.MODEL), U = (d) => {
22
- d.preventDefault();
23
- const u = (s.indexOf(c) + 1) % s.length;
24
- I(s[u]);
25
- }, D = (d) => {
26
- d.preventDefault();
27
- const u = (s.indexOf(c) - 1 + s.length) % s.length;
28
- I(s[u]);
29
- };
30
- return /* @__PURE__ */ l(
31
- j,
32
- {
33
- open: k,
34
- onOpenChange: E,
35
- title: B,
36
- animation: !0,
37
- animationType: "fade",
38
- children: [
39
- /* @__PURE__ */ e(
40
- g,
41
- {
42
- header: a.MAIN_STATISTICS.TITLE,
43
- className: "prose-dark dark:prose-lighter min-h-[170px]",
44
- noBorder: !0,
45
- children: x ? P(
46
- N,
47
- {
48
- [m(a.MAIN_STATISTICS.TOTAL, t.totalChats)]: t.totalChats,
49
- [m(
50
- a.MAIN_STATISTICS.TOTAL_PRIVATE,
51
- t.privateChats
52
- )]: t.privateChats,
53
- [m(
54
- a.MAIN_STATISTICS.TOTAL_DELETED,
55
- t.deletedChats
56
- )]: t.deletedChats
57
- },
58
- !0
59
- ) : null
60
- }
61
- ),
62
- /* @__PURE__ */ e(
63
- g,
64
- {
65
- header: a.MAIN_STATISTICS.USAGE,
66
- className: "prose-dark dark:prose-lighter mt-4 min-h-[555px]",
67
- noBorder: !0,
68
- children: M && r && r.tokenUsage && r.tokenUsage.series && r.tokenUsage.series.length ? /* @__PURE__ */ l(H, { fallback: /* @__PURE__ */ e("div", {}), children: [
69
- /* @__PURE__ */ e(p, { className: "mb-2", alignHorizontal: "center", children: /* @__PURE__ */ l(A, { children: [
70
- /* @__PURE__ */ e(
71
- i,
72
- {
73
- onClick: () => S(n.MODEL),
74
- size: "small",
75
- noBorder: !0,
76
- mode: o === n.MODEL ? "dark" : "light",
77
- className: "mr-2",
78
- children: "Model Usage"
79
- }
80
- ),
81
- /* @__PURE__ */ e(
82
- i,
83
- {
84
- onClick: () => S(n.TOKEN),
85
- size: "small",
86
- noBorder: !0,
87
- mode: o === n.TOKEN ? "dark" : "light",
88
- children: "Token Usage"
89
- }
90
- )
91
- ] }) }),
92
- /* @__PURE__ */ e(
93
- w,
94
- {
95
- tokenUsage: o === n.TOKEN ? r.tokenUsage.series : r.modelUsage?.series || [],
96
- page: c,
97
- viewMode: o
98
- }
99
- ),
100
- /* @__PURE__ */ e(p, { className: "mt-2", alignHorizontal: "center", children: /* @__PURE__ */ l(A, { children: [
101
- /* @__PURE__ */ e(
102
- i,
103
- {
104
- onClick: D,
105
- className: "mr-2",
106
- size: "small",
107
- noBorder: !0,
108
- children: "Previous"
109
- }
110
- ),
111
- /* @__PURE__ */ e(
112
- i,
113
- {
114
- onClick: U,
115
- className: "mr-2",
116
- size: "small",
117
- noBorder: !0,
118
- children: "Next"
119
- }
120
- )
121
- ] }) })
122
- ] }) : null
123
- }
124
- )
125
- ]
126
- }
127
- );
128
- };
129
- export {
130
- R as Usage
131
- };