@versini/sassysaint 8.101.0 → 8.101.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 (35) hide show
  1. package/dist/chunks/AboutChangelog.BQFulMZF.js +33 -0
  2. package/dist/chunks/AboutEntry.BzMV697D.js +85 -0
  3. package/dist/chunks/{App.FDXS1dWr.js → App.4mnNHSFM.js} +3869 -3352
  4. package/dist/chunks/{Chart.D8hc7jQz.js → Chart.C8ffOgMR.js} +3 -2
  5. package/dist/chunks/{ChatBubbleAssistant.DgzNZWXj.js → ChatBubbleAssistant.DDXVnlp2.js} +12 -11
  6. package/dist/chunks/{ChatBubbleUser.CgAXoPL3.js → ChatBubbleUser.BElP1c3A.js} +6 -6
  7. package/dist/chunks/{ChatHistoryTable.DleRijpp.js → ChatHistoryTable.BMHD5YOq.js} +14 -13
  8. package/dist/chunks/{HistoryEntry.QXTx_1NF.js → HistoryEntry.DBE0Nfnr.js} +66 -63
  9. package/dist/chunks/LoginEntry.f8inuN8f.js +118 -0
  10. package/dist/chunks/LogoEntry.CAqrKoB5.js +1714 -0
  11. package/dist/chunks/{MemoriesEntry.CY-llB2n.js → MemoriesEntry.rKhs34L0.js} +13 -12
  12. package/dist/chunks/{ProfileEntry.D1t4NNjj.js → ProfileEntry.CmeNfgc9.js} +34 -32
  13. package/dist/chunks/{SettingsEntry.DPFXL5XW.js → SettingsEntry._yVtIzee.js} +45 -43
  14. package/dist/chunks/{Table.Ut5gRB0r.js → Table.BuvtTLwg.js} +4 -4
  15. package/dist/chunks/{UsageEntry.CJN9T5eq.js → UsageEntry.juxTe3FI.js} +35 -33
  16. package/dist/chunks/index.BAdB50GZ.js +103 -0
  17. package/dist/chunks/index.C5nLuEwV.js +99 -0
  18. package/dist/chunks/{index.CC5igXkB.js → index.CN_ODDdH.js} +1 -1
  19. package/dist/chunks/{index.Bm6nq0Gp.js → index.ClPJ3mDK.js} +2 -2
  20. package/dist/chunks/{index.BsZ9ZCrk.js → index.CnfrIQjs.js} +1 -1
  21. package/dist/chunks/index.DZhdlR8W.js +5549 -0
  22. package/dist/chunks/{index.gjQkJBf-.js → index.Dqllb59Q.js} +1 -1
  23. package/dist/chunks/{index.C7XLM9KR.js → index.M2YXECa8.js} +4 -4
  24. package/dist/chunks/index.WWSVXIYV.js +305 -0
  25. package/dist/chunks/index.cfJfy7Fb.js +292 -0
  26. package/dist/chunks/{index.CEY_eB-I.js → index.tjiRewKU.js} +3 -3
  27. package/dist/chunks/{useMarkdown.BopS_qSS.js → useMarkdown.DzlB8BkB.js} +19 -18
  28. package/dist/components/SassySaint/SassySaint.js +1 -1
  29. package/dist/index.js +4 -4
  30. package/dist/style.css +1 -1
  31. package/package.json +3 -3
  32. package/dist/chunks/AboutChangelog.CVySsRJL.js +0 -34
  33. package/dist/chunks/AboutEntry.C1p3cZGX.js +0 -83
  34. package/dist/chunks/index.DNyB0dBi.js +0 -266
  35. package/dist/chunks/index.Dvzk0ceM.js +0 -8173
@@ -1,7 +1,8 @@
1
1
  import { jsx as Pp } from "react/jsx-runtime";
2
- import { getDefaultExportFromCjs as dn } from "./App.FDXS1dWr.js";
2
+ import { getDefaultExportFromCjs as dn } from "./App.4mnNHSFM.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.Dvzk0ceM.js";
4
+ import { TRIMESTERS_SHORT as Ep, TRIMESTERS as on, TIME_RANGES as ls, TIME_RANGE_LABELS as an } from "./LogoEntry.CAqrKoB5.js";
5
+ import { isProbablyMobile as Ip } from "./index.DZhdlR8W.js";
5
6
  var hs = { exports: {} }, Dp = hs.exports, nn;
