@hjmds/react-native 1.26.1 → 1.27.1

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 (218) hide show
  1. package/THIRD_PARTY_NOTICES.md +7 -0
  2. package/assets/fonts/LICENSE.txt +94 -0
  3. package/assets/fonts/Pretendard-Bold.otf +0 -0
  4. package/assets/fonts/Pretendard-ExtraBold.otf +0 -0
  5. package/assets/fonts/Pretendard-Medium.otf +0 -0
  6. package/assets/fonts/Pretendard-Regular.otf +0 -0
  7. package/assets/fonts/Pretendard-SemiBold.otf +0 -0
  8. package/dist/actions.d.ts.map +1 -1
  9. package/dist/actions.js +10 -3
  10. package/dist/actions.js.map +1 -1
  11. package/dist/agreement.d.ts.map +1 -1
  12. package/dist/agreement.js +5 -24
  13. package/dist/agreement.js.map +1 -1
  14. package/dist/asset.js +3 -3
  15. package/dist/asset.js.map +1 -1
  16. package/dist/auth-screen.d.ts.map +1 -1
  17. package/dist/auth-screen.js +2 -1
  18. package/dist/auth-screen.js.map +1 -1
  19. package/dist/calendar.js +1 -1
  20. package/dist/calendar.js.map +1 -1
  21. package/dist/carousel-motion.d.ts.map +1 -1
  22. package/dist/carousel-motion.js +8 -6
  23. package/dist/carousel-motion.js.map +1 -1
  24. package/dist/carousel.d.ts.map +1 -1
  25. package/dist/carousel.js +11 -7
  26. package/dist/carousel.js.map +1 -1
  27. package/dist/chart.d.ts +3 -1
  28. package/dist/chart.d.ts.map +1 -1
  29. package/dist/chart.js +8 -5
  30. package/dist/chart.js.map +1 -1
  31. package/dist/collapsible.d.ts +10 -1
  32. package/dist/collapsible.d.ts.map +1 -1
  33. package/dist/collapsible.js +12 -3
  34. package/dist/collapsible.js.map +1 -1
  35. package/dist/collection-editing.d.ts.map +1 -1
  36. package/dist/collection-editing.js +19 -9
  37. package/dist/collection-editing.js.map +1 -1
  38. package/dist/collection-rail.d.ts.map +1 -1
  39. package/dist/collection-rail.js +7 -3
  40. package/dist/collection-rail.js.map +1 -1
  41. package/dist/communication.d.ts.map +1 -1
  42. package/dist/communication.js +10 -3
  43. package/dist/communication.js.map +1 -1
  44. package/dist/context-menu.d.ts +33 -0
  45. package/dist/context-menu.d.ts.map +1 -0
  46. package/dist/context-menu.js +53 -0
  47. package/dist/context-menu.js.map +1 -0
  48. package/dist/data-display.d.ts.map +1 -1
  49. package/dist/data-display.js +20 -11
  50. package/dist/data-display.js.map +1 -1
  51. package/dist/data-table.d.ts.map +1 -1
  52. package/dist/data-table.js +16 -6
  53. package/dist/data-table.js.map +1 -1
  54. package/dist/data-workflows.d.ts.map +1 -1
  55. package/dist/data-workflows.js +4 -3
  56. package/dist/data-workflows.js.map +1 -1
  57. package/dist/date-picker.d.ts.map +1 -1
  58. package/dist/date-picker.js +5 -2
  59. package/dist/date-picker.js.map +1 -1
  60. package/dist/design-profile.d.ts.map +1 -1
  61. package/dist/design-profile.js +4 -2
  62. package/dist/design-profile.js.map +1 -1
  63. package/dist/effect-surface.d.ts +9 -3
  64. package/dist/effect-surface.d.ts.map +1 -1
  65. package/dist/effect-surface.js +4 -3
  66. package/dist/effect-surface.js.map +1 -1
  67. package/dist/evidence.d.ts +16 -1
  68. package/dist/evidence.d.ts.map +1 -1
  69. package/dist/evidence.js +2 -1
  70. package/dist/evidence.js.map +1 -1
  71. package/dist/feedback.d.ts.map +1 -1
  72. package/dist/feedback.js +2 -2
  73. package/dist/feedback.js.map +1 -1
  74. package/dist/field-group.d.ts.map +1 -1
  75. package/dist/field-group.js +12 -3
  76. package/dist/field-group.js.map +1 -1
  77. package/dist/folder-preview.d.ts.map +1 -1
  78. package/dist/folder-preview.js +2 -2
  79. package/dist/folder-preview.js.map +1 -1
  80. package/dist/fonts.d.ts +18 -0
  81. package/dist/fonts.d.ts.map +1 -0
  82. package/dist/fonts.js +18 -0
  83. package/dist/fonts.js.map +1 -0
  84. package/dist/forms.d.ts.map +1 -1
  85. package/dist/forms.js +7 -3
  86. package/dist/forms.js.map +1 -1
  87. package/dist/gravity-letters.d.ts +7 -1
  88. package/dist/gravity-letters.d.ts.map +1 -1
  89. package/dist/gravity-letters.js +7 -3
  90. package/dist/gravity-letters.js.map +1 -1
  91. package/dist/heading.d.ts +3 -1
  92. package/dist/heading.d.ts.map +1 -1
  93. package/dist/heading.js +2 -2
  94. package/dist/heading.js.map +1 -1
  95. package/dist/image-choice.d.ts +29 -0
  96. package/dist/image-choice.d.ts.map +1 -0
  97. package/dist/image-choice.js +30 -0
  98. package/dist/image-choice.js.map +1 -0
  99. package/dist/image-comparison.d.ts.map +1 -1
  100. package/dist/image-comparison.js +5 -2
  101. package/dist/image-comparison.js.map +1 -1
  102. package/dist/index.d.ts +1 -1
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +1 -1
  105. package/dist/index.js.map +1 -1
  106. package/dist/inputs.d.ts +3 -2
  107. package/dist/inputs.d.ts.map +1 -1
  108. package/dist/inputs.js +48 -68
  109. package/dist/inputs.js.map +1 -1
  110. package/dist/internal/drawn-glyphs.d.ts +36 -0
  111. package/dist/internal/drawn-glyphs.d.ts.map +1 -0
  112. package/dist/internal/drawn-glyphs.js +50 -0
  113. package/dist/internal/drawn-glyphs.js.map +1 -0
  114. package/dist/internal/list-row-private.d.ts +2 -0
  115. package/dist/internal/list-row-private.d.ts.map +1 -1
  116. package/dist/internal/message-reactions.d.ts +25 -1
  117. package/dist/internal/message-reactions.d.ts.map +1 -1
  118. package/dist/internal/message-reactions.js +27 -8
  119. package/dist/internal/message-reactions.js.map +1 -1
  120. package/dist/internal/screen-exit.d.ts +11 -0
  121. package/dist/internal/screen-exit.d.ts.map +1 -0
  122. package/dist/internal/screen-exit.js +16 -0
  123. package/dist/internal/screen-exit.js.map +1 -0
  124. package/dist/internal/screen-footer.d.ts +7 -0
  125. package/dist/internal/screen-footer.d.ts.map +1 -0
  126. package/dist/internal/screen-footer.js +8 -0
  127. package/dist/internal/screen-footer.js.map +1 -0
  128. package/dist/internal/selection-mark.d.ts +17 -0
  129. package/dist/internal/selection-mark.d.ts.map +1 -0
  130. package/dist/internal/selection-mark.js +37 -0
  131. package/dist/internal/selection-mark.js.map +1 -0
  132. package/dist/internal/styles.d.ts.map +1 -1
  133. package/dist/internal/styles.js +5 -0
  134. package/dist/internal/styles.js.map +1 -1
  135. package/dist/internal/text-align.d.ts +8 -0
  136. package/dist/internal/text-align.d.ts.map +1 -0
  137. package/dist/internal/text-align.js +9 -0
  138. package/dist/internal/text-align.js.map +1 -0
  139. package/dist/keyboard.d.ts +20 -2
  140. package/dist/keyboard.d.ts.map +1 -1
  141. package/dist/keyboard.js +67 -17
  142. package/dist/keyboard.js.map +1 -1
  143. package/dist/masonry.d.ts +5 -3
  144. package/dist/masonry.d.ts.map +1 -1
  145. package/dist/masonry.js +11 -2
  146. package/dist/masonry.js.map +1 -1
  147. package/dist/navigation-bar.d.ts.map +1 -1
  148. package/dist/navigation-bar.js +1 -1
  149. package/dist/navigation-bar.js.map +1 -1
  150. package/dist/navigation.d.ts +4 -1
  151. package/dist/navigation.d.ts.map +1 -1
  152. package/dist/navigation.js +11 -1
  153. package/dist/navigation.js.map +1 -1
  154. package/dist/number-field.d.ts.map +1 -1
  155. package/dist/number-field.js +8 -5
  156. package/dist/number-field.js.map +1 -1
  157. package/dist/overlays.d.ts +4 -2
  158. package/dist/overlays.d.ts.map +1 -1
  159. package/dist/overlays.js +49 -18
  160. package/dist/overlays.js.map +1 -1
  161. package/dist/primitives.d.ts.map +1 -1
  162. package/dist/primitives.js +23 -5
  163. package/dist/primitives.js.map +1 -1
  164. package/dist/provider.d.ts +9 -1
  165. package/dist/provider.d.ts.map +1 -1
  166. package/dist/provider.js +7 -4
  167. package/dist/provider.js.map +1 -1
  168. package/dist/qr-code.js +1 -1
  169. package/dist/qr-code.js.map +1 -1
  170. package/dist/rating.js +3 -3
  171. package/dist/rating.js.map +1 -1
  172. package/dist/reaction-picker.d.ts.map +1 -1
  173. package/dist/reaction-picker.js +30 -5
  174. package/dist/reaction-picker.js.map +1 -1
  175. package/dist/saved-items.d.ts +3 -1
  176. package/dist/saved-items.d.ts.map +1 -1
  177. package/dist/saved-items.js +3 -3
  178. package/dist/saved-items.js.map +1 -1
  179. package/dist/screen-flows.d.ts +55 -8
  180. package/dist/screen-flows.d.ts.map +1 -1
  181. package/dist/screen-flows.js +50 -21
  182. package/dist/screen-flows.js.map +1 -1
  183. package/dist/screens.d.ts +68 -9
  184. package/dist/screens.d.ts.map +1 -1
  185. package/dist/screens.js +91 -29
  186. package/dist/screens.js.map +1 -1
  187. package/dist/social-compositions.d.ts.map +1 -1
  188. package/dist/social-compositions.js +3 -2
  189. package/dist/social-compositions.js.map +1 -1
  190. package/dist/sortable.d.ts.map +1 -1
  191. package/dist/sortable.js +10 -7
  192. package/dist/sortable.js.map +1 -1
  193. package/dist/steps.d.ts.map +1 -1
  194. package/dist/steps.js +7 -3
  195. package/dist/steps.js.map +1 -1
  196. package/dist/table-family.d.ts.map +1 -1
  197. package/dist/table-family.js +16 -5
  198. package/dist/table-family.js.map +1 -1
  199. package/dist/tags-input.d.ts.map +1 -1
  200. package/dist/tags-input.js +2 -0
  201. package/dist/tags-input.js.map +1 -1
  202. package/dist/task-controls.d.ts.map +1 -1
  203. package/dist/task-controls.js +16 -5
  204. package/dist/task-controls.js.map +1 -1
  205. package/dist/task-list.d.ts +1 -1
  206. package/dist/task-list.d.ts.map +1 -1
  207. package/dist/task-list.js +4 -3
  208. package/dist/task-list.js.map +1 -1
  209. package/dist/top.d.ts.map +1 -1
  210. package/dist/top.js +3 -1
  211. package/dist/top.js.map +1 -1
  212. package/dist/transfer-list.d.ts.map +1 -1
  213. package/dist/transfer-list.js +15 -9
  214. package/dist/transfer-list.js.map +1 -1
  215. package/dist/upload-item.d.ts.map +1 -1
  216. package/dist/upload-item.js +4 -3
  217. package/dist/upload-item.js.map +1 -1
  218. package/package.json +24 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-exit.js","sourceRoot":"","sources":["../../src/internal/screen-exit.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAuB,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKnD,uFAAuF;AACvF,MAAM,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,EAAc;IACrF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACpD,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC;IAC5D,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,KAAK,KAAK,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,KAAK,MAAM;QAC3B,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,GAAI;QAClP,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,YACjG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAC,IAAI,IAAc,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAvK,MAAM,CAAqK,CAAC,GACrN,CAAC;IACZ,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAC,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,YAAE,KAAC,IAAI,IAAC,UAAU,EAAE,KAAK,EAAE,yBAAyB,EAAC,qBAAqB,YAAE,KAAK,GAAQ,GAAa,CAAC;AAC3L,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * True inside ScreenLayout's footer. The footer already owns the bar chrome (top border, screen padding, safe area), so
