@salutejs/plasma-new-hope 0.171.0-canary.1492.11402523696.0 → 0.172.0-canary.1493.11403245502.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (180) hide show
  1. package/cjs/components/Accordion/ui/AccordionItem/AccordionItem.js +19 -13
  2. package/cjs/components/Accordion/ui/AccordionItem/AccordionItem.js.map +1 -1
  3. package/cjs/components/Tabs/createTabsController.js.map +1 -1
  4. package/cjs/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.css +13 -0
  5. package/cjs/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js +37 -0
  6. package/cjs/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js.map +1 -0
  7. package/cjs/components/Tabs/ui/header/HeaderTabs/HeaderTabs.css +16 -0
  8. package/cjs/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js +37 -0
  9. package/cjs/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js.map +1 -0
  10. package/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +0 -1
  11. package/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js.map +1 -1
  12. package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +0 -1
  13. package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js.map +1 -1
  14. package/cjs/components/TextArea/TextArea.js +1 -1
  15. package/cjs/components/TextArea/TextArea.js.map +1 -1
  16. package/cjs/components/TextArea/hooks/useAutoResize.js +2 -2
  17. package/cjs/components/TextArea/hooks/useAutoResize.js.map +1 -1
  18. package/cjs/index.js +6 -0
  19. package/cjs/index.js.map +1 -1
  20. package/emotion/cjs/components/Accordion/Accordion.template-doc.mdx +32 -0
  21. package/emotion/cjs/components/Accordion/ui/AccordionItem/AccordionItem.js +19 -13
  22. package/emotion/cjs/components/Tabs/Tabs.template-doc.mdx +22 -4
  23. package/emotion/cjs/components/Tabs/index.js +26 -0
  24. package/emotion/cjs/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js +34 -0
  25. package/emotion/cjs/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js +34 -0
  26. package/emotion/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +0 -1
  27. package/emotion/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +0 -1
  28. package/emotion/cjs/components/TextArea/TextArea.js +2 -2
  29. package/emotion/cjs/components/TextArea/hooks/useAutoResize.js +2 -2
  30. package/emotion/cjs/examples/plasma_b2c/components/Accordion/Accordion.stories.tsx +63 -1
  31. package/emotion/cjs/examples/plasma_b2c/components/Tabs/TabItem.js +6 -0
  32. package/emotion/cjs/examples/plasma_b2c/components/Tabs/Tabs.js +7 -1
  33. package/emotion/cjs/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +64 -22
  34. package/emotion/cjs/examples/plasma_b2c/components/Tabs/header/HeaderTabItem.config.js +29 -0
  35. package/emotion/cjs/examples/plasma_b2c/components/Tabs/header/HeaderTabs.config.js +30 -0
  36. package/emotion/cjs/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabItem.config.js +19 -15
  37. package/emotion/cjs/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabs.config.js +19 -15
  38. package/emotion/cjs/examples/plasma_web/components/Accordion/Accordion.stories.tsx +63 -1
  39. package/emotion/cjs/examples/plasma_web/components/Tabs/Tabs.stories.tsx +64 -22
  40. package/emotion/cjs/examples/plasma_web/components/Tabs/header/HeaderTabItem.config.js +29 -0
  41. package/emotion/cjs/examples/plasma_web/components/Tabs/header/HeaderTabs.config.js +30 -0
  42. package/emotion/cjs/examples/plasma_web/components/Tabs/horizontal/HorizontalTabItem.config.js +19 -15
  43. package/emotion/cjs/examples/plasma_web/components/Tabs/horizontal/HorizontalTabs.config.js +19 -15
  44. package/emotion/es/components/Accordion/Accordion.template-doc.mdx +32 -0
  45. package/emotion/es/components/Accordion/ui/AccordionItem/AccordionItem.js +20 -14
  46. package/emotion/es/components/Tabs/Tabs.template-doc.mdx +22 -4
  47. package/emotion/es/components/Tabs/index.js +2 -0
  48. package/emotion/es/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js +28 -0
  49. package/emotion/es/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js +28 -0
  50. package/emotion/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +0 -1
  51. package/emotion/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +0 -1
  52. package/emotion/es/components/TextArea/TextArea.js +2 -2
  53. package/emotion/es/components/TextArea/hooks/useAutoResize.js +2 -2
  54. package/emotion/es/examples/plasma_b2c/components/Accordion/Accordion.stories.tsx +63 -1
  55. package/emotion/es/examples/plasma_b2c/components/Tabs/TabItem.js +7 -1
  56. package/emotion/es/examples/plasma_b2c/components/Tabs/Tabs.js +8 -2
  57. package/emotion/es/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +64 -22
  58. package/emotion/es/examples/plasma_b2c/components/Tabs/header/HeaderTabItem.config.js +23 -0
  59. package/emotion/es/examples/plasma_b2c/components/Tabs/header/HeaderTabs.config.js +24 -0
  60. package/emotion/es/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabItem.config.js +19 -15
  61. package/emotion/es/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabs.config.js +19 -15
  62. package/emotion/es/examples/plasma_web/components/Accordion/Accordion.stories.tsx +63 -1
  63. package/emotion/es/examples/plasma_web/components/Tabs/Tabs.stories.tsx +64 -22
  64. package/emotion/es/examples/plasma_web/components/Tabs/header/HeaderTabItem.config.js +23 -0
  65. package/emotion/es/examples/plasma_web/components/Tabs/header/HeaderTabs.config.js +24 -0
  66. package/emotion/es/examples/plasma_web/components/Tabs/horizontal/HorizontalTabItem.config.js +19 -15
  67. package/emotion/es/examples/plasma_web/components/Tabs/horizontal/HorizontalTabs.config.js +19 -15
  68. package/es/components/Accordion/ui/AccordionItem/AccordionItem.js +20 -14
  69. package/es/components/Accordion/ui/AccordionItem/AccordionItem.js.map +1 -1
  70. package/es/components/Tabs/createTabsController.js.map +1 -1
  71. package/es/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.css +13 -0
  72. package/es/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js +32 -0
  73. package/es/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js.map +1 -0
  74. package/es/components/Tabs/ui/header/HeaderTabs/HeaderTabs.css +16 -0
  75. package/es/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js +32 -0
  76. package/es/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js.map +1 -0
  77. package/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +0 -1
  78. package/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js.map +1 -1
  79. package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +0 -1
  80. package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js.map +1 -1
  81. package/es/components/TextArea/TextArea.js +1 -1
  82. package/es/components/TextArea/TextArea.js.map +1 -1
  83. package/es/components/TextArea/hooks/useAutoResize.js +2 -2
  84. package/es/components/TextArea/hooks/useAutoResize.js.map +1 -1
  85. package/es/index.js +2 -0
  86. package/es/index.js.map +1 -1
  87. package/package.json +2 -2
  88. package/styled-components/cjs/components/Accordion/Accordion.template-doc.mdx +32 -0
  89. package/styled-components/cjs/components/Accordion/ui/AccordionItem/AccordionItem.js +19 -13
  90. package/styled-components/cjs/components/Tabs/Tabs.template-doc.mdx +22 -4
  91. package/styled-components/cjs/components/Tabs/index.js +26 -0
  92. package/styled-components/cjs/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js +34 -0
  93. package/styled-components/cjs/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js +34 -0
  94. package/styled-components/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +0 -1
  95. package/styled-components/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +0 -1
  96. package/styled-components/cjs/components/TextArea/TextArea.js +1 -1
  97. package/styled-components/cjs/components/TextArea/hooks/useAutoResize.js +2 -2
  98. package/styled-components/cjs/examples/plasma_b2c/components/Accordion/Accordion.stories.tsx +63 -1
  99. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/TabItem.js +6 -0
  100. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/Tabs.js +7 -1
  101. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +64 -22
  102. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/header/HeaderTabItem.config.js +29 -0
  103. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/header/HeaderTabs.config.js +30 -0
  104. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabItem.config.js +4 -0
  105. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabs.config.js +4 -0
  106. package/styled-components/cjs/examples/plasma_web/components/Accordion/Accordion.stories.tsx +63 -1
  107. package/styled-components/cjs/examples/plasma_web/components/Tabs/Tabs.stories.tsx +64 -22
  108. package/styled-components/cjs/examples/plasma_web/components/Tabs/header/HeaderTabItem.config.js +29 -0
  109. package/styled-components/cjs/examples/plasma_web/components/Tabs/header/HeaderTabs.config.js +30 -0
  110. package/styled-components/cjs/examples/plasma_web/components/Tabs/horizontal/HorizontalTabItem.config.js +4 -0
  111. package/styled-components/cjs/examples/plasma_web/components/Tabs/horizontal/HorizontalTabs.config.js +4 -0
  112. package/styled-components/es/components/Accordion/Accordion.template-doc.mdx +32 -0
  113. package/styled-components/es/components/Accordion/ui/AccordionItem/AccordionItem.js +20 -14
  114. package/styled-components/es/components/Tabs/Tabs.template-doc.mdx +22 -4
  115. package/styled-components/es/components/Tabs/index.js +2 -0
  116. package/styled-components/es/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js +28 -0
  117. package/styled-components/es/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js +28 -0
  118. package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +0 -1
  119. package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +0 -1
  120. package/styled-components/es/components/TextArea/TextArea.js +1 -1
  121. package/styled-components/es/components/TextArea/hooks/useAutoResize.js +2 -2
  122. package/styled-components/es/examples/plasma_b2c/components/Accordion/Accordion.stories.tsx +63 -1
  123. package/styled-components/es/examples/plasma_b2c/components/Tabs/TabItem.js +7 -1
  124. package/styled-components/es/examples/plasma_b2c/components/Tabs/Tabs.js +8 -2
  125. package/styled-components/es/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +64 -22
  126. package/styled-components/es/examples/plasma_b2c/components/Tabs/header/HeaderTabItem.config.js +23 -0
  127. package/styled-components/es/examples/plasma_b2c/components/Tabs/header/HeaderTabs.config.js +24 -0
  128. package/styled-components/es/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabItem.config.js +4 -0
  129. package/styled-components/es/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabs.config.js +4 -0
  130. package/styled-components/es/examples/plasma_web/components/Accordion/Accordion.stories.tsx +63 -1
  131. package/styled-components/es/examples/plasma_web/components/Tabs/Tabs.stories.tsx +64 -22
  132. package/styled-components/es/examples/plasma_web/components/Tabs/header/HeaderTabItem.config.js +23 -0
  133. package/styled-components/es/examples/plasma_web/components/Tabs/header/HeaderTabs.config.js +24 -0
  134. package/styled-components/es/examples/plasma_web/components/Tabs/horizontal/HorizontalTabItem.config.js +4 -0
  135. package/styled-components/es/examples/plasma_web/components/Tabs/horizontal/HorizontalTabs.config.js +4 -0
  136. package/types/components/Accordion/ui/AccordionItem/AccordionItem.d.ts +17 -2
  137. package/types/components/Accordion/ui/AccordionItem/AccordionItem.d.ts.map +1 -1
  138. package/types/components/Accordion/ui/AccordionItem/AccordionItem.types.d.ts +17 -9
  139. package/types/components/Accordion/ui/AccordionItem/AccordionItem.types.d.ts.map +1 -1
  140. package/types/components/Tabs/TabItem.types.d.ts +52 -10
  141. package/types/components/Tabs/TabItem.types.d.ts.map +1 -1
  142. package/types/components/Tabs/Tabs.types.d.ts +39 -2
  143. package/types/components/Tabs/Tabs.types.d.ts.map +1 -1
  144. package/types/components/Tabs/createTabsController.d.ts +3 -3
  145. package/types/components/Tabs/createTabsController.d.ts.map +1 -1
  146. package/types/components/Tabs/index.d.ts +3 -1
  147. package/types/components/Tabs/index.d.ts.map +1 -1
  148. package/types/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.d.ts +25 -0
  149. package/types/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.d.ts.map +1 -0
  150. package/types/components/Tabs/ui/header/HeaderTabs/HeaderTabs.d.ts +25 -0
  151. package/types/components/Tabs/ui/header/HeaderTabs/HeaderTabs.d.ts.map +1 -0
  152. package/types/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.d.ts.map +1 -1
  153. package/types/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.d.ts +2 -2
  154. package/types/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.d.ts.map +1 -1
  155. package/types/components/TextArea/hooks/useAutoResize.d.ts +1 -1
  156. package/types/components/TextArea/hooks/useAutoResize.d.ts.map +1 -1
  157. package/types/examples/plasma_b2c/components/Tabs/TabItem.d.ts +74 -1
  158. package/types/examples/plasma_b2c/components/Tabs/TabItem.d.ts.map +1 -1
  159. package/types/examples/plasma_b2c/components/Tabs/Tabs.d.ts +22 -2
  160. package/types/examples/plasma_b2c/components/Tabs/Tabs.d.ts.map +1 -1
  161. package/types/examples/plasma_b2c/components/Tabs/header/HeaderTabItem.config.d.ts +22 -0
  162. package/types/examples/plasma_b2c/components/Tabs/header/HeaderTabItem.config.d.ts.map +1 -0
  163. package/types/examples/plasma_b2c/components/Tabs/header/HeaderTabs.config.d.ts +23 -0
  164. package/types/examples/plasma_b2c/components/Tabs/header/HeaderTabs.config.d.ts.map +1 -0
  165. package/types/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabItem.config.d.ts +4 -0
  166. package/types/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabItem.config.d.ts.map +1 -1
  167. package/types/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabs.config.d.ts +4 -0
  168. package/types/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabs.config.d.ts.map +1 -1
  169. package/types/examples/plasma_web/components/Tabs/TabItem.d.ts +18 -0
  170. package/types/examples/plasma_web/components/Tabs/TabItem.d.ts.map +1 -1
  171. package/types/examples/plasma_web/components/Tabs/Tabs.d.ts +1 -1
  172. package/types/examples/plasma_web/components/Tabs/Tabs.d.ts.map +1 -1
  173. package/types/examples/plasma_web/components/Tabs/header/HeaderTabItem.config.d.ts +22 -0
  174. package/types/examples/plasma_web/components/Tabs/header/HeaderTabItem.config.d.ts.map +1 -0
  175. package/types/examples/plasma_web/components/Tabs/header/HeaderTabs.config.d.ts +23 -0
  176. package/types/examples/plasma_web/components/Tabs/header/HeaderTabs.config.d.ts.map +1 -0
  177. package/types/examples/plasma_web/components/Tabs/horizontal/HorizontalTabItem.config.d.ts +4 -0
  178. package/types/examples/plasma_web/components/Tabs/horizontal/HorizontalTabItem.config.d.ts.map +1 -1
  179. package/types/examples/plasma_web/components/Tabs/horizontal/HorizontalTabs.config.d.ts +4 -0
  180. package/types/examples/plasma_web/components/Tabs/horizontal/HorizontalTabs.config.d.ts.map +1 -1
