@tinybigui/react 0.5.0 → 0.6.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.
package/dist/index.js CHANGED
@@ -1705,232 +1705,273 @@ var FABHeadless = forwardRef(
1705
1705
  type,
1706
1706
  "aria-label": ariaLabel,
1707
1707
  title,
1708
- ...props
1708
+ ...restProps
1709
1709
  }, forwardedRef) => {
1710
1710
  const internalRef = useRef(null);
1711
1711
  const ref = forwardedRef ?? internalRef;
1712
1712
  const { buttonProps } = useButton(
1713
1713
  {
1714
- ...props,
1714
+ ...restProps,
1715
1715
  elementType: "button"
1716
1716
  },
1717
1717
  ref
1718
1718
  );
1719
- const domProps = filterDOMProps(props);
1720
- const mergedProps = mergeProps(buttonProps, domProps, {
1721
- tabIndex,
1722
- className,
1723
- onMouseDown,
1724
- type: type ?? "button",
1725
- "aria-label": ariaLabel,
1726
- // Add aria-label
1727
- // Add title if provided
1728
- ...title && { title }
1729
- });
1719
+ const {
1720
+ isDisabled: _isDisabled,
1721
+ onPress: _onPress,
1722
+ onPressStart: _onPressStart,
1723
+ onPressEnd: _onPressEnd,
1724
+ onPressChange: _onPressChange,
1725
+ onPressUp: _onPressUp,
1726
+ ...htmlAttrs
1727
+ } = restProps;
1728
+ const mergedProps = mergeProps(
1729
+ buttonProps,
1730
+ {
1731
+ tabIndex,
1732
+ className,
1733
+ onMouseDown,
1734
+ "aria-label": ariaLabel,
1735
+ ...title !== void 0 && { title }
1736
+ },
1737
+ htmlAttrs
1738
+ );
1730
1739
  return (
1731
- // eslint-disable-next-line react/button-has-type
1732
- /* @__PURE__ */ jsx("button", { ...mergedProps, ref, children })
1740
+ // eslint-disable-next-line react/button-has-type -- type is dynamically passed from props
1741
+ /* @__PURE__ */ jsx("button", { ...mergedProps, ref, type: type ?? "button", children })
1733
1742
  );
1734
1743
  }
1735
1744
  );
1736
1745
  FABHeadless.displayName = "FABHeadless";
