@oxyhq/bloom 0.17.0 → 0.18.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 (245) hide show
  1. package/lib/commonjs/admonition/index.js +24 -23
  2. package/lib/commonjs/admonition/index.js.map +1 -1
  3. package/lib/commonjs/combobox/Combobox.js +7 -7
  4. package/lib/commonjs/combobox/Combobox.js.map +1 -1
  5. package/lib/commonjs/context-menu/context.js +2 -2
  6. package/lib/commonjs/context-menu/context.js.map +1 -1
  7. package/lib/commonjs/context-menu/index.js +25 -25
  8. package/lib/commonjs/context-menu/index.js.map +1 -1
  9. package/lib/commonjs/context-menu/index.web.js +27 -27
  10. package/lib/commonjs/context-menu/index.web.js.map +1 -1
  11. package/lib/commonjs/dialog/SheetShell.js +1 -1
  12. package/lib/commonjs/index.js +134 -38
  13. package/lib/commonjs/index.js.map +1 -1
  14. package/lib/commonjs/index.web.js +134 -38
  15. package/lib/commonjs/index.web.js.map +1 -1
  16. package/lib/commonjs/input-group/InputGroup.js +1 -1
  17. package/lib/commonjs/menu/context.js +2 -2
  18. package/lib/commonjs/menu/context.js.map +1 -1
  19. package/lib/commonjs/menu/index.js +17 -17
  20. package/lib/commonjs/menu/index.js.map +1 -1
  21. package/lib/commonjs/menu/index.web.js +16 -16
  22. package/lib/commonjs/menu/index.web.js.map +1 -1
  23. package/lib/commonjs/popover/context.js +1 -1
  24. package/lib/commonjs/popover/context.js.map +1 -1
  25. package/lib/commonjs/popover/index.js +6 -6
  26. package/lib/commonjs/popover/index.js.map +1 -1
  27. package/lib/commonjs/popover/index.web.js +6 -6
  28. package/lib/commonjs/popover/index.web.js.map +1 -1
  29. package/lib/commonjs/search-input/index.js +4 -5
  30. package/lib/commonjs/search-input/index.js.map +1 -1
  31. package/lib/commonjs/segmented-control/index.js +18 -18
  32. package/lib/commonjs/segmented-control/index.js.map +1 -1
  33. package/lib/commonjs/select/common.js +2 -2
  34. package/lib/commonjs/select/common.js.map +1 -1
  35. package/lib/commonjs/select/index.js +34 -38
  36. package/lib/commonjs/select/index.js.map +1 -1
  37. package/lib/commonjs/select/index.web.js +31 -35
  38. package/lib/commonjs/select/index.web.js.map +1 -1
  39. package/lib/commonjs/tabs/Tabs.js +7 -7
  40. package/lib/commonjs/tabs/Tabs.js.map +1 -1
  41. package/lib/commonjs/tabs/index.js +6 -6
  42. package/lib/commonjs/text-field/index.js +14 -14
  43. package/lib/commonjs/text-field/index.js.map +1 -1
  44. package/lib/commonjs/theme/color-scope/style-builder.js +6 -6
  45. package/lib/commonjs/tooltip/index.js +11 -11
  46. package/lib/commonjs/tooltip/index.js.map +1 -1
  47. package/lib/commonjs/tooltip/index.web.js +11 -11
  48. package/lib/commonjs/tooltip/index.web.js.map +1 -1
  49. package/lib/module/admonition/index.js +18 -17
  50. package/lib/module/admonition/index.js.map +1 -1
  51. package/lib/module/combobox/Combobox.js +7 -7
  52. package/lib/module/combobox/Combobox.js.map +1 -1
  53. package/lib/module/context-menu/context.js +2 -2
  54. package/lib/module/context-menu/context.js.map +1 -1
  55. package/lib/module/context-menu/index.js +17 -17
  56. package/lib/module/context-menu/index.js.map +1 -1
  57. package/lib/module/context-menu/index.web.js +19 -19
  58. package/lib/module/context-menu/index.web.js.map +1 -1
  59. package/lib/module/dialog/SheetShell.js +1 -1
  60. package/lib/module/index.js +11 -11
  61. package/lib/module/index.js.map +1 -1
  62. package/lib/module/index.web.js +11 -11
  63. package/lib/module/index.web.js.map +1 -1
  64. package/lib/module/input-group/InputGroup.js +1 -1
  65. package/lib/module/menu/context.js +2 -2
  66. package/lib/module/menu/context.js.map +1 -1
  67. package/lib/module/menu/index.js +9 -9
  68. package/lib/module/menu/index.js.map +1 -1
  69. package/lib/module/menu/index.web.js +8 -8
  70. package/lib/module/menu/index.web.js.map +1 -1
  71. package/lib/module/popover/context.js +1 -1
  72. package/lib/module/popover/context.js.map +1 -1
  73. package/lib/module/popover/index.js +3 -3
  74. package/lib/module/popover/index.js.map +1 -1
  75. package/lib/module/popover/index.web.js +3 -3
  76. package/lib/module/popover/index.web.js.map +1 -1
  77. package/lib/module/search-input/index.js +4 -4
  78. package/lib/module/search-input/index.js.map +1 -1
  79. package/lib/module/segmented-control/index.js +15 -15
  80. package/lib/module/segmented-control/index.js.map +1 -1
  81. package/lib/module/select/common.js +1 -1
  82. package/lib/module/select/common.js.map +1 -1
  83. package/lib/module/select/index.js +25 -29
  84. package/lib/module/select/index.js.map +1 -1
  85. package/lib/module/select/index.web.js +22 -26
  86. package/lib/module/select/index.web.js.map +1 -1
  87. package/lib/module/tabs/Tabs.js +6 -6
  88. package/lib/module/tabs/Tabs.js.map +1 -1
  89. package/lib/module/tabs/index.js +1 -1
  90. package/lib/module/tabs/index.js.map +1 -1
  91. package/lib/module/text-field/index.js +8 -8
  92. package/lib/module/text-field/index.js.map +1 -1
  93. package/lib/module/theme/color-scope/style-builder.js +6 -6
  94. package/lib/module/tooltip/index.js +6 -6
  95. package/lib/module/tooltip/index.js.map +1 -1
  96. package/lib/module/tooltip/index.web.js +6 -6
  97. package/lib/module/tooltip/index.web.js.map +1 -1
  98. package/lib/typescript/commonjs/admonition/index.d.ts +14 -13
  99. package/lib/typescript/commonjs/admonition/index.d.ts.map +1 -1
  100. package/lib/typescript/commonjs/combobox/Combobox.d.ts +7 -7
  101. package/lib/typescript/commonjs/combobox/Combobox.d.ts.map +1 -1
  102. package/lib/typescript/commonjs/context-menu/index.d.ts +9 -9
  103. package/lib/typescript/commonjs/context-menu/index.d.ts.map +1 -1
  104. package/lib/typescript/commonjs/context-menu/index.web.d.ts +9 -9
  105. package/lib/typescript/commonjs/context-menu/index.web.d.ts.map +1 -1
  106. package/lib/typescript/commonjs/context-menu/types.d.ts +6 -6
  107. package/lib/typescript/commonjs/context-menu/types.d.ts.map +1 -1
  108. package/lib/typescript/commonjs/dialog/SheetShell.d.ts +1 -1
  109. package/lib/typescript/commonjs/index.d.ts +11 -11
  110. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  111. package/lib/typescript/commonjs/index.web.d.ts +11 -11
  112. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  113. package/lib/typescript/commonjs/input-group/types.d.ts +1 -1
  114. package/lib/typescript/commonjs/menu/index.d.ts +9 -9
  115. package/lib/typescript/commonjs/menu/index.d.ts.map +1 -1
  116. package/lib/typescript/commonjs/menu/index.web.d.ts +9 -9
  117. package/lib/typescript/commonjs/menu/index.web.d.ts.map +1 -1
  118. package/lib/typescript/commonjs/menu/types.d.ts +5 -5
  119. package/lib/typescript/commonjs/menu/types.d.ts.map +1 -1
  120. package/lib/typescript/commonjs/popover/index.d.ts +5 -5
  121. package/lib/typescript/commonjs/popover/index.d.ts.map +1 -1
  122. package/lib/typescript/commonjs/popover/index.web.d.ts +5 -5
  123. package/lib/typescript/commonjs/popover/index.web.d.ts.map +1 -1
  124. package/lib/typescript/commonjs/popover/types.d.ts +1 -1
  125. package/lib/typescript/commonjs/popover/types.d.ts.map +1 -1
  126. package/lib/typescript/commonjs/search-input/index.d.ts +3 -3
  127. package/lib/typescript/commonjs/search-input/index.d.ts.map +1 -1
  128. package/lib/typescript/commonjs/segmented-control/index.d.ts +13 -13
  129. package/lib/typescript/commonjs/segmented-control/index.d.ts.map +1 -1
  130. package/lib/typescript/commonjs/select/common.d.ts +1 -1
  131. package/lib/typescript/commonjs/select/common.d.ts.map +1 -1
  132. package/lib/typescript/commonjs/select/index.d.ts +12 -12
  133. package/lib/typescript/commonjs/select/index.d.ts.map +1 -1
  134. package/lib/typescript/commonjs/select/index.web.d.ts +12 -12
  135. package/lib/typescript/commonjs/select/index.web.d.ts.map +1 -1
  136. package/lib/typescript/commonjs/select/types.d.ts +10 -10
  137. package/lib/typescript/commonjs/select/types.d.ts.map +1 -1
  138. package/lib/typescript/commonjs/tabs/Tabs.d.ts +4 -4
  139. package/lib/typescript/commonjs/tabs/Tabs.d.ts.map +1 -1
  140. package/lib/typescript/commonjs/tabs/index.d.ts +2 -2
  141. package/lib/typescript/commonjs/tabs/index.d.ts.map +1 -1
  142. package/lib/typescript/commonjs/tabs/types.d.ts +3 -3
  143. package/lib/typescript/commonjs/tabs/types.d.ts.map +1 -1
  144. package/lib/typescript/commonjs/text-field/index.d.ts +8 -8
  145. package/lib/typescript/commonjs/text-field/index.d.ts.map +1 -1
  146. package/lib/typescript/commonjs/theme/color-scope/style-builder.d.ts +6 -6
  147. package/lib/typescript/commonjs/tooltip/index.d.ts +6 -6
  148. package/lib/typescript/commonjs/tooltip/index.d.ts.map +1 -1
  149. package/lib/typescript/commonjs/tooltip/index.web.d.ts +6 -6
  150. package/lib/typescript/commonjs/tooltip/index.web.d.ts.map +1 -1
  151. package/lib/typescript/module/admonition/index.d.ts +14 -13
  152. package/lib/typescript/module/admonition/index.d.ts.map +1 -1
  153. package/lib/typescript/module/combobox/Combobox.d.ts +7 -7
  154. package/lib/typescript/module/combobox/Combobox.d.ts.map +1 -1
  155. package/lib/typescript/module/context-menu/index.d.ts +9 -9
  156. package/lib/typescript/module/context-menu/index.d.ts.map +1 -1
  157. package/lib/typescript/module/context-menu/index.web.d.ts +9 -9
  158. package/lib/typescript/module/context-menu/index.web.d.ts.map +1 -1
  159. package/lib/typescript/module/context-menu/types.d.ts +6 -6
  160. package/lib/typescript/module/context-menu/types.d.ts.map +1 -1
  161. package/lib/typescript/module/dialog/SheetShell.d.ts +1 -1
  162. package/lib/typescript/module/index.d.ts +11 -11
  163. package/lib/typescript/module/index.d.ts.map +1 -1
  164. package/lib/typescript/module/index.web.d.ts +11 -11
  165. package/lib/typescript/module/index.web.d.ts.map +1 -1
  166. package/lib/typescript/module/input-group/types.d.ts +1 -1
  167. package/lib/typescript/module/menu/index.d.ts +9 -9
  168. package/lib/typescript/module/menu/index.d.ts.map +1 -1
  169. package/lib/typescript/module/menu/index.web.d.ts +9 -9
  170. package/lib/typescript/module/menu/index.web.d.ts.map +1 -1
  171. package/lib/typescript/module/menu/types.d.ts +5 -5
  172. package/lib/typescript/module/menu/types.d.ts.map +1 -1
  173. package/lib/typescript/module/popover/index.d.ts +5 -5
  174. package/lib/typescript/module/popover/index.d.ts.map +1 -1
  175. package/lib/typescript/module/popover/index.web.d.ts +5 -5
  176. package/lib/typescript/module/popover/index.web.d.ts.map +1 -1
  177. package/lib/typescript/module/popover/types.d.ts +1 -1
  178. package/lib/typescript/module/popover/types.d.ts.map +1 -1
  179. package/lib/typescript/module/search-input/index.d.ts +3 -3
  180. package/lib/typescript/module/search-input/index.d.ts.map +1 -1
  181. package/lib/typescript/module/segmented-control/index.d.ts +13 -13
  182. package/lib/typescript/module/segmented-control/index.d.ts.map +1 -1
  183. package/lib/typescript/module/select/common.d.ts +1 -1
  184. package/lib/typescript/module/select/common.d.ts.map +1 -1
  185. package/lib/typescript/module/select/index.d.ts +12 -12
  186. package/lib/typescript/module/select/index.d.ts.map +1 -1
  187. package/lib/typescript/module/select/index.web.d.ts +12 -12
  188. package/lib/typescript/module/select/index.web.d.ts.map +1 -1
  189. package/lib/typescript/module/select/types.d.ts +10 -10
  190. package/lib/typescript/module/select/types.d.ts.map +1 -1
  191. package/lib/typescript/module/tabs/Tabs.d.ts +4 -4
  192. package/lib/typescript/module/tabs/Tabs.d.ts.map +1 -1
  193. package/lib/typescript/module/tabs/index.d.ts +2 -2
  194. package/lib/typescript/module/tabs/index.d.ts.map +1 -1
  195. package/lib/typescript/module/tabs/types.d.ts +3 -3
  196. package/lib/typescript/module/tabs/types.d.ts.map +1 -1
  197. package/lib/typescript/module/text-field/index.d.ts +8 -8
  198. package/lib/typescript/module/text-field/index.d.ts.map +1 -1
  199. package/lib/typescript/module/theme/color-scope/style-builder.d.ts +6 -6
  200. package/lib/typescript/module/tooltip/index.d.ts +6 -6
  201. package/lib/typescript/module/tooltip/index.d.ts.map +1 -1
  202. package/lib/typescript/module/tooltip/index.web.d.ts +6 -6
  203. package/lib/typescript/module/tooltip/index.web.d.ts.map +1 -1
  204. package/package.json +1 -1
  205. package/src/__tests__/public-api-contract.test.ts +19 -7
  206. package/src/__tests__/useNavigationTheme.test.tsx +227 -0
  207. package/src/admonition/index.tsx +22 -21
  208. package/src/combobox/Combobox.tsx +14 -14
  209. package/src/context-menu/ContextMenu.stories.tsx +26 -18
  210. package/src/context-menu/context.ts +2 -2
  211. package/src/context-menu/index.tsx +24 -24
  212. package/src/context-menu/index.web.tsx +26 -26
  213. package/src/context-menu/types.ts +6 -6
  214. package/src/dialog/SheetShell.tsx +1 -1
  215. package/src/field/Field.stories.tsx +3 -3
  216. package/src/index.ts +11 -11
  217. package/src/index.web.ts +11 -11
  218. package/src/input-group/InputGroup.stories.tsx +4 -4
  219. package/src/input-group/InputGroup.tsx +1 -1
  220. package/src/input-group/types.ts +1 -1
  221. package/src/menu/Menu.stories.tsx +35 -35
  222. package/src/menu/context.ts +2 -2
  223. package/src/menu/index.tsx +15 -15
  224. package/src/menu/index.web.tsx +14 -14
  225. package/src/menu/types.ts +5 -5
  226. package/src/popover/Popover.stories.tsx +13 -13
  227. package/src/popover/context.ts +1 -1
  228. package/src/popover/index.tsx +5 -5
  229. package/src/popover/index.web.tsx +5 -5
  230. package/src/popover/types.ts +1 -1
  231. package/src/search-input/index.tsx +7 -7
  232. package/src/segmented-control/index.tsx +15 -15
  233. package/src/select/Select.stories.tsx +32 -23
  234. package/src/select/common.ts +1 -1
  235. package/src/select/index.tsx +39 -43
  236. package/src/select/index.web.tsx +33 -37
  237. package/src/select/types.ts +10 -10
  238. package/src/tabs/Tabs.tsx +9 -9
  239. package/src/tabs/index.ts +2 -2
  240. package/src/tabs/types.ts +3 -3
  241. package/src/text-field/TextField.stories.tsx +5 -5
  242. package/src/text-field/index.tsx +12 -12
  243. package/src/theme/color-scope/style-builder.ts +6 -6
  244. package/src/tooltip/index.tsx +6 -6
  245. package/src/tooltip/index.web.tsx +6 -6
