bmdl-sdk 1.5.9 → 2.0.1

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 (341) hide show
  1. package/.prettierrc +37 -0
  2. package/bin/dev.js +10 -8
  3. package/bin/init.js +2 -1
  4. package/bmdl-sdk-2.0.1.tgz +0 -0
  5. package/global.d.ts +9 -0
  6. package/next.config.ts +35 -0
  7. package/package.json +35 -8
  8. package/postcss.config.mjs +5 -0
  9. package/public/favicon.ico +0 -0
  10. package/public/images/bg/404.bg.dark.png +0 -0
  11. package/public/images/bg/404.bg.png +0 -0
  12. package/public/images/bg/maintenance.bg.dark.png +0 -0
  13. package/public/images/bg/maintenance.bg.png +0 -0
  14. package/public/images/bg/not-authorized.bg.dark.png +0 -0
  15. package/public/images/bg/not-authorized.bg.png +0 -0
  16. package/public/images/bg/redirect.bg.dark.png +0 -0
  17. package/public/images/bg/redirect.bg.png +0 -0
  18. package/public/images/cover/email-verify.cover.dark.png +0 -0
  19. package/public/images/cover/email-verify.cover.png +0 -0
  20. package/public/images/cover/login.cover.dark.png +0 -0
  21. package/public/images/cover/login.cover.png +0 -0
  22. package/public/images/cover/password-forgot.cover.dark.png +0 -0
  23. package/public/images/cover/password-forgot.cover.png +0 -0
  24. package/public/images/cover/password-reset.cover.dark.png +0 -0
  25. package/public/images/cover/password-reset.cover.png +0 -0
  26. package/public/images/cover/register.cover.dark.png +0 -0
  27. package/public/images/cover/register.cover.png +0 -0
  28. package/public/images/cover/two-factor-verify.cover.dark.png +0 -0
  29. package/public/images/cover/two-factor-verify.cover.png +0 -0
  30. package/public/images/lang/en.png +0 -0
  31. package/public/images/lang/ru.png +0 -0
  32. package/public/locales/en/datasets.json +92 -0
  33. package/public/locales/en/errors.json +402 -0
  34. package/public/locales/en/general.json +139 -0
  35. package/public/locales/ru/datasets.json +92 -0
  36. package/public/locales/ru/errors.json +406 -0
  37. package/public/locales/ru/general.json +139 -0
  38. package/src/app/datasets/page.tsx +25 -0
  39. package/src/app/layout.tsx +45 -0
  40. package/src/app/not-found.tsx +34 -0
  41. package/src/app/page.tsx +24 -0
  42. package/src/components/atoms/Actions/Actions.styles.ts +31 -0
  43. package/src/components/atoms/Actions/Actions.tsx +45 -0
  44. package/src/components/atoms/Actions/index.ts +1 -0
  45. package/src/components/atoms/Avatar/Avatar.styles.ts +95 -0
  46. package/src/components/atoms/Avatar/Avatar.tsx +46 -0
  47. package/src/components/atoms/Avatar/index.ts +1 -0
  48. package/src/components/atoms/Badge/Badge.styles.ts +93 -0
  49. package/src/components/atoms/Badge/Badge.tsx +31 -0
  50. package/src/components/atoms/Badge/index.ts +1 -0
  51. package/src/components/atoms/Button/Button.styles.ts +189 -0
  52. package/src/components/atoms/Button/Button.tsx +29 -0
  53. package/src/components/atoms/Button/index.ts +1 -0
  54. package/src/components/atoms/Calendar/Calendar.styles.ts +227 -0
  55. package/src/components/atoms/Calendar/Calendar.tsx +96 -0
  56. package/src/components/atoms/Calendar/index.ts +1 -0
  57. package/src/components/atoms/Checkbox/Checkbox.styles.ts +37 -0
  58. package/src/components/atoms/Checkbox/Checkbox.tsx +26 -0
  59. package/src/components/atoms/Checkbox/index.ts +1 -0
  60. package/src/components/atoms/Date/Date.styles.ts +6 -0
  61. package/src/components/atoms/Date/Date.tsx +27 -0
  62. package/src/components/atoms/Date/index.ts +1 -0
  63. package/src/components/atoms/DatePicker/DatePicker.styles.ts +53 -0
  64. package/src/components/atoms/DatePicker/DatePicker.tsx +114 -0
  65. package/src/components/atoms/DatePicker/DatePicker.utils.tsx +49 -0
  66. package/src/components/atoms/DatePicker/index.ts +1 -0
  67. package/src/components/atoms/Dialog/Dialog.styles.ts +71 -0
  68. package/src/components/atoms/Dialog/Dialog.tsx +55 -0
  69. package/src/components/atoms/Dialog/index.ts +1 -0
  70. package/src/components/atoms/Dropdown/Divider/Divider.styles.ts +8 -0
  71. package/src/components/atoms/Dropdown/Divider/Divider.tsx +14 -0
  72. package/src/components/atoms/Dropdown/Divider/index.ts +1 -0
  73. package/src/components/atoms/Dropdown/Dropdown.styles.ts +31 -0
  74. package/src/components/atoms/Dropdown/Dropdown.tsx +48 -0
  75. package/src/components/atoms/Dropdown/Item/Item.styles.ts +12 -0
  76. package/src/components/atoms/Dropdown/Item/Item.tsx +18 -0
  77. package/src/components/atoms/Dropdown/Item/index.ts +1 -0
  78. package/src/components/atoms/Dropdown/index.ts +1 -0
  79. package/src/components/atoms/Form/Form.styles.ts +23 -0
  80. package/src/components/atoms/Form/Form.tsx +21 -0
  81. package/src/components/atoms/Form/Item/Item.styles.ts +23 -0
  82. package/src/components/atoms/Form/Item/Item.tsx +11 -0
  83. package/src/components/atoms/Form/Item/index.ts +1 -0
  84. package/src/components/atoms/Form/Label/Label.tsx +11 -0
  85. package/src/components/atoms/Form/Label/index.ts +1 -0
  86. package/src/components/atoms/Form/Message/Message.tsx +29 -0
  87. package/src/components/atoms/Form/Message/index.ts +1 -0
  88. package/src/components/atoms/Form/index.ts +1 -0
  89. package/src/components/atoms/Input/Email/Email.tsx +11 -0
  90. package/src/components/atoms/Input/Email/index.ts +1 -0
  91. package/src/components/atoms/Input/Input.styles.ts +77 -0
  92. package/src/components/atoms/Input/Input.tsx +29 -0
  93. package/src/components/atoms/Input/Number/Number.tsx +12 -0
  94. package/src/components/atoms/Input/Number/index.ts +1 -0
  95. package/src/components/atoms/Input/OTP/OTP.styles.ts +30 -0
  96. package/src/components/atoms/Input/OTP/OTP.tsx +23 -0
  97. package/src/components/atoms/Input/OTP/index.ts +1 -0
  98. package/src/components/atoms/Input/Password/Password.tsx +11 -0
  99. package/src/components/atoms/Input/Password/index.ts +1 -0
  100. package/src/components/atoms/Input/Search/Search.tsx +12 -0
  101. package/src/components/atoms/Input/Search/index.ts +1 -0
  102. package/src/components/atoms/Input/index.ts +1 -0
  103. package/src/components/atoms/Label/Label.styles.ts +29 -0
  104. package/src/components/atoms/Label/Label.tsx +18 -0
  105. package/src/components/atoms/Label/index.ts +1 -0
  106. package/src/components/atoms/Logo/Logo.styles.ts +16 -0
  107. package/src/components/atoms/Logo/Logo.tsx +20 -0
  108. package/src/components/atoms/Logo/index.ts +1 -0
  109. package/src/components/atoms/Pagination/Pagination.styles.ts +77 -0
  110. package/src/components/atoms/Pagination/Pagination.tsx +131 -0
  111. package/src/components/atoms/Pagination/index.ts +1 -0
  112. package/src/components/atoms/Popover/Popover.styles.ts +28 -0
  113. package/src/components/atoms/Popover/Popover.tsx +46 -0
  114. package/src/components/atoms/Popover/index.ts +1 -0
  115. package/src/components/atoms/Radio/Item/Item.styles.ts +35 -0
  116. package/src/components/atoms/Radio/Item/Item.tsx +18 -0
  117. package/src/components/atoms/Radio/Item/index.ts +1 -0
  118. package/src/components/atoms/Radio/Radio.styles.ts +25 -0
  119. package/src/components/atoms/Radio/Radio.tsx +21 -0
  120. package/src/components/atoms/Radio/index.ts +1 -0
  121. package/src/components/atoms/RangeNumber/RangeNumber.tsx +33 -0
  122. package/src/components/atoms/RangeNumber/index.ts +1 -0
  123. package/src/components/atoms/Select/Item/Item.styles.ts +22 -0
  124. package/src/components/atoms/Select/Item/Item.tsx +17 -0
  125. package/src/components/atoms/Select/Item/index.ts +1 -0
  126. package/src/components/atoms/Select/Select.styles.ts +149 -0
  127. package/src/components/atoms/Select/Select.tsx +68 -0
  128. package/src/components/atoms/Select/index.ts +1 -0
  129. package/src/components/atoms/Separator/Separator.styles.ts +13 -0
  130. package/src/components/atoms/Separator/Separator.tsx +20 -0
  131. package/src/components/atoms/Separator/index.ts +1 -0
  132. package/src/components/atoms/Sheet/Sheet.styles.ts +100 -0
  133. package/src/components/atoms/Sheet/Sheet.tsx +53 -0
  134. package/src/components/atoms/Sheet/index.ts +1 -0
  135. package/src/components/atoms/Skeleton/Skeleton.styles.ts +30 -0
  136. package/src/components/atoms/Skeleton/Skeleton.tsx +11 -0
  137. package/src/components/atoms/Skeleton/index.ts +1 -0
  138. package/src/components/atoms/Spin/Spin.styles.ts +17 -0
  139. package/src/components/atoms/Spin/Spin.tsx +19 -0
  140. package/src/components/atoms/Spin/index.ts +1 -0
  141. package/src/components/atoms/Switch/Switch.styles.ts +34 -0
  142. package/src/components/atoms/Switch/Switch.tsx +20 -0
  143. package/src/components/atoms/Switch/index.ts +1 -0
  144. package/src/components/atoms/Table/FilterContent/FilterContent.styles.ts +33 -0
  145. package/src/components/atoms/Table/FilterContent/FilterContent.tsx +300 -0
  146. package/src/components/atoms/Table/FilterContent/index.ts +1 -0
  147. package/src/components/atoms/Table/FilterIcon/FilterIcon.tsx +16 -0
  148. package/src/components/atoms/Table/FilterIcon/index.ts +1 -0
  149. package/src/components/atoms/Table/SortIcon/SortIcon.tsx +32 -0
  150. package/src/components/atoms/Table/SortIcon/index.ts +1 -0
  151. package/src/components/atoms/Table/Table.styles.ts +178 -0
  152. package/src/components/atoms/Table/Table.tsx +484 -0
  153. package/src/components/atoms/Table/Table.utils.tsx +19 -0
  154. package/src/components/atoms/Table/index.ts +1 -0
  155. package/src/components/atoms/Tabs/Tabs.tsx +15 -0
  156. package/src/components/atoms/Tabs/index.ts +1 -0
  157. package/src/components/atoms/Textarea/Textarea.styles.ts +64 -0
  158. package/src/components/atoms/Textarea/Textarea.tsx +15 -0
  159. package/src/components/atoms/Textarea/index.ts +1 -0
  160. package/src/components/atoms/Toast/Toast.styles.ts +35 -0
  161. package/src/components/atoms/Toast/Toast.tsx +85 -0
  162. package/src/components/atoms/Toast/Toast.utils.tsx +43 -0
  163. package/src/components/atoms/Toast/index.ts +1 -0
  164. package/src/components/atoms/Tooltip/Tooltip.styles.ts +33 -0
  165. package/src/components/atoms/Tooltip/Tooltip.tsx +32 -0
  166. package/src/components/atoms/Tooltip/index.ts +1 -0
  167. package/src/components/atoms/Typography/Display/Display.styles.ts +26 -0
  168. package/src/components/atoms/Typography/Display/Display.tsx +11 -0
  169. package/src/components/atoms/Typography/Display/index.ts +1 -0
  170. package/src/components/atoms/Typography/Link/Link.styles.ts +32 -0
  171. package/src/components/atoms/Typography/Link/Link.tsx +25 -0
  172. package/src/components/atoms/Typography/Link/index.ts +1 -0
  173. package/src/components/atoms/Typography/Paragraph/Paragraph.styles.ts +32 -0
  174. package/src/components/atoms/Typography/Paragraph/Paragraph.tsx +11 -0
  175. package/src/components/atoms/Typography/Paragraph/index.ts +1 -0
  176. package/src/components/atoms/Typography/Text/Text.styles.ts +39 -0
  177. package/src/components/atoms/Typography/Text/Text.tsx +25 -0
  178. package/src/components/atoms/Typography/Text/index.ts +1 -0
  179. package/src/components/atoms/Typography/Title/Title.styles.ts +28 -0
  180. package/src/components/atoms/Typography/Title/Title.tsx +15 -0
  181. package/src/components/atoms/Typography/Title/index.ts +1 -0
  182. package/src/components/atoms/Typography/Typography.tsx +21 -0
  183. package/src/components/atoms/Typography/index.ts +1 -0
  184. package/src/components/atoms/icons/AvanpostIcon.tsx +31 -0
  185. package/src/components/atoms/icons/CheckIcon.tsx +22 -0
  186. package/src/components/atoms/icons/EmptyIcon.tsx +56 -0
  187. package/src/components/atoms/icons/LogoIcon.tsx +141 -0
  188. package/src/components/atoms/icons/NumberTypeIcon.tsx +25 -0
  189. package/src/components/atoms/icons/SidebarCloseIcon.tsx +75 -0
  190. package/src/components/atoms/icons/index.ts +6 -0
  191. package/src/components/atoms/index.ts +31 -0
  192. package/src/components/molecules/DataTable/CreationModal/CreationModal.tsx +31 -0
  193. package/src/components/molecules/DataTable/CreationModal/index.ts +1 -0
  194. package/src/components/molecules/DataTable/DataTable.styles.ts +23 -0
  195. package/src/components/molecules/DataTable/DataTable.tsx +167 -0
  196. package/src/components/molecules/DataTable/Name/Name.tsx +20 -0
  197. package/src/components/molecules/DataTable/Name/index.ts +1 -0
  198. package/src/components/molecules/DataTable/Skeleton/Skeleton.tsx +27 -0
  199. package/src/components/molecules/DataTable/Skeleton/index.ts +6 -0
  200. package/src/components/molecules/DataTable/index.ts +8 -0
  201. package/src/components/molecules/Header/Button/Button.styles.ts +24 -0
  202. package/src/components/molecules/Header/Button/Button.tsx +20 -0
  203. package/src/components/molecules/Header/Button/index.ts +1 -0
  204. package/src/components/molecules/Header/Header.styles.ts +16 -0
  205. package/src/components/molecules/Header/Header.tsx +20 -0
  206. package/src/components/molecules/Header/Navigate/Navigate.tsx +40 -0
  207. package/src/components/molecules/Header/Navigate/index.ts +1 -0
  208. package/src/components/molecules/Header/SelectLang/SelectLang.tsx +47 -0
  209. package/src/components/molecules/Header/SelectLang/index.ts +2 -0
  210. package/src/components/molecules/Header/SelectTheme/SelectTheme.tsx +43 -0
  211. package/src/components/molecules/Header/SelectTheme/index.ts +1 -0
  212. package/src/components/molecules/Header/index.ts +2 -0
  213. package/src/components/molecules/ProjectIcon/ProjectIcon.styles.ts +23 -0
  214. package/src/components/molecules/ProjectIcon/ProjectIcon.tsx +37 -0
  215. package/src/components/molecules/ProjectIcon/index.ts +1 -0
  216. package/src/components/molecules/Sidebar/Item/Item.styles.ts +52 -0
  217. package/src/components/molecules/Sidebar/Item/Item.tsx +30 -0
  218. package/src/components/molecules/Sidebar/Item/index.ts +1 -0
  219. package/src/components/molecules/Sidebar/Sidebar.styles.ts +97 -0
  220. package/src/components/molecules/Sidebar/Sidebar.tsx +122 -0
  221. package/src/components/molecules/Sidebar/Sidebar.utils.tsx +36 -0
  222. package/src/components/molecules/Sidebar/Trigger/Trigger.tsx +23 -0
  223. package/src/components/molecules/Sidebar/Trigger/index.ts +1 -0
  224. package/src/components/molecules/Sidebar/index.ts +1 -0
  225. package/src/components/molecules/Widget/Content/Content.tsx +80 -0
  226. package/src/components/molecules/Widget/Content/index.ts +1 -0
  227. package/src/components/molecules/Widget/Toolbox/Toolbox.tsx +0 -0
  228. package/src/components/molecules/Widget/Toolbox/index.ts +0 -0
  229. package/src/components/molecules/Widget/Widget.tsx +26 -0
  230. package/src/components/molecules/Widget/Widget.utils.tsx +31 -0
  231. package/src/components/molecules/Widget/index.ts +2 -0
  232. package/src/components/molecules/index.ts +6 -0
  233. package/src/components/organisms/ComponentWidget/ComponentWidget.tsx +9 -0
  234. package/src/components/organisms/ComponentWidget/index.ts +2 -0
  235. package/src/components/organisms/DatasetsTable/Creation/Creation.tsx +105 -0
  236. package/src/components/organisms/DatasetsTable/Creation/Navigate/Navigate.tsx +59 -0
  237. package/src/components/organisms/DatasetsTable/Creation/Navigate/index.ts +1 -0
  238. package/src/components/organisms/DatasetsTable/Creation/Step/Step.styles.ts +12 -0
  239. package/src/components/organisms/DatasetsTable/Creation/Step/Step.tsx +43 -0
  240. package/src/components/organisms/DatasetsTable/Creation/Step/index.ts +1 -0
  241. package/src/components/organisms/DatasetsTable/Creation/Steps/Step1/Step1.styles.ts +41 -0
  242. package/src/components/organisms/DatasetsTable/Creation/Steps/Step1/Step1.tsx +67 -0
  243. package/src/components/organisms/DatasetsTable/Creation/Steps/Step1/index.ts +1 -0
  244. package/src/components/organisms/DatasetsTable/Creation/Steps/Step2/SelectSource/SelectSource.tsx +252 -0
  245. package/src/components/organisms/DatasetsTable/Creation/Steps/Step2/SelectSource/index.ts +1 -0
  246. package/src/components/organisms/DatasetsTable/Creation/Steps/Step2/Step2.tsx +11 -0
  247. package/src/components/organisms/DatasetsTable/Creation/Steps/Step2/UploadFile/UploadFile.tsx +112 -0
  248. package/src/components/organisms/DatasetsTable/Creation/Steps/Step2/UploadFile/index.ts +1 -0
  249. package/src/components/organisms/DatasetsTable/Creation/Steps/Step2/index.ts +1 -0
  250. package/src/components/organisms/DatasetsTable/Creation/Steps/Step3/Step3.tsx +145 -0
  251. package/src/components/organisms/DatasetsTable/Creation/Steps/Step3/index.ts +1 -0
  252. package/src/components/organisms/DatasetsTable/Creation/Steps/Step4/Step4.tsx +120 -0
  253. package/src/components/organisms/DatasetsTable/Creation/Steps/Step4/index.ts +1 -0
  254. package/src/components/organisms/DatasetsTable/Creation/Steps/index.ts +4 -0
  255. package/src/components/organisms/DatasetsTable/Creation/index.ts +1 -0
  256. package/src/components/organisms/DatasetsTable/DatasetsTable.tsx +81 -0
  257. package/src/components/organisms/DatasetsTable/DatasetsTable.utils.tsx +125 -0
  258. package/src/components/organisms/DatasetsTable/Source/Source.styles.ts +7 -0
  259. package/src/components/organisms/DatasetsTable/Source/Source.tsx +39 -0
  260. package/src/components/organisms/DatasetsTable/Source/Source.utils.tsx +45 -0
  261. package/src/components/organisms/DatasetsTable/Source/index.ts +1 -0
  262. package/src/components/organisms/DatasetsTable/Status/Status.styles.ts +25 -0
  263. package/src/components/organisms/DatasetsTable/Status/Status.tsx +29 -0
  264. package/src/components/organisms/DatasetsTable/Status/Status.utils.tsx +29 -0
  265. package/src/components/organisms/DatasetsTable/Status/index.ts +1 -0
  266. package/src/components/organisms/DatasetsTable/Type/Type.styles.ts +7 -0
  267. package/src/components/organisms/DatasetsTable/Type/Type.tsx +32 -0
  268. package/src/components/organisms/DatasetsTable/Type/Type.utils.tsx +14 -0
  269. package/src/components/organisms/DatasetsTable/Type/index.ts +1 -0
  270. package/src/components/organisms/DatasetsTable/index.ts +1 -0
  271. package/src/components/organisms/index.ts +3 -0
  272. package/src/components/templates/DefaultLayout/DefaultLayout.styles.ts +26 -0
  273. package/src/components/templates/DefaultLayout/DefaultLayout.tsx +41 -0
  274. package/src/components/templates/DefaultLayout/index.ts +1 -0
  275. package/src/components/templates/PageLayout/PageLayout.styles.ts +25 -0
  276. package/src/components/templates/PageLayout/PageLayout.tsx +28 -0
  277. package/src/components/templates/PageLayout/index.ts +1 -0
  278. package/src/components/templates/index.ts +3 -0
  279. package/src/config/i18n.config.ts +46 -0
  280. package/src/constants/index.ts +10 -0
  281. package/src/contexts/CreateComponentContext/CreateComponentContext.tsx +17 -0
  282. package/src/contexts/CreateComponentContext/index.ts +4 -0
  283. package/src/contexts/CreateDatasetContext/CreateDatasetContext.tsx +25 -0
  284. package/src/contexts/CreateDatasetContext/index.ts +4 -0
  285. package/src/contexts/ProjectContext/ProjectContext.tsx +32 -0
  286. package/src/contexts/ProjectContext/index.ts +1 -0
  287. package/src/contexts/SidebarContext/SidebarContext.tsx +10 -0
  288. package/src/contexts/SidebarContext/index.ts +1 -0
  289. package/src/contexts/index.ts +10 -0
  290. package/src/hooks/index.ts +9 -0
  291. package/src/hooks/useCreateComponent.ts +15 -0
  292. package/src/hooks/useCreateDataset.ts +15 -0
  293. package/src/hooks/useDebounce.ts +17 -0
  294. package/src/hooks/useDebounced.ts +31 -0
  295. package/src/hooks/useIsMobile.ts +27 -0
  296. package/src/hooks/useSidebar.ts +15 -0
  297. package/src/hooks/useStickyHeader.ts +35 -0
  298. package/src/hooks/useWindowSize.ts +27 -0
  299. package/src/providers/CreateComponentProvider/CreateComponentProvider.tsx +53 -0
  300. package/src/providers/CreateComponentProvider/index.ts +1 -0
  301. package/src/providers/CreateDatasetProvider/CreateDatasetProvider.tsx +73 -0
  302. package/src/providers/CreateDatasetProvider/index.ts +1 -0
  303. package/src/providers/LangProvider/LangProvider.tsx +15 -0
  304. package/src/providers/LangProvider/index.ts +1 -0
  305. package/src/providers/ProjectProvider/ProjectProvider.tsx +110 -0
  306. package/src/providers/ProjectProvider/index.ts +1 -0
  307. package/src/providers/SidebarProvider/SidebarProvider.tsx +51 -0
  308. package/src/providers/SidebarProvider/index.ts +1 -0
  309. package/src/providers/ThemeProvider/ThemeProvider.tsx +20 -0
  310. package/src/providers/ThemeProvider/index.ts +1 -0
  311. package/src/providers/index.ts +6 -0
  312. package/src/store/index.ts +2 -0
  313. package/src/store/sidebar/sidebar.store.ts +17 -0
  314. package/src/store/sidebar/sidebar.type.ts +4 -0
  315. package/src/styles/globals.css +202 -0
  316. package/src/types/component.type.ts +13 -0
  317. package/src/types/dataset.type.ts +25 -0
  318. package/src/types/file.type.ts +13 -0
  319. package/src/types/general.type.ts +86 -0
  320. package/src/types/index.ts +9 -0
  321. package/src/types/layer.type.ts +7 -0
  322. package/src/types/project.type.ts +15 -0
  323. package/src/types/user.type.ts +6 -0
  324. package/src/types/widget.type.ts +12 -0
  325. package/src/utils/bm.util.ts +150 -0
  326. package/src/utils/bytes.util.ts +110 -0
  327. package/src/utils/date.util.ts +49 -0
  328. package/src/utils/dynamicMessage.util.ts +9 -0
  329. package/src/utils/getInitials.util.ts +10 -0
  330. package/src/utils/hideEmail.util.ts +14 -0
  331. package/src/utils/index.ts +12 -0
  332. package/src/utils/pagination.util.ts +144 -0
  333. package/src/utils/twJoin.util.ts +49 -0
  334. package/src/utils/twMerge.util.ts +6 -0
  335. package/src/utils/upload.util.ts +26 -0
  336. package/src/utils/url.util.ts +29 -0
  337. package/tsconfig.json +40 -6
  338. package/bmdl-sdk-1.5.9.tgz +0 -0
  339. package/index.html +0 -12
  340. package/src/App.tsx +0 -187
  341. package/src/main.tsx +0 -15
