@korsolutions/ui 0.0.42 → 0.0.44

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 (66) hide show
  1. package/dist/module/components/button/variants/default.js +5 -14
  2. package/dist/module/components/button/variants/default.js.map +1 -1
  3. package/dist/module/components/button/variants/secondary.js +1 -2
  4. package/dist/module/components/button/variants/secondary.js.map +1 -1
  5. package/dist/module/hooks/use-relative-position.js.map +1 -1
  6. package/dist/module/primitives/autocomplete/autocomplete-content.js +9 -5
  7. package/dist/module/primitives/autocomplete/autocomplete-content.js.map +1 -1
  8. package/dist/module/primitives/autocomplete/autocomplete-input.js +1 -7
  9. package/dist/module/primitives/autocomplete/autocomplete-input.js.map +1 -1
  10. package/dist/module/primitives/autocomplete/autocomplete-option.js +15 -7
  11. package/dist/module/primitives/autocomplete/autocomplete-option.js.map +1 -1
  12. package/dist/module/primitives/autocomplete/autocomplete-overlay.js +10 -6
  13. package/dist/module/primitives/autocomplete/autocomplete-overlay.js.map +1 -1
  14. package/dist/module/primitives/autocomplete/autocomplete-portal.js +2 -10
  15. package/dist/module/primitives/autocomplete/autocomplete-portal.js.map +1 -1
  16. package/dist/module/primitives/autocomplete/autocomplete-root.js +10 -10
  17. package/dist/module/primitives/autocomplete/autocomplete-root.js.map +1 -1
  18. package/dist/module/primitives/autocomplete/context.js.map +1 -1
  19. package/dist/module/primitives/button/button-label.js +3 -2
  20. package/dist/module/primitives/button/button-label.js.map +1 -1
  21. package/dist/module/primitives/button/button-root.js +23 -3
  22. package/dist/module/primitives/button/button-root.js.map +1 -1
  23. package/dist/module/primitives/calendar/calendar-day.js +0 -1
  24. package/dist/module/primitives/calendar/calendar-day.js.map +1 -1
  25. package/dist/module/primitives/empty/empty-description.js +1 -2
  26. package/dist/module/primitives/empty/empty-description.js.map +1 -1
  27. package/dist/module/primitives/popover/popover-content.js +4 -1
  28. package/dist/module/primitives/popover/popover-content.js.map +1 -1
  29. package/dist/typescript/src/components/button/variants/default.d.ts.map +1 -1
  30. package/dist/typescript/src/components/button/variants/secondary.d.ts.map +1 -1
  31. package/dist/typescript/src/hooks/use-relative-position.d.ts +2 -2
  32. package/dist/typescript/src/hooks/use-relative-position.d.ts.map +1 -1
  33. package/dist/typescript/src/primitives/autocomplete/autocomplete-content.d.ts.map +1 -1
  34. package/dist/typescript/src/primitives/autocomplete/autocomplete-input.d.ts.map +1 -1
  35. package/dist/typescript/src/primitives/autocomplete/autocomplete-option.d.ts.map +1 -1
  36. package/dist/typescript/src/primitives/autocomplete/autocomplete-overlay.d.ts +0 -1
  37. package/dist/typescript/src/primitives/autocomplete/autocomplete-overlay.d.ts.map +1 -1
  38. package/dist/typescript/src/primitives/autocomplete/autocomplete-portal.d.ts +1 -1
  39. package/dist/typescript/src/primitives/autocomplete/autocomplete-portal.d.ts.map +1 -1
  40. package/dist/typescript/src/primitives/autocomplete/autocomplete-root.d.ts +0 -5
  41. package/dist/typescript/src/primitives/autocomplete/autocomplete-root.d.ts.map +1 -1
  42. package/dist/typescript/src/primitives/autocomplete/context.d.ts +5 -6
  43. package/dist/typescript/src/primitives/autocomplete/context.d.ts.map +1 -1
  44. package/dist/typescript/src/primitives/button/button-label.d.ts +0 -1
  45. package/dist/typescript/src/primitives/button/button-label.d.ts.map +1 -1
  46. package/dist/typescript/src/primitives/button/button-root.d.ts +0 -1
  47. package/dist/typescript/src/primitives/button/button-root.d.ts.map +1 -1
  48. package/dist/typescript/src/primitives/calendar/calendar-day.d.ts.map +1 -1
  49. package/dist/typescript/src/primitives/popover/popover-content.d.ts.map +1 -1
  50. package/nodemon.json +14 -0
  51. package/package.json +3 -1
  52. package/src/components/button/variants/default.tsx +6 -15
  53. package/src/components/button/variants/secondary.tsx +1 -2
  54. package/src/hooks/use-relative-position.ts +4 -4
  55. package/src/primitives/autocomplete/autocomplete-content.tsx +12 -3
  56. package/src/primitives/autocomplete/autocomplete-input.tsx +1 -7
  57. package/src/primitives/autocomplete/autocomplete-option.tsx +16 -8
  58. package/src/primitives/autocomplete/autocomplete-overlay.tsx +16 -8
  59. package/src/primitives/autocomplete/autocomplete-portal.tsx +2 -12
  60. package/src/primitives/autocomplete/autocomplete-root.tsx +10 -16
  61. package/src/primitives/autocomplete/context.ts +4 -5
  62. package/src/primitives/button/button-label.tsx +7 -4
  63. package/src/primitives/button/button-root.tsx +33 -5
  64. package/src/primitives/calendar/calendar-day.tsx +1 -2
  65. package/src/primitives/empty/empty-description.tsx +2 -2
  66. package/src/primitives/popover/popover-content.tsx +3 -0