@@ -15,18 +15,18 @@ import {
15
15
  } from './context';
16
16
  import type {
17
17
  MenuContextType,
18
- GroupProps,
19
- ItemIconProps,
20
- ItemProps,
21
- ItemTextProps,
22
- TriggerProps,
18
+ MenuGroupProps,
19
+ MenuItemIconProps,
20
+ MenuItemProps,
21
+ MenuItemTextProps,
22
+ MenuTriggerProps,
23
23
  } from './types';
24
24
 
25
25
  export type { DialogControlProps as MenuControlProps } from '../dialog/types';
26
26
  export { useDialogControl as useMenuControl } from '../dialog/context';
27
27
  export { useMenuContext };
28
28
 
29
- export function Root({
29
+ export function Menu({
30
30
  children,
31
31
  control,
32
32
  }: React.PropsWithChildren<{
@@ -47,12 +47,12 @@ export function Root({
47
47
  );
48
48
  }
49
49
 
50
- export function Trigger({
50
+ export function MenuTrigger({
51
51
  children,
52
52
  label,
53
53
  role = 'button',
54
54
  hint,
55
- }: TriggerProps) {
55
+ }: MenuTriggerProps) {
56
56
  const context = useMenuContext();
57
57
  const [focused, setFocused] = useState(false);
58
58
  const [pressed, setPressed] = useState(false);
@@ -75,7 +75,7 @@ export function Trigger({
75
75
  });
76
76
  }
77
77
 
78
- export function Outer({
78
+ export function MenuContent({
79
79
  children,
80
80
  showCancel,
81
81
  }: React.PropsWithChildren<{
@@ -96,7 +96,7 @@ export function Outer({
96
96
  );
97
97
  }
98
98
 
99
- export function Item({ children, label, style, onPress, ...rest }: ItemProps) {
99
+ export function MenuItem({ children, label, style, onPress, ...rest }: MenuItemProps) {
100
100
  const theme = useTheme();
101
101
  const context = useMenuContext();
102
102
  const [focused, setFocused] = useState(false);
@@ -148,7 +148,7 @@ export function Item({ children, label, style, onPress, ...rest }: ItemProps) {
148
148
  );
149
149
  }
150
150
 
151
- export function ItemText({ children, style }: ItemTextProps) {
151
+ export function MenuItemText({ children, style }: MenuItemTextProps) {
152
152
  const theme = useTheme();
153
153
  const { disabled } = useMenuItemContext();
154
154
 
@@ -167,7 +167,7 @@ export function ItemText({ children, style }: ItemTextProps) {
167
167
  );
168
168
  }
169
169
 
170
- export function ItemIcon({ icon: Comp, fill }: ItemIconProps) {
170
+ export function MenuItemIcon({ icon: Comp, fill }: MenuItemIconProps) {
171
171
  const theme = useTheme();
172
172
  const { disabled } = useMenuItemContext();
173
173
 
@@ -185,7 +185,7 @@ export function ItemIcon({ icon: Comp, fill }: ItemIconProps) {
185
185
  );
186
186
  }
187
187
 
188
- export function Group({ children, style }: GroupProps) {
188
+ export function MenuGroup({ children, style }: MenuGroupProps) {
189
189
  const theme = useTheme();
190
190
 
191
191
  const childArray = React.Children.toArray(children).filter(isValidElement);
@@ -199,7 +199,7 @@ export function Group({ children, style }: GroupProps) {
199
199
  ]}
200
200
  >
201
201
  {childArray.map((child, i) => {
202
- if (child.type === Item) {
202
+ if (child.type === MenuItem) {
203
203
  return (
204
204
  <Fragment key={i}>
205
205
  {i > 0 && (
@@ -225,7 +225,7 @@ export function Group({ children, style }: GroupProps) {
225
225
  );
226
226
  }
227
227
 
228
- export function Divider() {
228
+ export function MenuDivider() {
229
229
  return null;
230
230
  }
231
231
 
@@ -25,11 +25,11 @@ import {
25
25
  } from './context';
26
26
  import type {
27
27
  MenuContextType,
28
- GroupProps,
29
- ItemIconProps,
30
- ItemProps,
31
- ItemTextProps,
32
- TriggerProps,
28
+ MenuGroupProps,
29
+ MenuItemIconProps,
30
+ MenuItemProps,
31
+ MenuItemTextProps,
32
+ MenuTriggerProps,
33
33
  } from './types';
34
34
 
35
35
  export { useMenuContext };
@@ -92,7 +92,7 @@ function useMenuControlAsDialogControl(
92
92
  }, [menuControl]);
93
93
  }
94
94
 
95
- export function Root({
95
+ export function Menu({
96
96
  children,
97
97
  control,
98
98
  }: React.PropsWithChildren<{
@@ -157,12 +157,12 @@ export function Root({
157
157
  );
158
158
  }
159
159
 
160
- export function Trigger({
160
+ export function MenuTrigger({
161
161
  children,
162
162
  label,
163
163
  role = 'button',
164
164
  hint,
165
- }: TriggerProps) {
165
+ }: MenuTriggerProps) {
166
166
  const { control, triggerRef } = useMenuContext();
167
167
  const [hovered, setHovered] = useState(false);
168
168
  const [focused, setFocused] = useState(false);
@@ -186,7 +186,7 @@ export function Trigger({
186
186
  });
187
187
  }
188
188
 
189
- export function Outer({
189
+ export function MenuContent({
190
190
  children,
191
191
  style,
192
192
  }: React.PropsWithChildren<{
@@ -268,7 +268,7 @@ export function Outer({
268
268
  );
269
269
  }
270
270
 
271
- export function Item({ children, label, onPress, style, ...rest }: ItemProps) {
271
+ export function MenuItem({ children, label, onPress, style, ...rest }: MenuItemProps) {
272
272
  const theme = useTheme();
273
273
  const { control } = useMenuContext();
274
274
  const [hovered, setHovered] = useState(false);
@@ -321,7 +321,7 @@ export function Item({ children, label, onPress, style, ...rest }: ItemProps) {
321
321
  );
322
322
  }
323
323
 
324
- export function ItemText({ children, style }: ItemTextProps) {
324
+ export function MenuItemText({ children, style }: MenuItemTextProps) {
325
325
  const theme = useTheme();
326
326
  const { disabled } = useMenuItemContext();
327
327
 
@@ -338,7 +338,7 @@ export function ItemText({ children, style }: ItemTextProps) {
338
338
  );
339
339
  }
340
340
 
341
- export function ItemIcon({ icon: Comp, position = 'left', fill }: ItemIconProps) {
341
+ export function MenuItemIcon({ icon: Comp, position = 'left', fill }: MenuItemIconProps) {
342
342
  const theme = useTheme();
343
343
  const { disabled } = useMenuItemContext();
344
344
 
@@ -363,11 +363,11 @@ export function ItemIcon({ icon: Comp, position = 'left', fill }: ItemIconProps)
363
363
  );
364
364
  }
365
365
 
366
- export function Group({ children }: GroupProps) {
366
+ export function MenuGroup({ children }: MenuGroupProps) {
367
367
  return <>{children}</>;
368
368
  }
369
369
 
370
- export function Divider() {
370
+ export function MenuDivider() {
371
371
  const theme = useTheme();
372
372
 
373
373
  return (
package/src/menu/types.ts CHANGED
@@ -48,14 +48,14 @@ export type TriggerChildProps = {
48
48
  };
49
49
  };
50
50
 
51
- export type TriggerProps = {
51
+ export type MenuTriggerProps = {
52
52
  children: (props: TriggerChildProps) => React.ReactNode;
53
53
  label: string;
54
54
  hint?: string;
55
55
  role?: AccessibilityRole;
56
56
  };
57
57
 
58
- export type ItemProps = React.PropsWithChildren<
58
+ export type MenuItemProps = React.PropsWithChildren<
59
59
  Omit<PressableProps, 'style'> & {
60
60
  label: string;
61
61
  onPress: (e: GestureResponderEvent) => void;
@@ -63,16 +63,16 @@ export type ItemProps = React.PropsWithChildren<
63
63
  }
64
64
  >;
65
65
 
66
- export type ItemTextProps = React.PropsWithChildren<{
66
+ export type MenuItemTextProps = React.PropsWithChildren<{
67
67
  style?: TextStyle;
68
68
  }>;
69
69
 
70
- export type ItemIconProps = {
70
+ export type MenuItemIconProps = {
71
71
  icon: React.ComponentType<SVGIconProps>;
72
72
  position?: 'left' | 'right';
73
73
  fill?: (props: { disabled: boolean }) => string;
74
74
  };
75
75
 
76
- export type GroupProps = React.PropsWithChildren<{
76
+ export type MenuGroupProps = React.PropsWithChildren<{
77
77
  style?: StyleProp<ViewStyle>;
78
78
  }>;
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { View } from 'react-native';
3
3
  import type { Meta, StoryObj } from '@storybook/react-vite';
4
4
 
5
- import * as Popover from './index';
5
+ import { Popover, PopoverTrigger, PopoverContent } from './index';
6
6
  import { Button } from '../button';
7
7
  import { Item } from '../item';
8
8
  import { Text } from '../typography';
@@ -18,22 +18,22 @@ type Story = StoryObj;
18
18
  export const Basic: Story = {
19
19
  render: () => (
20
20
  <View style={{ padding: 80 }}>
21
- <Popover.Root>
22
- <Popover.Trigger label="Open popover">
21
+ <Popover>
22
+ <PopoverTrigger label="Open popover">
23
23
  {({ props }) => (
24
24
  <Button {...props} onPress={props.onPress}>
25
25
  Open popover
26
26
  </Button>
27
27
  )}
28
- </Popover.Trigger>
29
- <Popover.Content label="Account actions" placement="bottom-start">
28
+ </PopoverTrigger>
29
+ <PopoverContent label="Account actions" placement="bottom-start">
30
30
  <View style={{ minWidth: 200 }}>
31
31
  <Item title="Edit profile" density="compact" onPress={() => {}} />
32
32
  <Item title="Settings" density="compact" onPress={() => {}} />
33
33
  <Item title="Sign out" density="compact" destructive onPress={() => {}} />
34
34
  </View>
35
- </Popover.Content>
36
- </Popover.Root>
35
+ </PopoverContent>
36
+ </Popover>
37
37
  </View>
38
38
  ),
39
39
  };
@@ -41,21 +41,21 @@ export const Basic: Story = {
41
41
  export const RichContent: Story = {
42
42
  render: () => (
43
43
  <View style={{ padding: 80 }}>
44
- <Popover.Root>
45
- <Popover.Trigger label="Details">
44
+ <Popover>
45
+ <PopoverTrigger label="Details">
46
46
  {({ props }) => (
47
47
  <Button {...props} variant="secondary" onPress={props.onPress}>
48
48
  Details
49
49
  </Button>
50
50
  )}
51
- </Popover.Trigger>
52
- <Popover.Content label="Details" placement="bottom" maxWidth={280}>
51
+ </PopoverTrigger>
52
+ <PopoverContent label="Details" placement="bottom" maxWidth={280}>
53
53
  <View style={{ padding: 12, gap: 6 }}>
54
54
  <Text style={{ fontWeight: '600' }}>Storage</Text>
55
55
  <Text>4.2 GB of 10 GB used.</Text>
56
56
  </View>
57
- </Popover.Content>
58
- </Popover.Root>
57
+ </PopoverContent>
58
+ </Popover>
59
59
  </View>
60
60
  ),
61
61
  };
@@ -20,7 +20,7 @@ PopoverContext.displayName = 'PopoverContext';
20
20
  export function usePopoverContext(): PopoverContextValue {
21
21
  const ctx = useContext(PopoverContext);
22
22
  if (!ctx) {
23
- throw new Error('Popover components must be used within a <Popover.Root>');
23
+ throw new Error('Popover components must be used within a <Popover>');
24
24
  }
25
25
  return ctx;
26
26
  }
@@ -7,7 +7,7 @@ import { PopoverContext, usePopoverContext } from './context';
7
7
  import type {
8
8
  PopoverContentProps,
9
9
  PopoverControlProps,
10
- PopoverRootProps,
10
+ PopoverProps,
11
11
  PopoverTriggerProps,
12
12
  } from './types';
13
13
 
@@ -15,7 +15,7 @@ export type {
15
15
  PopoverControlProps,
16
16
  PopoverContentProps,
17
17
  PopoverTriggerProps,
18
- PopoverRootProps,
18
+ PopoverProps,
19
19
  PopoverPlacement,
20
20
  PopoverTriggerRenderProps,
21
21
  PopoverTriggerState,
@@ -29,7 +29,7 @@ export { usePopoverContext };
29
29
  * established native-overlay convention, shared with `Menu`/`Select`). The
30
30
  * web fork (`index.web.tsx`) anchors a floating panel to the trigger.
31
31
  */
32
- export function Root({ children, control }: PopoverRootProps) {
32
+ export function Popover({ children, control }: PopoverProps) {
33
33
  const defaultControl = useDialogControl();
34
34
  const triggerRef = useRef<View | null>(null);
35
35
  const [isOpen, setIsOpen] = useState(false);
@@ -64,7 +64,7 @@ export function Root({ children, control }: PopoverRootProps) {
64
64
  );
65
65
  }
66
66
 
67
- export function Trigger({ children, label }: PopoverTriggerProps) {
67
+ export function PopoverTrigger({ children, label }: PopoverTriggerProps) {
68
68
  const { control, triggerRef } = usePopoverContext();
69
69
  const [focused, setFocused] = useState(false);
70
70
  const [pressed, setPressed] = useState(false);
@@ -89,7 +89,7 @@ export function Trigger({ children, label }: PopoverTriggerProps) {
89
89
  );
90
90
  }
91
91
 
92
- export function Content({
92
+ export function PopoverContent({
93
93
  children,
94
94
  label = 'Popover',
95
95
  style,
@@ -17,7 +17,7 @@ import type {
17
17
  PopoverContentProps,
18
18
  PopoverControlProps,
19
19
  PopoverPlacement,
20
- PopoverRootProps,
20
+ PopoverProps,
21
21
  PopoverTriggerProps,
22
22
  } from './types';
23
23
 
@@ -25,7 +25,7 @@ export type {
25
25
  PopoverControlProps,
26
26
  PopoverContentProps,
27
27
  PopoverTriggerProps,
28
- PopoverRootProps,
28
+ PopoverProps,
29
29
  PopoverPlacement,
30
30
  PopoverTriggerRenderProps,
31
31
  PopoverTriggerState,
@@ -69,7 +69,7 @@ interface Rect {
69
69
  height: number;
70
70
  }
71
71
 
72
- export function Root({ children, control }: PopoverRootProps) {
72
+ export function Popover({ children, control }: PopoverProps) {
73
73
  const id = useId();
74
74
  const [isOpen, setIsOpen] = useState(false);
75
75
  const triggerRef = useRef<View | null>(null);
@@ -121,7 +121,7 @@ export function Root({ children, control }: PopoverRootProps) {
121
121
  );
122
122
  }
123
123
 
124
- export function Trigger({ children, label }: PopoverTriggerProps) {
124
+ export function PopoverTrigger({ children, label }: PopoverTriggerProps) {
125
125
  const { control, triggerRef, isOpen } = usePopoverContext();
126
126
  const [hovered, setHovered] = useState(false);
127
127
  const [focused, setFocused] = useState(false);
@@ -191,7 +191,7 @@ function resolvePosition(
191
191
  return { left, top };
192
192
  }
193
193
 
194
- export function Content({
194
+ export function PopoverContent({
195
195
  children,
196
196
  label = 'Popover',
197
197
  placement = 'bottom-start',
@@ -53,7 +53,7 @@ export interface PopoverContentProps {
53
53
  testID?: string;
54
54
  }
55
55
 
56
- export interface PopoverRootProps {
56
+ export interface PopoverProps {
57
57
  children: React.ReactNode;
58
58
  /** Optionally supply your own control (from `usePopoverControl`). */
59
59
  control?: PopoverControlProps;
@@ -4,12 +4,12 @@ import { Platform, type TextInput, View } from 'react-native';
4
4
  import { useTheme } from '../theme/use-theme';
5
5
  import { atoms as a } from '../styles';
6
6
  import { Button } from '../button';
7
- import * as TextField from '../text-field';
7
+ import { TextField, TextFieldIcon, TextFieldInput, type TextFieldInputProps } from '../text-field';
8
8
  import { MagnifyingGlass_Stroke2_Corner0_Rounded as MagnifyingGlassIcon } from '../icons/MagnifyingGlass';
9
9
  import { TimesLarge_Stroke2_Corner0_Rounded as X } from '../icons/Times';
10
10
 
11
- type SearchInputProps = Omit<TextField.InputProps, 'label'> & {
12
- label?: TextField.InputProps['label'];
11
+ type SearchInputProps = Omit<TextFieldInputProps, 'label'> & {
12
+ label?: TextFieldInputProps['label'];
13
13
  /**
14
14
  * Called when the user presses the clear (X) button.
15
15
  */
@@ -23,9 +23,9 @@ export const SearchInput = forwardRef<TextInput, SearchInputProps>(
23
23
 
24
24
  return (
25
25
  <View style={[a.w_full, a.relative]}>
26
- <TextField.Root>
27
- <TextField.Icon icon={MagnifyingGlassIcon} />
28
- <TextField.Input
26
+ <TextField>
27
+ <TextFieldIcon icon={MagnifyingGlassIcon} />
28
+ <TextFieldInput
29
29
  inputRef={ref}
30
30
  label={label}
31
31
  value={value}
@@ -41,7 +41,7 @@ export const SearchInput = forwardRef<TextInput, SearchInputProps>(
41
41
  style={showClear ? { paddingRight: 24 } : undefined}
42
42
  {...rest}
43
43
  />
44
- </TextField.Root>
44
+ </TextField>
45
45
 
46
46
  {showClear && (
47
47
  <View
@@ -40,21 +40,21 @@ const InternalContext = createContext<{
40
40
  *
41
41
  * @example
42
42
  * ```tsx
43
- * <SegmentedControl.Root value={value} onChange={setValue}>
44
- * <SegmentedControl.Item value="one">
45
- * <SegmentedControl.ItemText value="one">
43
+ * <SegmentedControl value={value} onChange={setValue}>
44
+ * <SegmentedControlItem value="one">
45
+ * <SegmentedControlItemText value="one">
46
46
  * One
47
- * </SegmentedControl.ItemText>
48
- * </SegmentedControl.Item>
49
- * <SegmentedControl.Item value="two">
50
- * <SegmentedControl.ItemText value="two">
47
+ * </SegmentedControlItemText>
48
+ * </SegmentedControlItem>
49
+ * <SegmentedControlItem value="two">
50
+ * <SegmentedControlItemText value="two">
51
51
  * Two
52
- * </SegmentedControl.ItemText>
53
- * </SegmentedControl.Item>
54
- * </SegmentedControl.Root>
52
+ * </SegmentedControlItemText>
53
+ * </SegmentedControlItem>
54
+ * </SegmentedControl>
55
55
  * ```
56
56
  */
57
- export function Root<T extends string>({
57
+ export function SegmentedControl<T extends string>({
58
58
  label,
59
59
  type = 'radio',
60
60
  size = 'large',
@@ -146,7 +146,7 @@ const InternalItemContext = createContext<{
146
146
  active: boolean;
147
147
  } | null>(null);
148
148
 
149
- export function Item({
149
+ export function SegmentedControlItem({
150
150
  value,
151
151
  style,
152
152
  children,
@@ -177,7 +177,7 @@ export function Item({
177
177
  const ctx = useContext(InternalContext);
178
178
  if (!ctx) {
179
179
  throw new Error(
180
- 'SegmentedControl.Item must be used within a SegmentedControl.Root',
180
+ 'SegmentedControlItem must be used within a SegmentedControl',
181
181
  );
182
182
  }
183
183
 
@@ -264,7 +264,7 @@ export function Item({
264
264
  );
265
265
  }
266
266
 
267
- export function ItemText({
267
+ export function SegmentedControlItemText({
268
268
  style,
269
269
  children,
270
270
  ...props
@@ -276,7 +276,7 @@ export function ItemText({
276
276
  const ctx = useContext(InternalItemContext);
277
277
  if (!ctx) {
278
278
  throw new Error(
279
- 'SegmentedControl.ItemText must be used within a SegmentedControl.Item',
279
+ 'SegmentedControlItemText must be used within a SegmentedControlItem',
280
280
  );
281
281
  }
282
282
 
@@ -2,7 +2,16 @@ import React, { useState } from 'react';
2
2
  import { View } from 'react-native';
3
3
  import type { Meta, StoryObj } from '@storybook/react-vite';
4
4
 
5
- import * as Select from './index';
5
+ import {
6
+ Select,
7
+ SelectTrigger,
8
+ SelectValue,
9
+ SelectIcon,
10
+ SelectContent,
11
+ SelectItem,
12
+ SelectItemIndicator,
13
+ SelectItemText,
14
+ } from './index';
6
15
 
7
16
  const meta: Meta = {
8
17
  title: 'Components/Select',
@@ -25,44 +34,44 @@ const FRUITS: Option[] = [
25
34
  function BasicSelect() {
26
35
  const [value, setValue] = useState<string>('apple');
27
36
  return (
28
- <Select.Root value={value} onValueChange={setValue}>
29
- <Select.Trigger label="Pick a fruit">
30
- <Select.ValueText placeholder="Pick a fruit" />
31
- <Select.Icon />
32
- </Select.Trigger>
33
- <Select.Content
37
+ <Select value={value} onValueChange={setValue}>
38
+ <SelectTrigger label="Pick a fruit">
39
+ <SelectValue placeholder="Pick a fruit" />
40
+ <SelectIcon />
41
+ </SelectTrigger>
42
+ <SelectContent
34
43
  label="Pick a fruit"
35
44
  items={FRUITS}
36
45
  renderItem={(item) => (
37
- <Select.Item value={item.value} label={item.label}>
38
- <Select.ItemIndicator />
39
- <Select.ItemText>{item.label}</Select.ItemText>
40
- </Select.Item>
46
+ <SelectItem value={item.value} label={item.label}>
47
+ <SelectItemIndicator />
48
+ <SelectItemText>{item.label}</SelectItemText>
49
+ </SelectItem>
41
50
  )}
42
51
  />
43
- </Select.Root>
52
+ </Select>
44
53
  );
45
54
  }
46
55
 
47
56
  function UncontrolledSelect() {
48
57
  const [value, setValue] = useState<string | undefined>(undefined);
49
58
  return (
50
- <Select.Root value={value} onValueChange={setValue}>
51
- <Select.Trigger label="Pick a fruit">
52
- <Select.ValueText placeholder="No fruit selected" />
53
- <Select.Icon />
54
- </Select.Trigger>
55
- <Select.Content
59
+ <Select value={value} onValueChange={setValue}>
60
+ <SelectTrigger label="Pick a fruit">
61
+ <SelectValue placeholder="No fruit selected" />
62
+ <SelectIcon />
63
+ </SelectTrigger>
64
+ <SelectContent
56
65
  label="Pick a fruit"
57
66
  items={FRUITS}
58
67
  renderItem={(item) => (
59
- <Select.Item value={item.value} label={item.label}>
60
- <Select.ItemIndicator />
61
- <Select.ItemText>{item.label}</Select.ItemText>
62
- </Select.Item>
68
+ <SelectItem value={item.value} label={item.label}>
69
+ <SelectItemIndicator />
70
+ <SelectItemText>{item.label}</SelectItemText>
71
+ </SelectItem>
63
72
  )}
64
73
  />
65
- </Select.Root>
74
+ </Select>
66
75
  );
67
76
  }
68
77
 
@@ -28,6 +28,6 @@ export const ItemContext = createContext<SelectItemContextValue>({
28
28
  });
29
29
  ItemContext.displayName = 'SelectItemContext';
30
30
 
31
- export function useItemContext(): SelectItemContextValue {
31
+ export function useSelectItemContext(): SelectItemContextValue {
32
32
  return useContext(ItemContext);
33
33
  }