@xaui/native 0.0.8 → 0.0.10

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 (57) hide show
  1. package/dist/accordion/index.cjs +108 -87
  2. package/dist/accordion/index.d.cts +48 -36
  3. package/dist/accordion/index.d.ts +48 -36
  4. package/dist/accordion/index.js +29 -26
  5. package/dist/alert/index.cjs +593 -0
  6. package/dist/alert/index.d.cts +90 -0
  7. package/dist/alert/index.d.ts +90 -0
  8. package/dist/alert/index.js +8 -0
  9. package/dist/autocomplete/index.cjs +1501 -0
  10. package/dist/autocomplete/index.d.cts +88 -0
  11. package/dist/autocomplete/index.d.ts +88 -0
  12. package/dist/autocomplete/index.js +12 -0
  13. package/dist/button/index.cjs +87 -69
  14. package/dist/button/index.js +2 -2
  15. package/dist/checkbox/index.cjs +48 -30
  16. package/dist/checkbox/index.js +1 -1
  17. package/dist/{chunk-B2VGVZ3J.js → chunk-63LRW4QD.js} +1 -1
  18. package/dist/chunk-GBHQCAKW.js +19 -0
  19. package/dist/{chunk-R34CVLCX.js → chunk-GNJIET26.js} +1 -1
  20. package/dist/chunk-NBRASCX4.js +145 -0
  21. package/dist/chunk-OFYJYQ2M.js +358 -0
  22. package/dist/chunk-RE3CO277.js +444 -0
  23. package/dist/chunk-SIXET7TJ.js +172 -0
  24. package/dist/chunk-SVYTCEGB.js +1138 -0
  25. package/dist/chunk-ZYTBRHLJ.js +150 -0
  26. package/dist/core/index.cjs +68 -10
  27. package/dist/core/index.d.cts +9 -1
  28. package/dist/core/index.d.ts +9 -1
  29. package/dist/core/index.js +5 -1
  30. package/dist/divider/index.cjs +31 -13
  31. package/dist/divider/index.js +2 -2
  32. package/dist/icon/index.cjs +680 -0
  33. package/dist/icon/index.d.cts +36 -0
  34. package/dist/icon/index.d.ts +36 -0
  35. package/dist/icon/index.js +15 -0
  36. package/dist/index.cjs +1990 -53
  37. package/dist/index.d.cts +4 -0
  38. package/dist/index.d.ts +4 -0
  39. package/dist/index.js +21 -4
  40. package/dist/indicator/index.cjs +60 -42
  41. package/dist/indicator/index.js +2 -2
  42. package/dist/progress/index.cjs +45 -27
  43. package/dist/progress/index.js +1 -1
  44. package/dist/select/index.cjs +107 -89
  45. package/dist/select/index.js +10 -23
  46. package/dist/switch/index.cjs +58 -40
  47. package/dist/switch/index.js +1 -1
  48. package/dist/typography/index.cjs +223 -0
  49. package/dist/typography/index.d.cts +43 -0
  50. package/dist/typography/index.d.ts +43 -0
  51. package/dist/typography/index.js +7 -0
  52. package/dist/view/index.cjs +8 -2
  53. package/dist/view/index.d.cts +11 -1
  54. package/dist/view/index.d.ts +11 -1
  55. package/dist/view/index.js +8 -2
  56. package/package.json +21 -1
  57. package/dist/chunk-ORMNMNOK.js +0 -89
