torgbox-ui 1.0.6 → 1.0.8

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 (286) hide show
  1. package/dist/.storybook/decorators/ReduxDecorator.d.ts +2 -0
  2. package/dist/.storybook/decorators/ReduxDecorator.js +4 -0
  3. package/dist/.storybook/decorators/RouterDecorator.d.ts +2 -0
  4. package/dist/.storybook/decorators/RouterDecorator.js +3 -0
  5. package/dist/.storybook/decorators/index.d.ts +2 -0
  6. package/dist/.storybook/decorators/index.js +2 -0
  7. package/dist/src/Inputs/Button/Button.js +30 -0
  8. package/dist/src/Inputs/Button/Button.stories.d.ts +21 -0
  9. package/dist/src/Inputs/Button/Button.stories.js +210 -0
  10. package/dist/src/Inputs/Button/Icon.stories.d.ts +20 -0
  11. package/dist/src/Inputs/Button/Icon.stories.js +196 -0
  12. package/dist/src/Inputs/Button/button.scss +358 -0
  13. package/dist/src/Inputs/Button/index.js +1 -0
  14. package/dist/src/Inputs/Checkbox/Checkbox.js +29 -0
  15. package/dist/src/Inputs/Checkbox/Checkbox.stories.d.ts +11 -0
  16. package/dist/src/Inputs/Checkbox/Checkbox.stories.js +108 -0
  17. package/dist/src/Inputs/Checkbox/checkbox.scss +63 -0
  18. package/dist/src/Inputs/Checkbox/index.js +1 -0
  19. package/dist/src/Inputs/EmailField/EmailField.js +61 -0
  20. package/dist/src/Inputs/EmailField/EmailField.stories.d.ts +8 -0
  21. package/dist/src/Inputs/EmailField/EmailField.stories.js +43 -0
  22. package/dist/src/Inputs/EmailField/ErrorMessages.js +3 -0
  23. package/dist/src/Inputs/EmailField/index.js +2 -0
  24. package/dist/src/Inputs/InnField/ErrorMessages.js +1 -0
  25. package/dist/src/Inputs/InnField/InnField.js +33 -0
  26. package/dist/src/Inputs/InnField/InnField.stories.d.ts +8 -0
  27. package/dist/src/Inputs/InnField/InnField.stories.js +43 -0
  28. package/dist/src/Inputs/InnField/index.js +2 -0
  29. package/dist/src/Inputs/NameField/ErrorMessages.js +8 -0
  30. package/dist/src/Inputs/NameField/NameField.js +54 -0
  31. package/dist/src/Inputs/NameField/NameField.stories.d.ts +8 -0
  32. package/dist/src/Inputs/NameField/NameField.stories.js +43 -0
  33. package/dist/src/Inputs/NameField/index.js +2 -0
  34. package/dist/src/Inputs/OtpInput/ErrorMessages.js +1 -0
  35. package/dist/src/Inputs/OtpInput/OtpInput.js +78 -0
  36. package/dist/src/Inputs/OtpInput/OtpInput.stories.d.ts +8 -0
  37. package/dist/src/Inputs/OtpInput/OtpInput.stories.js +52 -0
  38. package/dist/src/Inputs/OtpInput/index.js +2 -0
  39. package/dist/src/Inputs/OtpInput/otpInput.scss +39 -0
  40. package/dist/src/Inputs/PasswordField/ErrorMessages.js +2 -0
  41. package/dist/src/Inputs/PasswordField/PasswordField.js +35 -0
  42. package/dist/src/Inputs/PasswordField/PasswordField.stories.d.ts +8 -0
  43. package/dist/src/Inputs/PasswordField/PasswordField.stories.js +43 -0
  44. package/dist/src/Inputs/PasswordField/index.js +2 -0
  45. package/dist/src/Inputs/PhoneField/ErrorMessages.js +2 -0
  46. package/dist/src/Inputs/PhoneField/PhoneField.js +74 -0
  47. package/dist/src/Inputs/PhoneField/PhoneField.stories.d.ts +8 -0
  48. package/dist/src/Inputs/PhoneField/PhoneField.stories.js +43 -0
  49. package/dist/src/Inputs/PhoneField/index.js +2 -0
  50. package/dist/src/Inputs/RepeatPasswordField/ErrorMessages.js +2 -0
  51. package/dist/src/Inputs/RepeatPasswordField/RepeatPasswordField.js +22 -0
  52. package/dist/src/Inputs/RepeatPasswordField/index.js +2 -0
  53. package/dist/src/Inputs/Selector/Collapse.js +40 -0
  54. package/dist/src/Inputs/Selector/Collapse.stories.d.ts +8 -0
  55. package/dist/src/Inputs/Selector/Collapse.stories.js +108 -0
  56. package/dist/src/Inputs/Selector/Dropdown.js +81 -0
  57. package/dist/src/Inputs/Selector/Dropdown.stories.d.ts +9 -0
  58. package/dist/src/Inputs/Selector/Dropdown.stories.js +103 -0
  59. package/dist/src/Inputs/Selector/Option/Option.js +10 -0
  60. package/dist/src/Inputs/Selector/Option/Option.stories.d.ts +9 -0
  61. package/dist/src/Inputs/Selector/Option/Option.stories.js +47 -0
  62. package/dist/src/Inputs/Selector/Option/option.scss +44 -0
  63. package/dist/src/Inputs/Selector/index.js +3 -0
  64. package/dist/src/Inputs/Selector/selector.scss +101 -0
  65. package/dist/{types → src}/Inputs/TextField/TextField.d.ts +1 -1
  66. package/dist/src/Inputs/TextField/TextField.js +85 -0
  67. package/dist/src/Inputs/TextField/TextField.stories.d.ts +12 -0
  68. package/dist/src/Inputs/TextField/TextField.stories.js +101 -0
  69. package/dist/src/Inputs/TextField/index.js +1 -0
  70. package/dist/src/Inputs/TextField/textField.module.scss +157 -0
  71. package/dist/src/Inputs/TextField/textField.scss +156 -0
  72. package/dist/src/Inputs/index.js +11 -0
  73. package/dist/src/Inputs/index.scss +6 -0
  74. package/dist/src/Pages/ContentPage/ContentPage.js +22 -0
  75. package/dist/src/Pages/ContentPage/ContentPage.stories.d.ts +6 -0
  76. package/dist/src/Pages/ContentPage/ContentPage.stories.js +17 -0
  77. package/dist/src/Pages/ContentPage/contentPage.scss +10 -0
  78. package/dist/src/Pages/ContentPage/index.js +1 -0
  79. package/dist/src/Pages/CreatePasswordPage/CreatePasswordPage.js +47 -0
  80. package/dist/src/Pages/CreatePasswordPage/CreatePasswordPage.stories.d.ts +7 -0
  81. package/dist/src/Pages/CreatePasswordPage/CreatePasswordPage.stories.js +96 -0
  82. package/dist/src/Pages/CreatePasswordPage/createPasswordPage.scss +42 -0
  83. package/dist/src/Pages/CreatePasswordPage/index.js +1 -0
  84. package/dist/src/Pages/CreateTeamPage/CreateTeamPage.js +46 -0
  85. package/dist/src/Pages/CreateTeamPage/CreateTeamPage.stories.d.ts +7 -0
  86. package/dist/src/Pages/CreateTeamPage/CreateTeamPage.stories.js +82 -0
  87. package/dist/src/Pages/CreateTeamPage/createTeamPage.scss +82 -0
  88. package/dist/src/Pages/CreateTeamPage/index.js +1 -0
  89. package/dist/src/Pages/EmailConfirmationPage/EmailConfirmationPage.js +34 -0
  90. package/dist/src/Pages/EmailConfirmationPage/EmailConfirmationPage.stories.d.ts +8 -0
  91. package/dist/src/Pages/EmailConfirmationPage/EmailConfirmationPage.stories.js +86 -0
  92. package/dist/src/Pages/EmailConfirmationPage/emailConfirmationPage.scss +92 -0
  93. package/dist/src/Pages/EmailConfirmationPage/index.js +1 -0
  94. package/dist/src/Pages/JoinTeamPage/JoinTeamPage.js +6 -0
  95. package/dist/src/Pages/JoinTeamPage/JoinTeamPage.stories.d.ts +7 -0
  96. package/dist/src/Pages/JoinTeamPage/JoinTeamPage.stories.js +24 -0
  97. package/dist/src/Pages/JoinTeamPage/index.js +1 -0
  98. package/dist/src/Pages/JoinTeamPage/joinTeamPage.scss +50 -0
  99. package/dist/src/Pages/LoginPage/LoginPage.js +32 -0
  100. package/dist/src/Pages/LoginPage/LoginPage.stories.d.ts +7 -0
  101. package/dist/src/Pages/LoginPage/LoginPage.stories.js +108 -0
  102. package/dist/src/Pages/LoginPage/index.js +1 -0
  103. package/dist/src/Pages/LoginPage/loginPage.scss +80 -0
  104. package/dist/src/Pages/RegisterPage/RegisterPage.js +34 -0
  105. package/dist/src/Pages/RegisterPage/RegisterPage.stories.d.ts +7 -0
  106. package/dist/src/Pages/RegisterPage/RegisterPage.stories.js +149 -0
  107. package/dist/src/Pages/RegisterPage/index.js +1 -0
  108. package/dist/src/Pages/RegisterPage/registerPage.scss +72 -0
  109. package/dist/src/Pages/ResetPasswordPage/ResetPasswordPage.js +10 -0
  110. package/dist/src/Pages/ResetPasswordPage/ResetPasswordPage.stories.d.ts +7 -0
  111. package/dist/src/Pages/ResetPasswordPage/ResetPasswordPage.stories.js +24 -0
  112. package/dist/src/Pages/ResetPasswordPage/index.js +1 -0
  113. package/dist/src/Pages/ResetPasswordPage/resetPasswordPage.scss +41 -0
  114. package/dist/src/Pages/StartPage/StartPage.js +22 -0
  115. package/dist/src/Pages/StartPage/StartPage.stories.d.ts +7 -0
  116. package/dist/src/Pages/StartPage/StartPage.stories.js +48 -0
  117. package/dist/src/Pages/StartPage/index.js +1 -0
  118. package/dist/src/Pages/StartPage/startPage.scss +58 -0
  119. package/dist/src/Pages/index.js +6 -0
  120. package/dist/src/Pages/index.scss +9 -0
  121. package/dist/src/Utils/Divider/Divider.js +2 -0
  122. package/dist/src/Utils/Divider/divider.scss +11 -0
  123. package/dist/src/Utils/ErrorBanner/ErrorBanner.js +6 -0
  124. package/dist/src/Utils/ErrorBanner/errorBanner.scss +24 -0
  125. package/dist/src/Utils/ErrorBanner/index.js +1 -0
  126. package/dist/src/Utils/Link/Link.js +5 -0
  127. package/dist/src/Utils/Link/Link.stories.d.ts +8 -0
  128. package/dist/src/Utils/Link/Link.stories.js +49 -0
  129. package/dist/src/Utils/Link/index.js +1 -0
  130. package/dist/src/Utils/Link/index.scss +1 -0
  131. package/dist/src/Utils/Link/link.scss +21 -0
  132. package/dist/src/Utils/Modal/Modal.js +24 -0
  133. package/dist/src/Utils/Modal/Modal.stories.d.ts +6 -0
  134. package/dist/src/Utils/Modal/Modal.stories.js +38 -0
  135. package/dist/src/Utils/Modal/index.js +1 -0
  136. package/dist/src/Utils/Modal/modal.scss +33 -0
  137. package/dist/src/Utils/Portal/Portal.js +5 -0
  138. package/dist/src/Utils/SectionPlaceholder/SectionPlaceholder.js +2 -0
  139. package/dist/src/Utils/SectionPlaceholder/sectionPlaceholder.scss +22 -0
  140. package/dist/src/Utils/Spinner/Spinner.js +5 -0
  141. package/dist/src/Utils/Spinner/spinner.scss +41 -0
  142. package/dist/src/Utils/api.js +7 -0
  143. package/dist/src/Utils/index.js +7 -0
  144. package/dist/src/Utils/index.scss +6 -0
  145. package/dist/src/Widgets/Header/Header.js +18 -0
  146. package/dist/src/Widgets/Header/Header.stories.d.ts +6 -0
  147. package/dist/src/Widgets/Header/Header.stories.js +17 -0
  148. package/dist/src/Widgets/Header/header.scss +50 -0
  149. package/dist/src/Widgets/Header/index.js +1 -0
  150. package/dist/src/Widgets/Sidebar/Sidebar.js +25 -0
  151. package/dist/src/Widgets/Sidebar/Sidebar.stories.d.ts +6 -0
  152. package/dist/src/Widgets/Sidebar/Sidebar.stories.js +17 -0
  153. package/dist/src/Widgets/Sidebar/index.js +1 -0
  154. package/dist/src/Widgets/Sidebar/sidebar.scss +23 -0
  155. package/dist/src/Widgets/index.js +2 -0
  156. package/dist/src/Widgets/index.scss +2 -0
  157. package/dist/src/app/main.js +7 -0
  158. package/dist/src/app/routes/AppRouter.js +31 -0
  159. package/dist/src/app/routes/index.js +1 -0
  160. package/dist/src/app/store/index.js +1 -0
  161. package/dist/src/app/store/store.js +13 -0
  162. package/dist/src/assets/scss/index.scss +5 -0
  163. package/dist/src/assets/scss/settings/fonts.scss +29 -0
  164. package/dist/src/assets/scss/settings/globals.scss +5 -0
  165. package/dist/src/assets/scss/settings/helpers.scss +3 -0
  166. package/dist/src/assets/scss/settings/reset.scss +8 -0
  167. package/dist/src/assets/scss/settings/variables.scss +91 -0
  168. package/dist/src/entities/user/api/api.js +41 -0
  169. package/dist/src/entities/user/api/index.js +1 -0
  170. package/dist/src/entities/user/index.js +2 -0
  171. package/dist/src/entities/user/model/index.js +2 -0
  172. package/dist/src/entities/user/model/selectors.js +2 -0
  173. package/dist/src/entities/user/model/slice.js +31 -0
  174. package/dist/src/entities/user/model/types.js +1 -0
  175. package/dist/src/index.js +3 -0
  176. package/dist/src/index.scss +6 -0
  177. package/dist/src/shared/model/api.js +6 -0
  178. package/dist/src/shared/model/constants.js +1 -0
  179. package/dist/src/shared/model/index.js +2 -0
  180. package/dist/src/shared/ui/Avatar/Avatar.js +6 -0
  181. package/dist/src/shared/ui/Avatar/Avatar.stories.d.ts +6 -0
  182. package/dist/src/shared/ui/Avatar/Avatar.stories.js +17 -0
  183. package/dist/src/shared/ui/Avatar/avatar.scss +62 -0
  184. package/dist/src/shared/ui/index.d.ts +1 -0
  185. package/dist/src/shared/ui/index.js +1 -0
  186. package/dist/src/shared/ui/index.scss +1 -0
  187. package/dist/src/tools/customValidators.js +19 -0
  188. package/dist/src/tools/getCoords.js +18 -0
  189. package/dist/src/tools/regExp.js +5 -0
  190. package/dist/src/ui.js +3 -0
  191. package/dist/src/ui.scss +4 -0
  192. package/dist/tsconfig.tsbuildinfo +1 -0
  193. package/package.json +9 -8
  194. package/dist/torgbox-ui.cjs.js +0 -31
  195. package/dist/torgbox-ui.css +0 -1
  196. package/dist/torgbox-ui.es.js +0 -4799
  197. /package/dist/{types → src}/Inputs/Button/Button.d.ts +0 -0
  198. /package/dist/{types → src}/Inputs/Button/index.d.ts +0 -0
  199. /package/dist/{types → src}/Inputs/Checkbox/Checkbox.d.ts +0 -0
  200. /package/dist/{types → src}/Inputs/Checkbox/index.d.ts +0 -0
  201. /package/dist/{types → src}/Inputs/EmailField/EmailField.d.ts +0 -0
  202. /package/dist/{types → src}/Inputs/EmailField/ErrorMessages.d.ts +0 -0
  203. /package/dist/{types → src}/Inputs/EmailField/index.d.ts +0 -0
  204. /package/dist/{types → src}/Inputs/InnField/ErrorMessages.d.ts +0 -0
  205. /package/dist/{types → src}/Inputs/InnField/InnField.d.ts +0 -0
  206. /package/dist/{types → src}/Inputs/InnField/index.d.ts +0 -0
  207. /package/dist/{types → src}/Inputs/NameField/ErrorMessages.d.ts +0 -0
  208. /package/dist/{types → src}/Inputs/NameField/NameField.d.ts +0 -0
  209. /package/dist/{types → src}/Inputs/NameField/index.d.ts +0 -0
  210. /package/dist/{types → src}/Inputs/OtpInput/ErrorMessages.d.ts +0 -0
  211. /package/dist/{types → src}/Inputs/OtpInput/OtpInput.d.ts +0 -0
  212. /package/dist/{types → src}/Inputs/OtpInput/index.d.ts +0 -0
  213. /package/dist/{types → src}/Inputs/PasswordField/ErrorMessages.d.ts +0 -0
  214. /package/dist/{types → src}/Inputs/PasswordField/PasswordField.d.ts +0 -0
  215. /package/dist/{types → src}/Inputs/PasswordField/index.d.ts +0 -0
  216. /package/dist/{types → src}/Inputs/PhoneField/ErrorMessages.d.ts +0 -0
  217. /package/dist/{types → src}/Inputs/PhoneField/PhoneField.d.ts +0 -0
  218. /package/dist/{types → src}/Inputs/PhoneField/index.d.ts +0 -0
  219. /package/dist/{types → src}/Inputs/RepeatPasswordField/ErrorMessages.d.ts +0 -0
  220. /package/dist/{types → src}/Inputs/RepeatPasswordField/RepeatPasswordField.d.ts +0 -0
  221. /package/dist/{types → src}/Inputs/RepeatPasswordField/index.d.ts +0 -0
  222. /package/dist/{types → src}/Inputs/Selector/Collapse.d.ts +0 -0
  223. /package/dist/{types → src}/Inputs/Selector/Dropdown.d.ts +0 -0
  224. /package/dist/{types → src}/Inputs/Selector/Option/Option.d.ts +0 -0
  225. /package/dist/{types → src}/Inputs/Selector/index.d.ts +0 -0
  226. /package/dist/{types → src}/Inputs/TextField/index.d.ts +0 -0
  227. /package/dist/{types → src}/Inputs/index.d.ts +0 -0
  228. /package/dist/{types → src}/Pages/ContentPage/ContentPage.d.ts +0 -0
  229. /package/dist/{types → src}/Pages/ContentPage/index.d.ts +0 -0
  230. /package/dist/{types → src}/Pages/CreatePasswordPage/CreatePasswordPage.d.ts +0 -0
  231. /package/dist/{types → src}/Pages/CreatePasswordPage/index.d.ts +0 -0
  232. /package/dist/{types → src}/Pages/CreateTeamPage/CreateTeamPage.d.ts +0 -0
  233. /package/dist/{types → src}/Pages/CreateTeamPage/index.d.ts +0 -0
  234. /package/dist/{types → src}/Pages/EmailConfirmationPage/EmailConfirmationPage.d.ts +0 -0
  235. /package/dist/{types → src}/Pages/EmailConfirmationPage/index.d.ts +0 -0
  236. /package/dist/{types → src}/Pages/JoinTeamPage/JoinTeamPage.d.ts +0 -0
  237. /package/dist/{types → src}/Pages/JoinTeamPage/index.d.ts +0 -0
  238. /package/dist/{types → src}/Pages/LoginPage/LoginPage.d.ts +0 -0
  239. /package/dist/{types → src}/Pages/LoginPage/index.d.ts +0 -0
  240. /package/dist/{types → src}/Pages/RegisterPage/RegisterPage.d.ts +0 -0
  241. /package/dist/{types → src}/Pages/RegisterPage/index.d.ts +0 -0
  242. /package/dist/{types → src}/Pages/ResetPasswordPage/ResetPasswordPage.d.ts +0 -0
  243. /package/dist/{types → src}/Pages/ResetPasswordPage/index.d.ts +0 -0
  244. /package/dist/{types → src}/Pages/StartPage/StartPage.d.ts +0 -0
  245. /package/dist/{types → src}/Pages/StartPage/index.d.ts +0 -0
  246. /package/dist/{types → src}/Pages/index.d.ts +0 -0
  247. /package/dist/{types → src}/Utils/Divider/Divider.d.ts +0 -0
  248. /package/dist/{types → src}/Utils/ErrorBanner/ErrorBanner.d.ts +0 -0
  249. /package/dist/{types → src}/Utils/ErrorBanner/index.d.ts +0 -0
  250. /package/dist/{types → src}/Utils/Link/Link.d.ts +0 -0
  251. /package/dist/{types → src}/Utils/Link/index.d.ts +0 -0
  252. /package/dist/{types → src}/Utils/Modal/Modal.d.ts +0 -0
  253. /package/dist/{types → src}/Utils/Modal/index.d.ts +0 -0
  254. /package/dist/{types → src}/Utils/Portal/Portal.d.ts +0 -0
  255. /package/dist/{types → src}/Utils/SectionPlaceholder/SectionPlaceholder.d.ts +0 -0
  256. /package/dist/{types → src}/Utils/Spinner/Spinner.d.ts +0 -0
  257. /package/dist/{types → src}/Utils/api.d.ts +0 -0
  258. /package/dist/{types → src}/Utils/index.d.ts +0 -0
  259. /package/dist/{types → src}/Widgets/Header/Header.d.ts +0 -0
  260. /package/dist/{types → src}/Widgets/Header/index.d.ts +0 -0
  261. /package/dist/{types → src}/Widgets/Sidebar/Sidebar.d.ts +0 -0
  262. /package/dist/{types → src}/Widgets/Sidebar/index.d.ts +0 -0
  263. /package/dist/{types → src}/Widgets/index.d.ts +0 -0
  264. /package/dist/{types → src}/app/main.d.ts +0 -0
  265. /package/dist/{types → src}/app/routes/AppRouter.d.ts +0 -0
  266. /package/dist/{types → src}/app/routes/index.d.ts +0 -0
  267. /package/dist/{types → src}/app/store/index.d.ts +0 -0
  268. /package/dist/{types → src}/app/store/store.d.ts +0 -0
  269. /package/dist/{types → src}/entities/user/api/api.d.ts +0 -0
  270. /package/dist/{types → src}/entities/user/api/index.d.ts +0 -0
  271. /package/dist/{types → src}/entities/user/index.d.ts +0 -0
  272. /package/dist/{types → src}/entities/user/model/index.d.ts +0 -0
  273. /package/dist/{types → src}/entities/user/model/selectors.d.ts +0 -0
  274. /package/dist/{types → src}/entities/user/model/slice.d.ts +0 -0
  275. /package/dist/{types → src}/entities/user/model/types.d.ts +0 -0
  276. /package/dist/{types → src}/index.d.ts +0 -0
  277. /package/dist/{types → src}/shared/model/api.d.ts +0 -0
  278. /package/dist/{types → src}/shared/model/constants.d.ts +0 -0
  279. /package/dist/{types → src}/shared/model/index.d.ts +0 -0
  280. /package/dist/{types → src}/shared/ui/Avatar/Avatar.d.ts +0 -0
  281. /package/dist/{types → src}/shared/ui/Avatar/index.d.ts +0 -0
  282. /package/dist/{types/shared/ui/index.d.ts → src/shared/ui/Avatar/index.js} +0 -0
  283. /package/dist/{types → src}/tools/customValidators.d.ts +0 -0
  284. /package/dist/{types → src}/tools/getCoords.d.ts +0 -0
  285. /package/dist/{types → src}/tools/regExp.d.ts +0 -0
  286. /package/dist/{types → src}/ui.d.ts +0 -0
