@soul-refiner/design-system 0.0.10 → 0.0.11

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 (267) hide show
  1. package/dist/custom.d.ts +4 -0
  2. package/dist/index.d.ts +1 -0
  3. package/dist/{design-system.umd.cjs → index.umd.cjs} +1 -1
  4. package/dist/src/actions/Button/Button.module.scss +205 -0
  5. package/dist/src/actions/Button/Button.spec.js +56 -0
  6. package/dist/src/actions/Button/Button.tsx +143 -0
  7. package/dist/src/actions/Button/index.ts +1 -0
  8. package/dist/src/actions/Dropdown/Dropdown.module.scss +77 -0
  9. package/dist/src/actions/Dropdown/Dropdown.spec.js +149 -0
  10. package/dist/src/actions/Dropdown/Dropdown.tsx +224 -0
  11. package/dist/src/actions/Dropdown/index.ts +6 -0
  12. package/dist/src/actions/Dropzone/Dropzone.module.scss +48 -0
  13. package/dist/src/actions/Dropzone/Dropzone.spec.js +60 -0
  14. package/dist/src/actions/Dropzone/Dropzone.tsx +191 -0
  15. package/dist/src/actions/Dropzone/index.ts +1 -0
  16. package/dist/src/actions/Rate/Rate.module.scss +17 -0
  17. package/dist/src/actions/Rate/Rate.tsx +53 -0
  18. package/dist/src/actions/Rate/index.ts +1 -0
  19. package/dist/src/actions/Switch/Switch.module.scss +35 -0
  20. package/dist/src/actions/Switch/Switch.spec.js +31 -0
  21. package/dist/src/actions/Switch/Switch.tsx +34 -0
  22. package/dist/src/actions/Switch/index.ts +1 -0
  23. package/dist/src/actions/index.ts +5 -0
  24. package/dist/src/cards/CourseCard/CourseCard.module.scss +219 -0
  25. package/dist/src/cards/CourseCard/CourseCard.spec.js +60 -0
  26. package/dist/src/cards/CourseCard/CourseCard.tsx +145 -0
  27. package/dist/src/cards/CourseCard/index.ts +1 -0
  28. package/dist/src/cards/EpisodeCard/EpisodeCard.module.scss +69 -0
  29. package/dist/src/cards/EpisodeCard/EpisodeCard.tsx +53 -0
  30. package/dist/src/cards/EpisodeCard/index.ts +1 -0
  31. package/dist/src/cards/FeatureCard/FeatureCard.module.scss +116 -0
  32. package/dist/src/cards/FeatureCard/FeatureCard.spec.js +70 -0
  33. package/dist/src/cards/FeatureCard/FeatureCard.tsx +123 -0
  34. package/dist/src/cards/FeatureCard/index.ts +1 -0
  35. package/dist/src/cards/index.ts +3 -0
  36. package/dist/src/data/Bar/Bar.module.scss +105 -0
  37. package/dist/src/data/Bar/Bar.tsx +161 -0
  38. package/dist/src/data/Bar/index.ts +1 -0
  39. package/dist/src/data/Line/Line.module.scss +102 -0
  40. package/dist/src/data/Line/Line.tsx +162 -0
  41. package/dist/src/data/Line/index.ts +1 -0
  42. package/dist/src/data/Pie/Pie.module.scss +56 -0
  43. package/dist/src/data/Pie/Pie.spec.js +72 -0
  44. package/dist/src/data/Pie/Pie.tsx +111 -0
  45. package/dist/src/data/Pie/index.ts +1 -0
  46. package/dist/src/data/index.ts +3 -0
  47. package/dist/src/editor/Editor.module.scss +125 -0
  48. package/dist/src/editor/Editor.tsx +327 -0
  49. package/dist/src/editor/common/elements.ts +50 -0
  50. package/dist/src/editor/common/index.ts +2 -0
  51. package/dist/src/editor/common/marks.ts +27 -0
  52. package/dist/src/editor/components/MediaDrawer/MediaDrawer.module.scss +316 -0
  53. package/dist/src/editor/components/MediaDrawer/MediaDrawer.tsx +457 -0
  54. package/dist/src/editor/components/MediaDrawer/index.ts +1 -0
  55. package/dist/src/editor/components/index.ts +1 -0
  56. package/dist/src/editor/config/default.ts +213 -0
  57. package/dist/src/editor/config/index.ts +2 -0
  58. package/dist/src/editor/config/props.ts +9 -0
  59. package/dist/src/editor/index.ts +2 -0
  60. package/dist/src/editor/plateUI.ts +82 -0
  61. package/dist/src/editor/plugins/blocks.tsx +71 -0
  62. package/dist/src/editor/plugins/custom/assets/DefaultThumbnail.tsx +57 -0
  63. package/dist/src/editor/plugins/custom/assets/index.ts +1 -0
  64. package/dist/src/editor/plugins/custom/buttons.tsx +289 -0
  65. package/dist/src/editor/plugins/custom/example.tsx +64 -0
  66. package/dist/src/editor/plugins/custom/exitBreak.ts +41 -0
  67. package/dist/src/editor/plugins/custom/footnote.tsx +185 -0
  68. package/dist/src/editor/plugins/custom/index.ts +14 -0
  69. package/dist/src/editor/plugins/custom/paywall.tsx +156 -0
  70. package/dist/src/editor/plugins/custom/qa.tsx +390 -0
  71. package/dist/src/editor/plugins/custom/resetBlockType.ts +29 -0
  72. package/dist/src/editor/plugins/custom/selectOnBackspace.ts +7 -0
  73. package/dist/src/editor/plugins/custom/softBreak.ts +20 -0
  74. package/dist/src/editor/plugins/custom/styles/Button.module.scss +51 -0
  75. package/dist/src/editor/plugins/custom/styles/Footnote.module.scss +58 -0
  76. package/dist/src/editor/plugins/custom/styles/Paywall.module.scss +67 -0
  77. package/dist/src/editor/plugins/custom/styles/QA.module.scss +140 -0
  78. package/dist/src/editor/plugins/custom/styles/Video.module.scss +79 -0
  79. package/dist/src/editor/plugins/custom/video.tsx +163 -0
  80. package/dist/src/editor/plugins/index.ts +18 -0
  81. package/dist/src/editor/plugins/inline.ts +46 -0
  82. package/dist/src/editor/plugins/marks.ts +25 -0
  83. package/dist/src/editor/plugins/utils.ts +22 -0
  84. package/dist/src/feedback/Chip/Chip.module.scss +23 -0
  85. package/dist/src/feedback/Chip/Chip.tsx +58 -0
  86. package/dist/src/feedback/Chip/index.ts +1 -0
  87. package/dist/src/feedback/Loader/Loader.module.scss +18 -0
  88. package/dist/src/feedback/Loader/Loader.spec.js +18 -0
  89. package/dist/src/feedback/Loader/Loader.tsx +53 -0
  90. package/dist/src/feedback/Loader/index.ts +1 -0
  91. package/dist/src/feedback/ProgressBar/ProgressBar.module.scss +13 -0
  92. package/dist/src/feedback/ProgressBar/ProgressBar.tsx +32 -0
  93. package/dist/src/feedback/ProgressBar/index.ts +1 -0
  94. package/dist/src/feedback/Toast/Toast.module.scss +44 -0
  95. package/dist/src/feedback/Toast/Toast.tsx +76 -0
  96. package/dist/src/feedback/Toast/index.ts +1 -0
  97. package/dist/src/feedback/Tooltip/Tooltip.module.scss +47 -0
  98. package/dist/src/feedback/Tooltip/Tooltip.tsx +10 -0
  99. package/dist/src/feedback/Tooltip/index.ts +1 -0
  100. package/dist/src/feedback/index.ts +5 -0
  101. package/dist/src/global.d.ts +6 -0
  102. package/dist/src/iconography/Avatar/Avatar.module.scss +90 -0
  103. package/dist/src/iconography/Avatar/Avatar.spec.js +75 -0
  104. package/dist/src/iconography/Avatar/Avatar.tsx +96 -0
  105. package/dist/src/iconography/Avatar/DefaultIcon.svg +4 -0
  106. package/dist/src/iconography/Avatar/DefaultIcon.tsx +12 -0
  107. package/dist/src/iconography/Avatar/iconHelpers.tsx +186 -0
  108. package/dist/src/iconography/Avatar/index.ts +1 -0
  109. package/dist/src/iconography/ColoredIcon/ColoredIcon.module.scss +40 -0
  110. package/dist/src/iconography/ColoredIcon/ColoredIcon.tsx +30 -0
  111. package/dist/src/iconography/ColoredIcon/index.ts +5 -0
  112. package/dist/src/iconography/DevicePreview/DevicePreview.module.scss +143 -0
  113. package/dist/src/iconography/DevicePreview/DevicePreview.tsx +592 -0
  114. package/dist/src/iconography/DevicePreview/index.ts +1 -0
  115. package/dist/src/iconography/IconHeader/IconHeader.module.scss +42 -0
  116. package/dist/src/iconography/IconHeader/IconHeader.tsx +42 -0
  117. package/dist/src/iconography/IconHeader/index.ts +1 -0
  118. package/dist/src/iconography/StarRating/StarRating.tsx +99 -0
  119. package/dist/src/iconography/StarRating/index.ts +1 -0
  120. package/dist/src/iconography/index.ts +5 -0
  121. package/dist/src/implementations/BodyContent/BodyContent.module.scss +38 -0
  122. package/dist/src/implementations/BodyContent/BodyContent.tsx +78 -0
  123. package/dist/src/implementations/BodyContent/index.ts +2 -0
  124. package/dist/src/implementations/JoinGroupModal/JoinGroupModal.module.scss +83 -0
  125. package/dist/src/implementations/JoinGroupModal/JoinGroupModal.tsx +176 -0
  126. package/dist/src/implementations/JoinGroupModal/index.ts +1 -0
  127. package/dist/src/implementations/index.ts +2 -0
  128. package/dist/src/index.ts +149 -0
  129. package/dist/src/inputs/CalendarInput/CalendarInput.module.scss +38 -0
  130. package/dist/src/inputs/CalendarInput/CalendarInput.spec.js +19 -0
  131. package/dist/src/inputs/CalendarInput/CalendarInput.tsx +29 -0
  132. package/dist/src/inputs/CalendarInput/index.ts +1 -0
  133. package/dist/src/inputs/CheckboxInput/CheckboxInput.module.scss +23 -0
  134. package/dist/src/inputs/CheckboxInput/CheckboxInput.tsx +39 -0
  135. package/dist/src/inputs/CheckboxInput/index.ts +1 -0
  136. package/dist/src/inputs/FeedInput/FeedInput.module.scss +48 -0
  137. package/dist/src/inputs/FeedInput/FeedInput.spec.js +16 -0
  138. package/dist/src/inputs/FeedInput/FeedInput.tsx +197 -0
  139. package/dist/src/inputs/FeedInput/index.ts +1 -0
  140. package/dist/src/inputs/InboxInput/InboxInput.module.scss +48 -0
  141. package/dist/src/inputs/InboxInput/InboxInput.spec.js +19 -0
  142. package/dist/src/inputs/InboxInput/InboxInput.tsx +97 -0
  143. package/dist/src/inputs/InboxInput/index.ts +1 -0
  144. package/dist/src/inputs/PostInput/PostInput.module.scss +49 -0
  145. package/dist/src/inputs/PostInput/PostInput.spec.js +19 -0
  146. package/dist/src/inputs/PostInput/PostInput.tsx +54 -0
  147. package/dist/src/inputs/PostInput/index.ts +1 -0
  148. package/dist/src/inputs/RadioInput/RadioInput.module.scss +68 -0
  149. package/dist/src/inputs/RadioInput/RadioInput.tsx +55 -0
  150. package/dist/src/inputs/RadioInput/index.ts +1 -0
  151. package/dist/src/inputs/SearchInput/SearchInput.module.scss +40 -0
  152. package/dist/src/inputs/SearchInput/SearchInput.tsx +61 -0
  153. package/dist/src/inputs/SearchInput/index.ts +1 -0
  154. package/dist/src/inputs/SelectInput/SelectInput.module.scss +66 -0
  155. package/dist/src/inputs/SelectInput/SelectInput.tsx +145 -0
  156. package/dist/src/inputs/SelectInput/index.ts +1 -0
  157. package/dist/src/inputs/TagInput/TagInput.module.scss +75 -0
  158. package/dist/src/inputs/TagInput/TagInput.tsx +115 -0
  159. package/dist/src/inputs/TagInput/index.ts +1 -0
  160. package/dist/src/inputs/TextInput/TextInput.module.scss +35 -0
  161. package/dist/src/inputs/TextInput/TextInput.tsx +46 -0
  162. package/dist/src/inputs/TextInput/index.ts +1 -0
  163. package/dist/src/inputs/index.ts +10 -0
  164. package/dist/src/lists/ContactDetails/ContactDetails.module.scss +70 -0
  165. package/dist/src/lists/ContactDetails/ContactDetails.spec.js +69 -0
  166. package/dist/src/lists/ContactDetails/ContactDetails.tsx +185 -0
  167. package/dist/src/lists/ContactDetails/index.ts +1 -0
  168. package/dist/src/lists/index.ts +1 -0
  169. package/dist/src/navigation/Breadcrumbs/Breadcrumbs.module.scss +18 -0
  170. package/dist/src/navigation/Breadcrumbs/Breadcrumbs.spec.js +38 -0
  171. package/dist/src/navigation/Breadcrumbs/Breadcrumbs.tsx +43 -0
  172. package/dist/src/navigation/Breadcrumbs/index.ts +1 -0
  173. package/dist/src/navigation/Drawer/Drawer.module.scss +104 -0
  174. package/dist/src/navigation/Drawer/Drawer.tsx +177 -0
  175. package/dist/src/navigation/Drawer/index.ts +1 -0
  176. package/dist/src/navigation/EditorBar/EditorBar.module.scss +118 -0
  177. package/dist/src/navigation/EditorBar/EditorBar.tsx +416 -0
  178. package/dist/src/navigation/EditorBar/components/AlignmentDropdown/AlignmentDropdown.tsx +106 -0
  179. package/dist/src/navigation/EditorBar/components/AlignmentDropdown/index.ts +1 -0
  180. package/dist/src/navigation/EditorBar/components/ButtonModal/ButtonModal.module.scss +85 -0
  181. package/dist/src/navigation/EditorBar/components/ButtonModal/ButtonModal.tsx +314 -0
  182. package/dist/src/navigation/EditorBar/components/ButtonModal/assets/Comment.tsx +28 -0
  183. package/dist/src/navigation/EditorBar/components/ButtonModal/assets/GiftSubscription.tsx +28 -0
  184. package/dist/src/navigation/EditorBar/components/ButtonModal/assets/Link.tsx +28 -0
  185. package/dist/src/navigation/EditorBar/components/ButtonModal/assets/Share.tsx +28 -0
  186. package/dist/src/navigation/EditorBar/components/ButtonModal/assets/ShareCommunity.tsx +42 -0
  187. package/dist/src/navigation/EditorBar/components/ButtonModal/assets/Signup.tsx +68 -0
  188. package/dist/src/navigation/EditorBar/components/ButtonModal/assets/Special.tsx +24 -0
  189. package/dist/src/navigation/EditorBar/components/ButtonModal/assets/Subscribe.tsx +28 -0
  190. package/dist/src/navigation/EditorBar/components/ButtonModal/assets/index.ts +8 -0
  191. package/dist/src/navigation/EditorBar/components/ButtonModal/index.ts +1 -0
  192. package/dist/src/navigation/EditorBar/components/FontDropdown/FontDropdown.module.scss +16 -0
  193. package/dist/src/navigation/EditorBar/components/FontDropdown/FontDropdown.tsx +137 -0
  194. package/dist/src/navigation/EditorBar/components/FontDropdown/index.ts +1 -0
  195. package/dist/src/navigation/EditorBar/components/MoreDropdown/MoreDropdown.module.scss +43 -0
  196. package/dist/src/navigation/EditorBar/components/MoreDropdown/MoreDropdown.tsx +124 -0
  197. package/dist/src/navigation/EditorBar/components/MoreDropdown/index.ts +1 -0
  198. package/dist/src/navigation/EditorBar/components/OutlineDropdown/OutlineDropdown.module.scss +21 -0
  199. package/dist/src/navigation/EditorBar/components/OutlineDropdown/OutlineDropdown.tsx +37 -0
  200. package/dist/src/navigation/EditorBar/components/OutlineDropdown/index.ts +1 -0
  201. package/dist/src/navigation/EditorBar/components/TextTypeDropdown/TextTypeDropdown.module.scss +51 -0
  202. package/dist/src/navigation/EditorBar/components/TextTypeDropdown/TextTypeDropdown.tsx +80 -0
  203. package/dist/src/navigation/EditorBar/components/TextTypeDropdown/index.ts +1 -0
  204. package/dist/src/navigation/EditorBar/components/VideoModal/VideoModal.module.scss +150 -0
  205. package/dist/src/navigation/EditorBar/components/VideoModal/VideoModal.tsx +163 -0
  206. package/dist/src/navigation/EditorBar/components/VideoModal/index.ts +1 -0
  207. package/dist/src/navigation/EditorBar/components/index.ts +7 -0
  208. package/dist/src/navigation/EditorBar/index.ts +1 -0
  209. package/dist/src/navigation/MenuTabs/MenuTabs.module.scss +34 -0
  210. package/dist/src/navigation/MenuTabs/MenuTabs.spec.js +36 -0
  211. package/dist/src/navigation/MenuTabs/MenuTabs.tsx +52 -0
  212. package/dist/src/navigation/MenuTabs/index.ts +1 -0
  213. package/dist/src/navigation/Navigation/Navigation.module.scss +92 -0
  214. package/dist/src/navigation/Navigation/Navigation.spec.js +144 -0
  215. package/dist/src/navigation/Navigation/Navigation.tsx +111 -0
  216. package/dist/src/navigation/Navigation/SubNavigation.module.scss +255 -0
  217. package/dist/src/navigation/Navigation/SubNavigation.spec.js +112 -0
  218. package/dist/src/navigation/Navigation/SubNavigation.tsx +443 -0
  219. package/dist/src/navigation/Navigation/index.ts +15 -0
  220. package/dist/src/navigation/Pagination/Pagination.module.scss +49 -0
  221. package/dist/src/navigation/Pagination/Pagination.tsx +115 -0
  222. package/dist/src/navigation/Pagination/index.ts +1 -0
  223. package/dist/src/navigation/index.ts +21 -0
  224. package/dist/src/surfaces/Comment/Comment.module.scss +106 -0
  225. package/dist/src/surfaces/Comment/Comment.spec.js +105 -0
  226. package/dist/src/surfaces/Comment/Comment.tsx +157 -0
  227. package/dist/src/surfaces/Comment/index.ts +1 -0
  228. package/dist/src/surfaces/Faq/Faq.module.scss +91 -0
  229. package/dist/src/surfaces/Faq/Faq.spec.js +38 -0
  230. package/dist/src/surfaces/Faq/Faq.tsx +156 -0
  231. package/dist/src/surfaces/Faq/index.ts +1 -0
  232. package/dist/src/surfaces/Message/Message.module.scss +37 -0
  233. package/dist/src/surfaces/Message/Message.spec.js +47 -0
  234. package/dist/src/surfaces/Message/Message.tsx +54 -0
  235. package/dist/src/surfaces/Message/index.ts +1 -0
  236. package/dist/src/surfaces/Modal/Modal.module.scss +52 -0
  237. package/dist/src/surfaces/Modal/Modal.spec.js +38 -0
  238. package/dist/src/surfaces/Modal/Modal.tsx +131 -0
  239. package/dist/src/surfaces/Modal/index.ts +5 -0
  240. package/dist/src/surfaces/Plan/Plan.module.scss +79 -0
  241. package/dist/src/surfaces/Plan/Plan.tsx +75 -0
  242. package/dist/src/surfaces/Plan/index.ts +1 -0
  243. package/dist/src/surfaces/Post/Post.module.scss +46 -0
  244. package/dist/src/surfaces/Post/Post.spec.js +103 -0
  245. package/dist/src/surfaces/Post/Post.tsx +185 -0
  246. package/dist/src/surfaces/Post/index.ts +1 -0
  247. package/dist/src/surfaces/Post/postHelpers.ts +20 -0
  248. package/dist/src/surfaces/ProfileHeader/ProfileHeader.module.scss +202 -0
  249. package/dist/src/surfaces/ProfileHeader/ProfileHeader.tsx +103 -0
  250. package/dist/src/surfaces/ProfileHeader/index.ts +1 -0
  251. package/dist/src/surfaces/RatingsOverview/RatingsOverview.module.scss +54 -0
  252. package/dist/src/surfaces/RatingsOverview/RatingsOverview.tsx +69 -0
  253. package/dist/src/surfaces/RatingsOverview/index.ts +1 -0
  254. package/dist/src/surfaces/Review/Review.module.scss +73 -0
  255. package/dist/src/surfaces/Review/Review.tsx +88 -0
  256. package/dist/src/surfaces/Review/index.ts +1 -0
  257. package/dist/src/surfaces/index.ts +9 -0
  258. package/dist/src/tables/Filter/Filter.module.scss +34 -0
  259. package/dist/src/tables/Filter/Filter.tsx +30 -0
  260. package/dist/src/tables/Filter/index.ts +1 -0
  261. package/dist/src/tables/Table/Table.module.scss +126 -0
  262. package/dist/src/tables/Table/Table.spec.js +113 -0
  263. package/dist/src/tables/Table/Table.tsx +251 -0
  264. package/dist/src/tables/Table/index.ts +7 -0
  265. package/dist/src/tables/index.ts +7 -0
  266. package/package.json +3 -2
  267. /package/dist/{design-system.js → index.js} +0 -0
