@versini/sassysaint 8.70.2 → 8.71.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.D_coGtfg.js → AboutChangelog.DWyXWTXc.js} +2 -2
  2. package/dist/chunks/{AboutEntry.BoG1YJgv.js → AboutEntry.Bfy81T6x.js} +7 -7
  3. package/dist/chunks/{App.fsMPD4V8.js → App.DSD9BetC.js} +16 -16
  4. package/dist/chunks/{Chart.ClJqWZQS.js → Chart.B4k3bheP.js} +2 -2
  5. package/dist/chunks/{ChatBubbleAssistant.DVPvkwc9.js → ChatBubbleAssistant.Db8JqNYx.js} +4 -4
  6. package/dist/chunks/{ChatBubbleUser.BRVFV4OE.js → ChatBubbleUser.BdgsqpxM.js} +3 -3
  7. package/dist/chunks/{ChatHistoryTable.BCuJEN4O.js → ChatHistoryTable.D0NwLSQa.js} +3 -3
  8. package/dist/chunks/{HistoryEntry.s_vx_csj.js → HistoryEntry.CAjcvSz8.js} +3 -3
  9. package/dist/chunks/{ProfileEntry.ZXG7l__n.js → ProfileEntry.DCCsaeos.js} +2 -2
  10. package/dist/chunks/{SettingsEntry.BTa21LvJ.js → SettingsEntry.CY7MR73f.js} +3 -3
  11. package/dist/chunks/{Table.M89-ZLhi.js → Table.BE5_-y3Y.js} +2 -2
  12. package/dist/chunks/{UsageEntry.elc98m0S.js → UsageEntry.CPcF4Txm.js} +3 -3
  13. package/dist/chunks/UserMemoriesPanel.spEuG9Az.js +419 -0
  14. package/dist/chunks/{index.DnRHLO_W.js → index.2WWnkty4.js} +1 -1
  15. package/dist/chunks/{index.D7PCvd5q.js → index.B-0U7o63.js} +3 -3
  16. package/dist/chunks/{index.Dhc-0s9a.js → index.D9fOwzja.js} +1 -1
  17. package/dist/chunks/{index.CxV4ixy4.js → index.fh4mlmae.js} +1 -1
  18. package/dist/chunks/{index.waB0Z6fk.js → index.jIT6fjlk.js} +3 -1
  19. package/dist/chunks/{index.BZMtXIBc.js → index.pLrnJCen.js} +1 -1
  20. package/dist/chunks/{index.Bwc2cdjp.js → index.uvE2MwNm.js} +1 -1
  21. package/dist/chunks/{index.DwBFDfmf.js → index.zw3YchMP.js} +2 -2
  22. package/dist/chunks/{useMarkdown.DUddJwCO.js → useMarkdown.45Aa42bV.js} +6 -6
  23. package/dist/components/SassySaint/SassySaint.js +1 -1
  24. package/dist/index.js +4 -4
  25. package/dist/style.css +1 -1
  26. package/package.json +3 -3
  27. package/dist/chunks/UserMemoriesPanel.DdkrlC6R.js +0 -347
