@os-team/profile 1.2.1 → 1.2.3

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 (375) hide show
  1. package/README.md +2 -2
  2. package/dist/@types/emotion.d.js +1 -0
  3. package/dist/@types/i18next.d.js +1 -0
  4. package/dist/@types/relay.d.js +0 -0
  5. package/dist/{types/components → components}/profile/ProfileButton.d.ts +1 -1
  6. package/dist/components/profile/ProfileButton.d.ts.map +1 -0
  7. package/dist/components/profile/ProfileButton.js +9 -0
  8. package/dist/components/profile/ProfileConfigContext.d.ts.map +1 -0
  9. package/dist/{esm/components → components}/profile/ProfileConfigContext.js +1 -2
  10. package/dist/components/profile/ProfileContext.d.ts.map +1 -0
  11. package/dist/{esm/components → components}/profile/ProfileContext.js +1 -2
  12. package/dist/{types/components → components}/profile/ProfileDrawer.d.ts +2 -2
  13. package/dist/components/profile/ProfileDrawer.d.ts.map +1 -0
  14. package/dist/components/profile/ProfileDrawer.js +28 -0
  15. package/dist/{types/components → components}/profile/ProfileDrawerContent.d.ts +7 -0
  16. package/dist/components/profile/ProfileDrawerContent.d.ts.map +1 -0
  17. package/dist/{esm/components → components}/profile/ProfileDrawerContent.js +66 -41
  18. package/dist/{types/components → components}/profile/ProfileNavigationItem.d.ts +1 -1
  19. package/dist/components/profile/ProfileNavigationItem.d.ts.map +1 -0
  20. package/dist/{esm/components → components}/profile/ProfileNavigationItem.js +8 -7
  21. package/dist/components/profile/ProfileUpdateNameModal.d.ts.map +1 -0
  22. package/dist/{esm/components → components}/profile/ProfileUpdateNameModal.js +38 -31
  23. package/dist/components/profile/ProfileUpdatePasswordModal.d.ts.map +1 -0
  24. package/dist/{esm/components → components}/profile/ProfileUpdatePasswordModal.js +40 -33
  25. package/dist/components/profile/ProtectedWrapper.d.ts.map +1 -0
  26. package/dist/{esm/components → components}/profile/ProtectedWrapper.js +19 -14
  27. package/dist/{types/components → components}/profile/UserAvatar.d.ts +1 -1
  28. package/dist/components/profile/UserAvatar.d.ts.map +1 -0
  29. package/dist/{esm/components → components}/profile/UserAvatar.js +7 -6
  30. package/dist/{types/components → components}/profile/UserAvatarAddon.d.ts +1 -1
  31. package/dist/components/profile/UserAvatarAddon.d.ts.map +1 -0
  32. package/dist/components/profile/UserAvatarAddon.js +50 -0
  33. package/dist/{types/components → components}/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.d.ts +5 -0
  34. package/dist/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.d.ts.map +1 -0
  35. package/dist/{esm/components → components}/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.js +2 -3
  36. package/dist/{types/components → components}/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.d.ts +5 -0
  37. package/dist/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.d.ts.map +1 -0
  38. package/dist/{esm/components → components}/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.js +2 -3
  39. package/dist/{types/components → components}/profile/__generated__/ProfileUpdateNameModalMutation.graphql.d.ts +5 -0
  40. package/dist/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.d.ts.map +1 -0
  41. package/dist/{esm/components → components}/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js +2 -3
  42. package/dist/{types/components → components}/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.d.ts +5 -0
  43. package/dist/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.d.ts.map +1 -0
  44. package/dist/{esm/components → components}/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js +2 -3
  45. package/dist/{types/components → components}/profile/__generated__/ProtectedWrapperQuery.graphql.d.ts +5 -0
  46. package/dist/components/profile/__generated__/ProtectedWrapperQuery.graphql.d.ts.map +1 -0
  47. package/dist/{esm/components → components}/profile/__generated__/ProtectedWrapperQuery.graphql.js +2 -3
  48. package/dist/{types/components → components}/session/SessionDrawer.d.ts +1 -1
  49. package/dist/components/session/SessionDrawer.d.ts.map +1 -0
  50. package/dist/components/session/SessionDrawer.js +45 -0
  51. package/dist/components/session/SessionDrawerContent.d.ts.map +1 -0
  52. package/dist/{esm/components → components}/session/SessionDrawerContent.js +12 -10
  53. package/dist/{types/components → components}/session/SessionList.d.ts +5 -5
  54. package/dist/components/session/SessionList.d.ts.map +1 -0
  55. package/dist/{esm/components → components}/session/SessionList.js +33 -17
  56. package/dist/{types/components → components}/session/SessionListItem.d.ts +9 -9
  57. package/dist/components/session/SessionListItem.d.ts.map +1 -0
  58. package/dist/{esm/components → components}/session/SessionListItem.js +37 -19
  59. package/dist/components/session/SessionListSkeleton.d.ts.map +1 -0
  60. package/dist/components/session/SessionListSkeleton.js +43 -0
  61. package/dist/{types/components → components}/session/__generated__/SessionDrawerContentQuery.graphql.d.ts +5 -0
  62. package/dist/components/session/__generated__/SessionDrawerContentQuery.graphql.d.ts.map +1 -0
  63. package/dist/{esm/components → components}/session/__generated__/SessionDrawerContentQuery.graphql.js +2 -3
  64. package/dist/{types/components → components}/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.d.ts +5 -0
  65. package/dist/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.d.ts.map +1 -0
  66. package/dist/{esm/components → components}/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js +2 -3
  67. package/dist/{types/components → components}/session/__generated__/SessionListItemDestroySessionMutation.graphql.d.ts +5 -0
  68. package/dist/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.d.ts.map +1 -0
  69. package/dist/{esm/components → components}/session/__generated__/SessionListItemDestroySessionMutation.graphql.js +2 -3
  70. package/dist/{types/components → components}/session/__generated__/SessionListItem_session.graphql.d.ts +5 -0
  71. package/dist/components/session/__generated__/SessionListItem_session.graphql.d.ts.map +1 -0
  72. package/dist/{esm/components → components}/session/__generated__/SessionListItem_session.graphql.js +2 -3
  73. package/dist/{types/components → components}/session/__generated__/SessionListRefetchQuery.graphql.d.ts +5 -0
  74. package/dist/components/session/__generated__/SessionListRefetchQuery.graphql.d.ts.map +1 -0
  75. package/dist/{esm/components → components}/session/__generated__/SessionListRefetchQuery.graphql.js +2 -3
  76. package/dist/{types/components → components}/session/__generated__/SessionList_sessions.graphql.d.ts +5 -0
  77. package/dist/components/session/__generated__/SessionList_sessions.graphql.d.ts.map +1 -0
  78. package/dist/{esm/components → components}/session/__generated__/SessionList_sessions.graphql.js +2 -3
  79. package/dist/{types/components → components}/session/formatDate.d.ts +1 -1
  80. package/dist/components/session/formatDate.d.ts.map +1 -0
  81. package/dist/{esm/components → components}/session/formatDate.js +1 -2
  82. package/dist/components/session/getLastSeen.d.ts +3 -0
  83. package/dist/components/session/getLastSeen.d.ts.map +1 -0
  84. package/dist/{esm/components → components}/session/getLastSeen.js +1 -2
  85. package/dist/{types/components → components}/shared/ButtonUpdate.d.ts +1 -1
  86. package/dist/components/shared/ButtonUpdate.d.ts.map +1 -0
  87. package/dist/{esm/components → components}/shared/ButtonUpdate.js +6 -3
  88. package/dist/components/shared/ErrorResult.d.ts.map +1 -0
  89. package/dist/{esm/components → components}/shared/ErrorResult.js +4 -4
  90. package/dist/components/shared/FormError.d.ts.map +1 -0
  91. package/dist/{esm/components → components}/shared/FormError.js +6 -5
  92. package/dist/components/shared/MainLoader.d.ts.map +1 -0
  93. package/dist/{esm/components → components}/shared/MainLoader.js +5 -3
  94. package/dist/{types/components → components}/shared/icons/AndroidIcon.d.ts +1 -1
  95. package/dist/components/shared/icons/AndroidIcon.d.ts.map +1 -0
  96. package/dist/components/shared/icons/AndroidIcon.js +12 -0
  97. package/dist/{types/components → components}/shared/icons/AppleIcon.d.ts +1 -1
  98. package/dist/components/shared/icons/AppleIcon.d.ts.map +1 -0
  99. package/dist/components/shared/icons/AppleIcon.js +12 -0
  100. package/dist/{types/components → components}/shared/icons/BrowserIcon.d.ts +1 -1
  101. package/dist/components/shared/icons/BrowserIcon.d.ts.map +1 -0
  102. package/dist/components/shared/icons/BrowserIcon.js +12 -0
  103. package/dist/{types/components → components}/shared/icons/ProfileIcon.d.ts +1 -1
  104. package/dist/components/shared/icons/ProfileIcon.d.ts.map +1 -0
  105. package/dist/components/shared/icons/ProfileIcon.js +12 -0
  106. package/dist/{types/components → components}/shared/icons/UnknownDeviceIcon.d.ts +1 -1
  107. package/dist/components/shared/icons/UnknownDeviceIcon.d.ts.map +1 -0
  108. package/dist/components/shared/icons/UnknownDeviceIcon.js +12 -0
  109. package/dist/index.d.ts.map +1 -0
  110. package/dist/index.js +14 -0
  111. package/dist/utils/getError.d.ts.map +1 -0
  112. package/dist/{esm/utils → utils}/getError.js +1 -2
  113. package/dist/utils/getUserFullName.d.ts.map +1 -0
  114. package/dist/{esm/utils → utils}/getUserFullName.js +1 -2
  115. package/dist/{types/utils → utils}/handleFormErrors.d.ts +1 -1
  116. package/dist/utils/handleFormErrors.d.ts.map +1 -0
  117. package/dist/{esm/utils → utils}/handleFormErrors.js +1 -2
  118. package/package.json +51 -58
  119. package/src/@types/react-app-env.d.ts +3 -0
  120. package/src/App.tsx +42 -0
  121. package/src/AppRouter.tsx +12 -0
  122. package/src/components/ErrorResult.tsx +23 -0
  123. package/src/components/Layout.tsx +70 -0
  124. package/src/components/MainLoader.tsx +22 -0
  125. package/src/components/icons/HomeIcon.tsx +12 -0
  126. package/src/i18next.ts +34 -0
  127. package/src/index.tsx +6 -0
  128. package/src/lib/@types/emotion.d.ts +7 -0
  129. package/src/lib/@types/i18next.d.ts +12 -0
  130. package/src/lib/@types/relay.d.ts +3 -0
  131. package/src/lib/components/profile/ProfileButton.tsx +8 -0
  132. package/src/lib/components/profile/ProfileConfigContext.ts +16 -0
  133. package/src/lib/components/profile/ProfileContext.ts +20 -0
  134. package/src/lib/components/profile/ProfileDrawer.tsx +31 -0
  135. package/src/lib/components/profile/ProfileDrawerContent.tsx +276 -0
  136. package/src/lib/components/profile/ProfileNavigationItem.tsx +36 -0
  137. package/src/lib/components/profile/ProfileUpdateNameModal.tsx +117 -0
  138. package/src/lib/components/profile/ProfileUpdatePasswordModal.tsx +129 -0
  139. package/src/lib/components/profile/ProtectedWrapper.tsx +81 -0
  140. package/src/lib/components/profile/UserAvatar.tsx +23 -0
  141. package/src/lib/components/profile/UserAvatarAddon.tsx +62 -0
  142. package/src/lib/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.ts +74 -0
  143. package/src/lib/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.ts +100 -0
  144. package/src/lib/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.ts +124 -0
  145. package/src/lib/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.ts +93 -0
  146. package/src/lib/components/profile/__generated__/ProtectedWrapperQuery.graphql.ts +106 -0
  147. package/src/lib/components/session/SessionDrawer.tsx +50 -0
  148. package/src/lib/components/session/SessionDrawerContent.tsx +34 -0
  149. package/src/lib/components/session/SessionList.tsx +138 -0
  150. package/src/lib/components/session/SessionListItem.tsx +318 -0
  151. package/src/lib/components/session/SessionListSkeleton.tsx +48 -0
  152. package/src/lib/components/session/__generated__/SessionDrawerContentQuery.graphql.ts +181 -0
  153. package/src/lib/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.ts +74 -0
  154. package/src/lib/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.ts +92 -0
  155. package/src/lib/components/session/__generated__/SessionListItem_session.graphql.ts +154 -0
  156. package/src/lib/components/session/__generated__/SessionListRefetchQuery.graphql.ts +181 -0
  157. package/src/lib/components/session/__generated__/SessionList_sessions.graphql.ts +83 -0
  158. package/src/lib/components/session/formatDate.ts +21 -0
  159. package/{dist/cjs/components/session/getLastSeen.js → src/lib/components/session/getLastSeen.ts} +9 -9
  160. package/src/lib/components/shared/ButtonUpdate.tsx +10 -0
  161. package/src/lib/components/shared/ErrorResult.tsx +28 -0
  162. package/src/lib/components/shared/FormError.tsx +11 -0
  163. package/src/lib/components/shared/MainLoader.tsx +22 -0
  164. package/src/lib/components/shared/icons/AndroidIcon.tsx +12 -0
  165. package/src/lib/components/shared/icons/AppleIcon.tsx +12 -0
  166. package/src/lib/components/shared/icons/BrowserIcon.tsx +12 -0
  167. package/src/lib/components/shared/icons/ProfileIcon.tsx +12 -0
  168. package/src/lib/components/shared/icons/UnknownDeviceIcon.tsx +14 -0
  169. package/{dist/esm/index.js → src/lib/index.ts} +1 -1
  170. package/src/lib/utils/getError.ts +101 -0
  171. package/src/lib/utils/getUserFullName.ts +14 -0
  172. package/src/lib/utils/handleFormErrors.ts +16 -0
  173. package/src/pages/HomePage.tsx +11 -0
  174. package/src/schema.graphql +2494 -0
  175. package/src/utils/createRelayEnvironment.ts +22 -0
  176. package/src/utils/getError.ts +101 -0
  177. package/dist/cjs/@types/emotion.d.js +0 -4
  178. package/dist/cjs/@types/emotion.d.js.map +0 -1
  179. package/dist/cjs/@types/i18next.d.js +0 -4
  180. package/dist/cjs/@types/i18next.d.js.map +0 -1
  181. package/dist/cjs/components/profile/ProfileButton.js +0 -16
  182. package/dist/cjs/components/profile/ProfileButton.js.map +0 -1
  183. package/dist/cjs/components/profile/ProfileConfigContext.js +0 -17
  184. package/dist/cjs/components/profile/ProfileConfigContext.js.map +0 -1
  185. package/dist/cjs/components/profile/ProfileContext.js +0 -18
  186. package/dist/cjs/components/profile/ProfileContext.js.map +0 -1
  187. package/dist/cjs/components/profile/ProfileDrawer.js +0 -35
  188. package/dist/cjs/components/profile/ProfileDrawer.js.map +0 -1
  189. package/dist/cjs/components/profile/ProfileDrawerContent.js +0 -167
  190. package/dist/cjs/components/profile/ProfileDrawerContent.js.map +0 -1
  191. package/dist/cjs/components/profile/ProfileNavigationItem.js +0 -35
  192. package/dist/cjs/components/profile/ProfileNavigationItem.js.map +0 -1
  193. package/dist/cjs/components/profile/ProfileUpdateNameModal.js +0 -106
  194. package/dist/cjs/components/profile/ProfileUpdateNameModal.js.map +0 -1
  195. package/dist/cjs/components/profile/ProfileUpdatePasswordModal.js +0 -106
  196. package/dist/cjs/components/profile/ProfileUpdatePasswordModal.js.map +0 -1
  197. package/dist/cjs/components/profile/ProtectedWrapper.js +0 -54
  198. package/dist/cjs/components/profile/ProtectedWrapper.js.map +0 -1
  199. package/dist/cjs/components/profile/UserAvatar.js +0 -42
  200. package/dist/cjs/components/profile/UserAvatar.js.map +0 -1
  201. package/dist/cjs/components/profile/UserAvatarAddon.js +0 -41
  202. package/dist/cjs/components/profile/UserAvatarAddon.js.map +0 -1
  203. package/dist/cjs/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.js +0 -63
  204. package/dist/cjs/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.js.map +0 -1
  205. package/dist/cjs/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.js +0 -78
  206. package/dist/cjs/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.js.map +0 -1
  207. package/dist/cjs/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js +0 -95
  208. package/dist/cjs/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js.map +0 -1
  209. package/dist/cjs/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js +0 -72
  210. package/dist/cjs/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js.map +0 -1
  211. package/dist/cjs/components/profile/__generated__/ProtectedWrapperQuery.graphql.js +0 -87
  212. package/dist/cjs/components/profile/__generated__/ProtectedWrapperQuery.graphql.js.map +0 -1
  213. package/dist/cjs/components/session/SessionDrawer.js +0 -46
  214. package/dist/cjs/components/session/SessionDrawer.js.map +0 -1
  215. package/dist/cjs/components/session/SessionDrawerContent.js +0 -39
  216. package/dist/cjs/components/session/SessionDrawerContent.js.map +0 -1
  217. package/dist/cjs/components/session/SessionList.js +0 -73
  218. package/dist/cjs/components/session/SessionList.js.map +0 -1
  219. package/dist/cjs/components/session/SessionListItem.js +0 -150
  220. package/dist/cjs/components/session/SessionListItem.js.map +0 -1
  221. package/dist/cjs/components/session/SessionListSkeleton.js +0 -31
  222. package/dist/cjs/components/session/SessionListSkeleton.js.map +0 -1
  223. package/dist/cjs/components/session/__generated__/SessionDrawerContentQuery.graphql.js +0 -154
  224. package/dist/cjs/components/session/__generated__/SessionDrawerContentQuery.graphql.js.map +0 -1
  225. package/dist/cjs/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js +0 -63
  226. package/dist/cjs/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js.map +0 -1
  227. package/dist/cjs/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.js +0 -72
  228. package/dist/cjs/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.js.map +0 -1
  229. package/dist/cjs/components/session/__generated__/SessionListItem_session.graphql.js +0 -118
  230. package/dist/cjs/components/session/__generated__/SessionListItem_session.graphql.js.map +0 -1
  231. package/dist/cjs/components/session/__generated__/SessionListRefetchQuery.graphql.js +0 -154
  232. package/dist/cjs/components/session/__generated__/SessionListRefetchQuery.graphql.js.map +0 -1
  233. package/dist/cjs/components/session/__generated__/SessionList_sessions.graphql.js +0 -65
  234. package/dist/cjs/components/session/__generated__/SessionList_sessions.graphql.js.map +0 -1
  235. package/dist/cjs/components/session/formatDate.js +0 -19
  236. package/dist/cjs/components/session/formatDate.js.map +0 -1
  237. package/dist/cjs/components/session/getLastSeen.js.map +0 -1
  238. package/dist/cjs/components/shared/ButtonUpdate.js +0 -18
  239. package/dist/cjs/components/shared/ButtonUpdate.js.map +0 -1
  240. package/dist/cjs/components/shared/ErrorResult.js +0 -31
  241. package/dist/cjs/components/shared/ErrorResult.js.map +0 -1
  242. package/dist/cjs/components/shared/FormError.js +0 -21
  243. package/dist/cjs/components/shared/FormError.js.map +0 -1
  244. package/dist/cjs/components/shared/MainLoader.js +0 -17
  245. package/dist/cjs/components/shared/MainLoader.js.map +0 -1
  246. package/dist/cjs/components/shared/icons/AndroidIcon.js +0 -18
  247. package/dist/cjs/components/shared/icons/AndroidIcon.js.map +0 -1
  248. package/dist/cjs/components/shared/icons/AppleIcon.js +0 -18
  249. package/dist/cjs/components/shared/icons/AppleIcon.js.map +0 -1
  250. package/dist/cjs/components/shared/icons/BrowserIcon.js +0 -18
  251. package/dist/cjs/components/shared/icons/BrowserIcon.js.map +0 -1
  252. package/dist/cjs/components/shared/icons/ProfileIcon.js +0 -18
  253. package/dist/cjs/components/shared/icons/ProfileIcon.js.map +0 -1
  254. package/dist/cjs/components/shared/icons/UnknownDeviceIcon.js +0 -18
  255. package/dist/cjs/components/shared/icons/UnknownDeviceIcon.js.map +0 -1
  256. package/dist/cjs/index.js +0 -142
  257. package/dist/cjs/index.js.map +0 -1
  258. package/dist/cjs/utils/getError.js +0 -59
  259. package/dist/cjs/utils/getError.js.map +0 -1
  260. package/dist/cjs/utils/getUserFullName.js +0 -19
  261. package/dist/cjs/utils/getUserFullName.js.map +0 -1
  262. package/dist/cjs/utils/handleFormErrors.js +0 -25
  263. package/dist/cjs/utils/handleFormErrors.js.map +0 -1
  264. package/dist/esm/@types/emotion.d.js +0 -2
  265. package/dist/esm/@types/emotion.d.js.map +0 -1
  266. package/dist/esm/@types/i18next.d.js +0 -2
  267. package/dist/esm/@types/i18next.d.js.map +0 -1
  268. package/dist/esm/components/profile/ProfileButton.js +0 -9
  269. package/dist/esm/components/profile/ProfileButton.js.map +0 -1
  270. package/dist/esm/components/profile/ProfileConfigContext.js.map +0 -1
  271. package/dist/esm/components/profile/ProfileContext.js.map +0 -1
  272. package/dist/esm/components/profile/ProfileDrawer.js +0 -25
  273. package/dist/esm/components/profile/ProfileDrawer.js.map +0 -1
  274. package/dist/esm/components/profile/ProfileDrawerContent.js.map +0 -1
  275. package/dist/esm/components/profile/ProfileNavigationItem.js.map +0 -1
  276. package/dist/esm/components/profile/ProfileUpdateNameModal.js.map +0 -1
  277. package/dist/esm/components/profile/ProfileUpdatePasswordModal.js.map +0 -1
  278. package/dist/esm/components/profile/ProtectedWrapper.js.map +0 -1
  279. package/dist/esm/components/profile/UserAvatar.js.map +0 -1
  280. package/dist/esm/components/profile/UserAvatarAddon.js +0 -47
  281. package/dist/esm/components/profile/UserAvatarAddon.js.map +0 -1
  282. package/dist/esm/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.js.map +0 -1
  283. package/dist/esm/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.js.map +0 -1
  284. package/dist/esm/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js.map +0 -1
  285. package/dist/esm/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js.map +0 -1
  286. package/dist/esm/components/profile/__generated__/ProtectedWrapperQuery.graphql.js.map +0 -1
  287. package/dist/esm/components/session/SessionDrawer.js +0 -39
  288. package/dist/esm/components/session/SessionDrawer.js.map +0 -1
  289. package/dist/esm/components/session/SessionDrawerContent.js.map +0 -1
  290. package/dist/esm/components/session/SessionList.js.map +0 -1
  291. package/dist/esm/components/session/SessionListItem.js.map +0 -1
  292. package/dist/esm/components/session/SessionListSkeleton.js +0 -31
  293. package/dist/esm/components/session/SessionListSkeleton.js.map +0 -1
  294. package/dist/esm/components/session/__generated__/SessionDrawerContentQuery.graphql.js.map +0 -1
  295. package/dist/esm/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js.map +0 -1
  296. package/dist/esm/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.js.map +0 -1
  297. package/dist/esm/components/session/__generated__/SessionListItem_session.graphql.js.map +0 -1
  298. package/dist/esm/components/session/__generated__/SessionListRefetchQuery.graphql.js.map +0 -1
  299. package/dist/esm/components/session/__generated__/SessionList_sessions.graphql.js.map +0 -1
  300. package/dist/esm/components/session/formatDate.js.map +0 -1
  301. package/dist/esm/components/session/getLastSeen.js.map +0 -1
  302. package/dist/esm/components/shared/ButtonUpdate.js.map +0 -1
  303. package/dist/esm/components/shared/ErrorResult.js.map +0 -1
  304. package/dist/esm/components/shared/FormError.js.map +0 -1
  305. package/dist/esm/components/shared/MainLoader.js.map +0 -1
  306. package/dist/esm/components/shared/icons/AndroidIcon.js +0 -11
  307. package/dist/esm/components/shared/icons/AndroidIcon.js.map +0 -1
  308. package/dist/esm/components/shared/icons/AppleIcon.js +0 -11
  309. package/dist/esm/components/shared/icons/AppleIcon.js.map +0 -1
  310. package/dist/esm/components/shared/icons/BrowserIcon.js +0 -11
  311. package/dist/esm/components/shared/icons/BrowserIcon.js.map +0 -1
  312. package/dist/esm/components/shared/icons/ProfileIcon.js +0 -11
  313. package/dist/esm/components/shared/icons/ProfileIcon.js.map +0 -1
  314. package/dist/esm/components/shared/icons/UnknownDeviceIcon.js +0 -11
  315. package/dist/esm/components/shared/icons/UnknownDeviceIcon.js.map +0 -1
  316. package/dist/esm/index.js.map +0 -1
  317. package/dist/esm/utils/getError.js.map +0 -1
  318. package/dist/esm/utils/getUserFullName.js.map +0 -1
  319. package/dist/esm/utils/handleFormErrors.js.map +0 -1
  320. package/dist/types/components/profile/ProfileButton.d.ts.map +0 -1
  321. package/dist/types/components/profile/ProfileConfigContext.d.ts.map +0 -1
  322. package/dist/types/components/profile/ProfileContext.d.ts.map +0 -1
  323. package/dist/types/components/profile/ProfileDrawer.d.ts.map +0 -1
  324. package/dist/types/components/profile/ProfileDrawerContent.d.ts.map +0 -1
  325. package/dist/types/components/profile/ProfileNavigationItem.d.ts.map +0 -1
  326. package/dist/types/components/profile/ProfileUpdateNameModal.d.ts.map +0 -1
  327. package/dist/types/components/profile/ProfileUpdatePasswordModal.d.ts.map +0 -1
  328. package/dist/types/components/profile/ProtectedWrapper.d.ts.map +0 -1
  329. package/dist/types/components/profile/UserAvatar.d.ts.map +0 -1
  330. package/dist/types/components/profile/UserAvatarAddon.d.ts.map +0 -1
  331. package/dist/types/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.d.ts.map +0 -1
  332. package/dist/types/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.d.ts.map +0 -1
  333. package/dist/types/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.d.ts.map +0 -1
  334. package/dist/types/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.d.ts.map +0 -1
  335. package/dist/types/components/profile/__generated__/ProtectedWrapperQuery.graphql.d.ts.map +0 -1
  336. package/dist/types/components/session/SessionDrawer.d.ts.map +0 -1
  337. package/dist/types/components/session/SessionDrawerContent.d.ts.map +0 -1
  338. package/dist/types/components/session/SessionList.d.ts.map +0 -1
  339. package/dist/types/components/session/SessionListItem.d.ts.map +0 -1
  340. package/dist/types/components/session/SessionListSkeleton.d.ts.map +0 -1
  341. package/dist/types/components/session/__generated__/SessionDrawerContentQuery.graphql.d.ts.map +0 -1
  342. package/dist/types/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.d.ts.map +0 -1
  343. package/dist/types/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.d.ts.map +0 -1
  344. package/dist/types/components/session/__generated__/SessionListItem_session.graphql.d.ts.map +0 -1
  345. package/dist/types/components/session/__generated__/SessionListRefetchQuery.graphql.d.ts.map +0 -1
  346. package/dist/types/components/session/__generated__/SessionList_sessions.graphql.d.ts.map +0 -1
  347. package/dist/types/components/session/formatDate.d.ts.map +0 -1
  348. package/dist/types/components/session/getLastSeen.d.ts +0 -3
  349. package/dist/types/components/session/getLastSeen.d.ts.map +0 -1
  350. package/dist/types/components/shared/ButtonUpdate.d.ts.map +0 -1
  351. package/dist/types/components/shared/ErrorResult.d.ts.map +0 -1
  352. package/dist/types/components/shared/FormError.d.ts.map +0 -1
  353. package/dist/types/components/shared/MainLoader.d.ts.map +0 -1
  354. package/dist/types/components/shared/icons/AndroidIcon.d.ts.map +0 -1
  355. package/dist/types/components/shared/icons/AppleIcon.d.ts.map +0 -1
  356. package/dist/types/components/shared/icons/BrowserIcon.d.ts.map +0 -1
  357. package/dist/types/components/shared/icons/ProfileIcon.d.ts.map +0 -1
  358. package/dist/types/components/shared/icons/UnknownDeviceIcon.d.ts.map +0 -1
  359. package/dist/types/index.d.ts.map +0 -1
  360. package/dist/types/utils/getError.d.ts.map +0 -1
  361. package/dist/types/utils/getUserFullName.d.ts.map +0 -1
  362. package/dist/types/utils/handleFormErrors.d.ts.map +0 -1
  363. /package/dist/{types/components → components}/profile/ProfileConfigContext.d.ts +0 -0
  364. /package/dist/{types/components → components}/profile/ProfileContext.d.ts +0 -0
  365. /package/dist/{types/components → components}/profile/ProfileUpdateNameModal.d.ts +0 -0
  366. /package/dist/{types/components → components}/profile/ProfileUpdatePasswordModal.d.ts +0 -0
  367. /package/dist/{types/components → components}/profile/ProtectedWrapper.d.ts +0 -0
  368. /package/dist/{types/components → components}/session/SessionDrawerContent.d.ts +0 -0
  369. /package/dist/{types/components → components}/session/SessionListSkeleton.d.ts +0 -0
  370. /package/dist/{types/components → components}/shared/ErrorResult.d.ts +0 -0
  371. /package/dist/{types/components → components}/shared/FormError.d.ts +0 -0
  372. /package/dist/{types/components → components}/shared/MainLoader.d.ts +0 -0
  373. /package/dist/{types/index.d.ts → index.d.ts} +0 -0
  374. /package/dist/{types/utils → utils}/getError.d.ts +0 -0
  375. /package/dist/{types/utils → utils}/getUserFullName.d.ts +0 -0
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@os-team/profile",
3
- "version": "1.2.1",
3
+ "version": "1.2.3",
4
4
  "license": "UNLICENSED",
