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

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,17 +1,17 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import React from 'react';
3
3
  import type { BaseProps } from '@toptal/picasso-shared';
4
- declare type ValueType = string | number | null;
5
- export interface Props extends BaseProps {
4
+ export declare type TabsValueType = string | number | null;
5
+ export interface Props<V extends TabsValueType> extends BaseProps {
6
6
  /** Tabs content containing Tab components */
7
7
  children: ReactNode;
8
8
  /** Callback fired when the value changes. */
9
- onChange?: (event: React.ChangeEvent<{}> | null, value: ValueType) => void;
9
+ onChange?: (event: React.SyntheticEvent | null, value: V) => void;
10
10
  /**
11
11
  * The value of the currently selected Tab.
12
12
  * If you don't want any selected Tab, you can set this property to null.
13
13
  */
14
- value: ValueType;
14
+ value: V;
15
15
  /** The tabs orientation (layout flow direction). */
16
16
  orientation?: 'horizontal' | 'vertical';
17
17
  /** Determines additional display behavior of the tabs */
@@ -21,6 +21,6 @@ export declare const TabsContext: React.Context<{
21
21
  orientation: 'horizontal' | 'vertical';
22
22
  variant: 'scrollable' | 'fullWidth';
23
23
  }>;
24
- export declare const Tabs: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
24
+ export declare const Tabs: React.ForwardRefExoticComponent<Props<TabsValueType> & React.RefAttributes<HTMLDivElement>>;
25
25
  export default Tabs;
26
26
  //# 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,aAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAEvC,MAAM,WAAW,KAAM,SAAQ,SAAS;IACtC,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,SAAS,KAAK,IAAI,CAAA;IAE1E;;;OAGG;IACH,KAAK,EAAE,SAAS,CAAA;IAEhB,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;AAoCxD,eAAO,MAAM,IAAI,8EAyDf,CAAA;AAIF,eAAe,IAAI,CAAA"}
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"}
@@ -45,7 +45,7 @@ const classesByVariant = {
45
45
  },
46
46
  };
47
47
  // eslint-disable-next-line react/display-name
48
- export const Tabs = forwardRef(function Tabs(props, ref) {
48
+ const TabsComponent = (props, ref) => {
49
49
  const { children, orientation = 'horizontal', onChange, value, variant = 'scrollable', className } = props, rest = __rest(props, ["children", "orientation", "onChange", "value", "variant", "className"]);
50
50
  const contextValue = useMemo(() => ({
51
51
  orientation,
@@ -58,10 +58,11 @@ export const Tabs = forwardRef(function Tabs(props, ref) {
58
58
  ref,
59
59
  className: twMerge('relative min-h-0 flex overflow-hidden', classesByOrientation[orientation].root, classesByVariant[variant].root, className),
60
60
  },
61
- }, onChange: onChange, value: value, orientation: orientation }),
61
+ }, onChange: (event, newValue) => onChange === null || onChange === void 0 ? void 0 : onChange(event, newValue), value: value, orientation: orientation }),
62
62
  React.createElement("div", { className: twJoin(classesByVariant[variant].scroller, classesByOrientation[orientation].scroller, 'flex-auto inline-block relative whitespace-nowrap') },
63
63
  React.createElement(TabsList, { className: twJoin('flex', isVertical && 'flex-col') }, children)))));
64
- });
64
+ };
65
+ export const Tabs = forwardRef(TabsComponent);
65
66
  Tabs.displayName = 'Tabs';
66
67
  export default Tabs;
67
68
  //# 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;CACF,CAAA;AAED,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;CACF,CAAA;AAED,8CAA8C;AAC9C,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAwB,SAAS,IAAI,CACjE,KAAK,EACL,GAAG;IAEH,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,QAAQ,EAClB,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,CAAC,CAAA;AAEF,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,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,5 +1,6 @@
1
1
  import type { OmitInternalProps } from '@toptal/picasso-shared';
