@cdx-ui/primitives 0.0.1-beta.121 → 0.0.1-beta.122
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/lib/commonjs/index.js +12 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/tabs/Tab.js +122 -0
- package/lib/commonjs/tabs/Tab.js.map +1 -0
- package/lib/commonjs/tabs/TabPanel.js +53 -0
- package/lib/commonjs/tabs/TabPanel.js.map +1 -0
- package/lib/commonjs/tabs/TabsList.js +58 -0
- package/lib/commonjs/tabs/TabsList.js.map +1 -0
- package/lib/commonjs/tabs/TabsRoot.js +79 -0
- package/lib/commonjs/tabs/TabsRoot.js.map +1 -0
- package/lib/commonjs/tabs/context.js +19 -0
- package/lib/commonjs/tabs/context.js.map +1 -0
- package/lib/commonjs/tabs/index.js +47 -0
- package/lib/commonjs/tabs/index.js.map +1 -0
- package/lib/commonjs/tabs/types.js +6 -0
- package/lib/commonjs/tabs/types.js.map +1 -0
- package/lib/commonjs/tabs/useTabsNavigation.js +84 -0
- package/lib/commonjs/tabs/useTabsNavigation.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/tabs/Tab.js +118 -0
- package/lib/module/tabs/Tab.js.map +1 -0
- package/lib/module/tabs/TabPanel.js +49 -0
- package/lib/module/tabs/TabPanel.js.map +1 -0
- package/lib/module/tabs/TabsList.js +54 -0
- package/lib/module/tabs/TabsList.js.map +1 -0
- package/lib/module/tabs/TabsRoot.js +75 -0
- package/lib/module/tabs/TabsRoot.js.map +1 -0
- package/lib/module/tabs/context.js +11 -0
- package/lib/module/tabs/context.js.map +1 -0
- package/lib/module/tabs/index.js +8 -0
- package/lib/module/tabs/index.js.map +1 -0
- package/lib/module/tabs/types.js +4 -0
- package/lib/module/tabs/types.js.map +1 -0
- package/lib/module/tabs/useTabsNavigation.js +81 -0
- package/lib/module/tabs/useTabsNavigation.js.map +1 -0
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/tabs/Tab.d.ts +8 -0
- package/lib/typescript/tabs/Tab.d.ts.map +1 -0
- package/lib/typescript/tabs/TabPanel.d.ts +9 -0
- package/lib/typescript/tabs/TabPanel.d.ts.map +1 -0
- package/lib/typescript/tabs/TabsList.d.ts +8 -0
- package/lib/typescript/tabs/TabsList.d.ts.map +1 -0
- package/lib/typescript/tabs/TabsRoot.d.ts +8 -0
- package/lib/typescript/tabs/TabsRoot.d.ts.map +1 -0
- package/lib/typescript/tabs/context.d.ts +14 -0
- package/lib/typescript/tabs/context.d.ts.map +1 -0
- package/lib/typescript/tabs/index.d.ts +7 -0
- package/lib/typescript/tabs/index.d.ts.map +1 -0
- package/lib/typescript/tabs/types.d.ts +68 -0
- package/lib/typescript/tabs/types.d.ts.map +1 -0
- package/lib/typescript/tabs/useTabsNavigation.d.ts +14 -0
- package/lib/typescript/tabs/useTabsNavigation.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/index.ts +1 -0
- package/src/tabs/Tab.tsx +158 -0
- package/src/tabs/TabPanel.tsx +52 -0
- package/src/tabs/TabsList.tsx +64 -0
- package/src/tabs/TabsRoot.tsx +115 -0
- package/src/tabs/context.tsx +10 -0
- package/src/tabs/index.ts +17 -0
- package/src/tabs/types.ts +73 -0
- package/src/tabs/useTabsNavigation.ts +97 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef, useCallback, useEffect, useMemo, useRef } from 'react';
|
|
4
|
+
import { Platform, Pressable } from 'react-native';
|
|
5
|
+
import { composeEventHandlers, mergeRefs } from '@cdx-ui/utils';
|
|
6
|
+
import { useFocus, useFocusRing } from '@react-native-aria/focus';
|
|
7
|
+
import { useHover, usePress } from '@react-native-aria/interactions';
|
|
8
|
+
import { Slot } from '../slot';
|
|
9
|
+
import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
|
|
10
|
+
import { TabProvider, useTabsContext } from './context';
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
export const Tab = /*#__PURE__*/forwardRef(({
|
|
13
|
+
asChild,
|
|
14
|
+
children,
|
|
15
|
+
value: tabValue,
|
|
16
|
+
disabled: disabledProp = false,
|
|
17
|
+
isHovered: isHoveredProp,
|
|
18
|
+
isActive: isActiveProp,
|
|
19
|
+
isFocused: isFocusedProp,
|
|
20
|
+
isFocusVisible: isFocusVisibleProp,
|
|
21
|
+
isDisabled: isDisabledProp,
|
|
22
|
+
...props
|
|
23
|
+
}, ref) => {
|
|
24
|
+
const {
|
|
25
|
+
value: selectedValue,
|
|
26
|
+
onValueChange,
|
|
27
|
+
disabled: contextDisabled,
|
|
28
|
+
listId,
|
|
29
|
+
registerTab,
|
|
30
|
+
unregisterTab,
|
|
31
|
+
focusedValue,
|
|
32
|
+
setFocusedValue
|
|
33
|
+
} = useTabsContext();
|
|
34
|
+
const disabled = contextDisabled || !!disabledProp || !!isDisabledProp;
|
|
35
|
+
const selected = selectedValue === tabValue;
|
|
36
|
+
const nodeRef = useRef(null);
|
|
37
|
+
const mergedRef = mergeRefs(ref, nodeRef);
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
registerTab(tabValue, {
|
|
40
|
+
disabled,
|
|
41
|
+
node: nodeRef.current
|
|
42
|
+
});
|
|
43
|
+
return () => unregisterTab(tabValue);
|
|
44
|
+
}, [tabValue, disabled, registerTab, unregisterTab]);
|
|
45
|
+
const {
|
|
46
|
+
isFocusVisible,
|
|
47
|
+
focusProps: focusRingProps
|
|
48
|
+
} = useFocusRing();
|
|
49
|
+
const {
|
|
50
|
+
pressProps,
|
|
51
|
+
isPressed: isActive
|
|
52
|
+
} = usePress({
|
|
53
|
+
isDisabled: disabled
|
|
54
|
+
});
|
|
55
|
+
const {
|
|
56
|
+
isFocused,
|
|
57
|
+
focusProps
|
|
58
|
+
} = useFocus();
|
|
59
|
+
const {
|
|
60
|
+
isHovered,
|
|
61
|
+
hoverProps
|
|
62
|
+
} = useHover();
|
|
63
|
+
const handlePress = useCallback(() => {
|
|
64
|
+
if (!disabled) {
|
|
65
|
+
setFocusedValue(tabValue);
|
|
66
|
+
onValueChange(tabValue);
|
|
67
|
+
}
|
|
68
|
+
}, [disabled, tabValue, onValueChange, setFocusedValue]);
|
|
69
|
+
const interactionState = useMemo(() => ({
|
|
70
|
+
hover: !!(isHoveredProp || isHovered),
|
|
71
|
+
focus: !!(isFocusedProp || isFocused),
|
|
72
|
+
active: !!(isActiveProp || isActive),
|
|
73
|
+
disabled: !!disabled,
|
|
74
|
+
focusVisible: !!(isFocusVisibleProp || isFocusVisible),
|
|
75
|
+
selected
|
|
76
|
+
}), [isHoveredProp, isHovered, isFocusedProp, isFocused, isActiveProp, isActive, disabled, isFocusVisibleProp, isFocusVisible, selected]);
|
|
77
|
+
const isRovingTabStop = (focusedValue ?? selectedValue) === tabValue;
|
|
78
|
+
const webProps = Platform.OS === 'web' ? {
|
|
79
|
+
tabIndex: isRovingTabStop ? 0 : -1
|
|
80
|
+
} : {};
|
|
81
|
+
const Comp = asChild ? Slot : Pressable;
|
|
82
|
+
return /*#__PURE__*/_jsx(TabProvider, {
|
|
83
|
+
value: interactionState,
|
|
84
|
+
children: /*#__PURE__*/_jsx(Comp, {
|
|
85
|
+
ref: mergedRef,
|
|
86
|
+
role: "tab",
|
|
87
|
+
id: `${listId}-tab-${tabValue}`,
|
|
88
|
+
"aria-selected": selected,
|
|
89
|
+
"aria-controls": `${listId}-panel-${tabValue}`,
|
|
90
|
+
"aria-disabled": disabled,
|
|
91
|
+
disabled: disabled,
|
|
92
|
+
accessibilityState: {
|
|
93
|
+
selected,
|
|
94
|
+
disabled
|
|
95
|
+
},
|
|
96
|
+
...webProps,
|
|
97
|
+
...props,
|
|
98
|
+
...mergeDataAttributes(props, dataAttributes({
|
|
99
|
+
hover: interactionState.hover,
|
|
100
|
+
focus: interactionState.focus,
|
|
101
|
+
active: interactionState.active,
|
|
102
|
+
disabled: interactionState.disabled,
|
|
103
|
+
focusVisible: interactionState.focusVisible,
|
|
104
|
+
state: selected ? 'active' : 'inactive'
|
|
105
|
+
})),
|
|
106
|
+
onPress: composeEventHandlers(props?.onPress, handlePress),
|
|
107
|
+
onPressIn: composeEventHandlers(props?.onPressIn, pressProps.onPressIn),
|
|
108
|
+
onPressOut: composeEventHandlers(props?.onPressOut, pressProps.onPressOut),
|
|
109
|
+
onHoverIn: composeEventHandlers(props?.onHoverIn, hoverProps.onHoverIn),
|
|
110
|
+
onHoverOut: composeEventHandlers(props?.onHoverOut, hoverProps.onHoverOut),
|
|
111
|
+
onFocus: composeEventHandlers(props?.onFocus, focusProps.onFocus, focusRingProps.onFocus),
|
|
112
|
+
onBlur: composeEventHandlers(props?.onBlur, focusProps.onBlur, focusRingProps.onBlur),
|
|
113
|
+
children: children
|
|
114
|
+
})
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
Tab.displayName = 'Tab';
|
|
118
|
+
//# sourceMappingURL=Tab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","useEffect","useMemo","useRef","Platform","Pressable","composeEventHandlers","mergeRefs","useFocus","useFocusRing","useHover","usePress","Slot","dataAttributes","mergeDataAttributes","TabProvider","useTabsContext","jsx","_jsx","Tab","asChild","children","value","tabValue","disabled","disabledProp","isHovered","isHoveredProp","isActive","isActiveProp","isFocused","isFocusedProp","isFocusVisible","isFocusVisibleProp","isDisabled","isDisabledProp","props","ref","selectedValue","onValueChange","contextDisabled","listId","registerTab","unregisterTab","focusedValue","setFocusedValue","selected","nodeRef","mergedRef","node","current","focusProps","focusRingProps","pressProps","isPressed","hoverProps","handlePress","interactionState","hover","focus","active","focusVisible","isRovingTabStop","webProps","OS","tabIndex","Comp","role","id","accessibilityState","state","onPress","onPressIn","onPressOut","onHoverIn","onHoverOut","onFocus","onBlur","displayName"],"sourceRoot":"../../../src","sources":["tabs/Tab.tsx"],"mappings":";;AAAA,SACEA,UAAU,EACVC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,MAAM,QAGD,OAAO;AACd,SAASC,QAAQ,EAAEC,SAAS,QAAQ,cAAc;AAClD,SAASC,oBAAoB,EAAEC,SAAS,QAAQ,eAAe;AAC/D,SAASC,QAAQ,EAAEC,YAAY,QAAQ,0BAA0B;AACjE,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,iCAAiC;AACpE,SAASC,IAAI,QAAQ,SAAS;AAC9B,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,yBAAyB;AAC7E,SAASC,WAAW,EAAEC,cAAc,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQxD,OAAO,MAAMC,GAAG,gBAAGpB,UAAU,CAC3B,CACE;EACEqB,OAAO;EACPC,QAAQ;EACRC,KAAK,EAAEC,QAAQ;EACfC,QAAQ,EAAEC,YAAY,GAAG,KAAK;EAC9BC,SAAS,EAAEC,aAAa;EACxBC,QAAQ,EAAEC,YAAY;EACtBC,SAAS,EAAEC,aAAa;EACxBC,cAAc,EAAEC,kBAAkB;EAClCC,UAAU,EAAEC,cAAc;EAC1B,GAAGC;AACL,CAAC,EACDC,GAAG,KACA;EACH,MAAM;IACJf,KAAK,EAAEgB,aAAa;IACpBC,aAAa;IACbf,QAAQ,EAAEgB,eAAe;IACzBC,MAAM;IACNC,WAAW;IACXC,aAAa;IACbC,YAAY;IACZC;EACF,CAAC,GAAG7B,cAAc,CAAC,CAAC;EAEpB,MAAMQ,QAAQ,GAAGgB,eAAe,IAAI,CAAC,CAACf,YAAY,IAAI,CAAC,CAACU,cAAc;EACtE,MAAMW,QAAQ,GAAGR,aAAa,KAAKf,QAAQ;EAE3C,MAAMwB,OAAO,GAAG5C,MAAM,CAAwC,IAAI,CAAC;EACnE,MAAM6C,SAAS,GAAGzC,SAAS,CAAC8B,GAAG,EAAEU,OAAO,CAAC;EAEzC9C,SAAS,CAAC,MAAM;IACdyC,WAAW,CAACnB,QAAQ,EAAE;MACpBC,QAAQ;MACRyB,IAAI,EAAEF,OAAO,CAACG;IAChB,CAAC,CAAC;IACF,OAAO,MAAMP,aAAa,CAACpB,QAAQ,CAAC;EACtC,CAAC,EAAE,CAACA,QAAQ,EAAEC,QAAQ,EAAEkB,WAAW,EAAEC,aAAa,CAAC,CAAC;EAEpD,MAAM;IAAEX,cAAc;IAAEmB,UAAU,EAAEC;EAAe,CAAC,GAAG3C,YAAY,CAAC,CAMnE;EACD,MAAM;IAAE4C,UAAU;IAAEC,SAAS,EAAE1B;EAAS,CAAC,GAAGjB,QAAQ,CAAC;IAAEuB,UAAU,EAAEV;EAAS,CAAC,CAAC;EAC9E,MAAM;IAAEM,SAAS;IAAEqB;EAAW,CAAC,GAAG3C,QAAQ,CAAC,CAAC;EAC5C,MAAM;IAAEkB,SAAS;IAAE6B;EAAW,CAAC,GAAG7C,QAAQ,CAAC,CAAC;EAE5C,MAAM8C,WAAW,GAAGxD,WAAW,CAAC,MAAM;IACpC,IAAI,CAACwB,QAAQ,EAAE;MACbqB,eAAe,CAACtB,QAAQ,CAAC;MACzBgB,aAAa,CAAChB,QAAQ,CAAC;IACzB;EACF,CAAC,EAAE,CAACC,QAAQ,EAAED,QAAQ,EAAEgB,aAAa,EAAEM,eAAe,CAAC,CAAC;EAExD,MAAMY,gBAAgB,GAAGvD,OAAO,CAC9B,OAAO;IACLwD,KAAK,EAAE,CAAC,EAAE/B,aAAa,IAAID,SAAS,CAAC;IACrCiC,KAAK,EAAE,CAAC,EAAE5B,aAAa,IAAID,SAAS,CAAC;IACrC8B,MAAM,EAAE,CAAC,EAAE/B,YAAY,IAAID,QAAQ,CAAC;IACpCJ,QAAQ,EAAE,CAAC,CAACA,QAAQ;IACpBqC,YAAY,EAAE,CAAC,EAAE5B,kBAAkB,IAAID,cAAc,CAAC;IACtDc;EACF,CAAC,CAAC,EACF,CACEnB,aAAa,EACbD,SAAS,EACTK,aAAa,EACbD,SAAS,EACTD,YAAY,EACZD,QAAQ,EACRJ,QAAQ,EACRS,kBAAkB,EAClBD,cAAc,EACdc,QAAQ,CAEZ,CAAC;EAED,MAAMgB,eAAe,GAAG,CAAClB,YAAY,IAAIN,aAAa,MAAMf,QAAQ;EACpE,MAAMwC,QAAQ,GAAG3D,QAAQ,CAAC4D,EAAE,KAAK,KAAK,GAAG;IAAEC,QAAQ,EAAEH,eAAe,GAAG,CAAC,GAAG,CAAC;EAAE,CAAC,GAAG,CAAC,CAAC;EAEpF,MAAMI,IAAI,GAAG9C,OAAO,GAAGR,IAAI,GAAGP,SAAS;EAEvC,oBACEa,IAAA,CAACH,WAAW;IAACO,KAAK,EAAEmC,gBAAiB;IAAApC,QAAA,eACnCH,IAAA,CAACgD,IAAI;MACH7B,GAAG,EAAEW,SAAU;MACfmB,IAAI,EAAC,KAAK;MACVC,EAAE,EAAE,GAAG3B,MAAM,QAAQlB,QAAQ,EAAG;MAChC,iBAAeuB,QAAS;MACxB,iBAAe,GAAGL,MAAM,UAAUlB,QAAQ,EAAG;MAC7C,iBAAeC,QAAS;MACxBA,QAAQ,EAAEA,QAAS;MACnB6C,kBAAkB,EAAE;QAAEvB,QAAQ;QAAEtB;MAAS,CAAE;MAAA,GACvCuC,QAAQ;MAAA,GACR3B,KAAK;MAAA,GACLtB,mBAAmB,CACrBsB,KAAK,EACLvB,cAAc,CAAC;QACb6C,KAAK,EAAED,gBAAgB,CAACC,KAAK;QAC7BC,KAAK,EAAEF,gBAAgB,CAACE,KAAK;QAC7BC,MAAM,EAAEH,gBAAgB,CAACG,MAAM;QAC/BpC,QAAQ,EAAEiC,gBAAgB,CAACjC,QAAQ;QACnCqC,YAAY,EAAEJ,gBAAgB,CAACI,YAAY;QAC3CS,KAAK,EAAExB,QAAQ,GAAG,QAAQ,GAAG;MAC/B,CAAC,CACH,CAAC;MACDyB,OAAO,EAAEjE,oBAAoB,CAAC8B,KAAK,EAAEmC,OAAO,EAAEf,WAAW,CAAE;MAC3DgB,SAAS,EAAElE,oBAAoB,CAAC8B,KAAK,EAAEoC,SAAS,EAAEnB,UAAU,CAACmB,SAAS,CAAE;MACxEC,UAAU,EAAEnE,oBAAoB,CAAC8B,KAAK,EAAEqC,UAAU,EAAEpB,UAAU,CAACoB,UAAU,CAAE;MAC3EC,SAAS,EAAEpE,oBAAoB,CAAC8B,KAAK,EAAEsC,SAAS,EAAEnB,UAAU,CAACmB,SAAS,CAAE;MACxEC,UAAU,EAAErE,oBAAoB,CAAC8B,KAAK,EAAEuC,UAAU,EAAEpB,UAAU,CAACoB,UAAU,CAAE;MAC3EC,OAAO,EAAEtE,oBAAoB,CAC3B8B,KAAK,EAAEwC,OAAO,EACdzB,UAAU,CAACyB,OAAO,EAClBxB,cAAc,CAACwB,OACjB,CAAE;MACFC,MAAM,EAAEvE,oBAAoB,CAC1B8B,KAAK,EAAEyC,MAAM,EACb1B,UAAU,CAAC0B,MAAM,EACjBzB,cAAc,CAACyB,MACjB,CAAE;MAAAxD,QAAA,EAEDA;IAAQ,CACL;EAAC,CACI,CAAC;AAElB,CACF,CAAC;AAEDF,GAAG,CAAC2D,WAAW,GAAG,KAAK","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { View } from 'react-native';
|
|
5
|
+
import { Slot } from '../slot';
|
|
6
|
+
import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
|
|
7
|
+
import { useTabsContext } from './context';
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
export const TabPanel = /*#__PURE__*/forwardRef(({
|
|
10
|
+
asChild,
|
|
11
|
+
children,
|
|
12
|
+
value: panelValue,
|
|
13
|
+
unmountWhenInactive = false,
|
|
14
|
+
style,
|
|
15
|
+
...props
|
|
16
|
+
}, ref) => {
|
|
17
|
+
const {
|
|
18
|
+
value: selectedValue,
|
|
19
|
+
listId
|
|
20
|
+
} = useTabsContext();
|
|
21
|
+
const selected = selectedValue === panelValue;
|
|
22
|
+
if (!selected && unmountWhenInactive) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
const Comp = asChild ? Slot : View;
|
|
26
|
+
const hideFromAccessibility = selected ? null : {
|
|
27
|
+
accessibilityElementsHidden: true,
|
|
28
|
+
importantForAccessibility: 'no-hide-descendants',
|
|
29
|
+
'aria-hidden': true
|
|
30
|
+
};
|
|
31
|
+
return /*#__PURE__*/_jsx(Comp, {
|
|
32
|
+
ref: ref,
|
|
33
|
+
role: "tabpanel",
|
|
34
|
+
id: `${listId}-panel-${panelValue}`,
|
|
35
|
+
"aria-labelledby": `${listId}-tab-${panelValue}`,
|
|
36
|
+
style: [!selected ? {
|
|
37
|
+
display: 'none'
|
|
38
|
+
} : null, style],
|
|
39
|
+
...props,
|
|
40
|
+
...hideFromAccessibility,
|
|
41
|
+
...mergeDataAttributes(props, dataAttributes({
|
|
42
|
+
slot: 'tabs-panel',
|
|
43
|
+
state: selected ? 'active' : 'inactive'
|
|
44
|
+
})),
|
|
45
|
+
children: children
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
TabPanel.displayName = 'TabPanel';
|
|
49
|
+
//# sourceMappingURL=TabPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","View","Slot","dataAttributes","mergeDataAttributes","useTabsContext","jsx","_jsx","TabPanel","asChild","children","value","panelValue","unmountWhenInactive","style","props","ref","selectedValue","listId","selected","Comp","hideFromAccessibility","accessibilityElementsHidden","importantForAccessibility","role","id","display","slot","state","displayName"],"sourceRoot":"../../../src","sources":["tabs/TabPanel.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAA2C,OAAO;AACrE,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,IAAI,QAAQ,SAAS;AAC9B,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,yBAAyB;AAC7E,SAASC,cAAc,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQ3C,OAAO,MAAMC,QAAQ,gBAAGR,UAAU,CAChC,CAAC;EAAES,OAAO;EAAEC,QAAQ;EAAEC,KAAK,EAAEC,UAAU;EAAEC,mBAAmB,GAAG,KAAK;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EAC/F,MAAM;IAAEL,KAAK,EAAEM,aAAa;IAAEC;EAAO,CAAC,GAAGb,cAAc,CAAC,CAAC;EACzD,MAAMc,QAAQ,GAAGF,aAAa,KAAKL,UAAU;EAE7C,IAAI,CAACO,QAAQ,IAAIN,mBAAmB,EAAE;IACpC,OAAO,IAAI;EACb;EAEA,MAAMO,IAAI,GAAGX,OAAO,GAAGP,IAAI,GAAGD,IAAI;EAElC,MAAMoB,qBAAqB,GAAGF,QAAQ,GAClC,IAAI,GACJ;IACEG,2BAA2B,EAAE,IAAa;IAC1CC,yBAAyB,EAAE,qBAA8B;IACzD,aAAa,EAAE;EACjB,CAAC;EAEL,oBACEhB,IAAA,CAACa,IAAI;IACHJ,GAAG,EAAEA,GAAI;IACTQ,IAAI,EAAC,UAAU;IACfC,EAAE,EAAE,GAAGP,MAAM,UAAUN,UAAU,EAAG;IACpC,mBAAiB,GAAGM,MAAM,QAAQN,UAAU,EAAG;IAC/CE,KAAK,EAAE,CAAC,CAACK,QAAQ,GAAG;MAAEO,OAAO,EAAE;IAAO,CAAC,GAAG,IAAI,EAAEZ,KAAK,CAAE;IAAA,GACnDC,KAAK;IAAA,GACLM,qBAAqB;IAAA,GACrBjB,mBAAmB,CACrBW,KAAK,EACLZ,cAAc,CAAC;MAAEwB,IAAI,EAAE,YAAY;MAAEC,KAAK,EAAET,QAAQ,GAAG,QAAQ,GAAG;IAAW,CAAC,CAChF,CAAC;IAAAT,QAAA,EAEAA;EAAQ,CACL,CAAC;AAEX,CACF,CAAC;AAEDF,QAAQ,CAACqB,WAAW,GAAG,UAAU","ignoreList":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { Platform, View } from 'react-native';
|
|
5
|
+
import { composeEventHandlers } from '@cdx-ui/utils';
|
|
6
|
+
import { Slot } from '../slot';
|
|
7
|
+
import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
|
|
8
|
+
import { useTabsContext } from './context';
|
|
9
|
+
import { useTabsNavigation } from './useTabsNavigation';
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
export const TabsList = /*#__PURE__*/forwardRef(({
|
|
12
|
+
asChild,
|
|
13
|
+
children,
|
|
14
|
+
...props
|
|
15
|
+
}, ref) => {
|
|
16
|
+
const {
|
|
17
|
+
value,
|
|
18
|
+
onValueChange,
|
|
19
|
+
activationMode,
|
|
20
|
+
orientation,
|
|
21
|
+
getTabs,
|
|
22
|
+
focusedValue,
|
|
23
|
+
setFocusedValue
|
|
24
|
+
} = useTabsContext();
|
|
25
|
+
const {
|
|
26
|
+
handleKeyDown
|
|
27
|
+
} = useTabsNavigation({
|
|
28
|
+
getTabs,
|
|
29
|
+
focusedValue,
|
|
30
|
+
setFocusedValue,
|
|
31
|
+
value,
|
|
32
|
+
onValueChange,
|
|
33
|
+
activationMode,
|
|
34
|
+
orientation
|
|
35
|
+
});
|
|
36
|
+
const webProps = Platform.OS === 'web' ? {
|
|
37
|
+
onKeyDown: composeEventHandlers(props.onKeyDown, handleKeyDown)
|
|
38
|
+
} : {};
|
|
39
|
+
const Comp = asChild ? Slot : View;
|
|
40
|
+
return /*#__PURE__*/_jsx(Comp, {
|
|
41
|
+
ref: ref,
|
|
42
|
+
role: "tablist",
|
|
43
|
+
"aria-orientation": orientation,
|
|
44
|
+
...props,
|
|
45
|
+
...webProps,
|
|
46
|
+
...mergeDataAttributes(props, dataAttributes({
|
|
47
|
+
slot: 'tabs-list',
|
|
48
|
+
orientation
|
|
49
|
+
})),
|
|
50
|
+
children: children
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
TabsList.displayName = 'TabsList';
|
|
54
|
+
//# sourceMappingURL=TabsList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","Platform","View","composeEventHandlers","Slot","dataAttributes","mergeDataAttributes","useTabsContext","useTabsNavigation","jsx","_jsx","TabsList","asChild","children","props","ref","value","onValueChange","activationMode","orientation","getTabs","focusedValue","setFocusedValue","handleKeyDown","webProps","OS","onKeyDown","Comp","role","slot","displayName"],"sourceRoot":"../../../src","sources":["tabs/TabsList.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAA2B,OAAO;AACrD,SAASC,QAAQ,EAAEC,IAAI,QAAQ,cAAc;AAC7C,SAASC,oBAAoB,QAAQ,eAAe;AACpD,SAASC,IAAI,QAAQ,SAAS;AAC9B,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,yBAAyB;AAC7E,SAASC,cAAc,QAAQ,WAAW;AAE1C,SAASC,iBAAiB,QAAQ,qBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOxD,OAAO,MAAMC,QAAQ,gBAAGX,UAAU,CAChC,CAAC;EAAEY,OAAO;EAAEC,QAAQ;EAAE,GAAGC;AAAM,CAAC,EAAEC,GAAG,KAAK;EACxC,MAAM;IACJC,KAAK;IACLC,aAAa;IACbC,cAAc;IACdC,WAAW;IACXC,OAAO;IACPC,YAAY;IACZC;EACF,CAAC,GAAGf,cAAc,CAAC,CAAC;EAEpB,MAAM;IAAEgB;EAAc,CAAC,GAAGf,iBAAiB,CAAC;IAC1CY,OAAO;IACPC,YAAY;IACZC,eAAe;IACfN,KAAK;IACLC,aAAa;IACbC,cAAc;IACdC;EACF,CAAC,CAAC;EAEF,MAAMK,QAAQ,GACZvB,QAAQ,CAACwB,EAAE,KAAK,KAAK,GACjB;IACEC,SAAS,EAAEvB,oBAAoB,CAC5BW,KAAK,CAAgDY,SAAS,EAC/DH,aACF;EACF,CAAC,GACD,CAAC,CAAC;EAER,MAAMI,IAAI,GAAGf,OAAO,GAAGR,IAAI,GAAGF,IAAI;EAElC,oBACEQ,IAAA,CAACiB,IAAI;IACHZ,GAAG,EAAEA,GAAI;IACTa,IAAI,EAAC,SAAS;IACd,oBAAkBT,WAAY;IAAA,GAC1BL,KAAK;IAAA,GACLU,QAAQ;IAAA,GACRlB,mBAAmB,CAACQ,KAAK,EAAET,cAAc,CAAC;MAAEwB,IAAI,EAAE,WAAW;MAAEV;IAAY,CAAC,CAAC,CAAC;IAAAN,QAAA,EAEjFA;EAAQ,CACL,CAAC;AAEX,CACF,CAAC;AAEDF,QAAQ,CAACmB,WAAW,GAAG,UAAU","ignoreList":[]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
|
|
4
|
+
import { View } from 'react-native';
|
|
5
|
+
import { useControllableState } from '@cdx-ui/utils';
|
|
6
|
+
import { Slot } from '../slot';
|
|
7
|
+
import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
|
|
8
|
+
import { TabsProvider } from './context';
|
|
9
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
export const TabsRoot = /*#__PURE__*/forwardRef(({
|
|
11
|
+
asChild,
|
|
12
|
+
children,
|
|
13
|
+
value: valueProp,
|
|
14
|
+
defaultValue,
|
|
15
|
+
onValueChange,
|
|
16
|
+
activationMode = 'automatic',
|
|
17
|
+
orientation = 'horizontal',
|
|
18
|
+
disabled = false,
|
|
19
|
+
...props
|
|
20
|
+
}, ref) => {
|
|
21
|
+
const [value, setValue] = useControllableState({
|
|
22
|
+
prop: valueProp,
|
|
23
|
+
defaultProp: defaultValue,
|
|
24
|
+
onChange: newValue => {
|
|
25
|
+
if (newValue !== undefined) {
|
|
26
|
+
onValueChange?.(newValue);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
const [focusedValue, setFocusedValue] = useState(undefined);
|
|
31
|
+
|
|
32
|
+
// When the parent updates the controlled selection, drop stale roving-focus state so
|
|
33
|
+
// tabIndex and arrow-key navigation follow `value` instead of a previously focused tab.
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
setFocusedValue(prev => prev !== undefined && prev !== value ? undefined : prev);
|
|
36
|
+
}, [value]);
|
|
37
|
+
const tabsRef = useRef(new Map());
|
|
38
|
+
const registerTab = useCallback((tabValue, entry) => {
|
|
39
|
+
tabsRef.current.set(tabValue, entry);
|
|
40
|
+
}, []);
|
|
41
|
+
const unregisterTab = useCallback(tabValue => {
|
|
42
|
+
tabsRef.current.delete(tabValue);
|
|
43
|
+
}, []);
|
|
44
|
+
const getTabs = useCallback(() => Array.from(tabsRef.current.entries()), []);
|
|
45
|
+
const reactId = useId();
|
|
46
|
+
const listId = `tabs-${reactId}`;
|
|
47
|
+
const contextValue = useMemo(() => ({
|
|
48
|
+
value,
|
|
49
|
+
onValueChange: setValue,
|
|
50
|
+
disabled,
|
|
51
|
+
activationMode,
|
|
52
|
+
orientation,
|
|
53
|
+
listId,
|
|
54
|
+
registerTab,
|
|
55
|
+
unregisterTab,
|
|
56
|
+
getTabs,
|
|
57
|
+
focusedValue,
|
|
58
|
+
setFocusedValue
|
|
59
|
+
}), [value, setValue, disabled, activationMode, orientation, listId, registerTab, unregisterTab, getTabs, focusedValue]);
|
|
60
|
+
const Comp = asChild ? Slot : View;
|
|
61
|
+
return /*#__PURE__*/_jsx(TabsProvider, {
|
|
62
|
+
value: contextValue,
|
|
63
|
+
children: /*#__PURE__*/_jsx(Comp, {
|
|
64
|
+
ref: ref,
|
|
65
|
+
...props,
|
|
66
|
+
...mergeDataAttributes(props, dataAttributes({
|
|
67
|
+
disabled,
|
|
68
|
+
orientation
|
|
69
|
+
})),
|
|
70
|
+
children: children
|
|
71
|
+
})
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
TabsRoot.displayName = 'TabsRoot';
|
|
75
|
+
//# sourceMappingURL=TabsRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","useEffect","useId","useMemo","useRef","useState","View","useControllableState","Slot","dataAttributes","mergeDataAttributes","TabsProvider","jsx","_jsx","TabsRoot","asChild","children","value","valueProp","defaultValue","onValueChange","activationMode","orientation","disabled","props","ref","setValue","prop","defaultProp","onChange","newValue","undefined","focusedValue","setFocusedValue","prev","tabsRef","Map","registerTab","tabValue","entry","current","set","unregisterTab","delete","getTabs","Array","from","entries","reactId","listId","contextValue","Comp","displayName"],"sourceRoot":"../../../src","sources":["tabs/TabsRoot.tsx"],"mappings":";;AAAA,SACEA,UAAU,EACVC,WAAW,EACXC,SAAS,EACTC,KAAK,EACLC,OAAO,EACPC,MAAM,EACNC,QAAQ,QAEH,OAAO;AACd,SAASC,IAAI,QAAwB,cAAc;AACnD,SAASC,oBAAoB,QAAQ,eAAe;AACpD,SAASC,IAAI,QAAQ,SAAS;AAC9B,SAASC,cAAc,EAAEC,mBAAmB,QAAQ,yBAAyB;AAC7E,SAASC,YAAY,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQzC,OAAO,MAAMC,QAAQ,gBAAGf,UAAU,CAChC,CACE;EACEgB,OAAO;EACPC,QAAQ;EACRC,KAAK,EAAEC,SAAS;EAChBC,YAAY;EACZC,aAAa;EACbC,cAAc,GAAG,WAAW;EAC5BC,WAAW,GAAG,YAAY;EAC1BC,QAAQ,GAAG,KAAK;EAChB,GAAGC;AACL,CAAC,EACDC,GAAG,KACA;EACH,MAAM,CAACR,KAAK,EAAES,QAAQ,CAAC,GAAGnB,oBAAoB,CAAqB;IACjEoB,IAAI,EAAET,SAAS;IACfU,WAAW,EAAET,YAAY;IACzBU,QAAQ,EAAGC,QAAQ,IAAK;MACtB,IAAIA,QAAQ,KAAKC,SAAS,EAAE;QAC1BX,aAAa,GAAGU,QAAQ,CAAC;MAC3B;IACF;EACF,CAAC,CAAC;EAEF,MAAM,CAACE,YAAY,EAAEC,eAAe,CAAC,GAAG5B,QAAQ,CAAqB0B,SAAS,CAAC;;EAE/E;EACA;EACA9B,SAAS,CAAC,MAAM;IACdgC,eAAe,CAAEC,IAAI,IAAMA,IAAI,KAAKH,SAAS,IAAIG,IAAI,KAAKjB,KAAK,GAAGc,SAAS,GAAGG,IAAK,CAAC;EACtF,CAAC,EAAE,CAACjB,KAAK,CAAC,CAAC;EAEX,MAAMkB,OAAO,GAAG/B,MAAM,CAA6B,IAAIgC,GAAG,CAAC,CAAC,CAAC;EAE7D,MAAMC,WAAW,GAAGrC,WAAW,CAAC,CAACsC,QAAgB,EAAEC,KAAoB,KAAK;IAC1EJ,OAAO,CAACK,OAAO,CAACC,GAAG,CAACH,QAAQ,EAAEC,KAAK,CAAC;EACtC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,aAAa,GAAG1C,WAAW,CAAEsC,QAAgB,IAAK;IACtDH,OAAO,CAACK,OAAO,CAACG,MAAM,CAACL,QAAQ,CAAC;EAClC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMM,OAAO,GAAG5C,WAAW,CAAC,MAAM6C,KAAK,CAACC,IAAI,CAACX,OAAO,CAACK,OAAO,CAACO,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;EAE5E,MAAMC,OAAO,GAAG9C,KAAK,CAAC,CAAC;EACvB,MAAM+C,MAAM,GAAG,QAAQD,OAAO,EAAE;EAEhC,MAAME,YAAY,GAAG/C,OAAO,CAC1B,OAAO;IACLc,KAAK;IACLG,aAAa,EAAEM,QAAQ;IACvBH,QAAQ;IACRF,cAAc;IACdC,WAAW;IACX2B,MAAM;IACNZ,WAAW;IACXK,aAAa;IACbE,OAAO;IACPZ,YAAY;IACZC;EACF,CAAC,CAAC,EACF,CACEhB,KAAK,EACLS,QAAQ,EACRH,QAAQ,EACRF,cAAc,EACdC,WAAW,EACX2B,MAAM,EACNZ,WAAW,EACXK,aAAa,EACbE,OAAO,EACPZ,YAAY,CAEhB,CAAC;EAED,MAAMmB,IAAI,GAAGpC,OAAO,GAAGP,IAAI,GAAGF,IAAI;EAElC,oBACEO,IAAA,CAACF,YAAY;IAACM,KAAK,EAAEiC,YAAa;IAAAlC,QAAA,eAChCH,IAAA,CAACsC,IAAI;MACH1B,GAAG,EAAEA,GAAI;MAAA,GACLD,KAAK;MAAA,GACLd,mBAAmB,CAACc,KAAK,EAAEf,cAAc,CAAC;QAAEc,QAAQ;QAAED;MAAY,CAAC,CAAC,CAAC;MAAAN,QAAA,EAExEA;IAAQ,CACL;EAAC,CACK,CAAC;AAEnB,CACF,CAAC;AAEDF,QAAQ,CAACsC,WAAW,GAAG,UAAU","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { createContext } from '@cdx-ui/utils';
|
|
4
|
+
export const [TabsProvider, useTabsContext] = createContext('TabsContext');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Propagates a tab's interaction and selection state (hover, focus, active, selected, etc.)
|
|
8
|
+
* to child slots like a styled `Tabs.Tab`'s label/icon.
|
|
9
|
+
*/
|
|
10
|
+
export const [TabProvider, useTabContext] = createContext('TabContext');
|
|
11
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createContext","TabsProvider","useTabsContext","TabProvider","useTabContext"],"sourceRoot":"../../../src","sources":["tabs/context.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,eAAe;AAG7C,OAAO,MAAM,CAACC,YAAY,EAAEC,cAAc,CAAC,GAAGF,aAAa,CAAmB,aAAa,CAAC;;AAE5F;AACA;AACA;AACA;AACA,OAAO,MAAM,CAACG,WAAW,EAAEC,aAAa,CAAC,GAAGJ,aAAa,CAAsB,YAAY,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export { useTabContext, useTabsContext } from './context';
|
|
4
|
+
export { TabsRoot } from './TabsRoot';
|
|
5
|
+
export { TabsList } from './TabsList';
|
|
6
|
+
export { Tab } from './Tab';
|
|
7
|
+
export { TabPanel } from './TabPanel';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useTabContext","useTabsContext","TabsRoot","TabsList","Tab","TabPanel"],"sourceRoot":"../../../src","sources":["tabs/index.ts"],"mappings":";;AAYA,SAASA,aAAa,EAAEC,cAAc,QAAQ,WAAW;AACzD,SAASC,QAAQ,QAA4B,YAAY;AACzD,SAASC,QAAQ,QAA4B,YAAY;AACzD,SAASC,GAAG,QAAuB,OAAO;AAC1C,SAASC,QAAQ,QAA4B,YAAY","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["tabs/types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useRef } from 'react';
|
|
4
|
+
|
|
5
|
+
// Web-only — native platforms rely on OS-managed sequential focus (VoiceOver/TalkBack),
|
|
6
|
+
// same restriction documented on `useListboxNavigation` in `../select/`.
|
|
7
|
+
|
|
8
|
+
export function useTabsNavigation({
|
|
9
|
+
getTabs,
|
|
10
|
+
focusedValue,
|
|
11
|
+
setFocusedValue,
|
|
12
|
+
value,
|
|
13
|
+
onValueChange,
|
|
14
|
+
activationMode,
|
|
15
|
+
orientation
|
|
16
|
+
}) {
|
|
17
|
+
const onValueChangeRef = useRef(onValueChange);
|
|
18
|
+
onValueChangeRef.current = onValueChange;
|
|
19
|
+
const getEnabledTabs = useCallback(() => getTabs().filter(([, entry]) => !entry.disabled), [getTabs]);
|
|
20
|
+
const moveFocus = useCallback(([targetValue, targetEntry]) => {
|
|
21
|
+
setFocusedValue(targetValue);
|
|
22
|
+
targetEntry.node?.focus?.();
|
|
23
|
+
if (activationMode === 'automatic') {
|
|
24
|
+
onValueChangeRef.current(targetValue);
|
|
25
|
+
}
|
|
26
|
+
}, [setFocusedValue, activationMode]);
|
|
27
|
+
const handleKeyDown = useCallback(e => {
|
|
28
|
+
const enabledTabs = getEnabledTabs();
|
|
29
|
+
if (enabledTabs.length === 0) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const currentValue = focusedValue ?? value;
|
|
33
|
+
const idx = enabledTabs.findIndex(([tabValue]) => tabValue === currentValue);
|
|
34
|
+
|
|
35
|
+
// ARIA APG tabs pattern: horizontal lists respond to Left/Right, vertical lists to Up/Down.
|
|
36
|
+
const nextKey = orientation === 'vertical' ? 'ArrowDown' : 'ArrowRight';
|
|
37
|
+
const prevKey = orientation === 'vertical' ? 'ArrowUp' : 'ArrowLeft';
|
|
38
|
+
switch (e.key) {
|
|
39
|
+
case nextKey:
|
|
40
|
+
{
|
|
41
|
+
e.preventDefault();
|
|
42
|
+
moveFocus(enabledTabs[idx < enabledTabs.length - 1 ? idx + 1 : 0]);
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
case prevKey:
|
|
46
|
+
{
|
|
47
|
+
e.preventDefault();
|
|
48
|
+
moveFocus(enabledTabs[idx > 0 ? idx - 1 : enabledTabs.length - 1]);
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
case 'Home':
|
|
52
|
+
{
|
|
53
|
+
e.preventDefault();
|
|
54
|
+
moveFocus(enabledTabs[0]);
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
case 'End':
|
|
58
|
+
{
|
|
59
|
+
e.preventDefault();
|
|
60
|
+
const last = enabledTabs.at(-1);
|
|
61
|
+
if (last) {
|
|
62
|
+
moveFocus(last);
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
case 'Enter':
|
|
67
|
+
case ' ':
|
|
68
|
+
{
|
|
69
|
+
if (activationMode === 'manual' && focusedValue) {
|
|
70
|
+
e.preventDefault();
|
|
71
|
+
onValueChangeRef.current(focusedValue);
|
|
72
|
+
}
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}, [focusedValue, value, getEnabledTabs, moveFocus, activationMode, orientation]);
|
|
77
|
+
return {
|
|
78
|
+
handleKeyDown
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=useTabsNavigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useRef","useTabsNavigation","getTabs","focusedValue","setFocusedValue","value","onValueChange","activationMode","orientation","onValueChangeRef","current","getEnabledTabs","filter","entry","disabled","moveFocus","targetValue","targetEntry","node","focus","handleKeyDown","e","enabledTabs","length","currentValue","idx","findIndex","tabValue","nextKey","prevKey","key","preventDefault","last","at"],"sourceRoot":"../../../src","sources":["tabs/useTabsNavigation.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,6 +14,7 @@ export { type EdgeInsets, OverlayInsetsProvider } from './overlay';
|
|
|
14
14
|
export { useAnchorPosition, type AnchorLayout } from './overlay';
|
|
15
15
|
export * from './select';
|
|
16
16
|
export * from './switch';
|
|
17
|
+
export * from './tabs';
|
|
17
18
|
export * from './tile';
|
|
18
19
|
export * from './toast';
|
|
19
20
|
export * from './portal';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,KAAK,UAAU,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AACjE,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,KAAK,UAAU,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AACjE,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { ITabProps } from './types';
|
|
3
|
+
export interface TabProps extends Omit<ITabProps, 'children'> {
|
|
4
|
+
asChild?: boolean;
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export declare const Tab: import("react").ForwardRefExoticComponent<TabProps & import("react").RefAttributes<import("react-native").View>>;
|
|
8
|
+
//# sourceMappingURL=Tab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tab.d.ts","sourceRoot":"","sources":["../../../src/tabs/Tab.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAQf,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,eAAO,MAAM,GAAG,kHAoIf,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
import type { ITabPanelProps } from './types';
|
|
4
|
+
export interface TabPanelProps extends Omit<ITabPanelProps, 'children'> {
|
|
5
|
+
asChild?: boolean;
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare const TabPanel: import("react").ForwardRefExoticComponent<TabPanelProps & import("react").RefAttributes<View>>;
|
|
9
|
+
//# sourceMappingURL=TabPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabPanel.d.ts","sourceRoot":"","sources":["../../../src/tabs/TabPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAIpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,eAAO,MAAM,QAAQ,gGAqCpB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { View } from 'react-native';
|
|
2
|
+
import type { ITabsListProps } from './types';
|
|
3
|
+
export interface TabsListProps extends ITabsListProps {
|
|
4
|
+
asChild?: boolean;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const TabsList: import("react").ForwardRefExoticComponent<TabsListProps & import("react").RefAttributes<View>>;
|
|
8
|
+
//# sourceMappingURL=TabsList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsList.d.ts","sourceRoot":"","sources":["../../../src/tabs/TabsList.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,IAAI,EAAE,MAAM,cAAc,CAAC;AAK9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,QAAQ,gGA+CpB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { View, type ViewProps } from 'react-native';
|
|
2
|
+
import type { ITabsProps } from './types';
|
|
3
|
+
export interface TabsRootProps extends ITabsProps, Omit<ViewProps, 'children'> {
|
|
4
|
+
asChild?: boolean;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const TabsRoot: import("react").ForwardRefExoticComponent<TabsRootProps & import("react").RefAttributes<View>>;
|
|
8
|
+
//# sourceMappingURL=TabsRoot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsRoot.d.ts","sourceRoot":"","sources":["../../../src/tabs/TabsRoot.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAKpD,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,SAAS,CAAC;AAEzD,MAAM,WAAW,aAAc,SAAQ,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,QAAQ,gGA0FpB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TabInteractionState, TabsContextValue } from './types';
|
|
2
|
+
export declare const TabsProvider: import("react").FunctionComponent<{
|
|
3
|
+
children: import("react").ReactNode;
|
|
4
|
+
value: TabsContextValue;
|
|
5
|
+
}>, useTabsContext: () => TabsContextValue;
|
|
6
|
+
/**
|
|
7
|
+
* Propagates a tab's interaction and selection state (hover, focus, active, selected, etc.)
|
|
8
|
+
* to child slots like a styled `Tabs.Tab`'s label/icon.
|
|
9
|
+
*/
|
|
10
|
+
export declare const TabProvider: import("react").FunctionComponent<{
|
|
11
|
+
children: import("react").ReactNode;
|
|
12
|
+
value: TabInteractionState;
|
|
13
|
+
}>, useTabContext: () => TabInteractionState;
|
|
14
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/tabs/context.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAErE,eAAO,MAAO,YAAY;;;IAAE,cAAc,wBAAkD,CAAC;AAE7F;;;GAGG;AACH,eAAO,MAAO,WAAW;;;IAAE,aAAa,2BAAoD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { ITabPanelProps, ITabProps, ITabsListProps, ITabsProps, RegisteredTab, TabInteractionState, TabsActivationMode, TabsContextValue, TabsOrientation, } from './types';
|
|
2
|
+
export { useTabContext, useTabsContext } from './context';
|
|
3
|
+
export { TabsRoot, type TabsRootProps } from './TabsRoot';
|
|
4
|
+
export { TabsList, type TabsListProps } from './TabsList';
|
|
5
|
+
export { Tab, type TabProps } from './Tab';
|
|
6
|
+
export { TabPanel, type TabPanelProps } from './TabPanel';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tabs/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,SAAS,EACT,cAAc,EACd,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { PressableProps, ViewProps } from 'react-native';
|
|
3
|
+
import type { InteractionState } from '../types';
|
|
4
|
+
export type TabsActivationMode = 'automatic' | 'manual';
|
|
5
|
+
export type TabsOrientation = 'horizontal' | 'vertical';
|
|
6
|
+
export interface ITabsProps {
|
|
7
|
+
/** Controlled selected tab value. */
|
|
8
|
+
value?: string;
|
|
9
|
+
/** Default selected tab value for uncontrolled usage. */
|
|
10
|
+
defaultValue?: string;
|
|
11
|
+
onValueChange?: (value: string) => void;
|
|
12
|
+
/**
|
|
13
|
+
* `automatic` (default) selects a tab as soon as it receives focus via arrow keys.
|
|
14
|
+
* `manual` only moves focus on arrow keys — the consumer must press Enter/Space to select.
|
|
15
|
+
*/
|
|
16
|
+
activationMode?: TabsActivationMode;
|
|
17
|
+
/**
|
|
18
|
+
* Layout axis and roving-focus key set. `horizontal` (default) uses ArrowLeft/ArrowRight;
|
|
19
|
+
* `vertical` uses ArrowUp/ArrowDown, per the ARIA APG tabs pattern.
|
|
20
|
+
*/
|
|
21
|
+
orientation?: TabsOrientation;
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
children?: ReactNode;
|
|
24
|
+
}
|
|
25
|
+
export interface ITabsListProps extends ViewProps {
|
|
26
|
+
children?: ReactNode;
|
|
27
|
+
}
|
|
28
|
+
export interface ITabProps extends PressableProps {
|
|
29
|
+
/** Required — correlates this tab with its `Tabs.Panel` counterpart. */
|
|
30
|
+
value: string;
|
|
31
|
+
disabled?: boolean;
|
|
32
|
+
isHovered?: boolean;
|
|
33
|
+
isActive?: boolean;
|
|
34
|
+
isFocused?: boolean;
|
|
35
|
+
isFocusVisible?: boolean;
|
|
36
|
+
isDisabled?: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface ITabPanelProps extends ViewProps {
|
|
39
|
+
/** Required — correlates this panel with its `Tabs.Tab` counterpart. */
|
|
40
|
+
value: string;
|
|
41
|
+
/** Unmount when inactive instead of keeping the panel hidden in the DOM. */
|
|
42
|
+
unmountWhenInactive?: boolean;
|
|
43
|
+
children?: ReactNode;
|
|
44
|
+
}
|
|
45
|
+
export interface TabInteractionState extends InteractionState {
|
|
46
|
+
selected: boolean;
|
|
47
|
+
}
|
|
48
|
+
export interface RegisteredTab {
|
|
49
|
+
disabled: boolean;
|
|
50
|
+
node: {
|
|
51
|
+
focus?: () => void;
|
|
52
|
+
} | null;
|
|
53
|
+
}
|
|
54
|
+
export interface TabsContextValue {
|
|
55
|
+
value: string | undefined;
|
|
56
|
+
onValueChange: (value: string) => void;
|
|
57
|
+
disabled: boolean;
|
|
58
|
+
activationMode: TabsActivationMode;
|
|
59
|
+
orientation: TabsOrientation;
|
|
60
|
+
listId: string;
|
|
61
|
+
registerTab: (value: string, entry: RegisteredTab) => void;
|
|
62
|
+
unregisterTab: (value: string) => void;
|
|
63
|
+
getTabs: () => [string, RegisteredTab][];
|
|
64
|
+
/** Currently roving-focused tab value (keyboard navigation), distinct from committed `value`. */
|
|
65
|
+
focusedValue: string | undefined;
|
|
66
|
+
setFocusedValue: (value: string | undefined) => void;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tabs/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,QAAQ,CAAC;AACxD,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,UAAU,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,SAAU,SAAQ,cAAc;IAC/C,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,kBAAkB,CAAC;IACnC,WAAW,EAAE,eAAe,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3D,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC;IACzC,iGAAiG;IACjG,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CACtD"}
|