@@ -0,0 +1,106 @@
1
+ import React from "react";
2
+ import ReactTooltip from "react-tooltip";
3
+ import {
4
+ Alignment,
5
+ AlignToolbarButton,
6
+ getPreventDefaultHandler,
7
+ isCollapsed,
8
+ PlateEditor,
9
+ setAlign,
10
+ someNode,
11
+ } from "@udecode/plate";
12
+ import {
13
+ TextAlign,
14
+ TextAlignCenter,
15
+ TextAlignJustify,
16
+ TextAlignLeft,
17
+ TextAlignRight,
18
+ } from "@soul-refiner/icons/src";
19
+
20
+ import { Dropdown } from "../../../../actions";
21
+
22
+ export interface AlignmentDropdownProps {
23
+ editorRef: PlateEditor;
24
+ stateEditor: PlateEditor;
25
+ }
26
+
27
+ export const AlignmentDropdown = ({
28
+ editorRef,
29
+ stateEditor,
30
+ }: AlignmentDropdownProps) => {
31
+ const handleAlign = (event: React.MouseEvent) => {
32
+ const value = (event.target as HTMLElement)?.getAttribute(
33
+ "data-value"
34
+ ) as Alignment | null;
35
+ if (!value) return;
36
+ const handler = getPreventDefaultHandler(setAlign, stateEditor, {
37
+ value,
38
+ });
39
+ handler(event);
40
+ };
41
+
42
+ const alignment = (() => {
43
+ if (!isCollapsed(editorRef?.selection)) {
44
+ return "multiple-lines";
45
+ } else if (
46
+ someNode(editorRef!, { match: { align: "center" } }) ? true : undefined
47
+ ) {
48
+ return "center";
49
+ } else if (
50
+ someNode(editorRef!, { match: { align: "right" } }) ? true : undefined
51
+ ) {
52
+ return "right";
53
+ } else if (
54
+ someNode(editorRef!, { match: { align: "justify" } }) ? true : undefined
55
+ ) {
56
+ return "justify";
57
+ } else {
58
+ return "left";
59
+ }
60
+ })();
61
+
62
+ return (
63
+ <Dropdown
64
+ maintainState={false}
65
+ onChange={handleAlign}
66
+ trigger={
67
+ <div>
68
+ <ReactTooltip place="top" type="dark" effect="solid" html />
69
+ <div data-tip="Alignment">
70
+ <TextAlign
71
+ as="button"
72
+ fill={"var(--color-grey-1)"}
73
+ size={32}
74
+ iconSize={24}
75
+ />
76
+ </div>
77
+ </div>
78
+ }
79
+ >
80
+ <AlignToolbarButton
81
+ active={alignment === "left" ? true : undefined}
82
+ data-value="left"
83
+ value="left"
84
+ icon={<TextAlignLeft className="fill" fill="var(--color-grey-1)" />}
85
+ />
86
+ <AlignToolbarButton
87
+ active={alignment === "center" ? true : undefined}
88
+ data-value="center"
89
+ value="center"
90
+ icon={<TextAlignCenter className="fill" fill="var(--color-grey-1)" />}
91
+ />
92
+ <AlignToolbarButton
93
+ active={alignment === "right" ? true : undefined}
94
+ data-value="right"
95
+ value="right"
96
+ icon={<TextAlignRight className="fill" fill="var(--color-grey-1)" />}
97
+ />
98
+ <AlignToolbarButton
99
+ active={alignment === "justify" ? true : undefined}
100
+ data-value="justify"
101
+ value="justify"
102
+ icon={<TextAlignJustify className="fill" fill="var(--color-grey-1)" />}
103
+ />
104
+ </Dropdown>
105
+ );
106
+ };
@@ -0,0 +1 @@
1
+ export { AlignmentDropdown, type AlignmentDropdownProps } from "./AlignmentDropdown";
@@ -0,0 +1,85 @@
1
+ @use "@soul-refiner/styles/mixins";
2
+
3
+ .option {
4
+ cursor: pointer;
5
+ display: flex;
6
+ justify-content: center;
7
+ align-items: center;
8
+ }
9
+
10
+ .footer {
11
+ @include mixins.flex($gap: 16px);
12
+
13
+ .footerButton {
14
+ flex-shrink: 0;
15
+ flex-grow: 1;
16
+ width: unset !important;
17
+ height: unset !important;
18
+ span {
19
+ flex-shrink: 0;
20
+ height: min-content;
21
+ width: max-content;
22
+ }
23
+
24
+ &:first-of-type {
25
+ outline: 1px solid var(--color-grey-8);
26
+ }
27
+ }
28
+ }
29
+
30
+ .content {
31
+ @include mixins.flex($dir: column, $gap: 32px, $align: stretch);
32
+ max-height: 483px;
33
+ min-width: 615px;
34
+ padding: 32px 20px 48px 32px;
35
+ margin-right: 12px;
36
+ overflow: auto;
37
+
38
+ &::-webkit-scrollbar-track {
39
+ margin: 24px;
40
+ }
41
+
42
+ .selectionWrapper {
43
+ border: 2px solid var(--color-grey-8);
44
+ border-radius: 8px;
45
+ box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
46
+
47
+ &[class~="selected"] {
48
+ border: 2px solid var(--colorify-blue-3);
49
+ }
50
+
51
+ .selection {
52
+ @include mixins.flex($gap: 14px);
53
+ padding: 24px;
54
+ background-color: #f2f7fd;
55
+ border-bottom: 1px solid #d1d9e2;
56
+ border-radius: 8px 8px 0px 0px;
57
+ cursor: pointer;
58
+
59
+ .radio {
60
+ width: 24px;
61
+ height: 24px;
62
+ box-sizing: border-box;
63
+ border: 1px solid var(--color-grey-8);
64
+ border-radius: 50%;
65
+
66
+ &[class~="selected"] {
67
+ border: 6px solid var(--color-blue-3);
68
+ }
69
+ }
70
+
71
+ h3 {
72
+ @include mixins.font(700, 14px, 21px);
73
+ }
74
+
75
+ p {
76
+ @include mixins.font(400, 14px, 21px);
77
+ }
78
+ }
79
+
80
+ .imgWrapper {
81
+ @include mixins.flex($align: center, $justify: center);
82
+ padding: 24px;
83
+ }
84
+ }
85
+ }
@@ -0,0 +1,314 @@
1
+ import React from "react";
2
+ import ReactTooltip from "react-tooltip";
3
+ import { getPluginType, insertNodes, PlateEditor } from "@udecode/plate";
4
+ import {
5
+ Button as ButtonIcon,
6
+ Check,
7
+ CloseThin,
8
+ } from "@soul-refiner/icons/src";
9
+
10
+ import { Button } from "../../../../actions";
11
+ import { IconHeader } from "../../../../iconography";
12
+ import { Modal } from "../../../../surfaces";
13
+ import {
14
+ BUTTON_COMMENT,
15
+ BUTTON_GIFT_SUBSCRIPTION,
16
+ BUTTON_LINK,
17
+ BUTTON_SHARE,
18
+ BUTTON_SHARE_PAGE,
19
+ BUTTON_SIGNUP,
20
+ BUTTON_SPECIAL_OFFER,
21
+ BUTTON_SUBSCRIBE,
22
+ ELEMENT_BUTTON,
23
+ } from "../../../../editor/common";
24
+
25
+ import {
26
+ Comment,
27
+ GiftSubscription,
28
+ Link,
29
+ Share,
30
+ ShareCommunity,
31
+ Signup,
32
+ Special,
33
+ Subscribe,
34
+ } from "./assets";
35
+ import styles from "./ButtonModal.module.scss";
36
+
37
+ export interface ButtonModalProps {
38
+ editorRef: PlateEditor;
39
+ pageName: string;
40
+ }
41
+
42
+ type ButtonNode =
43
+ | typeof BUTTON_COMMENT
44
+ | typeof BUTTON_GIFT_SUBSCRIPTION
45
+ | typeof BUTTON_LINK
46
+ | typeof BUTTON_SHARE
47
+ | typeof BUTTON_SHARE_PAGE
48
+ | typeof BUTTON_SIGNUP
49
+ | typeof BUTTON_SPECIAL_OFFER
50
+ | typeof BUTTON_SUBSCRIBE;
51
+
52
+ export const ButtonModal = ({ editorRef, pageName }: ButtonModalProps) => {
53
+ const [selected, setSelected] = React.useState<ButtonNode>(BUTTON_SUBSCRIBE);
54
+
55
+ const handleSubmit = () => {
56
+ switch (selected) {
57
+ case BUTTON_COMMENT:
58
+ insertNodes(editorRef, {
59
+ type: getPluginType(editorRef, ELEMENT_BUTTON),
60
+ buttonType: BUTTON_COMMENT,
61
+ children: [
62
+ {
63
+ text: "Leave a comment",
64
+ },
65
+ ],
66
+ });
67
+ return;
68
+ case BUTTON_GIFT_SUBSCRIPTION:
69
+ insertNodes(editorRef, {
70
+ type: getPluginType(editorRef, ELEMENT_BUTTON),
71
+ buttonType: BUTTON_GIFT_SUBSCRIPTION,
72
+ children: [
73
+ {
74
+ text: "Gift a subscription",
75
+ },
76
+ ],
77
+ });
78
+ return;
79
+ // TODO: BUTTON_LINK
80
+ // case BUTTON_LINK:
81
+ // insertNodes(editorRef, {
82
+ // type: getPluginType(editorRef, ELEMENT_BUTTON),
83
+ // buttonType: BUTTON_LINK,
84
+ // children: [
85
+ // {
86
+ // text: "Link to a site"
87
+ // }
88
+ // ]
89
+ // });
90
+ // return;
91
+ case BUTTON_SHARE:
92
+ insertNodes(editorRef, {
93
+ type: getPluginType(editorRef, ELEMENT_BUTTON),
94
+ buttonType: BUTTON_SHARE,
95
+ children: [
96
+ {
97
+ text: "Share now",
98
+ },
99
+ ],
100
+ });
101
+ return;
102
+ case BUTTON_SHARE_PAGE:
103
+ const shareText = `Share ${pageName}' page Now`;
104
+ insertNodes(editorRef, {
105
+ type: getPluginType(editorRef, ELEMENT_BUTTON),
106
+ buttonType: BUTTON_SHARE_PAGE,
107
+ children: [
108
+ {
109
+ text: shareText,
110
+ },
111
+ {
112
+ text: "Thanks for reading Soul Refiner! This post is public so feel free to share it.",
113
+ beforeElement: true,
114
+ },
115
+ ],
116
+ });
117
+ return;
118
+ case BUTTON_SPECIAL_OFFER:
119
+ const specialOfferText = `Share ${pageName}'s page Now`;
120
+ insertNodes(editorRef, {
121
+ type: getPluginType(editorRef, ELEMENT_BUTTON),
122
+ buttonType: BUTTON_SPECIAL_OFFER,
123
+ children: [
124
+ {
125
+ text: specialOfferText,
126
+ },
127
+ {
128
+ text: "Get 20% off when you subscribe before December 25th, 2022",
129
+ beforeElement: true,
130
+ },
131
+ ],
132
+ });
133
+ return;
134
+ case BUTTON_SUBSCRIBE:
135
+ insertNodes(editorRef, {
136
+ type: getPluginType(editorRef, ELEMENT_BUTTON),
137
+ buttonType: BUTTON_SUBSCRIBE,
138
+ children: [
139
+ {
140
+ text: "Subscribe now",
141
+ },
142
+ ],
143
+ });
144
+ return;
145
+ case BUTTON_SIGNUP:
146
+ const subscribeCaptionText = `Thanks for reading ${pageName} Subscribe for free to receive new posts and support our work.`;
147
+ insertNodes(editorRef, {
148
+ type: getPluginType(editorRef, ELEMENT_BUTTON),
149
+ buttonType: BUTTON_SIGNUP,
150
+ children: [
151
+ {
152
+ text: "Signup",
153
+ },
154
+ {
155
+ text: subscribeCaptionText,
156
+ beforeElement: true,
157
+ },
158
+ ],
159
+ });
160
+ return;
161
+ }
162
+ };
163
+
164
+ return (
165
+ <Modal>
166
+ <ReactTooltip place="top" type="dark" effect="solid" html />
167
+ <Modal.Trigger>
168
+ <span className={styles.option} data-tip="Insert Button">
169
+ <ButtonIcon fill="var(--color-grey-4)" />
170
+ </span>
171
+ </Modal.Trigger>
172
+ <Modal.Content
173
+ header={
174
+ <IconHeader
175
+ color="blue"
176
+ icon={<ButtonIcon fill="var(--color-blue-3)" />}
177
+ title="Insert Button"
178
+ />
179
+ }
180
+ footer={
181
+ <div className={styles.footer}>
182
+ <Modal.Dismiss>
183
+ <Button
184
+ buttonType="secondary"
185
+ className={styles.footerButton}
186
+ icon={<CloseThin />}
187
+ shape="rectangular"
188
+ >
189
+ Cancel
190
+ </Button>
191
+ </Modal.Dismiss>
192
+ <Modal.Dismiss>
193
+ <Button
194
+ buttonColor="var(--color-blue-3)"
195
+ buttonType="primary"
196
+ className={styles.footerButton}
197
+ color="#FFFFFF"
198
+ icon={<Check />}
199
+ onClick={handleSubmit}
200
+ shape="rectangular"
201
+ >
202
+ Confirm
203
+ </Button>
204
+ </Modal.Dismiss>
205
+ </div>
206
+ }
207
+ >
208
+ <div className={styles.content}>
209
+ <Selection
210
+ description="A button encouraging the reader to purchase a paid subscription to your community"
211
+ name="Subscribe Now"
212
+ onClick={() => setSelected(BUTTON_SUBSCRIBE)}
213
+ selected={selected === BUTTON_SUBSCRIBE}
214
+ >
215
+ <Subscribe />
216
+ </Selection>
217
+ <Selection
218
+ description="Insert an input to collect email newsletter subscribers"
219
+ name="Signup for Newsletter"
220
+ onClick={() => setSelected(BUTTON_SIGNUP)}
221
+ selected={selected === BUTTON_SIGNUP}
222
+ >
223
+ <Signup />
224
+ </Selection>
225
+ {/* <Selection
226
+ description="A button that links to a URL"
227
+ name="Link Button"
228
+ onClick={() => setSelected(BUTTON_LINK)}
229
+ selected={selected === BUTTON_LINK}
230
+ >
231
+ <Link />
232
+ </Selection> */}
233
+ <Selection
234
+ description="A share button to share about this course"
235
+ name="Share this course"
236
+ onClick={() => setSelected(BUTTON_SHARE)}
237
+ selected={selected === BUTTON_SHARE}
238
+ >
239
+ <Share />
240
+ </Selection>
241
+ <Selection
242
+ description="A share button to share about your community"
243
+ name="Share community page"
244
+ onClick={() => setSelected(BUTTON_SHARE_PAGE)}
245
+ selected={selected === BUTTON_SHARE_PAGE}
246
+ >
247
+ <ShareCommunity />
248
+ </Selection>
249
+ <Selection
250
+ description="Allow readers to comment in this course"
251
+ name="Leave a comment"
252
+ onClick={() => setSelected(BUTTON_COMMENT)}
253
+ selected={selected === BUTTON_COMMENT}
254
+ >
255
+ <Comment />
256
+ </Selection>
257
+ <Selection
258
+ description="A button encouraging the reader to purchase a paid subscription to your community for a friend"
259
+ name="Give a gift subscription"
260
+ onClick={() => setSelected(BUTTON_GIFT_SUBSCRIPTION)}
261
+ selected={selected === BUTTON_GIFT_SUBSCRIPTION}
262
+ >
263
+ <GiftSubscription />
264
+ </Selection>
265
+ <Selection
266
+ description="Offer a special discount to readers of this course"
267
+ name="Special Offer"
268
+ onClick={() => setSelected(BUTTON_SPECIAL_OFFER)}
269
+ selected={selected === BUTTON_SPECIAL_OFFER}
270
+ >
271
+ <Special />
272
+ </Selection>
273
+ </div>
274
+ </Modal.Content>
275
+ </Modal>
276
+ );
277
+ };
278
+
279
+ interface SelectionProps extends React.PropsWithChildren {
280
+ description: string;
281
+ name: string;
282
+ onClick: () => void;
283
+ selected: boolean;
284
+ }
285
+
286
+ const Selection = ({
287
+ children,
288
+ description,
289
+ name,
290
+ onClick,
291
+ selected,
292
+ }: SelectionProps) => {
293
+ return (
294
+ <div
295
+ className={`${styles.selectionWrapper} ${
296
+ selected ? "selected" : ""
297
+ }`.trim()}
298
+ onClick={onClick}
299
+ >
300
+ <div className={styles.selection}>
301
+ <div
302
+ className={`${styles.radio} ${
303
+ selected ? "selected" : "not-selected"
304
+ }`.trim()}
305
+ />
306
+ <div>
307
+ <h3>{name}</h3>
308
+ <p>{description}</p>
309
+ </div>
310
+ </div>
311
+ <div className={styles.imgWrapper}>{children}</div>
312
+ </div>
313
+ );
314
+ };
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+
3
+ export const Comment = () => (
4
+ <svg
5
+ width="168"
6
+ height="40"
7
+ viewBox="0 0 168 40"
8
+ fill="none"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ >
11
+ <path
12
+ d="M0.5 4.9082C0.5 2.69906 2.29086 0.908203 4.5 0.908203H163.5C165.709 0.908203 167.5 2.69906 167.5 4.9082V35.9082C167.5 38.1173 165.709 39.9082 163.5 39.9082H4.5C2.29086 39.9082 0.5 38.1173 0.5 35.9082V4.9082Z"
13
+ fill="#2393EF"
14
+ />
15
+ <text
16
+ fill="white"
17
+ style={{ whiteSpace: "pre" }}
18
+ fontFamily="Inter"
19
+ fontSize="14"
20
+ fontWeight="600"
21
+ letterSpacing="0em"
22
+ >
23
+ <tspan x="24.5205" y="25.4991">
24
+ Leave a comment
25
+ </tspan>
26
+ </text>
27
+ </svg>
28
+ );
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+
3
+ export const GiftSubscription = () => (
4
+ <svg
5
+ width="206"
6
+ height="40"
7
+ viewBox="0 0 206 40"
8
+ fill="none"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ >
11
+ <path
12
+ d="M0 4.9082C0 2.69906 1.79086 0.908203 4 0.908203H202C204.209 0.908203 206 2.69906 206 4.9082V35.9082C206 38.1173 204.209 39.9082 202 39.9082H4C1.79086 39.9082 0 38.1173 0 35.9082V4.9082Z"
13
+ fill="#2393EF"
14
+ />
15
+ <text
16
+ fill="white"
17
+ style={{ whiteSpace: "pre" }}
18
+ fontFamily="Inter"
19
+ fontSize="14"
20
+ fontWeight="600"
21
+ letterSpacing="0em"
22
+ >
23
+ <tspan x="24.4961" y="25.4991">
24
+ Give a gift subscription
25
+ </tspan>
26
+ </text>
27
+ </svg>
28
+ );
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+
3
+ export const Link = () => (
4
+ <svg
5
+ width="126"
6
+ height="40"
7
+ viewBox="0 0 126 40"
8
+ fill="none"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ >
11
+ <path
12
+ d="M0.5 4.9082C0.5 2.69906 2.29086 0.908203 4.5 0.908203H121.5C123.709 0.908203 125.5 2.69906 125.5 4.9082V35.9082C125.5 38.1173 123.709 39.9082 121.5 39.9082H4.5C2.29086 39.9082 0.5 38.1173 0.5 35.9082V4.9082Z"
13
+ fill="#2393EF"
14
+ />
15
+ <text
16
+ fill="#F6FBFE"
17
+ style={{ whiteSpace: "pre" }}
18
+ fontFamily="Inter"
19
+ fontSize="14"
20
+ fontWeight="600"
21
+ letterSpacing="0em"
22
+ >
23
+ <tspan x="24.5615" y="25.4991">
24
+ Link Button
25
+ </tspan>
26
+ </text>
27
+ </svg>
28
+ );
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+
3
+ export const Share = () => (
4
+ <svg
5
+ width="88"
6
+ height="40"
7
+ viewBox="0 0 88 40"
8
+ fill="none"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ >
11
+ <path
12
+ d="M0 4.9082C0 2.69906 1.79086 0.908203 4 0.908203H84C86.2091 0.908203 88 2.69906 88 4.9082V35.9082C88 38.1173 86.2091 39.9082 84 39.9082H4C1.79086 39.9082 0 38.1173 0 35.9082V4.9082Z"
13
+ fill="#2393EF"
14
+ />
15
+ <text
16
+ fill="white"
17
+ style={{ whiteSpace: "pre" }}
18
+ fontFamily="Inter"
19
+ fontSize="14"
20
+ fontWeight="600"
21
+ letterSpacing="0em"
22
+ >
23
+ <tspan x="24.374" y="25.4991">
24
+ Share
25
+ </tspan>
26
+ </text>
27
+ </svg>
28
+ );
@@ -0,0 +1,42 @@
1
+ import React from "react";
2
+
3
+ export const ShareCommunity = () => (
4
+ <svg
5
+ width="352"
6
+ height="107"
7
+ viewBox="0 0 352 107"
8
+ fill="none"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ >
11
+ <text
12
+ fill="#4A4F55"
13
+ style={{ whiteSpace: "pre" }}
14
+ fontFamily="Inter"
15
+ fontSize="14"
16
+ letterSpacing="0em"
17
+ >
18
+ <tspan x="8.49228" y="16.4991">
19
+ Thanks for reading Soul Refiner! This post is public{" "}
20
+ </tspan>
21
+ <tspan x="101.878" y="37.4991">
22
+ so feel free to share it.
23
+ </tspan>
24
+ </text>
25
+ <path
26
+ d="M66 71.9082C66 69.6991 67.7909 67.9082 70 67.9082H282C284.209 67.9082 286 69.6991 286 71.9082V102.908C286 105.117 284.209 106.908 282 106.908H70C67.7909 106.908 66 105.117 66 102.908V71.9082Z"
27
+ fill="#2393EF"
28
+ />
29
+ <text
30
+ fill="white"
31
+ style={{ whiteSpace: "pre" }}
32
+ fontFamily="Inter"
33
+ fontSize="14"
34
+ fontWeight="600"
35
+ letterSpacing="0em"
36
+ >
37
+ <tspan x="90.0381" y="92.4991">
38
+ Share Soul Refiner&#x2019;s Page
39
+ </tspan>
40
+ </text>
41
+ </svg>
42
+ );