@@ -0,0 +1,58 @@
1
+ $page-background: $surface-bright;
2
+ $bold-text: $neutral-high;
3
+ $text: $neutral-middle;
4
+
5
+ .start-page {
6
+ background-color: $page-background;
7
+ display: flex;
8
+ flex-direction: column;
9
+ align-items: center;
10
+ gap: 16px;
11
+ box-sizing: border-box;
12
+ max-width: 400px;
13
+ margin: 0 auto;
14
+ padding: 24px 40px;
15
+
16
+ &__overlay {
17
+ position: fixed;
18
+ top: 0;
19
+ bottom: 0;
20
+ right: 0;
21
+ left: 0;
22
+ background-color: $page-background;
23
+ opacity: 0.6;
24
+ z-index: 1;
25
+ }
26
+
27
+ &__title {
28
+ text-align: center;
29
+ margin-bottom: 32px;
30
+ font-size: 28px;
31
+ line-height: 36px;
32
+ color: $bold-text;
33
+ }
34
+
35
+ &__text-wrapper {
36
+ display: flex;
37
+ flex-direction: column;
38
+ gap: 12px;
39
+ padding-bottom: 12px;
40
+ }
41
+
42
+ &__text {
43
+ text-align: center;
44
+ color: $text;
45
+ }
46
+
47
+ &__email {
48
+ color: $bold-text;
49
+ font-weight: 700;
50
+ }
51
+ }
52
+
53
+ @media screen and (max-width: $sm) {
54
+ .start-page {
55
+ max-width: 320px;
56
+ padding: 24px 16px;
57
+ }
58
+ }
@@ -0,0 +1,6 @@
1
+ export { RegisterPage } from './RegisterPage';
2
+ export { EmailConfirmationPage } from './EmailConfirmationPage';
3
+ export { CreatePasswordPage } from './CreatePasswordPage';
4
+ export { LoginPage } from './LoginPage';
5
+ export { StartPage } from './StartPage';
6
+ export { ContentPage } from './ContentPage';
@@ -0,0 +1,9 @@
1
+ @import './RegisterPage/registerPage';
2
+ @import './CreatePasswordPage/createPasswordPage';
3
+ @import './EmailConfirmationPage/emailConfirmationPage';
4
+ @import './LoginPage/loginPage';
5
+ @import './StartPage/startPage';
6
+ @import './CreateTeamPage/createTeamPage';
7
+ @import './JoinTeamPage/joinTeamPage';
8
+ @import './ResetPasswordPage/resetPasswordPage';
9
+ @import './ContentPage/contentPage';
@@ -0,0 +1,2 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export const Divider = () => _jsx("hr", { className: 'divider' });
@@ -0,0 +1,11 @@
1
+ @use 'sass:color';
2
+
3
+ $line-color: $global-color-neutral-80;
4
+
5
+ .divider {
6
+ width: 100%;
7
+ height: 1px;
8
+ margin: 12px 0;
9
+ background-color: $line-color;
10
+ border: none;
11
+ }
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import WarningIcon from '../../assets/img/warning.svg';
3
+ export const ErrorBanner = (props) => {
4
+ const { error } = props;
5
+ return (_jsxs("div", { className: 'error-banner', children: [_jsx("div", { className: 'error-banner__icon', children: _jsx(WarningIcon, {}) }), _jsx("p", { className: 'error-banner__text', children: error })] }));
6
+ };
@@ -0,0 +1,24 @@
1
+ $error-content: $error-high;
2
+ $error-background: $error-border-low;
3
+
4
+ .error-banner {
5
+ display: flex;
6
+ align-items: center;
7
+ gap: 10px;
8
+ background-color: $error-background;
9
+ border-radius: 4px;
10
+ padding: 14px;
11
+ box-sizing: border-box;
12
+ width: 100%;
13
+ margin-bottom: 16px;
14
+
15
+ &__icon {
16
+ fill: $error-content;
17
+ width: 16px;
18
+ height: 16px;
19
+ }
20
+
21
+ &__text {
22
+ color: $error-content;
23
+ }
24
+ }
@@ -0,0 +1 @@
1
+ export { ErrorBanner } from './ErrorBanner';
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import cn from 'classnames';
3
+ export const Link = ({ iconComponent, label, iconClassName, ...props }) => {
4
+ return (_jsxs("a", { href: '#', className: 'link', ...props, children: [iconComponent && (_jsx("div", { className: cn('link__icon', [iconClassName]), children: iconComponent })), label] }));
5
+ };
@@ -0,0 +1,8 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { type ILink } from './Link';
3
+ declare const meta: Meta;
4
+ export default meta;
5
+ type Story = StoryObj<ILink>;
6
+ export declare const LinkInactive: Story;
7
+ export declare const LinkHovered: Story;
8
+ export declare const LinkFocused: Story;
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import StarIcon from '../../assets/img/star.svg';
3
+ import { Link } from './Link';
4
+ const meta = {
5
+ title: 'Utils/Link',
6
+ component: Link,
7
+ tags: ['autodocs'],
8
+ args: {
9
+ label: 'Main Link',
10
+ iconComponent: _jsx(StarIcon, {})
11
+ },
12
+ argTypes: {
13
+ iconComponent: {
14
+ table: {
15
+ disable: true
16
+ }
17
+ }
18
+ },
19
+ };
20
+ export default meta;
21
+ export const LinkInactive = {
22
+ args: {},
23
+ parameters: {
24
+ design: {
25
+ type: 'figma',
26
+ url: 'https://www.figma.com/file/8cQcICaes5IWFubU66DMdl/Torgbox-CRM?type=design&node-id=14709-77818&mode=design&t=rY7SHwVBrdpFGTJ8-4',
27
+ },
28
+ },
29
+ };
30
+ export const LinkHovered = {
31
+ args: {},
32
+ parameters: {
33
+ pseudo: { hover: true },
34
+ design: {
35
+ type: 'figma',
36
+ url: 'https://www.figma.com/file/8cQcICaes5IWFubU66DMdl/Torgbox-CRM?type=design&node-id=14709-77820&mode=design&t=rY7SHwVBrdpFGTJ8-4',
37
+ },
38
+ },
39
+ };
40
+ export const LinkFocused = {
41
+ args: {},
42
+ parameters: {
43
+ pseudo: { focus: true },
44
+ design: {
45
+ type: 'figma',
46
+ url: 'https://www.figma.com/file/8cQcICaes5IWFubU66DMdl/Torgbox-CRM?type=design&node-id=14709-77842&mode=design&t=rY7SHwVBrdpFGTJ8-4',
47
+ },
48
+ },
49
+ };
@@ -0,0 +1 @@
1
+ export { Link } from './Link';
@@ -0,0 +1 @@
1
+ @import './Link/link';
@@ -0,0 +1,21 @@
1
+ .link {
2
+ color: $primary-high;
3
+ font-size: 14px;
4
+ line-height: 20px;
5
+ display: flex;
6
+ gap: 4px;
7
+
8
+ &:hover,
9
+ &:focus {
10
+ cursor: pointer;
11
+ text-decoration: underline $primary-middle;
12
+ }
13
+
14
+ &__icon {
15
+ display: flex;
16
+ justify-content: center;
17
+ align-items: center;
18
+ fill: $primary-high;
19
+ width: 20px;
20
+ }
21
+ }
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import cn from 'classnames';
3
+ import { useCallback, useEffect, } from 'react';
4
+ import { Portal } from '../Portal/Portal';
5
+ export const Modal = (props) => {
6
+ const { opened, onCloseModal, children, className, } = props;
7
+ const onContentHandler = (e) => {
8
+ e.stopPropagation();
9
+ };
10
+ const onKeydownHandler = useCallback((e) => {
11
+ if (e.key === 'Escape') {
12
+ onCloseModal();
13
+ }
14
+ }, [onCloseModal]);
15
+ useEffect(() => {
16
+ if (opened) {
17
+ window.addEventListener('keydown', onKeydownHandler);
18
+ }
19
+ return () => {
20
+ window.removeEventListener('keydown', onKeydownHandler);
21
+ };
22
+ }, [opened, onKeydownHandler]);
23
+ return (_jsx(Portal, { children: _jsx("div", { className: cn('modal', className), children: _jsx("div", { className: 'modal__overlay', onClick: onCloseModal, children: _jsx("div", { className: 'modal__content', onClick: onContentHandler, children: children }) }) }) }));
24
+ };
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { type IModal } from './Modal';
3
+ declare const meta: Meta;
4
+ export default meta;
5
+ type Story = StoryObj<IModal>;
6
+ export declare const ModalDefault: Story;
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { Button } from '../../Inputs';
4
+ import { Modal } from './Modal';
5
+ const meta = {
6
+ component: Modal,
7
+ title: 'Utils/Modal',
8
+ parameters: {
9
+ layout: 'fullscreen',
10
+ },
11
+ };
12
+ export default meta;
13
+ const ModalWithHooks = () => {
14
+ const [modalOpened, setModalOpened] = useState(false);
15
+ const onShowModal = () => {
16
+ setModalOpened(true);
17
+ };
18
+ const onCloseModal = () => {
19
+ setModalOpened(false);
20
+ };
21
+ return (_jsxs(_Fragment, { children: [_jsx("div", { style: { width: '100%',
22
+ padding: '64px',
23
+ boxSizing: 'border-box',
24
+ display: 'flex',
25
+ alignItems: 'center',
26
+ justifyContent: 'center'
27
+ }, children: _jsx(Button, { size: 'large', variant: 'clear-neutral', label: '\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043C\u043E\u0434\u0430\u043B\u044C\u043D\u043E\u0435 \u043E\u043A\u043D\u043E', onClick: onShowModal }) }), modalOpened &&
28
+ (_jsx(Modal, { opened: modalOpened, onCloseModal: onCloseModal }))] }));
29
+ };
30
+ export const ModalDefault = {
31
+ render: () => _jsx(ModalWithHooks, {}),
32
+ parameters: {
33
+ design: {
34
+ type: 'figma',
35
+ url: 'https://www.figma.com/design/8cQcICaes5IWFubU66DMdl/Torgbox-CRM?node-id=12660-13122&t=2RockLZQJi3bINEV-4',
36
+ },
37
+ },
38
+ };
@@ -0,0 +1 @@
1
+ export { Modal } from './Modal';
@@ -0,0 +1,33 @@
1
+ @use 'sass:color';
2
+
3
+ $modal-background-color: $global-color-neutral-100;
4
+ $modal-overlay-color: $neutral-A48;
5
+ $modal-border-color: $global-color-neutral-20;
6
+
7
+ .modal {
8
+ width: 100%;
9
+ height: 100%;
10
+ position: fixed;
11
+ inset: 0;
12
+ z-index: 1001;
13
+
14
+ &__overlay {
15
+ width: 100%;
16
+ height: 100%;
17
+ background-color: $modal-overlay-color;
18
+ display: flex;
19
+ justify-content: center;
20
+ align-items: center;
21
+ }
22
+
23
+ &__content {
24
+ width: 440px;
25
+ padding: 32px 32px 24px 32px;
26
+ display: flex;
27
+ flex-flow: column nowrap;
28
+ gap: 16px;
29
+ background-color: $modal-background-color;
30
+ border-radius: 8px;
31
+ border: 1px solid $modal-border-color;
32
+ }
33
+ }
@@ -0,0 +1,5 @@
1
+ import { createPortal } from 'react-dom';
2
+ export const Portal = (props) => {
3
+ const { children, element = document.body } = props;
4
+ return createPortal(children, element);
5
+ };
@@ -0,0 +1,2 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export const SectionPlaceholder = ({ label = 'Placeholder' }) => (_jsx("section", { className: 'section-placeholder', children: _jsx("div", { className: 'placeholder', children: label }) }));
@@ -0,0 +1,22 @@
1
+ @use 'sass:color';
2
+
3
+ $section-background-color: $global-color-neutral-80;
4
+ $border-dash-color: $global-color-neutral-40;
5
+
6
+ .section-placeholder {
7
+ width: 100%;
8
+ height: calc(100vh - $header-height);
9
+ padding: 24px;
10
+ box-sizing: border-box;
11
+ background-color: $section-background-color;
12
+
13
+ .placeholder {
14
+ width: 100%;
15
+ height: 100%;
16
+ display: flex;
17
+ align-items: center;
18
+ justify-content: center;
19
+ border-radius: 8px;
20
+ border: 1px dashed $border-dash-color;
21
+ }
22
+ }
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import cn from 'classnames';
3
+ export const Spinner = ({ className }) => {
4
+ return (_jsx("div", { className: cn('spinner', className), children: _jsx("svg", { viewBox: '25 25 50 50', children: _jsx("circle", { cx: '50', cy: '50', r: '20' }) }) }));
5
+ };
@@ -0,0 +1,41 @@
1
+ .spinner {
2
+ display: flex;
3
+ align-items: center;
4
+ }
5
+
6
+ .spinner svg {
7
+ transform-origin: center;
8
+ animation: rotate 2s linear infinite;
9
+ }
10
+
11
+ .spinner circle {
12
+ fill: none;
13
+ stroke-dasharray: 1, 200;
14
+ stroke-dashoffset: 0;
15
+ stroke-linecap: round;
16
+ stroke-width: 4;
17
+
18
+ animation: dash 1.5s ease-in-out infinite;
19
+ }
20
+
21
+ @keyframes rotate {
22
+ 100% {
23
+ transform: rotate(360deg);
24
+ }
25
+ }
26
+
27
+ @keyframes dash {
28
+ 0% {
29
+ stroke-dasharray: 1, 200;
30
+ stroke-dashoffset: 0;
31
+ }
32
+
33
+ 50% {
34
+ stroke-dasharray: 90, 200;
35
+ stroke-dashoffset: -35px;
36
+ }
37
+
38
+ 100% {
39
+ stroke-dashoffset: -125px;
40
+ }
41
+ }
@@ -0,0 +1,7 @@
1
+ import { createApi, fetchBaseQuery, } from '@reduxjs/toolkit/query/react';
2
+ import { BASE_URL } from '@/shared/model';
3
+ export const baseApi = createApi({
4
+ reducerPath: 'baseApi',
5
+ baseQuery: fetchBaseQuery({ baseUrl: BASE_URL }),
6
+ endpoints: () => ({}),
7
+ });
@@ -0,0 +1,7 @@
1
+ export { Spinner } from './Spinner/Spinner';
2
+ export { Portal } from './Portal/Portal';
3
+ export { Link } from './Link/Link';
4
+ export { ErrorBanner } from './ErrorBanner';
5
+ export { Modal } from './Modal/Modal';
6
+ export { Divider } from './Divider/Divider';
7
+ export { SectionPlaceholder } from './SectionPlaceholder/SectionPlaceholder';
@@ -0,0 +1,6 @@
1
+ @import './Spinner/spinner';
2
+ @import './Link/link';
3
+ @import './ErrorBanner/errorBanner';;
4
+ @import './Modal/modal';
5
+ @import './Divider/divider';
6
+ @import './SectionPlaceholder/sectionPlaceholder';
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import cn from 'classnames';
3
+ import { useState } from 'react';
4
+ import BeltIcon from '../../assets/img/belt.svg';
5
+ import BurgerMenuIcon from '../../assets/img/burger-menu.svg';
6
+ import CrossIcon from '../../assets/img/cross.svg';
7
+ import SampleLogoIcon from '../../assets/img/sample-logo.svg';
8
+ import { Button, TextField } from '../../Inputs';
9
+ import { Avatar } from '../../shared/ui';
10
+ import { Link } from '../../Utils';
11
+ export const Header = (props) => {
12
+ const { onShowSidebar, onCloseSidebar, sidebarOpened, sidebarPinned, } = props;
13
+ const [searchQuery, setSearchQuery] = useState('');
14
+ return (_jsxs("header", { className: 'header', children: [_jsxs("div", { className: 'header__logo-search-wrapper', children: [_jsxs("div", { className: cn('header__logo-search-wrapper__logo-box', {
15
+ 'header__logo-search-wrapper__logo-box--noButton': sidebarPinned,
16
+ }), children: [!sidebarPinned &&
17
+ (_jsx(Button, { size: 'large', variant: 'clear-neutral', iconComponent: sidebarOpened ? _jsx(CrossIcon, {}) : _jsx(BurgerMenuIcon, {}), onClick: sidebarOpened ? onCloseSidebar : onShowSidebar })), _jsx(Link, { label: '', iconComponent: _jsx(SampleLogoIcon, {}), iconClassName: 'link--wide' })] }), _jsx(TextField, { onChange: setSearchQuery, className: 'search-field', state: 'idle', type: 'text', value: searchQuery, placeholder: '\u0418\u0441\u043A\u0430\u0442\u044C \u0447\u0442\u043E \u0443\u0433\u043E\u0434\u043D\u043E...', searchIcon: true, ...props })] }), _jsxs("div", { className: 'header__user-controls', children: [_jsx(Button, { size: 'large', variant: 'clear-neutral', iconComponent: _jsx(BeltIcon, {}) }), _jsx(Avatar, { label: '\u0418\u0424', size: 'lg' })] })] }));
18
+ };
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { type IHeader } from './Header';
3
+ declare const meta: Meta;
4
+ export default meta;
5
+ type Story = StoryObj<IHeader>;
6
+ export declare const HeaderDesktop: Story;
@@ -0,0 +1,17 @@
1
+ import { Header } from './Header';
2
+ const meta = {
3
+ component: Header,
4
+ title: 'Widgets/Header',
5
+ parameters: {
6
+ layout: 'fullscreen',
7
+ },
8
+ };
9
+ export default meta;
10
+ export const HeaderDesktop = {
11
+ parameters: {
12
+ design: {
13
+ type: 'figma',
14
+ url: 'https://www.figma.com/design/8cQcICaes5IWFubU66DMdl/Torgbox-CRM?node-id=12730-24260&t=kwluIucSNVVtsEr4-4',
15
+ },
16
+ },
17
+ };
@@ -0,0 +1,50 @@
1
+ @use 'sass:color';
2
+
3
+ $border-color-neutral: $neutral-middle;
4
+
5
+ .header {
6
+ width: 100%;
7
+ height: $header-height;
8
+ padding-right: 23px;
9
+ box-sizing: border-box;
10
+ display: flex;
11
+ align-items: center;
12
+ justify-content: space-between;
13
+ border-bottom: 1px solid $border-color-neutral;
14
+
15
+ &__logo-search-wrapper {
16
+ height: 100%;
17
+ display: flex;
18
+ align-items: center;
19
+
20
+ &__logo-box {
21
+ height: 100%;
22
+ width: 260px;
23
+ padding: 0 16px;
24
+ box-sizing: border-box;
25
+ display: flex;
26
+ align-items: center;
27
+ gap: 17px;
28
+
29
+ &--noButton {
30
+ padding: 0;
31
+ justify-content: center;
32
+ }
33
+
34
+ .link--wide {
35
+ width: auto;
36
+ }
37
+ }
38
+
39
+ .search-field {
40
+ border: none;
41
+ gap: 10px;
42
+ }
43
+ }
44
+
45
+ &__user-controls {
46
+ display: flex;
47
+ align-items: center;
48
+ gap: 12px;
49
+ }
50
+ }
@@ -0,0 +1 @@
1
+ export { Header } from './Header';
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import cn from 'classnames';
3
+ import { useEffect, useRef } from 'react';
4
+ import LeftArrowIcon from '../../assets/img/left-arrow.svg';
5
+ import RightArrowIcon from '../../assets/img/right-arrow.svg';
6
+ import { Button } from '../../Inputs';
7
+ import { Divider } from '../../Utils';
8
+ export const Sidebar = (props) => {
9
+ const { children, className, pinned, onPinSidebar, onUnpinSidebar, } = props;
10
+ const sidebarRef = useRef(null);
11
+ useEffect(() => {
12
+ const handleClickOutside = (event) => {
13
+ if (sidebarRef.current &&
14
+ !sidebarRef.current.contains(event.target) &&
15
+ !pinned) {
16
+ onUnpinSidebar();
17
+ }
18
+ };
19
+ document.addEventListener('mousedown', handleClickOutside);
20
+ return () => {
21
+ document.removeEventListener('mousedown', handleClickOutside);
22
+ };
23
+ }, [onUnpinSidebar, pinned]);
24
+ return (_jsxs("aside", { className: cn('sidebar', className), ref: sidebarRef, children: [_jsx("div", { className: 'sidebar__content', children: children }), _jsx(Divider, {}), _jsx("div", { className: 'sidebar__control', children: _jsx(Button, { className: 'sidebar-button', size: 'large', variant: 'clear-neutral', label: pinned ? 'Скрыть меню' : 'Закрепить меню', iconComponent: pinned ? _jsx(LeftArrowIcon, {}) : _jsx(RightArrowIcon, {}), onClick: pinned ? onUnpinSidebar : onPinSidebar, fullWidth: true }) })] }));
25
+ };
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { type ISidebar } from './Sidebar';
3
+ declare const meta: Meta;
4
+ export default meta;
5
+ type Story = StoryObj<ISidebar>;
6
+ export declare const SidebarDesktop: Story;
@@ -0,0 +1,17 @@
1
+ import { Sidebar } from './Sidebar';
2
+ const meta = {
3
+ component: Sidebar,
4
+ title: 'Widgets/Sidebar',
5
+ parameters: {
6
+ layout: 'fullscreen',
7
+ },
8
+ };
9
+ export default meta;
10
+ export const SidebarDesktop = {
11
+ parameters: {
12
+ design: {
13
+ type: 'figma',
14
+ url: 'https://www.figma.com/design/8cQcICaes5IWFubU66DMdl/Torgbox-CRM?node-id=12742-17730&t=cU5Jc8aB7DMhCJMx-4',
15
+ },
16
+ },
17
+ };
@@ -0,0 +1 @@
1
+ export { Sidebar } from './Sidebar';
@@ -0,0 +1,23 @@
1
+ .sidebar {
2
+ width: 260px;
3
+ height: calc(100vh - $header-height);
4
+ padding: 16px;
5
+ box-sizing: border-box;
6
+ overflow: hidden;
7
+ display: flex;
8
+ flex-direction: column;
9
+ flex-shrink: 0;
10
+
11
+ &__content {
12
+ width: 100%;
13
+ height: 100%;
14
+ }
15
+
16
+ &__control {
17
+ flex-shrink: 0;
18
+ }
19
+
20
+ &-button {
21
+ justify-content: start;
22
+ }
23
+ }
@@ -0,0 +1,2 @@
1
+ export { Header } from './Header/Header';
2
+ export { Sidebar } from './Sidebar/Sidebar';
@@ -0,0 +1,2 @@
1
+ @import './Header/header';
2
+ @import './Sidebar/sidebar';
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import ReactDOM from 'react-dom/client';
3
+ import { Provider } from 'react-redux';
4
+ import '../index.scss';
5
+ import { AppRouter } from './routes';
6
+ import { store } from './store';
7
+ ReactDOM.createRoot(document.getElementById('root')).render(_jsx(Provider, { store: store, children: _jsx(AppRouter, {}) }));