@salutejs/plasma-new-hope 0.171.0-dev.0 → 0.172.0-canary.1493.11404929441.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. package/cjs/components/Tabs/createTabsController.js.map +1 -1
  2. package/cjs/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.css +13 -0
  3. package/cjs/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js +37 -0
  4. package/cjs/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js.map +1 -0
  5. package/cjs/components/Tabs/ui/header/HeaderTabs/HeaderTabs.css +16 -0
  6. package/cjs/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js +37 -0
  7. package/cjs/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js.map +1 -0
  8. package/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +2 -2
  9. package/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js.map +1 -1
  10. package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +2 -2
  11. package/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js.map +1 -1
  12. package/cjs/index.js +6 -0
  13. package/cjs/index.js.map +1 -1
  14. package/emotion/cjs/components/Tabs/Tabs.template-doc.mdx +22 -4
  15. package/emotion/cjs/components/Tabs/index.js +26 -0
  16. package/emotion/cjs/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js +34 -0
  17. package/emotion/cjs/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js +34 -0
  18. package/emotion/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +3 -2
  19. package/emotion/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +3 -2
  20. package/emotion/cjs/examples/plasma_b2c/components/Tabs/TabItem.js +6 -0
  21. package/emotion/cjs/examples/plasma_b2c/components/Tabs/Tabs.js +7 -1
  22. package/emotion/cjs/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +64 -22
  23. package/emotion/cjs/examples/plasma_b2c/components/Tabs/header/HeaderTabItem.config.js +29 -0
  24. package/emotion/cjs/examples/plasma_b2c/components/Tabs/header/HeaderTabs.config.js +30 -0
  25. package/emotion/cjs/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabItem.config.js +19 -15
  26. package/emotion/cjs/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabs.config.js +19 -15
  27. package/emotion/cjs/examples/plasma_web/components/Tabs/Tabs.stories.tsx +64 -22
  28. package/emotion/cjs/examples/plasma_web/components/Tabs/header/HeaderTabItem.config.js +29 -0
  29. package/emotion/cjs/examples/plasma_web/components/Tabs/header/HeaderTabs.config.js +30 -0
  30. package/emotion/cjs/examples/plasma_web/components/Tabs/horizontal/HorizontalTabItem.config.js +19 -15
  31. package/emotion/cjs/examples/plasma_web/components/Tabs/horizontal/HorizontalTabs.config.js +19 -15
  32. package/emotion/es/components/Tabs/Tabs.template-doc.mdx +22 -4
  33. package/emotion/es/components/Tabs/index.js +2 -0
  34. package/emotion/es/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js +28 -0
  35. package/emotion/es/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js +28 -0
  36. package/emotion/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +3 -2
  37. package/emotion/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +3 -2
  38. package/emotion/es/examples/plasma_b2c/components/Tabs/TabItem.js +7 -1
  39. package/emotion/es/examples/plasma_b2c/components/Tabs/Tabs.js +8 -2
  40. package/emotion/es/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +64 -22
  41. package/emotion/es/examples/plasma_b2c/components/Tabs/header/HeaderTabItem.config.js +23 -0
  42. package/emotion/es/examples/plasma_b2c/components/Tabs/header/HeaderTabs.config.js +24 -0
  43. package/emotion/es/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabItem.config.js +19 -15
  44. package/emotion/es/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabs.config.js +19 -15
  45. package/emotion/es/examples/plasma_web/components/Tabs/Tabs.stories.tsx +64 -22
  46. package/emotion/es/examples/plasma_web/components/Tabs/header/HeaderTabItem.config.js +23 -0
  47. package/emotion/es/examples/plasma_web/components/Tabs/header/HeaderTabs.config.js +24 -0
  48. package/emotion/es/examples/plasma_web/components/Tabs/horizontal/HorizontalTabItem.config.js +19 -15
  49. package/emotion/es/examples/plasma_web/components/Tabs/horizontal/HorizontalTabs.config.js +19 -15
  50. package/es/components/Tabs/createTabsController.js.map +1 -1
  51. package/es/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.css +13 -0
  52. package/es/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js +32 -0
  53. package/es/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js.map +1 -0
  54. package/es/components/Tabs/ui/header/HeaderTabs/HeaderTabs.css +16 -0
  55. package/es/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js +32 -0
  56. package/es/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js.map +1 -0
  57. package/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +2 -2
  58. package/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js.map +1 -1
  59. package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +2 -2
  60. package/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js.map +1 -1
  61. package/es/index.js +2 -0
  62. package/es/index.js.map +1 -1
  63. package/package.json +2 -2
  64. package/styled-components/cjs/components/Tabs/Tabs.template-doc.mdx +22 -4
  65. package/styled-components/cjs/components/Tabs/index.js +26 -0
  66. package/styled-components/cjs/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js +34 -0
  67. package/styled-components/cjs/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js +34 -0
  68. package/styled-components/cjs/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +3 -2
  69. package/styled-components/cjs/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +3 -2
  70. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/TabItem.js +6 -0
  71. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/Tabs.js +7 -1
  72. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +64 -22
  73. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/header/HeaderTabItem.config.js +29 -0
  74. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/header/HeaderTabs.config.js +30 -0
  75. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabItem.config.js +4 -0
  76. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabs.config.js +4 -0
  77. package/styled-components/cjs/examples/plasma_web/components/Tabs/Tabs.stories.tsx +64 -22
  78. package/styled-components/cjs/examples/plasma_web/components/Tabs/header/HeaderTabItem.config.js +29 -0
  79. package/styled-components/cjs/examples/plasma_web/components/Tabs/header/HeaderTabs.config.js +30 -0
  80. package/styled-components/cjs/examples/plasma_web/components/Tabs/horizontal/HorizontalTabItem.config.js +4 -0
  81. package/styled-components/cjs/examples/plasma_web/components/Tabs/horizontal/HorizontalTabs.config.js +4 -0
  82. package/styled-components/es/components/Tabs/Tabs.template-doc.mdx +22 -4
  83. package/styled-components/es/components/Tabs/index.js +2 -0
  84. package/styled-components/es/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.js +28 -0
  85. package/styled-components/es/components/Tabs/ui/header/HeaderTabs/HeaderTabs.js +28 -0
  86. package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.js +3 -2
  87. package/styled-components/es/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.js +3 -2
  88. package/styled-components/es/examples/plasma_b2c/components/Tabs/TabItem.js +7 -1
  89. package/styled-components/es/examples/plasma_b2c/components/Tabs/Tabs.js +8 -2
  90. package/styled-components/es/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +64 -22
  91. package/styled-components/es/examples/plasma_b2c/components/Tabs/header/HeaderTabItem.config.js +23 -0
  92. package/styled-components/es/examples/plasma_b2c/components/Tabs/header/HeaderTabs.config.js +24 -0
  93. package/styled-components/es/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabItem.config.js +4 -0
  94. package/styled-components/es/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabs.config.js +4 -0
  95. package/styled-components/es/examples/plasma_web/components/Tabs/Tabs.stories.tsx +64 -22
  96. package/styled-components/es/examples/plasma_web/components/Tabs/header/HeaderTabItem.config.js +23 -0
  97. package/styled-components/es/examples/plasma_web/components/Tabs/header/HeaderTabs.config.js +24 -0
  98. package/styled-components/es/examples/plasma_web/components/Tabs/horizontal/HorizontalTabItem.config.js +4 -0
  99. package/styled-components/es/examples/plasma_web/components/Tabs/horizontal/HorizontalTabs.config.js +4 -0
  100. package/types/components/Tabs/TabItem.types.d.ts +52 -10
  101. package/types/components/Tabs/TabItem.types.d.ts.map +1 -1
  102. package/types/components/Tabs/Tabs.types.d.ts +39 -2
  103. package/types/components/Tabs/Tabs.types.d.ts.map +1 -1
  104. package/types/components/Tabs/createTabsController.d.ts +3 -3
  105. package/types/components/Tabs/createTabsController.d.ts.map +1 -1
  106. package/types/components/Tabs/index.d.ts +3 -1
  107. package/types/components/Tabs/index.d.ts.map +1 -1
  108. package/types/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.d.ts +25 -0
  109. package/types/components/Tabs/ui/header/HeaderTabItem/HeaderTabItem.d.ts.map +1 -0
  110. package/types/components/Tabs/ui/header/HeaderTabs/HeaderTabs.d.ts +25 -0
  111. package/types/components/Tabs/ui/header/HeaderTabs/HeaderTabs.d.ts.map +1 -0
  112. package/types/components/Tabs/ui/horizontal/HorizontalTabItem/HorizontalTabItem.d.ts.map +1 -1
  113. package/types/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.d.ts +2 -2
  114. package/types/components/Tabs/ui/horizontal/HorizontalTabs/HorizontalTabs.d.ts.map +1 -1
  115. package/types/examples/plasma_b2c/components/Tabs/TabItem.d.ts +74 -1
  116. package/types/examples/plasma_b2c/components/Tabs/TabItem.d.ts.map +1 -1
  117. package/types/examples/plasma_b2c/components/Tabs/Tabs.d.ts +22 -2
  118. package/types/examples/plasma_b2c/components/Tabs/Tabs.d.ts.map +1 -1
  119. package/types/examples/plasma_b2c/components/Tabs/header/HeaderTabItem.config.d.ts +22 -0
  120. package/types/examples/plasma_b2c/components/Tabs/header/HeaderTabItem.config.d.ts.map +1 -0
  121. package/types/examples/plasma_b2c/components/Tabs/header/HeaderTabs.config.d.ts +23 -0
  122. package/types/examples/plasma_b2c/components/Tabs/header/HeaderTabs.config.d.ts.map +1 -0
  123. package/types/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabItem.config.d.ts +4 -0
  124. package/types/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabItem.config.d.ts.map +1 -1
  125. package/types/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabs.config.d.ts +4 -0
  126. package/types/examples/plasma_b2c/components/Tabs/horizontal/HorizontalTabs.config.d.ts.map +1 -1
  127. package/types/examples/plasma_web/components/Tabs/TabItem.d.ts +18 -0
  128. package/types/examples/plasma_web/components/Tabs/TabItem.d.ts.map +1 -1
  129. package/types/examples/plasma_web/components/Tabs/Tabs.d.ts +1 -1
  130. package/types/examples/plasma_web/components/Tabs/Tabs.d.ts.map +1 -1
  131. package/types/examples/plasma_web/components/Tabs/header/HeaderTabItem.config.d.ts +22 -0
  132. package/types/examples/plasma_web/components/Tabs/header/HeaderTabItem.config.d.ts.map +1 -0
  133. package/types/examples/plasma_web/components/Tabs/header/HeaderTabs.config.d.ts +23 -0
  134. package/types/examples/plasma_web/components/Tabs/header/HeaderTabs.config.d.ts.map +1 -0
  135. package/types/examples/plasma_web/components/Tabs/horizontal/HorizontalTabItem.config.d.ts +4 -0
  136. package/types/examples/plasma_web/components/Tabs/horizontal/HorizontalTabItem.config.d.ts.map +1 -1
  137. package/types/examples/plasma_web/components/Tabs/horizontal/HorizontalTabs.config.d.ts +4 -0
  138. package/types/examples/plasma_web/components/Tabs/horizontal/HorizontalTabs.config.d.ts.map +1 -1