6
7
  function Bp() {
7
8
  return nn || (nn = 1, (function(Ae, pe) {
@@ -1,10 +1,11 @@
1
1
  import { jsx as ss } from "react/jsx-runtime";
2
- import { ChatContext as is, AppContext as rs, n as as, useUserPreferences as os, convertCamelCaseToReadable as ls, numberFormatter as us, pluralize as cs } from "./index.Dvzk0ceM.js";
3
- import { BUBBLE_FOOTER_EMPTY as fs } from "./index.C7XLM9KR.js";
2
+ import { n as is, useUserPreferences as rs, convertCamelCaseToReadable as as, numberFormatter as os, pluralize as ls } from "./index.DZhdlR8W.js";
3
+ import { BUBBLE_FOOTER_EMPTY as us } from "./index.M2YXECa8.js";
4
4
  import Xt from "clsx";
5
- import hs, { useState as Me, useEffect as qt, useContext as vt } from "react";
6
- import { useMarkdown as ds } from "./useMarkdown.BopS_qSS.js";
7
- import { AsyncBubble as ps } from "./App.FDXS1dWr.js";
5
+ import cs, { useState as Me, useEffect as qt, useContext as vt } from "react";
6
+ import { useMarkdown as fs } from "./useMarkdown.DzlB8BkB.js";
7
+ import { ChatContext as hs, AppContext as ds } from "./LogoEntry.CAqrKoB5.js";
8
+ import { AsyncBubble as ps } from "./App.4mnNHSFM.js";
8
9
  function ms(e, t) {
9
10
  e.indexOf(t) === -1 && e.push(t);
10
11
  }
@@ -2813,7 +2814,7 @@ const ve = {
2813
2814
  MODEL: "Model",
2814
2815
  PLUGIN: "Plugin",
2815
2816
  USAGE: "Session usage"
2816
- }, xa = Xt("max-w-[99cqw]", "mt-3"), Na = hs.memo(
2817
+ }, xa = Xt("max-w-[99cqw]", "mt-3"), ka = cs.memo(
2817
2818
  ({
2818
2819
  content: e,
2819
2820
  annotations: t,
@@ -2823,9 +2824,9 @@ const ve = {
2823
2824
  }) => {
2824
2825
  const r = wa(e, s), {
2825
2826
  state: { streaming: a, restoredModel: o, tokenUsage: l }
2826
- } = vt(is), {
2827
+ } = vt(hs), {
2827
2828
  state: { fullScreen: c }
2828
- } = vt(rs), u = t?.model || o, f = l, [h, m] = ds(), { user: b, getAccessToken: y } = as(), { data: v } = os({
2829
+ } = vt(ds), u = t?.model || o, f = l, [h, m] = fs(), { user: b, getAccessToken: y } = is(), { data: v } = rs({
2829
2830
  user: b?.username,
2830
2831
  getAccessToken: y
2831
2832
  }), T = v?.showDetails || !1, A = Xt("prose-li:ps-3", {
@@ -2834,8 +2835,8 @@ const ve = {
2834
2835
  let V;
2835
2836
  return T && (V = {
2836
2837
  [ve.MODEL]: u || null,
2837
- [ve.PLUGIN]: n ? ls(n) : null
2838
- }, f && (i ? V[ve.USAGE] = `${us.format(f)} ${cs("token", f)}` : V[ve.USAGE] = fs)), qt(() => {
2838
+ [ve.PLUGIN]: n ? as(n) : null
2839
+ }, f && (i ? V[ve.USAGE] = `${os.format(f)} ${ls("token", f)}` : V[ve.USAGE] = us)), qt(() => {
2839
2840
  r && m(r);
2840
2841
  }, [r, m]), /* @__PURE__ */ ss(
2841
2842
  ps,
@@ -2854,5 +2855,5 @@ const ve = {
2854
2855
  }
2855
2856
  );
2856
2857
  export {
2857
- Na as default
2858
+ ka as default
2858
2859
  };
@@ -1,16 +1,16 @@
1
1
  import { jsx as i, Fragment as S, jsxs as C } from "react/jsx-runtime";
2
- import { Button as _ } from "./index.Dvzk0ceM.js";
2
+ import { Button as _ } from "./LogoEntry.CAqrKoB5.js";
3
3
  import { useState as h, useMemo as m, isValidElement as T, useEffect as B } from "react";
4
- import { useMarkdown as b } from "./useMarkdown.BopS_qSS.js";
5
- import { AsyncBubble as k } from "./App.FDXS1dWr.js";
4
+ import { useMarkdown as b } from "./useMarkdown.DzlB8BkB.js";
5
+ import { AsyncBubble as k } from "./App.4mnNHSFM.js";
6
6
  /*!
7
- @versini/ui-truncate v6.1.6
7
+ @versini/ui-truncate v6.1.8
8
8
  © 2025 gizmette.com
9
9
  */
10
10
  try {
11
11
  window.__VERSINI_UI_TRUNCATE__ || (window.__VERSINI_UI_TRUNCATE__ = {
12
- version: "6.1.6",
13
- buildTime: "12/15/2025 07:45 PM EST",
12
+ version: "6.1.8",
13
+ buildTime: "12/16/2025 06:23 PM EST",
14
14
  homepage: "https://www.npmjs.com/package/@versini/ui-truncate",
15
15
  license: "MIT"
16
16
  });
@@ -1,9 +1,10 @@
1
1
  import { jsxs as c, jsx as e } from "react/jsx-runtime";
2
- import { IconCloseLight as L, 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 W, isProbablyMobile as j } from "./index.Dvzk0ceM.js";
2
+ import { y as S, v as M, INFINITE_SCROLL_THRESHOLD as L, pluralize as k, numberFormatter as U, isProbablyMobile as D } from "./index.DZhdlR8W.js";
3
+ import { IconCloseLight as z, CARDS as B, ButtonIcon as C, IconRestore as $, IconStarInCircle as Y, IconStarInCircleLight as W, IconDelete as j } from "./LogoEntry.CAqrKoB5.js";
3
4
  import { useState as G, Fragment as K } from "react";
4
5
  import i from "clsx";
5
- import { j as V, D as F, F as N, G as H, W as o, Y as I } from "./Table.Ut5gRB0r.js";
6
- import { ResponsiveTooltip as w } from "./App.FDXS1dWr.js";
6
+ import { j as V, D as F, F as N, G as H, W as o, Y as I } from "./Table.BuvtTLwg.js";
7
+ import { ResponsiveTooltip as w } from "./App.4mnNHSFM.js";
7
8
  /*!
8
9
  @versini/ui-pill v5.2.4
9
10
  © 2025 gizmette.com
@@ -70,7 +71,7 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
70
71
  onClick: g,
71
72
  className: u.button,
72
73
  "aria-label": "Close",
73
- children: /* @__PURE__ */ e(L, {
74
+ children: /* @__PURE__ */ e(z, {
74
75
  size: "size-3"
75
76
  })
76
77
  })
@@ -93,7 +94,7 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
93
94
  n.TIMESTAMP,
94
95
  n.TOKEN_USAGE,
95
96
  n.ACTIONS
96
- ], ce = ({
97
+ ], me = ({
97
98
  filteredHistory: t,
98
99
  historyState: a,
99
100
  lastEntryToLoad: l,
@@ -107,7 +108,7 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
107
108
  isFiltered: O = !1,
108
109
  isSearchActive: T = !1
109
110
  }) => {
110
- const y = j() ? Z : ee, E = (r) => {
111
+ const y = D() ? Z : ee, E = (r) => {
111
112
  switch (r) {
112
113
  case n.ROW:
113
114
  return /* @__PURE__ */ e(o, { className: "sr-only", children: "Row" }, r);
@@ -205,7 +206,7 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
205
206
  {
206
207
  className: i("dark:text-gray-400", "text-xs sm:text-sm"),
207
208
  align: "right",
208
- children: s.tokenUsage ? W.format(s.tokenUsage) : "0"
209
+ children: s.tokenUsage ? U.format(s.tokenUsage) : "0"
209
210
  },
210
211
  r
211
212
  );
@@ -230,7 +231,7 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
230
231
  onClick: async () => {
231
232
  await d(s);
232
233
  },
233
- children: /* @__PURE__ */ e(z, { size: "size-3", monotone: !0 })
234
+ children: /* @__PURE__ */ e($, { size: "size-3", monotone: !0 })
234
235
  }
235
236
  )
236
237
  }
@@ -249,7 +250,7 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
249
250
  onClick: async () => {
250
251
  await p(s);
251
252
  },
252
- children: s.favoriteChat ? /* @__PURE__ */ e(B, { size: "size-4", monotone: !0 }) : /* @__PURE__ */ e($, { size: "size-4", monotone: !0 })
253
+ children: s.favoriteChat ? /* @__PURE__ */ e(Y, { size: "size-4", monotone: !0 }) : /* @__PURE__ */ e(W, { size: "size-4", monotone: !0 })
253
254
  }
254
255
  )
255
256
  }
@@ -269,7 +270,7 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
269
270
  onClick: () => {
270
271
  h(s);
271
272
  },
272
- children: /* @__PURE__ */ e(Y, { size: "size-3", monotone: !0 })
273
+ children: /* @__PURE__ */ e(j, { size: "size-3", monotone: !0 })
273
274
  }
274
275
  )
275
276
  }
@@ -296,15 +297,15 @@ const q = "av-pill", J = ({ variant: t }) => i("rounded-xs border", {
296
297
  children: [
297
298
  /* @__PURE__ */ e(F, { children: /* @__PURE__ */ e(N, { children: y.map((r) => E(r)) }) }),
298
299
  /* @__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(K, { children: [
299
- s === l - U && /* @__PURE__ */ e("tr", { ref: g }),
300
+ s === l - L && /* @__PURE__ */ e("tr", { ref: g }),
300
301
  /* @__PURE__ */ e(N, { children: y.map(
301
302
  (b) => _(b, r, s)
302
303
  ) })
303
- ] }, `${D.HISTORY.TITLE}-${r.id}-${s}`) : null) })
304
+ ] }, `${B.HISTORY.TITLE}-${r.id}-${s}`) : null) })
304
305
  ]
