@ankhorage/zora 25.8.14 → 25.8.16

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 (47) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/dist/features/button/utils/resolveButtonThemeRecipe.d.ts +1 -1
  4. package/dist/features/registry/ZORA_BASE_COMPONENT_REGISTRY.d.ts +4 -0
  5. package/dist/features/registry/ZORA_BASE_COMPONENT_REGISTRY.d.ts.map +1 -0
  6. package/dist/features/registry/ZORA_BASE_COMPONENT_REGISTRY.js +187 -0
  7. package/dist/features/registry/ZORA_BASE_COMPONENT_REGISTRY.js.map +1 -0
  8. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.d.ts +1 -0
  9. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.d.ts.map +1 -1
  10. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.js +4 -185
  11. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.js.map +1 -1
  12. package/dist/features/registry/createZoraComponentRegistry.d.ts +4 -0
  13. package/dist/features/registry/createZoraComponentRegistry.d.ts.map +1 -0
  14. package/dist/features/registry/createZoraComponentRegistry.js +6 -0
  15. package/dist/features/registry/createZoraComponentRegistry.js.map +1 -0
  16. package/dist/features/registry/public.d.ts +2 -0
  17. package/dist/features/registry/public.d.ts.map +1 -1
  18. package/dist/features/registry/public.js +2 -0
  19. package/dist/features/registry/public.js.map +1 -1
  20. package/dist/features/registry/readerFreeRegistry.d.ts +3 -0
  21. package/dist/features/registry/readerFreeRegistry.d.ts.map +1 -0
  22. package/dist/features/registry/readerFreeRegistry.js +3 -0
  23. package/dist/features/registry/readerFreeRegistry.js.map +1 -0
  24. package/dist/index.d.ts +1 -126
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +1 -77
  27. package/dist/index.js.map +1 -1
  28. package/dist/readerFree.d.ts +129 -0
  29. package/dist/readerFree.d.ts.map +1 -0
  30. package/dist/readerFree.js +79 -0
  31. package/dist/readerFree.js.map +1 -0
  32. package/package.json +26 -11
  33. package/src/expo57Migration.test.ts +50 -0
  34. package/src/features/layout/public.test.ts +2 -1
  35. package/src/features/progress/adapters/inbound/ProgressRing.test.ts +6 -4
  36. package/src/features/reader/adapters/inbound/Reader.test.ts +1 -1
  37. package/src/features/reader/utils/resolveReaderProgress.test.ts +1 -1
  38. package/src/features/registry/ZORA_BASE_COMPONENT_REGISTRY.ts +236 -0
  39. package/src/features/registry/ZORA_COMPONENT_REGISTRY.ts +4 -233
  40. package/src/features/registry/createZoraComponentRegistry.ts +9 -0
  41. package/src/features/registry/public.ts +2 -0
  42. package/src/features/registry/readerFreeRegistry.ts +2 -0
  43. package/src/features/registry/registry.test.ts +36 -5
  44. package/src/features/uploader/public.test.ts +3 -2
  45. package/src/index.ts +1 -533
  46. package/src/interactionPolicy.test.ts +1 -1
  47. package/src/readerFree.ts +538 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readerFree.js","sourceRoot":"","sources":["../src/readerFree.ts"],"names":[],"mappings":"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","sourcesContent":["export {\n Accordion,\n AccordionItem,\n type AccordionItemProps,\n type AccordionMode,\n type AccordionMultipleProps,\n type AccordionProps,\n type AccordionSingleProps,\n} from './features/accordion/public';\nexport {\n ActivityIndicator,\n type ActivityIndicatorProps,\n} from './features/activity-indicator/public';\nexport type { AppBarMode, AppBarOverflowMenu, AppBarProps } from './features/app-bar/public';\nexport { AppBar } from './features/app-bar/public';\nexport { AppHeader, type AppHeaderProps } from './features/app-header/public';\nexport type {\n AuthFormBaseProps,\n AuthIdentifierKind,\n AuthScreenMode,\n AuthScreenProps,\n ForgotPasswordFormProps,\n ForgotPasswordFormValues,\n OAuthProviderButtonProps,\n OAuthProviderIconSpec,\n OAuthProviderItem,\n OAuthProviderListLayout,\n OAuthProviderListProps,\n OtpFormProps,\n OtpFormValues,\n SignInFormProps,\n SignInFormValues,\n SignUpFormField,\n SignUpFormProps,\n SignUpFormValues,\n} from './features/auth/public';\nexport {\n AuthScreen,\n DEFAULT_OAUTH_PROVIDER_ICONS,\n ForgotPasswordForm,\n OAuthProviderButton,\n OAuthProviderList,\n OtpForm,\n resolveOAuthProviderIcon,\n resolveOAuthProviderLabel,\n SignInForm,\n SignUpForm,\n} from './features/auth/public';\nexport type { AvatarProps, AvatarShape, AvatarSize } from './features/avatar/public';\nexport type { AvatarGroupItem, AvatarGroupProps } from './features/avatar/public';\nexport { Avatar, resolveAvatarInitials } from './features/avatar/public';\nexport { AvatarGroup } from './features/avatar/public';\nexport type { BadgeProps } from './features/badge/public';\nexport { Badge } from './features/badge/public';\nexport type { BottomSheetProps } from './features/bottom-sheet/public';\nexport { BottomSheet } from './features/bottom-sheet/public';\nexport {\n type BreadcrumbItem,\n type BreadcrumbPressEvent,\n Breadcrumbs,\n type BreadcrumbsProps,\n} from './features/breadcrumbs/public';\nexport type { ButtonProps } from './features/button/public';\nexport type {\n ButtonGroupAlign,\n ButtonGroupOrientation,\n ButtonGroupProps,\n} from './features/button/public';\nexport type { IconButtonProps } from './features/button/public';\nexport { Button } from './features/button/public';\nexport { ButtonGroup } from './features/button/public';\nexport { IconButton } from './features/button/public';\nexport type { CardProps } from './features/card/public';\nexport type { MediaCardImageProps, MediaCardProps } from './features/card/public';\nexport type { MetricCardProps } from './features/card/public';\nexport type {\n PostAction,\n PostAuthor,\n PostAuthorAvatar,\n PostCardMedia,\n PostCardProps,\n} from './features/card/public';\nexport type { ProductCardProps } from './features/card/public';\nexport { Card } from './features/card/public';\nexport { MediaCard } from './features/card/public';\nexport { MetricCard } from './features/card/public';\nexport { PostCard } from './features/card/public';\nexport { ProductCard } from './features/card/public';\nexport type {\n ChatListAvatar,\n ChatListItemProps,\n MessageBubbleAuthor,\n MessageBubbleAvatar,\n MessageBubbleDirection,\n MessageBubbleProps,\n MessageBubbleStatus,\n} from './features/chat/public';\nexport { ChatListItem, MessageBubble } from './features/chat/public';\nexport type {\n ChessBoardColorOverrides,\n ChessBoardColorScheme,\n ChessBoardOrientation,\n ChessBoardProps,\n ChessMoveAttempt,\n ChessMoveResult,\n ChessPieceCode,\n ChessPieceRenderContext,\n ChessPieceRenderer,\n ChessPieceState,\n ChessPromotionPiece,\n ChessSquareId,\n OpeningBookColorOverrides,\n OpeningBookColorScheme,\n OpeningBookMove,\n OpeningBookProps,\n} from './features/chess/public';\nexport type { ChessColorThemeShape } from './features/chess/public';\nexport { ChessBoard, chessBoardMeta, OpeningBook, openingBookMeta } from './features/chess/public';\nexport {\n chessSquares,\n createBoardSquares,\n createChessBoardColorScheme,\n createOpeningBookColorScheme,\n getLegalTargets,\n getSquareFile,\n getSquareRank,\n isLightSquare,\n readChessPieces,\n tryMove,\n} from './features/chess/public';\nexport type { ChipProps } from './features/chip/public';\nexport type { ChipGroupItem, ChipGroupProps } from './features/chip/public';\nexport { Chip } from './features/chip/public';\nexport { ChipGroup } from './features/chip/public';\nexport type {\n CollectionEditorProps,\n CollectionEditorRenderItemProps,\n} from './features/collection-editor/public';\nexport { CollectionEditor } from './features/collection-editor/public';\nexport type {\n ContentRailControlPressEvent,\n ContentRailDirection,\n ContentRailItemSize,\n ContentRailMotion,\n ContentRailProps,\n ContentRailSpacing,\n ContentRailVisibleRangeChangeEvent,\n} from './features/content-rail/public';\nexport { ContentRail } from './features/content-rail/public';\nexport type {\n DataTableCellContext,\n DataTableColumn,\n DataTableColumnAlign,\n DataTableDensity,\n DataTableProps,\n DataTableRowAction,\n DataTableSortDirection,\n DataTableSortState,\n} from './features/data-table/public';\nexport { DataTable } from './features/data-table/public';\nexport {\n DatePicker,\n type DatePickerProps,\n type DatePickerValue,\n} from './features/date-picker/public';\nexport { Dialog, type DialogProps } from './features/dialog/public';\nexport {\n EmptyState,\n type EmptyStateAction,\n type EmptyStateProps,\n} from './features/empty-state/public';\nexport type {\n ExplorerActivateEvent,\n ExplorerItem,\n ExplorerItemKind,\n ExplorerProps,\n ExplorerSelectionChangeEvent,\n ExplorerSelectionMode,\n} from './features/explorer/public';\nexport {\n Explorer,\n FileExplorer,\n MediaExplorer,\n resolveExplorerSelection,\n} from './features/explorer/public';\nexport {\n Checkbox,\n CheckboxGroup,\n type CheckboxGroupOption,\n type CheckboxGroupProps,\n type CheckboxProps,\n} from './features/form/checkbox/public';\nexport type {\n FieldProps,\n FormActionsProps,\n FormErrorProps,\n FormErrors,\n FormFieldConfig,\n FormFieldInputType,\n FormProps,\n FormValidationErrors,\n FormValidationResult,\n FormValues,\n UseFormControllerOptions,\n UseFormControllerResult,\n ValidationRule,\n} from './features/form/public';\nexport {\n Field,\n Form,\n FormActions,\n FormError,\n hasRequiredRule,\n useFormController,\n validateField,\n validateFields,\n validateValue,\n} from './features/form/public';\nexport {\n Radio,\n RadioGroup,\n type RadioGroupOption,\n type RadioGroupProps,\n type RadioProps,\n} from './features/form/radio/public';\nexport { SearchInput, type SearchInputProps } from './features/form/search-input/public';\nexport { Select, type SelectOption, type SelectProps } from './features/form/select/public';\nexport { Switch, type SwitchProps } from './features/form/switch/public';\nexport {\n TextInput,\n type TextInputProps,\n type TextInputTrailingAction,\n} from './features/form/text-input/public';\nexport type {\n GameEntityEasing,\n GameEntityMotionProps,\n GameEntityProps,\n GameFieldProps,\n GameInputZoneProps,\n GameKeyboardBinding,\n GameMeasurementProbeProps,\n GameOverlayPlacement,\n GameOverlayProps,\n GamePointerEvents,\n GameProps,\n} from './features/game/public';\nexport {\n Game,\n GameEntity,\n GameField,\n GameInputZone,\n GameMeasurementProbe,\n GameOverlay,\n} from './features/game/public';\nexport type {\n GradientColor,\n GradientColors,\n GradientLocations,\n GradientPoint,\n GradientProps,\n GradientRenderer,\n GradientRendererProps,\n GradientRendererProviderProps,\n} from './features/gradient/public';\nexport { Gradient, GradientRendererProvider } from './features/gradient/public';\nexport {\n createGridInteractionsController,\n type GridInteractionIntent,\n type GridInteractionItem,\n type GridInteractionPointer,\n GridInteractions,\n type GridInteractionsController,\n type GridInteractionsControllerProps,\n type GridInteractionSnap,\n type GridInteractionsProps,\n} from './features/grid-interactions/public';\nexport type {\n GridGuide,\n GridLineOverlayProps,\n GridRulerMark,\n GridRulerProps,\n GridRulerTickSource,\n} from './features/grid-rulers/public';\nexport { GridLineOverlay, GridRuler, resolveGridRulerMarks } from './features/grid-rulers/public';\nexport type { GridViewProps, TileGridItem, TileGridProps } from './features/grid-view/public';\nexport { GridView, layoutTileGrid, TileGrid } from './features/grid-view/public';\nexport {\n Hero,\n type HeroAction,\n type HeroAlign,\n type HeroLayout,\n type HeroProps,\n type HeroTone,\n} from './features/hero/public';\nexport type { IconProps } from './features/icon/public';\nexport { Icon } from './features/icon/public';\nexport type { ImageFit, ImageProps, SurfaceImageSource } from './features/image/public';\nexport { Image } from './features/image/public';\nexport {\n KeyboardAvoidingView,\n type KeyboardAvoidingViewBehavior,\n type KeyboardAvoidingViewProps,\n} from './features/keyboard-avoiding-view/public';\nexport type {\n AppShellProps,\n DividerProps,\n GridProps,\n ScreenProps,\n ScrollViewProps,\n ViewProps,\n} from './features/layout/public';\nexport { AppShell, Divider, Grid, Screen, ScrollView, View } from './features/layout/public';\nexport type {\n ManifestListProps,\n ManifestListSection,\n ManifestSectionListProps,\n} from './features/list/public';\nexport type {\n ListChildrenProps,\n ListItemProps,\n ListItemsProps,\n ListItemVariant,\n ListProps,\n ListSectionProps,\n} from './features/list/public';\nexport { FlatList, SectionList } from './features/list/public';\nexport { List, ListItem, ListSection } from './features/list/public';\nexport type { MatrixGridProps } from './features/matrix-grid/public';\nexport { MatrixGrid } from './features/matrix-grid/public';\nexport { MissingElement, type MissingElementProps } from './features/missing-element/public';\nexport { Pagination, type PaginationProps } from './features/pagination/public';\nexport type { PaletteItemProps } from './features/palette-item/public';\nexport { PaletteItem } from './features/palette-item/public';\nexport {\n PopoverMenu,\n type PopoverMenuAction,\n type PopoverMenuActionIntent,\n type PopoverMenuProps,\n} from './features/popover-menu/public';\nexport {\n Progress,\n type ProgressProps,\n ProgressRing,\n type ProgressRingProps,\n} from './features/progress/public';\nexport { Rating, type RatingProps } from './features/rating/public';\nexport type {\n ZoraBindableComponentType,\n ZoraComponentBlueprint,\n ZoraComponentCategory,\n ZoraComponentEventMeta,\n ZoraComponentEventPayloadFieldMeta,\n ZoraComponentEventPayloadFieldType,\n ZoraComponentEventPayloadKind,\n ZoraComponentI18nMeta,\n ZoraComponentManifestPolicy,\n ZoraComponentMeta,\n ZoraComponentMetaRegistry,\n ZoraComponentPropArrayItemSchema,\n ZoraComponentPropAuthoring,\n ZoraComponentPropSchema,\n ZoraComponentPropType,\n ZoraComponentPropValue,\n ZoraComponentSlotMeta,\n ZoraThemeRecipeBooleanFieldMeta,\n ZoraThemeRecipeChoiceFieldMeta,\n ZoraThemeRecipeFieldMeta,\n ZoraThemeRecipeKind,\n ZoraThemeRecipeMeta,\n ZoraThemeRecipeMetaRegistry,\n ZoraThemeRecipeTokenFieldMeta,\n ZoraThemeTokenFamily,\n} from './features/registry';\nexport {\n ZORA_BINDABLE_COMPONENT_META,\n ZORA_COMPONENT_META,\n ZORA_THEME_RECIPE_META,\n ZORA_THEME_TOKEN_FAMILIES,\n} from './features/registry';\nexport {\n createZoraComponentRegistry,\n ZORA_BASE_COMPONENT_REGISTRY,\n} from './features/registry/readerFreeRegistry';\nexport type {\n BarcodeScannerViewProps,\n BarcodeScanResult,\n CameraPermissionStatus,\n CameraPermissionViewProps,\n ScanOverlayProps,\n} from './features/scanner/public';\nexport { BarcodeScannerView, CameraPermissionView, ScanOverlay } from './features/scanner/public';\nexport {\n ScreenSection,\n type ScreenSectionProps,\n SectionHeader,\n type SectionHeaderProps,\n} from './features/section/public';\nexport type {\n SelectableItemProps,\n SelectableItemState,\n SelectionIntent,\n SelectionMode,\n SelectionProviderProps,\n SelectionTrigger,\n UseSelectionResult,\n} from './features/selection/public';\nexport { SelectableItem, SelectionProvider, useSelection } from './features/selection/public';\nexport {\n Skeleton,\n SkeletonCard,\n type SkeletonCardProps,\n type SkeletonDimension,\n SkeletonList,\n type SkeletonListProps,\n type SkeletonListVariant,\n type SkeletonProps,\n type SkeletonRadius,\n SkeletonText,\n type SkeletonTextProps,\n} from './features/skeleton/public';\nexport type {\n SpatialGridItem,\n SpatialGridItemState,\n SpatialGridProps,\n} from './features/spatial-grid/public';\nexport { SpatialGrid } from './features/spatial-grid/public';\nexport type { SurfaceProps, SurfaceVariant } from './features/surface/public';\nexport { Surface } from './features/surface/public';\nexport type {\n CardBackProps,\n CardHandProps,\n CreatePokerTrainingTableStateOptions,\n CreateTabletopGameSeatsInput,\n PlayingCardProps,\n PlayingCardSuit,\n PlayingCardValue,\n PokerTrainingPlayer,\n PokerTrainingTableProps,\n PokerTrainingTableSize,\n PokerTrainingTableState,\n PokerTrainingTaskTableData,\n TabletopCardSize,\n TabletopColorOverrides,\n TabletopColorScheme,\n TabletopGameParticipantState,\n TabletopGameSeatDefinition,\n TabletopGameSeatPresentation,\n TabletopSeatCount,\n TabletopSeatState,\n TabletopShape,\n TabletopTableProps,\n} from './features/tabletop/public';\nexport {\n CardBack,\n CardHand,\n createPokerTrainingTableState,\n createTabletopColorScheme,\n createTabletopGameSeats,\n PlayingCard,\n PokerTrainingTable,\n pokerTrainingTableMeta,\n TabletopTable,\n tabletopTableMeta,\n} from './features/tabletop/public';\nexport {\n Tab,\n TabList,\n type TabListProps,\n TabPanel,\n type TabPanelProps,\n type TabProps,\n Tabs,\n type TabsProps,\n} from './features/tabs/public';\nexport type {\n ZoraColor,\n ZoraEmphasis,\n ZoraPaletteColor,\n ZoraStatusColor,\n} from './features/theme/colorModel';\nexport {\n ZORA_COLORS,\n ZORA_EMPHASES,\n ZORA_PALETTE_COLORS,\n ZORA_STATUS_COLORS,\n} from './features/theme/colorModel';\nexport * from './features/theme/public';\nexport * from './features/theme/runtime';\nexport type { TimeGridInterval, TimeGridLane, TimeGridProps } from './features/time-grid/public';\nexport { resolveTimeGridVisibleIntervals, TimeGrid } from './features/time-grid/public';\nexport {\n TimePicker,\n type TimePickerProps,\n type TimePickerValue,\n} from './features/time-picker/public';\nexport type { TimelineItem, TimelineProps } from './features/timeline/public';\nexport { Timeline } from './features/timeline/public';\nexport type {\n ToastController,\n ToastOptions,\n ToastProps,\n ToastProviderProps,\n ToastStatus,\n} from './features/toast/public';\nexport { Toast, ToastProvider, useToast } from './features/toast/public';\nexport { Toolbar, type ToolbarProps } from './features/toolbar/public';\nexport type { TreeItemNode, TreeItemRenderProps, TreeViewProps } from './features/tree-view/public';\nexport { TreeItem, TreeView } from './features/tree-view/public';\nexport type {\n HeadingAlign,\n HeadingColor,\n HeadingEmphasis,\n HeadingLevel,\n HeadingProps,\n HeadingSize,\n HeadingWeight,\n} from './features/typography/public';\nexport type {\n TextAlign,\n TextColor,\n TextEmphasis,\n TextProps,\n TextVariant,\n TextWeight,\n} from './features/typography/public';\nexport { Heading } from './features/typography/public';\nexport { Text } from './features/typography/public';\nexport type {\n UploadAsset,\n UploadAssetBase,\n UploaderExplorerItem,\n UploaderProps,\n UploadProgressContext,\n UploadType,\n ValidateUploadAssetInput,\n} from './features/uploader/public';\nexport { Uploader, validateUploadAsset } from './features/uploader/public';\nexport type { ZoraComponentRegistry } from './types/registry';\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ankhorage/zora",
