@oxyhq/bloom 0.8.3 → 0.8.5

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.
@@ -22,11 +22,14 @@ var _react = _interopRequireWildcard(require("react"));
22
22
  var _reactNative = require("react-native");
23
23
  var _useTheme = require("../theme/use-theme.js");
24
24
  var _index = require("../typography/index.js");
25
+ var _indexWeb = require("../portal/index.web.js");
25
26
  var _zIndex = require("../styles/z-index.js");
26
27
  var _context = require("./context.js");
27
28
  var _jsxRuntime = require("react/jsx-runtime");
28
29
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
29
30
  const menuZIndex = (0, _zIndex.createDropdownZIndex)();
31
+ const VIEWPORT_GUTTER = 8;
32
+ const MENU_OFFSET = 6;
30
33
  function useMenuControl() {
31
34
  const id = (0, _react.useId)();
32
35
  const [isOpen, setIsOpen] = (0, _react.useState)(false);
@@ -74,9 +77,13 @@ function Root({
74
77
  const activeControl = control ?? defaultControl;
75
78
  const dialogControl = useMenuControlAsDialogControl(activeControl);
76
79
  const rootRef = (0, _react.useRef)(null);
80
+ const triggerRef = (0, _react.useRef)(null);
81
+ const dropdownRef = (0, _react.useRef)(null);
77
82
  const context = (0, _react.useMemo)(() => ({
78
83
  control: dialogControl,
79
- isOpen: activeControl.isOpen
84
+ isOpen: activeControl.isOpen,
85
+ triggerRef,
86
+ dropdownRef
80
87
  }), [activeControl.isOpen, dialogControl]);
81
88
  (0, _react.useEffect)(() => {
82
89
  if (!activeControl.isOpen || typeof document === 'undefined') {
@@ -84,7 +91,9 @@ function Root({
84
91
  }
85
92
  const handlePointerDown = event => {
86
93
  const rootNode = rootRef.current;
87
- if (rootNode?.contains(event.target)) {
94
+ const dropdownNode = dropdownRef.current;
95
+ const eventTarget = event.target;
96
+ if (rootNode?.contains(eventTarget) || dropdownNode?.contains(eventTarget)) {
88
97
  return;
89
98
  }
90
99
  activeControl.close();
@@ -117,7 +126,8 @@ function Trigger({
117
126
  hint
118
127
  }) {
119
128
  const {
120
- control
129
+ control,
130
+ triggerRef
121
131
  } = (0, _context.useMenuContext)();
122
132
  const [hovered, setHovered] = (0, _react.useState)(false);
123
133
  const [focused, setFocused] = (0, _react.useState)(false);
@@ -129,6 +139,7 @@ function Trigger({
129
139
  pressed: false
130
140
  },
131
141
  props: {
142
+ ref: triggerRef,
132
143
  onPress: () => control.open(),
133
144
  onFocus: () => setFocused(true),
134
145
  onBlur: () => setFocused(false),
@@ -144,18 +155,51 @@ function Outer({
144
155
  }) {
145
156
  const theme = (0, _useTheme.useTheme)();
146
157
  const context = (0, _context.useMenuContext)();
147
- const dropdownRef = (0, _react.useRef)(null);
158
+ const [position, setPosition] = (0, _react.useState)(null);
159
+ (0, _react.useLayoutEffect)(() => {
160
+ if (!context.isOpen || typeof window === 'undefined') {
161
+ return;
162
+ }
163
+ const triggerNode = context.triggerRef?.current;
164
+ if (!triggerNode?.getBoundingClientRect) {
165
+ return;
166
+ }
167
+ const updatePosition = () => {
168
+ const rect = triggerNode.getBoundingClientRect();
169
+ const width = Math.max(180, rect.width);
170
+ const availableRight = window.innerWidth - VIEWPORT_GUTTER;
171
+ const left = Math.min(Math.max(VIEWPORT_GUTTER, rect.right - width), Math.max(VIEWPORT_GUTTER, availableRight - width));
172
+ const top = Math.min(rect.bottom + MENU_OFFSET, Math.max(VIEWPORT_GUTTER, window.innerHeight - VIEWPORT_GUTTER));
173
+ setPosition({
174
+ position: 'fixed',
175
+ top,
176
+ left,
177
+ right: undefined,
178
+ bottom: undefined,
179
+ minWidth: width
180
+ });
181
+ };
182
+ updatePosition();
183
+ window.addEventListener('resize', updatePosition);
184
+ window.addEventListener('scroll', updatePosition, true);
185
+ return () => {
186
+ window.removeEventListener('resize', updatePosition);
187
+ window.removeEventListener('scroll', updatePosition, true);
188
+ };
189
+ }, [context.isOpen, context.triggerRef]);
148
190
  if (!context.isOpen) {
149
191
  return null;
150
192
  }
151
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
152
- ref: dropdownRef,
153
- style: [styles.dropdown, {
154
- backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
155
- borderColor: theme.colors.borderLight,
156
- shadowColor: theme.colors.shadow
157
- }, style],
158
- children: children
193
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_indexWeb.Portal, {
194
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
195
+ ref: context.dropdownRef,
196
+ style: [styles.dropdown, {
197
+ backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
198
+ borderColor: theme.colors.borderLight,
199
+ shadowColor: theme.colors.shadow
200
+ }, style, styles.portaledDropdown, position],
201
+ children: children
202
+ })
159
203
  });
160
204
  }
161
205
  function Item({
@@ -270,6 +314,9 @@ const styles = _reactNative.StyleSheet.create({
270
314
  },
271
315
  minWidth: 180
272
316
  },
317
+ portaledDropdown: {
318
+ pointerEvents: 'auto'
319
+ },
273
320
  webItem: {
274
321
  flexDirection: 'row',
275
322
  alignItems: 'center',
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_index","_zIndex","_context","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","menuZIndex","createDropdownZIndex","useMenuControl","id","useId","isOpen","setIsOpen","useState","useMemo","open","close","useMenuControlAsDialogControl","menuControl","ref","useRef","dialogControl","cb","Root","children","control","defaultControl","activeControl","rootRef","context","useEffect","document","undefined","handlePointerDown","event","rootNode","current","contains","target","handleKeyDown","key","addEventListener","removeEventListener","jsx","MenuContext","Provider","value","View","style","styles","root","openRoot","Trigger","label","role","hint","useMenuContext","hovered","setHovered","focused","setFocused","state","pressed","props","onPress","onFocus","onBlur","accessibilityHint","accessibilityLabel","accessibilityRole","Outer","theme","useTheme","dropdownRef","dropdown","backgroundColor","isDark","colors","backgroundSecondary","background","borderColor","borderLight","shadowColor","shadow","Item","rest","handlePress","useCallback","defaultPrevented","isDisabled","Boolean","disabled","isHighlighted","itemContextValue","Pressable","onMouseEnter","onMouseLeave","webItem","contrast50","ItemContext","ItemText","useMenuItemContext","Text","webItemText","color","textTertiary","text","ItemIcon","icon","Comp","position","fill","iconLeft","iconRight","size","textSecondary","Group","Fragment","Divider","divider","StyleSheet","create","zIndex","borderRadius","padding","borderWidth","overflow","surface","shadowOpacity","shadowRadius","shadowOffset","width","height","minWidth","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","minHeight","flex","fontWeight","marginLeft","marginRight","marginVertical"],"sourceRoot":"../../../src","sources":["menu/index.web.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAWA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAEA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAKmB,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAD,wBAAAQ,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAV,uBAAA,YAAAA,CAAAQ,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAYnB,MAAMkB,UAAU,GAAG,IAAAC,4BAAoB,EAAC,CAAC;AASlC,SAASC,cAAcA,CAAA,EAAqB;EACjD,MAAMC,EAAE,GAAG,IAAAC,YAAK,EAAC,CAAC;EAClB,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EAE3C,OAAO,IAAAC,cAAO,EACZ,OAAO;IACLL,EAAE;IACFE,MAAM;IACNI,IAAIA,CAAA,EAAG;MACLH,SAAS,CAAC,IAAI,CAAC;IACjB,CAAC;IACDI,KAAKA,CAAA,EAAG;MACNJ,SAAS,CAAC,KAAK,CAAC;IAClB;EACF,CAAC,CAAC,EACF,CAACH,EAAE,EAAEE,MAAM,CACb,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASM,6BAA6BA,CACpCC,WAA6B,EACT;EACpB,MAAMC,GAAG,GAAG,IAAAC,aAAM,EAAgE,IAAI,CAAC;EAEvF,OAAO,IAAAN,cAAO,EAAqB,MAAM;IACvC,MAAMO,aAAiC,GAAG;MACxCZ,EAAE,EAAES,WAAW,CAACT,EAAE;MAClBU,GAAG;MACHJ,IAAIA,CAAA,EAAG;QACLG,WAAW,CAACH,IAAI,CAAC,CAAC;MACpB,CAAC;MACDC,KAAKA,CAACM,EAAe,EAAE;QACrBJ,WAAW,CAACF,KAAK,CAAC,CAAC;QACnB,IAAI,OAAOM,EAAE,KAAK,UAAU,EAAE;UAC5BA,EAAE,CAAC,CAAC;QACN;MACF;IACF,CAAC;IACD,OAAOD,aAAa;EACtB,CAAC,EAAE,CAACH,WAAW,CAAC,CAAC;AACnB;AAEO,SAASK,IAAIA,CAAC;EACnBC,QAAQ;EACRC;AAGD,CAAC,EAAE;EACF,MAAMC,cAAc,GAAGlB,cAAc,CAAC,CAAC;EACvC,MAAMmB,aAAa,GAAGF,OAAO,IAAIC,cAAc;EAC/C,MAAML,aAAa,GAAGJ,6BAA6B,CAACU,aAAa,CAAC;EAClE,MAAMC,OAAO,GAAG,IAAAR,aAAM,EAAO,IAAI,CAAC;EAElC,MAAMS,OAAO,GAAG,IAAAf,cAAO,EACrB,OAAO;IAAEW,OAAO,EAAEJ,aAAa;IAAEV,MAAM,EAAEgB,aAAa,CAAChB;EAAO,CAAC,CAAC,EAChE,CAACgB,aAAa,CAAChB,MAAM,EAAEU,aAAa,CACtC,CAAC;EAED,IAAAS,gBAAS,EAAC,MAAM;IACd,IAAI,CAACH,aAAa,CAAChB,MAAM,IAAI,OAAOoB,QAAQ,KAAK,WAAW,EAAE;MAC5D,OAAOC,SAAS;IAClB;IAEA,MAAMC,iBAAiB,GAAIC,KAAmB,IAAK;MACjD,MAAMC,QAAQ,GAAGP,OAAO,CAACQ,OAAwC;MACjE,IAAID,QAAQ,EAAEE,QAAQ,CAACH,KAAK,CAACI,MAAc,CAAC,EAAE;QAC5C;MACF;MACAX,aAAa,CAACX,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,MAAMuB,aAAa,GAAIL,KAAoB,IAAK;MAC9C,IAAIA,KAAK,CAACM,GAAG,KAAK,QAAQ,EAAE;QAC1Bb,aAAa,CAACX,KAAK,CAAC,CAAC;MACvB;IACF,CAAC;IAEDe,QAAQ,CAACU,gBAAgB,CAAC,aAAa,EAAER,iBAAiB,EAAE,IAAI,CAAC;IACjEF,QAAQ,CAACU,gBAAgB,CAAC,SAAS,EAAEF,aAAa,CAAC;IAEnD,OAAO,MAAM;MACXR,QAAQ,CAACW,mBAAmB,CAAC,aAAa,EAAET,iBAAiB,EAAE,IAAI,CAAC;MACpEF,QAAQ,CAACW,mBAAmB,CAAC,SAAS,EAAEH,aAAa,CAAC;IACxD,CAAC;EACH,CAAC,EAAE,CAACZ,aAAa,CAAC,CAAC;EAEnB,oBACE,IAAAzC,WAAA,CAAAyD,GAAA,EAAC1D,QAAA,CAAA2D,WAAW,CAACC,QAAQ;IAACC,KAAK,EAAEjB,OAAQ;IAAAL,QAAA,eACnC,IAAAtC,WAAA,CAAAyD,GAAA,EAAC9D,YAAA,CAAAkE,IAAI;MACH5B,GAAG,EAAES,OAAQ;MACboB,KAAK,EAAE,CAACC,MAAM,CAACC,IAAI,EAAEvB,aAAa,CAAChB,MAAM,IAAIsC,MAAM,CAACE,QAAQ,CAAE;MAAA3B,QAAA,EAE7DA;IAAQ,CACL;EAAC,CACa,CAAC;AAE3B;AAEO,SAAS4B,OAAOA,CAAC;EACtB5B,QAAQ;EACR6B,KAAK;EACLC,IAAI,GAAG,QAAQ;EACfC;AACY,CAAC,EAAE;EACf,MAAM;IAAE9B;EAAQ,CAAC,GAAG,IAAA+B,uBAAc,EAAC,CAAC;EACpC,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAA7C,eAAQ,EAAC,KAAK,CAAC;EAC7C,MAAM,CAAC8C,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAA/C,eAAQ,EAAC,KAAK,CAAC;EAE7C,OAAOW,QAAQ,CAAC;IACdC,OAAO;IACPoC,KAAK,EAAE;MACLJ,OAAO;MACPE,OAAO;MACPG,OAAO,EAAE;IACX,CAAC;IACDC,KAAK,EAAE;MACLC,OAAO,EAAEA,CAAA,KAAMvC,OAAO,CAACV,IAAI,CAAC,CAAC;MAC7BkD,OAAO,EAAEA,CAAA,KAAML,UAAU,CAAC,IAAI,CAAC;MAC/BM,MAAM,EAAEA,CAAA,KAAMN,UAAU,CAAC,KAAK,CAAC;MAC/BO,iBAAiB,EAAEZ,IAAI;MACvBa,kBAAkB,EAAEf,KAAK;MACzBgB,iBAAiB,EAAEf;IACrB;EACF,CAAC,CAAC;AACJ;AAEO,SAASgB,KAAKA,CAAC;EACpB9C,QAAQ;EACRwB;AAID,CAAC,EAAE;EACF,MAAMuB,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACxB,MAAM3C,OAAO,GAAG,IAAA2B,uBAAc,EAAC,CAAC;EAChC,MAAMiB,WAAW,GAAG,IAAArD,aAAM,EAAO,IAAI,CAAC;EAEtC,IAAI,CAACS,OAAO,CAAClB,MAAM,EAAE;IACnB,OAAO,IAAI;EACb;EAEA,oBACE,IAAAzB,WAAA,CAAAyD,GAAA,EAAC9D,YAAA,CAAAkE,IAAI;IACH5B,GAAG,EAAEsD,WAAY;IACjBzB,KAAK,EAAE,CACLC,MAAM,CAACyB,QAAQ,EACf;MACEC,eAAe,EAAEJ,KAAK,CAACK,MAAM,GACzBL,KAAK,CAACM,MAAM,CAACC,mBAAmB,GAChCP,KAAK,CAACM,MAAM,CAACE,UAAU;MAC3BC,WAAW,EAAET,KAAK,CAACM,MAAM,CAACI,WAAW;MACrCC,WAAW,EAAEX,KAAK,CAACM,MAAM,CAACM;IAC5B,CAAC,EACDnC,KAAK,CACL;IAAAxB,QAAA,EAEDA;EAAQ,CACL,CAAC;AAEX;AAEO,SAAS4D,IAAIA,CAAC;EAAE5D,QAAQ;EAAE6B,KAAK;EAAEW,OAAO;EAAEhB,KAAK;EAAE,GAAGqC;AAAgB,CAAC,EAAE;EAC5E,MAAMd,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACxB,MAAM;IAAE/C;EAAQ,CAAC,GAAG,IAAA+B,uBAAc,EAAC,CAAC;EACpC,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAA7C,eAAQ,EAAC,KAAK,CAAC;EAC7C,MAAM,CAAC8C,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAA/C,eAAQ,EAAC,KAAK,CAAC;EAE7C,MAAMyE,WAAW,GAAG,IAAAC,kBAAW,EAC5BpG,CAA+C,IAAK;IACnD6E,OAAO,CAAC7E,CAAC,CAAC;IACV,IAAI,CAACA,CAAC,CAACqG,gBAAgB,EAAE;MACvB/D,OAAO,CAACT,KAAK,CAAC,CAAC;IACjB;EACF,CAAC,EACD,CAACS,OAAO,EAAEuC,OAAO,CACnB,CAAC;EAED,MAAMyB,UAAU,GAAGC,OAAO,CAACL,IAAI,CAACM,QAAQ,CAAC;EACzC,MAAMC,aAAa,GAAG,CAACnC,OAAO,IAAIE,OAAO,KAAK,CAAC8B,UAAU;EAEzD,MAAMI,gBAAgB,GAAG,IAAA/E,cAAO,EAC9B,OAAO;IAAE6E,QAAQ,EAAEF;EAAW,CAAC,CAAC,EAChC,CAACA,UAAU,CACb,CAAC;EAED,oBACE,IAAAvG,WAAA,CAAAyD,GAAA,EAAC9D,YAAA,CAAAiH,SAAS;IAAA,GACJT,IAAI;IACRlB,iBAAiB,EAAC,EAAE;IACpBC,kBAAkB,EAAEf,KAAM;IAC1BW,OAAO,EAAEsB,WAAY;IACrBrB,OAAO,EAAEA,CAAA,KAAML,UAAU,CAAC,IAAI,CAAE;IAChCM,MAAM,EAAEA,CAAA,KAAMN,UAAU,CAAC,KAAK,CAAE;IAE9BmC,YAAY,EAAEA,CAAA,KAAMrC,UAAU,CAAC,IAAI,CAAC;IACpCsC,YAAY,EAAEA,CAAA,KAAMtC,UAAU,CAAC,KAAK,CAAC;IAEvCV,KAAK,EAAE,CACLC,MAAM,CAACgD,OAAO,EACdL,aAAa,IAAI;MACfjB,eAAe,EAAEJ,KAAK,CAACK,MAAM,GACzBL,KAAK,CAACM,MAAM,CAACqB,UAAU,GACvB3B,KAAK,CAACM,MAAM,CAACC;IACnB,CAAC,EACD9B,KAAK,CACL;IAAAxB,QAAA,eAEF,IAAAtC,WAAA,CAAAyD,GAAA,EAAC1D,QAAA,CAAAkH,WAAW,CAACtD,QAAQ;MAACC,KAAK,EAAE+C,gBAAiB;MAAArE,QAAA,EAC3CA;IAAQ,CACW;EAAC,CACd,CAAC;AAEhB;AAEO,SAAS4E,QAAQA,CAAC;EAAE5E,QAAQ;EAAEwB;AAAqB,CAAC,EAAE;EAC3D,MAAMuB,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACxB,MAAM;IAAEmB;EAAS,CAAC,GAAG,IAAAU,2BAAkB,EAAC,CAAC;EAEzC,oBACE,IAAAnH,WAAA,CAAAyD,GAAA,EAAC5D,MAAA,CAAAuH,IAAI;IACHtD,KAAK,EAAE,CACLC,MAAM,CAACsD,WAAW,EAClB;MAAEC,KAAK,EAAEb,QAAQ,GAAGpB,KAAK,CAACM,MAAM,CAAC4B,YAAY,GAAGlC,KAAK,CAACM,MAAM,CAAC6B;IAAK,CAAC,EACnE,IAAI1D,KAAK,GAAG,CAACA,KAAK,CAAC,GAAG,EAAE,CAAC,CACzB;IAAAxB,QAAA,EAEDA;EAAQ,CACL,CAAC;AAEX;AAEO,SAASmF,QAAQA,CAAC;EAAEC,IAAI,EAAEC,IAAI;EAAEC,QAAQ,GAAG,MAAM;EAAEC;AAAoB,CAAC,EAAE;EAC/E,MAAMxC,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACxB,MAAM;IAAEmB;EAAS,CAAC,GAAG,IAAAU,2BAAkB,EAAC,CAAC;EAEzC,oBACE,IAAAnH,WAAA,CAAAyD,GAAA,EAAC9D,YAAA,CAAAkE,IAAI;IACHC,KAAK,EAAE,CACL8D,QAAQ,KAAK,MAAM,IAAI7D,MAAM,CAAC+D,QAAQ,EACtCF,QAAQ,KAAK,OAAO,IAAI7D,MAAM,CAACgE,SAAS,CACxC;IAAAzF,QAAA,eAEF,IAAAtC,WAAA,CAAAyD,GAAA,EAACkE,IAAI;MACHK,IAAI,EAAC,IAAI;MACTH,IAAI,EACFA,IAAI,GACAA,IAAI,CAAC;QAAEpB;MAAS,CAAC,CAAC,GAClBA,QAAQ,GACNpB,KAAK,CAACM,MAAM,CAAC4B,YAAY,GACzBlC,KAAK,CAACM,MAAM,CAACsC;IACpB,CACF;EAAC,CACE,CAAC;AAEX;AAEO,SAASC,KAAKA,CAAC;EAAE5F;AAAqB,CAAC,EAAE;EAC9C,oBAAO,IAAAtC,WAAA,CAAAyD,GAAA,EAAAzD,WAAA,CAAAmI,QAAA;IAAA7F,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB;AAEO,SAAS8F,OAAOA,CAAA,EAAG;EACxB,MAAM/C,KAAK,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EAExB,oBACE,IAAAtF,WAAA,CAAAyD,GAAA,EAAC9D,YAAA,CAAAkE,IAAI;IACHC,KAAK,EAAE,CACLC,MAAM,CAACsE,OAAO,EACd;MAAE5C,eAAe,EAAEJ,KAAK,CAACM,MAAM,CAACI;IAAY,CAAC;EAC7C,CACH,CAAC;AAEN;AAEA,MAAMhC,MAAM,GAAGuE,uBAAU,CAACC,MAAM,CAAC;EAC/BvE,IAAI,EAAE;IACJ4D,QAAQ,EAAE;EACZ,CAAC;EACD3D,QAAQ,EAAE;IACRuE,MAAM,EAAEpH,UAAU,CAAC4C;EACrB,CAAC;EACDwB,QAAQ,EAAE;IACRiD,YAAY,EAAE,CAAC;IACfC,OAAO,EAAE,CAAC;IACVC,WAAW,EAAE,CAAC;IACdC,QAAQ,EAAE,QAAQ;IAClBJ,MAAM,EAAEpH,UAAU,CAACyH,OAAO;IAC1BC,aAAa,EAAE,IAAI;IACnBC,YAAY,EAAE,EAAE;IAChBC,YAAY,EAAE;MAAEC,KAAK,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAE,CAAC;IACrCC,QAAQ,EAAE;EACZ,CAAC;EACDpC,OAAO,EAAE;IACPqC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,GAAG,EAAE,EAAE;IACPC,eAAe,EAAE,CAAC;IAClBd,YAAY,EAAE,CAAC;IACfG,QAAQ,EAAE,QAAQ;IAClBY,iBAAiB,EAAE,EAAE;IACrBC,SAAS,EAAE;EACb,CAAC;EACDpC,WAAW,EAAE;IACXqC,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE;EACd,CAAC;EACD7B,QAAQ,EAAE;IACR8B,UAAU,EAAE,CAAC;EACf,CAAC;EACD7B,SAAS,EAAE;IACT8B,WAAW,EAAE,CAAC,CAAC;IACfD,UAAU,EAAE;EACd,CAAC;EACDvB,OAAO,EAAE;IACPa,MAAM,EAAE,CAAC;IACTY,cAAc,EAAE;EAClB;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_index","_indexWeb","_zIndex","_context","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","menuZIndex","createDropdownZIndex","VIEWPORT_GUTTER","MENU_OFFSET","useMenuControl","id","useId","isOpen","setIsOpen","useState","useMemo","open","close","useMenuControlAsDialogControl","menuControl","ref","useRef","dialogControl","cb","Root","children","control","defaultControl","activeControl","rootRef","triggerRef","dropdownRef","context","useEffect","document","undefined","handlePointerDown","event","rootNode","current","dropdownNode","eventTarget","target","contains","handleKeyDown","key","addEventListener","removeEventListener","jsx","MenuContext","Provider","value","View","style","styles","root","openRoot","Trigger","label","role","hint","useMenuContext","hovered","setHovered","focused","setFocused","state","pressed","props","onPress","onFocus","onBlur","accessibilityHint","accessibilityLabel","accessibilityRole","Outer","theme","useTheme","position","setPosition","useLayoutEffect","window","triggerNode","getBoundingClientRect","updatePosition","rect","width","Math","max","availableRight","innerWidth","left","min","right","top","bottom","innerHeight","minWidth","Portal","dropdown","backgroundColor","isDark","colors","backgroundSecondary","background","borderColor","borderLight","shadowColor","shadow","portaledDropdown","Item","rest","handlePress","useCallback","defaultPrevented","isDisabled","Boolean","disabled","isHighlighted","itemContextValue","Pressable","onMouseEnter","onMouseLeave","webItem","contrast50","ItemContext","ItemText","useMenuItemContext","Text","webItemText","color","textTertiary","text","ItemIcon","icon","Comp","fill","iconLeft","iconRight","size","textSecondary","Group","Fragment","Divider","divider","StyleSheet","create","zIndex","borderRadius","padding","borderWidth","overflow","surface","shadowOpacity","shadowRadius","shadowOffset","height","pointerEvents","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","minHeight","flex","fontWeight","marginLeft","marginRight","marginVertical"],"sourceRoot":"../../../src","sources":["menu/index.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -15,8 +15,7 @@ exports.applyNativeRootVars = applyNativeRootVars;
15
15
  * `exports` `import`/`require` conditions to `lib/.../native-root-vars.js`.
16
16
  *
17
17
  * It deliberately does NOT import `react-native-css/native-internal`. That subpath
18
- * is native-only: it has no web build, and react-native-css is not even a Bloom
19
- * dependency. Statically importing it from a file a web bundler resolves breaks
18
+ * is native-only. Statically importing it from a file a web bundler resolves breaks
20
19
  * module resolution outright (the original report: `Rolldown failed to resolve
21
20
  * import "react-native-css/native-internal" from .../native-root-vars.js`).
22
21
  * Importing it from a file a consumer's `tsc` resolves breaks type-check (TS2307).
@@ -1 +1 @@
1
- {"version":3,"names":["applyNativeRootVars","_colorPreset","_mode"],"sourceRoot":"../../../src","sources":["theme/native-root-vars.ts"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,mBAAmBA,CAACC,YAA0B,EAAEC,KAAuB,EAAQ;EAC7F;EACA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["applyNativeRootVars","_colorPreset","_mode"],"sourceRoot":"../../../src","sources":["theme/native-root-vars.ts"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,mBAAmBA,CAACC,YAA0B,EAAEC,KAAuB,EAAQ;EAC7F;EACA;AAAA","ignoreList":[]}
@@ -17,11 +17,11 @@ var _tokenRegistry = require("./token-registry.js");
17
17
  // `node_modules/@oxyhq/bloom/src/**`, and TypeScript does NOT auto-pick-up
18
18
  // ambient `.d.ts` files that live under `node_modules`, so
19
19
  // `react-native-css/native-internal` is unresolved (TS2307) unless the reference
20
- // travels with the source. react-native-css is intentionally NOT a Bloom
21
- // dependency it arrives transitively via a host's NativeWind 5 install, or is
22
- // absent entirely for NativeWind 4 consumers so the ambient declaration is the
23
- // only thing that can type this import, and it MUST reach the consumer. The
24
- // directive ships raw in `src/` (Bloom publishes `files: ["src", "lib"]`).
20
+ // travels with the source. Bloom now declares react-native-css directly because
21
+ // this native source imports it; the ambient declaration still travels with
22
+ // `src/` so consumer TypeScript programs that read Bloom source see the exact
23
+ // subpath shape. The directive ships raw in `src/` (Bloom publishes
24
+ // `files: ["src", "lib"]`).
25
25
 
26
26
  /**
27
27
  * Publish the active color preset's CSS custom properties into react-native-css's
@@ -1,14 +1,17 @@
1
1
  "use strict";
2
2
 
3
- import React, { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
3
+ import React, { useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';
4
4
  import { Pressable, StyleSheet, View } from 'react-native';
5
5
  import { useTheme } from "../theme/use-theme.js";
6
6
  import { Text } from "../typography/index.js";
7
+ import { Portal } from "../portal/index.web.js";
7
8
  import { createDropdownZIndex } from "../styles/z-index.js";
8
9
  import { MenuContext, ItemContext, useMenuContext, useMenuItemContext } from "./context.js";
9
10
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
10
11
  export { useMenuContext };
11
12
  const menuZIndex = createDropdownZIndex();
13
+ const VIEWPORT_GUTTER = 8;
14
+ const MENU_OFFSET = 6;
12
15
  export function useMenuControl() {
13
16
  const id = useId();
14
17
  const [isOpen, setIsOpen] = useState(false);
@@ -56,9 +59,13 @@ export function Root({
56
59
  const activeControl = control ?? defaultControl;
57
60
  const dialogControl = useMenuControlAsDialogControl(activeControl);
58
61
  const rootRef = useRef(null);
62
+ const triggerRef = useRef(null);
63
+ const dropdownRef = useRef(null);
59
64
  const context = useMemo(() => ({
60
65
  control: dialogControl,
61
- isOpen: activeControl.isOpen
66
+ isOpen: activeControl.isOpen,
67
+ triggerRef,
68
+ dropdownRef
62
69
  }), [activeControl.isOpen, dialogControl]);
63
70
  useEffect(() => {
64
71
  if (!activeControl.isOpen || typeof document === 'undefined') {
@@ -66,7 +73,9 @@ export function Root({
66
73
  }
67
74
  const handlePointerDown = event => {
68
75
  const rootNode = rootRef.current;
69
- if (rootNode?.contains(event.target)) {
76
+ const dropdownNode = dropdownRef.current;
77
+ const eventTarget = event.target;
78
+ if (rootNode?.contains(eventTarget) || dropdownNode?.contains(eventTarget)) {
70
79
  return;
71
80
  }
72
81
  activeControl.close();
@@ -99,7 +108,8 @@ export function Trigger({
99
108
  hint
100
109
  }) {
101
110
  const {
102
- control
111
+ control,
112
+ triggerRef
103
113
  } = useMenuContext();
104
114
  const [hovered, setHovered] = useState(false);
105
115
  const [focused, setFocused] = useState(false);
@@ -111,6 +121,7 @@ export function Trigger({
111
121
  pressed: false
112
122
  },
113
123
  props: {
124
+ ref: triggerRef,
114
125
  onPress: () => control.open(),
115
126
  onFocus: () => setFocused(true),
116
127
  onBlur: () => setFocused(false),
@@ -126,18 +137,51 @@ export function Outer({
126
137
  }) {
127
138
  const theme = useTheme();
128
139
  const context = useMenuContext();
129
- const dropdownRef = useRef(null);
140
+ const [position, setPosition] = useState(null);
141
+ useLayoutEffect(() => {
142
+ if (!context.isOpen || typeof window === 'undefined') {
143
+ return;
144
+ }
145
+ const triggerNode = context.triggerRef?.current;
146
+ if (!triggerNode?.getBoundingClientRect) {
147
+ return;
148
+ }
149
+ const updatePosition = () => {
150
+ const rect = triggerNode.getBoundingClientRect();
151
+ const width = Math.max(180, rect.width);
152
+ const availableRight = window.innerWidth - VIEWPORT_GUTTER;
153
+ const left = Math.min(Math.max(VIEWPORT_GUTTER, rect.right - width), Math.max(VIEWPORT_GUTTER, availableRight - width));
154
+ const top = Math.min(rect.bottom + MENU_OFFSET, Math.max(VIEWPORT_GUTTER, window.innerHeight - VIEWPORT_GUTTER));
155
+ setPosition({
156
+ position: 'fixed',
157
+ top,
158
+ left,
159
+ right: undefined,
160
+ bottom: undefined,
161
+ minWidth: width
162
+ });
163
+ };
164
+ updatePosition();
165
+ window.addEventListener('resize', updatePosition);
166
+ window.addEventListener('scroll', updatePosition, true);
167
+ return () => {
168
+ window.removeEventListener('resize', updatePosition);
169
+ window.removeEventListener('scroll', updatePosition, true);
170
+ };
171
+ }, [context.isOpen, context.triggerRef]);
130
172
  if (!context.isOpen) {
131
173
  return null;
132
174
  }
133
- return /*#__PURE__*/_jsx(View, {
134
- ref: dropdownRef,
135
- style: [styles.dropdown, {
136
- backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
137
- borderColor: theme.colors.borderLight,
138
- shadowColor: theme.colors.shadow
139
- }, style],
140
- children: children
175
+ return /*#__PURE__*/_jsx(Portal, {
176
+ children: /*#__PURE__*/_jsx(View, {
177
+ ref: context.dropdownRef,
178
+ style: [styles.dropdown, {
179
+ backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
180
+ borderColor: theme.colors.borderLight,
181
+ shadowColor: theme.colors.shadow
182
+ }, style, styles.portaledDropdown, position],
183
+ children: children
184
+ })
141
185
  });
142
186
  }
143
187
  export function Item({
@@ -252,6 +296,9 @@ const styles = StyleSheet.create({
252
296
  },
253
297
  minWidth: 180
254
298
  },
299
+ portaledDropdown: {
300
+ pointerEvents: 'auto'
301
+ },
255
302
  webItem: {
256
303
  flexDirection: 'row',
257
304
  alignItems: 'center',
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useId","useMemo","useRef","useState","Pressable","StyleSheet","View","useTheme","Text","createDropdownZIndex","MenuContext","ItemContext","useMenuContext","useMenuItemContext","jsx","_jsx","Fragment","_Fragment","menuZIndex","useMenuControl","id","isOpen","setIsOpen","open","close","useMenuControlAsDialogControl","menuControl","ref","dialogControl","cb","Root","children","control","defaultControl","activeControl","rootRef","context","document","undefined","handlePointerDown","event","rootNode","current","contains","target","handleKeyDown","key","addEventListener","removeEventListener","Provider","value","style","styles","root","openRoot","Trigger","label","role","hint","hovered","setHovered","focused","setFocused","state","pressed","props","onPress","onFocus","onBlur","accessibilityHint","accessibilityLabel","accessibilityRole","Outer","theme","dropdownRef","dropdown","backgroundColor","isDark","colors","backgroundSecondary","background","borderColor","borderLight","shadowColor","shadow","Item","rest","handlePress","e","defaultPrevented","isDisabled","Boolean","disabled","isHighlighted","itemContextValue","onMouseEnter","onMouseLeave","webItem","contrast50","ItemText","webItemText","color","textTertiary","text","ItemIcon","icon","Comp","position","fill","iconLeft","iconRight","size","textSecondary","Group","Divider","divider","create","zIndex","borderRadius","padding","borderWidth","overflow","surface","shadowOpacity","shadowRadius","shadowOffset","width","height","minWidth","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","minHeight","flex","fontWeight","marginLeft","marginRight","marginVertical"],"sourceRoot":"../../../src","sources":["menu/index.web.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAIVC,WAAW,EACXC,SAAS,EACTC,KAAK,EACLC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAASC,SAAS,EAAEC,UAAU,EAAEC,IAAI,QAAwC,cAAc;AAE1F,SAASC,QAAQ,QAAQ,uBAAoB;AAC7C,SAASC,IAAI,QAAQ,wBAAe;AAEpC,SAASC,oBAAoB,QAAQ,sBAAmB;AACxD,SACEC,WAAW,EACXC,WAAW,EACXC,cAAc,EACdC,kBAAkB,QACb,cAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA;AAUnB,SAASL,cAAc;AAEvB,MAAMM,UAAU,GAAGT,oBAAoB,CAAC,CAAC;AASzC,OAAO,SAASU,cAAcA,CAAA,EAAqB;EACjD,MAAMC,EAAE,GAAGpB,KAAK,CAAC,CAAC;EAClB,MAAM,CAACqB,MAAM,EAAEC,SAAS,CAAC,GAAGnB,QAAQ,CAAC,KAAK,CAAC;EAE3C,OAAOF,OAAO,CACZ,OAAO;IACLmB,EAAE;IACFC,MAAM;IACNE,IAAIA,CAAA,EAAG;MACLD,SAAS,CAAC,IAAI,CAAC;IACjB,CAAC;IACDE,KAAKA,CAAA,EAAG;MACNF,SAAS,CAAC,KAAK,CAAC;IAClB;EACF,CAAC,CAAC,EACF,CAACF,EAAE,EAAEC,MAAM,CACb,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASI,6BAA6BA,CACpCC,WAA6B,EACT;EACpB,MAAMC,GAAG,GAAGzB,MAAM,CAAgE,IAAI,CAAC;EAEvF,OAAOD,OAAO,CAAqB,MAAM;IACvC,MAAM2B,aAAiC,GAAG;MACxCR,EAAE,EAAEM,WAAW,CAACN,EAAE;MAClBO,GAAG;MACHJ,IAAIA,CAAA,EAAG;QACLG,WAAW,CAACH,IAAI,CAAC,CAAC;MACpB,CAAC;MACDC,KAAKA,CAACK,EAAe,EAAE;QACrBH,WAAW,CAACF,KAAK,CAAC,CAAC;QACnB,IAAI,OAAOK,EAAE,KAAK,UAAU,EAAE;UAC5BA,EAAE,CAAC,CAAC;QACN;MACF;IACF,CAAC;IACD,OAAOD,aAAa;EACtB,CAAC,EAAE,CAACF,WAAW,CAAC,CAAC;AACnB;AAEA,OAAO,SAASI,IAAIA,CAAC;EACnBC,QAAQ;EACRC;AAGD,CAAC,EAAE;EACF,MAAMC,cAAc,GAAGd,cAAc,CAAC,CAAC;EACvC,MAAMe,aAAa,GAAGF,OAAO,IAAIC,cAAc;EAC/C,MAAML,aAAa,GAAGH,6BAA6B,CAACS,aAAa,CAAC;EAClE,MAAMC,OAAO,GAAGjC,MAAM,CAAO,IAAI,CAAC;EAElC,MAAMkC,OAAO,GAAGnC,OAAO,CACrB,OAAO;IAAE+B,OAAO,EAAEJ,aAAa;IAAEP,MAAM,EAAEa,aAAa,CAACb;EAAO,CAAC,CAAC,EAChE,CAACa,aAAa,CAACb,MAAM,EAAEO,aAAa,CACtC,CAAC;EAED7B,SAAS,CAAC,MAAM;IACd,IAAI,CAACmC,aAAa,CAACb,MAAM,IAAI,OAAOgB,QAAQ,KAAK,WAAW,EAAE;MAC5D,OAAOC,SAAS;IAClB;IAEA,MAAMC,iBAAiB,GAAIC,KAAmB,IAAK;MACjD,MAAMC,QAAQ,GAAGN,OAAO,CAACO,OAAwC;MACjE,IAAID,QAAQ,EAAEE,QAAQ,CAACH,KAAK,CAACI,MAAc,CAAC,EAAE;QAC5C;MACF;MACAV,aAAa,CAACV,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,MAAMqB,aAAa,GAAIL,KAAoB,IAAK;MAC9C,IAAIA,KAAK,CAACM,GAAG,KAAK,QAAQ,EAAE;QAC1BZ,aAAa,CAACV,KAAK,CAAC,CAAC;MACvB;IACF,CAAC;IAEDa,QAAQ,CAACU,gBAAgB,CAAC,aAAa,EAAER,iBAAiB,EAAE,IAAI,CAAC;IACjEF,QAAQ,CAACU,gBAAgB,CAAC,SAAS,EAAEF,aAAa,CAAC;IAEnD,OAAO,MAAM;MACXR,QAAQ,CAACW,mBAAmB,CAAC,aAAa,EAAET,iBAAiB,EAAE,IAAI,CAAC;MACpEF,QAAQ,CAACW,mBAAmB,CAAC,SAAS,EAAEH,aAAa,CAAC;IACxD,CAAC;EACH,CAAC,EAAE,CAACX,aAAa,CAAC,CAAC;EAEnB,oBACEnB,IAAA,CAACL,WAAW,CAACuC,QAAQ;IAACC,KAAK,EAAEd,OAAQ;IAAAL,QAAA,eACnChB,IAAA,CAACT,IAAI;MACHqB,GAAG,EAAEQ,OAAQ;MACbgB,KAAK,EAAE,CAACC,MAAM,CAACC,IAAI,EAAEnB,aAAa,CAACb,MAAM,IAAI+B,MAAM,CAACE,QAAQ,CAAE;MAAAvB,QAAA,EAE7DA;IAAQ,CACL;EAAC,CACa,CAAC;AAE3B;AAEA,OAAO,SAASwB,OAAOA,CAAC;EACtBxB,QAAQ;EACRyB,KAAK;EACLC,IAAI,GAAG,QAAQ;EACfC;AACY,CAAC,EAAE;EACf,MAAM;IAAE1B;EAAQ,CAAC,GAAGpB,cAAc,CAAC,CAAC;EACpC,MAAM,CAAC+C,OAAO,EAAEC,UAAU,CAAC,GAAGzD,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM,CAAC0D,OAAO,EAAEC,UAAU,CAAC,GAAG3D,QAAQ,CAAC,KAAK,CAAC;EAE7C,OAAO4B,QAAQ,CAAC;IACdC,OAAO;IACP+B,KAAK,EAAE;MACLJ,OAAO;MACPE,OAAO;MACPG,OAAO,EAAE;IACX,CAAC;IACDC,KAAK,EAAE;MACLC,OAAO,EAAEA,CAAA,KAAMlC,OAAO,CAACT,IAAI,CAAC,CAAC;MAC7B4C,OAAO,EAAEA,CAAA,KAAML,UAAU,CAAC,IAAI,CAAC;MAC/BM,MAAM,EAAEA,CAAA,KAAMN,UAAU,CAAC,KAAK,CAAC;MAC/BO,iBAAiB,EAAEX,IAAI;MACvBY,kBAAkB,EAAEd,KAAK;MACzBe,iBAAiB,EAAEd;IACrB;EACF,CAAC,CAAC;AACJ;AAEA,OAAO,SAASe,KAAKA,CAAC;EACpBzC,QAAQ;EACRoB;AAID,CAAC,EAAE;EACF,MAAMsB,KAAK,GAAGlE,QAAQ,CAAC,CAAC;EACxB,MAAM6B,OAAO,GAAGxB,cAAc,CAAC,CAAC;EAChC,MAAM8D,WAAW,GAAGxE,MAAM,CAAO,IAAI,CAAC;EAEtC,IAAI,CAACkC,OAAO,CAACf,MAAM,EAAE;IACnB,OAAO,IAAI;EACb;EAEA,oBACEN,IAAA,CAACT,IAAI;IACHqB,GAAG,EAAE+C,WAAY;IACjBvB,KAAK,EAAE,CACLC,MAAM,CAACuB,QAAQ,EACf;MACEC,eAAe,EAAEH,KAAK,CAACI,MAAM,GACzBJ,KAAK,CAACK,MAAM,CAACC,mBAAmB,GAChCN,KAAK,CAACK,MAAM,CAACE,UAAU;MAC3BC,WAAW,EAAER,KAAK,CAACK,MAAM,CAACI,WAAW;MACrCC,WAAW,EAAEV,KAAK,CAACK,MAAM,CAACM;IAC5B,CAAC,EACDjC,KAAK,CACL;IAAApB,QAAA,EAEDA;EAAQ,CACL,CAAC;AAEX;AAEA,OAAO,SAASsD,IAAIA,CAAC;EAAEtD,QAAQ;EAAEyB,KAAK;EAAEU,OAAO;EAAEf,KAAK;EAAE,GAAGmC;AAAgB,CAAC,EAAE;EAC5E,MAAMb,KAAK,GAAGlE,QAAQ,CAAC,CAAC;EACxB,MAAM;IAAEyB;EAAQ,CAAC,GAAGpB,cAAc,CAAC,CAAC;EACpC,MAAM,CAAC+C,OAAO,EAAEC,UAAU,CAAC,GAAGzD,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM,CAAC0D,OAAO,EAAEC,UAAU,CAAC,GAAG3D,QAAQ,CAAC,KAAK,CAAC;EAE7C,MAAMoF,WAAW,GAAGzF,WAAW,CAC5B0F,CAA+C,IAAK;IACnDtB,OAAO,CAACsB,CAAC,CAAC;IACV,IAAI,CAACA,CAAC,CAACC,gBAAgB,EAAE;MACvBzD,OAAO,CAACR,KAAK,CAAC,CAAC;IACjB;EACF,CAAC,EACD,CAACQ,OAAO,EAAEkC,OAAO,CACnB,CAAC;EAED,MAAMwB,UAAU,GAAGC,OAAO,CAACL,IAAI,CAACM,QAAQ,CAAC;EACzC,MAAMC,aAAa,GAAG,CAAClC,OAAO,IAAIE,OAAO,KAAK,CAAC6B,UAAU;EAEzD,MAAMI,gBAAgB,GAAG7F,OAAO,CAC9B,OAAO;IAAE2F,QAAQ,EAAEF;EAAW,CAAC,CAAC,EAChC,CAACA,UAAU,CACb,CAAC;EAED,oBACE3E,IAAA,CAACX,SAAS;IAAA,GACJkF,IAAI;IACRjB,iBAAiB,EAAC,EAAE;IACpBC,kBAAkB,EAAEd,KAAM;IAC1BU,OAAO,EAAEqB,WAAY;IACrBpB,OAAO,EAAEA,CAAA,KAAML,UAAU,CAAC,IAAI,CAAE;IAChCM,MAAM,EAAEA,CAAA,KAAMN,UAAU,CAAC,KAAK,CAAE;IAE9BiC,YAAY,EAAEA,CAAA,KAAMnC,UAAU,CAAC,IAAI,CAAC;IACpCoC,YAAY,EAAEA,CAAA,KAAMpC,UAAU,CAAC,KAAK,CAAC;IAEvCT,KAAK,EAAE,CACLC,MAAM,CAAC6C,OAAO,EACdJ,aAAa,IAAI;MACfjB,eAAe,EAAEH,KAAK,CAACI,MAAM,GACzBJ,KAAK,CAACK,MAAM,CAACoB,UAAU,GACvBzB,KAAK,CAACK,MAAM,CAACC;IACnB,CAAC,EACD5B,KAAK,CACL;IAAApB,QAAA,eAEFhB,IAAA,CAACJ,WAAW,CAACsC,QAAQ;MAACC,KAAK,EAAE4C,gBAAiB;MAAA/D,QAAA,EAC3CA;IAAQ,CACW;EAAC,CACd,CAAC;AAEhB;AAEA,OAAO,SAASoE,QAAQA,CAAC;EAAEpE,QAAQ;EAAEoB;AAAqB,CAAC,EAAE;EAC3D,MAAMsB,KAAK,GAAGlE,QAAQ,CAAC,CAAC;EACxB,MAAM;IAAEqF;EAAS,CAAC,GAAG/E,kBAAkB,CAAC,CAAC;EAEzC,oBACEE,IAAA,CAACP,IAAI;IACH2C,KAAK,EAAE,CACLC,MAAM,CAACgD,WAAW,EAClB;MAAEC,KAAK,EAAET,QAAQ,GAAGnB,KAAK,CAACK,MAAM,CAACwB,YAAY,GAAG7B,KAAK,CAACK,MAAM,CAACyB;IAAK,CAAC,EACnE,IAAIpD,KAAK,GAAG,CAACA,KAAK,CAAC,GAAG,EAAE,CAAC,CACzB;IAAApB,QAAA,EAEDA;EAAQ,CACL,CAAC;AAEX;AAEA,OAAO,SAASyE,QAAQA,CAAC;EAAEC,IAAI,EAAEC,IAAI;EAAEC,QAAQ,GAAG,MAAM;EAAEC;AAAoB,CAAC,EAAE;EAC/E,MAAMnC,KAAK,GAAGlE,QAAQ,CAAC,CAAC;EACxB,MAAM;IAAEqF;EAAS,CAAC,GAAG/E,kBAAkB,CAAC,CAAC;EAEzC,oBACEE,IAAA,CAACT,IAAI;IACH6C,KAAK,EAAE,CACLwD,QAAQ,KAAK,MAAM,IAAIvD,MAAM,CAACyD,QAAQ,EACtCF,QAAQ,KAAK,OAAO,IAAIvD,MAAM,CAAC0D,SAAS,CACxC;IAAA/E,QAAA,eAEFhB,IAAA,CAAC2F,IAAI;MACHK,IAAI,EAAC,IAAI;MACTH,IAAI,EACFA,IAAI,GACAA,IAAI,CAAC;QAAEhB;MAAS,CAAC,CAAC,GAClBA,QAAQ,GACNnB,KAAK,CAACK,MAAM,CAACwB,YAAY,GACzB7B,KAAK,CAACK,MAAM,CAACkC;IACpB,CACF;EAAC,CACE,CAAC;AAEX;AAEA,OAAO,SAASC,KAAKA,CAAC;EAAElF;AAAqB,CAAC,EAAE;EAC9C,oBAAOhB,IAAA,CAAAE,SAAA;IAAAc,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB;AAEA,OAAO,SAASmF,OAAOA,CAAA,EAAG;EACxB,MAAMzC,KAAK,GAAGlE,QAAQ,CAAC,CAAC;EAExB,oBACEQ,IAAA,CAACT,IAAI;IACH6C,KAAK,EAAE,CACLC,MAAM,CAAC+D,OAAO,EACd;MAAEvC,eAAe,EAAEH,KAAK,CAACK,MAAM,CAACI;IAAY,CAAC;EAC7C,CACH,CAAC;AAEN;AAEA,MAAM9B,MAAM,GAAG/C,UAAU,CAAC+G,MAAM,CAAC;EAC/B/D,IAAI,EAAE;IACJsD,QAAQ,EAAE;EACZ,CAAC;EACDrD,QAAQ,EAAE;IACR+D,MAAM,EAAEnG,UAAU,CAACmC;EACrB,CAAC;EACDsB,QAAQ,EAAE;IACR2C,YAAY,EAAE,CAAC;IACfC,OAAO,EAAE,CAAC;IACVC,WAAW,EAAE,CAAC;IACdC,QAAQ,EAAE,QAAQ;IAClBJ,MAAM,EAAEnG,UAAU,CAACwG,OAAO;IAC1BC,aAAa,EAAE,IAAI;IACnBC,YAAY,EAAE,EAAE;IAChBC,YAAY,EAAE;MAAEC,KAAK,EAAE,CAAC;MAAEC,MAAM,EAAE;IAAE,CAAC;IACrCC,QAAQ,EAAE;EACZ,CAAC;EACD/B,OAAO,EAAE;IACPgC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,GAAG,EAAE,EAAE;IACPC,eAAe,EAAE,CAAC;IAClBd,YAAY,EAAE,CAAC;IACfG,QAAQ,EAAE,QAAQ;IAClBY,iBAAiB,EAAE,EAAE;IACrBC,SAAS,EAAE;EACb,CAAC;EACDlC,WAAW,EAAE;IACXmC,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE;EACd,CAAC;EACD3B,QAAQ,EAAE;IACR4B,UAAU,EAAE,CAAC;EACf,CAAC;EACD3B,SAAS,EAAE;IACT4B,WAAW,EAAE,CAAC,CAAC;IACfD,UAAU,EAAE;EACd,CAAC;EACDtB,OAAO,EAAE;IACPY,MAAM,EAAE,CAAC;IACTY,cAAc,EAAE;EAClB;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useId","useLayoutEffect","useMemo","useRef","useState","Pressable","StyleSheet","View","useTheme","Text","Portal","createDropdownZIndex","MenuContext","ItemContext","useMenuContext","useMenuItemContext","jsx","_jsx","Fragment","_Fragment","menuZIndex","VIEWPORT_GUTTER","MENU_OFFSET","useMenuControl","id","isOpen","setIsOpen","open","close","useMenuControlAsDialogControl","menuControl","ref","dialogControl","cb","Root","children","control","defaultControl","activeControl","rootRef","triggerRef","dropdownRef","context","document","undefined","handlePointerDown","event","rootNode","current","dropdownNode","eventTarget","target","contains","handleKeyDown","key","addEventListener","removeEventListener","Provider","value","style","styles","root","openRoot","Trigger","label","role","hint","hovered","setHovered","focused","setFocused","state","pressed","props","onPress","onFocus","onBlur","accessibilityHint","accessibilityLabel","accessibilityRole","Outer","theme","position","setPosition","window","triggerNode","getBoundingClientRect","updatePosition","rect","width","Math","max","availableRight","innerWidth","left","min","right","top","bottom","innerHeight","minWidth","dropdown","backgroundColor","isDark","colors","backgroundSecondary","background","borderColor","borderLight","shadowColor","shadow","portaledDropdown","Item","rest","handlePress","e","defaultPrevented","isDisabled","Boolean","disabled","isHighlighted","itemContextValue","onMouseEnter","onMouseLeave","webItem","contrast50","ItemText","webItemText","color","textTertiary","text","ItemIcon","icon","Comp","fill","iconLeft","iconRight","size","textSecondary","Group","Divider","divider","create","zIndex","borderRadius","padding","borderWidth","overflow","surface","shadowOpacity","shadowRadius","shadowOffset","height","pointerEvents","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","minHeight","flex","fontWeight","marginLeft","marginRight","marginVertical"],"sourceRoot":"../../../src","sources":["menu/index.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -11,8 +11,7 @@
11
11
  * `exports` `import`/`require` conditions to `lib/.../native-root-vars.js`.
12
12
  *
13
13
  * It deliberately does NOT import `react-native-css/native-internal`. That subpath
14
- * is native-only: it has no web build, and react-native-css is not even a Bloom
15
- * dependency. Statically importing it from a file a web bundler resolves breaks
14
+ * is native-only. Statically importing it from a file a web bundler resolves breaks
16
15
  * module resolution outright (the original report: `Rolldown failed to resolve
17
16
  * import "react-native-css/native-internal" from .../native-root-vars.js`).
18
17
  * Importing it from a file a consumer's `tsc` resolves breaks type-check (TS2307).
@@ -1 +1 @@
1
- {"version":3,"names":["applyNativeRootVars","_colorPreset","_mode"],"sourceRoot":"../../../src","sources":["theme/native-root-vars.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,mBAAmBA,CAACC,YAA0B,EAAEC,KAAuB,EAAQ;EAC7F;EACA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["applyNativeRootVars","_colorPreset","_mode"],"sourceRoot":"../../../src","sources":["theme/native-root-vars.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,mBAAmBA,CAACC,YAA0B,EAAEC,KAAuB,EAAQ;EAC7F;EACA;AAAA","ignoreList":[]}
@@ -11,11 +11,11 @@
11
11
  // `node_modules/@oxyhq/bloom/src/**`, and TypeScript does NOT auto-pick-up
12
12
  // ambient `.d.ts` files that live under `node_modules`, so
13
13
  // `react-native-css/native-internal` is unresolved (TS2307) unless the reference
14
- // travels with the source. react-native-css is intentionally NOT a Bloom
15
- // dependency it arrives transitively via a host's NativeWind 5 install, or is
16
- // absent entirely for NativeWind 4 consumers so the ambient declaration is the
17
- // only thing that can type this import, and it MUST reach the consumer. The
18
- // directive ships raw in `src/` (Bloom publishes `files: ["src", "lib"]`).
14
+ // travels with the source. Bloom now declares react-native-css directly because
15
+ // this native source imports it; the ambient declaration still travels with
16
+ // `src/` so consumer TypeScript programs that read Bloom source see the exact
17
+ // subpath shape. The directive ships raw in `src/` (Bloom publishes
18
+ // `files: ["src", "lib"]`).
19
19
  import { rootVariables } from 'react-native-css/native-internal';
20
20
  import { getResolvedTokens } from "./token-registry.js";
21
21
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/menu/index.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAUN,MAAM,OAAO,CAAC;AACf,OAAO,EAA+B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAM3F,OAAO,EAGL,cAAc,EAEf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAEV,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,cAAc,EAAE,CAAC;AAI1B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,wBAAgB,cAAc,IAAI,gBAAgB,CAiBjD;AA8BD,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,OAAO,GACR,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B,CAAC,2CAiDD;AAED,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,EACL,IAAe,EACf,IAAI,GACL,EAAE,YAAY,mBAqBd;AAED,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,KAAK,GACN,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,kDA2BD;AAED,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,2CAmD3E;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,2CAe1D;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,2CAuB9E;AAED,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAE7C;AAED,wBAAgB,OAAO,4CAWtB"}
1
+ {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/menu/index.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAWN,MAAM,OAAO,CAAC;AACf,OAAO,EAA+B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAO3F,OAAO,EAGL,cAAc,EAEf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAEV,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,cAAc,EAAE,CAAC;AAM1B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,wBAAgB,cAAc,IAAI,gBAAgB,CAiBjD;AA8BD,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,OAAO,GACR,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B,CAAC,2CA0DD;AAED,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,EACL,IAAe,EACf,IAAI,GACL,EAAE,YAAY,mBAsBd;AAED,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,KAAK,GACN,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,kDA0ED;AAED,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,2CAmD3E;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,2CAe1D;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,2CAuB9E;AAED,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAE7C;AAED,wBAAgB,OAAO,4CAWtB"}
@@ -1,9 +1,19 @@
1
1
  import type { AccessibilityRole, GestureResponderEvent, PressableProps, StyleProp, TextStyle, ViewStyle } from 'react-native';
2
2
  import type { Props as SVGIconProps } from '../icons/common';
3
3
  import type { DialogControlProps } from '../dialog/types';
4
+ export type MenuAnchorRect = {
5
+ top: number;
6
+ left: number;
7
+ right: number;
8
+ bottom: number;
9
+ width: number;
10
+ height: number;
11
+ };
4
12
  export type MenuContextType = {
5
13
  control: DialogControlProps;
6
14
  isOpen?: boolean;
15
+ triggerRef?: React.RefObject<unknown>;
16
+ dropdownRef?: React.RefObject<unknown>;
7
17
  };
8
18
  export type ItemContextType = {
9
19
  disabled: boolean;
@@ -16,6 +26,7 @@ export type TriggerChildProps = {
16
26
  pressed: boolean;
17
27
  };
18
28
  props: {
29
+ ref?: React.Ref<unknown>;
19
30
  onPress: () => void;
20
31
  onFocus?: () => void;
21
32
  onBlur?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/menu/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,SAAS,CAAC;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,CAC7C,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC5C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAClD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/menu/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,SAAS,CAAC;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,CAC7C,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC5C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAClD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC"}
@@ -10,8 +10,7 @@ import { type AppColorName } from './color-presets';
10
10
  * `exports` `import`/`require` conditions to `lib/.../native-root-vars.js`.
11
11
  *
12
12
  * It deliberately does NOT import `react-native-css/native-internal`. That subpath
13
- * is native-only: it has no web build, and react-native-css is not even a Bloom
14
- * dependency. Statically importing it from a file a web bundler resolves breaks
13
+ * is native-only. Statically importing it from a file a web bundler resolves breaks
15
14
  * module resolution outright (the original report: `Rolldown failed to resolve
16
15
  * import "react-native-css/native-internal" from .../native-root-vars.js`).
17
16
  * Importing it from a file a consumer's `tsc` resolves breaks type-check (TS2307).
@@ -1 +1 @@
1
- {"version":3,"file":"native-root-vars.d.ts","sourceRoot":"","sources":["../../../../src/theme/native-root-vars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAG7F"}
1
+ {"version":3,"file":"native-root-vars.d.ts","sourceRoot":"","sources":["../../../../src/theme/native-root-vars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAG7F"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/menu/index.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAUN,MAAM,OAAO,CAAC;AACf,OAAO,EAA+B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAM3F,OAAO,EAGL,cAAc,EAEf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAEV,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,cAAc,EAAE,CAAC;AAI1B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,wBAAgB,cAAc,IAAI,gBAAgB,CAiBjD;AA8BD,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,OAAO,GACR,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B,CAAC,2CAiDD;AAED,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,EACL,IAAe,EACf,IAAI,GACL,EAAE,YAAY,mBAqBd;AAED,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,KAAK,GACN,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,kDA2BD;AAED,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,2CAmD3E;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,2CAe1D;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,2CAuB9E;AAED,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAE7C;AAED,wBAAgB,OAAO,4CAWtB"}
1
+ {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/menu/index.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAWN,MAAM,OAAO,CAAC;AACf,OAAO,EAA+B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAO3F,OAAO,EAGL,cAAc,EAEf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAEV,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,cAAc,EAAE,CAAC;AAM1B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,wBAAgB,cAAc,IAAI,gBAAgB,CAiBjD;AA8BD,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,OAAO,GACR,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B,CAAC,2CA0DD;AAED,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,EACL,IAAe,EACf,IAAI,GACL,EAAE,YAAY,mBAsBd;AAED,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,KAAK,GACN,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,kDA0ED;AAED,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,2CAmD3E;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,aAAa,2CAe1D;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,EAAE,aAAa,2CAuB9E;AAED,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,2CAE7C;AAED,wBAAgB,OAAO,4CAWtB"}
@@ -1,9 +1,19 @@
1
1
  import type { AccessibilityRole, GestureResponderEvent, PressableProps, StyleProp, TextStyle, ViewStyle } from 'react-native';
2
2
  import type { Props as SVGIconProps } from '../icons/common';
3
3
  import type { DialogControlProps } from '../dialog/types';
4
+ export type MenuAnchorRect = {
5
+ top: number;
6
+ left: number;
7
+ right: number;
8
+ bottom: number;
9
+ width: number;
10
+ height: number;
11
+ };
4
12
  export type MenuContextType = {
5
13
  control: DialogControlProps;
6
14
  isOpen?: boolean;
15
+ triggerRef?: React.RefObject<unknown>;
16
+ dropdownRef?: React.RefObject<unknown>;
7
17
  };
8
18
  export type ItemContextType = {
9
19
  disabled: boolean;
@@ -16,6 +26,7 @@ export type TriggerChildProps = {
16
26
  pressed: boolean;
17
27
  };
18
28
  props: {
29
+ ref?: React.Ref<unknown>;
19
30
  onPress: () => void;
20
31
  onFocus?: () => void;
21
32
  onBlur?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/menu/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,SAAS,CAAC;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,CAC7C,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC5C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAClD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/menu/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACL,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,iBAAiB,CAAC;KACtC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,SAAS,CAAC;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,CAC7C,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC5C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CACF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAClD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC,CAAC"}
@@ -10,8 +10,7 @@ import { type AppColorName } from './color-presets';
10
10
  * `exports` `import`/`require` conditions to `lib/.../native-root-vars.js`.
11
11
  *
12
12
  * It deliberately does NOT import `react-native-css/native-internal`. That subpath
13
- * is native-only: it has no web build, and react-native-css is not even a Bloom
14
- * dependency. Statically importing it from a file a web bundler resolves breaks
13
+ * is native-only. Statically importing it from a file a web bundler resolves breaks
15
14
  * module resolution outright (the original report: `Rolldown failed to resolve
16
15
  * import "react-native-css/native-internal" from .../native-root-vars.js`).
17
16
  * Importing it from a file a consumer's `tsc` resolves breaks type-check (TS2307).
@@ -1 +1 @@
1
- {"version":3,"file":"native-root-vars.d.ts","sourceRoot":"","sources":["../../../../src/theme/native-root-vars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAG7F"}
1
+ {"version":3,"file":"native-root-vars.d.ts","sourceRoot":"","sources":["../../../../src/theme/native-root-vars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAG7F"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/bloom",
3
- "version": "0.8.3",
3
+ "version": "0.8.5",
4
4
  "description": "Bloom UI — Oxy ecosystem component library for React Native + Expo + Web",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -871,6 +871,7 @@
871
871
  },
872
872
  "dependencies": {
873
873
  "nanoid": "^5.1.5",
874
+ "react-native-css": "3.0.7",
874
875
  "react-remove-scroll-bar": "^2.3.8"
875
876
  }
876
877
  }
@@ -5,6 +5,7 @@ import React, {
5
5
  useCallback,
6
6
  useEffect,
7
7
  useId,
8
+ useLayoutEffect,
8
9
  useMemo,
9
10
  useRef,
10
11
  useState,
@@ -14,6 +15,7 @@ import { Pressable, StyleSheet, View, type StyleProp, type ViewStyle } from 'rea
14
15
  import { useTheme } from '../theme/use-theme';
15
16
  import { Text } from '../typography';
16
17
  import type { DialogControlProps } from '../dialog/types';
18
+ import { Portal } from '../portal/index.web';
17
19
  import { createDropdownZIndex } from '../styles/z-index';
18
20
  import {
19
21
  MenuContext,
@@ -33,6 +35,8 @@ import type {
33
35
  export { useMenuContext };
34
36
 
35
37
  const menuZIndex = createDropdownZIndex();
38
+ const VIEWPORT_GUTTER = 8;
39
+ const MENU_OFFSET = 6;
36
40
 
37
41
  export type MenuControlProps = {
38
42
  id: string;
@@ -98,9 +102,16 @@ export function Root({
98
102
  const activeControl = control ?? defaultControl;
99
103
  const dialogControl = useMenuControlAsDialogControl(activeControl);
100
104
  const rootRef = useRef<View>(null);
105
+ const triggerRef = useRef<unknown>(null);
106
+ const dropdownRef = useRef<unknown>(null);
101
107
 
102
108
  const context = useMemo<MenuContextType>(
103
- () => ({ control: dialogControl, isOpen: activeControl.isOpen }),
109
+ () => ({
110
+ control: dialogControl,
111
+ isOpen: activeControl.isOpen,
112
+ triggerRef,
113
+ dropdownRef,
114
+ }),
104
115
  [activeControl.isOpen, dialogControl],
105
116
  );
106
117
 
@@ -111,7 +122,9 @@ export function Root({
111
122
 
112
123
  const handlePointerDown = (event: PointerEvent) => {
113
124
  const rootNode = rootRef.current as unknown as HTMLElement | null;
114
- if (rootNode?.contains(event.target as Node)) {
125
+ const dropdownNode = dropdownRef.current as HTMLElement | null;
126
+ const eventTarget = event.target as Node;
127
+ if (rootNode?.contains(eventTarget) || dropdownNode?.contains(eventTarget)) {
115
128
  return;
116
129
  }
117
130
  activeControl.close();
@@ -150,7 +163,7 @@ export function Trigger({
150
163
  role = 'button',
151
164
  hint,
152
165
  }: TriggerProps) {
153
- const { control } = useMenuContext();
166
+ const { control, triggerRef } = useMenuContext();
154
167
  const [hovered, setHovered] = useState(false);
155
168
  const [focused, setFocused] = useState(false);
156
169
 
@@ -162,6 +175,7 @@ export function Trigger({
162
175
  pressed: false,
163
176
  },
164
177
  props: {
178
+ ref: triggerRef,
165
179
  onPress: () => control.open(),
166
180
  onFocus: () => setFocused(true),
167
181
  onBlur: () => setFocused(false),
@@ -181,29 +195,76 @@ export function Outer({
181
195
  }>) {
182
196
  const theme = useTheme();
183
197
  const context = useMenuContext();
184
- const dropdownRef = useRef<View>(null);
198
+ const [position, setPosition] = useState<ViewStyle | null>(null);
199
+
200
+ useLayoutEffect(() => {
201
+ if (!context.isOpen || typeof window === 'undefined') {
202
+ return;
203
+ }
204
+
205
+ const triggerNode = context.triggerRef?.current as HTMLElement | null;
206
+ if (!triggerNode?.getBoundingClientRect) {
207
+ return;
208
+ }
209
+
210
+ const updatePosition = () => {
211
+ const rect = triggerNode.getBoundingClientRect();
212
+ const width = Math.max(180, rect.width);
213
+ const availableRight = window.innerWidth - VIEWPORT_GUTTER;
214
+ const left = Math.min(
215
+ Math.max(VIEWPORT_GUTTER, rect.right - width),
216
+ Math.max(VIEWPORT_GUTTER, availableRight - width),
217
+ );
218
+ const top = Math.min(
219
+ rect.bottom + MENU_OFFSET,
220
+ Math.max(VIEWPORT_GUTTER, window.innerHeight - VIEWPORT_GUTTER),
221
+ );
222
+
223
+ setPosition({
224
+ position: 'fixed' as 'absolute',
225
+ top,
226
+ left,
227
+ right: undefined,
228
+ bottom: undefined,
229
+ minWidth: width,
230
+ });
231
+ };
232
+
233
+ updatePosition();
234
+ window.addEventListener('resize', updatePosition);
235
+ window.addEventListener('scroll', updatePosition, true);
236
+
237
+ return () => {
238
+ window.removeEventListener('resize', updatePosition);
239
+ window.removeEventListener('scroll', updatePosition, true);
240
+ };
241
+ }, [context.isOpen, context.triggerRef]);
185
242
 
186
243
  if (!context.isOpen) {
187
244
  return null;
188
245
  }
189
246
 
190
247
  return (
191
- <View
192
- ref={dropdownRef}
193
- style={[
194
- styles.dropdown,
195
- {
196
- backgroundColor: theme.isDark
197
- ? theme.colors.backgroundSecondary
198
- : theme.colors.background,
199
- borderColor: theme.colors.borderLight,
200
- shadowColor: theme.colors.shadow,
201
- },
202
- style,
203
- ]}
204
- >
205
- {children}
206
- </View>
248
+ <Portal>
249
+ <View
250
+ ref={context.dropdownRef as React.Ref<View>}
251
+ style={[
252
+ styles.dropdown,
253
+ {
254
+ backgroundColor: theme.isDark
255
+ ? theme.colors.backgroundSecondary
256
+ : theme.colors.background,
257
+ borderColor: theme.colors.borderLight,
258
+ shadowColor: theme.colors.shadow,
259
+ },
260
+ style,
261
+ styles.portaledDropdown,
262
+ position,
263
+ ]}
264
+ >
265
+ {children}
266
+ </View>
267
+ </Portal>
207
268
  );
208
269
  }
209
270
 
@@ -337,6 +398,9 @@ const styles = StyleSheet.create({
337
398
  shadowOffset: { width: 0, height: 4 },
338
399
  minWidth: 180,
339
400
  },
401
+ portaledDropdown: {
402
+ pointerEvents: 'auto',
403
+ },
340
404
  webItem: {
341
405
  flexDirection: 'row',
342
406
  alignItems: 'center',
package/src/menu/types.ts CHANGED
@@ -10,9 +10,20 @@ import type {
10
10
  import type { Props as SVGIconProps } from '../icons/common';
11
11
  import type { DialogControlProps } from '../dialog/types';
12
12
 
13
+ export type MenuAnchorRect = {
14
+ top: number;
15
+ left: number;
16
+ right: number;
17
+ bottom: number;
18
+ width: number;
19
+ height: number;
20
+ };
21
+
13
22
  export type MenuContextType = {
14
23
  control: DialogControlProps;
15
24
  isOpen?: boolean;
25
+ triggerRef?: React.RefObject<unknown>;
26
+ dropdownRef?: React.RefObject<unknown>;
16
27
  };
17
28
 
18
29
  export type ItemContextType = {
@@ -27,6 +38,7 @@ export type TriggerChildProps = {
27
38
  pressed: boolean;
28
39
  };
29
40
  props: {
41
+ ref?: React.Ref<unknown>;
30
42
  onPress: () => void;
31
43
  onFocus?: () => void;
32
44
  onBlur?: () => void;
@@ -1,21 +1,20 @@
1
1
  /**
2
2
  * Ambient declaration for `react-native-css/native-internal`.
3
3
  *
4
- * react-native-css is NOT a Bloom dependency it arrives transitively via the
5
- * host app's NativeWind install (NativeWind 5 is built on react-native-css@3).
6
- * Bloom's `native-root-vars.native.ts` statically imports `rootVariables` from
7
- * this subpath so Metro resolves the `import` export condition to the package's
4
+ * Bloom's native theme bridge statically imports `rootVariables` from this
5
+ * subpath so Metro resolves the `import` export condition to the package's
8
6
  * `module` build — the SAME family instance the react-native-css renderer
9
- * (`varResolver`) subscribes to. A runtime `require()` would resolve the
10
- * `require` condition to the separate `commonjs` build, whose `rootVariables`
11
- * is a distinct, un-observed family instance (see the file-level comment in
12
- * `native-root-vars.native.ts`).
7
+ * (`varResolver`) subscribes to. `react-native-css` is a direct Bloom dependency
8
+ * because this subpath is imported from published native source, including
9
+ * NativeWind 4 consumers whose test/native resolvers still select `.native.ts`.
10
+ * A runtime `require()` would resolve the `require` condition to the separate
11
+ * `commonjs` build, whose `rootVariables` is a distinct, un-observed family
12
+ * instance (see the file-level comment in `native-root-vars.native.ts`).
13
13
  *
14
- * Because the package isn't installed in Bloom, `tsc` can't see its published
15
- * types, so we declare the slice we use here — typed to match react-native-css
16
- * @3.0.7's `dist/typescript/.../native-internal/root.d.ts` exactly (no `any`,
17
- * no shims). This file is `.native`-only in spirit; the web fork never imports
18
- * the subpath, so on web bundlers the static import is never reached.
14
+ * We declare the slice we use here typed to match react-native-css @3.0.7's
15
+ * `dist/typescript/.../native-internal/root.d.ts` exactly (no `any`, no shims).
16
+ * This file is `.native`-only in spirit; the web fork never imports the subpath,
17
+ * so on web bundlers the static import is never reached.
19
18
  */
20
19
  declare module 'react-native-css/native-internal' {
21
20
  /**
@@ -9,11 +9,11 @@
9
9
  // `node_modules/@oxyhq/bloom/src/**`, and TypeScript does NOT auto-pick-up
10
10
  // ambient `.d.ts` files that live under `node_modules`, so
11
11
  // `react-native-css/native-internal` is unresolved (TS2307) unless the reference
12
- // travels with the source. react-native-css is intentionally NOT a Bloom
13
- // dependency it arrives transitively via a host's NativeWind 5 install, or is
14
- // absent entirely for NativeWind 4 consumers so the ambient declaration is the
15
- // only thing that can type this import, and it MUST reach the consumer. The
16
- // directive ships raw in `src/` (Bloom publishes `files: ["src", "lib"]`).
12
+ // travels with the source. Bloom now declares react-native-css directly because
13
+ // this native source imports it; the ambient declaration still travels with
14
+ // `src/` so consumer TypeScript programs that read Bloom source see the exact
15
+ // subpath shape. The directive ships raw in `src/` (Bloom publishes
16
+ // `files: ["src", "lib"]`).
17
17
  import { rootVariables } from 'react-native-css/native-internal';
18
18
 
19
19
  import { type AppColorName } from './color-presets';
@@ -11,8 +11,7 @@ import { type AppColorName } from './color-presets';
11
11
  * `exports` `import`/`require` conditions to `lib/.../native-root-vars.js`.
12
12
  *
13
13
  * It deliberately does NOT import `react-native-css/native-internal`. That subpath
14
- * is native-only: it has no web build, and react-native-css is not even a Bloom
15
- * dependency. Statically importing it from a file a web bundler resolves breaks
14
+ * is native-only. Statically importing it from a file a web bundler resolves breaks
16
15
  * module resolution outright (the original report: `Rolldown failed to resolve
17
16
  * import "react-native-css/native-internal" from .../native-root-vars.js`).
18
17
  * Importing it from a file a consumer's `tsc` resolves breaks type-check (TS2307).