@toptal/picasso-tabs 5.0.15-alpha-MP-955-fix-section-closing-animation-d279e2398.0 → 5.0.15-alpha-ff-7-tabs-19babbfd6.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist-package/src/Tab/Tab.d.ts +3 -3
  2. package/dist-package/src/Tab/Tab.d.ts.map +1 -1
  3. package/dist-package/src/Tab/Tab.js +62 -14
  4. package/dist-package/src/Tab/Tab.js.map +1 -1
  5. package/dist-package/src/Tabs/Tabs.d.ts +11 -8
  6. package/dist-package/src/Tabs/Tabs.d.ts.map +1 -1
  7. package/dist-package/src/Tabs/Tabs.js +53 -16
  8. package/dist-package/src/Tabs/Tabs.js.map +1 -1
  9. package/dist-package/src/TabsCompound/index.d.ts +2 -4
  10. package/dist-package/src/TabsCompound/index.d.ts.map +1 -1
  11. package/dist-package/src/index.d.ts +0 -1
  12. package/dist-package/src/index.d.ts.map +1 -1
  13. package/dist-package/src/index.js +0 -1
  14. package/dist-package/src/index.js.map +1 -1
  15. package/package.json +14 -13
  16. package/src/Tab/Tab.tsx +99 -21
  17. package/src/Tabs/Tabs.tsx +88 -37
  18. package/src/Tabs/__snapshots__/test.tsx.snap +56 -71
  19. package/src/Tabs/test.tsx +4 -4
  20. package/src/index.ts +0 -1
  21. package/dist-package/src/Tab/styles.d.ts +0 -4
  22. package/dist-package/src/Tab/styles.d.ts.map +0 -1
  23. package/dist-package/src/Tab/styles.js +0 -95
  24. package/dist-package/src/Tab/styles.js.map +0 -1
  25. package/dist-package/src/TabScrollButton/TabScrollButton.d.ts +0 -12
  26. package/dist-package/src/TabScrollButton/TabScrollButton.d.ts.map +0 -1
  27. package/dist-package/src/TabScrollButton/TabScrollButton.js +0 -30
  28. package/dist-package/src/TabScrollButton/TabScrollButton.js.map +0 -1
  29. package/dist-package/src/TabScrollButton/index.d.ts +0 -5
  30. package/dist-package/src/TabScrollButton/index.d.ts.map +0 -1
  31. package/dist-package/src/TabScrollButton/index.js +0 -2
  32. package/dist-package/src/TabScrollButton/index.js.map +0 -1
  33. package/dist-package/src/Tabs/styles.d.ts +0 -4
  34. package/dist-package/src/Tabs/styles.d.ts.map +0 -1
  35. package/dist-package/src/Tabs/styles.js +0 -41
  36. package/dist-package/src/Tabs/styles.js.map +0 -1
  37. package/dist-package/src/Tabs/use-tab-action.d.ts +0 -5
  38. package/dist-package/src/Tabs/use-tab-action.d.ts.map +0 -1
  39. package/dist-package/src/Tabs/use-tab-action.js +0 -21
  40. package/dist-package/src/Tabs/use-tab-action.js.map +0 -1
  41. package/src/Tab/styles.ts +0 -107
  42. package/src/TabScrollButton/TabScrollButton.tsx +0 -59
  43. package/src/TabScrollButton/index.ts +0 -6
  44. package/src/Tabs/styles.ts +0 -45
  45. package/src/Tabs/use-tab-action.ts +0 -27
package/src/Tabs/Tabs.tsx CHANGED
@@ -1,15 +1,11 @@
1
- import type { ForwardedRef, ReactNode } from 'react'
2
- import React, { forwardRef } from 'react'
3
- import type { Theme } from '@material-ui/core/styles'
4
- import { makeStyles } from '@material-ui/core/styles'
5
- import { Tabs as MUITabs } from '@material-ui/core'
1
+ import type { ReactNode } from 'react'
2
+ import React, { forwardRef, useMemo } from 'react'
3
+ import { Tabs as MUITabs } from '@mui/base/Tabs'
4
+ import { TabsList } from '@mui/base/TabsList'
6
5
  import type { BaseProps } from '@toptal/picasso-shared'
