@versini/sassysaint 8.119.0 → 8.119.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 (84) hide show
  1. package/dist/chunks/{AboutChangelog.B3zToB4T.js → AboutChangelog.D2F7IsfA.js} +2 -2
  2. package/dist/chunks/{AboutEntry.Dc0GMtzL.js → AboutEntry.6St28Lf5.js} +7 -7
  3. package/dist/chunks/{App.Bcw00dJK.js → App.Dx0i7v1f.js} +16 -16
  4. package/dist/chunks/{BubbleActions.BcwPpzhU.js → BubbleActions.rlJwcUek.js} +3 -3
  5. package/dist/chunks/ButtonIconDelete.D1XluRE7.js +512 -0
  6. package/dist/chunks/{Chart.B0oqrdYo.js → Chart.ClEQYypc.js} +2 -2
  7. package/dist/chunks/{ChatBubbleAssistant.DAwx85Wd.js → ChatBubbleAssistant.BaNEs-WH.js} +5 -5
  8. package/dist/chunks/{ChatBubbleUser.BRTLYDmZ.js → ChatBubbleUser.BKQwt_MT.js} +4 -4
  9. package/dist/chunks/HistoryDataGrid.EVORyJf2.js +479 -0
  10. package/dist/chunks/{HistoryEntry.4GpBDf9x.js → HistoryEntry.B88FZSWr.js} +5 -5
  11. package/dist/chunks/{InlineFilter.Cv_LUpTp.js → InlineFilter.BC6p53ao.js} +3 -3
  12. package/dist/chunks/{LoginEntry.5bQhuYQl.js → LoginEntry.ChP-sVI8.js} +4 -4
  13. package/dist/chunks/{LogoEntry.CN5P16eA.js → LogoEntry.BX2BbPnz.js} +2 -2
  14. package/dist/chunks/{MemoriesEntry.D0q1U5FD.js → MemoriesEntry.7VLaTZvU.js} +6 -6
  15. package/dist/chunks/{ProfileEntry.Ck-5SP70.js → ProfileEntry.DjAWes3a.js} +4 -4
  16. package/dist/chunks/{SettingsEntry.CfB9DKIp.js → SettingsEntry.o9nEUETW.js} +5 -5
  17. package/dist/chunks/{UsageEntry.BCFJMOjQ.js → UsageEntry.CRYw7M5Q.js} +5 -5
  18. package/dist/chunks/{_baseUniq.DRTEXwBu.js → _baseUniq.qYL6t1qv.js} +1 -1
  19. package/dist/chunks/{arc.x_GRGNuD.js → arc.Cym5wUzu.js} +1 -1
  20. package/dist/chunks/{architecture-U656AL7Q.DSfD0nUy.js → architecture-U656AL7Q.DS4pgkMC.js} +1 -1
  21. package/dist/chunks/{architectureDiagram-VXUJARFQ.CAS-oDjc.js → architectureDiagram-VXUJARFQ.BvDQXBtF.js} +4 -4
  22. package/dist/chunks/{blockDiagram-VD42YOAC.P_XB2AgQ.js → blockDiagram-VD42YOAC.q0iBwpIB.js} +5 -5
  23. package/dist/chunks/{browser.oW1ZW8ge.js → browser.B2MccGxb.js} +1 -1
  24. package/dist/chunks/{c4Diagram-YG6GDRKO.Dc9Vyv3k.js → c4Diagram-YG6GDRKO.TUW7Jr-h.js} +2 -2
  25. package/dist/chunks/{channel.TjlRRr3U.js → channel.BbbTuklR.js} +1 -1
  26. package/dist/chunks/{chunk-4BX2VUAB.BwgmyLAX.js → chunk-4BX2VUAB.CeJFN81d.js} +1 -1
  27. package/dist/chunks/{chunk-55IACEB6.Cgq1oeLK.js → chunk-55IACEB6.kkb8e0kJ.js} +1 -1
  28. package/dist/chunks/{chunk-B4BG7PRW.Ds2wbzEG.js → chunk-B4BG7PRW.BCtv4gxR.js} +4 -4
  29. package/dist/chunks/{chunk-DI55MBZ5.Bft9jyaz.js → chunk-DI55MBZ5.BRNj1QQD.js} +3 -3
  30. package/dist/chunks/{chunk-FMBD7UC4.DF-Zr883.js → chunk-FMBD7UC4.DX4dWsGY.js} +1 -1
  31. package/dist/chunks/{chunk-QN33PNHL.BVMRH_Hs.js → chunk-QN33PNHL.H_LPM2vF.js} +1 -1
  32. package/dist/chunks/{chunk-QZHKN3VN.DS306ds1.js → chunk-QZHKN3VN.BMYfiX1a.js} +1 -1
  33. package/dist/chunks/{chunk-TZMSLE5B.Cl4RUaGp.js → chunk-TZMSLE5B.YB2DMjFF.js} +1 -1
  34. package/dist/chunks/{classDiagram-2ON5EDUG.DbFfjSp_.js → classDiagram-2ON5EDUG.BVw5YdVW.js} +2 -2
  35. package/dist/chunks/{classDiagram-v2-WZHVMYZB.DbFfjSp_.js → classDiagram-v2-WZHVMYZB.BVw5YdVW.js} +2 -2
  36. package/dist/chunks/{clone.B8XxgJj0.js → clone.CR4Q6L6w.js} +1 -1
  37. package/dist/chunks/{cose-bilkent-S5V4N54A.CL-tsB7O.js → cose-bilkent-S5V4N54A.DL75oZVQ.js} +2 -2
  38. package/dist/chunks/{dagre-6UL2VRFP.7xKesqEK.js → dagre-6UL2VRFP.skxnrW0m.js} +5 -5
  39. package/dist/chunks/{diagram-PSM6KHXK.D6JNXJQr.js → diagram-PSM6KHXK.CIKSCwqj.js} +4 -4
  40. package/dist/chunks/{diagram-QEK2KX5R.VaJKE9Ih.js → diagram-QEK2KX5R.CXfUdwio.js} +3 -3
  41. package/dist/chunks/{diagram-S2PKOQOG.BjCuqhPd.js → diagram-S2PKOQOG.DNP0yPuz.js} +3 -3
  42. package/dist/chunks/{erDiagram-Q2GNP2WA.BYnxwTG-.js → erDiagram-Q2GNP2WA.DsDL14E8.js} +4 -4
  43. package/dist/chunks/{flowDiagram-NV44I4VS.DefWDma3.js → flowDiagram-NV44I4VS.KyT8VEH0.js} +5 -5
  44. package/dist/chunks/{ganttDiagram-JELNMOA3.BrEeaW2n.js → ganttDiagram-JELNMOA3.BIc6-yIF.js} +2 -2
  45. package/dist/chunks/{gitGraph-F6HP7TQM.C4_YWAr0.js → gitGraph-F6HP7TQM.DZQnBw57.js} +1 -1
  46. package/dist/chunks/{gitGraphDiagram-NY62KEGX.GGrXKGya.js → gitGraphDiagram-NY62KEGX.dp5Oo2Wm.js} +4 -4
  47. package/dist/chunks/{graph.BxDrvENy.js → graph.Daj4nkbR.js} +2 -2
  48. package/dist/chunks/{index.DvThh-C6.js → index.B0nO3wvT.js} +1 -1
  49. package/dist/chunks/{index.CR0NHbVR.js → index.BbXK13Js.js} +1 -1
  50. package/dist/chunks/{index.DS9SCH32.js → index.BpBKcgEW.js} +1 -1
  51. package/dist/chunks/{index.o4ZD5ALX.js → index.C-7h2KOd.js} +2 -2
  52. package/dist/chunks/{index.DOwjLeiM.js → index.C0ecFrQh.js} +1 -1
  53. package/dist/chunks/{index.CZRaE0eA.js → index.CFO0VGN_.js} +1 -1
  54. package/dist/chunks/{index.CsAjUl3G.js → index.CHSGxc4N.js} +3 -3
  55. package/dist/chunks/{index.BMADibmh.js → index.Cxl91Epa.js} +3 -3
  56. package/dist/chunks/{index.tqKeN7sl.js → index.Dx1p6vnB.js} +1 -1
  57. package/dist/chunks/{info-NVLQJR56.E0G9wIVE.js → info-NVLQJR56.B1sH-qdY.js} +1 -1
  58. package/dist/chunks/{infoDiagram-WHAUD3N6.CY9ADLsc.js → infoDiagram-WHAUD3N6.1AjxKmSb.js} +2 -2
  59. package/dist/chunks/{journeyDiagram-XKPGCS4Q.BZHhK7w4.js → journeyDiagram-XKPGCS4Q.BXUWA_H0.js} +4 -4
  60. package/dist/chunks/{kanban-definition-3W4ZIXB7.DQSZD0Em.js → kanban-definition-3W4ZIXB7.DwKUNSwB.js} +2 -2
  61. package/dist/chunks/{layout.DUh_4gWb.js → layout.BurBG7fo.js} +4 -4
  62. package/dist/chunks/{mermaid-parser.core.lAJFSSvC.js → mermaid-parser.core.BYpuHuuP.js} +10 -10
  63. package/dist/chunks/{min.B3NH5ZNz.js → min.BUzVe1CC.js} +2 -2
  64. package/dist/chunks/{mindmap-definition-VGOIOE7T.CVTcq_-S.js → mindmap-definition-VGOIOE7T.CcFtF2ym.js} +3 -3
  65. package/dist/chunks/{packet-BFZMPI3H.CaaCaP6S.js → packet-BFZMPI3H.BYUkRp22.js} +1 -1
  66. package/dist/chunks/{pie-7BOR55EZ.Ctr5Wngs.js → pie-7BOR55EZ.D9vQx_ny.js} +1 -1
  67. package/dist/chunks/{pieDiagram-ADFJNKIX.v0K5SYBL.js → pieDiagram-ADFJNKIX.iNvnYxgY.js} +4 -4
  68. package/dist/chunks/{quadrantDiagram-AYHSOK5B.CSGhc5R-.js → quadrantDiagram-AYHSOK5B.DUv-EOEE.js} +1 -1
  69. package/dist/chunks/{radar-NHE76QYJ.BYJioslS.js → radar-NHE76QYJ.Cr-FgGCd.js} +1 -1
  70. package/dist/chunks/{rehype-mermaid.CYJb7tO-.js → rehype-mermaid.CNWjRv7t.js} +33 -33
  71. package/dist/chunks/{requirementDiagram-UZGBJVZJ.07FdvPam.js → requirementDiagram-UZGBJVZJ.BoczNkNl.js} +3 -3
  72. package/dist/chunks/{sankeyDiagram-TZEHDZUN.BJQl-LVq.js → sankeyDiagram-TZEHDZUN.PNrd5uuL.js} +1 -1
  73. package/dist/chunks/{sequenceDiagram-WL72ISMW.D3HP-wCt.js → sequenceDiagram-WL72ISMW.K8gyhsmA.js} +3 -3
  74. package/dist/chunks/{stateDiagram-FKZM4ZOC.uXuYKEnS.js → stateDiagram-FKZM4ZOC.lVblIqCD.js} +4 -4
  75. package/dist/chunks/{stateDiagram-v2-4FDKWEC3.i7NR_lBC.js → stateDiagram-v2-4FDKWEC3.ChcG_M0g.js} +2 -2
  76. package/dist/chunks/{timeline-definition-IT6M3QCI.CfrxZtW7.js → timeline-definition-IT6M3QCI.i6kfP-GH.js} +2 -2
  77. package/dist/chunks/{treemap-KMMF4GRG.D0E-EXib.js → treemap-KMMF4GRG.E6EpEM17.js} +1 -1
  78. package/dist/chunks/{useMarkdown.CVmi3L7b.js → useMarkdown.JIM6TAXs.js} +8 -8
  79. package/dist/chunks/{xychartDiagram-PRI3JC2R.BedGeb-X.js → xychartDiagram-PRI3JC2R.wqxzlkjJ.js} +1 -1
  80. package/dist/components/SassySaint/SassySaint.js +1 -1
  81. package/dist/index.js +3 -3
  82. package/package.json +4 -4
  83. package/dist/chunks/ButtonIconDelete.CASHORv6.js +0 -523
  84. package/dist/chunks/HistoryDataGrid.Bg984Jd_.js +0 -465
