@alfalab/core-components-tabs 7.7.2 → 8.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 (450) hide show
  1. package/{cssm/Component-3e68f8db.d.ts → Component-4cd3936b.d.ts} +2 -2
  2. package/Component-5e1b8383.d.ts +99 -4
  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-c76d6398.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 +1 -1
  24. package/components/primary-tablist/Component.desktop.js +2 -8
  25. package/components/primary-tablist/Component.js +8 -40
  26. package/components/primary-tablist/Component.mobile.d.ts +1 -1
  27. package/components/primary-tablist/Component.mobile.js +4 -12
  28. package/components/primary-tablist/Component.responsive.d.ts +1 -1
  29. package/components/primary-tablist/Component.responsive.js +7 -14
  30. package/components/primary-tablist/index.css +29 -29
  31. package/components/primary-tablist/mobile.css +40 -32
  32. package/components/scrollable-container/Component.js +1 -1
  33. package/components/scrollable-container/index.css +5 -5
  34. package/components/secondary-tablist/Component.d.ts +1 -1
  35. package/components/secondary-tablist/Component.desktop.d.ts +1 -1
  36. package/components/secondary-tablist/Component.desktop.js +4 -3
  37. package/components/secondary-tablist/Component.js +5 -3
  38. package/components/secondary-tablist/Component.mobile.js +5 -4
  39. package/components/secondary-tablist/Component.responsive.d.ts +1 -1
  40. package/components/secondary-tablist/Component.responsive.js +8 -9
  41. package/components/secondary-tablist/index.css +11 -11
  42. package/components/secondary-tablist/mobile.css +21 -13
  43. package/components/tab/Component.js +1 -1
  44. package/components/tab/index.css +3 -3
  45. package/components/tabs/Component.collabsible.desktop.d.ts +6 -0
  46. package/components/tabs/Component.collabsible.desktop.js +34 -0
  47. package/components/tabs/Component.collapsible.mobile.d.ts +6 -0
  48. package/components/tabs/Component.collapsible.mobile.js +35 -0
  49. package/components/tabs/Component.collapsible.responsive.d.ts +6 -0
  50. package/components/tabs/Component.collapsible.responsive.js +37 -0
  51. package/components/tabs/Component.d.ts +1 -1
  52. package/components/tabs/Component.desktop.d.ts +1 -1
  53. package/components/tabs/Component.desktop.js +4 -10
  54. package/components/tabs/Component.js +2 -2
  55. package/components/tabs/Component.mobile.d.ts +1 -1
  56. package/components/tabs/Component.mobile.js +5 -10
  57. package/components/tabs/Component.responsive.d.ts +1 -1
  58. package/components/tabs/Component.responsive.js +7 -10
  59. package/{esm/Component-3e68f8db.d.ts → cssm/Component-4cd3936b.d.ts} +2 -2
  60. package/cssm/Component-5e1b8383.d.ts +99 -4
  61. package/cssm/Component-63dec22f.d.ts +167 -0
  62. package/cssm/Component-8b2c2707.d.ts +14 -0
  63. package/cssm/Component-9211a437.d.ts +38 -0
  64. package/cssm/Component-c76d6398.d.ts +5 -0
  65. package/cssm/Component.desktop-2e2b2125.d.ts +6 -0
  66. package/cssm/Component.desktop-785df74d.d.ts +6 -0
  67. package/cssm/Component.mobile-755fbaa3.d.ts +6 -0
  68. package/cssm/Component.mobile-d7e9f69d.d.ts +6 -0
  69. package/cssm/Component.mobile-ebda875c.d.ts +6 -0
  70. package/cssm/Component.responsive-785df74d.d.ts +26 -0
  71. package/cssm/collapsible.d.ts +7 -0
  72. package/cssm/collapsible.js +41 -0
  73. package/cssm/components/primary-tablist/Component.collapsible.d.ts +5 -0
  74. package/cssm/components/primary-tablist/Component.collapsible.desktop.d.ts +5 -0
  75. package/cssm/components/primary-tablist/Component.collapsible.desktop.js +33 -0
  76. package/cssm/components/primary-tablist/Component.collapsible.js +81 -0
  77. package/cssm/components/primary-tablist/Component.collapsible.mobile.d.ts +6 -0
  78. package/cssm/components/primary-tablist/Component.collapsible.mobile.js +37 -0
  79. package/cssm/components/primary-tablist/Component.collapsible.responsive.d.ts +5 -0
  80. package/cssm/components/primary-tablist/Component.collapsible.responsive.js +36 -0
  81. package/cssm/components/primary-tablist/Component.d.ts +1 -1
  82. package/cssm/components/primary-tablist/Component.desktop.js +1 -7
  83. package/cssm/components/primary-tablist/Component.js +8 -40
  84. package/cssm/components/primary-tablist/Component.mobile.d.ts +1 -1
  85. package/cssm/components/primary-tablist/Component.mobile.js +1 -7
  86. package/cssm/components/primary-tablist/Component.responsive.d.ts +1 -1
  87. package/cssm/components/primary-tablist/Component.responsive.js +5 -13
  88. package/cssm/components/secondary-tablist/Component.d.ts +1 -1
  89. package/cssm/components/secondary-tablist/Component.desktop.d.ts +1 -1
  90. package/cssm/components/secondary-tablist/Component.desktop.js +3 -2
  91. package/cssm/components/secondary-tablist/Component.js +5 -3
  92. package/cssm/components/secondary-tablist/Component.mobile.js +3 -2
  93. package/cssm/components/secondary-tablist/Component.responsive.d.ts +1 -1
  94. package/cssm/components/secondary-tablist/Component.responsive.js +7 -8
  95. package/cssm/components/tabs/Component.collabsible.desktop.d.ts +6 -0
  96. package/cssm/components/tabs/Component.collabsible.desktop.js +34 -0
  97. package/cssm/components/tabs/Component.collapsible.mobile.d.ts +6 -0
  98. package/cssm/components/tabs/Component.collapsible.mobile.js +35 -0
  99. package/cssm/components/tabs/Component.collapsible.responsive.d.ts +6 -0
  100. package/cssm/components/tabs/Component.collapsible.responsive.js +37 -0
  101. package/cssm/components/tabs/Component.d.ts +1 -1
  102. package/cssm/components/tabs/Component.desktop.d.ts +1 -1
  103. package/cssm/components/tabs/Component.desktop.js +2 -8
  104. package/cssm/components/tabs/Component.js +2 -2
  105. package/cssm/components/tabs/Component.mobile.d.ts +1 -1
  106. package/cssm/components/tabs/Component.mobile.js +2 -8
  107. package/cssm/components/tabs/Component.responsive.d.ts +1 -1
  108. package/cssm/components/tabs/Component.responsive.js +4 -8
  109. package/cssm/desktop-2e2b2125.d.ts +2 -0
  110. package/cssm/desktop.d.ts +0 -4
  111. package/cssm/desktop.js +6 -15
  112. package/cssm/{hook-3e68f8db.d.ts → hook-9ea9e32c.d.ts} +10 -8
  113. package/cssm/hooks/use-collapsible-elements.js +9 -2
  114. package/cssm/hooks/use-tablist-titles.d.ts +2 -1
  115. package/cssm/hooks/use-tablist-titles.js +7 -5
  116. package/cssm/hooks/use-tabs.d.ts +1 -0
  117. package/cssm/hooks/use-tabs.js +3 -6
  118. package/cssm/index-8b2c2707.d.ts +6 -0
  119. package/cssm/index-c44170fe.d.ts +23 -0
  120. package/{esm/types-ebda875c.d.ts → cssm/index-c76d6398.d.ts} +42 -14
  121. package/cssm/index-ebda875c.d.ts +86 -18
  122. package/cssm/index-f12ee135.d.ts +307 -3
  123. package/cssm/index.d.ts +1 -4
  124. package/cssm/index.js +9 -15
  125. package/cssm/mobile-755fbaa3.d.ts +2 -0
  126. package/cssm/mobile-96988a65.d.ts +2 -0
  127. package/cssm/mobile.d.ts +0 -3
  128. package/cssm/mobile.js +6 -14
  129. package/{esm/index-3e68f8db.d.ts → cssm/shared-4cd3936b.d.ts} +48 -14
  130. package/cssm/shared.d.ts +4 -0
  131. package/cssm/shared.js +21 -0
  132. package/cssm/types-4480ac4f.d.ts +3 -0
  133. package/cssm/typings-5e1b8383.d.ts +2 -1
  134. package/cssm/typings-9211a437.d.ts +95 -0
  135. package/cssm/typings.d.ts +11 -10
  136. package/desktop-2e2b2125.d.ts +2 -0
  137. package/desktop.d.ts +0 -4
  138. package/desktop.js +7 -16
  139. package/{Component-3e68f8db.d.ts → esm/Component-4cd3936b.d.ts} +2 -2
  140. package/esm/Component-5e1b8383.d.ts +99 -4
  141. package/esm/Component-63dec22f.d.ts +167 -0
  142. package/esm/Component-8b2c2707.d.ts +14 -0
  143. package/esm/Component-9211a437.d.ts +38 -0
  144. package/esm/Component-c76d6398.d.ts +5 -0
  145. package/esm/Component.desktop-2e2b2125.d.ts +6 -0
  146. package/esm/Component.desktop-785df74d.d.ts +6 -0
  147. package/esm/Component.mobile-755fbaa3.d.ts +6 -0
  148. package/esm/Component.mobile-d7e9f69d.d.ts +6 -0
  149. package/esm/Component.mobile-ebda875c.d.ts +6 -0
  150. package/esm/Component.responsive-785df74d.d.ts +26 -0
  151. package/esm/collapsible.d.ts +7 -0
  152. package/esm/collapsible.js +26 -0
  153. package/esm/components/primary-tablist/Component.collapsible.d.ts +5 -0
  154. package/esm/components/primary-tablist/Component.collapsible.desktop.d.ts +5 -0
  155. package/esm/components/primary-tablist/Component.collapsible.desktop.js +24 -0
  156. package/esm/components/primary-tablist/Component.collapsible.js +72 -0
  157. package/esm/components/primary-tablist/Component.collapsible.mobile.d.ts +6 -0
  158. package/esm/components/primary-tablist/Component.collapsible.mobile.js +26 -0
  159. package/esm/components/primary-tablist/Component.collapsible.responsive.d.ts +5 -0
  160. package/esm/components/primary-tablist/Component.collapsible.responsive.js +28 -0
  161. package/esm/components/primary-tablist/Component.d.ts +1 -1
  162. package/esm/components/primary-tablist/Component.desktop.js +2 -8
  163. package/esm/components/primary-tablist/Component.js +10 -42
  164. package/esm/components/primary-tablist/Component.mobile.d.ts +1 -1
  165. package/esm/components/primary-tablist/Component.mobile.js +3 -11
  166. package/esm/components/primary-tablist/Component.responsive.d.ts +1 -1
  167. package/esm/components/primary-tablist/Component.responsive.js +7 -14
  168. package/esm/components/primary-tablist/index.css +29 -29
  169. package/esm/components/primary-tablist/mobile.css +40 -32
  170. package/esm/components/scrollable-container/Component.js +1 -1
  171. package/esm/components/scrollable-container/index.css +5 -5
  172. package/esm/components/secondary-tablist/Component.d.ts +1 -1
  173. package/esm/components/secondary-tablist/Component.desktop.d.ts +1 -1
  174. package/esm/components/secondary-tablist/Component.desktop.js +4 -3
  175. package/esm/components/secondary-tablist/Component.js +5 -3
  176. package/esm/components/secondary-tablist/Component.mobile.js +5 -4
  177. package/esm/components/secondary-tablist/Component.responsive.d.ts +1 -1
  178. package/esm/components/secondary-tablist/Component.responsive.js +8 -9
  179. package/esm/components/secondary-tablist/index.css +11 -11
  180. package/esm/components/secondary-tablist/mobile.css +21 -13
  181. package/esm/components/tab/Component.js +1 -1
  182. package/esm/components/tab/index.css +3 -3
  183. package/esm/components/tabs/Component.collabsible.desktop.d.ts +6 -0
  184. package/esm/components/tabs/Component.collabsible.desktop.js +26 -0
  185. package/esm/components/tabs/Component.collapsible.mobile.d.ts +6 -0
  186. package/esm/components/tabs/Component.collapsible.mobile.js +27 -0
  187. package/esm/components/tabs/Component.collapsible.responsive.d.ts +6 -0
  188. package/esm/components/tabs/Component.collapsible.responsive.js +29 -0
  189. package/esm/components/tabs/Component.d.ts +1 -1
  190. package/esm/components/tabs/Component.desktop.d.ts +1 -1
  191. package/esm/components/tabs/Component.desktop.js +4 -10
  192. package/esm/components/tabs/Component.js +2 -2
  193. package/esm/components/tabs/Component.mobile.d.ts +1 -1
  194. package/esm/components/tabs/Component.mobile.js +5 -10
  195. package/esm/components/tabs/Component.responsive.d.ts +1 -1
  196. package/esm/components/tabs/Component.responsive.js +7 -10
  197. package/esm/desktop-2e2b2125.d.ts +2 -0
  198. package/esm/desktop.d.ts +0 -4
  199. package/esm/desktop.js +7 -13
  200. package/{hook-3e68f8db.d.ts → esm/hook-9ea9e32c.d.ts} +10 -8
  201. package/esm/hooks/use-collapsible-elements.js +9 -2
  202. package/esm/hooks/use-tablist-titles.d.ts +2 -1
  203. package/esm/hooks/use-tablist-titles.js +7 -5
  204. package/esm/hooks/use-tabs.d.ts +1 -0
  205. package/esm/hooks/use-tabs.js +2 -5
  206. package/esm/index-8b2c2707.d.ts +6 -0
  207. package/esm/index-c44170fe.d.ts +23 -0
  208. package/{cssm/types-ebda875c.d.ts → esm/index-c76d6398.d.ts} +42 -14
  209. package/esm/index-ebda875c.d.ts +86 -18
  210. package/esm/index-f12ee135.d.ts +307 -3
  211. package/esm/index.d.ts +1 -4
  212. package/esm/index.js +11 -14
  213. package/esm/index.module-07ef4b36.js +4 -0
  214. package/esm/index.module-a9e566cd.js +4 -0
  215. package/esm/mobile-755fbaa3.d.ts +2 -0
  216. package/esm/mobile-96988a65.d.ts +2 -0
  217. package/esm/mobile.d.ts +0 -3
  218. package/esm/mobile.js +8 -13
  219. package/esm/mobile.module-a482a7ab.js +4 -0
  220. package/{index-3e68f8db.d.ts → esm/shared-4cd3936b.d.ts} +48 -14
  221. package/esm/shared.d.ts +4 -0
  222. package/esm/shared.js +10 -0
  223. package/esm/types-4480ac4f.d.ts +3 -0
  224. package/esm/typings-5e1b8383.d.ts +2 -1
  225. package/esm/typings-9211a437.d.ts +95 -0
  226. package/esm/typings.d.ts +11 -10
  227. package/{modern/hook-3e68f8db.d.ts → hook-9ea9e32c.d.ts} +10 -8
  228. package/hooks/use-collapsible-elements.js +9 -2
  229. package/hooks/use-tablist-titles.d.ts +2 -1
  230. package/hooks/use-tablist-titles.js +7 -5
  231. package/hooks/use-tabs.d.ts +1 -0
  232. package/hooks/use-tabs.js +3 -6
  233. package/index-8b2c2707.d.ts +6 -0
  234. package/index-c44170fe.d.ts +23 -0
  235. package/{modern/types-ebda875c.d.ts → index-c76d6398.d.ts} +42 -14
  236. package/index-ebda875c.d.ts +86 -18
  237. package/index-f12ee135.d.ts +307 -3
  238. package/index.d.ts +1 -4
  239. package/index.js +11 -16
  240. package/index.module-5dc2b717.js +6 -0
  241. package/index.module-d50828f5.js +6 -0
  242. package/mobile-755fbaa3.d.ts +2 -0
  243. package/mobile-96988a65.d.ts +2 -0
  244. package/mobile.d.ts +0 -3
  245. package/mobile.js +8 -15
  246. package/mobile.module-39c6dc63.js +6 -0
  247. package/modern/{Component-3e68f8db.d.ts → Component-4cd3936b.d.ts} +2 -2
  248. package/modern/Component-5e1b8383.d.ts +99 -4
  249. package/modern/Component-63dec22f.d.ts +167 -0
  250. package/modern/Component-8b2c2707.d.ts +14 -0
  251. package/modern/Component-9211a437.d.ts +38 -0
  252. package/modern/Component-c76d6398.d.ts +5 -0
  253. package/modern/Component.desktop-2e2b2125.d.ts +6 -0
  254. package/modern/Component.desktop-785df74d.d.ts +6 -0
  255. package/modern/Component.mobile-755fbaa3.d.ts +6 -0
  256. package/modern/Component.mobile-d7e9f69d.d.ts +6 -0
  257. package/modern/Component.mobile-ebda875c.d.ts +6 -0
  258. package/modern/Component.responsive-785df74d.d.ts +26 -0
  259. package/modern/collapsible.d.ts +7 -0
  260. package/modern/collapsible.js +25 -0
  261. package/modern/components/primary-tablist/Component.collapsible.d.ts +5 -0
  262. package/modern/components/primary-tablist/Component.collapsible.desktop.d.ts +5 -0
  263. package/modern/components/primary-tablist/Component.collapsible.desktop.js +20 -0
  264. package/modern/components/primary-tablist/Component.collapsible.js +61 -0
  265. package/modern/components/primary-tablist/Component.collapsible.mobile.d.ts +6 -0
  266. package/modern/components/primary-tablist/Component.collapsible.mobile.js +25 -0
  267. package/modern/components/primary-tablist/Component.collapsible.responsive.d.ts +5 -0
  268. package/modern/components/primary-tablist/Component.collapsible.responsive.js +26 -0
  269. package/modern/components/primary-tablist/Component.d.ts +1 -1
  270. package/modern/components/primary-tablist/Component.desktop.js +2 -8
  271. package/modern/components/primary-tablist/Component.js +8 -37
  272. package/modern/components/primary-tablist/Component.mobile.d.ts +1 -1
  273. package/modern/components/primary-tablist/Component.mobile.js +3 -11
  274. package/modern/components/primary-tablist/Component.responsive.d.ts +1 -1
  275. package/modern/components/primary-tablist/Component.responsive.js +7 -14
  276. package/modern/components/primary-tablist/index.css +29 -29
  277. package/modern/components/primary-tablist/mobile.css +40 -32
  278. package/modern/components/scrollable-container/Component.js +1 -1
  279. package/modern/components/scrollable-container/index.css +5 -5
  280. package/modern/components/secondary-tablist/Component.d.ts +1 -1
  281. package/modern/components/secondary-tablist/Component.desktop.d.ts +1 -1
  282. package/modern/components/secondary-tablist/Component.desktop.js +4 -3
  283. package/modern/components/secondary-tablist/Component.js +12 -8
  284. package/modern/components/secondary-tablist/Component.mobile.js +5 -4
  285. package/modern/components/secondary-tablist/Component.responsive.d.ts +1 -1
  286. package/modern/components/secondary-tablist/Component.responsive.js +8 -9
  287. package/modern/components/secondary-tablist/index.css +11 -11
  288. package/modern/components/secondary-tablist/mobile.css +21 -13
  289. package/modern/components/tab/Component.js +1 -1
  290. package/modern/components/tab/index.css +3 -3
  291. package/modern/components/tabs/Component.collabsible.desktop.d.ts +6 -0
  292. package/modern/components/tabs/Component.collabsible.desktop.js +22 -0
  293. package/modern/components/tabs/Component.collapsible.mobile.d.ts +6 -0
  294. package/modern/components/tabs/Component.collapsible.mobile.js +23 -0
  295. package/modern/components/tabs/Component.collapsible.responsive.d.ts +6 -0
  296. package/modern/components/tabs/Component.collapsible.responsive.js +25 -0
  297. package/modern/components/tabs/Component.d.ts +1 -1
  298. package/modern/components/tabs/Component.desktop.d.ts +1 -1
  299. package/modern/components/tabs/Component.desktop.js +4 -10
  300. package/modern/components/tabs/Component.js +2 -2
  301. package/modern/components/tabs/Component.mobile.d.ts +1 -1
  302. package/modern/components/tabs/Component.mobile.js +5 -10
  303. package/modern/components/tabs/Component.responsive.d.ts +1 -1
  304. package/modern/components/tabs/Component.responsive.js +7 -10
  305. package/modern/desktop-2e2b2125.d.ts +2 -0
  306. package/modern/desktop.d.ts +0 -4
  307. package/modern/desktop.js +7 -13
  308. package/{esm/hook-3e68f8db.d.ts → modern/hook-9ea9e32c.d.ts} +10 -8
  309. package/modern/hooks/use-collapsible-elements.js +9 -2
  310. package/modern/hooks/use-tablist-titles.d.ts +2 -1
  311. package/modern/hooks/use-tablist-titles.js +7 -5
  312. package/modern/hooks/use-tabs.d.ts +1 -0
  313. package/modern/hooks/use-tabs.js +2 -5
  314. package/modern/index-8b2c2707.d.ts +6 -0
  315. package/modern/index-c44170fe.d.ts +23 -0
  316. package/{types-ebda875c.d.ts → modern/index-c76d6398.d.ts} +42 -14
  317. package/modern/index-ebda875c.d.ts +86 -18
  318. package/modern/index-f12ee135.d.ts +307 -3
  319. package/modern/index.d.ts +1 -4
  320. package/modern/index.js +11 -14
  321. package/modern/index.module-2e9ff693.js +4 -0
  322. package/modern/index.module-79e3dc27.js +4 -0
  323. package/modern/mobile-755fbaa3.d.ts +2 -0
  324. package/modern/mobile-96988a65.d.ts +2 -0
  325. package/modern/mobile.d.ts +0 -3
  326. package/modern/mobile.js +8 -13
  327. package/modern/mobile.module-ba3f5e47.js +4 -0
  328. package/{cssm/index-3e68f8db.d.ts → modern/shared-4cd3936b.d.ts} +48 -14
  329. package/modern/shared.d.ts +4 -0
  330. package/modern/shared.js +9 -0
  331. package/modern/types-4480ac4f.d.ts +3 -0
  332. package/modern/typings-5e1b8383.d.ts +2 -1
  333. package/modern/typings-9211a437.d.ts +95 -0
  334. package/modern/typings.d.ts +11 -10
  335. package/package.json +36 -5
  336. package/{modern/index-3e68f8db.d.ts → shared-4cd3936b.d.ts} +48 -14
  337. package/shared.d.ts +4 -0
  338. package/shared.js +20 -0
  339. package/src/collapsible.ts +10 -0
  340. package/src/components/primary-tablist/Component.collapsible.desktop.tsx +11 -0
  341. package/src/components/primary-tablist/Component.collapsible.mobile.tsx +27 -0
  342. package/src/components/primary-tablist/Component.collapsible.responsive.tsx +34 -0
  343. package/src/components/primary-tablist/Component.collapsible.tsx +132 -0
  344. package/src/components/primary-tablist/Component.desktop.tsx +11 -0
  345. package/src/components/primary-tablist/Component.mobile.tsx +20 -0
  346. package/src/components/primary-tablist/Component.responsive.tsx +34 -0
  347. package/src/components/primary-tablist/Component.tsx +74 -0
  348. package/src/components/primary-tablist/index.module.css +181 -0
  349. package/src/components/primary-tablist/mobile.module.css +20 -0
  350. package/src/components/scrollable-container/Component.tsx +66 -0
  351. package/src/components/scrollable-container/index.module.css +26 -0
  352. package/src/components/scrollable-container/index.ts +1 -0
  353. package/src/components/secondary-tablist/Component.desktop.tsx +24 -0
  354. package/src/components/secondary-tablist/Component.mobile.tsx +31 -0
  355. package/src/components/secondary-tablist/Component.responsive.tsx +24 -0
  356. package/src/components/secondary-tablist/Component.tsx +70 -0
  357. package/src/components/secondary-tablist/index.module.css +49 -0
  358. package/src/components/secondary-tablist/mobile.module.css +11 -0
  359. package/src/components/tab/Component.tsx +25 -0
  360. package/src/components/tab/index.module.css +7 -0
  361. package/src/components/tab/index.ts +1 -0
  362. package/src/components/tabs/Component.collabsible.desktop.tsx +15 -0
  363. package/src/components/tabs/Component.collapsible.mobile.tsx +15 -0
  364. package/src/components/tabs/Component.collapsible.responsive.tsx +12 -0
  365. package/src/components/tabs/Component.desktop.tsx +26 -0
  366. package/src/components/tabs/Component.mobile.tsx +20 -0
  367. package/src/components/tabs/Component.responsive.tsx +20 -0
  368. package/src/components/tabs/Component.tsx +67 -0
  369. package/src/components/title/Component.tsx +51 -0
  370. package/src/components/title/index.ts +1 -0
  371. package/src/desktop.ts +4 -0
  372. package/src/hooks/use-collapsible-elements.ts +78 -0
  373. package/src/hooks/use-tablist-titles.ts +91 -0
  374. package/src/hooks/use-tabs.tsx +129 -0
  375. package/src/index.ts +7 -0
  376. package/src/mobile.ts +4 -0
  377. package/src/shared.ts +4 -0
  378. package/src/synthetic-events.ts +70 -0
  379. package/src/typings.ts +187 -0
  380. package/src/vars.css +68 -0
  381. package/types-4480ac4f.d.ts +3 -0
  382. package/typings-5e1b8383.d.ts +2 -1
  383. package/typings-9211a437.d.ts +95 -0
  384. package/typings.d.ts +11 -10
  385. package/Component-2aef4eba.d.ts +0 -50
  386. package/Component-3885b0d7.d.ts +0 -71
  387. package/Component-3ebe4754.d.ts +0 -176
  388. package/Component.mobile-b2c0420d.d.ts +0 -35
  389. package/Component.responsive-2aef4eba.d.ts +0 -30
  390. package/component-3885b0d7.d.ts +0 -43
  391. package/cssm/Component-2aef4eba.d.ts +0 -50
  392. package/cssm/Component-3885b0d7.d.ts +0 -71
  393. package/cssm/Component-3ebe4754.d.ts +0 -176
  394. package/cssm/Component.mobile-b2c0420d.d.ts +0 -35
  395. package/cssm/Component.responsive-2aef4eba.d.ts +0 -30
  396. package/cssm/component-3885b0d7.d.ts +0 -43
  397. package/cssm/index-2aef4eba.d.ts +0 -5
  398. package/cssm/index-3885b0d7.d.ts +0 -3
  399. package/cssm/index-3ebe4754.d.ts +0 -1
  400. package/cssm/index-701e77da.d.ts +0 -4
  401. package/cssm/index-e81c389f.d.ts +0 -3
  402. package/cssm/responsive.d.ts +0 -8
  403. package/cssm/responsive.js +0 -47
  404. package/cssm/types-3441be57.d.ts +0 -243
  405. package/cssm/utils-b64479aa.d.ts +0 -8
  406. package/esm/Component-2aef4eba.d.ts +0 -50
  407. package/esm/Component-3885b0d7.d.ts +0 -71
  408. package/esm/Component-3ebe4754.d.ts +0 -176
  409. package/esm/Component.mobile-b2c0420d.d.ts +0 -35
  410. package/esm/Component.responsive-2aef4eba.d.ts +0 -30
  411. package/esm/component-3885b0d7.d.ts +0 -43
  412. package/esm/index-2aef4eba.d.ts +0 -5
  413. package/esm/index-3885b0d7.d.ts +0 -3
  414. package/esm/index-3ebe4754.d.ts +0 -1
  415. package/esm/index-701e77da.d.ts +0 -4
  416. package/esm/index-e81c389f.d.ts +0 -3
  417. package/esm/index.module-635513a6.js +0 -4
  418. package/esm/index.module-e99388b2.js +0 -4
  419. package/esm/responsive.d.ts +0 -8
  420. package/esm/responsive.js +0 -29
  421. package/esm/types-3441be57.d.ts +0 -243
  422. package/esm/utils-b64479aa.d.ts +0 -8
  423. package/index-2aef4eba.d.ts +0 -5
  424. package/index-3885b0d7.d.ts +0 -3
  425. package/index-3ebe4754.d.ts +0 -1
  426. package/index-701e77da.d.ts +0 -4
  427. package/index-e81c389f.d.ts +0 -3
  428. package/index.module-0362701b.js +0 -6
  429. package/index.module-b8728ee4.js +0 -6
  430. package/modern/Component-2aef4eba.d.ts +0 -50
  431. package/modern/Component-3885b0d7.d.ts +0 -71
  432. package/modern/Component-3ebe4754.d.ts +0 -176
  433. package/modern/Component.mobile-b2c0420d.d.ts +0 -35
  434. package/modern/Component.responsive-2aef4eba.d.ts +0 -30
  435. package/modern/component-3885b0d7.d.ts +0 -43
  436. package/modern/index-2aef4eba.d.ts +0 -5
  437. package/modern/index-3885b0d7.d.ts +0 -3
  438. package/modern/index-3ebe4754.d.ts +0 -1
  439. package/modern/index-701e77da.d.ts +0 -4
  440. package/modern/index-e81c389f.d.ts +0 -3
  441. package/modern/index.module-34edbfd1.js +0 -4
  442. package/modern/index.module-f1cda2bf.js +0 -4
  443. package/modern/responsive.d.ts +0 -8
  444. package/modern/responsive.js +0 -28
  445. package/modern/types-3441be57.d.ts +0 -243
  446. package/modern/utils-b64479aa.d.ts +0 -8
  447. package/responsive.d.ts +0 -8
  448. package/responsive.js +0 -43
  449. package/types-3441be57.d.ts +0 -243
  450. package/utils-b64479aa.d.ts +0 -8
