@bug-on/m3-expressive 1.2.7 → 1.3.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 (54) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/buttons.d.mts +3 -3
  3. package/dist/buttons.d.ts +3 -3
  4. package/dist/buttons.js +10 -10
  5. package/dist/buttons.js.map +1 -1
  6. package/dist/buttons.mjs +10 -10
  7. package/dist/buttons.mjs.map +1 -1
  8. package/dist/{core-D4048_K5.d.mts → core-CAU8g2HY.d.mts} +1 -1
  9. package/dist/{core-Bc5Wj_pc.d.ts → core-DRrLnsnJ.d.ts} +1 -1
  10. package/dist/core.d.mts +2 -2
  11. package/dist/core.d.ts +2 -2
  12. package/dist/core.js +3 -3
  13. package/dist/core.js.map +1 -1
  14. package/dist/core.mjs +3 -3
  15. package/dist/core.mjs.map +1 -1
  16. package/dist/feedback.d.mts +8 -6
  17. package/dist/feedback.d.ts +8 -6
  18. package/dist/feedback.js +5 -5
  19. package/dist/feedback.js.map +1 -1
  20. package/dist/feedback.mjs +5 -5
  21. package/dist/feedback.mjs.map +1 -1
  22. package/dist/{icon-button-CSsDmuQC.d.mts → icon-button-CqdQBsRe.d.ts} +11 -5
  23. package/dist/{icon-button-CSsDmuQC.d.ts → icon-button-USJo7AqO.d.mts} +11 -5
  24. package/dist/index.d.mts +6 -6
  25. package/dist/index.d.ts +6 -6
  26. package/dist/index.js +291 -163
  27. package/dist/index.js.map +1 -1
  28. package/dist/index.mjs +291 -164
  29. package/dist/index.mjs.map +1 -1
  30. package/dist/layout.d.mts +1 -1
  31. package/dist/layout.d.ts +1 -1
  32. package/dist/layout.js +1 -33
  33. package/dist/layout.js.map +1 -1
  34. package/dist/layout.mjs +1 -33
  35. package/dist/layout.mjs.map +1 -1
  36. package/dist/{md3-Dty-Qcad.d.mts → md3-D0_Z7IXj.d.mts} +9 -1
  37. package/dist/{md3-Dty-Qcad.d.ts → md3-D0_Z7IXj.d.ts} +9 -1
  38. package/dist/navigation.d.mts +103 -33
  39. package/dist/navigation.d.ts +103 -33
  40. package/dist/navigation.js +287 -127
  41. package/dist/navigation.js.map +1 -1
  42. package/dist/navigation.mjs +288 -129
  43. package/dist/navigation.mjs.map +1 -1
  44. package/dist/overlays.js +3 -3
  45. package/dist/overlays.js.map +1 -1
  46. package/dist/overlays.mjs +3 -3
  47. package/dist/overlays.mjs.map +1 -1
  48. package/dist/pickers.js +3 -3
  49. package/dist/pickers.js.map +1 -1
  50. package/dist/pickers.mjs +3 -3
  51. package/dist/pickers.mjs.map +1 -1
  52. package/dist/{split-button-trailing-uncheckable-DPJL3bO6.d.mts → split-button-trailing-uncheckable-26qlZvKT.d.mts} +10 -7
  53. package/dist/{split-button-trailing-uncheckable--BhNTEJw.d.ts → split-button-trailing-uncheckable-CXUVrH64.d.ts} +10 -7
  54. package/package.json +1 -1
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var React37 = require('react');
4
+ var react = require('motion/react');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
+ var React37 = require('react');
8
9
  var RxContextMenu = require('@radix-ui/react-context-menu');
9
- var react = require('motion/react');
10
10
  var m3Tokens = require('@bug-on/m3-tokens');
11
11
  var DropdownMenu = require('@radix-ui/react-dropdown-menu');
12
12
  var reactSlot = require('@radix-ui/react-slot');
@@ -66,6 +66,55 @@ var __objRest = (source, exclude) => {
66
66
  }
67
67
  return target;
68
68
  };