@@ -36,30 +36,48 @@ __export(select_exports, {
36
36
  module.exports = __toCommonJS(select_exports);
37
37
 
38
38
  // src/components/select/select.tsx
39
- var import_react9 = __toESM(require("react"), 1);
40
- var import_react_native7 = require("react-native");
39
+ var import_react12 = __toESM(require("react"), 1);
40
+ var import_react_native8 = require("react-native");
41
41
 
42
42
  // src/components/select/select-context.ts
43
43
  var import_react = require("react");
44
44
  var SelectContext = (0, import_react.createContext)(null);
45
45
 
46
46
  // src/components/select/select.hook.ts
47
- var import_react4 = require("react");
47
+ var import_react7 = require("react");
48
48
  var import_core = require("@xaui/core");
49
49
  var import_palette2 = require("@xaui/core/palette");
50
50
 
51
51
  // src/core/theme-context.tsx
52
- var import_react2 = __toESM(require("react"), 1);
53
- var import_react_native = require("react-native");
52
+ var import_react5 = __toESM(require("react"), 1);
53
+ var import_react_native2 = require("react-native");
54
54
  var import_theme = require("@xaui/core/theme");
55
55
  var import_palette = require("@xaui/core/palette");
56
- var XUIThemeContext = (0, import_react2.createContext)(null);
57
56
 
58
- // src/core/theme-hooks.ts
57
+ // src/core/portal/portal.tsx
59
58
  var import_react3 = require("react");
60
- var import_react_native2 = require("react-native");
59
+
60
+ // src/core/portal/portal-context.ts
61
+ var import_react2 = require("react");
62
+ var PortalContext = (0, import_react2.createContext)(null);
63
+
64
+ // src/core/portal/portal-host.tsx
65
+ var import_react4 = __toESM(require("react"), 1);
66
+ var import_react_native = require("react-native");
67
+ var hostStyles = import_react_native.StyleSheet.create({
68
+ container: {
69
+ flex: 1
70
+ }
71
+ });
72
+
73
+ // src/core/theme-context.tsx
74
+ var XUIThemeContext = (0, import_react5.createContext)(null);
75
+
76
+ // src/core/theme-hooks.ts
77
+ var import_react6 = require("react");
78
+ var import_react_native3 = require("react-native");
61
79
  function useXUITheme() {
62
- const theme = (0, import_react3.useContext)(XUIThemeContext);
80
+ const theme = (0, import_react6.useContext)(XUIThemeContext);
63
81
  if (!theme) {
64
82
  throw new Error("useXUITheme must be used within XUIProvider");
65
83
  }
@@ -78,7 +96,7 @@ var useSelectColorScheme = (themeColor) => {
78
96
  };
79
97
  var useSelectSizeStyles = (size) => {
80
98
  const theme = useXUITheme();
81
- return (0, import_react4.useMemo)(() => {
99
+ return (0, import_react7.useMemo)(() => {
82
100
  const sizes = {
83
101
  xs: {
84
102
  minHeight: 34,
@@ -114,7 +132,7 @@ var useSelectSizeStyles = (size) => {
114
132
  };
115
133
  var useSelectRadiusStyles = (radius) => {
116
134
  const theme = useXUITheme();
117
- const radiusStyles = (0, import_react4.useMemo)(() => {
135
+ const radiusStyles = (0, import_react7.useMemo)(() => {
118
136
  const radii = {
119
137
  none: theme.borderRadius.none,
120
138
  sm: theme.borderRadius.sm,
@@ -124,7 +142,7 @@ var useSelectRadiusStyles = (radius) => {
124
142
  };
125
143
  return { borderRadius: radii[radius] };
126
144
  }, [radius, theme]);
127
- const listboxRadius = (0, import_react4.useMemo)(() => {
145
+ const listboxRadius = (0, import_react7.useMemo)(() => {
128
146
  const radii = {
129
147
  none: theme.borderRadius.none,
130
148
  sm: theme.borderRadius.sm,
@@ -138,7 +156,7 @@ var useSelectRadiusStyles = (radius) => {
138
156
  };
139
157
  var useSelectVariantStyles = (themeColor, variant, isInvalid) => {
140
158
  const { theme, colorScheme } = useSelectColorScheme(themeColor);
141
- return (0, import_react4.useMemo)(() => {
159
+ return (0, import_react7.useMemo)(() => {
142
160
  let borderColor = isInvalid ? theme.colors.danger.main : colorScheme.main;
143
161
  if ((variant === "outlined" || variant === "faded") && themeColor === "default") {
144
162
  borderColor = import_palette2.colors.gray[300];
@@ -173,7 +191,7 @@ var useSelectVariantStyles = (themeColor, variant, isInvalid) => {
173
191
  };
174
192
  var useSelectLabelStyle = (themeColor, isInvalid, labelSize) => {
175
193
  const { theme, colorScheme } = useSelectColorScheme(themeColor);
176
- return (0, import_react4.useMemo)(() => {
194
+ return (0, import_react7.useMemo)(() => {
177
195
  let baseColor = theme.colors.foreground;
178
196
  if (isInvalid) {
179
197
  baseColor = theme.colors.danger.main;
@@ -188,7 +206,7 @@ var useSelectLabelStyle = (themeColor, isInvalid, labelSize) => {
188
206
  };
189
207
  var useSelectValueColor = (isInvalid, shouldShowPlaceholder) => {
190
208
  const theme = useXUITheme();
191
- return (0, import_react4.useMemo)(() => {
209
+ return (0, import_react7.useMemo)(() => {
192
210
  if (isInvalid) {
193
211
  return theme.colors.danger.main;
194
212
  }
@@ -200,7 +218,7 @@ var useSelectValueColor = (isInvalid, shouldShowPlaceholder) => {
200
218
  };
201
219
  var useSelectHelperColor = (isInvalid) => {
202
220
  const theme = useXUITheme();
203
- return (0, import_react4.useMemo)(() => {
221
+ return (0, import_react7.useMemo)(() => {
204
222
  if (isInvalid) {
205
223
  return theme.colors.danger.main;
206
224
  }
@@ -209,7 +227,7 @@ var useSelectHelperColor = (isInvalid) => {
209
227
  };
210
228
  var useSelectSelectorColor = (isInvalid, shouldShowPlaceholder) => {
211
229
  const theme = useXUITheme();
212
- return (0, import_react4.useMemo)(() => {
230
+ return (0, import_react7.useMemo)(() => {
213
231
  if (isInvalid) {
214
232
  return theme.colors.danger.main;
215
233
  }
@@ -221,8 +239,8 @@ var useSelectSelectorColor = (isInvalid, shouldShowPlaceholder) => {
221
239
  };
222
240
 
223
241
  // src/components/select/select.style.ts
224
- var import_react_native3 = require("react-native");
225
- var styles = import_react_native3.StyleSheet.create({
242
+ var import_react_native4 = require("react-native");
243
+ var styles = import_react_native4.StyleSheet.create({
226
244
  container: {
227
245
  gap: 6
228
246
  },
@@ -301,17 +319,17 @@ var styles = import_react_native3.StyleSheet.create({
301
319
  });
302
320
 
303
321
  // src/components/select/select-trigger.tsx
304
- var import_react6 = __toESM(require("react"), 1);
305
- var import_react_native5 = require("react-native");
322
+ var import_react9 = __toESM(require("react"), 1);
323
+ var import_react_native6 = require("react-native");
306
324
 
307
325
  // src/components/select/chevron-down-icon.tsx
308
- var import_react5 = __toESM(require("react"), 1);
309
- var import_react_native4 = require("react-native");
326
+ var import_react8 = __toESM(require("react"), 1);
327
+ var import_react_native5 = require("react-native");
310
328
  var import_react_native_svg = __toESM(require("react-native-svg"), 1);
311
329
  function ChevronDownIcon({ color, size, isOpen = false }) {
312
- const rotation = (0, import_react5.useRef)(new import_react_native4.Animated.Value(isOpen ? 1 : 0)).current;
313
- (0, import_react5.useEffect)(() => {
314
- import_react_native4.Animated.timing(rotation, {
330
+ const rotation = (0, import_react8.useRef)(new import_react_native5.Animated.Value(isOpen ? 1 : 0)).current;
331
+ (0, import_react8.useEffect)(() => {
332
+ import_react_native5.Animated.timing(rotation, {
315
333
  toValue: isOpen ? 1 : 0,
316
334
  duration: 180,
317
335
  useNativeDriver: true
@@ -321,7 +339,7 @@ function ChevronDownIcon({ color, size, isOpen = false }) {
321
339
  inputRange: [0, 1],
322
340
  outputRange: ["0deg", "180deg"]
323
341
  });
324
- return /* @__PURE__ */ import_react5.default.createElement(import_react_native4.Animated.View, { style: { transform: [{ rotate }] } }, /* @__PURE__ */ import_react5.default.createElement(import_react_native_svg.default, { width: size, height: size, viewBox: "0 0 24 24", fill: "none" }, /* @__PURE__ */ import_react5.default.createElement(
342
+ return /* @__PURE__ */ import_react8.default.createElement(import_react_native5.Animated.View, { style: { transform: [{ rotate }] } }, /* @__PURE__ */ import_react8.default.createElement(import_react_native_svg.default, { width: size, height: size, viewBox: "0 0 24 24", fill: "none" }, /* @__PURE__ */ import_react8.default.createElement(
325
343
  import_react_native_svg.Path,
326
344
  {
327
345
  d: "M6 9L12 15L18 9",
@@ -358,9 +376,9 @@ var SelectTrigger = ({
358
376
  textStyle,
359
377
  style
360
378
  }) => {
361
- const renderSelectorIcon = selectorIcon ?? /* @__PURE__ */ import_react6.default.createElement(ChevronDownIcon, { color: selectorColor, size: 16, isOpen });
362
- return /* @__PURE__ */ import_react6.default.createElement(import_react_native5.View, { ref: triggerRef, collapsable: false }, /* @__PURE__ */ import_react6.default.createElement(
363
- import_react_native5.Pressable,
379
+ const renderSelectorIcon = selectorIcon ?? /* @__PURE__ */ import_react9.default.createElement(ChevronDownIcon, { color: selectorColor, size: 16, isOpen });
380
+ return /* @__PURE__ */ import_react9.default.createElement(import_react_native6.View, { ref: triggerRef, collapsable: false }, /* @__PURE__ */ import_react9.default.createElement(
381
+ import_react_native6.Pressable,
364
382
  {
365
383
  onPress,
366
384
  disabled: isDisabled,
@@ -381,8 +399,8 @@ var SelectTrigger = ({
381
399
  style
382
400
  ]
383
401
  },
384
- /* @__PURE__ */ import_react6.default.createElement(import_react_native5.View, { style: [styles.triggerContent, labelInside && styles.triggerContentColumn] }, startContent, /* @__PURE__ */ import_react6.default.createElement(import_react_native5.View, { style: styles.valueWrapper }, labelInside && labelNode, /* @__PURE__ */ import_react6.default.createElement(
385
- import_react_native5.Text,
402
+ /* @__PURE__ */ import_react9.default.createElement(import_react_native6.View, { style: [styles.triggerContent, labelInside && styles.triggerContentColumn] }, startContent, /* @__PURE__ */ import_react9.default.createElement(import_react_native6.View, { style: styles.valueWrapper }, labelInside && labelNode, /* @__PURE__ */ import_react9.default.createElement(
403
+ import_react_native6.Text,
386
404
  {
387
405
  style: [
388
406
  styles.valueText,
@@ -392,29 +410,29 @@ var SelectTrigger = ({
392
410
  },
393
411
  displayValue
394
412
  )), endContent),
395
- /* @__PURE__ */ import_react6.default.createElement(import_react_native5.View, { style: styles.endSlot }, showClear && onClear && /* @__PURE__ */ import_react6.default.createElement(import_react_native5.Pressable, { onPress: onClear, style: styles.clearButton }, /* @__PURE__ */ import_react6.default.createElement(import_react_native5.Text, { style: [styles.clearText, { color: selectorColor }] }, "x")), renderSelectorIcon)
413
+ /* @__PURE__ */ import_react9.default.createElement(import_react_native6.View, { style: styles.endSlot }, showClear && onClear && /* @__PURE__ */ import_react9.default.createElement(import_react_native6.Pressable, { onPress: onClear, style: styles.clearButton }, /* @__PURE__ */ import_react9.default.createElement(import_react_native6.Text, { style: [styles.clearText, { color: selectorColor }] }, "x")), renderSelectorIcon)
396
414
  ));
397
415
  };
398
416
 
399
417
  // src/components/select/select.animation.ts
400
- var import_react7 = require("react");
401
- var import_react_native6 = require("react-native");
418
+ var import_react10 = require("react");
419
+ var import_react_native7 = require("react-native");
402
420
  var useSelectListboxAnimation = (isOpen) => {
403
- const animationOpacity = (0, import_react7.useRef)(new import_react_native6.Animated.Value(0)).current;
404
- const animationScale = (0, import_react7.useRef)(new import_react_native6.Animated.Value(0.98)).current;
405
- (0, import_react7.useEffect)(() => {
421
+ const animationOpacity = (0, import_react10.useRef)(new import_react_native7.Animated.Value(0)).current;
422
+ const animationScale = (0, import_react10.useRef)(new import_react_native7.Animated.Value(0.98)).current;
423
+ (0, import_react10.useEffect)(() => {
406
424
  if (!isOpen) {
407
425
  return;
408
426
  }
409
427
  animationOpacity.setValue(0);
410
428
  animationScale.setValue(0.98);
411
- import_react_native6.Animated.parallel([
412
- import_react_native6.Animated.timing(animationOpacity, {
429
+ import_react_native7.Animated.parallel([
430
+ import_react_native7.Animated.timing(animationOpacity, {
413
431
  toValue: 1,
414
432
  duration: 180,
415
433
  useNativeDriver: true
416
434
  }),
417
- import_react_native6.Animated.timing(animationScale, {
435
+ import_react_native7.Animated.timing(animationScale, {
418
436
  toValue: 1,
419
437
  duration: 180,
420
438
  useNativeDriver: true
@@ -425,16 +443,16 @@ var useSelectListboxAnimation = (isOpen) => {
425
443
  };
426
444
 
427
445
  // src/components/select/select.state.hook.ts
428
- var import_react8 = require("react");
446
+ var import_react11 = require("react");
429
447
  var useSelectOpenState = ({
430
448
  isOpened,
431
449
  isDisabled,
432
450
  onOpenChange,
433
451
  onClose
434
452
  }) => {
435
- const [internalOpen, setInternalOpen] = (0, import_react8.useState)(false);
453
+ const [internalOpen, setInternalOpen] = (0, import_react11.useState)(false);
436
454
  const isOpen = isOpened ?? internalOpen;
437
- const setOpen = (0, import_react8.useCallback)(
455
+ const setOpen = (0, import_react11.useCallback)(
438
456
  (nextOpen) => {
439
457
  if (nextOpen && isDisabled) {
440
458
  return;
@@ -458,12 +476,12 @@ var useSelectSelection = ({
458
476
  onSelectionChange,
459
477
  onClear
460
478
  }) => {
461
- const [internalSelectedKeys, setInternalSelectedKeys] = (0, import_react8.useState)(
479
+ const [internalSelectedKeys, setInternalSelectedKeys] = (0, import_react11.useState)(
462
480
  defaultSelectedKeys ?? []
463
481
  );
464
482
  const isControlledSelection = selectedKeys !== void 0;
465
483
  const currentSelectedKeys = isControlledSelection ? selectedKeys ?? [] : internalSelectedKeys;
466
- const updateSelection = (0, import_react8.useCallback)(
484
+ const updateSelection = (0, import_react11.useCallback)(
467
485
  (nextKeys) => {
468
486
  if (!isControlledSelection) {
469
487
  setInternalSelectedKeys(nextKeys);
@@ -475,7 +493,7 @@ var useSelectSelection = ({
475
493
  },
476
494
  [isControlledSelection, onSelectionChange, onClear]
477
495
  );
478
- const getNextSelection = (0, import_react8.useCallback)(
496
+ const getNextSelection = (0, import_react11.useCallback)(
479
497
  (key) => {
480
498
  const isAlreadySelected = currentSelectedKeys.includes(key);
481
499
  if (selectionMode === "multiple") {
@@ -491,13 +509,13 @@ var useSelectSelection = ({
491
509
  return { currentSelectedKeys, updateSelection, getNextSelection };
492
510
  };
493
511
  var useSelectTriggerMeasurements = (isOpen) => {
494
- const triggerRef = (0, import_react8.useRef)(null);
495
- const [triggerWidth, setTriggerWidth] = (0, import_react8.useState)(null);
496
- const [triggerPosition, setTriggerPosition] = (0, import_react8.useState)(null);
497
- const handleTriggerLayout = (0, import_react8.useCallback)((event) => {
512
+ const triggerRef = (0, import_react11.useRef)(null);
513
+ const [triggerWidth, setTriggerWidth] = (0, import_react11.useState)(null);
514
+ const [triggerPosition, setTriggerPosition] = (0, import_react11.useState)(null);
515
+ const handleTriggerLayout = (0, import_react11.useCallback)((event) => {
498
516
  setTriggerWidth(event.nativeEvent.layout.width);
499
517
  }, []);
500
- (0, import_react8.useEffect)(() => {
518
+ (0, import_react11.useEffect)(() => {
501
519
  if (!isOpen) {
502
520
  return;
503
521
  }
@@ -566,13 +584,13 @@ var Select = ({
566
584
  });
567
585
  const { triggerRef, triggerWidth, triggerPosition, handleTriggerLayout } = useSelectTriggerMeasurements(isOpen);
568
586
  const { animationOpacity, animationScale } = useSelectListboxAnimation(isOpen);
569
- const disabledKeySet = (0, import_react9.useMemo)(() => {
587
+ const disabledKeySet = (0, import_react12.useMemo)(() => {
570
588
  return new Set(disabledKeys ?? []);
571
589
  }, [disabledKeys]);
572
- const items = (0, import_react9.useMemo)(() => {
573
- const elements = import_react9.default.Children.toArray(children).filter(Boolean);
590
+ const items = (0, import_react12.useMemo)(() => {
591
+ const elements = import_react12.default.Children.toArray(children).filter(Boolean);
574
592
  return elements.map((child, index) => {
575
- if (!import_react9.default.isValidElement(child)) {
593
+ if (!import_react12.default.isValidElement(child)) {
576
594
  return null;
577
595
  }
578
596
  const key = child.props.value ?? String(index);
@@ -584,7 +602,7 @@ var Select = ({
584
602
  };
585
603
  }).filter((item) => item !== null);
586
604
  }, [children]);
587
- const selectedLabels = (0, import_react9.useMemo)(() => {
605
+ const selectedLabels = (0, import_react12.useMemo)(() => {
588
606
  const labelMap = new Map(items.map((item) => [item.key, item.labelText]));
589
607
  return currentSelectedKeys.map((key) => labelMap.get(key)).filter((value) => Boolean(value));
590
608
  }, [currentSelectedKeys, items]);
@@ -598,7 +616,7 @@ var Select = ({
598
616
  const valueColor = useSelectValueColor(isInvalid, shouldShowPlaceholder);
599
617
  const helperColor = useSelectHelperColor(isInvalid);
600
618
  const selectorColor = useSelectSelectorColor(isInvalid, shouldShowPlaceholder);
601
- const handleItemSelection = (0, import_react9.useCallback)(
619
+ const handleItemSelection = (0, import_react12.useCallback)(
602
620
  (key) => {
603
621
  if (isDisabled) {
604
622
  return;
@@ -629,13 +647,13 @@ var Select = ({
629
647
  const handleOverlayPress = () => {
630
648
  setOpen(false);
631
649
  };
632
- const renderLabel = label ? typeof label === "string" || typeof label === "number" ? /* @__PURE__ */ import_react9.default.createElement(import_react_native7.Text, { style: [styles.label, labelStyle] }, label) : /* @__PURE__ */ import_react9.default.createElement(import_react_native7.View, null, label) : null;
650
+ const renderLabel = label ? typeof label === "string" || typeof label === "number" ? /* @__PURE__ */ import_react12.default.createElement(import_react_native8.Text, { style: [styles.label, labelStyle] }, label) : /* @__PURE__ */ import_react12.default.createElement(import_react_native8.View, null, label) : null;
633
651
  const dialogTitle = typeof label === "string" || typeof label === "number" ? String(label) : void 0;
634
652
  const shouldShowHelper = Boolean(hint || errorMessage);
635
653
  const helperContent = isInvalid && errorMessage ? errorMessage : hint;
636
654
  const listboxWidth = fullWidth ? triggerWidth ?? triggerPosition?.width ?? 200 : 280;
637
- const screenWidth = import_react_native7.Dimensions.get("window").width;
638
- const listboxPosition = (0, import_react9.useMemo)(() => {
655
+ const screenWidth = import_react_native8.Dimensions.get("window").width;
656
+ const listboxPosition = (0, import_react12.useMemo)(() => {
639
657
  if (!triggerPosition) {
640
658
  return { top: 0, left: 0 };
641
659
  }
@@ -656,7 +674,7 @@ var Select = ({
656
674
  handleItemSelection(item.key);
657
675
  itemProps.onSelected?.();
658
676
  };
659
- return import_react9.default.cloneElement(item.element, {
677
+ return import_react12.default.cloneElement(item.element, {
660
678
  key: item.key,
661
679
  isDisabled: itemDisabled,
662
680
  isSelected: itemSelected,
@@ -666,7 +684,7 @@ var Select = ({
666
684
  const isLabelInside = labelPlacement === "inside";
667
685
  const isLabelOutsideLeft = labelPlacement === "outside-left";
668
686
  const isLabelOutside = labelPlacement === "outside" || labelPlacement === "outside-top";
669
- const triggerContent = /* @__PURE__ */ import_react9.default.createElement(
687
+ const triggerContent = /* @__PURE__ */ import_react12.default.createElement(
670
688
  SelectTrigger,
671
689
  {
672
690
  triggerRef,
@@ -694,16 +712,16 @@ var Select = ({
694
712
  }
695
713
  );
696
714
  const labelBlock = isLabelOutside || isLabelInside ? renderLabel : null;
697
- return /* @__PURE__ */ import_react9.default.createElement(import_react_native7.View, { style: [styles.container, fullWidth ? styles.fullWidth : styles.minWidth] }, isLabelOutside && labelBlock, isLabelOutsideLeft ? /* @__PURE__ */ import_react9.default.createElement(import_react_native7.View, { style: styles.outsideLeftRow }, renderLabel, triggerContent) : triggerContent, shouldShowHelper && helperContent ? typeof helperContent === "string" || typeof helperContent === "number" ? /* @__PURE__ */ import_react9.default.createElement(import_react_native7.Text, { style: [styles.helperText, { color: helperColor }] }, helperContent) : /* @__PURE__ */ import_react9.default.createElement(import_react_native7.View, null, helperContent) : null, /* @__PURE__ */ import_react9.default.createElement(
698
- import_react_native7.Modal,
715
+ return /* @__PURE__ */ import_react12.default.createElement(import_react_native8.View, { style: [styles.container, fullWidth ? styles.fullWidth : styles.minWidth] }, isLabelOutside && labelBlock, isLabelOutsideLeft ? /* @__PURE__ */ import_react12.default.createElement(import_react_native8.View, { style: styles.outsideLeftRow }, renderLabel, triggerContent) : triggerContent, shouldShowHelper && helperContent ? typeof helperContent === "string" || typeof helperContent === "number" ? /* @__PURE__ */ import_react12.default.createElement(import_react_native8.Text, { style: [styles.helperText, { color: helperColor }] }, helperContent) : /* @__PURE__ */ import_react12.default.createElement(import_react_native8.View, null, helperContent) : null, /* @__PURE__ */ import_react12.default.createElement(
716
+ import_react_native8.Modal,
699
717
  {
700
718
  visible: isOpen,
701
719
  transparent: true,
702
720
  animationType: "fade",
703
721
  onRequestClose: handleOverlayPress
704
722
  },
705
- /* @__PURE__ */ import_react9.default.createElement(import_react_native7.Pressable, { style: styles.overlay, onPress: handleOverlayPress }, /* @__PURE__ */ import_react9.default.createElement(
706
- import_react_native7.Animated.View,
723
+ /* @__PURE__ */ import_react12.default.createElement(import_react_native8.Pressable, { style: styles.overlay, onPress: handleOverlayPress }, /* @__PURE__ */ import_react12.default.createElement(
724
+ import_react_native8.Animated.View,
707
725
  {
708
726
  style: [
709
727
  styles.listbox,
@@ -721,26 +739,26 @@ var Select = ({
721
739
  }
722
740
  ]
723
741
  },
724
- /* @__PURE__ */ import_react9.default.createElement(import_react_native7.Pressable, { onPress: (event) => event.stopPropagation(), style: { flex: 1 } }, /* @__PURE__ */ import_react9.default.createElement(SelectContext.Provider, { value: { size, themeColor, isDisabled } }, /* @__PURE__ */ import_react9.default.createElement(import_react_native7.View, { style: styles.listboxContent }, dialogTitle ? /* @__PURE__ */ import_react9.default.createElement(
725
- import_react_native7.Text,
742
+ /* @__PURE__ */ import_react12.default.createElement(import_react_native8.Pressable, { onPress: (event) => event.stopPropagation(), style: { flex: 1 } }, /* @__PURE__ */ import_react12.default.createElement(SelectContext.Provider, { value: { size, themeColor, isDisabled } }, /* @__PURE__ */ import_react12.default.createElement(import_react_native8.View, { style: styles.listboxContent }, dialogTitle ? /* @__PURE__ */ import_react12.default.createElement(
743
+ import_react_native8.Text,
726
744
  {
727
745
  style: [styles.dialogTitle, { color: theme.colors.foreground }]
728
746
  },
729
747
  dialogTitle
730
- ) : null, /* @__PURE__ */ import_react9.default.createElement(import_react_native7.ScrollView, null, listItems))))
748
+ ) : null, /* @__PURE__ */ import_react12.default.createElement(import_react_native8.ScrollView, { style: { maxHeight: maxListboxHeight } }, listItems))))
731
749
  ))
732
750
  ));
733
751
  };
734
752
 
735
753
  // src/components/select/select-item.tsx
736
- var import_react12 = __toESM(require("react"), 1);
737
- var import_react_native9 = require("react-native");
754
+ var import_react15 = __toESM(require("react"), 1);
755
+ var import_react_native10 = require("react-native");
738
756
 
739
757
  // src/components/select/checkmark-icon.tsx
740
- var import_react10 = __toESM(require("react"), 1);
758
+ var import_react13 = __toESM(require("react"), 1);
741
759
  var import_react_native_svg2 = __toESM(require("react-native-svg"), 1);
742
760
  function CheckmarkIcon({ color, size }) {
743
- return /* @__PURE__ */ import_react10.default.createElement(import_react_native_svg2.default, { width: size, height: size, viewBox: "0 0 17 18", fill: "none" }, /* @__PURE__ */ import_react10.default.createElement(
761
+ return /* @__PURE__ */ import_react13.default.createElement(import_react_native_svg2.default, { width: size, height: size, viewBox: "0 0 17 18", fill: "none" }, /* @__PURE__ */ import_react13.default.createElement(
744
762
  import_react_native_svg2.Polyline,
745
763
  {
746
764
  points: "1 9 7 14 15 4",
@@ -753,11 +771,11 @@ function CheckmarkIcon({ color, size }) {
753
771
  }
754
772
 
755
773
  // src/components/select/select-item.hook.ts
756
- var import_react11 = require("react");
774
+ var import_react14 = require("react");
757
775
  var import_core4 = require("@xaui/core");
758
776
  var useSelectItemSizeStyles = (size) => {
759
777
  const theme = useXUITheme();
760
- return (0, import_react11.useMemo)(() => {
778
+ return (0, import_react14.useMemo)(() => {
761
779
  const sizes = {
762
780
  xs: {
763
781
  paddingVertical: theme.spacing.sm,
@@ -791,7 +809,7 @@ var useSelectItemBackgroundColor = (themeColor, isSelected) => {
791
809
  const theme = useXUITheme();
792
810
  const safeThemeColor = (0, import_core4.getSafeThemeColor)(themeColor);
793
811
  const colorScheme = theme.colors[safeThemeColor];
794
- return (0, import_react11.useMemo)(() => {
812
+ return (0, import_react14.useMemo)(() => {
795
813
  if (isSelected) {
796
814
  return colorScheme.background;
797
815
  }
@@ -800,7 +818,7 @@ var useSelectItemBackgroundColor = (themeColor, isSelected) => {
800
818
  };
801
819
  var useSelectItemTextColors = () => {
802
820
  const theme = useXUITheme();
803
- return (0, import_react11.useMemo)(() => {
821
+ return (0, import_react14.useMemo)(() => {
804
822
  return {
805
823
  textColor: theme.colors.foreground,
806
824
  descriptionColor: theme.colors.foreground
@@ -811,7 +829,7 @@ var useSelectItemCheckmarkColor = (themeColor) => {
811
829
  const theme = useXUITheme();
812
830
  const safeThemeColor = (0, import_core4.getSafeThemeColor)(themeColor);
813
831
  const colorScheme = theme.colors[safeThemeColor];
814
- return (0, import_react11.useMemo)(() => {
832
+ return (0, import_react14.useMemo)(() => {
815
833
  if (themeColor === "default") {
816
834
  return theme.colors.primary.main;
817
835
  }
@@ -820,8 +838,8 @@ var useSelectItemCheckmarkColor = (themeColor) => {
820
838
  };
821
839
 
822
840
  // src/components/select/select-item.style.ts
823
- var import_react_native8 = require("react-native");
824
- var styles2 = import_react_native8.StyleSheet.create({
841
+ var import_react_native9 = require("react-native");
842
+ var styles2 = import_react_native9.StyleSheet.create({
825
843
  item: {
826
844
  flexDirection: "row",
827
845
  alignItems: "center",
@@ -857,7 +875,7 @@ var SelectItem = ({
857
875
  textStyle,
858
876
  onSelected
859
877
  }) => {
860
- const context = (0, import_react12.useContext)(SelectContext);
878
+ const context = (0, import_react15.useContext)(SelectContext);
861
879
  const size = context?.size ?? defaultSize;
862
880
  const themeColor = context?.themeColor ?? "default";
863
881
  const isItemDisabled = context?.isDisabled ? true : isDisabled;
@@ -871,8 +889,8 @@ var SelectItem = ({
871
889
  }
872
890
  onSelected?.();
873
891
  };
874
- return /* @__PURE__ */ import_react12.default.createElement(
875
- import_react_native9.Pressable,
892
+ return /* @__PURE__ */ import_react15.default.createElement(
893
+ import_react_native10.Pressable,
876
894
  {
877
895
  onPress: handlePress,
878
896
  disabled: isItemDisabled,
@@ -888,8 +906,8 @@ var SelectItem = ({
888
906
  ]
889
907
  },
890
908
  startContent,
891
- /* @__PURE__ */ import_react12.default.createElement(import_react_native9.View, { style: styles2.content }, /* @__PURE__ */ import_react12.default.createElement(
892
- import_react_native9.Text,
909
+ /* @__PURE__ */ import_react15.default.createElement(import_react_native10.View, { style: styles2.content }, /* @__PURE__ */ import_react15.default.createElement(
910
+ import_react_native10.Text,
893
911
  {
894
912
  style: [
895
913
  styles2.title,
@@ -898,8 +916,8 @@ var SelectItem = ({
898
916
  ]
899
917
  },
900
918
  label
901
- ), description && /* @__PURE__ */ import_react12.default.createElement(
902
- import_react_native9.Text,
919
+ ), description && /* @__PURE__ */ import_react15.default.createElement(
920
+ import_react_native10.Text,
903
921
  {
904
922
  style: [
905
923
  styles2.description,
@@ -908,7 +926,7 @@ var SelectItem = ({
908
926
  },
909
927
  description
910
928
  )),
911
- isSelected && (selectedIcon || /* @__PURE__ */ import_react12.default.createElement(CheckmarkIcon, { color: checkmarkColor, size: 16 })),
929
+ isSelected && (selectedIcon || /* @__PURE__ */ import_react15.default.createElement(CheckmarkIcon, { color: checkmarkColor, size: 16 })),
912
930
  endContent
913
931
  );
914
932
  };
@@ -1,6 +1,9 @@
1
+ import {
2
+ CheckmarkIcon
3
+ } from "../chunk-GBHQCAKW.js";
1
4
  import {
2
5
  useXUITheme
3
- } from "../chunk-ORMNMNOK.js";
6
+ } from "../chunk-NBRASCX4.js";
4
7
 
5
8
  // src/components/select/select.tsx
6
9
  import React3, { useCallback as useCallback2, useMemo as useMemo2 } from "react";
@@ -683,31 +686,15 @@ var Select = ({
683
686
  style: [styles.dialogTitle, { color: theme.colors.foreground }]
684
687
  },
685
688
  dialogTitle
686
- ) : null, /* @__PURE__ */ React3.createElement(ScrollView, null, listItems))))
689
+ ) : null, /* @__PURE__ */ React3.createElement(ScrollView, { style: { maxHeight: maxListboxHeight } }, listItems))))
687
690
  ))
688
691
  ));
689
692
  };
690
693
 
691
694
  // src/components/select/select-item.tsx
692
- import React5, { useContext } from "react";
695
+ import React4, { useContext } from "react";
693
696
  import { Pressable as Pressable3, Text as Text3, View as View3 } from "react-native";
694
697
 
695
- // src/components/select/checkmark-icon.tsx
696
- import React4 from "react";
697
- import Svg2, { Polyline } from "react-native-svg";
698
- function CheckmarkIcon({ color, size }) {
699
- return /* @__PURE__ */ React4.createElement(Svg2, { width: size, height: size, viewBox: "0 0 17 18", fill: "none" }, /* @__PURE__ */ React4.createElement(
700
- Polyline,
701
- {
702
- points: "1 9 7 14 15 4",
703
- stroke: color,
704
- strokeWidth: 2,
705
- strokeLinecap: "round",
706
- strokeLinejoin: "round"
707
- }
708
- ));
709
- }
710
-
711
698
  // src/components/select/select-item.hook.ts
712
699
  import { useMemo as useMemo3 } from "react";
713
700
  import { getSafeThemeColor as getSafeThemeColor2 } from "@xaui/core";
@@ -827,7 +814,7 @@ var SelectItem = ({
827
814
  }
828
815
  onSelected?.();
829
816
  };
830
- return /* @__PURE__ */ React5.createElement(
817
+ return /* @__PURE__ */ React4.createElement(
831
818
  Pressable3,
832
819
  {
833
820
  onPress: handlePress,
@@ -844,7 +831,7 @@ var SelectItem = ({
844
831
  ]
845
832
  },
846
833
  startContent,
847
- /* @__PURE__ */ React5.createElement(View3, { style: styles2.content }, /* @__PURE__ */ React5.createElement(
834
+ /* @__PURE__ */ React4.createElement(View3, { style: styles2.content }, /* @__PURE__ */ React4.createElement(
848
835
  Text3,
849
836
  {
850
837
  style: [
@@ -854,7 +841,7 @@ var SelectItem = ({
854
841
  ]
855
842
  },
856
843
  label
857
- ), description && /* @__PURE__ */ React5.createElement(
844
+ ), description && /* @__PURE__ */ React4.createElement(
858
845
  Text3,
859
846
  {
860
847
  style: [
@@ -864,7 +851,7 @@ var SelectItem = ({
864
851
  },
865
852
  description
866
853
  )),
867
- isSelected && (selectedIcon || /* @__PURE__ */ React5.createElement(CheckmarkIcon, { color: checkmarkColor, size: 16 })),
854
+ isSelected && (selectedIcon || /* @__PURE__ */ React4.createElement(CheckmarkIcon, { color: checkmarkColor, size: 16 })),
868
855
  endContent
869
856
  );
870
857
  };