@xaui/native 0.2.7 → 0.9.1-alpha.0
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/dist/chunk-JDS6KGCM.cjs +791 -0
- package/dist/chunk-T3ZI2PZ6.js +791 -0
- package/dist/index.cjs +32 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +32 -0
- package/dist/theme/index.cjs +32 -0
- package/dist/theme/index.d.cts +669 -0
- package/dist/theme/index.d.ts +669 -0
- package/dist/theme/index.js +32 -0
- package/package.json +26 -249
- package/README.md +0 -178
- package/dist/alert/index.cjs +0 -356
- package/dist/alert/index.d.cts +0 -90
- package/dist/alert/index.d.ts +0 -90
- package/dist/alert/index.js +0 -356
- package/dist/app-bar/index.cjs +0 -148
- package/dist/app-bar/index.d.cts +0 -59
- package/dist/app-bar/index.d.ts +0 -59
- package/dist/app-bar/index.js +0 -148
- package/dist/autocomplete/index.cjs +0 -1122
- package/dist/autocomplete/index.d.cts +0 -88
- package/dist/autocomplete/index.d.ts +0 -88
- package/dist/autocomplete/index.js +0 -1122
- package/dist/avatar/index.cjs +0 -281
- package/dist/avatar/index.d.cts +0 -123
- package/dist/avatar/index.d.ts +0 -123
- package/dist/avatar/index.js +0 -281
- package/dist/badge/index.cjs +0 -197
- package/dist/badge/index.d.cts +0 -94
- package/dist/badge/index.d.ts +0 -94
- package/dist/badge/index.js +0 -197
- package/dist/bottom-sheet/index.cjs +0 -9
- package/dist/bottom-sheet/index.d.cts +0 -84
- package/dist/bottom-sheet/index.d.ts +0 -84
- package/dist/bottom-sheet/index.js +0 -9
- package/dist/bottom-tab-bar/index.cjs +0 -497
- package/dist/bottom-tab-bar/index.d.cts +0 -211
- package/dist/bottom-tab-bar/index.d.ts +0 -211
- package/dist/bottom-tab-bar/index.js +0 -497
- package/dist/button/index.cjs +0 -392
- package/dist/button/index.d.cts +0 -174
- package/dist/button/index.d.ts +0 -174
- package/dist/button/index.js +0 -392
- package/dist/button.type-j1ZdkkSl.d.cts +0 -4
- package/dist/button.type-j1ZdkkSl.d.ts +0 -4
- package/dist/card/index.cjs +0 -338
- package/dist/card/index.d.cts +0 -191
- package/dist/card/index.d.ts +0 -191
- package/dist/card/index.js +0 -338
- package/dist/carousel/index.cjs +0 -381
- package/dist/carousel/index.d.cts +0 -147
- package/dist/carousel/index.d.ts +0 -147
- package/dist/carousel/index.js +0 -381
- package/dist/chart/index.cjs +0 -1026
- package/dist/chart/index.d.cts +0 -218
- package/dist/chart/index.d.ts +0 -218
- package/dist/chart/index.js +0 -1026
- package/dist/checkbox/index.cjs +0 -443
- package/dist/checkbox/index.d.cts +0 -73
- package/dist/checkbox/index.d.ts +0 -73
- package/dist/checkbox/index.js +0 -443
- package/dist/chip/index.cjs +0 -503
- package/dist/chip/index.d.cts +0 -195
- package/dist/chip/index.d.ts +0 -195
- package/dist/chip/index.js +0 -503
- package/dist/chunk-4JFWQ5XT.js +0 -368
- package/dist/chunk-56RPWZD2.cjs +0 -9
- package/dist/chunk-7UFBLUMV.cjs +0 -136
- package/dist/chunk-A45TVXU5.js +0 -337
- package/dist/chunk-BYWUAPC4.cjs +0 -368
- package/dist/chunk-DECMUMCI.js +0 -0
- package/dist/chunk-DHSTKO3K.cjs +0 -19
- package/dist/chunk-DJ4Q37UT.cjs +0 -75
- package/dist/chunk-EUQDGTST.cjs +0 -1
- package/dist/chunk-GBHQCAKW.js +0 -19
- package/dist/chunk-RBSA4NH4.js +0 -136
- package/dist/chunk-SHBDANQN.js +0 -9
- package/dist/chunk-UGEINZM7.cjs +0 -290
- package/dist/chunk-UU4HHBDN.js +0 -290
- package/dist/chunk-VSZEXOUN.js +0 -384
- package/dist/chunk-YIEUN3G5.cjs +0 -384
- package/dist/chunk-ZH6ZSV2Q.cjs +0 -337
- package/dist/chunk-ZY7IUTAT.js +0 -75
- package/dist/color-picker/index.cjs +0 -457
- package/dist/color-picker/index.d.cts +0 -124
- package/dist/color-picker/index.d.ts +0 -124
- package/dist/color-picker/index.js +0 -457
- package/dist/core/index.cjs +0 -24
- package/dist/core/index.d.cts +0 -28
- package/dist/core/index.d.ts +0 -28
- package/dist/core/index.js +0 -24
- package/dist/datepicker/index.cjs +0 -1625
- package/dist/datepicker/index.d.cts +0 -45
- package/dist/datepicker/index.d.ts +0 -45
- package/dist/datepicker/index.js +0 -1625
- package/dist/dialog/index.cjs +0 -372
- package/dist/dialog/index.d.cts +0 -151
- package/dist/dialog/index.d.ts +0 -151
- package/dist/dialog/index.js +0 -372
- package/dist/divider/index.cjs +0 -8
- package/dist/divider/index.d.cts +0 -30
- package/dist/divider/index.d.ts +0 -30
- package/dist/divider/index.js +0 -8
- package/dist/drawer/index.cjs +0 -237
- package/dist/drawer/index.d.cts +0 -58
- package/dist/drawer/index.d.ts +0 -58
- package/dist/drawer/index.js +0 -237
- package/dist/expansion-panel/index.cjs +0 -441
- package/dist/expansion-panel/index.d.cts +0 -153
- package/dist/expansion-panel/index.d.ts +0 -153
- package/dist/expansion-panel/index.js +0 -441
- package/dist/fab/index.cjs +0 -9
- package/dist/fab/index.d.cts +0 -10
- package/dist/fab/index.d.ts +0 -10
- package/dist/fab/index.js +0 -9
- package/dist/fab-menu/index.cjs +0 -330
- package/dist/fab-menu/index.d.cts +0 -125
- package/dist/fab-menu/index.d.ts +0 -125
- package/dist/fab-menu/index.js +0 -330
- package/dist/fab.type-CkUHmXU_.d.ts +0 -86
- package/dist/fab.type-DN0vtAh6.d.cts +0 -86
- package/dist/feature-discovery/index.cjs +0 -464
- package/dist/feature-discovery/index.d.cts +0 -82
- package/dist/feature-discovery/index.d.ts +0 -82
- package/dist/feature-discovery/index.js +0 -464
- package/dist/indicator/index.cjs +0 -8
- package/dist/indicator/index.d.cts +0 -47
- package/dist/indicator/index.d.ts +0 -47
- package/dist/indicator/index.js +0 -8
- package/dist/input/index.cjs +0 -1462
- package/dist/input/index.d.cts +0 -522
- package/dist/input/index.d.ts +0 -522
- package/dist/input/index.js +0 -1462
- package/dist/input-trigger/index.cjs +0 -197
- package/dist/input-trigger/index.d.cts +0 -11
- package/dist/input-trigger/index.d.ts +0 -11
- package/dist/input-trigger/index.js +0 -197
- package/dist/input-trigger.type-Ba4bM3Qp.d.cts +0 -180
- package/dist/input-trigger.type-Ba4bM3Qp.d.ts +0 -180
- package/dist/list/index.cjs +0 -395
- package/dist/list/index.d.cts +0 -188
- package/dist/list/index.d.ts +0 -188
- package/dist/list/index.js +0 -395
- package/dist/menu/index.cjs +0 -316
- package/dist/menu/index.d.cts +0 -115
- package/dist/menu/index.d.ts +0 -115
- package/dist/menu/index.js +0 -316
- package/dist/menubox/index.cjs +0 -297
- package/dist/menubox/index.d.cts +0 -98
- package/dist/menubox/index.d.ts +0 -98
- package/dist/menubox/index.js +0 -297
- package/dist/pager/index.cjs +0 -205
- package/dist/pager/index.d.cts +0 -93
- package/dist/pager/index.d.ts +0 -93
- package/dist/pager/index.js +0 -205
- package/dist/picker/index.cjs +0 -244
- package/dist/picker/index.d.cts +0 -121
- package/dist/picker/index.d.ts +0 -121
- package/dist/picker/index.js +0 -244
- package/dist/progress/index.cjs +0 -219
- package/dist/progress/index.d.cts +0 -47
- package/dist/progress/index.d.ts +0 -47
- package/dist/progress/index.js +0 -219
- package/dist/radio/index.cjs +0 -465
- package/dist/radio/index.d.cts +0 -145
- package/dist/radio/index.d.ts +0 -145
- package/dist/radio/index.js +0 -465
- package/dist/refresh-control/index.cjs +0 -45
- package/dist/refresh-control/index.d.cts +0 -55
- package/dist/refresh-control/index.d.ts +0 -55
- package/dist/refresh-control/index.js +0 -45
- package/dist/segment-button/index.cjs +0 -405
- package/dist/segment-button/index.d.cts +0 -141
- package/dist/segment-button/index.d.ts +0 -141
- package/dist/segment-button/index.js +0 -405
- package/dist/select/index.cjs +0 -878
- package/dist/select/index.d.cts +0 -192
- package/dist/select/index.d.ts +0 -192
- package/dist/select/index.js +0 -878
- package/dist/skeleton/index.cjs +0 -89
- package/dist/skeleton/index.d.cts +0 -45
- package/dist/skeleton/index.d.ts +0 -45
- package/dist/skeleton/index.js +0 -89
- package/dist/slider/index.cjs +0 -576
- package/dist/slider/index.d.cts +0 -171
- package/dist/slider/index.d.ts +0 -171
- package/dist/slider/index.js +0 -576
- package/dist/snackbar/index.cjs +0 -436
- package/dist/snackbar/index.d.cts +0 -174
- package/dist/snackbar/index.d.ts +0 -174
- package/dist/snackbar/index.js +0 -436
- package/dist/snippet/index.cjs +0 -314
- package/dist/snippet/index.d.cts +0 -95
- package/dist/snippet/index.d.ts +0 -95
- package/dist/snippet/index.js +0 -314
- package/dist/stepper/index.cjs +0 -550
- package/dist/stepper/index.d.cts +0 -137
- package/dist/stepper/index.d.ts +0 -137
- package/dist/stepper/index.js +0 -550
- package/dist/switch/index.cjs +0 -358
- package/dist/switch/index.d.cts +0 -28
- package/dist/switch/index.d.ts +0 -28
- package/dist/switch/index.js +0 -358
- package/dist/tabs/index.cjs +0 -440
- package/dist/tabs/index.d.cts +0 -180
- package/dist/tabs/index.d.ts +0 -180
- package/dist/tabs/index.js +0 -440
- package/dist/timepicker/index.cjs +0 -823
- package/dist/timepicker/index.d.cts +0 -215
- package/dist/timepicker/index.d.ts +0 -215
- package/dist/timepicker/index.js +0 -823
- package/dist/toolbar/index.cjs +0 -333
- package/dist/toolbar/index.d.cts +0 -100
- package/dist/toolbar/index.d.ts +0 -100
- package/dist/toolbar/index.js +0 -333
- package/dist/typography/index.cjs +0 -238
- package/dist/typography/index.d.cts +0 -113
- package/dist/typography/index.d.ts +0 -113
- package/dist/typography/index.js +0 -238
- package/dist/view/index.cjs +0 -1361
- package/dist/view/index.d.cts +0 -833
- package/dist/view/index.d.ts +0 -833
- package/dist/view/index.js +0 -1361
|
@@ -1,405 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }require('../chunk-56RPWZD2.cjs');
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var _chunk7UFBLUMVcjs = require('../chunk-7UFBLUMV.cjs');
|
|
6
|
-
|
|
7
|
-
// src/components/segment-button/segment-button.tsx
|
|
8
|
-
var _react = require('react'); var _react2 = _interopRequireDefault(_react);
|
|
9
|
-
var _reactnative = require('react-native');
|
|
10
|
-
|
|
11
|
-
// src/components/segment-button/segment-button.style.ts
|
|
12
|
-
|
|
13
|
-
var styles = _reactnative.StyleSheet.create({
|
|
14
|
-
container: {
|
|
15
|
-
flexDirection: "row",
|
|
16
|
-
alignItems: "stretch",
|
|
17
|
-
overflow: "hidden",
|
|
18
|
-
alignSelf: "flex-start"
|
|
19
|
-
},
|
|
20
|
-
fullWidth: {
|
|
21
|
-
width: "100%",
|
|
22
|
-
alignSelf: "stretch"
|
|
23
|
-
},
|
|
24
|
-
segment: {
|
|
25
|
-
flex: 1
|
|
26
|
-
},
|
|
27
|
-
segmentInner: {
|
|
28
|
-
flex: 1,
|
|
29
|
-
flexDirection: "row",
|
|
30
|
-
alignItems: "center",
|
|
31
|
-
justifyContent: "center"
|
|
32
|
-
},
|
|
33
|
-
segmentContent: {
|
|
34
|
-
flexDirection: "row",
|
|
35
|
-
alignItems: "center",
|
|
36
|
-
justifyContent: "center",
|
|
37
|
-
gap: 4
|
|
38
|
-
},
|
|
39
|
-
segmentText: {
|
|
40
|
-
fontWeight: "500",
|
|
41
|
-
textAlign: "center"
|
|
42
|
-
},
|
|
43
|
-
disabled: {
|
|
44
|
-
opacity: 0.5
|
|
45
|
-
},
|
|
46
|
-
divider: {
|
|
47
|
-
width: 1,
|
|
48
|
-
alignSelf: "stretch"
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
// src/components/segment-button/segment-button.hook.ts
|
|
53
|
-
|
|
54
|
-
var _core = require('@xaui/core');
|
|
55
|
-
function useSegmentSizeStyles(size) {
|
|
56
|
-
const theme = _chunk7UFBLUMVcjs.useXUITheme.call(void 0, );
|
|
57
|
-
return _react.useMemo.call(void 0, () => {
|
|
58
|
-
const sizes = {
|
|
59
|
-
xs: {
|
|
60
|
-
paddingHorizontal: theme.spacing.sm,
|
|
61
|
-
paddingVertical: theme.spacing.xs,
|
|
62
|
-
minHeight: theme.componentSizes.xs,
|
|
63
|
-
fontSize: theme.fontSizes.xs,
|
|
64
|
-
iconSize: 14
|
|
65
|
-
},
|
|
66
|
-
sm: {
|
|
67
|
-
paddingHorizontal: theme.spacing.md,
|
|
68
|
-
paddingVertical: theme.spacing.xs,
|
|
69
|
-
minHeight: theme.componentSizes.sm,
|
|
70
|
-
fontSize: theme.fontSizes.sm,
|
|
71
|
-
iconSize: 16
|
|
72
|
-
},
|
|
73
|
-
md: {
|
|
74
|
-
paddingHorizontal: theme.spacing.md,
|
|
75
|
-
paddingVertical: theme.spacing.sm,
|
|
76
|
-
minHeight: theme.componentSizes.md,
|
|
77
|
-
fontSize: theme.fontSizes.md,
|
|
78
|
-
iconSize: 18
|
|
79
|
-
},
|
|
80
|
-
lg: {
|
|
81
|
-
paddingHorizontal: theme.spacing.lg,
|
|
82
|
-
paddingVertical: theme.spacing.md,
|
|
83
|
-
minHeight: theme.componentSizes.lg,
|
|
84
|
-
fontSize: theme.fontSizes.lg,
|
|
85
|
-
iconSize: 20
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
return sizes[size];
|
|
89
|
-
}, [size, theme]);
|
|
90
|
-
}
|
|
91
|
-
function useSegmentVariantStyles(themeColor, variant, elevation = 0) {
|
|
92
|
-
const theme = _chunk7UFBLUMVcjs.useXUITheme.call(void 0, );
|
|
93
|
-
const safeThemeColor = _core.getSafeThemeColor.call(void 0, themeColor);
|
|
94
|
-
const colorScheme = theme.colors[safeThemeColor];
|
|
95
|
-
const selectedBackgroundColor = _core.withPaletteNumber.call(void 0, colorScheme.main, 400);
|
|
96
|
-
return _react.useMemo.call(void 0, () => {
|
|
97
|
-
const variants = {
|
|
98
|
-
outlined: {
|
|
99
|
-
containerBackground: "transparent",
|
|
100
|
-
containerBorderWidth: theme.borderWidth.md,
|
|
101
|
-
containerBorderColor: colorScheme.main,
|
|
102
|
-
selectedBackground: selectedBackgroundColor,
|
|
103
|
-
unselectedBackground: "transparent",
|
|
104
|
-
selectedTextColor: colorScheme.onMain,
|
|
105
|
-
unselectedTextColor: colorScheme.main
|
|
106
|
-
},
|
|
107
|
-
flat: {
|
|
108
|
-
containerBackground: colorScheme.container,
|
|
109
|
-
containerBorderWidth: 0,
|
|
110
|
-
containerBorderColor: "transparent",
|
|
111
|
-
selectedBackground: _core.withOpacity.call(void 0, colorScheme.main, 0.2),
|
|
112
|
-
unselectedBackground: "transparent",
|
|
113
|
-
selectedTextColor: colorScheme.main,
|
|
114
|
-
unselectedTextColor: colorScheme.main
|
|
115
|
-
},
|
|
116
|
-
light: {
|
|
117
|
-
containerBackground: "transparent",
|
|
118
|
-
containerBorderWidth: 0,
|
|
119
|
-
containerBorderColor: "transparent",
|
|
120
|
-
selectedBackground: selectedBackgroundColor,
|
|
121
|
-
unselectedBackground: "transparent",
|
|
122
|
-
selectedTextColor: colorScheme.onMain,
|
|
123
|
-
unselectedTextColor: colorScheme.main
|
|
124
|
-
},
|
|
125
|
-
faded: {
|
|
126
|
-
containerBackground: _core.withOpacity.call(void 0, colorScheme.container, 0.58),
|
|
127
|
-
containerBorderWidth: theme.borderWidth.md,
|
|
128
|
-
containerBorderColor: `${colorScheme.main}90`,
|
|
129
|
-
selectedBackground: _core.withOpacity.call(void 0, colorScheme.main, 0.2),
|
|
130
|
-
unselectedBackground: "transparent",
|
|
131
|
-
selectedTextColor: colorScheme.main,
|
|
132
|
-
unselectedTextColor: colorScheme.main
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
const baseStyle = _nullishCoalesce(variants[variant], () => ( variants.outlined));
|
|
136
|
-
const shouldApplyElevation = variant !== "outlined" && variant !== "light";
|
|
137
|
-
const shadowStyles = elevation === 0 ? {} : elevation === 1 ? theme.shadows.sm : elevation === 2 ? theme.shadows.md : elevation === 3 ? theme.shadows.lg : theme.shadows.xl;
|
|
138
|
-
return {
|
|
139
|
-
...baseStyle,
|
|
140
|
-
containerShadow: shouldApplyElevation && elevation > 0 ? shadowStyles : baseStyle.containerShadow
|
|
141
|
-
};
|
|
142
|
-
}, [variant, colorScheme, theme, elevation]);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// src/components/segment-button/segment-button-context.ts
|
|
146
|
-
|
|
147
|
-
var SegmentButtonContext = _react.createContext.call(void 0, void 0);
|
|
148
|
-
var useSegmentButtonContext = () => {
|
|
149
|
-
const context = _react.useContext.call(void 0, SegmentButtonContext);
|
|
150
|
-
if (!context) {
|
|
151
|
-
throw new Error(
|
|
152
|
-
"SegmentButtonItem must be used within a SegmentButton component"
|
|
153
|
-
);
|
|
154
|
-
}
|
|
155
|
-
return context;
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
// src/components/segment-button/segment-button.tsx
|
|
159
|
-
var SegmentButton = ({
|
|
160
|
-
children,
|
|
161
|
-
selected: controlledSelected,
|
|
162
|
-
defaultSelected,
|
|
163
|
-
onSelectionChange,
|
|
164
|
-
selectionMode = "single",
|
|
165
|
-
themeColor = "primary",
|
|
166
|
-
variant = "outlined",
|
|
167
|
-
size = "md",
|
|
168
|
-
radius = "full",
|
|
169
|
-
fullWidth = false,
|
|
170
|
-
isDisabled = false,
|
|
171
|
-
showCheckmark = true,
|
|
172
|
-
elevation = 0,
|
|
173
|
-
customAppearance
|
|
174
|
-
}) => {
|
|
175
|
-
const isControlled = controlledSelected !== void 0;
|
|
176
|
-
const [internalSelected, setInternalSelected] = _react.useState.call(void 0,
|
|
177
|
-
() => _nullishCoalesce(defaultSelected, () => ( ""))
|
|
178
|
-
);
|
|
179
|
-
const selected = isControlled ? controlledSelected : internalSelected;
|
|
180
|
-
const selectedKeys = _react.useMemo.call(void 0, () => {
|
|
181
|
-
if (Array.isArray(selected)) return selected;
|
|
182
|
-
return selected ? [selected] : [];
|
|
183
|
-
}, [selected]);
|
|
184
|
-
const variantStyles = useSegmentVariantStyles(themeColor, variant, elevation);
|
|
185
|
-
const radiusStyles = _chunk7UFBLUMVcjs.useBorderRadiusStyles.call(void 0, radius);
|
|
186
|
-
const toggleItem = _react.useCallback.call(void 0,
|
|
187
|
-
(key) => {
|
|
188
|
-
let nextSelected;
|
|
189
|
-
if (selectionMode === "single") {
|
|
190
|
-
nextSelected = key;
|
|
191
|
-
} else {
|
|
192
|
-
const isCurrentlySelected = selectedKeys.includes(key);
|
|
193
|
-
if (isCurrentlySelected && selectedKeys.length > 1) {
|
|
194
|
-
nextSelected = selectedKeys.filter((k) => k !== key);
|
|
195
|
-
} else if (!isCurrentlySelected) {
|
|
196
|
-
nextSelected = [...selectedKeys, key];
|
|
197
|
-
} else {
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
if (!isControlled) {
|
|
202
|
-
setInternalSelected(nextSelected);
|
|
203
|
-
}
|
|
204
|
-
_optionalChain([onSelectionChange, 'optionalCall', _ => _(nextSelected)]);
|
|
205
|
-
},
|
|
206
|
-
[selectionMode, selectedKeys, onSelectionChange, isControlled]
|
|
207
|
-
);
|
|
208
|
-
const contextValue = _react.useMemo.call(void 0,
|
|
209
|
-
() => ({
|
|
210
|
-
selectedKeys,
|
|
211
|
-
toggleItem,
|
|
212
|
-
themeColor,
|
|
213
|
-
variant,
|
|
214
|
-
size,
|
|
215
|
-
elevation,
|
|
216
|
-
isDisabled,
|
|
217
|
-
showCheckmark
|
|
218
|
-
}),
|
|
219
|
-
[
|
|
220
|
-
selectedKeys,
|
|
221
|
-
toggleItem,
|
|
222
|
-
themeColor,
|
|
223
|
-
variant,
|
|
224
|
-
size,
|
|
225
|
-
elevation,
|
|
226
|
-
isDisabled,
|
|
227
|
-
showCheckmark
|
|
228
|
-
]
|
|
229
|
-
);
|
|
230
|
-
const showDivider = variant === "outlined" || variant === "faded";
|
|
231
|
-
const childrenArray = _react2.default.Children.toArray(children);
|
|
232
|
-
const getItemKey = (child) => {
|
|
233
|
-
if (!_react2.default.isValidElement(child)) {
|
|
234
|
-
return void 0;
|
|
235
|
-
}
|
|
236
|
-
return child.props.itemKey;
|
|
237
|
-
};
|
|
238
|
-
return /* @__PURE__ */ _react2.default.createElement(SegmentButtonContext.Provider, { value: contextValue }, /* @__PURE__ */ _react2.default.createElement(
|
|
239
|
-
_reactnative.View,
|
|
240
|
-
{
|
|
241
|
-
style: [
|
|
242
|
-
styles.container,
|
|
243
|
-
{
|
|
244
|
-
backgroundColor: variantStyles.containerBackground,
|
|
245
|
-
borderWidth: variantStyles.containerBorderWidth,
|
|
246
|
-
borderColor: variantStyles.containerBorderColor,
|
|
247
|
-
borderRadius: radiusStyles.borderRadius,
|
|
248
|
-
...variantStyles.containerShadow
|
|
249
|
-
},
|
|
250
|
-
fullWidth && styles.fullWidth,
|
|
251
|
-
_optionalChain([customAppearance, 'optionalAccess', _2 => _2.container])
|
|
252
|
-
]
|
|
253
|
-
},
|
|
254
|
-
childrenArray.map((child, index) => {
|
|
255
|
-
const isLast = index === childrenArray.length - 1;
|
|
256
|
-
const childItemKey = getItemKey(child);
|
|
257
|
-
const childKey = _nullishCoalesce(childItemKey, () => ( index));
|
|
258
|
-
const isSelected = selectedKeys.includes(String(childKey));
|
|
259
|
-
const nextChildKey = !isLast ? getItemKey(childrenArray[index + 1]) : void 0;
|
|
260
|
-
const nextSelected = nextChildKey ? selectedKeys.includes(String(nextChildKey)) : false;
|
|
261
|
-
return /* @__PURE__ */ _react2.default.createElement(_react2.default.Fragment, { key: childKey }, child, showDivider && !isLast && !isSelected && !nextSelected && /* @__PURE__ */ _react2.default.createElement(
|
|
262
|
-
_reactnative.View,
|
|
263
|
-
{
|
|
264
|
-
style: [
|
|
265
|
-
styles.divider,
|
|
266
|
-
{
|
|
267
|
-
backgroundColor: variantStyles.containerBorderColor
|
|
268
|
-
}
|
|
269
|
-
]
|
|
270
|
-
}
|
|
271
|
-
));
|
|
272
|
-
})
|
|
273
|
-
));
|
|
274
|
-
};
|
|
275
|
-
|
|
276
|
-
// src/components/segment-button/segment-button-item.tsx
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
var _reactnativesvg = require('react-native-svg'); var _reactnativesvg2 = _interopRequireDefault(_reactnativesvg);
|
|
280
|
-
|
|
281
|
-
// src/components/segment-button/segment-button.animation.ts
|
|
282
|
-
|
|
283
|
-
var runCheckmarkEnterAnimation = (animatedValue) => {
|
|
284
|
-
animatedValue.setValue(0);
|
|
285
|
-
_reactnative.Animated.timing(animatedValue, {
|
|
286
|
-
toValue: 1,
|
|
287
|
-
duration: 200,
|
|
288
|
-
useNativeDriver: true
|
|
289
|
-
}).start();
|
|
290
|
-
};
|
|
291
|
-
var runCheckmarkExitAnimation = (animatedValue) => {
|
|
292
|
-
_reactnative.Animated.timing(animatedValue, {
|
|
293
|
-
toValue: 0,
|
|
294
|
-
duration: 150,
|
|
295
|
-
useNativeDriver: true
|
|
296
|
-
}).start();
|
|
297
|
-
};
|
|
298
|
-
|
|
299
|
-
// src/components/segment-button/segment-button-item.tsx
|
|
300
|
-
var CheckIcon = ({ size, color }) => /* @__PURE__ */ _react2.default.createElement(_reactnativesvg2.default, { width: size, height: size, viewBox: "0 0 24 24", fill: "none" }, /* @__PURE__ */ _react2.default.createElement(
|
|
301
|
-
_reactnativesvg.Path,
|
|
302
|
-
{
|
|
303
|
-
d: "M20 6L9 17l-5-5",
|
|
304
|
-
stroke: color,
|
|
305
|
-
strokeWidth: 2.5,
|
|
306
|
-
strokeLinecap: "round",
|
|
307
|
-
strokeLinejoin: "round"
|
|
308
|
-
}
|
|
309
|
-
));
|
|
310
|
-
var SegmentButtonItem = ({
|
|
311
|
-
itemKey,
|
|
312
|
-
label,
|
|
313
|
-
startContent,
|
|
314
|
-
icon,
|
|
315
|
-
endContent,
|
|
316
|
-
checkIndicator,
|
|
317
|
-
isDisabled: itemDisabled = false,
|
|
318
|
-
customAppearance
|
|
319
|
-
}) => {
|
|
320
|
-
const {
|
|
321
|
-
selectedKeys,
|
|
322
|
-
toggleItem,
|
|
323
|
-
themeColor,
|
|
324
|
-
variant,
|
|
325
|
-
size,
|
|
326
|
-
elevation,
|
|
327
|
-
isDisabled: groupDisabled,
|
|
328
|
-
showCheckmark
|
|
329
|
-
} = useSegmentButtonContext();
|
|
330
|
-
const isSelected = selectedKeys.includes(itemKey);
|
|
331
|
-
const disabled = groupDisabled || itemDisabled;
|
|
332
|
-
const checkmarkAnim = _react.useRef.call(void 0, new _reactnative.Animated.Value(isSelected ? 1 : 0)).current;
|
|
333
|
-
const prevSelected = _react.useRef.call(void 0, isSelected);
|
|
334
|
-
_react.useEffect.call(void 0, () => {
|
|
335
|
-
if (isSelected && !prevSelected.current) {
|
|
336
|
-
runCheckmarkEnterAnimation(checkmarkAnim);
|
|
337
|
-
} else if (!isSelected && prevSelected.current) {
|
|
338
|
-
runCheckmarkExitAnimation(checkmarkAnim);
|
|
339
|
-
}
|
|
340
|
-
prevSelected.current = isSelected;
|
|
341
|
-
}, [isSelected, checkmarkAnim]);
|
|
342
|
-
const sizeStyles = useSegmentSizeStyles(size);
|
|
343
|
-
const variantStyles = useSegmentVariantStyles(themeColor, variant, elevation);
|
|
344
|
-
const handlePress = () => {
|
|
345
|
-
if (!disabled) {
|
|
346
|
-
toggleItem(itemKey);
|
|
347
|
-
}
|
|
348
|
-
};
|
|
349
|
-
const backgroundColor = isSelected ? variantStyles.selectedBackground : variantStyles.unselectedBackground;
|
|
350
|
-
const textColor = isSelected ? variantStyles.selectedTextColor : variantStyles.unselectedTextColor;
|
|
351
|
-
const showCheck = isSelected && showCheckmark;
|
|
352
|
-
const startNode = showCheck ? _nullishCoalesce(checkIndicator, () => ( /* @__PURE__ */ _react2.default.createElement(CheckIcon, { size: sizeStyles.iconSize, color: textColor }))) : _nullishCoalesce(startContent, () => ( icon));
|
|
353
|
-
return /* @__PURE__ */ _react2.default.createElement(
|
|
354
|
-
_reactnative.Pressable,
|
|
355
|
-
{
|
|
356
|
-
style: [styles.segment, disabled && styles.disabled],
|
|
357
|
-
onPress: handlePress,
|
|
358
|
-
disabled
|
|
359
|
-
},
|
|
360
|
-
/* @__PURE__ */ _react2.default.createElement(
|
|
361
|
-
_reactnative.View,
|
|
362
|
-
{
|
|
363
|
-
style: [
|
|
364
|
-
styles.segmentInner,
|
|
365
|
-
{
|
|
366
|
-
paddingHorizontal: sizeStyles.paddingHorizontal,
|
|
367
|
-
paddingVertical: sizeStyles.paddingVertical,
|
|
368
|
-
minHeight: sizeStyles.minHeight,
|
|
369
|
-
backgroundColor
|
|
370
|
-
},
|
|
371
|
-
isSelected ? _optionalChain([customAppearance, 'optionalAccess', _3 => _3.selectedSegment]) : _optionalChain([customAppearance, 'optionalAccess', _4 => _4.segment])
|
|
372
|
-
]
|
|
373
|
-
},
|
|
374
|
-
/* @__PURE__ */ _react2.default.createElement(_reactnative.View, { style: styles.segmentContent }, startNode && /* @__PURE__ */ _react2.default.createElement(
|
|
375
|
-
_reactnative.Animated.View,
|
|
376
|
-
{
|
|
377
|
-
style: {
|
|
378
|
-
opacity: showCheck ? checkmarkAnim : 1,
|
|
379
|
-
transform: [{ scale: showCheck ? checkmarkAnim : 1 }]
|
|
380
|
-
}
|
|
381
|
-
},
|
|
382
|
-
startNode
|
|
383
|
-
), /* @__PURE__ */ _react2.default.createElement(
|
|
384
|
-
_reactnative.Text,
|
|
385
|
-
{
|
|
386
|
-
numberOfLines: 1,
|
|
387
|
-
style: [
|
|
388
|
-
styles.segmentText,
|
|
389
|
-
{
|
|
390
|
-
fontSize: sizeStyles.fontSize,
|
|
391
|
-
color: textColor
|
|
392
|
-
},
|
|
393
|
-
isSelected ? _optionalChain([customAppearance, 'optionalAccess', _5 => _5.selectedText]) : _optionalChain([customAppearance, 'optionalAccess', _6 => _6.text])
|
|
394
|
-
]
|
|
395
|
-
},
|
|
396
|
-
label
|
|
397
|
-
), endContent)
|
|
398
|
-
)
|
|
399
|
-
);
|
|
400
|
-
};
|
|
401
|
-
SegmentButtonItem.displayName = "SegmentButtonItem";
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
exports.SegmentButton = SegmentButton; exports.SegmentButtonItem = SegmentButtonItem;
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import React, { ReactNode } from 'react';
|
|
2
|
-
import { ViewStyle, TextStyle } from 'react-native';
|
|
3
|
-
import { ThemeColor, Size } from '@xaui/core/types';
|
|
4
|
-
|
|
5
|
-
type SegmentButtonVariant = 'outlined' | 'flat' | 'light' | 'faded';
|
|
6
|
-
type ElevationLevel = 0 | 1 | 2 | 3 | 4;
|
|
7
|
-
type SegmentButtonRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';
|
|
8
|
-
type SegmentButtonSelectionMode = 'single' | 'multiple';
|
|
9
|
-
type SegmentButtonProps = {
|
|
10
|
-
/**
|
|
11
|
-
* SegmentButtonItem children
|
|
12
|
-
*/
|
|
13
|
-
children: ReactNode;
|
|
14
|
-
/**
|
|
15
|
-
* The currently selected key(s) (controlled mode).
|
|
16
|
-
* Use a string for single-select, string array for multi-select.
|
|
17
|
-
*/
|
|
18
|
-
selected?: string | string[];
|
|
19
|
-
/**
|
|
20
|
-
* Default selected key(s) for uncontrolled mode.
|
|
21
|
-
* Use a string for single-select, string array for multi-select.
|
|
22
|
-
*/
|
|
23
|
-
defaultSelected?: string | string[];
|
|
24
|
-
/**
|
|
25
|
-
* Callback fired when selection changes.
|
|
26
|
-
* Returns a string for single-select mode, string array for multi-select.
|
|
27
|
-
*/
|
|
28
|
-
onSelectionChange?: (selected: string | string[]) => void;
|
|
29
|
-
/**
|
|
30
|
-
* Selection mode: single or multiple
|
|
31
|
-
* @default 'single'
|
|
32
|
-
*/
|
|
33
|
-
selectionMode?: SegmentButtonSelectionMode;
|
|
34
|
-
/**
|
|
35
|
-
* The theme color of the segment button
|
|
36
|
-
* @default 'primary'
|
|
37
|
-
*/
|
|
38
|
-
themeColor?: ThemeColor;
|
|
39
|
-
/**
|
|
40
|
-
* The variant of the segment button
|
|
41
|
-
* @default 'outlined'
|
|
42
|
-
*/
|
|
43
|
-
variant?: SegmentButtonVariant;
|
|
44
|
-
/**
|
|
45
|
-
* The size of the segment button
|
|
46
|
-
* @default 'md'
|
|
47
|
-
*/
|
|
48
|
-
size?: Size;
|
|
49
|
-
/**
|
|
50
|
-
* The border radius of the segment button
|
|
51
|
-
* @default 'full'
|
|
52
|
-
*/
|
|
53
|
-
radius?: SegmentButtonRadius;
|
|
54
|
-
/**
|
|
55
|
-
* Whether the segment button should take the full width of its container
|
|
56
|
-
* @default false
|
|
57
|
-
*/
|
|
58
|
-
fullWidth?: boolean;
|
|
59
|
-
/**
|
|
60
|
-
* Whether the entire segment button group is disabled
|
|
61
|
-
* @default false
|
|
62
|
-
*/
|
|
63
|
-
isDisabled?: boolean;
|
|
64
|
-
/**
|
|
65
|
-
* Whether to show a checkmark icon on selected segments
|
|
66
|
-
* @default true
|
|
67
|
-
*/
|
|
68
|
-
showCheckmark?: boolean;
|
|
69
|
-
/**
|
|
70
|
-
* Android elevation level from 0 to 4.
|
|
71
|
-
* Does not apply to `outlined` and `light` variants.
|
|
72
|
-
* @default 0
|
|
73
|
-
*/
|
|
74
|
-
elevation?: ElevationLevel;
|
|
75
|
-
/**
|
|
76
|
-
* Custom styles for the outer container
|
|
77
|
-
*/
|
|
78
|
-
customAppearance?: {
|
|
79
|
-
container?: ViewStyle;
|
|
80
|
-
};
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
declare const SegmentButton: React.FC<SegmentButtonProps>;
|
|
84
|
-
|
|
85
|
-
type SegmentButtonItemCustomAppearance = {
|
|
86
|
-
/**
|
|
87
|
-
* Custom styles for the segment container
|
|
88
|
-
*/
|
|
89
|
-
segment?: ViewStyle;
|
|
90
|
-
/**
|
|
91
|
-
* Custom styles for the selected segment
|
|
92
|
-
*/
|
|
93
|
-
selectedSegment?: ViewStyle;
|
|
94
|
-
/**
|
|
95
|
-
* Custom styles for segment label text
|
|
96
|
-
*/
|
|
97
|
-
text?: TextStyle;
|
|
98
|
-
/**
|
|
99
|
-
* Custom styles for selected segment label text
|
|
100
|
-
*/
|
|
101
|
-
selectedText?: TextStyle;
|
|
102
|
-
};
|
|
103
|
-
type SegmentButtonItemProps = {
|
|
104
|
-
/**
|
|
105
|
-
* Unique key for the segment item
|
|
106
|
-
*/
|
|
107
|
-
itemKey: string;
|
|
108
|
-
/**
|
|
109
|
-
* Label text for the segment
|
|
110
|
-
*/
|
|
111
|
-
label: string;
|
|
112
|
-
/**
|
|
113
|
-
* Content to display at the start of the segment item
|
|
114
|
-
*/
|
|
115
|
-
startContent?: ReactNode;
|
|
116
|
-
/**
|
|
117
|
-
* @deprecated Use `startContent` instead
|
|
118
|
-
*/
|
|
119
|
-
icon?: ReactNode;
|
|
120
|
-
/**
|
|
121
|
-
* Content to display at the end of the segment item
|
|
122
|
-
*/
|
|
123
|
-
endContent?: ReactNode;
|
|
124
|
-
/**
|
|
125
|
-
* Custom indicator shown when the segment item is selected
|
|
126
|
-
*/
|
|
127
|
-
checkIndicator?: ReactNode;
|
|
128
|
-
/**
|
|
129
|
-
* Whether the segment item is disabled
|
|
130
|
-
* @default false
|
|
131
|
-
*/
|
|
132
|
-
isDisabled?: boolean;
|
|
133
|
-
/**
|
|
134
|
-
* Custom appearance styles for this segment item
|
|
135
|
-
*/
|
|
136
|
-
customAppearance?: SegmentButtonItemCustomAppearance;
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
declare const SegmentButtonItem: React.FC<SegmentButtonItemProps>;
|
|
140
|
-
|
|
141
|
-
export { type ElevationLevel, SegmentButton, SegmentButtonItem, type SegmentButtonItemProps, type SegmentButtonProps, type SegmentButtonRadius, type SegmentButtonSelectionMode, type SegmentButtonVariant };
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import React, { ReactNode } from 'react';
|
|
2
|
-
import { ViewStyle, TextStyle } from 'react-native';
|
|
3
|
-
import { ThemeColor, Size } from '@xaui/core/types';
|
|
4
|
-
|
|
5
|
-
type SegmentButtonVariant = 'outlined' | 'flat' | 'light' | 'faded';
|
|
6
|
-
type ElevationLevel = 0 | 1 | 2 | 3 | 4;
|
|
7
|
-
type SegmentButtonRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';
|
|
8
|
-
type SegmentButtonSelectionMode = 'single' | 'multiple';
|
|
9
|
-
type SegmentButtonProps = {
|
|
10
|
-
/**
|
|
11
|
-
* SegmentButtonItem children
|
|
12
|
-
*/
|
|
13
|
-
children: ReactNode;
|
|
14
|
-
/**
|
|
15
|
-
* The currently selected key(s) (controlled mode).
|
|
16
|
-
* Use a string for single-select, string array for multi-select.
|
|
17
|
-
*/
|
|
18
|
-
selected?: string | string[];
|
|
19
|
-
/**
|
|
20
|
-
* Default selected key(s) for uncontrolled mode.
|
|
21
|
-
* Use a string for single-select, string array for multi-select.
|
|
22
|
-
*/
|
|
23
|
-
defaultSelected?: string | string[];
|
|
24
|
-
/**
|
|
25
|
-
* Callback fired when selection changes.
|
|
26
|
-
* Returns a string for single-select mode, string array for multi-select.
|
|
27
|
-
*/
|
|
28
|
-
onSelectionChange?: (selected: string | string[]) => void;
|
|
29
|
-
/**
|
|
30
|
-
* Selection mode: single or multiple
|
|
31
|
-
* @default 'single'
|
|
32
|
-
*/
|
|
33
|
-
selectionMode?: SegmentButtonSelectionMode;
|
|
34
|
-
/**
|
|
35
|
-
* The theme color of the segment button
|
|
36
|
-
* @default 'primary'
|
|
37
|
-
*/
|
|
38
|
-
themeColor?: ThemeColor;
|
|
39
|
-
/**
|
|
40
|
-
* The variant of the segment button
|
|
41
|
-
* @default 'outlined'
|
|
42
|
-
*/
|
|
43
|
-
variant?: SegmentButtonVariant;
|
|
44
|
-
/**
|
|
45
|
-
* The size of the segment button
|
|
46
|
-
* @default 'md'
|
|
47
|
-
*/
|
|
48
|
-
size?: Size;
|
|
49
|
-
/**
|
|
50
|
-
* The border radius of the segment button
|
|
51
|
-
* @default 'full'
|
|
52
|
-
*/
|
|
53
|
-
radius?: SegmentButtonRadius;
|
|
54
|
-
/**
|
|
55
|
-
* Whether the segment button should take the full width of its container
|
|
56
|
-
* @default false
|
|
57
|
-
*/
|
|
58
|
-
fullWidth?: boolean;
|
|
59
|
-
/**
|
|
60
|
-
* Whether the entire segment button group is disabled
|
|
61
|
-
* @default false
|
|
62
|
-
*/
|
|
63
|
-
isDisabled?: boolean;
|
|
64
|
-
/**
|
|
65
|
-
* Whether to show a checkmark icon on selected segments
|
|
66
|
-
* @default true
|
|
67
|
-
*/
|
|
68
|
-
showCheckmark?: boolean;
|
|
69
|
-
/**
|
|
70
|
-
* Android elevation level from 0 to 4.
|
|
71
|
-
* Does not apply to `outlined` and `light` variants.
|
|
72
|
-
* @default 0
|
|
73
|
-
*/
|
|
74
|
-
elevation?: ElevationLevel;
|
|
75
|
-
/**
|
|
76
|
-
* Custom styles for the outer container
|
|
77
|
-
*/
|
|
78
|
-
customAppearance?: {
|
|
79
|
-
container?: ViewStyle;
|
|
80
|
-
};
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
declare const SegmentButton: React.FC<SegmentButtonProps>;
|
|
84
|
-
|
|
85
|
-
type SegmentButtonItemCustomAppearance = {
|
|
86
|
-
/**
|
|
87
|
-
* Custom styles for the segment container
|
|
88
|
-
*/
|
|
89
|
-
segment?: ViewStyle;
|
|
90
|
-
/**
|
|
91
|
-
* Custom styles for the selected segment
|
|
92
|
-
*/
|
|
93
|
-
selectedSegment?: ViewStyle;
|
|
94
|
-
/**
|
|
95
|
-
* Custom styles for segment label text
|
|
96
|
-
*/
|
|
97
|
-
text?: TextStyle;
|
|
98
|
-
/**
|
|
99
|
-
* Custom styles for selected segment label text
|
|
100
|
-
*/
|
|
101
|
-
selectedText?: TextStyle;
|
|
102
|
-
};
|
|
103
|
-
type SegmentButtonItemProps = {
|
|
104
|
-
/**
|
|
105
|
-
* Unique key for the segment item
|
|
106
|
-
*/
|
|
107
|
-
itemKey: string;
|
|
108
|
-
/**
|
|
109
|
-
* Label text for the segment
|
|
110
|
-
*/
|
|
111
|
-
label: string;
|
|
112
|
-
/**
|
|
113
|
-
* Content to display at the start of the segment item
|
|
114
|
-
*/
|
|
115
|
-
startContent?: ReactNode;
|
|
116
|
-
/**
|
|
117
|
-
* @deprecated Use `startContent` instead
|
|
118
|
-
*/
|
|
119
|
-
icon?: ReactNode;
|
|
120
|
-
/**
|
|
121
|
-
* Content to display at the end of the segment item
|
|
122
|
-
*/
|
|
123
|
-
endContent?: ReactNode;
|
|
124
|
-
/**
|
|
125
|
-
* Custom indicator shown when the segment item is selected
|
|
126
|
-
*/
|
|
127
|
-
checkIndicator?: ReactNode;
|
|
128
|
-
/**
|
|
129
|
-
* Whether the segment item is disabled
|
|
130
|
-
* @default false
|
|
131
|
-
*/
|
|
132
|
-
isDisabled?: boolean;
|
|
133
|
-
/**
|
|
134
|
-
* Custom appearance styles for this segment item
|
|
135
|
-
*/
|
|
136
|
-
customAppearance?: SegmentButtonItemCustomAppearance;
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
declare const SegmentButtonItem: React.FC<SegmentButtonItemProps>;
|
|
140
|
-
|
|
141
|
-
export { type ElevationLevel, SegmentButton, SegmentButtonItem, type SegmentButtonItemProps, type SegmentButtonProps, type SegmentButtonRadius, type SegmentButtonSelectionMode, type SegmentButtonVariant };
|