@ankhorage/zora 23.2.5 → 23.3.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 (298) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -6
  3. package/dist/constants/authoring.d.ts +8 -0
  4. package/dist/constants/authoring.d.ts.map +1 -1
  5. package/dist/constants/authoring.js +6 -0
  6. package/dist/constants/authoring.js.map +1 -1
  7. package/dist/features/app-bar/appBarMeta.d.ts +10 -1
  8. package/dist/features/app-bar/appBarMeta.d.ts.map +1 -1
  9. package/dist/features/app-bar/appBarMeta.js +2 -1
  10. package/dist/features/app-bar/appBarMeta.js.map +1 -1
  11. package/dist/features/app-header/adapters/inbound/AppHeader.d.ts +5 -0
  12. package/dist/features/app-header/adapters/inbound/AppHeader.d.ts.map +1 -0
  13. package/dist/features/app-header/adapters/inbound/AppHeader.js +7 -0
  14. package/dist/features/app-header/adapters/inbound/AppHeader.js.map +1 -0
  15. package/dist/features/app-header/appHeaderMeta.d.ts +18 -0
  16. package/dist/features/app-header/appHeaderMeta.d.ts.map +1 -0
  17. package/dist/features/app-header/appHeaderMeta.js +12 -0
  18. package/dist/features/app-header/appHeaderMeta.js.map +1 -0
  19. package/dist/features/app-header/public.d.ts +3 -0
  20. package/dist/features/app-header/public.d.ts.map +1 -0
  21. package/dist/features/app-header/public.js +2 -0
  22. package/dist/features/app-header/public.js.map +1 -0
  23. package/dist/features/game/adapters/inbound/Game.d.ts +1 -1
  24. package/dist/features/game/adapters/inbound/Game.d.ts.map +1 -1
  25. package/dist/features/game/adapters/inbound/Game.js +4 -1
  26. package/dist/features/game/adapters/inbound/Game.js.map +1 -1
  27. package/dist/features/game/adapters/inbound/GameEntity.d.ts +1 -1
  28. package/dist/features/game/adapters/inbound/GameEntity.d.ts.map +1 -1
  29. package/dist/features/game/adapters/inbound/GameEntity.js +4 -1
  30. package/dist/features/game/adapters/inbound/GameEntity.js.map +1 -1
  31. package/dist/features/game/adapters/inbound/GameField.d.ts +1 -1
  32. package/dist/features/game/adapters/inbound/GameField.d.ts.map +1 -1
  33. package/dist/features/game/adapters/inbound/GameField.js +4 -1
  34. package/dist/features/game/adapters/inbound/GameField.js.map +1 -1
  35. package/dist/features/game/adapters/inbound/GameInputZone.d.ts +1 -1
  36. package/dist/features/game/adapters/inbound/GameInputZone.d.ts.map +1 -1
  37. package/dist/features/game/adapters/inbound/GameInputZone.js +4 -1
  38. package/dist/features/game/adapters/inbound/GameInputZone.js.map +1 -1
  39. package/dist/features/game/adapters/inbound/GameMeasurementProbe.d.ts +2 -1
  40. package/dist/features/game/adapters/inbound/GameMeasurementProbe.d.ts.map +1 -1
  41. package/dist/features/game/adapters/inbound/GameMeasurementProbe.js +4 -1
  42. package/dist/features/game/adapters/inbound/GameMeasurementProbe.js.map +1 -1
  43. package/dist/features/game/adapters/inbound/GameOverlay.d.ts +1 -1
  44. package/dist/features/game/adapters/inbound/GameOverlay.d.ts.map +1 -1
  45. package/dist/features/game/adapters/inbound/GameOverlay.js +4 -1
  46. package/dist/features/game/adapters/inbound/GameOverlay.js.map +1 -1
  47. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.d.ts.map +1 -1
  48. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.js +2 -0
  49. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.js.map +1 -1
  50. package/dist/features/registry/bindableComponentMeta.d.ts +415 -327
  51. package/dist/features/registry/bindableComponentMeta.d.ts.map +1 -1
  52. package/dist/features/registry/bindableComponentMeta.js +12 -0
  53. package/dist/features/registry/bindableComponentMeta.js.map +1 -1
  54. package/dist/features/registry/componentMeta.d.ts.map +1 -1
  55. package/dist/features/registry/componentMeta.js +2 -0
  56. package/dist/features/registry/componentMeta.js.map +1 -1
  57. package/dist/features/registry/finalizeFeatureMetadata.d.ts.map +1 -1
  58. package/dist/features/registry/finalizeFeatureMetadata.js +5 -4
  59. package/dist/features/registry/finalizeFeatureMetadata.js.map +1 -1
  60. package/dist/features/selection/adapters/inbound/SelectableItem.d.ts +1 -1
  61. package/dist/features/selection/adapters/inbound/SelectableItem.d.ts.map +1 -1
  62. package/dist/features/selection/adapters/inbound/SelectableItem.js +4 -1
  63. package/dist/features/selection/adapters/inbound/SelectableItem.js.map +1 -1
  64. package/dist/features/theme/adapters/inbound/ThemeModeToggle.d.ts +2 -1
  65. package/dist/features/theme/adapters/inbound/ThemeModeToggle.d.ts.map +1 -1
  66. package/dist/features/theme/adapters/inbound/ThemeModeToggle.js +5 -1
  67. package/dist/features/theme/adapters/inbound/ThemeModeToggle.js.map +1 -1
  68. package/dist/features/theme/adapters/inbound/ZoraThemeScope.d.ts +2 -1
  69. package/dist/features/theme/adapters/inbound/ZoraThemeScope.d.ts.map +1 -1
  70. package/dist/features/theme/adapters/inbound/ZoraThemeScope.js +7 -5
  71. package/dist/features/theme/adapters/inbound/ZoraThemeScope.js.map +1 -1
  72. package/dist/features/theme/adapters/inbound/withZoraThemeScope.d.ts +1 -0
  73. package/dist/features/theme/adapters/inbound/withZoraThemeScope.d.ts.map +1 -1
  74. package/dist/features/theme/adapters/inbound/withZoraThemeScope.js +9 -4
  75. package/dist/features/theme/adapters/inbound/withZoraThemeScope.js.map +1 -1
  76. package/dist/index.d.ts +1 -0
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +1 -0
  79. package/dist/index.js.map +1 -1
  80. package/dist/types/app-header.d.ts +3 -0
  81. package/dist/types/app-header.d.ts.map +1 -0
  82. package/dist/types/app-header.js +2 -0
  83. package/dist/types/app-header.js.map +1 -0
  84. package/dist/types/base.d.ts +2 -0
  85. package/dist/types/base.d.ts.map +1 -1
  86. package/dist/types/base.js.map +1 -1
  87. package/dist/types/gamePresentation.d.ts +6 -6
  88. package/dist/types/gamePresentation.d.ts.map +1 -1
  89. package/dist/types/gamePresentation.js.map +1 -1
  90. package/dist/types/selection.d.ts +2 -1
  91. package/dist/types/selection.d.ts.map +1 -1
  92. package/dist/types/selection.js.map +1 -1
  93. package/dist/types/theme-mode-toggle.d.ts +2 -1
  94. package/dist/types/theme-mode-toggle.d.ts.map +1 -1
  95. package/dist/types/theme-mode-toggle.js.map +1 -1
  96. package/package.json +3 -3
  97. package/src/constants/authoring.ts +7 -0
  98. package/src/features/app-bar/appBarMeta.ts +2 -1
  99. package/src/features/app-header/adapters/inbound/AppHeader.tsx +9 -0
  100. package/src/features/app-header/appHeaderMeta.ts +13 -0
  101. package/src/features/app-header/public.ts +2 -0
  102. package/src/features/game/adapters/inbound/Game.tsx +5 -1
  103. package/src/features/game/adapters/inbound/GameEntity.tsx +5 -1
  104. package/src/features/game/adapters/inbound/GameField.tsx +5 -1
  105. package/src/features/game/adapters/inbound/GameInputZone.tsx +5 -1
  106. package/src/features/game/adapters/inbound/GameMeasurementProbe.tsx +5 -1
  107. package/src/features/game/adapters/inbound/GameOverlay.tsx +5 -1
  108. package/src/features/registry/ZORA_COMPONENT_REGISTRY.ts +2 -0
  109. package/src/features/registry/authoringMeta.test.ts +11 -0
  110. package/src/features/registry/bindableComponentMeta.ts +12 -0
  111. package/src/features/registry/componentMeta.ts +2 -0
  112. package/src/features/registry/finalizeFeatureMetadata.ts +7 -6
  113. package/src/features/registry/registry.test.ts +1 -0
  114. package/src/features/selection/adapters/inbound/SelectableItem.tsx +5 -1
  115. package/src/features/theme/adapters/inbound/ThemeModeToggle.tsx +6 -1
  116. package/src/features/theme/adapters/inbound/ZoraThemeScope.tsx +12 -5
  117. package/src/features/theme/adapters/inbound/withZoraThemeScope.tsx +9 -4
  118. package/src/features/theme/themeConfigScope.test.ts +1 -1
  119. package/src/features/theme/themeScopeStructure.test.ts +6 -1
  120. package/src/index.ts +1 -0
  121. package/src/invertedThemeAcceptance.test.tsx +177 -0
  122. package/src/types/app-header.ts +3 -0
  123. package/src/types/base.ts +3 -0
  124. package/src/types/gamePresentation.ts +7 -6
  125. package/src/types/selection.ts +3 -1
  126. package/src/types/theme-mode-toggle.ts +3 -4
  127. package/web-dist/chunks/{Accordion-c3yfjhex.js → Accordion-0047zyx7.js} +4 -4
  128. package/web-dist/chunks/{Accordion-vq198z68.js → Accordion-0yhkg017.js} +9 -9
  129. package/web-dist/chunks/{Accordion-hztfb9ex.js → Accordion-0yvepteg.js} +5 -5
  130. package/web-dist/chunks/{Accordion-r1geqzsp.js → Accordion-1e1nfhtc.js} +5 -5
  131. package/web-dist/chunks/{Accordion-vc8pv1jf.js → Accordion-1xpq9bxk.js} +7 -7
  132. package/web-dist/chunks/{Accordion-11xym8p8.js → Accordion-2dqpjya2.js} +7 -7
  133. package/web-dist/chunks/{Accordion-g69czys5.js → Accordion-37n4bt3g.js} +2 -2
  134. package/web-dist/chunks/{Accordion-0f748ad5.js → Accordion-3m6de80j.js} +1 -1
  135. package/web-dist/chunks/{Accordion-jynbc7d0.js → Accordion-693gvpde.js} +3 -3
  136. package/web-dist/chunks/{Accordion-een6jq8f.js → Accordion-6xrse5my.js} +1 -1
  137. package/web-dist/chunks/{Accordion-904ncmad.js → Accordion-6ytrt7xj.js} +5 -5
  138. package/web-dist/chunks/{Accordion-jfjery84.js → Accordion-70g7n6tk.js} +8 -8
  139. package/web-dist/chunks/{Accordion-n7hckxte.js → Accordion-73x0gt11.js} +6 -6
  140. package/web-dist/chunks/{Accordion-7cgv14wd.js → Accordion-7y9wt946.js} +2 -2
  141. package/web-dist/chunks/{Accordion-scacsnhj.js → Accordion-8bxy3g7a.js} +3 -3
  142. package/web-dist/chunks/{Accordion-6h4zc69v.js → Accordion-8fne0gf9.js} +4 -4
  143. package/web-dist/chunks/{Accordion-xak1mcaf.js → Accordion-8z7naxj2.js} +18 -13
  144. package/web-dist/chunks/{Accordion-whhnrz92.js → Accordion-a1ervhyg.js} +13 -13
  145. package/web-dist/chunks/{Accordion-tp2gn95w.js → Accordion-a61amgk4.js} +4 -4
  146. package/web-dist/chunks/{Accordion-vtndpbzt.js → Accordion-ancjf7q8.js} +7 -3
  147. package/web-dist/chunks/{Accordion-7ccpdvga.js → Accordion-axxgq453.js} +7 -7
  148. package/web-dist/chunks/{Accordion-bn954rjh.js → Accordion-basd2gyf.js} +2 -2
  149. package/web-dist/chunks/{Accordion-z4d0pncs.js → Accordion-bz2dzbad.js} +9 -9
  150. package/web-dist/chunks/{Accordion-pt0f1v0m.js → Accordion-ct805sm7.js} +2 -2
  151. package/web-dist/chunks/{Accordion-katngqxf.js → Accordion-d24n7srd.js} +4 -4
  152. package/web-dist/chunks/{Accordion-a09gnx45.js → Accordion-dbxpv5eq.js} +3 -3
  153. package/web-dist/chunks/{Accordion-8zerapbc.js → Accordion-e2kr1z3g.js} +5 -5
  154. package/web-dist/chunks/{Accordion-8rx1stgv.js → Accordion-ebw6xj6x.js} +5 -7
  155. package/web-dist/chunks/{Accordion-090whwtv.js → Accordion-ekjwm5dw.js} +17 -8
  156. package/web-dist/chunks/{Accordion-ej4p6ae3.js → Accordion-g2d4fskg.js} +2 -2
  157. package/web-dist/chunks/{Accordion-65kvpq6z.js → Accordion-gkx1kszz.js} +1 -1
  158. package/web-dist/chunks/{Accordion-40sj6k87.js → Accordion-k6dg8zd2.js} +3 -3
  159. package/web-dist/chunks/{Accordion-xdgpa7kf.js → Accordion-kxa15n19.js} +1 -1
  160. package/web-dist/chunks/{Accordion-ps286k56.js → Accordion-m4brcz8v.js} +5 -5
  161. package/web-dist/chunks/{Accordion-hdnpzyk9.js → Accordion-mbqtk7y0.js} +1 -1
  162. package/web-dist/chunks/{Accordion-sh0sk3cz.js → Accordion-nkd7nhyx.js} +5 -5
  163. package/web-dist/chunks/{Accordion-qqsxfq5h.js → Accordion-p0fh69qq.js} +6 -6
  164. package/web-dist/chunks/{Accordion-02d3sw7t.js → Accordion-ph15h010.js} +10 -10
  165. package/web-dist/chunks/{Accordion-a60dhqsv.js → Accordion-pvz3r99n.js} +38 -1
  166. package/web-dist/chunks/{Accordion-qd4r5b4s.js → Accordion-q9zge7kd.js} +2 -2
  167. package/web-dist/chunks/{Accordion-1dppb4fr.js → Accordion-qyssgtwe.js} +2 -2
  168. package/web-dist/chunks/{Accordion-pe49atda.js → Accordion-rmp9sfra.js} +1 -1
  169. package/web-dist/chunks/{Accordion-v1fxp6yd.js → Accordion-snyacfyh.js} +8 -8
  170. package/web-dist/chunks/{Accordion-47mg9vze.js → Accordion-tdjh81ax.js} +5 -5
  171. package/web-dist/chunks/{Accordion-3v7sz3vv.js → Accordion-v4n4ygwn.js} +1 -1
  172. package/web-dist/chunks/{Accordion-2z0415ed.js → Accordion-vjgk1sz7.js} +1 -1
  173. package/web-dist/chunks/{Accordion-qq9bvraa.js → Accordion-wgesygtk.js} +10 -10
  174. package/web-dist/chunks/{Accordion-tvzq4dw8.js → Accordion-wxbh98kp.js} +8 -8
  175. package/web-dist/chunks/{Accordion-3w1t105s.js → Accordion-wytj5wwc.js} +3 -3
  176. package/web-dist/chunks/{Accordion-19j1mncn.js → Accordion-yae3m7g7.js} +4 -4
  177. package/web-dist/chunks/{Accordion-c7pd59w7.js → Accordion-zgzrah0a.js} +6 -6
  178. package/web-dist/components/accordion/Accordion.js +12 -13
  179. package/web-dist/components/accordion-item/AccordionItem.js +12 -13
  180. package/web-dist/components/activity-indicator/ActivityIndicator.js +3 -4
  181. package/web-dist/components/app-bar/AppBar.js +19 -20
  182. package/web-dist/components/app-header/AppHeader.d.ts +3 -0
  183. package/web-dist/components/app-header/AppHeader.js +41 -0
  184. package/web-dist/components/app-header/index.d.ts +1 -0
  185. package/web-dist/components/app-header/index.js +2 -0
  186. package/web-dist/components/app-shell/AppShell.js +6 -7
  187. package/web-dist/components/auth-screen/AuthScreen.js +21 -22
  188. package/web-dist/components/avatar/Avatar.js +12 -13
  189. package/web-dist/components/avatar-group/AvatarGroup.js +12 -13
  190. package/web-dist/components/badge/Badge.js +7 -8
  191. package/web-dist/components/barcode-scanner-view/BarcodeScannerView.js +20 -21
  192. package/web-dist/components/bottom-sheet/BottomSheet.js +8 -9
  193. package/web-dist/components/bottom-sheet-flat-list/BottomSheetFlatList.js +8 -9
  194. package/web-dist/components/bottom-sheet-scroll-view/BottomSheetScrollView.js +8 -9
  195. package/web-dist/components/bottom-sheet-section-list/BottomSheetSectionList.js +8 -9
  196. package/web-dist/components/bottom-sheet-view/BottomSheetView.js +8 -9
  197. package/web-dist/components/bottom-sheet-virtualized-list/BottomSheetVirtualizedList.js +8 -9
  198. package/web-dist/components/breadcrumbs/Breadcrumbs.js +14 -15
  199. package/web-dist/components/button/Button.js +12 -13
  200. package/web-dist/components/button-group/ButtonGroup.js +12 -13
  201. package/web-dist/components/camera-permission-view/CameraPermissionView.js +20 -21
  202. package/web-dist/components/card/Card.js +19 -20
  203. package/web-dist/components/card-back/CardBack.js +4 -5
  204. package/web-dist/components/card-hand/CardHand.js +4 -5
  205. package/web-dist/components/chat-list-item/ChatListItem.js +16 -17
  206. package/web-dist/components/checkbox/Checkbox.js +12 -13
  207. package/web-dist/components/checkbox-group/CheckboxGroup.js +12 -13
  208. package/web-dist/components/chess-board/ChessBoard.js +4 -5
  209. package/web-dist/components/chip/Chip.js +13 -14
  210. package/web-dist/components/chip-group/ChipGroup.js +13 -14
  211. package/web-dist/components/collection-editor/CollectionEditor.js +19 -20
  212. package/web-dist/components/content-rail/ContentRail.js +13 -14
  213. package/web-dist/components/data-table/DataTable.js +26 -27
  214. package/web-dist/components/date-picker/DatePicker.js +17 -18
  215. package/web-dist/components/dialog/Dialog.js +12 -13
  216. package/web-dist/components/divider/Divider.js +6 -7
  217. package/web-dist/components/empty-state/EmptyState.js +20 -21
  218. package/web-dist/components/field/Field.js +12 -13
  219. package/web-dist/components/flat-list/FlatList.js +13 -14
  220. package/web-dist/components/forgot-password-form/ForgotPasswordForm.js +21 -22
  221. package/web-dist/components/form/Form.js +16 -17
  222. package/web-dist/components/form-actions/FormActions.js +16 -17
  223. package/web-dist/components/form-error/FormError.js +16 -17
  224. package/web-dist/components/game/Game.js +7 -8
  225. package/web-dist/components/game-entity/GameEntity.js +7 -8
  226. package/web-dist/components/game-field/GameField.js +7 -8
  227. package/web-dist/components/game-input-zone/GameInputZone.js +7 -8
  228. package/web-dist/components/game-measurement-probe/GameMeasurementProbe.js +7 -8
  229. package/web-dist/components/game-overlay/GameOverlay.js +7 -8
  230. package/web-dist/components/gradient/Gradient.js +7 -8
  231. package/web-dist/components/gradient-renderer-provider/GradientRendererProvider.js +7 -8
  232. package/web-dist/components/grid/Grid.js +6 -7
  233. package/web-dist/components/heading/Heading.js +6 -7
  234. package/web-dist/components/hero/Hero.js +19 -20
  235. package/web-dist/components/icon/Icon.js +4 -5
  236. package/web-dist/components/icon-button/IconButton.js +12 -13
  237. package/web-dist/components/image/Image.js +10 -11
  238. package/web-dist/components/keyboard-avoiding-view/KeyboardAvoidingView.js +3 -4
  239. package/web-dist/components/list/List.js +13 -14
  240. package/web-dist/components/list-item/ListItem.js +13 -14
  241. package/web-dist/components/list-section/ListSection.js +13 -14
  242. package/web-dist/components/media-card/MediaCard.js +19 -20
  243. package/web-dist/components/message-bubble/MessageBubble.js +16 -17
  244. package/web-dist/components/metric-card/MetricCard.js +19 -20
  245. package/web-dist/components/missing-element/MissingElement.js +11 -12
  246. package/web-dist/components/o-auth-provider-button/OAuthProviderButton.js +21 -22
  247. package/web-dist/components/o-auth-provider-list/OAuthProviderList.js +21 -22
  248. package/web-dist/components/opening-book/OpeningBook.js +4 -5
  249. package/web-dist/components/otp-form/OtpForm.js +21 -22
  250. package/web-dist/components/pagination/Pagination.js +13 -14
  251. package/web-dist/components/palette-item/PaletteItem.js +19 -20
  252. package/web-dist/components/playing-card/PlayingCard.js +4 -5
  253. package/web-dist/components/poker-training-table/PokerTrainingTable.js +4 -5
  254. package/web-dist/components/popover-menu/PopoverMenu.js +14 -15
  255. package/web-dist/components/post-card/PostCard.js +19 -20
  256. package/web-dist/components/product-card/ProductCard.js +19 -20
  257. package/web-dist/components/progress/Progress.js +10 -11
  258. package/web-dist/components/progress-ring/ProgressRing.js +10 -11
  259. package/web-dist/components/radio/Radio.js +14 -15
  260. package/web-dist/components/radio-group/RadioGroup.js +14 -15
  261. package/web-dist/components/rating/Rating.js +9 -10
  262. package/web-dist/components/reader-surface/ReaderSurface.js +21 -22
  263. package/web-dist/components/scan-overlay/ScanOverlay.js +20 -21
  264. package/web-dist/components/screen/Screen.js +6 -7
  265. package/web-dist/components/screen-section/ScreenSection.js +10 -11
  266. package/web-dist/components/scroll-view/ScrollView.js +6 -7
  267. package/web-dist/components/search-input/SearchInput.js +13 -14
  268. package/web-dist/components/section-header/SectionHeader.js +10 -11
  269. package/web-dist/components/section-list/SectionList.js +13 -14
  270. package/web-dist/components/select/Select.js +16 -17
  271. package/web-dist/components/selectable-item/SelectableItem.js +6 -5
  272. package/web-dist/components/selection-provider/SelectionProvider.js +6 -5
  273. package/web-dist/components/sign-in-form/SignInForm.js +21 -22
  274. package/web-dist/components/sign-up-form/SignUpForm.js +21 -22
  275. package/web-dist/components/skeleton/Skeleton.js +22 -23
  276. package/web-dist/components/skeleton-card/SkeletonCard.js +22 -23
  277. package/web-dist/components/skeleton-list/SkeletonList.js +22 -23
  278. package/web-dist/components/skeleton-text/SkeletonText.js +22 -23
  279. package/web-dist/components/surface/Surface.js +7 -8
  280. package/web-dist/components/switch/Switch.js +7 -8
  281. package/web-dist/components/tab/Tab.js +7 -8
  282. package/web-dist/components/tab-list/TabList.js +7 -8
  283. package/web-dist/components/tab-panel/TabPanel.js +7 -8
  284. package/web-dist/components/tabletop-table/TabletopTable.js +4 -5
  285. package/web-dist/components/tabs/Tabs.js +7 -8
  286. package/web-dist/components/text/Text.js +6 -7
  287. package/web-dist/components/text-input/TextInput.js +13 -14
  288. package/web-dist/components/time-picker/TimePicker.js +17 -18
  289. package/web-dist/components/timeline/Timeline.js +11 -12
  290. package/web-dist/components/toast/Toast.js +9 -10
  291. package/web-dist/components/toast-provider/ToastProvider.js +9 -10
  292. package/web-dist/components/toolbar/Toolbar.js +19 -20
  293. package/web-dist/components/tree-item/TreeItem.js +17 -18
  294. package/web-dist/components/uploader/Uploader.js +22 -23
  295. package/web-dist/components/view/View.js +6 -7
  296. package/web-dist/manifest.json +1500 -1567
  297. package/web-dist/runtime/ZoraProvider.js +12 -14
  298. package/web-dist/chunks/Accordion-kcx57mk5.js +0 -39
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 23.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 10ee5d8: Add inherited inverted surface polarity and AppHeader
8
+
3
9
  ## 23.2.5