@@ -0,0 +1,129 @@
1
+ import { KeyboardEvent, MouseEvent, MutableRefObject, useCallback, useRef, useState } from 'react';
2
+
3
+ import { getDataTestId } from '@alfalab/core-components-shared';
4
+
5
+ import { TabListTitle, UseTabsProps } from '../typings';
6
+
7
+ export function useTabs({ titles = [], selectedId, onChange }: UseTabsProps) {
8
+ const [selectedTab, setSelectedTab] = useState<HTMLButtonElement | null>(null);
9
+ const [focusedTab, setFocusedTab] = useState<HTMLButtonElement | null>(null);
10
+ const itemRefs = useRef<HTMLButtonElement[]>([]);
11
+
12
+ const handleItemRef = useCallback(
13
+ (node: HTMLButtonElement, item: TabListTitle, index: number) => {
14
+ if (node && item.id === selectedId) setSelectedTab(node);
15
+ itemRefs.current[index] = node;
16
+ },
17
+ [selectedId],
18
+ );
19
+
20
+ const handleItemClick = useCallback(
21
+ (event: MouseEvent, item: TabListTitle) => {
22
+ if (onChange && item.id !== selectedId) {
23
+ onChange(event, { selectedId: item.id });
24
+ }
25
+ },
26
+ [onChange, selectedId],
27
+ );
28
+
29
+ const focusTab = useCallback(
30
+ (position: 'prev' | 'next' | 'start' | 'end') => {
31
+ const refs = itemRefs.current;
32
+
33
+ const tabAvailable = (ref: HTMLButtonElement) => ref && !ref.disabled;
34
+
35
+ if (refs.every((ref) => !tabAvailable(ref))) return;
36
+
37
+ let focusedTabIndex = refs.findIndex((node) => document.activeElement === node);
38
+
39
+ if (focusedTabIndex === -1) {
40
+ focusedTabIndex = refs.findIndex((node) => node === selectedTab);
41
+ }
42
+
43
+ let newFocusIndex;
44
+
45
+ switch (position) {
46
+ case 'prev':
47
+ newFocusIndex = focusedTabIndex === 0 ? refs.length - 1 : focusedTabIndex - 1;
48
+ break;
49
+ case 'next':
50
+ newFocusIndex = focusedTabIndex === refs.length - 1 ? 0 : focusedTabIndex + 1;
51
+ break;
52
+ case 'start':
53
+ newFocusIndex = 0;
54
+ break;
55
+ case 'end':
56
+ newFocusIndex = refs.length - 1;
57
+ break;
58
+ }
59
+
60
+ const shift = ['prev', 'end'].includes(position) ? -1 : 1;
61
+
62
+ while (!tabAvailable(refs[newFocusIndex])) {
63
+ newFocusIndex = (refs.length + newFocusIndex + shift) % refs.length;
64
+ }
65
+
66
+ refs[newFocusIndex].focus();
67
+
68
+ setFocusedTab(refs[newFocusIndex]);
69
+ },
70
+ [selectedTab, itemRefs],
71
+ );
72
+
73
+ const handleKeyDown = useCallback(
74
+ (event: KeyboardEvent<HTMLButtonElement>) => {
75
+ switch (event.key) {
76
+ case 'ArrowLeft':
77
+ focusTab('prev');
78
+
79
+ event.preventDefault();
80
+ break;
81
+ case 'ArrowRight':
82
+ focusTab('next');
83
+
84
+ event.preventDefault();
85
+ break;
86
+ case 'Home':
87
+ focusTab('start');
88
+
89
+ event.preventDefault();
90
+ break;
91
+ case 'End':
92
+ focusTab('end');
93
+
94
+ event.preventDefault();
95
+ break;
96
+ default:
97
+ break;
98
+ }
99
+ },
100
+ [focusTab],
101
+ );
102
+
103
+ const getTabListItemProps = (index: number, outerRef?: MutableRefObject<HTMLElement>) => {
104
+ const item = titles[index];
105
+ const itemSelected = item.id === selectedId;
106
+
107
+ return {
108
+ role: 'tab',
109
+ tabIndex: itemSelected ? 0 : -1,
110
+ 'aria-selected': itemSelected,
111
+ selected: itemSelected,
112
+ 'data-test-id': getDataTestId(item.dataTestId, 'toggle'),
113
+ disabled: item.disabled,
114
+ ref: (node: HTMLButtonElement) => {
115
+ // eslint-disable-next-line no-param-reassign
116
+ if (outerRef) outerRef.current = node;
117
+ handleItemRef(node, item, index);
118
+ },
119
+ onKeyDown: handleKeyDown,
120
+ onClick: (event?: MouseEvent) => handleItemClick(event as MouseEvent, item),
121
+ };
122
+ };
123
+
124
+ return {
125
+ getTabListItemProps,
126
+ selectedTab,
127
+ focusedTab,
128
+ };
129
+ }
package/src/index.ts ADDED
@@ -0,0 +1,7 @@
1
+ export * from './components/primary-tablist/Component.responsive';
2
+ export * from './components/secondary-tablist/Component.responsive';
3
+ export * from './components/tab';
4
+ export {
5
+ TabsResponsive as Tabs,
6
+ TabsResponsiveProps as TabsProps,
7
+ } from './components/tabs/Component.responsive';
package/src/mobile.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from './components/primary-tablist/Component.mobile';
2
+ export * from './components/secondary-tablist/Component.mobile';
3
+ export * from './components/tab';
4
+ export * from './components/tabs/Component.mobile';
package/src/shared.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from './components/scrollable-container';
2
+ export * from './hooks/use-tabs';
3
+ export * from './hooks/use-collapsible-elements';
4
+ export * from './typings';
@@ -0,0 +1,70 @@
1
+ import React from 'react';
2
+
3
+ export const createSyntheticEvent = <T extends Element, E extends Event>(
4
+ event: E,
5
+ ): React.SyntheticEvent<T, E> => {
6
+ let isDefaultPrevented = false;
7
+ let isPropagationStopped = false;
8
+ const preventDefault = () => {
9
+ isDefaultPrevented = true;
10
+ event.preventDefault();
11
+ };
12
+ const stopPropagation = () => {
13
+ isPropagationStopped = true;
14
+ event.stopPropagation();
15
+ };
16
+
17
+ return {
18
+ nativeEvent: event,
19
+ currentTarget: event.currentTarget as EventTarget & T,
20
+ target: event.target as EventTarget & T,
21
+ bubbles: event.bubbles,
22
+ cancelable: event.cancelable,
23
+ defaultPrevented: event.defaultPrevented,
24
+ eventPhase: event.eventPhase,
25
+ isTrusted: event.isTrusted,
26
+ preventDefault,
27
+ isDefaultPrevented: () => isDefaultPrevented,
28
+ stopPropagation,
29
+ isPropagationStopped: () => isPropagationStopped,
30
+ persist: () => {},
31
+ timeStamp: event.timeStamp,
32
+ type: event.type,
33
+ };
34
+ };
35
+
36
+ export const createUIEvent = <T extends Element, E extends Event>(
37
+ event: E,
38
+ ): React.UIEvent<T, E> => ({
39
+ ...createSyntheticEvent(event),
40
+ detail: 0,
41
+ view: {
42
+ styleMedia: {
43
+ type: '',
44
+ matchMedium: () => false,
45
+ },
46
+ document,
47
+ },
48
+ });
49
+
50
+ export const createSyntheticMouseEvent = <T extends Element>(
51
+ event: MouseEvent,
52
+ ): React.MouseEvent<T, MouseEvent> => ({
53
+ ...createUIEvent<T, MouseEvent>(event),
54
+ altKey: event.altKey,
55
+ button: event.button,
56
+ buttons: event.buttons,
57
+ clientX: event.clientX,
58
+ clientY: event.clientY,
59
+ ctrlKey: event.ctrlKey,
60
+ getModifierState: event.getModifierState,
61
+ metaKey: event.metaKey,
62
+ movementX: event.movementX,
63
+ movementY: event.movementY,
64
+ pageX: event.pageX,
65
+ pageY: event.pageY,
66
+ relatedTarget: event.relatedTarget,
67
+ screenX: event.screenX,
68
+ screenY: event.screenY,
69
+ shiftKey: event.shiftKey,
70
+ });
package/src/typings.ts ADDED
@@ -0,0 +1,187 @@
1
+ import { FC, MouseEvent, ReactElement, ReactNode } from 'react';
2
+
3
+ import { TagProps } from '@alfalab/core-components-tag';
4
+
5
+ export type SelectedId = string | number;
6
+
7
+ export type TabsProps = {
8
+ /**
9
+ * Дополнительный класс
10
+ */
11
+ className?: string;
12
+
13
+ /**
14
+ * Дополнительный класс контейнера
15
+ */
16
+ containerClassName?: string;
17
+
18
+ /**
19
+ * Id активного таба
20
+ */
21
+ selectedId?: SelectedId;
22
+
23
+ /**
24
+ * Рендерить неактивные табы
25
+ */
26
+ keepMounted?: boolean;
27
+
28
+ /**
29
+ * Внешний вид заголовков табов
30
+ */
31
+ view?: 'primary' | 'secondary';
32
+
33
+ /**
34
+ * Высота заголовков табов
35
+ */
36
+ size?: 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl';
37
+
38
+ /**
39
+ * Значение по-умолчанию для хука useMatchMedia
40
+ */
41
+ defaultMatchMediaValue?: boolean | (() => boolean);
42
+
43
+ /**
44
+ * Мобильный вид
45
+ */
46
+ mobile?: boolean;
47
+
48
+ /**
49
+ * Рендерить заголовки табов в контейнере со скроллом
50
+ */
51
+ scrollable?: boolean;
52
+
53
+ /**
54
+ * Список табов, для контроля переноса вкладок в PickerButton
55
+ */
56
+ collapsedTabsIds?: string[];
57
+
58
+ /**
59
+ * При скроле табы будут уходить в край экрана
60
+ */
61
+ fullWidthScroll?: boolean;
62
+
63
+ /**
64
+ * Компоненты табов
65
+ */
66
+ children: Array<ReactElement<TabProps>>;
67
+
68
+ /**
69
+ * Компонент заголовков табов
70
+ */
71
+ TabList: FC<TabListProps>;
72
+
73
+ /**
74
+ * Обработчик переключения табов
75
+ */
76
+ onChange?: (event: MouseEvent, payload: { selectedId: SelectedId }) => void;
77
+
78
+ /**
79
+ * Идентификатор для систем автоматизированного тестирования
80
+ */
81
+ dataTestId?: string;
82
+
83
+ /**
84
+ * Контрольная точка для тега, с нее начинается desktop версия
85
+ * @default 1024
86
+ */
87
+ breakpoint?: number;
88
+ };
89
+
90
+ export type TabProps = {
91
+ /**
92
+ * Id таба
93
+ */
94
+ id: SelectedId;
95
+
96
+ /**
97
+ * Заголовок таба
98
+ */
99
+ title: string;
100
+
101
+ /**
102
+ * Дополнительный класс для контейнера содержимого таба
103
+ */
104
+ className?: string;
105
+
106
+ /**
107
+ * Дополнительный класс для кнопки таба
108
+ */
109
+ toggleClassName?: string;
110
+
111
+ /**
112
+ * Блокирует таб
113
+ */
114
+ disabled?: boolean;
115
+
116
+ /**
117
+ * Управление видимостью таба
118
+ */
119
+ hidden?: boolean;
120
+
121
+ /**
122
+ * Рендерить таб, если он неактивен
123
+ */
124
+ keepMounted?: boolean;
125
+
126
+ /**
127
+ * Контент таба
128
+ */
129
+ children?: ReactNode;
130
+
131
+ /**
132
+ * Слот справа
133
+ */
134
+ rightAddons?: ReactNode;
135
+
136
+ /**
137
+ * Идентификатор для систем автоматизированного тестирования
138
+ */
139
+ dataTestId?: string;
140
+ };
141
+
142
+ export type TabListTitle = {
143
+ title: string;
144
+ id: SelectedId;
145
+ disabled?: boolean;
146
+ rightAddons?: ReactNode;
147
+ hidden?: boolean;
148
+ toggleClassName?: string;
149
+ selected?: boolean;
150
+ collapsed?: boolean;
151
+ dataTestId?: string;
152
+ };
153
+
154
+ export type TabListProps = Pick<
155
+ TabsProps,
156
+ | 'className'
157
+ | 'containerClassName'
158
+ | 'size'
159
+ | 'defaultMatchMediaValue'
160
+ | 'selectedId'
161
+ | 'scrollable'
162
+ | 'collapsedTabsIds'
163
+ | 'onChange'
164
+ | 'dataTestId'
165
+ | 'fullWidthScroll'
166
+ > & {
167
+ /**
168
+ * Заголовки табов
169
+ */
170
+ titles?: TabListTitle[];
171
+ /**
172
+ * Контрольная точка, с нее начинается desktop версия
173
+ * @default 1024
174
+ */
175
+ breakpoint?: number;
176
+ };
177
+
178
+ export type SecondaryTabListProps = TabListProps & {
179
+ tagSize?: TagProps['size'];
180
+ TagComponent?: FC<Omit<TagProps, 'breakpoint'>>;
181
+ };
182
+
183
+ export type UseTabsProps = TabListProps;
184
+
185
+ export type Styles = {
186
+ styles?: { [key: string]: string };
187
+ };
package/src/vars.css ADDED
@@ -0,0 +1,68 @@
1
+ @import '@alfalab/core-components-themes/src/default.css';
2
+
3
+ :root {
4
+ --primary-tablist-color: var(--color-light-text-secondary);
5
+ --primary-tablist-hover-color: var(--color-light-text-primary);
6
+ --primary-tablist-selected-color: var(--color-light-text-primary);
7
+ --primary-tablist-disabled-color: var(--color-light-text-tertiary);
8
+ --primary-tablist-bottom-border-color: var(--color-light-border-primary);
9
+ --primary-tablist-line-color: var(--color-light-border-accent);
10
+ --primary-tablist-font-feature-settings: normal;
11
+
12
+ /* mobile */
13
+ --primary-tablist-mobile-gaps: var(--gap-xl);
14
+ --primary-tablist-mobile-font-size: 16px;
15
+ --primary-tablist-mobile-line-height: 24px;
16
+ --primary-tablist-mobile-font-weight: 400;
17
+ --primary-tablist-mobile-font-family: var(--font-family-system);
18
+ --primary-tablist-mobile-padding: 0 0 var(--gap-s);
19
+
20
+ /* size s */
21
+ --primary-tablist-s-gaps: var(--gap-2xl);
22
+ --primary-tablist-s-font-size: 18px;
23
+ --primary-tablist-s-font-weight: 400;
24
+ --primary-tablist-s-font-family: var(--font-family-system);
25
+ --primary-tablist-s-padding: 0 0 var(--gap-s);
26
+
27
+ /* size m */
28
+ --primary-tablist-m-gaps: var(--gap-2xl);
29
+ --primary-tablist-m-font-size: 18px;
30
+ --primary-tablist-m-font-weight: 400;
31
+ --primary-tablist-m-font-family: var(--font-family-system);
32
+ --primary-tablist-m-padding: 0 0 var(--gap-m);
33
+
34
+ /* size l */
35
+ --primary-tablist-l-gaps: var(--gap-2xl);
36
+ --primary-tablist-l-font-size: 18px;
37
+ --primary-tablist-l-font-weight: 400;
38
+ --primary-tablist-l-font-family: var(--font-family-system);
39
+ --primary-tablist-l-padding: 0 0 var(--gap-l);
40
+
41
+ /* size xl */
42
+ --primary-tablist-xl-gaps: var(--gap-2xl);
43
+ --primary-tablist-xl-font-size: 18px;
44
+ --primary-tablist-xl-font-weight: 400;
45
+ --primary-tablist-xl-font-family: var(--font-family-system);
46
+ --primary-tablist-xl-padding: 0 0 var(--gap-l);
47
+
48
+ /* mobile */
49
+ --secondary-tablist-mobile-gaps: var(--gap-xs);
50
+
51
+ /* size xxs */
52
+ --secondary-tablist-xxs-gaps: var(--gap-xs);
53
+
54
+ /* size xs */
55
+ --secondary-tablist-xs-gaps: var(--gap-xs);
56
+
57
+ /* size s */
58
+ --secondary-tablist-s-gaps: var(--gap-s);
59
+
60
+ /* size m */
61
+ --secondary-tablist-m-gaps: var(--gap-s);
62
+
63
+ /* size l */
64
+ --secondary-tablist-l-gaps: var(--gap-m);
65
+
66
+ /* size xl */
67
+ --secondary-tablist-xl-gaps: var(--gap-m);
68
+ }
@@ -0,0 +1,3 @@
1
+ type PickerButtonSize = 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl';
2
+ type PickerButtonVariant = 'default' | 'compact';
3
+ export { PickerButtonSize, PickerButtonVariant };
@@ -1,5 +1,6 @@
1
1
  import { AriaAttributes, FC, FocusEvent, MouseEvent, ReactElement, ReactNode, RefAttributes, SVGProps } from 'react';
