@yahoo/uds-mobile 2.24.0-beta.5 → 2.24.0-beta.7

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 (131) hide show
  1. package/README.md +6 -1
  2. package/dist/components/Avatar/AvatarIcon.cjs +2 -2
  3. package/dist/components/Avatar/AvatarIcon.js +2 -2
  4. package/dist/components/Avatar/AvatarIcon.js.map +1 -1
  5. package/dist/components/Avatar/AvatarImage.cjs +2 -2
  6. package/dist/components/Avatar/AvatarImage.js +2 -2
  7. package/dist/components/Avatar/AvatarImage.js.map +1 -1
  8. package/dist/components/Avatar/AvatarText.cjs +2 -2
  9. package/dist/components/Avatar/AvatarText.js +2 -2
  10. package/dist/components/Avatar/AvatarText.js.map +1 -1
  11. package/dist/components/Avatar/useAvatarFontScale.cjs +16 -0
  12. package/dist/components/Avatar/useAvatarFontScale.d.cts +7 -0
  13. package/dist/components/Avatar/useAvatarFontScale.d.cts.map +1 -0
  14. package/dist/components/Avatar/useAvatarFontScale.d.ts +7 -0
  15. package/dist/components/Avatar/useAvatarFontScale.d.ts.map +1 -0
  16. package/dist/components/Avatar/useAvatarFontScale.js +16 -0
  17. package/dist/components/Avatar/useAvatarFontScale.js.map +1 -0
  18. package/dist/components/Button/buttonTheme.cjs +10 -6
  19. package/dist/components/Button/buttonTheme.d.cts +10 -5
  20. package/dist/components/Button/buttonTheme.d.cts.map +1 -1
  21. package/dist/components/Button/buttonTheme.d.ts +10 -5
  22. package/dist/components/Button/buttonTheme.d.ts.map +1 -1
  23. package/dist/components/Button/buttonTheme.js +10 -6
  24. package/dist/components/Button/buttonTheme.js.map +1 -1
  25. package/dist/components/Button.cjs +17 -8
  26. package/dist/components/Button.js +17 -8
  27. package/dist/components/Button.js.map +1 -1
  28. package/dist/components/Checkbox.cjs +4 -2
  29. package/dist/components/Checkbox.js +4 -2
  30. package/dist/components/Checkbox.js.map +1 -1
  31. package/dist/components/Chip/ChipBase.cjs +22 -19
  32. package/dist/components/Chip/ChipBase.js +22 -19
  33. package/dist/components/Chip/ChipBase.js.map +1 -1
  34. package/dist/components/Icon.cjs +3 -2
  35. package/dist/components/Icon.d.cts.map +1 -1
  36. package/dist/components/Icon.d.ts.map +1 -1
  37. package/dist/components/Icon.js +3 -2
  38. package/dist/components/Icon.js.map +1 -1
  39. package/dist/components/Input.cjs +1 -1
  40. package/dist/components/Input.js +1 -1
  41. package/dist/components/Input.js.map +1 -1
  42. package/dist/components/Link.cjs +10 -1
  43. package/dist/components/Link.d.cts +6 -0
  44. package/dist/components/Link.d.cts.map +1 -1
  45. package/dist/components/Link.d.ts +6 -0
  46. package/dist/components/Link.d.ts.map +1 -1
  47. package/dist/components/Link.js +10 -1
  48. package/dist/components/Link.js.map +1 -1
  49. package/dist/components/Pagination/Pagination.cjs +18 -10
  50. package/dist/components/Pagination/Pagination.d.cts +2 -0
  51. package/dist/components/Pagination/Pagination.d.cts.map +1 -1
  52. package/dist/components/Pagination/Pagination.d.ts +2 -0
  53. package/dist/components/Pagination/Pagination.d.ts.map +1 -1
  54. package/dist/components/Pagination/Pagination.js +18 -10
  55. package/dist/components/Pagination/Pagination.js.map +1 -1
  56. package/dist/components/Pagination/PaginationEllipsis.cjs +8 -2
  57. package/dist/components/Pagination/PaginationEllipsis.d.cts.map +1 -1
  58. package/dist/components/Pagination/PaginationEllipsis.d.ts.map +1 -1
  59. package/dist/components/Pagination/PaginationEllipsis.js +9 -3
  60. package/dist/components/Pagination/PaginationEllipsis.js.map +1 -1
  61. package/dist/components/Pagination/PaginationItem.cjs +2 -1
  62. package/dist/components/Pagination/PaginationItem.js +2 -1
  63. package/dist/components/Pagination/PaginationItem.js.map +1 -1
  64. package/dist/components/Pagination/PaginationLink.cjs +2 -1
  65. package/dist/components/Pagination/PaginationLink.js +2 -1
  66. package/dist/components/Pagination/PaginationLink.js.map +1 -1
  67. package/dist/components/Pagination/PaginationNext.cjs +3 -1
  68. package/dist/components/Pagination/PaginationNext.js +3 -1
  69. package/dist/components/Pagination/PaginationNext.js.map +1 -1
  70. package/dist/components/Pagination/PaginationPrev.cjs +3 -1
  71. package/dist/components/Pagination/PaginationPrev.js +3 -1
  72. package/dist/components/Pagination/PaginationPrev.js.map +1 -1
  73. package/dist/components/Pagination/paginationContext.d.cts +2 -0
  74. package/dist/components/Pagination/paginationContext.d.cts.map +1 -1
  75. package/dist/components/Pagination/paginationContext.d.ts +2 -0
  76. package/dist/components/Pagination/paginationContext.d.ts.map +1 -1
  77. package/dist/components/Pagination/paginationContext.js.map +1 -1
  78. package/dist/components/Pagination/usePaginationControlStyles.cjs +8 -1
  79. package/dist/components/Pagination/usePaginationControlStyles.d.cts.map +1 -1
  80. package/dist/components/Pagination/usePaginationControlStyles.d.ts.map +1 -1
  81. package/dist/components/Pagination/usePaginationControlStyles.js +9 -2
  82. package/dist/components/Pagination/usePaginationControlStyles.js.map +1 -1
  83. package/dist/components/Radio/Radio.cjs +2 -1
  84. package/dist/components/Radio/Radio.js +2 -1
  85. package/dist/components/Radio/Radio.js.map +1 -1
  86. package/dist/components/Select/Select.cjs +16 -4
  87. package/dist/components/Select/Select.js +16 -4
  88. package/dist/components/Select/Select.js.map +1 -1
  89. package/dist/components/Select/SelectContent.cjs +31 -23
  90. package/dist/components/Select/SelectContent.d.cts.map +1 -1
  91. package/dist/components/Select/SelectContent.d.ts.map +1 -1
  92. package/dist/components/Select/SelectContent.js +32 -24
  93. package/dist/components/Select/SelectContent.js.map +1 -1
  94. package/dist/components/Select/SelectItem.cjs +6 -6
  95. package/dist/components/Select/SelectItem.js +6 -6
  96. package/dist/components/Select/SelectItem.js.map +1 -1
  97. package/dist/components/Select/SelectTrigger.cjs +1 -1
  98. package/dist/components/Select/SelectTrigger.js +1 -1
  99. package/dist/components/Select/SelectTrigger.js.map +1 -1
  100. package/dist/components/Switch.cjs +4 -2
  101. package/dist/components/Switch.js +4 -2
  102. package/dist/components/Switch.js.map +1 -1
  103. package/dist/components/Tabs/Tab.cjs +1 -1
  104. package/dist/components/Tabs/Tab.js +1 -1
  105. package/dist/components/Tabs/Tab.js.map +1 -1
  106. package/dist/fontScaling/androidNonlinearFontScaling.cjs +174 -0
  107. package/dist/fontScaling/androidNonlinearFontScaling.d.cts +7 -0
  108. package/dist/fontScaling/androidNonlinearFontScaling.d.cts.map +1 -0
  109. package/dist/fontScaling/androidNonlinearFontScaling.d.ts +7 -0
  110. package/dist/fontScaling/androidNonlinearFontScaling.d.ts.map +1 -0
  111. package/dist/fontScaling/androidNonlinearFontScaling.js +175 -0
  112. package/dist/fontScaling/androidNonlinearFontScaling.js.map +1 -0
  113. package/dist/fontScaling/constants.cjs +4 -3
  114. package/dist/fontScaling/constants.d.cts +4 -3
  115. package/dist/fontScaling/constants.d.cts.map +1 -1
  116. package/dist/fontScaling/constants.d.ts +4 -3
  117. package/dist/fontScaling/constants.d.ts.map +1 -1
  118. package/dist/fontScaling/constants.js +4 -3
  119. package/dist/fontScaling/constants.js.map +1 -1
  120. package/dist/fontScaling/types.d.cts +3 -2
  121. package/dist/fontScaling/types.d.cts.map +1 -1
  122. package/dist/fontScaling/types.d.ts +3 -2
  123. package/dist/fontScaling/types.d.ts.map +1 -1
  124. package/dist/fontScaling/useFontScale.cjs +13 -4
  125. package/dist/fontScaling/useFontScale.d.cts +8 -3
  126. package/dist/fontScaling/useFontScale.d.cts.map +1 -1
  127. package/dist/fontScaling/useFontScale.d.ts +8 -3
  128. package/dist/fontScaling/useFontScale.d.ts.map +1 -1
  129. package/dist/fontScaling/useFontScale.js +14 -5
  130. package/dist/fontScaling/useFontScale.js.map +1 -1
  131. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
  /*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
2
+ import { convertAndroidSpToDp } from "./androidNonlinearFontScaling.js";
2
3
  import { useSyncExternalStore } from "react";
3
- import { Dimensions } from "react-native";
4
+ import { Dimensions, Platform } from "react-native";
4
5
  //#region src/fontScaling/useFontScale.ts
5
6
  function subscribe(onStoreChange) {
6
7
  const subscription = Dimensions.addEventListener("change", onStoreChange);
@@ -10,21 +11,29 @@ function getFontScale() {
10
11
  return Dimensions.get("window").fontScale;
11
12
  }
12
13
  /**
13
- * The current OS font scale, clamped to `[1, cap]`, for sizing containers
14
- * around scaled text (e.g. a checkbox box growing with its checkmark).
14
+ * The effective scale for `fontSize`, clamped to `[1, cap]`, for sizing
15
+ * containers around scaled text (e.g. a checkbox box growing with its
16
+ * checkmark).
15
17
  *
16
18
  * `cap` uses the same semantics as `maxFontSizeMultiplier`: a number >= 1
17
19
  * caps the scale; `null`, `0`, or `undefined` leave it uncapped. The result
18
20
  * is never below 1 so containers never shrink under their token metrics
19
21
  * (font scales < 1 shrink text only, as today).
20
22
  *
23
+ * Pass the SP size that the geometry accompanies on Android so this mirrors
24
+ * Android 14+'s nonlinear scaling. Omitting `fontSize` preserves the legacy
25
+ * scalar behavior for custom callers that do not know their base size.
26
+ *
21
27
  * Subscribes to font-scale changes only — rotation does not re-render, and
22
28
  * components re-render solely when the user changes the OS text size.
23
29
  */