@@ -1,4 +1,4 @@
1
- import { type LayoutRectangle, type ScaledSize } from "react-native";
1
+ import { type DisplayMetrics, type LayoutRectangle } from "react-native";
2
2
  interface Insets {
3
3
  top?: number;
4
4
  bottom?: number;
@@ -29,7 +29,7 @@ export interface LayoutPosition {
29
29
  height: number;
30
30
  }
31
31
  interface GetPositionArgs {
32
- dimensions: ScaledSize;
32
+ dimensions: DisplayMetrics;
33
33
  avoidCollisions: boolean;
34
34
  triggerPosition: LayoutPosition;
35
35
  contentLayout: LayoutRectangle;
@@ -1 +1 @@
1
- {"version":3,"file":"use-relative-position.d.ts","sourceRoot":"","sources":["../../../../src/hooks/use-relative-position.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1F,UAAU,MAAM;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,uBAAuB,GAAG,IAAI,CAAC,mBAAmB,EAAE,iBAAiB,GAAG,eAAe,GAAG,YAAY,CAAC,GAAG;IAC7G,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,aAAa,EAAE,eAAe,GAAG,IAAI,CAAC;CACvC,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,eAAe,EACf,eAAe,EACf,aAAa,EACb,WAAW,EACX,MAAM,EACN,UAAU,EACV,IAAI,GACL,EAAE,uBAAuB;;;;;;;;;;;;EAwBzB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,eAAe;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,cAAc,CAAC;IAChC,aAAa,EAAE,eAAe,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,mBAAoB,SAAQ,eAAe;IACnD,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,EAAE,eAAqD,CAAC;AACnF,eAAO,MAAM,gBAAgB,EAAE,cAA4D,CAAC;AAyB5F,UAAU,oBAAqB,SAAQ,eAAe;IACpD,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB;AAsDD,KAAK,mBAAmB,GAAG,eAAe,GAAG,mBAAmB,GAAG,oBAAoB,CAAC"}
1
+ {"version":3,"file":"use-relative-position.d.ts","sourceRoot":"","sources":["../../../../src/hooks/use-relative-position.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAE9F,UAAU,MAAM;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,uBAAuB,GAAG,IAAI,CAAC,mBAAmB,EAAE,iBAAiB,GAAG,eAAe,GAAG,YAAY,CAAC,GAAG;IAC7G,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,aAAa,EAAE,eAAe,GAAG,IAAI,CAAC;CACvC,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,eAAe,EACf,eAAe,EACf,aAAa,EACb,WAAW,EACX,MAAM,EACN,UAAU,EACV,IAAI,GACL,EAAE,uBAAuB;;;;;;;;;;;;EAwBzB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,eAAe;IACvB,UAAU,EAAE,cAAc,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,cAAc,CAAC;IAChC,aAAa,EAAE,eAAe,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,mBAAoB,SAAQ,eAAe;IACnD,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,EAAE,eAAqD,CAAC;AACnF,eAAO,MAAM,gBAAgB,EAAE,cAA4D,CAAC;AAyB5F,UAAU,oBAAqB,SAAQ,eAAe;IACpD,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB;AAsDD,KAAK,mBAAmB,GAAG,eAAe,GAAG,mBAAmB,GAAG,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-content.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/autocomplete/autocomplete-content.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAG1E,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,qBA0BlE"}
1
+ {"version":3,"file":"autocomplete-content.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/autocomplete/autocomplete-content.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAG1E,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,qBAkClE"}
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-input.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/autocomplete/autocomplete-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,OAAO,EAAyB,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI1G,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,OAAO,CAAC;IACxF,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,eAAO,MAAM,iBAAiB,iHA2E5B,CAAC"}
1
+ {"version":3,"file":"autocomplete-input.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/autocomplete/autocomplete-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAyB,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI1G,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,OAAO,CAAC;IACxF,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,eAAO,MAAM,iBAAiB,iHAsE5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-option.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/autocomplete/autocomplete-option.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIpE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,KAAK,CAAC,YAAY,CAAC;IAChE,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAeD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,+BAqChE"}
1
+ {"version":3,"file":"autocomplete-option.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/autocomplete/autocomplete-option.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIpE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,KAAK,CAAC,YAAY,CAAC;IAChE,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAeD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,+BA4ChE"}
@@ -4,7 +4,6 @@ export interface AutocompleteOverlayProps {
4
4
  children?: React.ReactNode;
5
5
  onPress?: () => void;
6
6
  style?: StyleProp<ViewStyle>;
7
- render?: (props: AutocompleteOverlayProps) => React.ReactElement;
8
7
  }
9
8
  export declare function AutocompleteOverlay(props: AutocompleteOverlayProps): React.JSX.Element;
10
9
  //# sourceMappingURL=autocomplete-overlay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-overlay.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/autocomplete/autocomplete-overlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAa,KAAK,SAAS,EAAc,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGrF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,KAAK,CAAC,YAAY,CAAC;CAClE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,qBAgBlE"}
1
+ {"version":3,"file":"autocomplete-overlay.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/autocomplete/autocomplete-overlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAa,KAAK,SAAS,EAAc,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGrF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,qBAyBlE"}
@@ -2,5 +2,5 @@ import React from "react";
2
2
  export interface AutocompletePortalProps {
3
3
  children?: React.ReactNode;
4
4
  }
5
- export declare function AutocompletePortal(props: AutocompletePortalProps): React.JSX.Element | null;
5
+ export declare function AutocompletePortal(props: AutocompletePortalProps): React.JSX.Element;
6
6
  //# sourceMappingURL=autocomplete-portal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-portal.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/autocomplete/autocomplete-portal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAIzC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,4BAkBhE"}
1
+ {"version":3,"file":"autocomplete-portal.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/autocomplete/autocomplete-portal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,qBAQhE"}
@@ -1,9 +1,6 @@
1
1
  import React from "react";
2
2
  import { type StyleProp, type ViewStyle } from "react-native";
3
3
  import type { AutocompleteStyles } from "./types";
4
- interface AutocompleteRootInjectedProps {
5
- style?: StyleProp<ViewStyle>;
6
- }
7
4
  export interface AutocompleteRootBaseProps {
8
5
  value?: string;
9
6
  onChange?: (value: string) => void;
@@ -15,10 +12,8 @@ export interface AutocompleteRootBaseProps {
15
12
  }
16
13
  export interface AutocompleteRootProps extends AutocompleteRootBaseProps {
17
14
  children?: React.ReactNode;
18
- render?: (props: AutocompleteRootInjectedProps) => React.ReactElement;
19
15
  styles?: AutocompleteStyles;
20
16
  style?: StyleProp<ViewStyle>;
21
17
  }
22
18
  export declare function AutocompleteRoot(props: AutocompleteRootProps): React.JSX.Element;
23
- export {};
24
19
  //# sourceMappingURL=autocomplete-root.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-root.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/autocomplete/autocomplete-root.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAwB,KAAK,SAAS,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1F,OAAO,KAAK,EAAyC,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEzF,UAAU,6BAA6B;IACrC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,qBAAsB,SAAQ,yBAAyB;IACtE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,KAAK,CAAC,YAAY,CAAC;IACtE,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAYD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,qBAwE5D"}
1
+ {"version":3,"file":"autocomplete-root.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/autocomplete/autocomplete-root.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAwB,KAAK,SAAS,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1F,OAAO,KAAK,EAAyC,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEzF,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,qBAAsB,SAAQ,yBAAyB;IACtE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAYD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,qBAqE5D"}
@@ -1,5 +1,6 @@
1
1
  import type { LayoutPosition } from "../../hooks";
2
- import { type Dispatch } from "react";
2
+ import type { TextInputRef } from "../../types/element.types";
3
+ import React, { type Dispatch } from "react";
3
4
  import type { LayoutRectangle } from "react-native";
4
5
  import type { AutocompleteOption, AutocompleteState, AutocompleteStyles } from "./types";
5
6
  export interface AutocompleteContext {
@@ -17,14 +18,12 @@ export interface AutocompleteContext {
17
18
  options: Array<AutocompleteOption>;
18
19
  setOptions: Dispatch<React.SetStateAction<Array<AutocompleteOption>>>;
19
20
  openOnFocus: boolean;
20
- blurInput: () => void;
21
- setBlurInput: Dispatch<React.SetStateAction<() => void>>;
22
- setInputDisplayValueSetter: Dispatch<React.SetStateAction<(value: string) => void>>;
23
- setInputDisplayValue: (value: string) => void;
21
+ inputRef: TextInputRef | null;
22
+ setInputRef: Dispatch<React.SetStateAction<TextInputRef | null>>;
24
23
  isDisabled: boolean;
25
24
  state: AutocompleteState;
26
25
  styles: AutocompleteStyles | null;
27
26
  }
28
- export declare const AutocompleteContext: import("react").Context<AutocompleteContext | undefined>;
27
+ export declare const AutocompleteContext: React.Context<AutocompleteContext | undefined>;
29
28
  export declare const useAutocomplete: () => AutocompleteContext;
30
29
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/autocomplete/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAiB,KAAK,QAAQ,EAAc,MAAM,OAAO,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEzF,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,aAAa,EAAE,cAAc,CAAC;IAC9B,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;IACjE,aAAa,EAAE,eAAe,CAAC;IAC/B,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;IAElE,OAAO,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACnC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAEtE,WAAW,EAAE,OAAO,CAAC;IAErB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACzD,0BAA0B,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC;IACpF,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C,UAAU,EAAE,OAAO,CAAC;IAEpB,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,mBAAmB,0DAA4D,CAAC;AAE7F,eAAO,MAAM,eAAe,2BAM3B,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/autocomplete/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,EAAiB,KAAK,QAAQ,EAAc,MAAM,OAAO,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEzF,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,aAAa,EAAE,cAAc,CAAC;IAC9B,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;IACjE,aAAa,EAAE,eAAe,CAAC;IAC/B,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;IAElE,OAAO,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACnC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAEtE,WAAW,EAAE,OAAO,CAAC;IAErB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC;IAEjE,UAAU,EAAE,OAAO,CAAC;IAEpB,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,mBAAmB,gDAA4D,CAAC;AAE7F,eAAO,MAAM,eAAe,2BAM3B,CAAC"}
@@ -2,7 +2,6 @@ import React from "react";
2
2
  import { type StyleProp, type TextStyle } from "react-native";
3
3
  export interface ButtonPrimitiveLabelProps {
4
4
  children?: string;
5
- render?: (props: this) => React.ReactElement;
6
5
  style?: StyleProp<TextStyle>;
7
6
  }
8
7
  export declare function ButtonLabel(props: ButtonPrimitiveLabelProps): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"button-label.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/button/button-label.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,SAAS,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,CAAC,YAAY,CAAC;IAE7C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,yBAAyB,qBAO3D"}
1
+ {"version":3,"file":"button-label.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/button/button-label.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,SAAS,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,yBAAyB,qBAY3D"}
@@ -7,7 +7,6 @@ export interface ButtonPrimitiveRootProps extends PressableProps {
7
7
  isLoading?: boolean;
8
8
  style?: StyleProp<ViewStyle>;
9
9
  styles?: ButtonStyles;
10
- render?: (props: this) => React.ReactElement;
11
10
  }
12
11
  export declare function ButtonRoot(props: ButtonPrimitiveRootProps): React.JSX.Element;
13
12
  //# sourceMappingURL=button-root.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"button-root.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/button/button-root.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAAa,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9F,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,SAAS,CAAC;AAEzD,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC9D,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,CAAC,YAAY,CAAC;CAC9C;AAeD,wBAAgB,UAAU,CAAC,KAAK,EAAE,wBAAwB,qBAazD"}
1
+ {"version":3,"file":"button-root.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/button/button-root.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAA+B,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhH,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,SAAS,CAAC;AAEzD,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC9D,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AA0BD,wBAAgB,UAAU,CAAC,KAAK,EAAE,wBAAwB,qBAgCzD"}
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-day.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/calendar/calendar-day.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI/F,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAClC;AAiBD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,qBAkClD"}
1
+ {"version":3,"file":"calendar-day.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/calendar/calendar-day.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI/F,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAClC;AAiBD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,qBAiClD"}
@@ -1 +1 @@
1
- {"version":3,"file":"popover-content.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/popover/popover-content.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,SAAS,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,KAAK,CAAC,SAAS,CAAC;IAEzD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBA0BxD"}
1
+ {"version":3,"file":"popover-content.d.ts","sourceRoot":"","sources":["../../../../../src/primitives/popover/popover-content.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,SAAS,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,KAAK,CAAC,SAAS,CAAC;IAEzD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBA4BxD"}
package/nodemon.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "watch": [
3
+ "src"
4
+ ],
5
+ "ext": "ts,tsx",
6
+ "ignore": [
7
+ "dist",
8
+ "node_modules",
9
+ "scripts"
10
+ ],
11
+ "exec": "./scripts/build.sh",
12
+ "restartable": "rs",
13
+ "delay": 1000
14
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@korsolutions/ui",
3
- "version": "0.0.42",
3
+ "version": "0.0.44",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -36,6 +36,7 @@
36
36
  }
37
37
  },
38
38
  "scripts": {
39
+ "dev": "nodemon",
39
40
  "prepare": "./scripts/build.sh",
40
41
  "ts-check": "tsc --noEmit"
41
42
  },
@@ -44,6 +45,7 @@
44
45
  "@types/react": "^19.2.3",
45
46
  "@types/react-dom": "^19.2.3",
46
47
  "babel-plugin-module-resolver": "^5.0.2",
48
+ "nodemon": "^3.1.11",
47
49
  "react-native-builder-bob": "^0.40.17",
48
50
  "tsc-alias": "^1.8.16",
49
51
  "typescript": "^5.9.3"
@@ -22,7 +22,7 @@ export const useButtonVariantDefault = (): ButtonStyles => {
22
22
  opacity: 0.5,
23
23
  },
24
24
  loading: {
25
- opacity: 0.8,
25
+ opacity: 0.5,
26
26
  },
27
27
  hovered: {
28
28
  backgroundColor: hslaSetRelativeLightness(colors.primary, -10),
@@ -32,27 +32,18 @@ export const useButtonVariantDefault = (): ButtonStyles => {
32
32
  default: {
33
33
  color: colors.primaryForeground,
34
34
  fontSize,
35
- fontWeight: "bold",
36
35
  fontFamily,
37
36
  },
38
- disabled: {
39
- color: colors.mutedForeground,
40
- },
41
- loading: {
42
- color: colors.mutedForeground,
43
- },
37
+ disabled: {},
38
+ loading: {},
44
39
  },
45
40
  spinner: {
46
41
  default: {
47
42
  color: colors.primaryForeground,
48
43
  },
49
- disabled: {
50
- color: colors.mutedForeground,
51
- },
52
- loading: {
53
- color: colors.mutedForeground,
54
- },
44
+ disabled: {},
45
+ loading: {},
55
46
  },
56
- })
47
+ }),
57
48
  );