305
306
  }
306
307
  );
307
308
  };
308
309
  export {
309
- ce as ChatHistoryTable
310
+ me as ChatHistoryTable
310
311
  };
@@ -1,12 +1,15 @@
1
1
  import { jsxs as i, Fragment as ae, jsx as t } from "react/jsx-runtime";
2
- import { n as K, INFINITE_SCROLL_LIMIT as U, INFINITE_SCROLL_THRESHOLD as re, HistoryContext as Y, ChatContext as se, useLocalStorage as m, LOCAL_STORAGE_PREFIX as C, LOCAL_STORAGE_SORT_TIMESTAMP as oe, e$1 as u, LOCAL_STORAGE_SORT_TOKEN_USAGE as ne, LOCAL_STORAGE_SORT as ie, y as I, LOCAL_STORAGE_CHAT_ID as ce, useDeleteChat as le, useToggleFavoriteChat as de, APP_CLASSNAME as he, TOAST_CHAT_DELETED as ue, graphQLRequest as me, 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.Dvzk0ceM.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 B, CancelButton as ze } from "./App.FDXS1dWr.js";
2
+ import { n as K, INFINITE_SCROLL_LIMIT as U, INFINITE_SCROLL_THRESHOLD as re, LOCAL_STORAGE_PREFIX as u, LOCAL_STORAGE_SORT_TIMESTAMP as se, LOCAL_STORAGE_SORT_TOKEN_USAGE as oe, LOCAL_STORAGE_SORT as ne, y as I, LOCAL_STORAGE_CHAT_ID as ie, useDeleteChat as ce, useToggleFavoriteChat as le, graphQLRequest as de, SERVICE_TYPES as he, ACTION_SORT as me, v as ue, LOCAL_STORAGE_SEARCH as Ce, LOCAL_STORAGE_FAVORITES_ONLY as Se, LOCAL_STORAGE_KEYWORD_MATCH_ALL as fe, useChatsHistory as ye, useUserChatStats as pe, debounce as Te, ACTION_SEARCH as ge } from "./index.DZhdlR8W.js";
3
+ import { HistoryContext as Y, ChatContext as Ae, e as m, APP_CLASSNAME as Ee, TOAST_CHAT_DELETED as _e, HISTORY_TITLE as Le, IconSearch as De, Button as Oe, L as ke, j as ve } from "./LogoEntry.CAqrKoB5.js";
4
+ import { Card as Re } from "./index.C5nLuEwV.js";
5
+ import { useAiChat as be, useLocalStorage as C, ConfirmationPanel as Ie, LazyToastContainerWrapper as xe, showErrorToast as we, v4 as He, CHAT_RESET as Ne, CHAT_SET_ATTACHMENTS as Fe, CHAT_SET_STATUS as Me, Panel as Ge, Toggle as B, CancelButton as Ve } from "./App.4mnNHSFM.js";
6
+ import { TextInput as ze } from "./index.cfJfy7Fb.js";
4
7
  import Pe from "clsx";
