@ankhorage/zora 4.4.1 → 5.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 (185) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +1 -1
  3. package/dist/components/radio/RadioGroup.d.ts +1 -3
  4. package/dist/components/radio/RadioGroup.d.ts.map +1 -1
  5. package/dist/components/radio/RadioGroup.js +52 -40
  6. package/dist/components/radio/RadioGroup.js.map +1 -1
  7. package/dist/components/radio/RadioOptionControl.d.ts +15 -0
  8. package/dist/components/radio/RadioOptionControl.d.ts.map +1 -0
  9. package/dist/components/radio/RadioOptionControl.js +105 -0
  10. package/dist/components/radio/RadioOptionControl.js.map +1 -0
  11. package/dist/components/radio/handleRadioOptionKeyDown.d.ts +13 -0
  12. package/dist/components/radio/handleRadioOptionKeyDown.d.ts.map +1 -0
  13. package/dist/components/radio/handleRadioOptionKeyDown.js +22 -0
  14. package/dist/components/radio/handleRadioOptionKeyDown.js.map +1 -0
  15. package/dist/components/radio/meta.d.ts +38 -3
  16. package/dist/components/radio/meta.d.ts.map +1 -1
  17. package/dist/components/radio/meta.js +28 -3
  18. package/dist/components/radio/meta.js.map +1 -1
  19. package/dist/components/radio/resolveRadioOptionColors.d.ts +10 -0
  20. package/dist/components/radio/resolveRadioOptionColors.d.ts.map +1 -0
  21. package/dist/components/radio/resolveRadioOptionColors.js +27 -0
  22. package/dist/components/radio/resolveRadioOptionColors.js.map +1 -0
  23. package/dist/components/radio/types.d.ts +12 -2
  24. package/dist/components/radio/types.d.ts.map +1 -1
  25. package/dist/components/radio/types.js.map +1 -1
  26. package/dist/constants/keyboard.d.ts +3 -0
  27. package/dist/constants/keyboard.d.ts.map +1 -0
  28. package/dist/constants/keyboard.js +8 -0
  29. package/dist/constants/keyboard.js.map +1 -0
  30. package/dist/index.d.ts +0 -12
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +0 -6
  33. package/dist/index.js.map +1 -1
  34. package/dist/metadata/componentMeta.d.ts.map +1 -1
  35. package/dist/metadata/componentMeta.js +0 -12
  36. package/dist/metadata/componentMeta.js.map +1 -1
  37. package/dist/registry.d.ts.map +1 -1
  38. package/dist/registry.js +0 -12
  39. package/dist/registry.js.map +1 -1
  40. package/package.json +1 -1
  41. package/src/audit.test.ts +0 -29
  42. package/src/components/radio/RadioGroup.test.ts +13 -9
  43. package/src/components/radio/RadioGroup.tsx +85 -111
  44. package/src/components/radio/RadioOptionControl.tsx +192 -0
  45. package/src/components/radio/handleRadioOptionKeyDown.test.ts +47 -0
  46. package/src/components/radio/handleRadioOptionKeyDown.ts +37 -0
  47. package/src/components/radio/meta.ts +28 -3
  48. package/src/components/radio/resolveRadioOptionColors.test.ts +29 -0
  49. package/src/components/radio/resolveRadioOptionColors.ts +37 -0
  50. package/src/components/radio/types.ts +10 -2
  51. package/src/constants/keyboard.ts +7 -0
  52. package/src/index.ts +0 -23
  53. package/src/interactionPolicy.test.ts +0 -17
  54. package/src/metadata/componentMeta.test.ts +1 -0
  55. package/src/metadata/componentMeta.ts +0 -12
  56. package/src/registry.ts +0 -12
  57. package/src/showcaseCoverage.test.ts +0 -6
  58. package/src/theme/themeScopeStructure.test.ts +0 -4
  59. package/dist/components/drawer/Drawer.d.ts +0 -7
  60. package/dist/components/drawer/Drawer.d.ts.map +0 -1
  61. package/dist/components/drawer/Drawer.js +0 -36
  62. package/dist/components/drawer/Drawer.js.map +0 -1
  63. package/dist/components/drawer/index.d.ts +0 -3
  64. package/dist/components/drawer/index.d.ts.map +0 -1
  65. package/dist/components/drawer/index.js +0 -2
  66. package/dist/components/drawer/index.js.map +0 -1
  67. package/dist/components/drawer/meta.d.ts +0 -9
  68. package/dist/components/drawer/meta.d.ts.map +0 -1
  69. package/dist/components/drawer/meta.js +0 -9
  70. package/dist/components/drawer/meta.js.map +0 -1
  71. package/dist/components/drawer/types.d.ts +0 -10
  72. package/dist/components/drawer/types.d.ts.map +0 -1
  73. package/dist/components/drawer/types.js +0 -2
  74. package/dist/components/drawer/types.js.map +0 -1
  75. package/dist/components/navigation-item/NavigationItem.d.ts +0 -7
  76. package/dist/components/navigation-item/NavigationItem.d.ts.map +0 -1
  77. package/dist/components/navigation-item/NavigationItem.js +0 -21
  78. package/dist/components/navigation-item/NavigationItem.js.map +0 -1
  79. package/dist/components/navigation-item/index.d.ts +0 -3
  80. package/dist/components/navigation-item/index.d.ts.map +0 -1
  81. package/dist/components/navigation-item/index.js +0 -2
  82. package/dist/components/navigation-item/index.js.map +0 -1
  83. package/dist/components/navigation-item/meta.d.ts +0 -9
  84. package/dist/components/navigation-item/meta.d.ts.map +0 -1
  85. package/dist/components/navigation-item/meta.js +0 -9
  86. package/dist/components/navigation-item/meta.js.map +0 -1
  87. package/dist/components/navigation-item/types.d.ts +0 -23
  88. package/dist/components/navigation-item/types.d.ts.map +0 -1
  89. package/dist/components/navigation-item/types.js +0 -2
  90. package/dist/components/navigation-item/types.js.map +0 -1
  91. package/dist/components/navigation-list/NavigationList.d.ts +0 -7
  92. package/dist/components/navigation-list/NavigationList.d.ts.map +0 -1
  93. package/dist/components/navigation-list/NavigationList.js +0 -29
  94. package/dist/components/navigation-list/NavigationList.js.map +0 -1
  95. package/dist/components/navigation-list/index.d.ts +0 -3
  96. package/dist/components/navigation-list/index.d.ts.map +0 -1
  97. package/dist/components/navigation-list/index.js +0 -2
  98. package/dist/components/navigation-list/index.js.map +0 -1
  99. package/dist/components/navigation-list/meta.d.ts +0 -9
  100. package/dist/components/navigation-list/meta.d.ts.map +0 -1
  101. package/dist/components/navigation-list/meta.js +0 -9
  102. package/dist/components/navigation-list/meta.js.map +0 -1
  103. package/dist/components/navigation-list/types.d.ts +0 -15
  104. package/dist/components/navigation-list/types.d.ts.map +0 -1
  105. package/dist/components/navigation-list/types.js +0 -2
  106. package/dist/components/navigation-list/types.js.map +0 -1
  107. package/dist/internal/resolveZoraNavigationItems.d.ts +0 -65
  108. package/dist/internal/resolveZoraNavigationItems.d.ts.map +0 -1
  109. package/dist/internal/resolveZoraNavigationItems.js +0 -56
  110. package/dist/internal/resolveZoraNavigationItems.js.map +0 -1
  111. package/dist/patterns/responsive-panel/ResponsivePanel.d.ts +0 -16
  112. package/dist/patterns/responsive-panel/ResponsivePanel.d.ts.map +0 -1
  113. package/dist/patterns/responsive-panel/ResponsivePanel.js +0 -101
  114. package/dist/patterns/responsive-panel/ResponsivePanel.js.map +0 -1
  115. package/dist/patterns/responsive-panel/index.d.ts +0 -3
  116. package/dist/patterns/responsive-panel/index.d.ts.map +0 -1
  117. package/dist/patterns/responsive-panel/index.js +0 -3
  118. package/dist/patterns/responsive-panel/index.js.map +0 -1
  119. package/dist/patterns/responsive-panel/meta.d.ts +0 -9
  120. package/dist/patterns/responsive-panel/meta.d.ts.map +0 -1
  121. package/dist/patterns/responsive-panel/meta.js +0 -9
  122. package/dist/patterns/responsive-panel/meta.js.map +0 -1
  123. package/dist/patterns/responsive-panel/types.d.ts +0 -23
  124. package/dist/patterns/responsive-panel/types.d.ts.map +0 -1
  125. package/dist/patterns/responsive-panel/types.js +0 -2
  126. package/dist/patterns/responsive-panel/types.js.map +0 -1
  127. package/dist/patterns/zora-drawer-content/ZoraDrawerContent.d.ts +0 -9
  128. package/dist/patterns/zora-drawer-content/ZoraDrawerContent.d.ts.map +0 -1
  129. package/dist/patterns/zora-drawer-content/ZoraDrawerContent.js +0 -31
  130. package/dist/patterns/zora-drawer-content/ZoraDrawerContent.js.map +0 -1
  131. package/dist/patterns/zora-drawer-content/index.d.ts +0 -3
  132. package/dist/patterns/zora-drawer-content/index.d.ts.map +0 -1
  133. package/dist/patterns/zora-drawer-content/index.js +0 -2
  134. package/dist/patterns/zora-drawer-content/index.js.map +0 -1
  135. package/dist/patterns/zora-drawer-content/meta.d.ts +0 -9
  136. package/dist/patterns/zora-drawer-content/meta.d.ts.map +0 -1
  137. package/dist/patterns/zora-drawer-content/meta.js +0 -9
  138. package/dist/patterns/zora-drawer-content/meta.js.map +0 -1
  139. package/dist/patterns/zora-drawer-content/types.d.ts +0 -15
  140. package/dist/patterns/zora-drawer-content/types.d.ts.map +0 -1
  141. package/dist/patterns/zora-drawer-content/types.js +0 -2
  142. package/dist/patterns/zora-drawer-content/types.js.map +0 -1
  143. package/dist/patterns/zora-tab-bar/ZoraTabBar.d.ts +0 -9
  144. package/dist/patterns/zora-tab-bar/ZoraTabBar.d.ts.map +0 -1
  145. package/dist/patterns/zora-tab-bar/ZoraTabBar.js +0 -89
  146. package/dist/patterns/zora-tab-bar/ZoraTabBar.js.map +0 -1
  147. package/dist/patterns/zora-tab-bar/index.d.ts +0 -3
  148. package/dist/patterns/zora-tab-bar/index.d.ts.map +0 -1
  149. package/dist/patterns/zora-tab-bar/index.js +0 -2
  150. package/dist/patterns/zora-tab-bar/index.js.map +0 -1
  151. package/dist/patterns/zora-tab-bar/meta.d.ts +0 -9
  152. package/dist/patterns/zora-tab-bar/meta.d.ts.map +0 -1
  153. package/dist/patterns/zora-tab-bar/meta.js +0 -9
  154. package/dist/patterns/zora-tab-bar/meta.js.map +0 -1
  155. package/dist/patterns/zora-tab-bar/types.d.ts +0 -19
  156. package/dist/patterns/zora-tab-bar/types.d.ts.map +0 -1
  157. package/dist/patterns/zora-tab-bar/types.js +0 -2
  158. package/dist/patterns/zora-tab-bar/types.js.map +0 -1
  159. package/src/components/drawer/Drawer.tsx +0 -59
  160. package/src/components/drawer/index.ts +0 -2
  161. package/src/components/drawer/meta.ts +0 -10
  162. package/src/components/drawer/types.ts +0 -17
  163. package/src/components/navigation-item/NavigationItem.tsx +0 -41
  164. package/src/components/navigation-item/index.ts +0 -6
  165. package/src/components/navigation-item/meta.ts +0 -10
  166. package/src/components/navigation-item/types.ts +0 -26
  167. package/src/components/navigation-list/NavigationList.tsx +0 -68
  168. package/src/components/navigation-list/index.ts +0 -2
  169. package/src/components/navigation-list/meta.ts +0 -10
  170. package/src/components/navigation-list/types.ts +0 -17
  171. package/src/internal/resolveZoraNavigationItems.test.ts +0 -174
  172. package/src/internal/resolveZoraNavigationItems.ts +0 -157
  173. package/src/navigationExports.test.ts +0 -15
  174. package/src/patterns/responsive-panel/ResponsivePanel.tsx +0 -172
  175. package/src/patterns/responsive-panel/index.ts +0 -2
  176. package/src/patterns/responsive-panel/meta.ts +0 -10
  177. package/src/patterns/responsive-panel/types.ts +0 -25
  178. package/src/patterns/zora-drawer-content/ZoraDrawerContent.tsx +0 -60
  179. package/src/patterns/zora-drawer-content/index.ts +0 -2
  180. package/src/patterns/zora-drawer-content/meta.ts +0 -10
  181. package/src/patterns/zora-drawer-content/types.ts +0 -20
  182. package/src/patterns/zora-tab-bar/ZoraTabBar.tsx +0 -157
  183. package/src/patterns/zora-tab-bar/index.ts +0 -2
  184. package/src/patterns/zora-tab-bar/meta.ts +0 -10
  185. package/src/patterns/zora-tab-bar/types.ts +0 -18
