@oxyhq/bloom 0.70.0 → 0.72.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 (68) hide show
  1. package/lib/commonjs/fonts/apply-font-faces.js +5 -4
  2. package/lib/commonjs/fonts/apply-font-faces.js.map +1 -1
  3. package/lib/commonjs/fonts/apply-font-faces.web.js +14 -16
  4. package/lib/commonjs/fonts/apply-font-faces.web.js.map +1 -1
  5. package/lib/commonjs/fonts/assets/BlomusModernus-Bold.woff2 +0 -0
  6. package/lib/commonjs/fonts/assets/BlomusModernus-Regular.woff2 +0 -0
  7. package/lib/commonjs/fonts/assets/GeistMono-Variable.woff2 +0 -0
  8. package/lib/commonjs/fonts/assets/InterVariable.woff2 +0 -0
  9. package/lib/commonjs/fonts/font-assets.web.js +3 -2
  10. package/lib/commonjs/fonts/font-assets.web.js.map +1 -1
  11. package/lib/commonjs/fonts/font-urls.web.js +35 -0
  12. package/lib/commonjs/fonts/font-urls.web.js.map +1 -0
  13. package/lib/commonjs/select/index.web.js +77 -4
  14. package/lib/commonjs/select/index.web.js.map +1 -1
  15. package/lib/module/fonts/apply-font-faces.js +5 -4
  16. package/lib/module/fonts/apply-font-faces.js.map +1 -1
  17. package/lib/module/fonts/apply-font-faces.web.js +14 -16
  18. package/lib/module/fonts/apply-font-faces.web.js.map +1 -1
  19. package/lib/module/fonts/assets/BlomusModernus-Bold.woff2 +0 -0
  20. package/lib/module/fonts/assets/BlomusModernus-Regular.woff2 +0 -0
  21. package/lib/module/fonts/assets/GeistMono-Variable.woff2 +0 -0
  22. package/lib/module/fonts/assets/InterVariable.woff2 +0 -0
  23. package/lib/module/fonts/font-assets.web.js +3 -2
  24. package/lib/module/fonts/font-assets.web.js.map +1 -1
  25. package/lib/module/fonts/font-urls.web.js +32 -0
  26. package/lib/module/fonts/font-urls.web.js.map +1 -0
  27. package/lib/module/fonts/index.web.js +3 -3
  28. package/lib/module/select/index.web.js +78 -5
  29. package/lib/module/select/index.web.js.map +1 -1
  30. package/lib/typescript/commonjs/fonts/apply-font-faces.d.ts.map +1 -1
  31. package/lib/typescript/commonjs/fonts/apply-font-faces.web.d.ts +9 -11
  32. package/lib/typescript/commonjs/fonts/apply-font-faces.web.d.ts.map +1 -1
  33. package/lib/typescript/commonjs/fonts/font-assets.web.d.ts.map +1 -1
  34. package/lib/typescript/commonjs/fonts/font-urls.web.d.ts +6 -0
  35. package/lib/typescript/commonjs/fonts/font-urls.web.d.ts.map +1 -0
  36. package/lib/typescript/commonjs/select/index.web.d.ts +1 -1
  37. package/lib/typescript/commonjs/select/index.web.d.ts.map +1 -1
  38. package/lib/typescript/commonjs/select/types.d.ts +6 -0
  39. package/lib/typescript/commonjs/select/types.d.ts.map +1 -1
  40. package/lib/typescript/module/fonts/apply-font-faces.d.ts.map +1 -1
  41. package/lib/typescript/module/fonts/apply-font-faces.web.d.ts +9 -11
  42. package/lib/typescript/module/fonts/apply-font-faces.web.d.ts.map +1 -1
  43. package/lib/typescript/module/fonts/font-assets.web.d.ts.map +1 -1
  44. package/lib/typescript/module/fonts/font-urls.web.d.ts +6 -0
  45. package/lib/typescript/module/fonts/font-urls.web.d.ts.map +1 -0
  46. package/lib/typescript/module/select/index.web.d.ts +1 -1
  47. package/lib/typescript/module/select/index.web.d.ts.map +1 -1
  48. package/lib/typescript/module/select/types.d.ts +6 -0
  49. package/lib/typescript/module/select/types.d.ts.map +1 -1
  50. package/package.json +4 -7
  51. package/src/__tests__/SelectItemLabel.test.tsx +46 -0
  52. package/src/__tests__/apply-font-faces.test.ts +32 -0
  53. package/src/fonts/apply-font-faces.ts +5 -4
  54. package/src/fonts/apply-font-faces.web.ts +14 -16
  55. package/src/fonts/font-assets.web.ts +3 -2
  56. package/src/fonts/font-urls.web.ts +30 -0
  57. package/src/fonts/index.web.ts +3 -3
  58. package/src/select/index.web.tsx +87 -4
  59. package/src/select/types.ts +6 -0
  60. package/lib/commonjs/fonts/font-data.web.js +0 -22
  61. package/lib/commonjs/fonts/font-data.web.js.map +0 -1
  62. package/lib/module/fonts/font-data.web.js +0 -18
  63. package/lib/module/fonts/font-data.web.js.map +0 -1
  64. package/lib/typescript/commonjs/fonts/font-data.web.d.ts +0 -5
  65. package/lib/typescript/commonjs/fonts/font-data.web.d.ts.map +0 -1
  66. package/lib/typescript/module/fonts/font-data.web.d.ts +0 -5
  67. package/lib/typescript/module/fonts/font-data.web.d.ts.map +0 -1
  68. package/src/fonts/font-data.web.ts +0 -15