6
+ import { twJoin, twMerge } from '@toptal/picasso-tailwind-merge'
7
7
 
8
- import { TabScrollButton } from '../TabScrollButton'
9
- import styles from './styles'
10
- import useTabAction from './use-tab-action'
11
-
12
- export type TabsValueType = string | number | false
8
+ export type TabsValueType = string | number | null
13
9
 
14
10
  export interface Props<V extends TabsValueType> extends BaseProps {
15
11
  /** Tabs content containing Tab components */
@@ -18,7 +14,10 @@ export interface Props<V extends TabsValueType> extends BaseProps {
18
14
  /** Callback fired when the value changes. */
19
15
  onChange?: (event: React.ChangeEvent<{}> | null, value: V) => void
20
16
 
21
- /** The value of the currently selected Tab. If you don't want any selected Tab, you can set this property to false. */
17
+ /**
18
+ * The value of the currently selected Tab.
19
+ * If you don't want any selected Tab, you can set this property to null.
20
+ */
22
21
  value: V
23
22
 
24
23
  /** The tabs orientation (layout flow direction). */
@@ -28,52 +27,104 @@ export interface Props<V extends TabsValueType> extends BaseProps {
28
27
  variant?: 'scrollable' | 'fullWidth'
29
28
  }
30
29
 
31
- const useStyles = makeStyles<Theme>(styles, {
32
- name: 'Tabs',
33
- })
30
+ export const TabsContext = React.createContext<{
31
+ orientation: 'horizontal' | 'vertical'
32
+ variant: 'scrollable' | 'fullWidth'
33
+ }>({ orientation: 'horizontal', variant: 'scrollable' })
34
+
35
+ const indicatorClasses = [
36
+ 'after:absolute',
37
+ 'after:content-[""]',
38
+ 'after:bottom-0',
39
+ 'after:left-0',
40
+ 'after:right-0',
41
+ 'after:h-[1px]',
42
+ 'after:bg-gray-500',
43
+ 'after:z-0',
44
+ ]
45
+
46
+ const classesByOrientation = {
47
+ vertical: {
48
+ root: 'w-[200px] m-0 flex-col',
49
+ scroller: 'pl-2',
50
+ },
51
+ horizontal: {
52
+ root: '',
53
+ scroller: indicatorClasses,
54
+ },
55
+ }
34
56
 
35
- export const TabsOrientationContext = React.createContext<
36
- 'horizontal' | 'vertical'
37
- >('horizontal')
57
+ const classesByVariant = {
58
+ scrollable: {
59
+ root: 'overflow-x-auto',
60
+ scroller: '',
61
+ },
62
+ fullWidth: {
63
+ root: '',
64
+ scroller: 'w-full overflow-hidden',
65
+ },
66
+ }
38
67
 
39
- export const Tabs = forwardRef(
40
- <V extends TabsValueType = TabsValueType>(
41
- props: Props<V>,
42
- ref: ForwardedRef<HTMLButtonElement>
43
- ) => {
68
+ // eslint-disable-next-line react/display-name
69
+ export const Tabs = forwardRef<HTMLDivElement, Props<TabsValueType>>(
70
+ function Tabs(props, ref) {
44
71
  const {
45
72
  children,
46
73
  orientation = 'horizontal',
47
74
  onChange,
48
75
  value,
49
76
  variant = 'scrollable',
77
+ className,
50
78
  ...rest
51
79
  } = props
52
- const classes = useStyles(props)
53
- const action = useTabAction()
80
+
81
+ const contextValue = useMemo(
82
+ () => ({
83
+ orientation,
84
+ variant,
85
+ }),
86
+ [orientation, variant]
87
+ )
88
+
89
+ const isVertical = orientation === 'vertical'
54
90
 
55
91
  return (
56
- <TabsOrientationContext.Provider value={orientation}>
92
+ <TabsContext.Provider value={contextValue}>
57
93
  <MUITabs
58
94
  {...rest}
59
- classes={{ root: classes[orientation] }}
60
- ref={ref}
95
+ data-component-type='tabs'
96
+ slotProps={{
97
+ root: {
98
+ ref,
99
+ className: twMerge(
100
+ 'relative min-h-0 flex overflow-hidden',
101
+ classesByOrientation[orientation].root,
102
+ classesByVariant[variant].root,
103
+ className
104
+ ),
105
+ },
106
+ }}
61
107
  onChange={onChange}
62
108
  value={value}
63
- action={action}
64
- scrollButtons='auto'
65
- ScrollButtonComponent={TabScrollButton}
66
109
  orientation={orientation}
67
- variant={variant}
68
- data-component-type='tabs'
69
110
  >
70
- {children}
111
+ <div
112
+ className={twJoin(
113
+ classesByVariant[variant].scroller,
114
+ classesByOrientation[orientation].scroller,
115
+ 'flex-auto inline-block relative whitespace-nowrap'
116
+ )}
117
+ >
118
+ <TabsList className={twJoin('flex', isVertical && 'flex-col')}>
119
+ {children}
120
+ </TabsList>
121
+ </div>
71
122
  </MUITabs>
72
- </TabsOrientationContext.Provider>
123
+ </TabsContext.Provider>
73
124
  )
74
125
  }
75
- ) as <V extends TabsValueType = TabsValueType>(
76
- props: Props<V> & { ref?: ForwardedRef<HTMLDivElement> }
77
- ) => ReturnType<typeof MUITabs>
126
+ )
127
+
128
+ Tabs.displayName = 'Tabs'
78
129
 
79
130
  export default Tabs
@@ -10,27 +10,25 @@ exports[`Tabs renders 1`] = `
10
10
  data-component-type="tabs"
11
11
  >
12
12
  <div
13
- class="MuiTabs-scrollable"
14
- style="width: 99px; height: 99px; position: absolute; top: -9999px; overflow: scroll;"
15
- />
16
- <div
17
- class="MuiTabs-scroller MuiTabs-scrollable"
18
- style="margin-bottom: 0px;"
13
+ class="after:absolute after:content-[""] after:bottom-0 after:left-0 after:right-0 after:h-[1px] after:bg-gray after:z-0 flex-auto inline-block relative whitespace-nowrap"
19
14
  >
20
15
  <div
21
- class="MuiTabs-flexContainer"
16
+ class="base-TabsList base-TabsList flex"
22
17
  role="tablist"
18
+ tabindex="-1"
23
19
  >
24
20
  <button
21
+ aria-disabled="false"
25
22
  aria-selected="false"
26
- class="MuiButtonBase-root MuiTab-root PicassoTab-horizontal MuiTab-textColorInherit"
23
+ class="base-Tab opacity-70 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
27
24
  data-testid="tab-1"
25
+ id=":r0:"
28
26
  role="tab"
29
27
  tabindex="0"
30
28
  type="button"
31
29
  >
32
30
  <span
33
- class="MuiTab-wrapper PicassoTab-wrapper"
31
+ class="w-full inline-flex items-center flex-col justify-center"
34
32
  >
35
33
  <div
36
34
  class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
@@ -40,15 +38,17 @@ exports[`Tabs renders 1`] = `
40
38
  </span>
41
39
  </button>
42
40
  <button
41
+ aria-disabled="false"
43
42
  aria-selected="false"
44
- class="MuiButtonBase-root MuiTab-root PicassoTab-horizontal MuiTab-textColorInherit"
43
+ class="base-Tab opacity-70 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
45
44
  data-testid="tab-2"
45
+ id=":r1:"
46
46
  role="tab"
47
47
  tabindex="0"
48
48
  type="button"
49
49
  >
50
50
  <span
51
- class="MuiTab-wrapper PicassoTab-wrapper"
51
+ class="w-full inline-flex items-center flex-col justify-center"
52
52
  >
53
53
  <div
54
54
  class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
@@ -58,10 +58,6 @@ exports[`Tabs renders 1`] = `
58
58
  </span>
59
59
  </button>
60
60
  </div>
61
- <span
62
- class="PrivateTabIndicator-root PrivateTabIndicator-colorSecondary MuiTabs-indicator"
63
- style="left: 0px; width: 0px;"
64
- />
65
61
  </div>
66
62
  </div>
67
63
  </div>
@@ -78,23 +74,25 @@ exports[`Tabs renders in full width 1`] = `
78
74
  data-component-type="tabs"
79
75
  >
80
76
  <div
81
- class="MuiTabs-scroller MuiTabs-fixed"
82
- style="overflow: hidden;"
77
+ class="w-full overflow-hidden after:absolute after:content-[""] after:bottom-0 after:left-0 after:right-0 after:h-[1px] after:bg-gray after:z-0 flex-auto inline-block relative whitespace-nowrap"
83
78
  >
84
79
  <div
85
- class="MuiTabs-flexContainer"
80
+ class="base-TabsList base-TabsList flex"
86
81
  role="tablist"
82
+ tabindex="-1"
87
83
  >
88
84
  <button
85
+ aria-disabled="false"
89
86
  aria-selected="false"
90
- class="MuiButtonBase-root MuiTab-root PicassoTab-horizontal MuiTab-textColorInherit MuiTab-fullWidth"
87
+ class="base-Tab opacity-70 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shrink flex-grow basis-0 min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
91
88
  data-testid="tab-1"
89
+ id=":re:"
92
90
  role="tab"
93
91
  tabindex="0"
94
92
  type="button"
95
93
  >
96
94
  <span
97
- class="MuiTab-wrapper PicassoTab-wrapper"
95
+ class="w-full inline-flex items-center flex-col justify-center"
98
96
  >
99
97
  <div
100
98
  class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
@@ -104,15 +102,17 @@ exports[`Tabs renders in full width 1`] = `
104
102
  </span>
105
103
  </button>
106
104
  <button
105
+ aria-disabled="false"
107
106
  aria-selected="false"
108
- class="MuiButtonBase-root MuiTab-root PicassoTab-horizontal MuiTab-textColorInherit MuiTab-fullWidth"
107
+ class="base-Tab opacity-70 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shrink flex-grow basis-0 min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
109
108
  data-testid="tab-2"
109
+ id=":rf:"
110
110
  role="tab"
111
111
  tabindex="0"
112
112
  type="button"
113
113
  >
114
114
  <span
115
- class="MuiTab-wrapper PicassoTab-wrapper"
115
+ class="w-full inline-flex items-center flex-col justify-center"
116
116
  >
117
117
  <div
118
118
  class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
@@ -122,10 +122,6 @@ exports[`Tabs renders in full width 1`] = `
122
122
  </span>
123
123
  </button>
124
124
  </div>
125
- <span
126
- class="PrivateTabIndicator-root PrivateTabIndicator-colorSecondary MuiTabs-indicator"
127
- style="left: 0px; width: 0px;"
128
- />
129
125
  </div>
130
126
  </div>
131
127
  </div>
@@ -142,27 +138,26 @@ exports[`Tabs renders in vertical orientation 1`] = `
142
138
  data-component-type="tabs"
143
139
  >
144
140
  <div
145
- class="MuiTabs-scrollable"
146
- style="width: 99px; height: 99px; position: absolute; top: -9999px; overflow: scroll;"
147
- />
148
- <div
149
- class="MuiTabs-scroller MuiTabs-scrollable"
150
- style="margin-bottom: 0px;"
141
+ class="pl-2 flex-auto inline-block relative whitespace-nowrap"
151
142
  >
152
143
  <div
153
- class="MuiTabs-flexContainer MuiTabs-flexContainerVertical"
144
+ aria-orientation="vertical"
145
+ class="base-TabsList base-TabsList flex flex-col"
154
146
  role="tablist"
147
+ tabindex="-1"
155
148
  >
156
149
  <button
150
+ aria-disabled="false"
157
151
  aria-selected="false"
158
- class="MuiButtonBase-root MuiTab-root PicassoTab-vertical MuiTab-textColorInherit"
152
+ class="base-Tab opacity-100 first:mt-4 last:mb-4 my-1 mx-0 py-2 px-4 text-left rounded-l rounded-r transition-all w-full overflow-hidden bg-gray hover:bg-gray text-graphite hover:text-black shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
159
153
  data-testid="tab-1"
154
+ id=":r2:"
160
155
  role="tab"
161
156
  tabindex="0"
162
157
  type="button"
163
158
  >
164
159
  <span
165
- class="MuiTab-wrapper PicassoTab-wrapper"
160
+ class="w-full block"
166
161
  >
167
162
  <div
168
163
  class="m-0 text-md text-inherit font-semibold whitespace-nowrap overflow-ellipsis [-webkit-box overflow-hidden text-ellipsis pr-[0.9px] block"
@@ -172,15 +167,17 @@ exports[`Tabs renders in vertical orientation 1`] = `
172
167
  </span>
173
168
  </button>
174
169
  <button
170
+ aria-disabled="false"
175
171
  aria-selected="false"
176
- class="MuiButtonBase-root MuiTab-root PicassoTab-vertical MuiTab-textColorInherit"
172
+ class="base-Tab opacity-100 first:mt-4 last:mb-4 my-1 mx-0 py-2 px-4 text-left rounded-l rounded-r transition-all w-full overflow-hidden bg-gray hover:bg-gray text-graphite hover:text-black shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
177
173
  data-testid="tab-2"
174
+ id=":r3:"
178
175
  role="tab"
179
176
  tabindex="0"
180
177
  type="button"
181
178
  >
182
179
  <span
183
- class="MuiTab-wrapper PicassoTab-wrapper"
180
+ class="w-full block"
184
181
  >
185
182
  <div
186
183
  class="m-0 text-md text-inherit font-semibold whitespace-nowrap overflow-ellipsis [-webkit-box overflow-hidden text-ellipsis pr-[0.9px] block"
@@ -190,10 +187,6 @@ exports[`Tabs renders in vertical orientation 1`] = `
190
187
  </span>
191
188
  </button>
192
189
  </div>
193
- <span
194
- class="PrivateTabIndicator-root PrivateTabIndicator-colorSecondary MuiTabs-indicator PrivateTabIndicator-vertical"
195
- style="top: 0px; height: 0px;"
196
- />
197
190
  </div>
198
191
  </div>
199
192
  </div>
@@ -210,27 +203,25 @@ exports[`Tabs renders with a pre-selected option 1`] = `
210
203
  data-component-type="tabs"
211
204
  >
212
205
  <div
213
- class="MuiTabs-scrollable"
214
- style="width: 99px; height: 99px; position: absolute; top: -9999px; overflow: scroll;"
215
- />
216
- <div
217
- class="MuiTabs-scroller MuiTabs-scrollable"
218
- style="margin-bottom: 0px;"
206
+ class="after:absolute after:content-[""] after:bottom-0 after:left-0 after:right-0 after:h-[1px] after:bg-gray after:z-0 flex-auto inline-block relative whitespace-nowrap"
219
207
  >
220
208
  <div
221
- class="MuiTabs-flexContainer"
209
+ class="base-TabsList base-TabsList flex"
222
210
  role="tablist"
211
+ tabindex="-1"
223
212
  >
224
213
  <button
214
+ aria-disabled="false"
225
215
  aria-selected="false"
226
- class="MuiButtonBase-root MuiTab-root PicassoTab-horizontal MuiTab-textColorInherit"
216
+ class="base-Tab opacity-70 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
227
217
  data-testid="tab-1"
218
+ id=":r4:"
228
219
  role="tab"
229
220
  tabindex="0"
230
221
  type="button"
231
222
  >
232
223
  <span
233
- class="MuiTab-wrapper PicassoTab-wrapper"
224
+ class="w-full inline-flex items-center flex-col justify-center"
234
225
  >
235
226
  <div
236
227
  class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
@@ -240,15 +231,17 @@ exports[`Tabs renders with a pre-selected option 1`] = `
240
231
  </span>
241
232
  </button>
242
233
  <button
234
+ aria-disabled="false"
243
235
  aria-selected="true"
244
- class="MuiButtonBase-root MuiTab-root PicassoTab-horizontal MuiTab-textColorInherit Mui-selected PicassoTab-selected"
236
+ class="base-Tab base- opacity-100 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shadow-blue shadow-[inset_0_-2px_0] shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
245
237
  data-testid="tab-2"
238
+ id=":r5:"
246
239
  role="tab"
247
240
  tabindex="0"
248
241
  type="button"
249
242
  >
250
243
  <span
251
- class="MuiTab-wrapper PicassoTab-wrapper"
244
+ class="w-full inline-flex items-center flex-col justify-center"
252
245
  >
253
246
  <div
254
247
  class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
@@ -258,10 +251,6 @@ exports[`Tabs renders with a pre-selected option 1`] = `
258
251
  </span>
259
252
  </button>
260
253
  </div>
261
- <span
262
- class="PrivateTabIndicator-root PrivateTabIndicator-colorSecondary MuiTabs-indicator"
263
- style="left: 0px; width: 0px;"
264
- />
265
254
  </div>
266
255
  </div>
267
256
  <div
@@ -285,27 +274,25 @@ exports[`Tabs renders with a pre-selected option using custom value 1`] = `
285
274
  data-component-type="tabs"
286
275
  >
287
276
  <div
288
- class="MuiTabs-scrollable"
289
- style="width: 99px; height: 99px; position: absolute; top: -9999px; overflow: scroll;"
290
- />
291
- <div
292
- class="MuiTabs-scroller MuiTabs-scrollable"
293
- style="margin-bottom: 0px;"
277
+ class="after:absolute after:content-[""] after:bottom-0 after:left-0 after:right-0 after:h-[1px] after:bg-gray after:z-0 flex-auto inline-block relative whitespace-nowrap"
294
278
  >
295
279
  <div
296
- class="MuiTabs-flexContainer"
280
+ class="base-TabsList base-TabsList flex"
297
281
  role="tablist"
282
+ tabindex="-1"
298
283
  >
299
284
  <button
285
+ aria-disabled="false"
300
286
  aria-selected="true"
301
- class="MuiButtonBase-root MuiTab-root PicassoTab-horizontal MuiTab-textColorInherit Mui-selected PicassoTab-selected"
287
+ class="base-Tab base- opacity-100 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shadow-blue shadow-[inset_0_-2px_0] shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
302
288
  data-testid="tab-1"
289
+ id=":r6:"
303
290
  role="tab"
304
291
  tabindex="0"
305
292
  type="button"
306
293
  >
307
294
  <span
308
- class="MuiTab-wrapper PicassoTab-wrapper"
295
+ class="w-full inline-flex items-center flex-col justify-center"
309
296
  >
310
297
  <div
311
298
  class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
@@ -315,15 +302,17 @@ exports[`Tabs renders with a pre-selected option using custom value 1`] = `
315
302
  </span>
316
303
  </button>
317
304
  <button
305
+ aria-disabled="false"
318
306
  aria-selected="false"
319
- class="MuiButtonBase-root MuiTab-root PicassoTab-horizontal MuiTab-textColorInherit"
307
+ class="base-Tab opacity-70 m-0 [&:not(:last-child)]:mr-8 pt-[0.5625rem] pb-[0.4375rem] px-0 text-center bg-transparent transition-shadow z-10 rounded-none text-black shrink-0 max-w min-w sm:min-w md:min-w border-0 cursor-pointer inline-flex outline-none items-center select-none align-middle appearance-none justify-center no-underline [-webkit-tap-highlight normal-case whitespace-normal leading-4 relative"
320
308
  data-testid="tab-2"
309
+ id=":r7:"
321
310
  role="tab"
322
311
  tabindex="0"
323
312
  type="button"
324
313
  >
325
314
  <span
326
- class="MuiTab-wrapper PicassoTab-wrapper"
315
+ class="w-full inline-flex items-center flex-col justify-center"
327
316
  >
328
317
  <div
329
318
  class="m-0 text-sm text-inherit font-semibold leading-[1.1rem]"
@@ -333,10 +322,6 @@ exports[`Tabs renders with a pre-selected option using custom value 1`] = `
333
322
  </span>
334
323
  </button>
335
324
  </div>
336
- <span
337
- class="PrivateTabIndicator-root PrivateTabIndicator-colorSecondary MuiTabs-indicator"
338
- style="left: 0px; width: 0px;"
339
- />
340
325
  </div>
341
326
  </div>
342
327
  <div
package/src/Tabs/test.tsx CHANGED
@@ -60,7 +60,7 @@ describe('Tabs', () => {
60
60
  const { container, queryByTestId } = renderTabs(
61
61
  [{ label: 'Tab 1' }, { label: 'Tab 2' }],
62
62
  {
63
- value: false,
63
+ value: null,
64
64
  }
65
65
  )
66
66
 
@@ -73,7 +73,7 @@ describe('Tabs', () => {
73
73
  it('renders in vertical orientation', () => {
74
74
  const { container } = renderTabs(
75
75
  [{ label: 'Tab 1' }, { label: 'Tab 2' }],
76
- { value: false },
76
+ { value: null },
77
77
  'vertical'
78
78
  )
79
79
 
@@ -116,7 +116,7 @@ describe('Tabs', () => {
116
116
  const { getByTestId } = renderTabs(
117
117
  [{ label: 'Tab 1' }, { label: 'Tab 2' }],
118
118
  {
119
- value: 1,
119
+ value: 0,
120
120
  onChange,
121
121
  }
122
122
  )
@@ -159,7 +159,7 @@ describe('Tabs', () => {
159
159
 
160
160
  it('renders in full width', () => {
161
161
  const { container } = renderTabs([{ label: 'Tab 1' }, { label: 'Tab 2' }], {
162
- value: false,
162
+ value: null,
163
163
  variant: 'fullWidth',
164
164
  })
165
165
 
package/src/index.ts CHANGED
@@ -1,4 +1,3 @@
1
- export * from './TabScrollButton'
2
1
  export * from './Tabs'
3
2
  export * from './Tab'
4
3
  export * from './TabDescription'
@@ -1,4 +0,0 @@
1
- import type { Theme } from '@material-ui/core/styles';
2
- declare const _default: ({ sizes, palette, shadows, transitions }: Theme) => import("@material-ui/styles").StyleRules<{}, "selected" | "horizontal" | "vertical" | "wrapper">;
3
- export default _default;
4
- //# sourceMappingURL=styles.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/Tab/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;mEAgDK,KAAK;AAA/D,wBA0DI"}
@@ -1,95 +0,0 @@
1
- import { createStyles } from '@material-ui/core/styles';
2
- import { rem } from '@toptal/picasso-shared';
3
- import { PicassoProvider } from '@toptal/picasso-provider';
4
- PicassoProvider.override(({ breakpoints, palette }) => ({
5
- MuiTab: {
6
- root: {
7
- minHeight: 0,
8
- minWidth: 0,
9
- lineHeight: 1,
10
- textTransform: 'none',
11
- padding: `${rem('9px')} 0 ${rem('7px')}`,
12
- overflow: 'initial',
13
- [breakpoints.up('md')]: {
14
- padding: undefined,
15
- },
16
- color: palette.grey.dark,
17
- [breakpoints.up('md')]: {
18
- minWidth: 'auto',
19
- fontSize: '1rem',
20
- },
21
- },
22
- labelIcon: {
23
- minHeight: 0,
24
- paddingRight: '1.5rem',
25
- paddingTop: rem('9px'),
26
- '& $wrapper > *:first-child': {
27
- position: 'absolute',
28
- right: 0,
29
- marginBottom: 0,
30
- },
31
- },
32
- selected: {
33
- color: palette.common.black,
34
- },
35
- textColorInherit: {
36
- '&$disabled': {
37
- color: palette.grey.main,
38
- },
39
- },
40
- disabled: {},
41
- },
42
- }));
43
- export default ({ sizes, palette, shadows, transitions }) => createStyles({
44
- horizontal: {
45
- paddingTop: 0,
46
- '&:not(:last-child)': {
47
- marginRight: '2em',
48
- },
49
- },
50
- vertical: {
51
- width: '100%',
52
- borderRadius: `${sizes.borderRadius.small} 0 0 ${sizes.borderRadius.small}`,
53
- margin: '0.25rem 0',
54
- overflow: 'hidden',
55
- padding: '0.5rem 1rem',
56
- transition: `all ${transitions.duration.short}ms ${transitions.easing.easeInOut}`,
57
- textAlign: 'left',
58
- backgroundColor: palette.grey.lighter,
59
- opacity: 1,
60
- color: palette.grey.dark,
61
- '&:first-child': {
62
- marginTop: '1rem',
63
- },
64
- '&:last-child': {
65
- marginBottom: '1rem',
66
- },
67
- '&:hover': {
68
- color: palette.common.black,
69
- },
70
- '&:hover:not($selected)': {
71
- backgroundColor: palette.grey.lighter2,
72
- },
73
- '& $wrapper': {
74
- display: 'block',
75
- },
76
- },
77
- selected: {
78
- '&$vertical': {
79
- color: palette.common.black,
80
- boxShadow: shadows[1],
81
- backgroundColor: palette.grey.lightest,
82
- '&::before': {
83
- content: '""',
84
- background: palette.blue.main,
85
- position: 'absolute',
86
- left: 0,
87
- top: 0,
88
- bottom: 0,
89
- width: '3px',
90
- },
91
- },
92
- },
93
- wrapper: {},
94
- });
95
- //# sourceMappingURL=styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/Tab/styles.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
- import type { BaseProps } from '@toptal/picasso-shared';
3
- declare type DirectionType = 'left' | 'right';
4
- export interface Props extends BaseProps {
5
- /** The direction the button should indicate. */
6
- direction: DirectionType;
7
- /** If `true`, the component is disabled. */
8
- disabled?: boolean;
9
- }
10
- export declare const TabScrollButton: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
11
- export default TabScrollButton;
12
- //# sourceMappingURL=TabScrollButton.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabScrollButton.d.ts","sourceRoot":"","sources":["../../../src/TabScrollButton/TabScrollButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAA;AAEzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAKvD,aAAK,aAAa,GAAG,MAAM,GAAG,OAAO,CAAA;AAErC,MAAM,WAAW,KAAM,SAAQ,SAAS;IACtC,gDAAgD;IAChD,SAAS,EAAE,aAAa,CAAA;IACxB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,eAAO,MAAM,eAAe,8EAsC3B,CAAA;AAID,eAAe,eAAe,CAAA"}