@edifice.io/react 2.0.5 → 2.1.0-develop-b2school.20250204153130

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 (53) hide show
  1. package/dist/components/AppIcon/AppIcon.js +1 -1
  2. package/dist/components/Attachment/Attachment.js +1 -1
  3. package/dist/components/Button/Button.js +1 -1
  4. package/dist/components/Dropdown/DropdownTrigger.js +5 -1
  5. package/dist/components/Form/FormContext.js +1 -1
  6. package/dist/components/Form/FormControl.js +1 -1
  7. package/dist/components/Layout/components/Header.js +4 -3
  8. package/dist/components/Layout/components/WidgetApps.js +1 -1
  9. package/dist/components/List/List.d.ts +9 -1
  10. package/dist/components/List/List.js +9 -9
  11. package/dist/components/Modal/Modal.js +1 -1
  12. package/dist/components/SearchBar/SearchBar.d.ts +1 -1
  13. package/dist/components/SearchBar/SearchBar.js +3 -1
  14. package/dist/hooks/useCheckable/useCheckable.js +1 -1
  15. package/dist/hooks/useConversation/useConversation.d.ts +1 -1
  16. package/dist/hooks/useConversation/useConversation.js +13 -17
  17. package/dist/hooks/useDropdown/useDropdown.js +1 -1
  18. package/dist/hooks/useDropzone/useDropzone.js +1 -1
  19. package/dist/hooks/useTrapFocus/useTrapFocus.d.ts +1 -1
  20. package/dist/hooks/useTrapFocus/useTrapFocus.js +3 -2
  21. package/dist/hooks/useUploadFiles/useUploadFiles.js +1 -1
  22. package/dist/icons-apps.js +220 -218
  23. package/dist/icons.js +116 -112
  24. package/dist/index.js +106 -106
  25. package/dist/modules/audience/ReactionModal.Card.js +1 -1
  26. package/dist/modules/comments/components/Comment.js +10 -7
  27. package/dist/modules/comments/components/CommentAvatar.js +1 -1
  28. package/dist/modules/comments/components/DeleteModal.d.ts +7 -0
  29. package/dist/modules/comments/components/DeleteModal.js +19 -0
  30. package/dist/modules/comments/context/Context.d.ts +2 -0
  31. package/dist/modules/comments/hooks/useComments.d.ts +1 -1
  32. package/dist/modules/comments/hooks/useComments.js +1 -1
  33. package/dist/modules/comments/hooks/useCommentsContext.d.ts +1 -0
  34. package/dist/modules/comments/provider/CommentProvider.js +3 -2
  35. package/dist/modules/comments/types.d.ts +5 -1
  36. package/dist/modules/editor/components/Editor/Editor.js +1 -1
  37. package/dist/modules/editor/components/Renderer/AttachmentRenderer.js +12 -7
  38. package/dist/modules/editor/components/Renderer/AudioRenderer.js +4 -1
  39. package/dist/modules/editor/components/Renderer/LinkerRenderer.js +1 -1
  40. package/dist/modules/editor/hooks/useCommentEditor.d.ts +1 -1
  41. package/dist/modules/editor/hooks/useTipTapEditor.d.ts +1 -1
  42. package/dist/modules/editor/hooks/useTipTapEditor.js +4 -4
  43. package/dist/modules/icons/components/IconReadMail.d.ts +7 -0
  44. package/dist/modules/icons/components/IconReadMail.js +16 -0
  45. package/dist/modules/icons/components/IconUnreadMail.d.ts +7 -0
  46. package/dist/modules/icons/components/IconUnreadMail.js +16 -0
  47. package/dist/modules/icons/components/apps/IconAppointments.d.ts +7 -0
  48. package/dist/modules/icons/components/apps/IconAppointments.js +12 -0
  49. package/dist/modules/icons/components/apps/index.d.ts +1 -0
  50. package/dist/modules/icons/components/index.d.ts +2 -0
  51. package/dist/modules/multimedia/UploadCard/UploadCard.js +2 -2
  52. package/dist/providers/MockedProvider/MockedProvider.js +1 -1
  53. package/package.json +30 -30
@@ -1,3 +1,4 @@
1
+ import { RightRole } from '@edifice.io/client';
1
2
  import { CommentOptions, CommentProps, CommentType, UserProfileResult } from '../types';
