@versini/sassysaint 8.93.0 → 8.94.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.
Files changed (27) hide show
  1. package/dist/chunks/{AboutChangelog.CCG0EsFp.js → AboutChangelog.DzfU63jv.js} +3 -3
  2. package/dist/chunks/{AboutEntry.CmbMEk80.js → AboutEntry.CiXcxdWb.js} +5 -5
  3. package/dist/chunks/{App.DHm-vAz3.js → App.D-F98G8L.js} +16 -16
  4. package/dist/chunks/{Chart.D5b8rSw0.js → Chart.ClZfyux0.js} +2 -2
  5. package/dist/chunks/{ChatBubbleAssistant.CruRxSPg.js → ChatBubbleAssistant.BXXqTyoH.js} +4 -4
  6. package/dist/chunks/{ChatBubbleUser.CbgAouu5.js → ChatBubbleUser.BiKfo_Ki.js} +3 -3
  7. package/dist/chunks/{ChatHistoryTable.BXm0Wfn8.js → ChatHistoryTable.uZ3Co9Ht.js} +3 -3
  8. package/dist/chunks/{HistoryEntry.CWQlIC46.js → HistoryEntry.B3pcsGv0.js} +3 -3
  9. package/dist/chunks/{ProfileEntry.CJ2FlUm-.js → ProfileEntry.D9_Layzh.js} +2 -2
  10. package/dist/chunks/{SettingsEntry.Z2ibN15M.js → SettingsEntry.CVB299KO.js} +3 -3
  11. package/dist/chunks/UsageEntry.DSbosEHE.js +240 -0
  12. package/dist/chunks/{UserMemoriesPanel.CDaqt9YY.js → UserMemoriesPanel.Cw1kyqCT.js} +4 -4
  13. package/dist/chunks/{index.DwUTIEER.js → index.9-MkIV-S.js} +1 -1
  14. package/dist/chunks/{index.Bb7Osc7v.js → index.B4ZC1ylG.js} +1118 -1063
  15. package/dist/chunks/{index.D2v902R5.js → index.BFHlGitI.js} +3 -3
  16. package/dist/chunks/{index.DHtGE5Nb.js → index.BT8BoNiE.js} +1 -1
  17. package/dist/chunks/{index.CkE_mvVS.js → index.Bxth_OL4.js} +1 -1
  18. package/dist/chunks/{index.CiNSTJQK.js → index.CQvzgy_R.js} +2 -2
  19. package/dist/chunks/{index.DKNoU6CC.js → index.CcNc9Ugm.js} +1 -1
  20. package/dist/chunks/{index.Dvfd_xy7.js → index.DSWqdZT0.js} +1 -1
  21. package/dist/chunks/{index.VZEWwcvk.js → index.Ivo9gOVL.js} +1 -1
  22. package/dist/chunks/{useMarkdown.CFED0oEl.js → useMarkdown.Dso_yHj4.js} +825 -807
  23. package/dist/components/SassySaint/SassySaint.js +1 -1
  24. package/dist/index.js +4 -4
  25. package/dist/style.css +1 -1
  26. package/package.json +3 -3
  27. package/dist/chunks/UsageEntry.GAzLsiex.js +0 -220
@@ -1,8 +1,8 @@
1
1
  import { jsxs as s, jsx as r } from "react/jsx-runtime";
2
- import { useInViewport as c } from "./index.Bb7Osc7v.js";
2
+ import { useInViewport as c } from "./index.B4ZC1ylG.js";
3
3
  import { useRef as n, useCallback as f, useLayoutEffect as u } from "react";
4
- import { ButtonScroll as p } from "./App.DHm-vAz3.js";
5
- import { useMarkdown as d } from "./useMarkdown.CFED0oEl.js";
4
+ import { ButtonScroll as p } from "./App.D-F98G8L.js";
5
+ import { useMarkdown as d } from "./useMarkdown.Dso_yHj4.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 p, Fragment as n, jsx as e } from "react/jsx-runtime";
2
- import { useUniqueId as d, useServerCapabilities as g, useChangelogs as A, Card as a, renderDataAsList as c, CARDS as r, pluralize as B, isProbablyMobile as E, ABOUT_TITLE as I, L as S, j as f, Button as C } from "./index.Bb7Osc7v.js";
3
- import { Panel as O } from "./App.DHm-vAz3.js";
2
+ import { useUniqueId as d, useServerCapabilities as g, useChangelogs as A, Card as a, renderDataAsList as c, CARDS as r, pluralize as B, isProbablyMobile as E, ABOUT_TITLE as I, L as S, j as f, Button as C } from "./index.B4ZC1ylG.js";
3
+ import { Panel as O } from "./App.D-F98G8L.js";
4
4
  import U from "clsx";
5
5
  import { Suspense as L, lazy as N } from "react";
