@salutejs/plasma-new-hope 0.114.0-dev.0 → 0.114.1-canary.1333.10211221618.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. package/cjs/components/Tabs/tokens.js +5 -2
  2. package/cjs/components/Tabs/tokens.js.map +1 -1
  3. package/cjs/components/Tabs/ui/TabItem/TabItem.css +1 -1
  4. package/cjs/components/Tabs/ui/TabItem/TabItem.js +8 -2
  5. package/cjs/components/Tabs/ui/TabItem/TabItem.js.map +1 -1
  6. package/cjs/components/Tabs/ui/TabItem/variations/_view/base.js +1 -1
  7. package/cjs/components/Tabs/ui/TabItem/variations/_view/base.js.map +1 -1
  8. package/cjs/components/Tabs/ui/TabItem/variations/_view/base_7pcxtm.css +1 -0
  9. package/cjs/components/Tabs/ui/Tabs/Tabs.css +6 -6
  10. package/cjs/components/Tabs/ui/Tabs/Tabs.js +49 -7
  11. package/cjs/components/Tabs/ui/Tabs/Tabs.js.map +1 -1
  12. package/cjs/components/Tabs/ui/Tabs/Tabs.styles.js +7 -7
  13. package/cjs/components/Tabs/ui/Tabs/Tabs.styles.js.map +1 -1
  14. package/{es/components/Tabs/ui/Tabs/Tabs.styles_1b8qt33.css → cjs/components/Tabs/ui/Tabs/Tabs.styles_106qhdc.css} +1 -1
  15. package/cjs/components/Tabs/ui/Tabs/variations/_stretch/base.js +1 -1
  16. package/cjs/components/Tabs/ui/Tabs/variations/_stretch/base.js.map +1 -1
  17. package/{es/components/Tabs/ui/Tabs/variations/_stretch/base_176tz0n.css → cjs/components/Tabs/ui/Tabs/variations/_stretch/base_1c7lnrm.css} +1 -1
  18. package/cjs/components/Tabs/ui/Tabs/variations/_view/base.js +1 -1
  19. package/{es/components/Tabs/ui/Tabs/variations/_view/base_4xkt26.css → cjs/components/Tabs/ui/Tabs/variations/_view/base_aij3sf.css} +1 -1
  20. package/cjs/index.css +7 -7
  21. package/emotion/cjs/components/Tabs/tokens.js +5 -2
  22. package/emotion/cjs/components/Tabs/ui/TabItem/TabItem.js +8 -2
  23. package/emotion/cjs/components/Tabs/ui/TabItem/variations/_view/base.js +1 -1
  24. package/emotion/cjs/components/Tabs/ui/Tabs/Tabs.js +49 -7
  25. package/emotion/cjs/components/Tabs/ui/Tabs/Tabs.styles.js +4 -12
  26. package/emotion/cjs/components/Tabs/ui/Tabs/variations/_stretch/base.js +1 -1
  27. package/emotion/cjs/components/Tabs/ui/Tabs/variations/_view/tokens.json +1 -1
  28. package/emotion/cjs/examples/plasma_b2c/components/Tabs/TabItem.config.js +15 -15
  29. package/emotion/cjs/examples/plasma_b2c/components/Tabs/Tabs.config.js +16 -17
  30. package/emotion/cjs/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +261 -196
  31. package/emotion/cjs/examples/plasma_web/components/Tabs/TabItem.config.js +15 -15
  32. package/emotion/cjs/examples/plasma_web/components/Tabs/Tabs.config.js +16 -17
  33. package/emotion/cjs/examples/plasma_web/components/Tabs/Tabs.stories.tsx +261 -196
  34. package/emotion/es/components/Tabs/tokens.js +5 -2
  35. package/emotion/es/components/Tabs/ui/TabItem/TabItem.js +8 -2
  36. package/emotion/es/components/Tabs/ui/TabItem/variations/_view/base.js +1 -1
  37. package/emotion/es/components/Tabs/ui/Tabs/Tabs.js +50 -8
  38. package/emotion/es/components/Tabs/ui/Tabs/Tabs.styles.js +5 -13
  39. package/emotion/es/components/Tabs/ui/Tabs/variations/_stretch/base.js +1 -1
  40. package/emotion/es/components/Tabs/ui/Tabs/variations/_view/tokens.json +1 -1
  41. package/emotion/es/examples/plasma_b2c/components/Tabs/TabItem.config.js +15 -15
  42. package/emotion/es/examples/plasma_b2c/components/Tabs/Tabs.config.js +16 -17
  43. package/emotion/es/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +261 -196
  44. package/emotion/es/examples/plasma_web/components/Tabs/TabItem.config.js +15 -15
  45. package/emotion/es/examples/plasma_web/components/Tabs/Tabs.config.js +16 -17
  46. package/emotion/es/examples/plasma_web/components/Tabs/Tabs.stories.tsx +261 -196
  47. package/es/components/Tabs/tokens.js +5 -2
  48. package/es/components/Tabs/tokens.js.map +1 -1
  49. package/es/components/Tabs/ui/TabItem/TabItem.css +1 -1
  50. package/es/components/Tabs/ui/TabItem/TabItem.js +8 -2
  51. package/es/components/Tabs/ui/TabItem/TabItem.js.map +1 -1
  52. package/es/components/Tabs/ui/TabItem/variations/_view/base.js +1 -1
  53. package/es/components/Tabs/ui/TabItem/variations/_view/base.js.map +1 -1
  54. package/es/components/Tabs/ui/TabItem/variations/_view/base_7pcxtm.css +1 -0
  55. package/es/components/Tabs/ui/Tabs/Tabs.css +6 -6
  56. package/es/components/Tabs/ui/Tabs/Tabs.js +50 -8
  57. package/es/components/Tabs/ui/Tabs/Tabs.js.map +1 -1
  58. package/es/components/Tabs/ui/Tabs/Tabs.styles.js +7 -7
  59. package/es/components/Tabs/ui/Tabs/Tabs.styles.js.map +1 -1
  60. package/{cjs/components/Tabs/ui/Tabs/Tabs.styles_1b8qt33.css → es/components/Tabs/ui/Tabs/Tabs.styles_106qhdc.css} +1 -1
  61. package/es/components/Tabs/ui/Tabs/variations/_stretch/base.js +1 -1
  62. package/es/components/Tabs/ui/Tabs/variations/_stretch/base.js.map +1 -1
  63. package/{cjs/components/Tabs/ui/Tabs/variations/_stretch/base_176tz0n.css → es/components/Tabs/ui/Tabs/variations/_stretch/base_1c7lnrm.css} +1 -1
  64. package/es/components/Tabs/ui/Tabs/variations/_view/base.js +1 -1
  65. package/{cjs/components/Tabs/ui/Tabs/variations/_view/base_4xkt26.css → es/components/Tabs/ui/Tabs/variations/_view/base_aij3sf.css} +1 -1
  66. package/es/index.css +7 -7
  67. package/package.json +2 -2
  68. package/styled-components/cjs/components/Tabs/tokens.js +5 -2
  69. package/styled-components/cjs/components/Tabs/ui/TabItem/TabItem.js +8 -2
  70. package/styled-components/cjs/components/Tabs/ui/TabItem/variations/_view/base.js +1 -1
  71. package/styled-components/cjs/components/Tabs/ui/Tabs/Tabs.js +49 -7
  72. package/styled-components/cjs/components/Tabs/ui/Tabs/Tabs.styles.js +1 -1
  73. package/styled-components/cjs/components/Tabs/ui/Tabs/variations/_stretch/base.js +1 -1
  74. package/styled-components/cjs/components/Tabs/ui/Tabs/variations/_view/tokens.json +1 -1
  75. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/TabItem.config.js +8 -8
  76. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/Tabs.config.js +4 -5
  77. package/styled-components/cjs/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +261 -196
  78. package/styled-components/cjs/examples/plasma_web/components/Tabs/TabItem.config.js +8 -8
  79. package/styled-components/cjs/examples/plasma_web/components/Tabs/Tabs.config.js +4 -5
  80. package/styled-components/cjs/examples/plasma_web/components/Tabs/Tabs.stories.tsx +261 -196
  81. package/styled-components/es/components/Tabs/tokens.js +5 -2
  82. package/styled-components/es/components/Tabs/ui/TabItem/TabItem.js +8 -2
  83. package/styled-components/es/components/Tabs/ui/TabItem/variations/_view/base.js +1 -1
  84. package/styled-components/es/components/Tabs/ui/Tabs/Tabs.js +50 -8
  85. package/styled-components/es/components/Tabs/ui/Tabs/Tabs.styles.js +2 -2
  86. package/styled-components/es/components/Tabs/ui/Tabs/variations/_stretch/base.js +1 -1
  87. package/styled-components/es/components/Tabs/ui/Tabs/variations/_view/tokens.json +1 -1
  88. package/styled-components/es/examples/plasma_b2c/components/Tabs/TabItem.config.js +8 -8
  89. package/styled-components/es/examples/plasma_b2c/components/Tabs/Tabs.config.js +4 -5
  90. package/styled-components/es/examples/plasma_b2c/components/Tabs/Tabs.stories.tsx +261 -196
  91. package/styled-components/es/examples/plasma_web/components/Tabs/TabItem.config.js +8 -8
  92. package/styled-components/es/examples/plasma_web/components/Tabs/Tabs.config.js +4 -5
  93. package/styled-components/es/examples/plasma_web/components/Tabs/Tabs.stories.tsx +261 -196
  94. package/types/components/Tabs/tokens.d.ts +3 -0
  95. package/types/components/Tabs/tokens.d.ts.map +1 -1
  96. package/types/components/Tabs/ui/TabItem/TabItem.d.ts.map +1 -1
  97. package/types/components/Tabs/ui/TabItem/variations/_view/base.d.ts.map +1 -1
  98. package/types/components/Tabs/ui/Tabs/Tabs.d.ts +4 -2
  99. package/types/components/Tabs/ui/Tabs/Tabs.d.ts.map +1 -1
  100. package/types/components/Tabs/ui/Tabs/Tabs.styles.d.ts.map +1 -1
  101. package/types/components/Tabs/ui/Tabs/Tabs.types.d.ts +12 -5
  102. package/types/components/Tabs/ui/Tabs/Tabs.types.d.ts.map +1 -1
  103. package/types/components/Tabs/ui/Tabs/variations/_stretch/base.d.ts.map +1 -1
  104. package/types/examples/plasma_b2c/components/Tabs/TabItem.config.d.ts.map +1 -1
  105. package/types/examples/plasma_b2c/components/Tabs/Tabs.config.d.ts +0 -1
  106. package/types/examples/plasma_b2c/components/Tabs/Tabs.config.d.ts.map +1 -1
  107. package/types/examples/plasma_b2c/components/Tabs/Tabs.d.ts +2 -1
  108. package/types/examples/plasma_b2c/components/Tabs/Tabs.d.ts.map +1 -1
  109. package/types/examples/plasma_web/components/Tabs/TabItem.config.d.ts.map +1 -1
  110. package/types/examples/plasma_web/components/Tabs/Tabs.config.d.ts +0 -1
  111. package/types/examples/plasma_web/components/Tabs/Tabs.config.d.ts.map +1 -1
  112. package/types/examples/plasma_web/components/Tabs/Tabs.d.ts +2 -1
  113. package/types/examples/plasma_web/components/Tabs/Tabs.d.ts.map +1 -1
  114. package/types/examples/sds_engineer/components/Tabs/Tabs.d.ts +2 -1
  115. package/types/examples/sds_engineer/components/Tabs/Tabs.d.ts.map +1 -1
  116. package/cjs/components/Tabs/ui/TabItem/variations/_view/base_q8xs21.css +0 -1
  117. package/es/components/Tabs/ui/TabItem/variations/_view/base_q8xs21.css +0 -1
