@versini/sassysaint 8.53.0 → 8.54.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 (25) hide show
  1. package/dist/chunks/{AboutChangelog.BRYsGtBY.js → AboutChangelog.B9nDZe3K.js} +2 -2
  2. package/dist/chunks/{AboutEntry.Dbhaf-VP.js → AboutEntry.BeGJGDPe.js} +7 -7
  3. package/dist/chunks/{App.BQH2Wmtd.js → App.BmUEowbc.js} +1460 -1404
  4. package/dist/chunks/{Chart.3fOYewQg.js → Chart.CzdIORdS.js} +2 -2
  5. package/dist/chunks/{ChatBubbleAssistant.BP8YviQp.js → ChatBubbleAssistant.OB8R738h.js} +4 -4
  6. package/dist/chunks/{ChatBubbleUser.DiRFVYRm.js → ChatBubbleUser.D8HJY2x_.js} +3 -3
  7. package/dist/chunks/{ChatHistoryTable.BEG5lXsw.js → ChatHistoryTable.r5JcCYqk.js} +3 -3
  8. package/dist/chunks/{HistoryEntry.D1z7kvRb.js → HistoryEntry.BuY2Bv0R.js} +3 -3
  9. package/dist/chunks/{ProfileEntry.DCYv91ms.js → ProfileEntry.DloW2WvY.js} +2 -2
  10. package/dist/chunks/SettingsEntry.eJrAIi7y.js +777 -0
  11. package/dist/chunks/{Table.DrJ2gUQm.js → Table.BnhJmkZC.js} +2 -2
  12. package/dist/chunks/{UsageEntry.Bhzo6gzh.js → UsageEntry.CCXNc5Y_.js} +3 -3
  13. package/dist/chunks/UserMemoriesPanel.B38gBvdE.js +197 -0
  14. package/dist/chunks/{index.C4W5Hfeo.js → index.B6rRPzOs.js} +1 -1
  15. package/dist/chunks/{index.BB9bYKdy.js → index.C_x8MF7I.js} +2 -2
  16. package/dist/chunks/{index.BJoXUuen.js → index.CegCInPa.js} +1 -1
  17. package/dist/chunks/{index.7kLmHDKd.js → index.D_k-KOpB.js} +1 -1
  18. package/dist/chunks/{index.DEmU-2wd.js → index.Dj1SDcB6.js} +1 -1
  19. package/dist/chunks/{index.B5vAQtga.js → index.ngl9rapw.js} +3 -3
  20. package/dist/chunks/{index.CYSNaM4J.js → index.oOqpVbjJ.js} +5 -5
  21. package/dist/chunks/{useMarkdown.CMlnPnYz.js → useMarkdown.Cj71fxpP.js} +6 -6
  22. package/dist/components/SassySaint/SassySaint.js +1 -1
  23. package/dist/index.js +4 -4
  24. package/package.json +3 -3
  25. package/dist/chunks/SettingsEntry.B-O4KsHm.js +0 -964
@@ -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.CYSNaM4J.js";
2
+ import { I as f, b as v } from "./index.oOqpVbjJ.js";
3
3
  import C, { useContext as b } from "react";
4
4
  import o from "clsx";