2
3
  export declare const CommentContext: import('react').Context<{
3
4
  comments: CommentProps[] | undefined;
@@ -6,6 +7,7 @@ export declare const CommentContext: import('react').Context<{
6
7
  profiles: (UserProfileResult | undefined)[];
7
8
  options: Partial<CommentOptions>;
8
9
  type: CommentType;
10
+ userRights?: Record<RightRole, boolean>;
9
11
  setEditCommentId: (value: string | null) => void;
10
12
  handleModifyComment: (commentId: string) => void;
11
13
  handleChangeContent: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;
@@ -27,6 +27,6 @@ export declare const useComments: ({ defaultComments, options, type, callbacks,
27
27
  handleDeleteComment: (id: string) => void;
28
28
  handleCreateComment: (content: string) => void;
29
29
  handleModifyComment: (commentId: string) => void;
30
- handleUpdateComment: (comment: string) => void;
30
+ handleUpdateComment: (comment: string) => Promise<void>;
31
31
  handleReset: () => void;
32
32
  };
@@ -50,7 +50,7 @@ const useComments = ({
50
50
  handleModifyComment: (commentId) => {
51
51
  setEditCommentId(commentId);
52
52
  },
53
- handleUpdateComment: (comment) => {
53
+ handleUpdateComment: async (comment) => {
54
54
  editCommentId && (type === "edit" && (callbacks == null || callbacks.put({
55
55
  comment,
56
56
  commentId: editCommentId
@@ -5,6 +5,7 @@ export declare const useCommentsContext: () => {
5
5
  profiles: (import('../types').UserProfileResult | undefined)[];
6
6
  options: Partial<import('../types').CommentOptions>;
7
7
  type: import('../types').CommentType;
8
+ userRights?: Record<import('@edifice.io/client').RightRole, boolean>;
8
9
  setEditCommentId: (value: string | null) => void;
9
10
  handleModifyComment: (commentId: string) => void;
10
11
  handleChangeContent: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;
@@ -3,7 +3,7 @@ import { useMemo } from "react";
3
3
  import { CommentForm } from "../components/CommentForm.js";
4
4
  import { CommentHeader } from "../components/CommentHeader.js";
5
5
  import { CommentList } from "../components/CommentList.js";
6
- import { DEFAULT_MAX_COMMENT_LENGTH, DEFAULT_MAX_REPLY_LENGTH, DEFAULT_MAX_COMMENTS, DEFAULT_ADD_COMMENTS, DEFAULT_MAX_REPLIES } from "../constants.js";
6
+ import { DEFAULT_MAX_REPLIES, DEFAULT_ADD_COMMENTS, DEFAULT_MAX_COMMENTS, DEFAULT_MAX_REPLY_LENGTH, DEFAULT_MAX_COMMENT_LENGTH } from "../constants.js";
7
7
  import { CommentContext } from "../context/Context.js";
8
8
  import { useComments } from "../hooks/useComments.js";
9
9
  import Button from "../../../components/Button/Button.js";
@@ -46,7 +46,7 @@ const CommentProvider = ({
46
46
  defaultComments,
47
47
  callbacks: type == "edit" ? props.callbacks : null,
48
48
  options
49
- }), values = useMemo(
49
+ }), userRights = type === "edit" ? props.rights : void 0, values = useMemo(
50
50
  () => ({
51
51
  comments,
52
52
  content,
@@ -54,6 +54,7 @@ const CommentProvider = ({
54
54
  editCommentId,
55
55
  options,
56
56
  type,
57
+ userRights,
57
58
  setEditCommentId,
58
59
  handleCreateComment,
59
60
  handleModifyComment,
@@ -1,4 +1,4 @@
1
- import { UserProfile } from '@edifice.io/client';
1
+ import { RightRole, UserProfile } from '@edifice.io/client';
2
2
  export interface CommentProps {
3
3
  /**
4
4
  * Comment Id
@@ -61,6 +61,10 @@ interface EditRootProps extends BaseProps {
61
61
  * Callbacks to perform CRUD on comment
62
62
  */
63
63
  callbacks: CommentCallbacks;
64
+ /**
65
+ * Rights to perform CRUD on comment
66
+ */
67
+ rights?: Record<RightRole, boolean>;
64
68
  }
65
69
  interface ReadRootProps extends BaseProps {
66
70
  type: 'read';
@@ -15,8 +15,8 @@ import { EditorToolbar } from "../EditorToolbar/EditorToolbar.js";
15
15
  import LinkToolbar from "../Toolbar/LinkToolbar.js";
16
16
  import TableToolbar from "../Toolbar/TableToolbar.js";
17
17
  import BubbleMenuEditImage from "../BubbleMenuEditImage/BubbleMenuEditImage.js";
18
- import LoadingScreen from "../../../../components/LoadingScreen/LoadingScreen.js";
19
18
  import MediaLibrary from "../../../multimedia/MediaLibrary/MediaLibrary.js";
19
+ import LoadingScreen from "../../../../components/LoadingScreen/LoadingScreen.js";
20
20
  const MathsModal = /* @__PURE__ */ lazy(async () => await import("../MathsModal/MathsModal.js")), ImageEditor = /* @__PURE__ */ lazy(async () => await import("../../../multimedia/ImageEditor/components/ImageEditor.js")), Editor = /* @__PURE__ */ forwardRef(({
21
21
  id,
22
22
  content,
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import { useState } from "react";
2
+ import { useState, useEffect } from "react";
3
3
  import { NodeViewWrapper } from "@tiptap/react";
4
4
  import { useTranslation } from "react-i18next";
5
5
  import SvgIconDelete from "../../../icons/components/IconDelete.js";
@@ -10,15 +10,20 @@ import { useEditorContext } from "../../hooks/useEditorContext.js";
10
10
  import { Grid } from "../../../../components/Grid/Grid.js";
11
11
  const AttachmentRenderer = (props) => {
12
12
  const {
13
+ node,
14
+ editor
15
+ } = props, [attachmentArrayAttrs, setAttachmentArrayAttrs] = useState(node.attrs.links), {
13
16
  t
14
17
  } = useTranslation(), {
15
- node
16
- } = props, {
17
18
  editable
18
- } = useEditorContext(), [attachmentArrayAttrs, setAttachmentArrayAttrs] = useState(node.attrs.links), handleDelete = (index) => {
19
- setAttachmentArrayAttrs((oldAttachments) => oldAttachments.filter((_, i) => i !== index));
19
+ } = useEditorContext();
20
+ useEffect(() => {
21
+ attachmentArrayAttrs !== node.attrs.links && setAttachmentArrayAttrs(node.attrs.links);
22
+ }, [node.attrs.links, attachmentArrayAttrs]);
23
+ const handleDelete = (index, documentId) => {
24
+ editor.commands.unsetAttachment(documentId), setAttachmentArrayAttrs((oldAttachments) => oldAttachments.filter((_, i) => i !== index));
20
25
  };
21
- return attachmentArrayAttrs.length !== 0 && /* @__PURE__ */ jsx(NodeViewWrapper, { children: /* @__PURE__ */ jsxs("div", { style: {
26
+ return (attachmentArrayAttrs == null ? void 0 : attachmentArrayAttrs.length) !== 0 && /* @__PURE__ */ jsx(NodeViewWrapper, { children: /* @__PURE__ */ jsxs("div", { style: {
22
27
  backgroundColor: "#F2F2F2",
23
28
  borderRadius: ".8rem",
24
29
  padding: "1.2rem"
@@ -26,7 +31,7 @@ const AttachmentRenderer = (props) => {
26
31
  /* @__PURE__ */ jsx("p", { className: "m-12 mt-0", children: t("tiptap.attachments.bloc") }),
27
32
  /* @__PURE__ */ jsx(Grid, { children: attachmentArrayAttrs == null ? void 0 : attachmentArrayAttrs.map((attachment, index) => /* @__PURE__ */ jsx(Grid.Col, { sm: "6", children: /* @__PURE__ */ jsx(Attachment, { name: attachment.name, options: /* @__PURE__ */ jsxs(Fragment, { children: [
28
33
  /* @__PURE__ */ jsx("a", { href: attachment.href, download: !0, children: /* @__PURE__ */ jsx(IconButton, { "aria-label": t("tiptap.attachments.download"), color: "tertiary", type: "button", icon: /* @__PURE__ */ jsx(SvgIconDownload, {}), variant: "ghost" }) }),
29
- editable && /* @__PURE__ */ jsx(IconButton, { "aria-label": t("tiptap.attachments.delete"), color: "danger", type: "button", icon: /* @__PURE__ */ jsx(SvgIconDelete, {}), variant: "ghost", onClick: () => handleDelete(index) })
34
+ editable && /* @__PURE__ */ jsx(IconButton, { "aria-label": t("tiptap.attachments.delete"), color: "danger", type: "button", icon: /* @__PURE__ */ jsx(SvgIconDelete, {}), variant: "ghost", onClick: () => handleDelete(index, attachment.documentId) })
30
35
  ] }) }) }, index)) })
31
36
  ] }) });
32
37
  };
@@ -4,7 +4,10 @@ const AudioRenderer = (props) => {
4
4
  const {
5
5
  node
6
6
  } = props;
7
- return /* @__PURE__ */ jsx(NodeViewWrapper, { children: /* @__PURE__ */ jsx("div", { className: "audio-wrapper", children: /* @__PURE__ */ jsx("audio", { src: node.attrs.src, controls: !0, "data-document-id": node.attrs.src, children: /* @__PURE__ */ jsx("track", { kind: "captions" }) }) }) });
7
+ return /* @__PURE__ */ jsx(NodeViewWrapper, { style: {
8
+ display: "inline-block",
9
+ width: "fit-content"
10
+ }, children: /* @__PURE__ */ jsx("div", { className: "audio-wrapper", "data-drag-handle": !0, children: /* @__PURE__ */ jsx("audio", { src: node.attrs.src, controls: !0, "data-document-id": node.attrs.src, children: /* @__PURE__ */ jsx("track", { kind: "captions" }) }) }) });
8
11
  };
9
12
  export {
10
13
  AudioRenderer as default
@@ -1,9 +1,9 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { NodeViewWrapper } from "@tiptap/react";
3
3
  import clsx from "clsx";
4
+ import useEdificeIcons from "../../../../hooks/useEdificeIcons/useEdificeIcons.js";
4
5
  import Badge from "../../../../components/Badge/Badge.js";
5
6
  import AppIcon from "../../../../components/AppIcon/AppIcon.js";
6
- import useEdificeIcons from "../../../../hooks/useEdificeIcons/useEdificeIcons.js";
7
7
  const LinkerRenderer = ({
8
8
  selected,
9
9
  ...props
@@ -6,7 +6,7 @@ import { Content, HTMLContent } from '@tiptap/react';
6
6
  * @param content default rich content
7
7
  */
8
8
  export declare const useCommentEditor: (editable: boolean, content: Content, maxLength?: number) => {
9
- editor: import('@tiptap/react').Editor | null;
9
+ editor: import('@tiptap/core').Editor | null;
10
10
  commentLength: number;
11
11
  getComment: () => HTMLContent;
12
12
  resetComment: () => void;
@@ -11,6 +11,6 @@ import { WorkspaceVisibility } from '@edifice.io/client';
11
11
  export declare const useTipTapEditor: (editable: boolean, content: Content, focus?: FocusPosition, placeholder?: string, onContentChange?: ({ editor }: {
12
12
  editor: any;
13
13
  }) => void, visibility?: WorkspaceVisibility) => {
14
- editor: import('@tiptap/react').Editor | null;
14
+ editor: import('@tiptap/core').Editor | null;
15
15
  editable: boolean;
16
16
  };
@@ -28,13 +28,13 @@ import { useTranslation } from "react-i18next";
28
28
  import { useEdificeClient } from "../../../providers/EdificeClientProvider/EdificeClientProvider.hook.js";
29
29
  import useUpload from "../../../hooks/useUpload/useUpload.js";
30
30
  import VideoNodeView from "../components/NodeView/VideoNodeView.js";
31
- import MediaRenderer from "../components/Renderer/MediaRenderer.js";
32
31
  import AudioNodeView from "../components/NodeView/AudioNodeView.js";
33
- import AudioRenderer from "../components/Renderer/AudioRenderer.js";
34
32
  import LinkerNodeView from "../components/NodeView/LinkerNodeView.js";
35
- import LinkerRenderer from "../components/Renderer/LinkerRenderer.js";
36
33
  import ImageNodeView from "../components/NodeView/ImageNodeView.js";
37
34
  import AttachmentNodeView from "../components/NodeView/AttachmentNodeView.js";
35
+ import MediaRenderer from "../components/Renderer/MediaRenderer.js";
36
+ import AudioRenderer from "../components/Renderer/AudioRenderer.js";
37
+ import LinkerRenderer from "../components/Renderer/LinkerRenderer.js";
38
38
  import AttachmentRenderer from "../components/Renderer/AttachmentRenderer.js";
39
39
  const useTipTapEditor = (editable, content, focus, placeholder, onContentChange, visibility = "protected") => {
40
40
  const {
@@ -58,7 +58,7 @@ const useTipTapEditor = (editable, content, focus, placeholder, onContentChange,
58
58
  }), Underline, TextStyle, Color, Subscript, Superscript, Table.configure({
59
59
  resizable: !0
60
60
  }), TableRow, TableHeader, TableCell, TextAlign.configure({
61
- types: ["heading", "paragraph", "custom-image", "video"]
61
+ types: ["heading", "paragraph", "video"]
62
62
  }), CustomHeading.configure({
63
63
  levels: [1, 2]
64
64
  }), Typography, FontSize, SpeechRecognition, SpeechSynthesis.configure({
@@ -0,0 +1,7 @@
1
+ import { SVGProps } from 'react';
2
+ interface SVGRProps {
3
+ title?: string;
4
+ titleId?: string;
5
+ }
6
+ declare const SvgIconReadMail: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgIconReadMail;
@@ -0,0 +1,16 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ const SvgIconReadMail = ({
3
+ title,
4
+ titleId,
5
+ ...props
6
+ }) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", fill: "none", viewBox: "0 0 24 24", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
7
+ title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
8
+ /* @__PURE__ */ jsxs("g", { fill: "currentColor", fillRule: "evenodd", clipPath: "url(#icon-read-mail_svg__a)", clipRule: "evenodd", children: [
9
+ /* @__PURE__ */ jsx("path", { d: "M1.143 8.986a1 1 0 0 1 1.372-.343l8.97 5.382a1 1 0 0 0 1.03 0l8.97-5.382a1 1 0 1 1 1.03 1.714l-8.971 5.383a3 3 0 0 1-3.088 0l-8.97-5.382a1 1 0 0 1-.343-1.373" }),
10
+ /* @__PURE__ */ jsx("path", { d: "M12.466 2.4a.95.95 0 0 0-.932 0c-1.333.74-3.83 2.146-5.99 3.465-1.083.662-2.063 1.29-2.764 1.797a8 8 0 0 0-.78.62v11.003H0V8c0-.38.191-.664.272-.776.107-.148.238-.285.364-.404.254-.24.594-.506.973-.78.765-.552 1.797-1.212 2.892-1.881C6.697 2.817 9.224 1.395 10.563.65a2.95 2.95 0 0 1 2.874 0c1.34.744 3.866 2.166 6.062 3.508 1.095.669 2.127 1.33 2.892 1.882.38.273.719.54.973.78.126.118.257.255.364.403.08.112.272.395.272.776v11.285h-2V8.284l-.009-.008a8 8 0 0 0-.77-.613c-.702-.506-1.682-1.135-2.765-1.797-2.16-1.32-4.657-2.725-5.99-3.466M2.321 19.802c.253.192.647.34 1.123.34h17.112c.476 0 .87-.148 1.123-.34.252-.192.321-.384.321-.517h2c0 .892-.479 1.629-1.111 2.11-.632.479-1.46.747-2.333.747H3.444c-.873 0-1.701-.268-2.333-.748S0 20.178 0 19.285h2c0 .133.069.326.32.518" })
11
+ ] }),
12
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", { id: "icon-read-mail_svg__a", children: /* @__PURE__ */ jsx("path", { fill: "#fff", d: "M0 0h24v24H0z" }) }) })
13
+ ] });
14
+ export {
15
+ SvgIconReadMail as default
16
+ };
@@ -0,0 +1,7 @@
1
+ import { SVGProps } from 'react';
2
+ interface SVGRProps {
3
+ title?: string;
4
+ titleId?: string;
5
+ }
6
+ declare const SvgIconUnreadMail: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgIconUnreadMail;
@@ -0,0 +1,16 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ const SvgIconUnreadMail = ({
3
+ title,
4
+ titleId,
5
+ ...props
6
+ }) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", fill: "none", viewBox: "0 0 24 24", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
7
+ title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
8
+ /* @__PURE__ */ jsxs("g", { fill: "currentColor", fillRule: "evenodd", clipPath: "url(#icon-unread-mail_svg__a)", clipRule: "evenodd", children: [
9
+ /* @__PURE__ */ jsx("path", { d: "M7.975 4.5a5.1 5.1 0 0 0-.204-2h12.785A3.437 3.437 0 0 1 24 5.948V18.07c0 1.9-1.548 3.429-3.444 3.429H3.444A3.437 3.437 0 0 1 0 18.071V8.001c.581.436 1.261.749 2 .899v9.171c0 .783.64 1.429 1.444 1.429h17.112c.803 0 1.444-.646 1.444-1.429V7.79l-9.448 6.257a1 1 0 0 1-1.104 0L3.744 8.945a5 5 0 0 0 2.228-.924L12 12.014l9.916-6.567c-.2-.55-.73-.947-1.36-.947z" }),
10
+ /* @__PURE__ */ jsx("path", { d: "M3 7a3 3 0 1 0 0-6 3 3 0 0 0 0 6" })
11
+ ] }),
12
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", { id: "icon-unread-mail_svg__a", children: /* @__PURE__ */ jsx("path", { fill: "#fff", d: "M0 0h24v24H0z" }) }) })
13
+ ] });
14
+ export {
15
+ SvgIconUnreadMail as default
16
+ };
@@ -0,0 +1,7 @@
1
+ import { SVGProps } from 'react';
2
+ interface SVGRProps {
3
+ title?: string;
4
+ titleId?: string;
5
+ }
6
+ declare const SvgIconAppointments: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgIconAppointments;
@@ -0,0 +1,12 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ const SvgIconAppointments = ({
3
+ title,
4
+ titleId,
5
+ ...props
6
+ }) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", width: "24", height: "24", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
7
+ title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
8
+ /* @__PURE__ */ jsx("path", { fill: "currentColor", d: "M18.616 5.414v-4.11c0-.72-.575-1.304-1.285-1.304s-1.286.584-1.286 1.304v4.11c0 .72.575 1.304 1.285 1.304s1.286-.583 1.286-1.304m-9.99-2.597V5.23c0 1.194-.947 2.156-2.124 2.156s-2.126-.962-2.126-2.156V2.817h-1.57C1.25 2.817 0 4.087 0 5.663v15.491C0 22.731 1.251 24 2.805 24h18.39C22.749 24 24 22.73 24 21.154V5.663c0-1.577-1.251-2.846-2.805-2.846h-1.81V5.23c0 1.194-.949 2.155-2.126 2.155s-2.125-.961-2.125-2.155V2.817zm3.048 6.83q.071 0 .141.006c.374.025.737.13 1.06.288 1.29.631 2.232 1.986 2.259 3.507.016.934-.515 1.722-1.153 2.159-.627.43-1.349.626-2.042.75.395.369.78.807 1.104 1.328.309.497.553.698.648.766l.004-.008.027-.035c.222-.268.477-1.095.477-1.095a.88.88 0 0 1 .386-.546.856.856 0 0 1 1.19.282.89.89 0 0 1 .108.662s-.166 1.013-.838 1.824c-.336.406-.997.824-1.71.653-.714-.17-1.227-.716-1.756-1.569-.441-.711-1.109-1.251-1.667-1.615.004.043.002.097 0 .15-.002.057-.004.114.001.158.144 1.131.438 1.678.438 1.678a.9.9 0 0 1 .06.668.87.87 0 0 1-.746.614.85.85 0 0 1-.633-.2.9.9 0 0 1-.212-.266s-.446-.882-.622-2.27-.113-3.353.783-5.676c.38-.987.964-1.69 1.704-2.015.324-.143.66-.202.99-.198m-.05 1.748a.7.7 0 0 0-.252.06c-.216.095-.513.348-.781 1.044-.318.825-.447 1.535-.557 2.223q.105.002.207.006c.36.014.726.027 1.368-.086.566-.1 1.098-.28 1.404-.489.306-.21.397-.332.391-.674-.012-.687-.662-1.656-1.28-1.957-.192-.094-.353-.134-.5-.127M7.817 1.305v4.11c0 .72-.576 1.303-1.286 1.303s-1.286-.583-1.286-1.304v-4.11C5.245.584 5.821 0 6.531 0s1.286.584 1.286 1.304" })
9
+ ] });
10
+ export {
11
+ SvgIconAppointments as default
12
+ };
@@ -4,6 +4,7 @@ export { default as IconAdminPortal } from './IconAdminPortal';
4
4
  export { default as IconAdmin } from './IconAdmin';
5
5
  export { default as IconAdmissionPostBac } from './IconAdmissionPostBac';
6
6
  export { default as IconAgenda } from './IconAgenda';
7
+ export { default as IconAppointments } from './IconAppointments';
7
8
  export { default as IconArchive } from './IconArchive';
8
9
  export { default as IconAssistance } from './IconAssistance';
9
10
  export { default as IconAssr } from './IconAssr';
@@ -91,6 +91,7 @@ export { default as IconRafterLeft } from './IconRafterLeft';
91
91
  export { default as IconRafterRight } from './IconRafterRight';
92
92
  export { default as IconRafterUp } from './IconRafterUp';
93
93
  export { default as IconReaction } from './IconReaction';
94
+ export { default as IconReadMail } from './IconReadMail';
94
95
  export { default as IconRecordPause } from './IconRecordPause';
95
96
  export { default as IconRecordStop } from './IconRecordStop';
96
97
  export { default as IconRecordVideo } from './IconRecordVideo';
@@ -136,6 +137,7 @@ export { default as IconTrendingUp } from './IconTrendingUp';
136
137
  export { default as IconUndo } from './IconUndo';
137
138
  export { default as IconUnlink } from './IconUnlink';
138
139
  export { default as IconUnlock } from './IconUnlock';
140
+ export { default as IconUnreadMail } from './IconUnreadMail';
139
141
  export { default as IconUpload } from './IconUpload';
140
142
  export { default as IconUserSearch } from './IconUserSearch';
141
143
  export { default as IconUser } from './IconUser';
@@ -5,12 +5,12 @@ import SvgIconClose from "../../icons/components/IconClose.js";
5
5
  import SvgIconReset from "../../icons/components/IconReset.js";
6
6
  import SvgIconSuccessOutline from "../../icons/components/IconSuccessOutline.js";
7
7
  import SvgIconWand from "../../icons/components/IconWand.js";
8
- import Button from "../../../components/Button/Button.js";
9
- import Image from "../../../components/Image/Image.js";
10
8
  import Tooltip from "../../../components/Tooltip/Tooltip.js";
11
9
  import Loading from "../../../components/Loading/Loading.js";
10
+ import Button from "../../../components/Button/Button.js";
12
11
  import Card from "../../../components/Card/Card.js";
13
12
  import IconButton from "../../../components/Button/IconButton.js";
13
+ import Image from "../../../components/Image/Image.js";
14
14
  const UploadCard = ({
15
15
  item,
16
16
  status = "idle",
@@ -1,5 +1,5 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
2
+ import { QueryClientProvider, QueryClient } from "@tanstack/react-query";
3
3
  import { EdificeClientProvider } from "../EdificeClientProvider/EdificeClientProvider.js";
4
4
  import { EdificeThemeContext } from "../EdificeThemeProvider/EdificeThemeProvider.context.js";
5
5
  const queryClient = new QueryClient(), Providers = ({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edifice.io/react",
3
- "version": "2.0.5",
3
+ "version": "2.1.0-develop-b2school.20250204153130",
4
4
  "description": "Edifice React Library",
5
5
  "keywords": [
6
6
  "react",
@@ -80,30 +80,30 @@
80
80
  "@pixi/mixin-get-child-by-name": "7.4.2",
81
81
  "@pixi/react": "7.1.2",
82
82
  "@popperjs/core": "2.11.8",
83
- "@tiptap/core": "2.3.0",
84
- "@tiptap/extension-character-count": "2.3.0",
85
- "@tiptap/extension-color": "2.3.0",
86
- "@tiptap/extension-focus": "2.3.0",
87
- "@tiptap/extension-font-family": "2.3.0",
88
- "@tiptap/extension-heading": "2.3.0",
89
- "@tiptap/extension-highlight": "2.3.0",
90
- "@tiptap/extension-image": "2.3.0",
91
- "@tiptap/extension-link": "2.3.0",
92
- "@tiptap/extension-list-item": "2.3.0",
93
- "@tiptap/extension-placeholder": "2.3.0",
94
- "@tiptap/extension-subscript": "2.3.0",
95
- "@tiptap/extension-superscript": "2.3.0",
96
- "@tiptap/extension-table": "2.3.0",
97
- "@tiptap/extension-table-cell": "2.3.0",
98
- "@tiptap/extension-table-header": "2.3.0",
99
- "@tiptap/extension-table-row": "2.3.0",
100
- "@tiptap/extension-text-align": "2.3.0",
101
- "@tiptap/extension-text-style": "2.3.0",
102
- "@tiptap/extension-typography": "2.3.0",
103
- "@tiptap/extension-underline": "2.3.0",
104
- "@tiptap/pm": "2.3.0",
105
- "@tiptap/react": "2.3.0",
106
- "@tiptap/starter-kit": "2.3.0",
83
+ "@tiptap/core": "2.11.0",
84
+ "@tiptap/extension-character-count": "2.11.0",
85
+ "@tiptap/extension-color": "2.11.0",
86
+ "@tiptap/extension-focus": "2.11.0",
87
+ "@tiptap/extension-font-family": "2.11.0",
88
+ "@tiptap/extension-heading": "2.11.0",
89
+ "@tiptap/extension-highlight": "2.11.0",
90
+ "@tiptap/extension-image": "2.11.0",
91
+ "@tiptap/extension-link": "2.11.0",
92
+ "@tiptap/extension-list-item": "2.11.0",
93
+ "@tiptap/extension-placeholder": "2.11.0",
94
+ "@tiptap/extension-subscript": "2.11.0",
95
+ "@tiptap/extension-superscript": "2.11.0",
96
+ "@tiptap/extension-table": "2.11.0",
97
+ "@tiptap/extension-table-cell": "2.11.0",
98
+ "@tiptap/extension-table-header": "2.11.0",
99
+ "@tiptap/extension-table-row": "2.11.0",
100
+ "@tiptap/extension-text-align": "2.11.0",
101
+ "@tiptap/extension-text-style": "2.11.0",
102
+ "@tiptap/extension-typography": "2.11.0",
103
+ "@tiptap/extension-underline": "2.11.0",
104
+ "@tiptap/pm": "2.11.0",
105
+ "@tiptap/react": "2.11.0",
106
+ "@tiptap/starter-kit": "2.11.0",
107
107
  "@uidotdev/usehooks": "^2.4.1",
108
108
  "clsx": "^2.1.1",
109
109
  "dayjs": "1.11.10",
@@ -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.0.5",
122
- "@edifice.io/tiptap-extensions": "2.0.5",
123
- "@edifice.io/utilities": "2.0.5"
121
+ "@edifice.io/bootstrap": "2.1.0-develop-b2school.20250204153130",
122
+ "@edifice.io/tiptap-extensions": "2.1.0-develop-b2school.20250204153130",
123
+ "@edifice.io/utilities": "2.1.0-develop-b2school.20250204153130"
124
124
  },
125
125
  "devDependencies": {
126
126
  "@babel/plugin-transform-react-pure-annotations": "^7.23.3",
@@ -148,8 +148,8 @@
148
148
  "vite": "^5.4.11",
149
149
  "vite-plugin-dts": "^4.1.0",
150
150
  "vite-tsconfig-paths": "^5.0.1",
151
- "@edifice.io/client": "2.0.5",
152
- "@edifice.io/config": "2.0.5"
151
+ "@edifice.io/client": "2.1.0-develop-b2school.20250204153130",
152
+ "@edifice.io/config": "2.1.0-develop-b2school.20250204153130"
153
153
  },
154
154
  "peerDependencies": {
155
155
  "@react-spring/web": "^9.7.5",