@versini/sassysaint 8.68.0 → 8.70.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 (27) hide show
  1. package/dist/chunks/{AboutChangelog.DpW_3DBG.js → AboutChangelog.DVjlL3Qi.js} +2 -2
  2. package/dist/chunks/{AboutEntry.CldYLKXw.js → AboutEntry.d-oqfbRb.js} +5 -5
  3. package/dist/chunks/{App.B7h4kjT4.js → App.DP_1QDro.js} +1990 -1924
  4. package/dist/chunks/{Chart.BJVSw9-u.js → Chart.BxgzH0Ym.js} +2 -2
  5. package/dist/chunks/{ChatBubbleAssistant.B6LBszzT.js → ChatBubbleAssistant.CAVS6c3_.js} +4 -4
  6. package/dist/chunks/{ChatBubbleUser.J6lOSYbO.js → ChatBubbleUser.Cyzg2idO.js} +6 -6
  7. package/dist/chunks/{ChatHistoryTable.C5Wc2Eyt.js → ChatHistoryTable.gB3WSJ7G.js} +3 -3
  8. package/dist/chunks/{HistoryEntry.DJiUgBvV.js → HistoryEntry.CQyBOAhi.js} +20 -20
  9. package/dist/chunks/{ProfileEntry.PCKZrYeS.js → ProfileEntry.CWwyc27k.js} +2 -2
  10. package/dist/chunks/SettingsEntry.DKbi9HA-.js +444 -0
  11. package/dist/chunks/{Table.BDdin_AH.js → Table.B65cZ6GW.js} +2 -2
  12. package/dist/chunks/{UsageEntry.sI0CIeE1.js → UsageEntry.BdgexwbQ.js} +3 -3
  13. package/dist/chunks/UserMemoriesPanel.CXJlDOY-.js +347 -0
  14. package/dist/chunks/{index.CuthjKLF.js → index.B-25p6O_.js} +3 -3
  15. package/dist/chunks/index.C0hBKDgD.js +357 -0
  16. package/dist/chunks/{index.B2C-ngQ9.js → index.CTgvpxYe.js} +1 -1
  17. package/dist/chunks/{index.tKnFdz08.js → index.Cfv_6CcW.js} +4 -4
  18. package/dist/chunks/{index.gE6u6VzH.js → index.DjSi9ICW.js} +496 -464
  19. package/dist/chunks/{index.u7coUAzj.js → index.DtU6Al_9.js} +1 -1
  20. package/dist/chunks/{index.BrfVwWfH.js → index.TU_lKm2K.js} +1 -1
  21. package/dist/chunks/{index.B0ax8k-S.js → index.edqJduuy.js} +2 -2
  22. package/dist/chunks/{useMarkdown.Bj5HO16s.js → useMarkdown.CZcXi3B7.js} +6 -6
  23. package/dist/components/SassySaint/SassySaint.js +1 -1
  24. package/dist/index.js +4 -4
  25. package/package.json +4 -4
  26. package/dist/chunks/SettingsEntry.szqdie_1.js +0 -794
  27. package/dist/chunks/UserMemoriesPanel.DMDeGzjE.js +0 -208
@@ -1,7 +1,7 @@
1
1
  import { jsx as Ap } from "react/jsx-runtime";
2
- import { getDefaultExportFromCjs as ln } from "./App.B7h4kjT4.js";
2
+ import { getDefaultExportFromCjs as ln } from "./App.DP_1QDro.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.gE6u6VzH.js";
4
+ import { TRIMESTERS as rn, TRIMESTERS_SHORT as Lp, isProbablyMobile as Ep } from "./index.DjSi9ICW.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 { n as N, useUserPreferences as O, convertCamelCaseToReadable as P, numberFormatter as R, pluralize as y, Y as L } from "./index.gE6u6VzH.js";
3
- import { BUBBLE_FOOTER_EMPTY as _ } from "./index.tKnFdz08.js";
2
+ import { n as N, useUserPreferences as O, convertCamelCaseToReadable as P, numberFormatter as R, pluralize as y, Y as L } from "./index.DjSi9ICW.js";
3
+ import { BUBBLE_FOOTER_EMPTY as _ } from "./index.Cfv_6CcW.js";
4
4
  import w from "clsx";
5
5
  import v, { useState as M, useRef as A, useEffect as U, useContext as B } from "react";
