@versini/sassysaint 8.99.0 → 8.99.2

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.Lsbr0lUh.js → AboutChangelog.u1NxfRZ6.js} +3 -3
  2. package/dist/chunks/{AboutEntry.C-uC4MBB.js → AboutEntry.2URxdMvt.js} +5 -5
  3. package/dist/chunks/{App.lHXZIn8I.js → App.9OTgQFE5.js} +1737 -1715
  4. package/dist/chunks/{Chart.ClOH2fiY.js → Chart.CTX3yXAp.js} +2 -2
  5. package/dist/chunks/{ChatBubbleAssistant.BV6sVx6a.js → ChatBubbleAssistant.DHiBvqvV.js} +793 -753
  6. package/dist/chunks/{ChatBubbleUser.Dij7uJwm.js → ChatBubbleUser.BdygOc-M.js} +36 -36
  7. package/dist/chunks/{ChatHistoryTable.BFfmfdjX.js → ChatHistoryTable.XuPzHnDG.js} +38 -38
  8. package/dist/chunks/{HistoryEntry.BkOQP3CV.js → HistoryEntry.CVgA3SYH.js} +16 -16
  9. package/dist/chunks/{ProfileEntry.DuvmIHnj.js → ProfileEntry.wwU14Mrk.js} +2 -2
  10. package/dist/chunks/{SettingsEntry.Cu-T81W1.js → SettingsEntry.CFneilrk.js} +16 -16
  11. package/dist/chunks/{UsageEntry.XYX0KDAl.js → UsageEntry.CgMVSr_T.js} +23 -23
  12. package/dist/chunks/{UserMemoriesPanel.Cm0Gz7iM.js → UserMemoriesPanel.D9cKoAvT.js} +8 -8
  13. package/dist/chunks/{index.5-5jxYfs.js → index.BNtgmlzo.js} +358 -358
  14. package/dist/chunks/{index.B5oy8JDL.js → index.BgQcUSpD.js} +1 -1
  15. package/dist/chunks/{index.BTGZYTuA.js → index.CI7wfY6h.js} +2 -2
  16. package/dist/chunks/{index.CfH88Vnf.js → index.CSpbJbbj.js} +1 -1
  17. package/dist/chunks/{index.CDxR_BoA.js → index.CbyVRgN9.js} +29 -29
  18. package/dist/chunks/{index.B-J4ZnaE.js → index.CqZKR4eS.js} +18 -18
  19. package/dist/chunks/{index.D5nCT2P4.js → index.DXbW0hgE.js} +1 -1
  20. package/dist/chunks/{index.ttYr-nJ-.js → index.Dy3lHiSY.js} +18 -18
  21. package/dist/chunks/{index.DvsI9f9_.js → index.IgpP31Km.js} +3 -3
  22. package/dist/chunks/{useMarkdown.Df5zZY4U.js → useMarkdown.CnnQWkcw.js} +146 -140
  23. package/dist/components/SassySaint/SassySaint.js +1 -1
  24. package/dist/index.js +4 -4
  25. package/dist/style.css +2 -2
  26. package/package.json +6 -6
@@ -1,35 +1,35 @@
1
- import { jsx as a, Fragment as h, jsxs as S } from "react/jsx-runtime";
2
- import { Button as C } from "./index.5-5jxYfs.js";
3
- import { useState as _, useMemo as m, isValidElement as T, useEffect as b } from "react";
4
- import { AsyncBubble as w } from "./App.lHXZIn8I.js";
5
- import { useMarkdown as x } from "./useMarkdown.Df5zZY4U.js";
1
+ import { jsx as i, Fragment as I, jsxs as S } from "react/jsx-runtime";
2
+ import { Button as h } from "./index.BNtgmlzo.js";
3
+ import { useState as C, useMemo as m, isValidElement as T, useEffect as _ } from "react";
4
+ import { AsyncBubble as b } from "./App.9OTgQFE5.js";
5
+ import { useMarkdown as k } from "./useMarkdown.CnnQWkcw.js";
6
6
  /*!
7
- @versini/ui-truncate v6.0.0
7
+ @versini/ui-truncate v6.0.3
8
8
  © 2025 gizmette.com
9
9
  */
10
10
  try {
11
11
  window.__VERSINI_UI_TRUNCATE__ || (window.__VERSINI_UI_TRUNCATE__ = {
12
- version: "6.0.0",
13
- buildTime: "12/04/2025 04:03 PM EST",
14
- homepage: "https://github.com/aversini/ui-components",
12
+ version: "6.0.3",
13
+ buildTime: "12/12/2025 10:31 AM EST",
14
+ homepage: "https://www.npmjs.com/package/@versini/ui-truncate",
15
15
  license: "MIT"
16
16
  });
17
17
  } catch {
18
18
  }
