@hzblj/kara-components 0.20.0 → 0.21.0

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 (480) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/lib/module/atoms/activity-indicator/activity-indicator.android.js +1 -1
  3. package/lib/module/atoms/activity-indicator/activity-indicator.android.js.map +1 -1
  4. package/lib/module/atoms/activity-indicator/activity-indicator.ios.js +1 -1
  5. package/lib/module/atoms/activity-indicator/activity-indicator.ios.js.map +1 -1
  6. package/lib/module/atoms/badge/badge.android.js +1 -1
  7. package/lib/module/atoms/badge/badge.android.js.map +1 -1
  8. package/lib/module/atoms/badge/badge.ios.js +1 -1
  9. package/lib/module/atoms/badge/badge.ios.js.map +1 -1
  10. package/lib/module/atoms/blur-view/blur-view.android.js +22 -1
  11. package/lib/module/atoms/blur-view/blur-view.android.js.map +1 -1
  12. package/lib/module/atoms/blur-view/blur-view.ios.js +20 -0
  13. package/lib/module/atoms/blur-view/blur-view.ios.js.map +1 -1
  14. package/lib/module/atoms/button/button.android.js +1 -1
  15. package/lib/module/atoms/button/button.android.js.map +1 -1
  16. package/lib/module/atoms/button/button.ios.js +1 -1
  17. package/lib/module/atoms/button/button.ios.js.map +1 -1
  18. package/lib/module/atoms/card/card.android.js +1 -1
  19. package/lib/module/atoms/card/card.android.js.map +1 -1
  20. package/lib/module/atoms/card/card.ios.js +1 -1
  21. package/lib/module/atoms/card/card.ios.js.map +1 -1
  22. package/lib/module/atoms/checkbox/checkbox.android.js +1 -1
  23. package/lib/module/atoms/checkbox/checkbox.android.js.map +1 -1
  24. package/lib/module/atoms/checkbox/checkbox.ios.js +1 -1
  25. package/lib/module/atoms/checkbox/checkbox.ios.js.map +1 -1
  26. package/lib/module/atoms/color-picker/color-picker.android.js +1 -1
  27. package/lib/module/atoms/color-picker/color-picker.android.js.map +1 -1
  28. package/lib/module/atoms/color-picker/color-picker.ios.js +1 -1
  29. package/lib/module/atoms/color-picker/color-picker.ios.js.map +1 -1
  30. package/lib/module/atoms/date-picker/date-picker.android.js +1 -1
  31. package/lib/module/atoms/date-picker/date-picker.android.js.map +1 -1
  32. package/lib/module/atoms/date-picker/date-picker.ios.js +1 -1
  33. package/lib/module/atoms/date-picker/date-picker.ios.js.map +1 -1
  34. package/lib/module/atoms/divider/divider.android.js +1 -1
  35. package/lib/module/atoms/divider/divider.android.js.map +1 -1
  36. package/lib/module/atoms/divider/divider.ios.js +1 -1
  37. package/lib/module/atoms/divider/divider.ios.js.map +1 -1
  38. package/lib/module/atoms/fab/fab.android.js +1 -1
  39. package/lib/module/atoms/fab/fab.android.js.map +1 -1
  40. package/lib/module/atoms/fab/fab.ios.js +1 -1
  41. package/lib/module/atoms/fab/fab.ios.js.map +1 -1
  42. package/lib/module/atoms/glyph/glyph-button.android.js.map +1 -0
  43. package/lib/module/atoms/glyph/glyph-button.ios.js.map +1 -0
  44. package/lib/module/atoms/glyph/glyph-button.types.js.map +1 -0
  45. package/lib/module/atoms/glyph/glyph.android.js.map +1 -0
  46. package/lib/module/atoms/glyph/glyph.ios.js.map +1 -0
  47. package/lib/module/atoms/glyph/glyph.types.js.map +1 -0
  48. package/lib/module/atoms/glyph/index.js.map +1 -0
  49. package/lib/module/atoms/glyph/rn-glyph.android.js.map +1 -0
  50. package/lib/module/atoms/glyph/rn-glyph.ios.js.map +1 -0
  51. package/lib/module/atoms/h-stack/h-stack.android.js +2 -2
  52. package/lib/module/atoms/h-stack/h-stack.android.js.map +1 -1
  53. package/lib/module/atoms/h-stack/h-stack.ios.js +2 -2
  54. package/lib/module/atoms/h-stack/h-stack.ios.js.map +1 -1
  55. package/lib/module/atoms/icon/icon.android.js +1 -1
  56. package/lib/module/atoms/icon/icon.android.js.map +1 -1
  57. package/lib/module/atoms/icon/icon.ios.js +1 -1
  58. package/lib/module/atoms/icon/icon.ios.js.map +1 -1
  59. package/lib/module/atoms/icon-button/icon-button.android.js +1 -1
  60. package/lib/module/atoms/icon-button/icon-button.android.js.map +1 -1
  61. package/lib/module/atoms/icon-button/icon-button.ios.js +1 -1
  62. package/lib/module/atoms/icon-button/icon-button.ios.js.map +1 -1
  63. package/lib/module/atoms/island/island.android.js +3 -1
  64. package/lib/module/atoms/island/island.android.js.map +1 -1
  65. package/lib/module/atoms/island/island.ios.js +3 -1
  66. package/lib/module/atoms/island/island.ios.js.map +1 -1
  67. package/lib/module/atoms/list/list.android.js +2 -2
  68. package/lib/module/atoms/list/list.android.js.map +1 -1
  69. package/lib/module/atoms/list/list.ios.js +1 -1
  70. package/lib/module/atoms/list/list.ios.js.map +1 -1
  71. package/lib/module/atoms/picker/picker.android.js +2 -2
  72. package/lib/module/atoms/picker/picker.android.js.map +1 -1
  73. package/lib/module/atoms/picker/picker.ios.js +1 -1
  74. package/lib/module/atoms/picker/picker.ios.js.map +1 -1
  75. package/lib/module/atoms/pressable/pressable.js +1 -1
  76. package/lib/module/atoms/pressable/pressable.js.map +1 -1
  77. package/lib/module/atoms/progress/progress.android.js +1 -1
  78. package/lib/module/atoms/progress/progress.android.js.map +1 -1
  79. package/lib/module/atoms/progress/progress.ios.js +1 -1
  80. package/lib/module/atoms/progress/progress.ios.js.map +1 -1
  81. package/lib/module/atoms/scroll-view/scroll-view.android.js +2 -2
  82. package/lib/module/atoms/scroll-view/scroll-view.android.js.map +1 -1
  83. package/lib/module/atoms/scroll-view/scroll-view.ios.js +1 -1
  84. package/lib/module/atoms/scroll-view/scroll-view.ios.js.map +1 -1
  85. package/lib/module/atoms/segmented-control/segmented-control.android.js +1 -1
  86. package/lib/module/atoms/segmented-control/segmented-control.android.js.map +1 -1
  87. package/lib/module/atoms/segmented-control/segmented-control.ios.js +1 -1
  88. package/lib/module/atoms/segmented-control/segmented-control.ios.js.map +1 -1
  89. package/lib/module/atoms/slider/slider.android.js +1 -1
  90. package/lib/module/atoms/slider/slider.android.js.map +1 -1
  91. package/lib/module/atoms/slider/slider.ios.js +1 -1
  92. package/lib/module/atoms/slider/slider.ios.js.map +1 -1
  93. package/lib/module/atoms/spacer/spacer.android.js +1 -1
  94. package/lib/module/atoms/spacer/spacer.android.js.map +1 -1
  95. package/lib/module/atoms/spacer/spacer.ios.js +1 -1
  96. package/lib/module/atoms/spacer/spacer.ios.js.map +1 -1
  97. package/lib/module/atoms/surface/surface.android.js +1 -1
  98. package/lib/module/atoms/surface/surface.android.js.map +1 -1
  99. package/lib/module/atoms/surface/surface.ios.js +1 -1
  100. package/lib/module/atoms/surface/surface.ios.js.map +1 -1
  101. package/lib/module/atoms/switch/switch.android.js +1 -1
  102. package/lib/module/atoms/switch/switch.android.js.map +1 -1
  103. package/lib/module/atoms/switch/switch.ios.js +1 -1
  104. package/lib/module/atoms/switch/switch.ios.js.map +1 -1
  105. package/lib/module/atoms/text/text.android.js +1 -1
  106. package/lib/module/atoms/text/text.android.js.map +1 -1
  107. package/lib/module/atoms/text/text.ios.js +1 -1
  108. package/lib/module/atoms/text/text.ios.js.map +1 -1
  109. package/lib/module/atoms/text-field/text-field.android.js +2 -2
  110. package/lib/module/atoms/text-field/text-field.android.js.map +1 -1
  111. package/lib/module/atoms/text-field/text-field.ios.js +1 -1
  112. package/lib/module/atoms/text-field/text-field.ios.js.map +1 -1
  113. package/lib/module/atoms/v-stack/v-stack.android.js +2 -2
  114. package/lib/module/atoms/v-stack/v-stack.android.js.map +1 -1
  115. package/lib/module/atoms/v-stack/v-stack.ios.js +2 -2
  116. package/lib/module/atoms/v-stack/v-stack.ios.js.map +1 -1
  117. package/lib/module/atoms/z-stack/z-stack.android.js +2 -2
  118. package/lib/module/atoms/z-stack/z-stack.android.js.map +1 -1
  119. package/lib/module/atoms/z-stack/z-stack.ios.js +2 -2
  120. package/lib/module/atoms/z-stack/z-stack.ios.js.map +1 -1
  121. package/lib/module/hooks/host-context.js.map +1 -0
  122. package/lib/module/hooks/use-refresh-state.js.map +1 -0
  123. package/lib/module/hooks/use-stack-modifiers.js.map +1 -0
  124. package/lib/module/molecules/collapsible/collapsible.android.js +2 -2
  125. package/lib/module/molecules/collapsible/collapsible.android.js.map +1 -1
  126. package/lib/module/molecules/collapsible/collapsible.ios.js +1 -1
  127. package/lib/module/molecules/collapsible/collapsible.ios.js.map +1 -1
  128. package/lib/module/molecules/labeled-content/labeled-content.js +1 -1
  129. package/lib/module/molecules/labeled-content/labeled-content.js.map +1 -1
  130. package/lib/module/molecules/list-item/list-item.js +1 -1
  131. package/lib/module/molecules/list-item/list-item.js.map +1 -1
  132. package/lib/module/molecules/navigation-bar/navigation-bar.constants.js +5 -0
  133. package/lib/module/molecules/navigation-bar/navigation-bar.constants.js.map +1 -0
  134. package/lib/module/molecules/navigation-bar/navigation-bar.ios.js +31 -4
  135. package/lib/module/molecules/navigation-bar/navigation-bar.ios.js.map +1 -1
  136. package/lib/module/molecules/pager/pager.android.js +1 -1
  137. package/lib/module/molecules/pager/pager.android.js.map +1 -1
  138. package/lib/module/molecules/pager/pager.ios.js +1 -1
  139. package/lib/module/molecules/pager/pager.ios.js.map +1 -1
  140. package/lib/module/molecules/radio-group/radio-group.android.js +1 -1
  141. package/lib/module/molecules/radio-group/radio-group.android.js.map +1 -1
  142. package/lib/module/molecules/radio-group/radio-group.ios.js +2 -2
  143. package/lib/module/molecules/radio-group/radio-group.ios.js.map +1 -1
  144. package/lib/module/molecules/rn-list-item/rn-list-item.js +1 -1
  145. package/lib/module/molecules/rn-list-item/rn-list-item.js.map +1 -1
  146. package/lib/module/molecules/rn-tooltip/rn-tooltip.android.js +1 -1
  147. package/lib/module/molecules/rn-tooltip/rn-tooltip.android.js.map +1 -1
  148. package/lib/module/molecules/search-bar/search-bar.js +1 -1
  149. package/lib/module/molecules/search-bar/search-bar.js.map +1 -1
  150. package/lib/module/molecules/stepper/stepper.android.js +2 -2
  151. package/lib/module/molecules/stepper/stepper.android.js.map +1 -1
  152. package/lib/module/molecules/stepper/stepper.ios.js +1 -1
  153. package/lib/module/molecules/stepper/stepper.ios.js.map +1 -1
  154. package/lib/module/molecules/tooltip/tooltip.android.js +1 -1
  155. package/lib/module/molecules/tooltip/tooltip.android.js.map +1 -1
  156. package/lib/module/molecules/tooltip/tooltip.ios.js +1 -1
  157. package/lib/module/molecules/tooltip/tooltip.ios.js.map +1 -1
  158. package/lib/module/organisms/action-sheet/action-sheet.android.js +1 -1
  159. package/lib/module/organisms/action-sheet/action-sheet.android.js.map +1 -1
  160. package/lib/module/organisms/action-sheet/action-sheet.ios.js +1 -1
  161. package/lib/module/organisms/action-sheet/action-sheet.ios.js.map +1 -1
  162. package/lib/module/organisms/alert/alert.android.js +1 -1
  163. package/lib/module/organisms/alert/alert.android.js.map +1 -1
  164. package/lib/module/organisms/alert/alert.ios.js +1 -1
  165. package/lib/module/organisms/alert/alert.ios.js.map +1 -1
  166. package/lib/module/organisms/context-menu/context-menu.android.js +2 -2
  167. package/lib/module/organisms/context-menu/context-menu.android.js.map +1 -1
  168. package/lib/module/organisms/fab-menu/fab-menu.android.js +2 -2
  169. package/lib/module/organisms/fab-menu/fab-menu.android.js.map +1 -1
  170. package/lib/module/organisms/fab-menu/fab-menu.ios.js +2 -2
  171. package/lib/module/organisms/fab-menu/fab-menu.ios.js.map +1 -1
  172. package/lib/module/organisms/form/form.android.js +1 -1
  173. package/lib/module/organisms/form/form.android.js.map +1 -1
  174. package/lib/module/organisms/form/form.ios.js +1 -1
  175. package/lib/module/organisms/form/form.ios.js.map +1 -1
  176. package/lib/module/organisms/header/header-color.js +8 -0
  177. package/lib/module/organisms/header/header-color.js.map +1 -0
  178. package/lib/module/organisms/header/header-inset.android.js +6 -0
  179. package/lib/module/organisms/header/header-inset.android.js.map +1 -0
  180. package/lib/module/organisms/header/header-inset.ios.js +19 -0
  181. package/lib/module/organisms/header/header-inset.ios.js.map +1 -0
  182. package/lib/module/organisms/header/header-options.android.js +180 -0
  183. package/lib/module/organisms/header/header-options.android.js.map +1 -0
  184. package/lib/module/organisms/header/header-options.ios.js +145 -0
  185. package/lib/module/organisms/header/header-options.ios.js.map +1 -0
  186. package/lib/module/organisms/header/header-options.types.js +4 -0
  187. package/lib/module/organisms/header/header-options.types.js.map +1 -0
  188. package/lib/module/organisms/header/header-search-accessory.android.js +5 -0
  189. package/lib/module/organisms/header/header-search-accessory.android.js.map +1 -0
  190. package/lib/module/organisms/header/header-search-accessory.ios.js +35 -0
  191. package/lib/module/organisms/header/header-search-accessory.ios.js.map +1 -0
  192. package/lib/module/organisms/header/header-search-accessory.types.js +4 -0
  193. package/lib/module/organisms/header/header-search-accessory.types.js.map +1 -0
  194. package/lib/module/organisms/header/header-search-input.android.js +80 -0
  195. package/lib/module/organisms/header/header-search-input.android.js.map +1 -0
  196. package/lib/module/organisms/header/header-search-input.ios.js +8 -0
  197. package/lib/module/organisms/header/header-search-input.ios.js.map +1 -0
  198. package/lib/module/organisms/header/header-search-input.types.js +4 -0
  199. package/lib/module/organisms/header/header-search-input.types.js.map +1 -0
  200. package/lib/module/organisms/header/header-search-scrim.js +62 -0
  201. package/lib/module/organisms/header/header-search-scrim.js.map +1 -0
  202. package/lib/module/organisms/header/header-title.js +230 -0
  203. package/lib/module/organisms/header/header-title.js.map +1 -0
  204. package/lib/module/organisms/header/header.types.js +4 -0
  205. package/lib/module/organisms/header/header.types.js.map +1 -0
  206. package/lib/module/organisms/header/hero-header-background.android.js +33 -0
  207. package/lib/module/organisms/header/hero-header-background.android.js.map +1 -0
  208. package/lib/module/organisms/header/hero-header-background.ios.js +40 -0
  209. package/lib/module/organisms/header/hero-header-background.ios.js.map +1 -0
  210. package/lib/module/organisms/header/hero-header-background.types.js +4 -0
  211. package/lib/module/organisms/header/hero-header-background.types.js.map +1 -0
  212. package/lib/module/organisms/header/index.js +13 -0
  213. package/lib/module/organisms/header/index.js.map +1 -0
  214. package/lib/module/organisms/header/native-subtitle.android.js +5 -0
  215. package/lib/module/organisms/header/native-subtitle.android.js.map +1 -0
  216. package/lib/module/organisms/header/native-subtitle.ios.js +22 -0
  217. package/lib/module/organisms/header/native-subtitle.ios.js.map +1 -0
  218. package/lib/module/organisms/header/native-subtitle.types.js +4 -0
  219. package/lib/module/organisms/header/native-subtitle.types.js.map +1 -0
  220. package/lib/module/organisms/header/sheet-grabber.android.js +5 -0
  221. package/lib/module/organisms/header/sheet-grabber.android.js.map +1 -0
  222. package/lib/module/organisms/header/sheet-grabber.ios.js +15 -0
  223. package/lib/module/organisms/header/sheet-grabber.ios.js.map +1 -0
  224. package/lib/module/organisms/header/sheet-grabber.types.js +4 -0
  225. package/lib/module/organisms/header/sheet-grabber.types.js.map +1 -0
  226. package/lib/module/organisms/header/use-header-bar-inset.android.js +4 -0
  227. package/lib/module/organisms/header/use-header-bar-inset.android.js.map +1 -0
  228. package/lib/module/organisms/header/use-header-bar-inset.ios.js +9 -0
  229. package/lib/module/organisms/header/use-header-bar-inset.ios.js.map +1 -0
  230. package/lib/module/organisms/header/use-header-bar-inset.types.js +2 -0
  231. package/lib/module/organisms/header/use-header-bar-inset.types.js.map +1 -0
  232. package/lib/module/organisms/header/use-header-scroll-to-top.js +51 -0
  233. package/lib/module/organisms/header/use-header-scroll-to-top.js.map +1 -0
  234. package/lib/module/organisms/header/use-header-search.js +135 -0
  235. package/lib/module/organisms/header/use-header-search.js.map +1 -0
  236. package/lib/module/organisms/header/use-header.js +74 -0
  237. package/lib/module/organisms/header/use-header.js.map +1 -0
  238. package/lib/module/organisms/header/use-hero-header.js +189 -0
  239. package/lib/module/organisms/header/use-hero-header.js.map +1 -0
  240. package/lib/module/organisms/header/use-stack-screen-options.js +77 -0
  241. package/lib/module/organisms/header/use-stack-screen-options.js.map +1 -0
  242. package/lib/module/organisms/menu/menu.android.js +2 -2
  243. package/lib/module/organisms/menu/menu.android.js.map +1 -1
  244. package/lib/module/organisms/menu/menu.ios.js +1 -1
  245. package/lib/module/organisms/menu/menu.ios.js.map +1 -1
  246. package/lib/module/organisms/sheet/use-sheet-header.js +3 -1
  247. package/lib/module/organisms/sheet/use-sheet-header.js.map +1 -1
  248. package/lib/module/organisms/snackbar/snackbar.js +1 -1
  249. package/lib/module/organisms/snackbar/snackbar.js.map +1 -1
  250. package/lib/module/organisms/swipe-actions/swipe-actions.android.js +1 -1
  251. package/lib/module/organisms/swipe-actions/swipe-actions.android.js.map +1 -1
  252. package/lib/module/organisms/swipe-actions/swipe-actions.ios.js +1 -1
  253. package/lib/module/organisms/swipe-actions/swipe-actions.ios.js.map +1 -1
  254. package/lib/module/templates/screen/screen.android.js +3 -3
  255. package/lib/module/templates/screen/screen.android.js.map +1 -1
  256. package/lib/module/templates/screen/screen.ios.js +3 -3
  257. package/lib/module/templates/screen/screen.ios.js.map +1 -1
  258. package/lib/module/utils/ripple-clip.js.map +1 -0
  259. package/lib/module/utils/tap-modifiers.js.map +1 -0
  260. package/lib/typescript/atoms/blur-view/blur-view.types.d.ts +8 -0
  261. package/lib/typescript/atoms/island/island.types.d.ts +17 -0
  262. package/lib/typescript/molecules/navigation-bar/navigation-bar.constants.d.ts +2 -0
  263. package/lib/typescript/molecules/navigation-bar/navigation-bar.types.d.ts +67 -4
  264. package/lib/typescript/organisms/header/header-color.d.ts +6 -0
  265. package/lib/typescript/organisms/header/header-inset.d.ts +1 -0
  266. package/lib/typescript/organisms/header/header-inset.ios.d.ts +2 -0
  267. package/lib/typescript/organisms/header/header-options.d.ts +1 -0
  268. package/lib/typescript/organisms/header/header-options.ios.d.ts +2 -0
  269. package/lib/typescript/organisms/header/header-options.types.d.ts +4 -0
  270. package/lib/typescript/organisms/header/header-search-accessory.d.ts +1 -0
  271. package/lib/typescript/organisms/header/header-search-accessory.ios.d.ts +6 -0
  272. package/lib/typescript/organisms/header/header-search-accessory.types.d.ts +9 -0
  273. package/lib/typescript/organisms/header/header-search-input.d.ts +1 -0
  274. package/lib/typescript/organisms/header/header-search-input.ios.d.ts +5 -0
  275. package/lib/typescript/organisms/header/header-search-input.types.d.ts +17 -0
  276. package/lib/typescript/organisms/header/header-search-scrim.d.ts +11 -0
  277. package/lib/typescript/organisms/header/header-title.d.ts +22 -0
  278. package/lib/typescript/organisms/header/header.types.d.ts +440 -0
  279. package/lib/typescript/organisms/header/hero-header-background.d.ts +1 -0
  280. package/lib/typescript/organisms/header/hero-header-background.ios.d.ts +7 -0
  281. package/lib/typescript/organisms/header/hero-header-background.types.d.ts +9 -0
  282. package/lib/typescript/organisms/header/index.d.ts +11 -0
  283. package/lib/typescript/organisms/header/native-subtitle.d.ts +1 -0
  284. package/lib/typescript/organisms/header/native-subtitle.ios.d.ts +4 -0
  285. package/lib/typescript/organisms/header/native-subtitle.types.d.ts +6 -0
  286. package/lib/typescript/organisms/header/sheet-grabber.d.ts +1 -0
  287. package/lib/typescript/organisms/header/sheet-grabber.ios.d.ts +7 -0
  288. package/lib/typescript/organisms/header/sheet-grabber.types.d.ts +6 -0
  289. package/lib/typescript/organisms/header/use-header-bar-inset.d.ts +1 -0
  290. package/lib/typescript/organisms/header/use-header-bar-inset.ios.d.ts +1 -0
  291. package/lib/typescript/organisms/header/use-header-bar-inset.types.d.ts +6 -0
  292. package/lib/typescript/organisms/header/use-header-scroll-to-top.d.ts +8 -0
  293. package/lib/typescript/organisms/header/use-header-search.d.ts +12 -0
  294. package/lib/typescript/organisms/header/use-header.d.ts +14 -0
  295. package/lib/typescript/organisms/header/use-hero-header.d.ts +10 -0
  296. package/lib/typescript/organisms/header/use-stack-screen-options.d.ts +17 -0
  297. package/lib/typescript/templates/screen/screen.types.d.ts +6 -2
  298. package/package.json +24 -5
  299. package/src/atoms/activity-indicator/activity-indicator.android.tsx +1 -1
  300. package/src/atoms/activity-indicator/activity-indicator.ios.tsx +1 -1
  301. package/src/atoms/badge/badge.android.tsx +1 -1
  302. package/src/atoms/badge/badge.ios.tsx +1 -1
  303. package/src/atoms/blur-view/blur-view.android.tsx +28 -1
  304. package/src/atoms/blur-view/blur-view.ios.tsx +25 -0
  305. package/src/atoms/blur-view/blur-view.types.ts +8 -0
  306. package/src/atoms/button/button.android.tsx +1 -1
  307. package/src/atoms/button/button.ios.tsx +1 -1
  308. package/src/atoms/card/card.android.tsx +1 -1
  309. package/src/atoms/card/card.ios.tsx +1 -1
  310. package/src/atoms/checkbox/checkbox.android.tsx +1 -1
  311. package/src/atoms/checkbox/checkbox.ios.tsx +1 -1
  312. package/src/atoms/color-picker/color-picker.android.tsx +1 -1
  313. package/src/atoms/color-picker/color-picker.ios.tsx +1 -1
  314. package/src/atoms/date-picker/date-picker.android.tsx +1 -1
  315. package/src/atoms/date-picker/date-picker.ios.tsx +1 -1
  316. package/src/atoms/divider/divider.android.tsx +1 -1
  317. package/src/atoms/divider/divider.ios.tsx +1 -1
  318. package/src/atoms/fab/fab.android.tsx +1 -1
  319. package/src/atoms/fab/fab.ios.tsx +1 -1
  320. package/src/atoms/h-stack/h-stack.android.tsx +2 -2
  321. package/src/atoms/h-stack/h-stack.ios.tsx +2 -2
  322. package/src/atoms/icon/icon.android.tsx +1 -1
  323. package/src/atoms/icon/icon.ios.tsx +1 -1
  324. package/src/atoms/icon-button/icon-button.android.tsx +1 -1
  325. package/src/atoms/icon-button/icon-button.ios.tsx +1 -1
  326. package/src/atoms/island/island.android.tsx +3 -1
  327. package/src/atoms/island/island.ios.tsx +10 -2
  328. package/src/atoms/island/island.types.ts +18 -0
  329. package/src/atoms/list/list.android.tsx +2 -2
  330. package/src/atoms/list/list.ios.tsx +1 -1
  331. package/src/atoms/picker/picker.android.tsx +2 -3
  332. package/src/atoms/picker/picker.ios.tsx +1 -1
  333. package/src/atoms/pressable/pressable.tsx +1 -1
  334. package/src/atoms/progress/progress.android.tsx +1 -1
  335. package/src/atoms/progress/progress.ios.tsx +1 -1
  336. package/src/atoms/scroll-view/scroll-view.android.tsx +2 -2
  337. package/src/atoms/scroll-view/scroll-view.ios.tsx +1 -1
  338. package/src/atoms/segmented-control/segmented-control.android.tsx +1 -1
  339. package/src/atoms/segmented-control/segmented-control.ios.tsx +1 -1
  340. package/src/atoms/slider/slider.android.tsx +1 -1
  341. package/src/atoms/slider/slider.ios.tsx +1 -1
  342. package/src/atoms/spacer/spacer.android.tsx +1 -1
  343. package/src/atoms/spacer/spacer.ios.tsx +1 -1
  344. package/src/atoms/surface/surface.android.tsx +1 -1
  345. package/src/atoms/surface/surface.ios.tsx +1 -1
  346. package/src/atoms/switch/switch.android.tsx +1 -1
  347. package/src/atoms/switch/switch.ios.tsx +1 -1
  348. package/src/atoms/text/text.android.tsx +1 -1
  349. package/src/atoms/text/text.ios.tsx +1 -1
  350. package/src/atoms/text-field/text-field.android.tsx +2 -2
  351. package/src/atoms/text-field/text-field.ios.tsx +1 -1
  352. package/src/atoms/v-stack/v-stack.android.tsx +2 -2
  353. package/src/atoms/v-stack/v-stack.ios.tsx +2 -2
  354. package/src/atoms/z-stack/z-stack.android.tsx +2 -2
  355. package/src/atoms/z-stack/z-stack.ios.tsx +2 -2
  356. package/src/molecules/collapsible/collapsible.android.tsx +2 -2
  357. package/src/molecules/collapsible/collapsible.ios.tsx +1 -1
  358. package/src/molecules/labeled-content/labeled-content.tsx +1 -1
  359. package/src/molecules/list-item/list-item.tsx +1 -2
  360. package/src/molecules/navigation-bar/navigation-bar.constants.ts +2 -0
  361. package/src/molecules/navigation-bar/navigation-bar.ios.tsx +35 -5
  362. package/src/molecules/navigation-bar/navigation-bar.types.ts +69 -5
  363. package/src/molecules/pager/pager.android.tsx +1 -1
  364. package/src/molecules/pager/pager.ios.tsx +1 -1
  365. package/src/molecules/radio-group/radio-group.android.tsx +1 -1
  366. package/src/molecules/radio-group/radio-group.ios.tsx +2 -2
  367. package/src/molecules/rn-list-item/rn-list-item.tsx +1 -1
  368. package/src/molecules/rn-tooltip/rn-tooltip.android.tsx +1 -1
  369. package/src/molecules/search-bar/search-bar.tsx +1 -1
  370. package/src/molecules/stepper/stepper.android.tsx +2 -2
  371. package/src/molecules/stepper/stepper.ios.tsx +1 -1
  372. package/src/molecules/tooltip/tooltip.android.tsx +1 -1
  373. package/src/molecules/tooltip/tooltip.ios.tsx +1 -1
  374. package/src/organisms/action-sheet/action-sheet.android.tsx +1 -1
  375. package/src/organisms/action-sheet/action-sheet.ios.tsx +1 -1
  376. package/src/organisms/alert/alert.android.tsx +1 -1
  377. package/src/organisms/alert/alert.ios.tsx +1 -1
  378. package/src/organisms/context-menu/context-menu.android.tsx +2 -2
  379. package/src/organisms/fab-menu/fab-menu.android.tsx +2 -2
  380. package/src/organisms/fab-menu/fab-menu.ios.tsx +2 -3
  381. package/src/organisms/form/form.android.tsx +1 -1
  382. package/src/organisms/form/form.ios.tsx +1 -1
  383. package/src/organisms/header/header-color.ts +7 -0
  384. package/src/organisms/header/header-inset.android.tsx +3 -0
  385. package/src/organisms/header/header-inset.ios.tsx +12 -0
  386. package/src/organisms/header/header-options.android.tsx +168 -0
  387. package/src/organisms/header/header-options.ios.tsx +138 -0
  388. package/src/organisms/header/header-options.types.ts +6 -0
  389. package/src/organisms/header/header-search-accessory.android.tsx +4 -0
  390. package/src/organisms/header/header-search-accessory.ios.tsx +42 -0
  391. package/src/organisms/header/header-search-accessory.types.ts +12 -0
  392. package/src/organisms/header/header-search-input.android.tsx +89 -0
  393. package/src/organisms/header/header-search-input.ios.tsx +7 -0
  394. package/src/organisms/header/header-search-input.types.ts +21 -0
  395. package/src/organisms/header/header-search-scrim.tsx +49 -0
  396. package/src/organisms/header/header-title.tsx +220 -0
  397. package/src/organisms/header/header.types.ts +416 -0
  398. package/src/organisms/header/hero-header-background.android.tsx +22 -0
  399. package/src/organisms/header/hero-header-background.ios.tsx +26 -0
  400. package/src/organisms/header/hero-header-background.types.ts +11 -0
  401. package/src/organisms/header/index.ts +11 -0
  402. package/src/organisms/header/native-subtitle.android.tsx +5 -0
  403. package/src/organisms/header/native-subtitle.ios.tsx +22 -0
  404. package/src/organisms/header/native-subtitle.types.ts +8 -0
  405. package/src/organisms/header/sheet-grabber.android.tsx +4 -0
  406. package/src/organisms/header/sheet-grabber.ios.tsx +12 -0
  407. package/src/organisms/header/sheet-grabber.types.ts +8 -0
  408. package/src/organisms/header/use-header-bar-inset.android.ts +1 -0
  409. package/src/organisms/header/use-header-bar-inset.ios.ts +7 -0
  410. package/src/organisms/header/use-header-bar-inset.types.ts +6 -0
  411. package/src/organisms/header/use-header-scroll-to-top.ts +48 -0
  412. package/src/organisms/header/use-header-search.tsx +138 -0
  413. package/src/organisms/header/use-header.ts +67 -0
  414. package/src/organisms/header/use-hero-header.tsx +222 -0
  415. package/src/organisms/header/use-stack-screen-options.ts +66 -0
  416. package/src/organisms/menu/menu.android.tsx +2 -2
  417. package/src/organisms/menu/menu.ios.tsx +1 -1
  418. package/src/organisms/sheet/use-sheet-header.tsx +4 -1
  419. package/src/organisms/snackbar/snackbar.tsx +1 -1
  420. package/src/organisms/swipe-actions/swipe-actions.android.tsx +1 -1
  421. package/src/organisms/swipe-actions/swipe-actions.ios.tsx +1 -1
  422. package/src/templates/screen/screen.android.tsx +8 -3
  423. package/src/templates/screen/screen.ios.tsx +8 -3
  424. package/src/templates/screen/screen.types.ts +7 -2
  425. package/lib/module/glyph/glyph-button.android.js.map +0 -1
  426. package/lib/module/glyph/glyph-button.ios.js.map +0 -1
  427. package/lib/module/glyph/glyph-button.types.js.map +0 -1
  428. package/lib/module/glyph/glyph.android.js.map +0 -1
  429. package/lib/module/glyph/glyph.ios.js.map +0 -1
  430. package/lib/module/glyph/glyph.types.js.map +0 -1
  431. package/lib/module/glyph/index.js.map +0 -1
  432. package/lib/module/glyph/rn-glyph.android.js.map +0 -1
  433. package/lib/module/glyph/rn-glyph.ios.js.map +0 -1
  434. package/lib/module/host-context.js.map +0 -1
  435. package/lib/module/ripple-clip.js.map +0 -1
  436. package/lib/module/tap-modifiers.js.map +0 -1
  437. package/lib/module/use-refresh-state.js.map +0 -1
  438. package/lib/module/use-stack-modifiers.js.map +0 -1
  439. /package/lib/module/{glyph → atoms/glyph}/glyph-button.android.js +0 -0
  440. /package/lib/module/{glyph → atoms/glyph}/glyph-button.ios.js +0 -0
  441. /package/lib/module/{glyph → atoms/glyph}/glyph-button.types.js +0 -0
  442. /package/lib/module/{glyph → atoms/glyph}/glyph.android.js +0 -0
  443. /package/lib/module/{glyph → atoms/glyph}/glyph.ios.js +0 -0
  444. /package/lib/module/{glyph → atoms/glyph}/glyph.types.js +0 -0
  445. /package/lib/module/{glyph → atoms/glyph}/index.js +0 -0
  446. /package/lib/module/{glyph → atoms/glyph}/rn-glyph.android.js +0 -0
  447. /package/lib/module/{glyph → atoms/glyph}/rn-glyph.ios.js +0 -0
  448. /package/lib/module/{host-context.js → hooks/host-context.js} +0 -0
  449. /package/lib/module/{use-refresh-state.js → hooks/use-refresh-state.js} +0 -0
  450. /package/lib/module/{use-stack-modifiers.js → hooks/use-stack-modifiers.js} +0 -0
  451. /package/lib/module/{ripple-clip.js → utils/ripple-clip.js} +0 -0
  452. /package/lib/module/{tap-modifiers.js → utils/tap-modifiers.js} +0 -0
  453. /package/lib/typescript/{glyph → atoms/glyph}/glyph-button.d.ts +0 -0
  454. /package/lib/typescript/{glyph → atoms/glyph}/glyph-button.ios.d.ts +0 -0
  455. /package/lib/typescript/{glyph → atoms/glyph}/glyph-button.types.d.ts +0 -0
  456. /package/lib/typescript/{glyph → atoms/glyph}/glyph.d.ts +0 -0
  457. /package/lib/typescript/{glyph → atoms/glyph}/glyph.ios.d.ts +0 -0
  458. /package/lib/typescript/{glyph → atoms/glyph}/glyph.types.d.ts +0 -0
  459. /package/lib/typescript/{glyph → atoms/glyph}/index.d.ts +0 -0
  460. /package/lib/typescript/{glyph → atoms/glyph}/rn-glyph.d.ts +0 -0
  461. /package/lib/typescript/{glyph → atoms/glyph}/rn-glyph.ios.d.ts +0 -0
  462. /package/lib/typescript/{host-context.d.ts → hooks/host-context.d.ts} +0 -0
  463. /package/lib/typescript/{use-refresh-state.d.ts → hooks/use-refresh-state.d.ts} +0 -0
  464. /package/lib/typescript/{use-stack-modifiers.d.ts → hooks/use-stack-modifiers.d.ts} +0 -0
  465. /package/lib/typescript/{ripple-clip.d.ts → utils/ripple-clip.d.ts} +0 -0
  466. /package/lib/typescript/{tap-modifiers.d.ts → utils/tap-modifiers.d.ts} +0 -0
  467. /package/src/{glyph → atoms/glyph}/glyph-button.android.tsx +0 -0
  468. /package/src/{glyph → atoms/glyph}/glyph-button.ios.tsx +0 -0
  469. /package/src/{glyph → atoms/glyph}/glyph-button.types.ts +0 -0
  470. /package/src/{glyph → atoms/glyph}/glyph.android.tsx +0 -0
  471. /package/src/{glyph → atoms/glyph}/glyph.ios.tsx +0 -0
  472. /package/src/{glyph → atoms/glyph}/glyph.types.ts +0 -0
  473. /package/src/{glyph → atoms/glyph}/index.ts +0 -0
  474. /package/src/{glyph → atoms/glyph}/rn-glyph.android.tsx +0 -0
  475. /package/src/{glyph → atoms/glyph}/rn-glyph.ios.tsx +0 -0
  476. /package/src/{host-context.tsx → hooks/host-context.tsx} +0 -0
  477. /package/src/{use-refresh-state.ts → hooks/use-refresh-state.ts} +0 -0
  478. /package/src/{use-stack-modifiers.ts → hooks/use-stack-modifiers.ts} +0 -0
  479. /package/src/{ripple-clip.ts → utils/ripple-clip.ts} +0 -0
  480. /package/src/{tap-modifiers.ts → utils/tap-modifiers.ts} +0 -0
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export const useHeaderBarInset = () => 0;
4
+ //# sourceMappingURL=use-header-bar-inset.android.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useHeaderBarInset"],"sourceRoot":"../../../../src","sources":["organisms/header/use-header-bar-inset.android.ts"],"mappings":";;AAAA,OAAO,MAAMA,iBAAiB,GAAGA,CAAA,KAAM,CAAC","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ import { isScrollEdgeEffectAvailable } from '@hzblj/kara-native';
4
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
5
+
6
+ /** iOS 26's navigation bar is 54pt, the 44pt row of items plus room for its glass; before it the bar was the row. */
7
+ const BAR_HEIGHT = isScrollEdgeEffectAvailable() ? 54 : 44;
8
+ export const useHeaderBarInset = () => useSafeAreaInsets().top + BAR_HEIGHT;
9
+ //# sourceMappingURL=use-header-bar-inset.ios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isScrollEdgeEffectAvailable","useSafeAreaInsets","BAR_HEIGHT","useHeaderBarInset","top"],"sourceRoot":"../../../../src","sources":["organisms/header/use-header-bar-inset.ios.ts"],"mappings":";;AAAA,SAAQA,2BAA2B,QAAO,oBAAoB;AAC9D,SAAQC,iBAAiB,QAAO,gCAAgC;;AAEhE;AACA,MAAMC,UAAU,GAAGF,2BAA2B,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE;AAE1D,OAAO,MAAMG,iBAAiB,GAAGA,CAAA,KAAMF,iBAAiB,CAAC,CAAC,CAACG,GAAG,GAAGF,UAAU","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=use-header-bar-inset.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../src","sources":["organisms/header/use-header-bar-inset.types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from 'react';
4
+ import { Platform } from 'react-native';
5
+ import { useHeaderBarInset } from './use-header-bar-inset';
6
+
7
+ /** The row iOS gives a large title, which the top of a large-title screen includes. */
8
+ const LARGE_TITLE_HEIGHT = 52;
9
+ const scrollToOffset = (target, offset) => {
10
+ if ('scrollToOffset' in target) {
11
+ target.scrollToOffset({
12
+ animated: true,
13
+ offset
14
+ });
15
+ return;
16
+ }
17
+ if ('scrollTo' in target) {
18
+ target.scrollTo({
19
+ animated: true,
20
+ y: offset
21
+ });
22
+ return;
23
+ }
24
+ target.getScrollResponder()?.scrollTo({
25
+ animated: true,
26
+ y: offset
27
+ });
28
+ };
29
+
30
+ /**
31
+ * A ref for React Navigation's or Expo Router's `useScrollToTop`: pressing the tab again scrolls the list back under a
32
+ * transparent header, with a large title expanded, where scrolling to 0 would leave the content under the bar and the
33
+ * title collapsed. `useScrollToTop(useHeaderScrollToTop(listRef, {largeTitle: true}))`.
34
+ */
35
+ export const useHeaderScrollToTop = (ref, {
36
+ largeTitle = false,
37
+ topInset = 0
38
+ } = {}) => {
39
+ const barInset = useHeaderBarInset();
40
+ const offset = Platform.OS === 'ios' ? -(barInset + (largeTitle ? LARGE_TITLE_HEIGHT : 0) + topInset) : 0;
41
+ return useMemo(() => ({
42
+ current: {
43
+ scrollToTop: () => {
44
+ if (ref.current) {
45
+ scrollToOffset(ref.current, offset);
46
+ }
47
+ }
48
+ }
49
+ }), [offset, ref]);
50
+ };
51
+ //# sourceMappingURL=use-header-scroll-to-top.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","Platform","useHeaderBarInset","LARGE_TITLE_HEIGHT","scrollToOffset","target","offset","animated","scrollTo","y","getScrollResponder","useHeaderScrollToTop","ref","largeTitle","topInset","barInset","OS","current","scrollToTop"],"sourceRoot":"../../../../src","sources":["organisms/header/use-header-scroll-to-top.ts"],"mappings":";;AAAA,SAAwBA,OAAO,QAAO,OAAO;AAC7C,SAAQC,QAAQ,QAAO,cAAc;AAGrC,SAAQC,iBAAiB,QAAO,wBAAwB;;AAExD;AACA,MAAMC,kBAAkB,GAAG,EAAE;AAE7B,MAAMC,cAAc,GAAGA,CAACC,MAAwB,EAAEC,MAAc,KAAK;EACnE,IAAI,gBAAgB,IAAID,MAAM,EAAE;IAC9BA,MAAM,CAACD,cAAc,CAAC;MAACG,QAAQ,EAAE,IAAI;MAAED;IAAM,CAAC,CAAC;IAC/C;EACF;EAEA,IAAI,UAAU,IAAID,MAAM,EAAE;IACxBA,MAAM,CAACG,QAAQ,CAAC;MAACD,QAAQ,EAAE,IAAI;MAAEE,CAAC,EAAEH;IAAM,CAAC,CAAC;IAC5C;EACF;EAEAD,MAAM,CAACK,kBAAkB,CAAC,CAAC,EAAEF,QAAQ,CAAC;IAACD,QAAQ,EAAE,IAAI;IAAEE,CAAC,EAAEH;EAAM,CAAC,CAAC;AACpE,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMK,oBAAoB,GAAGA,CAClCC,GAAuC,EACvC;EAACC,UAAU,GAAG,KAAK;EAAEC,QAAQ,GAAG;AAA2B,CAAC,GAAG,CAAC,CAAC,KACxC;EACzB,MAAMC,QAAQ,GAAGb,iBAAiB,CAAC,CAAC;EACpC,MAAMI,MAAM,GAAGL,QAAQ,CAACe,EAAE,KAAK,KAAK,GAAG,EAAED,QAAQ,IAAIF,UAAU,GAAGV,kBAAkB,GAAG,CAAC,CAAC,GAAGW,QAAQ,CAAC,GAAG,CAAC;EAEzG,OAAOd,OAAO,CACZ,OAAO;IACLiB,OAAO,EAAE;MACPC,WAAW,EAAEA,CAAA,KAAM;QACjB,IAAIN,GAAG,CAACK,OAAO,EAAE;UACfb,cAAc,CAACQ,GAAG,CAACK,OAAO,EAAEX,MAAM,CAAC;QACrC;MACF;IACF;EACF,CAAC,CAAC,EACF,CAACA,MAAM,EAAEM,GAAG,CACd,CAAC;AACH,CAAC","ignoreList":[]}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+
3
+ import { useAppTheme } from '@hzblj/kara-theme';
4
+ import { useCallback, useMemo, useRef, useState } from 'react';
5
+ import { Platform } from 'react-native';
6
+ import { headerColor } from "./header-color.js";
7
+ import { HeaderSearchAccessory } from './header-search-accessory';
8
+ import { HEADER_SEARCH_ROW_HEIGHT, HeaderSearchInput } from './header-search-input';
9
+ import { HeaderSearchScrim } from "./header-search-scrim.js";
10
+
11
+ /** `integratedButton` hides the title and items while the field is open and keeps it out of the bottom toolbar. */
12
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
13
+ const PLACEMENT_OPTIONS = {
14
+ integratedButton: {
15
+ allowToolbarIntegration: false,
16
+ hideNavigationBar: true
17
+ },
18
+ stacked: {
19
+ hideNavigationBar: false
20
+ }
21
+ };
22
+
23
+ /**
24
+ * A search field for a screen's header. iOS: UIKit's search bar stacked under the title, with the title and items kept
25
+ * and nothing dimmed by the system, so a list can filter live, or behind a search button in the bar's corner
26
+ * (`placement`); pass `searchBar` to `useHeader` as `search`. Android: Material's search field with its cancel button,
27
+ * as a row for the screen to put right under the top app bar (`searchInput`). Both report the `query`; `scrim` washes
28
+ * the content out while the field is focused and empty and, on iOS, carries the field's glyphs and voice.
29
+ *
30
+ * With `voice` the field has a microphone; the app runs the dictation and writes what it hears with `setText`. Typing
31
+ * over it, or ending the search, calls `voice.onCancel`.
32
+ */
33
+ export const useHeaderSearch = ({
34
+ cancelIcon,
35
+ clearIcon,
36
+ enabled = true,
37
+ placeholder = 'Search',
38
+ placement = 'stacked',
39
+ voice
40
+ } = {}) => {
41
+ const theme = useAppTheme();
42
+ const [query, setQuery] = useState('');
43
+ const [focused, setFocused] = useState(false);
44
+ const searchBarRef = useRef(null);
45
+ const inputRef = useRef(null);
46
+ const lastSetText = useRef(null);
47
+ const voiceRef = useRef(voice);
48
+ voiceRef.current = voice;
49
+ const cancelVoice = useCallback(() => {
50
+ if (voiceRef.current?.listening) {
51
+ voiceRef.current.onCancel?.();
52
+ }
53
+ }, []);
54
+ const changeQuery = useCallback(text => {
55
+ if (text !== lastSetText.current) {
56
+ cancelVoice();
57
+ }
58
+ setQuery(text);
59
+ }, [cancelVoice]);
60
+ const reset = useCallback(() => {
61
+ cancelVoice();
62
+ lastSetText.current = null;
63
+ setQuery('');
64
+ setFocused(false);
65
+ }, [cancelVoice]);
66
+ const searchBar = useMemo(() => {
67
+ if (!enabled || Platform.OS !== 'ios') {
68
+ return undefined;
69
+ }
70
+ return {
71
+ ...PLACEMENT_OPTIONS[placement],
72
+ autoCapitalize: 'none',
73
+ hideWhenScrolling: false,
74
+ obscureBackground: false,
75
+ onBlur: () => setFocused(false),
76
+ onCancelButtonPress: reset,
77
+ onChangeText: event => changeQuery(event.nativeEvent.text),
78
+ onFocus: () => setFocused(true),
79
+ placeholder,
80
+ placement,
81
+ ref: searchBarRef,
82
+ tintColor: headerColor(theme, 'content.primary')
83
+ };
84
+ }, [changeQuery, enabled, placeholder, placement, reset, theme]);
85
+ const searchInput = useMemo(() => {
86
+ if (!enabled || Platform.OS !== 'android') {
87
+ return null;
88
+ }
89
+ return /*#__PURE__*/_jsx(HeaderSearchInput, {
90
+ clearIcon: clearIcon,
91
+ onChangeText: changeQuery,
92
+ onFocusChange: setFocused,
93
+ placeholder: placeholder,
94
+ ref: inputRef,
95
+ voice: voice
96
+ });
97
+ }, [changeQuery, clearIcon, enabled, placeholder, voice]);
98
+ const clear = useCallback(() => {
99
+ reset();
100
+ searchBarRef.current?.cancelSearch();
101
+ inputRef.current?.clear();
102
+ inputRef.current?.blur();
103
+ }, [reset]);
104
+ const setText = useCallback(text => {
105
+ lastSetText.current = text;
106
+ setQuery(text);
107
+ searchBarRef.current?.setText(text);
108
+ inputRef.current?.setText(text);
109
+ }, []);
110
+ const dimmed = enabled && focused && query.trim().length === 0;
111
+ const scrim = useMemo(() => {
112
+ if (!enabled) {
113
+ return null;
114
+ }
115
+ return /*#__PURE__*/_jsxs(_Fragment, {
116
+ children: [dimmed ? /*#__PURE__*/_jsx(HeaderSearchScrim, {
117
+ onPress: clear,
118
+ topOffset: HEADER_SEARCH_ROW_HEIGHT
119
+ }) : null, /*#__PURE__*/_jsx(HeaderSearchAccessory, {
120
+ cancelIcon: cancelIcon,
121
+ clearIcon: clearIcon,
122
+ voice: voice
123
+ })]
124
+ });
125
+ }, [cancelIcon, clear, clearIcon, dimmed, enabled, voice]);
126
+ return {
127
+ clear,
128
+ query,
129
+ scrim,
130
+ searchBar,
131
+ searchInput,
132
+ setText
133
+ };
134
+ };
135
+ //# sourceMappingURL=use-header-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useAppTheme","useCallback","useMemo","useRef","useState","Platform","headerColor","HeaderSearchAccessory","HEADER_SEARCH_ROW_HEIGHT","HeaderSearchInput","HeaderSearchScrim","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PLACEMENT_OPTIONS","integratedButton","allowToolbarIntegration","hideNavigationBar","stacked","useHeaderSearch","cancelIcon","clearIcon","enabled","placeholder","placement","voice","theme","query","setQuery","focused","setFocused","searchBarRef","inputRef","lastSetText","voiceRef","current","cancelVoice","listening","onCancel","changeQuery","text","reset","searchBar","OS","undefined","autoCapitalize","hideWhenScrolling","obscureBackground","onBlur","onCancelButtonPress","onChangeText","event","nativeEvent","onFocus","ref","tintColor","searchInput","onFocusChange","clear","cancelSearch","blur","setText","dimmed","trim","length","scrim","children","onPress","topOffset"],"sourceRoot":"../../../../src","sources":["organisms/header/use-header-search.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ import { useAppTheme } from '@hzblj/kara-theme';
4
+ import { useLayoutEffect, useMemo } from 'react';
5
+ import { toHeaderOptions } from './header-options';
6
+ import { useHeaderTitle } from "./header-title.js";
7
+
8
+ /**
9
+ * A screen's header as native-stack options, with what its list needs alongside: the title (centred, leading with a
10
+ * subtitle, revealed on scroll or large), the actions on both sides (the navigation bar's own items on iOS, Material
11
+ * buttons on Android) and a search field. Spread `options` into Expo Router's `<Stack.Screen options>` or a React
12
+ * Navigation screen's `options`. Memoize the action arrays: new arrays build new options on every render.
13
+ */
14
+ export const useHeaderOptions = ({
15
+ backHidden,
16
+ largeTitle,
17
+ leadingActions,
18
+ search,
19
+ subtitle,
20
+ title,
21
+ titleHidden = false,
22
+ titleRevealProgress,
23
+ trailingActions
24
+ }) => {
25
+ const theme = useAppTheme();
26
+ const headerTitle = useHeaderTitle({
27
+ largeTitle,
28
+ subtitle,
29
+ title,
30
+ titleHidden,
31
+ titleRevealProgress
32
+ });
33
+ const actionOptions = useMemo(() => toHeaderOptions({
34
+ backHidden,
35
+ leadingActions,
36
+ trailingActions
37
+ }, theme), [backHidden, leadingActions, theme, trailingActions]);
38
+ return useMemo(() => {
39
+ const options = {};
40
+ Object.assign(options, headerTitle.options, actionOptions);
41
+ if (search) {
42
+ options.headerSearchBarOptions = search;
43
+ }
44
+ return {
45
+ contentInsetAdjustmentBehavior: 'automatic',
46
+ largeTitle: headerTitle.largeTitle,
47
+ onScroll: headerTitle.onScroll,
48
+ options
49
+ };
50
+ }, [actionOptions, headerTitle.largeTitle, headerTitle.onScroll, headerTitle.options, search]);
51
+ };
52
+
53
+ /**
54
+ * Sets the screen's header through its navigation object, from React Navigation's or Expo Router's `useNavigation()`,
55
+ * before the screen first paints, and returns what its list needs. What a screen has from the moment it is pushed
56
+ * belongs in its static `options` too: iOS morphs the bar items between screens only when they exist at the push.
57
+ */
58
+ export const useHeader = (navigation, params) => {
59
+ const {
60
+ contentInsetAdjustmentBehavior,
61
+ largeTitle,
62
+ onScroll,
63
+ options
64
+ } = useHeaderOptions(params);
65
+ useLayoutEffect(() => {
66
+ navigation.setOptions(options);
67
+ }, [navigation, options]);
68
+ return useMemo(() => ({
69
+ contentInsetAdjustmentBehavior,
70
+ largeTitle,
71
+ onScroll
72
+ }), [contentInsetAdjustmentBehavior, largeTitle, onScroll]);
73
+ };
74
+ //# sourceMappingURL=use-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useAppTheme","useLayoutEffect","useMemo","toHeaderOptions","useHeaderTitle","useHeaderOptions","backHidden","largeTitle","leadingActions","search","subtitle","title","titleHidden","titleRevealProgress","trailingActions","theme","headerTitle","actionOptions","options","Object","assign","headerSearchBarOptions","contentInsetAdjustmentBehavior","onScroll","useHeader","navigation","params","setOptions"],"sourceRoot":"../../../../src","sources":["organisms/header/use-header.ts"],"mappings":";;AAAA,SAAQA,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,eAAe,EAAEC,OAAO,QAAO,OAAO;AAG9C,SAAQC,eAAe,QAAO,kBAAkB;AAChD,SAAQC,cAAc,QAAO,mBAAgB;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAGA,CAAC;EAC/BC,UAAU;EACVC,UAAU;EACVC,cAAc;EACdC,MAAM;EACNC,QAAQ;EACRC,KAAK;EACLC,WAAW,GAAG,KAAK;EACnBC,mBAAmB;EACnBC;AACY,CAAC,KAA0B;EACvC,MAAMC,KAAK,GAAGf,WAAW,CAAC,CAAC;EAC3B,MAAMgB,WAAW,GAAGZ,cAAc,CAAC;IAACG,UAAU;IAAEG,QAAQ;IAAEC,KAAK;IAAEC,WAAW;IAAEC;EAAmB,CAAC,CAAC;EAEnG,MAAMI,aAAa,GAAGf,OAAO,CAC3B,MAAMC,eAAe,CAAC;IAACG,UAAU;IAAEE,cAAc;IAAEM;EAAe,CAAC,EAAEC,KAAK,CAAC,EAC3E,CAACT,UAAU,EAAEE,cAAc,EAAEO,KAAK,EAAED,eAAe,CACrD,CAAC;EAED,OAAOZ,OAAO,CAAC,MAAM;IACnB,MAAMgB,OAAsB,GAAG,CAAC,CAAC;IAEjCC,MAAM,CAACC,MAAM,CAACF,OAAO,EAAEF,WAAW,CAACE,OAAO,EAAED,aAAa,CAAC;IAE1D,IAAIR,MAAM,EAAE;MACVS,OAAO,CAACG,sBAAsB,GAAGZ,MAAM;IACzC;IAEA,OAAO;MACLa,8BAA8B,EAAE,WAAW;MAC3Cf,UAAU,EAAES,WAAW,CAACT,UAAU;MAClCgB,QAAQ,EAAEP,WAAW,CAACO,QAAQ;MAC9BL;IACF,CAAC;EACH,CAAC,EAAE,CAACD,aAAa,EAAED,WAAW,CAACT,UAAU,EAAES,WAAW,CAACO,QAAQ,EAAEP,WAAW,CAACE,OAAO,EAAET,MAAM,CAAC,CAAC;AAChG,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMe,SAAS,GAAGA,CAACC,UAA4B,EAAEC,MAAoB,KAAoB;EAC9F,MAAM;IAACJ,8BAA8B;IAAEf,UAAU;IAAEgB,QAAQ;IAAEL;EAAO,CAAC,GAAGb,gBAAgB,CAACqB,MAAM,CAAC;EAEhGzB,eAAe,CAAC,MAAM;IACpBwB,UAAU,CAACE,UAAU,CAACT,OAAO,CAAC;EAChC,CAAC,EAAE,CAACO,UAAU,EAAEP,OAAO,CAAC,CAAC;EAEzB,OAAOhB,OAAO,CACZ,OAAO;IAACoB,8BAA8B;IAAEf,UAAU;IAAEgB;EAAQ,CAAC,CAAC,EAC9D,CAACD,8BAA8B,EAAEf,UAAU,EAAEgB,QAAQ,CACvD,CAAC;AACH,CAAC","ignoreList":[]}
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+
3
+ import { isScrollEdgeEffectAvailable, isViewControllerBasedStatusBarAppearance } from '@hzblj/kara-native';
4
+ import { useAppTheme } from '@hzblj/kara-theme';
5
+ import { useCallback, useEffect, useLayoutEffect, useMemo, useState } from 'react';
6
+ import { Platform, StatusBar } from 'react-native';
7
+ import { Extrapolation, interpolate, useAnimatedReaction, useDerivedValue, useSharedValue } from 'react-native-reanimated';
8
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
9
+ import { scheduleOnRN } from 'react-native-worklets';
10
+ import { headerColor } from "./header-color.js";
11
+ import { useIsTitleRevealed } from "./header-title.js";
12
+ import { HeroHeaderBackground } from './hero-header-background';
13
+ import { useHeaderOptions } from "./use-header.js";
14
+ import { useHeaderBarInset } from './use-header-bar-inset';
15
+ import { HERO_HEADER_SCREEN_OPTIONS } from "./use-stack-screen-options.js";
16
+
17
+ /** The header fades in while 50 to 70 % of the hero's part under the bar scrolls away. */
18
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
19
+ const REVEAL_RANGE = [0.5, 0.7];
20
+
21
+ /** Material 3's top app bar. */
22
+ const ANDROID_BAR_HEIGHT = 64;
23
+ const useHeroBarHeight = () => {
24
+ const iosBarInset = useHeaderBarInset();
25
+ const {
26
+ top
27
+ } = useSafeAreaInsets();
28
+ return Platform.OS === 'ios' ? iosBarInset : top + ANDROID_BAR_HEIGHT;
29
+ };
30
+ const useIsOverHero = progress => {
31
+ const [overHero, setOverHero] = useState(() => progress.value === 0);
32
+ useAnimatedReaction(() => progress.value === 0, (isOver, wasOver) => {
33
+ if (isOver !== wasOver) {
34
+ scheduleOnRN(setOverHero, isOver);
35
+ }
36
+ });
37
+ return overHero;
38
+ };
39
+ const useIsScreenFocused = navigation => {
40
+ const [focused, setFocused] = useState(() => navigation.isFocused());
41
+ useEffect(() => {
42
+ const unsubscribeFocus = navigation.addListener('focus', () => setFocused(true));
43
+ const unsubscribeBlur = navigation.addListener('blur', () => setFocused(false));
44
+ return () => {
45
+ unsubscribeFocus();
46
+ unsubscribeBlur();
47
+ };
48
+ }, [navigation]);
49
+ return focused;
50
+ };
51
+ const BAR_STYLES = {
52
+ dark: 'dark-content',
53
+ light: 'light-content'
54
+ };
55
+
56
+ /**
57
+ * The status bar over the hero, for this screen only. With view-controller-based appearance (Info.plist) the native
58
+ * stack sets it per screen (`statusBarStyle`); otherwise, as in Expo apps and on Android, React Native's `StatusBar`
59
+ * applies it while the screen is focused and over the hero, and its stack restores the previous style once it is not.
60
+ */
61
+ const useHeroStatusBar = (navigation, overHero, overHeroStyle) => {
62
+ const focused = useIsScreenFocused(navigation);
63
+ const perScreen = isViewControllerBasedStatusBarAppearance();
64
+ useEffect(() => {
65
+ if (perScreen) {
66
+ navigation.setOptions({
67
+ statusBarStyle: overHero ? overHeroStyle : 'auto'
68
+ });
69
+ }
70
+ }, [navigation, overHero, overHeroStyle, perScreen]);
71
+ if (perScreen || !focused || !overHero) {
72
+ return null;
73
+ }
74
+ return /*#__PURE__*/_jsx(StatusBar, {
75
+ animated: true,
76
+ barStyle: BAR_STYLES[overHeroStyle]
77
+ });
78
+ };
79
+ const useRevealProgress = (barHeight, heroHeight, introProgress) => {
80
+ const scrollY = useSharedValue(0);
81
+ const heroUnderBar = heroHeight - barHeight;
82
+ const start = heroUnderBar * REVEAL_RANGE[0];
83
+ const end = heroUnderBar * REVEAL_RANGE[1];
84
+ const scrollProgress = useDerivedValue(() => {
85
+ if (end <= start) {
86
+ return 1;
87
+ }
88
+ return interpolate(scrollY.value, [start, end], [0, 1], Extrapolation.CLAMP);
89
+ });
90
+ const progress = useDerivedValue(() => Math.max(scrollProgress.value, introProgress?.value ?? 0));
91
+ const onScroll = useCallback(offsetY => {
92
+ 'worklet';
93
+
94
+ scrollY.value = offsetY;
95
+ }, [scrollY]);
96
+ return {
97
+ onScroll,
98
+ progress,
99
+ scrollProgress
100
+ };
101
+ };
102
+
103
+ /**
104
+ * A header over a full-bleed hero: the content runs under a transparent bar, and while 50 to 70 % of the hero's part
105
+ * under the bar scrolls away the header fades in — the title (and subtitle) in the bar, the bar's background
106
+ * (`background`: iOS 26's scroll edge effect switched on, the bar's material coming in below iOS 26, the top app bar's
107
+ * surface on Android), the items' tint and the status bar, light over the hero with `overHeroStyle` `light`. `revealedTrailingActions` join the
108
+ * bar once the title is shown. Give the screen `HERO_HEADER_SCREEN_OPTIONS` as static options, so its first frame has
109
+ * no large title, render `background` after the list and call `onScroll` with its offset.
110
+ */
111
+ export const useHeroHeader = (navigation, {
112
+ backHidden,
113
+ heroHeight,
114
+ introProgress,
115
+ leadingActions,
116
+ overHeroStyle = 'light',
117
+ revealedTrailingActions,
118
+ subtitle,
119
+ title,
120
+ trailingActions
121
+ }) => {
122
+ const theme = useAppTheme();
123
+ const barHeight = useHeroBarHeight();
124
+ const {
125
+ onScroll,
126
+ progress,
127
+ scrollProgress
128
+ } = useRevealProgress(barHeight, heroHeight, introProgress);
129
+ const titleShown = useIsTitleRevealed(scrollProgress);
130
+ const overHero = useIsOverHero(progress);
131
+ const scrolledOverHero = useIsOverHero(scrollProgress);
132
+ const statusBar = useHeroStatusBar(navigation, overHero, overHeroStyle);
133
+ const visibleTrailingActions = useMemo(() => {
134
+ if (!titleShown || !revealedTrailingActions) {
135
+ return trailingActions;
136
+ }
137
+ const actions = [];
138
+ for (const action of revealedTrailingActions) {
139
+ actions.push(action);
140
+ }
141
+ for (const action of trailingActions ?? []) {
142
+ actions.push(action);
143
+ }
144
+ return actions;
145
+ }, [revealedTrailingActions, titleShown, trailingActions]);
146
+ const {
147
+ options
148
+ } = useHeaderOptions({
149
+ backHidden,
150
+ leadingActions,
151
+ subtitle,
152
+ title,
153
+ titleRevealProgress: scrollProgress,
154
+ trailingActions: visibleTrailingActions
155
+ });
156
+ useLayoutEffect(() => {
157
+ navigation.setOptions(HERO_HEADER_SCREEN_OPTIONS);
158
+ }, [navigation]);
159
+ useLayoutEffect(() => {
160
+ navigation.setOptions(options);
161
+ }, [navigation, options]);
162
+ useEffect(() => {
163
+ const light = overHero && overHeroStyle === 'light';
164
+ const appearance = {
165
+ headerTintColor: headerColor(theme, light ? 'content.on.accent' : 'content.primary')
166
+ };
167
+ if (isScrollEdgeEffectAvailable()) {
168
+ appearance.scrollEdgeEffects = {
169
+ top: scrolledOverHero ? 'hidden' : 'automatic'
170
+ };
171
+ }
172
+ navigation.setOptions(appearance);
173
+ }, [navigation, overHero, overHeroStyle, scrolledOverHero, theme]);
174
+ const background = useMemo(() => /*#__PURE__*/_jsxs(_Fragment, {
175
+ children: [/*#__PURE__*/_jsx(HeroHeaderBackground, {
176
+ height: barHeight,
177
+ progress: progress
178
+ }), statusBar]
179
+ }), [barHeight, progress, statusBar]);
180
+ return {
181
+ background,
182
+ contentInsetAdjustmentBehavior: 'never',
183
+ largeTitle: null,
184
+ onScroll,
185
+ progress,
186
+ scrollProgress
187
+ };
188
+ };
189
+ //# sourceMappingURL=use-hero-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isScrollEdgeEffectAvailable","isViewControllerBasedStatusBarAppearance","useAppTheme","useCallback","useEffect","useLayoutEffect","useMemo","useState","Platform","StatusBar","Extrapolation","interpolate","useAnimatedReaction","useDerivedValue","useSharedValue","useSafeAreaInsets","scheduleOnRN","headerColor","useIsTitleRevealed","HeroHeaderBackground","useHeaderOptions","useHeaderBarInset","HERO_HEADER_SCREEN_OPTIONS","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","REVEAL_RANGE","ANDROID_BAR_HEIGHT","useHeroBarHeight","iosBarInset","top","OS","useIsOverHero","progress","overHero","setOverHero","value","isOver","wasOver","useIsScreenFocused","navigation","focused","setFocused","isFocused","unsubscribeFocus","addListener","unsubscribeBlur","BAR_STYLES","dark","light","useHeroStatusBar","overHeroStyle","perScreen","setOptions","statusBarStyle","animated","barStyle","useRevealProgress","barHeight","heroHeight","introProgress","scrollY","heroUnderBar","start","end","scrollProgress","CLAMP","Math","max","onScroll","offsetY","useHeroHeader","backHidden","leadingActions","revealedTrailingActions","subtitle","title","trailingActions","theme","titleShown","scrolledOverHero","statusBar","visibleTrailingActions","actions","action","push","options","titleRevealProgress","appearance","headerTintColor","scrollEdgeEffects","background","children","height","contentInsetAdjustmentBehavior","largeTitle"],"sourceRoot":"../../../../src","sources":["organisms/header/use-hero-header.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ import { isScrollEdgeEffectAvailable } from '@hzblj/kara-native';
4
+ import { useAppTheme } from '@hzblj/kara-theme';
5
+ import { useMemo } from 'react';
6
+ import { Platform } from 'react-native';
7
+ import { headerColor } from "./header-color.js";
8
+
9
+ /** iOS 26 draws its own scroll edge effect under a transparent bar; older iOS needs the bar's blur instead. */
10
+ const HEADER_BLUR_EFFECT = Platform.OS === 'ios' && !isScrollEdgeEffectAvailable() ? 'systemChromeMaterial' : undefined;
11
+
12
+ /**
13
+ * A native stack's `screenOptions` in the active theme: the surface behind every screen, a minimal back button, the
14
+ * title and large title in the theme's `headline` and `headingM`, no hairline under the bar. iOS keeps the bar
15
+ * transparent so iOS 26 blurs what scrolls under it (older iOS gets the bar's material); Android gets a solid top app
16
+ * bar in the surface colour.
17
+ */
18
+ export const useStackScreenOptions = () => {
19
+ const theme = useAppTheme();
20
+ return useMemo(() => {
21
+ const content = headerColor(theme, 'content.primary');
22
+ const surface = headerColor(theme, 'surface.base');
23
+ return {
24
+ contentStyle: {
25
+ backgroundColor: surface
26
+ },
27
+ headerBackButtonDisplayMode: 'minimal',
28
+ headerBlurEffect: HEADER_BLUR_EFFECT,
29
+ headerLargeTitleShadowVisible: false,
30
+ headerLargeTitleStyle: {
31
+ color: content,
32
+ fontFamily: theme.typography.headingM.fontFamily,
33
+ fontSize: theme.typography.headingM.fontSize
34
+ },
35
+ headerShadowVisible: false,
36
+ headerStyle: Platform.OS === 'android' ? {
37
+ backgroundColor: surface
38
+ } : undefined,
39
+ headerTintColor: content,
40
+ headerTitleStyle: {
41
+ color: content,
42
+ fontFamily: theme.typography.headline.fontFamily,
43
+ fontSize: theme.typography.headline.fontSize
44
+ },
45
+ headerTransparent: Platform.OS === 'ios'
46
+ };
47
+ }, [theme]);
48
+ };
49
+
50
+ /** A screen with a large title that collapses into the bar as its list scrolls. */
51
+ export const LARGE_TITLE_SCREEN_OPTIONS = {
52
+ headerLargeTitleEnabled: true,
53
+ headerShown: true
54
+ };
55
+
56
+ /** A screen without the stack's header, for one that draws its own or none. */
57
+ export const HIDDEN_HEADER_SCREEN_OPTIONS = {
58
+ headerShown: false
59
+ };
60
+
61
+ /**
62
+ * A screen whose content runs under a transparent bar, a full-bleed image above all, for `useHeroHeader`. Static, so the
63
+ * first frame already has no large title and no bar background over the image.
64
+ */
65
+ export const HERO_HEADER_SCREEN_OPTIONS = {
66
+ headerBlurEffect: 'none',
67
+ headerLargeTitleEnabled: false,
68
+ headerShown: true,
69
+ headerStyle: {
70
+ backgroundColor: 'transparent'
71
+ },
72
+ headerTransparent: true,
73
+ scrollEdgeEffects: {
74
+ top: 'hidden'
75
+ }
76
+ };
77
+ //# sourceMappingURL=use-stack-screen-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isScrollEdgeEffectAvailable","useAppTheme","useMemo","Platform","headerColor","HEADER_BLUR_EFFECT","OS","undefined","useStackScreenOptions","theme","content","surface","contentStyle","backgroundColor","headerBackButtonDisplayMode","headerBlurEffect","headerLargeTitleShadowVisible","headerLargeTitleStyle","color","fontFamily","typography","headingM","fontSize","headerShadowVisible","headerStyle","headerTintColor","headerTitleStyle","headline","headerTransparent","LARGE_TITLE_SCREEN_OPTIONS","headerLargeTitleEnabled","headerShown","HIDDEN_HEADER_SCREEN_OPTIONS","HERO_HEADER_SCREEN_OPTIONS","scrollEdgeEffects","top"],"sourceRoot":"../../../../src","sources":["organisms/header/use-stack-screen-options.ts"],"mappings":";;AAAA,SAAQA,2BAA2B,QAAO,oBAAoB;AAC9D,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAQC,OAAO,QAAO,OAAO;AAC7B,SAAQC,QAAQ,QAAO,cAAc;AAGrC,SAAQC,WAAW,QAAO,mBAAgB;;AAE1C;AACA,MAAMC,kBAAkB,GACtBF,QAAQ,CAACG,EAAE,KAAK,KAAK,IAAI,CAACN,2BAA2B,CAAC,CAAC,GAAI,sBAAsB,GAAaO,SAAS;;AAEzG;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,GAAGA,CAAA,KAA0B;EAC7D,MAAMC,KAAK,GAAGR,WAAW,CAAC,CAAC;EAE3B,OAAOC,OAAO,CAAC,MAAM;IACnB,MAAMQ,OAAO,GAAGN,WAAW,CAACK,KAAK,EAAE,iBAAiB,CAAC;IACrD,MAAME,OAAO,GAAGP,WAAW,CAACK,KAAK,EAAE,cAAc,CAAC;IAElD,OAAO;MACLG,YAAY,EAAE;QAACC,eAAe,EAAEF;MAAO,CAAC;MACxCG,2BAA2B,EAAE,SAAS;MACtCC,gBAAgB,EAAEV,kBAAkB;MACpCW,6BAA6B,EAAE,KAAK;MACpCC,qBAAqB,EAAE;QACrBC,KAAK,EAAER,OAAO;QACdS,UAAU,EAAEV,KAAK,CAACW,UAAU,CAACC,QAAQ,CAACF,UAAU;QAChDG,QAAQ,EAAEb,KAAK,CAACW,UAAU,CAACC,QAAQ,CAACC;MACtC,CAAC;MACDC,mBAAmB,EAAE,KAAK;MAC1BC,WAAW,EAAErB,QAAQ,CAACG,EAAE,KAAK,SAAS,GAAG;QAACO,eAAe,EAAEF;MAAO,CAAC,GAAGJ,SAAS;MAC/EkB,eAAe,EAAEf,OAAO;MACxBgB,gBAAgB,EAAE;QAChBR,KAAK,EAAER,OAAO;QACdS,UAAU,EAAEV,KAAK,CAACW,UAAU,CAACO,QAAQ,CAACR,UAAU;QAChDG,QAAQ,EAAEb,KAAK,CAACW,UAAU,CAACO,QAAQ,CAACL;MACtC,CAAC;MACDM,iBAAiB,EAAEzB,QAAQ,CAACG,EAAE,KAAK;IACrC,CAAC;EACH,CAAC,EAAE,CAACG,KAAK,CAAC,CAAC;AACb,CAAC;;AAED;AACA,OAAO,MAAMoB,0BAA8C,GAAG;EAACC,uBAAuB,EAAE,IAAI;EAAEC,WAAW,EAAE;AAAI,CAAC;;AAEhH;AACA,OAAO,MAAMC,4BAAgD,GAAG;EAACD,WAAW,EAAE;AAAK,CAAC;;AAEpF;AACA;AACA;AACA;AACA,OAAO,MAAME,0BAA8C,GAAG;EAC5DlB,gBAAgB,EAAE,MAAM;EACxBe,uBAAuB,EAAE,KAAK;EAC9BC,WAAW,EAAE,IAAI;EACjBP,WAAW,EAAE;IAACX,eAAe,EAAE;EAAa,CAAC;EAC7Ce,iBAAiB,EAAE,IAAI;EACvBM,iBAAiB,EAAE;IAACC,GAAG,EAAE;EAAQ;AACnC,CAAC","ignoreList":[]}
@@ -3,12 +3,12 @@
3
3
  import { Text as ComposeText, DropdownMenu, DropdownMenuItem } from '@expo/ui/jetpack-compose';