@@ -22,6 +22,10 @@ var config = exports.config = {
22
22
  s: /*#__PURE__*/(0, _styledComponents.css)(["", ":0.625rem;", ":fit-content;", ":auto;", ":0rem;", ":0.25rem;"], _Tabs.tabsTokens.tabsBorderRadius, _Tabs.tabsTokens.tabsWidth, _Tabs.tabsTokens.tabsHeight, _Tabs.tabsTokens.arrowInnerPadding, _Tabs.tabsTokens.arrowOuterPadding),
23
23
  m: /*#__PURE__*/(0, _styledComponents.css)(["", ":0.75rem;", ":fit-content;", ":auto;", ":0rem;", ":0.625rem;"], _Tabs.tabsTokens.tabsBorderRadius, _Tabs.tabsTokens.tabsWidth, _Tabs.tabsTokens.tabsHeight, _Tabs.tabsTokens.arrowInnerPadding, _Tabs.tabsTokens.arrowOuterPadding),
24
24
  l: /*#__PURE__*/(0, _styledComponents.css)(["", ":0.75rem;", ":fit-content;", ":auto;", ":0rem;", ":0.75rem;"], _Tabs.tabsTokens.tabsBorderRadius, _Tabs.tabsTokens.tabsWidth, _Tabs.tabsTokens.tabsHeight, _Tabs.tabsTokens.arrowInnerPadding, _Tabs.tabsTokens.arrowOuterPadding),
25
+ /**
26
+ * @deprecated
27
+ * вместо h1-h5 использовать HorizontalTabs со свойством header
28
+ */
25
29
  h5: /*#__PURE__*/(0, _styledComponents.css)(["", ":0.5rem;", ":fit-content;", ":auto;", ":0.25rem;", ":0rem;"], _Tabs.tabsTokens.tabsBorderRadius, _Tabs.tabsTokens.tabsWidth, _Tabs.tabsTokens.tabsHeight, _Tabs.tabsTokens.arrowInnerPadding, _Tabs.tabsTokens.arrowOuterPadding),
26
30
  h4: /*#__PURE__*/(0, _styledComponents.css)(["", ":0.5rem;", ":fit-content;", ":auto;", ":0.25rem;", ":0rem;"], _Tabs.tabsTokens.tabsBorderRadius, _Tabs.tabsTokens.tabsWidth, _Tabs.tabsTokens.tabsHeight, _Tabs.tabsTokens.arrowInnerPadding, _Tabs.tabsTokens.arrowOuterPadding),
27
31
  h3: /*#__PURE__*/(0, _styledComponents.css)(["", ":0.625rem;", ":fit-content;", ":auto;", ":0.375rem;", ":0rem;"], _Tabs.tabsTokens.tabsBorderRadius, _Tabs.tabsTokens.tabsWidth, _Tabs.tabsTokens.tabsHeight, _Tabs.tabsTokens.arrowInnerPadding, _Tabs.tabsTokens.arrowOuterPadding),
@@ -135,6 +135,38 @@ import TabItem from '@theme/TabItem';
135
135
  </TabItem>
136
136
  </Tabs>
137
137
 
138
+ ### Использование Accordion в Controlled варианте
139
+
140
+ ```tsx live
141
+ import React, { useState } from 'react';
142
+ import { Accordion, AccordionItem, IconButton } from '@salutejs/{{ package }}';
143
+ import { IconPlus } from '@salutejs/plasma-icons';
144
+
145
+ export function App() {
146
+ const [activeFirst, setActiveFirst] = useState(false);
147
+ const [activeSecond, setActiveSecond] = useState(false);
148
+ const [activeThree, setActiveThree] = useState(false);
149
+
150
+ const contentRight = (active, setActive) => {
151
+ return (
152
+ <IconButton view="secondary" size="s" onClick={() => setActive(!active)}>
153
+ <IconPlus size="xs" />
154
+ </IconButton>
155
+ )
156
+ }
157
+
158
+ return (
159
+ <div>
160
+ <Accordion size="s" singleActive={true}>
161
+ <AccordionItem opened={activeFirst} contentRight={contentRight(activeFirst, setActiveFirst)} type="arrow" title="Как оплатить заправку бонусами СберСпасибо?">После указания деталей заправки нажмите кнопку «К оплате». Откроется окно оплаты, где вы сможете списать бонусы и оплатить ими до 99% стоимости топлива</AccordionItem>
162
+ <AccordionItem opened={activeSecond} contentRight={contentRight(activeSecond, setActiveSecond)} type="arrow" title="Как оплатить заправку бонусами СберСпасибо?">После указания деталей заправки нажмите кнопку «К оплате». Откроется окно оплаты, где вы сможете списать бонусы и оплатить ими до 99% стоимости топлива</AccordionItem>
163
+ <AccordionItem opened={activeThree} contentRight={contentRight(activeThree, setActiveThree)} type="arrow" title="Как оплатить заправку бонусами СберСпасибо?">После указания деталей заправки нажмите кнопку «К оплате». Откроется окно оплаты, где вы сможете списать бонусы и оплатить ими до 99% стоимости топлива</AccordionItem>
164
+ </Accordion>
165
+ </div>
166
+ );
167
+ }
168
+ ```
169
+
138
170
  ### Использование Accordion SingleActive
139
171
 
140
172
  ```tsx live
@@ -11,12 +11,12 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
11
11
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
12
12
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
13
13
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
- import React, { useState, useRef, useEffect } from 'react';
14
+ import React, { useState, useRef, forwardRef, useEffect } from 'react';
15
15
  import { convertRoundnessMatrix } from '../../../../utils/roundness';
16
16
  import { classes, tokens } from '../../Accordion.tokens';
17
17
  import { cx } from '../../../../utils';
18
18
  import { StyledAccordionItem, StyledAccordionHeader, StyledAccordionBody, StyledAccordionTitle, StyledAccordionContentLeft, StyledAccordionHeaderLeft, StyledAccordionContentRight, StyledArrow, StyledMinus, StyledPlus, StyledAccordionBodyAnimate } from './AccordionItem.styles';
19
- export var AccordionItem = function AccordionItem(_ref) {
19
+ export var AccordionItem = /*#__PURE__*/forwardRef(function (_ref, outerRef) {
20
20
  var _ref2;
21
21
  var value = _ref.value,
22
22
  contentRight = _ref.contentRight,
@@ -34,8 +34,10 @@ export var AccordionItem = function AccordionItem(_ref) {
34
34
  disabled = _ref.disabled,
35
35
  _ref$alignWithTitle = _ref.alignWithTitle,
36
36
  alignWithTitle = _ref$alignWithTitle === void 0 ? true : _ref$alignWithTitle,
37
+ opened = _ref.opened,
37
38
  view = _ref.view,
38
- onChange = _ref.onChange;
39
+ onChange = _ref.onChange,
40
+ onClick = _ref.onClick;
39
41
  var key = (_ref2 = eventKey !== null && eventKey !== void 0 ? eventKey : index) !== null && _ref2 !== void 0 ? _ref2 : 0;
40
42
  var _useState = useState(),
41
43
  _useState2 = _slicedToArray(_useState, 2),
@@ -48,6 +50,9 @@ export var AccordionItem = function AccordionItem(_ref) {
48
50
  if (onChange) {
49
51
  onChange(key, !value);
50
52
  }
53
+ if (onClick) {
54
+ onClick(key, !value);
55
+ }
51
56
  };
52
57
  var leftContentRef = useRef(null);
53
58
  useEffect(function () {
@@ -56,11 +61,11 @@ export var AccordionItem = function AccordionItem(_ref) {
56
61
  var leftPaddingBody = leftContentWidth && (alignWithTitle || view === 'clear') ? "calc(".concat(leftContentWidth, "px + var(").concat(tokens.accordionItemGap, "))") : 0;
57
62
  setLeftPadding(leftPaddingBody);
58
63
  }, [value, type, leftContentRef, setLeftPadding]);
59
- var openedBodyClass = value ? classes.accordionItemShowBody : undefined;
60
- var StyledAnimationPLus = function StyledAnimationPLus() {
64
+ var openedBodyClass = (opened !== null && opened !== void 0 ? opened : value) ? classes.accordionItemShowBody : undefined;
65
+ var StyledAnimationPlus = function StyledAnimationPlus() {
61
66
  return /*#__PURE__*/React.createElement(StyledPlus, null, _StyledMinus || (_StyledMinus = /*#__PURE__*/React.createElement(StyledMinus, {
62
67
  size: "xs",
63
- color: "inhert"
68
+ color: "inherit"
64
69
  })), /*#__PURE__*/React.createElement(StyledMinus, {
65
70
  size: "xs",
66
71
  color: "inhert",
@@ -71,14 +76,15 @@ export var AccordionItem = function AccordionItem(_ref) {
71
76
  var disabledClass = disabled ? classes.accordionDisabled : '';
72
77
  var leftContent = contentLeft !== null && contentLeft !== void 0 ? contentLeft : type === 'arrow' ? _StyledArrow || (_StyledArrow = /*#__PURE__*/React.createElement(StyledArrow, {
73
78
  size: "xs",
74
- color: "inhert"
79
+ color: "inherit"
75
80
  })) : undefined;
76
- var leftContentRotate = type === 'arrow' && value ? classes.accordionItemShowBody : undefined;
77
- var rightContent = contentRight !== null && contentRight !== void 0 ? contentRight : type === 'sign' ? /*#__PURE__*/React.createElement(StyledAnimationPLus, null) : undefined;
78
- var rightContentRotate = type === 'sign' && value ? classes.accordionItemShowBody : undefined;
81
+ var leftContentRotate = type === 'arrow' && (opened !== null && opened !== void 0 ? opened : value) ? classes.accordionItemShowBody : undefined;
82
+ var rightContent = contentRight !== null && contentRight !== void 0 ? contentRight : type === 'sign' ? /*#__PURE__*/React.createElement(StyledAnimationPlus, null) : undefined;
83
+ var rightContentRotate = type === 'sign' && (opened !== null && opened !== void 0 ? opened : value) ? classes.accordionItemShowBody : undefined;
79
84
  return /*#__PURE__*/React.createElement(StyledAccordionItem, {
80
85
  className: cx(classes.accordionItem, className, disabledClass),
81
86
  key: key,
87
+ ref: outerRef,
82
88
  style: _objectSpread({
83
89
  borderRadius: accordionBorderRadius
84
90
  }, style)
@@ -86,17 +92,17 @@ export var AccordionItem = function AccordionItem(_ref) {
86
92
  role: "tab",
87
93
  tabIndex: 0,
88
94
  onClick: handleOpen,
89
- "aria-expanded": value,
95
+ "aria-expanded": opened !== null && opened !== void 0 ? opened : value,
90
96
  "aria-controls": "accordion-item-section".concat(key),
91
97
  id: "accordion-item-".concat(key)
92
98
  }, /*#__PURE__*/React.createElement(StyledAccordionHeaderLeft, null, leftContent && /*#__PURE__*/React.createElement(StyledAccordionContentLeft, {
93
99
  ref: leftContentRef,
94
100
  className: leftContentRotate
95
- }, leftContent), /*#__PURE__*/React.createElement(StyledAccordionTitle, null, title)), /*#__PURE__*/React.createElement(StyledAccordionContentRight, {
101
+ }, leftContent), /*#__PURE__*/React.createElement(StyledAccordionTitle, null, title)), contentRight || /*#__PURE__*/React.createElement(StyledAccordionContentRight, {
96
102
  className: rightContentRotate
97
103
  }, rightContent && rightContent)), /*#__PURE__*/React.createElement(StyledAccordionBodyAnimate, {
98
104
  "aria-labelledby": "accordion-item-".concat(key),
99
- "aria-hidden": !value,
105
+ "aria-hidden": !(opened !== null && opened !== void 0 ? opened : value),
100
106
  id: "accordion-item-section".concat(key),
101
107
  className: cx(openedBodyClass),
102
108
  style: {
@@ -105,4 +111,4 @@ export var AccordionItem = function AccordionItem(_ref) {
105
111
  }, /*#__PURE__*/React.createElement(StyledAccordionBody, {
106
112
  className: classes.accordionItemBody
107
113
  }, children)));
108
- };
114
+ });
@@ -63,6 +63,7 @@ export function App() {
63
63
 
64
64
  ### Расположение табов
65
65
  Табы могут быть горизонтальными (по умолчанию) и вертикальными. За это отвечает свойство `orientation`.
66
+ Также у горизонтальных табов есть свойство `header`.
66
67
 
67
68
  ```tsx live
68
69
  import React, { useState } from 'react';
@@ -71,10 +72,11 @@ import { IconClock } from '@salutejs/plasma-icons';
71
72
 
72
73
  export function App() {
73
74
  const items = Array(8).fill(0);
74
- const [index, setIndex] = useState(0);
75
+ const [verticalIndex, setVerticalIndex] = useState(0);
76
+ const [horizontalIndex, setHorizontalIndex] = useState(0);
75
77
 
76
78
  return (
77
- <div>
79
+ <div style=\{{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>
78
80
  <Tabs view="divider" orientation="vertical" size="xs" style=\{{ width: '15rem' }}>
79
81
  {items.map((_, i) => (
80
82
  <TabItem
@@ -82,10 +84,26 @@ export function App() {
82
84
  orientation="vertical"
83
85
  key={`item:${i}`}
84
86
  size="xs"
85
- selected={i === index}
87
+ selected={i === verticalIndex}
86
88
  tabIndex={0}
87
89
  contentLeft={<IconClock size="xs" color="inherit" />}
88
- onClick={() => setIndex(i)}
90
+ onClick={() => setVerticalIndex(i)}
91
+ >
92
+ {`Label${i + 1}`}
93
+ </TabItem>
94
+ ))}
95
+ </Tabs>
96
+
97
+ <Tabs header view="divider" size="h5" style=\{{ width: '15rem' }}>
98
+ {items.map((_, i) => (
99
+ <TabItem
100
+ header
101
+ view="divider"
102
+ key={`item:${i}`}
103
+ size="h5"
104
+ selected={i === horizontalIndex}
105
+ tabIndex={0}
106
+ onClick={() => setHorizontalIndex(i)}
89
107
  >
90
108
  {`Label${i + 1}`}
91
109
  </TabItem>
@@ -2,6 +2,8 @@ export { horizontalTabsRoot, horizontalTabsConfig } from './ui/horizontal/Horizo
2
2
  export { horizontalTabItemRoot, horizontalTabItemConfig } from './ui/horizontal/HorizontalTabItem/HorizontalTabItem';
3
3
  export { verticalTabsRoot, verticalTabsConfig } from './ui/vertical/VerticalTabs/VerticalTabs';
4
4
  export { verticalTabItemRoot, verticalTabItemConfig } from './ui/vertical/VerticalTabItem/VerticalTabItem';
5
+ export { headerTabsRoot, headerTabsConfig } from './ui/header/HeaderTabs/HeaderTabs';
6
+ export { headerTabItemRoot, headerTabItemConfig } from './ui/header/HeaderTabItem/HeaderTabItem';
5
7
  export { tokens as tabsTokens } from './tokens';
6
8
  export { TabItemRefs, TabsContext } from './TabsContext';
7
9
  export { createTabsController } from './createTabsController';
@@ -0,0 +1,28 @@
1
+ import { horizontalTabItemRoot } from '../../horizontal/HorizontalTabItem/HorizontalTabItem';
2
+ import { base as sizeCSS } from '../../horizontal/HorizontalTabItem/variations/_size/base';
3
+ import { base } from '../../horizontal/HorizontalTabItem/HorizontalTabItem.styles';
4
+ import { base as viewCSS } from '../../horizontal/HorizontalTabItem/variations/_view/base';
5
+ import { base as disabledCSS } from '../../horizontal/HorizontalTabItem/variations/_disabled/base';
6
+ export var headerTabItemRoot = horizontalTabItemRoot;
7
+ export var headerTabItemConfig = {
8
+ name: 'HeaderTabItem',
9
+ tag: 'button',
10
+ layout: headerTabItemRoot,
11
+ base: base,
12
+ variations: {
13
+ size: {
14
+ css: sizeCSS
15
+ },
16
+ view: {
17
+ css: viewCSS
18
+ },
19
+ disabled: {
20
+ css: disabledCSS,
21
+ attrs: true
22
+ }
23
+ },
24
+ defaults: {
25
+ view: 'divider',
26
+ size: 'h5'
27
+ }
28
+ };
@@ -0,0 +1,28 @@
1
+ import { horizontalTabsRoot } from '../../horizontal/HorizontalTabs/HorizontalTabs';
2
+ import { base as sizeCSS } from '../../horizontal/HorizontalTabs/variations/_size/base';
3
+ import { base } from '../../horizontal/HorizontalTabs/HorizontalTabs.styles';
4
+ import { base as viewCSS } from '../../horizontal/HorizontalTabs/variations/_view/base';
5
+ import { base as disabledCSS } from '../../horizontal/HorizontalTabs/variations/_disabled/base';
6
+ export var headerTabsRoot = horizontalTabsRoot;
7
+ export var headerTabsConfig = {
8
+ name: 'HeaderTabs',
9
+ tag: 'div',
10
+ layout: horizontalTabsRoot,
11
+ base: base,
12
+ variations: {
13
+ size: {
14
+ css: sizeCSS
15
+ },
16
+ view: {
17
+ css: viewCSS
18
+ },
19
+ disabled: {
20
+ css: disabledCSS,
21
+ attrs: true
22
+ }
23
+ },
24
+ defaults: {
25
+ view: 'divider',
26
+ size: 'h5'
27
+ }
28
+ };
@@ -90,7 +90,6 @@ export var horizontalTabItemRoot = function horizontalTabItemRoot(Root) {
90
90
  return /*#__PURE__*/React.createElement(Root, _extends({
91
91
  ref: ref,
92
92
  disabled: disabled,
93
- pilled: pilled,
94
93
  role: role,
95
94
  view: view,
96
95
  size: size,
@@ -191,7 +191,6 @@ export var horizontalTabsRoot = function horizontalTabsRoot(Root) {
191
191
  view: view,
192
192
  role: "tablist",
193
193
  size: size,
194
- pilled: pilled,
195
194
  id: tabsId,
196
195
  ref: outerRef,
197
196
  disabled: disabled,
@@ -142,7 +142,7 @@ export var textAreaRoot = function textAreaRoot(Root) {
142
142
  setHelperWidth("".concat(elementWidth / ROOT_FONT_SIZE, "rem"));
143
143
  }
144
144
  });
145
- useAutoResize(autoResize || Boolean(clear), outerRef, value, minAuto, maxAuto, defaultValue);
145
+ useAutoResize(autoResize || Boolean(clear), outerRef, value, minAuto, maxAuto);
146
146
  var onFocusHandler = useCallback(function () {
147
147
  setFocused(true);
148
148
  }, []);
@@ -1,6 +1,6 @@
1
1
  import { useEffect, useRef } from 'react';
2
2
  export var ROOT_FONT_SIZE = 16;
3
- export var useAutoResize = function useAutoResize(active, ref, value, minAuto, maxAuto, defaultValue) {
3
+ export var useAutoResize = function useAutoResize(active, ref, value, minAuto, maxAuto) {
4
4
  var isManualResize = useRef(false);
5
5
  var previousHeight = useRef();
6
6
  useEffect(function () {
@@ -23,5 +23,5 @@ export var useAutoResize = function useAutoResize(active, ref, value, minAuto, m
23
23
  ref.current.style.height = "".concat(newHeight, "rem");
24
24
  previousHeight.current = newHeight;
25
25
  }
26
- }, [ref, active, value, defaultValue]);
26
+ }, [ref, active, value]);
27
27
  };
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useState } from 'react';
2
2
  import type { ComponentProps, ReactNode } from 'react';
3
3
  import type { StoryObj, Meta } from '@storybook/react';
4
4
  import { disableProps } from '@salutejs/plasma-sb-utils';
@@ -7,6 +7,8 @@ import { mergeConfig } from '../../../../engines';
7
7
  import { WithTheme, argTypesFromConfig } from '../../../_helpers';
8
8
  import { accordionConfig } from '../../../../components/Accordion';
9
9
  import { Pin } from '../../../../utils/roundness';
10
+ import { IconButton } from '../IconButton/IconButton';
11
+ import { IconPlus } from '../../../../components/_Icon';
10
12
 
11
13
  import { config } from './Accordion.config';
12
14
  import { Accordion, AccordionItem } from './Accordion';
@@ -91,3 +93,63 @@ export const Default: StoryObj<AccordionProps> = {
91
93
  );
92
94
  },
93
95
  };
96
+
97
+ const getSizeForIcon = (size) => (size === 'xs' ? 'xs' : 's');
98
+
99
+ const ControlledAccordion = (props: AccordionProps) => {
100
+ const args = { ...props, text: undefined };
101
+ const [activeFirst, setActiveFirst] = useState(false);
102
+ const [activeSecond, setActiveSecond] = useState(false);
103
+ const [activeThree, setActiveThree] = useState(false);
104
+
105
+ return (
106
+ <Accordion {...args}>
107
+ <AccordionItem
108
+ contentRight={
109
+ <IconButton view="secondary" size={args.size} onClick={() => setActiveFirst(!activeFirst)}>
110
+ <IconPlus size={getSizeForIcon(args.size)} />
111
+ </IconButton>
112
+ }
113
+ alignWithTitle={args.alignWithTitle}
114
+ type={args.type}
115
+ pin={args.pin}
116
+ title={args.title}
117
+ opened={activeFirst}
118
+ >
119
+ {args.body}
120
+ </AccordionItem>
121
+ <AccordionItem
122
+ contentRight={
123
+ <IconButton view="secondary" size={args.size} onClick={() => setActiveSecond(!activeSecond)}>
124
+ <IconPlus size={getSizeForIcon(args.size)} />
125
+ </IconButton>
126
+ }
127
+ alignWithTitle={args.alignWithTitle}
128
+ type={args.type}
129
+ pin={args.pin}
130
+ title={args.title}
131
+ opened={activeSecond}
132
+ >
133
+ {args.body}
134
+ </AccordionItem>
135
+ <AccordionItem
136
+ contentRight={
137
+ <IconButton view="secondary" size={args.size} onClick={() => setActiveThree(!activeThree)}>
138
+ <IconPlus size={getSizeForIcon(args.size)} />
139
+ </IconButton>
140
+ }
141
+ alignWithTitle={args.alignWithTitle}
142
+ type={args.type}
143
+ pin={args.pin}
144
+ title={args.title}
145
+ opened={activeThree}
146
+ >
147
+ {args.body}
148
+ </AccordionItem>
149
+ </Accordion>
150
+ );
151
+ };
152
+
153
+ export const Controlled: StoryObj<AccordionProps> = {
154
+ render: (props: AccordionProps) => ControlledAccordion(props),
155
+ };
@@ -1,15 +1,21 @@
1
1
  import React from 'react';
2
- import { horizontalTabItemConfig, verticalTabItemConfig } from '../../../../components/Tabs';
2
+ import { headerTabItemConfig, horizontalTabItemConfig, verticalTabItemConfig } from '../../../../components/Tabs';
3
3
  import { component, mergeConfig } from '../../../../engines';
4
4
  import { config as horizontalConfig } from './horizontal/HorizontalTabItem.config';
5
5
  import { config as verticalConfig } from './vertical/VerticalTabItem.config';
6
+ import { config as headerConfig } from './header/HeaderTabItem.config';
6
7
  var mergedHorizontalTabItemConfig = /*#__PURE__*/mergeConfig(horizontalTabItemConfig, horizontalConfig);
7
8
  var HorizontalTabItem = /*#__PURE__*/component(mergedHorizontalTabItemConfig);
8
9
  var mergedVerticalTabItemConfig = /*#__PURE__*/mergeConfig(verticalTabItemConfig, verticalConfig);
9
10
  var VerticalTabItem = /*#__PURE__*/component(mergedVerticalTabItemConfig);
11
+ var mergedHeaderTabItemConfig = /*#__PURE__*/mergeConfig(headerTabItemConfig, headerConfig);
12
+ var HeaderTabItem = /*#__PURE__*/component(mergedHeaderTabItemConfig);
10
13
  export var TabItem = function TabItem(props) {
11
14
  if (props.orientation === 'vertical') {
12
15
  return /*#__PURE__*/React.createElement(VerticalTabItem, props);
13
16
  }
17
+ if (props.header) {
18
+ return /*#__PURE__*/React.createElement(HeaderTabItem, props);
19
+ }
14
20
  return /*#__PURE__*/React.createElement(HorizontalTabItem, props);
15
21
  };
@@ -1,15 +1,21 @@
1
1
  import React from 'react';
2
- import { horizontalTabsConfig, verticalTabsConfig } from '../../../../components/Tabs';
2
+ import { horizontalTabsConfig, verticalTabsConfig, headerTabsConfig } from '../../../../components/Tabs';
3
3
  import { component, mergeConfig } from '../../../../engines';
4
4
  import { config as horizontalConfig } from './horizontal/HorizontalTabs.config';
5
5
  import { config as verticalConfig } from './vertical/VerticalTabs.config';
6
+ import { config as headerConfig } from './header/HeaderTabs.config';
6
7
  var mergedHorizontalTabsConfig = /*#__PURE__*/mergeConfig(horizontalTabsConfig, horizontalConfig);
7
- var mergedVerticalTabsConfig = /*#__PURE__*/mergeConfig(verticalTabsConfig, verticalConfig);
8
8
  var HorizontalTabs = /*#__PURE__*/component(mergedHorizontalTabsConfig);
9
+ var mergedVerticalTabsConfig = /*#__PURE__*/mergeConfig(verticalTabsConfig, verticalConfig);
9
10
  var VerticalTabs = /*#__PURE__*/component(mergedVerticalTabsConfig);
11
+ var mergedHeaderTabsConfig = /*#__PURE__*/mergeConfig(headerTabsConfig, headerConfig);
12
+ var HeaderTabs = /*#__PURE__*/component(mergedHeaderTabsConfig);
10
13
  export var Tabs = function Tabs(props) {
11
14
  if (props.orientation === 'vertical') {
12
15
  return /*#__PURE__*/React.createElement(VerticalTabs, props);
13
16
  }
17
+ if (props.header) {
18
+ return /*#__PURE__*/React.createElement(HeaderTabs, props);
19
+ }
14
20
  return /*#__PURE__*/React.createElement(HorizontalTabs, props);
15
21
  };
@@ -12,6 +12,7 @@ import { Tabs } from './Tabs';
12
12
  import { TabItem } from './TabItem';
13
13
 
14
14
  const clips = ['none', 'scroll', 'showAll'];
15
+ const headerClips = ['none', 'scroll'];
15
16
  const sizes = ['xs', 's', 'm', 'l'] as const;
16
17
  const headerSizes = ['h5', 'h4', 'h3', 'h2', 'h1'] as const;
17
18
 
@@ -52,6 +53,7 @@ const getContentRight = (contentRightOption: string, size: Size) => {
52
53
  type StoryTabsProps = ComponentProps<typeof Tabs> & CustomStoryTabsProps;
53
54
  type HorizontalStoryTabsProps = StoryTabsProps & { width: string };
54
55
  type VerticalStoryTabsProps = StoryTabsProps & { height: string };
56
+ type HeaderStoryTabsProps = StoryTabsProps & { width: string };
55
57
 
56
58
  const meta: Meta<StoryTabsProps> = {
57
59
  title: 'plasma_b2c/Tabs',
@@ -68,6 +70,7 @@ const meta: Meta<StoryTabsProps> = {
68
70
  'forwardedAs',
69
71
  'outsideScroll',
70
72
  'index',
73
+ 'header',
71
74
  ]),
72
75
  contentRight: {
73
76
  options: contentRightOptions,
@@ -603,31 +606,23 @@ export const VerticalTabs: StoryObj<VerticalStoryTabsProps> = {
603
606
  },
604
607
  };
605
608
 
606
- const StoryHeaderTabs = (props: StoryTabsProps) => {
607
- const {
608
- disabled,
609
- itemQuantity,
610
- size,
611
- contentLeft: contentLeftOption,
612
- contentRight: contentRightOption,
613
- hasDivider,
614
- stretch,
615
- } = props;
609
+ const StoryHeaderDefault = (props: HeaderStoryTabsProps) => {
610
+ const { disabled, itemQuantity, size, hasDivider, helperText } = props;
616
611
  const items = Array(itemQuantity).fill(0);
617
612
  const [index, setIndex] = useState(0);
618
613
 
619
614
  return (
620
- <Tabs view={hasDivider ? 'divider' : 'clear'} disabled={disabled} size={size} stretch={stretch}>
615
+ <Tabs header view={hasDivider ? 'divider' : 'clear'} disabled={disabled} size={size as HeaderSize}>
621
616
  {items.map((_, i) => (
622
617
  <TabItem
618
+ header
623
619
  key={`item:${i}`}
624
620
  view="divider"
625
621
  selected={i === index}
626
622
  onClick={() => !disabled && setIndex(i)}
627
623
  tabIndex={!disabled ? 0 : -1}
628
624
  disabled={disabled}
629
- contentLeft={getContentLeft(contentLeftOption, size as Size)}
630
- contentRight={getContentRight(contentRightOption, size as Size)}
625
+ value={helperText}
631
626
  size={size as HeaderSize}
632
627
  >
633
628
  {`Label${i + 1}`}
@@ -637,12 +632,46 @@ const StoryHeaderTabs = (props: StoryTabsProps) => {
637
632
  );
638
633
  };
639
634
 
640
- export const HeaderTabs: StoryObj<StoryTabsProps> = {
635
+ const StoryHeaderScroll = (props: HeaderStoryTabsProps) => {
636
+ const { disabled, itemQuantity, size, hasDivider, helperText, width } = props;
637
+ const items = Array(itemQuantity).fill(0);
638
+ const [index, setIndex] = useState(0);
639
+
640
+ return (
641
+ <Tabs
642
+ header
643
+ view={hasDivider ? 'divider' : 'clear'}
644
+ disabled={disabled}
645
+ size={size as HeaderSize}
646
+ style={{ width }}
647
+ >
648
+ {items.map((_, i) => (
649
+ <TabItem
650
+ header
651
+ key={`item:${i}`}
652
+ view="divider"
653
+ selected={i === index}
654
+ onClick={() => !disabled && setIndex(i)}
655
+ tabIndex={!disabled ? 0 : -1}
656
+ disabled={disabled}
657
+ value={helperText}
658
+ size={size as HeaderSize}
659
+ >
660
+ {`Label${i + 1}`}
661
+ </TabItem>
662
+ ))}
663
+ </Tabs>
664
+ );
665
+ };
666
+
667
+ export const HeaderTabs: StoryObj<HeaderStoryTabsProps> = {
641
668
  args: {
642
669
  size: 'h5',
643
670
  disabled: false,
644
671
  hasDivider: true,
645
- itemQuantity: 4,
672
+ helperText: '',
673
+ itemQuantity: 6,
674
+ width: '12rem',
646
675
  },
647
676
  argTypes: {
648
677
  size: {
@@ -651,23 +680,36 @@ export const HeaderTabs: StoryObj<StoryTabsProps> = {
651
680
  type: 'select',
652
681
  },
653
682
  },
654
- contentLeft: {
655
- options: contentLeftOptions,
683
+ clip: {
684
+ options: headerClips,
656
685
  control: {
657
686
  type: 'select',
658
687
  },
688
+ if: { arg: 'stretch', truthy: false },
659
689
  },
660
- contentRight: {
661
- options: contentRightOptions,
690
+ width: {
662
691
  control: {
663
- type: 'select',
692
+ type: 'text',
664
693
  },
694
+ if: { arg: 'clip', eq: 'scroll' },
665
695
  },
666
- clip: {
696
+ stretch: {
697
+ table: {
698
+ disable: true,
699
+ },
700
+ },
701
+ contentRight: {
667
702
  table: {
668
703
  disable: true,
669
704
  },
670
705
  },
671
706
  },
672
- render: (args) => <StoryHeaderTabs {...args} />,
707
+ render: (args) => {
708
+ switch (args.clip) {
709
+ case 'scroll':
710
+ return <StoryHeaderScroll {...args} />;
711
+ default:
712
+ return <StoryHeaderDefault {...args} />;
713
+ }
714
+ },
673
715
  };
@@ -0,0 +1,23 @@
1
+ import { css } from 'styled-components';
2
+ import { tabsTokens } from '../../../../../components/Tabs';
3
+ export var config = {
4
+ defaults: {
5
+ view: 'divider',
6
+ size: 'h5'
7
+ },
8
+ variations: {
9
+ view: {
10
+ divider: /*#__PURE__*/css(["", ":var(--text-secondary);", ":var(--text-tertiary);", ":transparent;", ":var(--text-secondary-hover);", ":var(--text-secondary);", ":var(--text-secondary-active);", ":var(--text-secondary);", ":transparent;", ":var(--text-primary);", ":var(--text-secondary);", ":transparent;", ":var(--text-primary);", ":var(--text-secondary);", ":transparent;", ":background-color 0.3s ease-in-out;", ":0;", ":0;", ":var(--surface-accent);", ":0.125rem;", ":var(--text-primary);", ":var(--text-primary);"], tabsTokens.itemColor, tabsTokens.itemValueColor, tabsTokens.itemBackgroundColor, tabsTokens.itemColorHover, tabsTokens.itemValueColorHover, tabsTokens.itemColorActive, tabsTokens.itemValueColorActive, tabsTokens.itemBackgroundColorHover, tabsTokens.itemSelectedColor, tabsTokens.itemSelectedValueColor, tabsTokens.itemSelectedBackgroundColor, tabsTokens.itemSelectedColorHover, tabsTokens.itemSelectedValueColorHover, tabsTokens.itemSelectedBackgroundColorHover, tabsTokens.itemBackgroundTransition, tabsTokens.itemPaddingClear, tabsTokens.itemContentPaddingClear, tabsTokens.outlineFocusColor, tabsTokens.itemSelectedDividerHeight, tabsTokens.itemSelectedDividerColor, tabsTokens.itemSelectedDividerColorHover)
11
+ },
12
+ size: {
13
+ h5: /*#__PURE__*/css(["", ":0.375rem;", ":auto;", ":3rem;", ":0rem;", ":1.75rem;", ":0.625rem;", ":var(--plasma-typo-h5-font-family);", ":var(--plasma-typo-h5-font-size);", ":var(--plasma-typo-h5-font-style);", ":var(--plasma-typo-h5-font-weight);", ":var(--plasma-typo-h5-letter-spacing);", ":var(--plasma-typo-h5-line-height);"], tabsTokens.itemBorderRadius, tabsTokens.itemWidth, tabsTokens.itemHeight, tabsTokens.itemPadding, tabsTokens.itemMarginLeft, tabsTokens.itemContentGap, tabsTokens.fontFamily, tabsTokens.fontSize, tabsTokens.fontStyle, tabsTokens.fontWeight, tabsTokens.letterSpacing, tabsTokens.lineHeight),
14
+ h4: /*#__PURE__*/css(["", ":0.375rem;", ":auto;", ":3.25rem;", ":0rem;", ":2rem;", ":0.625rem;", ":var(--plasma-typo-h4-font-family);", ":var(--plasma-typo-h4-font-size);", ":var(--plasma-typo-h4-font-style);", ":var(--plasma-typo-h4-font-weight);", ":var(--plasma-typo-h4-letter-spacing);", ":var(--plasma-typo-h4-line-height);"], tabsTokens.itemBorderRadius, tabsTokens.itemWidth, tabsTokens.itemHeight, tabsTokens.itemPadding, tabsTokens.itemMarginLeft, tabsTokens.itemContentGap, tabsTokens.fontFamily, tabsTokens.fontSize, tabsTokens.fontStyle, tabsTokens.fontWeight, tabsTokens.letterSpacing, tabsTokens.lineHeight),
15
+ h3: /*#__PURE__*/css(["", ":0.5rem;", ":auto;", ":3.875rem;", ":0rem;", ":2.25rem;", ":0.75rem;", ":var(--plasma-typo-h3-font-family);", ":var(--plasma-typo-h3-font-size);", ":var(--plasma-typo-h3-font-style);", ":var(--plasma-typo-h3-font-weight);", ":var(--plasma-typo-h3-letter-spacing);", ":var(--plasma-typo-h3-line-height);"], tabsTokens.itemBorderRadius, tabsTokens.itemWidth, tabsTokens.itemHeight, tabsTokens.itemPadding, tabsTokens.itemMarginLeft, tabsTokens.itemContentGap, tabsTokens.fontFamily, tabsTokens.fontSize, tabsTokens.fontStyle, tabsTokens.fontWeight, tabsTokens.letterSpacing, tabsTokens.lineHeight),
16
+ h2: /*#__PURE__*/css(["", ":0.625rem;", ":auto;", ":4.5rem;", ":0rem;", ":2.5rem;", ":1rem;", ":var(--plasma-typo-h2-font-family);", ":var(--plasma-typo-h2-font-size);", ":var(--plasma-typo-h2-font-style);", ":var(--plasma-typo-h2-font-weight);", ":var(--plasma-typo-h2-letter-spacing);", ":var(--plasma-typo-h2-line-height);"], tabsTokens.itemBorderRadius, tabsTokens.itemWidth, tabsTokens.itemHeight, tabsTokens.itemPadding, tabsTokens.itemMarginLeft, tabsTokens.itemContentGap, tabsTokens.fontFamily, tabsTokens.fontSize, tabsTokens.fontStyle, tabsTokens.fontWeight, tabsTokens.letterSpacing, tabsTokens.lineHeight),
17
+ h1: /*#__PURE__*/css(["", ":0.75rem;", ":auto;", ":5.75rem;", ":0rem;", ":3.5rem;", ":0.5rem;", ":var(--plasma-typo-h1-font-family);", ":var(--plasma-typo-h1-font-size);", ":var(--plasma-typo-h1-font-style);", ":var(--plasma-typo-h1-font-weight);", ":var(--plasma-typo-h1-letter-spacing);", ":var(--plasma-typo-h1-line-height);"], tabsTokens.itemBorderRadius, tabsTokens.itemWidth, tabsTokens.itemHeight, tabsTokens.itemPadding, tabsTokens.itemMarginLeft, tabsTokens.itemContentGap, tabsTokens.fontFamily, tabsTokens.fontSize, tabsTokens.fontStyle, tabsTokens.fontWeight, tabsTokens.letterSpacing, tabsTokens.lineHeight)
18
+ },
19
+ disabled: {
20
+ "true": /*#__PURE__*/css(["", ":0.4;"], tabsTokens.disabledOpacity)
21
+ }
22
+ }
23
+ };