@ankhorage/zora 25.2.1 → 25.4.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 (252) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +2 -1
  3. package/dist/features/grid-rulers/adapters/inbound/GridLineOverlay.d.ts +5 -0
  4. package/dist/features/grid-rulers/adapters/inbound/GridLineOverlay.d.ts.map +1 -0
  5. package/dist/features/grid-rulers/adapters/inbound/GridLineOverlay.js +69 -0
  6. package/dist/features/grid-rulers/adapters/inbound/GridLineOverlay.js.map +1 -0
  7. package/dist/features/grid-rulers/adapters/inbound/GridRuler.d.ts +5 -0
  8. package/dist/features/grid-rulers/adapters/inbound/GridRuler.d.ts.map +1 -0
  9. package/dist/features/grid-rulers/adapters/inbound/GridRuler.js +59 -0
  10. package/dist/features/grid-rulers/adapters/inbound/GridRuler.js.map +1 -0
  11. package/dist/features/grid-rulers/application/projectGridRulerPosition.d.ts +4 -0
  12. package/dist/features/grid-rulers/application/projectGridRulerPosition.d.ts.map +1 -0
  13. package/dist/features/grid-rulers/application/projectGridRulerPosition.js +10 -0
  14. package/dist/features/grid-rulers/application/projectGridRulerPosition.js.map +1 -0
  15. package/dist/features/grid-rulers/application/resolveGridRulerMarks.d.ts +5 -0
  16. package/dist/features/grid-rulers/application/resolveGridRulerMarks.d.ts.map +1 -0
  17. package/dist/features/grid-rulers/application/resolveGridRulerMarks.js +22 -0
  18. package/dist/features/grid-rulers/application/resolveGridRulerMarks.js.map +1 -0
  19. package/dist/features/grid-rulers/meta.d.ts +21 -0
  20. package/dist/features/grid-rulers/meta.d.ts.map +1 -0
  21. package/dist/features/grid-rulers/meta.js +22 -0
  22. package/dist/features/grid-rulers/meta.js.map +1 -0
  23. package/dist/features/grid-rulers/public.d.ts +5 -0
  24. package/dist/features/grid-rulers/public.d.ts.map +1 -0
  25. package/dist/features/grid-rulers/public.js +4 -0
  26. package/dist/features/grid-rulers/public.js.map +1 -0
  27. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.d.ts.map +1 -1
  28. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.js +5 -0
  29. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.js.map +1 -1
  30. package/dist/features/registry/componentMeta.d.ts.map +1 -1
  31. package/dist/features/registry/componentMeta.js +5 -0
  32. package/dist/features/registry/componentMeta.js.map +1 -1
  33. package/dist/features/spatial-grid/adapters/inbound/SpatialGrid.d.ts +5 -0
  34. package/dist/features/spatial-grid/adapters/inbound/SpatialGrid.d.ts.map +1 -0
  35. package/dist/features/spatial-grid/adapters/inbound/SpatialGrid.js +38 -0
  36. package/dist/features/spatial-grid/adapters/inbound/SpatialGrid.js.map +1 -0
  37. package/dist/features/spatial-grid/application/sortSpatialGridItems.d.ts +4 -0
  38. package/dist/features/spatial-grid/application/sortSpatialGridItems.d.ts.map +1 -0
  39. package/dist/features/spatial-grid/application/sortSpatialGridItems.js +8 -0
  40. package/dist/features/spatial-grid/application/sortSpatialGridItems.js.map +1 -0
  41. package/dist/features/spatial-grid/meta.d.ts +11 -0
  42. package/dist/features/spatial-grid/meta.d.ts.map +1 -0
  43. package/dist/features/spatial-grid/meta.js +11 -0
  44. package/dist/features/spatial-grid/meta.js.map +1 -0
  45. package/dist/features/spatial-grid/public.d.ts +3 -0
  46. package/dist/features/spatial-grid/public.d.ts.map +1 -0
  47. package/dist/features/spatial-grid/public.js +2 -0
  48. package/dist/features/spatial-grid/public.js.map +1 -0
  49. package/dist/index.d.ts +4 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +2 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/types/grid-rulers.d.ts +48 -0
  54. package/dist/types/grid-rulers.d.ts.map +1 -0
  55. package/dist/types/grid-rulers.js +2 -0
  56. package/dist/types/grid-rulers.js.map +1 -0
  57. package/dist/types/spatial-grid.d.ts +41 -0
  58. package/dist/types/spatial-grid.d.ts.map +1 -0
  59. package/dist/types/spatial-grid.js +2 -0
  60. package/dist/types/spatial-grid.js.map +1 -0
  61. package/package.json +3 -3
  62. package/src/features/grid-rulers/adapters/inbound/GridLineOverlay.tsx +123 -0
  63. package/src/features/grid-rulers/adapters/inbound/GridRuler.tsx +96 -0
  64. package/src/features/grid-rulers/adapters/inbound/GridRulers.test.tsx +162 -0
  65. package/src/features/grid-rulers/application/projectGridRulerPosition.ts +19 -0
  66. package/src/features/grid-rulers/application/resolveGridRulerMarks.test.ts +90 -0
  67. package/src/features/grid-rulers/application/resolveGridRulerMarks.ts +39 -0
  68. package/src/features/grid-rulers/meta.ts +26 -0
  69. package/src/features/grid-rulers/public.ts +10 -0
  70. package/src/features/registry/ZORA_COMPONENT_REGISTRY.ts +5 -0
  71. package/src/features/registry/componentMeta.ts +5 -0
  72. package/src/features/spatial-grid/adapters/inbound/SpatialGrid.test.tsx +248 -0
  73. package/src/features/spatial-grid/adapters/inbound/SpatialGrid.tsx +112 -0
  74. package/src/features/spatial-grid/application/sortSpatialGridItems.test.ts +42 -0
  75. package/src/features/spatial-grid/application/sortSpatialGridItems.ts +14 -0
  76. package/src/features/spatial-grid/meta.ts +12 -0
  77. package/src/features/spatial-grid/public.ts +6 -0
  78. package/src/index.ts +14 -0
  79. package/src/types/grid-rulers.ts +59 -0
  80. package/src/types/spatial-grid.ts +44 -0
  81. package/web-dist/chunks/{Accordion-mh67wb34.js → Accordion-090y18cv.js} +2 -2
  82. package/web-dist/chunks/{Accordion-7yazfxr6.js → Accordion-3d4wkzg7.js} +4 -4
  83. package/web-dist/chunks/{Accordion-ndf3jqhb.js → Accordion-40tenzcg.js} +3 -3
  84. package/web-dist/chunks/{Accordion-cbfa2b8j.js → Accordion-4s68t3h7.js} +5 -5
  85. package/web-dist/chunks/{Accordion-7asr7vb0.js → Accordion-4zqd7twp.js} +4 -4
  86. package/web-dist/chunks/{Accordion-sdcfa14w.js → Accordion-5g05kfmx.js} +3 -3
  87. package/web-dist/chunks/Accordion-60wn9xn9.js +201 -0
  88. package/web-dist/chunks/{Accordion-wgejzesa.js → Accordion-61ntvh14.js} +3 -3
  89. package/web-dist/chunks/{Accordion-q09fjenx.js → Accordion-6rrqpb2h.js} +1 -1
  90. package/web-dist/chunks/{Accordion-mej71qnw.js → Accordion-a4cma5b6.js} +2 -2
  91. package/web-dist/chunks/{Accordion-9dqkq9am.js → Accordion-ejx5gcf9.js} +8 -8
  92. package/web-dist/chunks/{Accordion-pe66x9cv.js → Accordion-ewf1zen9.js} +4 -4
  93. package/web-dist/chunks/{Accordion-xvzrx6bh.js → Accordion-fjxcn6g9.js} +7 -7
  94. package/web-dist/chunks/{Accordion-teg40mpt.js → Accordion-fmzxat3v.js} +3 -3
  95. package/web-dist/chunks/{Accordion-016wvwpg.js → Accordion-h3y8qev2.js} +1 -1
  96. package/web-dist/chunks/{Accordion-t0hbez90.js → Accordion-h7zsx9eg.js} +2 -2
  97. package/web-dist/chunks/{Accordion-ch4q5w0z.js → Accordion-jnc315h7.js} +1 -1
  98. package/web-dist/chunks/{Accordion-fkc50r9z.js → Accordion-kjtcbe09.js} +2 -2
  99. package/web-dist/chunks/{Accordion-tmrjy46p.js → Accordion-nssr5gep.js} +1 -1
  100. package/web-dist/chunks/{Accordion-54k0ncs3.js → Accordion-nxsda1my.js} +5 -73
  101. package/web-dist/chunks/{Accordion-ntndskbj.js → Accordion-pvj5npzc.js} +2 -2
  102. package/web-dist/chunks/{Accordion-ggwxv6k3.js → Accordion-r1cj2w9e.js} +2 -2
  103. package/web-dist/chunks/Accordion-r2w86rwv.js +209 -0
  104. package/web-dist/chunks/{Accordion-kkr7xfh2.js → Accordion-s3d6g59s.js} +4 -4
  105. package/web-dist/chunks/{Accordion-5ga4549x.js → Accordion-sp4k08kw.js} +3 -3
  106. package/web-dist/chunks/{Accordion-1p9r2ack.js → Accordion-sy1cc5my.js} +2 -2
  107. package/web-dist/chunks/{Accordion-hmhdwvqp.js → Accordion-tqpsmdrk.js} +3 -3
  108. package/web-dist/chunks/{Accordion-fzkrrc4z.js → Accordion-v0grdh6q.js} +1 -1
  109. package/web-dist/chunks/{Accordion-ajawc6nq.js → Accordion-zt9yghdz.js} +3 -3
  110. package/web-dist/components/accordion/Accordion.js +4 -4
  111. package/web-dist/components/accordion-item/AccordionItem.js +4 -4
  112. package/web-dist/components/app-bar/AppBar.js +6 -6
  113. package/web-dist/components/app-header/AppHeader.js +6 -6
  114. package/web-dist/components/app-shell/AppShell.js +1 -1
  115. package/web-dist/components/auth-screen/AuthScreen.js +9 -9
  116. package/web-dist/components/avatar/Avatar.js +4 -4
  117. package/web-dist/components/avatar-group/AvatarGroup.js +4 -4
  118. package/web-dist/components/badge/Badge.js +1 -1
  119. package/web-dist/components/barcode-scanner-view/BarcodeScannerView.js +9 -9
  120. package/web-dist/components/bottom-sheet/BottomSheet.js +2 -2
  121. package/web-dist/components/bottom-sheet-flat-list/BottomSheetFlatList.js +2 -2
  122. package/web-dist/components/bottom-sheet-scroll-view/BottomSheetScrollView.js +2 -2
  123. package/web-dist/components/bottom-sheet-section-list/BottomSheetSectionList.js +2 -2
  124. package/web-dist/components/bottom-sheet-view/BottomSheetView.js +2 -2
  125. package/web-dist/components/bottom-sheet-virtualized-list/BottomSheetVirtualizedList.js +2 -2
  126. package/web-dist/components/breadcrumbs/Breadcrumbs.js +4 -4
  127. package/web-dist/components/button/Button.js +2 -2
  128. package/web-dist/components/button-group/ButtonGroup.js +2 -2
  129. package/web-dist/components/camera-permission-view/CameraPermissionView.js +9 -9
  130. package/web-dist/components/card/Card.js +8 -8
  131. package/web-dist/components/card-back/CardBack.js +1 -1
  132. package/web-dist/components/card-hand/CardHand.js +1 -1
  133. package/web-dist/components/chat-list-item/ChatListItem.js +6 -6
  134. package/web-dist/components/checkbox/Checkbox.js +3 -3
  135. package/web-dist/components/checkbox-group/CheckboxGroup.js +3 -3
  136. package/web-dist/components/chess-board/ChessBoard.js +1 -1
  137. package/web-dist/components/chip/Chip.js +4 -4
  138. package/web-dist/components/chip-group/ChipGroup.js +4 -4
  139. package/web-dist/components/collection-editor/CollectionEditor.js +8 -8
  140. package/web-dist/components/content-rail/ContentRail.js +3 -3
  141. package/web-dist/components/data-table/DataTable.js +13 -13
  142. package/web-dist/components/date-picker/DatePicker.js +4 -4
  143. package/web-dist/components/dialog/Dialog.js +3 -3
  144. package/web-dist/components/divider/Divider.js +1 -1
  145. package/web-dist/components/empty-state/EmptyState.js +9 -9
  146. package/web-dist/components/explorer/Explorer.js +6 -6
  147. package/web-dist/components/field/Field.js +3 -3
  148. package/web-dist/components/file-explorer/FileExplorer.js +6 -6
  149. package/web-dist/components/flat-list/FlatList.js +4 -4
  150. package/web-dist/components/forgot-password-form/ForgotPasswordForm.js +9 -9
  151. package/web-dist/components/form/Form.js +5 -5
  152. package/web-dist/components/form-actions/FormActions.js +5 -5
  153. package/web-dist/components/form-error/FormError.js +5 -5
  154. package/web-dist/components/game/Game.js +2 -2
  155. package/web-dist/components/game-entity/GameEntity.js +2 -2
  156. package/web-dist/components/game-field/GameField.js +2 -2
  157. package/web-dist/components/game-input-zone/GameInputZone.js +2 -2
  158. package/web-dist/components/game-measurement-probe/GameMeasurementProbe.js +2 -2
  159. package/web-dist/components/game-overlay/GameOverlay.js +2 -2
  160. package/web-dist/components/gradient/Gradient.js +2 -2
  161. package/web-dist/components/gradient-renderer-provider/GradientRendererProvider.js +2 -2
  162. package/web-dist/components/grid/Grid.js +1 -1
  163. package/web-dist/components/grid-line-overlay/GridLineOverlay.d.ts +4 -0
  164. package/web-dist/components/grid-line-overlay/GridLineOverlay.js +13 -0
  165. package/web-dist/components/grid-line-overlay/index.d.ts +1 -0
  166. package/web-dist/components/grid-line-overlay/index.js +2 -0
  167. package/web-dist/components/grid-ruler/GridRuler.d.ts +4 -0
  168. package/web-dist/components/grid-ruler/GridRuler.js +13 -0
  169. package/web-dist/components/grid-ruler/index.d.ts +1 -0
  170. package/web-dist/components/grid-ruler/index.js +2 -0
  171. package/web-dist/components/grid-view/GridView.js +1 -1
  172. package/web-dist/components/heading/Heading.js +1 -1
  173. package/web-dist/components/hero/Hero.js +8 -8
  174. package/web-dist/components/icon/Icon.js +1 -1
  175. package/web-dist/components/icon-button/IconButton.js +2 -2
  176. package/web-dist/components/image/Image.js +3 -3
  177. package/web-dist/components/keyboard-avoiding-view/KeyboardAvoidingView.js +1 -1
  178. package/web-dist/components/list/List.js +4 -4
  179. package/web-dist/components/list-item/ListItem.js +4 -4
  180. package/web-dist/components/list-section/ListSection.js +4 -4
  181. package/web-dist/components/media-card/MediaCard.js +8 -8
  182. package/web-dist/components/media-explorer/MediaExplorer.js +6 -6
  183. package/web-dist/components/message-bubble/MessageBubble.js +6 -6
  184. package/web-dist/components/metric-card/MetricCard.js +8 -8
  185. package/web-dist/components/missing-element/MissingElement.js +3 -3
  186. package/web-dist/components/o-auth-provider-button/OAuthProviderButton.js +9 -9
  187. package/web-dist/components/o-auth-provider-list/OAuthProviderList.js +9 -9
  188. package/web-dist/components/opening-book/OpeningBook.js +1 -1
  189. package/web-dist/components/otp-form/OtpForm.js +9 -9
  190. package/web-dist/components/pagination/Pagination.js +3 -3
  191. package/web-dist/components/palette-item/PaletteItem.js +8 -8
  192. package/web-dist/components/playing-card/PlayingCard.js +1 -1
  193. package/web-dist/components/poker-training-table/PokerTrainingTable.js +1 -1
  194. package/web-dist/components/popover-menu/PopoverMenu.js +3 -3
  195. package/web-dist/components/post-card/PostCard.js +8 -8
  196. package/web-dist/components/product-card/ProductCard.js +8 -8
  197. package/web-dist/components/progress/Progress.js +3 -3
  198. package/web-dist/components/progress-ring/ProgressRing.js +3 -3
  199. package/web-dist/components/radio/Radio.js +4 -4
  200. package/web-dist/components/radio-group/RadioGroup.js +4 -4
  201. package/web-dist/components/rating/Rating.js +2 -2
  202. package/web-dist/components/reader/Reader.js +9 -9
  203. package/web-dist/components/scan-overlay/ScanOverlay.js +9 -9
  204. package/web-dist/components/screen/Screen.js +1 -1
  205. package/web-dist/components/screen-section/ScreenSection.js +3 -3
  206. package/web-dist/components/scroll-view/ScrollView.js +1 -1
  207. package/web-dist/components/search-input/SearchInput.js +3 -3
  208. package/web-dist/components/section-header/SectionHeader.js +3 -3
  209. package/web-dist/components/section-list/SectionList.js +4 -4
  210. package/web-dist/components/select/Select.js +3 -3
  211. package/web-dist/components/selectable-item/SelectableItem.js +1 -1
  212. package/web-dist/components/selection-provider/SelectionProvider.js +1 -1
  213. package/web-dist/components/sign-in-form/SignInForm.js +9 -9
  214. package/web-dist/components/sign-up-form/SignUpForm.js +9 -9
  215. package/web-dist/components/skeleton/Skeleton.js +11 -11
  216. package/web-dist/components/skeleton-card/SkeletonCard.js +11 -11
  217. package/web-dist/components/skeleton-list/SkeletonList.js +11 -11
  218. package/web-dist/components/skeleton-text/SkeletonText.js +11 -11
  219. package/web-dist/components/spatial-grid/SpatialGrid.d.ts +3 -0
  220. package/web-dist/components/spatial-grid/SpatialGrid.js +102 -0
  221. package/web-dist/components/spatial-grid/index.d.ts +1 -0
  222. package/web-dist/components/spatial-grid/index.js +2 -0
  223. package/web-dist/components/surface/Surface.js +1 -1
  224. package/web-dist/components/tab/Tab.js +1 -1
  225. package/web-dist/components/tab-list/TabList.js +1 -1
  226. package/web-dist/components/tab-panel/TabPanel.js +1 -1
  227. package/web-dist/components/tabletop-table/TabletopTable.js +1 -1
  228. package/web-dist/components/tabs/Tabs.js +1 -1
  229. package/web-dist/components/text/Text.js +1 -1
  230. package/web-dist/components/text-input/TextInput.js +3 -3
  231. package/web-dist/components/tile-grid/TileGrid.js +1 -1
  232. package/web-dist/components/time-picker/TimePicker.js +4 -4
  233. package/web-dist/components/timeline/Timeline.js +3 -3
  234. package/web-dist/components/toast/Toast.js +1 -1
  235. package/web-dist/components/toast-provider/ToastProvider.js +1 -1
  236. package/web-dist/components/toolbar/Toolbar.js +8 -8
  237. package/web-dist/components/tree-item/TreeItem.js +7 -7
  238. package/web-dist/components/uploader/Uploader.js +11 -11
  239. package/web-dist/components/view/View.js +1 -1
  240. package/web-dist/manifest.json +555 -493
  241. package/web-dist/runtime/ZoraProvider.js +3 -3
  242. /package/web-dist/chunks/{Accordion-qkh5yy94.js → Accordion-7kq500r1.js} +0 -0
  243. /package/web-dist/chunks/{Accordion-f0jsd9f9.js → Accordion-7tjz25jh.js} +0 -0
  244. /package/web-dist/chunks/{Accordion-3m3572sa.js → Accordion-88t8fgxv.js} +0 -0
  245. /package/web-dist/chunks/{Accordion-afmybp67.js → Accordion-9w8wg9mf.js} +0 -0
  246. /package/web-dist/chunks/{Accordion-bb8y34wh.js → Accordion-b96evb46.js} +0 -0
  247. /package/web-dist/chunks/{Accordion-nmpmdrba.js → Accordion-dbf93gxh.js} +0 -0
  248. /package/web-dist/chunks/{Accordion-x12fca21.js → Accordion-fhnazn3n.js} +0 -0
  249. /package/web-dist/chunks/{Accordion-n9c5tsqw.js → Accordion-qn398m1x.js} +0 -0
  250. /package/web-dist/chunks/{Accordion-2rgexkze.js → Accordion-rsvphbe4.js} +0 -0
  251. /package/web-dist/chunks/{Accordion-c69374jn.js → Accordion-sw7ep29d.js} +0 -0
  252. /package/web-dist/chunks/{Accordion-8jxc7tx9.js → Accordion-w6qedeba.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 25.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 1a3af1d: Add a virtualized SpatialGrid for accessible free-placement boards.
8
+
9
+ ## 25.3.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 380050f: Add passive, viewport-projected rulers, grid lines, and accessible world-space guides.
14
+
3
15
  ## 25.2.1
4
16
 
5
17
  ### 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: v25.2.1](././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: v25.4.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
 
@@ -68,6 +68,7 @@ This package contains 6 additional examples. See the generated documentation for
68
68
  - [readChessPieces sequence](././paradox/diagrams/sequences/read-chess-pieces.mmd)
69
69
  - [resolveAvatarInitials sequence](././paradox/diagrams/sequences/resolve-avatar-initials.mmd)
70
70
  - [resolveExplorerSelection sequence](././paradox/diagrams/sequences/resolve-explorer-selection.mmd)
71
+ - [resolveGridRulerMarks sequence](././paradox/diagrams/sequences/resolve-grid-ruler-marks.mmd)
71
72
  - [resolveOAuthProviderIcon sequence](././paradox/diagrams/sequences/resolve-oauth-provider-icon.mmd)
72
73
  - [resolveOAuthProviderLabel sequence](././paradox/diagrams/sequences/resolve-oauth-provider-label.mmd)
73
74
  - [SelectionProvider sequence](././paradox/diagrams/sequences/selection-provider.mmd)
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { GridLineOverlayProps } from '../../../../types/grid-rulers';
3
+ /*** A reusable passive world-space grid and guide overlay. */
4
+ export declare const GridLineOverlay: (props: GridLineOverlayProps) => React.ReactElement | null;
5
+ //# sourceMappingURL=GridLineOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridLineOverlay.d.ts","sourceRoot":"","sources":["../../../../../src/features/grid-rulers/adapters/inbound/GridLineOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAsH1E,8DAA8D;AAC9D,eAAO,MAAM,eAAe,4DAA2C,CAAC"}
@@ -0,0 +1,69 @@
1
+ import React from 'react';
2
+ import { StyleSheet, View } from 'react-native';
3
+ import { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';
4
+ import { useZoraTheme } from '../../../theme/composition/useZoraTheme';
5
+ import { projectGridRulerPosition } from '../../application/projectGridRulerPosition';
6
+ import { resolveGridRulerMarks } from '../../application/resolveGridRulerMarks';
7
+ /*** Renders visible world-grid lines and explicit guides without owning viewport interaction. */
8
+ function GridLineOverlayInner({ accessibilityLabel = 'Grid guides', direction = 'ltr', guides = [], testID, viewport, xTickSource, yTickSource, }) {
9
+ const { theme } = useZoraTheme();
10
+ const xMarks = xTickSource
11
+ ? resolveGridRulerMarks(viewport, 'x', xTickSource, undefined, direction)
12
+ : [];
13
+ const yMarks = yTickSource ? resolveGridRulerMarks(viewport, 'y', yTickSource) : [];
14
+ const visibleGuides = resolveVisibleGridGuides(guides, viewport, direction);
15
+ return (<View accessible={false} importantForAccessibility="no" pointerEvents="none" style={[styles.overlay, { height: viewport.height, width: viewport.width }]} testID={testID}>
16
+ {xMarks.map((mark, index) => (<View key={`x-${mark.position}-${index}`} importantForAccessibility="no-hide-descendants" style={[
17
+ styles.vertical,
18
+ {
19
+ backgroundColor: theme.semantics.neutral.divider,
20
+ left: mark.position,
21
+ opacity: mark.level === 'major' ? 0.5 : 0.25,
22
+ },
23
+ ]} testID={testID === undefined ? undefined : `${testID}-x-line-${index}`}/>))}
24
+ {yMarks.map((mark, index) => (<View key={`y-${mark.position}-${index}`} importantForAccessibility="no-hide-descendants" style={[
25
+ styles.horizontal,
26
+ {
27
+ backgroundColor: theme.semantics.neutral.divider,
28
+ opacity: mark.level === 'major' ? 0.5 : 0.25,
29
+ top: mark.position,
30
+ },
31
+ ]} testID={testID === undefined ? undefined : `${testID}-y-line-${index}`}/>))}
32
+ {visibleGuides.map(({ guide, position }) => (<View key={guide.id} accessibilityLabel={createGuideAccessibilityLabel(accessibilityLabel, guide)} accessibilityRole="text" accessible style={[
33
+ guide.axis === 'x' ? styles.vertical : styles.horizontal,
34
+ guide.axis === 'x'
35
+ ? {
36
+ backgroundColor: theme.colors.primary,
37
+ left: position,
38
+ }
39
+ : {
40
+ backgroundColor: theme.colors.primary,
41
+ top: position,
42
+ },
43
+ ]} testID={testID === undefined ? undefined : `${testID}-guide-${guide.id}`}/>))}
44
+ </View>);
45
+ }
46
+ const styles = StyleSheet.create({
47
+ horizontal: { height: 1, left: 0, position: 'absolute', right: 0 },
48
+ overlay: { overflow: 'hidden', position: 'absolute' },
49
+ vertical: { bottom: 0, position: 'absolute', top: 0, width: 1 },
50
+ });
51
+ /*** Selects finite guides whose shared world-to-visual projection falls inside the viewport. */
52
+ function resolveVisibleGridGuides(guides, viewport, direction) {
53
+ return guides.flatMap((guide) => {
54
+ if (!Number.isFinite(guide.position))
55
+ return [];
56
+ const position = projectGridRulerPosition(viewport, guide.axis, guide.position, direction);
57
+ const size = guide.axis === 'x' ? viewport.width : viewport.height;
58
+ return Number.isFinite(position) && position >= 0 && position <= size
59
+ ? [{ guide, position }]
60
+ : [];
61
+ });
62
+ }
63
+ /*** Gives each visible guide an independent screen-reader identity with its stable world position. */
64
+ function createGuideAccessibilityLabel(overlayLabel, guide) {
65
+ return `${overlayLabel}: ${guide.label ?? `Guide ${guide.id}`} at ${guide.position}`;
66
+ }
67
+ /*** A reusable passive world-space grid and guide overlay. */
68
+ export const GridLineOverlay = withZoraThemeScope(GridLineOverlayInner);
69
+ //# sourceMappingURL=GridLineOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridLineOverlay.js","sourceRoot":"","sources":["../../../../../src/features/grid-rulers/adapters/inbound/GridLineOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,iGAAiG;AACjG,SAAS,oBAAoB,CAAC,EAC5B,kBAAkB,GAAG,aAAa,EAClC,SAAS,GAAG,KAAK,EACjB,MAAM,GAAG,EAAE,EACX,MAAM,EACN,QAAQ,EACR,WAAW,EACX,WAAW,GACU;IACrB,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,WAAW;QACxB,CAAC,CAAC,qBAAqB,CAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;QACzE,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,qBAAqB,CAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,MAAM,aAAa,GAAG,wBAAwB,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE5E,OAAO,CACL,CAAC,IAAI,CACH,UAAU,CAAC,CAAC,KAAK,CAAC,CAClB,yBAAyB,CAAC,IAAI,CAC9B,aAAa,CAAC,MAAM,CACpB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAC5E,MAAM,CAAC,CAAC,MAAM,CAAC,CAEf;MAAA,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC3B,CAAC,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,CAAC,CACnC,yBAAyB,CAAC,qBAAqB,CAC/C,KAAK,CAAC,CAAC;gBACL,MAAM,CAAC,QAAQ;gBACf;oBACE,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO;oBAChD,IAAI,EAAE,IAAI,CAAC,QAAQ;oBACnB,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;iBAC7C;aACF,CAAC,CACF,MAAM,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,WAAW,KAAK,EAAE,CAAC,EACvE,CACH,CAAC,CACF;MAAA,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC3B,CAAC,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,CAAC,CACnC,yBAAyB,CAAC,qBAAqB,CAC/C,KAAK,CAAC,CAAC;gBACL,MAAM,CAAC,UAAU;gBACjB;oBACE,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO;oBAChD,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;oBAC5C,GAAG,EAAE,IAAI,CAAC,QAAQ;iBACnB;aACF,CAAC,CACF,MAAM,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,WAAW,KAAK,EAAE,CAAC,EACvE,CACH,CAAC,CACF;MAAA,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAC1C,CAAC,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CACd,kBAAkB,CAAC,CAAC,6BAA6B,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAC7E,iBAAiB,CAAC,MAAM,CACxB,UAAU,CACV,KAAK,CAAC,CAAC;gBACL,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;gBACxD,KAAK,CAAC,IAAI,KAAK,GAAG;oBAChB,CAAC,CAAC;wBACE,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;wBACrC,IAAI,EAAE,QAAQ;qBACf;oBACH,CAAC,CAAC;wBACE,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;wBACrC,GAAG,EAAE,QAAQ;qBACd;aACN,CAAC,CACF,MAAM,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,UAAU,KAAK,CAAC,EAAE,EAAE,CAAC,EACzE,CACH,CAAC,CACJ;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE;IAClE,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE;IACrD,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;CAChE,CAAC,CAAC;AAEH,gGAAgG;AAChG,SAAS,wBAAwB,CAC/B,MAAmD,EACnD,QAA0C,EAC1C,SAAyD;IAEzD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,CAAC;QAEhD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3F,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAEnE,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,IAAI,IAAI;YACnE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YACvB,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sGAAsG;AACtG,SAAS,6BAA6B,CACpC,YAAoB,EACpB,KAA0D;IAE1D,OAAO,GAAG,YAAY,KAAK,KAAK,CAAC,KAAK,IAAI,SAAS,KAAK,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AACvF,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,CAAC","sourcesContent":["import React from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport type { GridLineOverlayProps } from '../../../../types/grid-rulers';\nimport { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';\nimport { useZoraTheme } from '../../../theme/composition/useZoraTheme';\nimport { projectGridRulerPosition } from '../../application/projectGridRulerPosition';\nimport { resolveGridRulerMarks } from '../../application/resolveGridRulerMarks';\n\n/*** Renders visible world-grid lines and explicit guides without owning viewport interaction. */\nfunction GridLineOverlayInner({\n accessibilityLabel = 'Grid guides',\n direction = 'ltr',\n guides = [],\n testID,\n viewport,\n xTickSource,\n yTickSource,\n}: GridLineOverlayProps) {\n const { theme } = useZoraTheme();\n const xMarks = xTickSource\n ? resolveGridRulerMarks(viewport, 'x', xTickSource, undefined, direction)\n : [];\n const yMarks = yTickSource ? resolveGridRulerMarks(viewport, 'y', yTickSource) : [];\n const visibleGuides = resolveVisibleGridGuides(guides, viewport, direction);\n\n return (\n <View\n accessible={false}\n importantForAccessibility=\"no\"\n pointerEvents=\"none\"\n style={[styles.overlay, { height: viewport.height, width: viewport.width }]}\n testID={testID}\n >\n {xMarks.map((mark, index) => (\n <View\n key={`x-${mark.position}-${index}`}\n importantForAccessibility=\"no-hide-descendants\"\n style={[\n styles.vertical,\n {\n backgroundColor: theme.semantics.neutral.divider,\n left: mark.position,\n opacity: mark.level === 'major' ? 0.5 : 0.25,\n },\n ]}\n testID={testID === undefined ? undefined : `${testID}-x-line-${index}`}\n />\n ))}\n {yMarks.map((mark, index) => (\n <View\n key={`y-${mark.position}-${index}`}\n importantForAccessibility=\"no-hide-descendants\"\n style={[\n styles.horizontal,\n {\n backgroundColor: theme.semantics.neutral.divider,\n opacity: mark.level === 'major' ? 0.5 : 0.25,\n top: mark.position,\n },\n ]}\n testID={testID === undefined ? undefined : `${testID}-y-line-${index}`}\n />\n ))}\n {visibleGuides.map(({ guide, position }) => (\n <View\n key={guide.id}\n accessibilityLabel={createGuideAccessibilityLabel(accessibilityLabel, guide)}\n accessibilityRole=\"text\"\n accessible\n style={[\n guide.axis === 'x' ? styles.vertical : styles.horizontal,\n guide.axis === 'x'\n ? {\n backgroundColor: theme.colors.primary,\n left: position,\n }\n : {\n backgroundColor: theme.colors.primary,\n top: position,\n },\n ]}\n testID={testID === undefined ? undefined : `${testID}-guide-${guide.id}`}\n />\n ))}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n horizontal: { height: 1, left: 0, position: 'absolute', right: 0 },\n overlay: { overflow: 'hidden', position: 'absolute' },\n vertical: { bottom: 0, position: 'absolute', top: 0, width: 1 },\n});\n\n/*** Selects finite guides whose shared world-to-visual projection falls inside the viewport. */\nfunction resolveVisibleGridGuides(\n guides: NonNullable<GridLineOverlayProps['guides']>,\n viewport: GridLineOverlayProps['viewport'],\n direction: NonNullable<GridLineOverlayProps['direction']>,\n) {\n return guides.flatMap((guide) => {\n if (!Number.isFinite(guide.position)) return [];\n\n const position = projectGridRulerPosition(viewport, guide.axis, guide.position, direction);\n const size = guide.axis === 'x' ? viewport.width : viewport.height;\n\n return Number.isFinite(position) && position >= 0 && position <= size\n ? [{ guide, position }]\n : [];\n });\n}\n\n/*** Gives each visible guide an independent screen-reader identity with its stable world position. */\nfunction createGuideAccessibilityLabel(\n overlayLabel: string,\n guide: NonNullable<GridLineOverlayProps['guides']>[number],\n): string {\n return `${overlayLabel}: ${guide.label ?? `Guide ${guide.id}`} at ${guide.position}`;\n}\n\n/*** A reusable passive world-space grid and guide overlay. */\nexport const GridLineOverlay = withZoraThemeScope(GridLineOverlayInner);\n"]}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { GridRulerProps } from '../../../../types/grid-rulers';
3
+ /*** A reusable passive horizontal or vertical world-space ruler. */
4
+ export declare const GridRuler: (props: GridRulerProps) => React.ReactElement | null;
5
+ //# sourceMappingURL=GridRuler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridRuler.d.ts","sourceRoot":"","sources":["../../../../../src/features/grid-rulers/adapters/inbound/GridRuler.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AA2FpE,oEAAoE;AACpE,eAAO,MAAM,SAAS,sDAAqC,CAAC"}
@@ -0,0 +1,59 @@
1
+ import React from 'react';
2
+ import { StyleSheet, Text, View } from 'react-native';
3
+ import { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';
4
+ import { useZoraTheme } from '../../../theme/composition/useZoraTheme';
5
+ import { resolveGridRulerMarks } from '../../application/resolveGridRulerMarks';
6
+ /*** Renders a passive axis ruler from published grid-view tick geometry. */
7
+ function GridRulerInner({ accessibilityLabel, axis, direction = 'ltr', formatLabel, offset = 0, position = 'start', testID, thickness = 24, tickSource, viewport, }) {
8
+ const { theme } = useZoraTheme();
9
+ const marks = resolveGridRulerMarks(viewport, axis, tickSource, formatLabel, direction);
10
+ const horizontal = axis === 'x';
11
+ const size = horizontal ? viewport.width : viewport.height;
12
+ const label = accessibilityLabel ?? `${horizontal ? 'Horizontal' : 'Vertical'} ruler`;
13
+ return (<View accessibilityLabel={label} accessible pointerEvents="none" style={[
14
+ styles.ruler,
15
+ horizontal ? { height: thickness, width: size } : { height: size, width: thickness },
16
+ position === 'start'
17
+ ? horizontal
18
+ ? { top: offset }
19
+ : { left: offset }
20
+ : horizontal
21
+ ? { bottom: offset }
22
+ : { right: offset },
23
+ ]} testID={testID}>
24
+ {marks.map((mark, index) => {
25
+ const coordinate = mark.position;
26
+ const tickStyle = horizontal
27
+ ? {
28
+ height: mark.level === 'major' ? thickness : thickness / 2,
29
+ left: coordinate,
30
+ top: 0,
31
+ width: 1,
32
+ }
33
+ : {
34
+ height: 1,
35
+ left: 0,
36
+ top: coordinate,
37
+ width: mark.level === 'major' ? thickness : thickness / 2,
38
+ };
39
+ return (<React.Fragment key={`${mark.position}-${index}`}>
40
+ <View importantForAccessibility="no-hide-descendants" style={[styles.tick, { backgroundColor: theme.semantics.neutral.divider }, tickStyle]} testID={testID === undefined ? undefined : `${testID}-tick-${index}`}/>
41
+ {mark.label !== undefined ? (<Text importantForAccessibility="no-hide-descendants" numberOfLines={1} style={[
42
+ styles.label,
43
+ { color: theme.semantics.neutral.textMuted },
44
+ horizontal ? { left: coordinate + 3, top: 2 } : { left: 3, top: coordinate + 2 },
45
+ ]} testID={testID === undefined ? undefined : `${testID}-label-${index}`}>
46
+ {mark.label}
47
+ </Text>) : null}
48
+ </React.Fragment>);
49
+ })}
50
+ </View>);
51
+ }
52
+ const styles = StyleSheet.create({
53
+ label: { fontSize: 10, position: 'absolute' },
54
+ ruler: { overflow: 'hidden', position: 'absolute' },
55
+ tick: { position: 'absolute' },
56
+ });
57
+ /*** A reusable passive horizontal or vertical world-space ruler. */
58
+ export const GridRuler = withZoraThemeScope(GridRulerInner);
59
+ //# sourceMappingURL=GridRuler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridRuler.js","sourceRoot":"","sources":["../../../../../src/features/grid-rulers/adapters/inbound/GridRuler.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\n\nimport type { GridRulerProps } from '../../../../types/grid-rulers';\nimport { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';\nimport { useZoraTheme } from '../../../theme/composition/useZoraTheme';\nimport { resolveGridRulerMarks } from '../../application/resolveGridRulerMarks';\n\n/*** Renders a passive axis ruler from published grid-view tick geometry. */\nfunction GridRulerInner({\n accessibilityLabel,\n axis,\n direction = 'ltr',\n formatLabel,\n offset = 0,\n position = 'start',\n testID,\n thickness = 24,\n tickSource,\n viewport,\n}: GridRulerProps) {\n const { theme } = useZoraTheme();\n const marks = resolveGridRulerMarks(viewport, axis, tickSource, formatLabel, direction);\n const horizontal = axis === 'x';\n const size = horizontal ? viewport.width : viewport.height;\n const label = accessibilityLabel ?? `${horizontal ? 'Horizontal' : 'Vertical'} ruler`;\n\n return (\n <View\n accessibilityLabel={label}\n accessible\n pointerEvents=\"none\"\n style={[\n styles.ruler,\n horizontal ? { height: thickness, width: size } : { height: size, width: thickness },\n position === 'start'\n ? horizontal\n ? { top: offset }\n : { left: offset }\n : horizontal\n ? { bottom: offset }\n : { right: offset },\n ]}\n testID={testID}\n >\n {marks.map((mark, index) => {\n const coordinate = mark.position;\n const tickStyle = horizontal\n ? {\n height: mark.level === 'major' ? thickness : thickness / 2,\n left: coordinate,\n top: 0,\n width: 1,\n }\n : {\n height: 1,\n left: 0,\n top: coordinate,\n width: mark.level === 'major' ? thickness : thickness / 2,\n };\n return (\n <React.Fragment key={`${mark.position}-${index}`}>\n <View\n importantForAccessibility=\"no-hide-descendants\"\n style={[styles.tick, { backgroundColor: theme.semantics.neutral.divider }, tickStyle]}\n testID={testID === undefined ? undefined : `${testID}-tick-${index}`}\n />\n {mark.label !== undefined ? (\n <Text\n importantForAccessibility=\"no-hide-descendants\"\n numberOfLines={1}\n style={[\n styles.label,\n { color: theme.semantics.neutral.textMuted },\n horizontal ? { left: coordinate + 3, top: 2 } : { left: 3, top: coordinate + 2 },\n ]}\n testID={testID === undefined ? undefined : `${testID}-label-${index}`}\n >\n {mark.label}\n </Text>\n ) : null}\n </React.Fragment>\n );\n })}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n label: { fontSize: 10, position: 'absolute' },\n ruler: { overflow: 'hidden', position: 'absolute' },\n tick: { position: 'absolute' },\n});\n\n/*** A reusable passive horizontal or vertical world-space ruler. */\nexport const GridRuler = withZoraThemeScope(GridRulerInner);\n"]}
@@ -0,0 +1,4 @@
1
+ import { type GridAxisName, type GridViewport } from '@ankhorage/grid-view';
2
+ /*** Projects a stable world-axis coordinate into the matching visual ruler or overlay position. */
3
+ export declare function projectGridRulerPosition(viewport: GridViewport, axis: GridAxisName, position: number, direction?: 'ltr' | 'rtl'): number;
4
+ //# sourceMappingURL=projectGridRulerPosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectGridRulerPosition.d.ts","sourceRoot":"","sources":["../../../../src/features/grid-rulers/application/projectGridRulerPosition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAmB,MAAM,sBAAsB,CAAC;AAE7F,mGAAmG;AACnG,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,KAAK,GAAG,KAAa,GAC/B,MAAM,CAUR"}
@@ -0,0 +1,10 @@
1
+ import { worldToViewport } from '@ankhorage/grid-view';
2
+ /*** Projects a stable world-axis coordinate into the matching visual ruler or overlay position. */
3
+ export function projectGridRulerPosition(viewport, axis, position, direction = 'ltr') {
4
+ const point = worldToViewport(axis === 'x' ? { x: position, y: viewport.offsetY } : { x: viewport.offsetX, y: position }, viewport);
5
+ const projectedPosition = axis === 'x' ? point.x : point.y;
6
+ return axis === 'x' && direction === 'rtl'
7
+ ? viewport.width - projectedPosition
8
+ : projectedPosition;
9
+ }
10
+ //# sourceMappingURL=projectGridRulerPosition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectGridRulerPosition.js","sourceRoot":"","sources":["../../../../src/features/grid-rulers/application/projectGridRulerPosition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE7F,mGAAmG;AACnG,MAAM,UAAU,wBAAwB,CACtC,QAAsB,EACtB,IAAkB,EAClB,QAAgB,EAChB,YAA2B,KAAK;IAEhC,MAAM,KAAK,GAAG,eAAe,CAC3B,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAC1F,QAAQ,CACT,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAE3D,OAAO,IAAI,KAAK,GAAG,IAAI,SAAS,KAAK,KAAK;QACxC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,iBAAiB;QACpC,CAAC,CAAC,iBAAiB,CAAC;AACxB,CAAC","sourcesContent":["import { type GridAxisName, type GridViewport, worldToViewport } from '@ankhorage/grid-view';\n\n/*** Projects a stable world-axis coordinate into the matching visual ruler or overlay position. */\nexport function projectGridRulerPosition(\n viewport: GridViewport,\n axis: GridAxisName,\n position: number,\n direction: 'ltr' | 'rtl' = 'ltr',\n): number {\n const point = worldToViewport(\n axis === 'x' ? { x: position, y: viewport.offsetY } : { x: viewport.offsetX, y: position },\n viewport,\n );\n const projectedPosition = axis === 'x' ? point.x : point.y;\n\n return axis === 'x' && direction === 'rtl'\n ? viewport.width - projectedPosition\n : projectedPosition;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { type GridAxisName, type GridAxisTick, type GridViewport } from '@ankhorage/grid-view';
2
+ import type { GridRulerMark, GridRulerTickSource } from '../../../types/grid-rulers';
3
+ /*** Resolves bounded engine ticks into viewport-pixel ruler marks without changing interaction state. */
4
+ export declare function resolveGridRulerMarks(viewport: GridViewport, axis: GridAxisName, tickSource: GridRulerTickSource, formatLabel?: (tick: GridAxisTick) => string | undefined, direction?: 'ltr' | 'rtl'): readonly GridRulerMark[];
5
+ //# sourceMappingURL=resolveGridRulerMarks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveGridRulerMarks.d.ts","sourceRoot":"","sources":["../../../../src/features/grid-rulers/application/resolveGridRulerMarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGrF,yGAAyG;AACzG,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,YAAY,EAClB,UAAU,EAAE,mBAAmB,EAC/B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,MAAM,GAAG,SAAS,EACxD,SAAS,GAAE,KAAK,GAAG,KAAa,GAC/B,SAAS,aAAa,EAAE,CAoB1B"}
@@ -0,0 +1,22 @@
1
+ import { getAxisCategoryTicks, getAxisTicks, } from '@ankhorage/grid-view';
2
+ import { projectGridRulerPosition } from './projectGridRulerPosition';
3
+ /*** Resolves bounded engine ticks into viewport-pixel ruler marks without changing interaction state. */
4
+ export function resolveGridRulerMarks(viewport, axis, tickSource, formatLabel, direction = 'ltr') {
5
+ const ticks = tickSource.kind === 'categories'
6
+ ? getAxisCategoryTicks(viewport, axis, tickSource.categories)
7
+ : getAxisTicks(viewport, axis, tickSource.specification, tickSource.provider);
8
+ return ticks.map((tick) => {
9
+ const formattedLabel = formatLabel?.(tick);
10
+ return {
11
+ position: projectGridRulerPosition(viewport, axis, tick.position, direction),
12
+ level: tick.level,
13
+ ...(tick.label !== undefined || formattedLabel !== undefined
14
+ ? { label: formattedLabel ?? tick.label }
15
+ : {}),
16
+ ...('categoryId' in tick && typeof tick.categoryId === 'string'
17
+ ? { categoryId: tick.categoryId }
18
+ : {}),
19
+ };
20
+ });
21
+ }
22
+ //# sourceMappingURL=resolveGridRulerMarks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveGridRulerMarks.js","sourceRoot":"","sources":["../../../../src/features/grid-rulers/application/resolveGridRulerMarks.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,YAAY,GAIb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,yGAAyG;AACzG,MAAM,UAAU,qBAAqB,CACnC,QAAsB,EACtB,IAAkB,EAClB,UAA+B,EAC/B,WAAwD,EACxD,YAA2B,KAAK;IAEhC,MAAM,KAAK,GACT,UAAU,CAAC,IAAI,KAAK,YAAY;QAC9B,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC;QAC7D,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAElF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,cAAc,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;QAE3C,OAAO;YACL,QAAQ,EAAE,wBAAwB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;YAC5E,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS;gBAC1D,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,IAAI,IAAI,CAAC,KAAK,EAAE;gBACzC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,YAAY,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;gBAC7D,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;gBACjC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {\n getAxisCategoryTicks,\n getAxisTicks,\n type GridAxisName,\n type GridAxisTick,\n type GridViewport,\n} from '@ankhorage/grid-view';\n\nimport type { GridRulerMark, GridRulerTickSource } from '../../../types/grid-rulers';\nimport { projectGridRulerPosition } from './projectGridRulerPosition';\n\n/*** Resolves bounded engine ticks into viewport-pixel ruler marks without changing interaction state. */\nexport function resolveGridRulerMarks(\n viewport: GridViewport,\n axis: GridAxisName,\n tickSource: GridRulerTickSource,\n formatLabel?: (tick: GridAxisTick) => string | undefined,\n direction: 'ltr' | 'rtl' = 'ltr',\n): readonly GridRulerMark[] {\n const ticks =\n tickSource.kind === 'categories'\n ? getAxisCategoryTicks(viewport, axis, tickSource.categories)\n : getAxisTicks(viewport, axis, tickSource.specification, tickSource.provider);\n\n return ticks.map((tick) => {\n const formattedLabel = formatLabel?.(tick);\n\n return {\n position: projectGridRulerPosition(viewport, axis, tick.position, direction),\n level: tick.level,\n ...(tick.label !== undefined || formattedLabel !== undefined\n ? { label: formattedLabel ?? tick.label }\n : {}),\n ...('categoryId' in tick && typeof tick.categoryId === 'string'\n ? { categoryId: tick.categoryId }\n : {}),\n };\n });\n}\n"]}
@@ -0,0 +1,21 @@
1
+ /** Passive viewport decorations intentionally remain outside direct manifest authoring. */
2
+ export declare const gridLineOverlayMeta: {
3
+ readonly name: "GridLineOverlay";
4
+ readonly category: "foundation";
5
+ readonly description: "Projects bounded world-grid lines and explicit guides from a supplied viewport.";
6
+ readonly directManifestNode: false;
7
+ readonly note: "Requires a live viewport and optional executable tick/label providers; available through code APIs, not a serializable manifest node.";
8
+ readonly allowedChildren: readonly [];
9
+ readonly props: {};
10
+ };
11
+ /** Rulers accept code-dependent tick and label providers and therefore remain code-only. */
12
+ export declare const gridRulerMeta: {
13
+ readonly name: "GridRuler";
14
+ readonly category: "foundation";
15
+ readonly description: "Projects visible world-axis ticks into a passive horizontal or vertical ruler.";
16
+ readonly directManifestNode: false;
17
+ readonly note: "Requires a live viewport and optional executable tick/label providers; available through code APIs, not a serializable manifest node.";
18
+ readonly allowedChildren: readonly [];
19
+ readonly props: {};
20
+ };
21
+ //# sourceMappingURL=meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/features/grid-rulers/meta.ts"],"names":[],"mappings":"AAKA,2FAA2F;AAC3F,eAAO,MAAM,mBAAmB;;;;;;;;CAQM,CAAC;AAEvC,4FAA4F;AAC5F,eAAO,MAAM,aAAa;;;;;;;;CAQY,CAAC"}
@@ -0,0 +1,22 @@
1
+ const GRID_RULERS_NOTE = 'Requires a live viewport and optional executable tick/label providers; available through code APIs, not a serializable manifest node.';
2
+ /** Passive viewport decorations intentionally remain outside direct manifest authoring. */
3
+ export const gridLineOverlayMeta = {
4
+ name: 'GridLineOverlay',
5
+ category: 'foundation',
6
+ description: 'Projects bounded world-grid lines and explicit guides from a supplied viewport.',
7
+ directManifestNode: false,
8
+ note: GRID_RULERS_NOTE,
9
+ allowedChildren: [],
10
+ props: {},
11
+ };
12
+ /** Rulers accept code-dependent tick and label providers and therefore remain code-only. */
13
+ export const gridRulerMeta = {
14
+ name: 'GridRuler',
15
+ category: 'foundation',
16
+ description: 'Projects visible world-axis ticks into a passive horizontal or vertical ruler.',
17
+ directManifestNode: false,
18
+ note: GRID_RULERS_NOTE,
19
+ allowedChildren: [],
20
+ props: {},
21
+ };
22
+ //# sourceMappingURL=meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.js","sourceRoot":"","sources":["../../../src/features/grid-rulers/meta.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GACpB,uIAAuI,CAAC;AAE1I,2FAA2F;AAC3F,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,YAAY;IACtB,WAAW,EAAE,iFAAiF;IAC9F,kBAAkB,EAAE,KAAK;IACzB,IAAI,EAAE,gBAAgB;IACtB,eAAe,EAAE,EAAE;IACnB,KAAK,EAAE,EAAE;CAC2B,CAAC;AAEvC,4FAA4F;AAC5F,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,YAAY;IACtB,WAAW,EAAE,gFAAgF;IAC7F,kBAAkB,EAAE,KAAK;IACzB,IAAI,EAAE,gBAAgB;IACtB,eAAe,EAAE,EAAE;IACnB,KAAK,EAAE,EAAE;CAC2B,CAAC","sourcesContent":["import type { ZoraComponentMeta } from '../../types/authoring';\n\nconst GRID_RULERS_NOTE =\n 'Requires a live viewport and optional executable tick/label providers; available through code APIs, not a serializable manifest node.';\n\n/** Passive viewport decorations intentionally remain outside direct manifest authoring. */\nexport const gridLineOverlayMeta = {\n name: 'GridLineOverlay',\n category: 'foundation',\n description: 'Projects bounded world-grid lines and explicit guides from a supplied viewport.',\n directManifestNode: false,\n note: GRID_RULERS_NOTE,\n allowedChildren: [],\n props: {},\n} as const satisfies ZoraComponentMeta;\n\n/** Rulers accept code-dependent tick and label providers and therefore remain code-only. */\nexport const gridRulerMeta = {\n name: 'GridRuler',\n category: 'foundation',\n description: 'Projects visible world-axis ticks into a passive horizontal or vertical ruler.',\n directManifestNode: false,\n note: GRID_RULERS_NOTE,\n allowedChildren: [],\n props: {},\n} as const satisfies ZoraComponentMeta;\n"]}
@@ -0,0 +1,5 @@
1
+ export type { GridGuide, GridLineOverlayProps, GridRulerMark, GridRulerProps, GridRulerTickSource, } from '../../types/grid-rulers';
2
+ export { GridLineOverlay } from './adapters/inbound/GridLineOverlay';
3
+ export { GridRuler } from './adapters/inbound/GridRuler';
4
+ export { resolveGridRulerMarks } from './application/resolveGridRulerMarks';
5
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/features/grid-rulers/public.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,SAAS,EACT,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { GridLineOverlay } from './adapters/inbound/GridLineOverlay';
2
+ export { GridRuler } from './adapters/inbound/GridRuler';
3
+ export { resolveGridRulerMarks } from './application/resolveGridRulerMarks';
4
+ //# sourceMappingURL=public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/features/grid-rulers/public.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC","sourcesContent":["export type {\n GridGuide,\n GridLineOverlayProps,\n GridRulerMark,\n GridRulerProps,\n GridRulerTickSource,\n} from '../../types/grid-rulers';\nexport { GridLineOverlay } from './adapters/inbound/GridLineOverlay';\nexport { GridRuler } from './adapters/inbound/GridRuler';\nexport { resolveGridRulerMarks } from './application/resolveGridRulerMarks';\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;AA8NlE,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;AAmOlE,eAAO,MAAM,uBAAuB,EAAE,qBAAgD,CAAC"}
@@ -28,6 +28,7 @@ import { Switch } from '../form/switch/public';
28
28
  import { TextInput } from '../form/text-input/public';
29
29
  import { Game, GameEntity, GameField, GameInputZone, GameMeasurementProbe, GameOverlay, } from '../game/public';
30
30
  import { Gradient } from '../gradient/public';
31
+ import { GridLineOverlay, GridRuler } from '../grid-rulers/public';
31
32
  import { GridView, TileGrid } from '../grid-view/public';
32
33
  import { Hero } from '../hero/public';
33
34
  import { Icon } from '../icon/public';
@@ -46,6 +47,7 @@ import { BarcodeScannerView, CameraPermissionView, ScanOverlay } from '../scanne
46
47
  import { ScreenSection, SectionHeader } from '../section/public';
47
48
  import { SelectableItem } from '../selection/public';
48
49
  import { Skeleton, SkeletonCard, SkeletonList, SkeletonText } from '../skeleton/public';
50
+ import { SpatialGrid } from '../spatial-grid/public';
49
51
  import { Surface } from '../surface/public';
50
52
  import { CardBack, CardHand, PlayingCard, PokerTrainingTable, TabletopTable, } from '../tabletop/public';
51
53
  import { Tab, TabList, TabPanel, Tabs } from '../tabs/public';
@@ -145,6 +147,8 @@ const _ZORA_COMPONENT_REGISTRY = {
145
147
  EmptyState,
146
148
  Explorer,
147
149
  FileExplorer,
150
+ GridLineOverlay,
151
+ GridRuler,
148
152
  GridView,
149
153
  TileGrid,
150
154
  MediaExplorer,
@@ -163,6 +167,7 @@ const _ZORA_COMPONENT_REGISTRY = {
163
167
  ScanOverlay,
164
168
  SectionHeader,
165
169
  SelectableItem,
170
+ SpatialGrid,
166
171
  PaletteItem,
167
172
  CardBack,
168
173
  CardHand,
@@ -1 +1 @@
1
- {"version":3,"file":"ZORA_COMPONENT_REGISTRY.js","sourceRoot":"","sources":["../../../src/features/registry/ZORA_COMPONENT_REGISTRY.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InteractionPolicyProps } from '@ankhorage/surface';\nimport type React from 'react';\n\nimport type { ZoraComponentRegistry } from '../../types/registry';\nimport { Accordion, AccordionItem } from '../accordion/public';\nimport { ActivityIndicator } from '../activity-indicator/public';\nimport { AppBar } from '../app-bar/public';\nimport { AppHeader } from '../app-header/public';\nimport {\n AuthScreen,\n ForgotPasswordForm,\n OAuthProviderButton,\n OAuthProviderList,\n OtpForm,\n SignInForm,\n SignUpForm,\n} from '../auth/public';\nimport { Avatar, AvatarGroup } from '../avatar/public';\nimport { Badge } from '../badge/public';\nimport { BottomSheet } from '../bottom-sheet/public';\nimport { Breadcrumbs } from '../breadcrumbs/public';\nimport { Button, ButtonGroup, IconButton } from '../button/public';\nimport { Card, MediaCard, MetricCard, PostCard, ProductCard } from '../card/public';\nimport { ChatListItem, MessageBubble } from '../chat/public';\nimport { ChessBoard, OpeningBook } from '../chess/public';\nimport { Chip, ChipGroup } from '../chip/public';\nimport { CollectionEditor } from '../collection-editor/public';\nimport { ContentRail } from '../content-rail/public';\nimport { DataTable } from '../data-table/public';\nimport { DatePicker } from '../date-picker/public';\nimport { Dialog } from '../dialog/public';\nimport { EmptyState } from '../empty-state/public';\nimport { Explorer, FileExplorer, MediaExplorer } from '../explorer/public';\nimport { Checkbox, CheckboxGroup } from '../form/checkbox/public';\nimport { Field, Form, FormActions, FormError } from '../form/public';\nimport { Radio, RadioGroup } from '../form/radio/public';\nimport { SearchInput } from '../form/search-input/public';\nimport { Select } from '../form/select/public';\nimport { Switch } from '../form/switch/public';\nimport { TextInput } from '../form/text-input/public';\nimport {\n Game,\n GameEntity,\n GameField,\n GameInputZone,\n GameMeasurementProbe,\n GameOverlay,\n} from '../game/public';\nimport { Gradient } from '../gradient/public';\nimport { GridView, TileGrid } from '../grid-view/public';\nimport { Hero } from '../hero/public';\nimport { Icon } from '../icon/public';\nimport { Image } from '../image/public';\nimport { KeyboardAvoidingView } from '../keyboard-avoiding-view/public';\nimport { AppShell, Divider, Grid, Screen, ScrollView, View } from '../layout/public';\nimport { FlatList, List, ListItem, ListSection, SectionList } from '../list/public';\nimport { MissingElement } from '../missing-element/public';\nimport { Pagination } from '../pagination/public';\nimport { PaletteItem } from '../palette-item/public';\nimport { PopoverMenu } from '../popover-menu/public';\nimport { Progress, ProgressRing } from '../progress/public';\nimport { Rating } from '../rating/public';\nimport { Reader } from '../reader/public';\nimport { BarcodeScannerView, CameraPermissionView, ScanOverlay } from '../scanner/public';\nimport { ScreenSection, SectionHeader } from '../section/public';\nimport { SelectableItem } from '../selection/public';\nimport { Skeleton, SkeletonCard, SkeletonList, SkeletonText } from '../skeleton/public';\nimport { Surface } from '../surface/public';\nimport {\n CardBack,\n CardHand,\n PlayingCard,\n PokerTrainingTable,\n TabletopTable,\n} from '../tabletop/public';\nimport { Tab, TabList, TabPanel, Tabs } from '../tabs/public';\nimport { ThemeModeToggle } from '../theme/adapters/inbound/ThemeModeToggle';\nimport { TimePicker } from '../time-picker/public';\nimport { Timeline } from '../timeline/public';\nimport { Toast } from '../toast/public';\nimport { Toolbar } from '../toolbar/public';\nimport { TreeItem, TreeView } from '../tree-view/public';\nimport { Heading, Text } from '../typography/public';\nimport { Uploader } from '../uploader/public';\n\ntype ComponentPropsFor<K extends keyof typeof _ZORA_COMPONENT_REGISTRY> = React.ComponentProps<\n (typeof _ZORA_COMPONENT_REGISTRY)[K]\n>;\n\ntype AcceptsSurfaceInteractionPolicyProps<P> = 'interactionPolicy' extends keyof P\n ? InteractionPolicyProps extends Pick<P, 'interactionPolicy'>\n ? Pick<P, 'interactionPolicy'> extends InteractionPolicyProps\n ? true\n : false\n : false\n : false;\n\ntype RegistryInteractionPolicyContract = {\n [K in keyof typeof _ZORA_COMPONENT_REGISTRY]: AcceptsSurfaceInteractionPolicyProps<\n ComponentPropsFor<K>\n >;\n};\n\ntype _AssertTrue<T extends true> = T;\ntype _RegistryInteractionPolicyCheck = _AssertTrue<\n RegistryInteractionPolicyContract[keyof typeof _ZORA_COMPONENT_REGISTRY]\n>;\n\nconst _ZORA_COMPONENT_REGISTRY = {\n Accordion,\n AccordionItem,\n ActivityIndicator,\n AppBar,\n AppHeader,\n Avatar,\n AvatarGroup,\n Badge,\n Breadcrumbs,\n Button,\n ButtonGroup,\n Card,\n Checkbox,\n CheckboxGroup,\n Chip,\n ChipGroup,\n DataTable,\n DatePicker,\n Dialog,\n Form,\n FormActions,\n FormError,\n Field,\n Gradient,\n Game,\n GameEntity,\n GameField,\n GameInputZone,\n GameMeasurementProbe,\n GameOverlay,\n Heading,\n Icon,\n IconButton,\n Image,\n KeyboardAvoidingView,\n TextInput,\n MediaCard,\n MetricCard,\n Pagination,\n PopoverMenu,\n Progress,\n ProgressRing,\n Radio,\n RadioGroup,\n Rating,\n SearchInput,\n Select,\n Switch,\n Skeleton,\n SkeletonCard,\n SkeletonList,\n SkeletonText,\n Tab,\n TabList,\n TabPanel,\n Tabs,\n Text,\n TimePicker,\n Toast,\n Toolbar,\n Uploader,\n BottomSheet,\n FlatList,\n SectionList,\n ScrollView,\n View,\n ThemeModeToggle,\n Divider,\n Grid,\n Surface,\n AppShell,\n Screen,\n ScreenSection,\n AuthScreen,\n ForgotPasswordForm,\n OAuthProviderButton,\n OAuthProviderList,\n OtpForm,\n SignInForm,\n SignUpForm,\n ChatListItem,\n ChessBoard,\n CollectionEditor,\n ContentRail,\n EmptyState,\n Explorer,\n FileExplorer,\n GridView,\n TileGrid,\n MediaExplorer,\n Hero,\n List,\n ListItem,\n ListSection,\n MessageBubble,\n OpeningBook,\n MissingElement,\n PostCard,\n ProductCard,\n Reader,\n BarcodeScannerView,\n CameraPermissionView,\n ScanOverlay,\n SectionHeader,\n SelectableItem,\n PaletteItem,\n CardBack,\n CardHand,\n PlayingCard,\n TabletopTable,\n PokerTrainingTable,\n Timeline,\n TreeItem,\n TreeView,\n} as const satisfies ZoraComponentRegistry;\n\nexport const ZORA_COMPONENT_REGISTRY: ZoraComponentRegistry = _ZORA_COMPONENT_REGISTRY;\n"]}
1
+ {"version":3,"file":"ZORA_COMPONENT_REGISTRY.js","sourceRoot":"","sources":["../../../src/features/registry/ZORA_COMPONENT_REGISTRY.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InteractionPolicyProps } from '@ankhorage/surface';\nimport type React from 'react';\n\nimport type { ZoraComponentRegistry } from '../../types/registry';\nimport { Accordion, AccordionItem } from '../accordion/public';\nimport { ActivityIndicator } from '../activity-indicator/public';\nimport { AppBar } from '../app-bar/public';\nimport { AppHeader } from '../app-header/public';\nimport {\n AuthScreen,\n ForgotPasswordForm,\n OAuthProviderButton,\n OAuthProviderList,\n OtpForm,\n SignInForm,\n SignUpForm,\n} from '../auth/public';\nimport { Avatar, AvatarGroup } from '../avatar/public';\nimport { Badge } from '../badge/public';\nimport { BottomSheet } from '../bottom-sheet/public';\nimport { Breadcrumbs } from '../breadcrumbs/public';\nimport { Button, ButtonGroup, IconButton } from '../button/public';\nimport { Card, MediaCard, MetricCard, PostCard, ProductCard } from '../card/public';\nimport { ChatListItem, MessageBubble } from '../chat/public';\nimport { ChessBoard, OpeningBook } from '../chess/public';\nimport { Chip, ChipGroup } from '../chip/public';\nimport { CollectionEditor } from '../collection-editor/public';\nimport { ContentRail } from '../content-rail/public';\nimport { DataTable } from '../data-table/public';\nimport { DatePicker } from '../date-picker/public';\nimport { Dialog } from '../dialog/public';\nimport { EmptyState } from '../empty-state/public';\nimport { Explorer, FileExplorer, MediaExplorer } from '../explorer/public';\nimport { Checkbox, CheckboxGroup } from '../form/checkbox/public';\nimport { Field, Form, FormActions, FormError } from '../form/public';\nimport { Radio, RadioGroup } from '../form/radio/public';\nimport { SearchInput } from '../form/search-input/public';\nimport { Select } from '../form/select/public';\nimport { Switch } from '../form/switch/public';\nimport { TextInput } from '../form/text-input/public';\nimport {\n Game,\n GameEntity,\n GameField,\n GameInputZone,\n GameMeasurementProbe,\n GameOverlay,\n} from '../game/public';\nimport { Gradient } from '../gradient/public';\nimport { GridLineOverlay, GridRuler } from '../grid-rulers/public';\nimport { GridView, TileGrid } from '../grid-view/public';\nimport { Hero } from '../hero/public';\nimport { Icon } from '../icon/public';\nimport { Image } from '../image/public';\nimport { KeyboardAvoidingView } from '../keyboard-avoiding-view/public';\nimport { AppShell, Divider, Grid, Screen, ScrollView, View } from '../layout/public';\nimport { FlatList, List, ListItem, ListSection, SectionList } from '../list/public';\nimport { MissingElement } from '../missing-element/public';\nimport { Pagination } from '../pagination/public';\nimport { PaletteItem } from '../palette-item/public';\nimport { PopoverMenu } from '../popover-menu/public';\nimport { Progress, ProgressRing } from '../progress/public';\nimport { Rating } from '../rating/public';\nimport { Reader } from '../reader/public';\nimport { BarcodeScannerView, CameraPermissionView, ScanOverlay } from '../scanner/public';\nimport { ScreenSection, SectionHeader } from '../section/public';\nimport { SelectableItem } from '../selection/public';\nimport { Skeleton, SkeletonCard, SkeletonList, SkeletonText } from '../skeleton/public';\nimport { SpatialGrid } from '../spatial-grid/public';\nimport { Surface } from '../surface/public';\nimport {\n CardBack,\n CardHand,\n PlayingCard,\n PokerTrainingTable,\n TabletopTable,\n} from '../tabletop/public';\nimport { Tab, TabList, TabPanel, Tabs } from '../tabs/public';\nimport { ThemeModeToggle } from '../theme/adapters/inbound/ThemeModeToggle';\nimport { TimePicker } from '../time-picker/public';\nimport { Timeline } from '../timeline/public';\nimport { Toast } from '../toast/public';\nimport { Toolbar } from '../toolbar/public';\nimport { TreeItem, TreeView } from '../tree-view/public';\nimport { Heading, Text } from '../typography/public';\nimport { Uploader } from '../uploader/public';\n\ntype ComponentPropsFor<K extends keyof typeof _ZORA_COMPONENT_REGISTRY> = React.ComponentProps<\n (typeof _ZORA_COMPONENT_REGISTRY)[K]\n>;\n\ntype AcceptsSurfaceInteractionPolicyProps<P> = 'interactionPolicy' extends keyof P\n ? InteractionPolicyProps extends Pick<P, 'interactionPolicy'>\n ? Pick<P, 'interactionPolicy'> extends InteractionPolicyProps\n ? true\n : false\n : false\n : false;\n\ntype RegistryInteractionPolicyContract = {\n [K in keyof typeof _ZORA_COMPONENT_REGISTRY]: AcceptsSurfaceInteractionPolicyProps<\n ComponentPropsFor<K>\n >;\n};\n\ntype _AssertTrue<T extends true> = T;\ntype _RegistryInteractionPolicyCheck = _AssertTrue<\n RegistryInteractionPolicyContract[keyof typeof _ZORA_COMPONENT_REGISTRY]\n>;\n\nconst _ZORA_COMPONENT_REGISTRY = {\n Accordion,\n AccordionItem,\n ActivityIndicator,\n AppBar,\n AppHeader,\n Avatar,\n AvatarGroup,\n Badge,\n Breadcrumbs,\n Button,\n ButtonGroup,\n Card,\n Checkbox,\n CheckboxGroup,\n Chip,\n ChipGroup,\n DataTable,\n DatePicker,\n Dialog,\n Form,\n FormActions,\n FormError,\n Field,\n Gradient,\n Game,\n GameEntity,\n GameField,\n GameInputZone,\n GameMeasurementProbe,\n GameOverlay,\n Heading,\n Icon,\n IconButton,\n Image,\n KeyboardAvoidingView,\n TextInput,\n MediaCard,\n MetricCard,\n Pagination,\n PopoverMenu,\n Progress,\n ProgressRing,\n Radio,\n RadioGroup,\n Rating,\n SearchInput,\n Select,\n Switch,\n Skeleton,\n SkeletonCard,\n SkeletonList,\n SkeletonText,\n Tab,\n TabList,\n TabPanel,\n Tabs,\n Text,\n TimePicker,\n Toast,\n Toolbar,\n Uploader,\n BottomSheet,\n FlatList,\n SectionList,\n ScrollView,\n View,\n ThemeModeToggle,\n Divider,\n Grid,\n Surface,\n AppShell,\n Screen,\n ScreenSection,\n AuthScreen,\n ForgotPasswordForm,\n OAuthProviderButton,\n OAuthProviderList,\n OtpForm,\n SignInForm,\n SignUpForm,\n ChatListItem,\n ChessBoard,\n CollectionEditor,\n ContentRail,\n EmptyState,\n Explorer,\n FileExplorer,\n GridLineOverlay,\n GridRuler,\n GridView,\n TileGrid,\n MediaExplorer,\n Hero,\n List,\n ListItem,\n ListSection,\n MessageBubble,\n OpeningBook,\n MissingElement,\n PostCard,\n ProductCard,\n Reader,\n BarcodeScannerView,\n CameraPermissionView,\n ScanOverlay,\n SectionHeader,\n SelectableItem,\n SpatialGrid,\n PaletteItem,\n CardBack,\n CardHand,\n PlayingCard,\n TabletopTable,\n PokerTrainingTable,\n Timeline,\n TreeItem,\n TreeView,\n} as const satisfies ZoraComponentRegistry;\n\nexport const ZORA_COMPONENT_REGISTRY: ZoraComponentRegistry = _ZORA_COMPONENT_REGISTRY;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"componentMeta.d.ts","sourceRoot":"","sources":["../../../src/features/registry/componentMeta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AA8GvE,eAAO,MAAM,mBAAmB,EAAE,yBAqHhC,CAAC"}
1
+ {"version":3,"file":"componentMeta.d.ts","sourceRoot":"","sources":["../../../src/features/registry/componentMeta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAgHvE,eAAO,MAAM,mBAAmB,EAAE,yBAwHhC,CAAC"}
@@ -52,6 +52,7 @@ import { gameMeasurementProbeMeta } from '../game/meta/gameMeasurementProbeMeta'
52
52
  import { gameMeta } from '../game/meta/gameMeta';
53
53
  import { gameOverlayMeta } from '../game/meta/gameOverlayMeta';
54
54
  import { gradientMeta } from '../gradient/gradientMeta';
55
+ import { gridLineOverlayMeta, gridRulerMeta } from '../grid-rulers/meta';
55
56
  import { gridViewMeta, tileGridMeta } from '../grid-view/meta';
56
57
  import { heroMeta } from '../hero/heroMeta';
57
58
  import { iconMeta } from '../icon/iconMeta';
@@ -78,6 +79,7 @@ import { screenSectionMeta } from '../section/screenSectionMeta';
78
79
  import { sectionHeaderMeta } from '../section/sectionHeaderMeta';
79
80
  import { selectableItemMeta, selectionProviderMeta } from '../selection/meta';
80
81
  import { skeletonCardMeta, skeletonListMeta, skeletonMeta, skeletonTextMeta, } from '../skeleton/skeletonMeta';
82
+ import { spatialGridMeta } from '../spatial-grid/meta';
81
83
  import { surfaceMeta } from '../surface/surfaceMeta';
82
84
  import { cardBackMeta, cardHandMeta, playingCardMeta, pokerTrainingTableMeta, tabletopTableMeta, } from '../tabletop/meta';
83
85
  import { tabListMeta } from '../tabs/tabListMeta';
@@ -185,6 +187,8 @@ export const ZORA_COMPONENT_META = finalizeFeatureMetadata({
185
187
  Explorer: explorerMeta,
186
188
  FileExplorer: fileExplorerMeta,
187
189
  MediaExplorer: mediaExplorerMeta,
190
+ GridLineOverlay: gridLineOverlayMeta,
191
+ GridRuler: gridRulerMeta,
188
192
  GridView: gridViewMeta,
189
193
  TileGrid: tileGridMeta,
190
194
  Hero: heroMeta,
@@ -202,6 +206,7 @@ export const ZORA_COMPONENT_META = finalizeFeatureMetadata({
202
206
  ScanOverlay: scanOverlayMeta,
203
207
  SectionHeader: sectionHeaderMeta,
204
208
  SelectableItem: selectableItemMeta,
209
+ SpatialGrid: spatialGridMeta,
205
210
  SelectionProvider: selectionProviderMeta,
206
211
  PaletteItem: paletteItemMeta,
207
212
  Timeline: timelineMeta,