2
- import { InputProps, PopoverProps } from "./index-ebda875c";
2
+ import { InputProps } from "./index-c44170fe";
3
+ import { PopoverProps } from "./index-ebda875c";
3
4
  type AnyObject = Record<string, any>;
4
5
  type OptionShape = {
5
6
  /**
@@ -0,0 +1,95 @@
1
+ import { AnchorHTMLAttributes, ButtonHTMLAttributes, ElementType, ReactNode } from 'react';
2
+ type StyleColors = {
3
+ default: {
4
+ [key: string]: string;
5
+ };
6
+ inverted: {
7
+ [key: string]: string;
8
+ };
9
+ };
10
+ type ComponentProps = {
11
+ /**
12
+ * Тип кнопки
13
+ * @default secondary
14
+ */
15
+ view?: 'accent' | 'primary' | 'secondary' | 'tertiary' | 'outlined' | 'filled' | 'transparent' | 'link' | 'ghost';
16
+ /**
17
+ * Слот слева
18
+ */
19
+ leftAddons?: ReactNode;
20
+ /**
21
+ * Слот справа
22
+ */
23
+ rightAddons?: ReactNode;
24
+ /**
25
+ * Размер компонента
26
+ * @default m
27
+ */
28
+ size?: 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl';
29
+ /**
30
+ * Растягивает компонент на ширину контейнера
31
+ * @default false
32
+ */
33
+ block?: boolean;
34
+ /**
35
+ * Дополнительный класс
36
+ */
37
+ className?: string;
38
+ /**
39
+ * Дополнительный класс для спиннера
40
+ */
41
+ spinnerClassName?: string;
42
+ /**
43
+ * Выводит ссылку в виде кнопки
44
+ */
45
+ href?: string;
46
+ /**
47
+ * Позволяет использовать кастомный компонент для кнопки (например Link из роутера)
48
+ */
49
+ Component?: ElementType;
50
+ /**
51
+ * Идентификатор для систем автоматизированного тестирования
52
+ */
53
+ dataTestId?: string;
54
+ /**
55
+ * Показать лоадер
56
+ * @default false
57
+ */
58
+ loading?: boolean;
59
+ /**
60
+ * Не переносить текст кнопки на новую строку
61
+ * @default false
62
+ */
63
+ nowrap?: boolean;
64
+ /**
65
+ * Набор цветов для компонента
66
+ */
67
+ colors?: 'default' | 'inverted';
68
+ /**
69
+ * Дочерние элементы.
70
+ */
71
+ children?: ReactNode;
72
+ /**
73
+ * Основные стили компонента.
74
+ */
75
+ styles: {
76
+ [key: string]: string;
77
+ };
78
+ /**
79
+ * Стили компонента для default и inverted режима.
80
+ */
81
+ colorStylesMap: StyleColors;
82
+ };
83
+ type AnchorBaseButtonProps = ComponentProps & AnchorHTMLAttributes<HTMLAnchorElement>;
84
+ type NativeBaseButtonProps = ComponentProps & ButtonHTMLAttributes<HTMLButtonElement>;
85
+ type BaseButtonProps = Partial<AnchorBaseButtonProps | NativeBaseButtonProps>;
86
+ type AnchorButtonProps = Omit<BaseButtonProps, 'styles' | 'colorStylesMap'> & AnchorHTMLAttributes<HTMLAnchorElement>;
87
+ type NativeButtonProps = Omit<BaseButtonProps, 'styles' | 'colorStylesMap'> & ButtonHTMLAttributes<HTMLButtonElement>;
88
+ type ButtonProps = Partial<AnchorButtonProps | NativeButtonProps> & {
89
+ /**
90
+ * Контрольная точка, с нее начинается desktop версия
91
+ * @default 1024
92
+ */
93
+ breakpoint?: number;
94
+ };
95
+ export { StyleColors, ComponentProps, AnchorBaseButtonProps, NativeBaseButtonProps, BaseButtonProps, AnchorButtonProps, NativeButtonProps, ButtonProps };
package/typings.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { FC, MouseEvent, ReactElement, ReactNode } from 'react';
2
2
  import { TagProps } from "@alfalab/core-components-tag";