24
- function useFontScale(cap) {
30
+ function useFontScale(cap, fontSize) {
25
31
  const fontScale = useSyncExternalStore(subscribe, getFontScale, getFontScale);
26
32
  const effectiveCap = typeof cap === "number" && cap >= 1 ? cap : Number.POSITIVE_INFINITY;
27
- return Math.max(1, Math.min(fontScale, effectiveCap));
33
+ const cappedFontScale = Math.min(fontScale, effectiveCap);
34
+ const platformVersion = Number(Platform.Version);
35
+ const nativeScale = Platform.OS === "android" && platformVersion >= 34 && typeof fontSize === "number" && fontSize > 0 ? convertAndroidSpToDp(fontSize, cappedFontScale) / fontSize : cappedFontScale;
36
+ return Math.max(1, nativeScale);
28
37
  }
29
38
  //#endregion
30
39
  export { useFontScale };
@@ -1 +1 @@
1
- {"version":3,"file":"useFontScale.js","names":[],"sources":["../../src/fontScaling/useFontScale.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\nimport { Dimensions } from 'react-native';\n\nfunction subscribe(onStoreChange: () => void): () => void {\n const subscription = Dimensions.addEventListener('change', onStoreChange);\n return () => subscription.remove();\n}\n\n// Unistyles' rt.fontScale is stale when the OS text size changes while the\n// app is running; Dimensions reflects the live value on both platforms.\nfunction getFontScale(): number {\n return Dimensions.get('window').fontScale;\n}\n\n/**\n * The current OS font scale, clamped to `[1, cap]`, for sizing containers\n * around scaled text (e.g. a checkbox box growing with its checkmark).\n *\n * `cap` uses the same semantics as `maxFontSizeMultiplier`: a number >= 1\n * caps the scale; `null`, `0`, or `undefined` leave it uncapped. The result\n * is never below 1 so containers never shrink under their token metrics\n * (font scales < 1 shrink text only, as today).\n *\n * Subscribes to font-scale changes only — rotation does not re-render, and\n * components re-render solely when the user changes the OS text size.\n */\nfunction useFontScale(cap?: number | null): number {\n const fontScale = useSyncExternalStore(subscribe, getFontScale, getFontScale);\n const effectiveCap = typeof cap === 'number' && cap >= 1 ? cap : Number.POSITIVE_INFINITY;\n return Math.max(1, Math.min(fontScale, effectiveCap));\n}\n\nexport { useFontScale };\n"],"mappings":";;;;AAGA,SAAS,UAAU,eAAuC;CACxD,MAAM,eAAe,WAAW,iBAAiB,UAAU,cAAc;CACzE,aAAa,aAAa,QAAQ;;AAKpC,SAAS,eAAuB;CAC9B,OAAO,WAAW,IAAI,SAAS,CAAC;;;;;;;;;;;;;;AAelC,SAAS,aAAa,KAA6B;CACjD,MAAM,YAAY,qBAAqB,WAAW,cAAc,aAAa;CAC7E,MAAM,eAAe,OAAO,QAAQ,YAAY,OAAO,IAAI,MAAM,OAAO;CACxE,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,WAAW,aAAa,CAAC"}
1
+ {"version":3,"file":"useFontScale.js","names":[],"sources":["../../src/fontScaling/useFontScale.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\nimport { Dimensions, Platform } from 'react-native';\n\nimport { convertAndroidSpToDp } from './androidNonlinearFontScaling';\n\nfunction subscribe(onStoreChange: () => void): () => void {\n const subscription = Dimensions.addEventListener('change', onStoreChange);\n return () => subscription.remove();\n}\n\n// Unistyles' rt.fontScale is stale when the OS text size changes while the\n// app is running; Dimensions reflects the live value on both platforms.\nfunction getFontScale(): number {\n return Dimensions.get('window').fontScale;\n}\n\n/**\n * The effective scale for `fontSize`, clamped to `[1, cap]`, for sizing\n * containers around scaled text (e.g. a checkbox box growing with its\n * checkmark).\n *\n * `cap` uses the same semantics as `maxFontSizeMultiplier`: a number >= 1\n * caps the scale; `null`, `0`, or `undefined` leave it uncapped. The result\n * is never below 1 so containers never shrink under their token metrics\n * (font scales < 1 shrink text only, as today).\n *\n * Pass the SP size that the geometry accompanies on Android so this mirrors\n * Android 14+'s nonlinear scaling. Omitting `fontSize` preserves the legacy\n * scalar behavior for custom callers that do not know their base size.\n *\n * Subscribes to font-scale changes only — rotation does not re-render, and\n * components re-render solely when the user changes the OS text size.\n */\nfunction useFontScale(cap?: number | null, fontSize?: number): number {\n const fontScale = useSyncExternalStore(subscribe, getFontScale, getFontScale);\n const effectiveCap = typeof cap === 'number' && cap >= 1 ? cap : Number.POSITIVE_INFINITY;\n const cappedFontScale = Math.min(fontScale, effectiveCap);\n const platformVersion = Number(Platform.Version);\n const nativeScale =\n Platform.OS === 'android' &&\n platformVersion >= 34 &&\n typeof fontSize === 'number' &&\n fontSize > 0\n ? convertAndroidSpToDp(fontSize, cappedFontScale) / fontSize\n : cappedFontScale;\n\n return Math.max(1, nativeScale);\n}\n\nexport { useFontScale };\n"],"mappings":";;;;;AAKA,SAAS,UAAU,eAAuC;CACxD,MAAM,eAAe,WAAW,iBAAiB,UAAU,cAAc;CACzE,aAAa,aAAa,QAAQ;;AAKpC,SAAS,eAAuB;CAC9B,OAAO,WAAW,IAAI,SAAS,CAAC;;;;;;;;;;;;;;;;;;;AAoBlC,SAAS,aAAa,KAAqB,UAA2B;CACpE,MAAM,YAAY,qBAAqB,WAAW,cAAc,aAAa;CAC7E,MAAM,eAAe,OAAO,QAAQ,YAAY,OAAO,IAAI,MAAM,OAAO;CACxE,MAAM,kBAAkB,KAAK,IAAI,WAAW,aAAa;CACzD,MAAM,kBAAkB,OAAO,SAAS,QAAQ;CAChD,MAAM,cACJ,SAAS,OAAO,aAChB,mBAAmB,MACnB,OAAO,aAAa,YACpB,WAAW,IACP,qBAAqB,UAAU,gBAAgB,GAAG,WAClD;CAEN,OAAO,KAAK,IAAI,GAAG,YAAY"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yahoo/uds-mobile",
3
- "version": "2.24.0-beta.5",
3
+ "version": "2.24.0-beta.7",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "uds-mobile": "./cli/uds-mobile.js"