58
49
  };
@@ -22,7 +22,7 @@ export const useButtonVariantSecondary = (): ButtonStyles => {
22
22
  opacity: 0.5,
23
23
  },
24
24
  loading: {
25
- opacity: 0.8,
25
+ opacity: 0.5,
26
26
  },
27
27
  hovered: {
28
28
  backgroundColor: hslaSetRelativeLightness(colors.secondary, -1),
@@ -32,7 +32,6 @@ export const useButtonVariantSecondary = (): ButtonStyles => {
32
32
  default: {
33
33
  color: colors.secondaryForeground,
34
34
  fontSize,
35
- fontWeight: "bold",
36
35
  fontFamily,
37
36
  },
38
37
  disabled: {
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { useWindowDimensions, type LayoutRectangle, type ScaledSize } from "react-native";
2
+ import { useWindowDimensions, type DisplayMetrics, type LayoutRectangle } from "react-native";
3
3
 
4
4
  interface Insets {
5
5
  top?: number;
@@ -56,7 +56,7 @@ export interface LayoutPosition {
56
56
  }
57
57
 
58
58
  interface GetPositionArgs {
59
- dimensions: ScaledSize;
59
+ dimensions: DisplayMetrics;
60
60
  avoidCollisions: boolean;
61
61
  triggerPosition: LayoutPosition;
62
62
  contentLayout: LayoutRectangle;
@@ -136,7 +136,7 @@ function getLeftPosition(
136
136
  alignOffset: number,
137
137
  insetLeft: number,
138
138
  insetRight: number,
139
- dimensions: ScaledSize
139
+ dimensions: DisplayMetrics,
140
140
  ) {
141
141
  let left = 0;
142
142
  if (align === "start") {
@@ -183,6 +183,6 @@ function getContentStyle({
183
183
  alignOffset,
184
184
  insets,
185
185
  dimensions,
186
- })
186
+ }),
187
187
  );
188
188
  }
@@ -1,4 +1,5 @@
1
1
  import { useRelativePosition } from "@/hooks/use-relative-position";
2
+ import { useSafeAreaInsets } from "@/safe-area";
2
3
  import { calculateComposedStyles } from "@/utils/calculate-styles";
3
4
  import React from "react";
4
5
  import { ScrollView, type StyleProp, type ViewStyle } from "react-native";
@@ -12,6 +13,7 @@ export interface AutocompleteContentProps {
12
13
  export function AutocompleteContent(props: AutocompleteContentProps) {
13
14
  const autocomplete = useAutocomplete();
14
15
  const composedStyles = calculateComposedStyles(autocomplete.styles, autocomplete.state, "content", props.style);
16
+ const safeAreaInsets = useSafeAreaInsets();
15
17
 
16
18
  const positionStyle = useRelativePosition({
17
19
  align: "start",
@@ -21,16 +23,23 @@ export function AutocompleteContent(props: AutocompleteContentProps) {
21
23
  alignOffset: 0,
22
24
  side: "bottom",
23
25
  sideOffset: 0,
26
+ insets: safeAreaInsets,
24
27
  });
25
-
26
28
  return (
27
29
  <ScrollView
28
- style={[positionStyle, composedStyles, { width: autocomplete.inputPosition.width }]}
29
30
  onLayout={(e) => {
30
31
  autocomplete.setContentLayout(e.nativeEvent.layout);
31
32
  }}
32
- pointerEvents="box-none"
33
33
  keyboardShouldPersistTaps="handled"
34
+ style={[
35
+ positionStyle,
36
+ composedStyles,
37
+ {
38
+ display: autocomplete.isOpen ? "flex" : "none",
39
+ width: autocomplete.inputPosition.width,
40
+ pointerEvents: "box-none",
41
+ },
42
+ ]}
34
43
  >
35
44
  {props.children}
36
45
  </ScrollView>
@@ -1,5 +1,4 @@
1
1
  import type { TextInputRef } from "@/types/element.types";
2
- import { setInnerInputValue } from "@/utils/input-utils";
3
2
  import { measureLayoutPosition } from "@/utils/normalize-layout";
4
3
  import { forwardRef, useEffect, useImperativeHandle, useRef } from "react";
5
4
  import { StyleSheet, TextInput, type StyleProp, type TextInputProps, type TextStyle } from "react-native";
@@ -61,12 +60,7 @@ export const AutocompleteInput = forwardRef<TextInputRef, AutocompleteInputProps
61
60
 
62
61
  useImperativeHandle(ref, () => inputRef.current!);
63
62
  useEffect(() => {
64
- autocomplete.setBlurInput(() => () => {
65
- inputRef.current?.blur();
66
- });
67
- autocomplete.setInputDisplayValueSetter(() => (v: string) => {
68
- setInnerInputValue(inputRef.current!, v);
69
- });
63
+ autocomplete.setInputRef(inputRef.current);
70
64
  }, []);
71
65
 
72
66
  return (
@@ -1,4 +1,5 @@
1
1
  import { calculateComposedStyles } from "@/utils/calculate-styles";
2
+ import { setInnerInputValue } from "@/utils/input-utils";
2
3
  import { useEffect, useState } from "react";
3
4
  import { type StyleProp, Text, type TextStyle } from "react-native";
4
5
  import { useAutocomplete } from "./context";
@@ -34,6 +35,18 @@ export function AutocompleteOption(props: AutocompleteOptionProps) {
34
35
  const optionState = calculateState(autocomplete.state, isHovered, isSelected);
35
36
  const composedStyles = calculateComposedStyles(autocomplete.styles, optionState, "option", props.style);
36
37
 
38
+ const handlePress = () => {
39
+ autocomplete.onChange?.(props.value);
40
+ autocomplete.setInputValue?.("");
41
+ autocomplete.setIsOpen(false);
42
+ if (autocomplete.inputRef) {
43
+ setInnerInputValue(autocomplete.inputRef, props.children);
44
+ autocomplete.inputRef.blur();
45
+ } else {
46
+ console.warn("Input reference is not available");
47
+ }
48
+ };
49
+
37
50
  useEffect(() => {
38
51
  autocomplete.setOptions((prev) => {
39
52
  if (prev.find((option) => option.value === props.value)) {
@@ -41,16 +54,11 @@ export function AutocompleteOption(props: AutocompleteOptionProps) {
41
54
  }
42
55
  return [...prev, { value: props.value, label: props.children }];
43
56
  });
57
+ return () => {
58
+ autocomplete.setOptions((prev) => prev.filter((option) => option.value !== props.value));
59
+ };
44
60
  }, [props.value, props.children]);
45
61
 
46
- const handlePress = () => {
47
- autocomplete.onChange?.(props.value);
48
- autocomplete.setInputValue?.("");
49
- autocomplete.setInputDisplayValue(props.children);
50
- autocomplete.setIsOpen(false);
51
- autocomplete.blurInput();
52
- };
53
-
54
62
  const Component = props.render ?? Text;
55
63
  return (
56
64
  <Component
@@ -7,7 +7,6 @@ export interface AutocompleteOverlayProps {
7
7
  children?: React.ReactNode;
8
8
  onPress?: () => void;
9
9
  style?: StyleProp<ViewStyle>;
10
- render?: (props: AutocompleteOverlayProps) => React.ReactElement;
11
10
  }
12
11
 
13
12
  export function AutocompleteOverlay(props: AutocompleteOverlayProps) {
@@ -15,15 +14,24 @@ export function AutocompleteOverlay(props: AutocompleteOverlayProps) {
15
14
 
16
15
  const composedStyles = calculateComposedStyles(autocomplete.styles, autocomplete.state, "overlay", props.style);
17
16
 
18
- const Component = props.render ?? Pressable;
17
+ const handlePress = () => {
18
+ props.onPress?.();
19
+ autocomplete.setIsOpen(false);
20
+ autocomplete.inputRef?.blur();
21
+ };
22
+
19
23
  return (
20
- <Component
21
- onPress={() => {
22
- autocomplete.setIsOpen(false);
23
- }}
24
- style={[StyleSheet.absoluteFill, composedStyles]}
24
+ <Pressable
25
+ onPress={handlePress}
26
+ style={[
27
+ StyleSheet.absoluteFill,
28
+ composedStyles,
29
+ {
30
+ display: autocomplete.isOpen ? "flex" : "none",
31
+ },
32
+ ]}
25
33
  >
26
34
  {props.children}
27
- </Component>
35
+ </Pressable>
28
36
  );
29
37
  }
@@ -1,6 +1,6 @@
1
- import React, { useEffect } from "react";
1
+ import React from "react";
2
2
  import { Portal } from "../portal";
3
- import { useAutocomplete, AutocompleteContext } from "./context";
3
+ import { AutocompleteContext, useAutocomplete } from "./context";
4
4
 
5
5
  export interface AutocompletePortalProps {
6
6
  children?: React.ReactNode;
@@ -9,16 +9,6 @@ export interface AutocompletePortalProps {
9
9
  export function AutocompletePortal(props: AutocompletePortalProps) {
10
10
  const autocomplete = useAutocomplete();
11
11
 
12
- useEffect(() => {
13
- return () => {
14
- autocomplete.setOptions([]);
15
- };
16
- }, []);
17
-
18
- if (!autocomplete.isOpen) {
19
- return null;
20
- }
21
-
22
12
  return (
23
13
  <Portal name="autocomplete-portal">
24
14
  <AutocompleteContext.Provider value={autocomplete}>{props.children}</AutocompleteContext.Provider>
@@ -1,14 +1,12 @@
1
1
  import { DEFAULT_LAYOUT, DEFAULT_POSITION, type LayoutPosition } from "@/hooks";
2
+ import type { TextInputRef } from "@/types/element.types";
2
3
  import { calculateComposedStyles } from "@/utils/calculate-styles";
4
+ import { setInnerInputValue } from "@/utils/input-utils";
3
5
  import React, { useEffect, useMemo, useState } from "react";
4
6
  import { type LayoutRectangle, type StyleProp, View, type ViewStyle } from "react-native";
5
7
  import { AutocompleteContext } from "./context";
6
8
  import type { AutocompleteOption, AutocompleteState, AutocompleteStyles } from "./types";
7
9
 
8
- interface AutocompleteRootInjectedProps {
9
- style?: StyleProp<ViewStyle>;
10
- }
11
-
12
10
  export interface AutocompleteRootBaseProps {
13
11
  value?: string;
14
12
  onChange?: (value: string) => void;
@@ -21,7 +19,6 @@ export interface AutocompleteRootBaseProps {
21
19
 
22
20
  export interface AutocompleteRootProps extends AutocompleteRootBaseProps {
23
21
  children?: React.ReactNode;
24
- render?: (props: AutocompleteRootInjectedProps) => React.ReactElement;
25
22
  styles?: AutocompleteStyles;
26
23
  style?: StyleProp<ViewStyle>;
27
24
  }
@@ -41,19 +38,21 @@ export function AutocompleteRoot(props: AutocompleteRootProps) {
41
38
  const [contentLayout, setContentLayout] = useState<LayoutRectangle>(DEFAULT_LAYOUT);
42
39
  const [inputPosition, setInputPosition] = useState<LayoutPosition>(DEFAULT_POSITION);
43
40
  const [options, setOptions] = useState<Array<AutocompleteOption>>([]);
44
- const [blurInput, setBlurInput] = useState<() => void>(() => () => {});
45
- const [setInputDisplayValue, setInputDisplayValueSetter] = useState<(value: string) => void>(() => () => {});
41
+ const [inputRef, setInputRef] = useState<TextInputRef | null>(null);
46
42
 
47
43
  useEffect(() => {
44
+ if (!inputRef) return;
48
45
  if (props.value) {
49
46
  const selectedOption = options.find((opt) => opt.value === props.value);
50
47
  if (selectedOption) {
51
48
  props.setInputValue?.(selectedOption.label);
49
+ setInnerInputValue(inputRef, selectedOption.label);
52
50
  }
53
51
  } else {
54
52
  props.setInputValue?.("");
53
+ setInnerInputValue(inputRef, "");
55
54
  }
56
- }, [props.value, options]);
55
+ }, [props.value, options, inputRef]);
57
56
 
58
57
  const state = calculateState(props, isOpen);
59
58
  const composedStyles = calculateComposedStyles(props.styles, state, "root", props.style);
@@ -75,10 +74,8 @@ export function AutocompleteRoot(props: AutocompleteRootProps) {
75
74
  options,
76
75
  setOptions,
77
76
  openOnFocus: props.openOnFocus ?? true,
78
- blurInput,
79
- setBlurInput,
80
- setInputDisplayValue,
81
- setInputDisplayValueSetter,
77
+ inputRef,
78
+ setInputRef,
82
79
  state,
83
80
  isDisabled: props.isDisabled ?? false,
84
81
  styles: props.styles ?? null,
@@ -96,16 +93,13 @@ export function AutocompleteRoot(props: AutocompleteRootProps) {
96
93
  inputPosition,
97
94
  contentLayout,
98
95
  options,
99
- blurInput,
100
- setInputDisplayValue,
101
96
  state,
102
97
  ],
103
98
  );
104
99
 
105
- const Component = props.render ?? View;
106
100
  return (
107
101
  <AutocompleteContext.Provider value={contextValue}>
108
- <Component style={composedStyles}>{props.children}</Component>
102
+ <View style={composedStyles}>{props.children}</View>
109
103
  </AutocompleteContext.Provider>
110
104
  );
111
105
  }
@@ -1,5 +1,6 @@
1
1
  import type { LayoutPosition } from "@/hooks";
2
- import { createContext, type Dispatch, useContext } from "react";
2
+ import type { TextInputRef } from "@/types/element.types";
3
+ import React, { createContext, type Dispatch, useContext } from "react";
3
4
  import type { LayoutRectangle } from "react-native";
4
5
  import type { AutocompleteOption, AutocompleteState, AutocompleteStyles } from "./types";
5
6
 
@@ -23,10 +24,8 @@ export interface AutocompleteContext {
23
24
 
24
25
  openOnFocus: boolean;
25
26
 
26
- blurInput: () => void;
27
- setBlurInput: Dispatch<React.SetStateAction<() => void>>;
28
- setInputDisplayValueSetter: Dispatch<React.SetStateAction<(value: string) => void>>;
29
- setInputDisplayValue: (value: string) => void;
27
+ inputRef: TextInputRef | null;
28
+ setInputRef: Dispatch<React.SetStateAction<TextInputRef | null>>;
30
29
 
31
30
  isDisabled: boolean;
32
31
 
@@ -6,8 +6,6 @@ import { useButtonPrimitive } from "./button-context";
6
6
  export interface ButtonPrimitiveLabelProps {
7
7
  children?: string;
8
8
 
9
- render?: (props: this) => React.ReactElement;
10
-
11
9
  style?: StyleProp<TextStyle>;
12
10
  }
13
11
 
@@ -16,6 +14,11 @@ export function ButtonLabel(props: ButtonPrimitiveLabelProps) {
16
14
 
17
15
  const calculatedStyle = calculateComposedStyles(button.styles, button.state, "label", props.style);
18
16
 
19
- const Component = props.render ?? Text;
20
- return <Component style={calculatedStyle}>{props.children}</Component>;
17
+ const isSelectable = button.state !== "disabled" && button.state !== "loading";
18
+
19
+ return (
20
+ <Text selectable={isSelectable} style={calculatedStyle}>
21
+ {props.children}
22
+ </Text>
23
+ );
21
24
  }