@xaui/native 0.0.31 → 0.0.33

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.
Files changed (42) hide show
  1. package/README.md +4 -0
  2. package/dist/app-bar/index.cjs +4 -1
  3. package/dist/app-bar/index.js +4 -1
  4. package/dist/bottom-sheet/index.cjs +4 -3
  5. package/dist/bottom-sheet/index.js +2 -1
  6. package/dist/chunk-2ANGPYCP.cjs +308 -0
  7. package/dist/chunk-DECMUMCI.js +0 -0
  8. package/dist/chunk-E4DOPNVW.js +308 -0
  9. package/dist/chunk-EUQDGTST.cjs +1 -0
  10. package/dist/color-picker/index.cjs +460 -0
  11. package/dist/color-picker/index.d.cts +124 -0
  12. package/dist/color-picker/index.d.ts +124 -0
  13. package/dist/color-picker/index.js +460 -0
  14. package/dist/dialog/index.cjs +381 -0
  15. package/dist/dialog/index.d.cts +151 -0
  16. package/dist/dialog/index.d.ts +151 -0
  17. package/dist/dialog/index.js +381 -0
  18. package/dist/index-DyU3sW3_.d.cts +4 -0
  19. package/dist/index-DyU3sW3_.d.ts +4 -0
  20. package/dist/input-trigger/index.cjs +8 -0
  21. package/dist/input-trigger/index.d.cts +9 -0
  22. package/dist/input-trigger/index.d.ts +9 -0
  23. package/dist/input-trigger/index.js +8 -0
  24. package/dist/input-trigger.type-BL70fHE9.d.cts +97 -0
  25. package/dist/input-trigger.type-BODYStHk.d.ts +97 -0
  26. package/dist/picker/index.cjs +250 -0
  27. package/dist/picker/index.d.cts +121 -0
  28. package/dist/picker/index.d.ts +121 -0
  29. package/dist/picker/index.js +250 -0
  30. package/dist/snackbar/index.d.cts +1 -2
  31. package/dist/snackbar/index.d.ts +1 -2
  32. package/dist/snippet/index.cjs +282 -0
  33. package/dist/snippet/index.d.cts +90 -0
  34. package/dist/snippet/index.d.ts +90 -0
  35. package/dist/snippet/index.js +282 -0
  36. package/dist/timepicker/index.cjs +4 -3
  37. package/dist/timepicker/index.js +2 -1
  38. package/dist/toolbar/index.cjs +24 -17
  39. package/dist/toolbar/index.js +25 -18
  40. package/package.json +26 -1
  41. /package/dist/{chunk-HC2SSHNU.js → chunk-ED22WCCI.js} +0 -0
  42. /package/dist/{chunk-XFPPR2VB.cjs → chunk-RVR42THG.cjs} +0 -0