@@ -8,10 +8,11 @@ exports.applyFontFaces = applyFontFaces;
8
8
  // is selected by bundlers via the package.json conditions. RN consumers
9
9
  // never need font-face injection — useFonts handles loading on native.
10
10
  //
11
- // The web variant does NOT pull in any `.woff2` files via asset imports —
12
- // it imports base64 data URLs from `font-data.web.ts`. This stub stays
13
- // here so the file split (`*.ts` vs `*.web.ts`) makes the platform
14
- // intent explicit and so the runtime API surface matches across platforms.
11
+ // The split is load-bearing, not decorative: the web variant reaches
12
+ // `font-urls.web.ts`, whose module-level `.woff2` imports would otherwise
13
+ // drag a second, unusable copy of every font into the native bundle
14
+ // (Metro resolves an asset import on native to a registry id, not a URL).
15
+ // Keeping this stub empty is what guarantees native pays nothing for them.
15
16
  function applyFontFaces() {
16
17
  // intentionally empty
17
18
  }
@@ -1 +1 @@
1
- {"version":3,"names":["applyFontFaces"],"sourceRoot":"../../../src","sources":["fonts/apply-font-faces.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,cAAcA,CAAA,EAAS;EACrC;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["applyFontFaces"],"sourceRoot":"../../../src","sources":["fonts/apply-font-faces.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,cAAcA,CAAA,EAAS;EACrC;AAAA","ignoreList":[]}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.applyFontFaces = applyFontFaces;
7
- var _fontDataWeb = require("./font-data.web.js");
7
+ var _fontUrlsWeb = require("./font-urls.web.js");
8
8
  var _tokens = require("./tokens.js");
9
9
  const STYLE_ID = 'bloom-fonts';
10
10
 
@@ -12,18 +12,16 @@ const STYLE_ID = 'bloom-fonts';
12
12
  * Inject @font-face rules and font CSS variables onto :root.
13
13
  *
14
14
  * Web-only. The native counterpart in `apply-font-faces.ts` is a no-op
15
- * stub — Metro cannot parse `.woff2` imports, so the file split keeps
16
- * the font payload out of the native bundle entirely. Idempotent: safe to
17
- * call multiple times; subsequent calls early-return after the
18
- * `<style id="bloom-fonts">` tag has been mounted. SSR-safe via the
19
- * `typeof document === 'undefined'` guard.
15
+ * stub — native loads its fonts through `useFonts(FONT_ASSETS)`, so the file
16
+ * split keeps the web font payload out of the native bundle entirely.
17
+ * Idempotent: safe to call multiple times; subsequent calls early-return
18
+ * after the `<style id="bloom-fonts">` tag has been mounted. SSR-safe via
19
+ * the `typeof document === 'undefined'` guard.
20
20
  *
21
- * The font URLs come from `./font-data.web`, a generated module that
22
- * embeds the woff2 bytes as base64 data URLs. Inlining (rather than
23
- * relying on bundler asset loaders for `.woff2`) means consumers do not
24
- * have to extend Metro's `assetExts` or add a webpack/Vite asset rule —
25
- * the published JS is self-contained. See `scripts/generate-font-data.mjs`
26
- * for the rationale and trade-offs.
21
+ * The URLs come from `./font-urls.web`, which imports the `.woff2` files so
22
+ * the consuming bundler emits them as separate, cacheable assets. See that
23
+ * module for the per-bundler details and for the one thing a consumer has to
24
+ * provide (Metro needs `woff2` in `assetExts`).
27
25
  */
28
26
  function applyFontFaces() {
29
27
  if (typeof document === 'undefined') return;
@@ -31,10 +29,10 @@ function applyFontFaces() {
31
29
  const style = document.createElement('style');
32
30
  style.id = STYLE_ID;
33
31
  style.textContent = `
34
- @font-face { font-family: 'BlomusModernus'; src: url(${_fontDataWeb.blomusModernusRegular}) format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
35
- @font-face { font-family: 'BlomusModernus'; src: url(${_fontDataWeb.blomusModernusBold}) format('woff2'); font-weight: 700; font-style: normal; font-display: swap; }
36
- @font-face { font-family: 'Inter'; src: url(${_fontDataWeb.interVariable}) format('woff2-variations'); font-weight: 100 900; font-style: normal; font-display: swap; }
37
- @font-face { font-family: 'Geist Mono'; src: url(${_fontDataWeb.geistMonoVariable}) format('woff2-variations'); font-weight: 100 900; font-style: normal; font-display: swap; }
32
+ @font-face { font-family: 'BlomusModernus'; src: url("${_fontUrlsWeb.blomusModernusRegular}") format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
33
+ @font-face { font-family: 'BlomusModernus'; src: url("${_fontUrlsWeb.blomusModernusBold}") format('woff2'); font-weight: 700; font-style: normal; font-display: swap; }
34
+ @font-face { font-family: 'Inter'; src: url("${_fontUrlsWeb.interVariable}") format('woff2-variations'); font-weight: 100 900; font-style: normal; font-display: swap; }
35
+ @font-face { font-family: 'Geist Mono'; src: url("${_fontUrlsWeb.geistMonoVariable}") format('woff2-variations'); font-weight: 100 900; font-style: normal; font-display: swap; }
38
36
  :root {
39
37
  --bloom-font-display: ${_tokens.fontFamilies.display};
40
38
  --bloom-font-sans: ${_tokens.fontFamilies.sans};
@@ -1 +1 @@
1
- {"version":3,"names":["_fontDataWeb","require","_tokens","STYLE_ID","applyFontFaces","document","getElementById","style","createElement","id","textContent","blomusModernusRegular","blomusModernusBold","interVariable","geistMonoVariable","fontFamilies","display","sans","mono","head","appendChild"],"sourceRoot":"../../../src","sources":["fonts/apply-font-faces.web.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAMA,IAAAC,OAAA,GAAAD,OAAA;AAEA,MAAME,QAAQ,GAAG,aAAa;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAAA,EAAS;EACrC,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;EACrC,IAAIA,QAAQ,CAACC,cAAc,CAACH,QAAQ,CAAC,EAAE;EAEvC,MAAMI,KAAK,GAAGF,QAAQ,CAACG,aAAa,CAAC,OAAO,CAAC;EAC7CD,KAAK,CAACE,EAAE,GAAGN,QAAQ;EACnBI,KAAK,CAACG,WAAW,GAAG;AACtB,2DAA2DC,kCAAqB;AAChF,2DAA2DC,+BAAkB;AAC7E,kDAAkDC,0BAAa;AAC/D,uDAAuDC,8BAAiB;AACxE;AACA,8BAA8BC,oBAAY,CAACC,OAAO;AAClD,2BAA2BD,oBAAY,CAACE,IAAI;AAC5C,2BAA2BF,oBAAY,CAACG,IAAI;AAC5C;AACA,GAAG;EACDb,QAAQ,CAACc,IAAI,CAACC,WAAW,CAACb,KAAK,CAAC;AAClC","ignoreList":[]}
1
+ {"version":3,"names":["_fontUrlsWeb","require","_tokens","STYLE_ID","applyFontFaces","document","getElementById","style","createElement","id","textContent","blomusModernusRegular","blomusModernusBold","interVariable","geistMonoVariable","fontFamilies","display","sans","mono","head","appendChild"],"sourceRoot":"../../../src","sources":["fonts/apply-font-faces.web.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAMA,IAAAC,OAAA,GAAAD,OAAA;AAEA,MAAME,QAAQ,GAAG,aAAa;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAAA,EAAS;EACrC,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;EACrC,IAAIA,QAAQ,CAACC,cAAc,CAACH,QAAQ,CAAC,EAAE;EAEvC,MAAMI,KAAK,GAAGF,QAAQ,CAACG,aAAa,CAAC,OAAO,CAAC;EAC7CD,KAAK,CAACE,EAAE,GAAGN,QAAQ;EACnBI,KAAK,CAACG,WAAW,GAAG;AACtB,4DAA4DC,kCAAqB;AACjF,4DAA4DC,+BAAkB;AAC9E,mDAAmDC,0BAAa;AAChE,wDAAwDC,8BAAiB;AACzE;AACA,8BAA8BC,oBAAY,CAACC,OAAO;AAClD,2BAA2BD,oBAAY,CAACE,IAAI;AAC5C,2BAA2BF,oBAAY,CAACG,IAAI;AAC5C;AACA,GAAG;EACDb,QAAQ,CAACc,IAAI,CAACC,WAAW,CAACb,KAAK,CAAC;AAClC","ignoreList":[]}
@@ -8,8 +8,9 @@ exports.FONT_ASSETS = void 0;
8
8
  //
9
9
  // `useFonts()` is native-only — the web `FontLoader` (`FontLoader.tsx`) calls
10
10
  // `applyFontFaces()` instead, which injects the same four families as
11
- // `@font-face` rules from base64 data URLs (`apply-font-faces.web.ts` /
12
- // `font-data.web.ts`). So the map is empty by design, not by omission.
11
+ // `@font-face` rules pointing at bundler-emitted `.woff2` URLs
12
+ // (`apply-font-faces.web.ts` / `font-urls.web.ts`). So the map is empty by
13
+ // design, not by omission.
13
14
  //
14
15
  // This file exists so `index.web.ts` can name its font-asset source
15
16
  // explicitly, exactly as it already does for `./apply-font-faces.web`. The
@@ -1 +1 @@
1
- {"version":3,"names":["FONT_ASSETS","exports"],"sourceRoot":"../../../src","sources":["fonts/font-assets.web.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGO,MAAMA,WAAyB,GAAAC,OAAA,CAAAD,WAAA,GAAG,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["FONT_ASSETS","exports"],"sourceRoot":"../../../src","sources":["fonts/font-assets.web.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGO,MAAMA,WAAyB,GAAAC,OAAA,CAAAD,WAAA,GAAG,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "blomusModernusBold", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _BlomusModernusBold.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "blomusModernusRegular", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _BlomusModernusRegular.default;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "geistMonoVariable", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _GeistMonoVariable.default;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "interVariable", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _InterVariable.default;
28
+ }
29
+ });
30
+ var _BlomusModernusBold = _interopRequireDefault(require("./assets/BlomusModernus-Bold.woff2"));
31
+ var _BlomusModernusRegular = _interopRequireDefault(require("./assets/BlomusModernus-Regular.woff2"));
32
+ var _GeistMonoVariable = _interopRequireDefault(require("./assets/GeistMono-Variable.woff2"));
33
+ var _InterVariable = _interopRequireDefault(require("./assets/InterVariable.woff2"));
34
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
35
+ //# sourceMappingURL=font-urls.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_BlomusModernusBold","_interopRequireDefault","require","_BlomusModernusRegular","_GeistMonoVariable","_InterVariable","e","__esModule","default"],"sourceRoot":"../../../src","sources":["fonts/font-urls.web.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,IAAAA,mBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,kBAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,cAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAAyD,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
@@ -26,6 +26,7 @@ var _index2 = require("../overlay/index.js");
26
26
  var _indexWeb = require("../portal/index.web.js");
27
27
  var _zIndex = require("../styles/z-index.js");
28
28
  var _webViewStyle = require("../styles/web-view-style.js");
29
+ var _dropdownPlacement = require("../overlay/dropdown-placement.js");
29
30
  var _shadows = require("../design-tokens/shadows");
30
31
  var _useInteractionState = require("../hooks/useInteractionState.js");
31
32
  var _Chevron = require("../icons/Chevron.js");
@@ -34,6 +35,8 @@ var _common = require("./common.js");
34
35
  var _jsxRuntime = require("react/jsx-runtime");
35
36
  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); }
36
37
  const selectZIndex = (0, _zIndex.createOverlayZIndex)();
38
+ const VIEWPORT_GUTTER = 8;
39
+ const SELECT_OFFSET = 6;
37
40
 
38
41
  // ---------------------------------------------------------------------------
39
42
  // Context
@@ -60,13 +63,15 @@ function Select({
60
63
  disabled
61
64
  }) {
62
65
  const [isOpen, setIsOpen] = (0, _react.useState)(false);
66
+ const triggerRef = (0, _react.useRef)(null);
63
67
  const ctx = (0, _react.useMemo)(() => ({
64
68
  value,
65
69
  onValueChange,
66
70
  disabled,
67
71
  isOpen,
68
72
  open: () => setIsOpen(true),
69
- close: () => setIsOpen(false)
73
+ close: () => setIsOpen(false),
74
+ triggerRef
70
75
  }), [value, onValueChange, disabled, isOpen]);
71
76
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(SelectContext.Provider, {
72
77
  value: ctx,
@@ -111,6 +116,7 @@ function SelectTrigger({
111
116
  pressed: false
112
117
  },
113
118
  props: {
119
+ ref: ctx.triggerRef,
114
120
  onPress: ctx.open,
115
121
  onFocus,
116
122
  onBlur,
@@ -119,6 +125,7 @@ function SelectTrigger({
119
125
  });
120
126
  }
121
127
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
128
+ ref: ctx.triggerRef,
122
129
  onPress: ctx.open,
123
130
  onFocus: onFocus,
124
131
  onBlur: onBlur,
@@ -184,6 +191,58 @@ function SelectContent({
184
191
  }) {
185
192
  const ctx = useSelectContext();
186
193
  const theme = (0, _useTheme.useTheme)();
194
+ const [position, setPosition] = (0, _react.useState)(null);
195
+ // The mounted dropdown node, as STATE rather than a bare ref: positioning has
196
+ // to measure it, and `Portal` renders null on its first pass (it resolves its
197
+ // host in its own layout effect), so the node lands one render after `isOpen`
198
+ // flips. An effect keyed only on `isOpen` would measure nothing.
199
+ const [dropdownNode, setDropdownNode] = (0, _react.useState)(null);
200
+ const attachDropdown = (0, _react.useCallback)(node => {
201
+ setDropdownNode(node);
202
+ }, []);
203
+
204
+ // Anchored to the trigger, left edges aligned, and never off-screen: sit below
205
+ // when it fits, flip above when it doesn't, clamp when neither. Before this the
206
+ // dropdown had no `top`/`left` at all, so it rendered at the `Portal` root's
207
+ // origin — the viewport's top-left corner — however far from its trigger.
208
+ (0, _react.useLayoutEffect)(() => {
209
+ if (!ctx.isOpen || typeof window === 'undefined') return;
210
+ const triggerNode = ctx.triggerRef.current;
211
+ if (!triggerNode?.getBoundingClientRect || !dropdownNode) return;
212
+ const updatePosition = () => {
213
+ const rect = triggerNode.getBoundingClientRect();
214
+ // Measured BEFORE `minWidth` is applied, so the final surface can only be
215
+ // wider than this — and a wider surface wraps less, so the measured height
216
+ // is an upper bound. Erring that way flips early in a tie, never late.
217
+ const surface = dropdownNode.getBoundingClientRect();
218
+ const width = Math.max(surface.width, rect.width);
219
+ setPosition({
220
+ position: _webViewStyle.WEB_POSITION_FIXED,
221
+ ...(0, _dropdownPlacement.resolveDropdownPlacement)({
222
+ anchor: rect,
223
+ size: {
224
+ width,
225
+ height: surface.height
226
+ },
227
+ viewport: {
228
+ width: window.innerWidth,
229
+ height: window.innerHeight
230
+ },
231
+ offset: SELECT_OFFSET,
232
+ gutter: VIEWPORT_GUTTER,
233
+ align: 'start'
234
+ }),
235
+ minWidth: width
236
+ });
237
+ };
238
+ updatePosition();
239
+ window.addEventListener('resize', updatePosition);
240
+ window.addEventListener('scroll', updatePosition, true);
241
+ return () => {
242
+ window.removeEventListener('resize', updatePosition);
243
+ window.removeEventListener('scroll', updatePosition, true);
244
+ };
245
+ }, [ctx.isOpen, ctx.triggerRef, dropdownNode]);
187
246
  if (!ctx.isOpen) return null;
188
247
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_indexWeb.Portal, {
189
248
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.Backdrop, {
@@ -191,13 +250,14 @@ function SelectContent({
191
250
  onPress: ctx.close,
192
251
  accessibilityLabel: "Close selection"
193
252
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
253
+ ref: attachDropdown,
194
254
  accessibilityRole: "list",
195
255
  accessibilityLabel: label,
196
256
  style: [styles.dropdown, {
197
257
  backgroundColor: theme.isDark ? theme.colors.backgroundSecondary : theme.colors.background,
198
258
  borderColor: theme.colors.borderLight,
199
259
  ...(0, _shadows.bloomShadowStyle)('m')
200
- }],
260
+ }, position],
201
261
  children: items.map((item, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.default.Fragment, {
202
262
  children: renderItem(item, index, ctx.value)
203
263
  }, valueExtractor(item)))
@@ -212,6 +272,7 @@ function SelectContent({
212
272
  function SelectItem({
213
273
  ref,
214
274
  value,
275
+ label,
215
276
  children,
216
277
  style
217
278
  }) {
@@ -236,7 +297,12 @@ function SelectItem({
236
297
  }), [isSelected, hovered, focused]);
237
298
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
238
299
  ref: ref,
239
- accessibilityRole: "radio",
300
+ accessibilityRole: "radio"
301
+ // The native fork has always applied this; web declared `label` and then
302
+ // dropped it, leaving every option a `role="radio"` with no accessible
303
+ // name for a screen reader to announce.
304
+ ,
305
+ accessibilityLabel: label,
240
306
  accessibilityState: {
241
307
  checked: isSelected
242
308
  },
@@ -340,7 +406,14 @@ const styles = _reactNative.StyleSheet.create({
340
406
  pointerEvents: 'auto'
341
407
  },
342
408
  dropdown: {
343
- position: 'absolute',
409
+ // Fixed from the outset, not only once positioned: the `Portal` root is a
410
+ // block container, so a static child would stretch to the full viewport
411
+ // width and the pre-position measurement would under-read the height (less
412
+ // wrapping at a width the surface never actually has). A fixed box
413
+ // shrink-wraps to the same width it ends up with.
414
+ position: _webViewStyle.WEB_POSITION_FIXED,
415
+ top: 0,
416
+ left: 0,
344
417
  zIndex: selectZIndex.surface,
345
418
  borderRadius: 8,
346
419
  borderWidth: 1,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_index","_index2","_indexWeb","_zIndex","_webViewStyle","_shadows","_useInteractionState","_Chevron","_Check","_common","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","selectZIndex","createOverlayZIndex","SelectContext","createContext","displayName","useSelectContext","ctx","useContext","Error","Select","children","value","onValueChange","disabled","isOpen","setIsOpen","useState","useMemo","open","close","jsx","Provider","SelectTrigger","label","theme","useTheme","triggerId","useId","state","hovered","onIn","onMouseEnter","onOut","onMouseLeave","useInteractionState","focused","onFocus","onBlur","control","id","ref","current","pressed","props","onPress","accessibilityLabel","Pressable","accessibilityRole","style","styles","trigger","backgroundColor","colors","contrast50","borderColor","primary","SelectValue","extractLabel","placeholder","display","Text","numberOfLines","valueText","color","text","textSecondary","SelectIcon","ChevronBottom_Stroke2_Corner0_Rounded","size","fill","SelectContent","items","renderItem","valueExtractor","defaultItemValueExtractor","jsxs","Portal","Backdrop","backdrop","View","dropdown","isDark","backgroundSecondary","background","borderLight","bloomShadowStyle","map","item","index","Fragment","SelectItem","isSelected","itemCtx","selected","accessibilityState","checked","primaryLight","ItemContext","SelectItemText","itemText","SelectItemIndicator","icon","IconComponent","CheckIcon","useSelectItemContext","itemIndicatorPlaceholder","itemIndicatorContainer","SelectSeparator","separator","StyleSheet","create","flexDirection","position","alignItems","gap","justifyContent","paddingVertical","paddingHorizontal","borderRadius","maxWidth","borderWidth","borderStyle","fontSize","WEB_POSITION_FIXED","top","left","right","bottom","zIndex","pointerEvents","surface","overflow","padding","minWidth","minHeight","paddingLeft","paddingRight","width","height","marginVertical"],"sourceRoot":"../../../src","sources":["select/index.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_index","_index2","_indexWeb","_zIndex","_webViewStyle","_dropdownPlacement","_shadows","_useInteractionState","_Chevron","_Check","_common","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","selectZIndex","createOverlayZIndex","VIEWPORT_GUTTER","SELECT_OFFSET","SelectContext","createContext","displayName","useSelectContext","ctx","useContext","Error","Select","children","value","onValueChange","disabled","isOpen","setIsOpen","useState","triggerRef","useRef","useMemo","open","close","jsx","Provider","SelectTrigger","label","theme","useTheme","triggerId","useId","state","hovered","onIn","onMouseEnter","onOut","onMouseLeave","useInteractionState","focused","onFocus","onBlur","control","id","ref","current","pressed","props","onPress","accessibilityLabel","Pressable","accessibilityRole","style","styles","trigger","backgroundColor","colors","contrast50","borderColor","primary","SelectValue","extractLabel","placeholder","display","Text","numberOfLines","valueText","color","text","textSecondary","SelectIcon","ChevronBottom_Stroke2_Corner0_Rounded","size","fill","SelectContent","items","renderItem","valueExtractor","defaultItemValueExtractor","position","setPosition","dropdownNode","setDropdownNode","attachDropdown","useCallback","node","useLayoutEffect","window","triggerNode","getBoundingClientRect","updatePosition","rect","surface","width","Math","max","WEB_POSITION_FIXED","resolveDropdownPlacement","anchor","height","viewport","innerWidth","innerHeight","offset","gutter","align","minWidth","addEventListener","removeEventListener","jsxs","Portal","Backdrop","backdrop","View","dropdown","isDark","backgroundSecondary","background","borderLight","bloomShadowStyle","map","item","index","Fragment","SelectItem","isSelected","itemCtx","selected","accessibilityState","checked","primaryLight","ItemContext","SelectItemText","itemText","SelectItemIndicator","icon","IconComponent","CheckIcon","useSelectItemContext","itemIndicatorPlaceholder","itemIndicatorContainer","SelectSeparator","separator","StyleSheet","create","flexDirection","alignItems","gap","justifyContent","paddingVertical","paddingHorizontal","borderRadius","maxWidth","borderWidth","borderStyle","fontSize","top","left","right","bottom","zIndex","pointerEvents","overflow","padding","minHeight","paddingLeft","paddingRight","marginVertical"],"sourceRoot":"../../../src","sources":["select/index.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -4,10 +4,11 @@
4
4
  // is selected by bundlers via the package.json conditions. RN consumers
5
5
  // never need font-face injection — useFonts handles loading on native.
6
6
  //
7
- // The web variant does NOT pull in any `.woff2` files via asset imports —
8
- // it imports base64 data URLs from `font-data.web.ts`. This stub stays
9
- // here so the file split (`*.ts` vs `*.web.ts`) makes the platform
10
- // intent explicit and so the runtime API surface matches across platforms.
7
+ // The split is load-bearing, not decorative: the web variant reaches
8
+ // `font-urls.web.ts`, whose module-level `.woff2` imports would otherwise
9
+ // drag a second, unusable copy of every font into the native bundle
10
+ // (Metro resolves an asset import on native to a registry id, not a URL).
11
+ // Keeping this stub empty is what guarantees native pays nothing for them.
11
12
  export function applyFontFaces() {
12
13
  // intentionally empty
13
14
  }
@@ -1 +1 @@
1
- {"version":3,"names":["applyFontFaces"],"sourceRoot":"../../../src","sources":["fonts/apply-font-faces.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,cAAcA,CAAA,EAAS;EACrC;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["applyFontFaces"],"sourceRoot":"../../../src","sources":["fonts/apply-font-faces.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,cAAcA,CAAA,EAAS;EACrC;AAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { blomusModernusRegular, blomusModernusBold, interVariable, geistMonoVariable } from "./font-data.web.js";
3
+ import { blomusModernusRegular, blomusModernusBold, interVariable, geistMonoVariable } from "./font-urls.web.js";
4
4
  import { fontFamilies } from "./tokens.js";
5
5
  const STYLE_ID = 'bloom-fonts';
6
6
 
@@ -8,18 +8,16 @@ const STYLE_ID = 'bloom-fonts';
8
8
  * Inject @font-face rules and font CSS variables onto :root.
9
9
  *
10
10
  * Web-only. The native counterpart in `apply-font-faces.ts` is a no-op
11
- * stub — Metro cannot parse `.woff2` imports, so the file split keeps
12
- * the font payload out of the native bundle entirely. Idempotent: safe to
13
- * call multiple times; subsequent calls early-return after the
14
- * `<style id="bloom-fonts">` tag has been mounted. SSR-safe via the
15
- * `typeof document === 'undefined'` guard.
11
+ * stub — native loads its fonts through `useFonts(FONT_ASSETS)`, so the file
12
+ * split keeps the web font payload out of the native bundle entirely.
13
+ * Idempotent: safe to call multiple times; subsequent calls early-return
14
+ * after the `<style id="bloom-fonts">` tag has been mounted. SSR-safe via
15
+ * the `typeof document === 'undefined'` guard.
16
16
  *
17
- * The font URLs come from `./font-data.web`, a generated module that
18
- * embeds the woff2 bytes as base64 data URLs. Inlining (rather than
19
- * relying on bundler asset loaders for `.woff2`) means consumers do not
20
- * have to extend Metro's `assetExts` or add a webpack/Vite asset rule —
21
- * the published JS is self-contained. See `scripts/generate-font-data.mjs`
22
- * for the rationale and trade-offs.
17
+ * The URLs come from `./font-urls.web`, which imports the `.woff2` files so
18
+ * the consuming bundler emits them as separate, cacheable assets. See that
19
+ * module for the per-bundler details and for the one thing a consumer has to
20
+ * provide (Metro needs `woff2` in `assetExts`).
23
21
  */
24
22
  export function applyFontFaces() {
25
23
  if (typeof document === 'undefined') return;
@@ -27,10 +25,10 @@ export function applyFontFaces() {
27
25
  const style = document.createElement('style');
28
26
  style.id = STYLE_ID;
29
27
  style.textContent = `
30
- @font-face { font-family: 'BlomusModernus'; src: url(${blomusModernusRegular}) format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
31
- @font-face { font-family: 'BlomusModernus'; src: url(${blomusModernusBold}) format('woff2'); font-weight: 700; font-style: normal; font-display: swap; }
32
- @font-face { font-family: 'Inter'; src: url(${interVariable}) format('woff2-variations'); font-weight: 100 900; font-style: normal; font-display: swap; }
33
- @font-face { font-family: 'Geist Mono'; src: url(${geistMonoVariable}) format('woff2-variations'); font-weight: 100 900; font-style: normal; font-display: swap; }
28
+ @font-face { font-family: 'BlomusModernus'; src: url("${blomusModernusRegular}") format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
29
+ @font-face { font-family: 'BlomusModernus'; src: url("${blomusModernusBold}") format('woff2'); font-weight: 700; font-style: normal; font-display: swap; }
30
+ @font-face { font-family: 'Inter'; src: url("${interVariable}") format('woff2-variations'); font-weight: 100 900; font-style: normal; font-display: swap; }
31
+ @font-face { font-family: 'Geist Mono'; src: url("${geistMonoVariable}") format('woff2-variations'); font-weight: 100 900; font-style: normal; font-display: swap; }
34
32
  :root {
35
33
  --bloom-font-display: ${fontFamilies.display};
36
34
  --bloom-font-sans: ${fontFamilies.sans};
@@ -1 +1 @@
1
- {"version":3,"names":["blomusModernusRegular","blomusModernusBold","interVariable","geistMonoVariable","fontFamilies","STYLE_ID","applyFontFaces","document","getElementById","style","createElement","id","textContent","display","sans","mono","head","appendChild"],"sourceRoot":"../../../src","sources":["fonts/apply-font-faces.web.ts"],"mappings":";;AAAA,SACEA,qBAAqB,EACrBC,kBAAkB,EAClBC,aAAa,EACbC,iBAAiB,QACZ,oBAAiB;AACxB,SAASC,YAAY,QAAQ,aAAU;AAEvC,MAAMC,QAAQ,GAAG,aAAa;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAA,EAAS;EACrC,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;EACrC,IAAIA,QAAQ,CAACC,cAAc,CAACH,QAAQ,CAAC,EAAE;EAEvC,MAAMI,KAAK,GAAGF,QAAQ,CAACG,aAAa,CAAC,OAAO,CAAC;EAC7CD,KAAK,CAACE,EAAE,GAAGN,QAAQ;EACnBI,KAAK,CAACG,WAAW,GAAG;AACtB,2DAA2DZ,qBAAqB;AAChF,2DAA2DC,kBAAkB;AAC7E,kDAAkDC,aAAa;AAC/D,uDAAuDC,iBAAiB;AACxE;AACA,8BAA8BC,YAAY,CAACS,OAAO;AAClD,2BAA2BT,YAAY,CAACU,IAAI;AAC5C,2BAA2BV,YAAY,CAACW,IAAI;AAC5C;AACA,GAAG;EACDR,QAAQ,CAACS,IAAI,CAACC,WAAW,CAACR,KAAK,CAAC;AAClC","ignoreList":[]}
1
+ {"version":3,"names":["blomusModernusRegular","blomusModernusBold","interVariable","geistMonoVariable","fontFamilies","STYLE_ID","applyFontFaces","document","getElementById","style","createElement","id","textContent","display","sans","mono","head","appendChild"],"sourceRoot":"../../../src","sources":["fonts/apply-font-faces.web.ts"],"mappings":";;AAAA,SACEA,qBAAqB,EACrBC,kBAAkB,EAClBC,aAAa,EACbC,iBAAiB,QACZ,oBAAiB;AACxB,SAASC,YAAY,QAAQ,aAAU;AAEvC,MAAMC,QAAQ,GAAG,aAAa;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAA,EAAS;EACrC,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;EACrC,IAAIA,QAAQ,CAACC,cAAc,CAACH,QAAQ,CAAC,EAAE;EAEvC,MAAMI,KAAK,GAAGF,QAAQ,CAACG,aAAa,CAAC,OAAO,CAAC;EAC7CD,KAAK,CAACE,EAAE,GAAGN,QAAQ;EACnBI,KAAK,CAACG,WAAW,GAAG;AACtB,4DAA4DZ,qBAAqB;AACjF,4DAA4DC,kBAAkB;AAC9E,mDAAmDC,aAAa;AAChE,wDAAwDC,iBAAiB;AACzE;AACA,8BAA8BC,YAAY,CAACS,OAAO;AAClD,2BAA2BT,YAAY,CAACU,IAAI;AAC5C,2BAA2BV,YAAY,CAACW,IAAI;AAC5C;AACA,GAAG;EACDR,QAAQ,CAACS,IAAI,CAACC,WAAW,CAACR,KAAK,CAAC;AAClC","ignoreList":[]}
@@ -4,8 +4,9 @@
4
4
  //
5
5
  // `useFonts()` is native-only — the web `FontLoader` (`FontLoader.tsx`) calls
6
6
  // `applyFontFaces()` instead, which injects the same four families as
7
- // `@font-face` rules from base64 data URLs (`apply-font-faces.web.ts` /
8
- // `font-data.web.ts`). So the map is empty by design, not by omission.
7
+ // `@font-face` rules pointing at bundler-emitted `.woff2` URLs
8
+ // (`apply-font-faces.web.ts` / `font-urls.web.ts`). So the map is empty by
9
+ // design, not by omission.
9
10
  //
10
11
  // This file exists so `index.web.ts` can name its font-asset source
11
12
  // explicitly, exactly as it already does for `./apply-font-faces.web`. The
@@ -1 +1 @@
1
- {"version":3,"names":["FONT_ASSETS"],"sourceRoot":"../../../src","sources":["fonts/font-assets.web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAO,MAAMA,WAAyB,GAAG,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["FONT_ASSETS"],"sourceRoot":"../../../src","sources":["fonts/font-assets.web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAO,MAAMA,WAAyB,GAAG,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ // Web font URLs, resolved by whatever bundler is building the consuming app.
4
+ //
5
+ // WEB-ONLY. Each import below hands the `.woff2` to the app's asset pipeline,
6
+ // which emits it as a standalone file and gives us back its URL:
7
+ //
8
+ // - Metro (Expo web) rewrites the import to the exported asset path — its
9
+ // asset transformer emits a bare string module whenever the platform is
10
+ // `web`, so the imported value is the URL itself, not an asset id.
11
+ // - Vite, Rollup and webpack 5 resolve it through their own asset handling
12
+ // and return a content-hashed URL.
13
+ //
14
+ // Either way the browser fetches the four families alongside the JS and caches
15
+ // them under their own URLs, instead of re-parsing ~310 KB of base64 out of the
16
+ // entry bundle on every cold load. No consumer ever writes an asset filename
17
+ // down, so a font swap here cannot leave a downstream app pointing at a file
18
+ // that no longer exists.
19
+ //
20
+ // Metro does not carry `woff2` in its default `assetExts`, so a consumer
21
+ // bundling for web with Metro has to register it; `@oxyhq/app-preset`'s Metro
22
+ // base already does that for every Oxy app.
23
+ //
24
+ // Native never reaches this module. The default `apply-font-faces.ts` is a
25
+ // no-op stub and `FontLoader.native.tsx` loads the `.ttf` variants through
26
+ // `useFonts` instead, so no web font bytes enter a native bundle.
27
+ import blomusModernusBold from './assets/BlomusModernus-Bold.woff2';
28
+ import blomusModernusRegular from './assets/BlomusModernus-Regular.woff2';
29
+ import geistMonoVariable from './assets/GeistMono-Variable.woff2';
30
+ import interVariable from './assets/InterVariable.woff2';
31
+ export { blomusModernusRegular, blomusModernusBold, interVariable, geistMonoVariable };
32
+ //# sourceMappingURL=font-urls.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["blomusModernusBold","blomusModernusRegular","geistMonoVariable","interVariable"],"sourceRoot":"../../../src","sources":["fonts/font-urls.web.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,kBAAkB,MAAM,oCAAoC;AACnE,OAAOC,qBAAqB,MAAM,uCAAuC;AACzE,OAAOC,iBAAiB,MAAM,mCAAmC;AACjE,OAAOC,aAAa,MAAM,8BAA8B;AAExD,SAASF,qBAAqB,EAAED,kBAAkB,EAAEG,aAAa,EAAED,iBAAiB","ignoreList":[]}
@@ -8,9 +8,9 @@
8
8
  // of the box), so an extensionless specifier here would quietly fall through
9
9
  // to the default file.
10
10
  //
11
- // - `./apply-font-faces.web` performs the real `@font-face` injection using
12
- // inlined base64 data URLs (see `font-data.web.ts`); the default
13
- // `./apply-font-faces` is a no-op stub for native.
11
+ // - `./apply-font-faces.web` performs the real `@font-face` injection against
12
+ // the `.woff2` URLs the consuming bundler emits (see `font-urls.web.ts`);
13
+ // the default `./apply-font-faces` is a no-op stub for native.
14
14
  // - `./font-assets.web` is an empty map. The native map is built from Metro
15
15
  // asset `require()` calls, and importing it from an ES module throws
16
16
  // `ReferenceError: require is not defined` during module evaluation — which