3
3
  "type": "module",
4
- "version": "25.8.14",
4
+ "version": "25.8.16",
5
5
  "description": "Opinionated React Native and React Native Web UI kit built on @ankhorage/surface.",
6
6
  "homepage": "https://github.com/ankhorage/zora#readme",
7
7
  "bugs": {
@@ -26,11 +26,11 @@
26
26
  "ui-kit"
27
27
  ],
28
28
  "peerDependencies": {
29
- "@react-native-vector-icons/fontawesome": "^13.1.3",
30
- "@react-native-vector-icons/fontawesome5": "^13.1.3",
31
- "@react-native-vector-icons/fontawesome6": "^13.1.4",
32
- "@react-native-vector-icons/ionicons": "^13.1.3",
33
- "@react-native-vector-icons/material-design-icons": "^13.1.3",
29
+ "@react-native-vector-icons/fontawesome": "^13.1.3 || ^14.0.0",
30
+ "@react-native-vector-icons/fontawesome5": "^13.1.3 || ^14.0.0",
31
+ "@react-native-vector-icons/fontawesome6": "^13.1.4 || ^14.0.0",
32
+ "@react-native-vector-icons/ionicons": "^13.1.3 || ^14.0.0",
33
+ "@react-native-vector-icons/material-design-icons": "^13.1.3 || ^14.0.0",
34
34
  "react": "19.2.3",
35
35
  "react-native": "0.86.x",
36
36
  "react-native-gesture-handler": "~2.32.0",
@@ -93,6 +93,20 @@
93
93
  "import": "./dist/features/registry/index.js",
94
94
  "default": "./dist/features/registry/index.js"
95
95
  },