@@ -0,0 +1,419 @@
1
+ import { jsxs as l, jsx as e, Fragment as ne } from "react/jsx-runtime";
2
+ import { I as ce, L as O, j as y, C as v, n as se, LOCAL_STORAGE_PREFIX as q, LOCAL_STORAGE_SORT_MEMORY_DIRECTION as oe, LOCAL_STORAGE_SORT_MEMORY_COLUMN as ie, useUserMemories as ae, useDeleteMemory as de, useDeleteAllMemories as me, useUpdateMemory as he, te as B } from "./index.jIT6fjlk.js";
3
+ import { oe as j, E as F, e as g, ConfirmationPanel as G, st as H } from "./App.DSD9BetC.js";
4
+ import k from "clsx";
5
+ import { useState as h, useEffect as xe, useRef as U } from "react";
6
+ import { Re as ue } from "./index.pLrnJCen.js";
7
+ import { j as pe, D as fe, G as b, M as a, F as ge, H as ye, l as Ce, U as Ne } from "./Table.BE5_-y3Y.js";
8
+ const Ae = ({
9
+ className: i,
10
+ viewBox: d,
11
+ title: n,
12
+ monotone: r,
13
+ ...C
14
+ }) => /* @__PURE__ */ l(
15
+ ce,
16
+ {
17
+ defaultViewBox: "0 0 512 512",
18
+ size: "size-5",
19
+ viewBox: d,
20
+ className: i,
21
+ title: n || "Edit",
22
+ ...C,
23
+ children: [
24
+ /* @__PURE__ */ e(
25
+ "path",
26
+ {
27
+ d: "M0 160c0-53 43-96 96-96h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32 14.3-32 32v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32v-96c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 53-43 96-96 96H96c-53 0-96-43-96-96z",
28
+ opacity: r ? "1" : "0.4"
29
+ }
30
+ ),
31
+ /* @__PURE__ */ e("path", { d: "m392.4 21.7-30.1 30 97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2l-18.7-18.6c-21.9-21.9-57.3-21.9-79.2 0m-52.7 52.6L172.4 241.7c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5l167.3-167.4z" })
32
+ ]
33
+ }
34
+ ), Se = ({
35
+ open: i,
36
+ onOpenChange: d,
37
+ initialText: n,
38
+ metadata: r,
39
+ onSave: C,
40
+ isSaving: N = !1
41
+ }) => {
42
+ const [o, A] = h(n);
43
+ xe(() => {
44
+ i && A(n);
45
+ }, [i, n]);
46
+ const D = () => {
47
+ o.trim().length >= 3 && C(o.trim());
48
+ }, S = o.trim().length >= 3, w = o.trim() !== n.trim();
49
+ return /* @__PURE__ */ e(
50
+ j,
51
+ {
52
+ open: i,
53
+ onOpenChange: d,
54
+ title: "Edit Memory",
55
+ animation: !0,
56
+ animationType: "fade",
57
+ footer: /* @__PURE__ */ l(O, { columnGap: 2, alignHorizontal: "flex-end", children: [
58
+ /* @__PURE__ */ e(y, { children: /* @__PURE__ */ e(
59
+ v,
60
+ {
61
+ mode: "dark",
62
+ variant: "secondary",
63
+ noBorder: !0,
64
+ focusMode: "light",
65
+ onClick: () => d(!1),
66
+ disabled: N,
67
+ children: "Cancel"
68
+ }
69
+ ) }),
70
+ /* @__PURE__ */ e(y, { children: /* @__PURE__ */ e(
71
+ v,
72
+ {
73
+ mode: "dark",
74
+ focusMode: "light",
75
+ disabled: N || !S || !w,
76
+ onClick: D,
77
+ children: N ? "Saving..." : "Save"
78
+ }
79
+ ) })
80
+ ] }),
81
+ children: /* @__PURE__ */ l("div", { className: "flex flex-col pt-2 gap-4", children: [
82
+ /* @__PURE__ */ e(
83
+ ue,
84
+ {
85
+ mode: "dark",
86
+ focusMode: "light",
87
+ label: "Memory text",
88
+ name: "memoryText",
89
+ value: o,
90
+ onChange: (x) => A(x.target.value),
91
+ autoFocus: !0,
92
+ helperText: o.trim().length < 3 ? "Memory text must be at least 3 characters" : `${o.length} characters`
93
+ }
94
+ ),
95
+ r && /* @__PURE__ */ l("div", { className: "flex flex-col gap-3 p-4 bg-slate-800/50 rounded-md border border-slate-700/50", children: [
96
+ /* @__PURE__ */ e("h3", { className: "text-sm font-semibold text-slate-300 m-0", children: "Memory Details" }),
97
+ r.categories && r.categories.length > 0 && /* @__PURE__ */ l("div", { className: "flex flex-col gap-1", children: [
98
+ /* @__PURE__ */ e("span", { className: "text-xs text-slate-400 uppercase", children: "Category" }),
99
+ /* @__PURE__ */ e("div", { className: "flex flex-wrap gap-1", children: r.categories.map((x, T) => /* @__PURE__ */ e(
100
+ "span",
101
+ {
102
+ className: "text-xs px-2 py-1 bg-slate-700/50 text-slate-200 rounded",
103
+ children: x
104
+ },
105
+ `${x}-${T}`
106
+ )) })
107
+ ] }),
108
+ /* @__PURE__ */ l("div", { className: "flex flex-col sm:flex-row gap-4", children: [
109
+ /* @__PURE__ */ l("div", { className: "flex flex-col gap-3 sm:flex-1", children: [
110
+ r.confidence !== void 0 && r.confidence !== null && /* @__PURE__ */ l("div", { className: "flex flex-col gap-1", children: [
111
+ /* @__PURE__ */ e("span", { className: "text-xs text-slate-400 uppercase", children: "Confidence" }),
112
+ /* @__PURE__ */ l("span", { className: "text-sm text-slate-200", children: [
113
+ (r.confidence * 100).toFixed(0),
114
+ "%"
115
+ ] })
116
+ ] }),
117
+ r.status && /* @__PURE__ */ l("div", { className: "flex flex-col gap-1", children: [
118
+ /* @__PURE__ */ e("span", { className: "text-xs text-slate-400 uppercase", children: "Status" }),
119
+ /* @__PURE__ */ e("span", { className: "text-sm text-slate-200 capitalize", children: r.status })
120
+ ] }),
121
+ r.sourceType && /* @__PURE__ */ l("div", { className: "flex flex-col gap-1", children: [
122
+ /* @__PURE__ */ e("span", { className: "text-xs text-slate-400 uppercase", children: "Source Type" }),
123
+ /* @__PURE__ */ e("span", { className: "text-sm text-slate-200 capitalize", children: r.sourceType })
124
+ ] })
125
+ ] }),
126
+ /* @__PURE__ */ l("div", { className: "flex flex-col gap-3 sm:flex-1", children: [
127
+ r.quote && /* @__PURE__ */ l("div", { className: "flex flex-col gap-1", children: [
128
+ /* @__PURE__ */ e("span", { className: "text-xs text-slate-400 uppercase", children: "Original Prompt" }),
129
+ /* @__PURE__ */ l("p", { className: "text-sm text-slate-200 m-0 italic", children: [
130
+ '"',
131
+ r.quote,
132
+ '"'
133
+ ] })
134
+ ] }),
135
+ r.canonicalText && /* @__PURE__ */ l("div", { className: "flex flex-col gap-1", children: [
136
+ /* @__PURE__ */ e("span", { className: "text-xs text-slate-400 uppercase", children: "Canonical Text" }),
137
+ /* @__PURE__ */ e("p", { className: "text-sm text-slate-200 m-0 font-mono", children: r.canonicalText })
138
+ ] })
139
+ ] })
140
+ ] })
141
+ ] })
142
+ ] })
143
+ }
144
+ );
145
+ }, be = ({
146
+ open: i,
147
+ onOpenChange: d,
148
+ user: n
149
+ }) => {
150
+ const { getAccessToken: r } = se(), [C] = h(void 0), [N, o] = F({
151
+ key: q + oe,
152
+ initialValue: g.DESC
153
+ }), [A, D] = F({
154
+ key: q + ie,
155
+ initialValue: "createdAt"
156
+ }), [S, w] = h(N || g.DESC), [x, T] = h(
157
+ A || "createdAt"
158
+ ), { data: u, isLoading: R, isError: z } = ae({
159
+ user: n,
160
+ query: C,
161
+ getAccessToken: r,
162
+ enabled: i
163
+ }), L = de({ getAccessToken: r }), P = me({ getAccessToken: r }), M = he({ getAccessToken: r }), [V, I] = h(!1), m = U(null), [Y, _] = h(!1), [X, E] = h(!1), c = U(null), J = (t, s, p, f) => {
164
+ m.current = { id: t, text: s, description: p, createdAt: f }, I(!0);
165
+ }, K = () => {
166
+ m.current && L.mutate({ user: n, memoryId: m.current.id });
167
+ }, Q = (t, s, p, f, ee, te, le, re) => {
168
+ c.current = {
169
+ id: t,
170
+ description: s,
171
+ categories: p,
172
+ quote: f,
173
+ canonicalText: ee,
174
+ confidence: te,
175
+ status: le,
176
+ sourceType: re
177
+ }, E(!0);
178
+ }, W = (t) => {
179
+ c.current && n && M.mutate(
180
+ {
181
+ user: n,
182
+ memoryId: c.current.id,
183
+ description: t
184
+ },
185
+ {
186
+ onSuccess: () => {
187
+ E(!1);
188
+ }
189
+ }
190
+ );
191
+ }, Z = () => {
192
+ n && _(!0);
193
+ }, $ = () => {
194
+ n && P.mutate({ user: n });
195
+ };
196
+ return /* @__PURE__ */ l(ne, { children: [
197
+ /* @__PURE__ */ e(
198
+ Se,
199
+ {
200
+ open: X,
201
+ onOpenChange: E,
202
+ initialText: c.current?.description || "",
203
+ metadata: c.current ? {
204
+ categories: c.current.categories,
205
+ quote: c.current.quote,
206
+ canonicalText: c.current.canonicalText,
207
+ confidence: c.current.confidence,
208
+ status: c.current.status,
209
+ sourceType: c.current.sourceType
210
+ } : void 0,
211
+ onSave: W,
212
+ isSaving: M.isPending
213
+ }
214
+ ),
215
+ /* @__PURE__ */ l(
216
+ G,
217
+ {
218
+ showConfirmation: V,
219
+ setShowConfirmation: I,
220
+ action: K,
221
+ customStrings: {
222
+ title: "Delete memory",
223
+ confirmAction: "Delete",
224
+ cancelAction: "Cancel"
225
+ },
226
+ children: [
227
+ /* @__PURE__ */ e("p", { className: "m-0", children: "Are you sure you want to delete this memory?" }),
228
+ /* @__PURE__ */ l("ul", { className: "m-0 mt-2 list-disc list-inside text-xs opacity-80", children: [
229
+ /* @__PURE__ */ l("li", { children: [
230
+ "Excerpt:",
231
+ " ",
232
+ (m.current?.description || m.current?.text || "").slice(0, 80)
233
+ ] }),
234
+ /* @__PURE__ */ l("li", { children: [
235
+ "Created:",
236
+ " ",
237
+ m.current?.createdAt ? new Date(m.current.createdAt).toLocaleString() : "-"
238
+ ] })
239
+ ] })
240
+ ]
241
+ }
242
+ ),
243
+ /* @__PURE__ */ e(
244
+ G,
245
+ {
246
+ showConfirmation: Y,
247
+ setShowConfirmation: _,
248
+ action: $,
249
+ customStrings: {
250
+ title: "Delete all memories",
251
+ confirmAction: "Delete all",
252
+ cancelAction: "Cancel"
253
+ },
254
+ children: /* @__PURE__ */ e("p", { className: "m-0", children: "This will permanently delete all memories for this user. This action cannot be undone." })
255
+ }
256
+ ),
257
+ /* @__PURE__ */ e(
258
+ j,
259
+ {
260
+ open: i,
261
+ onOpenChange: (t) => d(t),
262
+ title: "User Memories",
263
+ animation: !0,
264
+ animationType: "fade",
265
+ footer: /* @__PURE__ */ l(O, { columnGap: 2, alignHorizontal: "flex-end", children: [
266
+ /* @__PURE__ */ e(y, { children: /* @__PURE__ */ e(
267
+ v,
268
+ {
269
+ mode: "dark",
270
+ variant: "secondary",
271
+ noBorder: !0,
272
+ focusMode: "light",
273
+ onClick: () => d(!1),
274
+ children: "Close"
275
+ }
276
+ ) }),
277
+ /* @__PURE__ */ e(y, { children: /* @__PURE__ */ e(
278
+ v,
279
+ {
280
+ mode: "dark",
281
+ focusMode: "light",
282
+ variant: "danger",
283
+ disabled: P.isPending || (u?.total ?? 0) === 0,
284
+ onClick: Z,
285
+ children: "Delete All"
286
+ }
287
+ ) })
288
+ ] }),
289
+ children: /* @__PURE__ */ l("div", { className: "flex flex-col sm:flex-row max-h-[75vh] min-h-[60vh] pt-2", children: [
290
+ R && /* @__PURE__ */ e("p", { className: "m-0", children: "Loading memories..." }),
291
+ z && /* @__PURE__ */ e("p", { className: "m-0 text-red-500", children: "Failed to load memories." }),
292
+ !R && !z && (u && u.items.length > 0 ? /* @__PURE__ */ l(pe, { stickyHeader: !0, stickyFooter: !0, compact: !0, mode: "alt-system", children: [
293
+ /* @__PURE__ */ e(fe, { children: /* @__PURE__ */ l(b, { children: [
294
+ /* @__PURE__ */ e(a, { className: "sr-only", children: "Row" }),
295
+ /* @__PURE__ */ e(a, { children: "Memory" }),
296
+ /* @__PURE__ */ e(
297
+ ge,
298
+ {
299
+ focusMode: "system",
300
+ buttonClassName: "text-xs sm:text-sm",
301
+ cellId: "createdAt",
302
+ align: "left",
303
+ sortDirection: S,
304
+ sortedCell: x,
305
+ onClick: () => {
306
+ T("createdAt"), D("createdAt"), w((t) => {
307
+ const s = t === g.ASC ? g.DESC : g.ASC;
308
+ return o(s), s;
309
+ });
310
+ },
311
+ children: "Date"
312
+ }
313
+ ),
314
+ /* @__PURE__ */ e(a, { align: "right", children: "Actions" })
315
+ ] }) }),
316
+ /* @__PURE__ */ e(ye, { children: [...u.items].sort((t, s) => {
317
+ const p = t.createdAt ? new Date(t.createdAt).getTime() : 0, f = s.createdAt ? new Date(s.createdAt).getTime() : 0;
318
+ return S === g.ASC ? p - f : f - p;
319
+ }).map((t, s) => /* @__PURE__ */ l(b, { children: [
320
+ /* @__PURE__ */ e(a, { className: k("dark:text-gray-400"), children: s + 1 }),
321
+ /* @__PURE__ */ e(
322
+ a,
323
+ {
324
+ className: k(
325
+ "dark:text-white",
326
+ "max-w-[100px] sm:max-w-[400px]",
327
+ "text-xs sm:text-sm"
328
+ ),
329
+ style: {
330
+ wordBreak: "break-word"
331
+ },
332
+ children: t.description || t.text
333
+ }
334
+ ),
335
+ /* @__PURE__ */ e(
336
+ a,
337
+ {
338
+ component: "th",
339
+ scope: "row",
340
+ className: k(
341
+ "dark:text-gray-400",
342
+ "sm:whitespace-nowrap text-xs sm:text-sm max-w-20 sm:max-w-none"
343
+ ),
344
+ children: t.createdAt ? new Date(t.createdAt).toLocaleDateString() : "-"
345
+ }
346
+ ),
347
+ /* @__PURE__ */ e(a, { className: "align-top", align: "right", children: /* @__PURE__ */ l(O, { columnGap: 2, alignHorizontal: "flex-end", children: [
348
+ /* @__PURE__ */ e(y, { children: /* @__PURE__ */ e(
349
+ H,
350
+ {
351
+ label: "Edit memory",
352
+ mode: "system",
353
+ placement: "top",
354
+ trigger: /* @__PURE__ */ e(
355
+ B,
356
+ {
357
+ focusMode: "system",
358
+ noBorder: !0,
359
+ label: "Edit memory",
360
+ variant: "primary",
361
+ disabled: M.isPending,
362
+ onClick: () => Q(
363
+ t.memoryId,
364
+ t.description || t.text,
365
+ t.categories,
366
+ t.quote,
367
+ t.canonicalText,
368
+ t.confidence,
369
+ t.status,
370
+ t.sourceType
371
+ ),
372
+ children: /* @__PURE__ */ e(Ae, { size: "size-3", monotone: !0 })
373
+ }
374
+ )
375
+ }
376
+ ) }),
377
+ /* @__PURE__ */ e(y, { children: /* @__PURE__ */ e(
378
+ H,
379
+ {
380
+ label: "Delete memory",
381
+ mode: "system",
382
+ placement: "top",
383
+ trigger: /* @__PURE__ */ e(
384
+ B,
385
+ {
386
+ focusMode: "system",
387
+ noBorder: !0,
388
+ label: "Delete memory",
389
+ variant: "primary",
390
+ iconClassName: "text-red-700 dark:text-red-500",
391
+ disabled: L.isPending,
392
+ onClick: () => J(
393
+ t.memoryId,
394
+ t.text,
395
+ t.description,
396
+ t.createdAt
397
+ ),
398
+ children: /* @__PURE__ */ e(Ce, { size: "size-3", monotone: !0 })
399
+ }
400
+ )
401
+ }
402
+ ) })
403
+ ] }) })
404
+ ] }, t.memoryId)) }),
405
+ /* @__PURE__ */ e(Ne, { children: /* @__PURE__ */ e(b, { children: /* @__PURE__ */ l(a, { colSpan: 4, children: [
406
+ u.total,
407
+ " memor",
408
+ u.total === 1 ? "y" : "ies"
409
+ ] }) }) })
410
+ ] }) : /* @__PURE__ */ e("p", { className: "m-0 italic opacity-70", children: "No memories stored." }))
411
+ ] })
412
+ }
413
+ )
414
+ ] });
415
+ };
416
+ export {
417
+ be as UserMemoriesPanel,
418
+ be as default
419
+ };
@@ -1,4 +1,4 @@
1
- import { convert as E, convertElement as u } from "./useMarkdown.DUddJwCO.js";
1
+ import { convert as E, convertElement as u } from "./useMarkdown.45Aa42bV.js";
2
2
  const f = (
3
3
  // Note: overloads like this are needed to support optional generics.
4
4
  /**
@@ -1,6 +1,6 @@
1
- import { getDefaultExportFromCjs as kn } from "./App.fsMPD4V8.js";
2
- import { visit as In } from "./useMarkdown.DUddJwCO.js";
3
- import { toText as Cn } from "./index.DnRHLO_W.js";
1
+ import { getDefaultExportFromCjs as kn } from "./App.DSD9BetC.js";
2
+ import { visit as In } from "./useMarkdown.45Aa42bV.js";
3
+ import { toText as Cn } from "./index.2WWnkty4.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",
@@ -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.DUddJwCO.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.45Aa42bV.js";
2
2
  import { longestStreak as qe } from "./index.Cyw5OC0t.js";
3
3
  function ne(e, n) {
4
4
  const t = String(e);
@@ -1,4 +1,4 @@
1
- import { factorySpace as M, markdownLineEnding as g } from "./useMarkdown.DUddJwCO.js";
1
+ import { factorySpace as M, markdownLineEnding as g } from "./useMarkdown.45Aa42bV.js";
2
2
  import { longestStreak as q } from "./index.Cyw5OC0t.js";
3
3
  function b() {
4
4
  return {
@@ -4447,12 +4447,14 @@ const G = {
4447
4447
  text
4448
4448
  description
4449
4449
  categories
4450
+ canonicalText
4450
4451
  sourceType
4451
4452
  confidence
4452
4453
  status
4453
4454
  createdAt
4454
4455
  updatedAt
4455
4456
  version
4457
+ quote
4456
4458
  }
4457
4459
  total
4458
4460
  }
@@ -6962,7 +6964,7 @@ Press Ctrl+Enter to send it or Enter for new line.`, wl = "{{clipboard}}", P = "
6962
6964
  ] });
6963
6965
  }, qo = new URL(document.location.href).searchParams, Rr = !!qo.get("debug") || !1, Wo = qs(() => import(
6964
6966
  /* webpackChunkName: "LazyApp" */
6965
- "./App.fsMPD4V8.js"
6967
+ "./App.DSD9BetC.js"
6966
6968
  ).then((e) => e.App)), Vo = new fa(), Cr = ({
6967
6969
  isComponent: e,
6968
6970
  headerHeight: t
@@ -1,5 +1,5 @@
1
1
  import { jsxs as oe, jsx as x } from "react/jsx-runtime";
2
- import { o as se, h as U, i as ie, x$1 as de } from "./index.waB0Z6fk.js";
2
+ import { o as se, h as U, i as ie, x$1 as de } from "./index.jIT6fjlk.js";
3
3
  import ce, { useState as _, useEffect as ne, useRef as b, useLayoutEffect as T } from "react";
4
4
  import s from "clsx";
5
5
  function ue({
@@ -1,5 +1,5 @@
1
1
  import { jsxs as p, jsx as i } from "react/jsx-runtime";
2
- import { te as B } from "./index.waB0Z6fk.js";
2
+ import { te as B } from "./index.jIT6fjlk.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.DUddJwCO.js";
2
- import { toText as Ca } from "./index.DnRHLO_W.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.45Aa42bV.js";
2
+ import { toText as Ca } from "./index.2WWnkty4.js";
3
3
  const Gt = /[#.]/g;
4
4
  function qa(r, e) {
5
5
  const t = r || "", a = {};
@@ -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.waB0Z6fk.js";
3
+ import { te as Ir, isTauri as Tr, unObfuscate as Pr, obfuscate as Ar } from "./index.jIT6fjlk.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.fsMPD4V8.js";
5
+ import { getDefaultExportFromCjs as Nt } from "./App.DSD9BetC.js";
6
6
  import Lr from "clsx";
7
7
  const Rt = ({
8
8
  children: e,
@@ -6907,7 +6907,7 @@ class uu {
6907
6907
  if (!this.remarkGfm) {
6908
6908
  const { default: n } = await import(
6909
6909
  /* webpackChunkName: "md-remark" */
6910
- "./index.Dhc-0s9a.js"
6910
+ "./index.D9fOwzja.js"
6911
6911
  );
6912
6912
  this.remarkGfm = n;
6913
6913
  }
@@ -6918,7 +6918,7 @@ class uu {
6918
6918
  hu("https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css");
6919
6919
  const { default: n } = await import(
6920
6920
  /* webpackChunkName: "md-rehype-katex" */
6921
- "./index.DwBFDfmf.js"
6921
+ "./index.zw3YchMP.js"
6922
6922
  );
6923
6923
  this.rehypeKatex = n;
6924
6924
  }
@@ -6928,7 +6928,7 @@ class uu {
6928
6928
  if (!this.remarkMath) {
6929
6929
  const { default: n } = await import(
6930
6930
  /* webpackChunkName: "md-remark" */
6931
- "./index.CxV4ixy4.js"
6931
+ "./index.fh4mlmae.js"
6932
6932
  );
6933
6933
  this.remarkMath = n;
6934
6934
  }
@@ -6938,7 +6938,7 @@ class uu {
6938
6938
  if (!this.rehypeHighlight) {
6939
6939
  const { default: n } = await import(
6940
6940
  /* webpackChunkName: "md-rehype-highlight" */
6941
- "./index.D7PCvd5q.js"
6941
+ "./index.B-0U7o63.js"
6942
6942
  );
6943
6943
  this.rehypeHighlight = n;
6944
6944
  }
@@ -1,5 +1,5 @@
1
1
  import "react/jsx-runtime";
2
- import { SassySaint as a } from "../../chunks/index.waB0Z6fk.js";
2
+ import { SassySaint as a } from "../../chunks/index.jIT6fjlk.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.waB0Z6fk.js";
1
+ import { SassySaint as r } from "./chunks/index.jIT6fjlk.js";
2
2
  /*!
3
- @sassysaint/client v8.70.2
3
+ @sassysaint/client v8.71.0
4
4
  © 2025 gizmette.com
5
5
  */
6
6
  try {
7
7
  window.__VERSINI_SASSY_GLOBAL__ || (window.__VERSINI_SASSY_GLOBAL__ = {
8
- version: "8.70.2",
9
- buildTime: "10/23/2025 03:44 PM EDT",
8
+ version: "8.71.0",
9
+ buildTime: "10/24/2025 10:30 AM EDT",
10
10
  license: "MIT"
11
11
  });
12
12
  } catch {