1737
1746
  var fabVariants = cva(
1738
1747
  [
1739
- // Base classes (always applied)
1740
- "relative inline-flex items-center justify-center cursor-pointer",
1741
- "overflow-hidden",
1742
- "transition-all duration-200",
1743
- "focus-visible:outline-primary focus-visible:outline-2 focus-visible:outline-offset-2",
1748
+ // Layout NO overflow-hidden here (focus ring must extend outside)
1749
+ "relative inline-flex items-center justify-center cursor-pointer select-none",
1744
1750
  "shrink-0",
1745
- // Prevent shrinking in flex containers
1746
- // State layers (hover, focus, active)
1747
- "before:absolute before:inset-0 before:rounded-[inherit] before:transition-opacity before:duration-200",
1748
- "before:bg-current before:opacity-0",
1749
- "hover:before:opacity-8",
1750
- "focus-visible:before:opacity-12",
1751
- "active:before:opacity-12",
1752
- // Elevation (floating appearance)
1753
- "shadow-elevation-3",
1754
- // Default elevation
1755
- "hover:shadow-elevation-4"
1756
- // Hover elevation
1751
+ // Effects transition: color / bg / shadow — standard spring, no overshoot
1752
+ "transition-[color,background-color,box-shadow]",
1753
+ "duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
1754
+ // Disabled — self-targeting data-[x]: selectors (not group-data — these target the root itself)
1755
+ "data-[disabled]:bg-on-surface/12 data-[disabled]:text-on-surface/38",
1756
+ "data-[disabled]:shadow-none data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none"
1757
1757
  ],
1758
1758
  {
1759
1759
  variants: {
1760
1760
  /**
1761
- * FAB size (controls dimensions and icon size)
1761
+ * FAB size controls container dimensions, corner radius, and icon slot size.
1762
1762
  */
1763
1763
  size: {
1764
- small: [
1765
- "h-10 w-10",
1766
- // 40×40px
1767
- "p-2",
1768
- // 8px padding for 24px icon
1769
- "rounded-xl",
1770
- // 12px corner radius (not fully rounded!)
1771
- "m-1"
1772
- // 4px margin for 48×48px touch target
1773
- ],
1774
- medium: [
1764
+ /**
1765
+ * fab (default) — 56×56dp, 16dp corner radius.
1766
+ * MD3 standard FAB.
1767
+ */
1768
+ fab: [
1775
1769
  "h-14 w-14",
1776
- // 56×56px
1777
- "p-4",
1778
- // 16px padding for 24px icon
1770
+ // 56dp
1779
1771
  "rounded-2xl"
1780
- // 16px corner radius
1772
+ // 16dp corner
1773
+ ],
1774
+ /**
1775
+ * medium — 80×80dp, 20dp corner radius.
1776
+ * M3 Expressive Medium FAB. Previously this value mapped to 56dp;
1777
+ * it is now remapped to the Expressive 80dp Medium FAB.
1778
+ */
1779
+ medium: [
1780
+ "h-20 w-20",
1781
+ // 80dp
1782
+ "rounded-[20px]"
1783
+ // 20dp corner (large-increased shape token)
1781
1784
  ],
1785
+ /**
1786
+ * large — 96×96dp, 28dp corner radius.
1787
+ */
1782
1788
  large: [
1783
1789
  "h-24 w-24",
1784
- // 96×96px
1785
- "p-[30px]",
1786
- // 30px padding for 36px icon
1790
+ // 96dp
1787
1791
  "rounded-[28px]"
1788
- // 28px corner radius (custom value)
1792
+ // 28dp corner
1789
1793
  ],
1794
+ /**
1795
+ * extended — 56dp height, variable width, 16dp corner.
1796
+ * Icon + text label side by side.
1797
+ * Padding: 16dp leading (icon side), 20dp trailing (text side).
1798
+ * Gap: 12dp between icon and label (MD3 spec).
1799
+ */
1790
1800
  extended: [
1791
1801
  "h-14",
1792
- // 56px height (same as medium)
1802
+ // 56dp height
1793
1803
  "rounded-2xl",
1794
- // 16px corner radius
1804
+ // 16dp corner
1795
1805
  "pl-4 pr-5",
1796
- // Asymmetric padding: 16px leading, 20px trailing
1797
- "gap-2"
1798
- // 8px gap between icon and text
1806
+ // 16dp leading, 20dp trailing
1807
+ "gap-3"
1808
+ // 12dp gap between icon and label
1809
+ ],
1810
+ /**
1811
+ * @deprecated Use `fab` (56dp) instead.
1812
+ * small — 40×40dp, 12dp corner radius. No longer recommended in M3 Expressive.
1813
+ * Kept functional for backward compatibility.
1814
+ */
1815
+ small: [
1816
+ "h-10 w-10",
1817
+ // 40dp
1818
+ "rounded-xl",
1819
+ // 12dp corner
1820
+ "m-1"
1821
+ // 4dp margin for 48×48dp minimum touch target
1799
1822
  ]
1800
1823
  },
1801
1824
  /**
1802
- * Color scheme (MD3 color roles)
1825
+ * FAB color controls container + on-color.
1826
+ * State-layer color in fabStateLayerVariants must match icon/on-color.
1803
1827
  */
1804
1828
  color: {
1805
- primary: "",
1806
- secondary: "",
1807
- tertiary: "",
1808
- surface: ""
1809
- },
1810
- /**
1811
- * Disabled state
1812
- */
1813
- isDisabled: {
1814
- true: "pointer-events-none cursor-not-allowed !bg-on-surface/12 !text-on-surface/38 !shadow-none",
1815
- false: ""
1829
+ "primary-container": [
1830
+ "bg-primary-container text-on-primary-container",
1831
+ // Elevation base=3, hover=4 (state driven), disabled handled by root data-[disabled]
1832
+ "shadow-elevation-3",
1833
+ "group-data-[hovered]/fab:shadow-elevation-4",
1834
+ // Focus / pressed: return to elevation-3
1835
+ // Doubled attribute selector gives higher specificity than single hover selector
1836
+ "group-data-[focus-visible]/fab:shadow-elevation-3",
1837
+ "group-data-[pressed]/fab:group-data-[pressed]/fab:shadow-elevation-3"
1838
+ ],
1839
+ "secondary-container": [
1840
+ "bg-secondary-container text-on-secondary-container",
1841
+ "shadow-elevation-3",
1842
+ "group-data-[hovered]/fab:shadow-elevation-4",
1843
+ "group-data-[focus-visible]/fab:shadow-elevation-3",
1844
+ "group-data-[pressed]/fab:group-data-[pressed]/fab:shadow-elevation-3"
1845
+ ],
1846
+ "tertiary-container": [
1847
+ "bg-tertiary-container text-on-tertiary-container",
1848
+ "shadow-elevation-3",
1849
+ "group-data-[hovered]/fab:shadow-elevation-4",
1850
+ "group-data-[focus-visible]/fab:shadow-elevation-3",
1851
+ "group-data-[pressed]/fab:group-data-[pressed]/fab:shadow-elevation-3"
1852
+ ],
1853
+ primary: [
1854
+ "bg-primary text-on-primary",
1855
+ "shadow-elevation-3",
1856
+ "group-data-[hovered]/fab:shadow-elevation-4",
1857
+ "group-data-[focus-visible]/fab:shadow-elevation-3",
1858
+ "group-data-[pressed]/fab:group-data-[pressed]/fab:shadow-elevation-3"
1859
+ ],
1860
+ secondary: [
1861
+ "bg-secondary text-on-secondary",
1862
+ "shadow-elevation-3",
1863
+ "group-data-[hovered]/fab:shadow-elevation-4",
1864
+ "group-data-[focus-visible]/fab:shadow-elevation-3",
1865
+ "group-data-[pressed]/fab:group-data-[pressed]/fab:shadow-elevation-3"
1866
+ ],
1867
+ tertiary: [
1868
+ "bg-tertiary text-on-tertiary",
1869
+ "shadow-elevation-3",
1870
+ "group-data-[hovered]/fab:shadow-elevation-4",
1871
+ "group-data-[focus-visible]/fab:shadow-elevation-3",
1872
+ "group-data-[pressed]/fab:group-data-[pressed]/fab:shadow-elevation-3"
1873
+ ],
1874
+ /** @deprecated Use `primary-container` instead. */
1875
+ surface: [
1876
+ "bg-surface-container-high text-primary",
1877
+ "shadow-elevation-3",
1878
+ "group-data-[hovered]/fab:shadow-elevation-4",
1879
+ "group-data-[focus-visible]/fab:shadow-elevation-3",
1880
+ "group-data-[pressed]/fab:group-data-[pressed]/fab:shadow-elevation-3"
1881
+ ]
1816
1882
  }
1817
1883
  },
1818
- /**
1819
- * Compound variants - combinations of size + color
1820
- */
1821
- compoundVariants: [
1822
- // ====================
1823
- // PRIMARY COLOR
1824
- // ====================
1825
- {
1826
- color: "primary",
1827
- size: "small",
1828
- className: "bg-primary-container text-on-primary-container"
1829
- },
1830
- {
1831
- color: "primary",
1832
- size: "medium",
1833
- className: "bg-primary-container text-on-primary-container"
1834
- },
1835
- {
1836
- color: "primary",
1837
- size: "large",
1838
- className: "bg-primary-container text-on-primary-container"
1839
- },
1840
- {
1841
- color: "primary",
1842
- size: "extended",
1843
- className: "bg-primary-container text-on-primary-container"
1844
- },
1845
- // ====================
1846
- // SECONDARY COLOR
1847
- // ====================
1848
- {
1849
- color: "secondary",
1850
- size: "small",
1851
- className: "bg-secondary-container text-on-secondary-container"
1852
- },
1853
- {
1854
- color: "secondary",
1855
- size: "medium",
1856
- className: "bg-secondary-container text-on-secondary-container"
1857
- },
1858
- {
1859
- color: "secondary",
1860
- size: "large",
1861
- className: "bg-secondary-container text-on-secondary-container"
1862
- },
1863
- {
1864
- color: "secondary",
1865
- size: "extended",
1866
- className: "bg-secondary-container text-on-secondary-container"
1867
- },
1868
- // ====================
1869
- // TERTIARY COLOR
1870
- // ====================
1871
- {
1872
- color: "tertiary",
1873
- size: "small",
1874
- className: "bg-tertiary-container text-on-tertiary-container"
1875
- },
1876
- {
1877
- color: "tertiary",
1878
- size: "medium",
1879
- className: "bg-tertiary-container text-on-tertiary-container"
1880
- },
1881
- {
1882
- color: "tertiary",
1883
- size: "large",
1884
- className: "bg-tertiary-container text-on-tertiary-container"
1885
- },
1886
- {
1887
- color: "tertiary",
1888
- size: "extended",
1889
- className: "bg-tertiary-container text-on-tertiary-container"
1890
- },
1891
- // ====================
1892
- // SURFACE COLOR
1893
- // ====================
1894
- {
1895
- color: "surface",
1896
- size: "small",
1897
- className: "bg-surface text-primary"
1898
- },
1899
- {
1900
- color: "surface",
1901
- size: "medium",
1902
- className: "bg-surface text-primary"
1903
- },
1904
- {
1905
- color: "surface",
1906
- size: "large",
1907
- className: "bg-surface text-primary"
1884
+ defaultVariants: {
1885
+ size: "fab",
1886
+ color: "primary-container"
1887
+ }
1888
+ }
1889
+ );
1890
+ var fabStateLayerVariants = cva(
1891
+ [
1892
+ "absolute inset-0 rounded-[inherit] overflow-hidden pointer-events-none opacity-0",
1893
+ // Effects transition — opacity must not overshoot
1894
+ "transition-opacity duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
1895
+ // Hover: 8%
1896
+ "group-data-[hovered]/fab:opacity-8",
1897
+ // Focus: 10%
1898
+ "group-data-[focus-visible]/fab:opacity-10",
1899
+ // Pressed: 10% — doubled selector wins over hover's 8%
1900
+ "group-data-[pressed]/fab:group-data-[pressed]/fab:opacity-10",
1901
+ // No state layer when disabled
1902
+ "group-data-[disabled]/fab:hidden"
1903
+ ],
1904
+ {
1905
+ variants: {
1906
+ color: {
1907
+ "primary-container": "bg-on-primary-container",
1908
+ "secondary-container": "bg-on-secondary-container",
1909
+ "tertiary-container": "bg-on-tertiary-container",
1910
+ primary: "bg-on-primary",
1911
+ secondary: "bg-on-secondary",
1912
+ tertiary: "bg-on-tertiary",
1913
+ /** @deprecated */
1914
+ surface: "bg-primary"
1915
+ }
1916
+ },
1917
+ defaultVariants: { color: "primary-container" }
1918
+ }
1919
+ );
1920
+ var fabFocusRingVariants = cva([
1921
+ "pointer-events-none absolute inset-[-3px] rounded-[inherit]",
1922
+ "outline outline-2 outline-offset-0 outline-secondary",
1923
+ // Effects transition — opacity change must not overshoot
1924
+ "transition-opacity duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
1925
+ "opacity-0",
1926
+ "group-data-[focus-visible]/fab:opacity-100"
1927
+ ]);
1928
+ var fabIconVariants = cva(
1929
+ [
1930
+ "relative z-10 inline-flex shrink-0 items-center justify-center",
1931
+ // Color transition uses effects token (no spatial overshoot on color)
1932
+ "transition-colors duration-spring-standard-fast-effects ease-spring-standard-fast-effects"
1933
+ ],
1934
+ {
1935
+ variants: {
1936
+ size: {
1937
+ fab: "size-6",
1938
+ // 24dp
1939
+ medium: "size-7",
1940
+ // 28dp
1941
+ large: "size-9",
1942
+ // 36dp
1943
+ extended: "size-6",
1944
+ // 24dp
1945
+ small: "size-6"
1946
+ // 24dp
1908
1947
  },
1909
- {
1910
- color: "surface",
1911
- size: "extended",
1912
- className: "bg-surface text-primary"
1948
+ hidden: {
1949
+ true: "invisible",
1950
+ false: ""
1913
1951
  }
1914
- ],
1915
- /**
1916
- * Default variants
1917
- */
1952
+ },
1918
1953
  defaultVariants: {
1919
- size: "medium",
1920
- color: "primary",
1921
- isDisabled: false
1954
+ size: "fab",
1955
+ hidden: false
1922
1956
  }
1923
1957
  }
1924
1958
  );
1959
+ var fabLabelVariants = cva([
1960
+ "relative z-10 inline-flex items-center",
1961
+ "text-label-large tracking-[0.1px]"
1962
+ ]);
1925
1963
  var Spinner2 = () => /* @__PURE__ */ jsxs(
1926
1964
  "svg",
1927
1965
  {
1928
1966
  role: "progressbar",
1929
1967
  "aria-label": "Loading",
1930
- className: "h-6 w-6 animate-spin",
1968
+ className: "relative z-10 animate-spin",
1931
1969
  xmlns: "http://www.w3.org/2000/svg",
1932
1970
  fill: "none",
1933
1971
  viewBox: "0 0 24 24",
1972
+ width: "1em",
1973
+ height: "1em",
1974
+ style: { fontSize: "inherit" },
1934
1975
  children: [
1935
1976
  /* @__PURE__ */ jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
1936
1977
  /* @__PURE__ */ jsx(
@@ -1946,80 +1987,98 @@ var Spinner2 = () => /* @__PURE__ */ jsxs(
1946
1987
  );
1947
1988
  var FAB = forwardRef(
1948
1989
  ({
1949
- // Variant props (CVA)
1950
- size = "medium",
1951
- color = "primary",
1952
- // FAB specific props
1990
+ // Variant props
1991
+ size = "fab",
1992
+ color = "primary-container",
1993
+ // Content
1953
1994
  icon,
1954
1995
  children,
1955
- "aria-label": ariaLabel,
1996
+ // State
1956
1997
  loading = false,
1957
1998
  disableRipple = false,
1999
+ isDisabled = false,
2000
+ // Styling
1958
2001
  className,
1959
- // React Aria props
1960
- isDisabled: propIsDisabled = false,
1961
- onPress,
1962
- onMouseDown,
2002
+ // Accessibility
2003
+ "aria-label": ariaLabel,
1963
2004
  title,
2005
+ // Passthrough — forwarded to FABHeadless
2006
+ tabIndex = 0,
2007
+ type = "button",
2008
+ // Passed through to FABHeadless → useButton
1964
2009
  ...props
1965
2010
  }, ref) => {
2011
+ const fabRef = useRef(null);
2012
+ const resolvedRef = ref ?? fabRef;
2013
+ const isFABDisabled = isDisabled || loading;
2014
+ const [isPressed, setIsPressed] = useState(false);
2015
+ const handlePressStart = useCallback(() => setIsPressed(true), []);
2016
+ const handlePressEnd = useCallback(() => setIsPressed(false), []);
2017
+ const { isHovered, hoverProps } = useHover({ isDisabled: isFABDisabled });
2018
+ const { isFocusVisible, focusProps } = useFocusRing();
2019
+ const { onMouseDown: handleRipple, ripples } = useRipple({
2020
+ disabled: isFABDisabled || disableRipple
2021
+ });
1966
2022
  if (process.env.NODE_ENV === "development") {
1967
2023
  if (!icon) {
1968
- console.warn("[FAB] FAB must have an icon. Please provide the icon prop.");
2024
+ console.warn("[FAB] FAB must have an icon. Please provide the `icon` prop.");
1969
2025
  }
1970
2026
  if (size === "extended" && !children) {
1971
- console.warn("[FAB] Extended FAB requires text label as children.");
2027
+ console.warn("[FAB] Extended FAB requires a text label as `children`.");
1972
2028
  }
1973
2029
  if (size !== "extended" && children) {
1974
2030
  console.warn(
1975
- "[FAB] Children (text) is only used for extended FAB. For icon-only FAB, use icon prop only."
2031
+ "[FAB] `children` (text label) is only rendered for `size='extended'`. For icon-only FABs, use the `icon` prop only."
2032
+ );
2033
+ }
2034
+ if (size === "small") {
2035
+ console.warn(
2036
+ "[FAB] `size='small'` is deprecated in M3 Expressive. Use `size='fab'` (56dp) instead."
2037
+ );
2038
+ }
2039
+ if (color === "surface") {
2040
+ console.warn(
2041
+ "[FAB] `color='surface'` is deprecated in M3 Expressive. Use `color='primary-container'` instead."
1976
2042
  );
1977
2043
  }
1978
2044
  }
1979
- const isDisabled = propIsDisabled || loading;
1980
- const { onMouseDown: handleRipple, ripples } = useRipple({
1981
- disabled: isDisabled || disableRipple
1982
- });
1983
- const mergedOnMouseDown = (e) => {
1984
- onMouseDown?.(e);
1985
- handleRipple(e);
1986
- };
1987
- const mergedPropsValue = mergeProps(props, {
1988
- ...onPress && { onPress },
1989
- onMouseDown: mergedOnMouseDown,
1990
- isDisabled
1991
- });
1992
2045
  return /* @__PURE__ */ jsxs(
1993
2046
  FABHeadless,
1994
2047
  {
1995
- ref,
2048
+ ...mergeProps$1(
2049
+ hoverProps,
2050
+ focusProps,
2051
+ { onPressStart: handlePressStart, onPressEnd: handlePressEnd },
2052
+ props
2053
+ ),
2054
+ ref: resolvedRef,
2055
+ type,
2056
+ isDisabled: isFABDisabled,
2057
+ tabIndex,
2058
+ onMouseDown: handleRipple,
2059
+ "aria-label": ariaLabel,
2060
+ ...title !== void 0 && { title },
2061
+ ...getInteractionDataAttributes({
2062
+ isHovered,
2063
+ isFocusVisible,
2064
+ isPressed,
2065
+ isDisabled: isFABDisabled
2066
+ }),
2067
+ "data-with-icon": icon ? "" : void 0,
2068
+ "data-loading": loading ? "" : void 0,
1996
2069
  className: cn(
1997
- // Base classes
1998
- "relative inline-flex items-center justify-center",
1999
- "overflow-hidden transition-all duration-200",
2000
- "focus-visible:outline-primary focus-visible:outline-2 focus-visible:outline-offset-2",
2001
- "shrink-0",
2002
- // State layers (hover, focus, active)
2003
- "before:absolute before:inset-0 before:rounded-[inherit] before:transition-opacity before:duration-200",
2004
- "before:bg-current before:opacity-0",
2005
- "hover:before:opacity-8",
2006
- "focus-visible:before:opacity-12",
2007
- "active:before:opacity-12",
2008
- // Elevation
2009
- "shadow-elevation-3 hover:shadow-elevation-4",
2010
- // CVA variants
2011
- fabVariants({ size, color, isDisabled }),
2012
- // User custom classes
2070
+ fabVariants({ size, color }),
2071
+ // group/fab: enables group-data-[x]/fab child selectors in all slots
2072
+ "group/fab",
2013
2073
  className
2014
2074
  ),
2015
- "aria-label": ariaLabel,
2016
- ...title && { title },
2017
- ...mergedPropsValue,
2018
2075
  children: [
2019
2076
  ripples,
2020
- icon && /* @__PURE__ */ jsx("span", { className: cn("relative z-10 inline-flex shrink-0", loading && "invisible"), children: icon }),
2021
- loading && /* @__PURE__ */ jsx("span", { className: "relative z-10", children: /* @__PURE__ */ jsx(Spinner2, {}) }),
2022
- size === "extended" && children && /* @__PURE__ */ jsx("span", { className: "relative z-10 inline-flex items-center text-sm font-medium tracking-[0.1px]", children })
2077
+ /* @__PURE__ */ jsx("span", { className: cn(fabStateLayerVariants({ color })), "aria-hidden": "true" }),
2078
+ /* @__PURE__ */ jsx("span", { className: cn(fabFocusRingVariants()), "aria-hidden": "true" }),
2079
+ icon && /* @__PURE__ */ jsx("span", { className: cn(fabIconVariants({ size, hidden: loading })), children: icon }),
2080
+ loading && /* @__PURE__ */ jsx("span", { className: cn(fabIconVariants({ size })), children: /* @__PURE__ */ jsx(Spinner2, {}) }),
2081
+ size === "extended" && children && /* @__PURE__ */ jsx("span", { className: cn(fabLabelVariants()), children })
2023
2082
  ]
2024
2083
  }
2025
2084
  );