@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,54 +0,0 @@
1
- import React from "react";
2
- import styles from "./PostInput.module.scss";
3
-
4
- export interface PostInputProps extends React.HTMLProps<HTMLTextAreaElement> {
5
- characterCount?: boolean;
6
- hasShadow?: boolean;
7
- }
8
-
9
- export const PostInput = ({
10
- characterCount,
11
- hasShadow = true,
12
- maxLength,
13
- value,
14
- ...rest
15
- }: PostInputProps) => {
16
- const ref = React.useRef<HTMLTextAreaElement>(null);
17
-
18
- React.useEffect(() => {
19
- if (ref.current) {
20
- ref.current.style.height = "0px";
21
- const scrollHeight = ref.current.scrollHeight;
22
- ref.current.style.height = scrollHeight + "px";
23
- }
24
- }, [ref.current, value]);
25
-
26
- const hasCharacterCount = value !== undefined && maxLength && characterCount;
27
-
28
- if (hasCharacterCount) {
29
- return (
30
- <div className={styles.wrapper}>
31
- <textarea
32
- className={`${styles.postinput} ${hasShadow ? "shadow-post" : ""}`}
33
- maxLength={maxLength}
34
- ref={ref}
35
- value={value}
36
- {...rest}
37
- />
38
- <span>
39
- {value.toString().length} / {maxLength}
40
- </span>
41
- </div>
42
- );
43
- }
44
-
45
- return (
46
- <textarea
47
- className={`${styles.postinput} ${hasShadow ? "shadow-post" : ""}`}
48
- maxLength={maxLength}
49
- ref={ref}
50
- value={value}
51
- {...rest}
52
- />
53
- );
54
- };
@@ -1 +0,0 @@
1
- export { PostInput, type PostInputProps } from "./PostInput";
@@ -1,68 +0,0 @@
1
- .radio {
2
-
3
-
4
- label {
5
- display: flex;
6
- flex-direction: row;
7
- place-items: center;
8
- gap: 16px;
9
- cursor: pointer;
10
-
11
- &> input[type=radio] {
12
- appearance: none;
13
- margin: 0;
14
-
15
- border: 2px solid #99B4CF;
16
- border-radius: 100%;
17
-
18
- height: 24px;
19
- width: 24px;
20
-
21
- position: relative;
22
-
23
- cursor: pointer;
24
-
25
- &::after {
26
- content: "";
27
- background-image: url("data:image/svg+xml,%0A%3Csvg width='16' height='11' viewBox='0 0 16 11' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.38338 10.6724L5.80001 10.0891L5.21665 10.6724C5.53883 10.9946 6.06119 10.9946 6.38338 10.6724ZM5.80001 8.92234L1.98338 5.1057C1.66119 4.78352 1.13883 4.78352 0.816649 5.1057C0.494467 5.42788 0.494467 5.95024 0.816649 6.27243L5.21665 10.6724L5.80001 10.0891C6.38338 10.6724 6.38332 10.6725 6.38338 10.6724L14.8726 2.18316C15.1948 1.86097 15.1948 1.33861 14.8726 1.01643C14.5505 0.694248 14.0281 0.694248 13.7059 1.01643L5.80001 8.92234Z' fill='white'/%3E%3C/svg%3E%0A");
28
- background-repeat: no-repeat;
29
- background-position: 50% 50%;
30
- width: 100%;
31
- height: 100%;
32
- opacity: 0;
33
- display: block;
34
- transform: scale(0.5);
35
- transition: 100ms opacity ease-in-out, 200ms transform ease-in;
36
- }
37
-
38
- &:checked {
39
- color: var(--color-green-6);
40
- background-color: currentColor;
41
- border-color: currentColor;
42
- animation: activateRadio 175ms forwards ease-in-out;
43
-
44
- &::after {
45
- transform: scale(1);
46
- opacity: 1;
47
- }
48
-
49
-
50
- }
51
- // &:focus {
52
- // border-color: transparent;
53
- // }
54
-
55
- @keyframes activateRadio {
56
- 0% {
57
- transform: scale(0.8);
58
- }
59
- 80% {
60
- transform: scale(1.1);
61
- }
62
- 100% {
63
- transform: scale(1);
64
- }
65
- }
66
- }
67
- }
68
- }
@@ -1,55 +0,0 @@
1
- import React, { ChangeEvent, CSSProperties, useState } from "react";
2
- import radioStyles from "./RadioInput.module.scss";
3
-
4
- export interface RadioInputProps
5
- extends Partial<
6
- Omit<
7
- React.DetailedHTMLProps<
8
- React.InputHTMLAttributes<HTMLInputElement>,
9
- HTMLInputElement
10
- >,
11
- "onChange"
12
- >
13
- > {
14
- label?: string | React.ReactNode;
15
- reverse?: boolean;
16
- onChange?: (event: React.ChangeEvent, checked?: boolean) => void;
17
- }
18
-
19
- export const RadioInput = ({
20
- checked = false,
21
- label,
22
- onChange,
23
- reverse,
24
- ...rest
25
- }: RadioInputProps) => {
26
- const [isChecked, setIsChecked] = useState<boolean>();
27
-
28
- const style: CSSProperties = {
29
- flexDirection: reverse ? "row-reverse" : "row",
30
- };
31
-
32
- const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
33
- e.stopPropagation();
34
- setIsChecked((prev) => !prev);
35
- onChange && onChange(e, checked);
36
- };
37
-
38
- React.useEffect(() => {
39
- setIsChecked(checked);
40
- }, [checked]);
41
-
42
- return (
43
- <div className={radioStyles.radio}>
44
- <label style={style}>
45
- <input
46
- checked={isChecked}
47
- type="radio"
48
- onChange={handleChange}
49
- {...rest}
50
- />
51
- {label}
52
- </label>
53
- </div>
54
- );
55
- };
@@ -1 +0,0 @@
1
- export { RadioInput, type RadioInputProps } from "./RadioInput"
@@ -1,40 +0,0 @@
1
- .searchInput {
2
- display: flex;
3
- height: 40px;
4
- border-radius: 20px;
5
- border: 1px solid transparent;
6
- padding: 0 16px;
7
- place-items: center;
8
- place-content: center;
9
- position: relative;
10
- max-width: max-content;
11
-
12
- transition: 250ms width ease-in-out, 125ms border-color ease-in-out;
13
-
14
- input[type=text] {
15
- width: 100%;
16
- height: 100%;
17
- border: none;
18
- outline: none;
19
- background-color: transparent;
20
- font-size: var(--size-16);
21
- color: var(--color-grey-3);
22
-
23
- &::placeholder {
24
- font-size: var(--size-16);
25
- font-weight: var(--weight-inter-medium);
26
- color: var(--color-grey-6);
27
- }
28
- }
29
-
30
- .magnify {
31
- cursor: pointer;
32
- position: absolute;
33
- right: 0;
34
- transform: translateX(-50%);
35
-
36
- &:hover {
37
- opacity: 0.8;
38
- }
39
- }
40
- }
@@ -1,61 +0,0 @@
1
- import React, { useState, useEffect, createRef } from "react";
2
- import { Component } from "@soul-refiner/utils/src";
3
- import searchStyle from "./SearchInput.module.scss";
4
-
5
- import { Magnify } from "@soul-refiner/icons/src";
6
-
7
- export interface SearchInputProps
8
- extends Omit<React.HTMLProps<HTMLInputElement>, "as"> {
9
- as?: React.ElementType;
10
- expandable: boolean;
11
- expanded?: boolean;
12
- onSubmit?: () => void;
13
- width?: number;
14
- }
15
-
16
- export const SearchInput = ({
17
- as,
18
- expandable = false,
19
- expanded = false,
20
- onSubmit,
21
- width = 340,
22
- ...rest
23
- }: SearchInputProps) => {
24
- const [isExpended, setIsExpended] = useState(expanded);
25
- const inputRef = createRef<HTMLInputElement>();
26
-
27
- useEffect(() => {
28
- setIsExpended(isExpended);
29
- }, [isExpended]);
30
-
31
- const style = {
32
- width: isExpended ? width : 40,
33
- borderColor: isExpended ? "#AFB6B9" : "transparent",
34
- };
35
-
36
- const handleExpendSearch = () => {
37
- const expended = isExpended;
38
-
39
- if (expended) inputRef.current?.blur();
40
- else inputRef.current?.focus();
41
-
42
- setIsExpended(!isExpended);
43
- };
44
-
45
- return (
46
- <Component
47
- as={as ?? "form"}
48
- className={`${searchStyle.searchInput}`}
49
- style={style}
50
- onSubmit={onSubmit}
51
- >
52
- <input ref={inputRef} type="text" autoComplete="false" {...rest} />
53
- <Magnify
54
- className={searchStyle.magnify}
55
- iconSize={24}
56
- fill="#5C6264"
57
- onClick={handleExpendSearch}
58
- />
59
- </Component>
60
- );
61
- };
@@ -1 +0,0 @@
1
- export { SearchInput, type SearchInputProps } from "./SearchInput";
@@ -1,66 +0,0 @@
1
- .selectInput {
2
- $height: 40px;
3
- $borderColor: #AFB6B9;
4
- $borderSize: 1px;
5
-
6
- display: flex;
7
- flex-direction: column;
8
- place-content: center;
9
- position: relative;
10
- border: 1px solid $borderColor;
11
- padding: 8px 16px;
12
- outline: none;
13
- user-select: none;
14
- background-color: #FFF;
15
-
16
- height: $height;
17
- border-radius: 0.5 * $height;
18
-
19
- cursor: pointer;
20
-
21
- .title {
22
- display: flex;
23
- flex-direction: row;
24
- gap: 16px;
25
- place-items: center;
26
- place-content: space-between;
27
- }
28
-
29
- &[class~=expanded] {
30
- border-bottom-left-radius: 0;
31
- border-bottom-right-radius: 0;
32
- border-bottom-color: transparent;
33
-
34
- .options {
35
- box-shadow: 0 20px 20px -10px rgb(0 0 0 / 10%);
36
- }
37
- }
38
-
39
- &:active {
40
-
41
- }
42
-
43
- .options {
44
- position: absolute;
45
- bottom: 0;
46
- left: 0 - $borderSize;
47
- transform: translateY(100%);
48
- border: 1px solid $borderColor;
49
- border-top-width: 0;
50
- border-radius: 0.5 * $height;
51
- border-top-left-radius: 0;
52
- border-top-right-radius: 0;
53
- background-color: rgba(255 255 255 / 50%);
54
- backdrop-filter: blur(40px) saturate(200%);
55
- min-width: calc(100% + ($borderSize * 2));
56
- overflow: hidden;
57
- }
58
-
59
- .option {
60
- padding: 8px 16px;
61
-
62
- &[class~=active] {
63
- background-color: var(--color-blue-9);
64
- }
65
- }
66
- }
@@ -1,145 +0,0 @@
1
- import React, { useState, useEffect, useRef, ReactNode } from "react";
2
- import styles from "./SelectInput.module.scss";
3
- import { ChevronDown } from "@soul-refiner/icons/src";
4
-
5
- export interface SelectInputProps {
6
- icon?: ReactNode;
7
- name: string;
8
- onSelect?: (value: string) => void;
9
- options: Array<HTMLOptionElement>;
10
- placeholder?: string;
11
- }
12
-
13
- export const SelectInput = ({
14
- icon,
15
- name,
16
- onSelect,
17
- options,
18
- placeholder = "Select an option",
19
- }: SelectInputProps) => {
20
- const [focused, setFocused] = useState<boolean>(false);
21
- const [expanded, _setExpanded] = useState<boolean>(false);
22
- const [selectedIndex, setSelectedIndex] = useState<number>();
23
- const [scrollIndex, _setScrollIndex] = useState<number>(-1);
24
-
25
- const selectRef = useRef<HTMLDivElement>(null);
26
-
27
- const expandedRef = useRef<boolean>(expanded);
28
- const setExpanded = (expanded: boolean) => {
29
- expandedRef.current = expanded;
30
- _setExpanded(expanded);
31
- };
32
-
33
- const scrollIndexRef = useRef<number | undefined>(selectedIndex);
34
- const setScrollIndex = (index: number) => {
35
- index = index < 0 ? index + options.length : index;
36
- scrollIndexRef.current = index;
37
- _setScrollIndex(index);
38
- };
39
-
40
- useEffect(() => {
41
- if (focused) {
42
- document.addEventListener("keydown", handleKeydown);
43
- } else {
44
- document.removeEventListener("keydown", handleKeydown);
45
- }
46
-
47
- return () => {
48
- document.removeEventListener("keydown", handleKeydown);
49
- };
50
- }, [focused]);
51
-
52
- useEffect(() => {
53
- if (typeof selectedIndex === "number" && onSelect) {
54
- onSelect(options[selectedIndex].value);
55
- }
56
- }, [selectedIndex]);
57
-
58
- const handleKeydown = (e: KeyboardEvent) => {
59
- e.preventDefault();
60
-
61
- const increment = expandedRef.current ? 1 : 0;
62
- const currentScrollRef = scrollIndexRef.current
63
- ? scrollIndexRef.current
64
- : 0;
65
-
66
- switch (e.key) {
67
- case "ArrowUp":
68
- setExpanded(true);
69
- setScrollIndex((currentScrollRef - increment) % options.length);
70
- break;
71
- case "ArrowDown":
72
- setExpanded(true);
73
- setScrollIndex((currentScrollRef + increment) % options.length);
74
- break;
75
- case "Escape":
76
- setExpanded(false);
77
- break;
78
- case "Enter":
79
- if (expandedRef.current) {
80
- setSelectedIndex(currentScrollRef);
81
- setExpanded(false);
82
- } else {
83
- setExpanded(true);
84
- }
85
- break;
86
- }
87
- };
88
-
89
- const handleOnClick = () => {
90
- setExpanded(!expanded);
91
- };
92
-
93
- return (
94
- <div
95
- ref={selectRef}
96
- tabIndex={0}
97
- onClick={handleOnClick}
98
- onBlur={(e) => {
99
- e.preventDefault();
100
- setFocused(false);
101
- setExpanded(false);
102
- }}
103
- onFocus={(e) => {
104
- e.preventDefault();
105
- setFocused(true);
106
- }}
107
- className={`${styles.selectInput} ${expanded ? "expanded" : ""}`}
108
- >
109
- <div className={styles.title}>
110
- {placeholder && selectedIndex === undefined && placeholder}
111
- {selectedIndex !== undefined && options[selectedIndex].label}
112
- {icon ? icon : <ChevronDown size={16} fill={"var(--color-grey-3)"} />}
113
- </div>
114
-
115
- {expanded && (
116
- <div className={styles.options}>
117
- {options?.map((option, index) => {
118
- return (
119
- <div
120
- key={index}
121
- onClick={(e) => {
122
- e.stopPropagation();
123
- setSelectedIndex(index);
124
- setExpanded(false);
125
- selectRef.current?.focus();
126
- }}
127
- onMouseOver={() => setScrollIndex(index)}
128
- className={`${styles.option} ${
129
- scrollIndex === index ? "active" : ""
130
- }`}
131
- >
132
- {option.label}
133
- </div>
134
- );
135
- })}
136
- </div>
137
- )}
138
- <input
139
- type="hidden"
140
- name={name}
141
- value={selectedIndex ? options[selectedIndex].value : ""}
142
- />
143
- </div>
144
- );
145
- };
@@ -1 +0,0 @@
1
- export { SelectInput, type SelectInputProps } from "./SelectInput"
@@ -1,75 +0,0 @@
1
- .container {
2
-
3
- border: 1px solid var(--color-grey-9);
4
- display: flex;
5
- border-radius: var(--border-radius-small);
6
- position: relative;
7
- padding: 8px;
8
-
9
- &[class~=maxLength] {
10
- padding-bottom: 2.5em;
11
-
12
- .counter {
13
- position: absolute;
14
- bottom: 0;
15
- right: 0;
16
- padding: 10px;
17
- color: var(--color-grey-5);
18
- }
19
- }
20
-
21
- .tags {
22
- display: flex;
23
- gap: 8px;
24
- flex-direction: row;
25
- flex-wrap: wrap;
26
-
27
- position: relative;
28
-
29
- .tag {
30
- display: flex;
31
- flex-direction: row;
32
- place-content: space-between;
33
- place-items: center;
34
- gap: 8px;
35
-
36
- background: var(--color-grey-9);
37
- border-radius: 4px;
38
- padding: 0px 0 0 10px;
39
- height: 2.5em;
40
-
41
- cursor: pointer;
42
-
43
- &>div {
44
- min-width: 1ch;
45
- height: 1em;
46
- display: flex;
47
- place-items: center;
48
- padding-right: 10px;
49
-
50
- &:first-child {
51
- flex: 1;
52
- }
53
-
54
- &:focus {
55
- outline: none;
56
-
57
- &:first-child {
58
- cursor:text;
59
- }
60
- }
61
- }
62
- &:focus-within {
63
- outline: 2px solid var(--colorify-blue-3);
64
- }
65
- &[class~=createTag] {
66
- background-color: white;
67
- border: none;
68
- flex: 1;
69
- min-width: 4em;
70
- }
71
- }
72
- }
73
-
74
-
75
- }
@@ -1,115 +0,0 @@
1
- import React, { useState, KeyboardEvent, useRef, CSSProperties } from "react";
2
- import { Close } from "@soul-refiner/icons/src";
3
- import tagInputStyle from "./TagInput.module.scss";
4
-
5
- export interface TagInputProps {
6
- max?: number;
7
- style?: CSSProperties;
8
- }
9
-
10
- export const TagInput = ({ max, style }: TagInputProps) => {
11
- const [tags, setTags] = useState<Array<string>>([]);
12
-
13
- const addTag = (tag: string) => {
14
- setTags((previous) => {
15
- return [...previous, tag];
16
- });
17
- };
18
-
19
- const updateTag = (tag: string, index: number) => {
20
- const t: Array<string> = [...tags];
21
- t.splice(index, 1, tag);
22
- setTags(t);
23
- };
24
-
25
- const deleteTag = (index: number) => {
26
- const t: Array<string> = [...tags];
27
- t.splice(index, 1);
28
- setTags(t);
29
- };
30
-
31
- const RenderTag = ({
32
- tag,
33
- index,
34
- createTag = false,
35
- }: {
36
- tag?: string;
37
- index?: number;
38
- createTag?: boolean;
39
- }) => {
40
- const [thisTag] = useState<string>(tag ? tag : "");
41
- const ref = useRef<HTMLDivElement>(null);
42
- const updating: boolean = typeof index === "number";
43
-
44
- const handleKeyPress = (e: KeyboardEvent<HTMLDivElement>) => {
45
- const innerText: string = ref.current ? ref.current.innerText : "";
46
-
47
- switch (e.code) {
48
- case "Enter":
49
- case "Comma":
50
- e.preventDefault();
51
-
52
- if (tags.find((tag) => tag === innerText)) {
53
- break;
54
- }
55
-
56
- if (updating) {
57
- updateTag(innerText, index as number);
58
- } else {
59
- addTag(innerText);
60
- }
61
-
62
- break;
63
- default:
64
- //setThisTag(ref.current ? ref.current.innerText : "");
65
- break;
66
- }
67
- };
68
-
69
- const handleDelete = () => {
70
- if (typeof index !== "undefined") deleteTag(index);
71
- };
72
-
73
- return (
74
- <div
75
- className={`${tagInputStyle.tag} ${createTag ? "createTag" : ""}`}
76
- onClick={() => ref.current?.focus()}
77
- >
78
- <div
79
- ref={ref}
80
- contentEditable={true}
81
- onKeyPress={handleKeyPress}
82
- suppressContentEditableWarning
83
- >
84
- {thisTag}
85
- </div>
86
- {!createTag && (
87
- <div onClick={handleDelete}>
88
- <Close fill="var(--color-grey-6)" size={14} />
89
- </div>
90
- )}
91
- </div>
92
- );
93
- };
94
-
95
- return (
96
- <div
97
- style={style}
98
- className={`${tagInputStyle.container} ${
99
- typeof max === "number" ? "maxLength" : ""
100
- }`}
101
- >
102
- <div className={tagInputStyle.tags}>
103
- {tags.map((tag, index) => {
104
- return <RenderTag key={index} index={index} tag={tag} />;
105
- })}
106
- {(!max || (max && tags.length < max)) && <RenderTag createTag={true} />}
107
- </div>
108
- {max && (
109
- <div className={tagInputStyle.counter}>
110
- {tags.length} / {max}
111
- </div>
112
- )}
113
- </div>
114
- );
115
- };
@@ -1 +0,0 @@
1
- export { TagInput, type TagInputProps } from "./TagInput"