2
- import type { Props } from './Tabs';
2
+ import type { Props, TabsValueType } from './Tabs';
3
3
  export { default as Tabs } from './Tabs';
4
- export declare type TabsProps = OmitInternalProps<Props>;
4
+ export declare type TabsProps = OmitInternalProps<Props<TabsValueType>>;
5
+ export type { TabsValueType } from './Tabs';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Tabs/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAEnC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAA;AACxC,oBAAY,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Tabs/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AAElD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAA;AACxC,oBAAY,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAA;AAC/D,YAAY,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- export declare const TabsCompound: import("react").ForwardRefExoticComponent<import("../Tabs/Tabs").Props & import("react").RefAttributes<HTMLDivElement>> & {
2
+ export declare const TabsCompound: import("react").ForwardRefExoticComponent<import("../Tabs/Tabs").Props<import("../Tabs").TabsValueType> & import("react").RefAttributes<HTMLDivElement>> & {
3
3
  Tab: import("react").ForwardRefExoticComponent<import("../Tab/Tab").Props & import("react").RefAttributes<HTMLButtonElement>>;
4
4
  };
5
5
  //# sourceMappingURL=index.d.ts.map
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-c853d19b7.47+c853d19b7",
3
+ "version": "2.0.3-alpha-feature-tailwind-w21-80062bcbc.49+80062bcbc",
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-c853d19b7.47+c853d19b7",
27
- "@toptal/picasso-icons": "1.1.2-alpha-feature-tailwind-w21-c853d19b7.47+c853d19b7",
28
- "@toptal/picasso-shared": "15.0.1-alpha-feature-tailwind-w21-c853d19b7.47+c853d19b7",
29
- "@toptal/picasso-typography": "2.0.2-alpha-feature-tailwind-w21-c853d19b7.47+c853d19b7",
30
- "@toptal/picasso-typography-overflow": "2.0.2-alpha-feature-tailwind-w21-c853d19b7.47+c853d19b7",
31
- "@toptal/picasso-user-badge": "2.0.3-alpha-feature-tailwind-w21-c853d19b7.47+c853d19b7",
32
- "@toptal/picasso-utils": "1.0.4-alpha-feature-tailwind-w21-c853d19b7.47+c853d19b7",
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",
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-c853d19b7.55+c853d19b7",
51
- "@toptal/picasso-tailwind-merge": "1.1.1-alpha-feature-tailwind-w21-c853d19b7.4266+c853d19b7",
52
- "@toptal/picasso-test-utils": "1.1.2-alpha-feature-tailwind-w21-c853d19b7.47+c853d19b7"
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"
53
53
  },
54
54
  "files": [
55
55
  "dist-package/**",
56
56
  "!dist-package/tsconfig.tsbuildinfo",
57
57
  "src"
58
58
  ],
59
- "gitHead": "c853d19b738f210c81c5a1148ceae81984bd10f3"
59
+ "gitHead": "80062bcbc46a12301eaa56445413e62f4a60a3fc"
60
60
  }
package/src/Tabs/Tabs.tsx CHANGED
@@ -5,20 +5,20 @@ import { TabsList } from '@mui/base/TabsList'
5
5
  import type { BaseProps } from '@toptal/picasso-shared'
6
6
  import { twJoin, twMerge } from '@toptal/picasso-tailwind-merge'
7
7
 
8
- type ValueType = string | number | null
8
+ export type TabsValueType = string | number | null
9
9
 
10
- export interface Props extends BaseProps {
10
+ export interface Props<V extends TabsValueType> extends BaseProps {
11
11
  /** Tabs content containing Tab components */
12
12
  children: ReactNode
13
13
 
14
14
  /** Callback fired when the value changes. */
15
- onChange?: (event: React.ChangeEvent<{}> | null, value: ValueType) => void
15
+ onChange?: (event: React.SyntheticEvent | null, value: V) => void
16
16
 
17
17
  /**
18
18
  * The value of the currently selected Tab.
19
19
  * If you don't want any selected Tab, you can set this property to null.
20
20
  */
21
- value: ValueType
21
+ value: V
22
22
 
23
23
  /** The tabs orientation (layout flow direction). */
24
24
  orientation?: 'horizontal' | 'vertical'
@@ -52,7 +52,7 @@ const classesByOrientation = {
52
52
  root: '',
53
53
  scroller: indicatorClasses,
54
54
  },
55
- }
55
+ } as const
56
56
 