@@ -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
+ };
@@ -1,4 +1,4 @@
1
- var _excluded = ["size", "view", "isActive", "selected", "disabled", "pilled", "children", "value", "contentLeft", "contentRight", "animated", "onIndexChange", "itemIndex", "tabIndex", "className", "onClick"];
1
+ var _excluded = ["size", "view", "isActive", "selected", "disabled", "pilled", "children", "value", "contentLeft", "contentRight", "animated", "onIndexChange", "itemIndex", "tabIndex", "className", "onClick", "header"];
2
2
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
3
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
4
4
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
@@ -33,6 +33,7 @@ export var horizontalTabItemRoot = function horizontalTabItemRoot(Root) {
33
33
  tabIndex = props.tabIndex,
34
34
  className = props.className,
35
35
  onClick = props.onClick,
36
+ _header = props.header,
36
37
  rest = _objectWithoutProperties(props, _excluded);
37
38
  var innerRef = useRef(null);
38
39
  var ref = useForkRef(outerRef, innerRef);
@@ -90,10 +91,10 @@ export var horizontalTabItemRoot = function horizontalTabItemRoot(Root) {
90
91
  return /*#__PURE__*/React.createElement(Root, _extends({
91
92
  ref: ref,
92
93
  disabled: disabled,
93
- pilled: pilled,
94
94
  role: role,
95
95
  view: view,
96
96
  size: size,
97
+ pilled: pilled,
97
98
  onFocus: onItemFocus,
98
99
  tabIndex: hasKeyNavigation ? navigationTabIndex : tabIndex,
99
100
  className: cx(pilledClass, selectedClass, animatedClass, className),
@@ -1,4 +1,4 @@
1
- var _excluded = ["id", "stretch", "disabled", "clip", "size", "view", "children", "pilled", "index", "className"];
1
+ var _excluded = ["id", "stretch", "disabled", "clip", "size", "view", "children", "pilled", "index", "className", "header"];
2
2
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
3
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
4
4
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -43,6 +43,7 @@ export var horizontalTabsRoot = function horizontalTabsRoot(Root) {
43
43
  pilled = _props$pilled === void 0 ? false : _props$pilled,
44
44
  index = props.index,
45
45
  className = props.className,
46
+ _header = props.header,
46
47
  rest = _objectWithoutProperties(props, _excluded);
47
48
  var _useState = useState(true),
48
49
  _useState2 = _slicedToArray(_useState, 2),
@@ -191,8 +192,8 @@ export var horizontalTabsRoot = function horizontalTabsRoot(Root) {
191
192
  view: view,
192
193
  role: "tablist",
193
194
  size: size,
194
- pilled: pilled,
195
195
  id: tabsId,
196
+ pilled: pilled,
196
197
  ref: outerRef,
197
198
  disabled: disabled,
198
199
  className: cx(pilledClass, stretchClass, hasLeftArrowClass, hasRightArrowClass, className),
@@ -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
+ };
@@ -0,0 +1,24 @@
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
+ clear: /*#__PURE__*/css(["", ":var(--text-secondary);", ":transparent;", ":var(--surface-accent);", ":0rem;", ":transparent;", ":0rem;"], tabsTokens.arrowColor, tabsTokens.tabsBackgroundColor, tabsTokens.outlineFocusColor, tabsTokens.tabsDividerHeight, tabsTokens.tabsDividerColor, tabsTokens.tabsDividerBorderRadius),
11
+ divider: /*#__PURE__*/css(["", ":var(--text-secondary);", ":transparent;", ":var(--surface-accent);", ":0.0625rem;", ":var(--surface-transparent-tertiary);", ":0.0625rem;"], tabsTokens.arrowColor, tabsTokens.tabsBackgroundColor, tabsTokens.outlineFocusColor, tabsTokens.tabsDividerHeight, tabsTokens.tabsDividerColor, tabsTokens.tabsDividerBorderRadius)
12
+ },
13
+ size: {
14
+ h5: /*#__PURE__*/css(["", ":0.5rem;", ":fit-content;", ":auto;", ":0.25rem;", ":0rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding),
15
+ h4: /*#__PURE__*/css(["", ":0.5rem;", ":fit-content;", ":auto;", ":0.25rem;", ":0rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding),
16
+ h3: /*#__PURE__*/css(["", ":0.625rem;", ":fit-content;", ":auto;", ":0.375rem;", ":0rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding),
17
+ h2: /*#__PURE__*/css(["", ":0.75rem;", ":fit-content;", ":auto;", ":0.5rem;", ":0rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding),
18
+ h1: /*#__PURE__*/css(["", ":0.75rem;", ":fit-content;", ":auto;", ":1rem;", ":0rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding)
19
+ },
20
+ disabled: {
21
+ "true": /*#__PURE__*/css(["", ":0.4;"], tabsTokens.disabledOpacity)
22
+ }
23
+ }
24
+ };
@@ -17,6 +17,10 @@ export var config = {
17
17
  s: /*#__PURE__*/css(["", ":0.5rem;", ":auto;", ":2.5rem;", ":0 0.625rem;", ":0 0.5rem;", ":1.75rem;", ":0.25rem;", ":0.125rem;", ":var(--plasma-typo-body-s-font-family);", ":var(--plasma-typo-body-s-font-size);", ":var(--plasma-typo-body-s-font-style);", ":var(--plasma-typo-body-s-font-weight);", ":var(--plasma-typo-body-s-letter-spacing);", ":var(--plasma-typo-body-s-line-height);"], tabsTokens.itemBorderRadius, tabsTokens.itemWidth, tabsTokens.itemHeight, tabsTokens.itemPadding, tabsTokens.itemPaddingPilled, tabsTokens.itemMarginLeft, tabsTokens.itemContentGap, tabsTokens.itemContentPadding, tabsTokens.fontFamily, tabsTokens.fontSize, tabsTokens.fontStyle, tabsTokens.fontWeight, tabsTokens.letterSpacing, tabsTokens.lineHeight),
18
18
  m: /*#__PURE__*/css(["", ":0.625rem;", ":auto;", ":3rem;", ":0 0.625rem;", ":0 0.5rem;", ":1.75rem;", ":0.375rem;", ":0.125rem;", ":var(--plasma-typo-body-m-font-family);", ":var(--plasma-typo-body-m-font-size);", ":var(--plasma-typo-body-m-font-style);", ":var(--plasma-typo-body-m-font-weight);", ":var(--plasma-typo-body-m-letter-spacing);", ":var(--plasma-typo-body-m-line-height);"], tabsTokens.itemBorderRadius, tabsTokens.itemWidth, tabsTokens.itemHeight, tabsTokens.itemPadding, tabsTokens.itemPaddingPilled, tabsTokens.itemMarginLeft, tabsTokens.itemContentGap, tabsTokens.itemContentPadding, tabsTokens.fontFamily, tabsTokens.fontSize, tabsTokens.fontStyle, tabsTokens.fontWeight, tabsTokens.letterSpacing, tabsTokens.lineHeight),
19
19
  l: /*#__PURE__*/css(["", ":0.75rem;", ":auto;", ":3.5rem;", ":0 0.875rem;", ":0 0.75rem;", ":1.75rem;", ":0.5rem;", ":0.125rem;", ":var(--plasma-typo-body-l-font-family);", ":var(--plasma-typo-body-l-font-size);", ":var(--plasma-typo-body-l-font-style);", ":var(--plasma-typo-body-l-font-weight);", ":var(--plasma-typo-body-l-letter-spacing);", ":var(--plasma-typo-body-l-line-height);"], tabsTokens.itemBorderRadius, tabsTokens.itemWidth, tabsTokens.itemHeight, tabsTokens.itemPadding, tabsTokens.itemPaddingPilled, tabsTokens.itemMarginLeft, tabsTokens.itemContentGap, tabsTokens.itemContentPadding, tabsTokens.fontFamily, tabsTokens.fontSize, tabsTokens.fontStyle, tabsTokens.fontWeight, tabsTokens.letterSpacing, tabsTokens.lineHeight),
20
+ /**
21
+ * @deprecated
22
+ * вместо h1-h5 использовать HorizontalTabItem со свойством header
23
+ */
20
24
  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),
21
25
  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),
22
26
  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,6 +16,10 @@ export var config = {
16
16
  s: /*#__PURE__*/css(["", ":0.625rem;", ":fit-content;", ":auto;", ":0rem;", ":0.25rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding),
17
17
  m: /*#__PURE__*/css(["", ":0.75rem;", ":fit-content;", ":auto;", ":0rem;", ":0.625rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding),
18
18
  l: /*#__PURE__*/css(["", ":0.75rem;", ":fit-content;", ":auto;", ":0rem;", ":0.75rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding),
19
+ /**
20
+ * @deprecated
21
+ * вместо h1-h5 использовать HorizontalTabs со свойством header
22
+ */
19
23
  h5: /*#__PURE__*/css(["", ":0.5rem;", ":fit-content;", ":auto;", ":0.25rem;", ":0rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding),
20
24
  h4: /*#__PURE__*/css(["", ":0.5rem;", ":fit-content;", ":auto;", ":0.25rem;", ":0rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding),
21
25
  h3: /*#__PURE__*/css(["", ":0.625rem;", ":fit-content;", ":auto;", ":0.375rem;", ":0rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding),
@@ -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_web/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
+ };
@@ -0,0 +1,24 @@
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
+ clear: /*#__PURE__*/css(["", ":var(--text-secondary);", ":transparent;", ":var(--surface-accent);", ":0rem;", ":transparent;", ":0rem;"], tabsTokens.arrowColor, tabsTokens.tabsBackgroundColor, tabsTokens.outlineFocusColor, tabsTokens.tabsDividerHeight, tabsTokens.tabsDividerColor, tabsTokens.tabsDividerBorderRadius),
11
+ divider: /*#__PURE__*/css(["", ":var(--text-secondary);", ":transparent;", ":var(--surface-accent);", ":0.0625rem;", ":var(--surface-transparent-tertiary);", ":0.0625rem;"], tabsTokens.arrowColor, tabsTokens.tabsBackgroundColor, tabsTokens.outlineFocusColor, tabsTokens.tabsDividerHeight, tabsTokens.tabsDividerColor, tabsTokens.tabsDividerBorderRadius)
12
+ },
13
+ size: {
14
+ h5: /*#__PURE__*/css(["", ":0.5rem;", ":fit-content;", ":auto;", ":0.25rem;", ":0rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding),
15
+ h4: /*#__PURE__*/css(["", ":0.5rem;", ":fit-content;", ":auto;", ":0.25rem;", ":0rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding),
16
+ h3: /*#__PURE__*/css(["", ":0.625rem;", ":fit-content;", ":auto;", ":0.375rem;", ":0rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding),
17
+ h2: /*#__PURE__*/css(["", ":0.75rem;", ":fit-content;", ":auto;", ":0.5rem;", ":0rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding),
18
+ h1: /*#__PURE__*/css(["", ":0.75rem;", ":fit-content;", ":auto;", ":1rem;", ":0rem;"], tabsTokens.tabsBorderRadius, tabsTokens.tabsWidth, tabsTokens.tabsHeight, tabsTokens.arrowInnerPadding, tabsTokens.arrowOuterPadding)
19
+ },
20
+ disabled: {
21
+ "true": /*#__PURE__*/css(["", ":0.4;"], tabsTokens.disabledOpacity)
22
+ }
23
+ }
24
+ };
@@ -17,6 +17,10 @@ export var config = {
17
17
  s: /*#__PURE__*/css(["", ":0.5rem;", ":auto;", ":2.5rem;", ":0 0.625rem;", ":0 0.5rem;", ":1.75rem;", ":0.25rem;", ":0.125rem;", ":var(--plasma-typo-body-s-font-family);", ":var(--plasma-typo-body-s-font-size);", ":var(--plasma-typo-body-s-font-style);", ":var(--plasma-typo-body-s-font-weight);", ":var(--plasma-typo-body-s-letter-spacing);", ":var(--plasma-typo-body-s-line-height);"], tabsTokens.itemBorderRadius, tabsTokens.itemWidth, tabsTokens.itemHeight, tabsTokens.itemPadding, tabsTokens.itemPaddingPilled, tabsTokens.itemMarginLeft, tabsTokens.itemContentGap, tabsTokens.itemContentPadding, tabsTokens.fontFamily, tabsTokens.fontSize, tabsTokens.fontStyle, tabsTokens.fontWeight, tabsTokens.letterSpacing, tabsTokens.lineHeight),
18
18
  m: /*#__PURE__*/css(["", ":0.625rem;", ":auto;", ":3rem;", ":0 0.625rem;", ":0 0.5rem;", ":1.75rem;", ":0.375rem;", ":0.125rem;", ":var(--plasma-typo-body-m-font-family);", ":var(--plasma-typo-body-m-font-size);", ":var(--plasma-typo-body-m-font-style);", ":var(--plasma-typo-body-m-font-weight);", ":var(--plasma-typo-body-m-letter-spacing);", ":var(--plasma-typo-body-m-line-height);"], tabsTokens.itemBorderRadius, tabsTokens.itemWidth, tabsTokens.itemHeight, tabsTokens.itemPadding, tabsTokens.itemPaddingPilled, tabsTokens.itemMarginLeft, tabsTokens.itemContentGap, tabsTokens.itemContentPadding, tabsTokens.fontFamily, tabsTokens.fontSize, tabsTokens.fontStyle, tabsTokens.fontWeight, tabsTokens.letterSpacing, tabsTokens.lineHeight),
19
19
  l: /*#__PURE__*/css(["", ":0.75rem;", ":auto;", ":3.5rem;", ":0 0.875rem;", ":0 0.75rem;", ":1.75rem;", ":0.5rem;", ":0.125rem;", ":var(--plasma-typo-body-l-font-family);", ":var(--plasma-typo-body-l-font-size);", ":var(--plasma-typo-body-l-font-style);", ":var(--plasma-typo-body-l-font-weight);", ":var(--plasma-typo-body-l-letter-spacing);", ":var(--plasma-typo-body-l-line-height);"], tabsTokens.itemBorderRadius, tabsTokens.itemWidth, tabsTokens.itemHeight, tabsTokens.itemPadding, tabsTokens.itemPaddingPilled, tabsTokens.itemMarginLeft, tabsTokens.itemContentGap, tabsTokens.itemContentPadding, tabsTokens.fontFamily, tabsTokens.fontSize, tabsTokens.fontStyle, tabsTokens.fontWeight, tabsTokens.letterSpacing, tabsTokens.lineHeight),
20
+ /**
21
+ * @deprecated
22
+ * вместо h1-h5 использовать HorizontalTabItem со свойством header
23
+ */
20
24
  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),
21
25
  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),
22
26
  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),