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
@@ -1,10 +1,58 @@
1
- import React, { HTMLAttributes } from 'react';
1
+ import { HTMLAttributes } from 'react';
2
+ import { TextForButton } from '../Typography/TextForButton';
3
+ import styles from './Button.modules.scss';
2
4
 
3
- export interface Props extends HTMLAttributes<HTMLButtonElement> {
4
- variant: 'text' | 'icon';
5
- children: string;
5
+ export interface ButtonProps extends HTMLAttributes<HTMLButtonElement> {
6
+ variant?:
7
+ | 'primary'
8
+ | 'secondary'
9
+ | 'tertiary'
10
+ | 'tertiary-alt'
11
+ | 'alert'
12
+ | 'success';
13
+ size?: 'sm' | 'base' | 'lg';
14
+ iconLeft?: JSX.Element;
15
+ iconRight?: JSX.Element;
16
+ text: string;
17
+ className?: string;
6
18
  }
7
19
 
8
- export const Button = ({ variant, children, ...props }: Props) => (
9
- <button {...props}>{children}</button>
10
- );
20
+ /** Figma link : https://www.figma.com/file/fjnhhbL12HvKccPmJchVnr/Atomic-Library?type=design&node-id=131-253&mode=dev */
21
+ export const Button = ({
22
+ variant = 'primary',
23
+ size = 'base',
24
+ iconLeft,
25
+ iconRight,
26
+ text,
27
+ className,
28
+ ...props
29
+ }: ButtonProps) => {
30
+ const getStylesByVariant = (): string => {
31
+ if (variant === 'primary') return styles.button_primary;
32
+ else if (variant === 'secondary') return styles.button_secondary;
33
+ else if (variant === 'tertiary') return styles.button_tertiary;
34
+ else if (variant === 'tertiary-alt') return styles.button_tertiary_alt;
35
+ else if (variant === 'alert') return styles.button_alert;
36
+ else if (variant === 'success') return styles.button_success;
37
+ else return styles.button_primary;
38
+ };
39
+ const getStylesBySize = (): string => {
40
+ if (size === 'sm') return styles.button_sm;
41
+ else if (size === 'base') return styles.button_base;
42
+ else if (size === 'lg') return styles.button_lg;
43
+ else return styles.button_base;
44
+ };
45
+
46
+ return (
47
+ <button
48
+ className={`${
49
+ styles.button
50
+ } ${getStylesByVariant()} ${getStylesBySize()} ${className ?? ''}`}
51
+ {...props}
52
+ >
53
+ {iconLeft && iconLeft}
54
+ <TextForButton text={text} size={size} />
55
+ {iconRight && iconRight}
56
+ </button>
57
+ );
58
+ };
@@ -0,0 +1,185 @@
1
+ .icon_button {
2
+ display: inline-flex;
3
+ justify-content: center;
4
+ align-items: center;
5
+ gap: 0.5rem;
6
+ cursor: pointer;
7
+ }
8
+
9
+ .icon_button_primary {
10
+ background: var(--color-neutral-basics-black, #00040a);
11
+ border: 1px solid var(--color-neutral-basics-black, #00040a);
12
+
13
+ &:hover {
14
+ background: var(--color-neutral-dark-shades-900, #32353a);
15
+ border: 1px solid var(--color-neutral-dark-shades-900, #32353a);
16
+ }
17
+ &:active {
18
+ background: var(--color-neutral-dark-shades-800, #4b4e52);
19
+ border: 1px solidvar(--color-neutral-dark-shades-800, #4b4e52);
20
+ }
21
+ &:disabled {
22
+ background: var(--color-neutral-clear-shades-300, #d5d5d6);
23
+ border: 1px solid var(--color-neutral-clear-shades-300, #d5d5d6);
24
+ }
25
+ svg {
26
+ stroke: white !important;
27
+ fill: white !important;
28
+ }
29
+ }
30
+
31
+ .icon_button_secondary {
32
+ background: transparent;
33
+ border: 1px solid var(--color-neutral-basics-black, #00040a);
34
+ &:hover {
35
+ border: 1px solid var(--color-neutral-basics-black, #00040a);
36
+ background: var(--color-neutral-clear-shades-200, #e1e1e2);
37
+ }
38
+ &:active {
39
+ border: 1px solid var(--color-neutral-basics-black, #00040a);
40
+ background: var(--color-neutral-clear-shades-300, #d5d5d6);
41
+ }
42
+ &:disabled {
43
+ background: var(--color-neutral-clear-shades-300, #d5d5d6);
44
+ border: 1px solid var(--color-neutral-clear-shades-300, #d5d5d6);
45
+ svg {
46
+ stroke: #96989a !important;
47
+ fill: #96989a !important;
48
+ }
49
+ }
50
+ svg {
51
+ stroke: var(--color-neutral-basics-black, #00040a) !important;
52
+ fill: var(--color-neutral-basics-black, #00040a) !important;
53
+ }
54
+ }
55
+
56
+ .icon_button_tertiary {
57
+ background: transparent;
58
+ border: 1px solid transparent;
59
+ &:hover {
60
+ border: 1px solid var(--color-neutral-clear-shades-200, #e1e1e2);
61
+ background: var(--color-neutral-clear-shades-200, #e1e1e2);
62
+ }
63
+ &:active {
64
+ background: var(--color-neutral-clear-shades-300, #d5d5d6);
65
+ border: 1px solid var(--color-neutral-clear-shades-300, #d5d5d6);
66
+ }
67
+ &:disabled {
68
+ background: transparent;
69
+ border: 1px solid transparent;
70
+
71
+ svg {
72
+ stroke: #96989a !important;
73
+ fill: #96989a !important;
74
+ }
75
+ }
76
+
77
+ svg {
78
+ stroke: var(--color-neutral-basics-black, #00040a) !important;
79
+ fill: var(--color-neutral-basics-black, #00040a) !important;
80
+ }
81
+ }
82
+
83
+ .icon_button_tertiary_alt {
84
+ background: transparent;
85
+ border: 1px solid transparent;
86
+ &:hover {
87
+ background: var(--color-neutral-clear-shades-150, #eee);
88
+ border: 1px solid var(--color-neutral-clear-shades-150, #eee);
89
+ }
90
+ &:active {
91
+ background: var(--color-neutral-clear-shades-100, #fafafa);
92
+ border: 1px solid var(--color-neutral-clear-shades-100, #fafafa);
93
+ }
94
+ &:disabled {
95
+ background: transparent;
96
+ border: 1px solid transparent;
97
+ svg {
98
+ stroke: #99c9ff !important;
99
+ fill: #99c9ff !important;
100
+ }
101
+ }
102
+ svg {
103
+ stroke: #0077ff !important;
104
+ fill: #0077ff !important;
105
+ }
106
+ }
107
+
108
+ .icon_button_alert {
109
+ background: transparent;
110
+ border: 1px solid transparent;
111
+ &:hover {
112
+ border: 1px solid var(--color-extended-red-50, #fff6f6);
113
+ background: var(--color-extended-red-50, #fff6f6);
114
+ }
115
+ &:active {
116
+ background: var(--color-extended-red-100, #fddbdb);
117
+ border: 1px solid var(--color-extended-red-100, #fddbdb);
118
+ }
119
+ &:disabled {
120
+ background: transparent;
121
+ border: 1px solid transparent;
122
+ svg {
123
+ stroke: #fbb7b7 !important;
124
+ fill: #fbb7b7 !important;
125
+ }
126
+ }
127
+ svg {
128
+ stroke: #f54c4c !important;
129
+ fill: #f54c4c !important;
130
+ }
131
+ }
132
+
133
+ .icon_button_success {
134
+ background: var(--color-extended-green-400, #7dc984);
135
+ border: 1px solid var(--color-extended-green-400, #7dc984);
136
+ &:hover {
137
+ border: 1px solid var(--color-extended-green-300, #9dd6a3);
138
+ background: var(--color-extended-green-300, #9dd6a3);
139
+ }
140
+ &:active {
141
+ background: var(--color-extended-green-500, #5cbb65);
142
+ border: 1px solid var(--color-extended-green-500, #5cbb65);
143
+ }
144
+ &:disabled {
145
+ background: var(--color-extended-green-200, #d5edd8);
146
+ border: 1px solid var(--color-extended-green-200, #d5edd8);
147
+ }
148
+ svg {
149
+ stroke: #ffffff !important;
150
+ fill: #ffffff !important;
151
+ }
152
+ }
153
+
154
+ .icon_button_xxs {
155
+ padding: 0.25rem;
156
+ border-radius: 0.25rem;
157
+ svg {
158
+ width: 0.75rem;
159
+ height: 0.75rem;
160
+ }
161
+ }
162
+ .icon_button_xs {
163
+ padding: 0.25rem;
164
+ border-radius: 0.25rem;
165
+ svg {
166
+ width: 1rem;
167
+ height: 1rem;
168
+ }
169
+ }
170
+ .icon_button_base {
171
+ padding: 0.5rem;
172
+ border-radius: 0.5rem;
173
+ svg {
174
+ width: 1.25rem;
175
+ height: 1.25rem;
176
+ }
177
+ }
178
+ .icon_button_lg {
179
+ padding: 0.625rem;
180
+ border-radius: 0.5rem;
181
+ svg {
182
+ width: 1.5rem;
183
+ height: 1.5rem;
184
+ }
185
+ }
@@ -0,0 +1,53 @@
1
+ import { HTMLAttributes } from 'react';
2
+ import styles from './IconButton.modules.scss';
3
+ import { MinusCircledIcon } from '../';
4
+
5
+ export interface IconButtonProps extends HTMLAttributes<HTMLButtonElement> {
6
+ variant?:
7
+ | 'primary'
8
+ | 'secondary'
9
+ | 'tertiary'
10
+ | 'tertiary-alt'
11
+ | 'alert'
12
+ | 'success';
13
+ size?: 'xxs' | 'xs' | 'base' | 'lg';
14
+ icon: JSX.Element;
15
+ className?: string;
16
+ }
17
+
18
+ /** Figma link : https://www.figma.com/file/fjnhhbL12HvKccPmJchVnr/Atomic-Library?type=design&node-id=422-2878&mode=dev */
19
+ export const IconButton = ({
20
+ variant = 'primary',
21
+ size = 'base',
22
+ icon,
23
+ className,
24
+ ...props
25
+ }: IconButtonProps) => {
26
+ const getStylesByVariant = (): string => {
27
+ if (variant === 'primary') return styles.icon_button_primary;
28
+ else if (variant === 'secondary') return styles.icon_button_secondary;
29
+ else if (variant === 'tertiary') return styles.icon_button_tertiary;
30
+ else if (variant === 'tertiary-alt') return styles.icon_button_tertiary_alt;
31
+ else if (variant === 'alert') return styles.icon_button_alert;
32
+ else if (variant === 'success') return styles.icon_button_success;
33
+ else return styles.icon_button_primary;
34
+ };
35
+ const getStylesBySize = (): string => {
36
+ if (size === 'xxs') return styles.icon_button_xxs;
37
+ if (size === 'xs') return styles.icon_button_xs;
38
+ else if (size === 'base') return styles.icon_button_base;
39
+ else if (size === 'lg') return styles.icon_button_lg;
40
+ else return styles.icon_button_base;
41
+ };
42
+
43
+ return (
44
+ <button
45
+ className={`${
46
+ styles.icon_button
47
+ } ${getStylesByVariant()} ${getStylesBySize()} ${className ?? ''}`}
48
+ {...props}
49
+ >
50
+ {icon ?? <MinusCircledIcon />}
51
+ </button>
52
+ );
53
+ };
@@ -0,0 +1,12 @@
1
+ .card {
2
+ width: 100%;
3
+ padding: 1rem 1.5rem 1.5rem 1.5rem;
4
+ display: flex;
5
+ flex-direction: column;
6
+ align-items: flex-start;
7
+ gap: 0.5rem;
8
+ border-radius: 0.25rem;
9
+ background: var(--color-neutral-basics-white, #fff);
10
+ box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.08),
11
+ 0px 1px 2px 0px rgba(0, 0, 0, 0.15);
12
+ }
@@ -0,0 +1,14 @@
1
+ import React, { HTMLAttributes } from 'react';
2
+ import { Title } from '../index';
3
+ import styles from './Card.modules.scss';
4
+
5
+ export interface CardProps extends HTMLAttributes<HTMLButtonElement> {
6
+ children: string;
7
+ className: string;
8
+ }
9
+
10
+ export const Card = ({ children, className }: CardProps) => (
11
+ <div className={`${styles.card} ${className}`}>
12
+ <Title text={children} />
13
+ </div>
14
+ );
@@ -0,0 +1,23 @@
1
+ .card_button {
2
+ display: flex;
3
+ width: 16.5rem;
4
+ height: 14.25rem;
5
+ padding: 1rem;
6
+ flex-direction: column;
7
+ align-items: center;
8
+ justify-content: center;
9
+ gap: 1.5rem;
10
+ border-radius: 1rem;
11
+ background: var(--color-neutral-basics-white, #fff);
12
+ cursor: pointer;
13
+ box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.08),
14
+ 0px 1px 2px 0px rgba(0, 0, 0, 0.15);
15
+ }
16
+ .card_button:hover {
17
+ transform: translate(0, -0.5rem);
18
+ outline: 0px solid transparent;
19
+ padding: 1rem;
20
+ border: 1px solid var(--sdColorPrimary500);
21
+ -webkit-transition: all 0.2s ease-in-out;
22
+ transition: all 0.2s ease-in-out;
23
+ }
@@ -0,0 +1,14 @@
1
+ import React, { HTMLAttributes } from 'react';
2
+ import { Title } from '../index';
3
+ import styles from './CardButton.modules.scss';
4
+
5
+ export interface CardButtonProps extends HTMLAttributes<HTMLButtonElement> {
6
+ children: string;
7
+ className: string;
8
+ }
9
+
10
+ export const CardButton = ({ children, className }: CardButtonProps) => (
11
+ <div className={`${styles.card_button} ${className}`}>
12
+ <Title text={children} />
13
+ </div>
14
+ );
@@ -0,0 +1,4 @@
1
+ .checkboxContainer {
2
+ display: flex;
3
+ align-items: center;
4
+ }
@@ -0,0 +1,120 @@
1
+ import { styled } from '@mui/material/styles';
2
+ import { Checkbox as MuiCheckbox } from '@mui/material';
3
+ import styles from './Checkbox.module.scss';
4
+ import { Text } from '../Typography/Text';
5
+
6
+ const BpIcon = styled('span')(() => ({
7
+ borderRadius: '0.25rem',
8
+ border: `1px solid #8A8B8E`,
9
+ width: '1rem',
10
+ height: '1rem',
11
+ margin: 0,
12
+ padding: 0,
13
+ backgroundColor: '#f5f8fa',
14
+ backgroundImage:
15
+ 'linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))',
16
+ '.Mui-focusVisible &': {
17
+ outline: '2px auto #0077FF',
18
+ outlineOffset: 2,
19
+ },
20
+ 'input:disabled ~ &': {
21
+ border: `1px solid #E1E1E2`,
22
+ background: '#FAFAFA',
23
+ cursor: 'not-allowed',
24
+ },
25
+ }));
26
+
27
+ const BpCheckedIcon = styled(BpIcon)({
28
+ backgroundColor: '#0077FF',
29
+ backgroundImage:
30
+ 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',
31
+ border: `1px solid #0077FF`,
32
+ '&:before': {
33
+ display: 'block',
34
+ width: '1rem',
35
+ height: '1rem',
36
+ backgroundImage:
37
+ "url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath" +
38
+ " fill-rule='evenodd' clip-rule='evenodd' d='M12 5c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 " +
39
+ "1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z' fill='%23fff'/%3E%3C/svg%3E\")",
40
+ content: '""',
41
+ },
42
+ 'input:disabled ~ &': {
43
+ border: `1px solid #E1E1E2`,
44
+ background: '#E1E1E2',
45
+ cursor: 'not-allowed',
46
+ },
47
+ });
48
+
49
+ interface BpCheckboxProps {
50
+ checked: boolean;
51
+ disabled?: boolean;
52
+ onChange: () => void;
53
+ required?: boolean;
54
+ onBlur?: () => void;
55
+ }
56
+
57
+ function BpCheckbox({
58
+ checked,
59
+ disabled = false,
60
+ onChange,
61
+ required,
62
+ onBlur,
63
+ }: BpCheckboxProps) {
64
+ return (
65
+ <MuiCheckbox
66
+ sx={{
67
+ '&:hover': { bgcolor: 'transparent' },
68
+ }}
69
+ disableRipple
70
+ color="default"
71
+ checkedIcon={<BpCheckedIcon />}
72
+ icon={<BpIcon />}
73
+ inputProps={{ 'aria-label': 'Checkbox demo' }}
74
+ checked={checked}
75
+ disabled={disabled}
76
+ required={required}
77
+ onChange={onChange}
78
+ onBlur={onBlur}
79
+ />
80
+ );
81
+ }
82
+
83
+ interface CheckboxProps {
84
+ label?: string;
85
+ leftLabel?: string;
86
+ onChange: () => void;
87
+ onBlur?: () => void;
88
+ checked: boolean;
89
+ disabled?: boolean;
90
+ required?: boolean;
91
+ className?: string;
92
+ }
93
+
94
+ export const Checkbox = ({
95
+ label,
96
+ leftLabel,
97
+ onBlur,
98
+ checked,
99
+ disabled,
100
+ onChange,
101
+ required,
102
+ className,
103
+ }: CheckboxProps) => {
104
+ return (
105
+ <div
106
+ className={`${styles.checkboxContainer} ${className}`}
107
+ style={{ cursor: disabled ? 'not-allowed' : 'auto' }}
108
+ >
109
+ {leftLabel && <Text text={leftLabel} size="sm" color="black" />}
110
+ <BpCheckbox
111
+ checked={checked}
112
+ disabled={disabled}
113
+ onChange={onChange}
114
+ required={required}
115
+ onBlur={onBlur}
116
+ />
117
+ {label && <Text text={label} size="sm" />}
118
+ </div>
119
+ );
120
+ };
@@ -0,0 +1,99 @@
1
+ interface ColorPalette {
2
+ [key: string]: string;
3
+ }
4
+ export const colors: ColorPalette = {
5
+ // BLUE
6
+ blue_50: '#F2F8FF',
7
+ blue_100: '#E5F1FF',
8
+ blue_200: '#99C9FF',
9
+ blue_300: '#66ADFF',
10
+ blue_400: '#3392FF',
11
+ blue_500: '#0077FF',
12
+ blue_600: '#005FCC',
13
+ blue_700: '#004799',
14
+ blue_800: '#003066',
15
+ blue_900: '#001E40',
16
+ blue_950: '#001833',
17
+ // PURPLE
18
+ purple_50: '#FAF4FF',
19
+ purple_100: '#E9D3FD',
20
+ purple_200: '#D3A7FC',
21
+ purple_300: '#BC7CFA',
22
+ purple_400: '#A650F8',
23
+ purple_500: '#9024F6',
24
+ purple_600: '#761FC5',
25
+ purple_700: '#5C1994',
26
+ purple_800: '#411462',
27
+ purple_900: '#270E31',
28
+ purple_950: '#1A0C19',
29
+ // YELLOW
30
+ yellow_50: '#FFFCF2',
31
+ yellow_100: '#FFF3D6',
32
+ yellow_200: '#FFE299',
33
+ yellow_300: '#FFD466',
34
+ yellow_400: '#FFC633',
35
+ yellow_500: '#FFB800',
36
+ yellow_600: '#CF9500',
37
+ yellow_700: '#9E7200',
38
+ yellow_800: '#6E4F00',
39
+ yellow_900: '#3D2C00',
40
+ yellow_950: '#251B00',
41
+ // RED
42
+ red_50: '#FFF6F6',
43
+ red_100: '#FDDBDB',
44
+ red_200: '#FBB7B7',
45
+ red_300: '#F99494',
46
+ red_400: '#F77070',
47
+ red_500: '#F54C4C',
48
+ red_600: '#C73F3D',
49
+ red_700: '#98312E',
50
+ red_800: '#6A241E',
51
+ red_900: '#3B160F',
52
+ red_950: '#241008',
53
+ // GREEN
54
+ green_50: '#F7FCF7',
55
+ green_100: '#E8F5EA',
56
+ green_200: '#D5EDD8',
57
+ green_300: '#9DD6A3',
58
+ green_400: '#7DC984',
59
+ green_500: '#5CBB65',
60
+ green_600: '#4C9751',
61
+ green_700: '#3C743D',
62
+ green_800: '#2D5028',
63
+ green_900: '#1D2D14',
64
+ green_950: '#151B0A',
65
+ // NEUTRAL
66
+ neutral_100: '#FAFAFA',
67
+ neutral_150: '#EEEEEE',
68
+ neutral_200: '#E1E1E2',
69
+ neutral_300: '#D5D5D6',
70
+ neutral_350: '#BCBDBE',
71
+ neutral_500: '#96989A',
72
+ neutral_550: '#8A8B8E',
73
+ neutral_600: '#717376',
74
+ neutral_700: '#64666A',
75
+ neutral_800: '#4B4E52',
76
+ neutral_900: '#32353A',
77
+ neutral_950: '#26292E',
78
+ // BASICS
79
+ black: '#00040A',
80
+ white: '#ffffff',
81
+ };
82
+
83
+ export const getColor = (
84
+ colorName: string,
85
+ shade: string
86
+ ): string | undefined => {
87
+ const colorKey = `${colorName}_${shade}`;
88
+ if (colorName === 'black') {
89
+ return colors.black;
90
+ }
91
+ if (colorName === 'white') {
92
+ return colors.white;
93
+ }
94
+ if (colors.hasOwnProperty(colorKey)) {
95
+ return colors[colorKey];
96
+ }
97
+ console.warn(`Color ${colorKey} not found`);
98
+ return undefined;
99
+ };
@@ -0,0 +1,44 @@
1
+ import { SvgIcon, SvgIconProps } from '@mui/material';
2
+
3
+ export default function ArrowDoubleLineDownIcon({
4
+ stroke,
5
+ strokeWidth,
6
+ fill,
7
+ ...rest
8
+ }: SvgIconProps) {
9
+ return (
10
+ <SvgIcon
11
+ strokeWidth={strokeWidth ?? 0.1}
12
+ stroke={stroke ? stroke : 'currentColor'}
13
+ {...rest}
14
+ >
15
+ <svg
16
+ xmlns="http://www.w3.org/2000/svg"
17
+ width="24"
18
+ height="24"
19
+ viewBox="0 0 24 24"
20
+ fill="none"
21
+ >
22
+ <g clipPath="url(#clip0_112_1021)">
23
+ <path
24
+ fillRule="evenodd"
25
+ clipRule="evenodd"
26
+ d="M0.219645 11.7807C0.512525 11.4878 0.987399 11.4878 1.28031 11.7806L12 22.4993L22.7197 11.7806C23.0126 11.4878 23.4875 11.4878 23.7804 11.7807C24.0732 12.0736 24.0732 12.5485 23.7803 12.8414L13.0607 23.5599C13.0607 23.56 13.0607 23.5599 13.0607 23.5599C12.9215 23.6994 12.7561 23.81 12.5741 23.8854C12.3921 23.9609 12.197 23.9998 12 23.9998C11.803 23.9998 11.6079 23.9609 11.4259 23.8854C11.2439 23.81 11.0785 23.6994 10.9393 23.56C10.9393 23.56 10.9393 23.56 10.9393 23.56L0.219695 12.8414C-0.0732122 12.5485 -0.0732344 12.0736 0.219645 11.7807Z"
27
+ fill={fill}
28
+ />
29
+ <path
30
+ fillRule="evenodd"
31
+ clipRule="evenodd"
32
+ d="M0.219645 0.530692C0.512525 0.237785 0.987398 0.237763 1.28031 0.530642L12 11.2493L22.7197 0.530642C23.0126 0.237763 23.4875 0.237785 23.7804 0.530692C24.0732 0.823599 24.0732 1.29847 23.7803 1.59135L13.0607 12.3099C13.0607 12.31 13.0607 12.3099 13.0607 12.3099C12.9215 12.4494 12.7561 12.56 12.5741 12.6354C12.3921 12.7109 12.197 12.7498 12 12.7498C11.803 12.7498 11.6079 12.7109 11.4259 12.6354C11.2439 12.56 11.0785 12.4494 10.9393 12.31C10.9393 12.31 10.9393 12.31 10.9393 12.31L0.219695 1.59135C-0.0732122 1.29847 -0.0732344 0.823599 0.219645 0.530692Z"
33
+ fill={fill}
34
+ />
35
+ </g>
36
+ <defs>
37
+ <clipPath id="clip0_112_1021">
38
+ <rect width="24" height="24" fill="white" />
39
+ </clipPath>
40
+ </defs>
41
+ </svg>
42
+ </SvgIcon>
43
+ );
44
+ }
@@ -0,0 +1,44 @@
1
+ import { SvgIcon, SvgIconProps } from '@mui/material';
2
+
3
+ export default function ArrowDoubleLineLeftIcon({
4
+ stroke,
5
+ strokeWidth,
6
+ fill,
7
+ ...rest
8
+ }: SvgIconProps) {
9
+ return (
10
+ <SvgIcon
11
+ strokeWidth={strokeWidth ?? 0.1}
12
+ stroke={stroke ? stroke : 'currentColor'}
13
+ {...rest}
14
+ >
15
+ <svg
16
+ xmlns="http://www.w3.org/2000/svg"
17
+ width="24"
18
+ height="24"
19
+ viewBox="0 0 24 24"
20
+ fill="none"
21
+ >
22
+ <g clipPath="url(#clip0_112_1023)">
23
+ <path
24
+ fillRule="evenodd"
25
+ clipRule="evenodd"
26
+ d="M12.2191 0.219645C12.512 0.512525 12.512 0.987398 12.2191 1.28031L1.50041 12L12.2191 22.7197C12.512 23.0126 12.512 23.4875 12.2191 23.7804C11.9262 24.0732 11.4513 24.0732 11.1584 23.7803L0.439802 13.0607C0.43978 13.0607 0.439824 13.0607 0.439802 13.0607C0.300414 12.9215 0.189763 12.7561 0.114309 12.5741C0.0388434 12.3921 0 12.197 0 12C0 11.803 0.0388434 11.6079 0.114309 11.4259C0.189763 11.2439 0.300347 11.0786 0.439735 10.9394C0.439713 10.9394 0.439757 10.9393 0.439735 10.9394L11.1584 0.219695C11.4513 -0.0732122 11.9262 -0.0732344 12.2191 0.219645Z"
27
+ fill={fill}
28
+ />
29
+ <path
30
+ fillRule="evenodd"
31
+ clipRule="evenodd"
32
+ d="M23.2191 0.219645C23.512 0.512525 23.512 0.987398 23.2191 1.28031L12.5004 12L23.2191 22.7197C23.512 23.0126 23.512 23.4875 23.2191 23.7804C22.9262 24.0732 22.4513 24.0732 22.1584 23.7803L11.4398 13.0607C11.4398 13.0607 11.4398 13.0607 11.4398 13.0607C11.3004 12.9215 11.1898 12.7561 11.1143 12.5741C11.0388 12.3921 11 12.197 11 12C11 11.803 11.0388 11.6079 11.1143 11.4259C11.1898 11.2439 11.3003 11.0786 11.4397 10.9394C11.4397 10.9394 11.4398 10.9393 11.4397 10.9394L22.1584 0.219695C22.4513 -0.0732122 22.9262 -0.0732344 23.2191 0.219645Z"
33
+ fill={fill}
34
+ />
35
+ </g>
36
+ <defs>
37
+ <clipPath id="clip0_112_1023">
38
+ <rect width="24" height="24" fill="white" />
39
+ </clipPath>
40
+ </defs>
41
+ </svg>
42
+ </SvgIcon>
43
+ );
44
+ }