@alfalab/core-components-tabs 7.7.1 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/{cssm/Component-3e68f8db.d.ts → Component-4cd3936b.d.ts} +5 -4
  2. package/Component-5e1b8383.d.ts +99 -3
  3. package/Component-63dec22f.d.ts +167 -0
  4. package/Component-8b2c2707.d.ts +14 -0
  5. package/Component-9211a437.d.ts +38 -0
  6. package/Component-e81c389f.d.ts +5 -0
  7. package/Component.desktop-2e2b2125.d.ts +6 -0
  8. package/Component.desktop-785df74d.d.ts +6 -0
  9. package/Component.mobile-755fbaa3.d.ts +6 -0
  10. package/Component.mobile-d7e9f69d.d.ts +6 -0
  11. package/Component.mobile-ebda875c.d.ts +6 -0
  12. package/Component.responsive-785df74d.d.ts +26 -0
  13. package/collapsible.d.ts +7 -0
  14. package/collapsible.js +40 -0
  15. package/components/primary-tablist/Component.collapsible.d.ts +5 -0
  16. package/components/primary-tablist/Component.collapsible.desktop.d.ts +5 -0
  17. package/components/primary-tablist/Component.collapsible.desktop.js +32 -0
  18. package/components/primary-tablist/Component.collapsible.js +81 -0
  19. package/components/primary-tablist/Component.collapsible.mobile.d.ts +6 -0
  20. package/components/primary-tablist/Component.collapsible.mobile.js +35 -0
  21. package/components/primary-tablist/Component.collapsible.responsive.d.ts +5 -0
  22. package/components/primary-tablist/Component.collapsible.responsive.js +36 -0
  23. package/components/primary-tablist/Component.d.ts +2 -1
  24. package/components/primary-tablist/Component.desktop.d.ts +2 -1
  25. package/components/primary-tablist/Component.desktop.js +2 -8
  26. package/components/primary-tablist/Component.js +8 -40
  27. package/components/primary-tablist/Component.mobile.d.ts +3 -2
  28. package/components/primary-tablist/Component.mobile.js +4 -12
  29. package/components/primary-tablist/Component.responsive.d.ts +2 -1
  30. package/components/primary-tablist/Component.responsive.js +7 -14
  31. package/components/primary-tablist/index.css +29 -29
  32. package/components/primary-tablist/mobile.css +40 -32
  33. package/components/scrollable-container/Component.d.ts +3 -2
  34. package/components/scrollable-container/Component.js +1 -1
  35. package/components/scrollable-container/index.css +5 -5
  36. package/components/secondary-tablist/Component.d.ts +2 -1
  37. package/components/secondary-tablist/Component.desktop.d.ts +3 -2
  38. package/components/secondary-tablist/Component.desktop.js +4 -3
  39. package/components/secondary-tablist/Component.js +5 -3
  40. package/components/secondary-tablist/Component.mobile.d.ts +2 -1
  41. package/components/secondary-tablist/Component.mobile.js +5 -4
  42. package/components/secondary-tablist/Component.responsive.d.ts +2 -1
  43. package/components/secondary-tablist/Component.responsive.js +8 -9
  44. package/components/secondary-tablist/index.css +11 -11
  45. package/components/secondary-tablist/mobile.css +21 -13
  46. package/components/tab/Component.d.ts +2 -1
  47. package/components/tab/Component.js +1 -1
  48. package/components/tab/index.css +3 -3
  49. package/components/tabs/Component.collabsible.desktop.d.ts +6 -0
  50. package/components/tabs/Component.collabsible.desktop.js +34 -0
  51. package/components/tabs/Component.collapsible.mobile.d.ts +6 -0
  52. package/components/tabs/Component.collapsible.mobile.js +35 -0
  53. package/components/tabs/Component.collapsible.responsive.d.ts +6 -0
  54. package/components/tabs/Component.collapsible.responsive.js +37 -0
  55. package/components/tabs/Component.d.ts +2 -1
  56. package/components/tabs/Component.desktop.d.ts +3 -2
  57. package/components/tabs/Component.desktop.js +4 -10
  58. package/components/tabs/Component.js +2 -2
  59. package/components/tabs/Component.mobile.d.ts +3 -2
  60. package/components/tabs/Component.mobile.js +5 -10
  61. package/components/tabs/Component.responsive.d.ts +3 -2
  62. package/components/tabs/Component.responsive.js +7 -10
  63. package/{esm/Component-3e68f8db.d.ts → cssm/Component-4cd3936b.d.ts} +5 -4
  64. package/cssm/Component-5e1b8383.d.ts +99 -3
  65. package/cssm/Component-63dec22f.d.ts +167 -0
  66. package/cssm/Component-8b2c2707.d.ts +14 -0
  67. package/cssm/Component-9211a437.d.ts +38 -0
  68. package/cssm/Component-e81c389f.d.ts +5 -0
  69. package/cssm/Component.desktop-2e2b2125.d.ts +6 -0
  70. package/cssm/Component.desktop-785df74d.d.ts +6 -0
  71. package/cssm/Component.mobile-755fbaa3.d.ts +6 -0
  72. package/cssm/Component.mobile-d7e9f69d.d.ts +6 -0
  73. package/cssm/Component.mobile-ebda875c.d.ts +6 -0
  74. package/cssm/Component.responsive-785df74d.d.ts +26 -0
  75. package/cssm/collapsible.d.ts +7 -0
  76. package/cssm/collapsible.js +41 -0
  77. package/cssm/components/primary-tablist/Component.collapsible.d.ts +5 -0
  78. package/cssm/components/primary-tablist/Component.collapsible.desktop.d.ts +5 -0
  79. package/cssm/components/primary-tablist/Component.collapsible.desktop.js +33 -0
  80. package/cssm/components/primary-tablist/Component.collapsible.js +81 -0
  81. package/cssm/components/primary-tablist/Component.collapsible.mobile.d.ts +6 -0
  82. package/cssm/components/primary-tablist/Component.collapsible.mobile.js +37 -0
  83. package/cssm/components/primary-tablist/Component.collapsible.responsive.d.ts +5 -0
  84. package/cssm/components/primary-tablist/Component.collapsible.responsive.js +36 -0
  85. package/cssm/components/primary-tablist/Component.d.ts +2 -1
  86. package/cssm/components/primary-tablist/Component.desktop.d.ts +2 -1
  87. package/cssm/components/primary-tablist/Component.desktop.js +1 -7
  88. package/cssm/components/primary-tablist/Component.js +8 -40
  89. package/cssm/components/primary-tablist/Component.mobile.d.ts +3 -2
  90. package/cssm/components/primary-tablist/Component.mobile.js +1 -7
  91. package/cssm/components/primary-tablist/Component.responsive.d.ts +2 -1
  92. package/cssm/components/primary-tablist/Component.responsive.js +5 -13
  93. package/cssm/components/scrollable-container/Component.d.ts +3 -2
  94. package/cssm/components/secondary-tablist/Component.d.ts +2 -1
  95. package/cssm/components/secondary-tablist/Component.desktop.d.ts +3 -2
  96. package/cssm/components/secondary-tablist/Component.desktop.js +3 -2
  97. package/cssm/components/secondary-tablist/Component.js +5 -3
  98. package/cssm/components/secondary-tablist/Component.mobile.d.ts +2 -1
  99. package/cssm/components/secondary-tablist/Component.mobile.js +3 -2
  100. package/cssm/components/secondary-tablist/Component.responsive.d.ts +2 -1
  101. package/cssm/components/secondary-tablist/Component.responsive.js +7 -8
  102. package/cssm/components/tab/Component.d.ts +2 -1
  103. package/cssm/components/tabs/Component.collabsible.desktop.d.ts +6 -0
  104. package/cssm/components/tabs/Component.collabsible.desktop.js +34 -0
  105. package/cssm/components/tabs/Component.collapsible.mobile.d.ts +6 -0
  106. package/cssm/components/tabs/Component.collapsible.mobile.js +35 -0
  107. package/cssm/components/tabs/Component.collapsible.responsive.d.ts +6 -0
  108. package/cssm/components/tabs/Component.collapsible.responsive.js +37 -0
  109. package/cssm/components/tabs/Component.d.ts +2 -1
  110. package/cssm/components/tabs/Component.desktop.d.ts +3 -2
  111. package/cssm/components/tabs/Component.desktop.js +2 -8
  112. package/cssm/components/tabs/Component.js +2 -2
  113. package/cssm/components/tabs/Component.mobile.d.ts +3 -2
  114. package/cssm/components/tabs/Component.mobile.js +2 -8
  115. package/cssm/components/tabs/Component.responsive.d.ts +3 -2
  116. package/cssm/components/tabs/Component.responsive.js +4 -8
  117. package/cssm/desktop-2e2b2125.d.ts +2 -0
  118. package/cssm/desktop.d.ts +0 -4
  119. package/cssm/desktop.js +6 -15
  120. package/cssm/{hook-3e68f8db.d.ts → hook-9ea9e32c.d.ts} +10 -8
  121. package/cssm/hooks/use-tablist-titles.d.ts +2 -1
  122. package/cssm/hooks/use-tablist-titles.js +7 -5
  123. package/cssm/hooks/use-tabs.d.ts +1 -0
  124. package/cssm/hooks/use-tabs.js +3 -6
  125. package/cssm/index-8b2c2707.d.ts +6 -0
  126. package/cssm/index-c44170fe.d.ts +23 -0
  127. package/cssm/index-e81c389f.d.ts +142 -3
  128. package/cssm/index-ebda875c.d.ts +86 -18
  129. package/cssm/index-f12ee135.d.ts +307 -3
  130. package/cssm/index.d.ts +1 -4
  131. package/cssm/index.js +9 -15
  132. package/cssm/mobile-755fbaa3.d.ts +2 -0
  133. package/cssm/mobile-96988a65.d.ts +2 -0
  134. package/cssm/mobile.d.ts +0 -3
  135. package/cssm/mobile.js +6 -14
  136. package/{esm/index-3e68f8db.d.ts → cssm/shared-4cd3936b.d.ts} +50 -16
  137. package/cssm/shared.d.ts +4 -0
  138. package/cssm/shared.js +21 -0
  139. package/cssm/types-4480ac4f.d.ts +3 -0
  140. package/cssm/typings-5e1b8383.d.ts +2 -1
  141. package/cssm/typings-9211a437.d.ts +95 -0
  142. package/cssm/typings.d.ts +11 -10
  143. package/desktop-2e2b2125.d.ts +2 -0
  144. package/desktop.d.ts +0 -4
  145. package/desktop.js +7 -16
  146. package/{Component-3e68f8db.d.ts → esm/Component-4cd3936b.d.ts} +5 -4
  147. package/esm/Component-5e1b8383.d.ts +99 -3
  148. package/esm/Component-63dec22f.d.ts +167 -0
  149. package/esm/Component-8b2c2707.d.ts +14 -0
  150. package/esm/Component-9211a437.d.ts +38 -0
  151. package/esm/Component-e81c389f.d.ts +5 -0
  152. package/esm/Component.desktop-2e2b2125.d.ts +6 -0
  153. package/esm/Component.desktop-785df74d.d.ts +6 -0
  154. package/esm/Component.mobile-755fbaa3.d.ts +6 -0
  155. package/esm/Component.mobile-d7e9f69d.d.ts +6 -0
  156. package/esm/Component.mobile-ebda875c.d.ts +6 -0
  157. package/esm/Component.responsive-785df74d.d.ts +26 -0
  158. package/esm/collapsible.d.ts +7 -0
  159. package/esm/collapsible.js +26 -0
  160. package/esm/components/primary-tablist/Component.collapsible.d.ts +5 -0
  161. package/esm/components/primary-tablist/Component.collapsible.desktop.d.ts +5 -0
  162. package/esm/components/primary-tablist/Component.collapsible.desktop.js +24 -0
  163. package/esm/components/primary-tablist/Component.collapsible.js +72 -0
  164. package/esm/components/primary-tablist/Component.collapsible.mobile.d.ts +6 -0
  165. package/esm/components/primary-tablist/Component.collapsible.mobile.js +26 -0
  166. package/esm/components/primary-tablist/Component.collapsible.responsive.d.ts +5 -0
  167. package/esm/components/primary-tablist/Component.collapsible.responsive.js +28 -0
  168. package/esm/components/primary-tablist/Component.d.ts +2 -1
  169. package/esm/components/primary-tablist/Component.desktop.d.ts +2 -1
  170. package/esm/components/primary-tablist/Component.desktop.js +2 -8
  171. package/esm/components/primary-tablist/Component.js +10 -42
  172. package/esm/components/primary-tablist/Component.mobile.d.ts +3 -2
  173. package/esm/components/primary-tablist/Component.mobile.js +3 -11
  174. package/esm/components/primary-tablist/Component.responsive.d.ts +2 -1
  175. package/esm/components/primary-tablist/Component.responsive.js +7 -14
  176. package/esm/components/primary-tablist/index.css +29 -29
  177. package/esm/components/primary-tablist/mobile.css +40 -32
  178. package/esm/components/scrollable-container/Component.d.ts +3 -2
  179. package/esm/components/scrollable-container/Component.js +1 -1
  180. package/esm/components/scrollable-container/index.css +5 -5
  181. package/esm/components/secondary-tablist/Component.d.ts +2 -1
  182. package/esm/components/secondary-tablist/Component.desktop.d.ts +3 -2
  183. package/esm/components/secondary-tablist/Component.desktop.js +4 -3
  184. package/esm/components/secondary-tablist/Component.js +5 -3
  185. package/esm/components/secondary-tablist/Component.mobile.d.ts +2 -1
  186. package/esm/components/secondary-tablist/Component.mobile.js +5 -4
  187. package/esm/components/secondary-tablist/Component.responsive.d.ts +2 -1
  188. package/esm/components/secondary-tablist/Component.responsive.js +8 -9
  189. package/esm/components/secondary-tablist/index.css +11 -11
  190. package/esm/components/secondary-tablist/mobile.css +21 -13
  191. package/esm/components/tab/Component.d.ts +2 -1
  192. package/esm/components/tab/Component.js +1 -1
  193. package/esm/components/tab/index.css +3 -3
  194. package/esm/components/tabs/Component.collabsible.desktop.d.ts +6 -0
  195. package/esm/components/tabs/Component.collabsible.desktop.js +26 -0
  196. package/esm/components/tabs/Component.collapsible.mobile.d.ts +6 -0
  197. package/esm/components/tabs/Component.collapsible.mobile.js +27 -0
  198. package/esm/components/tabs/Component.collapsible.responsive.d.ts +6 -0
  199. package/esm/components/tabs/Component.collapsible.responsive.js +29 -0
  200. package/esm/components/tabs/Component.d.ts +2 -1
  201. package/esm/components/tabs/Component.desktop.d.ts +3 -2
  202. package/esm/components/tabs/Component.desktop.js +4 -10
  203. package/esm/components/tabs/Component.js +2 -2
  204. package/esm/components/tabs/Component.mobile.d.ts +3 -2
  205. package/esm/components/tabs/Component.mobile.js +5 -10
  206. package/esm/components/tabs/Component.responsive.d.ts +3 -2
  207. package/esm/components/tabs/Component.responsive.js +7 -10
  208. package/esm/desktop-2e2b2125.d.ts +2 -0
  209. package/esm/desktop.d.ts +0 -4
  210. package/esm/desktop.js +7 -13
  211. package/{hook-3e68f8db.d.ts → esm/hook-9ea9e32c.d.ts} +10 -8
  212. package/esm/hooks/use-tablist-titles.d.ts +2 -1
  213. package/esm/hooks/use-tablist-titles.js +7 -5
  214. package/esm/hooks/use-tabs.d.ts +1 -0
  215. package/esm/hooks/use-tabs.js +2 -5
  216. package/esm/index-8b2c2707.d.ts +6 -0
  217. package/esm/index-c44170fe.d.ts +23 -0
  218. package/esm/index-e81c389f.d.ts +142 -3
  219. package/esm/index-ebda875c.d.ts +86 -18
  220. package/esm/index-f12ee135.d.ts +307 -3
  221. package/esm/index.d.ts +1 -4
  222. package/esm/index.js +11 -14
  223. package/esm/index.module-08248cf3.js +4 -0
  224. package/esm/index.module-2bed7b44.js +4 -0
  225. package/esm/mobile-755fbaa3.d.ts +2 -0
  226. package/esm/mobile-96988a65.d.ts +2 -0
  227. package/esm/mobile.d.ts +0 -3
  228. package/esm/mobile.js +8 -13
  229. package/esm/mobile.module-d8a1b124.js +4 -0
  230. package/{index-3e68f8db.d.ts → esm/shared-4cd3936b.d.ts} +50 -16
  231. package/esm/shared.d.ts +4 -0
  232. package/esm/shared.js +10 -0
  233. package/esm/types-4480ac4f.d.ts +3 -0
  234. package/esm/typings-5e1b8383.d.ts +2 -1
  235. package/esm/typings-9211a437.d.ts +95 -0
  236. package/esm/typings.d.ts +11 -10
  237. package/{modern/hook-3e68f8db.d.ts → hook-9ea9e32c.d.ts} +10 -8
  238. package/hooks/use-tablist-titles.d.ts +2 -1
  239. package/hooks/use-tablist-titles.js +7 -5
  240. package/hooks/use-tabs.d.ts +1 -0
  241. package/hooks/use-tabs.js +3 -6
  242. package/index-8b2c2707.d.ts +6 -0
  243. package/index-c44170fe.d.ts +23 -0
  244. package/index-e81c389f.d.ts +142 -3
  245. package/index-ebda875c.d.ts +86 -18
  246. package/index-f12ee135.d.ts +307 -3
  247. package/index.d.ts +1 -4
  248. package/index.js +11 -16
  249. package/index.module-0d10b544.js +6 -0
  250. package/index.module-49556b0f.js +6 -0
  251. package/mobile-755fbaa3.d.ts +2 -0
  252. package/mobile-96988a65.d.ts +2 -0
  253. package/mobile.d.ts +0 -3
  254. package/mobile.js +8 -15
  255. package/mobile.module-541101fc.js +6 -0
  256. package/modern/{Component-3e68f8db.d.ts → Component-4cd3936b.d.ts} +5 -4
  257. package/modern/Component-5e1b8383.d.ts +99 -3
  258. package/modern/Component-63dec22f.d.ts +167 -0
  259. package/modern/Component-8b2c2707.d.ts +14 -0
  260. package/modern/Component-9211a437.d.ts +38 -0
  261. package/modern/Component-e81c389f.d.ts +5 -0
  262. package/modern/Component.desktop-2e2b2125.d.ts +6 -0
  263. package/modern/Component.desktop-785df74d.d.ts +6 -0
  264. package/modern/Component.mobile-755fbaa3.d.ts +6 -0
  265. package/modern/Component.mobile-d7e9f69d.d.ts +6 -0
  266. package/modern/Component.mobile-ebda875c.d.ts +6 -0
  267. package/modern/Component.responsive-785df74d.d.ts +26 -0
  268. package/modern/collapsible.d.ts +7 -0
  269. package/modern/collapsible.js +25 -0
  270. package/modern/components/primary-tablist/Component.collapsible.d.ts +5 -0
  271. package/modern/components/primary-tablist/Component.collapsible.desktop.d.ts +5 -0
  272. package/modern/components/primary-tablist/Component.collapsible.desktop.js +20 -0
  273. package/modern/components/primary-tablist/Component.collapsible.js +61 -0
  274. package/modern/components/primary-tablist/Component.collapsible.mobile.d.ts +6 -0
  275. package/modern/components/primary-tablist/Component.collapsible.mobile.js +25 -0
  276. package/modern/components/primary-tablist/Component.collapsible.responsive.d.ts +5 -0
  277. package/modern/components/primary-tablist/Component.collapsible.responsive.js +26 -0
  278. package/modern/components/primary-tablist/Component.d.ts +2 -1
  279. package/modern/components/primary-tablist/Component.desktop.d.ts +2 -1
  280. package/modern/components/primary-tablist/Component.desktop.js +2 -8
  281. package/modern/components/primary-tablist/Component.js +8 -37
  282. package/modern/components/primary-tablist/Component.mobile.d.ts +3 -2
  283. package/modern/components/primary-tablist/Component.mobile.js +3 -11
  284. package/modern/components/primary-tablist/Component.responsive.d.ts +2 -1
  285. package/modern/components/primary-tablist/Component.responsive.js +7 -14
  286. package/modern/components/primary-tablist/index.css +29 -29
  287. package/modern/components/primary-tablist/mobile.css +40 -32
  288. package/modern/components/scrollable-container/Component.d.ts +3 -2
  289. package/modern/components/scrollable-container/Component.js +1 -1
  290. package/modern/components/scrollable-container/index.css +5 -5
  291. package/modern/components/secondary-tablist/Component.d.ts +2 -1
  292. package/modern/components/secondary-tablist/Component.desktop.d.ts +3 -2
  293. package/modern/components/secondary-tablist/Component.desktop.js +4 -3
  294. package/modern/components/secondary-tablist/Component.js +12 -8
  295. package/modern/components/secondary-tablist/Component.mobile.d.ts +2 -1
  296. package/modern/components/secondary-tablist/Component.mobile.js +5 -4
  297. package/modern/components/secondary-tablist/Component.responsive.d.ts +2 -1
  298. package/modern/components/secondary-tablist/Component.responsive.js +8 -9
  299. package/modern/components/secondary-tablist/index.css +11 -11
  300. package/modern/components/secondary-tablist/mobile.css +21 -13
  301. package/modern/components/tab/Component.d.ts +2 -1
  302. package/modern/components/tab/Component.js +1 -1
  303. package/modern/components/tab/index.css +3 -3
  304. package/modern/components/tabs/Component.collabsible.desktop.d.ts +6 -0
  305. package/modern/components/tabs/Component.collabsible.desktop.js +22 -0
  306. package/modern/components/tabs/Component.collapsible.mobile.d.ts +6 -0
  307. package/modern/components/tabs/Component.collapsible.mobile.js +23 -0
  308. package/modern/components/tabs/Component.collapsible.responsive.d.ts +6 -0
  309. package/modern/components/tabs/Component.collapsible.responsive.js +25 -0
  310. package/modern/components/tabs/Component.d.ts +2 -1
  311. package/modern/components/tabs/Component.desktop.d.ts +3 -2
  312. package/modern/components/tabs/Component.desktop.js +4 -10
  313. package/modern/components/tabs/Component.js +2 -2
  314. package/modern/components/tabs/Component.mobile.d.ts +3 -2
  315. package/modern/components/tabs/Component.mobile.js +5 -10
  316. package/modern/components/tabs/Component.responsive.d.ts +3 -2
  317. package/modern/components/tabs/Component.responsive.js +7 -10
  318. package/modern/desktop-2e2b2125.d.ts +2 -0
  319. package/modern/desktop.d.ts +0 -4
  320. package/modern/desktop.js +7 -13
  321. package/{esm/hook-3e68f8db.d.ts → modern/hook-9ea9e32c.d.ts} +10 -8
  322. package/modern/hooks/use-tablist-titles.d.ts +2 -1
  323. package/modern/hooks/use-tablist-titles.js +7 -5
  324. package/modern/hooks/use-tabs.d.ts +1 -0
  325. package/modern/hooks/use-tabs.js +2 -5
  326. package/modern/index-8b2c2707.d.ts +6 -0
  327. package/modern/index-c44170fe.d.ts +23 -0
  328. package/modern/index-e81c389f.d.ts +142 -3
  329. package/modern/index-ebda875c.d.ts +86 -18
  330. package/modern/index-f12ee135.d.ts +307 -3
  331. package/modern/index.d.ts +1 -4
  332. package/modern/index.js +11 -14
  333. package/modern/index.module-264a8450.js +4 -0
  334. package/modern/index.module-fede443b.js +4 -0
  335. package/modern/mobile-755fbaa3.d.ts +2 -0
  336. package/modern/mobile-96988a65.d.ts +2 -0
  337. package/modern/mobile.d.ts +0 -3
  338. package/modern/mobile.js +8 -13
  339. package/modern/mobile.module-9693b0a4.js +4 -0
  340. package/{cssm/index-3e68f8db.d.ts → modern/shared-4cd3936b.d.ts} +50 -16
  341. package/modern/shared.d.ts +4 -0
  342. package/modern/shared.js +9 -0
  343. package/modern/types-4480ac4f.d.ts +3 -0
  344. package/modern/typings-5e1b8383.d.ts +2 -1
  345. package/modern/typings-9211a437.d.ts +95 -0
  346. package/modern/typings.d.ts +11 -10
  347. package/package.json +36 -5
  348. package/{modern/index-3e68f8db.d.ts → shared-4cd3936b.d.ts} +50 -16
  349. package/shared.d.ts +4 -0
  350. package/shared.js +20 -0
  351. package/src/collapsible.ts +10 -0
  352. package/src/components/primary-tablist/Component.collapsible.desktop.tsx +11 -0
  353. package/src/components/primary-tablist/Component.collapsible.mobile.tsx +27 -0
  354. package/src/components/primary-tablist/Component.collapsible.responsive.tsx +34 -0
  355. package/src/components/primary-tablist/Component.collapsible.tsx +132 -0
  356. package/src/components/primary-tablist/Component.desktop.tsx +11 -0
  357. package/src/components/primary-tablist/Component.mobile.tsx +20 -0
  358. package/src/components/primary-tablist/Component.responsive.tsx +34 -0
  359. package/src/components/primary-tablist/Component.tsx +74 -0
  360. package/src/components/primary-tablist/index.module.css +181 -0
  361. package/src/components/primary-tablist/mobile.module.css +20 -0
  362. package/src/components/scrollable-container/Component.tsx +66 -0
  363. package/src/components/scrollable-container/index.module.css +26 -0
  364. package/src/components/scrollable-container/index.ts +1 -0
  365. package/src/components/secondary-tablist/Component.desktop.tsx +24 -0
  366. package/src/components/secondary-tablist/Component.mobile.tsx +31 -0
  367. package/src/components/secondary-tablist/Component.responsive.tsx +24 -0
  368. package/src/components/secondary-tablist/Component.tsx +70 -0
  369. package/src/components/secondary-tablist/index.module.css +49 -0
  370. package/src/components/secondary-tablist/mobile.module.css +11 -0
  371. package/src/components/tab/Component.tsx +25 -0
  372. package/src/components/tab/index.module.css +7 -0
  373. package/src/components/tab/index.ts +1 -0
  374. package/src/components/tabs/Component.collabsible.desktop.tsx +15 -0
  375. package/src/components/tabs/Component.collapsible.mobile.tsx +15 -0
  376. package/src/components/tabs/Component.collapsible.responsive.tsx +12 -0
  377. package/src/components/tabs/Component.desktop.tsx +26 -0
  378. package/src/components/tabs/Component.mobile.tsx +20 -0
  379. package/src/components/tabs/Component.responsive.tsx +20 -0
  380. package/src/components/tabs/Component.tsx +67 -0
  381. package/src/components/title/Component.tsx +51 -0
  382. package/src/components/title/index.ts +1 -0
  383. package/src/desktop.ts +4 -0
  384. package/src/hooks/use-collapsible-elements.ts +69 -0
  385. package/src/hooks/use-tablist-titles.ts +91 -0
  386. package/src/hooks/use-tabs.tsx +129 -0
  387. package/src/index.ts +7 -0
  388. package/src/mobile.ts +4 -0
  389. package/src/shared.ts +4 -0
  390. package/src/synthetic-events.ts +70 -0
  391. package/src/typings.ts +187 -0
  392. package/src/vars.css +68 -0
  393. package/types-4480ac4f.d.ts +3 -0
  394. package/typings-5e1b8383.d.ts +2 -1
  395. package/typings-9211a437.d.ts +95 -0
  396. package/typings.d.ts +11 -10
  397. package/Component-2aef4eba.d.ts +0 -50
  398. package/Component-3885b0d7.d.ts +0 -71
  399. package/Component-3ebe4754.d.ts +0 -176
  400. package/Component.mobile-b2c0420d.d.ts +0 -35
  401. package/Component.responsive-2aef4eba.d.ts +0 -30
  402. package/component-3885b0d7.d.ts +0 -43
  403. package/cssm/Component-2aef4eba.d.ts +0 -50
  404. package/cssm/Component-3885b0d7.d.ts +0 -71
  405. package/cssm/Component-3ebe4754.d.ts +0 -176
  406. package/cssm/Component.mobile-b2c0420d.d.ts +0 -35
  407. package/cssm/Component.responsive-2aef4eba.d.ts +0 -30
  408. package/cssm/component-3885b0d7.d.ts +0 -43
  409. package/cssm/index-2aef4eba.d.ts +0 -5
  410. package/cssm/index-3885b0d7.d.ts +0 -3
  411. package/cssm/index-3ebe4754.d.ts +0 -1
  412. package/cssm/index-701e77da.d.ts +0 -4
  413. package/cssm/responsive.d.ts +0 -8
  414. package/cssm/responsive.js +0 -47
  415. package/cssm/types-ebda875c.d.ts +0 -113
  416. package/cssm/types-fae20163.d.ts +0 -227
  417. package/cssm/utils-b64479aa.d.ts +0 -8
  418. package/esm/Component-2aef4eba.d.ts +0 -50
  419. package/esm/Component-3885b0d7.d.ts +0 -71
  420. package/esm/Component-3ebe4754.d.ts +0 -176
  421. package/esm/Component.mobile-b2c0420d.d.ts +0 -35
  422. package/esm/Component.responsive-2aef4eba.d.ts +0 -30
  423. package/esm/component-3885b0d7.d.ts +0 -43
  424. package/esm/index-2aef4eba.d.ts +0 -5
  425. package/esm/index-3885b0d7.d.ts +0 -3
  426. package/esm/index-3ebe4754.d.ts +0 -1
  427. package/esm/index-701e77da.d.ts +0 -4
  428. package/esm/index.module-09cc006f.js +0 -4
  429. package/esm/index.module-a8ec81ea.js +0 -4
  430. package/esm/responsive.d.ts +0 -8
  431. package/esm/responsive.js +0 -29
  432. package/esm/types-ebda875c.d.ts +0 -113
  433. package/esm/types-fae20163.d.ts +0 -227
  434. package/esm/utils-b64479aa.d.ts +0 -8
  435. package/index-2aef4eba.d.ts +0 -5
  436. package/index-3885b0d7.d.ts +0 -3
  437. package/index-3ebe4754.d.ts +0 -1
  438. package/index-701e77da.d.ts +0 -4
  439. package/index.module-489cc8bc.js +0 -6
  440. package/index.module-728b55ca.js +0 -6
  441. package/modern/Component-2aef4eba.d.ts +0 -50
  442. package/modern/Component-3885b0d7.d.ts +0 -71
  443. package/modern/Component-3ebe4754.d.ts +0 -176
  444. package/modern/Component.mobile-b2c0420d.d.ts +0 -35
  445. package/modern/Component.responsive-2aef4eba.d.ts +0 -30
  446. package/modern/component-3885b0d7.d.ts +0 -43
  447. package/modern/index-2aef4eba.d.ts +0 -5
  448. package/modern/index-3885b0d7.d.ts +0 -3
  449. package/modern/index-3ebe4754.d.ts +0 -1
  450. package/modern/index-701e77da.d.ts +0 -4
  451. package/modern/index.module-75cf2354.js +0 -4
  452. package/modern/index.module-77d8ef59.js +0 -4
  453. package/modern/responsive.d.ts +0 -8
  454. package/modern/responsive.js +0 -28
  455. package/modern/types-ebda875c.d.ts +0 -113
  456. package/modern/types-fae20163.d.ts +0 -227
  457. package/modern/utils-b64479aa.d.ts +0 -8
  458. package/responsive.d.ts +0 -8
  459. package/responsive.js +0 -43
  460. package/types-ebda875c.d.ts +0 -113
  461. package/types-fae20163.d.ts +0 -227
  462. package/utils-b64479aa.d.ts +0 -8