5
5
  "repository": "git@gitlab.com:os-team/libs/profile.git",
6
- "main": "dist/cjs/index.js",
7
- "module": "dist/esm/index.js",
8
- "types": "dist/types/index.d.ts",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
9
8
  "files": [
10
- "dist"
9
+ "dist",
10
+ "src"
11
11
  ],
12
12
  "sideEffects": false,
13
+ "packageManager": "yarn@4.5.1",
13
14
  "scripts": {
14
15
  "clean": "rimraf dist",
15
- "build:esm": "cross-env BABEL_ENV=esm babel src/lib --extensions .ts,.tsx --out-dir dist/esm --source-maps",
16
- "build:cjs": "cross-env BABEL_ENV=cjs babel src/lib --extensions .ts,.tsx --out-dir dist/cjs --source-maps",
17
- "build:types": "tsc -p tsconfig.build.json --emitDeclarationOnly --declaration --declarationDir dist/types",
16
+ "build:esm": "cross-env BABEL_ENV=esm babel src/lib --extensions .ts,.tsx --out-dir dist",
17
+ "build:types": "tsc -p tsconfig.build.json --emitDeclarationOnly --declaration --declarationDir dist",
18
18
  "build": "yarn clean && npm-run-all 'build:*'",
19
19
  "release": "yarn build && release-it --only-version",
20
20
  "gen-schema": "get-graphql-schema http://localhost:4000/graphql > ./src/schema.graphql",
@@ -35,70 +35,63 @@
35
35
  "registry": "https://registry.npmjs.org"
36
36
  },