6
6
  const k = N(
7
7
  () => import(
8
8
  /* webpackChunkName: "LazyAboutChangelog" */
9
- "./AboutChangelog.CCG0EsFp.js"
9
+ "./AboutChangelog.DzfU63jv.js"
10
10
  )
11
11
  ), v = () => {
12
12
  const i = d(), s = d(), { data: o, isSuccess: m } = g(), { data: h, isSuccess: u } = A(), T = o?.version || "", t = o?.models || [], b = o?.buildTime || "";
@@ -18,8 +18,8 @@ const k = N(
18
18
  className: "prose-dark dark:prose-lighter mb-4",
19
19
  noBorder: !0,
20
20
  children: c(i, {
21
- [r.ABOUT.VERSION]: "8.93.0",
22
- [r.ABOUT.BUILD_TIMESTAMP]: "11/30/2025 05:27 AM EST"
21
+ [r.ABOUT.VERSION]: "8.94.1",
22
+ [r.ABOUT.BUILD_TIMESTAMP]: "11/30/2025 11:30 AM EST"
23
23
  })
24
24
  }
25
25
  ),
@@ -1,5 +1,5 @@
1
1
  import { jsx as p, jsxs as N, Fragment as Me } from "react/jsx-runtime";
2
- import { ACTION_SORT as da, e$1 as gt, ACTION_SEARCH as pa, ACTION_RESET_PROMPT as mo, ACTION_TOGGLE_PROMPT as ho, ChatContext as we, LOCAL_STORAGE_PREFIX as ke, LOCAL_STORAGE_CHAT_ID as jt, n as Ie, useLocalStorage as Ne, isDev as fa, isPWAMode as go, isTauri as _t, useChat as ma, useClickOutside as ha, useInterval as ga, useTheme as Ce, ButtonIcon as xe, IconAddLight as va, DEFAULT_ICON_ACTION_SIZE as Oe, useUserPreferences as je, useHotkeys as Fr, isProbablyiPhone as ze, IconCloseLight as ya, IconEditLight as _a, serverUrl as vo, useEntitlements as Br, IconClose as yo, useHaptic as ba, L as Sr, j as at, Button as cn, useSaveChat as wa, LOCAL_STORAGE_PRIVATE_DISCLOSURE as Ia, w as Jt, IconLockedLight as Ea, IconUnlockedLight as Ta, IconSelected as Sa, IconUnSelected as ka, IconNext as Ca, PromptsContext as Vr, IconBookSparklesLight as xa, IconRewrite as Aa, IconProofread as Na, IconMagic as Oa, LOCAL_STORAGE_REASONING_DISCLOSURE as Pa, IconLightBulbLight as Ra, IconSendLight as za, INPUT_PLACEHOLDER_TEXT_IN_SESSION as _o, INPUT_PLACEHOLDER_TEXT_MORNING as Ma, INPUT_PLACEHOLDER_TEXT_TODAY as $a, INPUT_PLACEHOLDER_TEXT_AFTERNOON as Za, INPUT_PLACEHOLDER_TEXT_EVENING as Da, INPUT_PLACEHOLDER_TEXT_NIGHT as La, INPUT_PLACEHOLDER_TEXT_DEFAULT as Ua, PROMPT_EDITABLE_AREA_CLASSNAME as ja, PROMPT_CLASSNAME as Fa, AppContext as Ct, HistoryContext as bo, useChatsHistory as Ba, useUniqueId as Va, j$1 as wo, ERROR_MESSAGE as Ha, o as bt, CLIPBOARD_PROMPT as ln, getHotkeyHandler as Ga, U as Ja, FOOTER_DISCLAIMERS as un, useViewportSize as Wa, useVisualViewportSize as Ya, useResizeObserver as Io, isProbablyiPad as qa, INPUT_BOTTOM_OFFSET_EXTRA as dn, INPUT_BOTTOM_OFFSET_IPHONE as Xa, INPUT_BOTTOM_OFFSET_IPAD as Qa, INPUT_BOTTOM_OFFSET as Eo, APP_SET_FOOTER_HEIGHT as Ka, FOOTER_TOP as kr, FOOTER_BOTTOM as vt, APP_SET_FOOTER_POSITION as dr, getLayoutPaddingClass as Cr, canEvaluateModels as pn, k as ei, IconOpenAI as ti, a as ri, IconAnthropic as ni, i as oi, IconGoogleGemini as si, s as ai, x as ii, p as pr, setNewProvider as fn, TOAST_PROVIDER_CHANGED as mn, useQueryClient as ci, LOG_OUT as hn, IconProfile as li, IconSliders as ui, IconHistory as di, IconEditUser as pi, IconChart as fi, IconInfo as mi, IconBack as hi, IconSettings as gi, n$1 as To, useInViewport as vi, useServerCapabilities as yi, getMessageContaintWrapperClass as _i, UI_FOOTER_BUFFER as So, UI_BUTTON_SCROLL_BUFFER as bi, Logo as wi, isProbablyMobile as Ii, UI_DEFAULT_MAIN_HEIGHT as gn, e as Ei, appReducer as Ti, applyOledMode as Si, APP_SET_OLED_MODE as ki, APP_SET_FULL_SCREEN as Ci, APP_SET_THEME_MODE as xi, APP_SET_THEME_PALETTE as Ai, UI_DEFAULT_MAIN_HEIGHT_IPHONE as Ni, APP_CLASSNAME as Oi, y as vn, v as Pi, LOCAL_STORAGE_SORT as Ri, LOCAL_STORAGE_SEARCH as zi, LOCAL_STORAGE_OLED_MODE as Mi, LOCAL_STORAGE_FULL_SCREEN as $i, LOCAL_STORAGE_SORT_TIMESTAMP as Zi, LOCAL_STORAGE_SORT_TOKEN_USAGE as Di, TOAST_CACHE_ENABLED as Li, TOAST_CACHE_DISABLED as Ui } from "./index.Bb7Osc7v.js";
2
+ import { ACTION_SORT as da, e$1 as gt, ACTION_SEARCH as pa, ACTION_RESET_PROMPT as mo, ACTION_TOGGLE_PROMPT as ho, ChatContext as we, LOCAL_STORAGE_PREFIX as ke, LOCAL_STORAGE_CHAT_ID as jt, n as Ie, useLocalStorage as Ne, isDev as fa, isPWAMode as go, isTauri as _t, useChat as ma, useClickOutside as ha, useInterval as ga, useTheme as Ce, ButtonIcon as xe, IconAddLight as va, DEFAULT_ICON_ACTION_SIZE as Oe, useUserPreferences as je, useHotkeys as Fr, isProbablyiPhone as ze, IconCloseLight as ya, IconEditLight as _a, serverUrl as vo, useEntitlements as Br, IconClose as yo, useHaptic as ba, L as Sr, j as at, Button as cn, useSaveChat as wa, LOCAL_STORAGE_PRIVATE_DISCLOSURE as Ia, w as Jt, IconLockedLight as Ea, IconUnlockedLight as Ta, IconSelected as Sa, IconUnSelected as ka, IconNext as Ca, PromptsContext as Vr, IconBookSparklesLight as xa, IconRewrite as Aa, IconProofread as Na, IconMagic as Oa, LOCAL_STORAGE_REASONING_DISCLOSURE as Pa, IconLightBulbLight as Ra, IconSendLight as za, INPUT_PLACEHOLDER_TEXT_IN_SESSION as _o, INPUT_PLACEHOLDER_TEXT_MORNING as Ma, INPUT_PLACEHOLDER_TEXT_TODAY as $a, INPUT_PLACEHOLDER_TEXT_AFTERNOON as Za, INPUT_PLACEHOLDER_TEXT_EVENING as Da, INPUT_PLACEHOLDER_TEXT_NIGHT as La, INPUT_PLACEHOLDER_TEXT_DEFAULT as Ua, PROMPT_EDITABLE_AREA_CLASSNAME as ja, PROMPT_CLASSNAME as Fa, AppContext as Ct, HistoryContext as bo, useChatsHistory as Ba, useUniqueId as Va, j$1 as wo, ERROR_MESSAGE as Ha, o as bt, CLIPBOARD_PROMPT as ln, getHotkeyHandler as Ga, U as Ja, FOOTER_DISCLAIMERS as un, useViewportSize as Wa, useVisualViewportSize as Ya, useResizeObserver as Io, isProbablyiPad as qa, INPUT_BOTTOM_OFFSET_EXTRA as dn, INPUT_BOTTOM_OFFSET_IPHONE as Xa, INPUT_BOTTOM_OFFSET_IPAD as Qa, INPUT_BOTTOM_OFFSET as Eo, APP_SET_FOOTER_HEIGHT as Ka, FOOTER_TOP as kr, FOOTER_BOTTOM as vt, APP_SET_FOOTER_POSITION as dr, getLayoutPaddingClass as Cr, canEvaluateModels as pn, k as ei, IconOpenAI as ti, a as ri, IconAnthropic as ni, i as oi, IconGoogleGemini as si, s as ai, x as ii, p as pr, setNewProvider as fn, TOAST_PROVIDER_CHANGED as mn, useQueryClient as ci, LOG_OUT as hn, IconProfile as li, IconSliders as ui, IconHistory as di, IconEditUser as pi, IconChart as fi, IconInfo as mi, IconBack as hi, IconSettings as gi, n$1 as To, useInViewport as vi, useServerCapabilities as yi, getMessageContaintWrapperClass as _i, UI_FOOTER_BUFFER as So, UI_BUTTON_SCROLL_BUFFER as bi, Logo as wi, isProbablyMobile as Ii, UI_DEFAULT_MAIN_HEIGHT as gn, e as Ei, appReducer as Ti, applyOledMode as Si, APP_SET_OLED_MODE as ki, APP_SET_FULL_SCREEN as Ci, APP_SET_THEME_MODE as xi, APP_SET_THEME_PALETTE as Ai, UI_DEFAULT_MAIN_HEIGHT_IPHONE as Ni, APP_CLASSNAME as Oi, y as vn, v as Pi, LOCAL_STORAGE_SORT as Ri, LOCAL_STORAGE_SEARCH as zi, LOCAL_STORAGE_OLED_MODE as Mi, LOCAL_STORAGE_FULL_SCREEN as $i, LOCAL_STORAGE_SORT_TIMESTAMP as Zi, LOCAL_STORAGE_SORT_TOKEN_USAGE as Di, TOAST_CACHE_ENABLED as Li, TOAST_CACHE_DISABLED as Ui } from "./index.B4ZC1ylG.js";
3
3
  import ko, { useRef as W, useCallback as q, useSyncExternalStore as fr, useEffect as $, useState as Z, createContext as Hr, useContext as X, forwardRef as Xe, useId as Co, useLayoutEffect as Gr, cloneElement as ji, useMemo as be, Suspense as Wt, lazy as Pe, useReducer as Rt } from "react";