@@ -0,0 +1,132 @@
1
+ import React, { useEffect, useMemo, useRef } from 'react';
2
+ import cn from 'classnames';
3
+
4
+ import { Badge } from '@alfalab/core-components-badge';
5
+ import { KeyboardFocusable } from '@alfalab/core-components-keyboard-focusable';
6
+ import {
7
+ PickerButtonDesktop,
8
+ PickerButtonDesktopProps,
9
+ } from '@alfalab/core-components-picker-button/desktop';
10
+
11
+ import { useTablistTitles } from '../../hooks/use-tablist-titles';
12
+ import { createSyntheticMouseEvent } from '../../synthetic-events';
13
+ import { Styles, TabListProps } from '../../typings';
14
+ import { Title } from '../title';
15
+
16
+ const DEFAULT_STYLES = {};
17
+
18
+ export const CollapsiblePrimaryTabList = ({
19
+ size,
20
+ className,
21
+ containerClassName,
22
+ titles = [],
23
+ styles = DEFAULT_STYLES,
24
+ selectedId = titles.length ? titles[0].id : undefined,
25
+ collapsedTabsIds,
26
+ fullWidthScroll,
27
+ onChange,
28
+ dataTestId,
29
+ breakpoint = 768,
30
+ defaultMatchMediaValue,
31
+ }: TabListProps & Styles) => {
32
+ const lineRef = useRef<HTMLDivElement>(null);
33
+
34
+ const { containerRef, addonRef, tablistTitles, selectedTab, getTabListItemProps } =
35
+ useTablistTitles({
36
+ titles,
37
+ selectedId,
38
+ collapsedTabsIds,
39
+ breakpoint,
40
+ onChange,
41
+ defaultMatchMediaValue,
42
+ });
43
+
44
+ useEffect(() => {
45
+ if (selectedTab && lineRef.current) {
46
+ lineRef.current.style.width = `${selectedTab.offsetWidth}px`;
47
+ lineRef.current.style.transform = `translateX(${selectedTab.offsetLeft}px)`;
48
+ }
49
+ }, [selectedTab, tablistTitles]);
50
+
51
+ const collapsedOptions = useMemo(
52
+ () =>
53
+ tablistTitles.reduce<PickerButtonDesktopProps['options']>((options, title) => {
54
+ if (title.collapsed) {
55
+ options.push({
56
+ key: title.title,
57
+ value: title.id,
58
+ content: <Title {...title} styles={styles} isOption={true} />,
59
+ });
60
+ }
61
+
62
+ return options;
63
+ }, []),
64
+ [tablistTitles, styles],
65
+ );
66
+
67
+ const collapsedAddonsLength = tablistTitles.filter(
68
+ (title) => title.collapsed && title.rightAddons,
69
+ ).length;
70
+
71
+ const handleOptionsChange = (
72
+ payload: Parameters<Required<PickerButtonDesktopProps>['onChange']>[0],
73
+ ) => {
74
+ if (payload.selected?.value && onChange) {
75
+ const nativeMouseEvent = new MouseEvent('change');
76
+ const syntheticMouseEvent = createSyntheticMouseEvent(nativeMouseEvent);
77
+
78
+ onChange(syntheticMouseEvent, { selectedId: payload.selected.value });
79
+ }
80
+ };
81
+
82
+ const renderContent = () => (
83
+ <div
84
+ role='tablist'
85
+ data-test-id={dataTestId}
86
+ className={cn(styles.component, className, size && styles[size], {
87
+ [styles.fullWidthScroll]: fullWidthScroll,
88
+ })}
89
+ >
90
+ {tablistTitles.map(({ dataTestId: _, ...restTitleProps }, index) => (
91
+ <KeyboardFocusable key={restTitleProps.id}>
92
+ {(ref, focused) => (
93
+ <Title
94
+ {...getTabListItemProps(index, ref)}
95
+ {...restTitleProps}
96
+ focused={focused}
97
+ styles={styles}
98
+ />
99
+ )}
100
+ </KeyboardFocusable>
101
+ ))}
102
+
103
+ {collapsedOptions.length ? (
104
+ <span ref={addonRef} role='menu' className={styles.pickerWrapper}>
105
+ <PickerButtonDesktop
106
+ fieldClassName={styles.title}
107
+ optionClassName={cn(styles.pickerOption, size && styles[size])}
108
+ options={collapsedOptions}
109
+ onChange={handleOptionsChange}
110
+ rightAddons={
111
+ collapsedAddonsLength ? (
112
+ <Badge view='count' content={collapsedAddonsLength} />
113
+ ) : null
114
+ }
115
+ size='l'
116
+ view='ghost'
117
+ label='Ещё'
118
+ popoverPosition='bottom-end'
119
+ />
120
+ </span>
121
+ ) : null}
122
+
123
+ <div className={styles.line} ref={lineRef} />
124
+ </div>
125
+ );
126
+
127
+ return (
128
+ <div ref={containerRef} className={cn(styles.container, containerClassName)}>
129
+ {renderContent()}
130
+ </div>
131
+ );
132
+ };
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+
3
+ import { TabListProps } from '../../typings';
4
+
5
+ import { PrimaryTabList } from './Component';
6
+
7
+ import styles from './index.module.css';
8
+
9
+ export const PrimaryTabListDesktop = ({ size = 'm', ...restProps }: TabListProps) => (
10
+ <PrimaryTabList {...restProps} size={size} styles={styles} />
11
+ );
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import cn from 'classnames';
3
+
4
+ import { TabListProps } from '../../typings';
5
+
6
+ import { PrimaryTabList } from './Component';
7
+
8
+ import commonStyles from './index.module.css';
9
+ import mobileStyles from './mobile.module.css';
10
+
11
+ const styles = {
12
+ ...commonStyles,
13
+ ...mobileStyles,
14
+ };
15
+
16
+ export type PrimaryTabListMobileProps = Omit<TabListProps, 'size' | 'collapsedTabsIds'>;
17
+
18
+ export const PrimaryTabListMobile = ({ className, ...restProps }: PrimaryTabListMobileProps) => (
19
+ <PrimaryTabList {...restProps} styles={styles} className={cn(className, styles.mobile)} />
20
+ );
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+
3
+ import { useMatchMedia } from '@alfalab/core-components-mq';
4
+
5
+ import { TabListProps } from '../../typings';
6
+
7
+ import { PrimaryTabListDesktop } from './Component.desktop';
8
+ import { PrimaryTabListMobile } from './Component.mobile';
9
+
10
+ export const PrimaryTabListResponsive = ({
11
+ size,
12
+ breakpoint = 768,
13
+ fullWidthScroll,
14
+ defaultMatchMediaValue,
15
+ ...restProps
16
+ }: TabListProps) => {
17
+ const [isDesktop] = useMatchMedia(`(min-width: ${breakpoint}px)`, defaultMatchMediaValue);
18
+
19
+ return isDesktop ? (
20
+ <PrimaryTabListDesktop
21
+ breakpoint={breakpoint}
22
+ size={size}
23
+ defaultMatchMediaValue={defaultMatchMediaValue}
24
+ {...restProps}
25
+ />
26
+ ) : (
27
+ <PrimaryTabListMobile
28
+ breakpoint={breakpoint}
29
+ defaultMatchMediaValue={defaultMatchMediaValue}
30
+ fullWidthScroll={fullWidthScroll}
31
+ {...restProps}
32
+ />
33
+ );
34
+ };
@@ -0,0 +1,74 @@
1
+ import React, { useEffect, useRef } from 'react';
2
+ import cn from 'classnames';
3
+
4
+ import { KeyboardFocusable } from '@alfalab/core-components-keyboard-focusable';
5
+
6
+ import { useTabs } from '../../hooks/use-tabs';
7
+ import { Styles, TabListProps } from '../../typings';
8
+ import { ScrollableContainer } from '../scrollable-container';
9
+ import { Title } from '../title';
10
+
11
+ export const PrimaryTabList = ({
12
+ size,
13
+ styles = {},
14
+ className,
15
+ containerClassName,
16
+ titles = [],
17
+ selectedId = titles.length ? titles[0].id : undefined,
18
+ scrollable = true,
19
+ fullWidthScroll,
20
+ onChange,
21
+ dataTestId,
22
+ }: TabListProps & Styles) => {
23
+ const lineRef = useRef<HTMLDivElement>(null);
24
+
25
+ const { selectedTab, focusedTab, getTabListItemProps } = useTabs({
26
+ titles,
27
+ selectedId,
28
+ onChange,
29
+ });
30
+
31
+ useEffect(() => {
32
+ if (selectedTab && lineRef.current) {
33
+ lineRef.current.style.width = `${selectedTab.offsetWidth}px`;
34
+ lineRef.current.style.transform = `translateX(${selectedTab.offsetLeft}px)`;
35
+ }
36
+ }, [selectedTab]);
37
+
38
+ const renderContent = () => (
39
+ <div
40
+ role='tablist'
41
+ data-test-id={dataTestId}
42
+ className={cn(styles.component, className, size && styles[size], {
43
+ [styles.fullWidthScroll]: fullWidthScroll,
44
+ })}
45
+ >
46
+ {titles.map(({ dataTestId: _, ...restTitleProps }, index) => (
47
+ <KeyboardFocusable key={restTitleProps.id}>
48
+ {(ref, focused) => (
49
+ <Title
50
+ {...getTabListItemProps(index, ref)}
51
+ {...restTitleProps}
52
+ focused={focused}
53
+ styles={styles}
54
+ />
55
+ )}
56
+ </KeyboardFocusable>
57
+ ))}
58
+
59
+ <div className={styles.line} ref={lineRef} />
60
+ </div>
61
+ );
62
+
63
+ return scrollable ? (
64
+ <ScrollableContainer
65
+ activeChild={focusedTab || selectedTab}
66
+ containerClassName={containerClassName}
67
+ fullWidthScroll={fullWidthScroll}
68
+ >
69
+ {renderContent()}
70
+ </ScrollableContainer>
71
+ ) : (
72
+ <div className={cn(styles.container, containerClassName)}>{renderContent()}</div>
73
+ );
74
+ };
@@ -0,0 +1,181 @@
1
+ @import '@alfalab/core-components-themes/src/default.css';
2
+ @import '../../vars.css';
3
+
4
+ .component {
5
+ position: relative;
6
+ display: inline-flex;
7
+ min-width: 100%;
8
+
9
+ &:before {
10
+ content: '';
11
+ display: block;
12
+ position: absolute;
13
+ bottom: 1px;
14
+ height: 1px;
15
+ width: 100%;
16
+ background-color: var(--primary-tablist-bottom-border-color);
17
+ }
18
+ }
19
+
20
+ .fullWidthScroll {
21
+ min-width: calc(100% - 2 * var(--gap-m));
22
+ margin: 0 var(--gap-m);
23
+ }
24
+
25
+ .container {
26
+ position: relative;
27
+ overflow: hidden;
28
+
29
+ /* focus-outline fix */
30
+ margin: var(--gap-2xs-neg) 0 var(--gap-2xs-neg) var(--gap-2xs-neg);
31
+ padding: var(--gap-2xs) 0 var(--gap-2xs) var(--gap-2xs);
32
+ }
33
+
34
+ .title {
35
+ display: flex;
36
+ align-items: center;
37
+ height: 100%;
38
+ padding: 0;
39
+ cursor: pointer;
40
+ color: var(--primary-tablist-color);
41
+ font-feature-settings: var(--primary-tablist-font-feature-settings);
42
+ transition: color 0.2s ease;
43
+ border: 0;
44
+ background: none;
45
+ white-space: nowrap;
46
+ box-shadow: none;
47
+ user-select: none;
48
+ cursor: pointer;
49
+ outline: none;
50
+
51
+ &:not(.disabled):hover {
52
+ color: var(--primary-tablist-hover-color);
53
+ }
54
+ }
55
+
56
+ .focused {
57
+ @mixin focus-outline;
58
+ }
59
+
60
+ .collapsed {
61
+ order: 99;
62
+ visibility: collapse;
63
+ }
64
+
65
+ .selected {
66
+ cursor: default;
67
+ color: var(--primary-tablist-selected-color);
68
+ }
69
+
70
+ .disabled {
71
+ cursor: var(--disabled-cursor);
72
+ color: var(--primary-tablist-disabled-color);
73
+ }
74
+
75
+ .line {
76
+ position: absolute;
77
+ height: 3px;
78
+ bottom: 0;
79
+ left: 0;
80
+ background-color: var(--primary-tablist-line-color);
81
+ transition: transform 0.2s ease, width 0.2s ease;
82
+ }
83
+
84
+ /* sizes */
85
+
86
+ .s,
87
+ .xs,
88
+ .xxs {
89
+ & .title {
90
+ padding: var(--primary-tablist-s-padding);
91
+ font-size: var(--primary-tablist-s-font-size);
92
+ font-weight: var(--primary-tablist-s-font-weight);
93
+ font-family: var(--primary-tablist-s-font-family);
94
+ line-height: 24px;
95
+ }
96
+
97
+ & .title + .title {
98
+ margin-left: var(--primary-tablist-s-gaps);
99
+ }
100
+
101
+ & .pickerWrapper {
102
+ margin-left: var(--primary-tablist-s-gaps);
103
+ }
104
+
105
+ & .option {
106
+ padding: 0;
107
+ }
108
+ }
109
+
110
+ .m {
111
+ & .title {
112
+ padding: var(--primary-tablist-m-padding);
113
+ font-size: var(--primary-tablist-m-font-size);
114
+ font-weight: var(--primary-tablist-m-font-weight);
115
+ font-family: var(--primary-tablist-m-font-family);
116
+ line-height: 24px;
117
+ }
118
+
119
+ & .title + .title {
120
+ margin-left: var(--primary-tablist-m-gaps);
121
+ }
122
+
123
+ & .pickerWrapper {
124
+ margin-left: var(--primary-tablist-m-gaps);
125
+ }
126
+
127
+ & .option {
128
+ padding: 0;
129
+ }
130
+ }
131
+
132
+ .l {
133
+ & .title {
134
+ padding: var(--primary-tablist-l-padding);
135
+ font-size: var(--primary-tablist-l-font-size);
136
+ font-weight: var(--primary-tablist-l-font-weight);
137
+ font-family: var(--primary-tablist-l-font-family);
138
+ line-height: 24px;
139
+ }
140
+
141
+ & .title + .title {
142
+ margin-left: var(--primary-tablist-l-gaps);
143
+ }
144
+
145
+ & .pickerWrapper {
146
+ margin-left: var(--primary-tablist-l-gaps);
147
+ }
148
+
149
+ & .option {
150
+ padding: 0;
151
+ }
152
+ }
153
+
154
+ .xl {
155
+ & .title {
156
+ padding: var(--primary-tablist-xl-padding);
157
+ font-size: var(--primary-tablist-xl-font-size);
158
+ font-weight: var(--primary-tablist-xl-font-weight);
159
+ font-family: var(--primary-tablist-xl-font-family);
160
+ line-height: 32px;
161
+ }
162
+
163
+ & .title + .title {
164
+ margin-left: var(--primary-tablist-xl-gaps);
165
+ }
166
+
167
+ & .pickerWrapper {
168
+ margin-left: var(--primary-tablist-xl-gaps);
169
+ }
170
+
171
+ & .option {
172
+ padding: 0;
173
+ }
174
+ }
175
+
176
+ .rightAddons {
177
+ display: flex;
178
+ justify-content: center;
179
+ align-items: center;
180
+ margin-left: var(--gap-xs);
181
+ }
@@ -0,0 +1,20 @@
1
+ @import '@alfalab/core-components-themes/src/default.css';
2
+ @import '../../vars.css';
3
+
4
+ .title {
5
+ composes: title from 'index.module.css';
6
+ }
7
+
8
+ .mobile {
9
+ & .title {
10
+ padding: var(--primary-tablist-mobile-padding);
11
+ font-size: var(--primary-tablist-mobile-font-size);
12
+ font-weight: var(--primary-tablist-mobile-font-weight);
13
+ font-family: var(--primary-tablist-mobile-font-family);
14
+ line-height: var(--primary-tablist-mobile-line-height);
15
+
16
+ & + .title {
17
+ margin-left: var(--primary-tablist-mobile-gaps);
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,66 @@
1
+ import React, { ReactNode, useEffect } from 'react';
2
+ import cn from 'classnames';
3
+ import computeScrollIntoView from 'compute-scroll-into-view';
4
+
5
+ import { TabsProps } from '../../typings';
6
+
7
+ import styles from './index.module.css';
8
+
9
+ /**
10
+ * Дополнительная прокрутка при клике на не поместившийся таб
11
+ */
12
+ const ADDITIONAL_SCROLLLEFT_VALUE = 40;
13
+
14
+ export type ScrollableContainerProps = {
15
+ /**
16
+ * Дополнительный класс контейнера
17
+ */
18
+ containerClassName?: string;
19
+
20
+ /**
21
+ * Дочерние компоненты
22
+ */
23
+ children: ReactNode;
24
+
25
+ /**
26
+ * Активный элемент (всегда будет в видимой области)
27
+ */
28
+ activeChild: HTMLElement | null;
29
+ };
30
+
31
+ export const ScrollableContainer = ({
32
+ containerClassName,
33
+ children,
34
+ activeChild,
35
+ fullWidthScroll,
36
+ }: ScrollableContainerProps & Pick<TabsProps, 'fullWidthScroll'>) => {
37
+ useEffect(() => {
38
+ if (activeChild) {
39
+ const actions = computeScrollIntoView(activeChild, {
40
+ scrollMode: 'if-needed',
41
+ block: 'nearest',
42
+ inline: 'nearest',
43
+ });
44
+
45
+ // TODO: animate?
46
+ actions.forEach(({ el, left }, index) => {
47
+ if (index === 0) return;
48
+ // eslint-disable-next-line no-param-reassign
49
+ el.scrollLeft =
50
+ el.scrollLeft > left
51
+ ? left - ADDITIONAL_SCROLLLEFT_VALUE
52
+ : left + ADDITIONAL_SCROLLLEFT_VALUE;
53
+ });
54
+ }
55
+ }, [activeChild]);
56
+
57
+ return (
58
+ <div
59
+ className={cn(styles.container, containerClassName, {
60
+ [styles.fullWidthScroll]: fullWidthScroll,
61
+ })}
62
+ >
63
+ {children}
64
+ </div>
65
+ );
66
+ };
@@ -0,0 +1,26 @@
1
+ @import '@alfalab/core-components-themes/src/default.css';
2
+ @import '../../vars.css';
3
+
4
+ .container {
5
+ position: relative;
6
+ overflow-x: auto;
7
+ overflow-y: hidden;
8
+ scroll-behavior: smooth;
9
+ scrollbar-width: none;
10
+
11
+ /* focus-outline fix */
12
+ margin: var(--gap-2xs-neg) 0 var(--gap-2xs-neg) var(--gap-2xs-neg);
13
+ padding: var(--gap-2xs) 0 var(--gap-2xs) var(--gap-2xs);
14
+
15
+ &::-webkit-scrollbar {
16
+ display: none;
17
+ }
18
+
19
+ & > * {
20
+ flex-shrink: 0;
21
+ }
22
+ }
23
+
24
+ .fullWidthScroll {
25
+ margin: 0 var(--gap-m-neg);
26
+ }
@@ -0,0 +1 @@
1
+ export * from './Component';
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+
3
+ import { TagDesktop } from '@alfalab/core-components-tag/desktop';
4
+
5
+ import { SecondaryTabListProps } from '../../typings';
6
+
7
+ import { SecondaryTabList } from './Component';
8
+
9
+ import commonStyles from './index.module.css';
10
+
11
+ export type SecondaryTabListDesktopProps = Omit<SecondaryTabListProps, 'tagSize' | 'breakpoint'>;
12
+
13
+ export const SecondaryTabListDesktop = ({
14
+ size = 's',
15
+ ...restProps
16
+ }: SecondaryTabListDesktopProps) => (
17
+ <SecondaryTabList
18
+ {...restProps}
19
+ TagComponent={TagDesktop}
20
+ size={size}
21
+ styles={commonStyles}
22
+ tagSize={size}
23
+ />
24
+ );
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import cn from 'classnames';
3
+
4
+ import { TagMobile } from '@alfalab/core-components-tag/mobile';
5
+
6
+ import { SecondaryTabListProps } from '../../typings';
7
+
8
+ import { SecondaryTabList } from './Component';
9
+
10
+ import commonStyles from './index.module.css';
11
+ import mobileStyles from './mobile.module.css';
12
+
13
+ const styles = {
14
+ ...commonStyles,
15
+ ...mobileStyles,
16
+ };
17
+
18
+ export type SecondaryTabListMobileProps = Omit<SecondaryTabListProps, 'size' | 'tagSize'>;
19
+
20
+ export const SecondaryTabListMobile = ({
21
+ className,
22
+ ...restProps
23
+ }: SecondaryTabListMobileProps) => (
24
+ <SecondaryTabList
25
+ {...restProps}
26
+ TagComponent={TagMobile}
27
+ styles={styles}
28
+ className={cn(className, styles.mobile)}
29
+ tagSize='xs'
30
+ />
31
+ );
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+
3
+ import { useMatchMedia } from '@alfalab/core-components-mq';
4
+
5
+ import { SecondaryTabListProps } from '../../typings';
6
+
7
+ import { SecondaryTabListDesktop } from './Component.desktop';
8
+ import { SecondaryTabListMobile } from './Component.mobile';
9
+
10
+ export const SecondaryTabListResponsive = ({
11
+ size,
12
+ defaultMatchMediaValue,
13
+ fullWidthScroll,
14
+ breakpoint = 768,
15
+ ...restProps
16
+ }: SecondaryTabListProps) => {
17
+ const [isDesktop] = useMatchMedia(`(min-width: ${breakpoint}px)`, defaultMatchMediaValue);
18
+
19
+ return isDesktop ? (
20
+ <SecondaryTabListDesktop size={size} {...restProps} />
21
+ ) : (
22
+ <SecondaryTabListMobile fullWidthScroll={fullWidthScroll} {...restProps} />
23
+ );
24
+ };