@toptal/picasso-tabs 2.0.3-alpha-feature-tailwind-w21-80062bcbc.49 → 2.0.3-alpha-feature-tailwind-w21-af158c5d2.51

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.
@@ -1,12 +1,13 @@
1
- import type { ReactNode } from 'react';
1
+ import type { ReactNode, ForwardedRef } from 'react';
2
2
  import React from 'react';
3
+ import { Tabs as MUITabs } from '@mui/base/Tabs';
3
4
  import type { BaseProps } from '@toptal/picasso-shared';
4
5
  export declare type TabsValueType = string | number | null;
5
6
  export interface Props<V extends TabsValueType> extends BaseProps {
6
7
  /** Tabs content containing Tab components */
7
8
  children: ReactNode;
8
9
  /** Callback fired when the value changes. */
9
- onChange?: (event: React.SyntheticEvent | null, value: V) => void;
10
+ onChange?: (event: React.ChangeEvent<{}> | null, value: V) => void;
10
11
  /**
11
12
  * The value of the currently selected Tab.
12
13
  * If you don't want any selected Tab, you can set this property to null.
@@ -21,6 +22,8 @@ export declare const TabsContext: React.Context<{
21
22
  orientation: 'horizontal' | 'vertical';
22
23
  variant: 'scrollable' | 'fullWidth';
23
24
  }>;
24
- export declare const Tabs: React.ForwardRefExoticComponent<Props<TabsValueType> & React.RefAttributes<HTMLDivElement>>;
25
+ declare const Tabs: <V extends TabsValueType = TabsValueType>(props: Props<V> & {
26
+ ref?: ForwardedRef<HTMLDivElement> | undefined;
27
+ }) => ReturnType<typeof MUITabs>;
25
28
  export default Tabs;
26
29
  //# sourceMappingURL=Tabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/Tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAA8B,MAAM,OAAO,CAAA;AAGlD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAGvD,oBAAY,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAElD,MAAM,WAAW,KAAK,CAAC,CAAC,SAAS,aAAa,CAAE,SAAQ,SAAS;IAC/D,6CAA6C;IAC7C,QAAQ,EAAE,SAAS,CAAA;IAEnB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;IAEjE;;;OAGG;IACH,KAAK,EAAE,CAAC,CAAA;IAER,oDAAoD;IACpD,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IAEvC,yDAAyD;IACzD,OAAO,CAAC,EAAE,YAAY,GAAG,WAAW,CAAA;CACrC;AAED,eAAO,MAAM,WAAW;iBACT,YAAY,GAAG,UAAU;aAC7B,YAAY,GAAG,WAAW;EACmB,CAAA;AA+FxD,eAAO,MAAM,IAAI,6FAA4B,CAAA;AAI7C,eAAe,IAAI,CAAA"}
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/Tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,KAA8B,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAGvD,oBAAY,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAElD,MAAM,WAAW,KAAK,CAAC,CAAC,SAAS,aAAa,CAAE,SAAQ,SAAS;IAC/D,6CAA6C;IAC7C,QAAQ,EAAE,SAAS,CAAA;IAEnB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;IAElE;;;OAGG;IACH,KAAK,EAAE,CAAC,CAAA;IAER,oDAAoD;IACpD,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IAEvC,yDAAyD;IACzD,OAAO,CAAC,EAAE,YAAY,GAAG,WAAW,CAAA;CACrC;AAED,eAAO,MAAM,WAAW;iBACT,YAAY,GAAG,UAAU;aAC7B,YAAY,GAAG,WAAW;EACmB,CAAA;AAmCxD,QAAA,MAAM,IAAI;;MAgEL,WAAW,cAAc,CAAC,CAAA;AAE/B,eAAe,IAAI,CAAA"}
@@ -44,9 +44,8 @@ const classesByVariant = {
44
44
  scroller: 'w-full overflow-hidden',
45
45
  },
46
46
  };
47
- // eslint-disable-next-line react/display-name
48
- const TabsComponent = (props, ref) => {
49
- const { children, orientation = 'horizontal', onChange, value, variant = 'scrollable', className } = props, rest = __rest(props, ["children", "orientation", "onChange", "value", "variant", "className"]);
47
+ const Tabs = forwardRef((_a, ref) => {
48
+ var { children, orientation = 'horizontal', onChange, value, variant = 'scrollable', className } = _a, rest = __rest(_a, ["children", "orientation", "onChange", "value", "variant", "className"]);
50
49
  const contextValue = useMemo(() => ({
51
50
  orientation,
52
51
  variant,
@@ -58,11 +57,9 @@ const TabsComponent = (props, ref) => {
58
57
  ref,
59
58
  className: twMerge('relative min-h-0 flex overflow-hidden', classesByOrientation[orientation].root, classesByVariant[variant].root, className),
60
59
  },
61
- }, onChange: (event, newValue) => onChange === null || onChange === void 0 ? void 0 : onChange(event, newValue), value: value, orientation: orientation }),
60
+ }, onChange: onChange, value: value, orientation: orientation }),
62
61
  React.createElement("div", { className: twJoin(classesByVariant[variant].scroller, classesByOrientation[orientation].scroller, 'flex-auto inline-block relative whitespace-nowrap') },
63
62
  React.createElement(TabsList, { className: twJoin('flex', isVertical && 'flex-col') }, children)))));
64
- };
65
- export const Tabs = forwardRef(TabsComponent);
66
- Tabs.displayName = 'Tabs';
63
+ });
67
64
  export default Tabs;
68
65
  //# sourceMappingURL=Tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../src/Tabs/Tabs.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAwBhE,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAG3C,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAA;AAExD,MAAM,gBAAgB,GAAG;IACvB,gBAAgB;IAChB,oBAAoB;IACpB,gBAAgB;IAChB,cAAc;IACd,eAAe;IACf,eAAe;IACf,mBAAmB;IACnB,WAAW;CACZ,CAAA;AAED,MAAM,oBAAoB,GAAG;IAC3B,QAAQ,EAAE;QACR,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,MAAM;KACjB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,gBAAgB;KAC3B;CACO,CAAA;AAEV,MAAM,gBAAgB,GAAG;IACvB,UAAU,EAAE;QACV,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,EAAE;KACb;IACD,SAAS,EAAE;QACT,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,wBAAwB;KACnC;CACO,CAAA;AAEV,8CAA8C;AAC9C,MAAM,aAAa,GAAG,CACpB,KAAe,EACf,GAAuC,EACvC,EAAE;IACF,MAAM,EACJ,QAAQ,EACR,WAAW,GAAG,YAAY,EAC1B,QAAQ,EACR,KAAK,EACL,OAAO,GAAG,YAAY,EACtB,SAAS,KAEP,KAAK,EADJ,IAAI,UACL,KAAK,EARH,wEAQL,CAAQ,CAAA;IAET,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,CAAC;QACL,WAAW;QACX,OAAO;KACR,CAAC,EACF,CAAC,WAAW,EAAE,OAAO,CAAC,CACvB,CAAA;IAED,MAAM,UAAU,GAAG,WAAW,KAAK,UAAU,CAAA;IAE7C,OAAO,CACL,oBAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY;QACvC,oBAAC,OAAO,oBACF,IAAI,IACR,SAAS,EAAE;gBACT,IAAI,EAAE;oBACJ,GAAG;oBACH,SAAS,EAAE,OAAO,CAChB,uCAAuC,EACvC,oBAAoB,CAAC,WAAW,CAAC,CAAC,IAAI,EACtC,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAC9B,SAAS,CACV;iBACF;aACF,EACD,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,KAAK,EAAE,QAAa,CAAC,EAC/D,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW;YAExB,6BACE,SAAS,EAAE,MAAM,CACf,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAClC,oBAAoB,CAAC,WAAW,CAAC,CAAC,QAAQ,EAC1C,mDAAmD,CACpD;gBAED,oBAAC,QAAQ,IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,IAAI,UAAU,CAAC,IAC1D,QAAQ,CACA,CACP,CACE,CACW,CACxB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;AAE7C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;AAEzB,eAAe,IAAI,CAAA"}
1
+ {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../src/Tabs/Tabs.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAwBhE,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAG3C,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAA;AAExD,MAAM,gBAAgB,GAAG;IACvB,gBAAgB;IAChB,oBAAoB;IACpB,gBAAgB;IAChB,cAAc;IACd,eAAe;IACf,eAAe;IACf,mBAAmB;IACnB,WAAW;CACZ,CAAA;AAED,MAAM,oBAAoB,GAAG;IAC3B,QAAQ,EAAE;QACR,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,MAAM;KACjB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,gBAAgB;KAC3B;CACO,CAAA;AAEV,MAAM,gBAAgB,GAAG;IACvB,UAAU,EAAE;QACV,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,EAAE;KACb;IACD,SAAS,EAAE;QACT,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,wBAAwB;KACnC;CACO,CAAA;AAEV,MAAM,IAAI,GAAG,UAAU,CACrB,CACE,EAQW,EACX,GAAiC,EACjC,EAAE;QAVF,EACE,QAAQ,EACR,WAAW,GAAG,YAAY,EAC1B,QAAQ,EACR,KAAK,EACL,OAAO,GAAG,YAAY,EACtB,SAAS,OAEA,EADN,IAAI,cAPT,wEAQC,CADQ;IAIT,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,CAAC;QACL,WAAW;QACX,OAAO;KACR,CAAC,EACF,CAAC,WAAW,EAAE,OAAO,CAAC,CACvB,CAAA;IAED,MAAM,UAAU,GAAG,WAAW,KAAK,UAAU,CAAA;IAE7C,OAAO,CACL,oBAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY;QACvC,oBAAC,OAAO,oBACF,IAAI,IACR,SAAS,EAAE;gBACT,IAAI,EAAE;oBACJ,GAAG;oBACH,SAAS,EAAE,OAAO,CAChB,uCAAuC,EACvC,oBAAoB,CAAC,WAAW,CAAC,CAAC,IAAI,EACtC,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAC9B,SAAS,CACV;iBACF;aACF,EACD,QAAQ,EACN,QAGS,EAEX,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW;YAExB,6BACE,SAAS,EAAE,MAAM,CACf,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAClC,oBAAoB,CAAC,WAAW,CAAC,CAAC,QAAQ,EAC1C,mDAAmD,CACpD;gBAED,oBAAC,QAAQ,IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,IAAI,UAAU,CAAC,IAC1D,QAAQ,CACA,CACP,CACE,CACW,CACxB,CAAA;AACH,CAAC,CAG4B,CAAA;AAE/B,eAAe,IAAI,CAAA"}
@@ -1,5 +1,7 @@
1
1
  /// <reference types="react" />
2
- export declare const TabsCompound: import("react").ForwardRefExoticComponent<import("../Tabs/Tabs").Props<import("../Tabs").TabsValueType> & import("react").RefAttributes<HTMLDivElement>> & {
2
+ export declare const TabsCompound: (<V extends import("../Tabs").TabsValueType = import("../Tabs").TabsValueType>(props: import("../Tabs/Tabs").Props<V> & {
3
+ ref?: import("react").ForwardedRef<HTMLDivElement> | undefined;
4
+ }) => JSX.Element | null) & {
3
5
  Tab: import("react").ForwardRefExoticComponent<import("../Tab/Tab").Props & import("react").RefAttributes<HTMLButtonElement>>;
4
6
  };
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/TabsCompound/index.ts"],"names":[],"mappings":";AAGA,eAAO,MAAM,YAAY;;CAEvB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/TabsCompound/index.ts"],"names":[],"mappings":";AAGA,eAAO,MAAM,YAAY;;;;CAEvB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toptal/picasso-tabs",
3
- "version": "2.0.3-alpha-feature-tailwind-w21-80062bcbc.49+80062bcbc",
3
+ "version": "2.0.3-alpha-feature-tailwind-w21-af158c5d2.51+af158c5d2",
4
4
  "description": "Toptal UI components library - Tabs",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -23,13 +23,13 @@
23
23
  "homepage": "https://github.com/toptal/picasso/tree/master/packages/picasso#readme",
24
24
  "dependencies": {
25
25
  "@mui/base": "5.0.0-beta.40",
26
- "@toptal/picasso-container": "1.0.4-alpha-feature-tailwind-w21-80062bcbc.49+80062bcbc",
27
- "@toptal/picasso-icons": "1.1.2-alpha-feature-tailwind-w21-80062bcbc.49+80062bcbc",
28
- "@toptal/picasso-shared": "15.0.1-alpha-feature-tailwind-w21-80062bcbc.49+80062bcbc",
29
- "@toptal/picasso-typography": "2.0.2-alpha-feature-tailwind-w21-80062bcbc.49+80062bcbc",
30
- "@toptal/picasso-typography-overflow": "2.0.2-alpha-feature-tailwind-w21-80062bcbc.49+80062bcbc",
31
- "@toptal/picasso-user-badge": "2.0.3-alpha-feature-tailwind-w21-80062bcbc.49+80062bcbc",
32
- "@toptal/picasso-utils": "1.0.4-alpha-feature-tailwind-w21-80062bcbc.49+80062bcbc",
26
+ "@toptal/picasso-container": "1.0.4-alpha-feature-tailwind-w21-af158c5d2.51+af158c5d2",
27
+ "@toptal/picasso-icons": "1.1.2-alpha-feature-tailwind-w21-af158c5d2.51+af158c5d2",
28
+ "@toptal/picasso-shared": "15.0.1-alpha-feature-tailwind-w21-af158c5d2.51+af158c5d2",
29
+ "@toptal/picasso-typography": "2.0.2-alpha-feature-tailwind-w21-af158c5d2.51+af158c5d2",
30
+ "@toptal/picasso-typography-overflow": "2.0.2-alpha-feature-tailwind-w21-af158c5d2.51+af158c5d2",
31
+ "@toptal/picasso-user-badge": "2.0.3-alpha-feature-tailwind-w21-af158c5d2.51+af158c5d2",
32
+ "@toptal/picasso-utils": "1.0.4-alpha-feature-tailwind-w21-af158c5d2.51+af158c5d2",
33
33
  "ap-style-title-case": "^1.1.2",
34
34
  "classnames": "^2.5.1"
35
35
  },
@@ -47,14 +47,14 @@
47
47
  ".": "./dist-package/src/index.js"
48
48
  },
49
49
  "devDependencies": {
50
- "@toptal/picasso-provider": "4.2.2-alpha-feature-tailwind-w21-80062bcbc.57+80062bcbc",
51
- "@toptal/picasso-tailwind-merge": "1.1.1-alpha-feature-tailwind-w21-80062bcbc.4268+80062bcbc",
52
- "@toptal/picasso-test-utils": "1.1.2-alpha-feature-tailwind-w21-80062bcbc.49+80062bcbc"
50
+ "@toptal/picasso-provider": "4.2.2-alpha-feature-tailwind-w21-af158c5d2.59+af158c5d2",
51
+ "@toptal/picasso-tailwind-merge": "1.1.1-alpha-feature-tailwind-w21-af158c5d2.4270+af158c5d2",
52
+ "@toptal/picasso-test-utils": "1.1.2-alpha-feature-tailwind-w21-af158c5d2.51+af158c5d2"
53
53
  },
54
54
  "files": [
55
55
  "dist-package/**",
56
56
  "!dist-package/tsconfig.tsbuildinfo",
57
57
  "src"
58
58
  ],
59
- "gitHead": "80062bcbc46a12301eaa56445413e62f4a60a3fc"
59
+ "gitHead": "af158c5d25cf28b89b18f9569f2d4d4a192eb178"
60
60
  }
package/src/Tabs/Tabs.tsx CHANGED
@@ -1,4 +1,4 @@
1
- import type { ReactNode } from 'react'
1
+ import type { ReactNode, ForwardedRef } from 'react'
2
2
  import React, { forwardRef, useMemo } from 'react'
3
3
  import { Tabs as MUITabs } from '@mui/base/Tabs'
4
4
  import { TabsList } from '@mui/base/TabsList'
@@ -12,7 +12,7 @@ export interface Props<V extends TabsValueType> extends BaseProps {
12
12
  children: ReactNode
13
13
 
14
14
  /** Callback fired when the value changes. */
15
- onChange?: (event: React.SyntheticEvent | null, value: V) => void
15
+ onChange?: (event: React.ChangeEvent<{}> | null, value: V) => void
16
16
 
17
17
  /**
18
18
  * The value of the currently selected Tab.
@@ -65,68 +65,70 @@ const classesByVariant = {
65
65
  },
66
66
  } as const
67
67
 
68
- // eslint-disable-next-line react/display-name
69
- const TabsComponent = <V extends TabsValueType>(
70
- props: Props<V>,
71
- ref: React.ForwardedRef<HTMLDivElement>
72
- ) => {
73
- const {
74
- children,
75
- orientation = 'horizontal',
76
- onChange,
77
- value,
78
- variant = 'scrollable',
79
- className,
80
- ...rest
81
- } = props
82
-
83
- const contextValue = useMemo(
84
- () => ({
85
- orientation,
86
- variant,
87
- }),
88
- [orientation, variant]
89
- )
90
-
91
- const isVertical = orientation === 'vertical'
92
-
93
- return (
94
- <TabsContext.Provider value={contextValue}>
95
- <MUITabs
96
- {...rest}
97
- slotProps={{
98
- root: {
99
- ref,
100
- className: twMerge(
101
- 'relative min-h-0 flex overflow-hidden',
102
- classesByOrientation[orientation].root,
103
- classesByVariant[variant].root,
104
- className
105
- ),
106
- },
107
- }}
108
- onChange={(event, newValue) => onChange?.(event, newValue as V)}
109
- value={value}
110
- orientation={orientation}
111
- >
112
- <div
113
- className={twJoin(
114
- classesByVariant[variant].scroller,
115
- classesByOrientation[orientation].scroller,
116
- 'flex-auto inline-block relative whitespace-nowrap'
117
- )}
68
+ const Tabs = forwardRef(
69
+ <V extends TabsValueType = TabsValueType>(
70
+ {
71
+ children,
72
+ orientation = 'horizontal',
73
+ onChange,
74
+ value,
75
+ variant = 'scrollable',
76
+ className,
77
+ ...rest
78
+ }: Props<V>,
79
+ ref: ForwardedRef<HTMLDivElement>
80
+ ) => {
81
+ const contextValue = useMemo(
82
+ () => ({
83
+ orientation,
84
+ variant,
85
+ }),
86
+ [orientation, variant]
87
+ )
88
+
89
+ const isVertical = orientation === 'vertical'
90
+
91
+ return (
92
+ <TabsContext.Provider value={contextValue}>
93
+ <MUITabs
94
+ {...rest}
95
+ slotProps={{
96
+ root: {
97
+ ref,
98
+ className: twMerge(
99
+ 'relative min-h-0 flex overflow-hidden',
100
+ classesByOrientation[orientation].root,
101
+ classesByVariant[variant].root,
102
+ className
103
+ ),
104
+ },
105
+ }}
106
+ onChange={
107
+ onChange as (
108
+ event: React.ChangeEvent<{}> | null,
109
+ value: TabsValueType
110
+ ) => void
111
+ }
112
+ value={value}
113
+ orientation={orientation}
118
114
  >
119
- <TabsList className={twJoin('flex', isVertical && 'flex-col')}>
120
- {children}
121
- </TabsList>
122
- </div>
123
- </MUITabs>
124
- </TabsContext.Provider>
125
- )
126
- }
127
-
128
- export const Tabs = forwardRef(TabsComponent)
129
-
130
- Tabs.displayName = 'Tabs'
115
+ <div
116
+ className={twJoin(
117
+ classesByVariant[variant].scroller,
118
+ classesByOrientation[orientation].scroller,
119
+ 'flex-auto inline-block relative whitespace-nowrap'
120
+ )}
121
+ >
122
+ <TabsList className={twJoin('flex', isVertical && 'flex-col')}>
123
+ {children}
124
+ </TabsList>
125
+ </div>
126
+ </MUITabs>
127
+ </TabsContext.Provider>
128
+ )
129
+ }
130
+ ) as <V extends TabsValueType = TabsValueType>(
131
+ props: Props<V> & { ref?: ForwardedRef<HTMLDivElement> }
132
+ ) => ReturnType<typeof MUITabs>
131
133
 
132
134
  export default Tabs
@@ -5,7 +5,7 @@ import { SPACING_4 } from '@toptal/picasso-utils'
5
5
  const Example = () => {
6
6
  const [value, setValue] = React.useState(0)
7
7
 
8
- const handleChange = (_: React.ChangeEvent<{}>, newValue: number) => {
8
+ const handleChange = (_: React.ChangeEvent<{}> | null, newValue: number) => {
9
9
  setValue(newValue)
10
10
  }
11
11
 
@@ -8,7 +8,7 @@ const TAB_COUNT = 2
8
8
  const Example = () => {
9
9
  const [value, setValue] = React.useState(0)
10
10
 
11
- const handleChange = (_: React.ChangeEvent<{}>, newValue: number) => {
11
+ const handleChange = (_: React.ChangeEvent<{}> | null, newValue: number) => {
12
12
  setValue(newValue)
13
13
  }
14
14
 
@@ -8,7 +8,7 @@ const TAB_COUNT = 10
8
8
  const Example = () => {
9
9
  const [value, setValue] = React.useState(0)
10
10
 
11
- const handleChange = (_: React.ChangeEvent<{}>, newValue: number) => {
11
+ const handleChange = (_: React.ChangeEvent<{}> | null, newValue: number) => {
12
12
  setValue(newValue)
13
13
  }
14
14
 
@@ -33,7 +33,7 @@ const TabsContent = ({ children }: { children: React.ReactNode }) => {
33
33
  const Example = () => {
34
34
  const [value, setValue] = React.useState(0)
35
35
 
36
- const handleChange = (_: React.ChangeEvent<{}>, newValue: number) => {
36
+ const handleChange = (_: React.ChangeEvent<{}> | null, newValue: number) => {
37
37
  setValue(newValue)
38
38
  }
39
39