5
- import { e as k } from "./App.BQH2Wmtd.js";
5
+ import { e as k } from "./App.BmUEowbc.js";
6
6
  const A = ({
7
7
  className: e,
8
8
  viewBox: a,
@@ -1,10 +1,10 @@
1
1
  import { jsxs as l, jsx as e } from "react/jsx-runtime";
2
- import { n as f, i as U, useUserChatStats as v, useChatsUsage as E, USAGE_TITLE as L, S as h, renderDataAsList as M, CARDS as n, L as _, j as D, C as m, pluralize as i } from "./index.CYSNaM4J.js";
3
- import { se as z } from "./App.BQH2Wmtd.js";
2
+ import { n as f, i as U, useUserChatStats as v, useChatsUsage as E, USAGE_TITLE as L, S as h, renderDataAsList as M, CARDS as n, L as _, j as D, C as m, pluralize as i } from "./index.oOqpVbjJ.js";
3
+ import { se as z } from "./App.BmUEowbc.js";
4
4
  import { useState as O, Suspense as P, lazy as B } from "react";
5
5
  const t = [0, 3, 6, 9], j = B(() => import(
6
6
  /* webpackChunkName: "LazyChart" */
7
- "./Chart.3fOYewQg.js"
7
+ "./Chart.CzdIORdS.js"
8
8
  )), b = ({
9
9
  open: S,
10
10
  onOpenChange: I
@@ -0,0 +1,197 @@
1
+ import { jsxs as r, Fragment as z, jsx as e } from "react/jsx-runtime";
2
+ import { n as B, LOCAL_STORAGE_PREFIX as w, LOCAL_STORAGE_SORT_MEMORY_DIRECTION as H, LOCAL_STORAGE_SORT_MEMORY_COLUMN as V, useUserMemories as Y, useDeleteMemory as X, useDeleteAllMemories as $, te as J, L as K, j as N, C as O } from "./index.oOqpVbjJ.js";
3
+ import { E as M, e as c, ConfirmationPanel as T, se as Q, st as W } from "./App.BmUEowbc.js";
4
+ import { useState as s, useRef as Z } from "react";
5
+ import { j as ee, D as te, G as h, M as o, F as re, H as ne, l as oe, U as le } from "./Table.BnhJmkZC.js";
6
+ const de = ({
7
+ open: u,
8
+ onOpenChange: f,
9
+ user: a
10
+ }) => {
11
+ const { getAccessToken: d } = B(), [k] = s(void 0), [R, E] = M({
12
+ key: w + H,
13
+ initialValue: c.DESC
14
+ }), [L, _] = M({
15
+ key: w + V,
16
+ initialValue: "createdAt"
17
+ }), [A, b] = s(R || c.DESC), [v, I] = s(
18
+ L || "createdAt"
19
+ ), { data: l, isLoading: C, isError: x } = Y({
20
+ user: a,
21
+ query: k,
22
+ getAccessToken: d,
23
+ enabled: u
24
+ }), D = X({ getAccessToken: d }), y = $({ getAccessToken: d }), [j, p] = s(!1), i = Z(null), [F, g] = s(!1), G = (t, n, m) => {
25
+ i.current = { id: t, text: n, createdAt: m }, p(!0);
26
+ }, P = () => {
27
+ i.current && D.mutate({ user: a, memoryId: i.current.id });
28
+ }, U = () => {
29
+ a && g(!0);
30
+ }, q = () => {
31
+ a && y.mutate({ user: a });
32
+ };
33
+ return /* @__PURE__ */ r(z, { children: [
34
+ /* @__PURE__ */ r(
35
+ T,
36
+ {
37
+ showConfirmation: j,
38
+ setShowConfirmation: p,
39
+ action: P,
40
+ customStrings: {
41
+ title: "Delete memory",
42
+ confirmAction: "Delete",
43
+ cancelAction: "Cancel"
44
+ },
45
+ children: [
46
+ /* @__PURE__ */ e("p", { className: "m-0", children: "Are you sure you want to delete this memory?" }),
47
+ /* @__PURE__ */ r("ul", { className: "m-0 mt-2 list-disc list-inside text-xs opacity-80", children: [
48
+ /* @__PURE__ */ r("li", { children: [
49
+ "Excerpt: ",
50
+ i.current?.text?.slice(0, 80) || ""
51
+ ] }),
52
+ /* @__PURE__ */ r("li", { children: [
53
+ "Created:",
54
+ " ",
55
+ i.current?.createdAt ? new Date(i.current.createdAt).toLocaleString() : "-"
56
+ ] })
57
+ ] })
58
+ ]
59
+ }
60
+ ),
61
+ /* @__PURE__ */ e(
62
+ T,
63
+ {
64
+ showConfirmation: F,
65
+ setShowConfirmation: g,
66
+ action: q,
67
+ customStrings: {
68
+ title: "Delete all memories",
69
+ confirmAction: "Delete all",
70
+ cancelAction: "Cancel"
71
+ },
72
+ children: /* @__PURE__ */ e("p", { className: "m-0", children: "This will permanently delete all memories for this user. This action cannot be undone." })
73
+ }
74
+ ),
75
+ /* @__PURE__ */ e(
76
+ Q,
77
+ {
78
+ open: u,
79
+ onOpenChange: (t) => f(t),
80
+ title: "User Memories",
81
+ animation: !0,
82
+ animationType: "fade",
83
+ footer: /* @__PURE__ */ r(K, { columnGap: 2, alignHorizontal: "flex-end", children: [
84
+ /* @__PURE__ */ e(N, { children: /* @__PURE__ */ e(
85
+ O,
86
+ {
87
+ mode: "dark",
88
+ variant: "secondary",
89
+ noBorder: !0,
90
+ focusMode: "light",
91
+ onClick: () => f(!1),
92
+ children: "Close"
93
+ }
94
+ ) }),
95
+ /* @__PURE__ */ e(N, { children: /* @__PURE__ */ e(
96
+ O,
97
+ {
98
+ mode: "dark",
99
+ focusMode: "light",
100
+ variant: "danger",
101
+ disabled: y.isPending || (l?.total ?? 0) === 0,
102
+ onClick: U,
103
+ children: "Delete All"
104
+ }
105
+ ) })
106
+ ] }),
107
+ children: /* @__PURE__ */ r("div", { className: "flex flex-col sm:flex-row max-h-[75vh] min-h-[60vh] pt-2", children: [
108
+ C && /* @__PURE__ */ e("p", { className: "m-0", children: "Loading memories..." }),
109
+ x && /* @__PURE__ */ e("p", { className: "m-0 text-red-500", children: "Failed to load memories." }),
110
+ !C && !x && (l && l.items.length > 0 ? /* @__PURE__ */ r(ee, { compact: !0, stickyHeader: !0, stickyFooter: !0, children: [
111
+ /* @__PURE__ */ e(te, { children: /* @__PURE__ */ r(h, { children: [
112
+ /* @__PURE__ */ e(o, { className: "sr-only", children: "Row" }),
113
+ /* @__PURE__ */ e(o, { children: "Memory" }),
114
+ /* @__PURE__ */ e(
115
+ re,
116
+ {
117
+ buttonClassName: "text-xs sm:text-sm",
118
+ cellId: "createdAt",
119
+ align: "left",
120
+ sortDirection: A,
121
+ sortedCell: v,
122
+ onClick: () => {
123
+ I("createdAt"), _("createdAt"), b((t) => {
124
+ const n = t === c.ASC ? c.DESC : c.ASC;
125
+ return E(n), n;
126
+ });
127
+ },
128
+ children: "Date"
129
+ }
130
+ ),
131
+ /* @__PURE__ */ e(o, { align: "right", children: "Actions" })
132
+ ] }) }),
133
+ /* @__PURE__ */ e(ne, { children: [...l.items].sort((t, n) => {
134
+ const m = t.createdAt ? new Date(t.createdAt).getTime() : 0, S = n.createdAt ? new Date(n.createdAt).getTime() : 0;
135
+ return A === c.ASC ? m - S : S - m;
136
+ }).map((t, n) => /* @__PURE__ */ r(h, { children: [
137
+ /* @__PURE__ */ e(o, { className: "text-gray-400", children: n + 1 }),
138
+ /* @__PURE__ */ e(
139
+ o,
140
+ {
141
+ className: "max-w-[100px] text-white sm:max-w-full text-xs sm:text-sm",
142
+ style: {
143
+ wordBreak: "break-word"
144
+ },
145
+ children: t.text
146
+ }
147
+ ),
148
+ /* @__PURE__ */ e(
149
+ o,
150
+ {
151
+ component: "th",
152
+ scope: "row",
153
+ className: "text-gray-400 sm:whitespace-nowrap text-xs sm:text-sm max-w-20 sm:max-w-none",
154
+ children: t.createdAt ? new Date(t.createdAt).toLocaleDateString() : "-"
155
+ }
156
+ ),
157
+ /* @__PURE__ */ e(o, { className: "align-top", align: "right", children: /* @__PURE__ */ e(
158
+ W,
159
+ {
160
+ label: "Delete memory",
161
+ mode: "alt-system",
162
+ placement: "top",
163
+ trigger: /* @__PURE__ */ e(
164
+ J,
165
+ {
166
+ focusMode: "alt-system",
167
+ noBorder: !0,
168
+ label: "Delete memory",
169
+ variant: "primary",
170
+ iconClassName: "text-red-700 dark:text-red-500",
171
+ disabled: D.isPending,
172
+ onClick: () => G(
173
+ t.memoryId,
174
+ t.text,
175
+ t.createdAt
176
+ ),
177
+ children: /* @__PURE__ */ e(oe, { size: "size-3", monotone: !0 })
178
+ }
179
+ )
180
+ }
181
+ ) })
182
+ ] }, t.memoryId)) }),
183
+ /* @__PURE__ */ e(le, { children: /* @__PURE__ */ e(h, { children: /* @__PURE__ */ r(o, { colSpan: 4, children: [
184
+ l.total,
185
+ " memor",
186
+ l.total === 1 ? "y" : "ies"
187
+ ] }) }) })
188
+ ] }) : /* @__PURE__ */ e("p", { className: "m-0 italic opacity-70", children: "No memories stored." }))
189
+ ] })
190
+ }
191
+ )
192
+ ] });
193
+ };
194
+ export {
195
+ de as UserMemoriesPanel,
196
+ de as default
197
+ };
@@ -1,5 +1,5 @@
1
1
  import { jsxs as p, jsx as i } from "react/jsx-runtime";
2
- import { te as B } from "./index.CYSNaM4J.js";
2
+ import { te as B } from "./index.oOqpVbjJ.js";
3
3
  import { useState as I, useEffect as k } from "react";
4
4
  import s from "clsx";
5
5
  const h = "av-bubble", w = ({
@@ -1,5 +1,5 @@
1
- import { find as Aa, parse as Ft, parse$1 as Ht, normalize as Pt, html as Ta, svg as Ba, visitParents as Na, SKIP as Da } from "./useMarkdown.CMlnPnYz.js";
2
- import { toText as Ca } from "./index.BJoXUuen.js";
1
+ import { find as Aa, parse as Ft, parse$1 as Ht, normalize as Pt, html as Ta, svg as Ba, visitParents as Na, SKIP as Da } from "./useMarkdown.Cj71fxpP.js";
2
+ import { toText as Ca } from "./index.CegCInPa.js";
3
3
  const Gt = /[#.]/g;
4
4
  function qa(r, e) {
5
5
  const t = r || "", a = {};
@@ -1,4 +1,4 @@
1
- import { convert as E, convertElement as u } from "./useMarkdown.CMlnPnYz.js";
1
+ import { convert as E, convertElement as u } from "./useMarkdown.Cj71fxpP.js";
2
2
  const f = (
3
3
  // Note: overloads like this are needed to support optional generics.
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { factorySpace as M, markdownLineEnding as g } from "./useMarkdown.CMlnPnYz.js";
1
+ import { factorySpace as M, markdownLineEnding as g } from "./useMarkdown.Cj71fxpP.js";
2
2
  import { longestStreak as q } from "./index.Cyw5OC0t.js";
3
3
  function b() {
4
4
  return {
@@ -1,4 +1,4 @@
1
- import { convert as se, visitParents as Me, unicodeWhitespace as I, unicodePunctuation as N, normalizeIdentifier as _, classifyCharacter as W, visit as _e, toString as ce, EXIT as Oe, asciiAlphanumeric as Z, asciiAlpha as P, markdownLineEndingOrSpace as A, asciiControl as je, blankLine as Be, factorySpace as S, splice as q, resolveAll as We, markdownLineEnding as R, markdownSpace as T, combineExtensions as $e } from "./useMarkdown.CMlnPnYz.js";
1
+ import { convert as se, visitParents as Me, unicodeWhitespace as I, unicodePunctuation as N, normalizeIdentifier as _, classifyCharacter as W, visit as _e, toString as ce, EXIT as Oe, asciiAlphanumeric as Z, asciiAlpha as P, markdownLineEndingOrSpace as A, asciiControl as je, blankLine as Be, factorySpace as S, splice as q, resolveAll as We, markdownLineEnding as R, markdownSpace as T, combineExtensions as $e } from "./useMarkdown.Cj71fxpP.js";
2
2
  import { longestStreak as qe } from "./index.Cyw5OC0t.js";
3
3
  function ne(e, n) {
4
4
  const t = String(e);
@@ -1,6 +1,6 @@
1
- import { getDefaultExportFromCjs as kn } from "./App.BQH2Wmtd.js";
2
- import { visit as In } from "./useMarkdown.CMlnPnYz.js";
3
- import { toText as Cn } from "./index.BJoXUuen.js";
1
+ import { getDefaultExportFromCjs as kn } from "./App.BmUEowbc.js";
2
+ import { visit as In } from "./useMarkdown.Cj71fxpP.js";
3
+ import { toText as Cn } from "./index.CegCInPa.js";
4
4
  function xn(e) {
5
5
  const t = e.regex, i = e.COMMENT("//", "$", { contains: [{ begin: /\\\n/ }] }), a = "decltype\\(auto\\)", r = "[a-zA-Z_]\\w*::", d = "(?!struct)(" + a + "|" + t.optional(r) + "[a-zA-Z_]\\w*" + t.optional("<[^<>]+>") + ")", c = {
6
6
  className: "type",
@@ -5790,7 +5790,7 @@ const lt = ({
5790
5790
  try {
5791
5791
  window.__VERSINI_UI_SVGICON__ || (window.__VERSINI_UI_SVGICON__ = {
5792
5792
  version: "4.2.1",
5793
- buildTime: "08/27/2025 08:27 AM EDT",
5793
+ buildTime: "09/28/2025 06:24 AM EDT",
5794
5794
  homepage: "https://github.com/aversini/ui-components",
5795
5795
  license: "MIT"
5796
5796
  });
@@ -5903,13 +5903,13 @@ const to = ({
5903
5903
  }
5904
5904
  );
5905
5905
  /*!
5906
- @versini/ui-icons v4.11.0
5906
+ @versini/ui-icons v4.12.1
5907
5907
  © 2025 gizmette.com
5908
5908
  */
5909
5909
  try {
5910
5910
  window.__VERSINI_UI_ICONS__ || (window.__VERSINI_UI_ICONS__ = {
5911
- version: "4.11.0",
5912
- buildTime: "08/27/2025 08:28 AM EDT",
5911
+ version: "4.12.1",
5912
+ buildTime: "09/28/2025 06:24 AM EDT",
5913
5913
  homepage: "https://github.com/aversini/ui-components",
5914
5914
  license: "MIT"
5915
5915
  });
@@ -6736,7 +6736,7 @@ Press Ctrl+Enter to send it or Enter for new line.`, jc = "{{clipboard}}", P = "
6736
6736
  ] });
6737
6737
  }, ko = new URL(document.location.href).searchParams, vr = !!ko.get("debug") || !1, Oo = ks(() => import(
6738
6738
  /* webpackChunkName: "LazyApp" */
6739
- "./App.BQH2Wmtd.js"
6739
+ "./App.BmUEowbc.js"
6740
6740
  ).then((e) => e.App)), No = new Xs(), Tr = ({
6741
6741
  isComponent: e,
6742
6742
  headerHeight: t
@@ -1,8 +1,8 @@
1
1
  import * as rn from "react/jsx-runtime";
2
2
  import { jsx as se, jsxs as Pn } from "react/jsx-runtime";
3
- import { te as Ir, isTauri as Tr, unObfuscate as Pr, obfuscate as Ar } from "./index.CYSNaM4J.js";
3
+ import { te as Ir, isTauri as Tr, unObfuscate as Pr, obfuscate as Ar } from "./index.oOqpVbjJ.js";
4
4
  import zr, { useState as Lt, useEffect as _t, useCallback as vt, useRef as Re } from "react";
5
- import { getDefaultExportFromCjs as Nt } from "./App.BQH2Wmtd.js";
5
+ import { getDefaultExportFromCjs as Nt } from "./App.BmUEowbc.js";
6
6
  import Lr from "clsx";
7
7
  const Rt = ({
8
8
  children: e,
@@ -6900,7 +6900,7 @@ class uu {
6900
6900
  if (!this.remarkGfm) {
6901
6901
  const { default: n } = await import(
6902
6902
  /* webpackChunkName: "md-remark" */
6903
- "./index.DEmU-2wd.js"
6903
+ "./index.Dj1SDcB6.js"
6904
6904
  );
6905
6905
  this.remarkGfm = n;
6906
6906
  }
@@ -6911,7 +6911,7 @@ class uu {
6911
6911
  hu("https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css");
6912
6912
  const { default: n } = await import(
6913
6913
  /* webpackChunkName: "md-rehype-katex" */
6914
- "./index.BB9bYKdy.js"
6914
+ "./index.C_x8MF7I.js"
6915
6915
  );
6916
6916
  this.rehypeKatex = n;
6917
6917
  }
@@ -6921,7 +6921,7 @@ class uu {
6921
6921
  if (!this.remarkMath) {
6922
6922
  const { default: n } = await import(
6923
6923
  /* webpackChunkName: "md-remark" */
6924
- "./index.7kLmHDKd.js"
6924
+ "./index.D_k-KOpB.js"
6925
6925
  );
6926
6926
  this.remarkMath = n;
6927
6927
  }
@@ -6931,7 +6931,7 @@ class uu {
6931
6931
  if (!this.rehypeHighlight) {
6932
6932
  const { default: n } = await import(
6933
6933
  /* webpackChunkName: "md-rehype-highlight" */
6934
- "./index.B5vAQtga.js"
6934
+ "./index.ngl9rapw.js"
6935
6935
  );
6936
6936
  this.rehypeHighlight = n;
6937
6937
  }
@@ -1,5 +1,5 @@
1
1
  import "react/jsx-runtime";
2
- import { SassySaint as a } from "../../chunks/index.CYSNaM4J.js";
2
+ import { SassySaint as a } from "../../chunks/index.oOqpVbjJ.js";
3
3
  export {
4
4
  a as SassySaint
5
5
  };
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
- import { SassySaint as r } from "./chunks/index.CYSNaM4J.js";
1
+ import { SassySaint as r } from "./chunks/index.oOqpVbjJ.js";
2
2
  /*!
3
- @sassysaint/client v8.53.0
3
+ @sassysaint/client v8.54.0
4
4
  © 2025 gizmette.com
5
5
  */
6
6
  try {
7
7
  window.__VERSINI_SASSY_GLOBAL__ || (window.__VERSINI_SASSY_GLOBAL__ = {
8
- version: "8.53.0",
9
- buildTime: "09/25/2025 04:22 PM EDT",
8
+ version: "8.54.0",
9
+ buildTime: "09/28/2025 07:09 AM EDT",
10
10
  license: "MIT"
11
11
  });
12
12
  } catch {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@versini/sassysaint",
3
- "version": "8.53.0",
3
+ "version": "8.54.0",
4
4
  "license": "MIT",
5
5
  "author": "Arno Versini",
6
6
  "publishConfig": {
@@ -33,7 +33,7 @@
33
33
  "react-dom": "^18.3.1 || ^19.0.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@sassysaint/client": "8.53.0",
36
+ "@sassysaint/client": "8.54.0",
37
37
  "@tailwindcss/vite": "4.1.13",
38
38
  "@versini/ui-styles": "6.0.3"
39
39
  },
@@ -45,5 +45,5 @@
45
45
  "sideEffects": [
46
46
  "**/*.css"
47
47
  ],
48
- "gitHead": "3f787952a658afbc4429e3db5ac44cbd39deb836"
48
+ "gitHead": "6db96b4328429598770e10f92d5c6054805941b2"
49
49
  }