3
+ * BottomCTA placed there renders only its copy and actions; drawing its own bar too doubled the border, inset the
4
+ * buttons twice and (Native) added a shadowed surface inside the footer (2026-10-17 screen review, common-screen-shell).
5
+ */
6
+ export declare const ScreenFooterContext: import("react").Context<boolean>;
7
+ //# sourceMappingURL=screen-footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-footer.d.ts","sourceRoot":"","sources":["../../src/internal/screen-footer.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,kCAAuB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { createContext } from "react";
2
+ /**
3
+ * True inside ScreenLayout's footer. The footer already owns the bar chrome (top border, screen padding, safe area), so
4
+ * BottomCTA placed there renders only its copy and actions; drawing its own bar too doubled the border, inset the
5
+ * buttons twice and (Native) added a shadowed surface inside the footer (2026-10-17 screen review, common-screen-shell).
6
+ */
7
+ export const ScreenFooterContext = createContext(false);
8
+ //# sourceMappingURL=screen-footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screen-footer.js","sourceRoot":"","sources":["../../src/internal/screen-footer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { ReactNode } from "react";
2
+ import { selectionControlRecipe } from "@hjmds/design-contracts/recipes";
3
+ export type SelectionMarkState = boolean | "mixed";
4
+ /**
5
+ * Checkbox/Radio indicator box. Agreement and TransferList rows are multi-select too, so they draw this same box
6
+ * rather than their own 16pt mark (2026-10-17 review: the 16pt box with radius sm read as a radio).
7
+ * The check and dash are fixed artwork: HJM Text scales with textScale even when OS scaling is off.
8
+ */
9
+ export declare function SelectionMark({ kind, checked, size, invalid, children }: Readonly<{
10
+ kind?: "checkbox" | "radio";
11
+ checked: SelectionMarkState;
12
+ size?: keyof typeof selectionControlRecipe.sizes;
13
+ invalid?: boolean;
14
+ /** Product indicator override (ChoiceRow `renderIndicator`). */
15
+ children?: ReactNode;
16
+ }>): import("react").JSX.Element;
17
+ //# sourceMappingURL=selection-mark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection-mark.d.ts","sourceRoot":"","sources":["../../src/internal/selection-mark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAGzE,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,IAAiB,EAAE,OAAO,EAAE,IAAe,EAAE,OAAe,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC;IACjH,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAC5B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,OAAO,sBAAsB,CAAC,KAAK,CAAC;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC,+BAyBD"}
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { View } from "react-native";
3
+ import { resolveColorReference } from "@hjmds/design-contracts/color-references";
4
+ import { selectionControlRecipe } from "@hjmds/design-contracts/recipes";
5
+ import { useHjmNativeTheme } from "../provider.js";
6
+ /**
7
+ * Checkbox/Radio indicator box. Agreement and TransferList rows are multi-select too, so they draw this same box
8
+ * rather than their own 16pt mark (2026-10-17 review: the 16pt box with radius sm read as a radio).
9
+ * The check and dash are fixed artwork: HJM Text scales with textScale even when OS scaling is off.
10
+ */
11
+ export function SelectionMark({ kind = "checkbox", checked, size = "medium", invalid = false, children }) {
12
+ const theme = useHjmNativeTheme();
13
+ const control = selectionControlRecipe.sizes[size].control;
14
+ const selected = checked !== false;
15
+ const ink = resolveColorReference(selectionControlRecipe.states.indicator, theme.palette);
16
+ const border = invalid
17
+ ? selectionControlRecipe.states.invalidBorder
18
+ : selected ? selectionControlRecipe.states.checkedBorder : selectionControlRecipe.states.idleBorder;
19
+ const artwork = children != null ? children : kind === "radio"
20
+ ? checked === true ? _jsx(View, { style: { backgroundColor: ink, borderRadius: theme.tokens.radius.full, height: control * selectionControlRecipe.radioDotRatio, width: control * selectionControlRecipe.radioDotRatio } }) : null
21
+ : checked === "mixed" ? _jsx(View, { style: { width: 10, height: 2, backgroundColor: ink } })
22
+ // RTL mirrors the whole check (rotation and the drawn side together); flipping only the rotation drew a broken mark.
23
+ : checked ? _jsx(View, { style: { width: 8, height: 4, borderBottomWidth: 2, ...(theme.environment.direction === "rtl" ? { borderRightWidth: 2 } : { borderLeftWidth: 2 }), borderColor: ink, transform: [{ translateY: -1 }, { rotate: theme.environment.direction === "rtl" ? "45deg" : "-45deg" }] } })
24
+ : null;
25
+ return _jsx(View, { accessibilityElementsHidden: true, accessible: false, importantForAccessibility: "no-hide-descendants", style: {
26
+ alignItems: "center",
27
+ backgroundColor: resolveColorReference(selected ? selectionControlRecipe.states.checkedBackground : selectionControlRecipe.states.idleBackground, theme.palette),
28
+ borderColor: resolveColorReference(border, theme.palette),
29
+ borderRadius: theme.tokens.radius[selectionControlRecipe.shapes[kind]],
30
+ borderWidth: selectionControlRecipe.indicatorBorderWidth,
31
+ flexShrink: 0,
32
+ height: control,
33
+ justifyContent: "center",
34
+ width: control,
35
+ }, children: artwork });
36
+ }
37
+ //# sourceMappingURL=selection-mark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection-mark.js","sourceRoot":"","sources":["../../src/internal/selection-mark.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/internal/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,OAAO,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,OAAO,CAAC;AAEhD;;qFAEqF;AACrF,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,IAAI,GAAE,IAAI,GAAG,MAAa,GACzB,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAU/B;AAED,eAAO,MAAM,kBAAkB;;;CAGD,CAAC;AAE/B,eAAO,MAAM,oBAAoB;;;;;CAKN,CAAC;AAE5B,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,IAAI,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC7B,CAAC,CAAC;AAYH;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,iBAAiB,EAC9B,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,EAC3B,yBAAyB,CAAC,EAAE,OAAO,GAClC,oBAAoB,CAyBtB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,CAEjF;AAED;;;mFAGmF;AACnF,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,QAAQ,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACrE,QAAQ,EAAE,OAAO,EACjB,iBAAiB,EAAE,MAAM,GACxB,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAI9B"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/internal/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,OAAO,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,OAAO,CAAC;AAEhD;;qFAEqF;AACrF,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,IAAI,GAAE,IAAI,GAAG,MAAa,GACzB,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAe/B;AAED,eAAO,MAAM,kBAAkB;;;CAGD,CAAC;AAE/B,eAAO,MAAM,oBAAoB;;;;;CAKN,CAAC;AAE5B,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,IAAI,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC7B,CAAC,CAAC;AAYH;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,iBAAiB,EAC9B,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,EAC3B,yBAAyB,CAAC,EAAE,OAAO,GAClC,oBAAoB,CAyBtB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,CAEjF;AAED;;;mFAGmF;AACnF,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,QAAQ,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACrE,QAAQ,EAAE,OAAO,EACjB,iBAAiB,EAAE,MAAM,GACxB,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAI9B"}
@@ -8,6 +8,11 @@ export function resolveNativeFontStyle(stack, role = "ui") {
8
8
  if (first === "ui-monospace" || first === "monospace") {
9
9
  return { fontFamily: Platform.OS === "ios" ? "Menlo" : "monospace" };
10
10
  }
11
+ // A CSS generic serif cannot be a Native family name. iOS ships Georgia under that name; Android exposes its system
12
+ // serif only through the generic "serif" family, so a named Latin face such as Georgia would fall back to sans.
13
+ if (first === "ui-serif" || first === "serif") {
14
+ return { fontFamily: Platform.OS === "ios" ? "Georgia" : "serif" };
15
+ }
11
16
  const neutralUI = role === "ui" && stack.length === fontFamily.ui.length &&
12
17
  stack.every((family, index) => family === fontFamily.ui[index]);
13
18
  return first === undefined || neutralUI
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/internal/styles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/internal/styles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * React Native text does not inherit `text-align` like CSS does. Containers whose Web counterpart sets
3
+ * `text-align` (e.g. the AuthScreenLayout hero, `.hjm-auth-screen__hero { text-align: center }`) provide
4
+ * it here so nested Text without an explicit `align` matches Web (2026-10-17 web/native comparison).
5
+ */
6
+ export declare const InheritedTextAlignContext: import("react").Context<"left" | "right" | "auto" | "center" | "justify" | undefined>;
7
+ export declare const useInheritedTextAlign: () => "left" | "right" | "auto" | "center" | "justify" | undefined;
8
+ //# sourceMappingURL=text-align.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-align.d.ts","sourceRoot":"","sources":["../../src/internal/text-align.tsx"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,uFAA+D,CAAC;AACtG,eAAO,MAAM,qBAAqB,oEAA8C,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { createContext, useContext } from "react";
2
+ /**
3
+ * React Native text does not inherit `text-align` like CSS does. Containers whose Web counterpart sets
4
+ * `text-align` (e.g. the AuthScreenLayout hero, `.hjm-auth-screen__hero { text-align: center }`) provide
5
+ * it here so nested Text without an explicit `align` matches Web (2026-10-17 web/native comparison).
6
+ */
7
+ export const InheritedTextAlignContext = createContext(undefined);
8
+ export const useInheritedTextAlign = () => useContext(InheritedTextAlignContext);
9
+ //# sourceMappingURL=text-align.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-align.js","sourceRoot":"","sources":["../../src/internal/text-align.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGlD;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAqC,SAAS,CAAC,CAAC;AACtG,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { resolveKeyboardAvoidanceBehavior, type KeyboardAvoidanceDescriptor } from "@hjmds/design-contracts/components/native-platform";
2
- import { type ReactNode } from "react";
3
- import { type StyleProp, type ViewStyle } from "react-native";
2
+ import { type ReactNode, type RefObject } from "react";
3
+ import { View, type NativeScrollEvent, type NativeSyntheticEvent, type ScrollView, type StyleProp, type ViewStyle } from "react-native";
4
4
  export type KeyboardAvoidingProps = KeyboardAvoidanceDescriptor & Readonly<{
5
5
  children: ReactNode;
6
6
  style?: StyleProp<ViewStyle>;
@@ -11,7 +11,25 @@ export type KeyboardAvoidingProps = KeyboardAvoidanceDescriptor & Readonly<{
11
11
  * BottomCTA disappears under the keyboard; the platform answer is fixed, so it
12
12
  * lives in the contract and this renderer just applies it.
13
13
  */
14
+ /**
15
+ * True inside a region that already keeps itself above the keyboard (KeyboardAvoiding, a keyboard-aware
16
+ * Sheet or Dialog). Nested layouts skip their own avoidance: both measuring at the same keyboard event
17
+ * would each see the full overlap and pad twice.
18
+ */
19
+ export declare const KeyboardAvoidanceContext: import("react").Context<boolean>;
20
+ /**
21
+ * Height of the keyboard overlapping `host`'s bottom edge. Padding only the real overlap keeps hosts above
22
+ * a tab bar or toolbar from showing an empty band (2026-10-16).
23
+ */
24
+ export declare function useKeyboardOverlap(host: RefObject<View | null>, enabled?: boolean): number;
25
+ /**
26
+ * After the keyboard settles, scroll the focused input inside `scroll` into view. A shrunken ScrollView
27
+ * does not do this by itself, so lower fields stayed hidden (2026-10-16 keyboard audit).
28
+ * Returns an onScroll handler that tracks the offset; merge it with any host handler.
29
+ */
30
+ export declare function useScrollFocusedInputIntoView(scroll: RefObject<ScrollView | null>, enabled?: boolean, margin?: number): (event: NativeSyntheticEvent<NativeScrollEvent>) => void;
14
31
  export declare function KeyboardAvoiding({ children, offset, safeAreaBottom, style }: KeyboardAvoidingProps): import("react").JSX.Element;
32
+ export declare function useInsideKeyboardAvoidance(): boolean;
15
33
  /** Re-exported so a product does not import the contract twice for one value. */
16
34
  export { resolveKeyboardAvoidanceBehavior };
17
35
  //# sourceMappingURL=keyboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../src/keyboard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,gCAAgC,EAEhC,KAAK,2BAA2B,EACjC,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,qBAAqB,GAAG,2BAA2B,GAC7D,QAAQ,CAAC;IACP,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC;AAEL;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,qBAAqB,+BA6BlG;AAED,iFAAiF;AACjF,OAAO,EAAE,gCAAgC,EAAE,CAAC"}
1
+ {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../src/keyboard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,gCAAgC,EAEhC,KAAK,2BAA2B,EACjC,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAA0D,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC/G,OAAO,EAKL,IAAI,EACJ,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,qBAAqB,GAAG,2BAA2B,GAC7D,QAAQ,CAAC;IACP,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC;AAEL;;;;;GAKG;AACH;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,kCAAuB,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,OAAO,UAAO,GAAG,MAAM,CAsBvF;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,OAAO,UAAO,EAAE,MAAM,SAAK,IAmBrG,OAAO,oBAAoB,CAAC,iBAAiB,CAAC,UACvD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,qBAAqB,+BAQlG;AAED,wBAAgB,0BAA0B,YAAmD;AAE7F,iFAAiF;AACjF,OAAO,EAAE,gCAAgC,EAAE,CAAC"}
package/dist/keyboard.js CHANGED
@@ -1,42 +1,92 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { keyboardTransitionDuration, resolveKeyboardAvoidanceBehavior, resolveKeyboardInset, } from "@hjmds/design-contracts/components/native-platform";
3
- import { useEffect, useState } from "react";
4
- import { Keyboard, LayoutAnimation, Platform, View, } from "react-native";
3
+ import { createContext, useContext, useEffect, useRef, useState } from "react";
4
+ import { Keyboard, LayoutAnimation, Platform, TextInput, View, } from "react-native";
5
5
  /**
6
6
  * Keeps bottom actions above the keyboard. Products were each choosing
7
7
  * `KeyboardAvoidingView`'s behavior themselves and re-discovering that a
8
8
  * BottomCTA disappears under the keyboard; the platform answer is fixed, so it
9
9
  * lives in the contract and this renderer just applies it.
10
10
  */
11
- export function KeyboardAvoiding({ children, offset, safeAreaBottom, style }) {
12
- const [height, setHeight] = useState(0);
11
+ /**
12
+ * True inside a region that already keeps itself above the keyboard (KeyboardAvoiding, a keyboard-aware
13
+ * Sheet or Dialog). Nested layouts skip their own avoidance: both measuring at the same keyboard event
14
+ * would each see the full overlap and pad twice.
15
+ */
16
+ export const KeyboardAvoidanceContext = createContext(false);
17
+ /**
18
+ * Height of the keyboard overlapping `host`'s bottom edge. Padding only the real overlap keeps hosts above
19
+ * a tab bar or toolbar from showing an empty band (2026-10-16).
20
+ */
21
+ export function useKeyboardOverlap(host, enabled = true) {
22
+ const [overlap, setOverlap] = useState(0);
13
23
  useEffect(() => {
24
+ if (!enabled) {
25
+ setOverlap(0);
26
+ return;
27
+ }
14
28
  // iOS reports the frame before the animation, Android only after it ends;
15
29
  // subscribing to both keeps one code path for the measured height.
16
30
  const showEvent = Platform.OS === "ios" ? "keyboardWillChangeFrame" : "keyboardDidShow";
17
31
  const hideEvent = Platform.OS === "ios" ? "keyboardWillHide" : "keyboardDidHide";
32
+ const apply = (next) => {
33
+ LayoutAnimation.configureNext({ duration: keyboardTransitionDuration, update: { type: LayoutAnimation.Types.easeInEaseOut } });
34
+ setOverlap(Math.max(0, next));
35
+ };
18
36
  const show = Keyboard.addListener(showEvent, (event) => {
19
- LayoutAnimation.configureNext({
20
- duration: keyboardTransitionDuration,
21
- update: { type: LayoutAnimation.Types.easeInEaseOut },
22
- });
23
- setHeight(event.endCoordinates?.height ?? 0);
37
+ const keyboardHeight = event.endCoordinates?.height ?? 0;
38
+ const keyboardTop = event.endCoordinates?.screenY;
39
+ if (keyboardTop === undefined || !host.current) {
40
+ apply(keyboardHeight);
41
+ return;
42
+ }
43
+ host.current.measureInWindow((_x, y, _width, viewHeight) => apply(Math.min(keyboardHeight, y + viewHeight - keyboardTop)));
24
44
  });
25
- const hide = Keyboard.addListener(hideEvent, () => {
26
- LayoutAnimation.configureNext({
27
- duration: keyboardTransitionDuration,
28
- update: { type: LayoutAnimation.Types.easeInEaseOut },
45
+ const hide = Keyboard.addListener(hideEvent, () => apply(0));
46
+ return () => { show.remove(); hide.remove(); };
47
+ }, [enabled, host]);
48
+ return overlap;
49
+ }
50
+ /**
51
+ * After the keyboard settles, scroll the focused input inside `scroll` into view. A shrunken ScrollView
52
+ * does not do this by itself, so lower fields stayed hidden (2026-10-16 keyboard audit).
53
+ * Returns an onScroll handler that tracks the offset; merge it with any host handler.
54
+ */
55
+ export function useScrollFocusedInputIntoView(scroll, enabled = true, margin = 16) {
56
+ const offset = useRef(0);
57
+ useEffect(() => {
58
+ if (!enabled)
59
+ return;
60
+ const shown = Keyboard.addListener("keyboardDidShow", () => {
61
+ const input = TextInput.State.currentlyFocusedInput?.();
62
+ const view = scroll.current;
63
+ if (!input || !view || typeof input.measureInWindow !== "function")
64
+ return;
65
+ view.measureInWindow((_sx, scrollTop, _sw, scrollHeight) => {
66
+ input.measureInWindow((_ix, inputTop, _iw, inputHeight) => {
67
+ const hiddenBelow = inputTop + inputHeight - (scrollTop + scrollHeight - margin);
68
+ const hiddenAbove = scrollTop + margin - inputTop;
69
+ if (hiddenBelow > 0)
70
+ scroll.current?.scrollTo({ y: offset.current + hiddenBelow, animated: true });
71
+ else if (hiddenAbove > 0)
72
+ scroll.current?.scrollTo({ y: Math.max(0, offset.current - hiddenAbove), animated: true });
73
+ });
29
74
  });
30
- setHeight(0);
31
75
  });
32
- return () => { show.remove(); hide.remove(); };
33
- }, []);
76
+ return () => shown.remove();
77
+ }, [enabled, margin, scroll]);
78
+ return (event) => { offset.current = event.nativeEvent.contentOffset.y; };
79
+ }
80
+ export function KeyboardAvoiding({ children, offset, safeAreaBottom, style }) {
81
+ const host = useRef(null);
82
+ const height = useKeyboardOverlap(host);
34
83
  const inset = resolveKeyboardInset(height, {
35
84
  ...(offset === undefined ? {} : { offset }),
36
85
  ...(safeAreaBottom === undefined ? {} : { safeAreaBottom }),
37
86
  });
38
- return _jsx(View, { style: [{ paddingBottom: inset }, style], children: children });
87
+ return _jsx(View, { ref: host, style: [{ paddingBottom: inset }, style], children: _jsx(KeyboardAvoidanceContext.Provider, { value: true, children: children }) });
39
88
  }
89
+ export function useInsideKeyboardAvoidance() { return useContext(KeyboardAvoidanceContext); }
40
90
  /** Re-exported so a product does not import the contract twice for one value. */
41
91
  export { resolveKeyboardAvoidanceBehavior };
42
92
  //# sourceMappingURL=keyboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAChC,oBAAoB,GAErB,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAC5D,OAAO,EACL,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,IAAI,GAGL,MAAM,cAAc,CAAC;AAQtB;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAyB;IACjG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxC,SAAS,CAAC,GAAG,EAAE;QACb,0EAA0E;QAC1E,mEAAmE;QACnE,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,iBAAiB,CAAC;QACxF,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAC;QACjF,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACrD,eAAe,CAAC,aAAa,CAAC;gBAC5B,QAAQ,EAAE,0BAA0B;gBACpC,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,aAAa,EAAE;aACtD,CAAC,CAAC;YACH,SAAS,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE;YAChD,eAAe,CAAC,aAAa,CAAC;gBAC5B,QAAQ,EAAE,0BAA0B;gBACpC,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,aAAa,EAAE;aACtD,CAAC,CAAC;YACH,SAAS,CAAC,CAAC,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE;QACzC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3C,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;KAC5D,CAAC,CAAC;IACH,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,YAAG,QAAQ,GAAQ,CAAC;AAC3E,CAAC;AAED,iFAAiF;AACjF,OAAO,EAAE,gCAAgC,EAAE,CAAC"}
1
+ {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.tsx"],"names":[],"mappings":"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"}
package/dist/masonry.d.ts CHANGED
@@ -1,16 +1,18 @@
1
- import type { ReactNode } from "react";
1
+ import { type ReactNode } from "react";
2
2
  import type { HjmCompositionStyleProp } from "./composition-style.js";
3
3
  export type MasonryProps<T> = {
4
4
  items: readonly T[];
5
5
  keyExtractor: (item: T) => string;
6
6
  renderItem: (item: T, index: number) => ReactNode;
7
7
  getItemHeight: (item: T, itemWidth: number) => number;
8
- width: number;
8
+ /** Slot width. Omit it and Masonry measures its own slot with onLayout; before the first measurement nothing is drawn. */
9
+ width?: number;
10
+ /** Fixed column count. Omit it and the count follows the width (`masonryRecipe.minItemWidth`). */
9
11
  columns?: number;
10
12
  gap?: number;
11
13
  label: string;
12
14
  empty?: ReactNode;
13
15
  layoutStyle?: HjmCompositionStyleProp;
14
16
  };
15
- export declare function Masonry<T>({ items, keyExtractor, renderItem, getItemHeight, width, columns, gap, label, empty, layoutStyle }: MasonryProps<T>): import("react").JSX.Element;
17
+ export declare function Masonry<T>(props: MasonryProps<T>): import("react").JSX.Element;
16
18
  //# sourceMappingURL=masonry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"masonry.d.ts","sourceRoot":"","sources":["../src/masonry.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAAC,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,WAAW,CAAC,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAC3T,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,OAAW,EAAE,GAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,+BAUtJ"}
1
+ {"version":3,"file":"masonry.d.ts","sourceRoot":"","sources":["../src/masonry.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKjD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAAC,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/L,0HAA0H;IAC1H,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,WAAW,CAAC,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAC5G,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,+BAOhD"}
package/dist/masonry.js CHANGED
@@ -1,11 +1,20 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { resolveMasonryLayout } from "@hjmds/design-contracts/components/masonry";
2
+ import { useState } from "react";
3
+ import { resolveMasonryColumns, resolveMasonryLayout } from "@hjmds/design-contracts/components/masonry";
3
4
  import { validateListKeys } from "@hjmds/design-contracts/components/virtual-list";
4
5
  import { View } from "react-native";
5
6
  import { useHjmNativeTheme } from "./provider.js";
6
- export function Masonry({ items, keyExtractor, renderItem, getItemHeight, width, columns = 2, gap = 12, label, empty, layoutStyle }) {
7
+ export function Masonry(props) {
8
+ const [measured, setMeasured] = useState(0);
9
+ if (props.width !== undefined)
10
+ return _jsx(MasonryFrame, { ...props, width: props.width });
11
+ const { layoutStyle, ...frame } = props;
12
+ return _jsx(View, { style: [{ alignSelf: "stretch" }, layoutStyle], onLayout: event => setMeasured(event.nativeEvent.layout.width), children: measured > 0 ? _jsx(MasonryFrame, { ...frame, width: measured }) : null });
13
+ }
14
+ function MasonryFrame({ items, keyExtractor, renderItem, getItemHeight, width, columns: suppliedColumns, gap = 12, label, empty, layoutStyle }) {
7
15
  const keys = items.map(keyExtractor);
8
16
  validateListKeys(keys, label);
17
+ const columns = suppliedColumns ?? resolveMasonryColumns(width, gap);
9
18
  const itemWidth = resolveMasonryLayout([], width, columns, gap).itemWidth;
10
19
  const layout = resolveMasonryLayout(items.map(item => getItemHeight(item, itemWidth)), width, columns, gap);
11
20
  const { environment } = useHjmNativeTheme();
@@ -1 +1 @@
1
- {"version":3,"file":"masonry.js","sourceRoot":"","sources":["../src/masonry.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AACnF,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGlD,MAAM,UAAU,OAAO,CAAI,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAmB;IACrJ,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC;IAC1E,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5G,MAAM,EAAE,WAAW,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAC5C,yFAAyF;IACzF,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,KAAC,IAAI,IAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,YAAG,KAAK,GAAQ,CAAC;IAC3J,OAAO,KAAC,IAAI,IAAC,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,YAC3F,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,CAAC,OAAO,KAAC,IAAI,IAAmB,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,YAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAArN,IAAI,CAAC,KAAK,CAAC,CAAkN,CAAC,CAAC,CAAC,CAAC,GAChT,CAAC;AACV,CAAC"}
1
+ {"version":3,"file":"masonry.js","sourceRoot":"","sources":["../src/masonry.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-bar.d.ts","sourceRoot":"","sources":["../src/navigation-bar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB,CAAC,CAAC;AAEH,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,kBAAkB,+BAWpF"}
1
+ {"version":3,"file":"navigation-bar.d.ts","sourceRoot":"","sources":["../src/navigation-bar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB,CAAC,CAAC;AAEH,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,kBAAkB,+BAYpF"}
@@ -9,6 +9,6 @@ export function NavigationBar({ label, brand, children, actions }) {
9
9
  throw new TypeError("NavigationBar requires an accessible label");
10
10
  // Core RN has no portable backdrop blur. Use a solid semantic surface instead
11
11
  // of adding a mandatory native blur dependency or faking unreadable transparency.
12
- return _jsxs(View, { accessible: false, accessibilityLabel: label, style: { direction: environment.direction, gap: spacing.md, padding: spacing.sm, borderWidth: 1, borderColor: colors.border, borderRadius: tokens.radius.xl, backgroundColor: colors.surface }, children: [_jsxs(View, { style: { flexDirection: "row", flexWrap: "wrap", alignItems: "center", gap: spacing.md }, children: [brand, _jsx(View, { style: { flexDirection: "row", flexWrap: "wrap", alignItems: "center", gap: spacing.xs, flexGrow: 1, flexShrink: 1 }, children: children })] }), actions && _jsx(View, { style: { gap: spacing.xs }, children: actions })] });
12
+ return _jsxs(View, { accessible: false, accessibilityLabel: label, style: { direction: environment.direction, gap: spacing.md, padding: spacing.sm, borderWidth: 1, borderColor: colors.border, borderRadius: tokens.radius.xl, backgroundColor: colors.surface }, children: [_jsxs(View, { style: { flexDirection: "row", flexWrap: "wrap", alignItems: "center", gap: spacing.md }, children: [brand, _jsx(View, { style: { flexDirection: "row", flexWrap: "wrap", alignItems: "center", gap: spacing.xs, flexGrow: 1, flexShrink: 1 }, children: children })] }), actions && _jsx(View, { style: { flexDirection: "row", flexWrap: "wrap", alignItems: "center", gap: spacing.xs }, children: actions })] });
13
13
  }
14
14
  //# sourceMappingURL=navigation-bar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-bar.js","sourceRoot":"","sources":["../src/navigation-bar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AASlD,sFAAsF;AACtF,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAsB;IACnF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAC5D,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;IACrF,8EAA8E;IAC9E,kFAAkF;IAClF,OAAO,MAAC,IAAI,IAAC,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,aACvP,MAAC,IAAI,IAAC,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,aAC3F,KAAK,EAAC,KAAC,IAAI,IAAC,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAG,QAAQ,GAAQ,IAC/I,EACN,OAAO,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,YAAG,OAAO,GAAQ,IACzD,CAAC;AACV,CAAC"}
1
+ {"version":3,"file":"navigation-bar.js","sourceRoot":"","sources":["../src/navigation-bar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AASlD,sFAAsF;AACtF,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAsB;IACnF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAC5D,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;IACrF,8EAA8E;IAC9E,kFAAkF;IAClF,OAAO,MAAC,IAAI,IAAC,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,aACvP,MAAC,IAAI,IAAC,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,aAC3F,KAAK,EAAC,KAAC,IAAI,IAAC,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAG,QAAQ,GAAQ,IAC/I,EAEN,OAAO,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,YAAG,OAAO,GAAQ,IACvH,CAAC;AACV,CAAC"}
@@ -9,6 +9,7 @@ import { type ReactElement, type ReactNode } from "react";
9
9
  import { type ModalProps, type PressableProps } from "react-native";
10
10
  import type { HjmCompositionStyleProp } from "./composition-style.js";
11
11
  export type { TabsAppearance };
12
+ import { type ScreenExit } from "./internal/screen-exit.js";
12
13
  export type TabItem<Value extends string = string> = Readonly<{
13
14
  id: Value;
14
15
  label: string;
@@ -177,6 +178,8 @@ export type TopBarProps = Readonly<{
177
178
  onTitlePress?: NonNullable<PressableProps["onPress"]>;
178
179
  titleAccessibilityLabel?: string;
179
180
  titleAccessibilityHint?: string;
181
+ /** Leaving this screen: icon-only back/close fixed at the leading edge (2026-10-17). Exclusive with `leading`. */
182
+ exit?: ScreenExit;
180
183
  leading?: ReactNode;
181
184
  trailing?: ReactNode;
182
185
  /** Semantic alias for trailing actions; do not combine with `trailing`. */
@@ -187,7 +190,7 @@ export type TopBarProps = Readonly<{
187
190
  layoutStyle?: HjmCompositionStyleProp;
188
191
  }>;
189
192
  /** Native screen top bar with logical action slots and large-text reflow. */
190
- export declare function TopBar({ title, titleContent: customTitleContent, subtitle, titleLeading, onTitlePress, titleAccessibilityLabel, titleAccessibilityHint, leading, trailing, actions, centered, safeAreaTop, layoutStyle, ...removedProps }: TopBarProps): import("react").JSX.Element;
193
+ export declare function TopBar({ title, titleContent: customTitleContent, subtitle, titleLeading, onTitlePress, titleAccessibilityLabel, titleAccessibilityHint, exit, leading: leadingSlot, trailing, actions, centered, safeAreaTop, layoutStyle, ...removedProps }: TopBarProps): import("react").JSX.Element;
191
194
  /** Flat and sectioned menus share collection identifiers and rendering slots. */
192
195
  export type MenuItem<Value extends string = string> = Omit<CollectionItemDescriptor<Value>, "textValue"> & Readonly<{
193
196
  textValue?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@ import { assertNoRemovedStyleProps } from "./internal/diagnostics.js";
13
13
  import { RecipeButton } from "./internal/recipe-button.js";
14
14
  import { isWebRenderer, webOnly, webTabProps } from "./internal/web-a11y.js";
15
15
  import { Button } from "./actions.js";
16
+ import { ScreenExitButton } from "./internal/screen-exit.js";
17
+ import { validateScreenExit } from "@hjmds/design-contracts/screen-patterns";
16
18
  import { Spinner } from "./feedback.js";
17
19
  import { scheduleAfterNativeModalTeardown, shouldAwaitNativeModalDismiss, } from "./internal/modal-lifecycle.js";
18
20
  import { useControllableState } from "./internal/state.js";
@@ -248,6 +250,9 @@ export function Tabs(props) {
248
250
  direction,
249
251
  flexGrow: fitted ? 1 : 0,
250
252
  flexDirection: orientation === "vertical" ? "column" : "row",
253
+ // The divider lives on the content container, so it must span the viewport like Web .hjm-tabs__list;
254
+ // content-width containers cut it off after the last tab (2026-10-17 review N7).
255
+ minWidth: orientation === "horizontal" ? tabViewport : undefined,
251
256
  },
252
257
  ], children: [movingIndicator && (indicatorRecipe || swipePosition) ? _jsx(Animated.View, { pointerEvents: "none", accessible: false, accessibilityElementsHidden: true, importantForAccessibility: "no-hide-descendants", style: {
253
258
  position: "absolute", bottom: 0, height: appearance === "gooey" ? 6 : tabsRecipe.indicatorHeight, borderRadius: theme.tokens.radius.full,
@@ -470,6 +475,8 @@ export function BottomNavigation({ descriptor, onActivate, onLongActivate, rende
470
475
  direction: presentation.direction,
471
476
  flexDirection: "row",
472
477
  width: capsule ? undefined : "100%",
478
+ maxWidth: presentationRecipe.contentMaxWidth ?? undefined,
479
+ alignSelf: capsule ? undefined : "center",
473
480
  flex: capsule ? 1 : undefined,
474
481
  minWidth: 0,
475
482
  padding: tile ? tileRecipe.padding : capsule ? spacing.xxs : 0,
@@ -697,8 +704,11 @@ export function TopBarAction(props) {
697
704
  return props.renderAction?.(controlProps) ?? _jsx(Pressable, { ...controlProps });
698
705
  }
699
706
  /** Native screen top bar with logical action slots and large-text reflow. */
700
- export function TopBar({ title, titleContent: customTitleContent, subtitle, titleLeading, onTitlePress, titleAccessibilityLabel, titleAccessibilityHint, leading, trailing, actions, centered = topBarRecipe.defaults.centered, safeAreaTop = 0, layoutStyle, ...removedProps }) {
707
+ export function TopBar({ title, titleContent: customTitleContent, subtitle, titleLeading, onTitlePress, titleAccessibilityLabel, titleAccessibilityHint, exit, leading: leadingSlot, trailing, actions, centered = topBarRecipe.defaults.centered, safeAreaTop = 0, layoutStyle, ...removedProps }) {
701
708
  assertNoRemovedStyleProps("TopBar", removedProps, ["style", "leadingStyle", "titleStyle", "trailingStyle"]);
709
+ if (exit)
710
+ validateScreenExit(exit, leadingSlot !== undefined);
711
+ const leading = exit ? _jsx(ScreenExitButton, { ...exit }) : leadingSlot;
702
712
  if (customTitleContent !== undefined && (title !== undefined || subtitle !== undefined || titleLeading !== undefined || onTitlePress !== undefined || titleAccessibilityLabel !== undefined || titleAccessibilityHint !== undefined)) {
703
713
  throw new TypeError("TopBar titleContent is exclusive with title affordances");
704
714
  }