4
4
  import { useAppTheme } from '@hzblj/kara-theme';
5
5
  import { useCallback, useState } from 'react';
6
+ import { Glyph } from "../../atoms/glyph/index.js";
6
7
  import { HStack } from "../../atoms/h-stack/index.js";
7
8
  import { Icon } from "../../atoms/icon/index.js";
8
9
  import { IconButton } from "../../atoms/icon-button/index.js";
9
10
  import { Text } from "../../atoms/text/index.js";
10
- import { Glyph } from "../../glyph/index.js";
11
- import { useHostGuard } from "../../host-context.js";
11
+ import { useHostGuard } from "../../hooks/host-context.js";
12
12
  import { isIconOnly, menuActionColor } from "./menu-parts.js";
13
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
14
  const MenuItem = ({
@@ -1 +1 @@
1
- {"version":3,"names":["Text","ComposeText","DropdownMenu","DropdownMenuItem","useAppTheme","useCallback","useState","HStack","Icon","IconButton","Glyph","useHostGuard","isIconOnly","menuActionColor","jsx","_jsx","jsxs","_jsxs","MenuItem","action","onDismiss","theme","color","elementColors","leadingIconColor","textColor","enabled","disabled","onClick","onPress","children","colorString","style","typography","body","label","icon","LeadingIcon","name","size","triggerOf","props","open","accessibilityLabel","testID","align","spacing","Menu","expanded","setExpanded","dismiss","onDismissRequest","Trigger","Items","actions","map"],"sourceRoot":"../../../../src","sources":["organisms/menu/menu.android.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Text","ComposeText","DropdownMenu","DropdownMenuItem","useAppTheme","useCallback","useState","Glyph","HStack","Icon","IconButton","useHostGuard","isIconOnly","menuActionColor","jsx","_jsx","jsxs","_jsxs","MenuItem","action","onDismiss","theme","color","elementColors","leadingIconColor","textColor","enabled","disabled","onClick","onPress","children","colorString","style","typography","body","label","icon","LeadingIcon","name","size","triggerOf","props","open","accessibilityLabel","testID","align","spacing","Menu","expanded","setExpanded","dismiss","onDismissRequest","Trigger","Items","actions","map"],"sourceRoot":"../../../../src","sources":["organisms/menu/menu.android.tsx"],"mappings":";;AAAA,SAAQA,IAAI,IAAIC,WAAW,EAAEC,YAAY,EAAEC,gBAAgB,QAAO,0BAA0B;AAC5F,SAAQC,WAAW,QAAO,mBAAmB;AAC7C,SAAwBC,WAAW,EAAEC,QAAQ,QAAO,OAAO;AAC3D,SAAQC,KAAK,QAAO,4BAAmB;AACvC,SAAQC,MAAM,QAAO,8BAAqB;AAC1C,SAAQC,IAAI,QAAO,2BAAkB;AACrC,SAAQC,UAAU,QAAO,kCAAyB;AAClD,SAAQV,IAAI,QAAO,2BAAkB;AACrC,SAAQW,YAAY,QAAO,6BAA0B;AAErD,SAAQC,UAAU,EAAEC,eAAe,QAAO,iBAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOxD,MAAMC,QAAQ,GAAGA,CAAC;EAACC,MAAM;EAAEC;AAAwB,CAAC,KAAK;EACvD,MAAMC,KAAK,GAAGjB,WAAW,CAAC,CAAC;EAC3B,MAAMkB,KAAK,GAAGT,eAAe,CAACM,MAAM,CAAC;EAErC,oBACEF,KAAA,CAACd,gBAAgB;IACfoB,aAAa,EAAE;MAACC,gBAAgB,EAAEH,KAAK,CAACC,KAAK,CAACA,KAAK,CAAC;MAAEG,SAAS,EAAEJ,KAAK,CAACC,KAAK,CAACA,KAAK;IAAC,CAAE;IACrFI,OAAO,EAAE,CAACP,MAAM,CAACQ,QAAS;IAC1BC,OAAO,EAAEA,CAAA,KAAM;MACbR,SAAS,CAAC,CAAC;MACXD,MAAM,CAACU,OAAO,CAAC,CAAC;IAClB,CAAE;IAAAC,QAAA,gBAEFf,IAAA,CAACZ,gBAAgB,CAACH,IAAI;MAAA8B,QAAA,eACpBf,IAAA,CAACd,WAAW;QAACqB,KAAK,EAAED,KAAK,CAACU,WAAW,CAACT,KAAK,CAAE;QAACU,KAAK,EAAEX,KAAK,CAACY,UAAU,CAACC,IAAK;QAAAJ,QAAA,EACxEX,MAAM,CAACgB;MAAK,CACF;IAAC,CACO,CAAC,EACvBhB,MAAM,CAACiB,IAAI,gBACVrB,IAAA,CAACZ,gBAAgB,CAACkC,WAAW;MAAAP,QAAA,eAC3Bf,IAAA,CAACN,IAAI;QAACa,KAAK,EAAEA,KAAM;QAACgB,IAAI,EAAEnB,MAAM,CAACiB,IAAK;QAACG,IAAI,EAAC;MAAK,CAAE;IAAC,CACxB,CAAC,GAC7B,IAAI;EAAA,CACQ,CAAC;AAEvB,CAAC;AAED,MAAMC,SAAS,GAAGA,CAACC,KAAgB,EAAEC,IAAgB,KAAgB;EACnE,IAAI9B,UAAU,CAAC6B,KAAK,CAAC,EAAE;IACrB;IACA,oBACE1B,IAAA,CAACL,UAAU;MACTiC,kBAAkB,EAAEF,KAAK,CAACE,kBAAmB;MAC7CL,IAAI,EAAEG,KAAK,CAACL,IAAK;MACjBP,OAAO,EAAEa,IAAK;MACdE,MAAM,EAAEH,KAAK,CAACG;IAAO,CACtB,CAAC;EAEN;EAEA,MAAM;IAACD,kBAAkB;IAAEP,IAAI;IAAED,KAAK;IAAES;EAAM,CAAC,GAAGH,KAAK;EAEvD,oBACExB,KAAA,CAACT,MAAM;IAACmC,kBAAkB,EAAEA,kBAAmB;IAACE,KAAK,EAAC,QAAQ;IAAChB,OAAO,EAAEa,IAAK;IAACI,OAAO,EAAC,IAAI;IAACF,MAAM,EAAEA,MAAO;IAAAd,QAAA,GACvGM,IAAI,gBACHnB,KAAA,CAACT,MAAM;MAACqC,KAAK,EAAC,QAAQ;MAACC,OAAO,EAAC,IAAI;MAAAhB,QAAA,gBACjCf,IAAA,CAACN,IAAI;QAACa,KAAK,EAAC,gBAAgB;QAACgB,IAAI,EAAEF,IAAK;QAACG,IAAI,EAAC;MAAK,CAAE,CAAC,eACtDxB,IAAA,CAACf,IAAI;QAACsB,KAAK,EAAC,gBAAgB;QAAAQ,QAAA,EAAEK;MAAK,CAAO,CAAC;IAAA,CACrC,CAAC,gBAETpB,IAAA,CAACf,IAAI;MAACsB,KAAK,EAAC,gBAAgB;MAAAQ,QAAA,EAAEK;IAAK,CAAO,CAC3C,eACDpB,IAAA,CAACR,KAAK;MAACe,KAAK,EAAC,gBAAgB;MAACgB,IAAI,EAAC,aAAa;MAACC,IAAI,EAAC;IAAK,CAAE,CAAC;EAAA,CACxD,CAAC;AAEb,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMQ,IAAmB,GAAIN,KAAgB,IAAK;EACvD9B,YAAY,CAAC,MAAM,CAAC;EAEpB,MAAMU,KAAK,GAAGjB,WAAW,CAAC,CAAC;EAC3B,MAAM,CAAC4C,QAAQ,EAAEC,WAAW,CAAC,GAAG3C,QAAQ,CAAC,KAAK,CAAC;EAC/C,MAAMoC,IAAI,GAAGrC,WAAW,CAAC,MAAM4C,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;EACrD,MAAMC,OAAO,GAAG7C,WAAW,CAAC,MAAM4C,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;EAEzD,oBACEhC,KAAA,CAACf,YAAY;IAACoB,KAAK,EAAED,KAAK,CAACC,KAAK,CAAC,iBAAiB,CAAE;IAAC0B,QAAQ,EAAEA,QAAS;IAACG,gBAAgB,EAAED,OAAQ;IAAApB,QAAA,gBACjGf,IAAA,CAACb,YAAY,CAACkD,OAAO;MAAAtB,QAAA,EAAEU,SAAS,CAACC,KAAK,EAAEC,IAAI;IAAC,CAAuB,CAAC,eACrE3B,IAAA,CAACb,YAAY,CAACmD,KAAK;MAAAvB,QAAA,EAChBW,KAAK,CAACa,OAAO,CAACC,GAAG,CAACpC,MAAM,iBACvBJ,IAAA,CAACG,QAAQ;QAACC,MAAM,EAAEA,MAAO;QAAoBC,SAAS,EAAE8B;MAAQ,GAAjC/B,MAAM,CAACgB,KAA4B,CACnE;IAAC,CACgB,CAAC;EAAA,CACT,CAAC;AAEnB,CAAC","ignoreList":[]}