19
- const M = 200, k = ({ string: e, idealLength: t = M }) => {
20
- if (e.length <= t)
19
+ const x = 200, M = ({ string: e, idealLength: r = x }) => {
20
+ if (e.length <= r)
21
21
  return {
22
22
  string: e,
23
23
  isTruncated: !1
24
24
  };
25
- if (e.charAt(t) === " ")
25
+ if (e.charAt(r) === " ")
26
26
  return {
27
- string: e.slice(0, t),
27
+ string: e.slice(0, r),
28
28
  isTruncated: !0
29
29
  };
30
- const s = e.slice(t).search(" ");
30
+ const s = e.slice(r).search(" ");
31
31
  return {
32
- string: e.slice(0, t + s),
32
+ string: e.slice(0, r + s),
33
33
  isTruncated: !0
34
34
  };
35
35
  }, l = (e) => e == null || typeof e == "boolean" ? "" : typeof e == "string" || typeof e == "number" ? String(e) : Array.isArray(e) ? e.map(l).join("") : /* @__PURE__ */ T(e) ? l(e.props.children) : "", B = /* @__PURE__ */ new Set([
@@ -65,54 +65,54 @@ const M = 200, k = ({ string: e, idealLength: t = M }) => {
65
65
  if (Array.isArray(e))
66
66
  return e.some(u);
67
67
  if (/* @__PURE__ */ T(e)) {
68
- const t = e;
69
- return typeof t.type == "string" && B.has(t.type.toUpperCase()) ? !0 : u(t.props.children);
68
+ const r = e;
69
+ return typeof r.type == "string" && B.has(r.type.toUpperCase()) ? !0 : u(r.props.children);
70
70
  }
71
71
  return !1;
72
- }, H = ({ children: e, length: t = 200, mode: n = "system", focusMode: c = "system", enableRichTruncation: s = !1 }) => {
73
- const [r, d] = _(!1), y = typeof e != "string" && !s, p = m(() => typeof e == "string" ? e : l(e), [
72
+ }, H = ({ children: e, length: r = 200, mode: n = "system", focusMode: c = "system", enableRichTruncation: s = !1 }) => {
73
+ const [t, d] = C(!1), y = typeof e != "string" && !s, p = m(() => typeof e == "string" ? e : l(e), [
74
74
  e
75
- ]), { string: f, isTruncated: i } = m(() => k({
75
+ ]), { string: f, isTruncated: a } = m(() => M({
76
76
  string: p,
77
- idealLength: t
77
+ idealLength: r
78
78
  }), [
79
79
  p,
80
- t
81
- ]), g = s && i && !r, E = (I) => {
82
- I.preventDefault(), d(!r);
80
+ r
81
+ ]), g = s && a && !t, E = (w) => {
82
+ w.preventDefault(), d(!t);
83
83
  };
84
84
  if (y)
85
- return /* @__PURE__ */ a(h, {
85
+ return /* @__PURE__ */ i(I, {
86
86
  children: e
87
87
  });
88
88
  let o;
89
- i ? r ? o = e : o = f : o = e;
89
+ a ? t ? o = e : o = f : o = e;
90
90
  const A = s ? u(e) : !1;
91
91
  return /* @__PURE__ */ S("span", {
92
92
  style: {
93
93
  wordBreak: "break-word"
94
94
  },
95
95
  "data-testid": "truncate-root",
96
- "aria-expanded": i ? r : void 0,
96
+ "aria-expanded": a ? t : void 0,
97
97
  children: [
98
98
  o,
99
- i && /* @__PURE__ */ a(C, {
99
+ a && /* @__PURE__ */ i(h, {
100
100
  mode: n,
101
101
  focusMode: c,
102
- className: !(s && r && A) ? "ml-2" : void 0,
102
+ className: !(s && t && A) ? "ml-2" : void 0,
103
103
  size: "small",
104
104
  onClick: E,
105
- "aria-label": r ? "Show less" : "Show more",
106
- children: r ? "less..." : "more..."
105
+ "aria-label": t ? "Show less" : "Show more",
106
+ children: t ? "less..." : "more..."
107
107
  })
108
108
  ]
109
109
  });
110
110
  }, F = ({ content: e }) => {
111
- const [t, n] = x();
112
- return b(() => {
111
+ const [r, n] = k();
112
+ return _(() => {
113
113
  e && n(e);
114
- }, [e, n]), /* @__PURE__ */ a(
115
- w,
114
+ }, [e, n]), /* @__PURE__ */ i(
115
+ b,
116
116
  {
117
117
  gradient: "light",
118
118
  tail: !0,
@@ -122,7 +122,7 @@ const M = 200, k = ({ string: e, idealLength: t = M }) => {
122
122
  kind: "right",
123
123
  className: "mt-3",
124
124
  contentClassName: "prose prose-lighter prose-p:only:my-0",
125
- children: /* @__PURE__ */ a(H, { mode: "light", focusMode: "light", enableRichTruncation: !0, children: t })
125
+ children: /* @__PURE__ */ i(H, { mode: "light", focusMode: "light", enableRichTruncation: !0, children: r })
126
126
  }
127
127
  );
128
128
  };
@@ -1,18 +1,18 @@
1
1
  import { jsxs as c, jsx as e } from "react/jsx-runtime";
2
- import { IconCloseLight as L, y as M, v as w, INFINITE_SCROLL_THRESHOLD as U, CARDS as D, pluralize as I, ButtonIcon as C, IconRestore as z, IconStarInCircle as B, IconStarInCircleLight as $, IconDelete as Y, numberFormatter as G, isProbablyMobile as K } from "./index.5-5jxYfs.js";
3
- import { useState as V, Fragment as W } from "react";
2
+ import { IconCloseLight as P, y as S, v as M, INFINITE_SCROLL_THRESHOLD as U, CARDS as D, pluralize as k, ButtonIcon as C, IconRestore as z, IconStarInCircle as B, IconStarInCircleLight as $, IconDelete as Y, numberFormatter as j, isProbablyMobile as G } from "./index.BNtgmlzo.js";
3
+ import { useState as K, Fragment as V } from "react";
4
4
  import i from "clsx";
5
- import { j, D as F, F as N, G as H, L as o, Y as k } from "./index.CDxR_BoA.js";
6
- import { ResponsiveTooltip as S } from "./App.lHXZIn8I.js";
5
+ import { j as W, D as F, F as N, G as H, L as o, Y as A } from "./index.CbyVRgN9.js";
6
+ import { ResponsiveTooltip as w } from "./App.9OTgQFE5.js";
7
7
  /*!
8
- @versini/ui-pill v5.2.1
8
+ @versini/ui-pill v5.2.3
9
9
  © 2025 gizmette.com
10
10
  */
11
11
  try {
12
12
  window.__VERSINI_UI_PILL__ || (window.__VERSINI_UI_PILL__ = {
13
- version: "5.2.1",
14
- buildTime: "11/30/2025 06:54 PM EST",
15
- homepage: "https://github.com/aversini/ui-components",
13
+ version: "5.2.3",
14
+ buildTime: "12/12/2025 10:30 AM EST",
15
+ homepage: "https://www.npmjs.com/package/@versini/ui-pill",
16
16
  license: "MIT"
17
17
  });
18
18
  } catch {
@@ -22,7 +22,7 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
22
22
  "border-border-warning": t === "warning",
23
23
  "border-border-success": t === "success",
24
24
  "border-border-error": t === "error"
25
- }), A = ({ variant: t }) => i("not-prose", {
25
+ }), I = ({ variant: t }) => i("not-prose", {
26
26
  "text-copy-information": t === "information",
27
27
  "text-copy-warning": t === "warning",
28
28
  "text-copy-success": t === "success",
@@ -37,16 +37,16 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
37
37
  return {
38
38
  main: i(q, "inline-flex items-center gap-1 px-2 py-0.5 text-xs", J({
39
39
  variant: l
40
- }), A({
40
+ }), I({
41
41
  variant: l
42
42
  }), Q(t), a),
43
- button: i("inline-flex items-center justify-center", "ml-1", "focus:outline", "focus:outline-1", "focus:outline-offset-1", "focus:outline-focus-dark", "hover:bg-surface-medium/50", "rounded-full", A({
43
+ button: i("inline-flex items-center justify-center", "ml-1", "focus:outline", "focus:outline-1", "focus:outline-offset-1", "focus:outline-focus-dark", "hover:bg-surface-medium/50", "rounded-full", I({
44
44
  variant: l
45
45
  }))
46
46
  };
47
47
  }, R = ({ label: t, className: a, variant: l = "information", description: m, onClose: d }) => {
48
- const [h, g] = V(!0), p = (f) => {
49
- d && (d(f), f.defaultPrevented || g(!1));
48
+ const [h, p] = K(!0), g = (f) => {
49
+ d && (d(f), f.defaultPrevented || p(!1));
50
50
  };
51
51
  if (!h)
52
52
  return null;
@@ -67,10 +67,10 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
67
67
  }),
68
68
  d && /* @__PURE__ */ e("button", {
69
69
  type: "button",
70
- onClick: p,
70
+ onClick: g,
71
71
  className: u.button,
72
72
  "aria-label": "Close",
73
- children: /* @__PURE__ */ e(L, {
73
+ children: /* @__PURE__ */ e(P, {
74
74
  size: "size-3"
75
75
  })
76
76
  })
@@ -78,9 +78,9 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
78
78
  });
79
79
  }, n = {
80
80
  ROW: "row",
81
- TIMESTAMP: M,
81
+ TIMESTAMP: S,
82
82
  SUMMARY: "summary",
83
- TOKEN_USAGE: w,
83
+ TOKEN_USAGE: M,
84
84
  ACTIONS: "actions"
85
85
  }, Z = [
86
86
  n.ROW,
@@ -100,29 +100,29 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
100
100
  onClickSort: m,
101
101
  onClickRestore: d,
102
102
  onClickDelete: h,
103
- onClickFavorite: g,
104
- infinityScrollMarkerRef: p,
103
+ onClickFavorite: p,
104
+ infinityScrollMarkerRef: g,
105
105
  isLoading: u = !1,
106
106
  totalHistoryCount: f,
107
107
  isFiltered: O = !1,
108
108
  isSearchActive: T = !1
109
109
  }) => {
110
- const y = K() ? Z : ee, E = (r) => {
110
+ const y = G() ? Z : ee, E = (r) => {
111
111
  switch (r) {
112
112
  case n.ROW:
113
113
  return /* @__PURE__ */ e(o, { className: "sr-only", children: "Row" }, r);
114
114
  case n.TIMESTAMP:
115
115
  return T ? /* @__PURE__ */ e(o, { className: "text-xs sm:text-sm", children: "Date" }, r) : /* @__PURE__ */ e(
116
- k,
116
+ A,
117
117
  {
118
118
  focusMode: "system",
119
119
  buttonClassName: "text-xs sm:text-sm",
120
- cellId: M,
120
+ cellId: S,
121
121
  align: "left",
122
122
  sortDirection: a.sortDirection,
123
123
  sortedCell: a.sortedCell,
124
124
  onClick: () => {
125
- m(M);
125
+ m(S);
126
126
  },
127
127
  children: "Date"
128
128
  },
@@ -132,16 +132,16 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
132
132
  return /* @__PURE__ */ e(o, { className: "text-xs sm:text-sm", children: "Summary" }, r);
133
133
  case n.TOKEN_USAGE:
134
134
  return T ? /* @__PURE__ */ e(o, { className: "text-xs sm:text-sm text-right", children: "Tokens" }, r) : /* @__PURE__ */ e(
135
- k,
135
+ A,
136
136
  {
137
137
  focusMode: "system",
138
138
  buttonClassName: "text-xs sm:text-sm",
139
- cellId: w,
139
+ cellId: M,
140
140
  align: "right",
141
141
  sortDirection: a.sortDirection,
142
142
  sortedCell: a.sortedCell,
143
143
  onClick: () => {
144
- m(w);
144
+ m(M);
145
145
  },
146
146
  children: "Tokens"
147
147
  },
@@ -171,13 +171,13 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
171
171
  r
172
172
  );
173
173
  case n.SUMMARY: {
174
- const x = s.similarityScore !== void 0 && s.similarityScore !== null ? Math.round(s.similarityScore * 100) : null, v = x !== null && x < 40 ? "warning" : "success", P = s.keywordMatch === !0;
174
+ const x = s.similarityScore !== void 0 && s.similarityScore !== null ? Math.round(s.similarityScore * 100) : null, v = x !== null && x < 40 ? "warning" : "success", L = s.keywordMatch === !0;
175
175
  return /* @__PURE__ */ e(
176
176
  o,
177
177
  {
178
178
  className: i(
179
179
  "dark:text-white",
180
- "max-w-[100px] sm:max-w-full text-xs sm:text-sm"
180
+ "max-w-25 sm:max-w-full text-xs sm:text-sm"
181
181
  ),
182
182
  style: {
183
183
  wordBreak: "break-word"
@@ -191,7 +191,7 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
191
191
  label: `${x}% semantic`
192
192
  }
193
193
  ),
194
- P && /* @__PURE__ */ e(R, { variant: "information", label: "keyword" })
194
+ L && /* @__PURE__ */ e(R, { variant: "information", label: "keyword" })
195
195
  ] }),
196
196
  /* @__PURE__ */ e("span", { children: s.summary })
197
197
  ] })
@@ -205,7 +205,7 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
205
205
  {
206
206
  className: i("dark:text-gray-400", "text-xs sm:text-sm"),
207
207
  align: "right",
208
- children: s.tokenUsage ? G.format(s.tokenUsage) : "0"
208
+ children: s.tokenUsage ? j.format(s.tokenUsage) : "0"
209
209
  },
210
210
  r
211
211
  );
@@ -216,7 +216,7 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
216
216
  className: "border-l border-table-light dark:border-table-dark",
217
217
  children: /* @__PURE__ */ c("div", { className: "flex flex-col items-end sm:flex-row gap-2", children: [
218
218
  /* @__PURE__ */ e(
219
- S,
219
+ w,
220
220
  {
221
221
  label: "Restore chat",
222
222
  placement: "top",
@@ -236,7 +236,7 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
236
236
  }
237
237
  ),
238
238
  /* @__PURE__ */ e(
239
- S,
239
+ w,
240
240
  {
241
241
  label: s.favoriteChat ? "Remove from favorites" : "Add to favorites",
242
242
  placement: "top",
@@ -247,7 +247,7 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
247
247
  label: s.favoriteChat ? "Remove from favorites" : "Add to favorites",
248
248
  variant: "primary",
249
249
  onClick: async () => {
250
- await g(s);
250
+ await p(s);
251
251
  },
252
252
  children: s.favoriteChat ? /* @__PURE__ */ e(B, { size: "size-4", monotone: !0 }) : /* @__PURE__ */ e($, { size: "size-4", monotone: !0 })
253
253
  }
@@ -255,7 +255,7 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
255
255
  }
256
256
  ),
257
257
  /* @__PURE__ */ e(
258
- S,
258
+ w,
259
259
  {
260
260
  label: "Delete chat",
261
261
  placement: "top",
@@ -283,20 +283,20 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
283
283
  }
284
284
  };
285
285
  return /* @__PURE__ */ c(
286
- j,
286
+ W,
287
287
  {
288
288
  stickyHeader: !0,
289
289
  compact: !0,
290
290
  mode: "alt-system",
291
291
  caption: (() => {
292
292
  const r = t.length, s = f ?? r;
293
- return O && s > r ? `Showing ${I(`${r} chat`, r)} out of ${s}` : I(`${r} chat`, r);
293
+ return O && s > r ? `Showing ${k(`${r} chat`, r)} out of ${s}` : k(`${r} chat`, r);
294
294
  })(),
295
295
  disabled: u && t.length > 0,
296
296
  children: [
297
297
  /* @__PURE__ */ e(F, { children: /* @__PURE__ */ e(N, { children: y.map((r) => E(r)) }) }),
298
- /* @__PURE__ */ e(H, { children: u && t.length === 0 ? /* @__PURE__ */ e(N, { children: /* @__PURE__ */ e(o, { colSpan: 1e3, children: /* @__PURE__ */ e("div", { children: "Loading..." }) }) }) : t.slice(0, l).map((r, s) => r?.summary ? /* @__PURE__ */ c(W, { children: [
299
- s === l - U && /* @__PURE__ */ e("tr", { ref: p }),
298
+ /* @__PURE__ */ e(H, { children: u && t.length === 0 ? /* @__PURE__ */ e(N, { children: /* @__PURE__ */ e(o, { colSpan: 1e3, children: /* @__PURE__ */ e("div", { children: "Loading..." }) }) }) : t.slice(0, l).map((r, s) => r?.summary ? /* @__PURE__ */ c(V, { children: [
299
+ s === l - U && /* @__PURE__ */ e("tr", { ref: g }),
300
300
  /* @__PURE__ */ e(N, { children: y.map(
301
301
  (b) => _(b, r, s)
302
302
  ) })
@@ -1,12 +1,12 @@
1
1
  import { jsxs as i, Fragment as ae, jsx as t } from "react/jsx-runtime";
2
- import { n as j, INFINITE_SCROLL_LIMIT as P, INFINITE_SCROLL_THRESHOLD as re, HistoryContext as K, ChatContext as se, useLocalStorage as h, LOCAL_STORAGE_PREFIX as m, LOCAL_STORAGE_SORT_TIMESTAMP as oe, e$1 as d, LOCAL_STORAGE_SORT_TOKEN_USAGE as ne, LOCAL_STORAGE_SORT as ie, y as x, LOCAL_STORAGE_CHAT_ID as ce, useDeleteChat as le, useToggleFavoriteChat as de, APP_CLASSNAME as he, TOAST_CHAT_DELETED as me, graphQLRequest as ue, SERVICE_TYPES as Ce, ACTION_SORT as Se, v as fe, LOCAL_STORAGE_SEARCH as ye, LOCAL_STORAGE_FAVORITES_ONLY as Te, LOCAL_STORAGE_KEYWORD_MATCH_ALL as pe, useChatsHistory as ge, useUserChatStats as Ae, HISTORY_TITLE as Ee, Card as _e, TextInput as Le, debounce as De, IconSearch as ke, Button as Oe, L as ve, j as Re, ACTION_SEARCH as be } from "./index.5-5jxYfs.js";
3
- import { useAiChat as Ie, ConfirmationPanel as xe, LazyToastContainerWrapper as we, showErrorToast as He, v4 as Ne, CHAT_RESET as Fe, CHAT_SET_ATTACHMENTS as Me, CHAT_SET_STATUS as Ge, Panel as Ve, Toggle as U, CancelButton as ze } from "./App.lHXZIn8I.js";
2
+ import { n as j, INFINITE_SCROLL_LIMIT as P, INFINITE_SCROLL_THRESHOLD as re, HistoryContext as K, ChatContext as se, useLocalStorage as h, LOCAL_STORAGE_PREFIX as m, LOCAL_STORAGE_SORT_TIMESTAMP as oe, e$1 as d, LOCAL_STORAGE_SORT_TOKEN_USAGE as ne, LOCAL_STORAGE_SORT as ie, y as x, LOCAL_STORAGE_CHAT_ID as ce, useDeleteChat as le, useToggleFavoriteChat as de, APP_CLASSNAME as he, TOAST_CHAT_DELETED as me, graphQLRequest as ue, SERVICE_TYPES as Ce, ACTION_SORT as Se, v as fe, LOCAL_STORAGE_SEARCH as ye, LOCAL_STORAGE_FAVORITES_ONLY as Te, LOCAL_STORAGE_KEYWORD_MATCH_ALL as pe, useChatsHistory as ge, useUserChatStats as Ae, HISTORY_TITLE as Ee, Card as _e, TextInput as Le, debounce as De, IconSearch as Oe, Button as ke, L as ve, j as Re, ACTION_SEARCH as be } from "./index.BNtgmlzo.js";
3
+ import { useAiChat as Ie, ConfirmationPanel as xe, LazyToastContainerWrapper as we, showErrorToast as He, v4 as Ne, CHAT_RESET as Fe, CHAT_SET_ATTACHMENTS as Me, CHAT_SET_STATUS as Ge, Panel as Ve, Toggle as U, CancelButton as ze } from "./App.9OTgQFE5.js";
4
4
  import Pe from "clsx";
5
5
  import { useRef as F, useState as M, useContext as G, useCallback as B, Suspense as Ue, lazy as Be, useEffect as je } from "react";
6
6
  const Ke = Be(
7
7
  () => import(
8
8
  /* webpackChunkName: "history-table" */
9
- "./ChatHistoryTable.BFfmfdjX.js"
9
+ "./ChatHistoryTable.XuPzHnDG.js"
10
10
  ).then((u) => ({ default: u.ChatHistoryTable }))
11
11
  ), Ye = ({
12
12
  filteredHistory: u,
@@ -23,13 +23,13 @@ const Ke = Be(
23
23
  message: ""
24
24
  }), [L, A] = M(!1), [H, S] = M(
25
25
  P + re
26
- ), { state: c, dispatch: D } = G(K), k = {
26
+ ), { state: c, dispatch: D } = G(K), O = {
27
27
  searchString: c.searchString || "",
28
28
  sortDirection: c.sortDirection || d.DESC,
29
29
  sortedCell: c.sortedCell || x
30
30
  }, {
31
31
  setChatId: l,
32
- setInitialMessages: O,
32
+ setInitialMessages: k,
33
33
  dispatch: f
34
34
  } = G(se), { setInput: v } = Ie(), [R, b] = h({
35
35
  key: m + oe,
@@ -97,7 +97,7 @@ const Ke = Be(
97
97
  restoredModel: s.data?.model || "",
98
98
  restoredUsage: s.data?.tokenUsage || 0
99
99
  }
100
- }), v(""), l(e.id), O(s.data.messages), y(!1);
100
+ }), v(""), l(e.id), k(s.data.messages), y(!1);
101
101
  } catch {
102
102
  }
103
103
  }, Z = (e) => {
@@ -105,7 +105,7 @@ const Ke = Be(
105
105
  id: e.id,
106
106
  timestamp: e.timestamp,
107
107
  message: e.summary
108
- }, A(!L), W === e.id && (l(Ne()), O([]), v(""), f({
108
+ }, A(!L), W === e.id && (l(Ne()), k([]), v(""), f({
109
109
  type: Fe,
110
110
  payload: {
111
111
  privateChat: !1,
@@ -172,7 +172,7 @@ const Ke = Be(
172
172
  Ke,
173
173
  {
174
174
  filteredHistory: u,
175
- historyState: k,
175
+ historyState: O,
176
176
  lastEntryToLoad: H,
177
177
  onClickSort: X,
178
178
  onClickRestore: J,
@@ -203,7 +203,7 @@ const Ke = Be(
203
203
  data: S,
204
204
  refetch: c,
205
205
  isLoading: D,
206
- isError: k
206
+ isError: O
207
207
  } = ge({
208
208
  enabled: u,
209
209
  user: E?.username || "",
@@ -215,7 +215,7 @@ const Ke = Be(
215
215
  }), { data: l } = Ae({
216
216
  user: E?.username,
217
217
  getAccessToken: T
218
- }), O = l && l.totalChats ? l.totalChats - l.privateChats - l.deletedChats : 0;
218
+ }), k = l && l.totalChats ? l.totalChats - l.privateChats - l.deletedChats : 0;
219
219
  je(() => {
220
220
  S && _(
221
221
  n ? S.filter((a) => a.favoriteChat === !0) : S
@@ -278,7 +278,7 @@ const Ke = Be(
278
278
  label: "Search",
279
279
  onChange: v,
280
280
  className: "my-2",
281
- rightElement: /* @__PURE__ */ t("div", { className: "dark:text-copy-dark text-copy-light", children: /* @__PURE__ */ t(ke, { monotone: !0, size: "size-3" }) })
281
+ rightElement: /* @__PURE__ */ t("div", { className: "dark:text-copy-dark text-copy-light", children: /* @__PURE__ */ t(Oe, { monotone: !0, size: "size-3" }) })
282
282
  }
283
283
  ),
284
284
  /* @__PURE__ */ i("div", { className: "flex flex-col justify-between sm:flex-row gap-2 sm:mb-0 mb-1", children: [
@@ -307,9 +307,9 @@ const Ke = Be(
307
307
  )
308
308
  ] }),
309
309
  /* @__PURE__ */ t(
310
- Oe,
310
+ ke,
311
311
  {
312
- mode: "dark",
312
+ mode: "light",
313
313
  size: "small",
314
314
  disabled: r.searchString === "",
315
315
  onClick: () => {
@@ -332,15 +332,15 @@ const Ke = Be(
332
332
  "min-h-[60vh]"
333
333
  ),
334
334
  children: [
335
- k && /* @__PURE__ */ t("p", { className: "m-0 text-red-500", children: "Failed to load history." }),
336
- !k && /* @__PURE__ */ t(
335
+ O && /* @__PURE__ */ t("p", { className: "m-0 text-red-500", children: "Failed to load history." }),
336
+ !O && /* @__PURE__ */ t(
337
337
  Ye,
338
338
  {
339
339
  mutate: c,
340
340
  filteredHistory: w,
341
341
  onOpenChange: y,
342
342
  isLoading: D,
343
- totalHistoryCount: O,
343
+ totalHistoryCount: k,
344
344
  isFiltered: !!(r.searchString || n),
345
345
  isSearchActive: !!r.searchString
346
346
  }
@@ -1,6 +1,6 @@
1
1
  import { jsxs as t, Fragment as H, jsx as e } from "react/jsx-runtime";
2
- import { preloadToast as K, showSuccessToast as O, showErrorToast as W, ConfirmationPanel as Y, LazyToastContainerWrapper as $, Panel as V, CancelButton as q } from "./App.lHXZIn8I.js";
3
- import { n as J, useUniqueId as Q, useUserPreferences as X, useServerCapabilities as Z, p as ee, setUserPlan as ae, Card as d, renderDataAsList as ne, CARDS as s, L as h, j as i, Button as se, st as re, isTauri as te, ButtonIcon as le, IconPasskey as k, PROFILE_TITLE as ie } from "./index.5-5jxYfs.js";
2
+ import { preloadToast as K, showSuccessToast as O, showErrorToast as W, ConfirmationPanel as Y, LazyToastContainerWrapper as $, Panel as V, CancelButton as q } from "./App.9OTgQFE5.js";
3
+ import { n as J, useUniqueId as Q, useUserPreferences as X, useServerCapabilities as Z, p as ee, setUserPlan as ae, Card as d, renderDataAsList as ne, CARDS as s, L as h, j as i, Button as se, st as re, isTauri as te, ButtonIcon as le, IconPasskey as k, PROFILE_TITLE as ie } from "./index.BNtgmlzo.js";
4
4
  import ce from "clsx";
5
5
  import { useState as m, useMemo as oe, useCallback as P } from "react";
6
6
  const de = () => {
@@ -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 ce, useLocalStorage as ie, LOCAL_STORAGE_OLED_MODE as $e, LOCAL_STORAGE_FULL_SCREEN as ze, e as de, 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 ue, 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 pe, getCurrentGeoLocation as et, graphQLRequest as Se, handleServiceWorkerToggle as tt, SERVICE_TYPES as ge } from "./index.5-5jxYfs.js";
3
- import { useCapability as Te, Panel as ot, Toggle as l, CancelButton as st } from "./App.lHXZIn8I.js";
4
- import { TextArea as be } from "./index.ttYr-nJ-.js";
2
+ import { n as je, useEntitlements as Ve, AppContext as Fe, useUserPreferences as We, w as ce, useLocalStorage as ie, LOCAL_STORAGE_OLED_MODE as $e, LOCAL_STORAGE_FULL_SCREEN as ze, e as de, 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 ue, 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 pe, getCurrentGeoLocation as et, graphQLRequest as Se, handleServiceWorkerToggle as tt, SERVICE_TYPES as ge } from "./index.BNtgmlzo.js";
3
+ import { useCapability as Te, Panel as ot, Toggle as l, CancelButton as st } from "./App.9OTgQFE5.js";
4
+ import { TextArea as be } from "./index.Dy3lHiSY.js";
5
5
  import { useContext as at, useState as s, useMemo as nt, useCallback as rt, useEffect as Ne } from "react";
6
6
  const mt = ({
7
7
  open: Ce,
@@ -24,13 +24,13 @@ const mt = ({
24
24
  }), [u, we] = ie({
25
25
  key: ze,
26
26
  initialValue: !1
27
- }), [m, M] = s(!1), [p, k] = s(!1), [ae, ne] = s(de), Le = nt(() => He(w, R) ? Ye(w) : !1, [w, R]), De = (e) => {
27
+ }), [m, M] = s(!1), [p, _] = s(!1), [ae, ne] = s(de), Le = nt(() => He(w, R) ? Ye(w) : !1, [w, R]), De = (e) => {
28
28
  te(e);
29
29
  }, Me = (e) => {
30
30
  W(e);
31
- }, ke = (e) => {
32
- oe && z(e);
33
31
  }, _e = (e) => {
32
+ oe && z(e);
33
+ }, ke = (e) => {
34
34
  Y(e);
35
35
  }, Oe = (e) => {
36
36
  se && K(e);
@@ -39,7 +39,7 @@ const mt = ({
39
39
  }, Ae = (e) => {
40
40
  M(e);
41
41
  }, ve = (e) => {
42
- k(e);
42
+ _(e);
43
43
  }, Re = (e) => {
44
44
  ne(e ? me : de);
45
45
  }, Be = async (e) => {
@@ -105,11 +105,11 @@ const mt = ({
105
105
  m !== i && (M(i), fe(i), g({
106
106
  type: Ee,
107
107
  payload: { oledMode: i }
108
- })), p !== u && (k(u), g({
108
+ })), p !== u && (_(u), g({
109
109
  type: pe,
110
110
  payload: { fullScreen: u }
111
111
  })), B(), A(!1);
112
- }, _ = ({
112
+ }, k = ({
113
113
  enabled: e = !1,
114
114
  privateChat: a = !1,
115
115
  clipboardAccess: y = !1,
@@ -147,7 +147,7 @@ const mt = ({
147
147
  return;
148
148
  o.instructions && j(o.instructions), o.location && b(o.location), o.tags && G({ prompts: o.tags }), o.sendOnEnter !== void 0 && W(o.sendOnEnter), o.useMemory !== void 0 && z(o.useMemory), o.showDetails !== void 0 && te(o.showDetails), o.showReasoningButton !== void 0 && K(o.showReasoningButton), o.useNestedModelSelection !== void 0 && Q(o.useNestedModelSelection), o.themeMode !== void 0 && ne(o.themeMode);
149
149
  const e = Ke();
150
- H(e), Y(e), M(i), k(u);
150
+ H(e), Y(e), M(i), _(u);
151
151
  }, [o, i, u]), Ne(() => {
152
152
  N ? le() : J(null);
153
153
  }, [N, le]), ye ? /* @__PURE__ */ n(
@@ -170,7 +170,7 @@ const mt = ({
170
170
  /* @__PURE__ */ t(he, { children: /* @__PURE__ */ t(
171
171
  ue,
172
172
  {
173
- mode: "dark",
173
+ mode: "light",
174
174
  focusMode: "light",
175
175
  onClick: async (e) => {
176
176
  A(!1), await Be(e);
@@ -227,7 +227,7 @@ const mt = ({
227
227
  label: "Use Memory",
228
228
  subLabel: r.SETTINGS_DETAILS.USE_MEMORY,
229
229
  name: "use-memory",
230
- onChange: ke,
230
+ onChange: _e,
231
231
  checked: $
232
232
  }
233
233
  )
@@ -329,7 +329,7 @@ const mt = ({
329
329
  label: "Enabled",
330
330
  name: e.slot.toString(),
331
331
  onChange: (a) => {
332
- _({
332
+ k({
333
333
  ...e,
334
334
  enabled: a
335
335
  });
@@ -348,7 +348,7 @@ const mt = ({
348
348
  label: "Private Chat",
349
349
  name: `private-${e.slot.toString()}`,
350
350
  onChange: (a) => {
351
- _({
351
+ k({
352
352
  ...e,
353
353
  privateChat: a
354
354
  });
@@ -367,7 +367,7 @@ const mt = ({
367
367
  label: "Use Clipboard",
368
368
  name: `clipboard-${e.slot.toString()}`,
369
369
  onChange: (a) => {
370
- _({
370
+ k({
371
371
  ...e,
372
372
  clipboardAccess: a
373
373
  });
@@ -469,7 +469,7 @@ const mt = ({
469
469
  label: "Assets Caching",
470
470
  subLabel: r.SETTINGS_ADVANCED.CACHE_DESCRIPTION,
471
471
  name: "enable-service-worker",
472
- onChange: _e,
472
+ onChange: ke,
473
473
  checked: C
474
474
  }
475
475
  ),