4
4
  import z, { clsx as $e } from "clsx";
5
5
  import { computePosition as Fi, offset as xo, flip as Ao, shift as No, arrow as Bi, useMergeRefs as Jr, FloatingPortal as xr, FloatingOverlay as Vi, FloatingFocusManager as Ar, useFloating as Oo, useClick as Po, useDismiss as Ro, useRole as zo, useInteractions as Mo, useFloatingParentNodeId as $o, FloatingTree as Hi, useListItem as Zo, useFloatingTree as Do, useFloatingNodeId as Gi, autoUpdate as Ji, useHover as Wi, safePolygon as Yi, useListNavigation as qi, useTypeahead as Xi, FloatingNode as yn, FloatingList as _n } from "@floating-ui/react";
@@ -5714,7 +5714,7 @@ const Fs = async () => (br || (br = import(
5714
5714
  "./index.790ujKXR.js"
5715
5715
  )), br), Bs = async () => (wr || (wr = import(
5716
5716
  /* webpackChunkName: "toast-utilities" */
5717
- "./index.Bb7Osc7v.js"
5717
+ "./index.B4ZC1ylG.js"
5718
5718
  ).then((e) => e.utilities)), wr), Bf = async () => {
5719
5719
  try {
5720
5720
  await Promise.all([Fs(), Bs()]);
@@ -8351,38 +8351,38 @@ const Bm = [".png", ".jpg", ".jpeg", ".webp"], Vm = [".pdf", ".txt"], Hm = [
8351
8351
  }, wh = Pe(
8352
8352
  () => import(
8353
8353
  /* webpackChunkName: "modal-chunk" */
8354
- "./ProfileEntry.CJ2FlUm-.js"
8354
+ "./ProfileEntry.D9_Layzh.js"
8355
8355
  ).then((e) => ({
8356
8356
  default: e.Profile
8357
8357
  }))
8358
8358
  ), Ih = Pe(
8359
8359
  () => import(
8360
8360
  /* webpackChunkName: "modal-chunk" */
8361
- "./SettingsEntry.Z2ibN15M.js"
8361
+ "./SettingsEntry.CVB299KO.js"
8362
8362
  ).then((e) => ({
8363
8363
  default: e.SettingsPanel
8364
8364
  }))
8365
8365
  ), Eh = Pe(
8366
8366
  () => import(
8367
8367
  /* webpackChunkName: "modal-chunk" */
8368
- "./HistoryEntry.CWQlIC46.js"
8368
+ "./HistoryEntry.B3pcsGv0.js"
8369
8369
  ).then((e) => ({
8370
8370
  default: e.HistoryPanel
8371
8371
  }))
8372
8372
  ), Th = Pe(
8373
8373
  () => import(
8374
8374
  /* webpackChunkName: "modal-chunk" */
8375
- "./AboutEntry.CmbMEk80.js"
8375
+ "./AboutEntry.CiXcxdWb.js"
8376
8376
  ).then((e) => ({ default: e.About }))
8377
8377
  ), Sh = Pe(
8378
8378
  () => import(
8379
8379
  /* webpackChunkName: "modal-chunk" */
8380
- "./UsageEntry.GAzLsiex.js"
8380
+ "./UsageEntry.DSbosEHE.js"
8381
8381
  ).then((e) => ({ default: e.Usage }))
8382
8382
  ), kh = Pe(
8383
8383
  () => import(
8384
8384
  /* webpackChunkName: "modal-chunk" */
8385
- "./UserMemoriesPanel.CDaqt9YY.js"
8385
+ "./UserMemoriesPanel.Cw1kyqCT.js"
8386
8386
  ).then(
8387
8387
  (e) => ({ default: e.default })
8388
8388
  )
@@ -8432,23 +8432,23 @@ const Bm = [".png", ".jpg", ".jpeg", ".webp"], Vm = [".pdf", ".txt"], Hm = [
8432
8432
  f || Promise.all([
8433
8433
  import(
8434
8434
  /* webpackChunkName: "modal-chunk" */
8435
- "./ProfileEntry.CJ2FlUm-.js"
8435
+ "./ProfileEntry.D9_Layzh.js"
8436
8436
  ),
8437
8437
  import(
8438
8438
  /* webpackChunkName: "modal-chunk" */
8439
- "./SettingsEntry.Z2ibN15M.js"
8439
+ "./SettingsEntry.CVB299KO.js"
8440
8440
  ),
8441
8441
  import(
8442
8442
  /* webpackChunkName: "modal-chunk" */
8443
- "./HistoryEntry.CWQlIC46.js"
8443
+ "./HistoryEntry.B3pcsGv0.js"
8444
8444
  ),
8445
8445
  import(
8446
8446
  /* webpackChunkName: "modal-chunk" */
8447
- "./AboutEntry.CmbMEk80.js"
8447
+ "./AboutEntry.CiXcxdWb.js"
8448
8448
  ),
8449
8449
  import(
8450
8450
  /* webpackChunkName: "modal-chunk" */
8451
- "./UsageEntry.GAzLsiex.js"
8451
+ "./UsageEntry.DSbosEHE.js"
8452
8452
  )
8453
8453
  ]).finally(() => m(!0));
8454
8454
  }, [f]), h = q((M) => {
@@ -8718,18 +8718,18 @@ const po = "av-spinner", ra = ({ spinnerRef: e, mode: t = "system", type: r = "c
8718
8718
  ]
8719
8719
  });
8720
8720
  }, Oh = Pe(
8721
- () => import("./index.DwUTIEER.js").then((e) => ({ default: e.Bubble }))
8721
+ () => import("./index.9-MkIV-S.js").then((e) => ({ default: e.Bubble }))
8722
8722
  ), on = (e) => /* @__PURE__ */ p(Wt, { fallback: /* @__PURE__ */ p("span", { className: "inline-block" }), children: /* @__PURE__ */ p(Oh, { ...e }) });
8723
8723
  on.displayName = "AsyncBubble";
8724
8724
  const fo = 1, Ph = 150, Rh = Pe(
8725
8725
  () => import(
8726
8726
  /* webpackChunkName: "LazyMessageAssistant" */
8727
- "./ChatBubbleAssistant.CruRxSPg.js"
8727
+ "./ChatBubbleAssistant.BXXqTyoH.js"
8728
8728
  )
8729
8729
  ), zh = Pe(
8730
8730
  () => import(
8731
8731
  /* webpackChunkName: "LazyMessageUser" */
8732
- "./ChatBubbleUser.CbgAouu5.js"
8732
+ "./ChatBubbleUser.BiKfo_Ki.js"
8733
8733
  )
8734
8734
  ), Mh = ko.memo(
8735
8735
  ({
@@ -1,7 +1,7 @@
1
1
  import { jsx as Pp } from "react/jsx-runtime";
2
- import { getDefaultExportFromCjs as dn } from "./App.DHm-vAz3.js";
2
+ import { getDefaultExportFromCjs as dn } from "./App.D-F98G8L.js";
3
3
  import Op, { useMemo as Lp } from "react";
4
- import { TRIMESTERS_SHORT as Ep, TRIMESTERS as on, TIME_RANGES as ls, isProbablyMobile as Ip, TIME_RANGE_LABELS as an } from "./index.Bb7Osc7v.js";
4
+ import { TRIMESTERS_SHORT as Ep, TRIMESTERS as on, TIME_RANGES as ls, isProbablyMobile as Ip, TIME_RANGE_LABELS as an } from "./index.B4ZC1ylG.js";
5
5
  var hs = { exports: {} }, Dp = hs.exports, nn;
6
6
  function Bp() {
7
7
  return nn || (nn = 1, (function(Ae, pe) {
@@ -1,10 +1,10 @@
1
1
  import { jsx as k } from "react/jsx-runtime";
2
- import { ChatContext as F, AppContext as O, n as P, useUserPreferences as R, convertCamelCaseToReadable as L, numberFormatter as _, pluralize as B } from "./index.Bb7Osc7v.js";
3
- import { BUBBLE_FOOTER_EMPTY as G } from "./index.DwUTIEER.js";
2
+ import { ChatContext as F, AppContext as O, n as P, useUserPreferences as R, convertCamelCaseToReadable as L, numberFormatter as _, pluralize as B } from "./index.B4ZC1ylG.js";
3
+ import { BUBBLE_FOOTER_EMPTY as G } from "./index.9-MkIV-S.js";
4
4
  import E from "clsx";
5
5
  import v, { useState as h, useRef as M, useEffect as S, useContext as x } from "react";
6
- import { AsyncBubble as y } from "./App.DHm-vAz3.js";
7
- import { useMarkdown as D } from "./useMarkdown.CFED0oEl.js";
6
+ import { AsyncBubble as y } from "./App.D-F98G8L.js";
7
+ import { useMarkdown as D } from "./useMarkdown.Dso_yHj4.js";
8
8
  const N = 2, q = N * 1e3, A = "", I = (e) => e * (2 - e);
9
9
  function j(e, o = !0) {
10
10
  const [n, C] = h(0), [a, i] = h(0), [c, g] = h(e), t = M(0), s = M(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.Bb7Osc7v.js";
2
+ import { Button as C } from "./index.B4ZC1ylG.js";
3
3
  import { useState as _, useMemo as m, isValidElement as T, useEffect as b } from "react";
4
- import { AsyncBubble as w } from "./App.DHm-vAz3.js";
5
- import { useMarkdown as x } from "./useMarkdown.CFED0oEl.js";
4
+ import { AsyncBubble as w } from "./App.D-F98G8L.js";
5
+ import { useMarkdown as x } from "./useMarkdown.Dso_yHj4.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 { y as x, v as u, INFINITE_SCROLL_THRESHOLD as v, CARDS as I, pluralize as M, ButtonIcon as i, IconRestore as y, IconStarInCircle as U, IconStarInCircleLight as D, IconDelete as z, numberFormatter as L, isProbablyMobile as _ } from "./index.Bb7Osc7v.js";
3
- import { W as P, j as $, G as m, H as B, M as a, F as f } from "./index.DHtGE5Nb.js";
4
- import { Tooltip as d } from "./App.DHm-vAz3.js";
2
+ import { y as x, v as u, INFINITE_SCROLL_THRESHOLD as v, CARDS as I, pluralize as M, ButtonIcon as i, IconRestore as y, IconStarInCircle as U, IconStarInCircleLight as D, IconDelete as z, numberFormatter as L, isProbablyMobile as _ } from "./index.B4ZC1ylG.js";
3
+ import { W as P, j as $, G as m, H as B, M as a, F as f } from "./index.BT8BoNiE.js";
4
+ import { Tooltip as d } from "./App.D-F98G8L.js";
5
5
  import h from "clsx";
6
6
  import { Fragment as W } 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, y as b, 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, v 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 ve, j as Le, ACTION_SEARCH as Oe } from "./index.Bb7Osc7v.js";
3
- import { useAiChat as ke, ConfirmationPanel as Re, LazyToastContainerWrapper as be, showErrorToast as Ie, 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.DHm-vAz3.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, y as b, 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, v 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 ve, j as Le, ACTION_SEARCH as Oe } from "./index.B4ZC1ylG.js";
3
+ import { useAiChat as ke, ConfirmationPanel as Re, LazyToastContainerWrapper as be, showErrorToast as Ie, 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.D-F98G8L.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.BXm0Wfn8.js"
9
+ "./ChatHistoryTable.uZ3Co9Ht.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 $, p as V, setUserPlan as q, Card as d, renderDataAsList as J, CARDS as n, L as h, j as i, Button as L, it as Q, isTauri as X, ButtonIcon as Z, IconPasskey as k, PROFILE_TITLE as ee } from "./index.Bb7Osc7v.js";
3
- import { preloadToast as ae, showSuccessToast as se, showErrorToast as ne, ConfirmationPanel as re, LazyToastContainerWrapper as le, Panel as te } from "./App.DHm-vAz3.js";
2
+ import { n as O, useUniqueId as W, useUserPreferences as Y, useServerCapabilities as $, p as V, setUserPlan as q, Card as d, renderDataAsList as J, CARDS as n, L as h, j as i, Button as L, st as Q, isTauri as X, ButtonIcon as Z, IconPasskey as k, PROFILE_TITLE as ee } from "./index.B4ZC1ylG.js";
3
+ import { preloadToast as ae, showSuccessToast as se, showErrorToast as ne, ConfirmationPanel as re, LazyToastContainerWrapper as le, Panel as te } from "./App.D-F98G8L.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, w as ie, useLocalStorage as de, LOCAL_STORAGE_OLED_MODE as $e, LOCAL_STORAGE_FULL_SCREEN as ze, e as ue, canEvaluateModels as He, W as Ye, getCacheInfo as qe, isServiceWorkerEnabled as Ke, SETTINGS_TITLE as Qe, Card as f, CARDS as r, V as Je, Button as v, PROMPTS_DESCRIPTION as Xe, K as me, L as Ze, j as he, applyOledMode as fe, APP_SET_OLED_MODE as Ee, APP_SET_FULL_SCREEN as Se, getCurrentGeoLocation as et, graphQLRequest as pe, handleServiceWorkerToggle as tt, SERVICE_TYPES as ge } from "./index.Bb7Osc7v.js";
3
- import { useCapability as Te, Panel as ot, Toggle as l } from "./App.DHm-vAz3.js";
4
- import { TextArea as Ne } from "./index.CkE_mvVS.js";
2
+ import { n as je, useEntitlements as Ve, AppContext as Fe, useUserPreferences as We, w as ie, useLocalStorage as de, LOCAL_STORAGE_OLED_MODE as $e, LOCAL_STORAGE_FULL_SCREEN as ze, e as ue, canEvaluateModels as He, W as Ye, getCacheInfo as qe, isServiceWorkerEnabled as Ke, SETTINGS_TITLE as Qe, Card as f, CARDS as r, V as Je, Button as v, PROMPTS_DESCRIPTION as Xe, K as me, L as Ze, j as he, applyOledMode as fe, APP_SET_OLED_MODE as Ee, APP_SET_FULL_SCREEN as Se, getCurrentGeoLocation as et, graphQLRequest as pe, handleServiceWorkerToggle as tt, SERVICE_TYPES as ge } from "./index.B4ZC1ylG.js";
3
+ import { useCapability as Te, Panel as ot, Toggle as l } from "./App.D-F98G8L.js";
4
+ import { TextArea as Ne } from "./index.Bxth_OL4.js";
5
5
  import { useContext as st, useState as s, useMemo as at, useCallback as nt, useEffect as be } from "react";
6
6
  const ut = ({
7
7
  open: Ce,
@@ -0,0 +1,240 @@
1
+ import { jsxs as d, jsx as e } from "react/jsx-runtime";
2
+ import { n as X, useUniqueId as Z, useUserChatStats as J, useLocalStorage as g, LOCAL_STORAGE_PREFIX as _, LOCAL_STORAGE_USAGE_VIEW_MODE as Q, LOCAL_STORAGE_USAGE_TIME_RANGE as $, TIME_RANGES as t, LOCAL_STORAGE_USAGE_SELECTED_MONTH as ee, useChatsUsage as te, USAGE_TITLE as ne, Card as Y, CARDS as T, L as A, j as c, TIME_RANGE_LABELS as k, MONTHS as N, ButtonIcon as u, IconChart as re, IconSelected as P, IconUnSelected as b, IconPrevious as le, IconNext as se, renderDataAsList as ae, Button as oe, pluralize as D } from "./index.B4ZC1ylG.js";
3
+ import { Panel as ie, Menu as x, MenuGroupLabel as ce, MenuItem as G } from "./App.D-F98G8L.js";
4
+ import { useState as U, Suspense as de, lazy as Te } from "react";
5
+ const a = [0, 3, 6, 9], s = {
6
+ TOKEN: "token",
7
+ MODEL: "model"
8
+ }, ue = [
9
+ t.TODAY,
10
+ t.YESTERDAY,
11
+ t.CURRENT_YEAR,
12
+ t.LAST_YEAR
13
+ ], Ee = Te(
14
+ () => import(
15
+ /* webpackChunkName: "chart-highcharts" */
16
+ "./Chart.ClZfyux0.js"
17
+ )
18
+ ), me = ({
19
+ open: v,
20
+ onOpenChange: R
21
+ }) => {
22
+ const { getAccessToken: L, user: p } = X(), H = Z(), { data: o, isSuccess: F } = J({
23
+ user: p?.username,
24
+ getAccessToken: L
25
+ }), f = Math.floor((/* @__PURE__ */ new Date()).getMonth() / 3) * 3, [m, C] = U(f), [i, z] = g({
26
+ key: _ + Q,
27
+ initialValue: s.MODEL
28
+ }), [r, E] = g({
29
+ key: _ + $,
30
+ initialValue: t.CURRENT_YEAR
31
+ }), [l, S] = g({
32
+ key: _ + ee,
33
+ initialValue: null
34
+ }), [B, y] = U(
35
+ (/* @__PURE__ */ new Date()).getFullYear()
36
+ ), { data: h, isSuccess: V } = te({
37
+ user: p?.username,
38
+ getAccessToken: L,
39
+ timeRange: r,
40
+ month: r === t.SPECIFIC_MONTH && l !== null ? String(l) : void 0,
41
+ year: r === t.SPECIFIC_MONTH ? String(B) : void 0,
42
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
43
+ }), K = (n) => {
44
+ if (n.preventDefault(), r === t.TODAY || r === t.YESTERDAY) {
45
+ E(
46
+ r === t.TODAY ? t.YESTERDAY : t.TODAY
47
+ );
48
+ return;
49
+ }
50
+ if (r === t.SPECIFIC_MONTH && l !== null) {
51
+ const M = (l + 1) % 12;
52
+ S(M);
53
+ return;
54
+ }
55
+ const O = (a.indexOf(m) + 1) % a.length;
56
+ C(a[O]);
57
+ }, j = (n) => {
58
+ if (n.preventDefault(), r === t.TODAY || r === t.YESTERDAY) {
59
+ E(
60
+ r === t.TODAY ? t.YESTERDAY : t.TODAY
61
+ );
62
+ return;
63
+ }
64
+ if (r === t.SPECIFIC_MONTH && l !== null) {
65
+ const M = (l - 1 + 12) % 12;
66
+ S(M);
67
+ return;
68
+ }
69
+ const O = (a.indexOf(m) - 1 + a.length) % a.length;
70
+ C(a[O]);
71
+ }, w = (n) => {
72
+ E(n), n !== t.SPECIFIC_MONTH && S(null), (n === t.CURRENT_YEAR || n === t.LAST_YEAR) && C(f);
73
+ }, W = (n) => {
74
+ S(n), y((/* @__PURE__ */ new Date()).getFullYear()), E(t.SPECIFIC_MONTH);
75
+ }, q = () => r === t.SPECIFIC_MONTH && l !== null ? N[l] : k[r];
76
+ return /* @__PURE__ */ d(
77
+ ie,
78
+ {
79
+ open: v,
80
+ onOpenChange: R,
81
+ title: ne,
82
+ animation: !0,
83
+ animationType: "fade",
84
+ blurEffect: "large",
85
+ footer: /* @__PURE__ */ e(
86
+ A,
87
+ {
88
+ columnGap: 2,
89
+ alignHorizontal: "flex-end",
90
+ className: "pb-8 sm:pb-0",
91
+ children: /* @__PURE__ */ e(c, { children: /* @__PURE__ */ e(
92
+ oe,
93
+ {
94
+ mode: "dark",
95
+ variant: "secondary",
96
+ focusMode: "light",
97
+ noBorder: !0,
98
+ onClick: () => R(!1),
99
+ children: "Dismiss"
100
+ }
101
+ ) })
102
+ }
103
+ ),
104
+ children: [
105
+ /* @__PURE__ */ e(
106
+ Y,
107
+ {
108
+ header: T.MAIN_STATISTICS.USAGE,
109
+ className: "prose-dark dark:prose-lighter mb-4 min-h-[578px]",
110
+ noBorder: !0,
111
+ children: V && h ? /* @__PURE__ */ d(de, { fallback: /* @__PURE__ */ e("div", {}), children: [
112
+ /* @__PURE__ */ e(A, { className: "mb-2", alignHorizontal: "center", children: /* @__PURE__ */ e(c, { children: /* @__PURE__ */ d(
113
+ x,
114
+ {
115
+ mode: "dark",
116
+ focusMode: "light",
117
+ trigger: /* @__PURE__ */ e(
118
+ u,
119
+ {
120
+ noBorder: !0,
121
+ variant: "selected",
122
+ size: "small",
123
+ labelRight: q(),
124
+ children: /* @__PURE__ */ e(re, { className: "mr-1", size: "size-4" })
125
+ }
126
+ ),
127
+ defaultPlacement: "bottom-start",
128
+ children: [
129
+ /* @__PURE__ */ e(ce, { children: "Date Range" }),
130
+ ue.map((n) => /* @__PURE__ */ e(
131
+ G,
132
+ {
133
+ label: k[n],
134
+ selected: r === n,
135
+ onClick: () => w(n)
136
+ },
137
+ n
138
+ )),
139
+ /* @__PURE__ */ e(x, { label: "Month", children: N.map((n, I) => /* @__PURE__ */ e(
140
+ G,
141
+ {
142
+ label: n,
143
+ selected: r === t.SPECIFIC_MONTH && l === I,
144
+ onClick: () => W(I)
145
+ },
146
+ n
147
+ )) })
148
+ ]
149
+ }
150
+ ) }) }),
151
+ /* @__PURE__ */ d(A, { className: "mb-2", alignHorizontal: "center", columnGap: 2, children: [
152
+ /* @__PURE__ */ e(c, { children: /* @__PURE__ */ e(
153
+ u,
154
+ {
155
+ onClick: () => z(s.MODEL),
156
+ labelRight: "Model Usage",
157
+ noBorder: !0,
158
+ size: "small",
159
+ mode: i === s.MODEL ? "light" : "dark",
160
+ children: i === s.MODEL ? /* @__PURE__ */ e(P, { size: "size-4" }) : /* @__PURE__ */ e(b, { size: "size-4" })
161
+ }
162
+ ) }),
163
+ /* @__PURE__ */ e(c, { children: /* @__PURE__ */ e(
164
+ u,
165
+ {
166
+ onClick: () => z(s.TOKEN),
167
+ labelRight: "Token Usage",
168
+ noBorder: !0,
169
+ size: "small",
170
+ mode: i === s.TOKEN ? "light" : "dark",
171
+ children: i === s.TOKEN ? /* @__PURE__ */ e(P, { size: "size-4" }) : /* @__PURE__ */ e(b, { size: "size-4" })
172
+ }
173
+ ) })
174
+ ] }),
175
+ /* @__PURE__ */ e(
176
+ Ee,
177
+ {
178
+ tokenUsage: i === s.TOKEN ? h.tokenUsage?.series || [] : h.modelUsage?.series || [],
179
+ page: m,
180
+ viewMode: i,
181
+ timeRange: r,
182
+ categories: h.categories,
183
+ chartTitle: r === t.SPECIFIC_MONTH && l !== null ? N[l] : void 0
184
+ }
185
+ ),
186
+ /* @__PURE__ */ d(A, { className: "mt-2", alignHorizontal: "center", columnGap: 2, children: [
187
+ /* @__PURE__ */ e(c, { children: /* @__PURE__ */ e(
188
+ u,
189
+ {
190
+ noBorder: !0,
191
+ size: "small",
192
+ label: "Previous",
193
+ onClick: j,
194
+ children: /* @__PURE__ */ e(le, { size: "size-4" })
195
+ }
196
+ ) }),
197
+ /* @__PURE__ */ e(c, { children: /* @__PURE__ */ e(
198
+ u,
199
+ {
200
+ noBorder: !0,
201
+ size: "small",
202
+ label: "Next",
203
+ onClick: K,
204
+ children: /* @__PURE__ */ e(se, { size: "size-4" })
205
+ }
206
+ ) })
207
+ ] })
208
+ ] }) : null
209
+ }
210
+ ),
211
+ /* @__PURE__ */ e(
212
+ Y,
213
+ {
214
+ header: T.MAIN_STATISTICS.TITLE,
215
+ className: "prose-dark dark:prose-lighter min-h-[170px]",
216
+ noBorder: !0,
217
+ children: F ? ae(
218
+ H,
219
+ {
220
+ [D(T.MAIN_STATISTICS.TOTAL, o.totalChats)]: o.totalChats,
221
+ [D(
222
+ T.MAIN_STATISTICS.TOTAL_PRIVATE,
223
+ o.privateChats
224
+ )]: o.privateChats,
225
+ [D(
226
+ T.MAIN_STATISTICS.TOTAL_DELETED,
227
+ o.deletedChats
228
+ )]: o.deletedChats
229
+ },
230
+ !0
231
+ ) : null
232
+ }
233
+ )
234
+ ]
235
+ }
236
+ );
237
+ };
238
+ export {
239
+ me as Usage
240
+ };
@@ -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 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.Bb7Osc7v.js";
3
- import { Panel as se, Toggle as _, ConfirmationPanel as te, Tooltip as z } from "./App.DHm-vAz3.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.DHtGE5Nb.js";
2
+ import { L as E, j 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.B4ZC1ylG.js";
3
+ import { Panel as se, Toggle as _, ConfirmationPanel as te, Tooltip as z } from "./App.D-F98G8L.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.BT8BoNiE.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.CkE_mvVS.js";
7
+ import { TextArea as _e } from "./index.Bxth_OL4.js";
8
8
  const ze = ({
9
9
  open: C,
10
10
  onOpenChange: M,
@@ -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.Bb7Osc7v.js";
2
+ import { ButtonIcon as E, IconCopied as C, IconCopy as I } from "./index.B4ZC1ylG.js";
3
3
  import { useState as N, useEffect as $ } from "react";
4
4
  import t from "clsx";
5
5
  /*!