@@ -1,26 +1,47 @@
1
1
  import React, { useState } from 'react';
2
2
  import type { ComponentProps } from 'react';
3
3
  import type { StoryObj, Meta } from '@storybook/react';
4
- import styled from 'styled-components';
4
+ import { disableProps } from '@salutejs/plasma-sb-utils';
5
5
 
6
6
  import { tabsConfig } from '../../../../components/Tabs';
7
7
  import { mergeConfig } from '../../../../engines';
8
8
  import { argTypesFromConfig, WithTheme } from '../../../_helpers';
9
9
  import { IconMic } from '../../../../components/_Icon';
10
+ import { Dropdown } from '../Dropdown/Dropdown';
11
+ import { Counter } from '../Counter/Counter';
10
12
 
11
13
  import { config } from './Tabs.config';
12
14
  import { Tabs } from './Tabs';
13
15
  import { TabItem } from './TabItem';
14
16
 
15
- const tabItemViews = ['clear', 'default', 'divider', 'secondary'];
17
+ const clips = ['none', 'scroll', 'showAll'];
18
+ const sizes = ['xs', 's', 'm', 'l'] as const;
19
+ const headerSizes = ['h5', 'h4', 'h3', 'h2', 'h1'] as const;
16
20
 
17
21
  type CustomStoryTabsProps = {
18
- tabItemView: string;
19
- itemsNumber?: number;
20
- animated?: boolean;
21
- label?: string;
22
- showLeftContent: boolean;
23
- showRightContent: boolean;
22
+ hasDivider: boolean;
23
+ contentLeft: string;
24
+ contentRight: string;
25
+ stretch?: boolean;
26
+ };
27
+
28
+ const contentLeftOptions = ['none', 'icon'];
29
+ const contentRightOptions = ['none', 'text', 'counter', 'icon'];
30
+
31
+ const getContentLeft = (contentLeftOption: string) =>
32
+ contentLeftOption === 'icon' ? <IconMic size="xs" color="inherit" /> : undefined;
33
+
34
+ const getContentRight = (contentRightOption: string) => {
35
+ switch (contentRightOption) {
36
+ case 'icon':
37
+ return <IconMic size="xs" color="inherit" />;
38
+ case 'counter':
39
+ return <Counter count={1} view="positive" />;
40
+ case 'text':
41
+ return <div>Text</div>;
42
+ default:
43
+ return undefined;
44
+ }
24
45
  };