4
10
 
5
11
  ### Patch Changes
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # @ankhorage/zora
5
5
 
6
- ![license: MIT](././paradox/badges/license.svg) ![npm: v23.2.5](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![paradox: warnings](././paradox/badges/docs.svg)
6
+ ![license: MIT](././paradox/badges/license.svg) ![npm: v23.3.0](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![paradox: warnings](././paradox/badges/docs.svg)
7
7
 
8
8
  Opinionated React Native and React Native Web UI kit built on @ankhorage/surface.
9
9
 
@@ -64,17 +64,12 @@ This package contains 5 additional examples. See the generated documentation for
64
64
  - [Export graph](././paradox/diagrams/export-graph.mmd)
65
65
  - [createPokerTrainingTableState sequence](././paradox/diagrams/sequences/create-poker-training-table-state.mmd)
66
66
  - [createZoraThemeConfig sequence](././paradox/diagrams/sequences/create-zora-theme-config.mmd)
67
- - [Game sequence](././paradox/diagrams/sequences/game.mmd)
68
- - [GameInputZone sequence](././paradox/diagrams/sequences/game-input-zone.mmd)
69
- - [GameOverlay sequence](././paradox/diagrams/sequences/game-overlay.mmd)
70
67
  - [getLegalTargets sequence](././paradox/diagrams/sequences/get-legal-targets.mmd)
71
68
  - [readChessPieces sequence](././paradox/diagrams/sequences/read-chess-pieces.mmd)
72
69
  - [resolveAvatarInitials sequence](././paradox/diagrams/sequences/resolve-avatar-initials.mmd)
73
70
  - [resolveOAuthProviderIcon sequence](././paradox/diagrams/sequences/resolve-oauth-provider-icon.mmd)
74
71
  - [resolveOAuthProviderLabel sequence](././paradox/diagrams/sequences/resolve-oauth-provider-label.mmd)
75
- - [SelectableItem sequence](././paradox/diagrams/sequences/selectable-item.mmd)
76
72
  - [SelectionProvider sequence](././paradox/diagrams/sequences/selection-provider.mmd)
77
- - [ThemeModeToggle sequence](././paradox/diagrams/sequences/theme-mode-toggle.mmd)
78
73
  - [tryMove sequence](././paradox/diagrams/sequences/try-move.mmd)
79
74
  - [useZoraTheme sequence](././paradox/diagrams/sequences/use-zora-theme.mmd)
80
75
  - [validateField sequence](././paradox/diagrams/sequences/validate-field.mmd)
@@ -3,6 +3,14 @@ export declare const COMPONENT_THEME_AUTHORING: {
3
3
  readonly scope: "component";
4
4
  readonly allowInstanceOverride: true;
5
5
  };
6
+ export declare const INVERTED_POLARITY_PROP: {
7
+ readonly type: "boolean";
8
+ readonly category: "Theme";
9
+ readonly label: "Inverted surface polarity (inherits when omitted; false resets)";
10
+ readonly authoring: {
11
+ readonly authority: "instance";
12
+ };
13
+ };
6
14
  export declare const FEATURE_MANIFEST_ELEMENTS: {
7
15
  readonly auth: readonly ["AuthScreen", "ForgotPasswordForm", "OAuthProviderButton", "OAuthProviderList", "OtpForm", "SignInForm", "SignUpForm"];
8
16
  readonly surface: readonly ["Surface"];
@@ -1 +1 @@
1
- {"version":3,"file":"authoring.d.ts","sourceRoot":"","sources":["../../src/constants/authoring.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAC;AAEX,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwC5B,CAAC;AAEX,eAAO,MAAM,0BAA0B,21BAgE7B,CAAC;AAEX,eAAO,MAAM,qBAAqB,gCAAiC,CAAC;AAEpE,eAAO,MAAM,sBAAsB,wCAAyC,CAAC;AAC7E,eAAO,MAAM,yBAAyB,kDAAmD,CAAC;AAE1F,eAAO,MAAM,6BAA6B,0OAmBhC,CAAC;AAEX,eAAO,MAAM,+BAA+B,o7BAKlC,CAAC;AAEX,eAAO,MAAM,uBAAuB,q8BAG1B,CAAC;AAEX,eAAO,MAAM,yBAAyB,kEAM5B,CAAC"}
1
+ {"version":3,"file":"authoring.d.ts","sourceRoot":"","sources":["../../src/constants/authoring.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;;;;;CAKzB,CAAC;AAEX,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwC5B,CAAC;AAEX,eAAO,MAAM,0BAA0B,21BAgE7B,CAAC;AAEX,eAAO,MAAM,qBAAqB,gCAAiC,CAAC;AAEpE,eAAO,MAAM,sBAAsB,wCAAyC,CAAC;AAC7E,eAAO,MAAM,yBAAyB,kDAAmD,CAAC;AAE1F,eAAO,MAAM,6BAA6B,0OAmBhC,CAAC;AAEX,eAAO,MAAM,+BAA+B,o7BAKlC,CAAC;AAEX,eAAO,MAAM,uBAAuB,q8BAG1B,CAAC;AAEX,eAAO,MAAM,yBAAyB,kEAM5B,CAAC"}
@@ -3,6 +3,12 @@ export const COMPONENT_THEME_AUTHORING = {
3
3
  scope: 'component',
4
4
  allowInstanceOverride: true,
5
5
  };
6
+ export const INVERTED_POLARITY_PROP = {
7
+ type: 'boolean',
8
+ category: 'Theme',
9
+ label: 'Inverted surface polarity (inherits when omitted; false resets)',
10
+ authoring: { authority: 'instance' },
11
+ };
6
12
  export const FEATURE_MANIFEST_ELEMENTS = {
7
13
  auth: [
8
14
  'AuthScreen',
@@ -1 +1 @@
1
- {"version":3,"file":"authoring.js","sourceRoot":"","sources":["../../src/constants/authoring.ts"],"names":[],"mappings":"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","sourcesContent":["export const COMPONENT_THEME_AUTHORING = {\n authority: 'theme',\n scope: 'component',\n allowInstanceOverride: true,\n} as const;\n\nexport const FEATURE_MANIFEST_ELEMENTS = {\n auth: [\n 'AuthScreen',\n 'ForgotPasswordForm',\n 'OAuthProviderButton',\n 'OAuthProviderList',\n 'OtpForm',\n 'SignInForm',\n 'SignUpForm',\n ],\n surface: ['Surface'],\n avatar: ['Avatar', 'AvatarGroup'],\n badge: ['Badge'],\n card: ['Card', 'MediaCard', 'MetricCard', 'PostCard', 'ProductCard'],\n chip: ['Chip', 'ChipGroup'],\n 'data-table': ['DataTable'],\n 'date-picker': ['DatePicker'],\n dialog: ['Dialog'],\n form: ['Form', 'FormError', 'Field'],\n gradient: ['Gradient'],\n button: ['Button', 'IconButton', 'ButtonGroup'],\n icon: ['Icon'],\n image: ['Image'],\n 'keyboard-avoiding-view': ['KeyboardAvoidingView'],\n 'content-rail': ['ContentRail'],\n layout: ['Divider', 'Grid', 'Screen', 'ScrollView', 'View'],\n section: ['ScreenSection', 'SectionHeader'],\n list: ['FlatList', 'SectionList'],\n pagination: ['Pagination'],\n rating: ['Rating'],\n skeleton: ['Skeleton', 'SkeletonCard', 'SkeletonList', 'SkeletonText'],\n tabs: ['Tabs', 'TabList', 'Tab', 'TabPanel'],\n toolbar: ['Toolbar'],\n typography: ['Heading', 'Text'],\n 'time-picker': ['TimePicker'],\n uploader: ['Uploader'],\n 'bottom-sheet': ['BottomSheet'],\n chess: ['ChessBoard', 'OpeningBook'],\n game: ['Game', 'GameField', 'GameEntity', 'GameInputZone', 'GameMeasurementProbe', 'GameOverlay'],\n tabletop: ['TabletopTable', 'PokerTrainingTable'],\n} as const;\n\nexport const CONTAINER_ALLOWED_CHILDREN = [\n 'ActivityIndicator',\n 'AuthScreen',\n 'ForgotPasswordForm',\n 'OAuthProviderButton',\n 'OAuthProviderList',\n 'OtpForm',\n 'SignInForm',\n 'SignUpForm',\n 'Accordion',\n 'Surface',\n 'Avatar',\n 'AvatarGroup',\n 'Badge',\n 'MediaCard',\n 'MetricCard',\n 'Chip',\n 'ChipGroup',\n 'DataTable',\n 'DatePicker',\n 'Dialog',\n 'Pagination',\n 'Rating',\n 'SearchInput',\n 'Tabs',\n 'Toolbar',\n 'Skeleton',\n 'SkeletonCard',\n 'SkeletonList',\n 'SkeletonText',\n 'IconButton',\n 'Uploader',\n 'FlatList',\n 'SectionList',\n 'BottomSheet',\n 'ProductCard',\n 'View',\n 'ScrollView',\n 'Grid',\n 'Gradient',\n 'Divider',\n 'Text',\n 'Heading',\n 'Icon',\n 'Image',\n 'Hero',\n 'KeyboardAvoidingView',\n 'Button',\n 'ButtonGroup',\n 'RadioGroup',\n 'ThemeModeToggle',\n 'TextInput',\n 'TimePicker',\n 'Form',\n 'Card',\n 'EmptyState',\n 'SectionHeader',\n 'PostCard',\n 'ChatListItem',\n 'MessageBubble',\n 'ProgressRing',\n 'ReaderSurface',\n 'ContentRail',\n 'MissingElement',\n] as const;\n\nexport const GAME_ALLOWED_CHILDREN = ['Game', 'GameField'] as const;\n\nexport const CHESS_ALLOWED_CHILDREN = ['ChessBoard', 'OpeningBook'] as const;\nexport const TABLETOP_ALLOWED_CHILDREN = ['TabletopTable', 'PokerTrainingTable'] as const;\n\nexport const CONTENT_RAIL_ALLOWED_CHILDREN = [\n 'Chip',\n 'ChipGroup',\n 'MediaCard',\n 'MetricCard',\n 'Avatar',\n 'AvatarGroup',\n 'Badge',\n 'Button',\n 'IconButton',\n 'View',\n 'ScrollView',\n 'Card',\n 'Image',\n 'ProductCard',\n 'PostCard',\n 'ChatListItem',\n 'MessageBubble',\n 'MissingElement',\n] as const;\n\nexport const SCREEN_SECTION_ALLOWED_CHILDREN = [\n ...CONTAINER_ALLOWED_CHILDREN,\n ...CHESS_ALLOWED_CHILDREN,\n ...GAME_ALLOWED_CHILDREN,\n ...TABLETOP_ALLOWED_CHILDREN,\n] as const;\n\nexport const SCREEN_ALLOWED_CHILDREN = [\n 'ScreenSection',\n ...SCREEN_SECTION_ALLOWED_CHILDREN,\n] as const;\n\nexport const ZORA_THEME_TOKEN_FAMILIES = [\n 'colors',\n 'spacing',\n 'radii',\n 'typography',\n 'shadows',\n] as const;\n"]}
1
+ {"version":3,"file":"authoring.js","sourceRoot":"","sources":["../../src/constants/authoring.ts"],"names":[],"mappings":"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","sourcesContent":["export const COMPONENT_THEME_AUTHORING = {\n authority: 'theme',\n scope: 'component',\n allowInstanceOverride: true,\n} as const;\n\nexport const INVERTED_POLARITY_PROP = {\n type: 'boolean',\n category: 'Theme',\n label: 'Inverted surface polarity (inherits when omitted; false resets)',\n authoring: { authority: 'instance' },\n} as const;\n\nexport const FEATURE_MANIFEST_ELEMENTS = {\n auth: [\n 'AuthScreen',\n 'ForgotPasswordForm',\n 'OAuthProviderButton',\n 'OAuthProviderList',\n 'OtpForm',\n 'SignInForm',\n 'SignUpForm',\n ],\n surface: ['Surface'],\n avatar: ['Avatar', 'AvatarGroup'],\n badge: ['Badge'],\n card: ['Card', 'MediaCard', 'MetricCard', 'PostCard', 'ProductCard'],\n chip: ['Chip', 'ChipGroup'],\n 'data-table': ['DataTable'],\n 'date-picker': ['DatePicker'],\n dialog: ['Dialog'],\n form: ['Form', 'FormError', 'Field'],\n gradient: ['Gradient'],\n button: ['Button', 'IconButton', 'ButtonGroup'],\n icon: ['Icon'],\n image: ['Image'],\n 'keyboard-avoiding-view': ['KeyboardAvoidingView'],\n 'content-rail': ['ContentRail'],\n layout: ['Divider', 'Grid', 'Screen', 'ScrollView', 'View'],\n section: ['ScreenSection', 'SectionHeader'],\n list: ['FlatList', 'SectionList'],\n pagination: ['Pagination'],\n rating: ['Rating'],\n skeleton: ['Skeleton', 'SkeletonCard', 'SkeletonList', 'SkeletonText'],\n tabs: ['Tabs', 'TabList', 'Tab', 'TabPanel'],\n toolbar: ['Toolbar'],\n typography: ['Heading', 'Text'],\n 'time-picker': ['TimePicker'],\n uploader: ['Uploader'],\n 'bottom-sheet': ['BottomSheet'],\n chess: ['ChessBoard', 'OpeningBook'],\n game: ['Game', 'GameField', 'GameEntity', 'GameInputZone', 'GameMeasurementProbe', 'GameOverlay'],\n tabletop: ['TabletopTable', 'PokerTrainingTable'],\n} as const;\n\nexport const CONTAINER_ALLOWED_CHILDREN = [\n 'ActivityIndicator',\n 'AuthScreen',\n 'ForgotPasswordForm',\n 'OAuthProviderButton',\n 'OAuthProviderList',\n 'OtpForm',\n 'SignInForm',\n 'SignUpForm',\n 'Accordion',\n 'Surface',\n 'Avatar',\n 'AvatarGroup',\n 'Badge',\n 'MediaCard',\n 'MetricCard',\n 'Chip',\n 'ChipGroup',\n 'DataTable',\n 'DatePicker',\n 'Dialog',\n 'Pagination',\n 'Rating',\n 'SearchInput',\n 'Tabs',\n 'Toolbar',\n 'Skeleton',\n 'SkeletonCard',\n 'SkeletonList',\n 'SkeletonText',\n 'IconButton',\n 'Uploader',\n 'FlatList',\n 'SectionList',\n 'BottomSheet',\n 'ProductCard',\n 'View',\n 'ScrollView',\n 'Grid',\n 'Gradient',\n 'Divider',\n 'Text',\n 'Heading',\n 'Icon',\n 'Image',\n 'Hero',\n 'KeyboardAvoidingView',\n 'Button',\n 'ButtonGroup',\n 'RadioGroup',\n 'ThemeModeToggle',\n 'TextInput',\n 'TimePicker',\n 'Form',\n 'Card',\n 'EmptyState',\n 'SectionHeader',\n 'PostCard',\n 'ChatListItem',\n 'MessageBubble',\n 'ProgressRing',\n 'ReaderSurface',\n 'ContentRail',\n 'MissingElement',\n] as const;\n\nexport const GAME_ALLOWED_CHILDREN = ['Game', 'GameField'] as const;\n\nexport const CHESS_ALLOWED_CHILDREN = ['ChessBoard', 'OpeningBook'] as const;\nexport const TABLETOP_ALLOWED_CHILDREN = ['TabletopTable', 'PokerTrainingTable'] as const;\n\nexport const CONTENT_RAIL_ALLOWED_CHILDREN = [\n 'Chip',\n 'ChipGroup',\n 'MediaCard',\n 'MetricCard',\n 'Avatar',\n 'AvatarGroup',\n 'Badge',\n 'Button',\n 'IconButton',\n 'View',\n 'ScrollView',\n 'Card',\n 'Image',\n 'ProductCard',\n 'PostCard',\n 'ChatListItem',\n 'MessageBubble',\n 'MissingElement',\n] as const;\n\nexport const SCREEN_SECTION_ALLOWED_CHILDREN = [\n ...CONTAINER_ALLOWED_CHILDREN,\n ...CHESS_ALLOWED_CHILDREN,\n ...GAME_ALLOWED_CHILDREN,\n ...TABLETOP_ALLOWED_CHILDREN,\n] as const;\n\nexport const SCREEN_ALLOWED_CHILDREN = [\n 'ScreenSection',\n ...SCREEN_SECTION_ALLOWED_CHILDREN,\n] as const;\n\nexport const ZORA_THEME_TOKEN_FAMILIES = [\n 'colors',\n 'spacing',\n 'radii',\n 'typography',\n 'shadows',\n] as const;\n"]}
@@ -4,6 +4,15 @@ export declare const appBarMeta: {
4
4
  readonly directManifestNode: false;
5
5
  readonly allowedChildren: readonly [];
6
6
  readonly note: "Application chrome component; not represented as a manifest node in v1.";
7
- readonly props: {};
7
+ readonly props: {
8
+ readonly inverted: {
9
+ readonly type: "boolean";
10
+ readonly category: "Theme";
11
+ readonly label: "Inverted surface polarity (inherits when omitted; false resets)";
12
+ readonly authoring: {
13
+ readonly authority: "instance";
14
+ };
15
+ };
16
+ };
8
17
  };
9
18
  //# sourceMappingURL=appBarMeta.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"appBarMeta.d.ts","sourceRoot":"","sources":["../../../src/features/app-bar/appBarMeta.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU;;;;;;;CAOe,CAAC"}
1
+ {"version":3,"file":"appBarMeta.d.ts","sourceRoot":"","sources":["../../../src/features/app-bar/appBarMeta.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;CAOe,CAAC"}
@@ -1,9 +1,10 @@
1
+ import { INVERTED_POLARITY_PROP } from '../../constants/authoring';
1
2
  export const appBarMeta = {
2
3
  name: 'AppBar',
3
4
  category: 'component',
4
5
  directManifestNode: false,
5
6
  allowedChildren: [],
6
7
  note: 'Application chrome component; not represented as a manifest node in v1.',
7
- props: {},
8
+ props: { inverted: INVERTED_POLARITY_PROP },
8
9
  };
9
10
  //# sourceMappingURL=appBarMeta.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"appBarMeta.js","sourceRoot":"","sources":["../../../src/features/app-bar/appBarMeta.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,WAAW;IACrB,kBAAkB,EAAE,KAAK;IACzB,eAAe,EAAE,EAAE;IACnB,IAAI,EAAE,yEAAyE;IAC/E,KAAK,EAAE,EAAE;CAC2B,CAAC","sourcesContent":["import type { ZoraComponentMeta } from '../../types/authoring';\n\nexport const appBarMeta = {\n name: 'AppBar',\n category: 'component',\n directManifestNode: false,\n allowedChildren: [],\n note: 'Application chrome component; not represented as a manifest node in v1.',\n props: {},\n} as const satisfies ZoraComponentMeta;\n"]}
1
+ {"version":3,"file":"appBarMeta.js","sourceRoot":"","sources":["../../../src/features/app-bar/appBarMeta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,WAAW;IACrB,kBAAkB,EAAE,KAAK;IACzB,eAAe,EAAE,EAAE;IACnB,IAAI,EAAE,yEAAyE;IAC/E,KAAK,EAAE,EAAE,QAAQ,EAAE,sBAAsB,EAAE;CACP,CAAC","sourcesContent":["import { INVERTED_POLARITY_PROP } from '../../constants/authoring';\nimport type { ZoraComponentMeta } from '../../types/authoring';\n\nexport const appBarMeta = {\n name: 'AppBar',\n category: 'component',\n directManifestNode: false,\n allowedChildren: [],\n note: 'Application chrome component; not represented as a manifest node in v1.',\n props: { inverted: INVERTED_POLARITY_PROP },\n} as const satisfies ZoraComponentMeta;\n"]}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { AppHeaderProps } from '../../../../types/app-header';
3
+ /*** Composes application header chrome through the scoped ZORA AppBar. */
4
+ export declare function AppHeader(props: AppHeaderProps): React.JSX.Element;
5
+ //# sourceMappingURL=AppHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../../../../../src/features/app-header/adapters/inbound/AppHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,qBAE9C"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { AppBar } from '../../../app-bar/public';
3
+ /*** Composes application header chrome through the scoped ZORA AppBar. */
4
+ export function AppHeader(props) {
5
+ return <AppBar {...props}/>;
6
+ }
7
+ //# sourceMappingURL=AppHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppHeader.js","sourceRoot":"","sources":["../../../../../src/features/app-header/adapters/inbound/AppHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,0EAA0E;AAC1E,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AAC/B,CAAC","sourcesContent":["import React from 'react';\n\nimport type { AppHeaderProps } from '../../../../types/app-header';\nimport { AppBar } from '../../../app-bar/public';\n\n/*** Composes application header chrome through the scoped ZORA AppBar. */\nexport function AppHeader(props: AppHeaderProps) {\n return <AppBar {...props} />;\n}\n"]}
@@ -0,0 +1,18 @@
1
+ export declare const appHeaderMeta: {
2
+ readonly name: "AppHeader";
3
+ readonly category: "pattern";
4
+ readonly directManifestNode: false;
5
+ readonly allowedChildren: readonly [];
6
+ readonly note: "Application header built from AppBar. Inverted is inherited surface polarity; false resets the subtree to normal polarity.";
7
+ readonly props: {
8
+ readonly inverted: {
9
+ readonly type: "boolean";
10
+ readonly category: "Theme";
11
+ readonly label: "Inverted surface polarity (inherits when omitted; false resets)";
12
+ readonly authoring: {
13
+ readonly authority: "instance";
14
+ };
15
+ };
16
+ };
17
+ };
18
+ //# sourceMappingURL=appHeaderMeta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appHeaderMeta.d.ts","sourceRoot":"","sources":["../../../src/features/app-header/appHeaderMeta.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;CASY,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { INVERTED_POLARITY_PROP } from '../../constants/authoring';
2
+ export const appHeaderMeta = {
3
+ name: 'AppHeader',
4
+ category: 'pattern',
5
+ directManifestNode: false,
6
+ allowedChildren: [],
7
+ note: 'Application header built from AppBar. Inverted is inherited surface polarity; false resets the subtree to normal polarity.',
8
+ props: {
9
+ inverted: INVERTED_POLARITY_PROP,
10
+ },
11
+ };
12
+ //# sourceMappingURL=appHeaderMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appHeaderMeta.js","sourceRoot":"","sources":["../../../src/features/app-header/appHeaderMeta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,SAAS;IACnB,kBAAkB,EAAE,KAAK;IACzB,eAAe,EAAE,EAAE;IACnB,IAAI,EAAE,4HAA4H;IAClI,KAAK,EAAE;QACL,QAAQ,EAAE,sBAAsB;KACjC;CACmC,CAAC","sourcesContent":["import { INVERTED_POLARITY_PROP } from '../../constants/authoring';\nimport type { ZoraComponentMeta } from '../../types/authoring';\n\nexport const appHeaderMeta = {\n name: 'AppHeader',\n category: 'pattern',\n directManifestNode: false,\n allowedChildren: [],\n note: 'Application header built from AppBar. Inverted is inherited surface polarity; false resets the subtree to normal polarity.',\n props: {\n inverted: INVERTED_POLARITY_PROP,\n },\n} as const satisfies ZoraComponentMeta;\n"]}
@@ -0,0 +1,3 @@
1
+ export type { AppHeaderProps } from '../../types/app-header';
2
+ export { AppHeader } from './adapters/inbound/AppHeader';
3
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/features/app-header/public.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { AppHeader } from './adapters/inbound/AppHeader';
2
+ //# sourceMappingURL=public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/features/app-header/public.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC","sourcesContent":["export type { AppHeaderProps } from '../../types/app-header';\nexport { AppHeader } from './adapters/inbound/AppHeader';\n"]}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import type { GameProps } from '../../../../types/gamePresentation';
3
3
  /*** Bind one serializable game definition to a local transient session and presentation field. */
4
- export declare function Game(props: GameProps): React.JSX.Element;
4
+ export declare const Game: (props: GameProps) => React.ReactElement | null;
5
5
  //# sourceMappingURL=Game.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Game.d.ts","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/Game.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAOpE,kGAAkG;AAClG,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,qBA+BpC"}
1
+ {"version":3,"file":"Game.d.ts","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/Game.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAQpE,kGAAkG;AAClG,eAAO,MAAM,IAAI,iDAAgC,CAAC"}
@@ -1,12 +1,15 @@
1
1
  import { RuntimeRendererConfigProvider } from '@ankhorage/runtime';
2
2
  import React from 'react';
3
+ import { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';
3
4
  import { createGameBindingContext } from '../../composition/createGameBindingContext';
4
5
  import { createGameMeasurementRegistry } from '../../composition/createGameMeasurementRegistry';
5
6
  import { GameRuntimeContext } from '../../composition/GameRuntimeContext';
6
7
  import { useGameRuntime } from '../../composition/useGameRuntime';
7
8
  import { GameField } from './GameField';
8
9
  /*** Bind one serializable game definition to a local transient session and presentation field. */
9
- export function Game(props) {
10
+ export const Game = withZoraThemeScope(GameInner);
11
+ /*** Render the game session inside the inherited ZORA theme scope. */
12
+ function GameInner(props) {
10
13
  const runtime = useGameRuntime(props);
11
14
  const [measurementRegistry] = React.useState(createGameMeasurementRegistry);
12
15
  const runtimeContext = React.useMemo(() => ({ ...runtime, ...measurementRegistry, interactionPolicy: props.interactionPolicy }), [measurementRegistry, props.interactionPolicy, runtime]);
@@ -1 +1 @@
1
- {"version":3,"file":"Game.js","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/Game.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,kGAAkG;AAClG,MAAM,UAAU,IAAI,CAAC,KAAgB;IACnC,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;IAC5E,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAClC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC,EAC1F,CAAC,mBAAmB,EAAE,KAAK,CAAC,iBAAiB,EAAE,OAAO,CAAC,CACxD,CAAC;IACF,MAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CACxC,GAAG,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EACrE,CAAC,OAAO,CAAC,OAAO,CAAC,CAClB,CAAC;IAEF,OAAO,CACL,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CACjD;MAAA,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CACzD;QAAA,CAAC,SAAS,CACR,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAChF,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAC1E,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAC3D,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAC3D,IAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS;QACzC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CACtD,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CACjE,iBAAiB,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAE3C;UAAA,CAAC,KAAK,CAAC,QAAQ,CACjB;QAAA,EAAE,SAAS,CACb;MAAA,EAAE,6BAA6B,CACjC;IAAA,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAC/B,CAAC;AACJ,CAAC","sourcesContent":["import { RuntimeRendererConfigProvider } from '@ankhorage/runtime';\nimport React from 'react';\n\nimport type { GameProps } from '../../../../types/gamePresentation';\nimport { createGameBindingContext } from '../../composition/createGameBindingContext';\nimport { createGameMeasurementRegistry } from '../../composition/createGameMeasurementRegistry';\nimport { GameRuntimeContext } from '../../composition/GameRuntimeContext';\nimport { useGameRuntime } from '../../composition/useGameRuntime';\nimport { GameField } from './GameField';\n\n/*** Bind one serializable game definition to a local transient session and presentation field. */\nexport function Game(props: GameProps) {\n const runtime = useGameRuntime(props);\n const [measurementRegistry] = React.useState(createGameMeasurementRegistry);\n const runtimeContext = React.useMemo(\n () => ({ ...runtime, ...measurementRegistry, interactionPolicy: props.interactionPolicy }),\n [measurementRegistry, props.interactionPolicy, runtime],\n );\n const runtimeBindingConfig = React.useMemo(\n () => ({ bindingContext: createGameBindingContext(runtime.session) }),\n [runtime.session],\n );\n\n return (\n <GameRuntimeContext.Provider value={runtimeContext}>\n <RuntimeRendererConfigProvider value={runtimeBindingConfig}>\n <GameField\n {...(props.aspectRatio === undefined ? {} : { aspectRatio: props.aspectRatio })}\n {...(props.minHeight === undefined ? {} : { minHeight: props.minHeight })}\n {...(props.fill === undefined ? {} : { fill: props.fill })}\n {...(props.clip === undefined ? {} : { clip: props.clip })}\n {...(props.accessibilityLabel === undefined\n ? {}\n : { accessibilityLabel: props.accessibilityLabel })}\n {...(props.testID === undefined ? {} : { testID: props.testID })}\n interactionPolicy={props.interactionPolicy}\n >\n {props.children}\n </GameField>\n </RuntimeRendererConfigProvider>\n </GameRuntimeContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"Game.js","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/Game.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,kGAAkG;AAClG,MAAM,CAAC,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAElD,sEAAsE;AACtE,SAAS,SAAS,CAAC,KAAgB;IACjC,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;IAC5E,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAClC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC,EAC1F,CAAC,mBAAmB,EAAE,KAAK,CAAC,iBAAiB,EAAE,OAAO,CAAC,CACxD,CAAC;IACF,MAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CACxC,GAAG,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EACrE,CAAC,OAAO,CAAC,OAAO,CAAC,CAClB,CAAC;IAEF,OAAO,CACL,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CACjD;MAAA,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CACzD;QAAA,CAAC,SAAS,CACR,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAChF,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAC1E,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAC3D,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAC3D,IAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS;QACzC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CACtD,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CACjE,iBAAiB,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAE3C;UAAA,CAAC,KAAK,CAAC,QAAQ,CACjB;QAAA,EAAE,SAAS,CACb;MAAA,EAAE,6BAA6B,CACjC;IAAA,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAC/B,CAAC;AACJ,CAAC","sourcesContent":["import { RuntimeRendererConfigProvider } from '@ankhorage/runtime';\nimport React from 'react';\n\nimport type { GameProps } from '../../../../types/gamePresentation';\nimport { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';\nimport { createGameBindingContext } from '../../composition/createGameBindingContext';\nimport { createGameMeasurementRegistry } from '../../composition/createGameMeasurementRegistry';\nimport { GameRuntimeContext } from '../../composition/GameRuntimeContext';\nimport { useGameRuntime } from '../../composition/useGameRuntime';\nimport { GameField } from './GameField';\n\n/*** Bind one serializable game definition to a local transient session and presentation field. */\nexport const Game = withZoraThemeScope(GameInner);\n\n/*** Render the game session inside the inherited ZORA theme scope. */\nfunction GameInner(props: GameProps) {\n const runtime = useGameRuntime(props);\n const [measurementRegistry] = React.useState(createGameMeasurementRegistry);\n const runtimeContext = React.useMemo(\n () => ({ ...runtime, ...measurementRegistry, interactionPolicy: props.interactionPolicy }),\n [measurementRegistry, props.interactionPolicy, runtime],\n );\n const runtimeBindingConfig = React.useMemo(\n () => ({ bindingContext: createGameBindingContext(runtime.session) }),\n [runtime.session],\n );\n\n return (\n <GameRuntimeContext.Provider value={runtimeContext}>\n <RuntimeRendererConfigProvider value={runtimeBindingConfig}>\n <GameField\n {...(props.aspectRatio === undefined ? {} : { aspectRatio: props.aspectRatio })}\n {...(props.minHeight === undefined ? {} : { minHeight: props.minHeight })}\n {...(props.fill === undefined ? {} : { fill: props.fill })}\n {...(props.clip === undefined ? {} : { clip: props.clip })}\n {...(props.accessibilityLabel === undefined\n ? {}\n : { accessibilityLabel: props.accessibilityLabel })}\n {...(props.testID === undefined ? {} : { testID: props.testID })}\n interactionPolicy={props.interactionPolicy}\n >\n {props.children}\n </GameField>\n </RuntimeRendererConfigProvider>\n </GameRuntimeContext.Provider>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import type { GameEntityProps } from '../../../../types/gamePresentation';
3
3
  /*** Render one generic positioned game entity without owning gameplay semantics. */
4
- export declare function GameEntity(props: GameEntityProps): React.JSX.Element;
4
+ export declare const GameEntity: (props: GameEntityProps) => React.ReactElement | null;
5
5
  //# sourceMappingURL=GameEntity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GameEntity.d.ts","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameEntity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAI1E,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,qBAkBhD"}
1
+ {"version":3,"file":"GameEntity.d.ts","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameEntity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAK1E,oFAAoF;AACpF,eAAO,MAAM,UAAU,uDAAsC,CAAC"}
@@ -1,9 +1,12 @@
1
1
  import React from 'react';
2
2
  import { Animated, StyleSheet } from 'react-native';
3
+ import { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';
3
4
  import { useGameEntityAnimatedStyle } from '../../utils/useGameEntityAnimatedStyle';
4
5
  import { useGameEntityMeasurement } from '../../utils/useGameEntityMeasurement';
5
6
  /*** Render one generic positioned game entity without owning gameplay semantics. */
6
- export function GameEntity(props) {
7
+ export const GameEntity = withZoraThemeScope(GameEntityInner);
8
+ /*** Render the positioned entity inside the inherited ZORA theme scope. */
9
+ function GameEntityInner(props) {
7
10
  const elementRef = React.useRef(null);
8
11
  const animatedStyle = useGameEntityAnimatedStyle(props);
9
12
  useGameEntityMeasurement(elementRef, props.measurementId);
@@ -1 +1 @@
1
- {"version":3,"file":"GameEntity.js","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameEntity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAA6B,MAAM,cAAc,CAAC;AAG/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,oFAAoF;AACpF,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAc,IAAI,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACxD,wBAAwB,CAAC,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAE1D,OAAO,CACL,CAAC,QAAQ,CAAC,IAAI,CACZ,GAAG,CAAC,CAAC,UAAU,CAAC,CAChB,kBAAkB,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAC7C,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CACrB,aAAa,CAAC,CACZ,KAAK,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,IAAI,MAAM,CACjF,CAAC,CACD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,uBAAuB,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAEpE;MAAA,CAAC,KAAK,CAAC,QAAQ,CACjB;IAAA,EAAE,QAAQ,CAAC,IAAI,CAAC,CACjB,CAAC;AACJ,CAAC;AAED,0FAA0F;AAC1F,SAAS,uBAAuB,CAAC,KAAsB;IACrD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAChD,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC;QACzB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/D,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE;QACJ,QAAQ,EAAE,UAAU;KACrB;CACF,CAAC,CAAC","sourcesContent":["import React from 'react';\nimport { Animated, StyleSheet, type View, type ViewStyle } from 'react-native';\n\nimport type { GameEntityProps } from '../../../../types/gamePresentation';\nimport { useGameEntityAnimatedStyle } from '../../utils/useGameEntityAnimatedStyle';\nimport { useGameEntityMeasurement } from '../../utils/useGameEntityMeasurement';\n\n/*** Render one generic positioned game entity without owning gameplay semantics. */\nexport function GameEntity(props: GameEntityProps) {\n const elementRef = React.useRef<View | null>(null);\n const animatedStyle = useGameEntityAnimatedStyle(props);\n useGameEntityMeasurement(elementRef, props.measurementId);\n\n return (\n <Animated.View\n ref={elementRef}\n accessibilityLabel={props.accessibilityLabel}\n testID={props.testID}\n pointerEvents={\n props.interactionPolicy === 'passive' ? 'none' : (props.pointerEvents ?? 'auto')\n }\n style={[styles.root, createEntityStaticStyle(props), animatedStyle]}\n >\n {props.children}\n </Animated.View>\n );\n}\n\n/*** Convert non-animated GameEntity presentation props into a React Native view style. */\nfunction createEntityStaticStyle(props: GameEntityProps): ViewStyle {\n return {\n display: props.hidden === true ? 'none' : 'flex',\n position: 'absolute',\n zIndex: props.zIndex ?? 0,\n ...(props.height === undefined ? {} : { height: props.height }),\n ...(props.width === undefined ? {} : { width: props.width }),\n };\n}\n\nconst styles = StyleSheet.create({\n root: {\n position: 'absolute',\n },\n});\n"]}
1
+ {"version":3,"file":"GameEntity.js","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameEntity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAA6B,MAAM,cAAc,CAAC;AAG/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AACxF,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,oFAAoF;AACpF,MAAM,CAAC,MAAM,UAAU,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;AAE9D,2EAA2E;AAC3E,SAAS,eAAe,CAAC,KAAsB;IAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAc,IAAI,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACxD,wBAAwB,CAAC,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAE1D,OAAO,CACL,CAAC,QAAQ,CAAC,IAAI,CACZ,GAAG,CAAC,CAAC,UAAU,CAAC,CAChB,kBAAkB,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAC7C,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CACrB,aAAa,CAAC,CACZ,KAAK,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,IAAI,MAAM,CACjF,CAAC,CACD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,uBAAuB,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAEpE;MAAA,CAAC,KAAK,CAAC,QAAQ,CACjB;IAAA,EAAE,QAAQ,CAAC,IAAI,CAAC,CACjB,CAAC;AACJ,CAAC;AAED,0FAA0F;AAC1F,SAAS,uBAAuB,CAAC,KAAsB;IACrD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAChD,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC;QACzB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/D,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE;QACJ,QAAQ,EAAE,UAAU;KACrB;CACF,CAAC,CAAC","sourcesContent":["import React from 'react';\nimport { Animated, StyleSheet, type View, type ViewStyle } from 'react-native';\n\nimport type { GameEntityProps } from '../../../../types/gamePresentation';\nimport { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';\nimport { useGameEntityAnimatedStyle } from '../../utils/useGameEntityAnimatedStyle';\nimport { useGameEntityMeasurement } from '../../utils/useGameEntityMeasurement';\n\n/*** Render one generic positioned game entity without owning gameplay semantics. */\nexport const GameEntity = withZoraThemeScope(GameEntityInner);\n\n/*** Render the positioned entity inside the inherited ZORA theme scope. */\nfunction GameEntityInner(props: GameEntityProps) {\n const elementRef = React.useRef<View | null>(null);\n const animatedStyle = useGameEntityAnimatedStyle(props);\n useGameEntityMeasurement(elementRef, props.measurementId);\n\n return (\n <Animated.View\n ref={elementRef}\n accessibilityLabel={props.accessibilityLabel}\n testID={props.testID}\n pointerEvents={\n props.interactionPolicy === 'passive' ? 'none' : (props.pointerEvents ?? 'auto')\n }\n style={[styles.root, createEntityStaticStyle(props), animatedStyle]}\n >\n {props.children}\n </Animated.View>\n );\n}\n\n/*** Convert non-animated GameEntity presentation props into a React Native view style. */\nfunction createEntityStaticStyle(props: GameEntityProps): ViewStyle {\n return {\n display: props.hidden === true ? 'none' : 'flex',\n position: 'absolute',\n zIndex: props.zIndex ?? 0,\n ...(props.height === undefined ? {} : { height: props.height }),\n ...(props.width === undefined ? {} : { width: props.width }),\n };\n}\n\nconst styles = StyleSheet.create({\n root: {\n position: 'absolute',\n },\n});\n"]}
@@ -1,4 +1,4 @@
1
1
  import type { GameFieldProps } from '../../../../types/gamePresentation';
2
2
  /*** Render a bounded relative-positioning surface for game presentation content. */
3
- export declare function GameField({ children, aspectRatio, minHeight, fill, clip, accessibilityLabel, interactionPolicy, testID, }: GameFieldProps): import("react").JSX.Element;
3
+ export declare const GameField: (props: GameFieldProps) => React.ReactElement | null;
4
4
  //# sourceMappingURL=GameField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GameField.d.ts","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameField.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGzE,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,WAAW,EACX,SAAe,EACf,IAAY,EACZ,IAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,GACP,EAAE,cAAc,+BAoBhB"}
1
+ {"version":3,"file":"GameField.d.ts","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameField.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAIzE,oFAAoF;AACpF,eAAO,MAAM,SAAS,sDAAqC,CAAC"}
@@ -1,7 +1,10 @@
1
1
  import { StyleSheet } from 'react-native';
2
2
  import { View } from '../../../layout/public';
3
+ import { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';
3
4
  /*** Render a bounded relative-positioning surface for game presentation content. */
4
- export function GameField({ children, aspectRatio, minHeight = 320, fill = false, clip = true, accessibilityLabel, interactionPolicy, testID, }) {
5
+ export const GameField = withZoraThemeScope(GameFieldInner);
6
+ /*** Render the field inside the inherited ZORA theme scope. */
7
+ function GameFieldInner({ children, aspectRatio, minHeight = 320, fill = false, clip = true, accessibilityLabel, interactionPolicy, testID, }) {
5
8
  return (<View {...(accessibilityLabel === undefined ? {} : { accessibilityLabel })} {...(testID === undefined ? {} : { testID })} interactionPolicy={interactionPolicy} pointerEvents={interactionPolicy === 'passive' ? 'none' : 'auto'} style={[
6
9
  styles.root,
7
10
  clip ? styles.clipped : styles.overflowVisible,
@@ -1 +1 @@
1
- {"version":3,"file":"GameField.js","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameField.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,oFAAoF;AACpF,MAAM,UAAU,SAAS,CAAC,EACxB,QAAQ,EACR,WAAW,EACX,SAAS,GAAG,GAAG,EACf,IAAI,GAAG,KAAK,EACZ,IAAI,GAAG,IAAI,EACX,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,GACS;IACf,OAAO,CACL,CAAC,IAAI,CACH,IAAI,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CACrE,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAC7C,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,aAAa,CAAC,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CACjE,KAAK,CAAC,CAAC;YACL,MAAM,CAAC,IAAI;YACX,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;YAC9C,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC9B;gBACE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;gBACrD,SAAS;aACV;SACF,CAAC,CAEF;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE;QACP,QAAQ,EAAE,QAAQ;KACnB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,CAAC;KACR;IACD,eAAe,EAAE;QACf,QAAQ,EAAE,SAAS;KACpB;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,MAAM;KACd;CACF,CAAC,CAAC","sourcesContent":["import { StyleSheet } from 'react-native';\n\nimport type { GameFieldProps } from '../../../../types/gamePresentation';\nimport { View } from '../../../layout/public';\n\n/*** Render a bounded relative-positioning surface for game presentation content. */\nexport function GameField({\n children,\n aspectRatio,\n minHeight = 320,\n fill = false,\n clip = true,\n accessibilityLabel,\n interactionPolicy,\n testID,\n}: GameFieldProps) {\n return (\n <View\n {...(accessibilityLabel === undefined ? {} : { accessibilityLabel })}\n {...(testID === undefined ? {} : { testID })}\n interactionPolicy={interactionPolicy}\n pointerEvents={interactionPolicy === 'passive' ? 'none' : 'auto'}\n style={[\n styles.root,\n clip ? styles.clipped : styles.overflowVisible,\n fill ? styles.fill : undefined,\n {\n ...(aspectRatio === undefined ? {} : { aspectRatio }),\n minHeight,\n },\n ]}\n >\n {children}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n clipped: {\n overflow: 'hidden',\n },\n fill: {\n flex: 1,\n },\n overflowVisible: {\n overflow: 'visible',\n },\n root: {\n position: 'relative',\n width: '100%',\n },\n});\n"]}
1
+ {"version":3,"file":"GameField.js","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameField.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAExF,oFAAoF;AACpF,MAAM,CAAC,MAAM,SAAS,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;AAE5D,+DAA+D;AAC/D,SAAS,cAAc,CAAC,EACtB,QAAQ,EACR,WAAW,EACX,SAAS,GAAG,GAAG,EACf,IAAI,GAAG,KAAK,EACZ,IAAI,GAAG,IAAI,EACX,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,GACS;IACf,OAAO,CACL,CAAC,IAAI,CACH,IAAI,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CACrE,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAC7C,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,aAAa,CAAC,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CACjE,KAAK,CAAC,CAAC;YACL,MAAM,CAAC,IAAI;YACX,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;YAC9C,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC9B;gBACE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;gBACrD,SAAS;aACV;SACF,CAAC,CAEF;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE;QACP,QAAQ,EAAE,QAAQ;KACnB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,CAAC;KACR;IACD,eAAe,EAAE;QACf,QAAQ,EAAE,SAAS;KACpB;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,MAAM;KACd;CACF,CAAC,CAAC","sourcesContent":["import { StyleSheet } from 'react-native';\n\nimport type { GameFieldProps } from '../../../../types/gamePresentation';\nimport { View } from '../../../layout/public';\nimport { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';\n\n/*** Render a bounded relative-positioning surface for game presentation content. */\nexport const GameField = withZoraThemeScope(GameFieldInner);\n\n/*** Render the field inside the inherited ZORA theme scope. */\nfunction GameFieldInner({\n children,\n aspectRatio,\n minHeight = 320,\n fill = false,\n clip = true,\n accessibilityLabel,\n interactionPolicy,\n testID,\n}: GameFieldProps) {\n return (\n <View\n {...(accessibilityLabel === undefined ? {} : { accessibilityLabel })}\n {...(testID === undefined ? {} : { testID })}\n interactionPolicy={interactionPolicy}\n pointerEvents={interactionPolicy === 'passive' ? 'none' : 'auto'}\n style={[\n styles.root,\n clip ? styles.clipped : styles.overflowVisible,\n fill ? styles.fill : undefined,\n {\n ...(aspectRatio === undefined ? {} : { aspectRatio }),\n minHeight,\n },\n ]}\n >\n {children}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n clipped: {\n overflow: 'hidden',\n },\n fill: {\n flex: 1,\n },\n overflowVisible: {\n overflow: 'visible',\n },\n root: {\n position: 'relative',\n width: '100%',\n },\n});\n"]}
@@ -1,4 +1,4 @@
1
1
  import type { GameInputZoneProps } from '../../../../types/gamePresentation';
2
2
  /*** Capture pointer/touch geometry and optional keyboard input as normalized generic Game events. */
3
- export declare function GameInputZone({ x, y, width, height, zIndex, enabled, continuous, keyboardBindings, accessibilityLabel, interactionPolicy, testID, ...inputProps }: GameInputZoneProps): import("react").JSX.Element;
3
+ export declare const GameInputZone: (props: GameInputZoneProps) => React.ReactElement | null;
4
4
  //# sourceMappingURL=GameInputZone.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GameInputZone.d.ts","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameInputZone.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAI7E,qGAAqG;AACrG,wBAAgB,aAAa,CAAC,EAC5B,CAAK,EACL,CAAK,EACL,KAAW,EACX,MAAY,EACZ,MAAU,EACV,OAAc,EACd,UAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EACN,GAAG,UAAU,EACd,EAAE,kBAAkB,+BAkCpB"}
1
+ {"version":3,"file":"GameInputZone.d.ts","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameInputZone.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAK7E,qGAAqG;AACrG,eAAO,MAAM,aAAa,0DAAyC,CAAC"}
@@ -1,8 +1,11 @@
1
1
  import { Platform, StyleSheet, View } from 'react-native';
2
+ import { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';
2
3
  import { toGamePercentage } from '../../utils/toGamePercentage';
3
4
  import { useGameInputZoneResponder } from './useGameInputZoneResponder';
4
5
  /*** Capture pointer/touch geometry and optional keyboard input as normalized generic Game events. */
5
- export function GameInputZone({ x = 0, y = 0, width = 100, height = 100, zIndex = 0, enabled = true, continuous = true, keyboardBindings, accessibilityLabel, interactionPolicy, testID, ...inputProps }) {
6
+ export const GameInputZone = withZoraThemeScope(GameInputZoneInner);
7
+ /*** Capture game input inside the inherited ZORA theme scope. */
8
+ function GameInputZoneInner({ x = 0, y = 0, width = 100, height = 100, zIndex = 0, enabled = true, continuous = true, keyboardBindings, accessibilityLabel, interactionPolicy, testID, ...inputProps }) {
6
9
  const { dispatchKeyboard, dispatchPointer, handleLayout, shouldSetResponder } = useGameInputZoneResponder({
7
10
  ...inputProps,
8
11
  x,
@@ -1 +1 @@
1
- {"version":3,"file":"GameInputZone.js","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameInputZone.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Platform, StyleSheet, View, type ViewStyle } from 'react-native';\n\nimport type { GameInputZoneProps } from '../../../../types/gamePresentation';\nimport { toGamePercentage } from '../../utils/toGamePercentage';\nimport { useGameInputZoneResponder } from './useGameInputZoneResponder';\n\n/*** Capture pointer/touch geometry and optional keyboard input as normalized generic Game events. */\nexport function GameInputZone({\n x = 0,\n y = 0,\n width = 100,\n height = 100,\n zIndex = 0,\n enabled = true,\n continuous = true,\n keyboardBindings,\n accessibilityLabel,\n interactionPolicy,\n testID,\n ...inputProps\n}: GameInputZoneProps) {\n const { dispatchKeyboard, dispatchPointer, handleLayout, shouldSetResponder } =\n useGameInputZoneResponder({\n ...inputProps,\n x,\n y,\n width,\n height,\n enabled: enabled && interactionPolicy !== 'passive',\n interactionPolicy,\n continuous,\n ...(keyboardBindings === undefined ? {} : { keyboardBindings }),\n });\n const keyboardProps = createGameInputZoneKeyboardProps({\n dispatchKeyboard,\n enabled: enabled && interactionPolicy !== 'passive',\n keyboardBindings,\n });\n\n return (\n <View\n {...keyboardProps}\n {...(accessibilityLabel === undefined ? {} : { accessibilityLabel })}\n {...(testID === undefined ? {} : { testID })}\n {...(continuous\n ? { onResponderGrant: dispatchPointer, onResponderMove: dispatchPointer }\n : { onResponderRelease: dispatchPointer })}\n collapsable={false}\n onLayout={handleLayout}\n onStartShouldSetResponder={shouldSetResponder}\n pointerEvents={enabled && interactionPolicy !== 'passive' ? 'auto' : 'none'}\n style={createInputZoneStyle({ x, y, width, height, zIndex })}\n />\n );\n}\n\ninterface GameInputZoneKeyboardPropsInput {\n readonly dispatchKeyboard: (event: { readonly key: string; preventDefault(): void }) => void;\n readonly enabled: boolean;\n readonly keyboardBindings: GameInputZoneProps['keyboardBindings'];\n}\n\n/*** Add a focusable web keyboard target only when the input zone owns key bindings. */\nfunction createGameInputZoneKeyboardProps({\n dispatchKeyboard,\n enabled,\n keyboardBindings,\n}: GameInputZoneKeyboardPropsInput) {\n if (Platform.OS !== 'web' || !enabled || keyboardBindings === undefined) return {};\n if (keyboardBindings.length === 0) return {};\n\n return { onKeyDown: dispatchKeyboard, tabIndex: 0 as const };\n}\n\ninterface InputZoneStyleInput {\n readonly x: number;\n readonly y: number;\n readonly width: number;\n readonly height: number;\n readonly zIndex: number;\n}\n\n/*** Convert field-relative input-zone props into one absolute React Native style. */\nfunction createInputZoneStyle({ x, y, width, height, zIndex }: InputZoneStyleInput): ViewStyle {\n return {\n left: toGamePercentage(x),\n top: toGamePercentage(y),\n width: toGamePercentage(width),\n height: toGamePercentage(height),\n zIndex,\n ...styles.root,\n };\n}\n\nconst styles = StyleSheet.create({\n root: {\n position: 'absolute',\n },\n});\n"]}
1
+ {"version":3,"file":"GameInputZone.js","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameInputZone.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Platform, StyleSheet, View, type ViewStyle } from 'react-native';\n\nimport type { GameInputZoneProps } from '../../../../types/gamePresentation';\nimport { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';\nimport { toGamePercentage } from '../../utils/toGamePercentage';\nimport { useGameInputZoneResponder } from './useGameInputZoneResponder';\n\n/*** Capture pointer/touch geometry and optional keyboard input as normalized generic Game events. */\nexport const GameInputZone = withZoraThemeScope(GameInputZoneInner);\n\n/*** Capture game input inside the inherited ZORA theme scope. */\nfunction GameInputZoneInner({\n x = 0,\n y = 0,\n width = 100,\n height = 100,\n zIndex = 0,\n enabled = true,\n continuous = true,\n keyboardBindings,\n accessibilityLabel,\n interactionPolicy,\n testID,\n ...inputProps\n}: GameInputZoneProps) {\n const { dispatchKeyboard, dispatchPointer, handleLayout, shouldSetResponder } =\n useGameInputZoneResponder({\n ...inputProps,\n x,\n y,\n width,\n height,\n enabled: enabled && interactionPolicy !== 'passive',\n interactionPolicy,\n continuous,\n ...(keyboardBindings === undefined ? {} : { keyboardBindings }),\n });\n const keyboardProps = createGameInputZoneKeyboardProps({\n dispatchKeyboard,\n enabled: enabled && interactionPolicy !== 'passive',\n keyboardBindings,\n });\n\n return (\n <View\n {...keyboardProps}\n {...(accessibilityLabel === undefined ? {} : { accessibilityLabel })}\n {...(testID === undefined ? {} : { testID })}\n {...(continuous\n ? { onResponderGrant: dispatchPointer, onResponderMove: dispatchPointer }\n : { onResponderRelease: dispatchPointer })}\n collapsable={false}\n onLayout={handleLayout}\n onStartShouldSetResponder={shouldSetResponder}\n pointerEvents={enabled && interactionPolicy !== 'passive' ? 'auto' : 'none'}\n style={createInputZoneStyle({ x, y, width, height, zIndex })}\n />\n );\n}\n\ninterface GameInputZoneKeyboardPropsInput {\n readonly dispatchKeyboard: (event: { readonly key: string; preventDefault(): void }) => void;\n readonly enabled: boolean;\n readonly keyboardBindings: GameInputZoneProps['keyboardBindings'];\n}\n\n/*** Add a focusable web keyboard target only when the input zone owns key bindings. */\nfunction createGameInputZoneKeyboardProps({\n dispatchKeyboard,\n enabled,\n keyboardBindings,\n}: GameInputZoneKeyboardPropsInput) {\n if (Platform.OS !== 'web' || !enabled || keyboardBindings === undefined) return {};\n if (keyboardBindings.length === 0) return {};\n\n return { onKeyDown: dispatchKeyboard, tabIndex: 0 as const };\n}\n\ninterface InputZoneStyleInput {\n readonly x: number;\n readonly y: number;\n readonly width: number;\n readonly height: number;\n readonly zIndex: number;\n}\n\n/*** Convert field-relative input-zone props into one absolute React Native style. */\nfunction createInputZoneStyle({ x, y, width, height, zIndex }: InputZoneStyleInput): ViewStyle {\n return {\n left: toGamePercentage(x),\n top: toGamePercentage(y),\n width: toGamePercentage(width),\n height: toGamePercentage(height),\n zIndex,\n ...styles.root,\n };\n}\n\nconst styles = StyleSheet.create({\n root: {\n position: 'absolute',\n },\n});\n"]}
@@ -1,4 +1,5 @@
1
+ import React from 'react';
1
2
  import type { GameMeasurementProbeProps } from '../../../../types/gamePresentation';
2
3
  /*** Measure two registered game entities and dispatch only their raw rendered geometry. */
3
- export declare function GameMeasurementProbe({ sourceId, targetId, eventType, entityId, delayMs, enabled, interactionPolicy, }: GameMeasurementProbeProps): null;
4
+ export declare const GameMeasurementProbe: (props: GameMeasurementProbeProps) => React.ReactElement | null;
4
5
  //# sourceMappingURL=GameMeasurementProbe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GameMeasurementProbe.d.ts","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameMeasurementProbe.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAKpF,2FAA2F;AAC3F,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,QAAQ,EACR,SAA8B,EAC9B,QAAQ,EACR,OAAW,EACX,OAAc,EACd,iBAAiB,GAClB,EAAE,yBAAyB,QAqC3B"}
1
+ {"version":3,"file":"GameMeasurementProbe.d.ts","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameMeasurementProbe.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAMpF,2FAA2F;AAC3F,eAAO,MAAM,oBAAoB,iEAAgD,CAAC"}
@@ -1,8 +1,11 @@
1
1
  import React from 'react';
2
+ import { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';
2
3
  import { GameRuntimeContext } from '../../composition/GameRuntimeContext';
3
4
  import { createGameMeasurementEvent } from './createGameMeasurementEvent';
4
5
  /*** Measure two registered game entities and dispatch only their raw rendered geometry. */
5
- export function GameMeasurementProbe({ sourceId, targetId, eventType = 'game.measurement', entityId, delayMs = 0, enabled = true, interactionPolicy, }) {
6
+ export const GameMeasurementProbe = withZoraThemeScope(GameMeasurementProbeInner);
7
+ /*** Measure geometry inside the inherited ZORA theme scope. */
8
+ function GameMeasurementProbeInner({ sourceId, targetId, eventType = 'game.measurement', entityId, delayMs = 0, enabled = true, interactionPolicy, }) {
6
9
  const runtime = React.useContext(GameRuntimeContext);
7
10
  if (runtime === null)
8
11
  throw new Error('GameMeasurementProbe must be rendered inside Game.');
@@ -1 +1 @@
1
- {"version":3,"file":"GameMeasurementProbe.js","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameMeasurementProbe.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,2FAA2F;AAC3F,MAAM,UAAU,oBAAoB,CAAC,EACnC,QAAQ,EACR,QAAQ,EACR,SAAS,GAAG,kBAAkB,EAC9B,QAAQ,EACR,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,IAAI,EACd,iBAAiB,GACS;IAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAE5F,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,OAAO,IAAI,iBAAiB,KAAK,SAAS,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS;YACxF,OAAO,SAAS,CAAC;QAEnB,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EAAE;YACH,KAAK,uBAAuB,CAAC;gBAC3B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ;gBACR,QAAQ;gBACR,SAAS;gBACT,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;aAChD,CAAC,CAAC;QACL,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CACrB,CAAC;QAEF,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE;QACD,OAAO;QACP,OAAO;QACP,iBAAiB;QACjB,QAAQ;QACR,SAAS;QACT,OAAO,CAAC,QAAQ;QAChB,OAAO,CAAC,iBAAiB;QACzB,OAAO,CAAC,OAAO;QACf,QAAQ;QACR,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC;AAWD,sFAAsF;AACtF,KAAK,UAAU,uBAAuB,CAAC,KAAmC;IACxE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACzC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;KAC9B,CAAC,CAAC;IACH,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO;IAEzD,KAAK,CAAC,QAAQ,CACZ,0BAA0B,CAAC;QACzB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrE,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM;QACN,MAAM;KACP,CAAC,CACH,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\n\nimport type { GameMeasurementProbeProps } from '../../../../types/gamePresentation';\nimport type { GameRuntimeContextValue } from '../../../../types/gameRuntime';\nimport { GameRuntimeContext } from '../../composition/GameRuntimeContext';\nimport { createGameMeasurementEvent } from './createGameMeasurementEvent';\n\n/*** Measure two registered game entities and dispatch only their raw rendered geometry. */\nexport function GameMeasurementProbe({\n sourceId,\n targetId,\n eventType = 'game.measurement',\n entityId,\n delayMs = 0,\n enabled = true,\n interactionPolicy,\n}: GameMeasurementProbeProps) {\n const runtime = React.useContext(GameRuntimeContext);\n if (runtime === null) throw new Error('GameMeasurementProbe must be rendered inside Game.');\n\n React.useEffect(() => {\n if (!enabled || interactionPolicy === 'passive' || runtime.interactionPolicy === 'passive')\n return undefined;\n\n const timer = setTimeout(\n () => {\n void dispatchGameMeasurement({\n dispatch: runtime.dispatch,\n measure: runtime.measure,\n sourceId,\n targetId,\n eventType,\n ...(entityId === undefined ? {} : { entityId }),\n });\n },\n Math.max(0, delayMs),\n );\n\n return () => clearTimeout(timer);\n }, [\n delayMs,\n enabled,\n interactionPolicy,\n entityId,\n eventType,\n runtime.dispatch,\n runtime.interactionPolicy,\n runtime.measure,\n sourceId,\n targetId,\n ]);\n\n return null;\n}\n\ninterface DispatchGameMeasurementInput {\n readonly dispatch: GameRuntimeContextValue['dispatch'];\n readonly measure: GameRuntimeContextValue['measure'];\n readonly sourceId: string;\n readonly targetId: string;\n readonly eventType: string;\n readonly entityId?: string;\n}\n\n/*** Resolve both registered entity measurements before dispatching one Game event. */\nasync function dispatchGameMeasurement(input: DispatchGameMeasurementInput): Promise<void> {\n const [source, target] = await Promise.all([\n input.measure(input.sourceId),\n input.measure(input.targetId),\n ]);\n if (source === undefined || target === undefined) return;\n\n input.dispatch(\n createGameMeasurementEvent({\n eventType: input.eventType,\n ...(input.entityId === undefined ? {} : { entityId: input.entityId }),\n sourceId: input.sourceId,\n targetId: input.targetId,\n source,\n target,\n }),\n );\n}\n"]}
1
+ {"version":3,"file":"GameMeasurementProbe.js","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameMeasurementProbe.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,2FAA2F;AAC3F,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,yBAAyB,CAAC,CAAC;AAElF,+DAA+D;AAC/D,SAAS,yBAAyB,CAAC,EACjC,QAAQ,EACR,QAAQ,EACR,SAAS,GAAG,kBAAkB,EAC9B,QAAQ,EACR,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,IAAI,EACd,iBAAiB,GACS;IAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAE5F,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,OAAO,IAAI,iBAAiB,KAAK,SAAS,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS;YACxF,OAAO,SAAS,CAAC;QAEnB,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EAAE;YACH,KAAK,uBAAuB,CAAC;gBAC3B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ;gBACR,QAAQ;gBACR,SAAS;gBACT,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;aAChD,CAAC,CAAC;QACL,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CACrB,CAAC;QAEF,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE;QACD,OAAO;QACP,OAAO;QACP,iBAAiB;QACjB,QAAQ;QACR,SAAS;QACT,OAAO,CAAC,QAAQ;QAChB,OAAO,CAAC,iBAAiB;QACzB,OAAO,CAAC,OAAO;QACf,QAAQ;QACR,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC;AAWD,sFAAsF;AACtF,KAAK,UAAU,uBAAuB,CAAC,KAAmC;IACxE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACzC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;KAC9B,CAAC,CAAC;IACH,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO;IAEzD,KAAK,CAAC,QAAQ,CACZ,0BAA0B,CAAC;QACzB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrE,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM;QACN,MAAM;KACP,CAAC,CACH,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\n\nimport type { GameMeasurementProbeProps } from '../../../../types/gamePresentation';\nimport type { GameRuntimeContextValue } from '../../../../types/gameRuntime';\nimport { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';\nimport { GameRuntimeContext } from '../../composition/GameRuntimeContext';\nimport { createGameMeasurementEvent } from './createGameMeasurementEvent';\n\n/*** Measure two registered game entities and dispatch only their raw rendered geometry. */\nexport const GameMeasurementProbe = withZoraThemeScope(GameMeasurementProbeInner);\n\n/*** Measure geometry inside the inherited ZORA theme scope. */\nfunction GameMeasurementProbeInner({\n sourceId,\n targetId,\n eventType = 'game.measurement',\n entityId,\n delayMs = 0,\n enabled = true,\n interactionPolicy,\n}: GameMeasurementProbeProps) {\n const runtime = React.useContext(GameRuntimeContext);\n if (runtime === null) throw new Error('GameMeasurementProbe must be rendered inside Game.');\n\n React.useEffect(() => {\n if (!enabled || interactionPolicy === 'passive' || runtime.interactionPolicy === 'passive')\n return undefined;\n\n const timer = setTimeout(\n () => {\n void dispatchGameMeasurement({\n dispatch: runtime.dispatch,\n measure: runtime.measure,\n sourceId,\n targetId,\n eventType,\n ...(entityId === undefined ? {} : { entityId }),\n });\n },\n Math.max(0, delayMs),\n );\n\n return () => clearTimeout(timer);\n }, [\n delayMs,\n enabled,\n interactionPolicy,\n entityId,\n eventType,\n runtime.dispatch,\n runtime.interactionPolicy,\n runtime.measure,\n sourceId,\n targetId,\n ]);\n\n return null;\n}\n\ninterface DispatchGameMeasurementInput {\n readonly dispatch: GameRuntimeContextValue['dispatch'];\n readonly measure: GameRuntimeContextValue['measure'];\n readonly sourceId: string;\n readonly targetId: string;\n readonly eventType: string;\n readonly entityId?: string;\n}\n\n/*** Resolve both registered entity measurements before dispatching one Game event. */\nasync function dispatchGameMeasurement(input: DispatchGameMeasurementInput): Promise<void> {\n const [source, target] = await Promise.all([\n input.measure(input.sourceId),\n input.measure(input.targetId),\n ]);\n if (source === undefined || target === undefined) return;\n\n input.dispatch(\n createGameMeasurementEvent({\n eventType: input.eventType,\n ...(input.entityId === undefined ? {} : { entityId: input.entityId }),\n sourceId: input.sourceId,\n targetId: input.targetId,\n source,\n target,\n }),\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
1
  import type { GameOverlayProps } from '../../../../types/gamePresentation';
2
2
  /*** Render an absolute game presentation layer for HUD, feedback, and phase content. */
3
- export declare function GameOverlay({ children, placement, blocking, padding, accessibilityLabel, interactionPolicy, testID, }: GameOverlayProps): import("react").JSX.Element;
3
+ export declare const GameOverlay: (props: GameOverlayProps) => React.ReactElement | null;
4
4
  //# sourceMappingURL=GameOverlay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GameOverlay.d.ts","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameOverlay.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAwB,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAGjG,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAkB,EAClB,QAAgB,EAChB,OAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,GACP,EAAE,gBAAgB,+BAWlB"}
1
+ {"version":3,"file":"GameOverlay.d.ts","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameOverlay.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAwB,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAIjG,wFAAwF;AACxF,eAAO,MAAM,WAAW,wDAAuC,CAAC"}
@@ -1,7 +1,10 @@
1
1
  import { StyleSheet } from 'react-native';
2
2
  import { View } from '../../../layout/public';
3
+ import { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';
3
4
  /*** Render an absolute game presentation layer for HUD, feedback, and phase content. */
4
- export function GameOverlay({ children, placement = 'fill', blocking = false, padding = 0, accessibilityLabel, interactionPolicy, testID, }) {
5
+ export const GameOverlay = withZoraThemeScope(GameOverlayInner);
6
+ /*** Render the overlay inside the inherited ZORA theme scope. */
7
+ function GameOverlayInner({ children, placement = 'fill', blocking = false, padding = 0, accessibilityLabel, interactionPolicy, testID, }) {
5
8
  return (<View {...(accessibilityLabel === undefined ? {} : { accessibilityLabel })} {...(testID === undefined ? {} : { testID })} pointerEvents={interactionPolicy === 'passive' ? 'none' : blocking ? 'auto' : 'box-none'} style={[styles.root, resolvePlacementStyle(placement), { padding }]}>
6
9
  {children}
7
10
  </View>);
@@ -1 +1 @@
1
- {"version":3,"file":"GameOverlay.js","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,cAAc,CAAC;AAG1D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,wFAAwF;AACxF,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,GAAG,MAAM,EAClB,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,CAAC,EACX,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,GACW;IACjB,OAAO,CACL,CAAC,IAAI,CACH,IAAI,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CACrE,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAC7C,aAAa,CAAC,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CACzF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAEpE;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,SAAS,qBAAqB,CAAC,SAA+B;IAC5D,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;QAC5D,KAAK,KAAK;YACR,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;QAChE,KAAK,QAAQ;YACX,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;QAC9D,KAAK,UAAU;YACb,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;QACpE,KAAK,WAAW;YACd,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;QAClE,KAAK,aAAa;YAChB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;QAClE,KAAK,cAAc;YACjB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;QAChE,KAAK,MAAM;YACT,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;KACP;CACF,CAAC,CAAC","sourcesContent":["import { StyleSheet, type ViewStyle } from 'react-native';\n\nimport type { GameOverlayPlacement, GameOverlayProps } from '../../../../types/gamePresentation';\nimport { View } from '../../../layout/public';\n\n/*** Render an absolute game presentation layer for HUD, feedback, and phase content. */\nexport function GameOverlay({\n children,\n placement = 'fill',\n blocking = false,\n padding = 0,\n accessibilityLabel,\n interactionPolicy,\n testID,\n}: GameOverlayProps) {\n return (\n <View\n {...(accessibilityLabel === undefined ? {} : { accessibilityLabel })}\n {...(testID === undefined ? {} : { testID })}\n pointerEvents={interactionPolicy === 'passive' ? 'none' : blocking ? 'auto' : 'box-none'}\n style={[styles.root, resolvePlacementStyle(placement), { padding }]}\n >\n {children}\n </View>\n );\n}\n\n/*** Resolve overlay alignment without coupling layout to any game genre or rule. */\nfunction resolvePlacementStyle(placement: GameOverlayPlacement): ViewStyle {\n switch (placement) {\n case 'center':\n return { alignItems: 'center', justifyContent: 'center' };\n case 'top':\n return { alignItems: 'center', justifyContent: 'flex-start' };\n case 'bottom':\n return { alignItems: 'center', justifyContent: 'flex-end' };\n case 'top-left':\n return { alignItems: 'flex-start', justifyContent: 'flex-start' };\n case 'top-right':\n return { alignItems: 'flex-end', justifyContent: 'flex-start' };\n case 'bottom-left':\n return { alignItems: 'flex-start', justifyContent: 'flex-end' };\n case 'bottom-right':\n return { alignItems: 'flex-end', justifyContent: 'flex-end' };\n case 'fill':\n return {};\n }\n}\n\nconst styles = StyleSheet.create({\n root: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n },\n});\n"]}
1
+ {"version":3,"file":"GameOverlay.js","sourceRoot":"","sources":["../../../../../src/features/game/adapters/inbound/GameOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,cAAc,CAAC;AAG1D,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAExF,wFAAwF;AACxF,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;AAEhE,iEAAiE;AACjE,SAAS,gBAAgB,CAAC,EACxB,QAAQ,EACR,SAAS,GAAG,MAAM,EAClB,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,CAAC,EACX,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,GACW;IACjB,OAAO,CACL,CAAC,IAAI,CACH,IAAI,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CACrE,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAC7C,aAAa,CAAC,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CACzF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAEpE;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,SAAS,qBAAqB,CAAC,SAA+B;IAC5D,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;QAC5D,KAAK,KAAK;YACR,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;QAChE,KAAK,QAAQ;YACX,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;QAC9D,KAAK,UAAU;YACb,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;QACpE,KAAK,WAAW;YACd,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;QAClE,KAAK,aAAa;YAChB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;QAClE,KAAK,cAAc;YACjB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;QAChE,KAAK,MAAM;YACT,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;KACP;CACF,CAAC,CAAC","sourcesContent":["import { StyleSheet, type ViewStyle } from 'react-native';\n\nimport type { GameOverlayPlacement, GameOverlayProps } from '../../../../types/gamePresentation';\nimport { View } from '../../../layout/public';\nimport { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';\n\n/*** Render an absolute game presentation layer for HUD, feedback, and phase content. */\nexport const GameOverlay = withZoraThemeScope(GameOverlayInner);\n\n/*** Render the overlay inside the inherited ZORA theme scope. */\nfunction GameOverlayInner({\n children,\n placement = 'fill',\n blocking = false,\n padding = 0,\n accessibilityLabel,\n interactionPolicy,\n testID,\n}: GameOverlayProps) {\n return (\n <View\n {...(accessibilityLabel === undefined ? {} : { accessibilityLabel })}\n {...(testID === undefined ? {} : { testID })}\n pointerEvents={interactionPolicy === 'passive' ? 'none' : blocking ? 'auto' : 'box-none'}\n style={[styles.root, resolvePlacementStyle(placement), { padding }]}\n >\n {children}\n </View>\n );\n}\n\n/*** Resolve overlay alignment without coupling layout to any game genre or rule. */\nfunction resolvePlacementStyle(placement: GameOverlayPlacement): ViewStyle {\n switch (placement) {\n case 'center':\n return { alignItems: 'center', justifyContent: 'center' };\n case 'top':\n return { alignItems: 'center', justifyContent: 'flex-start' };\n case 'bottom':\n return { alignItems: 'center', justifyContent: 'flex-end' };\n case 'top-left':\n return { alignItems: 'flex-start', justifyContent: 'flex-start' };\n case 'top-right':\n return { alignItems: 'flex-end', justifyContent: 'flex-start' };\n case 'bottom-left':\n return { alignItems: 'flex-start', justifyContent: 'flex-end' };\n case 'bottom-right':\n return { alignItems: 'flex-end', justifyContent: 'flex-end' };\n case 'fill':\n return {};\n }\n}\n\nconst styles = StyleSheet.create({\n root: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n },\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ZORA_COMPONENT_REGISTRY.d.ts","sourceRoot":"","sources":["../../../src/features/registry/ZORA_COMPONENT_REGISTRY.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAqNlE,eAAO,MAAM,uBAAuB,EAAE,qBAAgD,CAAC"}
1
+ {"version":3,"file":"ZORA_COMPONENT_REGISTRY.d.ts","sourceRoot":"","sources":["../../../src/features/registry/ZORA_COMPONENT_REGISTRY.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAuNlE,eAAO,MAAM,uBAAuB,EAAE,qBAAgD,CAAC"}