@udixio/ui-react 2.9.4 → 2.9.6
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.
- package/CHANGELOG.md +27 -0
- package/dist/index.cjs +3 -3
- package/dist/index.js +1802 -1703
- package/dist/lib/components/Tab.d.ts +1 -1
- package/dist/lib/components/Tab.d.ts.map +1 -1
- package/dist/lib/components/TabGroup.d.ts +9 -0
- package/dist/lib/components/TabGroup.d.ts.map +1 -0
- package/dist/lib/components/TabGroupContext.d.ts +10 -0
- package/dist/lib/components/TabGroupContext.d.ts.map +1 -0
- package/dist/lib/components/TabPanel.d.ts +10 -0
- package/dist/lib/components/TabPanel.d.ts.map +1 -0
- package/dist/lib/components/TabPanels.d.ts +10 -0
- package/dist/lib/components/TabPanels.d.ts.map +1 -0
- package/dist/lib/components/Tabs.d.ts.map +1 -1
- package/dist/lib/components/index.d.ts +3 -0
- package/dist/lib/components/index.d.ts.map +1 -1
- package/dist/lib/interfaces/index.d.ts +2 -0
- package/dist/lib/interfaces/index.d.ts.map +1 -1
- package/dist/lib/interfaces/tab-group.interface.d.ts +13 -0
- package/dist/lib/interfaces/tab-group.interface.d.ts.map +1 -0
- package/dist/lib/interfaces/tab-panels.interface.d.ts +20 -0
- package/dist/lib/interfaces/tab-panels.interface.d.ts.map +1 -0
- package/dist/lib/interfaces/tab.interface.d.ts +2 -1
- package/dist/lib/interfaces/tab.interface.d.ts.map +1 -1
- package/dist/lib/styles/index.d.ts +1 -0
- package/dist/lib/styles/index.d.ts.map +1 -1
- package/dist/lib/styles/tab-panels.style.d.ts +31 -0
- package/dist/lib/styles/tab-panels.style.d.ts.map +1 -0
- package/dist/lib/styles/tab.style.d.ts +2 -0
- package/dist/lib/styles/tab.style.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/lib/components/Tab.tsx +5 -1
- package/src/lib/components/TabGroup.tsx +60 -0
- package/src/lib/components/TabGroupContext.tsx +11 -0
- package/src/lib/components/TabPanel.tsx +24 -0
- package/src/lib/components/TabPanels.tsx +71 -0
- package/src/lib/components/Tabs.tsx +17 -6
- package/src/lib/components/index.ts +3 -0
- package/src/lib/interfaces/index.ts +2 -0
- package/src/lib/interfaces/tab-group.interface.ts +13 -0
- package/src/lib/interfaces/tab-panels.interface.ts +21 -0
- package/src/lib/interfaces/tab.interface.ts +2 -1
- package/src/lib/styles/index.ts +1 -0
- package/src/lib/styles/tab-panels.style.ts +35 -0
|
@@ -4,5 +4,5 @@ import { ReactProps } from '../utils/component';
|
|
|
4
4
|
* @status beta
|
|
5
5
|
* @parent Tabs
|
|
6
6
|
*/
|
|
7
|
-
export declare const Tab: ({ className, onClick, label, variant, href, icon, selectedTab, setSelectedTab, tabsId, index, onTabSelected, scrollable, selected, ref, ...restProps }: ReactProps<TabInterface>) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const Tab: ({ className, onClick, label: labelProp, variant, href, icon, selectedTab, setSelectedTab, tabsId, index, onTabSelected, scrollable, selected, children, ref, ...restProps }: ReactProps<TabInterface>) => import("react/jsx-runtime").JSX.Element;
|
|
8
8
|
//# sourceMappingURL=Tab.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Tab.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD;;;GAGG;AACH,eAAO,MAAM,GAAG,GAAI,
|
|
1
|
+
{"version":3,"file":"Tab.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Tab.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD;;;GAGG;AACH,eAAO,MAAM,GAAG,GAAI,6KAiBjB,UAAU,CAAC,YAAY,CAAC,4CAuF1B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TabGroupInterface } from '../interfaces/tab-group.interface';
|
|
2
|
+
import { ReactProps } from '../utils/component';
|
|
3
|
+
/**
|
|
4
|
+
* TabGroup provides shared state for Tabs and TabPanels
|
|
5
|
+
* @status beta
|
|
6
|
+
* @category Navigation
|
|
7
|
+
*/
|
|
8
|
+
export declare const TabGroup: ({ children, selectedTab: externalSelectedTab, setSelectedTab: externalSetSelectedTab, defaultTab, }: ReactProps<TabGroupInterface>) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=TabGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabGroup.d.ts","sourceRoot":"","sources":["../../../src/lib/components/TabGroup.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,qGAKtB,UAAU,CAAC,iBAAiB,CAAC,4CA2C/B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Dispatch, SetStateAction } from 'react';
|
|
2
|
+
export interface TabGroupContextValue {
|
|
3
|
+
selectedTab: number | null;
|
|
4
|
+
setSelectedTab: Dispatch<SetStateAction<number | null>>;
|
|
5
|
+
previousTab: number | null;
|
|
6
|
+
direction: number;
|
|
7
|
+
tabsId: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const TabGroupContext: import('react').Context<TabGroupContextValue | null>;
|
|
10
|
+
//# sourceMappingURL=TabGroupContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabGroupContext.d.ts","sourceRoot":"","sources":["../../../src/lib/components/TabGroupContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEhE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACxD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,eAAe,sDAAmD,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TabPanelInterface } from '../interfaces/tab-panels.interface';
|
|
2
|
+
import { ReactProps } from '../utils/component';
|
|
3
|
+
/**
|
|
4
|
+
* TabPanel contains the content for a single tab
|
|
5
|
+
* Must be used within TabPanels
|
|
6
|
+
* @status beta
|
|
7
|
+
* @category Navigation
|
|
8
|
+
*/
|
|
9
|
+
export declare const TabPanel: ({ children, className, isSelected, }: ReactProps<TabPanelInterface>) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=TabPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabPanel.d.ts","sourceRoot":"","sources":["../../../src/lib/components/TabPanel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,sCAItB,UAAU,CAAC,iBAAiB,CAAC,4CAQ/B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TabPanelsInterface } from '../interfaces/tab-panels.interface';
|
|
2
|
+
import { ReactProps } from '../utils/component';
|
|
3
|
+
/**
|
|
4
|
+
* TabPanels renders the content panels with slide animation
|
|
5
|
+
* Must be used within a TabGroup
|
|
6
|
+
* @status beta
|
|
7
|
+
* @category Navigation
|
|
8
|
+
*/
|
|
9
|
+
export declare const TabPanels: ({ children, className, }: ReactProps<TabPanelsInterface>) => import("react/jsx-runtime").JSX.Element | null;
|
|
10
|
+
//# sourceMappingURL=TabPanels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabPanels.d.ts","sourceRoot":"","sources":["../../../src/lib/components/TabPanels.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIhD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,0BAGvB,UAAU,CAAC,kBAAkB,CAAC,mDAqDhC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKhD;;;;GAIG;AACH,eAAO,MAAM,IAAI,GAAI,wIAQlB,UAAU,CAAC,aAAa,CAAC,4CA6E3B,CAAC"}
|
|
@@ -17,6 +17,9 @@ export * from './Snackbar';
|
|
|
17
17
|
export * from './Switch';
|
|
18
18
|
export * from './Tab';
|
|
19
19
|
export * from './Tabs';
|
|
20
|
+
export * from './TabGroup';
|
|
21
|
+
export * from './TabPanels';
|
|
22
|
+
export * from './TabPanel';
|
|
20
23
|
export * from './TextField';
|
|
21
24
|
export * from './NavigationRailItem';
|
|
22
25
|
export * from './NavigationRail';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC"}
|
|
@@ -15,6 +15,8 @@ export * from './snackbar.interface';
|
|
|
15
15
|
export * from './switch.interface';
|
|
16
16
|
export * from './tab.interface';
|
|
17
17
|
export * from './tabs.interface';
|
|
18
|
+
export * from './tab-group.interface';
|
|
19
|
+
export * from './tab-panels.interface';
|
|
18
20
|
export * from './text-field.interface';
|
|
19
21
|
export * from './navigation-rail-item.interface';
|
|
20
22
|
export * from './tooltip.interface';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Dispatch, ReactNode, SetStateAction } from 'react';
|
|
2
|
+
export interface TabGroupInterface {
|
|
3
|
+
type: 'div';
|
|
4
|
+
props: {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
selectedTab?: number | null;
|
|
7
|
+
setSelectedTab?: Dispatch<SetStateAction<number | null>>;
|
|
8
|
+
defaultTab?: number;
|
|
9
|
+
};
|
|
10
|
+
states: object;
|
|
11
|
+
elements: ['tabGroup'];
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=tab-group.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab-group.interface.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/tab-group.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE;QACL,QAAQ,EAAE,SAAS,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,cAAc,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;QACzD,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC;CACxB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface TabPanelsInterface {
|
|
3
|
+
type: 'div';
|
|
4
|
+
props: {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
};
|
|
7
|
+
states: object;
|
|
8
|
+
elements: ['tabPanels'];
|
|
9
|
+
}
|
|
10
|
+
export interface TabPanelInterface {
|
|
11
|
+
type: 'div';
|
|
12
|
+
props: {
|
|
13
|
+
children: ReactNode;
|
|
14
|
+
};
|
|
15
|
+
states: {
|
|
16
|
+
isSelected: boolean;
|
|
17
|
+
};
|
|
18
|
+
elements: ['tabPanel'];
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=tab-panels.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab-panels.interface.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/tab-panels.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE;QACL,QAAQ,EAAE,SAAS,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE;QACL,QAAQ,EAAE,SAAS,CAAC;KACrB,CAAC;IACF,MAAM,EAAE;QACN,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC;CACxB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ActionOrLink } from '../utils/component';
|
|
2
2
|
import { TabsVariant } from './tabs.interface';
|
|
3
|
-
import { Dispatch, RefObject, SetStateAction } from 'react';
|
|
3
|
+
import { Dispatch, ReactNode, RefObject, SetStateAction } from 'react';
|
|
4
4
|
import { Icon } from '../icon';
|
|
5
5
|
export type TabProps = {
|
|
6
6
|
selected?: boolean;
|
|
@@ -17,6 +17,7 @@ export type TabProps = {
|
|
|
17
17
|
}) => void;
|
|
18
18
|
index?: number;
|
|
19
19
|
scrollable?: boolean;
|
|
20
|
+
children?: ReactNode;
|
|
20
21
|
};
|
|
21
22
|
type Elements = ['tab', 'stateLayer', 'icon', 'label', 'content', 'underline'];
|
|
22
23
|
export type TabInterface = ActionOrLink<TabProps> & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab.interface.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/tab.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"tab.interface.d.ts","sourceRoot":"","sources":["../../../src/lib/interfaces/tab.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,CACd,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG;QACzD,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;KACrB,KACA,IAAI,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAE/E,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG;IAClD,MAAM,EAAE;QACN,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC"}
|
|
@@ -15,6 +15,7 @@ export * from './snackbar.style';
|
|
|
15
15
|
export * from './switch.style';
|
|
16
16
|
export * from './tab.style';
|
|
17
17
|
export * from './tabs.style';
|
|
18
|
+
export * from './tab-panels.style';
|
|
18
19
|
export * from './text-field.style';
|
|
19
20
|
export * from './tooltip.style';
|
|
20
21
|
export { useButtonStyle } from './button.style';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/styles/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/styles/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { TabPanelsInterface, TabPanelInterface } from '../interfaces';
|
|
2
|
+
import { ClassNameComponent } from '../utils';
|
|
3
|
+
export declare const tabPanelsStyle: (states: {
|
|
4
|
+
children: any;
|
|
5
|
+
} & {
|
|
6
|
+
children: import('react').ReactNode;
|
|
7
|
+
} & object & {
|
|
8
|
+
className: string | ClassNameComponent<TabPanelsInterface> | undefined;
|
|
9
|
+
}) => Record<"tabPanels", string>;
|
|
10
|
+
export declare const useTabPanelsStyle: (states: object & {
|
|
11
|
+
children: import('react').ReactNode;
|
|
12
|
+
} & {
|
|
13
|
+
className?: string | ClassNameComponent<TabPanelsInterface> | undefined;
|
|
14
|
+
}) => Record<"tabPanels", string>;
|
|
15
|
+
export declare const tabPanelStyle: (states: {
|
|
16
|
+
children: any;
|
|
17
|
+
} & {
|
|
18
|
+
children: import('react').ReactNode;
|
|
19
|
+
} & {
|
|
20
|
+
isSelected: boolean;
|
|
21
|
+
} & {
|
|
22
|
+
className: string | ClassNameComponent<TabPanelInterface> | undefined;
|
|
23
|
+
}) => Record<"tabPanel", string>;
|
|
24
|
+
export declare const useTabPanelStyle: (states: {
|
|
25
|
+
isSelected: boolean;
|
|
26
|
+
} & {
|
|
27
|
+
children: import('react').ReactNode;
|
|
28
|
+
} & {
|
|
29
|
+
className?: string | ClassNameComponent<TabPanelInterface> | undefined;
|
|
30
|
+
}) => Record<"tabPanel", string>;
|
|
31
|
+
//# sourceMappingURL=tab-panels.style.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab-panels.style.d.ts","sourceRoot":"","sources":["../../../src/lib/styles/tab-panels.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,UAAU,CAAC;AAMlB,eAAO,MAAM,cAAc;;;;;;iCAG1B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;iCAG7B,CAAC;AAMF,eAAO,MAAM,aAAa;;;;;;;;gCAGzB,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;gCAG5B,CAAC"}
|
|
@@ -11,6 +11,7 @@ export declare const tabStyle: (states: (({
|
|
|
11
11
|
onTabSelected: any;
|
|
12
12
|
index: any;
|
|
13
13
|
scrollable: any;
|
|
14
|
+
children: any;
|
|
14
15
|
href: any;
|
|
15
16
|
} | {
|
|
16
17
|
selected: any;
|
|
@@ -23,6 +24,7 @@ export declare const tabStyle: (states: (({
|
|
|
23
24
|
onTabSelected: any;
|
|
24
25
|
index: any;
|
|
25
26
|
scrollable: any;
|
|
27
|
+
children: any;
|
|
26
28
|
href: any;
|
|
27
29
|
}) & ((import('..').TabProps & {
|
|
28
30
|
href?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab.style.d.ts","sourceRoot":"","sources":["../../../src/lib/styles/tab.style.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAqE7C,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"tab.style.d.ts","sourceRoot":"","sources":["../../../src/lib/styles/tab.style.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAqE7C,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uFAAoD,CAAC;AAE1E,eAAO,MAAM,WAAW;;;;;;;;wFAAsD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@udixio/ui-react",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"react": "^19.1.1",
|
|
38
38
|
"react-dom": "^19.1.1",
|
|
39
|
-
"@udixio/theme": "2.1.
|
|
40
|
-
"@udixio/tailwind": "2.4.
|
|
39
|
+
"@udixio/theme": "2.1.9",
|
|
40
|
+
"@udixio/tailwind": "2.4.7"
|
|
41
41
|
},
|
|
42
42
|
"repository": {
|
|
43
43
|
"type": "git",
|
|
@@ -14,7 +14,7 @@ import { State } from '../effects';
|
|
|
14
14
|
export const Tab = ({
|
|
15
15
|
className,
|
|
16
16
|
onClick,
|
|
17
|
-
label,
|
|
17
|
+
label: labelProp,
|
|
18
18
|
variant = 'primary',
|
|
19
19
|
href,
|
|
20
20
|
icon,
|
|
@@ -25,12 +25,16 @@ export const Tab = ({
|
|
|
25
25
|
onTabSelected,
|
|
26
26
|
scrollable = false,
|
|
27
27
|
selected = false,
|
|
28
|
+
children,
|
|
28
29
|
ref,
|
|
29
30
|
...restProps
|
|
30
31
|
}: ReactProps<TabInterface>) => {
|
|
31
32
|
const defaultRef = useRef(null);
|
|
32
33
|
const resolvedRef = ref || defaultRef;
|
|
33
34
|
|
|
35
|
+
// children (string) peut être utilisé comme alternative à label prop
|
|
36
|
+
const label = labelProp ?? (typeof children === 'string' ? children : undefined);
|
|
37
|
+
|
|
34
38
|
const [isSelected, setIsSelected] = useState<boolean>(selected);
|
|
35
39
|
|
|
36
40
|
useEffect(() => {
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import React, { useMemo, useRef, useState } from 'react';
|
|
2
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
3
|
+
import { TabGroupContext, TabGroupContextValue } from './TabGroupContext';
|
|
4
|
+
import { TabGroupInterface } from '../interfaces/tab-group.interface';
|
|
5
|
+
import { ReactProps } from '../utils/component';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* TabGroup provides shared state for Tabs and TabPanels
|
|
9
|
+
* @status beta
|
|
10
|
+
* @category Navigation
|
|
11
|
+
*/
|
|
12
|
+
export const TabGroup = ({
|
|
13
|
+
children,
|
|
14
|
+
selectedTab: externalSelectedTab,
|
|
15
|
+
setSelectedTab: externalSetSelectedTab,
|
|
16
|
+
defaultTab = 0,
|
|
17
|
+
}: ReactProps<TabGroupInterface>) => {
|
|
18
|
+
const [internalSelectedTab, internalSetSelectedTab] = useState<number | null>(
|
|
19
|
+
defaultTab,
|
|
20
|
+
);
|
|
21
|
+
const previousTabRef = useRef<number | null>(null);
|
|
22
|
+
|
|
23
|
+
// Priorité : props externes > état interne
|
|
24
|
+
const selectedTab =
|
|
25
|
+
externalSelectedTab !== undefined ? externalSelectedTab : internalSelectedTab;
|
|
26
|
+
|
|
27
|
+
const setSelectedTab = externalSetSelectedTab ?? internalSetSelectedTab;
|
|
28
|
+
|
|
29
|
+
// Calculer la direction du slide
|
|
30
|
+
const direction =
|
|
31
|
+
previousTabRef.current !== null && selectedTab !== null
|
|
32
|
+
? selectedTab > previousTabRef.current
|
|
33
|
+
? 1
|
|
34
|
+
: -1
|
|
35
|
+
: 0;
|
|
36
|
+
|
|
37
|
+
// Mettre à jour la référence précédente
|
|
38
|
+
if (selectedTab !== previousTabRef.current) {
|
|
39
|
+
previousTabRef.current = selectedTab;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const tabsId = useMemo(() => uuidv4(), []);
|
|
43
|
+
|
|
44
|
+
const contextValue: TabGroupContextValue = useMemo(
|
|
45
|
+
() => ({
|
|
46
|
+
selectedTab,
|
|
47
|
+
setSelectedTab,
|
|
48
|
+
previousTab: previousTabRef.current,
|
|
49
|
+
direction,
|
|
50
|
+
tabsId,
|
|
51
|
+
}),
|
|
52
|
+
[selectedTab, setSelectedTab, direction, tabsId],
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
return (
|
|
56
|
+
<TabGroupContext.Provider value={contextValue}>
|
|
57
|
+
{children}
|
|
58
|
+
</TabGroupContext.Provider>
|
|
59
|
+
);
|
|
60
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createContext, Dispatch, SetStateAction } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface TabGroupContextValue {
|
|
4
|
+
selectedTab: number | null;
|
|
5
|
+
setSelectedTab: Dispatch<SetStateAction<number | null>>;
|
|
6
|
+
previousTab: number | null;
|
|
7
|
+
direction: number;
|
|
8
|
+
tabsId: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const TabGroupContext = createContext<TabGroupContextValue | null>(null);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TabPanelInterface } from '../interfaces/tab-panels.interface';
|
|
3
|
+
import { ReactProps } from '../utils/component';
|
|
4
|
+
import { useTabPanelStyle } from '../styles/tab-panels.style';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* TabPanel contains the content for a single tab
|
|
8
|
+
* Must be used within TabPanels
|
|
9
|
+
* @status beta
|
|
10
|
+
* @category Navigation
|
|
11
|
+
*/
|
|
12
|
+
export const TabPanel = ({
|
|
13
|
+
children,
|
|
14
|
+
className,
|
|
15
|
+
isSelected = false,
|
|
16
|
+
}: ReactProps<TabPanelInterface>) => {
|
|
17
|
+
const styles = useTabPanelStyle({
|
|
18
|
+
children,
|
|
19
|
+
className,
|
|
20
|
+
isSelected,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
return <div className={styles.tabPanel}>{children}</div>;
|
|
24
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
import { AnimatePresence, motion } from 'motion/react';
|
|
3
|
+
import { TabGroupContext } from './TabGroupContext';
|
|
4
|
+
import { TabPanelsInterface } from '../interfaces/tab-panels.interface';
|
|
5
|
+
import { ReactProps } from '../utils/component';
|
|
6
|
+
import { useTabPanelsStyle } from '../styles/tab-panels.style';
|
|
7
|
+
import { TabPanel } from './TabPanel';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* TabPanels renders the content panels with slide animation
|
|
11
|
+
* Must be used within a TabGroup
|
|
12
|
+
* @status beta
|
|
13
|
+
* @category Navigation
|
|
14
|
+
*/
|
|
15
|
+
export const TabPanels = ({
|
|
16
|
+
children,
|
|
17
|
+
className,
|
|
18
|
+
}: ReactProps<TabPanelsInterface>) => {
|
|
19
|
+
const context = useContext(TabGroupContext);
|
|
20
|
+
|
|
21
|
+
if (!context) {
|
|
22
|
+
console.warn('TabPanels must be used within a TabGroup');
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const { selectedTab, direction, tabsId } = context;
|
|
27
|
+
|
|
28
|
+
const panelChildren = React.Children.toArray(children).filter(
|
|
29
|
+
(child) => React.isValidElement(child) && child.type === TabPanel,
|
|
30
|
+
) as React.ReactElement[];
|
|
31
|
+
|
|
32
|
+
const styles = useTabPanelsStyle({
|
|
33
|
+
children,
|
|
34
|
+
className,
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
return (
|
|
38
|
+
<div className={styles.tabPanels}>
|
|
39
|
+
<AnimatePresence initial={false} custom={direction} mode="popLayout">
|
|
40
|
+
{panelChildren.map(
|
|
41
|
+
(child, index) =>
|
|
42
|
+
selectedTab === index && (
|
|
43
|
+
<motion.div
|
|
44
|
+
key={index}
|
|
45
|
+
custom={direction}
|
|
46
|
+
variants={{
|
|
47
|
+
enter: (dir: number) => ({
|
|
48
|
+
x: dir * 100 + '%',
|
|
49
|
+
opacity: 1,
|
|
50
|
+
}),
|
|
51
|
+
center: { x: 0, opacity: 1 },
|
|
52
|
+
exit: (dir: number) => ({
|
|
53
|
+
x: dir * -100 + '%',
|
|
54
|
+
opacity: 1,
|
|
55
|
+
}),
|
|
56
|
+
}}
|
|
57
|
+
initial="enter"
|
|
58
|
+
animate="center"
|
|
59
|
+
exit="exit"
|
|
60
|
+
transition={{ type: 'spring', stiffness: 400, damping: 40 }}
|
|
61
|
+
role="tabpanel"
|
|
62
|
+
aria-labelledby={`tab-${tabsId}-${index}`}
|
|
63
|
+
>
|
|
64
|
+
{React.cloneElement(child, { isSelected: true })}
|
|
65
|
+
</motion.div>
|
|
66
|
+
),
|
|
67
|
+
)}
|
|
68
|
+
</AnimatePresence>
|
|
69
|
+
</div>
|
|
70
|
+
);
|
|
71
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useMemo, useState } from 'react';
|
|
1
|
+
import React, { useContext, useMemo, useState } from 'react';
|
|
2
2
|
import { v4 as uuidv4 } from 'uuid';
|
|
3
3
|
import { TabsInterface } from '../interfaces/tabs.interface';
|
|
4
4
|
|
|
@@ -6,6 +6,7 @@ import { useTabsStyle } from '../styles/tabs.style';
|
|
|
6
6
|
import { ReactProps } from '../utils/component';
|
|
7
7
|
import { TabProps } from '../interfaces/tab.interface';
|
|
8
8
|
import { Tab } from './Tab';
|
|
9
|
+
import { TabGroupContext } from './TabGroupContext';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Tabs organize content across different screens and views
|
|
@@ -21,22 +22,28 @@ export const Tabs = ({
|
|
|
21
22
|
setSelectedTab: externalSetSelectedTab,
|
|
22
23
|
scrollable = false,
|
|
23
24
|
}: ReactProps<TabsInterface>) => {
|
|
25
|
+
const tabGroupContext = useContext(TabGroupContext);
|
|
26
|
+
|
|
24
27
|
const [internalSelectedTab, internalSetSelectedTab] = useState<number | null>(
|
|
25
28
|
null,
|
|
26
29
|
);
|
|
27
30
|
|
|
31
|
+
// Priorité : props > context > état interne
|
|
28
32
|
let selectedTab: number | null;
|
|
29
|
-
if (externalSelectedTab
|
|
33
|
+
if (externalSelectedTab === 0 || externalSelectedTab != undefined) {
|
|
30
34
|
selectedTab = externalSelectedTab;
|
|
35
|
+
} else if (tabGroupContext) {
|
|
36
|
+
selectedTab = tabGroupContext.selectedTab;
|
|
31
37
|
} else {
|
|
32
38
|
selectedTab = internalSelectedTab;
|
|
33
39
|
}
|
|
34
40
|
|
|
35
|
-
const setSelectedTab =
|
|
41
|
+
const setSelectedTab =
|
|
42
|
+
externalSetSelectedTab ?? tabGroupContext?.setSelectedTab ?? internalSetSelectedTab;
|
|
36
43
|
|
|
37
44
|
const tabChildren = React.Children.toArray(children).filter(
|
|
38
45
|
(child) => React.isValidElement(child) && child.type === Tab,
|
|
39
|
-
);
|
|
46
|
+
) as React.ReactElement<TabProps>[];
|
|
40
47
|
|
|
41
48
|
const ref = React.useRef<HTMLDivElement | null>(null);
|
|
42
49
|
|
|
@@ -60,7 +67,10 @@ export const Tabs = ({
|
|
|
60
67
|
}
|
|
61
68
|
};
|
|
62
69
|
|
|
63
|
-
const tabsId = useMemo(
|
|
70
|
+
const tabsId = useMemo(
|
|
71
|
+
() => tabGroupContext?.tabsId ?? uuidv4(),
|
|
72
|
+
[tabGroupContext?.tabsId],
|
|
73
|
+
);
|
|
64
74
|
|
|
65
75
|
const styles = useTabsStyle({
|
|
66
76
|
children,
|
|
@@ -71,10 +81,11 @@ export const Tabs = ({
|
|
|
71
81
|
className,
|
|
72
82
|
variant,
|
|
73
83
|
});
|
|
84
|
+
|
|
74
85
|
return (
|
|
75
86
|
<div ref={ref} role="tablist" className={styles.tabs}>
|
|
76
87
|
{tabChildren.map((child, index) => {
|
|
77
|
-
return React.cloneElement(child
|
|
88
|
+
return React.cloneElement(child, {
|
|
78
89
|
key: index,
|
|
79
90
|
index,
|
|
80
91
|
variant: variant,
|
|
@@ -17,6 +17,9 @@ export * from './Snackbar';
|
|
|
17
17
|
export * from './Switch';
|
|
18
18
|
export * from './Tab';
|
|
19
19
|
export * from './Tabs';
|
|
20
|
+
export * from './TabGroup';
|
|
21
|
+
export * from './TabPanels';
|
|
22
|
+
export * from './TabPanel';
|
|
20
23
|
export * from './TextField';
|
|
21
24
|
export * from './NavigationRailItem';
|
|
22
25
|
export * from './NavigationRail';
|
|
@@ -15,6 +15,8 @@ export * from './snackbar.interface';
|
|
|
15
15
|
export * from './switch.interface';
|
|
16
16
|
export * from './tab.interface';
|
|
17
17
|
export * from './tabs.interface';
|
|
18
|
+
export * from './tab-group.interface';
|
|
19
|
+
export * from './tab-panels.interface';
|
|
18
20
|
export * from './text-field.interface';
|
|
19
21
|
export * from './navigation-rail-item.interface';
|
|
20
22
|
export * from './tooltip.interface';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Dispatch, ReactNode, SetStateAction } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface TabGroupInterface {
|
|
4
|
+
type: 'div';
|
|
5
|
+
props: {
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
selectedTab?: number | null;
|
|
8
|
+
setSelectedTab?: Dispatch<SetStateAction<number | null>>;
|
|
9
|
+
defaultTab?: number;
|
|
10
|
+
};
|
|
11
|
+
states: object;
|
|
12
|
+
elements: ['tabGroup'];
|
|
13
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface TabPanelsInterface {
|
|
4
|
+
type: 'div';
|
|
5
|
+
props: {
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
};
|
|
8
|
+
states: object;
|
|
9
|
+
elements: ['tabPanels'];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface TabPanelInterface {
|
|
13
|
+
type: 'div';
|
|
14
|
+
props: {
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
};
|
|
17
|
+
states: {
|
|
18
|
+
isSelected: boolean;
|
|
19
|
+
};
|
|
20
|
+
elements: ['tabPanel'];
|
|
21
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ActionOrLink } from '../utils/component';
|
|
2
2
|
import { TabsVariant } from './tabs.interface';
|
|
3
|
-
import { Dispatch, RefObject, SetStateAction } from 'react';
|
|
3
|
+
import { Dispatch, ReactNode, RefObject, SetStateAction } from 'react';
|
|
4
4
|
import { Icon } from '../icon';
|
|
5
5
|
|
|
6
6
|
export type TabProps = {
|
|
@@ -18,6 +18,7 @@ export type TabProps = {
|
|
|
18
18
|
) => void;
|
|
19
19
|
index?: number;
|
|
20
20
|
scrollable?: boolean;
|
|
21
|
+
children?: ReactNode;
|
|
21
22
|
};
|
|
22
23
|
|
|
23
24
|
type Elements = ['tab', 'stateLayer', 'icon', 'label', 'content', 'underline'];
|
package/src/lib/styles/index.ts
CHANGED
|
@@ -15,6 +15,7 @@ export * from './snackbar.style';
|
|
|
15
15
|
export * from './switch.style';
|
|
16
16
|
export * from './tab.style';
|
|
17
17
|
export * from './tabs.style';
|
|
18
|
+
export * from './tab-panels.style';
|
|
18
19
|
export * from './text-field.style';
|
|
19
20
|
export * from './tooltip.style';
|
|
20
21
|
export { useButtonStyle } from './button.style';
|