25
46
 
26
47
  type StoryTabsProps = ComponentProps<typeof Tabs> & CustomStoryTabsProps;
@@ -31,232 +52,276 @@ const meta: Meta<StoryTabsProps> = {
31
52
  decorators: [WithTheme],
32
53
  argTypes: {
33
54
  ...argTypesFromConfig(mergeConfig(tabsConfig, config)),
34
- tabItemView: {
35
- options: tabItemViews,
55
+ contentLeft: {
56
+ options: contentLeftOptions,
36
57
  control: {
37
58
  type: 'select',
38
59
  },
39
60
  },
61
+ contentRight: {
62
+ options: contentRightOptions,
63
+ control: {
64
+ type: 'select',
65
+ },
66
+ },
67
+ ...disableProps(['itemsNumber', 'pilled', 'animated', 'stretch', 'view']),
40
68
  },
41
69
  };
42
70
 
43
71
  export default meta;
44
72
 
45
73
  const StoryDefault = (props: StoryTabsProps) => {
74
+ const { disabled, size, contentLeft: contentLeftOption, contentRight: contentRightOption, hasDivider } = props;
75
+ const items = Array(8).fill(0);
76
+ const [index, setIndex] = useState(0);
77
+
78
+ return (
79
+ <Tabs view={hasDivider ? 'divider' : 'clear'} disabled={disabled} size={size}>
80
+ {items.map((_, i) => (
81
+ <TabItem
82
+ key={`item:${i}`}
83
+ view="divider"
84
+ selected={i === index}
85
+ onClick={() => !disabled && setIndex(i)}
86
+ tabIndex={!disabled ? 0 : -1}
87
+ disabled={disabled}
88
+ contentLeft={getContentLeft(contentLeftOption)}
89
+ contentRight={getContentRight(contentRightOption)}
90
+ size={size}
91
+ >
92
+ {`Label${i + 1}`}
93
+ </TabItem>
94
+ ))}
95
+ </Tabs>
96
+ );
97
+ };
98
+
99
+ const StoryScroll = (props: StoryTabsProps) => {
46
100
  const {
47
- itemsNumber,
48
- label,
49
- view,
50
101
  disabled,
51
- stretch,
52
- pilled,
53
- animated,
54
- tabItemView,
102
+ clip,
55
103
  size,
56
- showLeftContent,
57
- showRightContent,
104
+ contentLeft: contentLeftOption,
105
+ contentRight: contentRightOption,
106
+ hasDivider,
58
107
  } = props;
59
- const items = Array(itemsNumber).fill(0);
60
- const secondItems = Array(10).fill(0);
108
+ const items = Array(8).fill(0);
61
109
  const [index, setIndex] = useState(0);
62
- const [secondIndex, setSecondIndex] = useState(0);
63
- const [thirdIndex, setThirdIndex] = useState(0);
64
110
 
65
111
  return (
66
- <>
67
- <h3>Tabs with auto width</h3>
68
- <Tabs view={view} stretch={stretch} pilled={pilled} disabled={disabled} size={size}>
69
- {items.map((_, i) => (
70
- <TabItem
71
- key={`item:${i}`}
72
- view={tabItemView}
73
- selected={i === index}
74
- onClick={() => !disabled && setIndex(i)}
75
- tabIndex={!disabled ? 0 : -1}
76
- disabled={disabled}
77
- pilled={pilled}
78
- animated={animated}
79
- contentLeft={showLeftContent && <IconMic size="xs" color="inherit" />}
80
- contentRight={showRightContent && <div>Text</div>}
81
- size={size}
82
- >
83
- {label}
84
- </TabItem>
85
- ))}
86
- </Tabs>
112
+ <Tabs
113
+ clip={clip}
114
+ view={hasDivider ? 'divider' : 'clear'}
115
+ disabled={disabled}
116
+ size={size}
117
+ style={{ width: '15rem' }}
118
+ >
119
+ {items.map((_, i) => (
120
+ <TabItem
121
+ key={`item:${i}`}
122
+ view="divider"
123
+ selected={i === index}
124
+ onClick={() => !disabled && setIndex(i)}
125
+ tabIndex={!disabled ? 0 : -1}
126
+ disabled={disabled}
127
+ contentLeft={getContentLeft(contentLeftOption)}
128
+ contentRight={getContentRight(contentRightOption)}
129
+ size={size}
130
+ >
131
+ {`Label${i + 1}`}
132
+ </TabItem>
133
+ ))}
134
+ </Tabs>
135
+ );
136
+ };
87
137
 
88
- <h3>Tabs with fixed width</h3>
89
- <Tabs
90
- view={view}
91
- stretch={stretch}
92
- pilled={pilled}
93
- disabled={disabled}
94
- size={size}
95
- style={{ width: '28.5rem' }}
96
- >
97
- {secondItems.map((_, i) => (
98
- <TabItem
99
- key={`item:${i}`}
100
- view={tabItemView}
101
- selected={i === secondIndex}
102
- onClick={() => !disabled && setSecondIndex(i)}
103
- tabIndex={!disabled ? 0 : -1}
104
- disabled={disabled}
105
- pilled={pilled}
106
- animated={animated}
107
- contentLeft={showLeftContent && <IconMic size="xs" color="inherit" />}
108
- contentRight={showRightContent && <div>Text</div>}
109
- size={size}
110
- >
111
- {label}
112
- </TabItem>
113
- ))}
114
- </Tabs>
138
+ const StoryShowAll = (props: StoryTabsProps) => {
139
+ const {
140
+ disabled,
141
+ clip,
142
+ size,
143
+ contentLeft: contentLeftOption,
144
+ contentRight: contentRightOption,
145
+ hasDivider,
146
+ } = props;
147
+ const maxItemsNumber = 3;
148
+ const items = Array(8).fill(0);
149
+ const [index, setIndex] = useState(0);
150
+
151
+ const visibleItems = items.slice(0, maxItemsNumber);
152
+ const otherItems = items.slice(maxItemsNumber);
153
+
154
+ const dropdownItems = otherItems.map((_, i) => {
155
+ const itemIndex = maxItemsNumber + i;
156
+
157
+ return {
158
+ label: `Label${itemIndex + 1}`,
159
+ value: itemIndex,
160
+ };
161
+ });
115
162
 
116
- <h3>Tabs with arrow navigation</h3>
117
- <Tabs view={view} index={thirdIndex} stretch={stretch} pilled={pilled} disabled={disabled} size={size}>
118
- {items.map((_, i) => (
119
- <TabItem
120
- key={`item:${i}`}
121
- view={tabItemView}
122
- selected={i === thirdIndex}
123
- itemIndex={i}
124
- onIndexChange={(i) => setThirdIndex(i)}
125
- onClick={() => !disabled && setThirdIndex(i)}
126
- tabIndex={!disabled ? 0 : -1}
127
- disabled={disabled}
128
- pilled={pilled}
129
- animated={animated}
130
- contentLeft={showLeftContent && <IconMic size="xs" color="inherit" />}
131
- contentRight={showRightContent && <div>Text</div>}
132
- size={size}
163
+ return (
164
+ <Tabs clip={clip} view={hasDivider ? 'divider' : 'clear'} disabled={disabled} size={size}>
165
+ {visibleItems.map((_, i) => (
166
+ <TabItem
167
+ key={`item:${i}`}
168
+ view="divider"
169
+ selected={i === index}
170
+ onClick={() => !disabled && setIndex(i)}
171
+ tabIndex={!disabled ? 0 : -1}
172
+ disabled={disabled}
173
+ contentLeft={getContentLeft(contentLeftOption)}
174
+ contentRight={getContentRight(contentRightOption)}
175
+ size={size}
176
+ >
177
+ {`Label${i + 1}`}
178
+ </TabItem>
179
+ ))}
180
+ {dropdownItems.length > 0 && (
181
+ <div style={{ marginLeft: '1.75rem' }}>
182
+ <Dropdown
183
+ size={size as typeof sizes[number]}
184
+ items={dropdownItems}
185
+ onItemSelect={(item) => setIndex(item.value as number)}
133
186
  >
134
- {label}
135
- </TabItem>
136
- ))}
137
- </Tabs>
138
- </>
187
+ <TabItem
188
+ key="item:ShowAll"
189
+ view="divider"
190
+ tabIndex={!disabled ? 0 : -1}
191
+ disabled={disabled}
192
+ size={size}
193
+ >
194
+ ShowAll
195
+ </TabItem>
196
+ </Dropdown>
197
+ </div>
198
+ )}
199
+ </Tabs>
139
200
  );
140
201
  };
141
202
 
142
203
  export const Default: StoryObj<StoryTabsProps> = {
143
204
  args: {
144
205
  size: 'xs',
145
- itemsNumber: 4,
146
- tabItemView: 'divider',
147
206
  disabled: false,
148
- stretch: false,
149
- pilled: false,
150
- animated: true,
151
- view: 'divider',
152
- label: 'Label',
153
- showLeftContent: false,
154
- showRightContent: false,
207
+ hasDivider: true,
208
+ },
209
+ argTypes: {
210
+ clip: {
211
+ options: clips,
212
+ control: {
213
+ type: 'select',
214
+ },
215
+ },
216
+ size: {
217
+ options: sizes,
218
+ control: {
219
+ type: 'select',
220
+ },
221
+ },
222
+ },
223
+ render: (args) => {
224
+ switch (args.clip) {
225
+ case 'scroll':
226
+ return <StoryScroll {...args} />;
227
+ case 'showAll':
228
+ return <StoryShowAll {...args} />;
229
+ default:
230
+ return <StoryDefault {...args} />;
231
+ }
155
232
  },
156
- render: (args) => <StoryDefault {...args} />,
157
233
  };
158
234
 
159
- const StyledMultipleContainer = styled.div`
160
- display: flex;
161
- align-items: center;
162
- column-gap: 1rem;
163
- `;
235
+ const StoryStretch = (props: StoryTabsProps) => {
236
+ const {
237
+ disabled,
238
+ size,
239
+ contentLeft: contentLeftOption,
240
+ contentRight: contentRightOption,
241
+ hasDivider,
242
+ stretch,
243
+ } = props;
244
+ const items = Array(8).fill(0);
245
+ const [index, setIndex] = useState(0);
164
246
 
165
- const StoryMultiple = ({
166
- itemsNumber,
167
- label,
168
- view,
169
- disabled,
170
- stretch,
171
- pilled,
172
- animated,
173
- tabItemView,
174
- size,
175
- showLeftContent,
176
- showRightContent,
177
- }: StoryTabsProps) => {
178
- const items = Array(itemsNumber).fill(0);
247
+ return (
248
+ <Tabs view={hasDivider ? 'divider' : 'clear'} stretch={stretch} disabled={disabled} size={size}>
249
+ {items.map((_, i) => (
250
+ <TabItem
251
+ key={`item:${i}`}
252
+ view="divider"
253
+ selected={i === index}
254
+ onClick={() => !disabled && setIndex(i)}
255
+ tabIndex={!disabled ? 0 : -1}
256
+ disabled={disabled}
257
+ contentLeft={getContentLeft(contentLeftOption)}
258
+ contentRight={getContentRight(contentRightOption)}
259
+ size={size}
260
+ >
261
+ {`Label${i + 1}`}
262
+ </TabItem>
263
+ ))}
264
+ </Tabs>
265
+ );
266
+ };
179
267
 
180
- const [index1, setIndex1] = useState(0);
181
- const [index2, setIndex2] = useState(0);
268
+ export const Stretch: StoryObj<StoryTabsProps> = {
269
+ args: {
270
+ size: 'xs',
271
+ stretch: true,
272
+ disabled: false,
273
+ hasDivider: true,
274
+ },
275
+ argTypes: {
276
+ size: {
277
+ options: sizes,
278
+ control: {
279
+ type: 'select',
280
+ },
281
+ },
282
+ },
283
+ render: (args) => <StoryStretch {...args} />,
284
+ };
285
+
286
+ const StoryHeaderTabs = (props: StoryTabsProps) => {
287
+ const { disabled, size, contentLeft: contentLeftOption, contentRight: contentRightOption, hasDivider } = props;
288
+ const items = Array(4).fill(0);
289
+ const [index, setIndex] = useState(0);
182
290
 
183
291
  return (
184
- <StyledMultipleContainer>
185
- <Tabs
186
- view={view}
187
- index={index1}
188
- stretch={stretch}
189
- pilled={pilled}
190
- disabled={disabled}
191
- size={size}
192
- style={{ width: '12rem' }}
193
- >
194
- {items.map((_, i) => (
195
- <TabItem
196
- key={`item:${i}`}
197
- view={tabItemView}
198
- selected={i === index1}
199
- itemIndex={i}
200
- onIndexChange={(i) => setIndex1(i)}
201
- onClick={() => !disabled && setIndex1(i)}
202
- tabIndex={!disabled ? 0 : -1}
203
- disabled={disabled}
204
- pilled={pilled}
205
- animated={animated}
206
- contentLeft={showLeftContent && <IconMic size="xs" color="inherit" />}
207
- contentRight={showRightContent && <div>Text</div>}
208
- size={size}
209
- >
210
- {label}
211
- </TabItem>
212
- ))}
213
- </Tabs>
214
- <Tabs
215
- view={view}
216
- index={index2}
217
- stretch={stretch}
218
- pilled={pilled}
219
- disabled={disabled}
220
- size={size}
221
- style={{ width: '12rem' }}
222
- >
223
- {items.map((_, i) => (
224
- <TabItem
225
- key={`item:${i}`}
226
- view={tabItemView}
227
- selected={i === index2}
228
- itemIndex={i}
229
- onIndexChange={(i) => setIndex2(i)}
230
- onClick={() => !disabled && setIndex2(i)}
231
- tabIndex={!disabled ? 0 : -1}
232
- disabled={disabled}
233
- pilled={pilled}
234
- animated={animated}
235
- contentLeft={showLeftContent && <IconMic size="xs" color="inherit" />}
236
- contentRight={showRightContent && <div>Text</div>}
237
- size={size}
238
- >
239
- {label}
240
- </TabItem>
241
- ))}
242
- </Tabs>
243
- </StyledMultipleContainer>
292
+ <Tabs view={hasDivider ? 'divider' : 'clear'} disabled={disabled} size={size}>
293
+ {items.map((_, i) => (
294
+ <TabItem
295
+ key={`item:${i}`}
296
+ view="divider"
297
+ selected={i === index}
298
+ onClick={() => !disabled && setIndex(i)}
299
+ tabIndex={!disabled ? 0 : -1}
300
+ disabled={disabled}
301
+ contentLeft={getContentLeft(contentLeftOption)}
302
+ contentRight={getContentRight(contentRightOption)}
303
+ size={size}
304
+ >
305
+ {`Label${i + 1}`}
306
+ </TabItem>
307
+ ))}
308
+ </Tabs>
244
309
  );
245
310
  };
246
311
 
247
- export const Multiple: StoryObj<StoryTabsProps> = {
312
+ export const HeaderTabs: StoryObj<StoryTabsProps> = {
248
313
  args: {
249
- size: 'xs',
250
- itemsNumber: 6,
251
- tabItemView: 'divider',
314
+ size: 'h5',
252
315
  disabled: false,
253
- stretch: false,
254
- pilled: false,
255
- animated: true,
256
- view: 'divider',
257
- label: 'Label',
258
- showLeftContent: false,
259
- showRightContent: false,
316
+ hasDivider: true,
317
+ },
318
+ argTypes: {
319
+ size: {
320
+ options: headerSizes,
321
+ control: {
322
+ type: 'select',
323
+ },
324
+ },
260
325
  },
261
- render: (args) => <StoryMultiple {...args} />,
326
+ render: (args) => <StoryHeaderTabs {...args} />,
262
327
  };
@@ -10,6 +10,8 @@ export declare const classes: {
10
10
  tabLeftContent: string;
11
11
  tabsHasLeftArrow: string;
12
12
  tabsHasRightArrow: string;
13
+ tabsClipScroll: string;
14
+ tabsClipShowAll: string;
13
15
  };
14
16
  export declare const tokens: {
15
17
  disabledOpacity: string;
@@ -50,6 +52,7 @@ export declare const tokens: {
50
52
  itemColor: string;
51
53
  itemBackgroundColor: string;
52
54
  itemColorHover: string;
55
+ itemColorActive: string;
53
56
  itemBackgroundColorHover: string;
54
57
  itemSelectedColor: string;
55
58
  itemSelectedBackgroundColor: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/tokens.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO;;;;;;;;;;;;CAYnB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmElB,CAAC"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/tokens.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;CAcnB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoElB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TabItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/Tabs/ui/TabItem/TabItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiE,MAAM,OAAO,CAAC;AAGtF,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AASjE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,eAAO,MAAM,WAAW,SAAU,UAAU,cAAc,EAAE,YAAY,CAAC;;;;;;;;;;;;wCA2FnE,CAAC;AAEP,eAAO,MAAM,aAAa,EAAE,eAuB3B,CAAC"}
1
+ {"version":3,"file":"TabItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/Tabs/ui/TabItem/TabItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiE,MAAM,OAAO,CAAC;AAGtF,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AASjE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,eAAO,MAAM,WAAW,SAAU,UAAU,cAAc,EAAE,YAAY,CAAC;;;;;;;;;;;;wCAqGnE,CAAC;AAEP,eAAO,MAAM,aAAa,EAAE,eAuB3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Tabs/ui/TabItem/variations/_view/base.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,IAAI,0CAmDhB,CAAC"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Tabs/ui/TabItem/variations/_view/base.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,IAAI,0CAuDhB,CAAC"}
@@ -2,31 +2,33 @@ import React from 'react';
2
2
  import type { RootProps } from '../../../../engines/types';
3
3
  import type { TabsProps } from './Tabs.types';
4
4
  export declare const tabsRoot: (Root: RootProps<HTMLDivElement, TabsProps>) => React.ForwardRefExoticComponent<import("../../../../types").AsProps<any> & React.HTMLAttributes<HTMLDivElement> & {
5
+ clip?: "scroll" | "showAll" | undefined;
5
6
  disabled?: boolean | undefined;
6
7
  stretch?: boolean | undefined;
7
8
  pilled?: boolean | undefined;
8
9
  size?: string | undefined;
9
10
  view?: string | undefined;
11
+ index?: number | undefined;
10
12
  outsideScroll?: boolean | {
11
13
  left?: string | undefined;
12
14
  right?: string | undefined;
13
15
  } | undefined;
14
- index?: number | undefined;
15
16
  } & React.RefAttributes<HTMLDivElement>>;
16
17
  export declare const tabsConfig: {
17
18
  name: string;
18
19
  tag: string;
19
20
  layout: (Root: RootProps<HTMLDivElement, TabsProps>) => React.ForwardRefExoticComponent<import("../../../../types").AsProps<any> & React.HTMLAttributes<HTMLDivElement> & {
21
+ clip?: "scroll" | "showAll" | undefined;
20
22
  disabled?: boolean | undefined;
21
23
  stretch?: boolean | undefined;
22
24
  pilled?: boolean | undefined;
23
25
  size?: string | undefined;
24
26
  view?: string | undefined;
27
+ index?: number | undefined;
25
28
  outsideScroll?: boolean | {
26
29
  left?: string | undefined;
27
30
  right?: string | undefined;
28
31
  } | undefined;
29
- index?: number | undefined;
30
32
  } & React.RefAttributes<HTMLDivElement>>;
31
33
  base: import("@linaria/core").LinariaClassName;
32
34
  variations: {
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../../../src/components/Tabs/ui/Tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuF,MAAM,OAAO,CAAC;AAI5G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAY3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAS9C,eAAO,MAAM,QAAQ,SAAU,UAAU,cAAc,EAAE,SAAS,CAAC;;;;;;;;;;;wCAiK7D,CAAC;AAEP,eAAO,MAAM,UAAU;;;mBAnKQ,UAAU,cAAc,EAAE,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+LlE,CAAC"}
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../../../src/components/Tabs/ui/Tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuF,MAAM,OAAO,CAAC;AAI5G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAY3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAS9C,eAAO,MAAM,QAAQ,SAAU,UAAU,cAAc,EAAE,SAAS,CAAC;;;;;;;;;;;;wCA6M7D,CAAC;AAEP,eAAO,MAAM,UAAU;;;mBA/MQ,UAAU,cAAc,EAAE,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2OlE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/Tabs/ui/Tabs/Tabs.styles.ts"],"names":[],"mappings":";AAMA,eAAO,MAAM,IAAI,0CAIhB,CAAC;AAEF,eAAO,MAAM,aAAa,qKAIzB,CAAC;AAEF,eAAO,MAAM,oBAAoB,qKAmBhC,CAAC;AAEF,eAAO,MAAM,WAAW;;;EAyBvB,CAAC"}
1
+ {"version":3,"file":"Tabs.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/Tabs/ui/Tabs/Tabs.styles.ts"],"names":[],"mappings":";AAMA,eAAO,MAAM,IAAI,0CAIhB,CAAC;AAEF,eAAO,MAAM,aAAa,qKAIzB,CAAC;AAEF,eAAO,MAAM,oBAAoB,qKA0BhC,CAAC;AAEF,eAAO,MAAM,WAAW;;;EAyBvB,CAAC"}
@@ -1,6 +1,14 @@
1
1
  import type { HTMLAttributes } from 'react';
2
2
  import type { AsProps } from '../../../../types';
3
3
  export declare type TabsProps = AsProps & HTMLAttributes<HTMLDivElement> & {
4
+ /**
5
+ * Как ведет себя компонент при ограничении ширины
6
+ * @default 'scroll'
7
+ * @description
8
+ * scroll - появляется горизонтальная прокрутка
9
+ * showAll - становится виден контент, выходящий за пределы компонента
10
+ */
11
+ clip?: 'scroll' | 'showAll';
4
12
  /**
5
13
  * Табы неактивны
6
14
  * @default false
@@ -24,6 +32,10 @@ export declare type TabsProps = AsProps & HTMLAttributes<HTMLDivElement> & {
24
32
  * Вид табов
25
33
  */
26
34
  view?: string;
35
+ /**
36
+ * Индекс активного элемента, необходим для клавиатурной навигации
37
+ */
38
+ index?: number;
27
39
  /**
28
40
  * Уберет скругление с выбранной стороны и подвинет контейнер
29
41
  * @deprecated
@@ -32,10 +44,5 @@ export declare type TabsProps = AsProps & HTMLAttributes<HTMLDivElement> & {
32
44
  left?: string;
33
45
  right?: string;
34
46
  };
35
- /**
36
- *
37
- * Индекс активного элемента, необходим для клавиатурной навигации
38
- */
39
- index?: number;
40
47
  };
41
48
  //# sourceMappingURL=Tabs.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/Tabs/ui/Tabs/Tabs.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,oBAAY,SAAS,GAAG,OAAO,GAC3B,cAAc,CAAC,cAAc,CAAC,GAAG;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
1
+ {"version":3,"file":"Tabs.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/Tabs/ui/Tabs/Tabs.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,oBAAY,SAAS,GAAG,OAAO,GAC3B,cAAc,CAAC,cAAc,CAAC,GAAG;IAC7B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Tabs/ui/Tabs/variations/_stretch/base.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,IAAI,0CAQhB,CAAC"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Tabs/ui/Tabs/variations/_stretch/base.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,IAAI,0CAShB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TabItem.config.d.ts","sourceRoot":"","sources":["../../../../../src/examples/plasma_b2c/components/Tabs/TabItem.config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyQlB,CAAC"}
1
+ {"version":3,"file":"TabItem.config.d.ts","sourceRoot":"","sources":["../../../../../src/examples/plasma_b2c/components/Tabs/TabItem.config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6QlB,CAAC"}