odaptos_design_system 1.0.0 → 1.2.0

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 (224) hide show
  1. package/README.md +8 -74
  2. package/package.json +24 -15
  3. package/src/Accordion/Accordion.modules.scss +41 -0
  4. package/src/Accordion/Accordion.tsx +55 -0
  5. package/src/Badge/Badge.modules.scss +83 -0
  6. package/src/Badge/Badge.tsx +69 -0
  7. package/src/Buttons/Button.modules.scss +235 -0
  8. package/src/Buttons/Button.tsx +55 -7
  9. package/src/Buttons/IconButton.modules.scss +185 -0
  10. package/src/Buttons/IconButton.tsx +53 -0
  11. package/src/Cards/Card.modules.scss +12 -0
  12. package/src/Cards/Card.tsx +14 -0
  13. package/src/Cards/CardButton.modules.scss +23 -0
  14. package/src/Cards/CardButton.tsx +14 -0
  15. package/src/Checkbox/Checkbox.module.scss +4 -0
  16. package/src/Checkbox/Checkbox.tsx +120 -0
  17. package/src/ColorGuide/colors.ts +99 -0
  18. package/src/Icons/Arrows/ArrowDoubleLineDownIcon.tsx +44 -0
  19. package/src/Icons/Arrows/ArrowDoubleLineLeftIcon.tsx +44 -0
  20. package/src/Icons/Arrows/ArrowDoubleLineRightIcon.tsx +44 -0
  21. package/src/Icons/Arrows/ArrowDoubleLineUpIcon.tsx +44 -0
  22. package/src/Icons/Arrows/ArrowFilledDownIcon.tsx +29 -0
  23. package/src/Icons/Arrows/ArrowFilledLeftIcon.tsx +29 -0
  24. package/src/Icons/Arrows/ArrowFilledRightIcon.tsx +29 -0
  25. package/src/Icons/Arrows/ArrowFilledUpIcon.tsx +29 -0
  26. package/src/Icons/Arrows/ArrowLineDownIcon.tsx +38 -0
  27. package/src/Icons/Arrows/ArrowLineLeftIcon.tsx +38 -0
  28. package/src/Icons/Arrows/ArrowLineRightIcon.tsx +38 -0
  29. package/src/Icons/Arrows/ArrowLineUpIcon.tsx +38 -0
  30. package/src/Icons/Arrows/ArrowPointerDown.tsx +44 -0
  31. package/src/Icons/Arrows/ArrowPointerDownLeft.tsx +37 -0
  32. package/src/Icons/Arrows/ArrowPointerDownRight.tsx +37 -0
  33. package/src/Icons/Arrows/ArrowPointerLeft.tsx +44 -0
  34. package/src/Icons/Arrows/ArrowPointerRight.tsx +44 -0
  35. package/src/Icons/Arrows/ArrowPointerUp.tsx +44 -0
  36. package/src/Icons/Arrows/ArrowPointerUpLeft.tsx +37 -0
  37. package/src/Icons/Arrows/ArrowPointerUpRight.tsx +37 -0
  38. package/src/Icons/Circled/AddCircledIcon.tsx +43 -0
  39. package/src/Icons/Circled/AlertCircledIcon.tsx +56 -0
  40. package/src/Icons/Circled/CheckedCircled.tsx +44 -0
  41. package/src/Icons/Circled/InfoCircledIcon.tsx +56 -0
  42. package/src/Icons/Circled/MinusCircledIcon.tsx +44 -0
  43. package/src/Icons/Circled/NavigationCircledIcon.tsx +50 -0
  44. package/src/Icons/Circled/QuestionCircledIcon.tsx +49 -0
  45. package/src/Icons/Circled/RemoveCircledIcon.tsx +43 -0
  46. package/src/Icons/Circled/SearchCircledIcon.tsx +50 -0
  47. package/src/Icons/Circled/SettingsCircledIcon.tsx +43 -0
  48. package/src/Icons/Equipment/CameraIcon.tsx +37 -0
  49. package/src/Icons/Equipment/LaptopIcon.tsx +66 -0
  50. package/src/Icons/Equipment/MicrophonePodcastIcon.tsx +31 -0
  51. package/src/Icons/Equipment/MobileIcon.tsx +73 -0
  52. package/src/Icons/Equipment/TvFlatScreenIcon.tsx +67 -0
  53. package/src/Icons/Equipment/TvIcon.tsx +43 -0
  54. package/src/Icons/Interaction/AccountIcon.tsx +31 -0
  55. package/src/Icons/Interaction/AddIcon.tsx +44 -0
  56. package/src/Icons/Interaction/AgendaIcon.tsx +68 -0
  57. package/src/Icons/Interaction/BillingIcon.tsx +67 -0
  58. package/src/Icons/Interaction/BinIcon.tsx +50 -0
  59. package/src/Icons/Interaction/CheckedIcon.tsx +31 -0
  60. package/src/Icons/Interaction/ClockIcon.tsx +50 -0
  61. package/src/Icons/Interaction/CopyPasteIcon.tsx +75 -0
  62. package/src/Icons/Interaction/DragDropIcon.tsx +34 -0
  63. package/src/Icons/Interaction/EditIcon.tsx +44 -0
  64. package/src/Icons/Interaction/EditTextIcon.tsx +56 -0
  65. package/src/Icons/Interaction/LogoutIcon.tsx +50 -0
  66. package/src/Icons/Interaction/MenuHorizontalIcon.tsx +28 -0
  67. package/src/Icons/Interaction/MenuVerticalIcon.tsx +40 -0
  68. package/src/Icons/Interaction/MinusIcon.tsx +26 -0
  69. package/src/Icons/Interaction/SearchIcon.tsx +44 -0
  70. package/src/Icons/Interaction/SearchRemoveIcon.tsx +56 -0
  71. package/src/Icons/Interaction/ShareIcon.tsx +55 -0
  72. package/src/Icons/Interaction/TeamIcon.tsx +68 -0
  73. package/src/Icons/Logos/LogoBeta.tsx +51 -0
  74. package/src/Icons/Logos/LogoNormal.tsx +37 -0
  75. package/src/Icons/Logos/LogoSmall.tsx +31 -0
  76. package/src/Icons/Logos/LogoSquare.tsx +71 -0
  77. package/src/Icons/Logos/LogoText.tsx +31 -0
  78. package/src/Icons/MediaControl/HangUpIcon.tsx +50 -0
  79. package/src/Icons/MediaControl/MeetingIcon.tsx +37 -0
  80. package/src/Icons/MediaControl/MicrophoneIcon.tsx +43 -0
  81. package/src/Icons/MediaControl/MoveInIcon.tsx +51 -0
  82. package/src/Icons/MediaControl/MuteIcon.tsx +43 -0
  83. package/src/Icons/MediaControl/PauseIcon.tsx +37 -0
  84. package/src/Icons/MediaControl/PlayIcon.tsx +30 -0
  85. package/src/Icons/MediaControl/PreviousIcon.tsx +39 -0
  86. package/src/Icons/MediaControl/RecordingIcon.tsx +74 -0
  87. package/src/Icons/MediaControl/VolumeIcon.tsx +49 -0
  88. package/src/Icons/Miscellaneous/AddSeatIcon.tsx +29 -0
  89. package/src/Icons/Miscellaneous/AddUsersIcon.tsx +62 -0
  90. package/src/Icons/Miscellaneous/BillPdfIcon.tsx +29 -0
  91. package/src/Icons/Miscellaneous/BinocularIcon.tsx +31 -0
  92. package/src/Icons/Miscellaneous/BrainIcon.tsx +98 -0
  93. package/src/Icons/Miscellaneous/ChatBubbleIcon.tsx +60 -0
  94. package/src/Icons/Miscellaneous/ChatIcon.tsx +29 -0
  95. package/src/Icons/Miscellaneous/CheckoutIcon.tsx +29 -0
  96. package/src/Icons/Miscellaneous/ClipIcon.tsx +49 -0
  97. package/src/Icons/Miscellaneous/CreditCardIcon.tsx +29 -0
  98. package/src/Icons/Miscellaneous/DownloadIcon.tsx +29 -0
  99. package/src/Icons/Miscellaneous/EarthIcon.tsx +50 -0
  100. package/src/Icons/Miscellaneous/FaceCenterIcon.tsx +34 -0
  101. package/src/Icons/Miscellaneous/FaceRecognitionIcon.tsx +80 -0
  102. package/src/Icons/Miscellaneous/FilesIcon.tsx +43 -0
  103. package/src/Icons/Miscellaneous/FillRecordIcon.tsx +29 -0
  104. package/src/Icons/Miscellaneous/FolderIcon.tsx +31 -0
  105. package/src/Icons/Miscellaneous/GoogleIcon.tsx +59 -0
  106. package/src/Icons/Miscellaneous/HardDriveIcon.tsx +50 -0
  107. package/src/Icons/Miscellaneous/HelpIcon.tsx +29 -0
  108. package/src/Icons/Miscellaneous/LanguageIcon.tsx +27 -0
  109. package/src/Icons/Miscellaneous/LinkIcon.tsx +34 -0
  110. package/src/Icons/Miscellaneous/MetaAnalyseIcon.tsx +67 -0
  111. package/src/Icons/Miscellaneous/ModeratedIcon.tsx +80 -0
  112. package/src/Icons/Miscellaneous/NbOfUsersIcon.tsx +56 -0
  113. package/src/Icons/Miscellaneous/NeutralBackgroudIcon.tsx +34 -0
  114. package/src/Icons/Miscellaneous/ReportIcon.tsx +62 -0
  115. package/src/Icons/Miscellaneous/SeatIcon.tsx +29 -0
  116. package/src/Icons/Miscellaneous/SendEmailIcon.tsx +43 -0
  117. package/src/Icons/Miscellaneous/SendIcon.tsx +38 -0
  118. package/src/Icons/Miscellaneous/SmartBrainIcon.tsx +44 -0
  119. package/src/Icons/Miscellaneous/TasksIcon.tsx +48 -0
  120. package/src/Icons/Miscellaneous/TestDetailsIcon.tsx +29 -0
  121. package/src/Icons/Miscellaneous/TestIcon.tsx +38 -0
  122. package/src/Icons/Miscellaneous/UnmoderatedIcon.tsx +55 -0
  123. package/src/Icons/Notifications/AlamBellIdleIcon.tsx +46 -0
  124. package/src/Icons/Notifications/AlarmBellStatusIcon.tsx +54 -0
  125. package/src/Icons/Notifications/NotifAlertIcon.tsx +33 -0
  126. package/src/Icons/index.ts +108 -0
  127. package/src/Interviews/Chat.modules.scss +29 -0
  128. package/src/Interviews/Chat.tsx +123 -0
  129. package/src/Interviews/ChatInput.modules.scss +29 -0
  130. package/src/Interviews/ChatInput.tsx +33 -0
  131. package/src/Interviews/CircleIconButton.modules.scss +44 -0
  132. package/src/Interviews/CircledIconButton.tsx +31 -0
  133. package/src/Interviews/ControlsBar.modules.scss +15 -0
  134. package/src/Interviews/ControlsBar.tsx +101 -0
  135. package/src/Interviews/GoBack.modules.scss +14 -0
  136. package/src/Interviews/GoBack.tsx +22 -0
  137. package/src/Interviews/InterviewButton.modules.scss +107 -0
  138. package/src/Interviews/InterviewButton.tsx +45 -0
  139. package/src/Interviews/MarkUpBar.modules.scss +33 -0
  140. package/src/Interviews/MarkUpBar.tsx +40 -0
  141. package/src/Interviews/StartInterview.modules.scss +14 -0
  142. package/src/Interviews/StartInterview.tsx +27 -0
  143. package/src/Interviews/Task.modules.scss +179 -0
  144. package/src/Interviews/Task.tsx +176 -0
  145. package/src/Interviews/WelcomeMessage.modules.scss +29 -0
  146. package/src/Interviews/WelcomeMessage.tsx +33 -0
  147. package/src/LateralMenu/LateralMenu.modules.scss +21 -0
  148. package/src/LateralMenu/LateralMenu.tsx +23 -0
  149. package/src/Modal/Modal.modules.scss +58 -0
  150. package/src/Modal/Modal.tsx +135 -0
  151. package/src/MultiSelect/MultiSelect.scss +66 -0
  152. package/src/MultiSelect/MultiSelect.tsx +226 -0
  153. package/src/MultiSelect/utils/textInputStyle.ts +78 -0
  154. package/src/Notifications/Banner.modules.scss +35 -0
  155. package/src/Notifications/Banner.tsx +103 -0
  156. package/src/Notifications/NotificationIcon.scss +0 -0
  157. package/src/Notifications/NotificationIcon.tsx +26 -0
  158. package/src/Notifications/Toast.modules.scss +87 -0
  159. package/src/Notifications/Toast.tsx +92 -0
  160. package/src/Popover/Popover.modules.scss +47 -0
  161. package/src/Popover/Popover.tsx +77 -0
  162. package/src/Radio/Radio.module.scss +9 -0
  163. package/src/Radio/Radio.tsx +82 -0
  164. package/src/Search/Search.tsx +25 -0
  165. package/src/SingleSelect/SingleSelect.scss +62 -0
  166. package/src/SingleSelect/SingleSelect.tsx +209 -0
  167. package/src/Step/Step.module.scss +54 -0
  168. package/src/Step/Step.tsx +88 -0
  169. package/src/Switch/Switch.module.scss +5 -0
  170. package/src/Switch/Switch.tsx +51 -0
  171. package/src/Table/header.modules.scss +20 -0
  172. package/src/Table/header.tsx +74 -0
  173. package/src/Table/index.tsx +53 -0
  174. package/src/Table/rows.modules.scss +16 -0
  175. package/src/Table/rows.tsx +74 -0
  176. package/src/Table/table-cell.modules.scss +12 -0
  177. package/src/Table/table-cell.tsx +40 -0
  178. package/src/Tabs/Tabs.tsx +83 -0
  179. package/src/Tabs/TabsUnderLine.tsx +90 -0
  180. package/src/Tabs/tabs.modules.scss +60 -0
  181. package/src/Tabs/tabsUnderline.modules.scss +29 -0
  182. package/src/Tag/Tag.modules.scss +58 -0
  183. package/src/Tag/Tag.tsx +63 -0
  184. package/src/TextInput/TextInput.scss +50 -0
  185. package/src/TextInput/TextInput.tsx +212 -0
  186. package/src/Textarea/Textarea.module.scss +19 -0
  187. package/src/Textarea/Textarea.tsx +88 -0
  188. package/src/Tooltip/Layout/TooltipCustomLayout.module.scss +24 -0
  189. package/src/Tooltip/Layout/TooltipCustomLayout.tsx +104 -0
  190. package/src/Tooltip/Tooltip.tsx +139 -0
  191. package/src/Typography/{Caption.css → Caption.modules.scss} +5 -5
  192. package/src/Typography/Caption.tsx +8 -4
  193. package/src/Typography/Link.modules.scss +140 -0
  194. package/src/Typography/Link.tsx +73 -0
  195. package/src/Typography/Text.modules.scss +277 -0
  196. package/src/Typography/Text.tsx +38 -8
  197. package/src/Typography/{TextForButton.css → TextForButton.modules.scss} +8 -8
  198. package/src/Typography/TextForButton.tsx +15 -5
  199. package/src/Typography/{TextForDropDownItem.css → TextForDropDownItem.modules.scss} +11 -14
  200. package/src/Typography/TextForDropDownItem.tsx +14 -4
  201. package/src/Typography/TextWithLink.modules.scss +281 -0
  202. package/src/Typography/TextWithLink.tsx +65 -0
  203. package/src/Typography/{Title.css → Title.modules.scss} +27 -25
  204. package/src/Typography/Title.tsx +114 -16
  205. package/src/hooks/useClickOutside.ts +31 -0
  206. package/src/index.ts +34 -0
  207. package/dist/Buttons/Button.d.ts +0 -6
  208. package/dist/Color Guide/colors.d.ts +0 -6
  209. package/dist/Typography/Caption.d.ts +0 -12
  210. package/dist/Typography/Text.d.ts +0 -15
  211. package/dist/Typography/TextForButton.d.ts +0 -13
  212. package/dist/Typography/TextForDropDownItem.d.ts +0 -13
  213. package/dist/Typography/Title.d.ts +0 -14
  214. package/dist/index.d.ts +0 -6
  215. package/dist/index.js +0 -8
  216. package/dist/odaptos_design_system.cjs.development.css +0 -5
  217. package/dist/odaptos_design_system.cjs.development.js +0 -108
  218. package/dist/odaptos_design_system.cjs.development.js.map +0 -1
  219. package/dist/odaptos_design_system.cjs.production.min.js +0 -2
  220. package/dist/odaptos_design_system.cjs.production.min.js.map +0 -1
  221. package/dist/odaptos_design_system.esm.js +0 -97
  222. package/dist/odaptos_design_system.esm.js.map +0 -1
  223. package/src/Color Guide/colors.ts +0 -89
  224. package/src/Typography/Text.css +0 -272
