@declarion/react 0.44.0 → 0.47.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 (40) hide show
  1. package/dist-lib/{DraggableChildrenTable-G4Sw1XAD.js → DraggableChildrenTable-B6KjWkwD.js} +39 -39
  2. package/dist-lib/{DynamicIcon-DeRpAaXm.js → DynamicIcon-Dc2j-rg_.js} +19 -17
  3. package/dist-lib/{Grid-CXn-IK3H.js → Grid-OdquWJNX.js} +2 -2
  4. package/dist-lib/{LayoutRenderer-DX8pFS5A.js → LayoutRenderer-CzAdhjNT.js} +794 -787
  5. package/dist-lib/{MarkdownRenderer-CreI9x2m.js → MarkdownRenderer-C6bhrAIe.js} +10 -10
  6. package/dist-lib/{RefreshControl-DFh0-gCb.js → RefreshControl-F9Ib9asP.js} +179 -179
  7. package/dist-lib/{SmartDetailPage.impl-K6Jj1-9z.js → SmartDetailPage.impl-DdSu3kmW.js} +631 -593
  8. package/dist-lib/{SmartRecordListPage.impl-DQW_uVfL.js → SmartRecordListPage.impl-SkIp0_Rd.js} +220 -209
  9. package/dist-lib/api/agents.d.ts +39 -7
  10. package/dist-lib/components/agents/AgentChatPanel.d.ts +6 -1
  11. package/dist-lib/components/agents/transcript-runs.d.ts +29 -0
  12. package/dist-lib/components/file-widgets/host.d.ts +1 -0
  13. package/dist-lib/components/list/QuickPeek.d.ts +1 -1
  14. package/dist-lib/components/pages/exportRequest.d.ts +3 -3
  15. package/dist-lib/components/pages/list/ListFloatbar.d.ts +4 -2
  16. package/dist-lib/components/pages/list/cardProjection.d.ts +2 -1
  17. package/dist-lib/components/pages/list/filter-meta.d.ts +22 -8
  18. package/dist-lib/components/shared/RowActionsKebab.d.ts +3 -2
  19. package/dist-lib/components/views/ViewSwitcher.d.ts +2 -1
  20. package/dist-lib/hooks/useAgentConversation.d.ts +7 -19
  21. package/dist-lib/hooks/useCursorEntityData.d.ts +3 -2
  22. package/dist-lib/hooks/useFilters.d.ts +1 -0
  23. package/dist-lib/icons.js +1 -1
  24. package/dist-lib/index.d.ts +8 -1
  25. package/dist-lib/index.js +3246 -2984
  26. package/dist-lib/lib/actions.d.ts +1 -1
  27. package/dist-lib/lib/anchor.d.ts +37 -0
  28. package/dist-lib/lib/filter-evaluator.d.ts +16 -0
  29. package/dist-lib/lib/filters.d.ts +10 -4
  30. package/dist-lib/lib/messages.d.ts +1 -0
  31. package/dist-lib/lib/variants.d.ts +7 -0
  32. package/dist-lib/{registry-r4hiflwC.js → registry-C2VD-5MD.js} +1103 -879
  33. package/dist-lib/testing.js +10 -10
  34. package/dist-lib/types/api.d.ts +3 -10
  35. package/dist-lib/types/schema.d.ts +51 -13
  36. package/dist-lib/{useCurrentScreen-CpQjVmrT.js → useCurrentScreen-ow4r-nWa.js} +1130 -1054
  37. package/dist-lib/{useProperties-CULxrNT4.js → useProperties-lEKfzm2X.js} +114 -83
  38. package/dist-lib/{value-fUHxMV4r.js → value-CXohNH6a.js} +1 -1
  39. package/dist-lib/vite/index.js +23 -22
  40. package/package.json +12 -12
@@ -1,5 +1,5 @@
1
- import { Gt as e, In as t, Kt as n, bt as r, pn as i, pt as a, rt as o, wn as s } from "./useCurrentScreen-CpQjVmrT.js";
2
- import { ut as c } from "./registry-r4hiflwC.js";
1
+ import { Gt as e, Kt as t, Ln as n, Tn as r, bt as i, pn as a, pt as o, rt as s } from "./useCurrentScreen-ow4r-nWa.js";
2
+ import { _t as c } from "./registry-C2VD-5MD.js";
3
3
  import { useEffect as l, useLayoutEffect as u, useMemo as d } from "react";
4
4
  import { useSearchParams as f } from "react-router";