37
37
  "dependencies": {
38
- "@os-design/core": "^1.0.241",
39
- "@os-design/form": "^1.0.74",
40
- "@os-design/icons": "^1.0.58",
41
- "@os-design/media": "^1.0.25",
42
- "@os-design/styles": "^1.0.55",
43
- "@os-design/theming": "^1.0.51",
44
- "@os-design/utils": "^1.0.73",
45
- "@os-team/plural-forms": "^1.0.12"
38
+ "@os-design/core": "^1.0.262",
39
+ "@os-design/form": "^1.0.97",
40
+ "@os-design/icons": "^1.0.65",
41
+ "@os-design/media": "^1.0.30",
42
+ "@os-design/styles": "^1.0.62",
43
+ "@os-design/theming": "^1.0.58",
44
+ "@os-design/utils": "^1.0.82",
45
+ "@os-team/plural-forms": "^1.0.14"
46
46
  },
47
47
  "devDependencies": {
48
- "@babel/cli": "^7.24.6",
49
- "@babel/core": "^7.24.6",
48
+ "@babel/cli": "^7.25.9",
49
+ "@babel/core": "^7.26.0",
50
50
  "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
51
- "@babel/preset-env": "^7.24.6",
52
- "@babel/preset-react": "^7.24.6",
53
- "@babel/preset-typescript": "^7.24.6",
54
- "@emotion/react": "^11.11.4",
55
- "@emotion/serialize": "^1.1.4",
56
- "@emotion/styled": "^11.11.5",
57
- "@os-team/prettier-config": "1.1.11",
58
- "@os-team/relay-network-creator": "^1.2.19",
59
- "@os-team/relay-network-mw-upload": "^1.2.19",
60
- "@types/jest": "^29.5.12",
61
- "@types/node": "^20.12.12",
62
- "@types/react": "^18.3.3",
63
- "@types/react-dom": "^18.3.0",
51
+ "@babel/preset-env": "^7.26.0",
52
+ "@babel/preset-react": "^7.25.9",
53
+ "@babel/preset-typescript": "^7.26.0",
54
+ "@emotion/react": "^11.13.5",
55
+ "@emotion/serialize": "^1.3.3",
56
+ "@emotion/styled": "^11.13.5",
57
+ "@os-team/prettier-config": "1.2.7",
58
+ "@os-team/relay-network-creator": "^1.3.1",
59
+ "@os-team/relay-network-mw-upload": "^1.2.24",
60
+ "@types/jest": "^29.5.14",
61
+ "@types/node": "^22.9.3",
62
+ "@types/react": "^18.3.12",
63
+ "@types/react-dom": "^18.3.1",
64
64
  "@types/react-relay": "^16.0.6",
65
- "@types/react-router-dom": "^5.3.3",
66
- "@typescript-eslint/eslint-plugin": "^7.10.0",
67
- "@typescript-eslint/parser": "^7.10.0",
68
- "babel-plugin-relay": "^16.2.0",
65
+ "@typescript-eslint/eslint-plugin": "^8.15.0",
66
+ "@typescript-eslint/parser": "^8.15.0",
67
+ "babel-plugin-relay": "^18.2.0",
69
68
  "cross-env": "^7.0.3",
70
- "eslint": "^8.57.0",
71
- "eslint-config-os-team-react": "1.1.49",
72
- "eslint-plugin-import": "^2.29.1",
73
- "eslint-plugin-jest": "^28.5.0",
74
- "eslint-plugin-jsx-a11y": "^6.8.0",
75
- "eslint-plugin-promise": "^6.1.1",
76
- "eslint-plugin-react": "^7.34.1",
77
- "eslint-plugin-react-hooks": "^4.6.2",
69
+ "eslint": "^9.15.0",
70
+ "eslint-config-os-team-react": "1.2.22",
78
71
  "get-graphql-schema": "^2.1.2",
79
- "graphql": "^16.8.1",
80
- "husky": "^9.0.11",
81
- "i18next": "^23.11.5",
72
+ "graphql": "^16.9.0",
73
+ "husky": "^9.1.7",
74
+ "i18next": "^24.0.0",
82
75
  "i18next-browser-languagedetector": "^8.0.0",
83
- "i18next-http-backend": "^2.5.2",
76
+ "i18next-http-backend": "^3.0.1",
84
77
  "lazysizes": "^5.3.2",
85
- "lint-staged": "^15.2.5",
78
+ "lint-staged": "^15.2.10",
86
79
  "npm-run-all": "^4.1.5",
87
- "prettier": "3.2.5",
80
+ "prettier": "3.3.3",
88
81
  "progress-bar-webpack-plugin": "^2.1.0",
89
82
  "react": "^18.3.1",
90
83
  "react-app-rewired": "^2.2.1",
91
84
  "react-dom": "^18.3.1",
92
- "react-i18next": "^14.1.2",
93
- "react-relay": "^16.2.0",
94
- "react-router-dom": "^6.23.1",
85
+ "react-i18next": "^15.1.1",
86
+ "react-relay": "^18.2.0",
87
+ "react-router": "^7.0.1",
95
88
  "react-scripts": "^5.0.1",
96
89
  "react-test-renderer": "^18.3.1",
97
- "relay-compiler": "^16.2.0",
98
- "relay-runtime": "^16.2.0",
99
- "release-it": "^17.3.0",
100
- "rimraf": "^5.0.7",
101
- "typescript": "^5.4.5",
90
+ "relay-compiler": "^18.2.0",
91
+ "relay-runtime": "^18.2.0",
92
+ "release-it": "^17.10.0",
93
+ "rimraf": "^6.0.1",
94
+ "typescript": "^5.7.2",
102
95
  "webpack-bundle-analyzer": "^4.10.2"
103
96
  },
