@soul-refiner/design-system 0.0.5 → 0.0.7

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 (274) hide show
  1. package/dist/{design-system.mjs → @soul-refiner/design-system.mjs} +37349 -34209
  2. package/dist/@soul-refiner/design-system.umd.js +1398 -0
  3. package/package.json +6 -2
  4. package/.eslintrc.js +0 -4
  5. package/.turbo/turbo-build.log +0 -12
  6. package/.turbo/turbo-test.log +0 -4417
  7. package/CHANGELOG.md +0 -7
  8. package/babel.config.js +0 -6
  9. package/custom.d.ts +0 -4
  10. package/dist/design-system.umd.js +0 -1426
  11. package/src/actions/Button/Button.module.scss +0 -205
  12. package/src/actions/Button/Button.spec.js +0 -56
  13. package/src/actions/Button/Button.tsx +0 -143
  14. package/src/actions/Button/index.ts +0 -1
  15. package/src/actions/Dropdown/Dropdown.module.scss +0 -77
  16. package/src/actions/Dropdown/Dropdown.spec.js +0 -149
  17. package/src/actions/Dropdown/Dropdown.tsx +0 -224
  18. package/src/actions/Dropdown/index.ts +0 -6
  19. package/src/actions/Dropzone/Dropzone.module.scss +0 -48
  20. package/src/actions/Dropzone/Dropzone.spec.js +0 -60
  21. package/src/actions/Dropzone/Dropzone.tsx +0 -191
  22. package/src/actions/Dropzone/index.ts +0 -1
  23. package/src/actions/Rate/Rate.module.scss +0 -17
  24. package/src/actions/Rate/Rate.tsx +0 -53
  25. package/src/actions/Rate/index.ts +0 -1
  26. package/src/actions/Switch/Switch.module.scss +0 -35
  27. package/src/actions/Switch/Switch.spec.js +0 -31
  28. package/src/actions/Switch/Switch.tsx +0 -34
  29. package/src/actions/Switch/index.ts +0 -1
  30. package/src/actions/index.ts +0 -5
  31. package/src/cards/CourseCard/CourseCard.module.scss +0 -219
  32. package/src/cards/CourseCard/CourseCard.spec.js +0 -60
  33. package/src/cards/CourseCard/CourseCard.tsx +0 -145
  34. package/src/cards/CourseCard/index.ts +0 -1
  35. package/src/cards/EpisodeCard/EpisodeCard.module.scss +0 -69
  36. package/src/cards/EpisodeCard/EpisodeCard.tsx +0 -53
  37. package/src/cards/EpisodeCard/index.ts +0 -1
  38. package/src/cards/FeatureCard/FeatureCard.module.scss +0 -116
  39. package/src/cards/FeatureCard/FeatureCard.spec.js +0 -70
  40. package/src/cards/FeatureCard/FeatureCard.tsx +0 -123
  41. package/src/cards/FeatureCard/index.ts +0 -1
  42. package/src/cards/index.ts +0 -3
  43. package/src/data/Bar/Bar.module.scss +0 -105
  44. package/src/data/Bar/Bar.tsx +0 -161
  45. package/src/data/Bar/index.ts +0 -1
  46. package/src/data/Line/Line.module.scss +0 -102
  47. package/src/data/Line/Line.tsx +0 -162
  48. package/src/data/Line/index.ts +0 -1
  49. package/src/data/Pie/Pie.module.scss +0 -56
  50. package/src/data/Pie/Pie.spec.js +0 -72
  51. package/src/data/Pie/Pie.tsx +0 -111
  52. package/src/data/Pie/index.ts +0 -1
  53. package/src/data/index.ts +0 -3
  54. package/src/editor/Editor.module.scss +0 -125
  55. package/src/editor/Editor.tsx +0 -327
  56. package/src/editor/common/elements.ts +0 -50
  57. package/src/editor/common/index.ts +0 -2
  58. package/src/editor/common/marks.ts +0 -27
  59. package/src/editor/components/MediaDrawer/MediaDrawer.module.scss +0 -316
  60. package/src/editor/components/MediaDrawer/MediaDrawer.tsx +0 -457
  61. package/src/editor/components/MediaDrawer/index.ts +0 -1
  62. package/src/editor/components/index.ts +0 -1
  63. package/src/editor/config/default.ts +0 -213
  64. package/src/editor/config/index.ts +0 -2
  65. package/src/editor/config/props.ts +0 -9
  66. package/src/editor/index.ts +0 -2
  67. package/src/editor/plateUI.ts +0 -82
  68. package/src/editor/plugins/blocks.tsx +0 -71
  69. package/src/editor/plugins/custom/assets/DefaultThumbnail.tsx +0 -57
  70. package/src/editor/plugins/custom/assets/index.ts +0 -1
  71. package/src/editor/plugins/custom/buttons.tsx +0 -289
  72. package/src/editor/plugins/custom/example.tsx +0 -64
  73. package/src/editor/plugins/custom/exitBreak.ts +0 -41
  74. package/src/editor/plugins/custom/footnote.tsx +0 -185
  75. package/src/editor/plugins/custom/index.ts +0 -14
  76. package/src/editor/plugins/custom/paywall.tsx +0 -156
  77. package/src/editor/plugins/custom/qa.tsx +0 -390
  78. package/src/editor/plugins/custom/resetBlockType.ts +0 -29
  79. package/src/editor/plugins/custom/selectOnBackspace.ts +0 -7
  80. package/src/editor/plugins/custom/softBreak.ts +0 -20
  81. package/src/editor/plugins/custom/styles/Button.module.scss +0 -51
  82. package/src/editor/plugins/custom/styles/Footnote.module.scss +0 -58
  83. package/src/editor/plugins/custom/styles/Paywall.module.scss +0 -67
  84. package/src/editor/plugins/custom/styles/QA.module.scss +0 -140
  85. package/src/editor/plugins/custom/styles/Video.module.scss +0 -79
  86. package/src/editor/plugins/custom/video.tsx +0 -163
  87. package/src/editor/plugins/index.ts +0 -18
  88. package/src/editor/plugins/inline.ts +0 -46
  89. package/src/editor/plugins/marks.ts +0 -25
  90. package/src/editor/plugins/utils.ts +0 -22
  91. package/src/feedback/Chip/Chip.module.scss +0 -23
  92. package/src/feedback/Chip/Chip.tsx +0 -58
  93. package/src/feedback/Chip/index.ts +0 -1
  94. package/src/feedback/Loader/Loader.module.scss +0 -18
  95. package/src/feedback/Loader/Loader.spec.js +0 -18
  96. package/src/feedback/Loader/Loader.tsx +0 -53
  97. package/src/feedback/Loader/index.ts +0 -1
  98. package/src/feedback/ProgressBar/ProgressBar.module.scss +0 -13
  99. package/src/feedback/ProgressBar/ProgressBar.tsx +0 -32
  100. package/src/feedback/ProgressBar/index.ts +0 -1
  101. package/src/feedback/Toast/Toast.module.scss +0 -44
  102. package/src/feedback/Toast/Toast.tsx +0 -76
  103. package/src/feedback/Toast/index.ts +0 -1
  104. package/src/feedback/Tooltip/Tooltip.module.scss +0 -47
  105. package/src/feedback/Tooltip/Tooltip.tsx +0 -10
  106. package/src/feedback/Tooltip/index.ts +0 -1
  107. package/src/feedback/index.ts +0 -5
  108. package/src/global.d.ts +0 -6
  109. package/src/iconography/Avatar/Avatar.module.scss +0 -90
  110. package/src/iconography/Avatar/Avatar.spec.js +0 -75
  111. package/src/iconography/Avatar/Avatar.tsx +0 -96
  112. package/src/iconography/Avatar/DefaultIcon.svg +0 -4
  113. package/src/iconography/Avatar/DefaultIcon.tsx +0 -12
  114. package/src/iconography/Avatar/iconHelpers.tsx +0 -186
  115. package/src/iconography/Avatar/index.ts +0 -1
  116. package/src/iconography/ColoredIcon/ColoredIcon.module.scss +0 -40
  117. package/src/iconography/ColoredIcon/ColoredIcon.tsx +0 -30
  118. package/src/iconography/ColoredIcon/index.ts +0 -5
  119. package/src/iconography/DevicePreview/DevicePreview.module.scss +0 -143
  120. package/src/iconography/DevicePreview/DevicePreview.tsx +0 -592
  121. package/src/iconography/DevicePreview/index.ts +0 -1
  122. package/src/iconography/IconHeader/IconHeader.module.scss +0 -42
  123. package/src/iconography/IconHeader/IconHeader.tsx +0 -42
  124. package/src/iconography/IconHeader/index.ts +0 -1
  125. package/src/iconography/StarRating/StarRating.tsx +0 -99
  126. package/src/iconography/StarRating/index.ts +0 -1
  127. package/src/iconography/index.ts +0 -5
  128. package/src/implementations/BodyContent/BodyContent.module.scss +0 -38
  129. package/src/implementations/BodyContent/BodyContent.tsx +0 -78
  130. package/src/implementations/BodyContent/index.ts +0 -2
  131. package/src/implementations/JoinGroupModal/JoinGroupModal.module.scss +0 -83
  132. package/src/implementations/JoinGroupModal/JoinGroupModal.tsx +0 -176
  133. package/src/implementations/JoinGroupModal/index.ts +0 -1
  134. package/src/implementations/index.ts +0 -2
  135. package/src/index.ts +0 -149
  136. package/src/inputs/CalendarInput/CalendarInput.module.scss +0 -38
  137. package/src/inputs/CalendarInput/CalendarInput.spec.js +0 -19
  138. package/src/inputs/CalendarInput/CalendarInput.tsx +0 -29
  139. package/src/inputs/CalendarInput/index.ts +0 -1
  140. package/src/inputs/CheckboxInput/CheckboxInput.module.scss +0 -23
  141. package/src/inputs/CheckboxInput/CheckboxInput.tsx +0 -39
  142. package/src/inputs/CheckboxInput/index.ts +0 -1
  143. package/src/inputs/FeedInput/FeedInput.module.scss +0 -48
  144. package/src/inputs/FeedInput/FeedInput.spec.js +0 -16
  145. package/src/inputs/FeedInput/FeedInput.tsx +0 -197
  146. package/src/inputs/FeedInput/index.ts +0 -1
  147. package/src/inputs/InboxInput/InboxInput.module.scss +0 -48
  148. package/src/inputs/InboxInput/InboxInput.spec.js +0 -19
  149. package/src/inputs/InboxInput/InboxInput.tsx +0 -97
  150. package/src/inputs/InboxInput/index.ts +0 -1
  151. package/src/inputs/PostInput/PostInput.module.scss +0 -49
  152. package/src/inputs/PostInput/PostInput.spec.js +0 -19
  153. package/src/inputs/PostInput/PostInput.tsx +0 -54
  154. package/src/inputs/PostInput/index.ts +0 -1
  155. package/src/inputs/RadioInput/RadioInput.module.scss +0 -68
  156. package/src/inputs/RadioInput/RadioInput.tsx +0 -55
  157. package/src/inputs/RadioInput/index.ts +0 -1
  158. package/src/inputs/SearchInput/SearchInput.module.scss +0 -40
  159. package/src/inputs/SearchInput/SearchInput.tsx +0 -61
  160. package/src/inputs/SearchInput/index.ts +0 -1
  161. package/src/inputs/SelectInput/SelectInput.module.scss +0 -66
  162. package/src/inputs/SelectInput/SelectInput.tsx +0 -145
  163. package/src/inputs/SelectInput/index.ts +0 -1
  164. package/src/inputs/TagInput/TagInput.module.scss +0 -75
  165. package/src/inputs/TagInput/TagInput.tsx +0 -115
  166. package/src/inputs/TagInput/index.ts +0 -1
  167. package/src/inputs/TextInput/TextInput.module.scss +0 -35
  168. package/src/inputs/TextInput/TextInput.tsx +0 -46
  169. package/src/inputs/TextInput/index.ts +0 -1
  170. package/src/inputs/index.ts +0 -10
  171. package/src/lists/ContactDetails/ContactDetails.module.scss +0 -70
  172. package/src/lists/ContactDetails/ContactDetails.spec.js +0 -69
  173. package/src/lists/ContactDetails/ContactDetails.tsx +0 -185
  174. package/src/lists/ContactDetails/index.ts +0 -1
  175. package/src/lists/index.ts +0 -1
  176. package/src/navigation/Breadcrumbs/Breadcrumbs.module.scss +0 -18
  177. package/src/navigation/Breadcrumbs/Breadcrumbs.spec.js +0 -38
  178. package/src/navigation/Breadcrumbs/Breadcrumbs.tsx +0 -43
  179. package/src/navigation/Breadcrumbs/index.ts +0 -1
  180. package/src/navigation/Drawer/Drawer.module.scss +0 -104
  181. package/src/navigation/Drawer/Drawer.tsx +0 -177
  182. package/src/navigation/Drawer/index.ts +0 -1
  183. package/src/navigation/EditorBar/EditorBar.module.scss +0 -118
  184. package/src/navigation/EditorBar/EditorBar.tsx +0 -416
  185. package/src/navigation/EditorBar/components/AlignmentDropdown/AlignmentDropdown.tsx +0 -106
  186. package/src/navigation/EditorBar/components/AlignmentDropdown/index.ts +0 -1
  187. package/src/navigation/EditorBar/components/ButtonModal/ButtonModal.module.scss +0 -85
  188. package/src/navigation/EditorBar/components/ButtonModal/ButtonModal.tsx +0 -314
  189. package/src/navigation/EditorBar/components/ButtonModal/assets/Comment.tsx +0 -28
  190. package/src/navigation/EditorBar/components/ButtonModal/assets/GiftSubscription.tsx +0 -28
  191. package/src/navigation/EditorBar/components/ButtonModal/assets/Link.tsx +0 -28
  192. package/src/navigation/EditorBar/components/ButtonModal/assets/Share.tsx +0 -28
  193. package/src/navigation/EditorBar/components/ButtonModal/assets/ShareCommunity.tsx +0 -42
  194. package/src/navigation/EditorBar/components/ButtonModal/assets/Signup.tsx +0 -68
  195. package/src/navigation/EditorBar/components/ButtonModal/assets/Special.tsx +0 -24
  196. package/src/navigation/EditorBar/components/ButtonModal/assets/Subscribe.tsx +0 -28
  197. package/src/navigation/EditorBar/components/ButtonModal/assets/index.ts +0 -8
  198. package/src/navigation/EditorBar/components/ButtonModal/index.ts +0 -1
  199. package/src/navigation/EditorBar/components/FontDropdown/FontDropdown.module.scss +0 -16
  200. package/src/navigation/EditorBar/components/FontDropdown/FontDropdown.tsx +0 -137
  201. package/src/navigation/EditorBar/components/FontDropdown/index.ts +0 -1
  202. package/src/navigation/EditorBar/components/MoreDropdown/MoreDropdown.module.scss +0 -43
  203. package/src/navigation/EditorBar/components/MoreDropdown/MoreDropdown.tsx +0 -124
  204. package/src/navigation/EditorBar/components/MoreDropdown/index.ts +0 -1
  205. package/src/navigation/EditorBar/components/OutlineDropdown/OutlineDropdown.module.scss +0 -21
  206. package/src/navigation/EditorBar/components/OutlineDropdown/OutlineDropdown.tsx +0 -37
  207. package/src/navigation/EditorBar/components/OutlineDropdown/index.ts +0 -1
  208. package/src/navigation/EditorBar/components/TextTypeDropdown/TextTypeDropdown.module.scss +0 -51
  209. package/src/navigation/EditorBar/components/TextTypeDropdown/TextTypeDropdown.tsx +0 -80
  210. package/src/navigation/EditorBar/components/TextTypeDropdown/index.ts +0 -1
  211. package/src/navigation/EditorBar/components/VideoModal/VideoModal.module.scss +0 -150
  212. package/src/navigation/EditorBar/components/VideoModal/VideoModal.tsx +0 -163
  213. package/src/navigation/EditorBar/components/VideoModal/index.ts +0 -1
  214. package/src/navigation/EditorBar/components/index.ts +0 -7
  215. package/src/navigation/EditorBar/index.ts +0 -1
  216. package/src/navigation/MenuTabs/MenuTabs.module.scss +0 -34
  217. package/src/navigation/MenuTabs/MenuTabs.spec.js +0 -36
  218. package/src/navigation/MenuTabs/MenuTabs.tsx +0 -52
  219. package/src/navigation/MenuTabs/index.ts +0 -1
  220. package/src/navigation/Navigation/Navigation.module.scss +0 -92
  221. package/src/navigation/Navigation/Navigation.spec.js +0 -144
  222. package/src/navigation/Navigation/Navigation.tsx +0 -111
  223. package/src/navigation/Navigation/SubNavigation.module.scss +0 -255
  224. package/src/navigation/Navigation/SubNavigation.spec.js +0 -112
  225. package/src/navigation/Navigation/SubNavigation.tsx +0 -443
  226. package/src/navigation/Navigation/index.ts +0 -15
  227. package/src/navigation/Pagination/Pagination.module.scss +0 -49
  228. package/src/navigation/Pagination/Pagination.tsx +0 -115
  229. package/src/navigation/Pagination/index.ts +0 -1
  230. package/src/navigation/index.ts +0 -21
  231. package/src/surfaces/Comment/Comment.module.scss +0 -106
  232. package/src/surfaces/Comment/Comment.spec.js +0 -105
  233. package/src/surfaces/Comment/Comment.tsx +0 -157
  234. package/src/surfaces/Comment/index.ts +0 -1
  235. package/src/surfaces/Faq/Faq.module.scss +0 -91
  236. package/src/surfaces/Faq/Faq.spec.js +0 -38
  237. package/src/surfaces/Faq/Faq.tsx +0 -156
  238. package/src/surfaces/Faq/index.ts +0 -1
  239. package/src/surfaces/Message/Message.module.scss +0 -37
  240. package/src/surfaces/Message/Message.spec.js +0 -47
  241. package/src/surfaces/Message/Message.tsx +0 -54
  242. package/src/surfaces/Message/index.ts +0 -1
  243. package/src/surfaces/Modal/Modal.module.scss +0 -52
  244. package/src/surfaces/Modal/Modal.spec.js +0 -38
  245. package/src/surfaces/Modal/Modal.tsx +0 -131
  246. package/src/surfaces/Modal/index.ts +0 -5
  247. package/src/surfaces/Plan/Plan.module.scss +0 -79
  248. package/src/surfaces/Plan/Plan.tsx +0 -75
  249. package/src/surfaces/Plan/index.ts +0 -1
  250. package/src/surfaces/Post/Post.module.scss +0 -46
  251. package/src/surfaces/Post/Post.spec.js +0 -103
  252. package/src/surfaces/Post/Post.tsx +0 -185
  253. package/src/surfaces/Post/index.ts +0 -1
  254. package/src/surfaces/Post/postHelpers.ts +0 -20
  255. package/src/surfaces/ProfileHeader/ProfileHeader.module.scss +0 -202
  256. package/src/surfaces/ProfileHeader/ProfileHeader.tsx +0 -103
  257. package/src/surfaces/ProfileHeader/index.ts +0 -1
  258. package/src/surfaces/RatingsOverview/RatingsOverview.module.scss +0 -54
  259. package/src/surfaces/RatingsOverview/RatingsOverview.tsx +0 -69
  260. package/src/surfaces/RatingsOverview/index.ts +0 -1
  261. package/src/surfaces/Review/Review.module.scss +0 -73
  262. package/src/surfaces/Review/Review.tsx +0 -88
  263. package/src/surfaces/Review/index.ts +0 -1
  264. package/src/surfaces/index.ts +0 -9
  265. package/src/tables/Filter/Filter.module.scss +0 -34
  266. package/src/tables/Filter/Filter.tsx +0 -30
  267. package/src/tables/Filter/index.ts +0 -1
  268. package/src/tables/Table/Table.module.scss +0 -126
  269. package/src/tables/Table/Table.spec.js +0 -113
  270. package/src/tables/Table/Table.tsx +0 -251
  271. package/src/tables/Table/index.ts +0 -7
  272. package/src/tables/index.ts +0 -7
  273. package/tsconfig.json +0 -14
  274. package/vite.config.ts +0 -29