@@ -1,7 +1,7 @@
1
1
  import { jsx as Pp } from "react/jsx-runtime";
2
- import { getDefaultExportFromCjs as dn, isProbablyMobile as Op } from "./App.Bcw00dJK.js";
2
+ import { getDefaultExportFromCjs as dn, isProbablyMobile as Op } from "./App.Dx0i7v1f.js";
3
3
  import Lp, { useMemo as Ep } from "react";
4
- import { TRIMESTERS_SHORT as Ip, TRIMESTERS as on, TIME_RANGES as ls, TIME_RANGE_LABELS as an } from "./LogoEntry.CN5P16eA.js";
4
+ import { TRIMESTERS_SHORT as Ip, TRIMESTERS as on, TIME_RANGES as ls, TIME_RANGE_LABELS as an } from "./LogoEntry.BX2BbPnz.js";
5
5
  var hs = { exports: {} }, Dp = hs.exports, nn;
6
6
  function Bp() {
7
7
  return nn || (nn = 1, (function(Ae, pe) {
@@ -1,11 +1,11 @@
1
1
  import { jsx as vt } from "react/jsx-runtime";
2
- import { n as as, useUserPreferences as os, formatTimestamp as Vt } from "./index.o4ZD5ALX.js";
3
- import { numberFormatter as ls, pluralize as us, Bubble as cs } from "./App.Bcw00dJK.js";
2
+ import { n as as, useUserPreferences as os, formatTimestamp as Vt } from "./index.C-7h2KOd.js";
3
+ import { numberFormatter as ls, pluralize as us, Bubble as cs } from "./App.Dx0i7v1f.js";
4
4
  import Zt from "clsx";
5
5
  import fs, { useState as Ae, useEffect as Jt, useContext as St } from "react";
6
- import { useMarkdown as hs } from "./useMarkdown.CVmi3L7b.js";
7
- import { ChatContext as ds, AppContext as ps } from "./LogoEntry.CN5P16eA.js";
8
- import { BubbleActions as ms } from "./BubbleActions.BcwPpzhU.js";
6
+ import { useMarkdown as hs } from "./useMarkdown.JIM6TAXs.js";
7
+ import { ChatContext as ds, AppContext as ps } from "./LogoEntry.BX2BbPnz.js";
8
+ import { BubbleActions as ms } from "./BubbleActions.rlJwcUek.js";
9
9
  const Me = {
10
10
  isEmpty: !0
11
11
  };
@@ -1,9 +1,9 @@
1
1
  import { jsx as a, Fragment as S, jsxs as b } from "react/jsx-runtime";
2
- import { Bubble as k } from "./App.Bcw00dJK.js";
3
- import { Button as C } from "./LogoEntry.CN5P16eA.js";
2
+ import { Bubble as k } from "./App.Dx0i7v1f.js";
3
+ import { Button as C } from "./LogoEntry.BX2BbPnz.js";
4
4
  import { useState as H, useMemo as m, isValidElement as T, useEffect as O } from "react";
5
- import { useMarkdown as w } from "./useMarkdown.CVmi3L7b.js";
6
- import { BubbleCopyToClipboard as I } from "./BubbleActions.BcwPpzhU.js";
5
+ import { useMarkdown as w } from "./useMarkdown.JIM6TAXs.js";
6
+ import { BubbleCopyToClipboard as I } from "./BubbleActions.rlJwcUek.js";
7
7
  const L = 200, h = ({ string: e, idealLength: r = L }) => {
8
8
  if (e.length <= r)
9
9
  return {
@@ -0,0 +1,479 @@
1
+ import { jsx as t, jsxs as g, Fragment as E } from "react/jsx-runtime";
2
+ import { DataGridContext as A, useColumnMeasurement as K, getBodyClass as Q, DataGridHeader as ee, DataGridRow as q, DataGridCell as d, DataGridCellSort as B, ButtonIconDelete as te, DataGrid as re } from "./ButtonIconDelete.D1XluRE7.js";
3
+ import { forwardRef as ne, useContext as se, useRef as D, useState as X, useCallback as P, useEffect as v, useImperativeHandle as oe, useMemo as $ } from "react";
4
+ import { CellWrapper as F, IconCloseLight as le, ButtonIcon as U, IconRestore as ae, IconStarInCircle as ce, IconStarInCircleLight as ie, CARDS as me } from "./LogoEntry.BX2BbPnz.js";
5
+ import { pluralize as H, isProbablyMobile as Z, numberFormatter as ue, ResponsiveTooltip as z } from "./App.Dx0i7v1f.js";
6
+ import I from "clsx";
7
+ import { y as _, V, INFINITE_SCROLL_THRESHOLD as de, INFINITE_SCROLL_LIMIT as fe } from "./index.C-7h2KOd.js";
8
+ const xe = 20, pe = 5, he = "20px", Y = "data-row-index";
9
+ function ge(e) {
10
+ let r = e.parentElement;
11
+ for (; r; ) {
12
+ const l = getComputedStyle(r).overflowY;
13
+ if (l === "auto" || l === "scroll")
14
+ return r;
15
+ r = r.parentElement;
16
+ }
17
+ return null;
18
+ }
19
+ function be({ data: e, children: r, batchSize: o = xe, threshold: l = pe, rootMargin: i = he, onVisibleCountChange: f, className: x }, b) {
20
+ const c = se(A), y = D(null), p = D(null), u = D(null), s = e.length, N = Math.min(o + l, s), [a, T] = X(N), k = a < s, R = P((n) => {
21
+ const C = y.current;
22
+ if (!C)
23
+ return;
24
+ const m = C.querySelector(`[${Y}="${n}"]`);
25
+ if (m) {
26
+ const S = m.querySelector('[role="row"]');
27
+ S && S.scrollIntoView({
28
+ behavior: "smooth",
29
+ block: "center"
30
+ });
31
+ }
32
+ }, []);
33
+ v(() => {
34
+ if (u.current !== null) {
35
+ const n = u.current;
36
+ n < a && (requestAnimationFrame(() => {
37
+ R(n);
38
+ }), u.current = null);
39
+ }
40
+ }, [
41
+ a,
42
+ R
43
+ ]), oe(b, () => ({
44
+ scrollToIndex: (n) => {
45
+ if (n < 0 || n >= s) {
46
+ console.warn(`scrollToIndex: index ${n} is out of bounds (0-${s - 1})`);
47
+ return;
48
+ }
49
+ if (n < a) {
50
+ R(n);
51
+ return;
52
+ }
53
+ const C = Math.min(n + l + 1, s);
54
+ u.current = n, T(C);
55
+ }
56
+ }), [
57
+ s,
58
+ a,
59
+ l,
60
+ R
61
+ ]), v(() => {
62
+ T(Math.min(o + l, s));
63
+ }, [
64
+ s,
65
+ o,
66
+ l
67
+ ]), v(() => {
68
+ f?.(a, s);
69
+ }, [
70
+ a,
71
+ s,
72
+ f
73
+ ]);
74
+ const h = P((n) => {
75
+ n[0]?.isIntersecting && T((m) => Math.min(m + o, s));
76
+ }, [
77
+ o,
78
+ s
79
+ ]), w = P((n) => {
80
+ if (p.current && (p.current.disconnect(), p.current = null), n && k) {
81
+ const C = ge(n);
82
+ p.current = new IntersectionObserver(h, {
83
+ root: C,
84
+ rootMargin: i
85
+ }), p.current.observe(n);
86
+ }
87
+ }, [
88
+ k,
89
+ h,
90
+ i
91
+ ]);
92
+ v(() => () => {
93
+ p.current?.disconnect();
94
+ }, []);
95
+ const M = $(() => k ? Math.max(0, a - l) : -1, [
96
+ k,
97
+ a,
98
+ l
99
+ ]), O = $(() => ({
100
+ ...c,
101
+ cellWrapper: F.BODY
102
+ }), [
103
+ c
104
+ ]), G = $(() => {
105
+ const n = [], C = Math.min(a, s) - 1;
106
+ for (let m = 0; m < a && m < s; m++) {
107
+ m === M && n.push(/* @__PURE__ */ t("div", {
108
+ ref: w,
109
+ "aria-hidden": "true",
110
+ style: {
111
+ height: "1px",
112
+ background: "transparent"
113
+ }
114
+ }, "__infinite-scroll-marker-inline__"));
115
+ const S = !k && m === C;
116
+ n.push(/* @__PURE__ */ t(A.Provider, {
117
+ value: {
118
+ ...O,
119
+ isLastRow: S
120
+ },
121
+ children: /* @__PURE__ */ t("div", {
122
+ [Y]: m,
123
+ style: {
124
+ display: "contents"
125
+ },
126
+ children: r(e[m], m)
127
+ })
128
+ }, m));
129
+ }
130
+ return M === a && k && n.push(/* @__PURE__ */ t("div", {
131
+ ref: w,
132
+ "aria-hidden": "true",
133
+ style: {
134
+ height: "1px",
135
+ background: "transparent"
136
+ }
137
+ }, "__infinite-scroll-marker-end__")), n;
138
+ }, [
139
+ e,
140
+ a,
141
+ s,
142
+ M,
143
+ k,
144
+ r,
145
+ w,
146
+ O
147
+ ]);
148
+ K(y, G);
149
+ const J = Q(!!c.columns, x);
150
+ return /* @__PURE__ */ t(A.Provider, {
151
+ value: {
152
+ ...c,
153
+ cellWrapper: F.BODY
154
+ },
155
+ children: /* @__PURE__ */ t("div", {
156
+ ref: y,
157
+ role: "rowgroup",
158
+ className: J,
159
+ children: G
160
+ })
161
+ });
162
+ }
163
+ const ye = /* @__PURE__ */ ne(be), we = ({
164
+ sortDirection: e,
165
+ sortedCell: r,
166
+ onSortChange: o,
167
+ caption: l,
168
+ isSearchActive: i = !1,
169
+ showTokenUsage: f = !0
170
+ }) => {
171
+ const x = (b) => {
172
+ o(b);
173
+ };
174
+ return /* @__PURE__ */ t(ee, { caption: l, children: /* @__PURE__ */ g(q, { children: [
175
+ /* @__PURE__ */ t(d, { className: "invisible", children: "Row" }),
176
+ f ? /* @__PURE__ */ g(E, { children: [
177
+ /* @__PURE__ */ t(d, { className: "text-xs sm:text-sm", children: "Summary" }),
178
+ i ? /* @__PURE__ */ t(d, { className: "text-xs sm:text-sm", children: "Date" }) : /* @__PURE__ */ t(
179
+ B,
180
+ {
181
+ focusMode: "system",
182
+ buttonClassName: "text-xs sm:text-sm",
183
+ cellId: _,
184
+ align: "left",
185
+ sortDirection: r === _ ? e : !1,
186
+ sortedCell: r,
187
+ onSort: x,
188
+ children: "Date"
189
+ }
190
+ ),
191
+ i ? /* @__PURE__ */ t(d, { align: "right", className: "text-xs sm:text-sm", children: "Tokens" }) : /* @__PURE__ */ t(
192
+ B,
193
+ {
194
+ focusMode: "system",
195
+ buttonClassName: "text-xs sm:text-sm",
196
+ cellId: V,
197
+ align: "right",
198
+ sortDirection: r === V ? e : !1,
199
+ sortedCell: r,
200
+ onSort: x,
201
+ children: "Tokens"
202
+ }
203
+ )
204
+ ] }) : /* @__PURE__ */ g(E, { children: [
205
+ i ? /* @__PURE__ */ t(d, { className: "text-xs sm:text-sm", children: "Date" }) : /* @__PURE__ */ t(
206
+ B,
207
+ {
208
+ focusMode: "system",
209
+ buttonClassName: "text-xs sm:text-sm",
210
+ cellId: _,
211
+ align: "left",
212
+ sortDirection: r === _ ? e : !1,
213
+ sortedCell: r,
214
+ onSort: x,
215
+ children: "Date"
216
+ }
217
+ ),
218
+ /* @__PURE__ */ t(d, { className: "text-xs sm:text-sm", children: "Summary" })
219
+ ] }),
220
+ /* @__PURE__ */ t(d, { align: "right", className: "text-xs sm:text-sm", children: "Actions" })
221
+ ] }) });
222
+ };
223
+ const Ie = "av-pill", Ce = ({ variant: e }) => I("rounded-xs border", {
224
+ "border-border-information": e === "information",
225
+ "border-border-warning": e === "warning",
226
+ "border-border-success": e === "success",
227
+ "border-border-error": e === "error"
228
+ }), W = ({ variant: e }) => I("not-prose", {
229
+ "text-copy-information": e === "information",
230
+ "text-copy-warning": e === "warning",
231
+ "text-copy-success": e === "success",
232
+ "text-copy-error": e === "error"
233
+ }), ke = ({ variant: e }) => I({
234
+ "bg-surface-information": e === "information",
235
+ "bg-surface-warning": e === "warning",
236
+ "bg-surface-success": e === "success",
237
+ "bg-surface-error": e === "error"
238
+ }), Ne = (e) => {
239
+ const { className: r, variant: o } = e;
240
+ return {
241
+ main: I(Ie, "inline-flex items-center gap-1 px-2 py-0.5 text-xs", Ce({
242
+ variant: o
243
+ }), W({
244
+ variant: o
245
+ }), ke(e), r),
246
+ button: I("inline-flex items-center justify-center", "ml-1", "focus:outline", "focus:outline-1", "focus:outline-offset-1", "focus:outline-focus-dark", "hover:bg-surface-medium/50", "rounded-full", W({
247
+ variant: o
248
+ }))
249
+ };
250
+ }, j = ({ label: e, className: r, variant: o = "information", description: l, onClose: i }) => {
251
+ const [f, x] = X(!0), b = (y) => {
252
+ i && (i(y), y.defaultPrevented || x(!1));
253
+ };
254
+ if (!f)
255
+ return null;
256
+ const c = Ne({
257
+ className: r,
258
+ variant: o
259
+ });
260
+ return /* @__PURE__ */ g("div", {
261
+ role: "text",
262
+ className: c.main,
263
+ children: [
264
+ l && /* @__PURE__ */ t("span", {
265
+ className: "sr-only",
266
+ children: l
267
+ }),
268
+ /* @__PURE__ */ t("span", {
269
+ children: e
270
+ }),
271
+ i && /* @__PURE__ */ t("button", {
272
+ type: "button",
273
+ onClick: b,
274
+ className: c.button,
275
+ "aria-label": "Close",
276
+ children: /* @__PURE__ */ t(le, {
277
+ size: "size-3"
278
+ })
279
+ })
280
+ ]
281
+ });
282
+ };
283
+ function ve(e, r, o) {
284
+ return o && r > e ? `Showing ${H(`${e} chat`, e)} out of ${r}` : H(`${e} chat`, e);
285
+ }
286
+ const L = {
287
+ rowNumber: "dark:text-copy-medium",
288
+ summary: "dark:text-white sm:max-w-full text-xs sm:text-sm",
289
+ timestamp: "dark:text-copy-medium sm:whitespace-nowrap text-xs sm:text-sm max-w-20 sm:max-w-none",
290
+ tokenUsage: "dark:text-copy-medium text-xs sm:text-sm"
291
+ };
292
+ function Te({
293
+ item: e,
294
+ index: r,
295
+ onClickRestore: o,
296
+ onClickDelete: l,
297
+ onClickFavorite: i,
298
+ showTokenUsage: f = !0,
299
+ isActive: x = !1
300
+ }) {
301
+ const b = e.timestamp.split(",")[0], c = e.similarityScore !== void 0 && e.similarityScore !== null ? Math.round(e.similarityScore * 100) : null, y = c !== null && c < 40 ? "warning" : "success", p = e.keywordMatch === !0, u = /* @__PURE__ */ t(d, { className: I(L.summary), children: /* @__PURE__ */ g("div", { className: "flex flex-col gap-1", children: [
302
+ (c !== null || p) && /* @__PURE__ */ g("div", { className: "flex flex-wrap gap-1", children: [
303
+ c !== null && /* @__PURE__ */ t(
304
+ j,
305
+ {
306
+ variant: y,
307
+ label: `${c}% semantic`
308
+ }
309
+ ),
310
+ p && /* @__PURE__ */ t(j, { variant: "information", label: "keyword" })
311
+ ] }),
312
+ Z() ? /* @__PURE__ */ t("span", { title: e.summary, children: e.summary }) : /* @__PURE__ */ t("span", { className: "truncate", title: e.summary, children: e.summary })
313
+ ] }) }), s = /* @__PURE__ */ t(d, { className: I(L.timestamp), children: b }), N = f ? /* @__PURE__ */ t(d, { align: "right", className: I(L.tokenUsage), children: e.tokenUsage ? ue.format(e.tokenUsage) : "0" }) : null, a = /* @__PURE__ */ t(d, { align: "center", borderLeft: !0, children: /* @__PURE__ */ g("div", { className: "flex flex-col items-end sm:flex-row gap-2", children: [
314
+ /* @__PURE__ */ t(
315
+ z,
316
+ {
317
+ label: "Restore chat",
318
+ placement: "top",
319
+ trigger: /* @__PURE__ */ t(
320
+ U,
321
+ {
322
+ noBorder: !0,
323
+ label: "Restore chat",
324
+ variant: "primary",
325
+ onClick: async () => {
326
+ await o(e);
327
+ },
328
+ children: /* @__PURE__ */ t(
329
+ ae,
330
+ {
331
+ size: "size-3",
332
+ monotone: !0,
333
+ className: "text-copy-success dark:text-copy-success-light"
334
+ }
335
+ )
336
+ }
337
+ )
338
+ }
339
+ ),
340
+ /* @__PURE__ */ t(
341
+ z,
342
+ {
343
+ label: e.favoriteChat ? "Remove from favorites" : "Add to favorites",
344
+ placement: "top",
345
+ trigger: /* @__PURE__ */ t(
346
+ U,
347
+ {
348
+ noBorder: !0,
349
+ label: e.favoriteChat ? "Remove from favorites" : "Add to favorites",
350
+ variant: "primary",
351
+ onClick: async () => {
352
+ await i(e);
353
+ },
354
+ children: e.favoriteChat ? /* @__PURE__ */ t(ce, { size: "size-4", monotone: !0 }) : /* @__PURE__ */ t(ie, { size: "size-4", monotone: !0 })
355
+ }
356
+ )
357
+ }
358
+ ),
359
+ /* @__PURE__ */ t(
360
+ te,
361
+ {
362
+ label: "Delete chat",
363
+ disabled: !1,
364
+ onClick: () => {
365
+ l(e);
366
+ }
367
+ }
368
+ )
369
+ ] }) });
370
+ return /* @__PURE__ */ g(q, { active: x, children: [
371
+ /* @__PURE__ */ t(d, { className: I(L.rowNumber), children: r + 1 }),
372
+ f ? /* @__PURE__ */ g(E, { children: [
373
+ u,
374
+ s,
375
+ N
376
+ ] }) : /* @__PURE__ */ g(E, { children: [
377
+ s,
378
+ u
379
+ ] }),
380
+ a
381
+ ] });
382
+ }
383
+ const Ae = ({
384
+ filteredHistory: e,
385
+ sortDirection: r,
386
+ sortedCell: o,
387
+ onSortChange: l,
388
+ onClickRestore: i,
389
+ onClickDelete: f,
390
+ onClickFavorite: x,
391
+ isLoading: b = !1,
392
+ totalHistoryCount: c,
393
+ isFiltered: y = !1,
394
+ isSearchActive: p = !1,
395
+ activeChatId: u
396
+ }) => {
397
+ const s = Z(), N = D(null), a = D(!1);
398
+ v(() => {
399
+ if (!u || a.current)
400
+ return;
401
+ const h = e.findIndex(
402
+ (w) => w.id === u
403
+ );
404
+ if (h !== -1) {
405
+ a.current = !0;
406
+ const w = setTimeout(() => {
407
+ N.current?.scrollToIndex(h);
408
+ }, 100);
409
+ return () => clearTimeout(w);
410
+ }
411
+ }, [u, e]), v(() => {
412
+ a.current = !1;
413
+ }, [u]);
414
+ const T = ve(
415
+ e.length,
416
+ c ?? e.length,
417
+ y
418
+ );
419
+ return /* @__PURE__ */ g(
420
+ re,
421
+ {
422
+ stickyHeader: !0,
423
+ stickyFooter: !0,
424
+ compact: !0,
425
+ mode: "alt-system",
426
+ blurEffect: "medium",
427
+ columns: s ? ["auto", "auto", "1fr", "0.4fr"] : [
428
+ "auto",
429
+ "minmax(10px, 1fr)",
430
+ "0.3fr",
431
+ "0.3fr",
432
+ "0.3fr"
433
+ ],
434
+ wrapperClassName: I(
435
+ "max-h-[clamp(12rem,calc(100dvh-24rem),60dvh)]",
436
+ "sm:max-h-[clamp(12rem,calc(100dvh-24rem),60dvh)]"
437
+ ),
438
+ loading: b && e.length > 0,
439
+ children: [
440
+ /* @__PURE__ */ t(
441
+ we,
442
+ {
443
+ sortDirection: r,
444
+ sortedCell: o,
445
+ onSortChange: l,
446
+ caption: T,
447
+ isSearchActive: p,
448
+ showTokenUsage: !s
449
+ }
450
+ ),
451
+ b && e.length === 0 ? /* @__PURE__ */ t("div", { className: "p-4 text-center", role: "status", "aria-live": "polite", children: "Loading..." }) : /* @__PURE__ */ t(
452
+ ye,
453
+ {
454
+ ref: N,
455
+ data: e.filter((h) => h?.summary),
456
+ batchSize: fe,
457
+ threshold: de,
458
+ children: (h, w) => /* @__PURE__ */ t(
459
+ Te,
460
+ {
461
+ item: h,
462
+ index: w,
463
+ onClickRestore: i,
464
+ onClickDelete: f,
465
+ onClickFavorite: x,
466
+ showTokenUsage: !s,
467
+ isActive: u === h.id
468
+ },
469
+ `${me.HISTORY.TITLE}-${h.id}-${w}`
470
+ )
471
+ }
472
+ )
473
+ ]
474
+ }
475
+ );
476
+ };
477
+ export {
478
+ Ae as HistoryDataGrid
479
+ };
@@ -1,13 +1,13 @@
1
1
  import { jsxs as i, jsx as a, Fragment as z } from "react/jsx-runtime";
2
- import { n as q, LOCAL_STORAGE_PREFIX as d, LOCAL_STORAGE_SORT_TIMESTAMP as X, LOCAL_STORAGE_SORT_TOKEN_USAGE as J, LOCAL_STORAGE_SORT as Z, y as x, LOCAL_STORAGE_CHAT_ID as $, useDeleteChat as ee, useToggleFavoriteChat as te, graphQLRequest as ae, SERVICE_TYPES as re, ACTION_SORT as se, V as oe, LOCAL_STORAGE_SEARCH as ie, LOCAL_STORAGE_FAVORITES_ONLY as ne, LOCAL_STORAGE_KEYWORD_MATCH_ALL as le, useChatsHistory as ce, useUserChatStats as de, ACTION_SEARCH as he } from "./index.o4ZD5ALX.js";
3
- import { InlineFilter as Ce, AnimatedWrapper as ue } from "./InlineFilter.Cv_LUpTp.js";
4
- import { HistoryContext as Q, ChatContext as me, SortDirections as c, APP_CLASSNAME as Se, TOAST_CHAT_DELETED as ye, HISTORY_TITLE as fe } from "./LogoEntry.CN5P16eA.js";
5
- import { useAiChat as Te, useLocalStorage as h, LazyToastContainerWrapper as pe, v4 as Ae, CHAT_RESET as ge, CHAT_SET_ATTACHMENTS as De, CHAT_SET_STATUS as _e, showErrorToast as Ee, ConfirmationPanel as Oe, Panel as ke, debounce as Le, Toggle as B, ButtonCancel as Re } from "./App.Bcw00dJK.js";
2
+ import { n as q, LOCAL_STORAGE_PREFIX as d, LOCAL_STORAGE_SORT_TIMESTAMP as X, LOCAL_STORAGE_SORT_TOKEN_USAGE as J, LOCAL_STORAGE_SORT as Z, y as x, LOCAL_STORAGE_CHAT_ID as $, useDeleteChat as ee, useToggleFavoriteChat as te, graphQLRequest as ae, SERVICE_TYPES as re, ACTION_SORT as se, V as oe, LOCAL_STORAGE_SEARCH as ie, LOCAL_STORAGE_FAVORITES_ONLY as ne, LOCAL_STORAGE_KEYWORD_MATCH_ALL as le, useChatsHistory as ce, useUserChatStats as de, ACTION_SEARCH as he } from "./index.C-7h2KOd.js";
3
+ import { InlineFilter as Ce, AnimatedWrapper as ue } from "./InlineFilter.BC6p53ao.js";
4
+ import { HistoryContext as Q, ChatContext as me, SortDirections as c, APP_CLASSNAME as Se, TOAST_CHAT_DELETED as ye, HISTORY_TITLE as fe } from "./LogoEntry.BX2BbPnz.js";
5
+ import { useAiChat as Te, useLocalStorage as h, LazyToastContainerWrapper as pe, v4 as Ae, CHAT_RESET as ge, CHAT_SET_ATTACHMENTS as De, CHAT_SET_STATUS as _e, showErrorToast as Ee, ConfirmationPanel as Oe, Panel as ke, debounce as Le, Toggle as B, ButtonCancel as Re } from "./App.Dx0i7v1f.js";
6
6
  import { useRef as K, useContext as Y, Suspense as ve, lazy as we, useState as I, useCallback as W, useEffect as He } from "react";
7
7
  const be = we(
8
8
  () => import(
9
9
  /* webpackChunkName: "history-datagrid" */
10
- "./HistoryDataGrid.Bg984Jd_.js"
10
+ "./HistoryDataGrid.EVORyJf2.js"
11
11
  ).then(
12
12
  (C) => ({ default: C.HistoryDataGrid })
13
13
  )
@@ -1,8 +1,8 @@
1
1
  import { jsx as s, jsxs as g } from "react/jsx-runtime";
2
2
  import { useRef as m, useState as A, useLayoutEffect as x } from "react";
3
- import { IconSearch as N, Button as b } from "./LogoEntry.CN5P16eA.js";
4
- import { Card as S } from "./index.tqKeN7sl.js";
5
- import { TextInput as v } from "./index.CZRaE0eA.js";
3
+ import { IconSearch as N, Button as b } from "./LogoEntry.BX2BbPnz.js";
4
+ import { Card as S } from "./index.Dx1p6vnB.js";
5
+ import { TextInput as v } from "./index.CFO0VGN_.js";
6
6
  const F = 300;
7
7
  function H(e, c) {
8
8
  const { duration: n = F, enabled: i = !0 } = c ?? {}, r = m(null), [t, a] = A({
@@ -1,8 +1,8 @@
1
1
  import { jsxs as i, jsx as e, Fragment as x } from "react/jsx-runtime";
2
- import { n as N, getLayoutPaddingClass as C, getMessageContaintWrapperClass as v, isTauri as w } from "./index.o4ZD5ALX.js";
3
- import { Logo as k, PASSWORD_PLACEHOLDER as M, ButtonIcon as u, IconShow as I, IconHide as L, Button as y, LOG_IN as E, LOG_IN_PASSKEY as S, IconPasskey as P } from "./LogoEntry.CN5P16eA.js";
4
- import { Card as B } from "./index.tqKeN7sl.js";
5
- import { TextInput as O, TextInputMask as T } from "./index.CZRaE0eA.js";
2
+ import { n as N, getLayoutPaddingClass as C, getMessageContaintWrapperClass as v, isTauri as w } from "./index.C-7h2KOd.js";
3
+ import { Logo as k, PASSWORD_PLACEHOLDER as M, ButtonIcon as u, IconShow as I, IconHide as L, Button as y, LOG_IN as E, LOG_IN_PASSKEY as S, IconPasskey as P } from "./LogoEntry.BX2BbPnz.js";
4
+ import { Card as B } from "./index.Dx1p6vnB.js";
5
+ import { TextInput as O, TextInputMask as T } from "./index.CFO0VGN_.js";
6
6
  import { useState as r, useEffect as f } from "react";
7
7
  const G = () => {
8
8
  const { login: h, logoutReason: o, loginWithPasskey: g } = N(), [t, l] = r(""), [d, n] = r(""), [m, p] = r(!0), [s, c] = r({
@@ -1,7 +1,7 @@
1
1
  import B, { useRef as M, useEffect as z, useCallback as Q, useState as i1, useMemo as G, useContext as n1, useId as l1, useLayoutEffect as J } from "react";
2
2
  import { jsxs as n, jsx as r } from "react/jsx-runtime";
3
3
  import l from "clsx";
4
- import { B as h, e as h1, R as d1, E as u1 } from "./index.o4ZD5ALX.js";
4
+ import { B as h, e as h1, R as d1, E as u1 } from "./index.C-7h2KOd.js";
5
5
  const p1 = {
6
6
  ASC: "asc",
7
7
  DESC: "desc"
@@ -1378,7 +1378,7 @@ function T4({ children: t, disabled: e = !1, mode: c = "system", focusMode: s =
1378
1378
  ]
1379
1379
  });
1380
1380
  }
1381
- const X = ({ labelRef: t, labelClass: e, label: c, labelInnerClass: s, initiallyHidden: o = !1 }) => /* @__PURE__ */ r("span", {
1381
+ const X = ({ labelRef: t, labelClass: e, label: c, labelInnerClass: s, initiallyHidden: o = !1 }) => !c && !o ? null : /* @__PURE__ */ r("span", {
1382
1382
  ref: t,
1383
1383
  className: e,
1384
1384
  style: o ? {
@@ -1,11 +1,11 @@
1
1
  import { jsx as e, jsxs as n, Fragment as E } from "react/jsx-runtime";
2
- import { n as De, LOCAL_STORAGE_PREFIX as Y, LOCAL_STORAGE_SORT_MEMORY_DIRECTION as Se, LOCAL_STORAGE_SORT_MEMORY_COLUMN as we, useUserMemories as Te, useExpiredMemories as Ee, useDeleteMemory as Me, useDeleteAllActiveMemories as ke, useDeleteAllExpiredMemories as Re, useUpdateMemory as Le, useRestoreMemory as Ie } from "./index.o4ZD5ALX.js";
3
- import { Button as R, CellWrapper as Oe, SortDirections as N, ButtonIcon as F, IconEdit as Be, IconRestore as Pe, IconDelete as _e } from "./LogoEntry.CN5P16eA.js";
4
- import { InlineFilter as Fe, AnimatedWrapper as Ge } from "./InlineFilter.Cv_LUpTp.js";
5
- import { Panel as ie, Toggle as M, ButtonCancel as oe, ResponsiveTooltip as G, useLocalStorage as Q, debounce as ze, ConfirmationPanel as K } from "./App.Bcw00dJK.js";
2
+ import { n as De, LOCAL_STORAGE_PREFIX as Y, LOCAL_STORAGE_SORT_MEMORY_DIRECTION as Se, LOCAL_STORAGE_SORT_MEMORY_COLUMN as we, useUserMemories as Te, useExpiredMemories as Ee, useDeleteMemory as Me, useDeleteAllActiveMemories as ke, useDeleteAllExpiredMemories as Re, useUpdateMemory as Le, useRestoreMemory as Ie } from "./index.C-7h2KOd.js";
3
+ import { Button as R, CellWrapper as Oe, SortDirections as N, ButtonIcon as F, IconEdit as Be, IconRestore as Pe, IconDelete as _e } from "./LogoEntry.BX2BbPnz.js";
4
+ import { InlineFilter as Fe, AnimatedWrapper as Ge } from "./InlineFilter.BC6p53ao.js";
5
+ import { Panel as ie, Toggle as M, ButtonCancel as oe, ResponsiveTooltip as G, useLocalStorage as Q, debounce as ze, ConfirmationPanel as K } from "./App.Dx0i7v1f.js";
6
6
  import { useState as f, useEffect as qe, useContext as $e, useRef as S, useMemo as J, useCallback as je } from "react";
7
- import { TextArea as Ue } from "./index.CR0NHbVR.js";
8
- import { DataGridContext as Z, useColumnMeasurement as Ve, getBodyClass as He, DataGridHeader as We, DataGridRow as ne, DataGridCell as y, DataGridCellSort as ee, ButtonIconDelete as Xe, DataGrid as Ye } from "./ButtonIconDelete.CASHORv6.js";
7
+ import { TextArea as Ue } from "./index.BbXK13Js.js";
8
+ import { DataGridContext as Z, useColumnMeasurement as Ve, getBodyClass as He, DataGridHeader as We, DataGridRow as ne, DataGridCell as y, DataGridCellSort as ee, ButtonIconDelete as Xe, DataGrid as Ye } from "./ButtonIconDelete.D1XluRE7.js";
9
9
  import w from "clsx";
10
10
  const Qe = ({
11
11
  open: r,
@@ -1,9 +1,9 @@
1
1
  import { jsxs as t, jsx as e, Fragment as L } from "react/jsx-runtime";
2
- import { preloadToast as M, showSuccessToast as j, showErrorToast as D, LazyToastContainerWrapper as K, ConfirmationPanel as O, Panel as W, ButtonCancel as Y } from "./App.Bcw00dJK.js";
2
+ import { preloadToast as M, showSuccessToast as j, showErrorToast as D, LazyToastContainerWrapper as K, ConfirmationPanel as O, Panel as W, ButtonCancel as Y } from "./App.Dx0i7v1f.js";
3
3
  import { useState as d, useMemo as H, useCallback as b, useRef as $ } from "react";
4
- import { useUniqueId as q, CARDS as n, Button as G, ButtonIcon as V, IconPasskey as y, PROFILE_TITLE as J } from "./LogoEntry.CN5P16eA.js";
5
- import { n as Q, useUserPreferences as X, useServerCapabilities as Z, c as ee, setUserPlan as se, renderDataAsList as ae, st as re, isTauri as ne } from "./index.o4ZD5ALX.js";
6
- import { Card as S } from "./index.tqKeN7sl.js";
4
+ import { useUniqueId as q, CARDS as n, Button as G, ButtonIcon as V, IconPasskey as y, PROFILE_TITLE as J } from "./LogoEntry.BX2BbPnz.js";
5
+ import { n as Q, useUserPreferences as X, useServerCapabilities as Z, c as ee, setUserPlan as se, renderDataAsList as ae, st as re, isTauri as ne } from "./index.C-7h2KOd.js";
6
+ import { Card as S } from "./index.Dx1p6vnB.js";
7
7
  import te from "clsx";
8
8
  const ie = ({
9
9
  requestConfirmation: m
@@ -1,9 +1,9 @@
1
1
  import { jsx as t, jsxs as c } from "react/jsx-runtime";
2
- import { n as ke, useEntitlements as Pe, useUserPreferences as ve, F as ne, LOCAL_STORAGE_OLED_MODE as Be, LOCAL_STORAGE_FULL_SCREEN as xe, e as ae, canEvaluateModels as Ue, j as Ge, B as Ve, Z as le, applyOledMode as re, getCurrentGeoLocation as Fe, graphQLRequest as ce, SERVICE_TYPES as ie } from "./index.o4ZD5ALX.js";
3
- import { AppContext as $e, SETTINGS_TITLE as je, Button as de, CARDS as a, PROMPTS_DESCRIPTION as He, APP_SET_OLED_MODE as ue, APP_SET_FULL_SCREEN as me } from "./LogoEntry.CN5P16eA.js";
4
- import { Card as T } from "./index.tqKeN7sl.js";
5
- import { Toggle as M, useCapability as he, useLocalStorage as Ee, Panel as ze, ButtonCancel as Ye } from "./App.Bcw00dJK.js";
6
- import { TextArea as Se } from "./index.CR0NHbVR.js";
2
+ import { n as ke, useEntitlements as Pe, useUserPreferences as ve, F as ne, LOCAL_STORAGE_OLED_MODE as Be, LOCAL_STORAGE_FULL_SCREEN as xe, e as ae, canEvaluateModels as Ue, j as Ge, B as Ve, Z as le, applyOledMode as re, getCurrentGeoLocation as Fe, graphQLRequest as ce, SERVICE_TYPES as ie } from "./index.C-7h2KOd.js";
3
+ import { AppContext as $e, SETTINGS_TITLE as je, Button as de, CARDS as a, PROMPTS_DESCRIPTION as He, APP_SET_OLED_MODE as ue, APP_SET_FULL_SCREEN as me } from "./LogoEntry.BX2BbPnz.js";
4
+ import { Card as T } from "./index.Dx1p6vnB.js";
5
+ import { Toggle as M, useCapability as he, useLocalStorage as Ee, Panel as ze, ButtonCancel as Ye } from "./App.Dx0i7v1f.js";
6
+ import { TextArea as Se } from "./index.BbXK13Js.js";
7
7
  import { useRef as We, useContext as qe, useState as s, useMemo as Ke, useEffect as Qe } from "react";
8
8
  const r = ({
9
9
  label: L,
@@ -1,8 +1,8 @@
1
1
  import { jsxs as c, jsx as t } from "react/jsx-runtime";
2
- import { n as W, useUserChatStats as q, LOCAL_STORAGE_PREFIX as C, LOCAL_STORAGE_USAGE_VIEW_MODE as X, LOCAL_STORAGE_USAGE_TIME_RANGE as Z, LOCAL_STORAGE_USAGE_SELECTED_MONTH as J, useChatsUsage as Q, renderDataAsList as $ } from "./index.o4ZD5ALX.js";
3
- import { useUniqueId as ee, TIME_RANGES as e, USAGE_TITLE as te, CARDS as d, TIME_RANGE_LABELS as R, MONTHS as _, ButtonIcon as u, IconChart as re, IconSelected as L, IconUnSelected as v, IconPrevious as se, IconNext as le } from "./LogoEntry.CN5P16eA.js";
4
- import { Card as Y } from "./index.tqKeN7sl.js";
5
- import { useLocalStorage as N, Panel as ae, DropdownMenu as ne, DropdownMenuGroupLabel as oe, DropdownMenuItem as k, DropdownMenuSub as ie, ButtonCancel as ce, pluralize as f } from "./App.Bcw00dJK.js";
2
+ import { n as W, useUserChatStats as q, LOCAL_STORAGE_PREFIX as C, LOCAL_STORAGE_USAGE_VIEW_MODE as X, LOCAL_STORAGE_USAGE_TIME_RANGE as Z, LOCAL_STORAGE_USAGE_SELECTED_MONTH as J, useChatsUsage as Q, renderDataAsList as $ } from "./index.C-7h2KOd.js";
3
+ import { useUniqueId as ee, TIME_RANGES as e, USAGE_TITLE as te, CARDS as d, TIME_RANGE_LABELS as R, MONTHS as _, ButtonIcon as u, IconChart as re, IconSelected as L, IconUnSelected as v, IconPrevious as se, IconNext as le } from "./LogoEntry.BX2BbPnz.js";
4
+ import { Card as Y } from "./index.Dx1p6vnB.js";
5
+ import { useLocalStorage as N, Panel as ae, DropdownMenu as ne, DropdownMenuGroupLabel as oe, DropdownMenuItem as k, DropdownMenuSub as ie, ButtonCancel as ce, pluralize as f } from "./App.Dx0i7v1f.js";
6
6
  import { useRef as de, useState as z, Suspense as ue, lazy as Te } from "react";
7
7
  const n = [0, 3, 6, 9], a = {
8
8
  TOKEN: "token",
@@ -16,7 +16,7 @@ const n = [0, 3, 6, 9], a = {
16
16
  ], me = Te(
17
17
  () => import(
18
18
  /* webpackChunkName: "chart-highcharts" */
19
- "./Chart.B0oqrdYo.js"
19
+ "./Chart.ClEQYypc.js"
20
20
  )
21
21
  ), _e = ({
22
22
  open: P,