@@ -0,0 +1,179 @@
1
+ .task_container {
2
+ display: flex;
3
+ flex-direction: column;
4
+ padding: 0px;
5
+ justify-content: center;
6
+ align-items: flex-start;
7
+ gap: 0.5rem;
8
+ align-self: 'stretch';
9
+ max-width: 100%;
10
+
11
+ border-radius: 0.5rem;
12
+ border: 1px solid var(--color-neutral-dark-shades-950, #26292e);
13
+ background: var(--color-neutral-basics-white, #fff);
14
+
15
+ .header {
16
+ max-width: 100%;
17
+ .header_left {
18
+ &:hover {
19
+ border-radius: 0.5rem 0rem 0rem 0.5rem;
20
+ background: var(--color-neutral-clear-shades-150, #eee);
21
+ }
22
+ }
23
+ .header_right {
24
+ &:hover {
25
+ border-radius: 0rem 0.5rem 0.5rem 0rem;
26
+ background: var(--color-neutral-clear-shades-150, #eee);
27
+ }
28
+ }
29
+ }
30
+ }
31
+ .header {
32
+ display: flex;
33
+ justify-content: center;
34
+ align-items: center;
35
+ height: 100%;
36
+ max-width: 100%;
37
+ }
38
+ .header_left {
39
+ display: flex;
40
+ padding: 0.3125rem;
41
+ flex-direction: column;
42
+ justify-content: center;
43
+ align-items: flex-start;
44
+ max-width: calc(100% - 3.5rem);
45
+ padding-left: 0.62rem;
46
+ cursor: pointer;
47
+
48
+ .title {
49
+ overflow: hidden;
50
+ text-overflow: ellipsis;
51
+ max-width: 98%;
52
+ white-space: nowrap;
53
+ }
54
+ }
55
+ .header_right {
56
+ display: flex;
57
+ padding: 1rem 0.75rem;
58
+ justify-content: center;
59
+ align-items: center;
60
+ gap: 0.5rem;
61
+ border-radius: 0rem 0.5rem 0.5rem 0rem;
62
+ border: none;
63
+ border-left: 1px solid var(--color-neutral-dark-shades-950, #26292e);
64
+ background: var(--color-neutral-basics-white, #fff);
65
+ max-width: calc(100% - 3.5rem);
66
+ margin-left: auto;
67
+ height: 100%;
68
+ cursor: pointer;
69
+ svg {
70
+ height: 1rem;
71
+ width: 1rem;
72
+ fill: black;
73
+ }
74
+ }
75
+
76
+ .disabled_task {
77
+ display: flex;
78
+ flex-direction: column;
79
+ padding: 0px;
80
+ justify-content: center;
81
+ align-items: flex-start;
82
+ gap: 0.5rem;
83
+ border-radius: 0.5rem;
84
+ border: 1px solid var(--color-neutral-clear-shades-300, #d5d5d6);
85
+ background: var(--color-neutral-basics-white, #fff);
86
+ cursor: not-allowed;
87
+ max-width: 100%;
88
+ // width: 100%;
89
+ .header {
90
+ width: 100%;
91
+ max-width: 100%;
92
+ .header_left {
93
+ border-color: var(--color-neutral-clear-shades-300, #d5d5d6);
94
+ cursor: not-allowed;
95
+ opacity: 0.5;
96
+ width: 100%;
97
+ }
98
+ .header_right {
99
+ border-color: var(--color-neutral-clear-shades-300, #d5d5d6);
100
+ cursor: not-allowed;
101
+ opacity: 0.5;
102
+ }
103
+ }
104
+ }
105
+ .active_task {
106
+ display: flex;
107
+ flex-direction: column;
108
+ padding: 0px;
109
+ justify-content: center;
110
+ align-items: flex-start;
111
+ gap: 0.5rem;
112
+ border-radius: 0.5rem;
113
+ border: 1px solid #07f;
114
+ background: var(--color-neutral-basics-white, #fff);
115
+ max-width: 100%;
116
+ .header {
117
+ width: 100%;
118
+ max-width: 100%;
119
+ border-bottom: 1px solid var(--color-neutral-clear-shades-300, #d5d5d6);
120
+ .header_left {
121
+ border-color: var(--color-neutral-clear-shades-300, #d5d5d6);
122
+ }
123
+ .header_right {
124
+ border-color: var(--color-neutral-clear-shades-300, #d5d5d6);
125
+ &:hover {
126
+ background: var(--color-neutral-clear-shades-150, #eee);
127
+ }
128
+ }
129
+ }
130
+ }
131
+
132
+ .taskContent {
133
+ display: flex;
134
+ flex-direction: column;
135
+ align-items: flex-start;
136
+ gap: 0.5rem;
137
+ align-self: stretch;
138
+ padding: 0.5rem 0.75rem 0.25rem 0.75rem;
139
+ }
140
+
141
+ .taskPopover {
142
+ display: flex;
143
+ width: 25.5625rem;
144
+ padding: 0.5rem 0.75rem 0.75rem 0.75rem;
145
+ flex-direction: column;
146
+ align-items: flex-start;
147
+ border-radius: 0.5rem;
148
+ overflow: hidden;
149
+ border: 1px solid var(--color-neutral-dark-shades-950, #26292e);
150
+ background: var(--color-neutral-basics-white, #fff);
151
+ }
152
+ .notesContainer {
153
+ display: flex;
154
+ padding-top: 0.5rem;
155
+ flex-direction: column;
156
+ align-items: flex-start;
157
+ gap: 0.25rem;
158
+ align-self: stretch;
159
+ border-top: 1px solid var(--color-neutral-clear-shades-300, #d5d5d6);
160
+ }
161
+ .actionBtnsContainer {
162
+ display: flex;
163
+ padding-top: 8px;
164
+ justify-content: flex-end;
165
+ align-items: flex-start;
166
+ gap: 0.5rem;
167
+ align-self: stretch;
168
+ }
169
+
170
+ .popover_paper {
171
+ .MuiPopover-root {
172
+ border-radius: 0.5rem;
173
+ background: transparent;
174
+ }
175
+ .MuiPopover-paper {
176
+ border-radius: 0.5rem;
177
+ background: transparent;
178
+ }
179
+ }
@@ -0,0 +1,176 @@
1
+ import { HTMLAttributes } from 'react';
2
+ import styles from './Task.modules.scss';
3
+ import { Button, CheckedIcon, IconButton, Text, SendIcon } from '../';
4
+ import Popover from '@mui/material/Popover';
5
+ import * as React from 'react';
6
+ import { styled } from '@mui/material/styles';
7
+
8
+ const CustomPopover = styled(Popover)({
9
+ '& .MuiPopover-root': {
10
+ borderRadius: '0.5rem',
11
+ background: 'transparent',
12
+ },
13
+ '& .MuiPopover-paper': {
14
+ borderRadius: '0.5rem',
15
+ background: 'transparent',
16
+ },
17
+ });
18
+
19
+ export interface TaskProps extends HTMLAttributes<HTMLDivElement> {
20
+ className?: string;
21
+ taskNumber: string;
22
+ taskTitle: string;
23
+ notes?: string;
24
+ state: 'idle' | 'active' | 'disabled';
25
+ isDone: boolean;
26
+ sendTask: () => void;
27
+ iconAction1?: JSX.Element;
28
+ iconAction2?: JSX.Element;
29
+ iconAction3?: JSX.Element;
30
+ action1?: () => void;
31
+ action2?: () => void;
32
+ action3?: () => void;
33
+ mainActionText?: string;
34
+ mainAction?: () => void;
35
+ }
36
+
37
+ export const Task = ({
38
+ taskNumber,
39
+ taskTitle,
40
+ notes,
41
+ className,
42
+ sendTask,
43
+ state = 'idle',
44
+ isDone,
45
+ iconAction1,
46
+ iconAction2,
47
+ iconAction3,
48
+ action1,
49
+ action2,
50
+ action3,
51
+ mainActionText,
52
+ mainAction,
53
+ ...props
54
+ }: TaskProps) => {
55
+ const [anchorEl, setAnchorEl] = React.useState<HTMLElement | null>(null);
56
+
57
+ const handlePopoverOpen = (event: React.MouseEvent<HTMLElement>) => {
58
+ if (state === 'idle') setAnchorEl(event.currentTarget);
59
+ };
60
+
61
+ const handlePopoverClose = () => {
62
+ setAnchorEl(null);
63
+ };
64
+
65
+ const getContainerStyle = () => {
66
+ if (state === 'active') return styles.active_task;
67
+ else if (state === 'disabled') return styles.disabled_task;
68
+ else return styles.task_container;
69
+ };
70
+
71
+ const open = Boolean(anchorEl);
72
+ const areActionsDisplay =
73
+ iconAction1 || iconAction2 || iconAction3 || action1 || action2 || action3;
74
+ return (
75
+ <>
76
+ <div className={`${getContainerStyle()} ${className ?? ''}`} {...props}>
77
+ <div className={styles.header}>
78
+ <div
79
+ className={styles.header_left}
80
+ onMouseEnter={handlePopoverOpen}
81
+ onMouseLeave={handlePopoverClose}
82
+ >
83
+ <Text
84
+ text={taskNumber}
85
+ color={state === 'active' ? '#26292E' : '#64666A'}
86
+ size="xs"
87
+ />
88
+ {state !== 'active' && (
89
+ <Text
90
+ text={taskTitle}
91
+ size="sm"
92
+ weight="bold"
93
+ className={styles.title}
94
+ />
95
+ )}
96
+ </div>
97
+ <button
98
+ className={styles.header_right}
99
+ onClick={() => {
100
+ if (state === 'active') sendTask();
101
+ }}
102
+ disabled={state === 'disabled'}
103
+ >
104
+ {state === 'active' || isDone ? <CheckedIcon /> : <SendIcon />}
105
+ </button>
106
+ </div>
107
+
108
+ {state === 'active' && (
109
+ <>
110
+ <div className={styles.taskContent}>
111
+ <Text text={taskTitle} size="sm" weight="bold" />
112
+ {notes && (
113
+ <div className={styles.notesContainer}>
114
+ <Text text="Notes" size="xs" italic />
115
+ <Text text={notes} size="sm" />
116
+ </div>
117
+ )}
118
+ </div>
119
+ {areActionsDisplay && (
120
+ <div className={styles.taskContent}>
121
+ <Text text="Actions:" size="xs" italic />
122
+ <div className={styles.actionBtnsContainer}>
123
+ {action1 && iconAction1 && (
124
+ <IconButton onClick={action1} icon={iconAction1} />
125
+ )}
126
+ {action2 && iconAction2 && (
127
+ <IconButton onClick={action2} icon={iconAction2} />
128
+ )}
129
+ {action3 && iconAction3 && (
130
+ <IconButton onClick={action3} icon={iconAction3} />
131
+ )}
132
+ {mainAction && mainActionText && (
133
+ <Button
134
+ variant="secondary"
135
+ iconRight={<SendIcon />}
136
+ text={mainActionText}
137
+ onClick={mainAction}
138
+ />
139
+ )}
140
+ </div>
141
+ </div>
142
+ )}
143
+ </>
144
+ )}
145
+ </div>
146
+ <CustomPopover
147
+ id="mouse-over-popover"
148
+ sx={{
149
+ pointerEvents: 'none',
150
+ }}
151
+ open={open}
152
+ anchorEl={anchorEl}
153
+ anchorOrigin={{
154
+ vertical: 'center',
155
+ horizontal: 'left',
156
+ }}
157
+ transformOrigin={{
158
+ vertical: 'center',
159
+ horizontal: 'right',
160
+ }}
161
+ onClose={handlePopoverClose}
162
+ disableRestoreFocus
163
+ >
164
+ <div className={styles.taskPopover}>
165
+ <Text text={taskTitle} size="sm" weight="bold" />
166
+ {notes && (
167
+ <div className={styles.notesContainer}>
168
+ <Text text="Notes" size="xs" italic />
169
+ <Text text={notes} size="sm" />
170
+ </div>
171
+ )}
172
+ </div>
173
+ </CustomPopover>
174
+ </>
175
+ );
176
+ };
@@ -0,0 +1,29 @@
1
+ .welcome_container {
2
+ display: flex;
3
+ padding: 0.5rem 0.75rem 0.75rem 0.75rem;
4
+ flex-direction: column;
5
+ align-items: flex-start;
6
+ align-self: stretch;
7
+ border-radius: 0.5rem;
8
+ border: 1px solid var(--color-extended-green-300, #9dd6a3);
9
+ background: var(--color-extended-green-100, #e8f5ea);
10
+ max-width: 30rem;
11
+ .welcome_title {
12
+ border-bottom: 1px solid var(--color-extended-green-300, #9dd6a3);
13
+ padding-bottom: 0.35rem;
14
+ margin-bottom: 0.5rem;
15
+ }
16
+ .welcome_description {
17
+ font-family: Open Sans;
18
+ font-size: 0.875rem;
19
+ font-style: normal;
20
+ font-weight: 400;
21
+ line-height: 1.225rem;
22
+ ol {
23
+ margin: unset;
24
+ margin-top: 0.5625rem;
25
+ padding-inline-start: 1.5rem;
26
+ letter-spacing: -0.0019rem;
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,33 @@
1
+ import { HTMLAttributes } from 'react';
2
+ import styles from './WelcomeMessage.modules.scss';
3
+ import { Text } from '../';
4
+
5
+ export interface WelcomeMessageProps extends HTMLAttributes<HTMLDivElement> {
6
+ title: string;
7
+ description: string;
8
+ className?: string;
9
+ }
10
+
11
+ export const WelcomeMessage = ({
12
+ title,
13
+ description,
14
+ className,
15
+ ...props
16
+ }: WelcomeMessageProps) => {
17
+ return (
18
+ <div className={styles.welcome_container} {...props}>
19
+ <Text
20
+ text={title}
21
+ weight="bold"
22
+ size="base"
23
+ className={styles.welcome_title}
24
+ />
25
+ <div
26
+ dangerouslySetInnerHTML={{
27
+ __html: description,
28
+ }}
29
+ className={styles.welcome_description}
30
+ />
31
+ </div>
32
+ );
33
+ };
@@ -0,0 +1,21 @@
1
+ .lateral_menu {
2
+ display: flex;
3
+ min-width: 10rem;
4
+ height: 100vh;
5
+ padding: 1.5rem;
6
+ flex-direction: column;
7
+ align-items: flex-start;
8
+ justify-content: center;
9
+ gap: 14rem;
10
+ background: var(--color-neutral-basics-white, #fff);
11
+ position: relative;
12
+ box-shadow: 0px 6px 10px 4px rgba(0, 0, 0, 0.08),
13
+ 0px 2px 3px 0px rgba(0, 0, 0, 0.15);
14
+ .lateral_menu_logo {
15
+ position: absolute;
16
+ width: 8.64519rem;
17
+ height: 2rem;
18
+ top: 1.5rem;
19
+ left: 1.5rem;
20
+ }
21
+ }
@@ -0,0 +1,23 @@
1
+ import styles from './LateralMenu.modules.scss';
2
+ import { LogoNormal as Logo } from '../Icons';
3
+ import Grid from '@mui/material/Grid';
4
+ interface LateralMenuProps {
5
+ content: JSX.Element;
6
+ isLogoDisplay?: boolean;
7
+ className?: string;
8
+ }
9
+
10
+ /** Figma link : https://www.figma.com/file/fjnhhbL12HvKccPmJchVnr/Atomic-Library?type=design&node-id=3073-110563&mode=dev */
11
+ export const LateralMenu = ({
12
+ isLogoDisplay = false,
13
+ content,
14
+ className,
15
+ ...props
16
+ }: LateralMenuProps) => {
17
+ return (
18
+ <Grid item {...props} className={`${styles.lateral_menu}`} xs={2}>
19
+ {isLogoDisplay && <Logo className={styles.lateral_menu_logo} />}
20
+ {content}
21
+ </Grid>
22
+ );
23
+ };
@@ -0,0 +1,58 @@
1
+ .modal {
2
+ position: absolute;
3
+ .modal_content {
4
+ display: flex;
5
+ width: 65rem;
6
+ height: 50rem;
7
+ padding: 1rem;
8
+ flex-direction: column;
9
+ align-items: space-between;
10
+ gap: 1rem;
11
+ z-index: 1301;
12
+ background: white;
13
+ border: none;
14
+ .modal_header {
15
+ display: flex;
16
+ align-items: center;
17
+ justify-content: space-between;
18
+ gap: 0.5rem;
19
+ width: 100%;
20
+ }
21
+ .modal_buttons_container {
22
+ display: flex;
23
+ gap: 0.5rem;
24
+ width: 100%;
25
+ justify-content: flex-end;
26
+ }
27
+ }
28
+ }
29
+
30
+ .modal_overlay {
31
+ position: absolute;
32
+ .modal_content {
33
+ display: flex;
34
+ width: 21rem;
35
+ height: auto;
36
+ padding: 1rem;
37
+ flex-direction: column;
38
+ align-items: space-between;
39
+ gap: 0.5rem;
40
+ z-index: 1301;
41
+ background: white;
42
+ border: none;
43
+ .modal_header {
44
+ display: flex;
45
+ align-items: center;
46
+ justify-content: space-between;
47
+ gap: 0.5rem;
48
+ width: 100%;
49
+ }
50
+ .modal_buttons_container {
51
+ display: flex;
52
+ gap: 0.5rem;
53
+ width: 100%;
54
+ justify-content: flex-end;
55
+ margin-top: 0.5rem;
56
+ }
57
+ }
58
+ }
@@ -0,0 +1,135 @@
1
+ import MuiModal from '@mui/material/Modal';
2
+ import Fade from '@mui/material/Fade';
3
+ import { RemoveCircledIcon } from '../Icons';
4
+ import { Title } from '../Typography/Title';
5
+ import { Button } from '../Buttons/Button';
6
+ import { IconButton } from '../Buttons/IconButton';
7
+ import styles from './Modal.modules.scss';
8
+ import { useEffect } from 'react';
9
+
10
+ interface ModalProps {
11
+ className?: string;
12
+ type?: 'full-height' | 'overlay';
13
+ onClose: () => void;
14
+ open: boolean;
15
+ children: JSX.Element;
16
+ title: string;
17
+ hideCloseButton?: boolean;
18
+ cancelText: string;
19
+ validationText: string;
20
+ onPressEnter?: () => void;
21
+ onConfirm?: () => void;
22
+ }
23
+
24
+ /** Figma link full-height : https://www.figma.com/file/fjnhhbL12HvKccPmJchVnr/Atomic-Library?type=design&node-id=997-7695&mode=dev
25
+ * Figma link overlay : https://www.figma.com/file/fjnhhbL12HvKccPmJchVnr/Atomic-Library?type=design&node-id=2447-42540&mode=dev
26
+ */
27
+ export const Modal = ({
28
+ className,
29
+ type = 'overlay',
30
+ onClose,
31
+ open,
32
+ children,
33
+ title,
34
+ hideCloseButton = false,
35
+ cancelText,
36
+ validationText,
37
+ onPressEnter,
38
+ onConfirm,
39
+ }: ModalProps) => {
40
+ useEffect(() => {
41
+ const handleKeyDown = (e: KeyboardEvent) => {
42
+ if (e.key === 'Enter') {
43
+ onPressEnter && onPressEnter();
44
+ }
45
+ };
46
+
47
+ if (open) {
48
+ document.addEventListener('keydown', handleKeyDown);
49
+ } else {
50
+ document.removeEventListener('keydown', handleKeyDown);
51
+ }
52
+
53
+ return () => document.removeEventListener('keydown', handleKeyDown);
54
+ }, [open, onPressEnter]);
55
+
56
+ if (type === 'overlay') {
57
+ return (
58
+ <MuiModal
59
+ aria-labelledby="transition-modal-title"
60
+ aria-describedby="transition-modal-description"
61
+ className={`${styles.modal_overlay} ${className}`}
62
+ open={open}
63
+ onClose={onClose}
64
+ closeAfterTransition
65
+ >
66
+ <Fade in={open}>
67
+ <div className={styles.modal_content}>
68
+ <div className={`${styles.modal_header}`}>
69
+ <Title text={title} weight="bold" size="base" />
70
+ {!hideCloseButton && (
71
+ <IconButton
72
+ variant="tertiary"
73
+ icon={<RemoveCircledIcon fill="black" />}
74
+ onClick={() => onClose()}
75
+ />
76
+ )}
77
+ </div>
78
+ {children}
79
+ <div className={styles.modal_buttons_container}>
80
+ {cancelText && onClose && (
81
+ <Button
82
+ text={cancelText}
83
+ variant="tertiary"
84
+ onClick={() => onClose()}
85
+ />
86
+ )}
87
+ {onConfirm && validationText && (
88
+ <Button text={validationText} onClick={() => onConfirm()} />
89
+ )}
90
+ </div>
91
+ </div>
92
+ </Fade>
93
+ </MuiModal>
94
+ );
95
+ } else {
96
+ return (
97
+ <MuiModal
98
+ aria-labelledby="transition-modal-title"
99
+ aria-describedby="transition-modal-description"
100
+ className={`${styles.modal} ${className}`}
101
+ open={open}
102
+ onClose={onClose}
103
+ closeAfterTransition
104
+ >
105
+ <Fade in={open}>
106
+ <div className={styles.modal_content}>
107
+ <div className={`${styles.modal_header}`}>
108
+ <Title text={title} weight="semi-bold" size="base" />
109
+ {!hideCloseButton && (
110
+ <IconButton
111
+ variant="tertiary"
112
+ icon={<RemoveCircledIcon fill="black" />}
113
+ onClick={() => onClose()}
114
+ />
115
+ )}
116
+ </div>
117
+ {children}
118
+ <div className={styles.modal_buttons_container}>
119
+ {cancelText && onClose && (
120
+ <Button
121
+ text={cancelText}
122
+ variant="tertiary"
123
+ onClick={() => onClose()}
124
+ />
125
+ )}
126
+ {onConfirm && validationText && (
127
+ <Button text={validationText} onClick={() => onConfirm()} />
128
+ )}
129
+ </div>
130
+ </div>
131
+ </Fade>
132
+ </MuiModal>
133
+ );
134
+ }
135
+ };