69
+ function cn(...inputs) {
70
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
71
+ }
72
+ function getMaskGradient(direction) {
73
+ switch (direction) {
74
+ case "bottom":
75
+ return "linear-gradient(to top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 1) 45%, rgba(0, 0, 0, 0.7) 75%, rgba(0, 0, 0, 0) 100%)";
76
+ case "both":
77
+ return "linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.7) 20%, rgba(0, 0, 0, 1) 40%, rgba(0, 0, 0, 1) 60%, rgba(0, 0, 0, 0.7) 80%, rgba(0, 0, 0, 0) 100%)";
78
+ default:
79
+ return "linear-gradient(to bottom, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 1) 45%, rgba(0, 0, 0, 0.7) 75%, rgba(0, 0, 0, 0) 100%)";
80
+ }
81
+ }
82
+ function FadingBlurMask({
83
+ direction = "top",
84
+ blurIntensity = 12,
85
+ blurHeight = "100%",
86
+ color = "var(--md-sys-color-surface)",
87
+ className,
88
+ style,
89
+ children
90
+ }) {
91
+ const shouldReduceMotion = react.useReducedMotion();
92
+ const activeBlur = shouldReduceMotion ? 0 : blurIntensity;
93
+ const maskGradient = getMaskGradient(direction);
94
+ const maskStyle = __spreadValues({
95
+ position: "absolute",
96
+ inset: 0,
97
+ pointerEvents: "none",
98
+ height: typeof blurHeight === "number" ? `${blurHeight}px` : blurHeight,
99
+ backdropFilter: activeBlur > 0 ? `blur(${activeBlur}px)` : void 0,
100
+ WebkitBackdropFilter: activeBlur > 0 ? `blur(${activeBlur}px)` : void 0,
101
+ maskImage: maskGradient,
102
+ WebkitMaskImage: maskGradient,
103
+ backgroundColor: color
104
+ }, style);
105
+ return /* @__PURE__ */ jsxRuntime.jsx(
106
+ "div",
107
+ {
108
+ "aria-hidden": "true",
109
+ className: cn(
110
+ "absolute inset-0 pointer-events-none z-0 rounded-[inherit]",
111
+ className
112
+ ),
113
+ style: maskStyle,
114
+ children
115
+ }
116
+ );
117
+ }
69
118
 
70
119
  // src/ui/shared/motion-tokens.ts
