@oxyhq/bloom 0.12.0 → 0.12.1

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.
@@ -11,10 +11,13 @@ var _usePressAnimation = require("../hooks/usePressAnimation.js");
11
11
  var _useInteractionState = require("../hooks/useInteractionState.js");
12
12
  var _jsxRuntime = require("react/jsx-runtime");
13
13
  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); }
14
+ // Material-style FAB scale. `small` (40px, the compact FAB Mention uses) keeps a
15
+ // full 24px icon box so the glyph reads clearly; `medium` (56px) is the
16
+ // canonical FAB; `large` (64px) is the high-prominence action.
14
17
  const SIZE_CONFIG = {
15
18
  small: {
16
19
  diameter: 40,
17
- iconBox: 20,
20
+ iconBox: 24,
18
21
  fontSize: 14
19
22
  },
20
23
  medium: {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_usePressAnimation","_useInteractionState","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SIZE_CONFIG","small","diameter","iconBox","fontSize","medium","large","PILL_RADIUS","PRESS_SCALE","DEFAULT_OFFSET","DEFAULT_Z_INDEX","HIT_SLOP","top","bottom","left","right","placementStyle","placement","offset","style","position","FabComponent","onPress","icon","children","label","variant","size","disabled","accessibilityLabel","accessibilityHint","labelStyle","className","testID","zIndex","theme","useTheme","sizeConfig","isExtended","length","content","scaleAnim","onPressIn","onPressOut","usePressAnimation","undefined","state","pressed","onIn","onPressedIn","onOut","onPressedOut","useInteractionState","resolvedColors","useMemo","resolveVariant","colors","containerStyle","base","alignItems","justifyContent","flexDirection","backgroundColor","background","borderRadius","height","shadowColor","shadow","shadowOffset","width","shadowOpacity","shadowRadius","elevation","paddingHorizontal","gap","labelTextStyle","fontWeight","color","foreground","handlePressIn","handlePressOut","jsx","Animated","View","transform","scale","jsxs","Pressable","opacity","hitSlop","accessibilityRole","accessibilityState","Text","numberOfLines","card","text","primary","primaryForeground","Fab","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["fab/Fab.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_usePressAnimation","_useInteractionState","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SIZE_CONFIG","small","diameter","iconBox","fontSize","medium","large","PILL_RADIUS","PRESS_SCALE","DEFAULT_OFFSET","DEFAULT_Z_INDEX","HIT_SLOP","top","bottom","left","right","placementStyle","placement","offset","style","position","FabComponent","onPress","icon","children","label","variant","size","disabled","accessibilityLabel","accessibilityHint","labelStyle","className","testID","zIndex","theme","useTheme","sizeConfig","isExtended","length","content","scaleAnim","onPressIn","onPressOut","usePressAnimation","undefined","state","pressed","onIn","onPressedIn","onOut","onPressedOut","useInteractionState","resolvedColors","useMemo","resolveVariant","colors","containerStyle","base","alignItems","justifyContent","flexDirection","backgroundColor","background","borderRadius","height","shadowColor","shadow","shadowOffset","width","shadowOpacity","shadowRadius","elevation","paddingHorizontal","gap","labelTextStyle","fontWeight","color","foreground","handlePressIn","handlePressOut","jsx","Animated","View","transform","scale","jsxs","Pressable","opacity","hitSlop","accessibilityRole","accessibilityState","Text","numberOfLines","card","text","primary","primaryForeground","Fab","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["fab/Fab.tsx"],"mappings":"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","ignoreList":[]}
@@ -8,10 +8,13 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _useTheme = require("../theme/use-theme.js");
9
9
  var _jsxRuntime = require("react/jsx-runtime");
10
10
  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); }
11
+ // Material-style FAB scale. `small` (40px, the compact FAB Mention uses) keeps a
12
+ // full 24px icon box so the glyph reads clearly; `medium` (56px) is the
13
+ // canonical FAB; `large` (64px) is the high-prominence action.
11
14
  const SIZE_CONFIG = {
12
15
  small: {
13
16
  diameter: 40,
14
- iconBox: 20,
17
+ iconBox: 24,
15
18
  fontSize: 14
16
19
  },
17
20
  medium: {
@@ -95,26 +98,37 @@ function useFabCss() {
95
98
  * CENTRAL CONTENT COLUMN as it scrolls and never escapes to the viewport edge /
96
99
  * over a side rail in a constrained multi-column app layout.
97
100
  *
98
- * To pin a sticky element to the BOTTOM of a column it must sit at the end of
99
- * the scroll content with `align-self: flex-end` (consumer column should be a
100
- * flex column) — documented in the component's usage story. We set `bottom`
101
- * and a self-alignment so the common case works with zero consumer CSS beyond a
102
- * `flex-col` column.
101
+ * Pinning a FAB to the BOTTOM of a column needs TWO mechanisms working together,
102
+ * because sticky alone is not enough:
103
+ *
104
+ * 1. `margin-top: auto` in a flex COLUMN this consumes all the free vertical
105
+ * space, pushing the FAB to the bottom of the container EVEN WHEN THE
106
+ * CONTENT IS SHORT (e.g. an empty feed / loading spinner). Without it, a
107
+ * short column leaves the FAB at its natural flow position (mid-column) —
108
+ * which is exactly the "floating in the middle / broken" bug.
109
+ * 2. `position: sticky; bottom` — when the content is TALL and the column
110
+ * scrolls, sticky keeps the FAB pinned to the bottom of the viewport as the
111
+ * user scrolls, instead of scrolling away with the content.
112
+ *
113
+ * Horizontal placement uses `align-self` (sticky elements can't be pushed by
114
+ * `left`/`right` the way absolute ones are) plus an inline-edge margin for the
115
+ * `offset`. The consumer column MUST be a flex column that fills the available
116
+ * height, and the FAB MUST be its last child — documented in the usage story.
103
117
  */
104
118
  function placementStyle(placement, offset) {
105
119
  if (placement === 'static') return {};
106
120
  const style = {
107
121
  position: 'sticky'
108
122
  };
109
- if (placement === 'bottom-right' || placement === 'bottom-left') {
123
+ const isBottom = placement === 'bottom-right' || placement === 'bottom-left';
124
+ if (isBottom) {
110
125
  style.bottom = offset;
126
+ // Push the FAB to the bottom of a (flex-column) container even when the
127
+ // content is too short to scroll, so it never floats mid-column.
128
+ style.marginTop = 'auto';
111
129
  } else {
112
130
  style.top = offset;
113
131
  }
114
- // Sticky elements can't be pushed horizontally by left/right the way absolute
115
- // ones are; we self-align within the (flex column) container instead, and add
116
- // a horizontal margin for the offset so the FAB sits `offset` px from the
117
- // column's inline edge.
118
132
  if (placement === 'bottom-right' || placement === 'top-right') {
119
133
  style.alignSelf = 'flex-end';
120
134
  style.marginRight = offset;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_useTheme","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SIZE_CONFIG","small","diameter","iconBox","fontSize","medium","large","PILL_RADIUS","PRESS_SCALE","DEFAULT_OFFSET","DEFAULT_Z_INDEX","STYLE_ID","BLOOM_FAB_CSS","useFabCss","useEffect","document","getElementById","style","createElement","id","textContent","head","appendChild","placementStyle","placement","offset","position","bottom","top","alignSelf","marginRight","marginLeft","resolveVariant","variant","c","background","card","foreground","text","ring","primary","primaryForeground","FabWebComponent","onPress","onClick","icon","children","label","size","disabled","accessibilityLabel","ariaLabelProp","accessibilityHint","labelStyle","className","testID","zIndex","title","type","theme","useTheme","reactId","useId","resolvedId","sizeConfig","isExtended","length","content","variantColors","useMemo","colors","restShadow","shadow","hoverShadow","containerStyle","base","backgroundColor","color","borderRadius","height","boxShadow","fontWeight","paddingLeft","paddingRight","width","handleClick","useCallback","event","preventDefault","ariaLabel","composedClassName","concat","join","jsxs","undefined","jsx","display","alignItems","justifyContent","Fab","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["fab/Fab.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_useTheme","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SIZE_CONFIG","small","diameter","iconBox","fontSize","medium","large","PILL_RADIUS","PRESS_SCALE","DEFAULT_OFFSET","DEFAULT_Z_INDEX","STYLE_ID","BLOOM_FAB_CSS","useFabCss","useEffect","document","getElementById","style","createElement","id","textContent","head","appendChild","placementStyle","placement","offset","position","isBottom","bottom","marginTop","top","alignSelf","marginRight","marginLeft","resolveVariant","variant","c","background","card","foreground","text","ring","primary","primaryForeground","FabWebComponent","onPress","onClick","icon","children","label","size","disabled","accessibilityLabel","ariaLabelProp","accessibilityHint","labelStyle","className","testID","zIndex","title","type","theme","useTheme","reactId","useId","resolvedId","sizeConfig","isExtended","length","content","variantColors","useMemo","colors","restShadow","shadow","hoverShadow","containerStyle","base","backgroundColor","color","borderRadius","height","boxShadow","fontWeight","paddingLeft","paddingRight","width","handleClick","useCallback","event","preventDefault","ariaLabel","composedClassName","concat","join","jsxs","undefined","jsx","display","alignItems","justifyContent","Fab","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["fab/Fab.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -6,10 +6,13 @@ import { useTheme } from "../theme/use-theme.js";
6
6
  import { usePressAnimation } from "../hooks/usePressAnimation.js";
7
7
  import { useInteractionState } from "../hooks/useInteractionState.js";
8
8
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ // Material-style FAB scale. `small` (40px, the compact FAB Mention uses) keeps a
10
+ // full 24px icon box so the glyph reads clearly; `medium` (56px) is the
11
+ // canonical FAB; `large` (64px) is the high-prominence action.
9
12
  const SIZE_CONFIG = {
10
13
  small: {
11
14
  diameter: 40,
12
- iconBox: 20,
15
+ iconBox: 24,
13
16
  fontSize: 14
14
17
  },
15
18
  medium: {
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","useMemo","Animated","Pressable","Text","View","useTheme","usePressAnimation","useInteractionState","jsx","_jsx","jsxs","_jsxs","SIZE_CONFIG","small","diameter","iconBox","fontSize","medium","large","PILL_RADIUS","PRESS_SCALE","DEFAULT_OFFSET","DEFAULT_Z_INDEX","HIT_SLOP","top","bottom","left","right","placementStyle","placement","offset","style","position","FabComponent","onPress","icon","children","label","variant","size","disabled","accessibilityLabel","accessibilityHint","labelStyle","className","testID","zIndex","theme","sizeConfig","isExtended","length","content","scaleAnim","onPressIn","onPressOut","undefined","state","pressed","onIn","onPressedIn","onOut","onPressedOut","resolvedColors","resolveVariant","colors","containerStyle","base","alignItems","justifyContent","flexDirection","backgroundColor","background","borderRadius","height","shadowColor","shadow","shadowOffset","width","shadowOpacity","shadowRadius","elevation","paddingHorizontal","gap","labelTextStyle","fontWeight","color","foreground","handlePressIn","handlePressOut","transform","scale","opacity","hitSlop","accessibilityRole","accessibilityState","numberOfLines","card","text","primary","primaryForeground","Fab","displayName"],"sourceRoot":"../../../src","sources":["fab/Fab.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","memo","useMemo","Animated","Pressable","Text","View","useTheme","usePressAnimation","useInteractionState","jsx","_jsx","jsxs","_jsxs","SIZE_CONFIG","small","diameter","iconBox","fontSize","medium","large","PILL_RADIUS","PRESS_SCALE","DEFAULT_OFFSET","DEFAULT_Z_INDEX","HIT_SLOP","top","bottom","left","right","placementStyle","placement","offset","style","position","FabComponent","onPress","icon","children","label","variant","size","disabled","accessibilityLabel","accessibilityHint","labelStyle","className","testID","zIndex","theme","sizeConfig","isExtended","length","content","scaleAnim","onPressIn","onPressOut","undefined","state","pressed","onIn","onPressedIn","onOut","onPressedOut","resolvedColors","resolveVariant","colors","containerStyle","base","alignItems","justifyContent","flexDirection","backgroundColor","background","borderRadius","height","shadowColor","shadow","shadowOffset","width","shadowOpacity","shadowRadius","elevation","paddingHorizontal","gap","labelTextStyle","fontWeight","color","foreground","handlePressIn","handlePressOut","transform","scale","opacity","hitSlop","accessibilityRole","accessibilityState","numberOfLines","card","text","primary","primaryForeground","Fab","displayName"],"sourceRoot":"../../../src","sources":["fab/Fab.tsx"],"mappings":"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","ignoreList":[]}
@@ -3,10 +3,13 @@
3
3
  import React, { memo, useCallback, useEffect, useId, useMemo } from 'react';
4
4
  import { useTheme } from "../theme/use-theme.js";
5
5
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
+ // Material-style FAB scale. `small` (40px, the compact FAB Mention uses) keeps a
7
+ // full 24px icon box so the glyph reads clearly; `medium` (56px) is the
8
+ // canonical FAB; `large` (64px) is the high-prominence action.
6
9
  const SIZE_CONFIG = {
7
10
  small: {
8
11
  diameter: 40,
9
- iconBox: 20,
12
+ iconBox: 24,
10
13
  fontSize: 14
11
14
  },
12
15
  medium: {
@@ -90,26 +93,37 @@ function useFabCss() {
90
93
  * CENTRAL CONTENT COLUMN as it scrolls and never escapes to the viewport edge /
91
94
  * over a side rail in a constrained multi-column app layout.
92
95
  *
93
- * To pin a sticky element to the BOTTOM of a column it must sit at the end of
94
- * the scroll content with `align-self: flex-end` (consumer column should be a
95
- * flex column) — documented in the component's usage story. We set `bottom`
96
- * and a self-alignment so the common case works with zero consumer CSS beyond a
97
- * `flex-col` column.
96
+ * Pinning a FAB to the BOTTOM of a column needs TWO mechanisms working together,
97
+ * because sticky alone is not enough:
98
+ *
99
+ * 1. `margin-top: auto` in a flex COLUMN this consumes all the free vertical
100
+ * space, pushing the FAB to the bottom of the container EVEN WHEN THE
101
+ * CONTENT IS SHORT (e.g. an empty feed / loading spinner). Without it, a
102
+ * short column leaves the FAB at its natural flow position (mid-column) —
103
+ * which is exactly the "floating in the middle / broken" bug.
104
+ * 2. `position: sticky; bottom` — when the content is TALL and the column
105
+ * scrolls, sticky keeps the FAB pinned to the bottom of the viewport as the
106
+ * user scrolls, instead of scrolling away with the content.
107
+ *
108
+ * Horizontal placement uses `align-self` (sticky elements can't be pushed by
109
+ * `left`/`right` the way absolute ones are) plus an inline-edge margin for the
110
+ * `offset`. The consumer column MUST be a flex column that fills the available
111
+ * height, and the FAB MUST be its last child — documented in the usage story.
98
112
  */
99
113
  function placementStyle(placement, offset) {
100
114
  if (placement === 'static') return {};
101
115
  const style = {
102
116
  position: 'sticky'
103
117
  };
104
- if (placement === 'bottom-right' || placement === 'bottom-left') {
118
+ const isBottom = placement === 'bottom-right' || placement === 'bottom-left';
119
+ if (isBottom) {
105
120
  style.bottom = offset;
121
+ // Push the FAB to the bottom of a (flex-column) container even when the
122
+ // content is too short to scroll, so it never floats mid-column.
123
+ style.marginTop = 'auto';
106
124
  } else {
107
125
  style.top = offset;
108
126
  }
109
- // Sticky elements can't be pushed horizontally by left/right the way absolute
110
- // ones are; we self-align within the (flex column) container instead, and add
111
- // a horizontal margin for the offset so the FAB sits `offset` px from the
112
- // column's inline edge.
113
127
  if (placement === 'bottom-right' || placement === 'top-right') {
114
128
  style.alignSelf = 'flex-end';
115
129
  style.marginRight = offset;
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","useCallback","useEffect","useId","useMemo","useTheme","jsx","_jsx","jsxs","_jsxs","SIZE_CONFIG","small","diameter","iconBox","fontSize","medium","large","PILL_RADIUS","PRESS_SCALE","DEFAULT_OFFSET","DEFAULT_Z_INDEX","STYLE_ID","BLOOM_FAB_CSS","useFabCss","document","getElementById","style","createElement","id","textContent","head","appendChild","placementStyle","placement","offset","position","bottom","top","alignSelf","marginRight","marginLeft","resolveVariant","variant","c","background","card","foreground","text","ring","primary","primaryForeground","FabWebComponent","onPress","onClick","icon","children","label","size","disabled","accessibilityLabel","ariaLabelProp","accessibilityHint","labelStyle","className","testID","zIndex","title","type","theme","reactId","resolvedId","sizeConfig","isExtended","length","content","variantColors","colors","restShadow","shadow","hoverShadow","containerStyle","base","backgroundColor","color","borderRadius","height","boxShadow","fontWeight","paddingLeft","paddingRight","width","handleClick","event","preventDefault","ariaLabel","composedClassName","concat","join","undefined","display","alignItems","justifyContent","Fab","displayName"],"sourceRoot":"../../../src","sources":["fab/Fab.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","memo","useCallback","useEffect","useId","useMemo","useTheme","jsx","_jsx","jsxs","_jsxs","SIZE_CONFIG","small","diameter","iconBox","fontSize","medium","large","PILL_RADIUS","PRESS_SCALE","DEFAULT_OFFSET","DEFAULT_Z_INDEX","STYLE_ID","BLOOM_FAB_CSS","useFabCss","document","getElementById","style","createElement","id","textContent","head","appendChild","placementStyle","placement","offset","position","isBottom","bottom","marginTop","top","alignSelf","marginRight","marginLeft","resolveVariant","variant","c","background","card","foreground","text","ring","primary","primaryForeground","FabWebComponent","onPress","onClick","icon","children","label","size","disabled","accessibilityLabel","ariaLabelProp","accessibilityHint","labelStyle","className","testID","zIndex","title","type","theme","reactId","resolvedId","sizeConfig","isExtended","length","content","variantColors","colors","restShadow","shadow","hoverShadow","containerStyle","base","backgroundColor","color","borderRadius","height","boxShadow","fontWeight","paddingLeft","paddingRight","width","handleClick","event","preventDefault","ariaLabel","composedClassName","concat","join","undefined","display","alignItems","justifyContent","Fab","displayName"],"sourceRoot":"../../../src","sources":["fab/Fab.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Fab.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAa7C,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA4K3E,eAAO,MAAM,GAAG,sCAAqB,CAAC"}
1
+ {"version":3,"file":"Fab.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAa7C,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA+K3E,eAAO,MAAM,GAAG,sCAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Fab.web.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAkP3E,eAAO,MAAM,GAAG,sCAAwB,CAAC"}
1
+ {"version":3,"file":"Fab.web.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAgQ3E,eAAO,MAAM,GAAG,sCAAwB,CAAC"}
@@ -23,11 +23,14 @@ export type FabSize = 'small' | 'medium' | 'large';
23
23
  * Where the FAB anchors itself.
24
24
  *
25
25
  * - `bottom-right` (default) / `bottom-left` / `top-right` / `top-left` —
26
- * the FAB pins itself to that corner of its CONTAINING block. On web this
27
- * uses `position: sticky` so it tracks the bottom of the scrolling column
28
- * (NOT the viewport edge), which is exactly what a constrained multi-column
29
- * app layout needs. On native it uses `position: absolute` within the
30
- * nearest positioned ancestor.
26
+ * the FAB pins itself to that corner of its CONTAINING block, never the
27
+ * viewport. On native it uses `position: absolute` within the nearest
28
+ * positioned ancestor. On web a `bottom-*` placement combines
29
+ * `margin-top: auto` (pins to the bottom of a flex COLUMN even when the
30
+ * content is short / not scrolling) with `position: sticky; bottom` (keeps
31
+ * it visible while a tall column scrolls). The consumer column MUST be a
32
+ * flex column that fills the available height and the FAB MUST be its last
33
+ * child.
31
34
  * - `static` — no positioning at all. The FAB is laid out inline and the
32
35
  * consumer is fully responsible for placement (e.g. wrapping it in their
33
36
  * own absolutely/sticky-positioned container). Use this when you need
@@ -35,7 +38,8 @@ export type FabSize = 'small' | 'medium' | 'large';
35
38
  *
36
39
  * CRITICAL: the positioned placements DO NOT use web `position: fixed` and are
37
40
  * never anchored to the viewport. They stay inside the containing column so the
38
- * FAB never escapes a constrained 3-column app layout and sits over a side rail.
41
+ * FAB never escapes a constrained 3-column app layout and sits over a side rail,
42
+ * and never float mid-column when the content is short.
39
43
  */
40
44
  export type FabPlacement = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' | 'static';
41
45
  export interface FabProps {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/fab/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,YAAY,GACpB,cAAc,GACd,aAAa,GACb,WAAW,GACX,UAAU,GACV,QAAQ,CAAC;AAEb,MAAM,WAAW,QAAQ;IACvB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;OAIG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC;IAEzB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,8CAA8C;IAC9C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,8CAA8C;IAC9C,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAUhB,wDAAwD;IACxD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC/D,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;CACtC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/fab/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,YAAY,GACpB,cAAc,GACd,aAAa,GACb,WAAW,GACX,UAAU,GACV,QAAQ,CAAC;AAEb,MAAM,WAAW,QAAQ;IACvB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;OAIG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC;IAEzB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,8CAA8C;IAC9C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,8CAA8C;IAC9C,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAUhB,wDAAwD;IACxD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC/D,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;CACtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Fab.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAa7C,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA4K3E,eAAO,MAAM,GAAG,sCAAqB,CAAC"}
1
+ {"version":3,"file":"Fab.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAa7C,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA+K3E,eAAO,MAAM,GAAG,sCAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Fab.web.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAkP3E,eAAO,MAAM,GAAG,sCAAwB,CAAC"}
1
+ {"version":3,"file":"Fab.web.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAgQ3E,eAAO,MAAM,GAAG,sCAAwB,CAAC"}
@@ -23,11 +23,14 @@ export type FabSize = 'small' | 'medium' | 'large';
23
23
  * Where the FAB anchors itself.
24
24
  *
25
25
  * - `bottom-right` (default) / `bottom-left` / `top-right` / `top-left` —
26
- * the FAB pins itself to that corner of its CONTAINING block. On web this
27
- * uses `position: sticky` so it tracks the bottom of the scrolling column
28
- * (NOT the viewport edge), which is exactly what a constrained multi-column
29
- * app layout needs. On native it uses `position: absolute` within the
30
- * nearest positioned ancestor.
26
+ * the FAB pins itself to that corner of its CONTAINING block, never the
27
+ * viewport. On native it uses `position: absolute` within the nearest
28
+ * positioned ancestor. On web a `bottom-*` placement combines
29
+ * `margin-top: auto` (pins to the bottom of a flex COLUMN even when the
30
+ * content is short / not scrolling) with `position: sticky; bottom` (keeps
31
+ * it visible while a tall column scrolls). The consumer column MUST be a
32
+ * flex column that fills the available height and the FAB MUST be its last
33
+ * child.
31
34
  * - `static` — no positioning at all. The FAB is laid out inline and the
32
35
  * consumer is fully responsible for placement (e.g. wrapping it in their
33
36
  * own absolutely/sticky-positioned container). Use this when you need
@@ -35,7 +38,8 @@ export type FabSize = 'small' | 'medium' | 'large';
35
38
  *
36
39
  * CRITICAL: the positioned placements DO NOT use web `position: fixed` and are
37
40
  * never anchored to the viewport. They stay inside the containing column so the
38
- * FAB never escapes a constrained 3-column app layout and sits over a side rail.
41
+ * FAB never escapes a constrained 3-column app layout and sits over a side rail,
42
+ * and never float mid-column when the content is short.
39
43
  */
40
44
  export type FabPlacement = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' | 'static';
41
45
  export interface FabProps {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/fab/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,YAAY,GACpB,cAAc,GACd,aAAa,GACb,WAAW,GACX,UAAU,GACV,QAAQ,CAAC;AAEb,MAAM,WAAW,QAAQ;IACvB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;OAIG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC;IAEzB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,8CAA8C;IAC9C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,8CAA8C;IAC9C,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAUhB,wDAAwD;IACxD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC/D,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;CACtC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/fab/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,YAAY,GACpB,cAAc,GACd,aAAa,GACb,WAAW,GACX,UAAU,GACV,QAAQ,CAAC;AAEb,MAAM,WAAW,QAAQ;IACvB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;OAIG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC;IAEzB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,8CAA8C;IAC9C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,8CAA8C;IAC9C,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAUhB,wDAAwD;IACxD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC/D,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;CACtC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/bloom",
3
- "version": "0.12.0",
3
+ "version": "0.12.1",
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",
@@ -84,10 +84,23 @@ describe('Fab.web', () => {
84
84
  expect(fab.style.alignSelf).toBe('flex-end');
85
85
  });
86
86
 
87
+ it('sets margin-top: auto for bottom placements so a short column pins the FAB to the bottom', () => {
88
+ const c = mount(<Fab accessibilityLabel="Add" icon={<span>+</span>} />);
89
+ expect(getByRole(c, 'button').style.marginTop).toBe('auto');
90
+ });
91
+
92
+ it('does NOT set margin-top: auto for top placements', () => {
93
+ const c = mount(<Fab accessibilityLabel="Add" placement="top-right" icon={<span>+</span>} />);
94
+ const fab = getByRole(c, 'button');
95
+ expect(fab.style.marginTop).toBe('');
96
+ expect(fab.style.top).toBe('16px');
97
+ });
98
+
87
99
  it('applies no positioning for placement="static"', () => {
88
100
  const c = mount(<Fab accessibilityLabel="Add" placement="static" icon={<span>+</span>} />);
89
101
  const fab = getByRole(c, 'button');
90
102
  expect(fab.style.position).toBe('');
103
+ expect(fab.style.marginTop).toBe('');
91
104
  });
92
105
 
93
106
  it('renders an extended label', () => {
package/src/fab/Fab.tsx CHANGED
@@ -15,8 +15,11 @@ import type { FabPlacement, FabProps, FabSize, FabVariant } from './types';
15
15
 
16
16
  export type { FabProps, FabVariant, FabSize, FabPlacement } from './types';
17
17
 
18
+ // Material-style FAB scale. `small` (40px, the compact FAB Mention uses) keeps a
19
+ // full 24px icon box so the glyph reads clearly; `medium` (56px) is the
20
+ // canonical FAB; `large` (64px) is the high-prominence action.
18
21
  const SIZE_CONFIG: Record<FabSize, { diameter: number; iconBox: number; fontSize: number }> = {
19
- small: { diameter: 40, iconBox: 20, fontSize: 14 },
22
+ small: { diameter: 40, iconBox: 24, fontSize: 14 },
20
23
  medium: { diameter: 56, iconBox: 24, fontSize: 15 },
21
24
  large: { diameter: 64, iconBox: 28, fontSize: 16 },
22
25
  };
@@ -14,8 +14,11 @@ import type { FabPlacement, FabProps, FabSize, FabVariant } from './types';
14
14
 
15
15
  export type { FabProps, FabVariant, FabSize, FabPlacement } from './types';
16
16
 
17
+ // Material-style FAB scale. `small` (40px, the compact FAB Mention uses) keeps a
18
+ // full 24px icon box so the glyph reads clearly; `medium` (56px) is the
19
+ // canonical FAB; `large` (64px) is the high-prominence action.
17
20
  const SIZE_CONFIG: Record<FabSize, { diameter: number; iconBox: number; fontSize: number }> = {
18
- small: { diameter: 40, iconBox: 20, fontSize: 14 },
21
+ small: { diameter: 40, iconBox: 24, fontSize: 14 },
19
22
  medium: { diameter: 56, iconBox: 24, fontSize: 15 },
20
23
  large: { diameter: 64, iconBox: 28, fontSize: 16 },
21
24
  };
@@ -92,24 +95,35 @@ function useFabCss(): void {
92
95
  * CENTRAL CONTENT COLUMN as it scrolls and never escapes to the viewport edge /
93
96
  * over a side rail in a constrained multi-column app layout.
94
97
  *
95
- * To pin a sticky element to the BOTTOM of a column it must sit at the end of
96
- * the scroll content with `align-self: flex-end` (consumer column should be a
97
- * flex column) — documented in the component's usage story. We set `bottom`
98
- * and a self-alignment so the common case works with zero consumer CSS beyond a
99
- * `flex-col` column.
98
+ * Pinning a FAB to the BOTTOM of a column needs TWO mechanisms working together,
99
+ * because sticky alone is not enough:
100
+ *
101
+ * 1. `margin-top: auto` in a flex COLUMN this consumes all the free vertical
102
+ * space, pushing the FAB to the bottom of the container EVEN WHEN THE
103
+ * CONTENT IS SHORT (e.g. an empty feed / loading spinner). Without it, a
104
+ * short column leaves the FAB at its natural flow position (mid-column) —
105
+ * which is exactly the "floating in the middle / broken" bug.
106
+ * 2. `position: sticky; bottom` — when the content is TALL and the column
107
+ * scrolls, sticky keeps the FAB pinned to the bottom of the viewport as the
108
+ * user scrolls, instead of scrolling away with the content.
109
+ *
110
+ * Horizontal placement uses `align-self` (sticky elements can't be pushed by
111
+ * `left`/`right` the way absolute ones are) plus an inline-edge margin for the
112
+ * `offset`. The consumer column MUST be a flex column that fills the available
113
+ * height, and the FAB MUST be its last child — documented in the usage story.
100
114
  */
101
115
  function placementStyle(placement: FabPlacement, offset: number): CSSProperties {
102
116
  if (placement === 'static') return {};
103
117
  const style: CSSProperties = { position: 'sticky' };
104
- if (placement === 'bottom-right' || placement === 'bottom-left') {
118
+ const isBottom = placement === 'bottom-right' || placement === 'bottom-left';
119
+ if (isBottom) {
105
120
  style.bottom = offset;
121
+ // Push the FAB to the bottom of a (flex-column) container even when the
122
+ // content is too short to scroll, so it never floats mid-column.
123
+ style.marginTop = 'auto';
106
124
  } else {
107
125
  style.top = offset;
108
126
  }
109
- // Sticky elements can't be pushed horizontally by left/right the way absolute
110
- // ones are; we self-align within the (flex column) container instead, and add
111
- // a horizontal margin for the offset so the FAB sits `offset` px from the
112
- // column's inline edge.
113
127
  if (placement === 'bottom-right' || placement === 'top-right') {
114
128
  style.alignSelf = 'flex-end';
115
129
  style.marginRight = offset;
package/src/fab/types.ts CHANGED
@@ -26,11 +26,14 @@ export type FabSize = 'small' | 'medium' | 'large';
26
26
  * Where the FAB anchors itself.
27
27
  *
28
28
  * - `bottom-right` (default) / `bottom-left` / `top-right` / `top-left` —
29
- * the FAB pins itself to that corner of its CONTAINING block. On web this
30
- * uses `position: sticky` so it tracks the bottom of the scrolling column
31
- * (NOT the viewport edge), which is exactly what a constrained multi-column
32
- * app layout needs. On native it uses `position: absolute` within the
33
- * nearest positioned ancestor.
29
+ * the FAB pins itself to that corner of its CONTAINING block, never the
30
+ * viewport. On native it uses `position: absolute` within the nearest
31
+ * positioned ancestor. On web a `bottom-*` placement combines
32
+ * `margin-top: auto` (pins to the bottom of a flex COLUMN even when the
33
+ * content is short / not scrolling) with `position: sticky; bottom` (keeps
34
+ * it visible while a tall column scrolls). The consumer column MUST be a
35
+ * flex column that fills the available height and the FAB MUST be its last
36
+ * child.
34
37
  * - `static` — no positioning at all. The FAB is laid out inline and the
35
38
  * consumer is fully responsible for placement (e.g. wrapping it in their
36
39
  * own absolutely/sticky-positioned container). Use this when you need
@@ -38,7 +41,8 @@ export type FabSize = 'small' | 'medium' | 'large';
38
41
  *
39
42
  * CRITICAL: the positioned placements DO NOT use web `position: fixed` and are
40
43
  * never anchored to the viewport. They stay inside the containing column so the
41
- * FAB never escapes a constrained 3-column app layout and sits over a side rail.
44
+ * FAB never escapes a constrained 3-column app layout and sits over a side rail,
45
+ * and never float mid-column when the content is short.
42
46
  */
43
47
  export type FabPlacement =
44
48
  | 'bottom-right'