104
97
  "peerDependencies": {
@@ -117,7 +110,7 @@
117
110
  "react-dom": "^18.2.0",
118
111
  "react-i18next": ">=11",
119
112
  "react-relay": "^14.1.0",
120
- "react-router-dom": ">=5",
113
+ "react-router": ">=5",
121
114
  "react-scripts": ">=5",
122
115
  "relay-compiler": ">=12",
123
116
  "relay-runtime": ">=12"
@@ -0,0 +1,3 @@
1
+ /// <reference types="react-scripts" />
2
+ /// <reference types="react-dom/experimental" />
3
+ /// <reference types="react/experimental" />
package/src/App.tsx ADDED
@@ -0,0 +1,42 @@
1
+ import React, { Suspense } from 'react';
2
+ import { GlobalStyles } from '@os-design/core';
3
+ import { ThemeProvider } from '@os-design/theming';
4
+ import { BrowserRouter } from 'react-router';
5
+ import { RelayEnvironmentProvider } from 'react-relay';
6
+ import { ErrorBoundary, type FallbackFn } from '@os-design/utils';
7
+ import AppRouter from './AppRouter';
8
+ import createRelayEnvironment from './utils/createRelayEnvironment';
9
+ import MainLoader from './components/MainLoader';
10
+ import Layout from './components/Layout';
11
+ import { ProtectedWrapper } from './lib';
12
+ import 'lazysizes';
13
+ import 'lazysizes/plugins/attrchange/ls.attrchange';
14
+
15
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
16
+ require('./i18next');
17
+
18
+ const relayEnvironment = createRelayEnvironment();
19
+
20
+ const errorFallback: FallbackFn = ({ error }) => <p>{error.message}</p>;
21
+
22
+ const App: React.FC = () => (
23
+ <ThemeProvider>
24
+ <GlobalStyles />
25
+
26
+ <RelayEnvironmentProvider environment={relayEnvironment}>
27
+ <BrowserRouter>
28
+ <Suspense fallback={<MainLoader />}>
29
+ <ProtectedWrapper bucketId='os-team-test'>
30
+ <ErrorBoundary fallback={errorFallback}>
31
+ <Layout>
32
+ <AppRouter />
33
+ </Layout>
34
+ </ErrorBoundary>
35
+ </ProtectedWrapper>
36
+ </Suspense>
37
+ </BrowserRouter>
38
+ </RelayEnvironmentProvider>
39
+ </ThemeProvider>
40
+ );
41
+
42
+ export default App;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { Routes, Route, Navigate } from 'react-router';
3
+ import HomePage from './pages/HomePage';
4
+
5
+ const AppRouter: React.FC = () => (
6
+ <Routes>
7
+ <Route path='home' element={<HomePage />} />
8
+ <Route path='*' element={<Navigate replace to='home' />} />
9
+ </Routes>
10
+ );
11
+
12
+ export default AppRouter;
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import { CloseCircle } from '@os-design/icons';
3
+ import { Result } from '@os-design/core';
4
+ import { useTranslation } from 'react-i18next';
5
+ import getError from '../utils/getError';
6
+
7
+ interface ErrorResultProps {
8
+ error: Error;
9
+ }
10
+
11
+ const ErrorResult: React.FC<ErrorResultProps> = ({ error }) => {
12
+ const { t } = useTranslation(['common']);
13
+
14
+ return (
15
+ <Result
16
+ title={t('common:errorTitle')}
17
+ description={getError(error).message}
18
+ icon={<CloseCircle />}
19
+ />
20
+ );
21
+ };
22
+
23
+ export default ErrorResult;
@@ -0,0 +1,70 @@
1
+ import React, { useState } from 'react';
2
+ import {
3
+ Layout as BaseLayout,
4
+ Navigation,
5
+ NavigationItem,
6
+ } from '@os-design/core';
7
+ import { useLocation, Link } from 'react-router';
8
+ import { useTranslation } from 'react-i18next';
9
+ import HomeIcon from './icons/HomeIcon';
10
+ import {
11
+ UserAvatarAddon,
12
+ ProfileDrawer,
13
+ ProfileNavigationItem,
14
+ ProfileButton,
15
+ SessionDrawer,
16
+ } from '../lib';
17
+
18
+ interface LayoutProps {
19
+ children?: React.ReactNode;
20
+ }
21
+
22
+ const Layout: React.FC<LayoutProps> = ({ children }) => {
23
+ const { pathname } = useLocation();
24
+ const { t } = useTranslation(['profile']);
25
+ const [profileDrawerVisible, setProfileDrawerVisible] = useState(false);
26
+ const [sessionDrawerVisible, setSessionDrawerVisible] = useState(false);
27
+
28
+ return (
29
+ <>
30
+ <BaseLayout hasNavigation hasPageHeader>
31
+ <Navigation
32
+ sideBottom={
33
+ <UserAvatarAddon onClick={() => setProfileDrawerVisible(true)} />
34
+ }
35
+ >
36
+ <NavigationItem
37
+ icon={<HomeIcon />}
38
+ currentPage={pathname === '/home'}
39
+ as={Link}
40
+ to='/home'
41
+ >
42
+ Home
43
+ </NavigationItem>
44
+ <ProfileNavigationItem
45
+ onClick={() => setProfileDrawerVisible(true)}
46
+ />
47
+ </Navigation>
48
+
49
+ {children}
50
+ </BaseLayout>
51
+
52
+ <ProfileDrawer
53
+ visible={profileDrawerVisible}
54
+ onClose={() => setProfileDrawerVisible(false)}
55
+ actions={
56
+ <ProfileButton onClick={() => setSessionDrawerVisible(true)}>
57
+ {t('profile:sessions.title')}
58
+ </ProfileButton>
59
+ }
60
+ />
61
+
62
+ <SessionDrawer
63
+ visible={sessionDrawerVisible}
64
+ onClose={() => setSessionDrawerVisible(false)}
65
+ />
66
+ </>
67
+ );
68
+ };
69
+
70
+ export default Layout;
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import styled from '@emotion/styled';
3
+ import { Loading } from '@os-design/icons';
4
+ import { clr } from '@os-design/theming';
5
+
6
+ const Container = styled.div`
7
+ display: flex;
8
+ justify-content: center;
9
+ align-items: center;
10
+
11
+ height: calc(var(--vh, 1vh) * 100);
12
+ font-size: 2em;
13
+ color: ${(p) => clr(p.theme.colorPrimary)};
14
+ `;
15
+
16
+ const MainLoader: React.FC = () => (
17
+ <Container>
18
+ <Loading />
19
+ </Container>
20
+ );
21
+
22
+ export default MainLoader;
@@ -0,0 +1,12 @@
1
+ import { forwardRef } from 'react';
2
+ import { Icon, type IconProps } from '@os-design/icons';
3
+
4
+ const HomeIcon = forwardRef<SVGSVGElement, IconProps>((props, ref) => (
5
+ <Icon {...props} ref={ref}>
6
+ <path d='M946.5 505L534.6 93.4a31.93 31.93 0 0 0-45.2 0L77.5 505c-12 12-18.8 28.3-18.8 45.3c0 35.3 28.7 64 64 64h43.4V908c0 17.7 14.3 32 32 32H448V716h112v224h265.9c17.7 0 32-14.3 32-32V614.3h43.4c17 0 33.3-6.7 45.3-18.8c24.9-25 24.9-65.5-.1-90.5z' />
7
+ </Icon>
8
+ ));
9
+
10
+ HomeIcon.displayName = 'HomeIcon';
11
+
12
+ export default HomeIcon;
package/src/i18next.ts ADDED
@@ -0,0 +1,34 @@
1
+ import i18next from 'i18next';
2
+ import HttpBackend from 'i18next-http-backend';
3
+ import { initReactI18next } from 'react-i18next';
4
+ import LanguageDetector from 'i18next-browser-languagedetector';
5
+
6
+ i18next
7
+ .use(HttpBackend) // Load translation. See /public/locales
8
+ .use(LanguageDetector) // Detect user language
9
+ .use(initReactI18next) // Pass the i18n instance to react-i18next
10
+ .init({
11
+ fallbackLng: 'en',
12
+ supportedLngs: ['en', 'ru'],
13
+ ns: [], // Do not preload any namespaces
14
+ defaultNS: undefined, // No default namespace
15
+
16
+ backend: {
17
+ loadPath: '/locales/{{lng}}/{{ns}}.json',
18
+ },
19
+
20
+ interpolation: {
21
+ escapeValue: false, // Not needed for react as it escapes by default
22
+ },
23
+
24
+ detection: {
25
+ order: ['sessionStorage', 'navigator'],
26
+ caches: ['sessionStorage'],
27
+ },
28
+ });
29
+
30
+ i18next.on('languageChanged', (lang) => {
31
+ document.documentElement.lang = lang; // Update html lang
32
+ });
33
+
34
+ export default i18next;
package/src/index.tsx ADDED
@@ -0,0 +1,6 @@
1
+ import ReactDOM from 'react-dom/client';
2
+ import App from './App';
3
+
4
+ const root = document.getElementById('root') as HTMLElement;
5
+
6
+ ReactDOM.createRoot(root).render(<App />);
@@ -0,0 +1,7 @@
1
+ import '@emotion/react';
2
+ import { Theme as BaseTheme } from '@os-design/theming';
3
+
4
+ declare module '@emotion/react' {
5
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
6
+ export interface Theme extends BaseTheme {}
7
+ }
@@ -0,0 +1,12 @@
1
+ import 'i18next';
2
+ import common from '../../../public/locales/en/common.json';
3
+ import profile from '../../../public/locales/en/profile.json';
4
+
5
+ declare module 'i18next' {
6
+ interface CustomTypeOptions {
7
+ resources: {
8
+ common: typeof common;
9
+ profile: typeof profile;
10
+ };
11
+ }
12
+ }
@@ -0,0 +1,3 @@
1
+ declare module 'babel-plugin-relay/macro' {
2
+ export { graphql as default } from 'react-relay';
3
+ }
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { Button, type ButtonProps } from '@os-design/core';
3
+
4
+ const ProfileButton: React.FC<ButtonProps> = (props) => (
5
+ <Button type='ghost' wide='always' {...props} />
6
+ );
7
+
8
+ export default ProfileButton;
@@ -0,0 +1,16 @@
1
+ import React, { useContext } from 'react';
2
+
3
+ export interface ProfileConfigProps {
4
+ bucketId: string;
5
+ }
6
+
7
+ const ProfileConfig = React.createContext<ProfileConfigProps>({
8
+ bucketId: '',
9
+ });
10
+
11
+ ProfileConfig.displayName = 'ProfileConfig';
12
+
13
+ export const useProfileConfig = (): ProfileConfigProps =>
14
+ useContext(ProfileConfig);
15
+
16
+ export default ProfileConfig;
@@ -0,0 +1,20 @@
1
+ import React, { useContext } from 'react';
2
+
3
+ export interface ProfileContextProps {
4
+ id: string;
5
+ email: string;
6
+ firstName?: string;
7
+ lastName?: string;
8
+ avatar?: string;
9
+ }
10
+
11
+ const ProfileContext = React.createContext<ProfileContextProps>({
12
+ id: '',
13
+ email: '',
14
+ });
15
+
16
+ ProfileContext.displayName = 'ProfileContext';
17
+
18
+ export const useProfile = (): ProfileContextProps => useContext(ProfileContext);
19
+
20
+ export default ProfileContext;
@@ -0,0 +1,31 @@
1
+ import React, { lazy, Suspense } from 'react';
2
+ import { Drawer, type DrawerProps } from '@os-design/core';
3
+ import styled from '@emotion/styled';
4
+ import { type ProfileDrawerContentProps } from './ProfileDrawerContent';
5
+ import MainLoader from '../shared/MainLoader';
6
+
7
+ const LazyProfileDrawerContent = lazy(() => import('./ProfileDrawerContent'));
8
+
9
+ export type ProfileDrawerProps = ProfileDrawerContentProps & DrawerProps;
10
+
11
+ const StyledDrawer = styled(Drawer)`
12
+ display: flex;
13
+ flex-direction: column;
14
+ padding: 2em 1em;
15
+ `;
16
+
17
+ const ProfileDrawer: React.FC<ProfileDrawerProps> = ({
18
+ actions,
19
+ children,
20
+ ...rest
21
+ }) => (
22
+ <StyledDrawer placement='right' width='15em' {...rest}>
23
+ <Suspense fallback={<MainLoader />}>
24
+ <LazyProfileDrawerContent actions={actions}>
25
+ {children}
26
+ </LazyProfileDrawerContent>
27
+ </Suspense>
28
+ </StyledDrawer>
29
+ );
30
+
31
+ export default ProfileDrawer;