5
5
  import { useInfiniteQuery as p, useMutation as m, useQueryClient as h } from "@tanstack/react-query";
@@ -54,11 +54,11 @@ var x = class {
54
54
  let n, r = !1;
55
55
  try {
56
56
  n = await e(b(this.entity, t));
57
- } catch (a) {
58
- if (t.after && i(a)) {
57
+ } catch (i) {
58
+ if (t.after && a(i)) {
59
59
  let { after: i, ...a } = t;
60
60
  n = await e(b(this.entity, a)), r = !0;
61
- } else throw a;
61
+ } else throw i;
62
62
  }
63
63
  return this.refs.merge(n.$refs), {
64
64
  data: n.data.map((e) => v(e)),
@@ -72,17 +72,17 @@ var x = class {
72
72
  }
73
73
  async createMany(e) {
74
74
  if (e.length === 0) return [];
75
- let t = await n("system.batch", {
76
- actions: e.map((e) => ({
77
- action: `${this.entity}.__create`,
78
- params: {
79
- entity: this.entity,
80
- fields: e
81
- }
82
- })),
75
+ let n = e.map((e) => ({
76
+ action: `${this.entity}.__create`,
77
+ params: {
78
+ entity: this.entity,
79
+ fields: e
80
+ }
81
+ })), r = await t("system.batch", {
82
+ actions: n,
83
83
  atomic: !0
84
84
  });
85
- return S(t, `${this.entity}.__create`), t.results.map((e) => v(C(e)));
85
+ return S(r, `${this.entity}.__create`), r.results.map((e) => v(C(e)));
86
86
  }
87
87
  async update(e, t) {
88
88
  return (await this.updateMany([{
@@ -92,24 +92,24 @@ var x = class {
92
92
  }
93
93
  async updateMany(e) {
94
94
  if (e.length === 0) return [];
95
- let t = await n("system.batch", {
96
- actions: e.map(({ id: e, ...t }) => ({
97
- action: `${this.entity}.__update`,
98
- params: {
99
- object_ids: [e],
100
- entity: this.entity,
101
- fields: t
102
- }
103
- })),
95
+ let n = e.map(({ id: e, ...t }) => ({
96
+ action: `${this.entity}.__update`,
97
+ params: {
98
+ object_ids: [e],
99
+ entity: this.entity,
100
+ fields: t
101
+ }
102
+ })), r = await t("system.batch", {
103
+ actions: n,
104
104
  atomic: !0
105
105
  });
106
- return S(t, `${this.entity}.__update`), t.results.map((e) => v(C(e)));
106
+ return S(r, `${this.entity}.__update`), r.results.map((e) => v(C(e)));
107
107
  }
108
108
  async delete(e) {
109
109
  await this.deleteMany([e]);
110
110
  }
111
111
  async deleteMany(e) {
112
- return e.length === 0 ? { count: 0 } : { count: (await r(`${this.entity}.__delete`, {
112
+ return e.length === 0 ? { count: 0 } : { count: (await i(`${this.entity}.__delete`, {
113
113
  object_ids: e,
114
114
  entity: this.entity
115
115
  })).object_count ?? e.length };
@@ -118,7 +118,7 @@ var x = class {
118
118
  await this.restoreMany([e]);
119
119
  }
120
120
  async restoreMany(e) {
121
- return e.length === 0 ? { count: 0 } : { count: (await r(`${this.entity}.__restore`, {
121
+ return e.length === 0 ? { count: 0 } : { count: (await i(`${this.entity}.__restore`, {
122
122
  object_ids: e,
123
123
  entity: this.entity
124
124
  })).object_count ?? e.length };
@@ -126,20 +126,20 @@ var x = class {
126
126
  async upsert(e, t) {
127
127
  return (await this.upsertMany([e], t))[0];
128
128
  }
129
- async upsertMany(e, t) {
129
+ async upsertMany(e, n) {
130
130
  if (e.length === 0) return [];
131
- let r = await n("system.batch", {
132
- actions: e.map((e) => ({
133
- action: `${this.entity}.__upsert`,
134
- params: {
135
- entity: this.entity,
136
- fields: e,
137
- unique_by: t
138
- }
139
- })),
131
+ let r = e.map((e) => ({
132
+ action: `${this.entity}.__upsert`,
133
+ params: {
134
+ entity: this.entity,
135
+ fields: e,
136
+ unique_by: n
137
+ }
138
+ })), i = await t("system.batch", {
139
+ actions: r,
140
140
  atomic: !0
141
141
  });
142
- return S(r, `${this.entity}.__upsert`), r.results.map((e) => v(w(e)));
142
+ return S(i, `${this.entity}.__upsert`), i.results.map((e) => v(w(e)));
143
143
  }
144
144
  };
145
145
  function S(e, t) {
@@ -233,7 +233,7 @@ function k(e, t, n) {
233
233
  //#endregion
234
234
  //#region src/hooks/useTabSearchMirror.ts
235
235
  function A(e) {
236
- let t = a(), [n] = f();
236
+ let t = o(), [n] = f();
237
237
  u(() => {
238
238
  if (!e || t.enabled) return;
239
239
  let r = c.getState(), i = r.findTabByPathname(e);
@@ -247,7 +247,7 @@ function A(e) {
247
247
  //#endregion
248
248
  //#region src/hooks/useRegisterScreenTab.ts
249
249
  function j(e, t, n, r) {
250
- let i = a();
250
+ let i = o();
251
251
  l(() => {
252
252
  !e || i.enabled || c.getState().openTab({
253
253
  pathname: e,
@@ -264,8 +264,8 @@ function j(e, t, n, r) {
264
264
  ]);
265
265
  }
266
266
  function M(e, t, n) {
267
- let r = e?.route, i = t ? s(e?.display?.name) || s(t.display.name_plural) : "", a = e?.display?.icon || t?.display.icon;
268
- j(t ? r : void 0, i, a, n);
267
+ let i = e?.route, a = t ? r(e?.display?.name) || r(t.display.name_plural) : "", o = e?.display?.icon || t?.display.icon;
268
+ j(t ? i : void 0, a, o, n);
269
269
  }
270
270
  //#endregion
271
271
  //#region src/lib/filters.ts
@@ -303,56 +303,73 @@ var N = /* @__PURE__ */ new Set([
303
303
  };
304
304
  function I(e) {
305
305
  let t = e.get("filters");
306
- if (!t) return [];
306
+ if (t == null || t === "") return {
307
+ filters: [],
308
+ error: null
309
+ };
307
310
  try {
308
- let e = JSON.parse(t);
309
- return Array.isArray(e) ? e.filter((e) => typeof e == "object" && !!e) : [];
311
+ return {
312
+ filters: L(e),
313
+ error: null
314
+ };
315
+ } catch (e) {
316
+ return {
317
+ filters: [],
318
+ error: e instanceof Error ? e.message : "The filters URL value is invalid."
319
+ };
320
+ }
321
+ }
322
+ function L(e) {
323
+ let t = e.get("filters");
324
+ if (t == null || t === "") return [];
325
+ let n;
326
+ try {
327
+ n = JSON.parse(t);
310
328
  } catch {
311
- return [];
329
+ throw Error("The filters URL value is not valid JSON.");
312
330
  }
331
+ if (!Array.isArray(n) || !n.every(G)) throw Error("The filters URL value is not a valid filter tree.");
332
+ return n;
313
333
  }
314
- function L(e, t) {
334
+ function R(e, t) {
315
335
  e.length === 0 ? t.delete("filters") : t.set("filters", JSON.stringify(e));
316
336
  }
317
- function R(e) {
318
- return e.some((e) => e.or != null);
319
- }
320
337
  function z(e) {
338
+ return e.some((e) => !e || typeof e != "object" ? !1 : e.or != null || e.and != null && z(e.and));
339
+ }
340
+ function B(e) {
321
341
  let t = [];
322
- for (let n of e) if (!(!n || typeof n != "object")) {
323
- if (n.field && n.op && t.push(n), n.or) for (let e of n.or) t.push(...z(e));
324
- n.and && t.push(...z(n.and));
325
- }
342
+ for (let n of e) !n || typeof n != "object" || (n.field && n.op && t.push(n), n.or && t.push(...B(n.or)), n.and && t.push(...B(n.and)));
326
343
  return t;
327
344
  }
328
- function B(e) {
329
- return z(e).length;
345
+ function V(e) {
346
+ return B(e).length;
330
347
  }
331
- function V(e, n) {
348
+ function H(e, t) {
332
349
  if (!e.field || !e.op) return "";
333
350
  let r = F[e.op] || e.op;
334
351
  if (N.has(e.op)) return `${r}`;
335
352
  let i = e.field, a = (e) => {
336
- if (n) {
337
- let t = n(i, e);
338
- return t.label != null && (t.status === "special" || t.status === "resolved") ? t.label : t.raw;
353
+ if (t) {
354
+ let n = t(i, e);
355
+ return n.label != null && (n.status === "special" || n.status === "resolved") ? n.label : n.raw;
339
356
  }
340
- return t(e);
357
+ return n(e);
341
358
  };
342
359
  return `${r} ${Array.isArray(e.value) ? e.value.map(a).join(", ") : a(e.value)}`;
343
360
  }
344
- function H(e, t) {
361
+ function U(e, t) {
345
362
  return {
346
363
  field: e,
347
364
  op: "eq",
348
365
  value: t
349
366
  };
350
367
  }
351
- function U(e, t) {
368
+ function W(e, t) {
352
369
  let n = [];
353
- for (let r of e) if (r.field !== t) {
370
+ for (let r of e) if (!(!r || typeof r != "object") && r.field !== t) {
354
371
  if (r.or) {
355
- let e = r.or.map((e) => U(e, t)).filter((e) => e.length > 0);
372
+ let e = W(r.or, t);
356
373
  e.length > 0 && n.push({
357
374
  ...r,
358
375
  or: e
@@ -360,7 +377,7 @@ function U(e, t) {
360
377
  continue;
361
378
  }
362
379
  if (r.and) {
363
- let e = U(r.and, t);
380
+ let e = W(r.and, t);
364
381
  e.length > 0 && n.push({
365
382
  ...r,
366
383
  and: e
@@ -371,15 +388,29 @@ function U(e, t) {
371
388
  }
372
389
  return n;
373
390
  }
391
+ function G(e) {
392
+ if (typeof e != "object" || !e || Array.isArray(e)) return !1;
393
+ let t = e, n = Object.prototype.hasOwnProperty.call(t, "field"), r = Object.prototype.hasOwnProperty.call(t, "op"), i = Object.prototype.hasOwnProperty.call(t, "value"), a = Object.prototype.hasOwnProperty.call(t, "or"), o = Object.prototype.hasOwnProperty.call(t, "and");
394
+ if (a && o) return !1;
395
+ if (a || o) {
396
+ if (n || r || i) return !1;
397
+ let e = a ? t.or : t.and;
398
+ return Array.isArray(e) && e.length > 0 && e.every(G);
399
+ }
400
+ if (!(n && r && typeof t.field == "string" && t.field.length > 0 && typeof t.op == "string" && K.has(t.op))) return !1;
401
+ let s = t.op;
402
+ return N.has(s) ? !i || t.value === null : i && t.value !== null;
403
+ }
404
+ var K = new Set(Object.keys(F));
374
405
  //#endregion
375
406
  //#region src/api/status.ts
376
- async function W(e, t, n, i, a) {
407
+ async function q(e, t, n, r, a) {
377
408
  let o = {
378
409
  status_group_code: n,
379
- status_code: i
410
+ status_code: r
380
411
  };
381
412
  a != null && (o.note = a);
382
- let s = (await r(`${e}.__update`, {
413
+ let s = (await i(`${e}.__update`, {
383
414
  object_ids: [t],
384
415
  entity: e,
385
416
  fields: { $statuses: [o] }
@@ -388,33 +419,33 @@ async function W(e, t, n, i, a) {
388
419
  }
389
420
  //#endregion
390
421
  //#region src/hooks/useObjectStatus.ts
391
- function G(e, t) {
422
+ function J(e, t) {
392
423
  let n = h();
393
424
  return m({
394
- mutationFn: ({ groupCode: n, statusCode: r, note: i }) => W(e, t, n, r, i),
425
+ mutationFn: ({ groupCode: n, statusCode: r, note: i }) => q(e, t, n, r, i),
395
426
  onSuccess: () => {
396
427
  n.invalidateQueries({ queryKey: ["entity-item", e] });
397
428
  },
398
429
  onError: (e) => {
399
- o.error(e.message);
430
+ s.error(e.message);
400
431
  }
401
432
  });
402
433
  }
403
434
  //#endregion
404
435
  //#region src/api/properties.ts
405
- async function K(e, t, n, i) {
406
- let a = (await r(`${e}.__update`, {
436
+ async function Y(e, t, n, r) {
437
+ let a = (await i(`${e}.__update`, {
407
438
  object_ids: [t],
408
439
  entity: e,
409
440
  fields: { $properties: [{
410
441
  property_code: n,
411
- value: i
442
+ value: r
412
443
  }] }
413
444
  })).result?.rows?.[0]?.$properties ?? [];
414
445
  return a.find((e) => e.property_code === n) ?? a[0];
415
446
  }
416
- async function q(e, t, n) {
417
- await r(`${e}.__update`, {
447
+ async function X(e, t, n) {
448
+ await i(`${e}.__update`, {
418
449
  object_ids: [t],
419
450
  entity: e,
420
451
  fields: { $properties: [{
@@ -425,29 +456,29 @@ async function q(e, t, n) {
425
456
  }
426
457
  //#endregion
427
458
  //#region src/hooks/useProperties.ts
428
- function J(e, t) {
459
+ function Z(e, t) {
429
460
  let n = h();
430
461
  return m({
431
- mutationFn: ({ propertyCode: n, value: r }) => K(e, t, n, r),
462
+ mutationFn: ({ propertyCode: n, value: r }) => Y(e, t, n, r),
432
463
  onSuccess: () => {
433
464
  n.invalidateQueries({ queryKey: ["entity-item", e] });
434
465
  },
435
466
  onError: (e) => {
436
- o.error(e.message);
467
+ s.error(e.message);
437
468
  }
438
469
  });
439
470
  }
440
- function Y(e, t) {
471
+ function Q(e, t) {
441
472
  let n = h();
442
473
  return m({
443
- mutationFn: (n) => q(e, t, n),
474
+ mutationFn: (n) => X(e, t, n),
444
475
  onSuccess: () => {
445
476
  n.invalidateQueries({ queryKey: ["entity-item", e] });
446
477
  },
447
478
  onError: (e) => {
448
- o.error(e.message);
479
+ s.error(e.message);
449
480
  }
450
481
  });
451
482
  }
452
483
  //#endregion
453
- export { y as C, x as S, A as _, N as a, D as b, H as c, R as d, I as f, j as g, M as h, P as i, z as l, L as m, J as n, F as o, U as p, G as r, B as s, Y as t, V as u, E as v, T as w, k as x, O as y };
484
+ export { x as C, k as S, T, j as _, N as a, O as b, U as c, z as d, I as f, M as g, R as h, P as i, B as l, W as m, Z as n, F as o, L as p, J as r, V as s, Q as t, H as u, A as v, y as w, D as x, E as y };
@@ -1,4 +1,4 @@
1
- import { $t as e, en as t, rn as n } from "./useCurrentScreen-CpQjVmrT.js";
1
+ import { $t as e, en as t, rn as n } from "./useCurrentScreen-ow4r-nWa.js";
2
2
  import { useCallback as r, useEffect as i, useRef as a, useState as o } from "react";
3
3
  //#region src/embed/file-src.ts
4
4
  var s = "/api/files";
@@ -1,44 +1,45 @@
1
1
  import { createHash as e } from "node:crypto";
2
- import { readFileSync as t, readdirSync as n, statSync as r, writeFileSync as i } from "node:fs";
3
- import { join as a } from "node:path";
2
+ import { mkdirSync as t, readFileSync as n, readdirSync as r, statSync as i, writeFileSync as a } from "node:fs";
3
+ import { join as o } from "node:path";
4
4
  //#region src/vite/fingerprint-plugin.ts
5
- function o(n = {}) {
6
- let r = n.filename ?? "bundle-fingerprint.txt";
5
+ function s(r = {}) {
6
+ let i = r.filename ?? "bundle-fingerprint.txt";
7
7
  return {
8
8
  name: "declarion-fingerprint",
9
9
  apply: "build",
10
- closeBundle: {
10
+ writeBundle: {
11
+ order: "post",
11
12
  sequential: !0,
12
13
  handler() {
13
- let o = this.environment.config, c = o.build.outDir, l = a(c, n.assetsDir ?? o.build.assetsDir ?? "assets"), u = s(l);
14
- u.sort();
15
- let d = e("sha256");
16
- for (let n of u) {
17
- let r = a(l, n), i = e("sha256").update(t(r)).digest("hex");
18
- d.update(`${n.length}:${n}\n`), d.update(`${i.length}:${i}\n`);
14
+ let s = this.environment.config, l = s.build.outDir, u = r.assetsDir ?? s.build.assetsDir ?? "assets", d = o(l, u), f = c(d);
15
+ f.sort();
16
+ let p = e("sha256");
17
+ for (let t of f) {
18
+ let r = o(d, t), i = e("sha256").update(n(r)).digest("hex");
19
+ p.update(`${t.length}:${t}\n`), p.update(`${i.length}:${i}\n`);
19
20
  }
20
- let f = d.digest("hex");
21
- i(a(c, r), f + "\n", "utf8");
21
+ let m = p.digest("hex");
22
+ t(l, { recursive: !0 }), a(o(l, i), m + "\n", "utf8");
22
23
  }
23
24
  }
24
25
  };
25
26
  }
26
- function s(e) {
27
- let t = [], i = [{
27
+ function c(e) {
28
+ let t = [], n = [{
28
29
  abs: e,
29
30
  rel: ""
30
31
  }];
31
- for (; i.length > 0;) {
32
- let { abs: e, rel: o } = i.pop(), s;
32
+ for (; n.length > 0;) {
33
+ let { abs: e, rel: a } = n.pop(), s;
33
34
  try {
34
- s = n(e);
35
+ s = r(e);
35
36
  } catch (e) {
36
37
  if (e && typeof e == "object" && "code" in e && e.code === "ENOENT") return [];
37
38
  throw e;
38
39
  }
39
- for (let n of s) {
40
- let s = a(e, n), c = o ? `${o}/${n}` : n;
41
- r(s).isDirectory() ? i.push({
40
+ for (let r of s) {
41
+ let s = o(e, r), c = a ? `${a}/${r}` : r;
42
+ i(s).isDirectory() ? n.push({
42
43
  abs: s,
43
44
  rel: c
44
45
  }) : t.push(c);
@@ -47,4 +48,4 @@ function s(e) {
47
48
  return t;
48
49
  }
49
50
  //#endregion
50
- export { o as declarionFingerprintPlugin };
51
+ export { s as declarionFingerprintPlugin };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@declarion/react",
3
- "version": "0.44.0",
3
+ "version": "0.47.0",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "description": "React SDK for Declarion, the schema-driven business apps platform.",
@@ -67,11 +67,11 @@
67
67
  "@radix-ui/react-slot": "^1.3.3",
68
68
  "@tanstack/react-query": "^5.101.4",
69
69
  "@tanstack/react-table": "^8.21.3",
70
- "@tanstack/react-virtual": "^3.14.8",
70
+ "@tanstack/react-virtual": "^3.14.9",
71
71
  "class-variance-authority": "^0.7.1",
72
72
  "clsx": "^2.1.1",
73
73
  "date-fns": "^4.4.0",
74
- "lucide-react": "^1.27.0",
74
+ "lucide-react": "^1.30.0",
75
75
  "mdast-util-to-string": "^4.0.0",
76
76
  "monaco-editor": "^0.56.0",
77
77
  "react-markdown": "^10.1.0",
@@ -94,24 +94,24 @@
94
94
  "@testing-library/dom": "^10.4.1",
95
95
  "@testing-library/jest-dom": "^7.0.0",
96
96
  "@testing-library/react": "^16.3.2",
97
- "@testing-library/user-event": "^14.6.1",
98
- "@types/react": "^19.2.17",
99
- "@types/react-dom": "^19.2.3",
100
- "@vitejs/plugin-react": "^6.0.4",
97
+ "@testing-library/user-event": "^14.6.3",
98
+ "@types/react": "^19.2.18",
99
+ "@types/react-dom": "^19.2.4",
100
+ "@vitejs/plugin-react": "^6.0.5",
101
101
  "@vitest/coverage-v8": "^4.1.10",
102
- "axe-core": "^4.12.1",
103
- "eslint": "^10.8.0",
102
+ "axe-core": "^4.13.0",
103
+ "eslint": "^10.8.1",
104
104
  "eslint-plugin-react-hooks": "^7.1.1",
105
105
  "jsdom": "^29.1.1",
106
106
  "msw": "^2.15.0",
107
- "publint": "^0.3.22",
107
+ "publint": "^0.3.23",
108
108
  "react": "^19.2.8",
109
109
  "react-dom": "^19.2.8",
110
110
  "tailwindcss": "^4.3.3",
111
111
  "tsc-alias": "^1.9.1",
112
112
  "typescript": "^6.0.3",
113
- "typescript-eslint": "^8.65.0",
114
- "vite": "^8.1.5",
113
+ "typescript-eslint": "^8.66.0",
114
+ "vite": "^8.2.1",
115
115
  "vitest": "^4.1.10"
116
116
  },
117
117
  "scripts": {