6
- import { ChatContext as G, AsyncBubble as E } from "./App.B7h4kjT4.js";
7
- import { useMarkdown as D } from "./useMarkdown.Bj5HO16s.js";
6
+ import { ChatContext as G, AsyncBubble as E } from "./App.DP_1QDro.js";
7
+ import { useMarkdown as D } from "./useMarkdown.CZcXi3B7.js";
8
8
  const j = 2, q = j * 1e3, b = "", I = (e) => e * (2 - e);
9
9
  function W(e, n = !0) {
10
10
  const [a, p] = M(0), [i, C] = M(0), [t, T] = M(e), r = A(0), s = A(0);
@@ -1,8 +1,8 @@
1
1
  import { jsx as n, Fragment as b, jsxs as A } from "react/jsx-runtime";
2
2
  import { useState as C, useMemo as u, isValidElement as p, useEffect as I } from "react";
3
- import { AsyncBubble as w } from "./App.B7h4kjT4.js";
4
- import { useMarkdown as _ } from "./useMarkdown.Bj5HO16s.js";
5
- import { C as M } from "./index.gE6u6VzH.js";
3
+ import { AsyncBubble as w } from "./App.DP_1QDro.js";
4
+ import { useMarkdown as _ } from "./useMarkdown.CZcXi3B7.js";
5
+ import { C as M } from "./index.DjSi9ICW.js";
6
6
  const R = 200, N = ({
7
7
  string: e,
8
8
  idealLength: r = R
@@ -93,13 +93,13 @@ const R = 200, N = ({
93
93
  );
94
94
  };
95
95
  /*!
96
- @versini/ui-truncate v5.1.3
96
+ @versini/ui-truncate v5.1.5
97
97
  © 2025 gizmette.com
98
98
  */
99
99
  try {
100
100
  window.__VERSINI_UI_TRUNCATE__ || (window.__VERSINI_UI_TRUNCATE__ = {
101
- version: "5.1.3",
102
- buildTime: "10/20/2025 07:56 PM EDT",
101
+ version: "5.1.5",
102
+ buildTime: "10/22/2025 05:50 PM EDT",
103
103
  homepage: "https://github.com/aversini/ui-components",
104
104
  license: "MIT"
105
105
  });
@@ -1,9 +1,9 @@
1
1
  import { jsxs as m, jsx as e } from "react/jsx-runtime";
2
- import { I as g, Z as N, J as C, INFINITE_SCROLL_THRESHOLD as A, CARDS as E, pluralize as y, te as p, numberFormatter as k, ot as b, isProbablyMobile as D, c as U, r as B, O as I } from "./index.gE6u6VzH.js";
3
- import { st as u, p$1 as P, z as L, p$2 as V } from "./App.B7h4kjT4.js";
2
+ import { I as g, Z as N, J as C, INFINITE_SCROLL_THRESHOLD as A, CARDS as E, pluralize as y, te as p, numberFormatter as k, ot as b, isProbablyMobile as D, c as U, r as B, O as I } from "./index.DjSi9ICW.js";
3
+ import { st as u, p$1 as P, z as L, p$2 as V } from "./App.DP_1QDro.js";
4
4
  import h from "clsx";
5
5
  import { Fragment as _ } from "react";
6
- import { j as $, D as H, G as M, H as Y, U as F, M as a, F as f, l as G } from "./Table.BDdin_AH.js";
6
+ import { j as $, D as H, G as M, H as Y, U as F, M as a, F as f, l as G } from "./Table.B65cZ6GW.js";
7
7
  const K = ({
8
8
  className: l,
9
9
  viewBox: c,
@@ -1,6 +1,6 @@
1
1
  import { jsxs as n, jsx as t, Fragment as q } from "react/jsx-runtime";
2
- import { I as Q, n as P, INFINITE_SCROLL_LIMIT as G, INFINITE_SCROLL_THRESHOLD as ee, LOCAL_STORAGE_PREFIX as f, LOCAL_STORAGE_SORT_TIMESTAMP as te, LOCAL_STORAGE_SORT_TOKEN_USAGE as re, LOCAL_STORAGE_SORT as ae, Z as L, useUserPreferences as se, APP_CLASSNAME as oe, mutateCall as b, SERVICE_TYPES as x, TOAST_CHAT_DELETED as ie, setNewProvider as ne, ACTION_SORT as ce, J as le, TOAST_PROVIDER_CHANGED as de, useChatsHistory as he, LOCAL_STORAGE_SEARCH as me, LOCAL_STORAGE_FAVORITES_ONLY as ue, HISTORY_TITLE as Ce, S as Se, Y$1 as pe, debounce as Te, C as ye, ACTION_SEARCH as fe } from "./index.gE6u6VzH.js";
3
- import { HistoryContext as z, ChatContext as M, useAiChat as Ee, E, e as m, ConfirmationPanel as ge, LazyToastContainerWrapper as Ae, showErrorToast as _e, CHAT_SET_PROVIDER as Oe, showSuccessToast as ve, CHAT_SET_STATUS as De, oe as Le, O as Re } from "./App.B7h4kjT4.js";
2
+ import { I as Q, n as P, INFINITE_SCROLL_LIMIT as V, INFINITE_SCROLL_THRESHOLD as ee, LOCAL_STORAGE_PREFIX as f, LOCAL_STORAGE_SORT_TIMESTAMP as te, LOCAL_STORAGE_SORT_TOKEN_USAGE as re, LOCAL_STORAGE_SORT as ae, Z as L, useUserPreferences as se, APP_CLASSNAME as oe, mutateCall as b, SERVICE_TYPES as x, TOAST_CHAT_DELETED as ie, setNewProvider as ne, ACTION_SORT as ce, J as le, TOAST_PROVIDER_CHANGED as de, useChatsHistory as he, LOCAL_STORAGE_SEARCH as me, LOCAL_STORAGE_FAVORITES_ONLY as ue, HISTORY_TITLE as Ce, S as Se, Y$1 as pe, debounce as Te, C as ye, ACTION_SEARCH as fe } from "./index.DjSi9ICW.js";
3
+ import { HistoryContext as z, ChatContext as M, useAiChat as Ee, E, e as m, ConfirmationPanel as ge, LazyToastContainerWrapper as Ae, showErrorToast as _e, CHAT_SET_PROVIDER as ve, showSuccessToast as De, CHAT_SET_STATUS as Oe, oe as Le, G as Re } from "./App.DP_1QDro.js";
4
4
  import { useRef as H, useState as F, useContext as R, useCallback as ke, useEffect as U, Suspense as Ie, lazy as we } from "react";
5
5
  const Ne = ({
6
6
  className: l,
@@ -31,7 +31,7 @@ const Ne = ({
31
31
  ), be = we(
32
32
  () => import(
33
33
  /* webpackChunkName: "history-table" */
34
- "./ChatHistoryTable.C5Wc2Eyt.js"
34
+ "./ChatHistoryTable.gB3WSJ7G.js"
35
35
  ).then((l) => ({ default: l.ChatHistoryTable }))
36
36
  ), xe = ({
37
37
  filteredHistory: l,
@@ -44,7 +44,7 @@ const Ne = ({
44
44
  timestamp: "",
45
45
  message: ""
46
46
  }), [c, g] = F(!1), [p, k] = F(
47
- G + ee
47
+ V + ee
48
48
  ), { state: i, dispatch: A } = R(z), I = {
49
49
  searchString: i.searchString || "",
50
50
  sortDirection: i.sortDirection || m.DESC,
@@ -53,7 +53,7 @@ const Ne = ({
53
53
  state: { provider: y },
54
54
  setChatId: w,
55
55
  setInitialMessages: _
56
- } = R(M), { setInput: N } = Ee(), [O, v] = E({
56
+ } = R(M), { setInput: N } = Ee(), [v, D] = E({
57
57
  key: f + te,
58
58
  initialValue: m.DESC
59
59
  }), [a, B] = E({
@@ -67,24 +67,24 @@ const Ne = ({
67
67
  getAccessToken: C
68
68
  }), j = (e) => {
69
69
  const s = i.sortedCell === e;
70
- let r, D;
70
+ let r, O;
71
71
  switch (e) {
72
72
  case L:
73
- D = v, r = s ? i.sortDirection : O;
73
+ O = D, r = s ? i.sortDirection : v;
74
74
  break;
75
75
  case le:
76
- D = B, r = s ? i.sortDirection : a;
76
+ O = B, r = s ? i.sortDirection : a;
77
77
  break;
78
78
  default:
79
- D = v, r = s ? i.sortDirection : O;
79
+ O = D, r = s ? i.sortDirection : v;
80
80
  break;
81
81
  }
82
- const V = r === m.ASC ? m.DESC : m.ASC;
83
- D(V), Y(e), A({
82
+ const G = r === m.ASC ? m.DESC : m.ASC;
83
+ O(G), Y(e), A({
84
84
  type: ce,
85
85
  payload: {
86
86
  sortedCell: e,
87
- sortDirection: V
87
+ sortDirection: G
88
88
  }
89
89
  });
90
90
  }, J = async () => {
@@ -117,17 +117,17 @@ const Ne = ({
117
117
  accessToken: s,
118
118
  username: d?.username || ""
119
119
  }), h({
120
- type: Oe,
120
+ type: ve,
121
121
  payload: {
122
122
  provider: r.data.provider
123
123
  }
124
- }), $(), await ve(
124
+ }), $(), await De(
125
125
  `${de} ${r.data.provider}`,
126
126
  {
127
127
  containerId: "toggle-provider"
128
128
  }
129
129
  )), h({
130
- type: De,
130
+ type: Oe,
131
131
  payload: {
132
132
  restoring: !0,
133
133
  restoredModel: r.data?.model || "",
@@ -155,7 +155,7 @@ const Ne = ({
155
155
  } catch {
156
156
  }
157
157
  }, Z = ke((e) => {
158
- e[0].isIntersecting && k((r) => r + G);
158
+ e[0].isIntersecting && k((r) => r + V);
159
159
  }, []);
160
160
  return U(() => {
161
161
  const e = {
@@ -242,9 +242,9 @@ const Ne = ({
242
242
  });
243
243
  }, N = Te((a) => {
244
244
  _(a.target.value.trim());
245
- }, 500), O = async (a) => {
245
+ }, 500), v = async (a) => {
246
246
  a.preventDefault();
247
- }, v = (a) => {
247
+ }, D = (a) => {
248
248
  w(a);
249
249
  };
250
250
  return /* @__PURE__ */ n(
@@ -263,7 +263,7 @@ const Ne = ({
263
263
  className: "prose-dark dark:prose-lighter mb-4",
264
264
  noBorder: !0,
265
265
  compact: !0,
266
- children: /* @__PURE__ */ n("form", { autoComplete: "off", onSubmit: O, children: [
266
+ children: /* @__PURE__ */ n("form", { autoComplete: "off", onSubmit: v, children: [
267
267
  /* @__PURE__ */ t(
268
268
  pe,
269
269
  {
@@ -289,7 +289,7 @@ const Ne = ({
289
289
  {
290
290
  name: "favorites-only",
291
291
  checked: y,
292
- onChange: v,
292
+ onChange: D,
293
293
  label: "Show favorites only",
294
294
  narrow: !0,
295
295
  noBorder: !0
@@ -1,6 +1,6 @@
1
1
  import { jsxs as t, Fragment as D, jsx as e } from "react/jsx-runtime";
2
- import { preloadToast as K, showSuccessToast as W, showErrorToast as Y, ConfirmationPanel as H, LazyToastContainerWrapper as $, oe as V } from "./App.B7h4kjT4.js";
3
- import { n as q, i as J, useUserPreferences as Q, useServerCapabilities as X, x as Z, setUserPlan as ee, S as d, renderDataAsList as ae, CARDS as s, L as f, j as c, C as se, it as ne, isTauri as re, te, l as b, PROFILE_TITLE as le } from "./index.gE6u6VzH.js";
2
+ import { preloadToast as K, showSuccessToast as W, showErrorToast as Y, ConfirmationPanel as H, LazyToastContainerWrapper as $, oe as V } from "./App.DP_1QDro.js";
3
+ import { n as q, i as J, useUserPreferences as Q, useServerCapabilities as X, x as Z, setUserPlan as ee, S as d, renderDataAsList as ae, CARDS as s, L as f, j as c, C as se, it as ne, isTauri as re, te, l as b, PROFILE_TITLE as le } from "./index.DjSi9ICW.js";
4
4
  import ie from "clsx";
5
5
  import { useState as m, useMemo as ce, useCallback as P } from "react";
6
6
  const oe = () => {
@@ -0,0 +1,444 @@
1
+ import { jsxs as s, jsx as t, Fragment as w } from "react/jsx-runtime";
2
+ import { n as Ce, useEntitlements as Ie, useUserPreferences as be, nt as te, canEvaluateModels as ke, et as we, getCacheInfo as ye, isServiceWorkerEnabled as ve, SETTINGS_TITLE as De, S as m, CARDS as c, Q as Le, C as y, PROMPTS_DESCRIPTION as Me, L as xe, j as oe, getCurrentGeoLocation as _e, mutateCall as se, SERVICE_TYPES as ae, handleServiceWorkerToggle as Re } from "./index.DjSi9ICW.js";
3
+ import { useCapability as ne, oe as Be, G as l } from "./App.DP_1QDro.js";
4
+ import { Re as re } from "./index.C0hBKDgD.js";
5
+ import { useState as n, useMemo as Oe, useCallback as Ae, useEffect as ce } from "react";
6
+ const $e = ({
7
+ open: le,
8
+ onOpenChange: v
9
+ }) => {
10
+ const { getAccessToken: E, user: D } = Ce(), { allowedModels: T, status: L } = Ie(), {
11
+ data: o,
12
+ isSuccess: ie,
13
+ refetch: M
14
+ } = be({
15
+ user: D?.username,
16
+ getAccessToken: E
17
+ }), [x, p] = n({
18
+ loadingLocation: !1
19
+ }), [C, _] = n({
20
+ prompts: []
21
+ }), [R, B] = n(""), [O, g] = n(""), [A, P] = n(!1), [G, U] = n(!1), [N, W] = n(!1), [S, V] = n(!1), [$, z] = n(!1), [j, Y] = n(!1), [u, F] = n(null), [H, q] = n(!1), [Q, J] = n(!1), K = ne(te.TOOL.MEMORIES), X = ne(te.ADDON.REASONING), de = Oe(() => ke(T, L) ? we(T) : !1, [T, L]), me = (e) => {
22
+ J(e);
23
+ }, ue = (e) => {
24
+ P(e);
25
+ }, he = (e) => {
26
+ K && U(e);
27
+ }, pe = (e) => {
28
+ V(e);
29
+ }, ge = (e) => {
30
+ X && z(e);
31
+ }, Ne = (e) => {
32
+ Y(e);
33
+ }, Se = async (e) => {
34
+ e.preventDefault();
35
+ try {
36
+ await se({
37
+ accessToken: await E(),
38
+ type: ae.SET_USER_PREFERENCES,
39
+ params: {
40
+ user: D?.username,
41
+ instructions: R,
42
+ location: O,
43
+ provider: o?.provider,
44
+ tags: C.prompts,
45
+ sendOnEnter: A,
46
+ useMemory: G,
47
+ showDetails: Q,
48
+ showReasoningButton: $,
49
+ useNestedModelSelection: j
50
+ }
51
+ }), S !== N && (await Re(S), W(S)), M(), p({
52
+ loadingLocation: !1
53
+ });
54
+ } catch {
55
+ }
56
+ }, fe = async () => {
57
+ p({
58
+ loadingLocation: !0
59
+ }), g("...");
60
+ try {
61
+ const e = Date.now(), a = await _e(), f = await se({
62
+ accessToken: await E(),
63
+ type: ae.GET_LOCATION,
64
+ params: {
65
+ latitude: a.latitude,
66
+ longitude: a.longitude
67
+ }
68
+ }), d = Date.now() - e;
69
+ d < 2e3 && await new Promise((Te) => setTimeout(Te, 2e3 - d));
70
+ const { city: i, state: r, country: h, displayName: k } = f.data, Ee = i && r && h ? `${i}, ${r}, ${h}` : k;
71
+ p({
72
+ loadingLocation: !1
73
+ }), g(Ee);
74
+ } catch {
75
+ p({
76
+ loadingLocation: !1
77
+ });
78
+ }
79
+ }, Z = () => {
80
+ M(), v(!1);
81
+ }, I = ({
82
+ enabled: e = !1,
83
+ privateChat: a = !1,
84
+ clipboardAccess: f = !1,
85
+ ...b
86
+ }) => {
87
+ _((d) => {
88
+ const i = d.prompts, r = {
89
+ ...b,
90
+ enabled: e,
91
+ privateChat: a,
92
+ clipboardAccess: f
93
+ };
94
+ f ? r.content = r.content.replace(/{{clipboard}}/g, "") + " {{clipboard}}" : r.content = r.content.replace(/{{clipboard}}/g, "");
95
+ const h = i.findIndex((k) => k.slot === b.slot);
96
+ return h === -1 ? {
97
+ ...d,
98
+ prompts: [...i, { ...r }]
99
+ } : (i[h] = r, {
100
+ ...d,
101
+ prompts: [...i]
102
+ });
103
+ });
104
+ }, ee = Ae(async () => {
105
+ try {
106
+ q(!0);
107
+ const e = await ye();
108
+ F(e);
109
+ } catch {
110
+ } finally {
111
+ q(!1);
112
+ }
113
+ }, []);
114
+ return ce(() => {
115
+ if (!o)
116
+ return;
117
+ o.instructions && B(o.instructions), o.location && g(o.location), o.tags && _({ prompts: o.tags }), o.sendOnEnter !== void 0 && P(o.sendOnEnter), o.useMemory !== void 0 && U(o.useMemory), o.showDetails !== void 0 && J(o.showDetails), o.showReasoningButton !== void 0 && z(o.showReasoningButton), o.useNestedModelSelection !== void 0 && Y(o.useNestedModelSelection);
118
+ const e = ve();
119
+ W(e), V(e);
120
+ }, [o]), ce(() => {
121
+ N ? ee() : F(null);
122
+ }, [N, ee]), ie ? /* @__PURE__ */ s(
123
+ Be,
124
+ {
125
+ open: le,
126
+ onOpenChange: Z,
127
+ title: De,
128
+ animation: !0,
129
+ animationType: "fade",
130
+ footer: /* @__PURE__ */ s(
131
+ xe,
132
+ {
133
+ columnGap: 2,
134
+ alignHorizontal: "flex-end",
135
+ className: "pb-8 sm:pb-0",
136
+ children: [
137
+ /* @__PURE__ */ t(oe, { children: /* @__PURE__ */ t(
138
+ y,
139
+ {
140
+ mode: "dark",
141
+ variant: "secondary",
142
+ focusMode: "light",
143
+ noBorder: !0,
144
+ onClick: Z,
145
+ children: "Cancel"
146
+ }
147
+ ) }),
148
+ /* @__PURE__ */ t(oe, { children: /* @__PURE__ */ t(
149
+ y,
150
+ {
151
+ mode: "dark",
152
+ focusMode: "light",
153
+ onClick: async (e) => {
154
+ v(!1), await Se(e);
155
+ },
156
+ children: "Save"
157
+ }
158
+ ) })
159
+ ]
160
+ }
161
+ ),
162
+ children: [
163
+ /* @__PURE__ */ s(
164
+ m,
165
+ {
166
+ header: c.SETTINGS_DETAILS.TITLE,
167
+ className: "prose-dark dark:prose-lighter",
168
+ noBorder: !0,
169
+ children: [
170
+ /* @__PURE__ */ t("p", { className: "text-sm", children: c.SETTINGS_DETAILS.DETAILS }),
171
+ /* @__PURE__ */ t(
172
+ l,
173
+ {
174
+ noBorder: !0,
175
+ narrow: !0,
176
+ className: "mt-2",
177
+ label: "Show Message Statistics",
178
+ name: "show-message-statistics",
179
+ onChange: me,
180
+ checked: Q
181
+ }
182
+ ),
183
+ /* @__PURE__ */ t("p", { className: "text-sm mt-5", children: c.SETTINGS_DETAILS.SEND_ON_ENTER }),
184
+ /* @__PURE__ */ t(
185
+ l,
186
+ {
187
+ noBorder: !0,
188
+ narrow: !0,
189
+ className: "mt-2",
190
+ label: "Send Message on Enter",
191
+ name: "send-message-on-enter",
192
+ onChange: ue,
193
+ checked: A
194
+ }
195
+ ),
196
+ K && /* @__PURE__ */ s(w, { children: [
197
+ /* @__PURE__ */ t("p", { className: "text-sm mt-5", children: c.SETTINGS_DETAILS.USE_MEMORY }),
198
+ /* @__PURE__ */ t(
199
+ l,
200
+ {
201
+ noBorder: !0,
202
+ narrow: !0,
203
+ className: "mt-2",
204
+ label: "Use Memory",
205
+ name: "use-memory",
206
+ onChange: he,
207
+ checked: G
208
+ }
209
+ )
210
+ ] })
211
+ ]
212
+ }
213
+ ),
214
+ /* @__PURE__ */ s(
215
+ m,
216
+ {
217
+ header: "Custom Instructions",
218
+ className: "prose-dark dark:prose-lighter mt-4",
219
+ noBorder: !0,
220
+ children: [
221
+ /* @__PURE__ */ s("p", { className: "text-sm", children: [
222
+ "What would you like ",
223
+ /* @__PURE__ */ t("em", { children: Le }),
224
+ " to know about you to provide better responses?"
225
+ ] }),
226
+ /* @__PURE__ */ t(
227
+ re,
228
+ {
229
+ mode: "alt-system",
230
+ autoCapitalize: "off",
231
+ autoComplete: "off",
232
+ autoCorrect: "off",
233
+ name: "customInstructions",
234
+ label: "Custom Instructions",
235
+ value: R,
236
+ onChange: (e) => {
237
+ B(e.target.value);
238
+ },
239
+ helperText: "Press ENTER to add a new line."
240
+ }
241
+ )
242
+ ]
243
+ }
244
+ ),
245
+ /* @__PURE__ */ s(
246
+ m,
247
+ {
248
+ header: "Location",
249
+ className: "prose-dark dark:prose-lighter mt-4",
250
+ noBorder: !0,
251
+ children: [
252
+ /* @__PURE__ */ t("p", { className: "text-sm", children: "You can share your location to receive customized responses based on your area." }),
253
+ /* @__PURE__ */ t(
254
+ re,
255
+ {
256
+ mode: "alt-system",
257
+ name: "location",
258
+ label: "Location",
259
+ value: O,
260
+ onChange: (e) => {
261
+ g(e.target.value);
262
+ },
263
+ helperText: "Enter your location or press auto-detect."
264
+ }
265
+ ),
266
+ /* @__PURE__ */ t(
267
+ y,
268
+ {
269
+ className: "mt-2",
270
+ size: "small",
271
+ noBorder: !0,
272
+ variant: "secondary",
273
+ disabled: x.loadingLocation,
274
+ onClick: fe,
275
+ children: x.loadingLocation ? "Detecting..." : "Auto-detect"
276
+ }
277
+ )
278
+ ]
279
+ }
280
+ ),
281
+ /* @__PURE__ */ s(
282
+ m,
283
+ {
284
+ header: c.SETTINGS_PROMPTS.TITLE,
285
+ className: "prose-dark dark:prose-lighter mt-4",
286
+ noBorder: !0,
287
+ children: [
288
+ /* @__PURE__ */ t("p", { className: "text-sm", children: Me }),
289
+ C.prompts && C.prompts.slice(0, 3).map((e) => /* @__PURE__ */ s(
290
+ m,
291
+ {
292
+ mode: "dark",
293
+ noBorder: !0,
294
+ header: e.label.replace("...", ""),
295
+ className: "prose-light mb-2",
296
+ children: [
297
+ /* @__PURE__ */ t("p", { className: "text-sm", children: e.description }),
298
+ /* @__PURE__ */ t(
299
+ l,
300
+ {
301
+ noBorder: !0,
302
+ narrow: !0,
303
+ mode: "dark",
304
+ focusMode: "light",
305
+ className: "mt-2",
306
+ label: "Enabled",
307
+ name: e.slot.toString(),
308
+ onChange: (a) => {
309
+ I({
310
+ ...e,
311
+ enabled: a
312
+ });
313
+ },
314
+ checked: e.enabled
315
+ }
316
+ ),
317
+ /* @__PURE__ */ t(
318
+ l,
319
+ {
320
+ noBorder: !0,
321
+ narrow: !0,
322
+ mode: "dark",
323
+ focusMode: "light",
324
+ className: "mt-2",
325
+ label: "Private Chat",
326
+ name: `private-${e.slot.toString()}`,
327
+ onChange: (a) => {
328
+ I({
329
+ ...e,
330
+ privateChat: a
331
+ });
332
+ },
333
+ checked: e.privateChat
334
+ }
335
+ ),
336
+ /* @__PURE__ */ t(
337
+ l,
338
+ {
339
+ noBorder: !0,
340
+ narrow: !0,
341
+ mode: "dark",
342
+ focusMode: "light",
343
+ className: "mt-2",
344
+ label: "Use Clipboard",
345
+ name: `clipboard-${e.slot.toString()}`,
346
+ onChange: (a) => {
347
+ I({
348
+ ...e,
349
+ clipboardAccess: a
350
+ });
351
+ },
352
+ checked: e.clipboardAccess
353
+ }
354
+ )
355
+ ]
356
+ },
357
+ `prompt-slot-${e.slot}`
358
+ ))
359
+ ]
360
+ }
361
+ ),
362
+ /* @__PURE__ */ s(
363
+ m,
364
+ {
365
+ header: c.SETTINGS_ADVANCED.TITLE,
366
+ className: "prose-dark dark:prose-lighter mt-4 ",
367
+ noBorder: !0,
368
+ children: [
369
+ X && /* @__PURE__ */ s(w, { children: [
370
+ /* @__PURE__ */ t("p", { className: "text-sm", children: c.SETTINGS_ADVANCED.REASONING_BUTTON_DESCRIPTION }),
371
+ /* @__PURE__ */ t(
372
+ l,
373
+ {
374
+ noBorder: !0,
375
+ narrow: !0,
376
+ className: "mt-2",
377
+ label: "Show Reasoning Button",
378
+ name: "show-reasoning-button",
379
+ onChange: ge,
380
+ checked: $
381
+ }
382
+ )
383
+ ] }),
384
+ de && /* @__PURE__ */ s(w, { children: [
385
+ /* @__PURE__ */ t("p", { className: "text-sm mt-5", children: c.SETTINGS_ADVANCED.NESTED_MODEL_SELECTION_DESCRIPTION }),
386
+ /* @__PURE__ */ t(
387
+ l,
388
+ {
389
+ noBorder: !0,
390
+ narrow: !0,
391
+ className: "mt-2",
392
+ label: "Enable Model Selection",
393
+ name: "use-nested-model-selection",
394
+ onChange: Ne,
395
+ checked: j
396
+ }
397
+ )
398
+ ] }),
399
+ /* @__PURE__ */ t("p", { className: "text-sm mt-5", children: c.SETTINGS_ADVANCED.CACHE_DESCRIPTION }),
400
+ /* @__PURE__ */ t(
401
+ l,
402
+ {
403
+ noBorder: !0,
404
+ narrow: !0,
405
+ className: "mt-2",
406
+ label: "Enable Assets Caching",
407
+ name: "enable-service-worker",
408
+ onChange: pe,
409
+ checked: S
410
+ }
411
+ ),
412
+ N && /* @__PURE__ */ s("div", { className: "mt-4 p-3 border border-dashed border-neutral-700 dark:border-neutral-400 rounded @container/optimizations", children: [
413
+ /* @__PURE__ */ t("h3", { className: "m-0 mb-2 text-xs uppercase opacity-70", children: "Cache Info" }),
414
+ u ? /* @__PURE__ */ s("div", { className: "text-xs space-y-2", children: [
415
+ /* @__PURE__ */ s("p", { className: "m-0", children: [
416
+ "Version: ",
417
+ /* @__PURE__ */ t("strong", { children: u.version })
418
+ ] }),
419
+ /* @__PURE__ */ s("p", { className: "m-0", children: [
420
+ "Total Items: ",
421
+ /* @__PURE__ */ t("strong", { children: u.totalItems })
422
+ ] }),
423
+ u.caches.map((e) => /* @__PURE__ */ t("div", { children: /* @__PURE__ */ t("ul", { className: "not-prose font-mono mt-2 list-none w-[95cqw]", children: e.urls.map((a) => /* @__PURE__ */ t(
424
+ "li",
425
+ {
426
+ className: "truncate text-xs text-copy-dark dark:text-copy-light overflow-hidden text-ellipsis",
427
+ title: a,
428
+ children: new URL(a).pathname
429
+ },
430
+ a
431
+ )) }) }, e.name)),
432
+ u.totalItems === 0 && !H && /* @__PURE__ */ t("p", { className: "italic m-0 opacity-70", children: "No cached assets yet." })
433
+ ] }) : /* @__PURE__ */ t("p", { className: "text-xs opacity-70 m-0", children: H ? "Loading cache info..." : "No cache info available." })
434
+ ] })
435
+ ]
436
+ }
437
+ )
438
+ ]
439
+ }
440
+ ) : null;
441
+ };
442
+ export {
443
+ $e as SettingsPanel
444
+ };
@@ -1,8 +1,8 @@
1
1
  import { jsxs as _, jsx as r } from "react/jsx-runtime";
2
- import { I as f, b as v } from "./index.gE6u6VzH.js";
2
+ import { I as f, b as v } from "./index.DjSi9ICW.js";
3
3
  import C, { useContext as b } from "react";
4
4
  import o from "clsx";
5
- import { e as k } from "./App.B7h4kjT4.js";
5
+ import { e as k } from "./App.DP_1QDro.js";
6
6
  const L = ({
7
7
  className: e,
8
8
  viewBox: a,
@@ -1,13 +1,13 @@
1
1
  import { jsxs as l, jsx as e } from "react/jsx-runtime";
2
- import { n as f, i as v, useUserChatStats as _, useChatsUsage as z, USAGE_TITLE as B, S as g, renderDataAsList as P, CARDS as a, L as p, j as A, C as i, pluralize as h } from "./index.gE6u6VzH.js";
3
- import { oe as H } from "./App.B7h4kjT4.js";
2
+ import { n as f, i as v, useUserChatStats as _, useChatsUsage as z, USAGE_TITLE as B, S as g, renderDataAsList as P, CARDS as a, L as p, j as A, C as i, pluralize as h } from "./index.DjSi9ICW.js";
3
+ import { oe as H } from "./App.DP_1QDro.js";
4
4
  import { useState as C, Suspense as K, lazy as j } from "react";
5
5
  const s = [0, 3, 6, 9], n = {
6
6
  TOKEN: "token",
7
7
  MODEL: "model"
8
8
  }, w = j(() => import(
9
9
  /* webpackChunkName: "LazyChart" */
10
- "./Chart.BJVSw9-u.js"
10
+ "./Chart.BxgzH0Ym.js"
11
11
  )), R = ({
12
12
  open: k,
13
13
  onOpenChange: E