5
8
  import { useRef as x, useState as G, useContext as V, useCallback as j, Suspense as Ue, lazy as Be, useEffect as je } from "react";
6
9
  const Ke = Be(
7
10
  () => import(
8
11
  /* webpackChunkName: "history-table" */
9
- "./ChatHistoryTable.DleRijpp.js"
12
+ "./ChatHistoryTable.BMHD5YOq.js"
10
13
  ).then((S) => ({ default: S.ChatHistoryTable }))
11
14
  ), Ye = ({
12
15
  filteredHistory: S,
@@ -17,7 +20,7 @@ const Ke = Be(
17
20
  isFiltered: w = !1,
18
21
  isSearchActive: L = !1
19
22
  }) => {
20
- const { user: l, getAccessToken: a } = K(), T = x(null), d = x({
23
+ const { user: l, getAccessToken: a } = K(), p = x(null), d = x({
21
24
  id: "",
22
25
  timestamp: "",
23
26
  message: ""
@@ -25,25 +28,25 @@ const Ke = Be(
25
28
  U + re
26
29
  ), { state: o, dispatch: N } = V(Y), k = {
27
30
  searchString: o.searchString || "",
28
- sortDirection: o.sortDirection || u.DESC,
31
+ sortDirection: o.sortDirection || m.DESC,
29
32
  sortedCell: o.sortedCell || I
30
33
  }, {
31
- setChatId: p,
34
+ setChatId: T,
32
35
  setInitialMessages: c,
33
36
  dispatch: g
34
- } = V(se), { setInput: A } = Ie(), [v, R] = m({
35
- key: C + oe,
36
- initialValue: u.DESC
37
- }), [F, M] = m({
38
- key: C + ne,
39
- initialValue: u.ASC
40
- }), [, r] = m({
41
- key: C + ie,
37
+ } = V(Ae), { setInput: A } = be(), [v, R] = C({
38
+ key: u + se,
39
+ initialValue: m.DESC
40
+ }), [F, M] = C({
41
+ key: u + oe,
42
+ initialValue: m.ASC
43
+ }), [, r] = C({
44
+ key: u + ne,
42
45
  initialValue: I
43
- }), [W] = m({
44
- key: C + ce,
46
+ }), [W] = C({
47
+ key: u + ie,
45
48
  initialValue: ""
46
- }), { mutateAsync: q } = le({ getAccessToken: a }), { mutateAsync: Q } = de({
49
+ }), { mutateAsync: q } = ce({ getAccessToken: a }), { mutateAsync: Q } = le({
47
50
  getAccessToken: a
48
51
  }), X = (e) => {
49
52
  const n = o.sortedCell === e;
@@ -52,44 +55,44 @@ const Ke = Be(
52
55
  case I:
53
56
  b = R, s = n ? o.sortDirection : v;
54
57
  break;
55
- case fe:
58
+ case ue:
56
59
  b = M, s = n ? o.sortDirection : F;
57
60
  break;
58
61
  default:
59
62
  b = R, s = n ? o.sortDirection : v;
60
63
  break;
61
64
  }
62
- const P = s === u.ASC ? u.DESC : u.ASC;
65
+ const P = s === m.ASC ? m.DESC : m.ASC;
63
66
  b(P), r(e), N({
64
- type: Se,
67
+ type: me,
65
68
  payload: {
66
69
  sortedCell: e,
67
70
  sortDirection: P
68
71
  }
69
72
  });
70
- }, $ = async () => {
73
+ }, J = async () => {
71
74
  const e = d.current;
72
75
  try {
73
76
  await q({
74
77
  userId: l?.username || "",
75
78
  id: e.id
76
- }), y(""), await He(ue, {
79
+ }), y(""), await we(_e, {
77
80
  autoClose: 2e3,
78
81
  containerId: "history-table"
79
82
  });
80
83
  } catch {
81
84
  }
82
- }, J = async (e) => {
85
+ }, Z = async (e) => {
83
86
  try {
84
- const n = await a(), s = await me({
87
+ const n = await a(), s = await de({
85
88
  accessToken: n,
86
- type: Ce.GET_CHAT,
89
+ type: he.GET_CHAT,
87
90
  params: {
88
91
  id: e.id
89
92
  }
90
93
  });
91
94
  g({
92
- type: Ge,
95
+ type: Me,
93
96
  payload: {
94
97
  streaming: !1,
95
98
  loading: !1,
@@ -97,22 +100,22 @@ const Ke = Be(
97
100
  restoredModel: s.data?.model || "",
98
101
  restoredUsage: s.data?.tokenUsage || 0
99
102
  }
100
- }), A(""), p(e.id), c(s.data.messages), f(!1);
103
+ }), A(""), T(e.id), c(s.data.messages), f(!1);
101
104
  } catch {
102
105
  }
103
- }, Z = (e) => {
106
+ }, $ = (e) => {
104
107
  d.current = {
105
108
  id: e.id,
106
109
  timestamp: e.timestamp,
107
110
  message: e.summary
108
- }, D(!h), W === e.id && (p(Ne()), c([]), A(""), g({
109
- type: Fe,
111
+ }, D(!h), W === e.id && (T(He()), c([]), A(""), g({
112
+ type: Ne,
110
113
  payload: {
111
114
  privateChat: !1,
112
115
  reasoning: !1
113
116
  }
114
117
  }), g({
115
- type: Me,
118
+ type: Fe,
116
119
  payload: {
117
120
  attachments: 0
118
121
  }
@@ -129,22 +132,22 @@ const Ke = Be(
129
132
  e[0].isIntersecting && H((s) => s + U);
130
133
  }, []), te = j(
131
134
  (e) => {
132
- if (T.current && T.current.disconnect(), e) {
135
+ if (p.current && p.current.disconnect(), e) {
133
136
  const n = {
134
137
  rootMargin: "20px"
135
138
  }, s = new IntersectionObserver(z, n);
136
- s.observe(e), T.current = s;
139
+ s.observe(e), p.current = s;
137
140
  }
138
141
  },
139
142
  [z]
140
143
  );
141
144
  return /* @__PURE__ */ i(ae, { children: [
142
145
  /* @__PURE__ */ i(
143
- xe,
146
+ Ie,
144
147
  {
145
148
  showConfirmation: h,
146
149
  setShowConfirmation: D,
147
- action: $,
150
+ action: J,
148
151
  customStrings: {
149
152
  confirmAction: "Delete",
150
153
  cancelAction: "Cancel",
@@ -167,7 +170,7 @@ const Ke = Be(
167
170
  ]
168
171
  }
169
172
  ),
170
- /* @__PURE__ */ t("div", { className: he, children: /* @__PURE__ */ t(we, { containerId: "history-table" }) }),
173
+ /* @__PURE__ */ t("div", { className: Ee, children: /* @__PURE__ */ t(xe, { containerId: "history-table" }) }),
171
174
  /* @__PURE__ */ t(Ue, { fallback: /* @__PURE__ */ t("div", {}), children: /* @__PURE__ */ t(
172
175
  Ke,
173
176
  {
@@ -175,8 +178,8 @@ const Ke = Be(
175
178
  historyState: k,
176
179
  lastEntryToLoad: O,
177
180
  onClickSort: X,
178
- onClickRestore: J,
179
- onClickDelete: Z,
181
+ onClickRestore: Z,
182
+ onClickDelete: $,
180
183
  onClickFavorite: ee,
181
184
  infinityScrollMarkerRef: te,
182
185
  isLoading: E,
@@ -186,33 +189,33 @@ const Ke = Be(
186
189
  }
187
190
  ) })
188
191
  ] });
189
- }, Je = ({
192
+ }, tt = ({
190
193
  open: S,
191
194
  onOpenChange: f
192
195
  }) => {
193
- const y = x(null), { getAccessToken: E, user: _ } = K(), [w, L] = G([]), l = x(null), { state: a, dispatch: T } = V(Y), [, d] = m({
194
- key: C + ye,
196
+ const y = x(null), { getAccessToken: E, user: _ } = K(), [w, L] = G([]), l = x(null), { state: a, dispatch: p } = V(Y), [, d] = C({
197
+ key: u + Ce,
195
198
  initialValue: a.searchString
196
- }), [h, D] = m({
197
- key: C + Te,
199
+ }), [h, D] = C({
200
+ key: u + Se,
198
201
  initialValue: !1
199
- }), [O, H] = m({
200
- key: C + pe,
202
+ }), [O, H] = C({
203
+ key: u + fe,
201
204
  initialValue: !0
202
205
  }), {
203
206
  data: o,
204
207
  refetch: N,
205
208
  isLoading: k,
206
- isError: p
207
- } = ge({
209
+ isError: T
210
+ } = ye({
208
211
  enabled: S,
209
212
  user: _?.username || "",
210
213
  searchString: a.searchString || "",
211
- sortDirection: a.sortDirection || u.DESC,
214
+ sortDirection: a.sortDirection || m.DESC,
212
215
  sortedCell: a.sortedCell || I,
213
216
  getAccessToken: E,
214
217
  keywordMatchAll: O
215
- }), { data: c } = Ae({
218
+ }), { data: c } = pe({
216
219
  user: _?.username,
217
220
  getAccessToken: E
218
221
  }), g = c && c.totalChats ? c.totalChats - c.privateChats - c.deletedChats : 0;
@@ -222,11 +225,11 @@ const Ke = Be(
222
225
  );
223
226
  }, [o, h]);
224
227
  const A = async (r) => {
225
- d(r), T({
226
- type: be,
228
+ d(r), p({
229
+ type: ge,
227
230
  payload: { searchString: r }
228
231
  });
229
- }, v = De((r) => {
232
+ }, v = Te((r) => {
230
233
  A(r.target.value.trim());
231
234
  }, 800), R = async (r) => {
232
235
  r.preventDefault();
@@ -236,27 +239,27 @@ const Ke = Be(
236
239
  H(r);
237
240
  };
238
241
  return /* @__PURE__ */ i(
239
- Ve,
242
+ Ge,
240
243
  {
241
244
  open: S,
242
245
  onOpenChange: f,
243
- title: Ee,
246
+ title: Le,
244
247
  animation: !0,
245
248
  animationType: "fade",
246
249
  blurEffect: "large",
247
250
  initialFocus: y,
248
251
  footer: /* @__PURE__ */ t(
249
- ve,
252
+ ke,
250
253
  {
251
254
  columnGap: 2,
252
255
  alignHorizontal: "flex-end",
253
256
  className: "pb-8 sm:pb-0",
254
- children: /* @__PURE__ */ t(Re, { children: /* @__PURE__ */ t(ze, { onOpenChange: f, ref: y }) })
257
+ children: /* @__PURE__ */ t(ve, { children: /* @__PURE__ */ t(Ve, { onOpenChange: f, ref: y }) })
255
258
  }
256
259
  ),
257
260
  children: [
258
261
  /* @__PURE__ */ t(
259
- _e,
262
+ Re,
260
263
  {
261
264
  header: k && a.searchString ? "Loading..." : a.searchString ? "Filters applied" : "Filters",
262
265
  className: "prose-dark dark:prose-lighter mb-4",
@@ -264,7 +267,7 @@ const Ke = Be(
264
267
  compact: !0,
265
268
  children: /* @__PURE__ */ i("form", { autoComplete: "off", onSubmit: R, children: [
266
269
  /* @__PURE__ */ t(
267
- Le,
270
+ ze,
268
271
  {
269
272
  placeholder: "Search",
270
273
  labelHidden: !0,
@@ -279,7 +282,7 @@ const Ke = Be(
279
282
  label: "Search",
280
283
  onChange: v,
281
284
  className: "my-2",
282
- rightElement: /* @__PURE__ */ t("div", { className: "dark:text-copy-dark text-copy-light", children: /* @__PURE__ */ t(Oe, { monotone: !0, size: "size-3" }) })
285
+ rightElement: /* @__PURE__ */ t("div", { className: "dark:text-copy-dark text-copy-light", children: /* @__PURE__ */ t(De, { monotone: !0, size: "size-3" }) })
283
286
  }
284
287
  ),
285
288
  /* @__PURE__ */ i("div", { className: "flex flex-col justify-between sm:flex-row gap-2 sm:mb-0 mb-1", children: [
@@ -308,7 +311,7 @@ const Ke = Be(
308
311
  )
309
312
  ] }),
310
313
  /* @__PURE__ */ t(
311
- ke,
314
+ Oe,
312
315
  {
313
316
  mode: "light",
314
317
  size: "small",
@@ -333,8 +336,8 @@ const Ke = Be(
333
336
  "min-h-[60vh]"
334
337
  ),
335
338
  children: [
336
- p && /* @__PURE__ */ t("p", { className: "m-0 text-red-500", children: "Failed to load history." }),
337
- !p && /* @__PURE__ */ t(
339
+ T && /* @__PURE__ */ t("p", { className: "m-0 text-red-500", children: "Failed to load history." }),
340
+ !T && /* @__PURE__ */ t(
338
341
  Ye,
339
342
  {
340
343
  mutate: N,
@@ -354,5 +357,5 @@ const Ke = Be(
354
357
  );
355
358
  };
356
359
  export {
357
- Je as HistoryPanel
360
+ tt as HistoryPanel
358
361
  };
@@ -0,0 +1,118 @@
1
+ import { jsxs as i, jsx as e, Fragment as x } from "react/jsx-runtime";
2
+ import { n as L, getLayoutPaddingClass as M, getMessageContaintWrapperClass as b, isTauri as I } from "./index.DZhdlR8W.js";
3
+ import { Logo as N, L as E, j as t, PASSWORD_PLACEHOLDER as y, ButtonIcon as p, IconShow as S, IconHide as v, Button as w, LOG_IN as P, LOG_IN_PASSKEY as z, IconPasskey as B } from "./LogoEntry.CAqrKoB5.js";
4
+ import { Card as O } from "./index.C5nLuEwV.js";
5
+ import { TextInput as T, TextInputMask as W } from "./index.cfJfy7Fb.js";
6
+ import { useState as s, useEffect as h } from "react";
7
+ const q = () => {
8
+ const { login: g, logoutReason: o, loginWithPasskey: f } = L(), [n, l] = s(""), [d, m] = s(""), [c, C] = s(!0), [r, u] = s({
9
+ username: "",
10
+ password: ""
11
+ }), k = async (a) => {
12
+ a.preventDefault(), await g(r.username, r.password) || (m(""), l("Invalid username or password"));
13
+ };
14
+ return h(() => {
15
+ document.getElementById("logo")?.classList.add("fadeOut"), setTimeout(() => {
16
+ document.getElementById("root")?.classList.replace("app-hidden", "fadeIn");
17
+ }, 500);
18
+ }), h(() => {
19
+ o && m(o);
20
+ }, [o]), /* @__PURE__ */ i("main", { className: M({ extraClass: "mt-5" }), children: [
21
+ /* @__PURE__ */ e(
22
+ "div",
23
+ {
24
+ className: b({
25
+ extraClass: "rounded-md pb-10"
26
+ }),
27
+ children: /* @__PURE__ */ e(N, {})
28
+ }
29
+ ),
30
+ /* @__PURE__ */ e("form", { className: "mt-5", onSubmit: k, children: /* @__PURE__ */ e(E, { alignHorizontal: "center", children: /* @__PURE__ */ e(t, { span: 6, children: /* @__PURE__ */ i(O, { mode: "dark", children: [
31
+ /* @__PURE__ */ e(t, { span: 12, className: "mt-7", children: d && /* @__PURE__ */ e("div", { className: "p-2 text-sm text-center text-copy-error-light bg-surface-darker", children: d }) }),
32
+ /* @__PURE__ */ e(t, { span: 12, children: /* @__PURE__ */ e(
33
+ T,
34
+ {
35
+ className: "mt-7",
36
+ required: !0,
37
+ autoCapitalize: "off",
38
+ autoComplete: "off",
39
+ autoCorrect: "off",
40
+ mode: "dark",
41
+ focusMode: "light",
42
+ name: "username",
43
+ label: "Username",
44
+ onChange: (a) => {
45
+ u({
46
+ ...r,
47
+ username: a.target.value
48
+ }), l("");
49
+ },
50
+ error: n !== ""
51
+ }
52
+ ) }),
53
+ /* @__PURE__ */ e(t, { span: 12, children: /* @__PURE__ */ e(
54
+ W,
55
+ {
56
+ className: "mt-7",
57
+ required: !0,
58
+ autoCapitalize: "off",
59
+ autoComplete: "off",
60
+ autoCorrect: "off",
61
+ mode: "dark",
62
+ focusMode: "light",
63
+ name: "password",
64
+ label: y,
65
+ rightElement: /* @__PURE__ */ e(
66
+ p,
67
+ {
68
+ focusMode: "light",
69
+ mode: "dark",
70
+ label: c ? "Show" : "Hide",
71
+ children: c ? /* @__PURE__ */ e(S, {}) : /* @__PURE__ */ e(v, {})
72
+ }
73
+ ),
74
+ onMaskChange: C,
75
+ onChange: (a) => {
76
+ u({
77
+ ...r,
78
+ password: a.target.value
79
+ }), l("");
80
+ },
81
+ error: n !== "",
82
+ helperText: n
83
+ }
84
+ ) }),
85
+ /* @__PURE__ */ e(t, { span: 12, children: /* @__PURE__ */ e(
86
+ w,
87
+ {
88
+ mode: "dark",
89
+ focusMode: "light",
90
+ fullWidth: !0,
91
+ noBorder: !0,
92
+ type: "submit",
93
+ className: "mt-7",
94
+ children: P
95
+ }
96
+ ) }),
97
+ !I() && /* @__PURE__ */ i(x, { children: [
98
+ /* @__PURE__ */ e(t, { span: 12, children: /* @__PURE__ */ e("div", { className: "text-center text-copy-light mt-2 mb-2", children: "or" }) }),
99
+ /* @__PURE__ */ e(t, { span: 12, children: /* @__PURE__ */ e(
100
+ p,
101
+ {
102
+ variant: "selected",
103
+ mode: "dark",
104
+ focusMode: "light",
105
+ fullWidth: !0,
106
+ className: "mb-4",
107
+ labelRight: z,
108
+ onClick: f,
109
+ children: /* @__PURE__ */ e(B, { size: "size-7" })
110
+ }
111
+ ) })
112
+ ] })
113
+ ] }) }) }) })
114
+ ] });
115
+ };
116
+ export {
117
+ q as default
118
+ };