@@ -0,0 +1,381 @@
1
+ import {
2
+ useBorderRadiusStyles,
3
+ useXUITheme
4
+ } from "../chunk-LTKYHG5V.js";
5
+
6
+ // src/components/dialog/dialog.tsx
7
+ import React, {
8
+ createContext,
9
+ useCallback,
10
+ useContext,
11
+ useEffect,
12
+ useMemo,
13
+ useRef,
14
+ useState
15
+ } from "react";
16
+ import { Modal, Pressable, Text, View } from "react-native";
17
+ import Animated, {
18
+ Easing,
19
+ runOnJS,
20
+ useAnimatedStyle,
21
+ useSharedValue,
22
+ withTiming
23
+ } from "react-native-reanimated";
24
+ import { withOpacity } from "@xaui/core";
25
+ import { CloseIcon } from "@xaui/icons";
26
+
27
+ // src/components/dialog/dialog.style.ts
28
+ import { StyleSheet } from "react-native";
29
+ var styles = StyleSheet.create({
30
+ root: {
31
+ flex: 1
32
+ },
33
+ backdrop: {
34
+ ...StyleSheet.absoluteFillObject
35
+ },
36
+ backdropTransparent: {
37
+ backgroundColor: "transparent"
38
+ },
39
+ backdropBlurred: {
40
+ backgroundColor: "rgba(15, 23, 42, 0.35)"
41
+ },
42
+ backdropOpaque: {
43
+ backgroundColor: "rgba(15, 23, 42, 0.55)"
44
+ },
45
+ placementBase: {
46
+ flex: 1,
47
+ paddingHorizontal: 16
48
+ },
49
+ placementTop: {
50
+ justifyContent: "flex-start",
51
+ paddingTop: 44,
52
+ paddingBottom: 16
53
+ },
54
+ placementCenter: {
55
+ justifyContent: "center",
56
+ paddingVertical: 16
57
+ },
58
+ placementBottom: {
59
+ justifyContent: "flex-end",
60
+ paddingTop: 16,
61
+ paddingBottom: 28
62
+ },
63
+ dialog: {
64
+ width: "100%",
65
+ alignSelf: "center",
66
+ overflow: "hidden",
67
+ borderWidth: 1
68
+ },
69
+ sizeSm: {
70
+ maxWidth: 360
71
+ },
72
+ sizeMd: {
73
+ maxWidth: 520
74
+ },
75
+ sizeLg: {
76
+ maxWidth: 700
77
+ },
78
+ sizeFull: {
79
+ maxWidth: "100%",
80
+ flex: 1
81
+ },
82
+ header: {
83
+ paddingTop: 18,
84
+ paddingBottom: 12,
85
+ paddingHorizontal: 20,
86
+ flexDirection: "row",
87
+ alignItems: "flex-start",
88
+ justifyContent: "space-between",
89
+ gap: 12
90
+ },
91
+ headerContent: {
92
+ flex: 1
93
+ },
94
+ headerText: {
95
+ fontSize: 20,
96
+ lineHeight: 26,
97
+ fontWeight: "700"
98
+ },
99
+ body: {
100
+ paddingHorizontal: 20,
101
+ paddingVertical: 12,
102
+ gap: 10
103
+ },
104
+ bodyText: {
105
+ fontSize: 15,
106
+ lineHeight: 22
107
+ },
108
+ footer: {
109
+ paddingTop: 8,
110
+ paddingBottom: 18,
111
+ paddingHorizontal: 20,
112
+ flexDirection: "row",
113
+ justifyContent: "flex-end",
114
+ alignItems: "center",
115
+ gap: 8
116
+ },
117
+ closeButton: {
118
+ padding: 4,
119
+ borderRadius: 999,
120
+ alignItems: "center",
121
+ justifyContent: "center"
122
+ }
123
+ });
124
+
125
+ // src/components/dialog/dialog.tsx
126
+ var DialogContext = createContext({});
127
+ var sizeStyles = {
128
+ sm: styles.sizeSm,
129
+ md: styles.sizeMd,
130
+ lg: styles.sizeLg,
131
+ full: styles.sizeFull
132
+ };
133
+ var placementStyles = {
134
+ top: styles.placementTop,
135
+ center: styles.placementCenter,
136
+ bottom: styles.placementBottom
137
+ };
138
+ var backdropStyles = {
139
+ transparent: styles.backdropTransparent,
140
+ blurred: styles.backdropBlurred,
141
+ opaque: styles.backdropOpaque
142
+ };
143
+ var ENTER_DURATION = 240;
144
+ var EXIT_DURATION = 180;
145
+ function getTranslateOffset(placement, animationType) {
146
+ if (animationType === "slide") {
147
+ if (placement === "top") return -28;
148
+ if (placement === "bottom") return 28;
149
+ return 18;
150
+ }
151
+ if (placement === "top") return -18;
152
+ if (placement === "bottom") return 18;
153
+ return 10;
154
+ }
155
+ var resolveChildrenContent = (content, textStyle) => {
156
+ if (content === void 0 || content === null) return null;
157
+ if (typeof content === "string" || typeof content === "number") {
158
+ return /* @__PURE__ */ React.createElement(Text, { style: textStyle }, content);
159
+ }
160
+ return content;
161
+ };
162
+ var Dialog = ({
163
+ children,
164
+ isOpen,
165
+ onClose,
166
+ onOpenChange,
167
+ size = "md",
168
+ placement = "center",
169
+ radius = "lg",
170
+ backdrop = "opaque",
171
+ closeOnBackdropPress = true,
172
+ hideBackdrop = false,
173
+ animationType = "fade",
174
+ disableAnimation = false,
175
+ style,
176
+ customAppearance
177
+ }) => {
178
+ const theme = useXUITheme();
179
+ const radiusStyles = useBorderRadiusStyles(radius);
180
+ const [shouldRender, setShouldRender] = useState(isOpen);
181
+ const openRef = useRef(isOpen);
182
+ const shouldAnimate = !disableAnimation && animationType !== "none";
183
+ const initialOffset = getTranslateOffset(placement, animationType);
184
+ const backdropOpacity = useSharedValue(isOpen ? 1 : 0);
185
+ const dialogOpacity = useSharedValue(isOpen ? 1 : 0);
186
+ const dialogTranslate = useSharedValue(isOpen ? 0 : initialOffset);
187
+ const dialogScale = useSharedValue(isOpen ? 1 : placement === "center" ? 0.98 : 1);
188
+ const requestClose = useCallback(() => {
189
+ onOpenChange?.(false);
190
+ onClose?.();
191
+ }, [onClose, onOpenChange]);
192
+ const handleBackdropPress = () => {
193
+ if (closeOnBackdropPress) {
194
+ requestClose();
195
+ }
196
+ };
197
+ const finishClosing = useCallback(() => {
198
+ if (!openRef.current) {
199
+ setShouldRender(false);
200
+ }
201
+ }, []);
202
+ useEffect(() => {
203
+ openRef.current = isOpen;
204
+ }, [isOpen]);
205
+ useEffect(() => {
206
+ if (isOpen && !shouldRender) {
207
+ setShouldRender(true);
208
+ }
209
+ }, [isOpen, shouldRender]);
210
+ useEffect(() => {
211
+ if (!shouldRender) return;
212
+ if (!shouldAnimate) {
213
+ backdropOpacity.value = isOpen ? 1 : 0;
214
+ dialogOpacity.value = isOpen ? 1 : 0;
215
+ dialogTranslate.value = 0;
216
+ dialogScale.value = 1;
217
+ if (!isOpen) {
218
+ setShouldRender(false);
219
+ }
220
+ return;
221
+ }
222
+ const offset = getTranslateOffset(placement, animationType);
223
+ if (isOpen) {
224
+ backdropOpacity.value = 0;
225
+ dialogOpacity.value = 0;
226
+ dialogTranslate.value = offset;
227
+ dialogScale.value = placement === "center" ? 0.98 : 1;
228
+ backdropOpacity.value = withTiming(1, {
229
+ duration: 210,
230
+ easing: Easing.out(Easing.quad)
231
+ });
232
+ dialogOpacity.value = withTiming(1, {
233
+ duration: 220,
234
+ easing: Easing.out(Easing.quad)
235
+ });
236
+ dialogTranslate.value = withTiming(0, {
237
+ duration: ENTER_DURATION,
238
+ easing: Easing.out(Easing.cubic)
239
+ });
240
+ dialogScale.value = withTiming(1, {
241
+ duration: 220,
242
+ easing: Easing.out(Easing.quad)
243
+ });
244
+ return;
245
+ }
246
+ backdropOpacity.value = withTiming(0, {
247
+ duration: 150,
248
+ easing: Easing.in(Easing.quad)
249
+ });
250
+ dialogTranslate.value = withTiming(offset, {
251
+ duration: EXIT_DURATION,
252
+ easing: Easing.in(Easing.cubic)
253
+ });
254
+ dialogScale.value = withTiming(placement === "center" ? 0.98 : 1, {
255
+ duration: 150,
256
+ easing: Easing.in(Easing.quad)
257
+ });
258
+ dialogOpacity.value = withTiming(
259
+ 0,
260
+ {
261
+ duration: EXIT_DURATION,
262
+ easing: Easing.in(Easing.quad)
263
+ },
264
+ (finished) => {
265
+ if (finished) {
266
+ runOnJS(finishClosing)();
267
+ }
268
+ }
269
+ );
270
+ }, [
271
+ animationType,
272
+ backdropOpacity,
273
+ dialogOpacity,
274
+ dialogScale,
275
+ dialogTranslate,
276
+ finishClosing,
277
+ isOpen,
278
+ placement,
279
+ shouldAnimate,
280
+ shouldRender
281
+ ]);
282
+ const backdropAnimatedStyle = useAnimatedStyle(() => ({
283
+ opacity: backdropOpacity.value
284
+ }));
285
+ const dialogAnimatedStyle = useAnimatedStyle(() => ({
286
+ opacity: dialogOpacity.value,
287
+ transform: [{ translateY: dialogTranslate.value }, { scale: dialogScale.value }]
288
+ }));
289
+ const dialogContextValue = useMemo(
290
+ () => ({
291
+ onClose: requestClose,
292
+ customAppearance
293
+ }),
294
+ [customAppearance, requestClose]
295
+ );
296
+ if (!shouldRender) return null;
297
+ return /* @__PURE__ */ React.createElement(
298
+ Modal,
299
+ {
300
+ visible: true,
301
+ transparent: true,
302
+ animationType: "none",
303
+ onRequestClose: requestClose
304
+ },
305
+ /* @__PURE__ */ React.createElement(View, { style: styles.root }, !hideBackdrop && /* @__PURE__ */ React.createElement(
306
+ AnimatedPressable,
307
+ {
308
+ style: [
309
+ styles.backdrop,
310
+ backdropStyles[backdrop],
311
+ backdropAnimatedStyle,
312
+ customAppearance?.backdrop
313
+ ],
314
+ onPress: handleBackdropPress
315
+ }
316
+ ), /* @__PURE__ */ React.createElement(View, { style: [styles.placementBase, placementStyles[placement]] }, /* @__PURE__ */ React.createElement(DialogContext.Provider, { value: dialogContextValue }, /* @__PURE__ */ React.createElement(Pressable, { onPress: (event) => event.stopPropagation() }, /* @__PURE__ */ React.createElement(
317
+ Animated.View,
318
+ {
319
+ style: [
320
+ styles.dialog,
321
+ sizeStyles[size],
322
+ radiusStyles,
323
+ dialogAnimatedStyle,
324
+ {
325
+ backgroundColor: theme.colors.background,
326
+ borderColor: withOpacity(theme.colors.foreground, 0.14)
327
+ },
328
+ theme.shadows.lg,
329
+ customAppearance?.container,
330
+ style
331
+ ]
332
+ },
333
+ children
334
+ )))))
335
+ );
336
+ };
337
+ var AnimatedPressable = Animated.createAnimatedComponent(Pressable);
338
+ var DialogHeader = ({
339
+ children,
340
+ isClosable = false,
341
+ closeButton,
342
+ onClose,
343
+ style
344
+ }) => {
345
+ const theme = useXUITheme();
346
+ const { onClose: contextClose, customAppearance } = useContext(DialogContext);
347
+ const close = onClose ?? contextClose;
348
+ return /* @__PURE__ */ React.createElement(View, { style: [styles.header, customAppearance?.header, style] }, /* @__PURE__ */ React.createElement(View, { style: styles.headerContent }, resolveChildrenContent(children, [
349
+ styles.headerText,
350
+ { color: theme.colors.foreground },
351
+ customAppearance?.headerText
352
+ ])), isClosable && /* @__PURE__ */ React.createElement(
353
+ Pressable,
354
+ {
355
+ accessibilityRole: "button",
356
+ accessibilityLabel: "Close dialog",
357
+ onPress: close,
358
+ style: [styles.closeButton, customAppearance?.closeButton]
359
+ },
360
+ closeButton ?? /* @__PURE__ */ React.createElement(CloseIcon, { size: 22, color: theme.colors.foreground })
361
+ ));
362
+ };
363
+ var DialogBody = ({ children, style }) => {
364
+ const theme = useXUITheme();
365
+ const { customAppearance } = useContext(DialogContext);
366
+ return /* @__PURE__ */ React.createElement(View, { style: [styles.body, customAppearance?.body, style] }, resolveChildrenContent(children, [
367
+ styles.bodyText,
368
+ { color: withOpacity(theme.colors.foreground, 0.9) },
369
+ customAppearance?.bodyText
370
+ ]));
371
+ };
372
+ var DialogFooter = ({ children, style }) => {
373
+ const { customAppearance } = useContext(DialogContext);
374
+ return /* @__PURE__ */ React.createElement(View, { style: [styles.footer, customAppearance?.footer, style] }, children);
375
+ };
376
+ export {
377
+ Dialog,
378
+ DialogBody,
379
+ DialogFooter,
380
+ DialogHeader
381
+ };
@@ -0,0 +1,4 @@
1
+ type ThemeColor = 'primary' | 'secondary' | 'tertiary' | 'danger' | 'warning' | 'success' | 'default';
2
+ type Radius = 'none' | 'sm' | 'md' | 'lg' | 'full';
3
+
4
+ export type { Radius as R, ThemeColor as T };
@@ -0,0 +1,4 @@
1
+ type ThemeColor = 'primary' | 'secondary' | 'tertiary' | 'danger' | 'warning' | 'success' | 'default';
2
+ type Radius = 'none' | 'sm' | 'md' | 'lg' | 'full';
3
+
4
+ export type { Radius as R, ThemeColor as T };
@@ -0,0 +1,8 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk2ANGPYCPcjs = require('../chunk-2ANGPYCP.cjs');
4
+ require('../chunk-HSPTLUFA.cjs');
5
+ require('../chunk-OQ2BLOOG.cjs');
6
+
7
+
8
+ exports.InputTrigger = _chunk2ANGPYCPcjs.InputTrigger;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { I as InputTriggerProps } from '../input-trigger.type-BL70fHE9.cjs';
3
+ export { e as InputTriggerCustomAppearance, a as InputTriggerEvents, d as InputTriggerLabelPlacement, c as InputTriggerSize, b as InputTriggerVariant } from '../input-trigger.type-BL70fHE9.cjs';
4
+ import 'react-native';
5
+ import '../index-DyU3sW3_.cjs';
6
+
7
+ declare const InputTrigger: React.FC<InputTriggerProps>;
8
+
9
+ export { InputTrigger, InputTriggerProps };
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { I as InputTriggerProps } from '../input-trigger.type-BODYStHk.js';
3
+ export { e as InputTriggerCustomAppearance, a as InputTriggerEvents, d as InputTriggerLabelPlacement, c as InputTriggerSize, b as InputTriggerVariant } from '../input-trigger.type-BODYStHk.js';
4
+ import 'react-native';
5
+ import '../index-DyU3sW3_.js';
6
+
7
+ declare const InputTrigger: React.FC<InputTriggerProps>;
8
+
9
+ export { InputTrigger, InputTriggerProps };
@@ -0,0 +1,8 @@
1
+ import {
2
+ InputTrigger
3
+ } from "../chunk-E4DOPNVW.js";
4
+ import "../chunk-DXXNBF5P.js";
5
+ import "../chunk-LTKYHG5V.js";
6
+ export {
7
+ InputTrigger
8
+ };
@@ -0,0 +1,97 @@
1
+ import { ReactNode } from 'react';
2
+ import { StyleProp, ViewStyle, TextStyle } from 'react-native';
3
+ import { T as ThemeColor, R as Radius } from './index-DyU3sW3_.cjs';
4
+
5
+ type InputTriggerVariant = 'flat' | 'faded' | 'bordered' | 'underlined';
6
+ type InputTriggerSize = 'sm' | 'md' | 'lg';
7
+ type InputTriggerLabelPlacement = 'outside' | 'inside';
8
+ type InputTriggerCustomAppearance = {
9
+ container?: StyleProp<ViewStyle>;
10
+ inputContainer?: StyleProp<ViewStyle>;
11
+ inputWrapper?: StyleProp<ViewStyle>;
12
+ label?: StyleProp<TextStyle>;
13
+ content?: StyleProp<TextStyle>;
14
+ helperText?: StyleProp<TextStyle>;
15
+ };
16
+ type InputTriggerProps = {
17
+ /**
18
+ * Value displayed inside the trigger (acts as placeholder when no value).
19
+ */
20
+ value?: ReactNode;
21
+ /**
22
+ * Placeholder text shown when no value is set.
23
+ */
24
+ placeholder?: string;
25
+ /**
26
+ * Label displayed above or inside the trigger.
27
+ */
28
+ label?: ReactNode;
29
+ /**
30
+ * Position of the label relative to the trigger.
31
+ * @default 'outside'
32
+ */
33
+ labelPlacement?: InputTriggerLabelPlacement;
34
+ /**
35
+ * Helper text displayed below the trigger.
36
+ */
37
+ description?: ReactNode;
38
+ /**
39
+ * Error message displayed when isInvalid is true.
40
+ */
41
+ errorMessage?: ReactNode;
42
+ /**
43
+ * Content rendered at the start of the trigger.
44
+ */
45
+ startContent?: ReactNode;
46
+ /**
47
+ * Content rendered at the end of the trigger.
48
+ */
49
+ endContent?: ReactNode;
50
+ /**
51
+ * Theme color for focus and active states.
52
+ * @default 'primary'
53
+ */
54
+ themeColor?: ThemeColor;
55
+ /**
56
+ * Visual style variant.
57
+ * @default 'flat'
58
+ */
59
+ variant?: InputTriggerVariant;
60
+ /**
61
+ * Size of the trigger.
62
+ * @default 'md'
63
+ */
64
+ size?: InputTriggerSize;
65
+ /**
66
+ * Border radius of the trigger.
67
+ * @default 'md'
68
+ */
69
+ radius?: Radius;
70
+ /**
71
+ * Whether the trigger is disabled.
72
+ * @default false
73
+ */
74
+ isDisabled?: boolean;
75
+ /**
76
+ * Whether the trigger is in an invalid state.
77
+ * @default false
78
+ */
79
+ isInvalid?: boolean;
80
+ /**
81
+ * Whether the component takes the full available width.
82
+ * @default true
83
+ */
84
+ fullWidth?: boolean;
85
+ /**
86
+ * Custom style overrides for trigger parts.
87
+ */
88
+ customAppearance?: InputTriggerCustomAppearance;
89
+ } & InputTriggerEvents;
90
+ type InputTriggerEvents = {
91
+ /**
92
+ * Called when the trigger is pressed.
93
+ */
94
+ onPress?: () => void;
95
+ };
96
+
97
+ export type { InputTriggerProps as I, InputTriggerEvents as a, InputTriggerVariant as b, InputTriggerSize as c, InputTriggerLabelPlacement as d, InputTriggerCustomAppearance as e };
@@ -0,0 +1,97 @@
1
+ import { ReactNode } from 'react';
2
+ import { StyleProp, ViewStyle, TextStyle } from 'react-native';
3
+ import { T as ThemeColor, R as Radius } from './index-DyU3sW3_.js';
4
+
5
+ type InputTriggerVariant = 'flat' | 'faded' | 'bordered' | 'underlined';
6
+ type InputTriggerSize = 'sm' | 'md' | 'lg';
7
+ type InputTriggerLabelPlacement = 'outside' | 'inside';
8
+ type InputTriggerCustomAppearance = {
9
+ container?: StyleProp<ViewStyle>;
10
+ inputContainer?: StyleProp<ViewStyle>;
11
+ inputWrapper?: StyleProp<ViewStyle>;
12
+ label?: StyleProp<TextStyle>;
13
+ content?: StyleProp<TextStyle>;
14
+ helperText?: StyleProp<TextStyle>;
15
+ };
16
+ type InputTriggerProps = {
17
+ /**
18
+ * Value displayed inside the trigger (acts as placeholder when no value).
19
+ */
20
+ value?: ReactNode;
21
+ /**
22
+ * Placeholder text shown when no value is set.
23
+ */
24
+ placeholder?: string;
25
+ /**
26
+ * Label displayed above or inside the trigger.
27
+ */
28
+ label?: ReactNode;
29
+ /**
30
+ * Position of the label relative to the trigger.
31
+ * @default 'outside'
32
+ */
33
+ labelPlacement?: InputTriggerLabelPlacement;
34
+ /**
35
+ * Helper text displayed below the trigger.
36
+ */
37
+ description?: ReactNode;
38
+ /**
39
+ * Error message displayed when isInvalid is true.
40
+ */
41
+ errorMessage?: ReactNode;
42
+ /**
43
+ * Content rendered at the start of the trigger.
44
+ */
45
+ startContent?: ReactNode;
46
+ /**
47
+ * Content rendered at the end of the trigger.
48
+ */
49
+ endContent?: ReactNode;
50
+ /**
51
+ * Theme color for focus and active states.
52
+ * @default 'primary'
53
+ */
54
+ themeColor?: ThemeColor;
55
+ /**
56
+ * Visual style variant.
57
+ * @default 'flat'
58
+ */
59
+ variant?: InputTriggerVariant;
60
+ /**
61
+ * Size of the trigger.
62
+ * @default 'md'
63
+ */
64
+ size?: InputTriggerSize;
65
+ /**
66
+ * Border radius of the trigger.
67
+ * @default 'md'
68
+ */
69
+ radius?: Radius;
70
+ /**
71
+ * Whether the trigger is disabled.
72
+ * @default false
73
+ */
74
+ isDisabled?: boolean;
75
+ /**
76
+ * Whether the trigger is in an invalid state.
77
+ * @default false
78
+ */
79
+ isInvalid?: boolean;
80
+ /**
81
+ * Whether the component takes the full available width.
82
+ * @default true
83
+ */
84
+ fullWidth?: boolean;
85
+ /**
86
+ * Custom style overrides for trigger parts.
87
+ */
88
+ customAppearance?: InputTriggerCustomAppearance;
89
+ } & InputTriggerEvents;
90
+ type InputTriggerEvents = {
91
+ /**
92
+ * Called when the trigger is pressed.
93
+ */
94
+ onPress?: () => void;
95
+ };
96
+
97
+ export type { InputTriggerProps as I, InputTriggerEvents as a, InputTriggerVariant as b, InputTriggerSize as c, InputTriggerLabelPlacement as d, InputTriggerCustomAppearance as e };