@edifice.io/react 2.1.2-develop-pedago.20250318161520 → 2.1.2-develop-pedago.20250319191946

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.
@@ -1,8 +1,7 @@
1
1
  import { UserProfile } from '@edifice.io/client';
2
2
  import { CommentProps } from '../types';
3
- export declare const Comment: ({ comment, userId, profile, onReply, }: {
3
+ export declare const Comment: ({ comment, userId, profile, }: {
4
4
  comment: CommentProps;
5
5
  userId: string;
6
6
  profile: UserProfile[number];
7
- onReply?: (commentId: string) => void;
8
7
  }) => import("react/jsx-runtime").JSX.Element;
@@ -9,13 +9,14 @@ import { CommentAvatar } from "./CommentAvatar.js";
9
9
  import { CommentDate } from "./CommentDate.js";
10
10
  import { CommentTitle } from "./CommentTitle.js";
11
11
  import { TextCounter } from "./TextCounter.js";
12
+ import { CommentDeleted } from "./CommentDeleted.js";
13
+ import { CommentReplies } from "./CommentReplies.js";
12
14
  import Button from "../../../components/Button/Button.js";
13
15
  import LoadingScreen from "../../../components/LoadingScreen/LoadingScreen.js";
14
16
  const DeleteModal = /* @__PURE__ */ lazy(() => import("./DeleteModal.js")), Comment = ({
15
17
  comment,
16
18
  userId,
17
- profile,
18
- onReply
19
+ profile
19
20
  }) => {
20
21
  const [value, setValue] = useState(""), {
21
22
  id,
@@ -23,10 +24,12 @@ const DeleteModal = /* @__PURE__ */ lazy(() => import("./DeleteModal.js")), Comm
23
24
  authorName,
24
25
  createdAt,
25
26
  updatedAt,
26
- comment: content
27
+ comment: content,
28
+ replyTo
27
29
  } = comment, [ref, onFocus, resizeTextarea] = useAutosizeTextarea(!0), [isDeleteModalOpen, setIsDeleteModalOpen] = useState(!1), {
28
30
  t
29
31
  } = useTranslation(), {
32
+ comments,
30
33
  editCommentId,
31
34
  options,
32
35
  type,
@@ -34,44 +37,52 @@ const DeleteModal = /* @__PURE__ */ lazy(() => import("./DeleteModal.js")), Comm
34
37
  handleDeleteComment: onDeleteComment,
35
38
  handleModifyComment,
36
39
  handleReset,
37
- handleUpdateComment
38
- } = useCommentsContext(), isEditing = editCommentId === comment.id, handleChangeContent = (event) => {
40
+ handleUpdateComment,
41
+ handleReplyToComment
42
+ } = useCommentsContext(), replies = (comments == null ? void 0 : comments.filter((comm) => comm.replyTo === comment.id)) ?? [], hasReplies = replies.length > 0, hasAllDeletedReplies = replies.every((reply) => reply.deleted), isEditing = editCommentId === comment.id, handleChangeContent = (event) => {
39
43
  resizeTextarea(), setValue(event.target.value);
40
44
  };
41
45
  return /* @__PURE__ */ jsxs(Fragment, { children: [
42
- /* @__PURE__ */ jsxs("div", { className: `${isEditing ? "border rounded-3 p-12 pb-8 d-flex gap-12 bg-gray-200 my-16" : "border rounded-3 p-12 pb-8 d-flex gap-12 mt-16"}`, children: [
43
- /* @__PURE__ */ jsx(CommentAvatar, { id: authorId }),
44
- /* @__PURE__ */ jsxs("div", { className: "flex flex-fill", children: [
45
- /* @__PURE__ */ jsxs("div", { className: "d-flex align-items-center gap-12", children: [
46
- /* @__PURE__ */ jsx(CommentTitle, { children: authorName }),
47
- /* @__PURE__ */ jsx(BadgeProfile, { profile }),
48
- /* @__PURE__ */ jsx(CommentDate, { createdAt, updatedAt })
49
- ] }),
50
- isEditing ? /* @__PURE__ */ jsxs(Fragment, { children: [
51
- /* @__PURE__ */ jsx("div", { className: "mt-8 mb-4", children: /* @__PURE__ */ jsx("textarea", { id: "update-comment", ref, value, className: "form-control", placeholder: t("comment.placeholder"), maxLength: options.maxCommentLength, onChange: handleChangeContent, rows: 1, style: {
52
- resize: "none",
53
- overflow: "hidden"
54
- }, onFocus }) }),
55
- /* @__PURE__ */ jsxs("div", { className: "d-flex justify-content-between align-items-center", children: [
56
- /* @__PURE__ */ jsx(Button, { variant: "ghost", color: "tertiary", size: "sm", onClick: handleReset, children: t("comment.cancel") }),
57
- /* @__PURE__ */ jsxs("div", { className: "d-flex justify-content-end align-items-center gap-4", children: [
58
- /* @__PURE__ */ jsx(TextCounter, { content: value, maxLength: options.maxCommentLength }),
59
- /* @__PURE__ */ jsx(Button, { type: "submit", variant: "ghost", size: "sm", leftIcon: /* @__PURE__ */ jsx(SvgIconSave, {}), disabled: !(content != null && content.length), onClick: () => handleUpdateComment(value), children: t("comment.save") })
46
+ comment.deleted && hasReplies && !hasAllDeletedReplies && /* @__PURE__ */ jsxs(Fragment, { children: [
47
+ /* @__PURE__ */ jsx(CommentDeleted, {}),
48
+ /* @__PURE__ */ jsx(CommentReplies, { parentComment: comment })
49
+ ] }),
50
+ !comment.deleted && /* @__PURE__ */ jsxs(Fragment, { children: [
51
+ /* @__PURE__ */ jsxs("div", { className: `${isEditing ? "border rounded-3 p-12 pb-8 d-flex gap-12 bg-gray-200 my-16" : "border rounded-3 p-12 pb-8 d-flex gap-12 mt-16"}`, children: [
52
+ /* @__PURE__ */ jsx(CommentAvatar, { id: authorId }),
53
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-fill", children: [
54
+ /* @__PURE__ */ jsxs("div", { className: "d-flex align-items-center gap-12", children: [
55
+ /* @__PURE__ */ jsx(CommentTitle, { children: authorName }),
56
+ /* @__PURE__ */ jsx(BadgeProfile, { profile }),
57
+ /* @__PURE__ */ jsx(CommentDate, { createdAt, updatedAt })
58
+ ] }),
59
+ isEditing ? /* @__PURE__ */ jsxs(Fragment, { children: [
60
+ /* @__PURE__ */ jsx("div", { className: "mt-8 mb-4", children: /* @__PURE__ */ jsx("textarea", { id: "update-comment", ref, value, className: "form-control", placeholder: t("comment.placeholder"), maxLength: options.maxCommentLength, onChange: handleChangeContent, rows: 1, style: {
61
+ resize: "none",
62
+ overflow: "hidden"
63
+ }, onFocus }) }),
64
+ /* @__PURE__ */ jsxs("div", { className: "d-flex justify-content-between align-items-center", children: [
65
+ /* @__PURE__ */ jsx(Button, { variant: "ghost", color: "tertiary", size: "sm", onClick: handleReset, children: t("comment.cancel") }),
66
+ /* @__PURE__ */ jsxs("div", { className: "d-flex justify-content-end align-items-center gap-4", children: [
67
+ /* @__PURE__ */ jsx(TextCounter, { content: value, maxLength: options.maxCommentLength }),
68
+ /* @__PURE__ */ jsx(Button, { type: "submit", variant: "ghost", size: "sm", leftIcon: /* @__PURE__ */ jsx(SvgIconSave, {}), disabled: !(content != null && content.length), onClick: () => handleUpdateComment(value), children: t("comment.save") })
69
+ ] })
70
+ ] })
71
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
72
+ /* @__PURE__ */ jsx("div", { className: "mt-8 mb-4", children: content }),
73
+ type === "edit" && /* @__PURE__ */ jsxs("div", { className: "ms-n8", children: [
74
+ !replyTo && /* @__PURE__ */ jsx(Button, { variant: "ghost", color: "tertiary", size: "sm", onClick: () => handleReplyToComment(comment.id), children: t("comment.reply") }),
75
+ userId === authorId && /* @__PURE__ */ jsx(Button, { variant: "ghost", color: "tertiary", size: "sm", onClick: () => {
76
+ handleModifyComment(comment.id), setValue(content);
77
+ }, children: t("comment.edit") }),
78
+ (userId === authorId || (userRights == null ? void 0 : userRights.manager)) && /* @__PURE__ */ jsx(Button, { variant: "ghost", color: "tertiary", size: "sm", onClick: () => setIsDeleteModalOpen(!0), children: t("comment.remove") })
60
79
  ] })
61
- ] })
62
- ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
63
- /* @__PURE__ */ jsx("div", { className: "mt-8 mb-4", children: content }),
64
- type === "edit" && /* @__PURE__ */ jsxs("div", { className: "ms-n8", children: [
65
- !comment.replyTo && /* @__PURE__ */ jsx(Button, { variant: "ghost", color: "tertiary", size: "sm", onClick: () => onReply == null ? void 0 : onReply(comment.id), children: t("comment.reply") }),
66
- userId === authorId && /* @__PURE__ */ jsx(Button, { variant: "ghost", color: "tertiary", size: "sm", onClick: () => {
67
- handleModifyComment(comment.id), setValue(content);
68
- }, children: t("comment.edit") }),
69
- (userId === authorId || (userRights == null ? void 0 : userRights.manager)) && /* @__PURE__ */ jsx(Button, { variant: "ghost", color: "tertiary", size: "sm", onClick: () => setIsDeleteModalOpen(!0), children: t("comment.remove") })
70
80
  ] })
71
81
  ] })
72
- ] })
73
- ] }, id),
74
- /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(LoadingScreen, { position: !1 }), children: isDeleteModalOpen && /* @__PURE__ */ jsx(DeleteModal, { isOpen: isDeleteModalOpen, onCancel: () => setIsDeleteModalOpen(!1), onSuccess: () => onDeleteComment(id) }) })
82
+ ] }, id),
83
+ /* @__PURE__ */ jsx(CommentReplies, { parentComment: comment }),
84
+ /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(LoadingScreen, { position: !1 }), children: isDeleteModalOpen && /* @__PURE__ */ jsx(DeleteModal, { isOpen: isDeleteModalOpen, onCancel: () => setIsDeleteModalOpen(!1), onSuccess: () => onDeleteComment(id) }) })
85
+ ] })
75
86
  ] });
76
87
  };
77
88
  export {
@@ -0,0 +1 @@
1
+ export declare const CommentDeleted: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useTranslation } from "react-i18next";
3
+ const CommentDeleted = () => {
4
+ const {
5
+ t
6
+ } = useTranslation();
7
+ return /* @__PURE__ */ jsx("div", { className: "border rounded-3 p-12 pb-8 d-flex gap-12 bg-gray-200 my-16", children: t("comment.deleted") });
8
+ };
9
+ export {
10
+ CommentDeleted
11
+ };
@@ -1,27 +1,20 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import { useState } from "react";
1
+ import { jsx } from "react/jsx-runtime";
3
2
  import { useEdificeClient } from "../../../providers/EdificeClientProvider/EdificeClientProvider.hook.js";
4
3
  import { useCommentsContext } from "../hooks/useCommentsContext.js";
5
4
  import { Comment } from "./Comment.js";
6
- import { CommentReplies } from "./CommentReplies.js";
7
5
  function CommentList() {
8
- const [replyFormCommentId, setReplyFormCommentId] = useState(""), {
6
+ const {
9
7
  user
10
8
  } = useEdificeClient(), {
11
9
  comments,
12
10
  profiles
13
- } = useCommentsContext(), handleReply = (commentId) => {
14
- setReplyFormCommentId(commentId);
15
- };
11
+ } = useCommentsContext();
16
12
  return comments == null ? void 0 : comments.map((comment) => {
17
13
  var _a;
18
14
  const {
19
15
  authorId
20
16
  } = comment, profile = ((_a = profiles == null ? void 0 : profiles.find((user2) => (user2 == null ? void 0 : user2.userId) === authorId)) == null ? void 0 : _a.profile) ?? "Guest";
21
- return /* @__PURE__ */ jsxs("div", { children: [
22
- !comment.replyTo && /* @__PURE__ */ jsx(Comment, { comment, profile, userId: user == null ? void 0 : user.userId, onReply: handleReply }),
23
- /* @__PURE__ */ jsx(CommentReplies, { parentComment: comment, replyFormCommentId })
24
- ] }, comment.id);
17
+ return /* @__PURE__ */ jsx("div", { children: !comment.replyTo && /* @__PURE__ */ jsx(Comment, { comment, profile, userId: user == null ? void 0 : user.userId }) }, comment.id);
25
18
  });
26
19
  }
27
20
  export {
@@ -1,5 +1,4 @@
1
1
  import { CommentProps } from '../types';
2
- export declare const CommentReplies: ({ parentComment, replyFormCommentId, }: {
2
+ export declare const CommentReplies: ({ parentComment, }: {
3
3
  parentComment: CommentProps;
4
- replyFormCommentId: string;
5
4
  }) => import("react/jsx-runtime").JSX.Element;
@@ -5,13 +5,13 @@ import { CommentForm } from "./CommentForm.js";
5
5
  import { useCommentReplies } from "../hooks/useCommentReplies.js";
6
6
  import Button from "../../../components/Button/Button.js";
7
7
  const CommentReplies = ({
8
- parentComment,
9
- replyFormCommentId
8
+ parentComment
10
9
  }) => {
11
10
  const {
12
11
  comments,
13
12
  profiles,
14
- options
13
+ options,
14
+ replyToCommentId
15
15
  } = useCommentsContext(), {
16
16
  t,
17
17
  user,
@@ -24,10 +24,13 @@ const CommentReplies = ({
24
24
  comments,
25
25
  profiles,
26
26
  options
27
- });
27
+ }), showCommentForm = replyToCommentId === parentComment.id && !parentComment.deleted;
28
28
  return /* @__PURE__ */ jsxs("div", { className: "comments-replies-container", children: [
29
- replyFormCommentId === parentComment.id && /* @__PURE__ */ jsx("div", { className: "comments-replies-form", children: /* @__PURE__ */ jsx(CommentForm, { userId: user == null ? void 0 : user.userId, replyTo: parentComment.id }) }),
30
- /* @__PURE__ */ jsx("div", { className: "comments-replies-list", children: slicedReplies.map((reply) => /* @__PURE__ */ jsx("div", { className: "comments-replies-reply", children: /* @__PURE__ */ jsx(Comment, { comment: reply, profile, userId: user == null ? void 0 : user.userId }) }, reply.id)) }),
29
+ showCommentForm && /* @__PURE__ */ jsx("div", { className: "comments-replies-form", children: /* @__PURE__ */ jsx(CommentForm, { userId: user == null ? void 0 : user.userId, replyTo: parentComment.id }) }),
30
+ /* @__PURE__ */ jsx("div", { className: "comments-replies-list", children: slicedReplies.map((reply) => {
31
+ if (!reply.deleted)
32
+ return /* @__PURE__ */ jsx("div", { className: "comments-replies-reply", children: /* @__PURE__ */ jsx(Comment, { comment: reply, profile, userId: user == null ? void 0 : user.userId }) }, reply.id);
33
+ }) }),
31
34
  slicedReplies.length < (defaultReplies == null ? void 0 : defaultReplies.length) && /* @__PURE__ */ jsx(Button, { variant: "ghost", color: "tertiary", onClick: handleMoreReplies, className: "ms-24", children: t("comment.more.replies") })
32
35
  ] });
33
36
  };
@@ -3,14 +3,17 @@ import { CommentOptions, CommentProps, CommentType, UserProfileResult } from '..
3
3
  export declare const CommentContext: import('react').Context<{
4
4
  comments: CommentProps[] | undefined;
5
5
  editCommentId: string | null;
6
+ replyToCommentId: string | null;
6
7
  profiles: (UserProfileResult | undefined)[];
7
8
  options: Partial<CommentOptions>;
8
9
  type: CommentType;
9
10
  userRights?: Record<RightRole, boolean>;
10
11
  setEditCommentId: (value: string | null) => void;
12
+ setReplyToCommentId: (value: string | null) => void;
11
13
  handleModifyComment: (commentId: string) => void;
12
14
  handleCreateComment: (content: string, replyTo?: string) => void;
13
15
  handleUpdateComment: (comment: string) => void;
14
16
  handleDeleteComment: (id: string) => void;
17
+ handleReplyToComment: (commentId: string) => void;
15
18
  handleReset: () => void;
16
19
  } | null>;
@@ -19,6 +19,8 @@ export declare const useComments: ({ defaultComments, options, type, callbacks,
19
19
  comments: CommentProps[];
20
20
  editCommentId: string | null;
21
21
  setEditCommentId: import('react').Dispatch<import('react').SetStateAction<string | null>>;
22
+ replyToCommentId: string | null;
23
+ setReplyToCommentId: import('react').Dispatch<import('react').SetStateAction<string | null>>;
22
24
  commentsCount: number;
23
25
  t: import('i18next').TFunction<"translation", undefined>;
24
26
  handleMoreComments: () => void;
@@ -26,5 +28,6 @@ export declare const useComments: ({ defaultComments, options, type, callbacks,
26
28
  handleCreateComment: (content: string, replyTo?: string) => void;
27
29
  handleModifyComment: (commentId: string) => void;
28
30
  handleUpdateComment: (comment: string) => Promise<void>;
31
+ handleReplyToComment: (commentId: string) => void;
29
32
  handleReset: () => void;
30
33
  };
@@ -9,7 +9,8 @@ const useComments = ({
9
9
  type,
10
10
  callbacks
11
11
  }) => {
12
- const [editCommentId, setEditCommentId] = useState(null), [commentLimit, setCommentLimit] = useState(options.maxComments), {
12
+ var _a, _b;
13
+ const [editCommentId, setEditCommentId] = useState(null), [replyToCommentId, setReplyToCommentId] = useState(null), [commentLimit, setCommentLimit] = useState(options.maxComments), {
13
14
  t
14
15
  } = useTranslation(), {
15
16
  user
@@ -17,7 +18,7 @@ const useComments = ({
17
18
  () => type === "edit" ? (defaultComments == null ? void 0 : defaultComments.sort((a, b) => b.createdAt - a.createdAt).slice(0, commentLimit)) ?? [] : (defaultComments == null ? void 0 : defaultComments.sort((a, b) => b.createdAt - a.createdAt)) ?? [],
18
19
  // eslint-disable-next-line react-hooks/exhaustive-deps
19
20
  [commentLimit, defaultComments]
20
- ), commentsCount = (comments == null ? void 0 : comments.length) ?? 0, defaultCommentsCount = (defaultComments == null ? void 0 : defaultComments.length) ?? 0, title = defaultCommentsCount && defaultCommentsCount > 1 ? t("comment.several", {
21
+ ), commentsCount = ((_a = comments == null ? void 0 : comments.filter((comment) => !comment.deleted)) == null ? void 0 : _a.length) ?? 0, defaultCommentsCount = ((_b = defaultComments == null ? void 0 : defaultComments.filter((comment) => !comment.deleted)) == null ? void 0 : _b.length) ?? 0, title = defaultCommentsCount && defaultCommentsCount > 1 ? t("comment.several", {
21
22
  number: defaultCommentsCount
22
23
  }) : t("comment.little", {
23
24
  number: defaultCommentsCount
@@ -31,6 +32,8 @@ const useComments = ({
31
32
  comments,
32
33
  editCommentId,
33
34
  setEditCommentId,
35
+ replyToCommentId,
36
+ setReplyToCommentId,
34
37
  commentsCount,
35
38
  t,
36
39
  handleMoreComments: () => {
@@ -41,7 +44,7 @@ const useComments = ({
41
44
  type === "edit" && (callbacks == null || callbacks.delete(id));
42
45
  },
43
46
  handleCreateComment: (content, replyTo) => {
44
- type === "edit" && (callbacks == null || callbacks.post(content, replyTo));
47
+ type === "edit" && (callbacks == null || callbacks.post(content, replyTo)), replyTo && setReplyToCommentId(null);
45
48
  },
46
49
  handleModifyComment: (commentId) => {
47
50
  setEditCommentId(commentId);
@@ -52,6 +55,9 @@ const useComments = ({
52
55
  commentId: editCommentId
53
56
  })), setEditCommentId(null));
54
57
  },
58
+ handleReplyToComment: (commentId) => {
59
+ setReplyToCommentId(commentId);
60
+ },
55
61
  handleReset: () => {
56
62
  editCommentId && setEditCommentId(null);
57
63
  }
@@ -1,14 +1,17 @@
1
1
  export declare const useCommentsContext: () => {
2
2
  comments: import('../types').CommentProps[] | undefined;
3
3
  editCommentId: string | null;
4
+ replyToCommentId: string | null;
4
5
  profiles: (import('../types').UserProfileResult | undefined)[];
5
6
  options: Partial<import('../types').CommentOptions>;
6
7
  type: import('../types').CommentType;
7
8
  userRights?: Record<import('@edifice.io/client').RightRole, boolean>;
8
9
  setEditCommentId: (value: string | null) => void;
10
+ setReplyToCommentId: (value: string | null) => void;
9
11
  handleModifyComment: (commentId: string) => void;
10
12
  handleCreateComment: (content: string, replyTo?: string) => void;
11
13
  handleUpdateComment: (comment: string) => void;
12
14
  handleDeleteComment: (id: string) => void;
15
+ handleReplyToComment: (commentId: string) => void;
13
16
  handleReset: () => void;
14
17
  };
@@ -32,6 +32,8 @@ const CommentProvider = ({
32
32
  comments,
33
33
  editCommentId,
34
34
  setEditCommentId,
35
+ replyToCommentId,
36
+ setReplyToCommentId,
35
37
  commentsCount,
36
38
  t,
37
39
  handleMoreComments,
@@ -39,6 +41,7 @@ const CommentProvider = ({
39
41
  handleCreateComment,
40
42
  handleModifyComment,
41
43
  handleUpdateComment,
44
+ handleReplyToComment,
42
45
  handleReset
43
46
  } = useComments({
44
47
  type,
@@ -50,14 +53,17 @@ const CommentProvider = ({
50
53
  comments,
51
54
  profiles: profilesQueries.data,
52
55
  editCommentId,
56
+ replyToCommentId,
53
57
  options,
54
58
  type,
55
59
  userRights,
56
60
  setEditCommentId,
61
+ setReplyToCommentId,
57
62
  handleCreateComment,
58
63
  handleModifyComment,
59
64
  handleUpdateComment,
60
65
  handleDeleteComment,
66
+ handleReplyToComment,
61
67
  handleReset
62
68
  }),
63
69
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -28,6 +28,10 @@ export interface CommentProps {
28
28
  * The comment parent ID.
29
29
  */
30
30
  replyTo?: string;
31
+ /**
32
+ * If the comment is deleted.
33
+ */
34
+ deleted?: boolean;
31
35
  }
32
36
  export interface CommentCallbacks {
33
37
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edifice.io/react",
3
- "version": "2.1.2-develop-pedago.20250318161520",
3
+ "version": "2.1.2-develop-pedago.20250319191946",
4
4
  "description": "Edifice React Library",
5
5
  "keywords": [
6
6
  "react",
@@ -118,9 +118,9 @@
118
118
  "react-slugify": "^3.0.3",
119
119
  "swiper": "^10.1.0",
120
120
  "ua-parser-js": "^1.0.36",
121
- "@edifice.io/bootstrap": "2.1.2-develop-pedago.20250318161520",
122
- "@edifice.io/tiptap-extensions": "2.1.2-develop-pedago.20250318161520",
123
- "@edifice.io/utilities": "2.1.2-develop-pedago.20250318161520"
121
+ "@edifice.io/bootstrap": "2.1.2-develop-pedago.20250319191946",
122
+ "@edifice.io/tiptap-extensions": "2.1.2-develop-pedago.20250319191946",
123
+ "@edifice.io/utilities": "2.1.2-develop-pedago.20250319191946"
124
124
  },
125
125
  "devDependencies": {
126
126
  "@babel/plugin-transform-react-pure-annotations": "^7.23.3",
@@ -151,8 +151,8 @@
151
151
  "vite": "^5.4.11",
152
152
  "vite-plugin-dts": "^4.1.0",
153
153
  "vite-tsconfig-paths": "^5.0.1",
154
- "@edifice.io/client": "2.1.2-develop-pedago.20250318161520",
155
- "@edifice.io/config": "2.1.2-develop-pedago.20250318161520"
154
+ "@edifice.io/config": "2.1.2-develop-pedago.20250319191946",
155
+ "@edifice.io/client": "2.1.2-develop-pedago.20250319191946"
156
156
  },
157
157
  "peerDependencies": {
158
158
  "@react-spring/web": "^9.7.5",