57
57
  const classesByVariant = {
58
58
  scrollable: {
@@ -63,13 +63,13 @@ const classesByVariant = {
63
63
  root: '',
64
64
  scroller: 'w-full overflow-hidden',
65
65
  },
66
- }
66
+ } as const
67
67
 
68
68
  // eslint-disable-next-line react/display-name
69
- export const Tabs = forwardRef<HTMLDivElement, Props>(function Tabs(
70
- props,
71
- ref
72
- ) {
69
+ const TabsComponent = <V extends TabsValueType>(
70
+ props: Props<V>,
71
+ ref: React.ForwardedRef<HTMLDivElement>
72
+ ) => {
73
73
  const {
74
74
  children,
75
75
  orientation = 'horizontal',
@@ -105,7 +105,7 @@ export const Tabs = forwardRef<HTMLDivElement, Props>(function Tabs(
105
105
  ),
106
106
  },
107
107
  }}
108
- onChange={onChange}
108
+ onChange={(event, newValue) => onChange?.(event, newValue as V)}
109
109
  value={value}
110
110
  orientation={orientation}
111
111
  >
@@ -123,7 +123,9 @@ export const Tabs = forwardRef<HTMLDivElement, Props>(function Tabs(
123
123
  </MUITabs>
124
124
  </TabsContext.Provider>
125
125
  )
126
- })
126
+ }
127
+
128
+ export const Tabs = forwardRef(TabsComponent)
127
129
 
128
130
  Tabs.displayName = 'Tabs'
129
131
 
package/src/Tabs/index.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { OmitInternalProps } from '@toptal/picasso-shared'
2
2
 
3
- import type { Props } from './Tabs'
3
+ import type { Props, TabsValueType } from './Tabs'
4
4
 
5
5
  export { default as Tabs } from './Tabs'
6
- export type TabsProps = OmitInternalProps<Props>
6
+ export type TabsProps = OmitInternalProps<Props<TabsValueType>>
7
+ export type { TabsValueType } from './Tabs'
package/src/Tabs/test.tsx CHANGED
@@ -1,14 +1,17 @@
1
1
  /* eslint-disable react/no-array-index-key */
2
2
  import React from 'react'
3
3
  import { render, fireEvent } from '@testing-library/react'
4
- import type { OmitInternalProps } from '@toptal/picasso-shared'
5
4
  import { TestingPicasso } from '@toptal/picasso-test-utils'
6
5
 
7
6
  import type { TabProps } from '../Tab'
8
- import type { Props } from './Tabs'
7
+ import type { Props, TabsValueType } from './Tabs'
9
8
  import { TabsCompound as Tabs } from '../TabsCompound'
10
9
 
11
- const renderTabContent = (tab: TabProps, index: number, value: any) => {
10
+ const renderTabContent = (
11
+ tab: TabProps,
12
+ index: number,
13
+ value: TabsValueType
14
+ ) => {
12
15
  const isTabActive = index + 1 === value || tab.value === value
13
16
  const testId = `tab-${index + 1}-content`
14
17
 
@@ -25,7 +28,7 @@ const renderTabContent = (tab: TabProps, index: number, value: any) => {
25
28
 
26
29
  const renderTabs = (
27
30
  tabs: TabProps[],
28
- { value, onChange, variant }: OmitInternalProps<Props, 'children'>,
31
+ { value, onChange, variant }: Omit<Props<TabsValueType>, 'children'>,
29
32
  orientation: 'horizontal' | 'vertical' = 'horizontal'
30
33
  ) => {
31
34
  return render(