71
120
  var FAST_SPATIAL_SPRING = {
@@ -220,9 +269,6 @@ var APP_BAR_TITLE_FADE = {
220
269
  duration: 0.15,
221
270
  ease: "easeInOut"
222
271
  };
223
- function cn(...inputs) {
224
- return tailwindMerge.twMerge(clsx.clsx(inputs));
225
- }
226
272
  function AppBarItemButton({ item }) {
227
273
  const isDisabled = item.enabled === false;
228
274
  if (item.type === "custom" && item.appBarContent) {
@@ -1749,7 +1795,10 @@ function BottomAppBar({
1749
1795
  floatingActionButton,
1750
1796
  scrollBehavior = "visible",
1751
1797
  scrollElement,
1752
- className
1798
+ className,
1799
+ enableFadingBlur,
1800
+ blurIntensity,
1801
+ blurHeight
1753
1802
  }) {
1754
1803
  const shouldReduceMotion = react.useReducedMotion();
1755
1804
  const { isHidden } = useAppBarScroll({
@@ -1764,9 +1813,9 @@ function BottomAppBar({
1764
1813
  role: "navigation",
1765
1814
  "aria-label": "Bottom app bar",
1766
1815
  className: cn(
1767
- "fixed bottom-0 inset-x-0 z-50",
1816
+ "fixed bottom-0 inset-x-0 z-50 overflow-hidden rounded-[inherit]",
1768
1817
  "flex items-center",
1769
- "bg-m3-surface-container",
1818
+ !enableFadingBlur && "bg-m3-surface-container",
1770
1819
  "px-2",
1771
1820
  // minimal horizontal padding, icon buttons provide spacing
1772
1821
  "elevation-2",
@@ -1779,8 +1828,19 @@ function BottomAppBar({
1779
1828
  animate: { y: translateY },
1780
1829
  transition: hideTransition,
1781
1830
  children: [
1782
- actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center flex-1", children: actions }),
1783
- floatingActionButton && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0 ml-auto mr-2", children: floatingActionButton })
1831
+ enableFadingBlur && /* @__PURE__ */ jsxRuntime.jsx(
1832
+ FadingBlurMask,
1833
+ {
1834
+ direction: "bottom",
1835
+ blurIntensity,
1836
+ blurHeight,
1837
+ color: "var(--md-sys-color-surface-container)"
1838
+ }
1839
+ ),
1840
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative z-10 flex items-center w-full h-full", children: [
1841
+ actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center flex-1", children: actions }),
1842
+ floatingActionButton && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0 ml-auto mr-2", children: floatingActionButton })
1843
+ ] })
1784
1844
  ]
1785
1845
  }
1786
1846
  );
@@ -1888,7 +1948,10 @@ function LargeFlexibleAppBar({
1888
1948
  headerContent,
1889
1949
  collapsedHeight = AppBarTokens.heights.flexibleCollapsed,
1890
1950
  expandedHeight,
1891
- className
1951
+ className,
1952
+ enableFadingBlur,
1953
+ blurIntensity,
1954
+ blurHeight
1892
1955
  }) {
1893
1956
  var _a, _b, _c;
1894
1957
  const resolvedExpandedHeight = expandedHeight != null ? expandedHeight : subtitle ? AppBarTokens.heights.largeFlexWithSubtitleExpanded : AppBarTokens.heights.largeFlexExpanded;
@@ -1918,15 +1981,28 @@ function LargeFlexibleAppBar({
1918
1981
  {
1919
1982
  role: "banner",
1920
1983
  className: cn(
1921
- "fixed top-0 inset-x-0 z-50 flex flex-col overflow-hidden",
1984
+ "fixed top-0 inset-x-0 z-50 flex flex-col overflow-hidden rounded-[inherit]",
1922
1985
  className
1923
1986
  ),
1924
- style: { height, backgroundColor: currentBg, transition: cssTransition },
1987
+ style: {
1988
+ height,
1989
+ backgroundColor: enableFadingBlur ? "transparent" : currentBg,
1990
+ transition: cssTransition
1991
+ },
1925
1992
  children: [
1993
+ enableFadingBlur && /* @__PURE__ */ jsxRuntime.jsx(
1994
+ FadingBlurMask,
1995
+ {
1996
+ direction: "top",
1997
+ blurIntensity,
1998
+ blurHeight,
1999
+ color: currentBg
2000
+ }
2001
+ ),
1926
2002
  /* @__PURE__ */ jsxRuntime.jsxs(
1927
2003
  "div",
1928
2004
  {
1929
- className: "flex items-center px-1 shrink-0",
2005
+ className: "relative z-10 flex items-center px-1 shrink-0",
1930
2006
  style: { height: collapsedHeight },
1931
2007
  children: [
1932
2008
  navigationIcon && /* @__PURE__ */ jsxRuntime.jsx(
@@ -1968,7 +2044,7 @@ function LargeFlexibleAppBar({
1968
2044
  "div",
1969
2045
  {
1970
2046
  className: cn(
1971
- "flex flex-col flex-1 px-4 pb-4 justify-end",
2047
+ "relative z-10 flex flex-col flex-1 px-4 pb-3 justify-end",
1972
2048
  isCentered ? "items-center" : "items-start"
1973
2049
  ),
1974
2050
  children: [
@@ -2021,7 +2097,10 @@ function MediumFlexibleAppBar({
2021
2097
  headerContent,
2022
2098
  collapsedHeight = AppBarTokens.heights.flexibleCollapsed,
2023
2099
  expandedHeight,
2024
- className
2100
+ className,
2101
+ enableFadingBlur,
2102
+ blurIntensity,
2103
+ blurHeight
2025
2104
  }) {
2026
2105
  var _a, _b, _c;
2027
2106
  const resolvedExpandedHeight = expandedHeight != null ? expandedHeight : subtitle ? AppBarTokens.heights.mediumFlexWithSubtitleExpanded : AppBarTokens.heights.mediumFlexExpanded;
@@ -2051,15 +2130,28 @@ function MediumFlexibleAppBar({
2051
2130
  {
2052
2131
  role: "banner",
2053
2132
  className: cn(
2054
- "fixed top-0 inset-x-0 z-50 flex flex-col overflow-hidden",
2133
+ "fixed top-0 inset-x-0 z-50 flex flex-col overflow-hidden rounded-[inherit]",
2055
2134
  className
2056
2135
  ),
2057
- style: { height, backgroundColor: currentBg, transition: cssTransition },
2136
+ style: {
2137
+ height,
2138
+ backgroundColor: enableFadingBlur ? "transparent" : currentBg,
2139
+ transition: cssTransition
2140
+ },
2058
2141
  children: [
2142
+ enableFadingBlur && /* @__PURE__ */ jsxRuntime.jsx(
2143
+ FadingBlurMask,
2144
+ {
2145
+ direction: "top",
2146
+ blurIntensity,
2147
+ blurHeight,
2148
+ color: currentBg
2149
+ }
2150
+ ),
2059
2151
  /* @__PURE__ */ jsxRuntime.jsxs(
2060
2152
  "div",
2061
2153
  {
2062
- className: "flex items-center px-1 shrink-0",
2154
+ className: "relative z-10 flex items-center px-1 shrink-0",
2063
2155
  style: { height: collapsedHeight },
2064
2156
  children: [
2065
2157
  navigationIcon && /* @__PURE__ */ jsxRuntime.jsx(
@@ -2101,7 +2193,7 @@ function MediumFlexibleAppBar({
2101
2193
  "div",
2102
2194
  {
2103
2195
  className: cn(
2104
- "flex flex-col flex-1 px-4 pb-3 justify-end",
2196
+ "relative z-10 flex flex-col flex-1 px-4 pb-3 justify-end",
2105
2197
  isCentered ? "items-center" : "items-start"
2106
2198
  ),
2107
2199
  children: [
@@ -2148,7 +2240,7 @@ function SearchIcon({ className }) {
2148
2240
  "span",
2149
2241
  {
2150
2242
  className: cn(
2151
- "material-symbols-rounded text-[20px] leading-none select-none",
2243
+ "material-symbols-rounded text-[20px] leading-none select-none flex items-center justify-center",
2152
2244
  className
2153
2245
  ),
2154
2246
  "aria-hidden": "true",
@@ -2168,7 +2260,12 @@ function SearchAppBar({
2168
2260
  scrollBehavior = "pinned",
2169
2261
  scrollElement,
2170
2262
  searchBarId = "search-bar",
2171
- className
2263
+ searchBarVariant = "filled",
2264
+ searchBarHeight = 56,
2265
+ className,
2266
+ enableFadingBlur,
2267
+ blurIntensity,
2268
+ blurHeight
2172
2269
  }) {
2173
2270
  var _a, _b;
2174
2271
  const shouldReduceMotion = react.useReducedMotion();
@@ -2191,65 +2288,92 @@ function SearchAppBar({
2191
2288
  handleSearchClick();
2192
2289
  }
2193
2290
  };
2291
+ const searchBarBg = isScrolled ? "var(--md-sys-color-surface-container-highest)" : APP_BAR_COLORS.searchBarBg;
2292
+ const isOutlined = searchBarVariant === "outlined";
2194
2293
  return /* @__PURE__ */ jsxRuntime.jsxs(
2195
2294
  react.m.header,
2196
2295
  {
2197
2296
  role: "banner",
2198
2297
  className: cn(
2199
- "fixed top-0 inset-x-0 z-50 flex items-center gap-2 px-4",
2298
+ "fixed top-0 inset-x-0 z-50 flex items-center gap-2 px-4 overflow-hidden rounded-[inherit]",
2200
2299
  className
2201
2300
  ),
2202
2301
  style: {
2203
2302
  height: AppBarTokens.heights.small,
2204
- backgroundColor: currentBg,
2303
+ backgroundColor: enableFadingBlur ? "transparent" : currentBg,
2205
2304
  transition: cssTransition
2206
2305
  },
2207
2306
  children: [
2208
- navigationIcon && /* @__PURE__ */ jsxRuntime.jsx(
2209
- "div",
2307
+ enableFadingBlur && /* @__PURE__ */ jsxRuntime.jsx(
2308
+ FadingBlurMask,
2210
2309
  {
2211
- className: "shrink-0 flex items-center justify-center",
2212
- style: {
2213
- width: AppBarTokens.iconButtonTouchTarget,
2214
- height: AppBarTokens.iconButtonTouchTarget
2215
- },
2216
- children: navigationIcon
2310
+ direction: "top",
2311
+ blurIntensity,
2312
+ blurHeight,
2313
+ color: currentBg
2217
2314
  }
2218
2315
  ),
2219
- /* @__PURE__ */ jsxRuntime.jsxs(
2220
- react.m.div,
2221
- {
2222
- layoutId: shouldReduceMotion ? void 0 : searchBarId,
2223
- role: "search",
2224
- "aria-label": searchPlaceholder,
2225
- "aria-expanded": isSearchOpen,
2226
- tabIndex: 0,
2227
- className: "relative flex flex-1 items-center gap-2 rounded-full cursor-text h-10 px-4 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
2228
- onClick: handleSearchClick,
2229
- onKeyDown: handleKeyDown,
2230
- children: [
2231
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 rounded-full bg-m3-surface-container-high -z-10" }),
2232
- /* @__PURE__ */ jsxRuntime.jsx(
2233
- "span",
2234
- {
2235
- className: "shrink-0",
2236
- style: { color: APP_BAR_COLORS.searchBarContent },
2237
- children: leadingSearchIcon != null ? leadingSearchIcon : /* @__PURE__ */ jsxRuntime.jsx(SearchIcon, {})
2238
- }
2239
- ),
2240
- /* @__PURE__ */ jsxRuntime.jsx(
2241
- "span",
2242
- {
2243
- className: "flex-1 text-[16px] leading-6 truncate select-none",
2244
- style: { color: APP_BAR_COLORS.searchBarContent },
2245
- children: searchValue != null ? searchValue : searchPlaceholder
2246
- }
2316
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative z-10 flex items-center gap-2 w-full h-full", children: [
2317
+ navigationIcon && /* @__PURE__ */ jsxRuntime.jsx(
2318
+ "div",
2319
+ {
2320
+ className: "shrink-0 flex items-center justify-center",
2321
+ style: {
2322
+ width: AppBarTokens.iconButtonTouchTarget,
2323
+ height: AppBarTokens.iconButtonTouchTarget
2324
+ },
2325
+ children: navigationIcon
2326
+ }
2327
+ ),
2328
+ /* @__PURE__ */ jsxRuntime.jsxs(
2329
+ react.m.div,
2330
+ {
2331
+ layoutId: shouldReduceMotion ? void 0 : searchBarId,
2332
+ role: "search",
2333
+ "aria-label": searchPlaceholder,
2334
+ "aria-expanded": isSearchOpen,
2335
+ tabIndex: 0,
2336
+ className: cn(
2337
+ "relative flex flex-1 items-center gap-2 rounded-full cursor-text px-4",
2338
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
2339
+ isOutlined && "border border-(--md-sys-color-outline)"
2247
2340
  ),
2248
- trailingSearchActions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center shrink-0", children: trailingSearchActions })
2249
- ]
2250
- }
2251
- ),
2252
- externalActions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center shrink-0", children: externalActions })
2341
+ style: { height: searchBarHeight },
2342
+ onClick: handleSearchClick,
2343
+ onKeyDown: handleKeyDown,
2344
+ children: [
2345
+ !isOutlined && /* @__PURE__ */ jsxRuntime.jsx(
2346
+ "div",
2347
+ {
2348
+ className: "absolute inset-0 rounded-full -z-10 transition-colors",
2349
+ style: {
2350
+ backgroundColor: searchBarBg,
2351
+ transition: cssTransition
2352
+ }
2353
+ }
2354
+ ),
2355
+ /* @__PURE__ */ jsxRuntime.jsx(
2356
+ "span",
2357
+ {
2358
+ className: "shrink-0 flex items-center justify-center h-full",
2359
+ style: { color: APP_BAR_COLORS.searchBarContent },
2360
+ children: leadingSearchIcon != null ? leadingSearchIcon : /* @__PURE__ */ jsxRuntime.jsx(SearchIcon, {})
2361
+ }
2362
+ ),
2363
+ /* @__PURE__ */ jsxRuntime.jsx(
2364
+ "span",
2365
+ {
2366
+ className: "flex-1 text-[16px] leading-6 truncate select-none",
2367
+ style: { color: APP_BAR_COLORS.searchBarContent },
2368
+ children: searchValue != null ? searchValue : searchPlaceholder
2369
+ }
2370
+ ),
2371
+ trailingSearchActions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center shrink-0", children: trailingSearchActions })
2372
+ ]
2373
+ }
2374
+ ),
2375
+ externalActions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center shrink-0", children: externalActions })
2376
+ ] })
2253
2377
  ]
2254
2378
  }
2255
2379
  );
@@ -2422,9 +2546,11 @@ function SmallAppBarInner({
2422
2546
  navigationIcon,
2423
2547
  actions,
2424
2548
  colors,
2425
- className,
2426
2549
  currentBg,
2427
- cssTransition
2550
+ cssTransition,
2551
+ enableFadingBlur,
2552
+ blurIntensity,
2553
+ blurHeight
2428
2554
  }) {
2429
2555
  var _a, _b;
2430
2556
  const isCentered = titleAlignment === "center";
@@ -2432,57 +2558,81 @@ function SmallAppBarInner({
2432
2558
  react.m.header,
2433
2559
  {
2434
2560
  role: "banner",
2435
- className: cn("flex items-center px-1 h-full w-full", className),
2436
- style: { backgroundColor: currentBg, transition: cssTransition },
2561
+ className: "relative flex items-center px-1 h-full w-full overflow-hidden rounded-[inherit]",
2562
+ style: {
2563
+ backgroundColor: enableFadingBlur ? "transparent" : currentBg,
2564
+ transition: cssTransition
2565
+ },
2437
2566
  children: [
2438
- navigationIcon && /* @__PURE__ */ jsxRuntime.jsx(
2439
- "div",
2567
+ enableFadingBlur && /* @__PURE__ */ jsxRuntime.jsx(
2568
+ FadingBlurMask,
2440
2569
  {
2441
- className: "shrink-0 flex items-center justify-center",
2442
- style: {
2443
- width: AppBarTokens.iconButtonTouchTarget,
2444
- height: AppBarTokens.iconButtonTouchTarget
2445
- },
2446
- children: navigationIcon
2570
+ direction: "top",
2571
+ blurIntensity,
2572
+ blurHeight,
2573
+ color: currentBg
2447
2574
  }
2448
2575
  ),
2449
- /* @__PURE__ */ jsxRuntime.jsxs(
2450
- "div",
2451
- {
2452
- className: cn(
2453
- "flex-1 flex flex-col justify-center min-w-0",
2454
- isCentered ? "items-center" : "items-start",
2455
- !navigationIcon && "pl-4"
2456
- ),
2457
- children: [
2458
- /* @__PURE__ */ jsxRuntime.jsx(
2459
- "span",
2460
- {
2461
- className: cn(
2462
- appBarTypography.titleLarge,
2463
- "truncate w-full",
2464
- isCentered && "text-center"
2465
- ),
2466
- style: { color: (_a = colors == null ? void 0 : colors.titleColor) != null ? _a : APP_BAR_COLORS.title },
2467
- children: title
2468
- }
2576
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative z-10 flex items-center w-full h-full", children: [
2577
+ navigationIcon && /* @__PURE__ */ jsxRuntime.jsx(
2578
+ "div",
2579
+ {
2580
+ className: "shrink-0 flex items-center justify-center",
2581
+ style: {
2582
+ width: AppBarTokens.iconButtonTouchTarget,
2583
+ height: AppBarTokens.iconButtonTouchTarget
2584
+ },
2585
+ children: navigationIcon
2586
+ }
2587
+ ),
2588
+ /* @__PURE__ */ jsxRuntime.jsxs(
2589
+ "div",
2590
+ {
2591
+ className: cn(
2592
+ "flex-1 flex flex-col justify-center min-w-0",
2593
+ isCentered ? "items-center" : "items-start",
2594
+ !navigationIcon && !isCentered && "pl-4"
2469
2595
  ),
2470
- subtitle && /* @__PURE__ */ jsxRuntime.jsx(
2471
- "span",
2472
- {
2473
- className: cn(
2474
- appBarTypography.labelMedium,
2475
- "truncate w-full",
2476
- isCentered && "text-center"
2477
- ),
2478
- style: { color: (_b = colors == null ? void 0 : colors.subtitleColor) != null ? _b : APP_BAR_COLORS.subtitle },
2479
- children: subtitle
2480
- }
2481
- )
2482
- ]
2483
- }
2484
- ),
2485
- actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center shrink-0", children: actions })
2596
+ children: [
2597
+ /* @__PURE__ */ jsxRuntime.jsx(
2598
+ "span",
2599
+ {
2600
+ className: cn(
2601
+ appBarTypography.titleLarge,
2602
+ "truncate w-full",
2603
+ isCentered && "text-center"
2604
+ ),
2605
+ style: { color: (_a = colors == null ? void 0 : colors.titleColor) != null ? _a : APP_BAR_COLORS.title },
2606
+ children: title
2607
+ }
2608
+ ),
2609
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx(
2610
+ "span",
2611
+ {
2612
+ className: cn(
2613
+ appBarTypography.labelMedium,
2614
+ "truncate w-full",
2615
+ isCentered && "text-center"
2616
+ ),
2617
+ style: {
2618
+ color: (_b = colors == null ? void 0 : colors.subtitleColor) != null ? _b : APP_BAR_COLORS.subtitle
2619
+ },
2620
+ children: subtitle
2621
+ }
2622
+ )
2623
+ ]
2624
+ }
2625
+ ),
2626
+ isCentered && !actions && navigationIcon && /* @__PURE__ */ jsxRuntime.jsx(
2627
+ "div",
2628
+ {
2629
+ "aria-hidden": "true",
2630
+ style: { width: AppBarTokens.iconButtonTouchTarget },
2631
+ className: "shrink-0"
2632
+ }
2633
+ ),
2634
+ actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center shrink-0", children: actions })
2635
+ ] })
2486
2636
  ]
2487
2637
  }
2488
2638
  );
@@ -2496,7 +2646,10 @@ function SmallAppBar({
2496
2646
  colors,
2497
2647
  scrollBehavior = "pinned",
2498
2648
  scrollElement,
2499
- className
2649
+ className,
2650
+ enableFadingBlur,
2651
+ blurIntensity,
2652
+ blurHeight
2500
2653
  }) {
2501
2654
  var _a, _b;
2502
2655
  const shouldReduceMotion = react.useReducedMotion();
@@ -2516,14 +2669,17 @@ function SmallAppBar({
2516
2669
  actions,
2517
2670
  colors,
2518
2671
  currentBg,
2519
- cssTransition
2672
+ cssTransition,
2673
+ enableFadingBlur,
2674
+ blurIntensity,
2675
+ blurHeight
2520
2676
  };
2521
2677
  const barHeight = AppBarTokens.heights.small;
2522
2678
  if (scrollBehavior !== "enterAlways") {
2523
2679
  return /* @__PURE__ */ jsxRuntime.jsx(
2524
2680
  "div",
2525
2681
  {
2526
- className: cn("fixed top-0 inset-x-0 z-50", className),
2682
+ className: cn("fixed top-0 inset-x-0 z-50 overflow-hidden", className),
2527
2683
  style: { height: barHeight },
2528
2684
  children: /* @__PURE__ */ jsxRuntime.jsx(SmallAppBarInner, __spreadValues({}, innerProps))
2529
2685
  }
@@ -2536,7 +2692,10 @@ function SmallAppBar({
2536
2692
  animate: { y: 0 },
2537
2693
  exit: { y: "-100%" },
2538
2694
  transition: shouldReduceMotion ? { duration: 0 } : APP_BAR_ENTER_ALWAYS_SPRING,
2539
- className: cn("fixed top-0 inset-x-0 z-50", className),
2695
+ className: cn(
2696
+ "fixed top-0 inset-x-0 z-50 overflow-hidden",
2697
+ className
2698
+ ),
2540
2699
  style: { height: barHeight },
2541
2700
  children: /* @__PURE__ */ jsxRuntime.jsx(SmallAppBarInner, __spreadValues({}, innerProps))
2542
2701
  },
@@ -7351,7 +7510,7 @@ var IconButtonComponent = React37__namespace.forwardRef(
7351
7510
  variant = "default",
7352
7511
  colorStyle = "standard",
7353
7512
  size = "sm",
7354
- widthVariant = "default",
7513
+ width = "default",
7355
7514
  shape = "round",
7356
7515
  selected,
7357
7516
  selectedIcon,
@@ -7369,7 +7528,7 @@ var IconButtonComponent = React37__namespace.forwardRef(
7369
7528
  "variant",
7370
7529
  "colorStyle",
7371
7530
  "size",
7372
- "widthVariant",
7531
+ "width",
7373
7532
  "shape",
7374
7533
  "selected",
7375
7534
  "selectedIcon",
@@ -7414,7 +7573,7 @@ var IconButtonComponent = React37__namespace.forwardRef(
7414
7573
  const iconPx = iconSize != null ? iconSize : defaultIconPx;
7415
7574
  const isCustomSize = iconSize != null && iconSize !== "inherit";
7416
7575
  const heightClass = (_c = SIZE_HEIGHT_STYLES[size]) != null ? _c : SIZE_HEIGHT_STYLES.sm;
7417
- const widthClass = (_e = ((_d = WIDTH_SIZE_STYLES[size]) != null ? _d : WIDTH_SIZE_STYLES.sm)[widthVariant]) != null ? _e : WIDTH_SIZE_STYLES.sm.default;
7576
+ const widthClass = (_e = ((_d = WIDTH_SIZE_STYLES[size]) != null ? _d : WIDTH_SIZE_STYLES.sm)[width]) != null ? _e : WIDTH_SIZE_STYLES.sm.default;
7418
7577
  const needsTouchTarget = size === "xs" || size === "sm";
7419
7578
  const { ripples, onPointerDown, removeRipple } = useRippleState({
7420
7579
  disabled: loading
@@ -8037,9 +8196,9 @@ function BadgedBox({
8037
8196
  badge,
8038
8197
  children,
8039
8198
  className,
8040
- badgeSize
8199
+ size
8041
8200
  }) {
8042
- const isLarge = badgeSize ? badgeSize === "large" : detectBadgeHasContent(badge);
8201
+ const isLarge = size ? size === "lg" : detectBadgeHasContent(badge);
8043
8202
  const badgePositionClass = isLarge ? "translate-x-[35%] -translate-y-[35%]" : "translate-x-[50%] -translate-y-[50%]";
8044
8203
  return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("relative inline-flex", className), children: [
8045
8204
  children,
@@ -9050,7 +9209,7 @@ var FloatingToolbarWithFabBase = React37__namespace.forwardRef(
9050
9209
  fabPosition = orientation === "horizontal" ? "end" : "bottom",
9051
9210
  animationDuration = 0.3,
9052
9211
  scrollBehavior,
9053
- fabSize = "default",
9212
+ fabSize = "sm",
9054
9213
  className,
9055
9214
  style
9056
9215
  } = _b, props = __objRest(_b, [
@@ -9070,7 +9229,7 @@ var FloatingToolbarWithFabBase = React37__namespace.forwardRef(
9070
9229
  const isHorizontal = orientation === "horizontal";
9071
9230
  const effectiveExpanded = expanded && (!scrollBehavior || scrollBehavior.isExpanded);
9072
9231
  const isFabBefore = fabPosition === "start" || fabPosition === "top";
9073
- const resolvedFabSize = fabSize === "medium" ? FabBaselineTokens.MediumContainerHeight : FabBaselineTokens.ContainerHeight;
9232
+ const resolvedFabSize = fabSize === "md" ? FabBaselineTokens.MediumContainerHeight : FabBaselineTokens.ContainerHeight;
9074
9233
  const transitionSpec = __spreadProps(__spreadValues({}, SPRING_TRANSITION), {
9075
9234
  duration: animationDuration
9076
9235
  });
@@ -9209,7 +9368,7 @@ var ToolbarIconButton = React37__namespace.forwardRef(
9209
9368
  (_a, ref) => {
9210
9369
  var _b = _a, {
9211
9370
  emphasis = "standard",
9212
- toolbarSize = "default",
9371
+ width = "default",
9213
9372
  selected,
9214
9373
  asChild,
9215
9374
  className,
@@ -9217,7 +9376,7 @@ var ToolbarIconButton = React37__namespace.forwardRef(
9217
9376
  whileTap
9218
9377
  } = _b, props = __objRest(_b, [
9219
9378
  "emphasis",
9220
- "toolbarSize",
9379
+ "width",
9221
9380
  "selected",
9222
9381
  "asChild",
9223
9382
  "className",
@@ -9225,7 +9384,7 @@ var ToolbarIconButton = React37__namespace.forwardRef(
9225
9384
  "whileTap"
9226
9385
  ]);
9227
9386
  const context = useToolbarContext();
9228
- const widthClass = TOOLBAR_ICON_BUTTON_WIDTH[toolbarSize];
9387
+ const widthClass = TOOLBAR_ICON_BUTTON_WIDTH[width];
9229
9388
  const colorStyle = VARIANT_TO_COLOR_STYLE[emphasis];
9230
9389
  const iconButtonProps = selected !== void 0 ? {
9231
9390
  variant: "toggle",
@@ -9580,6 +9739,7 @@ exports.DIVIDER_PADDING = DIVIDER_PADDING;
9580
9739
  exports.DockedToolbar = DockedToolbar;
9581
9740
  exports.FAST_EFFECTS_TRANSITION = FAST_EFFECTS_TRANSITION;
9582
9741
  exports.FAST_SPATIAL_SPRING = FAST_SPATIAL_SPRING;
9742
+ exports.FadingBlurMask = FadingBlurMask;
9583
9743
  exports.GROUP_SHAPES = GROUP_SHAPES;
9584
9744
  exports.HorizontalFloatingToolbar = HorizontalFloatingToolbar;
9585
9745
  exports.HorizontalFloatingToolbarWithFab = HorizontalFloatingToolbarWithFab;