96
+ "./registry": {
97
+ "react-native": "./src/features/registry/readerFreeRegistry.ts",
98
+ "browser": "./src/features/registry/readerFreeRegistry.ts",
99
+ "types": "./dist/features/registry/readerFreeRegistry.d.ts",
100
+ "import": "./dist/features/registry/readerFreeRegistry.js",
101
+ "default": "./dist/features/registry/readerFreeRegistry.js"
102
+ },
103
+ "./reader-free": {
104
+ "react-native": "./src/readerFree.ts",
105
+ "browser": "./src/readerFree.ts",
106
+ "types": "./dist/readerFree.d.ts",
107
+ "import": "./dist/readerFree.js",
108
+ "default": "./dist/readerFree.js"
109
+ },
96
110
  "./capabilities": {
97
111
  "types": "./dist/capabilities/index.d.ts",
98
112
  "import": "./dist/capabilities/index.js",
@@ -124,6 +138,7 @@
124
138
  "knip:check": "ankhorage-knip",
125
139
  "examples:validate": "bun scripts/validate-example-projects.ts",
126
140
  "expo:candidate": "bun scripts/validate-expo-candidate.ts",
141
+ "expo:reader-free": "bun scripts/validate-reader-free-expo.ts",
127
142
  "lint": "ankhorage-eslint . --max-warnings=0",
128
143
  "lint:fix": "ankhorage-eslint . --fix --max-warnings=0",
129
144
  "format": "ankhorage-prettier --write .",
@@ -136,11 +151,11 @@
136
151
  "devDependencies": {
137
152
  "@ankhorage/devtools": "^2.3.18",
138
153
  "@ankhorage/paradox": "^0.3.5",
139
- "@react-native-vector-icons/fontawesome": "^13.1.5",
140
- "@react-native-vector-icons/fontawesome5": "^13.1.5",
141
- "@react-native-vector-icons/fontawesome6": "^13.1.5",
142
- "@react-native-vector-icons/ionicons": "^13.1.5",
143
- "@react-native-vector-icons/material-design-icons": "^13.1.5",
154
+ "@react-native-vector-icons/fontawesome": "^14.0.0",
155
+ "@react-native-vector-icons/fontawesome5": "^14.0.0",
156
+ "@react-native-vector-icons/fontawesome6": "^14.0.0",
157
+ "@react-native-vector-icons/ionicons": "^14.0.0",
158
+ "@react-native-vector-icons/material-design-icons": "^14.0.0",
144
159
  "@types/bun": "^1.4.2",
145
160
  "@types/node": "^26.6.5",
146
161
  "@types/react": "^19.3.0",
@@ -29,6 +29,26 @@ const RNVI_PLUGINS = [
29
29
  '@react-native-vector-icons/fontawesome6',
30
30
  '@react-native-vector-icons/ionicons',
31
31
  ] as const;
32
+ const EXPO_57_GRID_WORKSPACES_CONTRACT = {
33
+ expo: '~57.0.30',
34
+ metroConfig: '0.86.3',
35
+ typesReact: '~19.2.18',
36
+ zora: '25.8.15',
37
+ } as const;
38
+ const GRID_WORKSPACES_MANIFEST = 'examples/grid-workspaces/package.json';
39
+
40
+ function readRenovatePackageRule(packageName: string): string {
41
+ const renovateSource = readFileSync(join(ROOT, 'renovate.json5'), 'utf8');
42
+ const packageMatcher = `matchPackageNames: ['${packageName}'],`;
43
+ const ruleStart = renovateSource.lastIndexOf(' {', renovateSource.indexOf(packageMatcher));
44
+ const ruleEnd = renovateSource.indexOf('\n },', renovateSource.indexOf(packageMatcher));
45
+
46
+ if (ruleStart === -1 || ruleEnd === -1) {
47
+ throw new Error(`Expected a Renovate rule for ${packageName}.`);
48
+ }
49
+
50
+ return renovateSource.slice(ruleStart, ruleEnd);
51
+ }
32
52
 
33
53
  function readJson(path: string): Record<string, unknown> {
34
54
  const value: unknown = JSON.parse(readFileSync(path, 'utf8'));
@@ -137,6 +157,36 @@ describe('Expo 57 example boundary', () => {
137
157
  expect(scaffoldSource).not.toContain('ZoraTabBar');
138
158
  });
139
159
 
160
+ test('pins Grid Workspaces native tooling to the Expo 57 React Native contract', () => {
161
+ const packageJson = readExamplePackage('examples/grid-workspaces');
162
+ const dependencies = readRecord(packageJson, 'dependencies');
163
+ const development = readRecord(packageJson, 'devDependencies');
164
+
165
+ expect(dependencies.expo).toBe(EXPO_57_GRID_WORKSPACES_CONTRACT.expo);
166
+ expect(dependencies['@ankhorage/zora']).toBe(EXPO_57_GRID_WORKSPACES_CONTRACT.zora);
167
+ expect(dependencies['@react-native/metro-config']).toBe(
168
+ EXPO_57_GRID_WORKSPACES_CONTRACT.metroConfig,
169
+ );
170
+ expect(development['@types/react']).toBe(EXPO_57_GRID_WORKSPACES_CONTRACT.typesReact);
171
+ });
172
+
173
+ test('limits Grid Workspaces native-tooling Renovate constraints to its manifest', () => {
174
+ const packageJson = readJson(join(ROOT, 'package.json'));
175
+ const development = readRecord(packageJson, 'devDependencies');
176
+
177
+ for (const [packageName, allowedVersion] of [
178
+ ['@react-native/metro-config', EXPO_57_GRID_WORKSPACES_CONTRACT.metroConfig],
179
+ ['@types/react', EXPO_57_GRID_WORKSPACES_CONTRACT.typesReact],
180
+ ]) {
181
+ const renovateRule = readRenovatePackageRule(packageName);
182
+
183
+ expect(renovateRule).toContain(`matchFileNames: ['${GRID_WORKSPACES_MANIFEST}'],`);
184
+ expect(renovateRule).toContain(`allowedVersions: '${allowedVersion}',`);
185
+ }
186
+
187
+ expect(development['@types/react']).not.toBe(EXPO_57_GRID_WORKSPACES_CONTRACT.typesReact);
188
+ });
189
+
140
190
  test('uses Navigator native tabs in every router example', () => {
141
191
  for (const directory of ROUTER_EXAMPLE_DIRS) {
142
192
  const packageJson = readExamplePackage(directory);
@@ -6,6 +6,7 @@ import { describe, expect, test } from 'bun:test';
6
6
  const srcDir = join(import.meta.dir, '../..');
7
7
  const publicSource = readFileSync(join(import.meta.dir, 'public.ts'), 'utf8');
8
8
  const rootSource = readFileSync(join(srcDir, 'index.ts'), 'utf8');
9
+ const readerFreeSource = readFileSync(join(srcDir, 'readerFree.ts'), 'utf8');
9
10
 
10
11
  const removedPublicNames = [
11
12
  'Box',
@@ -27,7 +28,7 @@ describe('canonical layout boundary', () => {
27
28
  }
28
29
 
29
30
  expect(publicSource).not.toContain('TileGrid');
30
- expect(rootSource).toContain(
31
+ expect(`${rootSource}\n${readerFreeSource}`).toContain(
31
32
  "export { GridView, layoutTileGrid, TileGrid } from './features/grid-view/public';",
32
33
  );
33
34
 
@@ -4,18 +4,20 @@ import { progressRingMeta } from '../../progressMeta';
4
4
 
5
5
  describe('ProgressRing public contract', () => {
6
6
  test('is exported from the component and package entrypoints', async () => {
7
- const [componentIndex, rootIndex] = await Promise.all([
7
+ const [componentIndex, rootIndex, readerFreeIndex] = await Promise.all([
8
8
  Bun.file('src/features/progress/public.ts').text(),
9
9
  Bun.file('src/index.ts').text(),
10
+ Bun.file('src/readerFree.ts').text(),
10
11
  ]);
11
12
 
12
13
  expect(componentIndex).toContain(
13
14
  "export { ProgressRing } from './adapters/inbound/ProgressRing';",
14
15
  );
15
16
  expect(componentIndex).toContain('ProgressRingProps');
16
- expect(rootIndex).toContain("} from './features/progress/public';");
17
- expect(rootIndex).toContain('type ProgressProps');
18
- expect(rootIndex).toContain('type ProgressRingProps');
17
+ const rootSurface = `${rootIndex}\n${readerFreeIndex}`;
18
+ expect(rootSurface).toContain("} from './features/progress/public';");
19
+ expect(rootSurface).toContain('type ProgressProps');
20
+ expect(rootSurface).toContain('type ProgressRingProps');
19
21
  });
20
22
 
21
23
  test('exposes native progress semantics and uses canonical normalization and colors', async () => {
@@ -30,7 +30,7 @@ describe('Reader public contract', () => {
30
30
  const source = await Bun.file('src/index.ts').text();
31
31
 
32
32
  expect(source).toContain("from './features/reader/public';");
33
- expect(source).toContain('Reader, resolveReaderProgress');
33
+ expect(source).toContain('resolveReaderProgress');
34
34
  expect(source).not.toContain('ReaderSurface');
35
35
  });
36
36
 
@@ -6,7 +6,7 @@ describe('resolveReaderProgress', () => {
6
6
  test('is exported from the package root', async () => {
7
7
  const source = await Bun.file('src/index.ts').text();
8
8
 
9
- expect(source).toContain('Reader, resolveReaderProgress');
9
+ expect(source).toContain('resolveReaderProgress');
10
10
  });
11
11
 
12
12
  test('clamps an explicit progress value', () => {
@@ -0,0 +1,236 @@
1
+ import type { InteractionPolicyProps } from '@ankhorage/surface';
2
+ import type React from 'react';
3
+
4
+ import type { ZoraComponentRegistry } from '../../types/registry';
5
+ import { Accordion, AccordionItem } from '../accordion/public';
6
+ import { ActivityIndicator } from '../activity-indicator/public';
7
+ import { AppBar } from '../app-bar/public';
8
+ import { AppHeader } from '../app-header/public';
9
+ import {
10
+ AuthScreen,
11
+ ForgotPasswordForm,
12
+ OAuthProviderButton,
13
+ OAuthProviderList,
14
+ OtpForm,
15
+ SignInForm,
16
+ SignUpForm,
17
+ } from '../auth/public';
18
+ import { Avatar, AvatarGroup } from '../avatar/public';
19
+ import { Badge } from '../badge/public';
20
+ import { BottomSheet } from '../bottom-sheet/public';
21
+ import { Breadcrumbs } from '../breadcrumbs/public';
22
+ import { Button, ButtonGroup, IconButton } from '../button/public';
23
+ import { Card, MediaCard, MetricCard, PostCard, ProductCard } from '../card/public';
24
+ import { ChatListItem, MessageBubble } from '../chat/public';
25
+ import { ChessBoard, OpeningBook } from '../chess/public';
26
+ import { Chip, ChipGroup } from '../chip/public';
27
+ import { CollectionEditor } from '../collection-editor/public';
28
+ import { ContentRail } from '../content-rail/public';
29
+ import { DataTable } from '../data-table/public';
30
+ import { DatePicker } from '../date-picker/public';
31
+ import { Dialog } from '../dialog/public';
32
+ import { EmptyState } from '../empty-state/public';
33
+ import { Explorer, FileExplorer, MediaExplorer } from '../explorer/public';
34
+ import { Checkbox, CheckboxGroup } from '../form/checkbox/public';
35
+ import { Field, Form, FormActions, FormError } from '../form/public';
36
+ import { Radio, RadioGroup } from '../form/radio/public';
37
+ import { SearchInput } from '../form/search-input/public';
38
+ import { Select } from '../form/select/public';
39
+ import { Switch } from '../form/switch/public';
40
+ import { TextInput } from '../form/text-input/public';
41
+ import {
42
+ Game,
43
+ GameEntity,
44
+ GameField,
45
+ GameInputZone,
46
+ GameMeasurementProbe,
47
+ GameOverlay,
48
+ } from '../game/public';
49
+ import { Gradient } from '../gradient/public';
50
+ import { GridInteractions } from '../grid-interactions/public';
51
+ import { GridLineOverlay, GridRuler } from '../grid-rulers/public';
52
+ import { GridView, TileGrid } from '../grid-view/public';
53
+ import { Hero } from '../hero/public';
54
+ import { Icon } from '../icon/public';
55
+ import { Image } from '../image/public';
56
+ import { KeyboardAvoidingView } from '../keyboard-avoiding-view/public';
57
+ import { AppShell, Divider, Grid, Screen, ScrollView, View } from '../layout/public';
58
+ import { FlatList, List, ListItem, ListSection, SectionList } from '../list/public';
59
+ import { MatrixGrid } from '../matrix-grid/public';
60
+ import { MissingElement } from '../missing-element/public';
61
+ import { Pagination } from '../pagination/public';
62
+ import { PaletteItem } from '../palette-item/public';
63
+ import { PopoverMenu } from '../popover-menu/public';
64
+ import { Progress, ProgressRing } from '../progress/public';
65
+ import { Rating } from '../rating/public';
66
+ import { BarcodeScannerView, CameraPermissionView, ScanOverlay } from '../scanner/public';
67
+ import { ScreenSection, SectionHeader } from '../section/public';
68
+ import { SelectableItem } from '../selection/public';
69
+ import { Skeleton, SkeletonCard, SkeletonList, SkeletonText } from '../skeleton/public';
70
+ import { SpatialGrid } from '../spatial-grid/public';
71
+ import { Surface } from '../surface/public';
72
+ import {
73
+ CardBack,
74
+ CardHand,
75
+ PlayingCard,
76
+ PokerTrainingTable,
77
+ TabletopTable,
78
+ } from '../tabletop/public';
79
+ import { Tab, TabList, TabPanel, Tabs } from '../tabs/public';
80
+ import { ThemeModeToggle } from '../theme/adapters/inbound/ThemeModeToggle';
81
+ import { TimeGrid } from '../time-grid/public';
82
+ import { TimePicker } from '../time-picker/public';
83
+ import { Timeline } from '../timeline/public';
84
+ import { Toast } from '../toast/public';
85
+ import { Toolbar } from '../toolbar/public';
86
+ import { TreeItem, TreeView } from '../tree-view/public';
87
+ import { Heading, Text } from '../typography/public';
88
+ import { Uploader } from '../uploader/public';
89
+
90
+ type ComponentPropsFor<K extends keyof typeof _ZORA_BASE_COMPONENT_REGISTRY> = React.ComponentProps<
91
+ (typeof _ZORA_BASE_COMPONENT_REGISTRY)[K]
92
+ >;
93
+
94
+ type AcceptsSurfaceInteractionPolicyProps<P> = 'interactionPolicy' extends keyof P
95
+ ? InteractionPolicyProps extends Pick<P, 'interactionPolicy'>
96
+ ? Pick<P, 'interactionPolicy'> extends InteractionPolicyProps
97
+ ? true
98
+ : false
99
+ : false
100
+ : false;
101
+
102
+ type RegistryInteractionPolicyContract = {
103
+ [K in keyof typeof _ZORA_BASE_COMPONENT_REGISTRY]: AcceptsSurfaceInteractionPolicyProps<
104
+ ComponentPropsFor<K>
105
+ >;
106
+ };
107
+
108
+ type _AssertTrue<T extends true> = T;
109
+ type _RegistryInteractionPolicyCheck = _AssertTrue<
110
+ RegistryInteractionPolicyContract[keyof typeof _ZORA_BASE_COMPONENT_REGISTRY]
111
+ >;
112
+
113
+ const _ZORA_BASE_COMPONENT_REGISTRY = {
114
+ Accordion,
115
+ AccordionItem,
116
+ ActivityIndicator,
117
+ AppBar,
118
+ AppHeader,
119
+ Avatar,
120
+ AvatarGroup,
121
+ Badge,
122
+ Breadcrumbs,
123
+ Button,
124
+ ButtonGroup,
125
+ Card,
126
+ Checkbox,
127
+ CheckboxGroup,
128
+ Chip,
129
+ ChipGroup,
130
+ DataTable,
131
+ DatePicker,
132
+ Dialog,
133
+ Form,
134
+ FormActions,
135
+ FormError,
136
+ Field,
137
+ Gradient,
138
+ Game,
139
+ GameEntity,
140
+ GameField,
141
+ GameInputZone,
142
+ GameMeasurementProbe,
143
+ GameOverlay,
144
+ Heading,
145
+ Icon,
146
+ IconButton,
147
+ Image,
148
+ KeyboardAvoidingView,
149
+ TextInput,
150
+ MediaCard,
151
+ MetricCard,
152
+ Pagination,
153
+ PopoverMenu,
154
+ Progress,
155
+ ProgressRing,
156
+ Radio,
157
+ RadioGroup,
158
+ Rating,
159
+ SearchInput,
160
+ Select,
161
+ Switch,
162
+ Skeleton,
163
+ SkeletonCard,
164
+ SkeletonList,
165
+ SkeletonText,
166
+ Tab,
167
+ TabList,
168
+ TabPanel,
169
+ Tabs,
170
+ Text,
171
+ TimePicker,
172
+ Toast,
173
+ Toolbar,
174
+ Uploader,
175
+ BottomSheet,
176
+ FlatList,
177
+ SectionList,
178
+ ScrollView,
179
+ View,
180
+ ThemeModeToggle,
181
+ Divider,
182
+ Grid,
183
+ Surface,
184
+ AppShell,
185
+ Screen,
186
+ ScreenSection,
187
+ AuthScreen,
188
+ ForgotPasswordForm,
189
+ OAuthProviderButton,
190
+ OAuthProviderList,
191
+ OtpForm,
192
+ SignInForm,
193
+ SignUpForm,
194
+ ChatListItem,
195
+ ChessBoard,
196
+ CollectionEditor,
197
+ ContentRail,
198
+ EmptyState,
199
+ Explorer,
200
+ FileExplorer,
201
+ GridLineOverlay,
202
+ GridRuler,
203
+ GridInteractions,
204
+ GridView,
205
+ TileGrid,
206
+ TimeGrid,
207
+ MatrixGrid,
208
+ MediaExplorer,
209
+ Hero,
210
+ List,
211
+ ListItem,
212
+ ListSection,
213
+ MessageBubble,
214
+ OpeningBook,
215
+ MissingElement,
216
+ PostCard,
217
+ ProductCard,
218
+ BarcodeScannerView,
219
+ CameraPermissionView,
220
+ ScanOverlay,
221
+ SectionHeader,
222
+ SelectableItem,
223
+ SpatialGrid,
224
+ PaletteItem,
225
+ CardBack,
226
+ CardHand,
227
+ PlayingCard,
228
+ TabletopTable,
229
+ PokerTrainingTable,
230
+ Timeline,
231
+ TreeItem,
232
+ TreeView,
233
+ } as const satisfies ZoraComponentRegistry;
234
+
235
+ /*** The core ZORA runtime component registry, excluding separately selected feature entries such as Reader. */
236
+ export const ZORA_BASE_COMPONENT_REGISTRY: ZoraComponentRegistry = _ZORA_BASE_COMPONENT_REGISTRY;