@@ -1,60 +0,0 @@
1
- import { DrawerNavigation as SurfaceDrawerNavigation } from '@ankhorage/surface';
2
- import React from 'react';
3
-
4
- import {
5
- createDrawerItemPressHandler,
6
- resolveNavigationItems,
7
- } from '../../internal/resolveZoraNavigationItems';
8
- import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
9
- import type { ZoraDrawerContentProps } from './types';
10
-
11
- function ZoraDrawerContentInner({
12
- themeId: _themeId,
13
- mode: _mode,
14
- interactionPolicy,
15
- state,
16
- navigation,
17
- descriptors,
18
- routeMap,
19
- compact = false,
20
- header,
21
- footer,
22
- testID,
23
- }: ZoraDrawerContentProps) {
24
- const resolved = resolveNavigationItems({
25
- state,
26
- descriptors,
27
- routeMap,
28
- kind: 'drawer',
29
- });
30
-
31
- const items = resolved.map((item) => ({
32
- id: item.route.key,
33
- label: item.label,
34
- icon: item.metadata?.icon,
35
- badge: item.metadata?.badge,
36
- active: item.active,
37
- disabled: item.disabled,
38
- onPress: createDrawerItemPressHandler({ item, navigation }),
39
- accessibilityLabel: item.metadata?.accessibilityLabel,
40
- testID: item.metadata?.testID,
41
- }));
42
-
43
- return (
44
- <SurfaceDrawerNavigation
45
- compact={compact}
46
- footer={footer}
47
- header={header}
48
- interactionPolicy={interactionPolicy}
49
- items={items}
50
- testID={testID}
51
- />
52
- );
53
- }
54
-
55
- /***
56
- * Standard drawer content pattern for ZORA navigation lists.
57
- *
58
-
59
- */
60
- export const ZoraDrawerContent = withZoraThemeScope(ZoraDrawerContentInner);
@@ -1,2 +0,0 @@
1
- export type { ZoraDrawerContentProps } from './types';
2
- export { ZoraDrawerContent } from './ZoraDrawerContent';
@@ -1,10 +0,0 @@
1
- import type { ZoraComponentMeta } from '../../metadata';
2
-
3
- export const zoraDrawerContentMeta = {
4
- name: 'ZoraDrawerContent',
5
- category: 'pattern',
6
- directManifestNode: false,
7
- allowedChildren: [],
8
- note: 'Navigation chrome pattern; not represented as a manifest node in v1.',
9
- props: {},
10
- } as const satisfies ZoraComponentMeta;
@@ -1,20 +0,0 @@
1
- import type React from 'react';
2
-
3
- import type { ZoraNavigationRouteMap } from '../../components/navigation-list';
4
- import type {
5
- ZoraDrawerNavigation,
6
- ZoraNavigationDescriptors,
7
- ZoraNavigationState,
8
- } from '../../internal/resolveZoraNavigationItems';
9
- import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
10
-
11
- export interface ZoraDrawerContentProps extends ZoraBaseProps {
12
- state: ZoraNavigationState;
13
- navigation: ZoraDrawerNavigation;
14
- descriptors?: ZoraNavigationDescriptors | undefined;
15
- routeMap?: ZoraNavigationRouteMap | undefined;
16
- compact?: boolean;
17
- header?: React.ReactNode;
18
- footer?: React.ReactNode;
19
- testID?: string;
20
- }
@@ -1,157 +0,0 @@
1
- import React from 'react';
2
- import { Pressable, Text as ReactNativeText } from 'react-native';
3
-
4
- import { Icon } from '../../components/icon';
5
- import { Box, Surface } from '../../foundation';
6
- import {
7
- createTabBarItemPressHandler,
8
- resolveNavigationItems,
9
- } from '../../internal/resolveZoraNavigationItems';
10
- import { useZoraTheme } from '../../theme/useZoraTheme';
11
- import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
12
- import type { ZoraTabBarProps } from './types';
13
-
14
- function resolveAccessibilityLabel(
15
- label: React.ReactNode,
16
- explicitLabel?: string,
17
- ): string | undefined {
18
- if (explicitLabel !== undefined) {
19
- return explicitLabel;
20
- }
21
-
22
- if (typeof label === 'string') {
23
- return label;
24
- }
25
-
26
- if (typeof label === 'number') {
27
- return String(label);
28
- }
29
-
30
- return undefined;
31
- }
32
-
33
- function ZoraTabBarInner({
34
- themeId: _themeId,
35
- mode: _mode,
36
- interactionPolicy,
37
- state,
38
- navigation,
39
- descriptors,
40
- insets,
41
- routeMap,
42
- compact = false,
43
- chrome = 'raised',
44
- testID,
45
- }: ZoraTabBarProps) {
46
- const { theme } = useZoraTheme();
47
- const resolved = resolveNavigationItems({
48
- state,
49
- descriptors,
50
- routeMap,
51
- kind: 'tab',
52
- });
53
-
54
- const bottomInset = insets?.bottom ?? 0;
55
- const minHeight = compact ? 56 : 64;
56
- const labelSize = compact ? theme.typography.sizes.xs : theme.typography.sizes.s;
57
- const labelWeight = theme.typography.weights.medium;
58
- const content = (
59
- <Box
60
- bg="surface"
61
- style={{
62
- borderTopColor: theme.semantics.border.default,
63
- borderTopWidth: 1,
64
- flexDirection: 'row',
65
- minHeight: minHeight + bottomInset,
66
- paddingBottom: bottomInset,
67
- }}
68
- testID={testID}
69
- >
70
- {resolved.map((item) => {
71
- const { active } = item;
72
- const { disabled } = item;
73
- const contentColor = disabled
74
- ? theme.semantics.content.subtle
75
- : active
76
- ? theme.semantics.action.primary.base
77
- : theme.semantics.content.muted;
78
- const backgroundColor = active
79
- ? theme.semantics.action.primary.softBg
80
- : theme.semantics.surface.default;
81
-
82
- return (
83
- <Pressable
84
- accessibilityLabel={resolveAccessibilityLabel(
85
- item.label,
86
- item.metadata?.accessibilityLabel,
87
- )}
88
- accessibilityRole="tab"
89
- accessibilityState={{ selected: active, disabled }}
90
- disabled={disabled}
91
- key={item.route.key}
92
- onPress={
93
- interactionPolicy === 'passive'
94
- ? undefined
95
- : createTabBarItemPressHandler({ item, navigation })
96
- }
97
- style={{
98
- alignItems: 'center',
99
- backgroundColor,
100
- flex: 1,
101
- justifyContent: 'center',
102
- minHeight,
103
- opacity: disabled ? 0.48 : 1,
104
- paddingHorizontal: theme.spacing.s,
105
- paddingVertical: compact ? theme.spacing.xs : theme.spacing.s,
106
- }}
107
- testID={
108
- item.metadata?.testID ?? (testID ? `${testID}-item-${item.route.key}` : undefined)
109
- }
110
- >
111
- {item.metadata?.icon ? (
112
- <Icon
113
- {...item.metadata.icon}
114
- color={contentColor}
115
- size={compact ? theme.spacing.m : theme.spacing.l}
116
- />
117
- ) : null}
118
- <ReactNativeText
119
- numberOfLines={1}
120
- style={{
121
- color: contentColor,
122
- fontSize: labelSize,
123
- fontWeight: labelWeight,
124
- lineHeight: compact ? 16 : 20,
125
- marginTop: item.metadata?.icon ? theme.spacing.xs : 0,
126
- textAlign: 'center',
127
- }}
128
- >
129
- {item.label}
130
- </ReactNativeText>
131
- </Pressable>
132
- );
133
- })}
134
- </Box>
135
- );
136
-
137
- if (chrome === 'none') {
138
- return content;
139
- }
140
-
141
- return (
142
- <Surface
143
- interactionPolicy={interactionPolicy}
144
- testID={testID ? `${testID}-chrome` : undefined}
145
- variant="raised"
146
- >
147
- {content}
148
- </Surface>
149
- );
150
- }
151
-
152
- /***
153
- * Bottom tab bar pattern with badge support and active state styling.
154
- *
155
-
156
- */
157
- export const ZoraTabBar = withZoraThemeScope(ZoraTabBarInner);
@@ -1,2 +0,0 @@
1
- export type { ZoraTabBarProps } from './types';
2
- export { ZoraTabBar } from './ZoraTabBar';
@@ -1,10 +0,0 @@
1
- import type { ZoraComponentMeta } from '../../metadata';
2
-
3
- export const zoraTabBarMeta = {
4
- name: 'ZoraTabBar',
5
- category: 'pattern',
6
- directManifestNode: false,
7
- allowedChildren: [],
8
- note: 'Navigation chrome pattern; not represented as a manifest node in v1.',
9
- props: {},
10
- } as const satisfies ZoraComponentMeta;
@@ -1,18 +0,0 @@
1
- import type { ZoraNavigationRouteMap } from '../../components/navigation-list';
2
- import type {
3
- ZoraNavigationDescriptors,
4
- ZoraNavigationState,
5
- ZoraTabBarNavigation,
6
- } from '../../internal/resolveZoraNavigationItems';
7
- import type { ZoraBaseProps } from '../../theme/ZoraBaseProps';
8
-
9
- export interface ZoraTabBarProps extends ZoraBaseProps {
10
- state: ZoraNavigationState;
11
- navigation: ZoraTabBarNavigation;
12
- descriptors?: ZoraNavigationDescriptors | undefined;
13
- insets?: { top?: number; bottom?: number; left?: number; right?: number } | undefined;
14
- routeMap?: ZoraNavigationRouteMap | undefined;
15
- compact?: boolean;
16
- chrome?: 'none' | 'raised';
17
- testID?: string;
18
- }