@ankhorage/zora 16.0.0 → 17.0.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 (654) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +15 -15
  3. package/dist/constants.d.ts +2 -1
  4. package/dist/constants.d.ts.map +1 -1
  5. package/dist/constants.js +2 -1
  6. package/dist/constants.js.map +1 -1
  7. package/dist/features/accordion/accordionItemMeta.d.ts +1 -1
  8. package/dist/features/accordion/adapters/inbound/AccordionItem.js +19 -19
  9. package/dist/features/accordion/adapters/inbound/AccordionItem.js.map +1 -1
  10. package/dist/features/app-bar/adapters/inbound/AppBar.d.ts.map +1 -1
  11. package/dist/features/app-bar/adapters/inbound/AppBar.js +6 -7
  12. package/dist/features/app-bar/adapters/inbound/AppBar.js.map +1 -1
  13. package/dist/features/auth/adapters/inbound/AuthForm.js +3 -3
  14. package/dist/features/auth/adapters/inbound/AuthForm.js.map +1 -1
  15. package/dist/features/auth/adapters/inbound/ForgotPasswordForm.js +3 -3
  16. package/dist/features/auth/adapters/inbound/ForgotPasswordForm.js.map +1 -1
  17. package/dist/features/auth/adapters/inbound/OAuthProviderList.js +3 -3
  18. package/dist/features/auth/adapters/inbound/OAuthProviderList.js.map +1 -1
  19. package/dist/features/auth/adapters/inbound/OtpForm.js +3 -3
  20. package/dist/features/auth/adapters/inbound/OtpForm.js.map +1 -1
  21. package/dist/features/auth/adapters/inbound/SignInForm.js +3 -3
  22. package/dist/features/auth/adapters/inbound/SignInForm.js.map +1 -1
  23. package/dist/features/auth/adapters/inbound/SignUpForm.js +3 -3
  24. package/dist/features/auth/adapters/inbound/SignUpForm.js.map +1 -1
  25. package/dist/features/avatar/adapters/inbound/Avatar.js +3 -3
  26. package/dist/features/avatar/adapters/inbound/Avatar.js.map +1 -1
  27. package/dist/features/avatar/adapters/inbound/AvatarGroup.js +7 -7
  28. package/dist/features/avatar/adapters/inbound/AvatarGroup.js.map +1 -1
  29. package/dist/features/bottom-sheet/adapters/inbound/BottomSheet.js +3 -3
  30. package/dist/features/bottom-sheet/adapters/inbound/BottomSheet.js.map +1 -1
  31. package/dist/features/bottom-sheet/bottomSheetMeta.d.ts +1 -1
  32. package/dist/features/breadcrumbs/adapters/inbound/Breadcrumbs.d.ts.map +1 -1
  33. package/dist/features/breadcrumbs/adapters/inbound/Breadcrumbs.js +5 -5
  34. package/dist/features/breadcrumbs/adapters/inbound/Breadcrumbs.js.map +1 -1
  35. package/dist/features/button/adapters/inbound/ButtonGroup.js +3 -3
  36. package/dist/features/button/adapters/inbound/ButtonGroup.js.map +1 -1
  37. package/dist/features/card/adapters/inbound/Card.js +12 -12
  38. package/dist/features/card/adapters/inbound/Card.js.map +1 -1
  39. package/dist/features/card/adapters/inbound/MediaCard.js +21 -21
  40. package/dist/features/card/adapters/inbound/MediaCard.js.map +1 -1
  41. package/dist/features/card/adapters/inbound/MetricCard.d.ts.map +1 -1
  42. package/dist/features/card/adapters/inbound/MetricCard.js +10 -11
  43. package/dist/features/card/adapters/inbound/MetricCard.js.map +1 -1
  44. package/dist/features/card/adapters/inbound/PostCard.d.ts.map +1 -1
  45. package/dist/features/card/adapters/inbound/PostCard.js +37 -38
  46. package/dist/features/card/adapters/inbound/PostCard.js.map +1 -1
  47. package/dist/features/card/adapters/inbound/ProductCard.d.ts.map +1 -1
  48. package/dist/features/card/adapters/inbound/ProductCard.js +17 -18
  49. package/dist/features/card/adapters/inbound/ProductCard.js.map +1 -1
  50. package/dist/features/card/cardMeta.d.ts +1 -1
  51. package/dist/features/card/mediaCardMeta.d.ts +1 -1
  52. package/dist/features/card/postCardMeta.d.ts +1 -1
  53. package/dist/features/chip/adapters/inbound/Chip.d.ts.map +1 -1
  54. package/dist/features/chip/adapters/inbound/Chip.js +5 -6
  55. package/dist/features/chip/adapters/inbound/Chip.js.map +1 -1
  56. package/dist/features/chip/adapters/inbound/ChipGroup.d.ts.map +1 -1
  57. package/dist/features/chip/adapters/inbound/ChipGroup.js +3 -3
  58. package/dist/features/chip/adapters/inbound/ChipGroup.js.map +1 -1
  59. package/dist/features/content-rail/adapters/inbound/ContentRail.d.ts.map +1 -0
  60. package/dist/features/{layout → content-rail}/adapters/inbound/ContentRail.js +9 -10
  61. package/dist/features/content-rail/adapters/inbound/ContentRail.js.map +1 -0
  62. package/dist/features/content-rail/adapters/inbound/ContentRailFlow.d.ts.map +1 -0
  63. package/dist/features/content-rail/adapters/inbound/ContentRailFlow.js.map +1 -0
  64. package/dist/features/content-rail/constants.d.ts +2 -0
  65. package/dist/features/content-rail/constants.d.ts.map +1 -0
  66. package/dist/features/content-rail/constants.js +2 -0
  67. package/dist/features/content-rail/constants.js.map +1 -0
  68. package/dist/features/{layout → content-rail}/contentRailMeta.d.ts +2 -2
  69. package/dist/features/content-rail/contentRailMeta.d.ts.map +1 -0
  70. package/dist/features/content-rail/contentRailMeta.js.map +1 -0
  71. package/dist/features/content-rail/public.d.ts +3 -0
  72. package/dist/features/content-rail/public.d.ts.map +1 -0
  73. package/dist/features/content-rail/public.js +2 -0
  74. package/dist/features/content-rail/public.js.map +1 -0
  75. package/dist/features/content-rail/utils/resolveContentRailItemWidth.d.ts.map +1 -0
  76. package/dist/features/content-rail/utils/resolveContentRailItemWidth.js.map +1 -0
  77. package/dist/features/content-rail/utils/resolveContentRailPhysicalOffset.d.ts.map +1 -0
  78. package/dist/features/content-rail/utils/resolveContentRailPhysicalOffset.js.map +1 -0
  79. package/dist/features/content-rail/utils/resolveContentRailState.d.ts.map +1 -0
  80. package/dist/features/content-rail/utils/resolveContentRailState.js.map +1 -0
  81. package/dist/features/content-rail/utils/useContentRailReducedMotion.d.ts.map +1 -0
  82. package/dist/features/content-rail/utils/useContentRailReducedMotion.js.map +1 -0
  83. package/dist/features/data-table/adapters/inbound/DataTable.d.ts.map +1 -1
  84. package/dist/features/data-table/adapters/inbound/DataTable.js +32 -32
  85. package/dist/features/data-table/adapters/inbound/DataTable.js.map +1 -1
  86. package/dist/features/date-picker/composition/DatePickerContent.js +16 -16
  87. package/dist/features/date-picker/composition/DatePickerContent.js.map +1 -1
  88. package/dist/features/date-picker/composition/DatePickerField.js +3 -3
  89. package/dist/features/date-picker/composition/DatePickerField.js.map +1 -1
  90. package/dist/features/dialog/adapters/inbound/Dialog.js +9 -9
  91. package/dist/features/dialog/adapters/inbound/Dialog.js.map +1 -1
  92. package/dist/features/dialog/dialogMeta.d.ts +2 -2
  93. package/dist/features/empty-state/adapters/inbound/EmptyState.js +5 -5
  94. package/dist/features/empty-state/adapters/inbound/EmptyState.js.map +1 -1
  95. package/dist/features/form/adapters/inbound/Form.js +3 -3
  96. package/dist/features/form/adapters/inbound/Form.js.map +1 -1
  97. package/dist/features/form/adapters/inbound/FormActions.js +4 -4
  98. package/dist/features/form/adapters/inbound/FormActions.js.map +1 -1
  99. package/dist/features/form/adapters/inbound/FormError.js +3 -3
  100. package/dist/features/form/adapters/inbound/FormError.js.map +1 -1
  101. package/dist/features/form/adapters/inbound/FormField.js +3 -3
  102. package/dist/features/form/adapters/inbound/FormField.js.map +1 -1
  103. package/dist/features/form/checkbox/adapters/inbound/CheckboxGroup.d.ts.map +1 -1
  104. package/dist/features/form/checkbox/adapters/inbound/CheckboxGroup.js +5 -6
  105. package/dist/features/form/checkbox/adapters/inbound/CheckboxGroup.js.map +1 -1
  106. package/dist/features/form/radio/adapters/inbound/RadioGroup.js +10 -10
  107. package/dist/features/form/radio/adapters/inbound/RadioGroup.js.map +1 -1
  108. package/dist/features/form/select/adapters/inbound/Select.web.js +3 -3
  109. package/dist/features/form/select/adapters/inbound/Select.web.js.map +1 -1
  110. package/dist/features/gradient/adapters/inbound/Gradient.js +5 -5
  111. package/dist/features/gradient/adapters/inbound/Gradient.js.map +1 -1
  112. package/dist/features/gradient/gradientMeta.d.ts +1 -1
  113. package/dist/features/hero/adapters/inbound/Hero.js +12 -12
  114. package/dist/features/hero/adapters/inbound/Hero.js.map +1 -1
  115. package/dist/features/image/adapters/inbound/Image.js +3 -3
  116. package/dist/features/image/adapters/inbound/Image.js.map +1 -1
  117. package/dist/features/keyboard-avoiding-view/keyboardAvoidingViewMeta.d.ts +1 -1
  118. package/dist/features/layout/adapters/inbound/AppShell.d.ts +5 -0
  119. package/dist/features/layout/adapters/inbound/AppShell.d.ts.map +1 -0
  120. package/dist/features/layout/adapters/inbound/AppShell.js +20 -0
  121. package/dist/features/layout/adapters/inbound/AppShell.js.map +1 -0
  122. package/dist/features/layout/adapters/inbound/Screen.d.ts +5 -0
  123. package/dist/features/layout/adapters/inbound/Screen.d.ts.map +1 -0
  124. package/dist/features/layout/adapters/inbound/Screen.js +22 -0
  125. package/dist/features/layout/adapters/inbound/Screen.js.map +1 -0
  126. package/dist/features/layout/adapters/inbound/ScreenSection.d.ts +5 -0
  127. package/dist/features/layout/adapters/inbound/ScreenSection.d.ts.map +1 -0
  128. package/dist/features/layout/adapters/inbound/ScreenSection.js +13 -0
  129. package/dist/features/layout/adapters/inbound/ScreenSection.js.map +1 -0
  130. package/dist/features/layout/adapters/inbound/ScrollView.d.ts +5 -0
  131. package/dist/features/layout/adapters/inbound/ScrollView.d.ts.map +1 -0
  132. package/dist/features/layout/adapters/inbound/ScrollView.js +10 -0
  133. package/dist/features/layout/adapters/inbound/ScrollView.js.map +1 -0
  134. package/dist/features/layout/adapters/inbound/View.d.ts +5 -0
  135. package/dist/features/layout/adapters/inbound/View.d.ts.map +1 -0
  136. package/dist/features/layout/adapters/inbound/View.js +10 -0
  137. package/dist/features/layout/adapters/inbound/View.js.map +1 -0
  138. package/dist/{layout/app-shell/meta.d.ts → features/layout/appShellMeta.d.ts} +1 -1
  139. package/dist/features/layout/appShellMeta.d.ts.map +1 -0
  140. package/dist/{layout/app-shell/meta.js → features/layout/appShellMeta.js} +1 -1
  141. package/dist/features/layout/appShellMeta.js.map +1 -0
  142. package/dist/features/layout/constants.d.ts +0 -1
  143. package/dist/features/layout/constants.d.ts.map +1 -1
  144. package/dist/features/layout/constants.js +0 -1
  145. package/dist/features/layout/constants.js.map +1 -1
  146. package/dist/features/layout/gridMeta.d.ts +1 -1
  147. package/dist/features/layout/public.d.ts +6 -6
  148. package/dist/features/layout/public.d.ts.map +1 -1
  149. package/dist/features/layout/public.js +5 -4
  150. package/dist/features/layout/public.js.map +1 -1
  151. package/dist/{layout/screen/meta.d.ts → features/layout/screenMeta.d.ts} +2 -2
  152. package/dist/features/layout/screenMeta.d.ts.map +1 -0
  153. package/dist/{layout/screen/meta.js → features/layout/screenMeta.js} +1 -1
  154. package/dist/features/layout/screenMeta.js.map +1 -0
  155. package/dist/{layout/screen-section/meta.d.ts → features/layout/screenSectionMeta.d.ts} +2 -2
  156. package/dist/features/layout/screenSectionMeta.d.ts.map +1 -0
  157. package/dist/{layout/screen-section/meta.js → features/layout/screenSectionMeta.js} +1 -1
  158. package/dist/features/layout/screenSectionMeta.js.map +1 -0
  159. package/dist/features/layout/{boxMeta.d.ts → scrollViewMeta.d.ts} +8 -15
  160. package/dist/features/layout/scrollViewMeta.d.ts.map +1 -0
  161. package/dist/features/layout/{boxMeta.js → scrollViewMeta.js} +4 -6
  162. package/dist/features/layout/scrollViewMeta.js.map +1 -0
  163. package/dist/features/layout/{stackMeta.d.ts → viewMeta.d.ts} +24 -4
  164. package/dist/features/layout/viewMeta.d.ts.map +1 -0
  165. package/dist/features/layout/{stackMeta.js → viewMeta.js} +8 -3
  166. package/dist/features/layout/viewMeta.js.map +1 -0
  167. package/dist/features/list/flatListMeta.d.ts +1 -1
  168. package/dist/features/list/sectionListMeta.d.ts +1 -1
  169. package/dist/features/missing-element/adapters/inbound/MissingElement.js +5 -5
  170. package/dist/features/missing-element/adapters/inbound/MissingElement.js.map +1 -1
  171. package/dist/features/pagination/adapters/inbound/Pagination.js +3 -3
  172. package/dist/features/pagination/adapters/inbound/Pagination.js.map +1 -1
  173. package/dist/{patterns/tile-grid → features/palette-item/adapters/inbound}/PaletteItem.d.ts +1 -1
  174. package/dist/features/palette-item/adapters/inbound/PaletteItem.d.ts.map +1 -0
  175. package/dist/{patterns/tile-grid → features/palette-item/adapters/inbound}/PaletteItem.js +10 -10
  176. package/dist/features/palette-item/adapters/inbound/PaletteItem.js.map +1 -0
  177. package/dist/features/palette-item/paletteItemMeta.d.ts +9 -0
  178. package/dist/features/palette-item/paletteItemMeta.d.ts.map +1 -0
  179. package/dist/features/palette-item/paletteItemMeta.js +9 -0
  180. package/dist/features/palette-item/paletteItemMeta.js.map +1 -0
  181. package/dist/features/palette-item/public.d.ts +3 -0
  182. package/dist/features/palette-item/public.d.ts.map +1 -0
  183. package/dist/features/palette-item/public.js +2 -0
  184. package/dist/features/palette-item/public.js.map +1 -0
  185. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.js +2 -2
  186. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.js.map +1 -1
  187. package/dist/features/progress/adapters/inbound/Progress.js +4 -4
  188. package/dist/features/progress/adapters/inbound/Progress.js.map +1 -1
  189. package/dist/features/progress/adapters/inbound/ProgressRing.js +10 -10
  190. package/dist/features/progress/adapters/inbound/ProgressRing.js.map +1 -1
  191. package/dist/features/rating/adapters/inbound/Rating.d.ts.map +1 -1
  192. package/dist/features/rating/adapters/inbound/Rating.js +3 -3
  193. package/dist/features/rating/adapters/inbound/Rating.js.map +1 -1
  194. package/dist/features/skeleton/adapters/inbound/Skeleton.js +2 -2
  195. package/dist/features/skeleton/adapters/inbound/Skeleton.js.map +1 -1
  196. package/dist/features/skeleton/adapters/inbound/SkeletonCard.js +5 -5
  197. package/dist/features/skeleton/adapters/inbound/SkeletonCard.js.map +1 -1
  198. package/dist/features/skeleton/adapters/inbound/SkeletonText.js +3 -3
  199. package/dist/features/skeleton/adapters/inbound/SkeletonText.js.map +1 -1
  200. package/dist/features/surface/surfaceMeta.d.ts +1 -1
  201. package/dist/features/tabs/tabPanelMeta.d.ts +1 -1
  202. package/dist/features/time-picker/composition/TimePickerContent.js +7 -7
  203. package/dist/features/time-picker/composition/TimePickerContent.js.map +1 -1
  204. package/dist/features/time-picker/composition/TimePickerField.js +3 -3
  205. package/dist/features/time-picker/composition/TimePickerField.js.map +1 -1
  206. package/dist/features/toolbar/adapters/inbound/Toolbar.js +3 -3
  207. package/dist/features/toolbar/adapters/inbound/Toolbar.js.map +1 -1
  208. package/dist/features/uploader/adapters/inbound/Uploader.js +19 -19
  209. package/dist/features/uploader/adapters/inbound/Uploader.js.map +1 -1
  210. package/dist/index.d.ts +6 -22
  211. package/dist/index.d.ts.map +1 -1
  212. package/dist/index.js +3 -11
  213. package/dist/index.js.map +1 -1
  214. package/dist/metadata/allowedChildren.d.ts +4 -4
  215. package/dist/metadata/allowedChildren.d.ts.map +1 -1
  216. package/dist/metadata/allowedChildren.js +4 -6
  217. package/dist/metadata/allowedChildren.js.map +1 -1
  218. package/dist/metadata/bindableComponentMeta.d.ts +2 -2
  219. package/dist/metadata/componentMeta.d.ts.map +1 -1
  220. package/dist/metadata/componentMeta.js +9 -22
  221. package/dist/metadata/componentMeta.js.map +1 -1
  222. package/dist/patterns/chat-list-item/ChatListItem.d.ts.map +1 -1
  223. package/dist/patterns/chat-list-item/ChatListItem.js +22 -23
  224. package/dist/patterns/chat-list-item/ChatListItem.js.map +1 -1
  225. package/dist/patterns/collection-editor/CollectionEditor.js +12 -12
  226. package/dist/patterns/collection-editor/CollectionEditor.js.map +1 -1
  227. package/dist/patterns/confirm-dialog/ConfirmDialog.js +3 -3
  228. package/dist/patterns/confirm-dialog/ConfirmDialog.js.map +1 -1
  229. package/dist/patterns/filter-bar/FilterBar.d.ts.map +1 -1
  230. package/dist/patterns/filter-bar/FilterBar.js +6 -7
  231. package/dist/patterns/filter-bar/FilterBar.js.map +1 -1
  232. package/dist/patterns/inspector-field/InspectorField.js +5 -5
  233. package/dist/patterns/inspector-field/InspectorField.js.map +1 -1
  234. package/dist/patterns/list/List.d.ts.map +1 -1
  235. package/dist/patterns/list/List.js +6 -7
  236. package/dist/patterns/list/List.js.map +1 -1
  237. package/dist/patterns/list/ListRow.d.ts.map +1 -1
  238. package/dist/patterns/list/ListRow.js +16 -17
  239. package/dist/patterns/list/ListRow.js.map +1 -1
  240. package/dist/patterns/list/ListSection.js +3 -3
  241. package/dist/patterns/list/ListSection.js.map +1 -1
  242. package/dist/patterns/message-bubble/MessageBubble.d.ts.map +1 -1
  243. package/dist/patterns/message-bubble/MessageBubble.js +21 -20
  244. package/dist/patterns/message-bubble/MessageBubble.js.map +1 -1
  245. package/dist/patterns/message-bubble/meta.d.ts +1 -1
  246. package/dist/patterns/notice/Notice.js +5 -5
  247. package/dist/patterns/notice/Notice.js.map +1 -1
  248. package/dist/patterns/notice/meta.d.ts +1 -1
  249. package/dist/patterns/panel/meta.d.ts +1 -1
  250. package/dist/patterns/reader/ReaderSurface.d.ts.map +1 -1
  251. package/dist/patterns/reader/ReaderSurface.js +18 -19
  252. package/dist/patterns/reader/ReaderSurface.js.map +1 -1
  253. package/dist/patterns/reader/meta.d.ts +2 -2
  254. package/dist/patterns/scanner/BarcodeScannerView.js +7 -7
  255. package/dist/patterns/scanner/BarcodeScannerView.js.map +1 -1
  256. package/dist/patterns/scanner/CameraPermissionView.js +5 -5
  257. package/dist/patterns/scanner/CameraPermissionView.js.map +1 -1
  258. package/dist/patterns/scanner/ScanOverlay.js +8 -8
  259. package/dist/patterns/scanner/ScanOverlay.js.map +1 -1
  260. package/dist/patterns/scanner/meta.d.ts +2 -2
  261. package/dist/patterns/section-header/SectionHeader.js +8 -8
  262. package/dist/patterns/section-header/SectionHeader.js.map +1 -1
  263. package/dist/patterns/switch-field/SwitchField.d.ts +1 -1
  264. package/dist/patterns/switch-field/SwitchField.js +3 -3
  265. package/dist/patterns/switch-field/SwitchField.js.map +1 -1
  266. package/dist/patterns/theme-composer/ThemeComposer.js +30 -30
  267. package/dist/patterns/theme-composer/ThemeComposer.js.map +1 -1
  268. package/dist/patterns/timeline/Timeline.d.ts.map +1 -1
  269. package/dist/patterns/timeline/Timeline.js +14 -15
  270. package/dist/patterns/timeline/Timeline.js.map +1 -1
  271. package/dist/patterns/tree-view/TreeItem.d.ts.map +1 -1
  272. package/dist/patterns/tree-view/TreeItem.js +9 -9
  273. package/dist/patterns/tree-view/TreeItem.js.map +1 -1
  274. package/dist/patterns/tree-view/TreeView.js +3 -3
  275. package/dist/patterns/tree-view/TreeView.js.map +1 -1
  276. package/dist/registry.d.ts.map +1 -1
  277. package/dist/registry.js +5 -23
  278. package/dist/registry.js.map +1 -1
  279. package/dist/types/button-group.d.ts +2 -2
  280. package/dist/types/button-group.d.ts.map +1 -1
  281. package/dist/types/button-group.js.map +1 -1
  282. package/dist/types/gradient.d.ts +6 -6
  283. package/dist/types/gradient.d.ts.map +1 -1
  284. package/dist/types/gradient.js.map +1 -1
  285. package/dist/types/layout.d.ts +22 -4
  286. package/dist/types/layout.d.ts.map +1 -1
  287. package/dist/types/layout.js.map +1 -1
  288. package/dist/types/palette-item.d.ts +13 -0
  289. package/dist/types/palette-item.d.ts.map +1 -0
  290. package/dist/types/palette-item.js +2 -0
  291. package/dist/types/palette-item.js.map +1 -0
  292. package/dist/types/skeleton.d.ts +5 -5
  293. package/dist/types/skeleton.d.ts.map +1 -1
  294. package/dist/types/skeleton.js.map +1 -1
  295. package/package.json +2 -2
  296. package/src/audit.test.ts +7 -11
  297. package/src/constants.ts +2 -1
  298. package/src/expo57Migration.test.ts +4 -3
  299. package/src/features/accordion/adapters/inbound/AccordionItem.tsx +19 -19
  300. package/src/features/app-bar/adapters/inbound/AppBar.tsx +6 -7
  301. package/src/features/auth/adapters/inbound/AuthForm.tsx +3 -3
  302. package/src/features/auth/adapters/inbound/ForgotPasswordForm.tsx +3 -3
  303. package/src/features/auth/adapters/inbound/OAuthProviderList.tsx +3 -3
  304. package/src/features/auth/adapters/inbound/OtpForm.tsx +3 -3
  305. package/src/features/auth/adapters/inbound/SignInForm.tsx +3 -3
  306. package/src/features/auth/adapters/inbound/SignUpForm.tsx +3 -3
  307. package/src/features/avatar/adapters/inbound/Avatar.tsx +3 -3
  308. package/src/features/avatar/adapters/inbound/AvatarGroup.tsx +7 -7
  309. package/src/features/bottom-sheet/adapters/inbound/BottomSheet.tsx +3 -3
  310. package/src/features/bottom-sheet/public.test.ts +1 -1
  311. package/src/features/breadcrumbs/adapters/inbound/Breadcrumbs.tsx +5 -5
  312. package/src/features/button/adapters/inbound/ButtonGroup.tsx +3 -3
  313. package/src/features/card/adapters/inbound/Card.tsx +12 -12
  314. package/src/features/card/adapters/inbound/MediaCard.tsx +21 -21
  315. package/src/features/card/adapters/inbound/MetricCard.tsx +10 -11
  316. package/src/features/card/adapters/inbound/PostCard.tsx +37 -38
  317. package/src/features/card/adapters/inbound/ProductCard.tsx +17 -18
  318. package/src/features/chip/adapters/inbound/Chip.tsx +5 -6
  319. package/src/features/chip/adapters/inbound/ChipGroup.tsx +3 -3
  320. package/src/features/{layout → content-rail}/adapters/inbound/ContentRail.test.ts +3 -1
  321. package/src/features/{layout → content-rail}/adapters/inbound/ContentRail.tsx +9 -10
  322. package/src/features/content-rail/constants.ts +1 -0
  323. package/src/features/content-rail/public.ts +10 -0
  324. package/src/features/data-table/adapters/inbound/DataTable.tsx +32 -32
  325. package/src/features/date-picker/composition/DatePickerContent.tsx +16 -16
  326. package/src/features/date-picker/composition/DatePickerField.tsx +3 -3
  327. package/src/features/dialog/adapters/inbound/Dialog.tsx +9 -9
  328. package/src/features/empty-state/adapters/inbound/EmptyState.tsx +5 -5
  329. package/src/features/form/adapters/inbound/Form.tsx +3 -3
  330. package/src/features/form/adapters/inbound/FormActions.tsx +4 -4
  331. package/src/features/form/adapters/inbound/FormError.tsx +3 -3
  332. package/src/features/form/adapters/inbound/FormField.tsx +3 -3
  333. package/src/features/form/checkbox/adapters/inbound/CheckboxGroup.tsx +5 -6
  334. package/src/features/form/radio/adapters/inbound/RadioGroup.tsx +10 -10
  335. package/src/features/form/select/adapters/inbound/Select.web.tsx +3 -3
  336. package/src/features/gradient/adapters/inbound/Gradient.tsx +5 -5
  337. package/src/features/hero/adapters/inbound/Hero.tsx +12 -12
  338. package/src/features/icon/utils/meta.test.ts +2 -3
  339. package/src/features/image/adapters/inbound/Image.tsx +3 -3
  340. package/src/features/layout/adapters/inbound/AppShell.test.ts +24 -0
  341. package/src/features/layout/adapters/inbound/AppShell.tsx +44 -0
  342. package/src/features/layout/adapters/inbound/Screen.tsx +50 -0
  343. package/src/{layout/screen-section → features/layout/adapters/inbound}/ScreenSection.tsx +7 -11
  344. package/src/features/layout/adapters/inbound/ScrollView.tsx +18 -0
  345. package/src/features/layout/adapters/inbound/View.tsx +18 -0
  346. package/src/features/layout/constants.ts +0 -2
  347. package/src/features/layout/public.test.ts +55 -0
  348. package/src/features/layout/public.ts +10 -16
  349. package/src/features/layout/{containerMeta.ts → scrollViewMeta.ts} +6 -3
  350. package/src/features/layout/{stackMeta.ts → viewMeta.ts} +7 -2
  351. package/src/features/missing-element/adapters/inbound/MissingElement.tsx +5 -5
  352. package/src/features/pagination/adapters/inbound/Pagination.tsx +3 -3
  353. package/src/{patterns/tile-grid → features/palette-item/adapters/inbound}/PaletteItem.tsx +11 -11
  354. package/src/{layout/sidebar-layout/meta.ts → features/palette-item/paletteItemMeta.ts} +4 -4
  355. package/src/features/palette-item/public.ts +2 -0
  356. package/src/features/popover-menu/adapters/inbound/PopoverMenu.tsx +2 -2
  357. package/src/features/progress/adapters/inbound/Progress.tsx +4 -4
  358. package/src/features/progress/adapters/inbound/ProgressRing.tsx +10 -10
  359. package/src/features/rating/adapters/inbound/Rating.tsx +3 -3
  360. package/src/features/skeleton/adapters/inbound/Skeleton.tsx +2 -2
  361. package/src/features/skeleton/adapters/inbound/SkeletonCard.tsx +5 -5
  362. package/src/features/skeleton/adapters/inbound/SkeletonText.tsx +3 -3
  363. package/src/features/time-picker/composition/TimePickerContent.tsx +7 -7
  364. package/src/features/time-picker/composition/TimePickerField.tsx +3 -3
  365. package/src/features/toolbar/adapters/inbound/Toolbar.tsx +3 -3
  366. package/src/features/uploader/adapters/inbound/Uploader.tsx +19 -19
  367. package/src/index.ts +25 -31
  368. package/src/interactionPolicy.test.ts +1 -1
  369. package/src/metadata/allowedChildren.ts +4 -6
  370. package/src/metadata/componentMeta.test.ts +4 -6
  371. package/src/metadata/componentMeta.ts +9 -22
  372. package/src/metadata/radioGroupReachability.test.ts +2 -2
  373. package/src/patterns/chat-list-item/ChatListItem.tsx +22 -23
  374. package/src/patterns/collection-editor/CollectionEditor.tsx +13 -13
  375. package/src/patterns/confirm-dialog/ConfirmDialog.tsx +3 -3
  376. package/src/patterns/filter-bar/FilterBar.tsx +6 -7
  377. package/src/patterns/inspector-field/InspectorField.tsx +5 -5
  378. package/src/patterns/list/List.tsx +6 -7
  379. package/src/patterns/list/ListRow.tsx +16 -17
  380. package/src/patterns/list/ListSection.tsx +3 -3
  381. package/src/patterns/message-bubble/MessageBubble.tsx +23 -20
  382. package/src/patterns/notice/Notice.tsx +5 -5
  383. package/src/patterns/reader/ReaderSurface.tsx +18 -19
  384. package/src/patterns/scanner/BarcodeScannerView.tsx +7 -7
  385. package/src/patterns/scanner/CameraPermissionView.tsx +5 -5
  386. package/src/patterns/scanner/ScanOverlay.tsx +8 -8
  387. package/src/patterns/section-header/SectionHeader.tsx +8 -8
  388. package/src/patterns/switch-field/SwitchField.tsx +4 -4
  389. package/src/patterns/theme-composer/ThemeComposer.tsx +30 -30
  390. package/src/patterns/timeline/Timeline.tsx +21 -15
  391. package/src/patterns/tree-view/TreeItem.tsx +12 -11
  392. package/src/patterns/tree-view/TreeView.tsx +3 -3
  393. package/src/platformAcceptance.test.ts +1 -1
  394. package/src/registry.test.ts +1 -1
  395. package/src/registry.ts +13 -23
  396. package/src/showcaseCoverage.test.ts +2 -22
  397. package/src/theme/themeScopeStructure.test.ts +10 -31
  398. package/src/types/button-group.ts +2 -2
  399. package/src/types/gradient.ts +6 -6
  400. package/src/types/layout.ts +28 -7
  401. package/src/types/palette-item.ts +14 -0
  402. package/src/types/skeleton.ts +5 -5
  403. package/dist/features/layout/adapters/inbound/Box.d.ts +0 -5
  404. package/dist/features/layout/adapters/inbound/Box.d.ts.map +0 -1
  405. package/dist/features/layout/adapters/inbound/Box.js +0 -10
  406. package/dist/features/layout/adapters/inbound/Box.js.map +0 -1
  407. package/dist/features/layout/adapters/inbound/Container.d.ts +0 -5
  408. package/dist/features/layout/adapters/inbound/Container.d.ts.map +0 -1
  409. package/dist/features/layout/adapters/inbound/Container.js +0 -10
  410. package/dist/features/layout/adapters/inbound/Container.js.map +0 -1
  411. package/dist/features/layout/adapters/inbound/ContentRail.d.ts.map +0 -1
  412. package/dist/features/layout/adapters/inbound/ContentRail.js.map +0 -1
  413. package/dist/features/layout/adapters/inbound/ContentRailFlow.d.ts.map +0 -1
  414. package/dist/features/layout/adapters/inbound/ContentRailFlow.js.map +0 -1
  415. package/dist/features/layout/adapters/inbound/Stack.d.ts +0 -5
  416. package/dist/features/layout/adapters/inbound/Stack.d.ts.map +0 -1
  417. package/dist/features/layout/adapters/inbound/Stack.js +0 -10
  418. package/dist/features/layout/adapters/inbound/Stack.js.map +0 -1
  419. package/dist/features/layout/boxMeta.d.ts.map +0 -1
  420. package/dist/features/layout/boxMeta.js.map +0 -1
  421. package/dist/features/layout/containerMeta.d.ts +0 -55
  422. package/dist/features/layout/containerMeta.d.ts.map +0 -1
  423. package/dist/features/layout/containerMeta.js +0 -10
  424. package/dist/features/layout/containerMeta.js.map +0 -1
  425. package/dist/features/layout/contentRailMeta.d.ts.map +0 -1
  426. package/dist/features/layout/contentRailMeta.js.map +0 -1
  427. package/dist/features/layout/stackMeta.d.ts.map +0 -1
  428. package/dist/features/layout/stackMeta.js.map +0 -1
  429. package/dist/features/layout/utils/resolveContentRailItemWidth.d.ts.map +0 -1
  430. package/dist/features/layout/utils/resolveContentRailItemWidth.js.map +0 -1
  431. package/dist/features/layout/utils/resolveContentRailPhysicalOffset.d.ts.map +0 -1
  432. package/dist/features/layout/utils/resolveContentRailPhysicalOffset.js.map +0 -1
  433. package/dist/features/layout/utils/resolveContentRailState.d.ts.map +0 -1
  434. package/dist/features/layout/utils/resolveContentRailState.js.map +0 -1
  435. package/dist/features/layout/utils/useContentRailReducedMotion.d.ts.map +0 -1
  436. package/dist/features/layout/utils/useContentRailReducedMotion.js.map +0 -1
  437. package/dist/foundation/Center.d.ts +0 -12
  438. package/dist/foundation/Center.d.ts.map +0 -1
  439. package/dist/foundation/Center.js +0 -13
  440. package/dist/foundation/Center.js.map +0 -1
  441. package/dist/foundation/Inline.d.ts +0 -12
  442. package/dist/foundation/Inline.d.ts.map +0 -1
  443. package/dist/foundation/Inline.js +0 -13
  444. package/dist/foundation/Inline.js.map +0 -1
  445. package/dist/foundation/Show.d.ts +0 -12
  446. package/dist/foundation/Show.d.ts.map +0 -1
  447. package/dist/foundation/Show.js +0 -13
  448. package/dist/foundation/Show.js.map +0 -1
  449. package/dist/foundation/Spacer.d.ts +0 -12
  450. package/dist/foundation/Spacer.d.ts.map +0 -1
  451. package/dist/foundation/Spacer.js +0 -13
  452. package/dist/foundation/Spacer.js.map +0 -1
  453. package/dist/foundation/index.d.ts +0 -9
  454. package/dist/foundation/index.d.ts.map +0 -1
  455. package/dist/foundation/index.js +0 -5
  456. package/dist/foundation/index.js.map +0 -1
  457. package/dist/foundation/meta.d.ts +0 -35
  458. package/dist/foundation/meta.d.ts.map +0 -1
  459. package/dist/foundation/meta.js +0 -35
  460. package/dist/foundation/meta.js.map +0 -1
  461. package/dist/layout/app-shell/AppShell.d.ts +0 -16
  462. package/dist/layout/app-shell/AppShell.d.ts.map +0 -1
  463. package/dist/layout/app-shell/AppShell.js +0 -50
  464. package/dist/layout/app-shell/AppShell.js.map +0 -1
  465. package/dist/layout/app-shell/index.d.ts +0 -3
  466. package/dist/layout/app-shell/index.d.ts.map +0 -1
  467. package/dist/layout/app-shell/index.js +0 -2
  468. package/dist/layout/app-shell/index.js.map +0 -1
  469. package/dist/layout/app-shell/meta.d.ts.map +0 -1
  470. package/dist/layout/app-shell/meta.js.map +0 -1
  471. package/dist/layout/app-shell/types.d.ts +0 -9
  472. package/dist/layout/app-shell/types.d.ts.map +0 -1
  473. package/dist/layout/app-shell/types.js +0 -2
  474. package/dist/layout/app-shell/types.js.map +0 -1
  475. package/dist/layout/screen/Screen.d.ts +0 -11
  476. package/dist/layout/screen/Screen.d.ts.map +0 -1
  477. package/dist/layout/screen/Screen.js +0 -30
  478. package/dist/layout/screen/Screen.js.map +0 -1
  479. package/dist/layout/screen/index.d.ts +0 -3
  480. package/dist/layout/screen/index.d.ts.map +0 -1
  481. package/dist/layout/screen/index.js +0 -2
  482. package/dist/layout/screen/index.js.map +0 -1
  483. package/dist/layout/screen/meta.d.ts.map +0 -1
  484. package/dist/layout/screen/meta.js.map +0 -1
  485. package/dist/layout/screen/types.d.ts +0 -10
  486. package/dist/layout/screen/types.d.ts.map +0 -1
  487. package/dist/layout/screen/types.js +0 -2
  488. package/dist/layout/screen/types.js.map +0 -1
  489. package/dist/layout/screen-section/ScreenSection.d.ts +0 -9
  490. package/dist/layout/screen-section/ScreenSection.d.ts.map +0 -1
  491. package/dist/layout/screen-section/ScreenSection.js +0 -17
  492. package/dist/layout/screen-section/ScreenSection.js.map +0 -1
  493. package/dist/layout/screen-section/index.d.ts +0 -3
  494. package/dist/layout/screen-section/index.d.ts.map +0 -1
  495. package/dist/layout/screen-section/index.js +0 -2
  496. package/dist/layout/screen-section/index.js.map +0 -1
  497. package/dist/layout/screen-section/meta.d.ts.map +0 -1
  498. package/dist/layout/screen-section/meta.js.map +0 -1
  499. package/dist/layout/screen-section/types.d.ts +0 -9
  500. package/dist/layout/screen-section/types.d.ts.map +0 -1
  501. package/dist/layout/screen-section/types.js +0 -2
  502. package/dist/layout/screen-section/types.js.map +0 -1
  503. package/dist/layout/settings-layout/SettingsLayout.d.ts +0 -7
  504. package/dist/layout/settings-layout/SettingsLayout.d.ts.map +0 -1
  505. package/dist/layout/settings-layout/SettingsLayout.js +0 -18
  506. package/dist/layout/settings-layout/SettingsLayout.js.map +0 -1
  507. package/dist/layout/settings-layout/index.d.ts +0 -3
  508. package/dist/layout/settings-layout/index.d.ts.map +0 -1
  509. package/dist/layout/settings-layout/index.js +0 -2
  510. package/dist/layout/settings-layout/index.js.map +0 -1
  511. package/dist/layout/settings-layout/meta.d.ts +0 -9
  512. package/dist/layout/settings-layout/meta.d.ts.map +0 -1
  513. package/dist/layout/settings-layout/meta.js +0 -9
  514. package/dist/layout/settings-layout/meta.js.map +0 -1
  515. package/dist/layout/settings-layout/types.d.ts +0 -10
  516. package/dist/layout/settings-layout/types.d.ts.map +0 -1
  517. package/dist/layout/settings-layout/types.js +0 -2
  518. package/dist/layout/settings-layout/types.js.map +0 -1
  519. package/dist/layout/sidebar-layout/SidebarLayout.d.ts +0 -11
  520. package/dist/layout/sidebar-layout/SidebarLayout.d.ts.map +0 -1
  521. package/dist/layout/sidebar-layout/SidebarLayout.js +0 -27
  522. package/dist/layout/sidebar-layout/SidebarLayout.js.map +0 -1
  523. package/dist/layout/sidebar-layout/index.d.ts +0 -3
  524. package/dist/layout/sidebar-layout/index.d.ts.map +0 -1
  525. package/dist/layout/sidebar-layout/index.js +0 -2
  526. package/dist/layout/sidebar-layout/index.js.map +0 -1
  527. package/dist/layout/sidebar-layout/meta.d.ts +0 -9
  528. package/dist/layout/sidebar-layout/meta.d.ts.map +0 -1
  529. package/dist/layout/sidebar-layout/meta.js +0 -9
  530. package/dist/layout/sidebar-layout/meta.js.map +0 -1
  531. package/dist/layout/sidebar-layout/resolveSidebarLayoutSizing.d.ts +0 -14
  532. package/dist/layout/sidebar-layout/resolveSidebarLayoutSizing.d.ts.map +0 -1
  533. package/dist/layout/sidebar-layout/resolveSidebarLayoutSizing.js +0 -16
  534. package/dist/layout/sidebar-layout/resolveSidebarLayoutSizing.js.map +0 -1
  535. package/dist/layout/sidebar-layout/types.d.ts +0 -12
  536. package/dist/layout/sidebar-layout/types.d.ts.map +0 -1
  537. package/dist/layout/sidebar-layout/types.js +0 -2
  538. package/dist/layout/sidebar-layout/types.js.map +0 -1
  539. package/dist/layout/topbar-layout/TopbarLayout.d.ts +0 -9
  540. package/dist/layout/topbar-layout/TopbarLayout.d.ts.map +0 -1
  541. package/dist/layout/topbar-layout/TopbarLayout.js +0 -17
  542. package/dist/layout/topbar-layout/TopbarLayout.js.map +0 -1
  543. package/dist/layout/topbar-layout/index.d.ts +0 -3
  544. package/dist/layout/topbar-layout/index.d.ts.map +0 -1
  545. package/dist/layout/topbar-layout/index.js +0 -2
  546. package/dist/layout/topbar-layout/index.js.map +0 -1
  547. package/dist/layout/topbar-layout/meta.d.ts +0 -9
  548. package/dist/layout/topbar-layout/meta.d.ts.map +0 -1
  549. package/dist/layout/topbar-layout/meta.js +0 -9
  550. package/dist/layout/topbar-layout/meta.js.map +0 -1
  551. package/dist/layout/topbar-layout/types.d.ts +0 -8
  552. package/dist/layout/topbar-layout/types.d.ts.map +0 -1
  553. package/dist/layout/topbar-layout/types.js +0 -2
  554. package/dist/layout/topbar-layout/types.js.map +0 -1
  555. package/dist/patterns/settings-row/SettingsRow.d.ts +0 -9
  556. package/dist/patterns/settings-row/SettingsRow.d.ts.map +0 -1
  557. package/dist/patterns/settings-row/SettingsRow.js +0 -24
  558. package/dist/patterns/settings-row/SettingsRow.js.map +0 -1
  559. package/dist/patterns/settings-row/index.d.ts +0 -3
  560. package/dist/patterns/settings-row/index.d.ts.map +0 -1
  561. package/dist/patterns/settings-row/index.js +0 -2
  562. package/dist/patterns/settings-row/index.js.map +0 -1
  563. package/dist/patterns/settings-row/meta.d.ts +0 -39
  564. package/dist/patterns/settings-row/meta.d.ts.map +0 -1
  565. package/dist/patterns/settings-row/meta.js +0 -39
  566. package/dist/patterns/settings-row/meta.js.map +0 -1
  567. package/dist/patterns/settings-row/types.d.ts +0 -23
  568. package/dist/patterns/settings-row/types.d.ts.map +0 -1
  569. package/dist/patterns/settings-row/types.js +0 -2
  570. package/dist/patterns/settings-row/types.js.map +0 -1
  571. package/dist/patterns/tile-grid/PaletteItem.d.ts.map +0 -1
  572. package/dist/patterns/tile-grid/PaletteItem.js.map +0 -1
  573. package/dist/patterns/tile-grid/TileGrid.d.ts +0 -9
  574. package/dist/patterns/tile-grid/TileGrid.d.ts.map +0 -1
  575. package/dist/patterns/tile-grid/TileGrid.js +0 -33
  576. package/dist/patterns/tile-grid/TileGrid.js.map +0 -1
  577. package/dist/patterns/tile-grid/index.d.ts +0 -4
  578. package/dist/patterns/tile-grid/index.d.ts.map +0 -1
  579. package/dist/patterns/tile-grid/index.js +0 -4
  580. package/dist/patterns/tile-grid/index.js.map +0 -1
  581. package/dist/patterns/tile-grid/meta.d.ts +0 -17
  582. package/dist/patterns/tile-grid/meta.d.ts.map +0 -1
  583. package/dist/patterns/tile-grid/meta.js +0 -18
  584. package/dist/patterns/tile-grid/meta.js.map +0 -1
  585. package/dist/patterns/tile-grid/types.d.ts +0 -18
  586. package/dist/patterns/tile-grid/types.d.ts.map +0 -1
  587. package/dist/patterns/tile-grid/types.js +0 -2
  588. package/dist/patterns/tile-grid/types.js.map +0 -1
  589. package/src/features/layout/adapters/inbound/Box.tsx +0 -18
  590. package/src/features/layout/adapters/inbound/Container.tsx +0 -18
  591. package/src/features/layout/adapters/inbound/Stack.tsx +0 -18
  592. package/src/features/layout/boxMeta.ts +0 -16
  593. package/src/foundation/Center.tsx +0 -26
  594. package/src/foundation/Inline.tsx +0 -26
  595. package/src/foundation/Show.tsx +0 -23
  596. package/src/foundation/Spacer.tsx +0 -26
  597. package/src/foundation/index.test.ts +0 -30
  598. package/src/foundation/index.ts +0 -8
  599. package/src/foundation/meta.ts +0 -36
  600. package/src/layout/app-shell/AppShell.test.ts +0 -24
  601. package/src/layout/app-shell/AppShell.tsx +0 -65
  602. package/src/layout/app-shell/index.ts +0 -2
  603. package/src/layout/app-shell/types.ts +0 -10
  604. package/src/layout/screen/Screen.test.ts +0 -22
  605. package/src/layout/screen/Screen.tsx +0 -47
  606. package/src/layout/screen/index.ts +0 -2
  607. package/src/layout/screen/types.ts +0 -11
  608. package/src/layout/screen-section/index.ts +0 -2
  609. package/src/layout/screen-section/types.ts +0 -10
  610. package/src/layout/settings-layout/SettingsLayout.tsx +0 -33
  611. package/src/layout/settings-layout/index.ts +0 -2
  612. package/src/layout/settings-layout/meta.ts +0 -10
  613. package/src/layout/settings-layout/types.ts +0 -11
  614. package/src/layout/sidebar-layout/SidebarLayout.test.ts +0 -35
  615. package/src/layout/sidebar-layout/SidebarLayout.tsx +0 -46
  616. package/src/layout/sidebar-layout/index.ts +0 -2
  617. package/src/layout/sidebar-layout/resolveSidebarLayoutSizing.ts +0 -18
  618. package/src/layout/sidebar-layout/types.ts +0 -14
  619. package/src/layout/topbar-layout/TopbarLayout.tsx +0 -30
  620. package/src/layout/topbar-layout/index.ts +0 -2
  621. package/src/layout/topbar-layout/meta.ts +0 -10
  622. package/src/layout/topbar-layout/types.ts +0 -9
  623. package/src/patterns/settings-row/SettingsRow.tsx +0 -53
  624. package/src/patterns/settings-row/index.ts +0 -2
  625. package/src/patterns/settings-row/meta.ts +0 -40
  626. package/src/patterns/settings-row/types.ts +0 -28
  627. package/src/patterns/tile-grid/TileGrid.tsx +0 -55
  628. package/src/patterns/tile-grid/index.ts +0 -3
  629. package/src/patterns/tile-grid/meta.ts +0 -21
  630. package/src/patterns/tile-grid/types.ts +0 -20
  631. /package/dist/features/{layout → content-rail}/adapters/inbound/ContentRail.d.ts +0 -0
  632. /package/dist/features/{layout → content-rail}/adapters/inbound/ContentRailFlow.d.ts +0 -0
  633. /package/dist/features/{layout → content-rail}/adapters/inbound/ContentRailFlow.js +0 -0
  634. /package/dist/features/{layout → content-rail}/contentRailMeta.js +0 -0
  635. /package/dist/features/{layout → content-rail}/utils/resolveContentRailItemWidth.d.ts +0 -0
  636. /package/dist/features/{layout → content-rail}/utils/resolveContentRailItemWidth.js +0 -0
  637. /package/dist/features/{layout → content-rail}/utils/resolveContentRailPhysicalOffset.d.ts +0 -0
  638. /package/dist/features/{layout → content-rail}/utils/resolveContentRailPhysicalOffset.js +0 -0
  639. /package/dist/features/{layout → content-rail}/utils/resolveContentRailState.d.ts +0 -0
  640. /package/dist/features/{layout → content-rail}/utils/resolveContentRailState.js +0 -0
  641. /package/dist/features/{layout → content-rail}/utils/useContentRailReducedMotion.d.ts +0 -0
  642. /package/dist/features/{layout → content-rail}/utils/useContentRailReducedMotion.js +0 -0
  643. /package/src/features/{layout → content-rail}/adapters/inbound/ContentRailFlow.tsx +0 -0
  644. /package/src/features/{layout → content-rail}/contentRailMeta.ts +0 -0
  645. /package/src/features/{layout → content-rail}/utils/resolveContentRailItemWidth.test.ts +0 -0
  646. /package/src/features/{layout → content-rail}/utils/resolveContentRailItemWidth.ts +0 -0
  647. /package/src/features/{layout → content-rail}/utils/resolveContentRailPhysicalOffset.test.ts +0 -0
  648. /package/src/features/{layout → content-rail}/utils/resolveContentRailPhysicalOffset.ts +0 -0
  649. /package/src/features/{layout → content-rail}/utils/resolveContentRailState.test.ts +0 -0
  650. /package/src/features/{layout → content-rail}/utils/resolveContentRailState.ts +0 -0
  651. /package/src/features/{layout → content-rail}/utils/useContentRailReducedMotion.ts +0 -0
  652. /package/src/{layout/app-shell/meta.ts → features/layout/appShellMeta.ts} +0 -0
  653. /package/src/{layout/screen/meta.ts → features/layout/screenMeta.ts} +0 -0
  654. /package/src/{layout/screen-section/meta.ts → features/layout/screenSectionMeta.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 17.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - ecc165a: Adopt the released Surface 6 native-named layout boundary. `View`, `ScrollView`, `Grid`, and `Divider` are the canonical ZORA layout primitives, while `AppShell`, `Screen`, and `ScreenSection` now live under the layout feature.
8
+
9
+ Remove the redundant `Box`, `Stack`, `Container`, `Center`, `Inline`, `Spacer`, and `Show` exports together with the specialized `SettingsLayout`, `SidebarLayout`, and `TopbarLayout` wrappers. Replace `TileGrid` with `Grid` and `SettingsRow` with `ListRow`; `ContentRail` and `PaletteItem` retain their public names under dedicated feature owners.
10
+
11
+ Update the component registry, authoring metadata, examples, acceptance coverage, and generated Paradox documentation for the new Surface 6 architecture.
12
+
3
13
  ## 16.0.0
4
14
 
5
15
  ### Major 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: v15.0.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) ![docs: paradox](././paradox/badges/docs.svg)
6
+ ![license: MIT](././paradox/badges/license.svg) ![npm: v16.0.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) ![docs: paradox](././paradox/badges/docs.svg)
7
7
 
8
8
  Opinionated React Native and React Native Web UI kit built on @ankhorage/surface.
9
9
 
@@ -26,10 +26,10 @@ import {
26
26
  DatePicker,
27
27
  Screen,
28
28
  ScreenSection,
29
- Stack,
30
29
  Text,
31
30
  TimePicker,
32
31
  useToast,
32
+ View,
33
33
  ZoraProvider,
34
34
  type ZoraTheme,
35
35
  } from '@ankhorage/zora';
@@ -72,7 +72,7 @@ function UsageContent() {
72
72
  const [time, setTime] = React.useState<string | null>(null);
73
73
 
74
74
  return (
75
- <Stack gap="m">
75
+ <View gap="m">
76
76
  <Text variant="lead">Runtime capabilities are opt-in at the app root.</Text>
77
77
  <Button
78
78
  onPress={() =>
@@ -87,7 +87,7 @@ function UsageContent() {
87
87
  </Button>
88
88
  <DatePicker label="Date" onValueChange={setDate} value={date} />
89
89
  <TimePicker label="Time" onValueChange={setTime} value={time} />
90
- </Stack>
90
+ </View>
91
91
  );
92
92
  }
93
93
 
@@ -104,17 +104,17 @@ export function NativeBottomSheetExample() {
104
104
  const [open, setOpen] = React.useState(false);
105
105
 
106
106
  return (
107
- <Stack gap="m">
107
+ <View gap="m">
108
108
  <Button onPress={() => setOpen(true)}>Open native bottom sheet</Button>
109
109
  <BottomSheet onDismiss={() => setOpen(false)} open={open}>
110
- <Stack gap="s" p="m">
110
+ <View gap="s" p="m">
111
111
  <Text variant="label">Bottom sheet content</Text>
112
112
  <Button onPress={() => setOpen(false)} variant="ghost">
113
113
  Close
114
114
  </Button>
115
- </Stack>
115
+ </View>
116
116
  </BottomSheet>
117
- </Stack>
117
+ </View>
118
118
  );
119
119
  }
120
120
  ```
@@ -135,10 +135,10 @@ import {
135
135
  DatePicker,
136
136
  Screen,
137
137
  ScreenSection,
138
- Stack,
139
138
  Text,
140
139
  TimePicker,
141
140
  useToast,
141
+ View,
142
142
  ZoraProvider,
143
143
  type ZoraTheme,
144
144
  } from '@ankhorage/zora';
@@ -191,7 +191,7 @@ function UsageContent() {
191
191
  const [time, setTime] = React.useState<string | null>(null);
192
192
 
193
193
  return (
194
- <Stack gap="m">
194
+ <View gap="m">
195
195
  <Text variant="lead">Runtime capabilities are opt-in at the app root.</Text>
196
196
  <Button
197
197
  onPress={() =>
@@ -206,7 +206,7 @@ function UsageContent() {
206
206
  </Button>
207
207
  <DatePicker label="Date" onValueChange={setDate} value={date} />
208
208
  <TimePicker label="Time" onValueChange={setTime} value={time} />
209
- </Stack>
209
+ </View>
210
210
  );
211
211
  }
212
212
 
@@ -214,17 +214,17 @@ export function NativeBottomSheetExample() {
214
214
  const [open, setOpen] = React.useState(false);
215
215
 
216
216
  return (
217
- <Stack gap="m">
217
+ <View gap="m">
218
218
  <Button onPress={() => setOpen(true)}>Open native bottom sheet</Button>
219
219
  <BottomSheet onDismiss={() => setOpen(false)} open={open}>
220
- <Stack gap="s" p="m">
220
+ <View gap="s" p="m">
221
221
  <Text variant="label">Bottom sheet content</Text>
222
222
  <Button onPress={() => setOpen(false)} variant="ghost">
223
223
  Close
224
224
  </Button>
225
- </Stack>
225
+ </View>
226
226
  </BottomSheet>
227
- </Stack>
227
+ </View>
228
228
  );
229
229
  }
230
230
  ```
@@ -19,7 +19,8 @@ export declare const FEATURE_MANIFEST_ELEMENTS: {
19
19
  readonly icon: readonly ["Icon"];
20
20
  readonly image: readonly ["Image"];
21
21
  readonly 'keyboard-avoiding-view': readonly ["KeyboardAvoidingView"];
22
- readonly layout: readonly ["Box", "Container", "ContentRail", "Divider", "Grid", "Stack"];
22
+ readonly 'content-rail': readonly ["ContentRail"];
23
+ readonly layout: readonly ["Divider", "Grid", "Screen", "ScreenSection", "ScrollView", "View"];
23
24
  readonly list: readonly ["FlatList", "SectionList"];
24
25
  readonly pagination: readonly ["Pagination"];
25
26
  readonly rating: readonly ["Rating"];
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAC;AAEX,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkC5B,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAC;AAEX,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC5B,CAAC"}
package/dist/constants.js CHANGED
@@ -26,7 +26,8 @@ export const FEATURE_MANIFEST_ELEMENTS = {
26
26
  icon: ['Icon'],
27
27
  image: ['Image'],
28
28
  'keyboard-avoiding-view': ['KeyboardAvoidingView'],
29
- layout: ['Box', 'Container', 'ContentRail', 'Divider', 'Grid', 'Stack'],
29
+ 'content-rail': ['ContentRail'],
30
+ layout: ['Divider', 'Grid', 'Screen', 'ScreenSection', 'ScrollView', 'View'],
30
31
  list: ['FlatList', 'SectionList'],
31
32
  pagination: ['Pagination'],
32
33
  rating: ['Rating'],
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,SAAS,EAAE,OAAO;IAClB,KAAK,EAAE,WAAW;IAClB,qBAAqB,EAAE,IAAI;CACnB,CAAC;AAEX,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,IAAI,EAAE;QACJ,oBAAoB;QACpB,qBAAqB;QACrB,mBAAmB;QACnB,SAAS;QACT,YAAY;QACZ,YAAY;KACb;IACD,OAAO,EAAE,CAAC,SAAS,CAAC;IACpB,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,CAAC;IACpE,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC3B,YAAY,EAAE,CAAC,WAAW,CAAC;IAC3B,aAAa,EAAE,CAAC,YAAY,CAAC;IAC7B,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC;IACxC,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,MAAM,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC;IAC/C,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,wBAAwB,EAAE,CAAC,sBAAsB,CAAC;IAClD,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;IACvE,IAAI,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC;IACjC,UAAU,EAAE,CAAC,YAAY,CAAC;IAC1B,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,QAAQ,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC;IACtE,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC;IAC5C,OAAO,EAAE,CAAC,SAAS,CAAC;IACpB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC/B,aAAa,EAAE,CAAC,YAAY,CAAC;IAC7B,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,cAAc,EAAE,CAAC,aAAa,CAAC;CACvB,CAAC","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 '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', 'FormField'],\n gradient: ['Gradient'],\n button: ['Button', 'IconButton', 'ButtonGroup'],\n icon: ['Icon'],\n image: ['Image'],\n 'keyboard-avoiding-view': ['KeyboardAvoidingView'],\n layout: ['Box', 'Container', 'ContentRail', 'Divider', 'Grid', 'Stack'],\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} as const;\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,SAAS,EAAE,OAAO;IAClB,KAAK,EAAE,WAAW;IAClB,qBAAqB,EAAE,IAAI;CACnB,CAAC;AAEX,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,IAAI,EAAE;QACJ,oBAAoB;QACpB,qBAAqB;QACrB,mBAAmB;QACnB,SAAS;QACT,YAAY;QACZ,YAAY;KACb;IACD,OAAO,EAAE,CAAC,SAAS,CAAC;IACpB,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,CAAC;IACpE,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC3B,YAAY,EAAE,CAAC,WAAW,CAAC;IAC3B,aAAa,EAAE,CAAC,YAAY,CAAC;IAC7B,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC;IACxC,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,MAAM,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC;IAC/C,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,wBAAwB,EAAE,CAAC,sBAAsB,CAAC;IAClD,cAAc,EAAE,CAAC,aAAa,CAAC;IAC/B,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,CAAC;IAC5E,IAAI,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC;IACjC,UAAU,EAAE,CAAC,YAAY,CAAC;IAC1B,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,QAAQ,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC;IACtE,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC;IAC5C,OAAO,EAAE,CAAC,SAAS,CAAC;IACpB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC/B,aAAa,EAAE,CAAC,YAAY,CAAC;IAC7B,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,cAAc,EAAE,CAAC,aAAa,CAAC;CACvB,CAAC","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 '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', 'FormField'],\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', 'ScreenSection', 'ScrollView', 'View'],\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} as const;\n"]}
@@ -3,7 +3,7 @@ export declare const accordionItemMeta: {
3
3
  readonly category: "component";
4
4
  readonly description: "One expandable accordion item with authored content and optional actions.";
5
5
  readonly directManifestNode: true;
6
- readonly allowedChildren: readonly ["ActivityIndicator", "ForgotPasswordForm", "OAuthProviderButton", "OAuthProviderList", "OtpForm", "SignInForm", "SignUpForm", "Accordion", "Surface", "Avatar", "AvatarGroup", "Badge", "MediaCard", "MetricCard", "Chip", "ChipGroup", "DataTable", "DatePicker", "Dialog", "Pagination", "Rating", "SearchInput", "Tabs", "Toolbar", "Skeleton", "SkeletonCard", "SkeletonList", "SkeletonText", "IconButton", "Uploader", "FlatList", "SectionList", "BottomSheet", "ProductCard", "Box", "Stack", "Grid", "Gradient", "Container", "Divider", "Text", "Heading", "Icon", "Image", "Hero", "KeyboardAvoidingView", "Button", "ButtonGroup", "RadioGroup", "ThemeModeToggle", "TextInput", "TimePicker", "Form", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem", "MessageBubble", "ProgressRing", "ReaderSurface", "ContentRail", "MissingElement"];
6
+ readonly allowedChildren: readonly ["ActivityIndicator", "ForgotPasswordForm", "OAuthProviderButton", "OAuthProviderList", "OtpForm", "SignInForm", "SignUpForm", "Accordion", "Surface", "Avatar", "AvatarGroup", "Badge", "MediaCard", "MetricCard", "Chip", "ChipGroup", "DataTable", "DatePicker", "Dialog", "Pagination", "Rating", "SearchInput", "Tabs", "Toolbar", "Skeleton", "SkeletonCard", "SkeletonList", "SkeletonText", "IconButton", "Uploader", "FlatList", "SectionList", "BottomSheet", "ProductCard", "View", "ScrollView", "Grid", "Gradient", "Divider", "Text", "Heading", "Icon", "Image", "Hero", "KeyboardAvoidingView", "Button", "ButtonGroup", "RadioGroup", "ThemeModeToggle", "TextInput", "TimePicker", "Form", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "PostCard", "ChatListItem", "MessageBubble", "ProgressRing", "ReaderSurface", "ContentRail", "MissingElement"];
7
7
  readonly blueprint: {
8
8
  readonly label: "Accordion item";
9
9
  readonly defaultProps: {
@@ -2,7 +2,7 @@ import { AccordionContent as SurfaceAccordionContent, AccordionItem as SurfaceAc
2
2
  import React from 'react';
3
3
  import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
4
4
  import { Icon } from '../../../icon/public';
5
- import { Box, Divider, Stack } from '../../../layout/public';
5
+ import { Divider, View } from '../../../layout/public';
6
6
  import { Heading, Text } from '../../../typography/public';
7
7
  import { AccordionPresentationContext } from '../../composition/AccordionPresentationContext';
8
8
  /*** Renders one opinionated ZORA accordion item over Surface trigger/content primitives. */
@@ -16,37 +16,37 @@ function AccordionItemInner({ themeId: _themeId, mode: _mode, actions, children,
16
16
  }
17
17
  const open = presentation.openValues.includes(value);
18
18
  return (<SurfaceAccordionItem {...surfaceItemProps} disabled={disabled} interactionPolicy={interactionPolicy} testID={testID} value={value}>
19
- <Stack gap="none">
20
- <Stack align="center" direction="row" gap="s">
21
- <Box flex={1}>
19
+ <View gap="none">
20
+ <View align="center" direction="row" gap="s">
21
+ <View flex={1}>
22
22
  <SurfaceAccordionTrigger interactionPolicy={interactionPolicy} style={triggerStyle}>
23
- <Box px="m" py="m">
24
- <Stack align="center" direction="row" gap="m">
23
+ <View px="m" py="m">
24
+ <View align="center" direction="row" gap="m">
25
25
  {icon ? <Icon {...icon}/> : null}
26
- <Box flex={1}>
27
- <Stack gap="xs">
26
+ <View flex={1}>
27
+ <View gap="xs">
28
28
  <Heading level={4}>{title}</Heading>
29
29
  {description ? (<Text emphasis="muted" variant="bodySmall">
30
30
  {description}
31
31
  </Text>) : null}
32
- </Stack>
33
- </Box>
32
+ </View>
33
+ </View>
34
34
  <Icon name={open ? 'chevron-up-outline' : 'chevron-down-outline'} size="m"/>
35
- </Stack>
36
- </Box>
35
+ </View>
36
+ </View>
37
37
  </SurfaceAccordionTrigger>
38
- </Box>
39
- {actions ? <Box pr="m">{actions}</Box> : null}
40
- </Stack>
38
+ </View>
39
+ {actions ? <View pr="m">{actions}</View> : null}
40
+ </View>
41
41
 
42
42
  <SurfaceAccordionContent>
43
- <Box px="m" pb="m">
44
- <Stack gap="m">{children}</Stack>
45
- </Box>
43
+ <View px="m" pb="m">
44
+ <View gap="m">{children}</View>
45
+ </View>
46
46
  </SurfaceAccordionContent>
47
47
 
48
48
  <Divider />
49
- </Stack>
49
+ </View>
50
50
  </SurfaceAccordionItem>);
51
51
  }
52
52
  //# sourceMappingURL=AccordionItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionItem.js","sourceRoot":"","sources":["../../../../../src/features/accordion/adapters/inbound/AccordionItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,IAAI,uBAAuB,EAC3C,aAAa,IAAI,oBAAoB,EACrC,gBAAgB,IAAI,uBAAuB,GAC5C,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAE9F,4FAA4F;AAC5F,MAAM,CAAC,MAAM,aAAa,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;AAEpE,MAAM,YAAY,GAAc,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAE5C,oFAAoF;AACpF,SAAS,kBAAkB,CAAC,EAC1B,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,KAAK,EACX,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,iBAAiB,EACjB,MAAM,EACN,KAAK,EACL,KAAK,EACL,GAAG,gBAAgB,EACA;IACnB,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAErD,OAAO,CACL,CAAC,oBAAoB,CACnB,IAAI,gBAAgB,CAAC,CACrB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,KAAK,CAAC,CAAC,KAAK,CAAC,CAEb;MAAA,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CACf;QAAA,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAC3C;UAAA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACX;YAAA,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CACjF;cAAA,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAChB;gBAAA,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAC3C;kBAAA,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAG,CAAC,CAAC,CAAC,IAAI,CACjC;kBAAA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACX;oBAAA,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CACb;sBAAA,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CACnC;sBAAA,CAAC,WAAW,CAAC,CAAC,CAAC,CACb,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CACxC;0BAAA,CAAC,WAAW,CACd;wBAAA,EAAE,IAAI,CAAC,CACR,CAAC,CAAC,CAAC,IAAI,CACV;oBAAA,EAAE,KAAK,CACT;kBAAA,EAAE,GAAG,CACL;kBAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,EAC5E;gBAAA,EAAE,KAAK,CACT;cAAA,EAAE,GAAG,CACP;YAAA,EAAE,uBAAuB,CAC3B;UAAA,EAAE,GAAG,CACL;UAAA,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAC/C;QAAA,EAAE,KAAK,CAEP;;QAAA,CAAC,uBAAuB,CACtB;UAAA,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAChB;YAAA,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,CAClC;UAAA,EAAE,GAAG,CACP;QAAA,EAAE,uBAAuB,CAEzB;;QAAA,CAAC,OAAO,CAAC,AAAD,EACV;MAAA,EAAE,KAAK,CACT;IAAA,EAAE,oBAAoB,CAAC,CACxB,CAAC;AACJ,CAAC","sourcesContent":["import {\n AccordionContent as SurfaceAccordionContent,\n AccordionItem as SurfaceAccordionItem,\n AccordionTrigger as SurfaceAccordionTrigger,\n} from '@ankhorage/surface';\nimport React from 'react';\nimport type { ViewStyle } from 'react-native';\n\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type { AccordionItemProps } from '../../../../types/accordion';\nimport { Icon } from '../../../icon/public';\nimport { Box, Divider, Stack } from '../../../layout/public';\nimport { Heading, Text } from '../../../typography/public';\nimport { AccordionPresentationContext } from '../../composition/AccordionPresentationContext';\n\n/*** Renders one opinionated ZORA accordion item over Surface trigger/content primitives. */\nexport const AccordionItem = withZoraThemeScope(AccordionItemInner);\n\nconst triggerStyle: ViewStyle = { flex: 1 };\n\n/*** Composes the item header, optional actions, expanded content, and separator. */\nfunction AccordionItemInner({\n themeId: _themeId,\n mode: _mode,\n actions,\n children,\n description,\n disabled,\n icon,\n interactionPolicy,\n testID,\n title,\n value,\n ...surfaceItemProps\n}: AccordionItemProps) {\n const presentation = React.use(AccordionPresentationContext);\n if (!presentation) {\n throw new Error('AccordionItem must be rendered inside Accordion.');\n }\n\n const open = presentation.openValues.includes(value);\n\n return (\n <SurfaceAccordionItem\n {...surfaceItemProps}\n disabled={disabled}\n interactionPolicy={interactionPolicy}\n testID={testID}\n value={value}\n >\n <Stack gap=\"none\">\n <Stack align=\"center\" direction=\"row\" gap=\"s\">\n <Box flex={1}>\n <SurfaceAccordionTrigger interactionPolicy={interactionPolicy} style={triggerStyle}>\n <Box px=\"m\" py=\"m\">\n <Stack align=\"center\" direction=\"row\" gap=\"m\">\n {icon ? <Icon {...icon} /> : null}\n <Box flex={1}>\n <Stack gap=\"xs\">\n <Heading level={4}>{title}</Heading>\n {description ? (\n <Text emphasis=\"muted\" variant=\"bodySmall\">\n {description}\n </Text>\n ) : null}\n </Stack>\n </Box>\n <Icon name={open ? 'chevron-up-outline' : 'chevron-down-outline'} size=\"m\" />\n </Stack>\n </Box>\n </SurfaceAccordionTrigger>\n </Box>\n {actions ? <Box pr=\"m\">{actions}</Box> : null}\n </Stack>\n\n <SurfaceAccordionContent>\n <Box px=\"m\" pb=\"m\">\n <Stack gap=\"m\">{children}</Stack>\n </Box>\n </SurfaceAccordionContent>\n\n <Divider />\n </Stack>\n </SurfaceAccordionItem>\n );\n}\n"]}
1
+ {"version":3,"file":"AccordionItem.js","sourceRoot":"","sources":["../../../../../src/features/accordion/adapters/inbound/AccordionItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n AccordionContent as SurfaceAccordionContent,\n AccordionItem as SurfaceAccordionItem,\n AccordionTrigger as SurfaceAccordionTrigger,\n} from '@ankhorage/surface';\nimport React from 'react';\nimport type { ViewStyle } from 'react-native';\n\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type { AccordionItemProps } from '../../../../types/accordion';\nimport { Icon } from '../../../icon/public';\nimport { Divider, View } from '../../../layout/public';\nimport { Heading, Text } from '../../../typography/public';\nimport { AccordionPresentationContext } from '../../composition/AccordionPresentationContext';\n\n/*** Renders one opinionated ZORA accordion item over Surface trigger/content primitives. */\nexport const AccordionItem = withZoraThemeScope(AccordionItemInner);\n\nconst triggerStyle: ViewStyle = { flex: 1 };\n\n/*** Composes the item header, optional actions, expanded content, and separator. */\nfunction AccordionItemInner({\n themeId: _themeId,\n mode: _mode,\n actions,\n children,\n description,\n disabled,\n icon,\n interactionPolicy,\n testID,\n title,\n value,\n ...surfaceItemProps\n}: AccordionItemProps) {\n const presentation = React.use(AccordionPresentationContext);\n if (!presentation) {\n throw new Error('AccordionItem must be rendered inside Accordion.');\n }\n\n const open = presentation.openValues.includes(value);\n\n return (\n <SurfaceAccordionItem\n {...surfaceItemProps}\n disabled={disabled}\n interactionPolicy={interactionPolicy}\n testID={testID}\n value={value}\n >\n <View gap=\"none\">\n <View align=\"center\" direction=\"row\" gap=\"s\">\n <View flex={1}>\n <SurfaceAccordionTrigger interactionPolicy={interactionPolicy} style={triggerStyle}>\n <View px=\"m\" py=\"m\">\n <View align=\"center\" direction=\"row\" gap=\"m\">\n {icon ? <Icon {...icon} /> : null}\n <View flex={1}>\n <View gap=\"xs\">\n <Heading level={4}>{title}</Heading>\n {description ? (\n <Text emphasis=\"muted\" variant=\"bodySmall\">\n {description}\n </Text>\n ) : null}\n </View>\n </View>\n <Icon name={open ? 'chevron-up-outline' : 'chevron-down-outline'} size=\"m\" />\n </View>\n </View>\n </SurfaceAccordionTrigger>\n </View>\n {actions ? <View pr=\"m\">{actions}</View> : null}\n </View>\n\n <SurfaceAccordionContent>\n <View px=\"m\" pb=\"m\">\n <View gap=\"m\">{children}</View>\n </View>\n </SurfaceAccordionContent>\n\n <Divider />\n </View>\n </SurfaceAccordionItem>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AppBar.d.ts","sourceRoot":"","sources":["../../../../../src/features/app-bar/adapters/inbound/AppBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAkC,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAS7F,wFAAwF;AACxF,eAAO,MAAM,MAAM,mDAAkC,CAAC"}
1
+ {"version":3,"file":"AppBar.d.ts","sourceRoot":"","sources":["../../../../../src/features/app-bar/adapters/inbound/AppBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAkC,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAS7F,wFAAwF;AACxF,eAAO,MAAM,MAAM,mDAAkC,CAAC"}
@@ -1,10 +1,9 @@
1
1
  import { AppBar as SurfaceAppBar } from '@ankhorage/surface';
2
2
  import React from 'react';
3
- import { Inline } from '../../../../foundation';
4
3
  import { useZoraTheme } from '../../../../theme/useZoraTheme';
5
4
  import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
6
5
  import { IconButton } from '../../../button/public';
7
- import { Box, Stack } from '../../../layout/public';
6
+ import { View } from '../../../layout/public';
8
7
  import { PopoverMenu } from '../../../popover-menu/public';
9
8
  import { Heading, Text } from '../../../typography/public';
10
9
  const DEFAULT_CANCEL_ICON = { name: 'close-outline' };
@@ -27,7 +26,7 @@ function AppBarInner({ themeId: _themeId, mode: _mode, title, subtitle, leading,
27
26
  title,
28
27
  });
29
28
  return (<SurfaceAppBar bg={isSelectionMode ? theme.semantics.action.primary.softBg : undefined} divider={divider} leading={resolvedLeading} safeAreaTop={safeAreaTop} testID={testID} trailing={resolvedTrailing}>
30
- {resolvedCenter ? <Box style={{ minWidth: 0 }}>{resolvedCenter}</Box> : null}
29
+ {resolvedCenter ? <View style={{ minWidth: 0 }}>{resolvedCenter}</View> : null}
31
30
  </SurfaceAppBar>);
32
31
  }
33
32
  /*** Resolves the effective AppBar mode. */
@@ -64,10 +63,10 @@ function resolveOverflowMenu(overflow, interactionPolicy, testID) {
64
63
  function resolveTrailing(actions, overflowMenu) {
65
64
  if (!actions && !overflowMenu)
66
65
  return undefined;
67
- return (<Inline align="center" gap="s" wrap="nowrap">
66
+ return (<View direction="row" align="center" gap="s" wrap="nowrap">
68
67
  {actions}
69
68
  {overflowMenu}
70
- </Inline>);
69
+ </View>);
71
70
  }
72
71
  /*** Resolves the center content for default and selection modes. */
73
72
  function resolveCenter({ children, isSelectionMode, resolvedMode, subtitle, title, }) {
@@ -80,13 +79,13 @@ function resolveCenter({ children, isSelectionMode, resolvedMode, subtitle, titl
80
79
  }
81
80
  if (title == null && subtitle == null)
82
81
  return null;
83
- return (<Stack gap="xs">
82
+ return (<View gap="xs">
84
83
  {title != null ? (<Heading ellipsizeMode="tail" level={3} numberOfLines={1} size="h5">
85
84
  {title}
86
85
  </Heading>) : null}
87
86
  {subtitle != null ? (<Text ellipsizeMode="tail" emphasis="muted" numberOfLines={1} variant="bodySmall">
88
87
  {subtitle}
89
88
  </Text>) : null}
90
- </Stack>);
89
+ </View>);
91
90
  }
92
91
  //# sourceMappingURL=AppBar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppBar.js","sourceRoot":"","sources":["../../../../../src/features/app-bar/adapters/inbound/AppBar.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AppBar as SurfaceAppBar, type ButtonIconSpec } from '@ankhorage/surface';\nimport React from 'react';\n\nimport { Inline } from '../../../../foundation';\nimport { useZoraTheme } from '../../../../theme/useZoraTheme';\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type { AppBarMode, AppBarOverflowMenu, AppBarProps } from '../../../../types/app-bar';\nimport { IconButton } from '../../../button/public';\nimport { Box, Stack } from '../../../layout/public';\nimport { PopoverMenu } from '../../../popover-menu/public';\nimport { Heading, Text } from '../../../typography/public';\n\nconst DEFAULT_CANCEL_ICON = { name: 'close-outline' } satisfies ButtonIconSpec;\nconst DEFAULT_OVERFLOW_ICON = { name: 'ellipsis-vertical' } satisfies ButtonIconSpec;\n\n/*** Renders a top app bar with title/subtitle and optional leading/trailing actions. */\nexport const AppBar = withZoraThemeScope(AppBarInner);\n\n/*** Composes the opinionated ZORA AppBar over the Surface layout primitive. */\nfunction AppBarInner({\n themeId: _themeId,\n mode: _mode,\n title,\n subtitle,\n leading,\n actions,\n overflow,\n appMode,\n children,\n safeAreaTop = true,\n divider = true,\n testID,\n interactionPolicy,\n}: AppBarProps) {\n const { theme } = useZoraTheme();\n const resolvedMode = resolveMode(appMode);\n const isSelectionMode = resolvedMode.type === 'selection';\n const resolvedLeading = leading ?? resolveSelectionLeading(resolvedMode, interactionPolicy);\n const overflowMenu = resolveOverflowMenu(overflow, interactionPolicy, testID);\n const resolvedTrailing = resolveTrailing(actions, overflowMenu);\n const resolvedCenter = resolveCenter({\n children,\n isSelectionMode,\n resolvedMode,\n subtitle,\n title,\n });\n\n return (\n <SurfaceAppBar\n bg={isSelectionMode ? theme.semantics.action.primary.softBg : undefined}\n divider={divider}\n leading={resolvedLeading}\n safeAreaTop={safeAreaTop}\n testID={testID}\n trailing={resolvedTrailing}\n >\n {resolvedCenter ? <Box style={{ minWidth: 0 }}>{resolvedCenter}</Box> : null}\n </SurfaceAppBar>\n );\n}\n\n/*** Resolves the effective AppBar mode. */\nfunction resolveMode(mode: AppBarMode | undefined): AppBarMode {\n return mode ?? { type: 'default' };\n}\n\n/*** Formats the active selection label with its optional count. */\nfunction resolveSelectionLabel({ count, label }: { count?: number; label: string }): string {\n if (count === undefined) return label;\n return `${label} (${count})`;\n}\n\n/*** Resolves the accessible label for the overflow menu trigger. */\nfunction resolveOverflowLabel(overflow: AppBarOverflowMenu): string {\n return overflow.label ?? 'More options';\n}\n\n/*** Resolves the accessible label for leaving selection mode. */\nfunction resolveCancelLabel(mode: Extract<AppBarMode, { type: 'selection' }>): string {\n return mode.cancelLabel ?? 'Cancel selection';\n}\n\n/*** Resolves the selection action shown at the leading edge. */\nfunction resolveSelectionLeading(\n mode: AppBarMode,\n interactionPolicy: AppBarProps['interactionPolicy'],\n): React.ReactNode | undefined {\n if (mode.type !== 'selection') return undefined;\n\n return (\n <IconButton\n color=\"neutral\"\n icon={mode.cancelIcon ?? DEFAULT_CANCEL_ICON}\n interactionPolicy={interactionPolicy}\n label={resolveCancelLabel(mode)}\n onPress={mode.onCancel}\n size=\"m\"\n variant=\"ghost\"\n />\n );\n}\n\n/*** Resolves the optional AppBar overflow action menu. */\nfunction resolveOverflowMenu(\n overflow: AppBarOverflowMenu | undefined,\n interactionPolicy: AppBarProps['interactionPolicy'],\n testID: string | undefined,\n): React.ReactNode {\n if (overflow === undefined || overflow.actions.length === 0) return null;\n\n return (\n <PopoverMenu\n actions={overflow.actions}\n closeOnSelect={overflow.closeOnSelect}\n interactionPolicy={interactionPolicy}\n onDismiss={overflow.onDismiss}\n testID={testID ? `${testID}-overflow` : undefined}\n trigger={({ toggle }) => (\n <IconButton\n color=\"neutral\"\n disabled={overflow.disabled}\n icon={overflow.icon ?? DEFAULT_OVERFLOW_ICON}\n interactionPolicy={interactionPolicy}\n label={resolveOverflowLabel(overflow)}\n onPress={toggle}\n size=\"m\"\n variant=\"ghost\"\n />\n )}\n />\n );\n}\n\n/*** Composes trailing actions and overflow controls. */\nfunction resolveTrailing(actions: React.ReactNode, overflowMenu: React.ReactNode): React.ReactNode {\n if (!actions && !overflowMenu) return undefined;\n return (\n <Inline align=\"center\" gap=\"s\" wrap=\"nowrap\">\n {actions}\n {overflowMenu}\n </Inline>\n );\n}\n\n/*** Resolves the center content for default and selection modes. */\nfunction resolveCenter({\n children,\n isSelectionMode,\n resolvedMode,\n subtitle,\n title,\n}: {\n children: React.ReactNode;\n isSelectionMode: boolean;\n resolvedMode: AppBarMode;\n subtitle: React.ReactNode;\n title: React.ReactNode;\n}): React.ReactNode {\n if (children !== undefined) return children;\n if (isSelectionMode && resolvedMode.type === 'selection') {\n return (\n <Text emphasis=\"default\" numberOfLines={1} variant=\"label\" weight=\"semiBold\">\n {resolveSelectionLabel(resolvedMode)}\n </Text>\n );\n }\n if (title == null && subtitle == null) return null;\n\n return (\n <Stack gap=\"xs\">\n {title != null ? (\n <Heading ellipsizeMode=\"tail\" level={3} numberOfLines={1} size=\"h5\">\n {title}\n </Heading>\n ) : null}\n {subtitle != null ? (\n <Text ellipsizeMode=\"tail\" emphasis=\"muted\" numberOfLines={1} variant=\"bodySmall\">\n {subtitle}\n </Text>\n ) : null}\n </Stack>\n );\n}\n"]}
1
+ {"version":3,"file":"AppBar.js","sourceRoot":"","sources":["../../../../../src/features/app-bar/adapters/inbound/AppBar.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AppBar as SurfaceAppBar, type ButtonIconSpec } from '@ankhorage/surface';\nimport React from 'react';\n\nimport { useZoraTheme } from '../../../../theme/useZoraTheme';\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type { AppBarMode, AppBarOverflowMenu, AppBarProps } from '../../../../types/app-bar';\nimport { IconButton } from '../../../button/public';\nimport { View } from '../../../layout/public';\nimport { PopoverMenu } from '../../../popover-menu/public';\nimport { Heading, Text } from '../../../typography/public';\n\nconst DEFAULT_CANCEL_ICON = { name: 'close-outline' } satisfies ButtonIconSpec;\nconst DEFAULT_OVERFLOW_ICON = { name: 'ellipsis-vertical' } satisfies ButtonIconSpec;\n\n/*** Renders a top app bar with title/subtitle and optional leading/trailing actions. */\nexport const AppBar = withZoraThemeScope(AppBarInner);\n\n/*** Composes the opinionated ZORA AppBar over the Surface layout primitive. */\nfunction AppBarInner({\n themeId: _themeId,\n mode: _mode,\n title,\n subtitle,\n leading,\n actions,\n overflow,\n appMode,\n children,\n safeAreaTop = true,\n divider = true,\n testID,\n interactionPolicy,\n}: AppBarProps) {\n const { theme } = useZoraTheme();\n const resolvedMode = resolveMode(appMode);\n const isSelectionMode = resolvedMode.type === 'selection';\n const resolvedLeading = leading ?? resolveSelectionLeading(resolvedMode, interactionPolicy);\n const overflowMenu = resolveOverflowMenu(overflow, interactionPolicy, testID);\n const resolvedTrailing = resolveTrailing(actions, overflowMenu);\n const resolvedCenter = resolveCenter({\n children,\n isSelectionMode,\n resolvedMode,\n subtitle,\n title,\n });\n\n return (\n <SurfaceAppBar\n bg={isSelectionMode ? theme.semantics.action.primary.softBg : undefined}\n divider={divider}\n leading={resolvedLeading}\n safeAreaTop={safeAreaTop}\n testID={testID}\n trailing={resolvedTrailing}\n >\n {resolvedCenter ? <View style={{ minWidth: 0 }}>{resolvedCenter}</View> : null}\n </SurfaceAppBar>\n );\n}\n\n/*** Resolves the effective AppBar mode. */\nfunction resolveMode(mode: AppBarMode | undefined): AppBarMode {\n return mode ?? { type: 'default' };\n}\n\n/*** Formats the active selection label with its optional count. */\nfunction resolveSelectionLabel({ count, label }: { count?: number; label: string }): string {\n if (count === undefined) return label;\n return `${label} (${count})`;\n}\n\n/*** Resolves the accessible label for the overflow menu trigger. */\nfunction resolveOverflowLabel(overflow: AppBarOverflowMenu): string {\n return overflow.label ?? 'More options';\n}\n\n/*** Resolves the accessible label for leaving selection mode. */\nfunction resolveCancelLabel(mode: Extract<AppBarMode, { type: 'selection' }>): string {\n return mode.cancelLabel ?? 'Cancel selection';\n}\n\n/*** Resolves the selection action shown at the leading edge. */\nfunction resolveSelectionLeading(\n mode: AppBarMode,\n interactionPolicy: AppBarProps['interactionPolicy'],\n): React.ReactNode | undefined {\n if (mode.type !== 'selection') return undefined;\n\n return (\n <IconButton\n color=\"neutral\"\n icon={mode.cancelIcon ?? DEFAULT_CANCEL_ICON}\n interactionPolicy={interactionPolicy}\n label={resolveCancelLabel(mode)}\n onPress={mode.onCancel}\n size=\"m\"\n variant=\"ghost\"\n />\n );\n}\n\n/*** Resolves the optional AppBar overflow action menu. */\nfunction resolveOverflowMenu(\n overflow: AppBarOverflowMenu | undefined,\n interactionPolicy: AppBarProps['interactionPolicy'],\n testID: string | undefined,\n): React.ReactNode {\n if (overflow === undefined || overflow.actions.length === 0) return null;\n\n return (\n <PopoverMenu\n actions={overflow.actions}\n closeOnSelect={overflow.closeOnSelect}\n interactionPolicy={interactionPolicy}\n onDismiss={overflow.onDismiss}\n testID={testID ? `${testID}-overflow` : undefined}\n trigger={({ toggle }) => (\n <IconButton\n color=\"neutral\"\n disabled={overflow.disabled}\n icon={overflow.icon ?? DEFAULT_OVERFLOW_ICON}\n interactionPolicy={interactionPolicy}\n label={resolveOverflowLabel(overflow)}\n onPress={toggle}\n size=\"m\"\n variant=\"ghost\"\n />\n )}\n />\n );\n}\n\n/*** Composes trailing actions and overflow controls. */\nfunction resolveTrailing(actions: React.ReactNode, overflowMenu: React.ReactNode): React.ReactNode {\n if (!actions && !overflowMenu) return undefined;\n return (\n <View direction=\"row\" align=\"center\" gap=\"s\" wrap=\"nowrap\">\n {actions}\n {overflowMenu}\n </View>\n );\n}\n\n/*** Resolves the center content for default and selection modes. */\nfunction resolveCenter({\n children,\n isSelectionMode,\n resolvedMode,\n subtitle,\n title,\n}: {\n children: React.ReactNode;\n isSelectionMode: boolean;\n resolvedMode: AppBarMode;\n subtitle: React.ReactNode;\n title: React.ReactNode;\n}): React.ReactNode {\n if (children !== undefined) return children;\n if (isSelectionMode && resolvedMode.type === 'selection') {\n return (\n <Text emphasis=\"default\" numberOfLines={1} variant=\"label\" weight=\"semiBold\">\n {resolveSelectionLabel(resolvedMode)}\n </Text>\n );\n }\n if (title == null && subtitle == null) return null;\n\n return (\n <View gap=\"xs\">\n {title != null ? (\n <Heading ellipsizeMode=\"tail\" level={3} numberOfLines={1} size=\"h5\">\n {title}\n </Heading>\n ) : null}\n {subtitle != null ? (\n <Text ellipsizeMode=\"tail\" emphasis=\"muted\" numberOfLines={1} variant=\"bodySmall\">\n {subtitle}\n </Text>\n ) : null}\n </View>\n );\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  import React from 'react';
2
2
  import { FormActions, FormError, useFormController } from '../../../form/public';
3
- import { Stack } from '../../../layout/public';
3
+ import { View } from '../../../layout/public';
4
4
  import { AuthFormField } from './AuthFormField';
5
5
  /*** Keeps config-driven field orchestration private to the auth patterns that own it. */
6
6
  export function AuthForm({ fields, values, onChange, onSubmit, errors, error, loading = false, disabled = false, submitLabel = 'Submit', actions, testID, interactionPolicy, }) {
7
7
  const controller = useFormController({ fields, values, errors, onChange, onSubmit });
8
- return (<Stack gap="m" testID={testID}>
8
+ return (<View gap="m" testID={testID}>
9
9
  <FormError error={error}/>
10
10
  {fields.map((field) => (<AuthFormField key={field.name} disabled={disabled} error={controller.errors[field.name]} field={field} interactionPolicy={interactionPolicy} loading={loading} onChange={controller.setFieldValue} value={values[field.name]}/>))}
11
11
  <FormActions disabled={disabled} interactionPolicy={interactionPolicy} loading={loading} onSubmit={() => {
@@ -14,6 +14,6 @@ export function AuthForm({ fields, values, onChange, onSubmit, errors, error, lo
14
14
  }} submitLabel={submitLabel}>
15
15
  {actions}
16
16
  </FormActions>
17
- </Stack>);
17
+ </View>);
18
18
  }
19
19
  //# sourceMappingURL=AuthForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthForm.js","sourceRoot":"","sources":["../../../../../src/features/auth/adapters/inbound/AuthForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAiBhD,yFAAyF;AACzF,MAAM,UAAU,QAAQ,CAAuB,EAC7C,MAAM,EACN,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,KAAK,EACL,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,WAAW,GAAG,QAAQ,EACtB,OAAO,EACP,MAAM,EACN,iBAAiB,GACI;IACrB,MAAM,UAAU,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrF,OAAO,CACL,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAC5B;MAAA,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EACxB;MAAA,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,CAAC,aAAa,CACZ,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAChB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CACrC,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,QAAQ,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CACnC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAC1B,CACH,CAAC,CACF;MAAA,CAAC,WAAW,CACV,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,QAAQ,CAAC,CAAC,GAAG,EAAE;YACb,IAAI,iBAAiB,KAAK,SAAS;gBAAE,KAAK,UAAU,CAAC,YAAY,EAAE,CAAC;QACtE,CAAC,CAAC,CACF,WAAW,CAAC,CAAC,WAAW,CAAC,CAEzB;QAAA,CAAC,OAAO,CACV;MAAA,EAAE,WAAW,CACf;IAAA,EAAE,KAAK,CAAC,CACT,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\n\nimport type { ZoraBaseProps } from '../../../../theme/ZoraBaseProps';\nimport type { FormErrors, FormFieldConfig, FormValues } from '../../../../types/form';\nimport { FormActions, FormError, useFormController } from '../../../form/public';\nimport { Stack } from '../../../layout/public';\nimport { AuthFormField } from './AuthFormField';\n\ninterface AuthFormProps<TName extends string> {\n fields: readonly FormFieldConfig<TName>[];\n values: FormValues<TName>;\n onChange: (values: FormValues<TName>) => void;\n onSubmit?: (values: FormValues<TName>) => void | Promise<void>;\n errors?: FormErrors<TName>;\n error?: React.ReactNode;\n loading?: boolean;\n disabled?: boolean;\n submitLabel?: React.ReactNode;\n actions?: React.ReactNode;\n testID?: string;\n interactionPolicy?: ZoraBaseProps['interactionPolicy'];\n}\n\n/*** Keeps config-driven field orchestration private to the auth patterns that own it. */\nexport function AuthForm<TName extends string>({\n fields,\n values,\n onChange,\n onSubmit,\n errors,\n error,\n loading = false,\n disabled = false,\n submitLabel = 'Submit',\n actions,\n testID,\n interactionPolicy,\n}: AuthFormProps<TName>) {\n const controller = useFormController({ fields, values, errors, onChange, onSubmit });\n return (\n <Stack gap=\"m\" testID={testID}>\n <FormError error={error} />\n {fields.map((field) => (\n <AuthFormField\n key={field.name}\n disabled={disabled}\n error={controller.errors[field.name]}\n field={field}\n interactionPolicy={interactionPolicy}\n loading={loading}\n onChange={controller.setFieldValue}\n value={values[field.name]}\n />\n ))}\n <FormActions\n disabled={disabled}\n interactionPolicy={interactionPolicy}\n loading={loading}\n onSubmit={() => {\n if (interactionPolicy !== 'passive') void controller.handleSubmit();\n }}\n submitLabel={submitLabel}\n >\n {actions}\n </FormActions>\n </Stack>\n );\n}\n"]}
1
+ {"version":3,"file":"AuthForm.js","sourceRoot":"","sources":["../../../../../src/features/auth/adapters/inbound/AuthForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAiBhD,yFAAyF;AACzF,MAAM,UAAU,QAAQ,CAAuB,EAC7C,MAAM,EACN,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,KAAK,EACL,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,WAAW,GAAG,QAAQ,EACtB,OAAO,EACP,MAAM,EACN,iBAAiB,GACI;IACrB,MAAM,UAAU,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrF,OAAO,CACL,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAC3B;MAAA,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EACxB;MAAA,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,CAAC,aAAa,CACZ,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAChB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CACrC,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,QAAQ,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CACnC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAC1B,CACH,CAAC,CACF;MAAA,CAAC,WAAW,CACV,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,QAAQ,CAAC,CAAC,GAAG,EAAE;YACb,IAAI,iBAAiB,KAAK,SAAS;gBAAE,KAAK,UAAU,CAAC,YAAY,EAAE,CAAC;QACtE,CAAC,CAAC,CACF,WAAW,CAAC,CAAC,WAAW,CAAC,CAEzB;QAAA,CAAC,OAAO,CACV;MAAA,EAAE,WAAW,CACf;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\n\nimport type { ZoraBaseProps } from '../../../../theme/ZoraBaseProps';\nimport type { FormErrors, FormFieldConfig, FormValues } from '../../../../types/form';\nimport { FormActions, FormError, useFormController } from '../../../form/public';\nimport { View } from '../../../layout/public';\nimport { AuthFormField } from './AuthFormField';\n\ninterface AuthFormProps<TName extends string> {\n fields: readonly FormFieldConfig<TName>[];\n values: FormValues<TName>;\n onChange: (values: FormValues<TName>) => void;\n onSubmit?: (values: FormValues<TName>) => void | Promise<void>;\n errors?: FormErrors<TName>;\n error?: React.ReactNode;\n loading?: boolean;\n disabled?: boolean;\n submitLabel?: React.ReactNode;\n actions?: React.ReactNode;\n testID?: string;\n interactionPolicy?: ZoraBaseProps['interactionPolicy'];\n}\n\n/*** Keeps config-driven field orchestration private to the auth patterns that own it. */\nexport function AuthForm<TName extends string>({\n fields,\n values,\n onChange,\n onSubmit,\n errors,\n error,\n loading = false,\n disabled = false,\n submitLabel = 'Submit',\n actions,\n testID,\n interactionPolicy,\n}: AuthFormProps<TName>) {\n const controller = useFormController({ fields, values, errors, onChange, onSubmit });\n return (\n <View gap=\"m\" testID={testID}>\n <FormError error={error} />\n {fields.map((field) => (\n <AuthFormField\n key={field.name}\n disabled={disabled}\n error={controller.errors[field.name]}\n field={field}\n interactionPolicy={interactionPolicy}\n loading={loading}\n onChange={controller.setFieldValue}\n value={values[field.name]}\n />\n ))}\n <FormActions\n disabled={disabled}\n interactionPolicy={interactionPolicy}\n loading={loading}\n onSubmit={() => {\n if (interactionPolicy !== 'passive') void controller.handleSubmit();\n }}\n submitLabel={submitLabel}\n >\n {actions}\n </FormActions>\n </View>\n );\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
3
3
  import { Button } from '../../../button/public';
4
- import { Stack } from '../../../layout/public';
4
+ import { View } from '../../../layout/public';
5
5
  import { defaultIdentifiers, normalizeIdentifierKind, resolveIdentifierLabel, resolveIdentifierRules, resolveIdentifierType, } from '../../utils/authForm';
6
6
  import { AuthForm } from './AuthForm';
7
7
  function ForgotPasswordFormInner({ themeId: _themeId, mode: _mode, interactionPolicy, identifiers = defaultIdentifiers, identifierLabel, signInLabel = 'Sign in', loading = false, disabled = false, error, submitLabel = 'Send code', onSubmit, onSignIn, testID, }) {
@@ -21,13 +21,13 @@ function ForgotPasswordFormInner({ themeId: _themeId, mode: _mode, interactionPo
21
21
  identifier: formValues.identifier.trim(),
22
22
  identifierKind: normalizeIdentifierKind(formValues.identifier, identifiers),
23
23
  }), [identifiers, onSubmit]);
24
- return (<AuthForm actions={onSignIn ? (<Stack direction="row" gap="s" wrap="wrap">
24
+ return (<AuthForm actions={onSignIn ? (<View direction="row" gap="s" wrap="wrap">
25
25
  <Button disabled={disabled || loading} variant="ghost" onPress={() => {
26
26
  void onSignIn();
27
27
  }} size="s" color="neutral" interactionPolicy={interactionPolicy}>
28
28
  {signInLabel}
29
29
  </Button>
30
- </Stack>) : undefined} disabled={disabled} error={error} fields={fields} interactionPolicy={interactionPolicy} loading={loading} onChange={setValues} onSubmit={handleSubmit} submitLabel={submitLabel} testID={testID} values={values}/>);
30
+ </View>) : undefined} disabled={disabled} error={error} fields={fields} interactionPolicy={interactionPolicy} loading={loading} onChange={setValues} onSubmit={handleSubmit} submitLabel={submitLabel} testID={testID} values={values}/>);
31
31
  }
32
32
  /***
33
33
  * Password reset form pattern with validation and submit actions.
@@ -1 +1 @@
1
- {"version":3,"file":"ForgotPasswordForm.js","sourceRoot":"","sources":["../../../../../src/features/auth/adapters/inbound/ForgotPasswordForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type { ForgotPasswordFormProps } from '../../../../types/auth';\nimport type { FormFieldConfig, FormValues } from '../../../../types/form';\nimport { Button } from '../../../button/public';\nimport { Stack } from '../../../layout/public';\nimport {\n defaultIdentifiers,\n normalizeIdentifierKind,\n resolveIdentifierLabel,\n resolveIdentifierRules,\n resolveIdentifierType,\n} from '../../utils/authForm';\nimport { AuthForm } from './AuthForm';\n\ntype ForgotPasswordFieldName = 'identifier';\n\nfunction ForgotPasswordFormInner({\n themeId: _themeId,\n mode: _mode,\n interactionPolicy,\n identifiers = defaultIdentifiers,\n identifierLabel,\n signInLabel = 'Sign in',\n loading = false,\n disabled = false,\n error,\n submitLabel = 'Send code',\n onSubmit,\n onSignIn,\n testID,\n}: ForgotPasswordFormProps) {\n const [values, setValues] = React.useState<FormValues<ForgotPasswordFieldName>>({\n identifier: '',\n });\n const fields = React.useMemo<readonly FormFieldConfig<ForgotPasswordFieldName>[]>(\n () => [\n {\n name: 'identifier',\n label: identifierLabel ?? resolveIdentifierLabel(identifiers),\n type: resolveIdentifierType(identifiers),\n autoCapitalize: 'none',\n rules: resolveIdentifierRules(identifiers),\n },\n ],\n [identifierLabel, identifiers],\n );\n\n const handleSubmit = React.useCallback(\n (formValues: FormValues<ForgotPasswordFieldName>) =>\n onSubmit?.({\n identifier: formValues.identifier.trim(),\n identifierKind: normalizeIdentifierKind(formValues.identifier, identifiers),\n }),\n [identifiers, onSubmit],\n );\n\n return (\n <AuthForm\n actions={\n onSignIn ? (\n <Stack direction=\"row\" gap=\"s\" wrap=\"wrap\">\n <Button\n disabled={disabled || loading}\n variant=\"ghost\"\n onPress={() => {\n void onSignIn();\n }}\n size=\"s\"\n color=\"neutral\"\n interactionPolicy={interactionPolicy}\n >\n {signInLabel}\n </Button>\n </Stack>\n ) : undefined\n }\n disabled={disabled}\n error={error}\n fields={fields}\n interactionPolicy={interactionPolicy}\n loading={loading}\n onChange={setValues}\n onSubmit={handleSubmit}\n submitLabel={submitLabel}\n testID={testID}\n values={values}\n />\n );\n}\n\n/***\n * Password reset form pattern with validation and submit actions.\n *\n \n */\nexport const ForgotPasswordForm = withZoraThemeScope(ForgotPasswordFormInner);\n"]}
1
+ {"version":3,"file":"ForgotPasswordForm.js","sourceRoot":"","sources":["../../../../../src/features/auth/adapters/inbound/ForgotPasswordForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type { ForgotPasswordFormProps } from '../../../../types/auth';\nimport type { FormFieldConfig, FormValues } from '../../../../types/form';\nimport { Button } from '../../../button/public';\nimport { View } from '../../../layout/public';\nimport {\n defaultIdentifiers,\n normalizeIdentifierKind,\n resolveIdentifierLabel,\n resolveIdentifierRules,\n resolveIdentifierType,\n} from '../../utils/authForm';\nimport { AuthForm } from './AuthForm';\n\ntype ForgotPasswordFieldName = 'identifier';\n\nfunction ForgotPasswordFormInner({\n themeId: _themeId,\n mode: _mode,\n interactionPolicy,\n identifiers = defaultIdentifiers,\n identifierLabel,\n signInLabel = 'Sign in',\n loading = false,\n disabled = false,\n error,\n submitLabel = 'Send code',\n onSubmit,\n onSignIn,\n testID,\n}: ForgotPasswordFormProps) {\n const [values, setValues] = React.useState<FormValues<ForgotPasswordFieldName>>({\n identifier: '',\n });\n const fields = React.useMemo<readonly FormFieldConfig<ForgotPasswordFieldName>[]>(\n () => [\n {\n name: 'identifier',\n label: identifierLabel ?? resolveIdentifierLabel(identifiers),\n type: resolveIdentifierType(identifiers),\n autoCapitalize: 'none',\n rules: resolveIdentifierRules(identifiers),\n },\n ],\n [identifierLabel, identifiers],\n );\n\n const handleSubmit = React.useCallback(\n (formValues: FormValues<ForgotPasswordFieldName>) =>\n onSubmit?.({\n identifier: formValues.identifier.trim(),\n identifierKind: normalizeIdentifierKind(formValues.identifier, identifiers),\n }),\n [identifiers, onSubmit],\n );\n\n return (\n <AuthForm\n actions={\n onSignIn ? (\n <View direction=\"row\" gap=\"s\" wrap=\"wrap\">\n <Button\n disabled={disabled || loading}\n variant=\"ghost\"\n onPress={() => {\n void onSignIn();\n }}\n size=\"s\"\n color=\"neutral\"\n interactionPolicy={interactionPolicy}\n >\n {signInLabel}\n </Button>\n </View>\n ) : undefined\n }\n disabled={disabled}\n error={error}\n fields={fields}\n interactionPolicy={interactionPolicy}\n loading={loading}\n onChange={setValues}\n onSubmit={handleSubmit}\n submitLabel={submitLabel}\n testID={testID}\n values={values}\n />\n );\n}\n\n/***\n * Password reset form pattern with validation and submit actions.\n *\n \n */\nexport const ForgotPasswordForm = withZoraThemeScope(ForgotPasswordFormInner);\n"]}
@@ -1,13 +1,13 @@
1
1
  import React from 'react';
2
2
  import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
3
- import { Stack } from '../../../layout/public';
3
+ import { View } from '../../../layout/public';
4
4
  import { OAuthProviderButton } from './OAuthProviderButton';
5
5
  function OAuthProviderListInner({ themeId: _themeId, mode: _mode, interactionPolicy, providers, disabled = false, loading = false, fullWidth, layout = 'stack', size, variant, color, onProviderPress, testID, }) {
6
6
  const direction = layout === 'inline' ? 'row' : 'column';
7
7
  const resolvedFullWidth = fullWidth ?? layout === 'stack';
8
- return (<Stack direction={direction} gap="s" testID={testID} wrap={layout === 'inline' ? 'wrap' : undefined}>
8
+ return (<View direction={direction} gap="s" testID={testID} wrap={layout === 'inline' ? 'wrap' : undefined}>
9
9
  {providers.map((provider) => (<OAuthProviderButton color={color} disabled={disabled || provider.disabled} fullWidth={resolvedFullWidth} icon={provider.icon} key={provider.id} label={provider.label} loading={loading || provider.loading} onPress={onProviderPress} providerId={provider.id} size={size} variant={variant} interactionPolicy={interactionPolicy}/>))}
10
- </Stack>);
10
+ </View>);
11
11
  }
12
12
  /***
13
13
  * Renders a group of OAuth provider buttons for sign-in and auth settings flows.
@@ -1 +1 @@
1
- {"version":3,"file":"OAuthProviderList.js","sourceRoot":"","sources":["../../../../../src/features/auth/adapters/inbound/OAuthProviderList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,SAAS,sBAAsB,CAAC,EAC9B,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,KAAK,EACX,iBAAiB,EACjB,SAAS,EACT,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,KAAK,EACf,SAAS,EACT,MAAM,GAAG,OAAO,EAChB,IAAI,EACJ,OAAO,EACP,KAAK,EACL,eAAe,EACf,MAAM,GACiB;IACvB,MAAM,SAAS,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzD,MAAM,iBAAiB,GAAG,SAAS,IAAI,MAAM,KAAK,OAAO,CAAC;IAE1D,OAAO,CACL,CAAC,KAAK,CACJ,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,GAAG,CAAC,GAAG,CACP,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAE/C;MAAA,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAC3B,CAAC,mBAAmB,CAClB,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,QAAQ,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CACxC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAC7B,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CACpB,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CACjB,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CACtB,OAAO,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CACrC,OAAO,CAAC,CAAC,eAAe,CAAC,CACzB,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CACxB,IAAI,CAAC,CAAC,IAAI,CAAC,CACX,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,EACrC,CACH,CAAC,CACJ;IAAA,EAAE,KAAK,CAAC,CACT,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,sBAAsB,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type { OAuthProviderListProps } from '../../../../types/auth';\nimport { Stack } from '../../../layout/public';\nimport { OAuthProviderButton } from './OAuthProviderButton';\n\nfunction OAuthProviderListInner({\n themeId: _themeId,\n mode: _mode,\n interactionPolicy,\n providers,\n disabled = false,\n loading = false,\n fullWidth,\n layout = 'stack',\n size,\n variant,\n color,\n onProviderPress,\n testID,\n}: OAuthProviderListProps) {\n const direction = layout === 'inline' ? 'row' : 'column';\n const resolvedFullWidth = fullWidth ?? layout === 'stack';\n\n return (\n <Stack\n direction={direction}\n gap=\"s\"\n testID={testID}\n wrap={layout === 'inline' ? 'wrap' : undefined}\n >\n {providers.map((provider) => (\n <OAuthProviderButton\n color={color}\n disabled={disabled || provider.disabled}\n fullWidth={resolvedFullWidth}\n icon={provider.icon}\n key={provider.id}\n label={provider.label}\n loading={loading || provider.loading}\n onPress={onProviderPress}\n providerId={provider.id}\n size={size}\n variant={variant}\n interactionPolicy={interactionPolicy}\n />\n ))}\n </Stack>\n );\n}\n\n/***\n * Renders a group of OAuth provider buttons for sign-in and auth settings flows.\n */\nexport const OAuthProviderList = withZoraThemeScope(OAuthProviderListInner);\n"]}
1
+ {"version":3,"file":"OAuthProviderList.js","sourceRoot":"","sources":["../../../../../src/features/auth/adapters/inbound/OAuthProviderList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,SAAS,sBAAsB,CAAC,EAC9B,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,KAAK,EACX,iBAAiB,EACjB,SAAS,EACT,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,KAAK,EACf,SAAS,EACT,MAAM,GAAG,OAAO,EAChB,IAAI,EACJ,OAAO,EACP,KAAK,EACL,eAAe,EACf,MAAM,GACiB;IACvB,MAAM,SAAS,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzD,MAAM,iBAAiB,GAAG,SAAS,IAAI,MAAM,KAAK,OAAO,CAAC;IAE1D,OAAO,CACL,CAAC,IAAI,CACH,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,GAAG,CAAC,GAAG,CACP,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAE/C;MAAA,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAC3B,CAAC,mBAAmB,CAClB,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,QAAQ,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CACxC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAC7B,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CACpB,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CACjB,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CACtB,OAAO,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CACrC,OAAO,CAAC,CAAC,eAAe,CAAC,CACzB,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CACxB,IAAI,CAAC,CAAC,IAAI,CAAC,CACX,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,EACrC,CACH,CAAC,CACJ;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,sBAAsB,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type { OAuthProviderListProps } from '../../../../types/auth';\nimport { View } from '../../../layout/public';\nimport { OAuthProviderButton } from './OAuthProviderButton';\n\nfunction OAuthProviderListInner({\n themeId: _themeId,\n mode: _mode,\n interactionPolicy,\n providers,\n disabled = false,\n loading = false,\n fullWidth,\n layout = 'stack',\n size,\n variant,\n color,\n onProviderPress,\n testID,\n}: OAuthProviderListProps) {\n const direction = layout === 'inline' ? 'row' : 'column';\n const resolvedFullWidth = fullWidth ?? layout === 'stack';\n\n return (\n <View\n direction={direction}\n gap=\"s\"\n testID={testID}\n wrap={layout === 'inline' ? 'wrap' : undefined}\n >\n {providers.map((provider) => (\n <OAuthProviderButton\n color={color}\n disabled={disabled || provider.disabled}\n fullWidth={resolvedFullWidth}\n icon={provider.icon}\n key={provider.id}\n label={provider.label}\n loading={loading || provider.loading}\n onPress={onProviderPress}\n providerId={provider.id}\n size={size}\n variant={variant}\n interactionPolicy={interactionPolicy}\n />\n ))}\n </View>\n );\n}\n\n/***\n * Renders a group of OAuth provider buttons for sign-in and auth settings flows.\n */\nexport const OAuthProviderList = withZoraThemeScope(OAuthProviderListInner);\n"]}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
3
3
  import { Button } from '../../../button/public';
4
- import { Stack } from '../../../layout/public';
4
+ import { View } from '../../../layout/public';
5
5
  import { AuthForm } from './AuthForm';
6
6
  function OtpFormInner({ themeId: _themeId, mode: _mode, interactionPolicy, length = 6, otpLabel = 'Code', resendLabel = 'Resend code', resendDisabled = false, resendLoading = false, loading = false, disabled = false, error, submitLabel = 'Verify code', onSubmit, onResend, testID, }) {
7
7
  const resolvedLength = Math.max(1, length);
@@ -20,13 +20,13 @@ function OtpFormInner({ themeId: _themeId, mode: _mode, interactionPolicy, lengt
20
20
  const handleSubmit = React.useCallback((formValues) => onSubmit?.({
21
21
  otp: formValues.otp.trim(),
22
22
  }), [onSubmit]);
23
- return (<AuthForm actions={onResend ? (<Stack direction="row" gap="s" wrap="wrap">
23
+ return (<AuthForm actions={onResend ? (<View direction="row" gap="s" wrap="wrap">
24
24
  <Button disabled={disabled || loading || resendDisabled} variant="ghost" loading={resendLoading} onPress={() => {
25
25
  void onResend();
26
26
  }} size="s" color="neutral" interactionPolicy={interactionPolicy}>
27
27
  {resendLabel}
28
28
  </Button>
29
- </Stack>) : undefined} disabled={disabled} error={error} fields={fields} interactionPolicy={interactionPolicy} loading={loading} onChange={setValues} onSubmit={handleSubmit} submitLabel={submitLabel} testID={testID} values={values}/>);
29
+ </View>) : undefined} disabled={disabled} error={error} fields={fields} interactionPolicy={interactionPolicy} loading={loading} onChange={setValues} onSubmit={handleSubmit} submitLabel={submitLabel} testID={testID} values={values}/>);
30
30
  }
31
31
  /***
32
32
  * One-time passcode form pattern with digit input and submit actions.
@@ -1 +1 @@
1
- {"version":3,"file":"OtpForm.js","sourceRoot":"","sources":["../../../../../src/features/auth/adapters/inbound/OtpForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type { OtpFormProps } from '../../../../types/auth';\nimport type { FormFieldConfig, FormValues } from '../../../../types/form';\nimport { Button } from '../../../button/public';\nimport { Stack } from '../../../layout/public';\nimport { AuthForm } from './AuthForm';\n\ntype OtpFieldName = 'otp';\n\nfunction OtpFormInner({\n themeId: _themeId,\n mode: _mode,\n interactionPolicy,\n length = 6,\n otpLabel = 'Code',\n resendLabel = 'Resend code',\n resendDisabled = false,\n resendLoading = false,\n loading = false,\n disabled = false,\n error,\n submitLabel = 'Verify code',\n onSubmit,\n onResend,\n testID,\n}: OtpFormProps) {\n const resolvedLength = Math.max(1, length);\n const [values, setValues] = React.useState<FormValues<OtpFieldName>>({\n otp: '',\n });\n const fields = React.useMemo<readonly FormFieldConfig<OtpFieldName>[]>(\n () => [\n {\n name: 'otp',\n label: otpLabel,\n type: 'otp',\n maxLength: resolvedLength,\n rules: [{ kind: 'required' }, { kind: 'minLength', value: resolvedLength }],\n },\n ],\n [otpLabel, resolvedLength],\n );\n\n const handleSubmit = React.useCallback(\n (formValues: FormValues<OtpFieldName>) =>\n onSubmit?.({\n otp: formValues.otp.trim(),\n }),\n [onSubmit],\n );\n\n return (\n <AuthForm\n actions={\n onResend ? (\n <Stack direction=\"row\" gap=\"s\" wrap=\"wrap\">\n <Button\n disabled={disabled || loading || resendDisabled}\n variant=\"ghost\"\n loading={resendLoading}\n onPress={() => {\n void onResend();\n }}\n size=\"s\"\n color=\"neutral\"\n interactionPolicy={interactionPolicy}\n >\n {resendLabel}\n </Button>\n </Stack>\n ) : undefined\n }\n disabled={disabled}\n error={error}\n fields={fields}\n interactionPolicy={interactionPolicy}\n loading={loading}\n onChange={setValues}\n onSubmit={handleSubmit}\n submitLabel={submitLabel}\n testID={testID}\n values={values}\n />\n );\n}\n\n/***\n * One-time passcode form pattern with digit input and submit actions.\n *\n \n */\nexport const OtpForm = withZoraThemeScope(OtpFormInner);\n"]}
1
+ {"version":3,"file":"OtpForm.js","sourceRoot":"","sources":["../../../../../src/features/auth/adapters/inbound/OtpForm.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type { OtpFormProps } from '../../../../types/auth';\nimport type { FormFieldConfig, FormValues } from '../../../../types/form';\nimport { Button } from '../../../button/public';\nimport { View } from '../../../layout/public';\nimport { AuthForm } from './AuthForm';\n\ntype OtpFieldName = 'otp';\n\nfunction OtpFormInner({\n themeId: _themeId,\n mode: _mode,\n interactionPolicy,\n length = 6,\n otpLabel = 'Code',\n resendLabel = 'Resend code',\n resendDisabled = false,\n resendLoading = false,\n loading = false,\n disabled = false,\n error,\n submitLabel = 'Verify code',\n onSubmit,\n onResend,\n testID,\n}: OtpFormProps) {\n const resolvedLength = Math.max(1, length);\n const [values, setValues] = React.useState<FormValues<OtpFieldName>>({\n otp: '',\n });\n const fields = React.useMemo<readonly FormFieldConfig<OtpFieldName>[]>(\n () => [\n {\n name: 'otp',\n label: otpLabel,\n type: 'otp',\n maxLength: resolvedLength,\n rules: [{ kind: 'required' }, { kind: 'minLength', value: resolvedLength }],\n },\n ],\n [otpLabel, resolvedLength],\n );\n\n const handleSubmit = React.useCallback(\n (formValues: FormValues<OtpFieldName>) =>\n onSubmit?.({\n otp: formValues.otp.trim(),\n }),\n [onSubmit],\n );\n\n return (\n <AuthForm\n actions={\n onResend ? (\n <View direction=\"row\" gap=\"s\" wrap=\"wrap\">\n <Button\n disabled={disabled || loading || resendDisabled}\n variant=\"ghost\"\n loading={resendLoading}\n onPress={() => {\n void onResend();\n }}\n size=\"s\"\n color=\"neutral\"\n interactionPolicy={interactionPolicy}\n >\n {resendLabel}\n </Button>\n </View>\n ) : undefined\n }\n disabled={disabled}\n error={error}\n fields={fields}\n interactionPolicy={interactionPolicy}\n loading={loading}\n onChange={setValues}\n onSubmit={handleSubmit}\n submitLabel={submitLabel}\n testID={testID}\n values={values}\n />\n );\n}\n\n/***\n * One-time passcode form pattern with digit input and submit actions.\n *\n \n */\nexport const OtpForm = withZoraThemeScope(OtpFormInner);\n"]}