@@ -0,0 +1,86 @@
1
+ export interface IWindowSize {
2
+ width?: number
3
+ height?: number
4
+ }
5
+
6
+ /////
7
+
8
+ export interface IColumnItem {
9
+ key: string
10
+ title: string
11
+ sort?: string
12
+ }
13
+
14
+ /////
15
+
16
+ export type SortType = 'asc' | 'desc' | false
17
+
18
+ export interface ISortItem {
19
+ column: string
20
+ order: SortType
21
+ }
22
+
23
+ /////
24
+
25
+ export interface IDataQuery {
26
+ q?: string
27
+ sort?: string
28
+ filter?: string
29
+ page?: string
30
+ limit?: string
31
+ }
32
+
33
+ export interface IGetDataOptions {
34
+ q?: string
35
+ sort?: ISortItem[]
36
+ filter?: Record<string, any>
37
+ page?: number
38
+ limit?: number
39
+ }
40
+
41
+ /////
42
+
43
+ export interface IPaginationOptions {
44
+ page: number
45
+ limit: number
46
+ pages: number
47
+ total: number
48
+ }
49
+
50
+ export interface IPagination extends IPaginationOptions {
51
+ hasPrevPage: boolean
52
+ hasNextPage: boolean
53
+ pageNumbers: (number | 'ellipsis')[]
54
+ }
55
+
56
+ /////
57
+
58
+ export interface IFilterQuery {
59
+ querykey: string
60
+ queryFn: (params: any) => any
61
+ }
62
+
63
+ /////
64
+
65
+ export type TranslateFn = (
66
+ key: string,
67
+ values?: Record<string, string | number | Date>
68
+ ) => string
69
+
70
+ /////
71
+
72
+ export enum AccessType {
73
+ VIEW = 'view',
74
+ EDIT = 'edit',
75
+ ALL = 'all'
76
+ }
77
+
78
+ interface IGuardItem {
79
+ id: number
80
+ type: AccessType
81
+ }
82
+
83
+ export interface IGuard {
84
+ users: IGuardItem[]
85
+ groups: IGuardItem[]
86
+ }
@@ -0,0 +1,9 @@
1
+ export * from './general.type'
2
+ //
3
+ export type { ComponentsTableDataItem } from './component.type'
4
+ export type { DatasetsTableDataItem, DatasetType } from './dataset.type'
5
+ export type { IDatasetFileInfo, IFileInfo } from './file.type'
6
+ export type { BreakpointType, GridSizeType, LayoutsType } from './layer.type'
7
+ export type { ProjectData, ProjectsTableDataItem } from './project.type'
8
+ export type { UsersTableDataItem } from './user.type'
9
+ export type { WidgetsTableDataItem } from './widget.type'
@@ -0,0 +1,7 @@
1
+ import { Layout } from 'react-grid-layout'
2
+
3
+ export type BreakpointType = 'lg' | 'md' | 'sm' | 'xs' | 'xxs'
4
+
5
+ export type LayoutsType = Partial<Record<BreakpointType, Layout>>
6
+
7
+ export type GridSizeType = BreakpointType | 'full'
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react'
2
+
3
+ import { ProjectModel, ThemeModel } from '@/graphql'
4
+
5
+ export type ProjectData = Pick<
6
+ ProjectModel,
7
+ 'id' | 'name' | 'previewPath' | 'icon' | 'layers'
8
+ > & {
9
+ theme: Pick<ThemeModel, 'options'>
10
+ }
11
+
12
+ export type ProjectsTableDataItem = Record<
13
+ 'icon' | 'name' | 'description' | 'author' | 'createdAt' | 'editedAt',
14
+ ReactNode
15
+ >
@@ -0,0 +1,6 @@
1
+ import { ReactNode } from 'react'
2
+
3
+ export type UsersTableDataItem = Record<
4
+ 'profile' | 'username' | 'email' | 'createdAt' | 'editedAt',
5
+ ReactNode
6
+ >
@@ -0,0 +1,12 @@
1
+ import { ReactNode } from 'react'
2
+
3
+ export type WidgetsTableDataItem = Record<
4
+ | 'icon'
5
+ | 'name'
6
+ | 'description'
7
+ | 'connects'
8
+ | 'author'
9
+ | 'createdAt'
10
+ | 'editedAt',
11
+ ReactNode
12
+ >
@@ -0,0 +1,150 @@
1
+ export const _ = {
2
+ /**
3
+ * Проверяет является ли значение булевым
4
+ * @param {unknown} value
5
+ * @returns {boolean}
6
+ */
7
+ isBoolean(value: unknown): value is boolean {
8
+ return typeof value === 'boolean'
9
+ },
10
+ /**
11
+ * Проверяет является ли значение null
12
+ * @param {unknown} value
13
+ * @returns {boolean}
14
+ */
15
+ isNull(value: unknown): value is null {
16
+ return value === null
17
+ },
18
+ /**
19
+ * Проверяет является ли значение undefined
20
+ * @param {unknown} value
21
+ * @returns {boolean}
22
+ */
23
+ isUndefined(value: unknown): value is undefined {
24
+ return value === undefined
25
+ },
26
+ /**
27
+ * Проверяет является ли значение строкой
28
+ * @param {unknown} value
29
+ * @returns {boolean}
30
+ */
31
+ isString(value: unknown): value is string {
32
+ return typeof value === 'string'
33
+ },
34
+ /**
35
+ * Проверяет является ли значение числом
36
+ * @param {unknown} value
37
+ * @returns {boolean}
38
+ */
39
+ isNumber(value: unknown): value is number {
40
+ return typeof value === 'number'
41
+ },
42
+ /**
43
+ * Проверяет является ли значение датой
44
+ * @param {unknown} value
45
+ * @returns {boolean}
46
+ */
47
+ isDate(value: unknown): value is Date {
48
+ return value instanceof Date
49
+ },
50
+ /**
51
+ * Проверяет является ли значение массивом
52
+ * @param {unknown} value
53
+ * @returns {boolean}
54
+ */
55
+ isArray(value: unknown): value is Array<unknown> {
56
+ return Array.isArray(value)
57
+ },
58
+ /**
59
+ * Проверяет является ли значение объектом
60
+ * @param {unknown} value
61
+ * @returns {boolean}
62
+ */
63
+ isObject(value: unknown): value is Record<string, unknown> {
64
+ return (
65
+ typeof value === 'object' &&
66
+ !this.isNull(value) &&
67
+ !this.isArray(value) &&
68
+ !this.isDate(value) &&
69
+ !(value instanceof RegExp) &&
70
+ !(value instanceof Map) &&
71
+ !(value instanceof Set)
72
+ )
73
+ },
74
+ //////////////////////////////
75
+ /**
76
+ * Проверка на пустое значение (null, undefined, '', [], {})
77
+ * @param {unknown} value
78
+ * @returns {boolean}
79
+ */
80
+ isEmpty(value: unknown) {
81
+ if (this.isNull(value) || this.isUndefined(value)) return true
82
+ if (this.isString(value) || this.isArray(value)) {
83
+ return value.length === 0
84
+ }
85
+ if (this.isObject(value)) {
86
+ return Object.keys(value).length === 0
87
+ }
88
+ return false
89
+ },
90
+ //////////////////////////////
91
+ /**
92
+ * Приведение значения к булевому значению
93
+ * @param {unknown} value
94
+ * @returns {boolean}
95
+ */
96
+ toBoolean(value: unknown): boolean {
97
+ if (this.isString(value)) {
98
+ const lowerValue = value.trim().toLowerCase()
99
+ if (lowerValue === 'true') {
100
+ return true
101
+ }
102
+ if (lowerValue === 'false') {
103
+ return false
104
+ }
105
+ }
106
+
107
+ return Boolean(value)
108
+ },
109
+ /**
110
+ * Приведение значения к числу
111
+ * @param {unknown} value
112
+ * @returns {number}
113
+ */
114
+ toNumber(value: unknown): number {
115
+ if (this.isString(value)) {
116
+ const trimmedValue = value.trim()
117
+
118
+ if (trimmedValue === '') {
119
+ return 0
120
+ }
121
+
122
+ const num = Number(trimmedValue)
123
+
124
+ if (!isNaN(num) && isFinite(num)) {
125
+ return num
126
+ }
127
+
128
+ const lowerValue = trimmedValue.toLowerCase()
129
+ if (lowerValue === 'true') {
130
+ return 1
131
+ }
132
+ if (lowerValue === 'false') {
133
+ return 0
134
+ }
135
+
136
+ return 0
137
+ }
138
+
139
+ if (this.isNull(value) || this.isUndefined(value) || value === false) {
140
+ return 0
141
+ }
142
+
143
+ if (value === true) {
144
+ return 1
145
+ }
146
+
147
+ const num = Number(value)
148
+ return isNaN(num) || !isFinite(num) ? 0 : num
149
+ }
150
+ }
@@ -0,0 +1,110 @@
1
+ const b = 1
2
+ const kb = b * 1024
3
+ const mb = kb * 1024
4
+ const gb = mb * 1024
5
+ const tb = gb * 1024
6
+ const pb = tb * 1024
7
+
8
+ type SizeUnit =
9
+ | 'Bytes'
10
+ | 'Byte'
11
+ | 'B'
12
+ | 'Kilobytes'
13
+ | 'Kilobyte'
14
+ | 'Kb'
15
+ | 'KB'
16
+ | 'K'
17
+ | 'Megabytes'
18
+ | 'Megabyte'
19
+ | 'Mb'
20
+ | 'MB'
21
+ | 'M'
22
+ | 'Gigabytes'
23
+ | 'Gigabyte'
24
+ | 'Gb'
25
+ | 'GB'
26
+ | 'G'
27
+ | 'Terabytes'
28
+ | 'Terabyte'
29
+ | 'Tb'
30
+ | 'TB'
31
+ | 'T'
32
+ | 'Petabytes'
33
+ | 'Petabyte'
34
+ | 'Pb'
35
+ | 'PB'
36
+ | 'P'
37
+
38
+ type SizeUnitAnyCase = SizeUnit | Uppercase<SizeUnit> | Lowercase<SizeUnit>
39
+
40
+ export type SizeStringValue =
41
+ | `${number}`
42
+ | `${number}${SizeUnitAnyCase}`
43
+ | `${number} ${SizeUnitAnyCase}`
44
+
45
+ /**
46
+ * Парсит строку с размером файла и возвращает размер в байтах
47
+ * @param str - строка с размером, например '2GB', '1.5 MB', '512kb', '1024'
48
+ * @returns размер в байтах
49
+ *
50
+ * @example
51
+ * bytes('2GB') // вернет 2147483648
52
+ * bytes('1.5 MB') // вернет 1572864
53
+ * bytes('512kb') // вернет 524288
54
+ * bytes('1024') // вернет 1024 (байты по умолчанию)
55
+ */
56
+ export const bytes = (str: SizeStringValue): number => {
57
+ if (typeof str !== 'string' || str.length === 0 || str.length > 100) {
58
+ throw new Error(
59
+ 'Value provided to bytes() must be a string with length between 1 and 99.'
60
+ )
61
+ }
62
+
63
+ const match =
64
+ /^(?<value>-?(?:\d+)?\.?\d+) *(?<type>bytes?|b|kilobytes?|kb|k|megabytes?|mb|m|gigabytes?|gb|g|terabytes?|tb|t|petabytes?|pb|p)?$/i.exec(
65
+ str
66
+ )
67
+
68
+ const groups = match?.groups as { value: string; type?: string } | undefined
69
+ if (!groups) {
70
+ return NaN
71
+ }
72
+ const n = parseFloat(groups.value)
73
+ const type = (groups.type || 'b').toLowerCase() as Lowercase<SizeUnit>
74
+
75
+ switch (type) {
76
+ case 'petabytes':
77
+ case 'petabyte':
78
+ case 'pb':
79
+ case 'p':
80
+ return n * pb
81
+ case 'terabytes':
82
+ case 'terabyte':
83
+ case 'tb':
84
+ case 't':
85
+ return n * tb
86
+ case 'gigabytes':
87
+ case 'gigabyte':
88
+ case 'gb':
89
+ case 'g':
90
+ return n * gb
91
+ case 'megabytes':
92
+ case 'megabyte':
93
+ case 'mb':
94
+ case 'm':
95
+ return n * mb
96
+ case 'kilobytes':
97
+ case 'kilobyte':
98
+ case 'kb':
99
+ case 'k':
100
+ return n * kb
101
+ case 'bytes':
102
+ case 'byte':
103
+ case 'b':
104
+ return n
105
+ default:
106
+ throw new Error(
107
+ `Error: size unit ${type} was recognized but does not have a corresponding case. Please check the input.`
108
+ )
109
+ }
110
+ }
@@ -0,0 +1,49 @@
1
+ import dayjs from 'dayjs'
2
+ import 'dayjs/locale/ru'
3
+ import relativeTime from 'dayjs/plugin/relativeTime'
4
+ import updateLocale from 'dayjs/plugin/updateLocale'
5
+
6
+ dayjs.extend(relativeTime)
7
+ dayjs.extend(updateLocale)
8
+
9
+ dayjs.locale('ru')
10
+
11
+ dayjs.updateLocale('ru', {
12
+ relativeTime: {
13
+ past: '%s назад',
14
+ s: 'несколько секунд',
15
+ m: '1 минута',
16
+ mm: '%d минут',
17
+ h: '1 час',
18
+ hh: '%d часов',
19
+ d: '1 день',
20
+ dd: '%d дней'
21
+ }
22
+ })
23
+
24
+ export function isWeekPassed(fromDate: string | number | Date): boolean {
25
+ const startDate = dayjs(fromDate)
26
+ const dateAfter7Days = startDate.add(7, 'day')
27
+ return dayjs().isAfter(dateAfter7Days)
28
+ }
29
+
30
+ export function fromNow(fromDate: string | number | Date): string {
31
+ return dayjs(fromDate).fromNow()
32
+ }
33
+
34
+ export function getFormatDate(
35
+ date: string | number | Date,
36
+ locale: string
37
+ ): string {
38
+ const getDateFormat = (locale: string) => {
39
+ switch (locale) {
40
+ case 'en':
41
+ return 'MM/DD/YYYY, hh:mm A'
42
+ case 'ru':
43
+ default:
44
+ return 'DD.MM.YYYY, HH:mm'
45
+ }
46
+ }
47
+
48
+ return dayjs(date).format(getDateFormat(locale))
49
+ }
@@ -0,0 +1,9 @@
1
+ import { TranslateFn } from '@/types'
2
+
3
+ export function dynamicMessage(message: string, te: TranslateFn): string {
4
+ const isDynamicText = message.includes('|')
5
+ const [text, variable] = message.split('|')
6
+ const [key, value] = (variable || '').split('=')
7
+
8
+ return isDynamicText ? te(text, { [key]: value }) : te(message)
9
+ }
@@ -0,0 +1,10 @@
1
+ export function getInitials(fio: string): string {
2
+ return fio
3
+ .split(' ')
4
+ .map((item, index) => {
5
+ if (index > 1) return ''
6
+ //
7
+ return item[0]
8
+ })
9
+ .join('')
10
+ }
@@ -0,0 +1,14 @@
1
+ export function hideEmail(value?: string): string {
2
+ const email = value?.includes('@') ? value : ''
3
+
4
+ if (!email) return '*****@*****'
5
+
6
+ return email
7
+ .split('@')
8
+ .map((item, index) => {
9
+ if (index) return item
10
+ //
11
+ return item[0] + '*****'
12
+ })
13
+ .join('@')
14
+ }
@@ -0,0 +1,12 @@
1
+ export { _ } from './bm.util'
2
+ export { bytes, type SizeStringValue } from './bytes.util'
3
+ export { fromNow, getFormatDate, isWeekPassed } from './date.util'
4
+ export { dynamicMessage } from './dynamicMessage.util'
5
+ export { getInitials } from './getInitials.util'
6
+ export { hideEmail } from './hideEmail.util'
7
+ export { getPaginationData, getRangePagination } from './pagination.util'
8
+ export { twJoin } from './twJoin.util'
9
+ export { twMerge } from './twMerge.util'
10
+ export { formatFileSize, getAcceptedTypesText } from './upload.util'
11
+ export { addParam, getParam, getParams, removeParam } from './url.util'
12
+
@@ -0,0 +1,144 @@
1
+ import { IPagination, IPaginationOptions } from '@/types'
2
+
3
+ export function getPaginationData(pagination: IPaginationOptions): IPagination {
4
+ const { limit, page, pages, total } = pagination
5
+
6
+ const hasPrevPage = page > 0
7
+ const hasNextPage = page < pages - 1
8
+
9
+ const pageNumbers = generatePageNumbers(page, pages)
10
+
11
+ return {
12
+ limit,
13
+ page,
14
+ pages,
15
+ total,
16
+ hasPrevPage,
17
+ hasNextPage,
18
+ pageNumbers
19
+ }
20
+ }
21
+
22
+ ////////////
23
+
24
+ function generatePageNumbers(
25
+ currentPage: number,
26
+ totalPages: number
27
+ ): (number | 'ellipsis')[] {
28
+ if (totalPages <= 7) {
29
+ return Array.from({ length: totalPages }, (_, i) => i + 1)
30
+ }
31
+
32
+ const result: (number | 'ellipsis')[] = []
33
+
34
+ result.push(1)
35
+
36
+ if (totalPages === 8) {
37
+ if (currentPage < 4) {
38
+ result.push(2, 3, 4, 5)
39
+ result.push('ellipsis')
40
+ result.push(8)
41
+ } else {
42
+ result.push('ellipsis')
43
+ result.push(4, 5, 6, 7, 8)
44
+ }
45
+ return result
46
+ }
47
+
48
+ if (totalPages === 9) {
49
+ if (currentPage <= 4) {
50
+ result.push(2, 3, 4, 5)
51
+ result.push('ellipsis')
52
+ result.push(9)
53
+ } else if (currentPage === 5) {
54
+ result.push('ellipsis', 3, 4, 5, 6, 7, 'ellipsis', 9)
55
+ } else {
56
+ result.push('ellipsis')
57
+ result.push(5, 6, 7, 8, 9)
58
+ }
59
+ return result
60
+ }
61
+
62
+ if (totalPages === 10) {
63
+ if (currentPage <= 4) {
64
+ result.push(2, 3, 4, 5)
65
+ result.push('ellipsis')
66
+ result.push(10)
67
+ } else if (currentPage === 5) {
68
+ result.push('ellipsis', 3, 4, 5, 6, 7, 'ellipsis', 10)
69
+ } else if (currentPage === 6) {
70
+ result.push('ellipsis', 4, 5, 6, 7, 8, 'ellipsis', 10)
71
+ } else {
72
+ result.push('ellipsis')
73
+ result.push(6, 7, 8, 9, 10)
74
+ }
75
+ return result
76
+ }
77
+
78
+ if (totalPages === 11) {
79
+ if (currentPage <= 4) {
80
+ result.push(2, 3, 4, 5)
81
+ result.push('ellipsis')
82
+ result.push(11)
83
+ } else if (currentPage >= 5 && currentPage <= 7) {
84
+ result.push('ellipsis')
85
+ result.push(
86
+ currentPage - 2,
87
+ currentPage - 1,
88
+ currentPage,
89
+ currentPage + 1,
90
+ currentPage + 2
91
+ )
92
+ result.push('ellipsis')
93
+ result.push(11)
94
+ } else {
95
+ result.push('ellipsis')
96
+ result.push(7, 8, 9, 10, 11)
97
+ }
98
+ return result
99
+ }
100
+
101
+ if (currentPage <= 4) {
102
+ result.push(2, 3, 4, 5)
103
+ result.push('ellipsis')
104
+ result.push(totalPages)
105
+ } else if (currentPage >= totalPages - 3) {
106
+ result.push('ellipsis')
107
+ result.push(
108
+ totalPages - 4,
109
+ totalPages - 3,
110
+ totalPages - 2,
111
+ totalPages - 1,
112
+ totalPages
113
+ )
114
+ } else {
115
+ result.push('ellipsis')
116
+ result.push(
117
+ currentPage - 2,
118
+ currentPage - 1,
119
+ currentPage,
120
+ currentPage + 1,
121
+ currentPage + 2
122
+ )
123
+ result.push('ellipsis')
124
+ result.push(totalPages)
125
+ }
126
+
127
+ return result
128
+ }
129
+
130
+ ////////////
131
+
132
+ export function getRangePagination(
133
+ pagination: IPaginationOptions
134
+ ): Record<string, number> {
135
+ const { page, limit, total } = pagination
136
+ //
137
+ const startIndex = page * limit
138
+ const endIndex = Math.min((page + 1) * limit, total)
139
+ //
140
+ return {
141
+ from: startIndex + 1,
142
+ to: endIndex
143
+ }
144
+ }
@@ -0,0 +1,49 @@
1
+ import { _ } from './bm.util'
2
+
3
+ interface IBaseStyles {
4
+ mouse?: string | string[]
5
+ position?: string | string[]
6
+ display?: string | string[]
7
+ text?: string | string[]
8
+ visual?: string | string[]
9
+ transform?: string | string[]
10
+ animation?: string | string[]
11
+ }
12
+
13
+ interface IExtraStyles {
14
+ hover?: string | string[] | (IBaseStyles & IExtraStyles)
15
+ focus?: string | string[] | (IBaseStyles & IExtraStyles)
16
+ active?: string | string[] | (IBaseStyles & IExtraStyles)
17
+ disabled?: string | string[] | (IBaseStyles & IExtraStyles)
18
+ placeholder?: string | string[] | (IBaseStyles & IExtraStyles)
19
+ attrs?: string | string[] | (IBaseStyles & IExtraStyles)
20
+ childs?: string | string[] | (IBaseStyles & IExtraStyles)
21
+ adaptive?: string | string[] | (IBaseStyles & IExtraStyles)
22
+ dark?: string | string[] | (IBaseStyles & IExtraStyles)
23
+ after?: string | string[] | (IBaseStyles & IExtraStyles)
24
+ }
25
+
26
+ interface ITwJoin extends IBaseStyles, IExtraStyles {
27
+ tw?: string | string[]
28
+ vars?: string | string[]
29
+ }
30
+
31
+ const stylesFlat = (styles: ITwJoin): string[] => {
32
+ if (_.isObject(styles)) {
33
+ return (Object.values(styles) as ITwJoin[]).flatMap(stylesFlat)
34
+ }
35
+ //
36
+ if (_.isArray(styles)) {
37
+ return styles as string[]
38
+ }
39
+ //
40
+ if (_.isString(styles)) {
41
+ return [styles]
42
+ }
43
+ //
44
+ return []
45
+ }
46
+
47
+ export function twJoin(styles: ITwJoin): string {
48
+ return Object.values(styles).flatMap(stylesFlat).filter(Boolean).join(' ')
49
+ }
@@ -0,0 +1,6 @@
1
+ import { type ClassValue, clsx } from 'clsx'
2
+ import { twMerge as merge } from 'tailwind-merge'
3
+
4
+ export function twMerge(...inputs: ClassValue[]) {
5
+ return merge(clsx(inputs))
6
+ }