3
3
  type SelectedId = string | number;
4
- type TabsMatchMedia = 'desktop' | 'mobile';
5
4
  type TabsProps = {
6
5
  /**
7
6
  * Дополнительный класс
@@ -28,9 +27,9 @@ type TabsProps = {
28
27
  */
29
28
  size?: 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl';
30
29
  /**
31
- * Режим отображения по умолчанию
30
+ * Значение по-умолчанию для хука useMatchMedia
32
31
  */
33
- defaultMatch?: TabsMatchMedia;
32
+ defaultMatchMediaValue?: boolean | (() => boolean);
34
33
  /**
35
34
  * Мобильный вид
36
35
  */
@@ -39,10 +38,6 @@ type TabsProps = {
39
38
  * Рендерить заголовки табов в контейнере со скроллом
40
39
  */
41
40
  scrollable?: boolean;
42
- /**
43
- * Сворачивает не помещающиеся в окне табы в PickerButton
44
- */
45
- collapsible?: boolean;
46
41
  /**
47
42
  * Список табов, для контроля переноса вкладок в PickerButton
48
43
  */
@@ -69,6 +64,11 @@ type TabsProps = {
69
64
  * Идентификатор для систем автоматизированного тестирования
70
65
  */
71
66
  dataTestId?: string;
67
+ /**
68
+ * Контрольная точка для тега, с нее начинается desktop версия
69
+ * @default 1024
70
+ */
71
+ breakpoint?: number;
72
72
  };
73
73
  type TabProps = {
74
74
  /**
@@ -123,7 +123,7 @@ type TabListTitle = {
123
123
  collapsed?: boolean;
124
124
  dataTestId?: string;
125
125
  };
126
- type TabListProps = Pick<TabsProps, 'className' | 'containerClassName' | 'size' | 'defaultMatch' | 'selectedId' | 'scrollable' | 'collapsible' | 'collapsedTabsIds' | 'onChange' | 'dataTestId' | 'fullWidthScroll'> & {
126
+ type TabListProps = Pick<TabsProps, 'className' | 'containerClassName' | 'size' | 'defaultMatchMediaValue' | 'selectedId' | 'scrollable' | 'collapsedTabsIds' | 'onChange' | 'dataTestId' | 'fullWidthScroll'> & {
127
127
  /**
128
128
  * Заголовки табов
129
129
  */
@@ -136,11 +136,12 @@ type TabListProps = Pick<TabsProps, 'className' | 'containerClassName' | 'size'
136
136
  };
137
137
  type SecondaryTabListProps = TabListProps & {
138
138
  tagSize?: TagProps['size'];
139
+ TagComponent?: FC<Omit<TagProps, 'breakpoint'>>;
139
140
  };
140
141
  type UseTabsProps = TabListProps;
141
142
  type Styles = {
142
- styles: {
143
+ styles?: {
143
144
  [key: string]: string;
144
145
  };
145
146
  };
146
- export { SelectedId, TabsMatchMedia, TabsProps, TabProps, TabListTitle, TabListProps, SecondaryTabListProps, UseTabsProps, Styles };
147
+ export { SelectedId, TabsProps, TabProps, TabListTitle, TabListProps, SecondaryTabListProps, UseTabsProps, Styles };