@@ -1,390 +0,0 @@
1
- import React from "react";
2
- import { createPluginFactory, isEditorReadOnly } from "@udecode/plate";
3
- import { Comment as IComment, User as IUser } from "@soul-refiner/models";
4
- import {
5
- Check,
6
- ChevronDown,
7
- ChevronUp,
8
- CloseThin,
9
- Details,
10
- Globe,
11
- GroupLarge,
12
- Lock,
13
- UserSelect,
14
- } from "@soul-refiner/icons/src";
15
- import { ELEMENT_QA, ELEMENT_PARAGRAPH } from "../../common";
16
-
17
- import { Button, Dropdown } from "../../../actions";
18
- import { EditorContext } from "../../Editor";
19
- import { Avatar, IconHeader } from "../../../iconography";
20
- import { CheckboxInput, PostInput, SearchInput } from "../../../inputs";
21
- import { Comment, Modal } from "../../../surfaces";
22
-
23
- import styles from "./styles/QA.module.scss";
24
-
25
- type QAProps = any;
26
-
27
- export const QA = ({ attributes, className, children, editor }: QAProps) => {
28
- const {
29
- id,
30
- handleAddComment,
31
- handleAddReaction,
32
- handleGetComments,
33
- handleGetFriends,
34
- user,
35
- } = React.useContext(EditorContext);
36
- const [showAnswers, setShowAnswers] = React.useState(false);
37
- const [showFriendsModal, setShowFriendsModal] = React.useState(false);
38
- const [answer, setAnswer] = React.useState<Omit<IComment, "id" | "created">>({
39
- parentId: id,
40
- user,
41
- privacy: "public",
42
- reactions: [],
43
- text: "",
44
- });
45
- const [comments, setComments] = React.useState<IComment[]>([]);
46
- const [friendQuery, setFriendQuery] = React.useState("");
47
- const [friends, setFriends] = React.useState<IUser[]>([]);
48
- const { ref: DONT_USE, ...htmlAttributes } = attributes;
49
-
50
- const toggleAnswers = () => setShowAnswers((prev) => !prev);
51
-
52
- const handleAnswerChange = (event: React.FormEvent) => {
53
- const value = (event.target as HTMLInputElement)?.value;
54
- setAnswer((prev) => ({
55
- ...prev,
56
- text: value,
57
- }));
58
- };
59
-
60
- const handleAnswerSubmit = (event: React.KeyboardEvent) => {
61
- if (event.key === "Enter") {
62
- handleAddComment({
63
- parentId: id,
64
- text: answer.text,
65
- user,
66
- });
67
- }
68
- };
69
-
70
- const handlePrivacyChange = (event: React.MouseEvent) => {
71
- const value = (event.target as HTMLElement)?.getAttribute("data-value");
72
- if (!value) return;
73
- switch (value) {
74
- case "private":
75
- setAnswer((prev) => ({
76
- ...prev,
77
- privacy: "private",
78
- }));
79
- return;
80
- case "group":
81
- setAnswer((prev) => ({
82
- ...prev,
83
- privacy: "group",
84
- }));
85
- return;
86
- case "friends":
87
- if (!Array.isArray(answer.privacy)) {
88
- setAnswer((prev) => ({
89
- ...prev,
90
- privacy: [],
91
- }));
92
- }
93
- setShowFriendsModal(true);
94
- return;
95
- case "public":
96
- setAnswer((prev) => ({
97
- ...prev,
98
- privacy: "public",
99
- }));
100
- return;
101
- }
102
- };
103
-
104
- const handleFriendQuery = (event: React.FormEvent) => {
105
- const value = (event.target as HTMLInputElement)?.value;
106
- setFriendQuery(value);
107
- };
108
-
109
- const handleAddFriend = (friendId: string) => {
110
- if (Array.isArray(answer.privacy)) {
111
- if (answer.privacy.includes(friendId)) {
112
- setAnswer((prev) => ({
113
- ...prev,
114
- privacy: [...prev.privacy].filter((id) => id !== friendId),
115
- }));
116
- } else {
117
- setAnswer((prev) => ({
118
- ...prev,
119
- privacy: [...prev.privacy, friendId],
120
- }));
121
- }
122
- }
123
- };
124
-
125
- React.useEffect(() => {
126
- /**
127
- * TODO: DEBOUNCE
128
- */
129
- if (Array.isArray(answer.privacy)) {
130
- handleGetFriends(friendQuery, answer.privacy).then((res) =>
131
- setFriends(res)
132
- );
133
- } else {
134
- handleGetFriends(friendQuery).then((res) => setFriends(res));
135
- }
136
- }, [friendQuery]);
137
-
138
- React.useEffect(() => {
139
- if (showAnswers) {
140
- handleGetComments(id).then((res) => setComments(res));
141
- }
142
- }, [showAnswers]);
143
-
144
- const editable = !isEditorReadOnly(editor);
145
-
146
- const triggerProps = {
147
- iconSize: 18,
148
- size: 34,
149
- fill: "var(--colorify-blue-3)",
150
- style: {
151
- borderRadius: "50%",
152
- backgroundColor: "var(--colorify-blue-1)",
153
- border: "1px solid var(--colorify-blue-2)",
154
- cursor: "pointer",
155
- },
156
- };
157
- const trigger =
158
- answer.privacy === "group" ? (
159
- <GroupLarge {...triggerProps} />
160
- ) : answer.privacy === "public" ? (
161
- <Globe {...triggerProps} />
162
- ) : answer.privacy === "private" ? (
163
- <Lock {...triggerProps} />
164
- ) : (
165
- <UserSelect {...triggerProps} />
166
- );
167
-
168
- return (
169
- <div className={`${styles.wrapper} ${className ? className : ""}`}>
170
- <div className={styles.childrenWrapper}>{children}</div>
171
- <div className={styles.answersWrapper} contentEditable={false}>
172
- <div
173
- className={styles.showAnswers}
174
- onClick={!editable ? toggleAnswers : undefined}
175
- >
176
- <p>Show answers</p>
177
- {showAnswers ? (
178
- <ChevronUp size={24} iconSize={12} fill="var(--color-grey-6)" />
179
- ) : (
180
- <ChevronDown size={24} iconSize={12} fill="var(--color-grey-6)" />
181
- )}
182
- </div>
183
- {showAnswers && comments.length && (
184
- <div className={styles.commentWrapper}>
185
- {comments.map((comment) => (
186
- <Comment
187
- key={comment.id}
188
- showReplies
189
- onReact={() =>
190
- handleAddReaction({
191
- parentId: comment.id,
192
- type: "like",
193
- userId: user.id,
194
- })
195
- }
196
- onReply={(text) =>
197
- handleAddComment({
198
- parentId: comment.id,
199
- text: text,
200
- user,
201
- })
202
- }
203
- onShowReplies={() => undefined}
204
- {...comment}
205
- />
206
- ))}
207
- </div>
208
- )}
209
- <div className={styles.inputWrapper}>
210
- <Avatar size={40} url={user.avatar} />
211
- <PostInput
212
- disabled={editable}
213
- onChange={handleAnswerChange}
214
- onKeyDown={handleAnswerSubmit}
215
- placeholder="Write your answer"
216
- value={answer.text}
217
- />
218
- <Dropdown
219
- disabled={editable}
220
- maintainState={false}
221
- open="left"
222
- trigger={trigger}
223
- onChange={handlePrivacyChange}
224
- >
225
- <div className={styles.privacyOption} data-value="private">
226
- <div
227
- className={`${styles.radio} ${
228
- answer.privacy === "private" ? "active" : ""
229
- }`}
230
- />
231
- <div>
232
- <div className={styles.privacyTitle}>
233
- <Lock size={16} iconSize={13} />
234
- <p>Private</p>
235
- </div>
236
- <p>Only you can see your answer</p>
237
- </div>
238
- </div>
239
- <div className={styles.privacyOption} data-value="group">
240
- <div
241
- className={`${styles.radio} ${
242
- answer.privacy === "group" ? "active" : ""
243
- }`}
244
- />
245
- <div>
246
- <div className={styles.privacyTitle}>
247
- <GroupLarge size={16} iconSize={14} />
248
- <p>Group</p>
249
- </div>
250
- <p>Only your group can see your answer</p>
251
- </div>
252
- </div>
253
- <div className={styles.privacyOption} data-value="friends">
254
- <div
255
- className={`${styles.radio} ${
256
- Array.isArray(answer.privacy) ? "active" : ""
257
- }`}
258
- />
259
- <div>
260
- <div className={styles.privacyTitle}>
261
- <UserSelect size={16} iconSize={14} />
262
- <p>Select Friends</p>
263
- </div>
264
- <p>Only selected friends can see your answer</p>
265
- </div>
266
- </div>
267
- <div className={styles.privacyOption} data-value="public">
268
- <div
269
- className={`${styles.radio} ${
270
- answer.privacy === "public" ? "active" : ""
271
- }`}
272
- />
273
- <div>
274
- <div className={styles.privacyTitle}>
275
- <Globe size={16} iconSize={15} />
276
- <p>Public</p>
277
- </div>
278
- <p>Anyone on your public feed can see your answer</p>
279
- </div>
280
- </div>
281
- </Dropdown>
282
- </div>
283
- </div>
284
- <Modal controlledOpen={showFriendsModal}>
285
- <Modal.Content
286
- header={
287
- <IconHeader
288
- className={styles.iconHeader}
289
- color="purple"
290
- icon={<Details fill="var(--colorify-purple-3)" />}
291
- title={
292
- <span
293
- style={{
294
- color: "var(--color-purple-3)",
295
- fontSize: "20px",
296
- fontWeight: 700,
297
- }}
298
- >
299
- Select friends
300
- </span>
301
- }
302
- />
303
- }
304
- footer={
305
- <div className={styles.friendsModalFooter}>
306
- <Modal.Dismiss>
307
- <Button
308
- buttonType="secondary"
309
- icon={<CloseThin size={24} iconSize={13} />}
310
- onClick={() => {
311
- setShowFriendsModal(false);
312
- setAnswer((prev) => ({
313
- ...prev,
314
- privacy: "public",
315
- }));
316
- }}
317
- shape="rectangular"
318
- uppercase={false}
319
- >
320
- Cancel
321
- </Button>
322
- </Modal.Dismiss>
323
- <Modal.Dismiss>
324
- <Button
325
- buttonColor="var(--color-blue-3)"
326
- color="var(--color-blue-10)"
327
- icon={<Check size={24} iconSize={16} />}
328
- onClick={() => setShowFriendsModal(false)}
329
- shape="rectangular"
330
- uppercase={false}
331
- >
332
- Confirm
333
- </Button>
334
- </Modal.Dismiss>
335
- </div>
336
- }
337
- setClosed={() => setShowFriendsModal(false)}
338
- >
339
- <div className={styles.friendsModal} contentEditable={false}>
340
- <SearchInput
341
- as="div"
342
- expanded={true}
343
- expandable={false}
344
- onChange={handleFriendQuery}
345
- placeholder="Search..."
346
- value={friendQuery}
347
- />
348
- <div className={styles.friendsWrapper}>
349
- {friends.map((friend) => (
350
- <div
351
- className={styles.friend}
352
- key={friend.id}
353
- onClick={() => handleAddFriend(friend.id)}
354
- >
355
- <Avatar
356
- presence={friend?.active ? "online" : undefined}
357
- size={40}
358
- title={`${friend.firstName} ${friend.lastName}`}
359
- url={friend.avatar}
360
- />
361
- <CheckboxInput
362
- selected={
363
- Array.isArray(answer.privacy) &&
364
- answer.privacy.includes(friend.id)
365
- }
366
- />
367
- </div>
368
- ))}
369
- </div>
370
- </div>
371
- </Modal.Content>
372
- </Modal>
373
- </div>
374
- );
375
- };
376
-
377
- export const createQAPlugin = createPluginFactory({
378
- key: ELEMENT_QA,
379
- type: ELEMENT_QA,
380
- isElement: true,
381
- component: QA,
382
- then: (editor) => ({
383
- inject: {
384
- props: {
385
- classNames: undefined,
386
- validTypes: [ELEMENT_PARAGRAPH],
387
- },
388
- },
389
- }),
390
- });
@@ -1,29 +0,0 @@
1
- import { isBlockAboveEmpty, isSelectionAtBlockStart } from "@udecode/plate";
2
-
3
- import {
4
- ELEMENT_BLOCKQUOTE,
5
- ELEMENT_PARAGRAPH,
6
- ELEMENT_TODO_LI,
7
- } from "../../common";
8
-
9
- const resetBlockTypesCommonRule = {
10
- types: [ELEMENT_BLOCKQUOTE, ELEMENT_TODO_LI],
11
- defaultType: ELEMENT_PARAGRAPH,
12
- };
13
-
14
- export const resetBlockTypePlugin = {
15
- options: {
16
- rules: [
17
- {
18
- ...resetBlockTypesCommonRule,
19
- hotkey: "Enter",
20
- predicate: isBlockAboveEmpty,
21
- },
22
- {
23
- ...resetBlockTypesCommonRule,
24
- hotkey: "Backspace",
25
- predicate: isSelectionAtBlockStart,
26
- },
27
- ],
28
- },
29
- };
@@ -1,7 +0,0 @@
1
- import { ELEMENT_HR, ELEMENT_IMAGE, ELEMENT_MEDIA_EMBED } from "../../common";
2
-
3
- export const selectOnBackspace = {
4
- options: {
5
- query: { allow: [ELEMENT_HR, ELEMENT_IMAGE, ELEMENT_MEDIA_EMBED] },
6
- },
7
- };
@@ -1,20 +0,0 @@
1
- import {
2
- ELEMENT_BLOCKQUOTE,
3
- ELEMENT_CODE_BLOCK,
4
- ELEMENT_TD,
5
- SoftBreakPlugin,
6
- } from "@udecode/plate";
7
-
8
- export const softBreakPlugin = {
9
- options: {
10
- rules: [
11
- { hotkey: "shift+enter" },
12
- {
13
- hotkey: "enter",
14
- query: {
15
- allow: [ELEMENT_CODE_BLOCK, ELEMENT_BLOCKQUOTE, ELEMENT_TD],
16
- },
17
- },
18
- ],
19
- },
20
- };
@@ -1,51 +0,0 @@
1
- @use "@soul-refiner/styles/mixins";
2
-
3
- .colorpicker {
4
- @include mixins.flex($justify: center, $align: center, $gap: 16px);
5
- z-index: 5;
6
- position: absolute;
7
- top: 48px;
8
- left: calc(50% - 148px);
9
- border-radius: 16px;
10
- padding: 8px 16px;
11
- box-shadow: 1px 1px 5px #666;
12
- background-color: #ffffff;
13
- }
14
-
15
- .buttonWrapper {
16
- @include mixins.flex($justify: center, $align: center);
17
- position: relative;
18
- }
19
-
20
- .color {
21
- width: 24px;
22
- height: 24px;
23
- border-radius: 50%;
24
- background-color: var(--option-color);
25
- cursor: pointer;
26
- }
27
-
28
- .captionWrapper {
29
- max-width: 373px;
30
- margin: 24px auto !important;
31
-
32
- p {
33
- text-align: center;
34
- margin-bottom: 25px;
35
- }
36
-
37
- input {
38
- height: 48px;
39
- flex: 1;
40
- background: #f2f7fd;
41
- border: 0px;
42
- border-radius: 4px 0px 0px 4px;
43
- padding: 16px 19px;
44
- outline: none;
45
- }
46
-
47
- input + button {
48
- height: 48px;
49
- border-radius: 0px 4px 4px 0px !important;
50
- }
51
- }
@@ -1,58 +0,0 @@
1
- @use "@soul-refiner/styles/mixins";
2
-
3
- .inline {
4
- vertical-align: super;
5
- font-size: smaller;
6
- font-weight: 700;
7
- text-decoration: underline;
8
-
9
- &:hover {
10
- cursor: pointer;
11
- color: var(--color-blue-5);
12
- }
13
- }
14
-
15
- .floating {
16
- @include mixins.flex($align: center, $gap: 4px);
17
- position: absolute;
18
- left: 0px;
19
- z-index: 20 !important;
20
- width: auto;
21
- background-color: #ffffff;
22
- border-radius: 4px;
23
- box-shadow: rgb(15 15 15 / 5%) 0 0 0 1px, rgb(15 15 15 / 10%) 0 3px 6px,
24
- rgb(15 15 15 / 20%) 0 9px 24px;
25
-
26
- p {
27
- min-width: 16px;
28
- max-width: 400px;
29
- padding: 6px 0px;
30
- width: max-content;
31
- cursor: text;
32
- line-height: 0px;
33
- }
34
- }
35
-
36
- .footnotesWrapper {
37
- p {
38
- counter-increment: footnote_counter_end 1;
39
- outline: none;
40
-
41
- & > span:first-of-type {
42
- position: relative;
43
-
44
- &::before {
45
- position: absolute;
46
- content: counter(footnote_counter_end);
47
- left: 0px;
48
- top: -3px;
49
- text-decoration: underline;
50
- color: var(--color-blue-5);
51
- }
52
- }
53
-
54
- & > span:last-of-type {
55
- margin-left: 24px;
56
- }
57
- }
58
- }
@@ -1,67 +0,0 @@
1
- @use "@soul-refiner/styles/mixins";
2
-
3
- .wrapper {
4
- position: relative;
5
-
6
- .below {
7
- @include mixins.flex($align: center, $justify: center, $gap: 24px);
8
-
9
- .line {
10
- height: 1px;
11
- width: 100%;
12
- background-color: var(--color-grey-8);
13
- }
14
-
15
- button {
16
- flex-shrink: 0;
17
- }
18
- }
19
- }
20
-
21
- .paywall {
22
- @include mixins.flex(
23
- $gap: 21px,
24
- $dir: column,
25
- $align: center,
26
- $justify: center
27
- );
28
- padding: 37px;
29
- margin-bottom: 72px !important;
30
- background-color: var(--bg-color);
31
- border-left: 10px solid var(--highlight-color);
32
- border-radius: 12px;
33
- color: #ffffff;
34
- span {
35
- color: #ffffff;
36
- }
37
-
38
- .switch {
39
- @include mixins.font(400, 12px, 12px);
40
- color: #ffffff;
41
- a {
42
- font-weight: 700;
43
- color: #ffffff;
44
- }
45
- }
46
- }
47
-
48
- .colorpicker {
49
- @include mixins.flex($justify: center, $align: center, $gap: 16px);
50
- position: absolute;
51
- bottom: 56px;
52
- left: calc(50% - 148px);
53
- border-radius: 16px;
54
- padding: 8px 16px;
55
- box-shadow: 1px 1px 5px #666;
56
- background-color: #ffffff;
57
- }
58
-
59
- .color {
60
- box-sizing: border-box;
61
- width: 24px;
62
- height: 24px;
63
- border-radius: 50%;
64
- border-left: 12px solid var(--option-color);
65
- background-color: var(--option-color-dark);
66
- cursor: pointer;
67
- }