@bug-on/m3-expressive 1.2.0 → 1.2.2
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/CHANGELOG.md +12 -0
- package/dist/buttons.d.mts +26 -5
- package/dist/buttons.d.ts +26 -5
- package/dist/buttons.js +1074 -765
- package/dist/buttons.js.map +1 -1
- package/dist/buttons.mjs +1066 -765
- package/dist/buttons.mjs.map +1 -1
- package/dist/core.js +133 -69
- package/dist/core.js.map +1 -1
- package/dist/core.mjs +133 -69
- package/dist/core.mjs.map +1 -1
- package/dist/feedback.js +132 -69
- package/dist/feedback.js.map +1 -1
- package/dist/feedback.mjs +132 -69
- package/dist/feedback.mjs.map +1 -1
- package/dist/forms.d.mts +2 -2
- package/dist/forms.d.ts +2 -2
- package/dist/forms.js +74 -9
- package/dist/forms.js.map +1 -1
- package/dist/forms.mjs +74 -9
- package/dist/forms.mjs.map +1 -1
- package/dist/{icon-button-D-gs0gfj.d.mts → icon-button-CSsDmuQC.d.mts} +19 -0
- package/dist/{icon-button-D-gs0gfj.d.ts → icon-button-CSsDmuQC.d.ts} +19 -0
- package/dist/index.d.mts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +2204 -1464
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2056 -1324
- package/dist/index.mjs.map +1 -1
- package/dist/layout.d.mts +18 -1
- package/dist/layout.d.ts +18 -1
- package/dist/layout.js +80 -15
- package/dist/layout.js.map +1 -1
- package/dist/layout.mjs +80 -15
- package/dist/layout.mjs.map +1 -1
- package/dist/navigation.d.mts +134 -9
- package/dist/navigation.d.ts +134 -9
- package/dist/navigation.js +461 -101
- package/dist/navigation.js.map +1 -1
- package/dist/navigation.mjs +455 -102
- package/dist/navigation.mjs.map +1 -1
- package/dist/overlays.js +261 -197
- package/dist/overlays.js.map +1 -1
- package/dist/overlays.mjs +223 -159
- package/dist/overlays.mjs.map +1 -1
- package/dist/pickers.js +392 -301
- package/dist/pickers.js.map +1 -1
- package/dist/pickers.mjs +361 -270
- package/dist/pickers.mjs.map +1 -1
- package/dist/{split-button-trailing-uncheckable-BkPbiBo3.d.ts → split-button-trailing-uncheckable-C-qQlyZx.d.ts} +118 -25
- package/dist/{split-button-trailing-uncheckable-D_PLPb-u.d.mts → split-button-trailing-uncheckable-DHJqNeq_.d.mts} +118 -25
- package/dist/{text-field-eAIpz9z1.d.mts → text-field-T4Rg-9Bw.d.mts} +7 -0
- package/dist/{text-field-eAIpz9z1.d.ts → text-field-T4Rg-9Bw.d.ts} +7 -0
- package/package.json +3 -3
package/dist/navigation.js
CHANGED
|
@@ -2601,7 +2601,10 @@ function useRippleState(options = {}) {
|
|
|
2601
2601
|
const rect = e.currentTarget.getBoundingClientRect();
|
|
2602
2602
|
const x = e.clientX - rect.left;
|
|
2603
2603
|
const y = e.clientY - rect.top;
|
|
2604
|
-
const rippleSize = Math.
|
|
2604
|
+
const rippleSize = Math.max(
|
|
2605
|
+
Math.hypot(rect.width, rect.height) * 2.5,
|
|
2606
|
+
320
|
|
2607
|
+
);
|
|
2605
2608
|
setRipples((prev) => [
|
|
2606
2609
|
...prev,
|
|
2607
2610
|
{ id: Date.now(), x, y, size: rippleSize }
|
|
@@ -2684,7 +2687,11 @@ var NavigationBarItemComponent = React36__namespace.forwardRef(
|
|
|
2684
2687
|
className,
|
|
2685
2688
|
"aria-label": ariaLabelProp
|
|
2686
2689
|
}, ref) => {
|
|
2687
|
-
const {
|
|
2690
|
+
const {
|
|
2691
|
+
variant,
|
|
2692
|
+
itemLayout,
|
|
2693
|
+
itemClassName: contextItemClassName
|
|
2694
|
+
} = React36__namespace.useContext(NavigationBarContext);
|
|
2688
2695
|
const isForcedHorizontal = itemLayout === "horizontal";
|
|
2689
2696
|
const isResponsiveHorizontal = (variant === "flexible" || variant === "xr") && itemLayout === void 0;
|
|
2690
2697
|
const { ripples, onPointerDown, removeRipple } = useRippleState({
|
|
@@ -2719,9 +2726,10 @@ var NavigationBarItemComponent = React36__namespace.forwardRef(
|
|
|
2719
2726
|
onClick: handleClick,
|
|
2720
2727
|
onPointerDown,
|
|
2721
2728
|
className: cn(
|
|
2722
|
-
"group relative flex
|
|
2723
|
-
variant === "xr" ? "
|
|
2729
|
+
"group relative flex cursor-pointer transition-colors duration-200 outline-none select-none h-full items-center justify-center min-w-0",
|
|
2730
|
+
variant === "xr" ? isResponsiveHorizontal ? "flex-1 min-[600px]:flex-initial min-[600px]:w-auto" : isForcedHorizontal ? "flex-initial w-auto" : "flex-1" : isForcedHorizontal ? "flex-initial w-auto" : "flex-1",
|
|
2724
2731
|
disabled && "pointer-events-none opacity-[0.38]",
|
|
2732
|
+
contextItemClassName,
|
|
2725
2733
|
className
|
|
2726
2734
|
),
|
|
2727
2735
|
children: [
|
|
@@ -2729,9 +2737,9 @@ var NavigationBarItemComponent = React36__namespace.forwardRef(
|
|
|
2729
2737
|
"div",
|
|
2730
2738
|
{
|
|
2731
2739
|
className: cn(
|
|
2732
|
-
"relative flex items-center justify-center flex-col gap-y-1 w-full",
|
|
2733
|
-
isResponsiveHorizontal && "min-[600px]:flex-row min-[600px]:gap-y-0 min-[600px]:gap-x-1 min-[600px]:h-10 min-[600px]:px-4 min-[600px]:
|
|
2734
|
-
isForcedHorizontal && "flex-row gap-y-0 gap-x-1 h-10 px-4 rounded-full w-auto
|
|
2740
|
+
"relative flex items-center justify-center flex-col gap-y-1 w-full px-1 py-1.5",
|
|
2741
|
+
isResponsiveHorizontal && "min-[600px]:flex-row min-[600px]:gap-y-0 min-[600px]:gap-x-1.5 min-[600px]:h-10 min-[600px]:px-4 min-[600px]:py-0 min-[600px]:rounded-full min-[600px]:w-auto",
|
|
2742
|
+
isForcedHorizontal && "flex-row gap-y-0 gap-x-1.5 h-10 px-4 py-0 rounded-full w-auto"
|
|
2735
2743
|
),
|
|
2736
2744
|
children: [
|
|
2737
2745
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2808,7 +2816,7 @@ var navContainerVariants = classVarianceAuthority.cva(
|
|
|
2808
2816
|
variant: {
|
|
2809
2817
|
flexible: "bottom-0 left-0 right-0 w-full h-16 pb-safe",
|
|
2810
2818
|
baseline: "bottom-0 left-0 right-0 w-full h-20 pb-safe",
|
|
2811
|
-
xr: "bottom-6 left-1/2 -translate-x-1/2 w-auto max-w-fit h-20 min-[600px]:h-16 rounded-[48px] px-2"
|
|
2819
|
+
xr: "bottom-6 left-1/2 -translate-x-1/2 w-auto max-w-[calc(100%-2rem)] min-[600px]:max-w-fit h-20 min-[600px]:h-16 rounded-[48px] px-2"
|
|
2812
2820
|
},
|
|
2813
2821
|
position: {
|
|
2814
2822
|
fixed: "fixed",
|
|
@@ -2836,6 +2844,7 @@ var NavigationBarComponent = React36__namespace.forwardRef(
|
|
|
2836
2844
|
scrollContainerRef,
|
|
2837
2845
|
activeIndicatorTransition,
|
|
2838
2846
|
children,
|
|
2847
|
+
itemClassName,
|
|
2839
2848
|
className,
|
|
2840
2849
|
style
|
|
2841
2850
|
}, ref) => {
|
|
@@ -2886,7 +2895,12 @@ var NavigationBarComponent = React36__namespace.forwardRef(
|
|
|
2886
2895
|
return /* @__PURE__ */ jsxRuntime.jsx(react.LazyMotion, { features: react.domMax, strict: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2887
2896
|
NavigationBarContext.Provider,
|
|
2888
2897
|
{
|
|
2889
|
-
value: {
|
|
2898
|
+
value: {
|
|
2899
|
+
variant,
|
|
2900
|
+
itemLayout,
|
|
2901
|
+
activeIndicatorTransition,
|
|
2902
|
+
itemClassName
|
|
2903
|
+
},
|
|
2890
2904
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2891
2905
|
react.m.nav,
|
|
2892
2906
|
{
|
|
@@ -2907,7 +2921,7 @@ var NavigationBarComponent = React36__namespace.forwardRef(
|
|
|
2907
2921
|
"aria-orientation": "horizontal",
|
|
2908
2922
|
className: cn(
|
|
2909
2923
|
"flex w-full h-full mx-auto",
|
|
2910
|
-
variant === "xr" ? "gap-0 min-[600px]:gap-1.5" : "max-w-7xl gap-1.5"
|
|
2924
|
+
variant === "xr" ? "gap-0 min-[600px]:gap-1.5 items-center justify-center px-1" : "max-w-7xl gap-1.5"
|
|
2911
2925
|
),
|
|
2912
2926
|
children
|
|
2913
2927
|
}
|
|
@@ -4650,12 +4664,39 @@ var ProgressIndicator = React36__namespace.forwardRef((props, ref) => {
|
|
|
4650
4664
|
return /* @__PURE__ */ jsxRuntime.jsx(LinearProgress, __spreadValues({ ref }, props));
|
|
4651
4665
|
});
|
|
4652
4666
|
ProgressIndicator.displayName = "ProgressIndicator";
|
|
4653
|
-
var
|
|
4654
|
-
xs: "h-8
|
|
4655
|
-
sm: "h-10
|
|
4656
|
-
md: "h-14
|
|
4657
|
-
lg: "h-24
|
|
4658
|
-
xl: "h-[8.5rem]
|
|
4667
|
+
var SIZE_HEIGHT_STYLES = {
|
|
4668
|
+
xs: "h-8",
|
|
4669
|
+
sm: "h-10",
|
|
4670
|
+
md: "h-14",
|
|
4671
|
+
lg: "h-24",
|
|
4672
|
+
xl: "h-[8.5rem]"
|
|
4673
|
+
};
|
|
4674
|
+
var WIDTH_SIZE_STYLES = {
|
|
4675
|
+
xs: {
|
|
4676
|
+
default: "w-8",
|
|
4677
|
+
narrow: "w-8",
|
|
4678
|
+
wide: "w-12"
|
|
4679
|
+
},
|
|
4680
|
+
sm: {
|
|
4681
|
+
default: "w-10",
|
|
4682
|
+
narrow: "w-12",
|
|
4683
|
+
wide: "w-[3.25rem]"
|
|
4684
|
+
},
|
|
4685
|
+
md: {
|
|
4686
|
+
default: "w-14",
|
|
4687
|
+
narrow: "w-12",
|
|
4688
|
+
wide: "w-[4.5rem]"
|
|
4689
|
+
},
|
|
4690
|
+
lg: {
|
|
4691
|
+
default: "w-24",
|
|
4692
|
+
narrow: "w-16",
|
|
4693
|
+
wide: "w-32"
|
|
4694
|
+
},
|
|
4695
|
+
xl: {
|
|
4696
|
+
default: "w-[8.5rem]",
|
|
4697
|
+
narrow: "w-[6.5rem]",
|
|
4698
|
+
wide: "w-[11.5rem]"
|
|
4699
|
+
}
|
|
4659
4700
|
};
|
|
4660
4701
|
var SIZE_ICON = {
|
|
4661
4702
|
xs: { cls: "size-5", px: 20 },
|
|
@@ -4756,11 +4797,14 @@ var IconButtonComponent = React36__namespace.forwardRef(
|
|
|
4756
4797
|
variant = "default",
|
|
4757
4798
|
colorStyle = "standard",
|
|
4758
4799
|
size = "sm",
|
|
4800
|
+
widthVariant = "default",
|
|
4759
4801
|
shape = "round",
|
|
4760
4802
|
selected,
|
|
4803
|
+
selectedIcon,
|
|
4761
4804
|
loading = false,
|
|
4762
4805
|
loadingVariant = "loading-indicator",
|
|
4763
4806
|
iconSize,
|
|
4807
|
+
asChild = false,
|
|
4764
4808
|
children,
|
|
4765
4809
|
onClick,
|
|
4766
4810
|
onKeyDown,
|
|
@@ -4771,17 +4815,20 @@ var IconButtonComponent = React36__namespace.forwardRef(
|
|
|
4771
4815
|
"variant",
|
|
4772
4816
|
"colorStyle",
|
|
4773
4817
|
"size",
|
|
4818
|
+
"widthVariant",
|
|
4774
4819
|
"shape",
|
|
4775
4820
|
"selected",
|
|
4821
|
+
"selectedIcon",
|
|
4776
4822
|
"loading",
|
|
4777
4823
|
"loadingVariant",
|
|
4778
4824
|
"iconSize",
|
|
4825
|
+
"asChild",
|
|
4779
4826
|
"children",
|
|
4780
4827
|
"onClick",
|
|
4781
4828
|
"onKeyDown",
|
|
4782
4829
|
"aria-label"
|
|
4783
4830
|
]);
|
|
4784
|
-
var _a2, _b2;
|
|
4831
|
+
var _a2, _b2, _c, _d, _e;
|
|
4785
4832
|
const isToggle = variant === "toggle";
|
|
4786
4833
|
const isSelected = isToggle && !!selected;
|
|
4787
4834
|
const resolvedColorClass = React36__namespace.useMemo(
|
|
@@ -4812,6 +4859,8 @@ var IconButtonComponent = React36__namespace.forwardRef(
|
|
|
4812
4859
|
const defaultIconPx = sizeIcon.px;
|
|
4813
4860
|
const iconPx = iconSize != null ? iconSize : defaultIconPx;
|
|
4814
4861
|
const isCustomSize = iconSize != null && iconSize !== "inherit";
|
|
4862
|
+
const heightClass = (_c = SIZE_HEIGHT_STYLES[size]) != null ? _c : SIZE_HEIGHT_STYLES.sm;
|
|
4863
|
+
const widthClass = (_e = ((_d = WIDTH_SIZE_STYLES[size]) != null ? _d : WIDTH_SIZE_STYLES.sm)[widthVariant]) != null ? _e : WIDTH_SIZE_STYLES.sm.default;
|
|
4815
4864
|
const needsTouchTarget = size === "xs" || size === "sm";
|
|
4816
4865
|
const { ripples, onPointerDown, removeRipple } = useRippleState({
|
|
4817
4866
|
disabled: loading
|
|
@@ -4837,7 +4886,90 @@ var IconButtonComponent = React36__namespace.forwardRef(
|
|
|
4837
4886
|
},
|
|
4838
4887
|
[loading, onClick, onKeyDown]
|
|
4839
4888
|
);
|
|
4840
|
-
|
|
4889
|
+
const innerContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4890
|
+
needsTouchTarget && /* @__PURE__ */ jsxRuntime.jsx(TouchTarget, {}),
|
|
4891
|
+
/* @__PURE__ */ jsxRuntime.jsx(Ripple, { ripples, onRippleDone: removeRipple }),
|
|
4892
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.AnimatePresence, { mode: "wait", initial: false, children: loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4893
|
+
react.m.span,
|
|
4894
|
+
__spreadProps(__spreadValues({}, ICON_SPAN_VARIANTS), {
|
|
4895
|
+
transition: SPRING_TRANSITION,
|
|
4896
|
+
className: cn(
|
|
4897
|
+
"flex items-center justify-center shrink-0",
|
|
4898
|
+
iconSize != null ? void 0 : iconClass
|
|
4899
|
+
),
|
|
4900
|
+
style: isCustomSize ? { width: `${iconSize}px`, height: `${iconSize}px` } : void 0,
|
|
4901
|
+
children: loadingVariant === "loading-indicator" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4902
|
+
LoadingIndicator,
|
|
4903
|
+
{
|
|
4904
|
+
size: typeof iconPx === "number" ? iconPx : defaultIconPx,
|
|
4905
|
+
color: "currentColor",
|
|
4906
|
+
"aria-label": "Loading"
|
|
4907
|
+
}
|
|
4908
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
4909
|
+
ProgressIndicator,
|
|
4910
|
+
{
|
|
4911
|
+
variant: "circular",
|
|
4912
|
+
size: typeof iconPx === "number" ? iconPx : defaultIconPx,
|
|
4913
|
+
color: "currentColor",
|
|
4914
|
+
trackColor: "transparent",
|
|
4915
|
+
"aria-label": "Loading"
|
|
4916
|
+
}
|
|
4917
|
+
)
|
|
4918
|
+
}),
|
|
4919
|
+
"loading"
|
|
4920
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
4921
|
+
react.m.span,
|
|
4922
|
+
__spreadProps(__spreadValues({}, ICON_SPAN_VARIANTS), {
|
|
4923
|
+
transition: SPRING_TRANSITION,
|
|
4924
|
+
"aria-hidden": "true",
|
|
4925
|
+
className: cn(
|
|
4926
|
+
"flex items-center justify-center shrink-0 [&_svg]:w-full [&_svg]:h-full [&_.md-icon]:text-[length:inherit]",
|
|
4927
|
+
iconSize != null ? void 0 : iconClass
|
|
4928
|
+
),
|
|
4929
|
+
style: {
|
|
4930
|
+
fontSize: typeof iconPx === "number" ? `${iconPx}px` : iconPx,
|
|
4931
|
+
width: isCustomSize ? `${iconSize}px` : void 0,
|
|
4932
|
+
height: isCustomSize ? `${iconSize}px` : void 0
|
|
4933
|
+
},
|
|
4934
|
+
children: isSelected && selectedIcon ? selectedIcon : asChild ? React36__namespace.Children.only(children).props.children : children
|
|
4935
|
+
}),
|
|
4936
|
+
isSelected && selectedIcon ? "selected-content" : "content"
|
|
4937
|
+
) })
|
|
4938
|
+
] });
|
|
4939
|
+
const containerClassName = cn(
|
|
4940
|
+
baseIconButtonClasses,
|
|
4941
|
+
resolvedColorClass,
|
|
4942
|
+
outlineWidthClass,
|
|
4943
|
+
disabledBgClass,
|
|
4944
|
+
"overflow-hidden",
|
|
4945
|
+
heightClass,
|
|
4946
|
+
widthClass,
|
|
4947
|
+
loading && "pointer-events-none opacity-75 cursor-not-allowed",
|
|
4948
|
+
className
|
|
4949
|
+
);
|
|
4950
|
+
if (asChild) {
|
|
4951
|
+
const child = React36__namespace.Children.only(children);
|
|
4952
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.LazyMotion, { features: react.domMax, strict: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4953
|
+
reactSlot.Slot,
|
|
4954
|
+
__spreadProps(__spreadValues({
|
|
4955
|
+
ref,
|
|
4956
|
+
"aria-pressed": isToggle ? isSelected : void 0,
|
|
4957
|
+
"aria-label": ariaLabel,
|
|
4958
|
+
"aria-busy": loading || void 0,
|
|
4959
|
+
"aria-disabled": loading || restProps.disabled,
|
|
4960
|
+
onClick: handleClick,
|
|
4961
|
+
onPointerDown,
|
|
4962
|
+
onKeyDown: handleKeyDown,
|
|
4963
|
+
style: __spreadProps(__spreadValues({}, style), {
|
|
4964
|
+
borderRadius: `${animateRadius}px`
|
|
4965
|
+
}),
|
|
4966
|
+
className: containerClassName
|
|
4967
|
+
}, restProps), {
|
|
4968
|
+
children: React36__namespace.cloneElement(child, { children: innerContent })
|
|
4969
|
+
})
|
|
4970
|
+
) });
|
|
4971
|
+
}
|
|
4972
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.LazyMotion, { features: react.domMax, strict: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4841
4973
|
react.m.button,
|
|
4842
4974
|
__spreadProps(__spreadValues({
|
|
4843
4975
|
ref,
|
|
@@ -4853,67 +4985,9 @@ var IconButtonComponent = React36__namespace.forwardRef(
|
|
|
4853
4985
|
animate: { borderRadius: animateRadius },
|
|
4854
4986
|
whileTap: { borderRadius: pressedRadius },
|
|
4855
4987
|
transition: { borderRadius: SPRING_TRANSITION_FAST },
|
|
4856
|
-
className:
|
|
4857
|
-
baseIconButtonClasses,
|
|
4858
|
-
resolvedColorClass,
|
|
4859
|
-
outlineWidthClass,
|
|
4860
|
-
disabledBgClass,
|
|
4861
|
-
"overflow-hidden",
|
|
4862
|
-
SIZE_STYLES[size],
|
|
4863
|
-
loading && "pointer-events-none opacity-75 cursor-not-allowed",
|
|
4864
|
-
className
|
|
4865
|
-
)
|
|
4988
|
+
className: containerClassName
|
|
4866
4989
|
}, restProps), {
|
|
4867
|
-
children:
|
|
4868
|
-
needsTouchTarget && /* @__PURE__ */ jsxRuntime.jsx(TouchTarget, {}),
|
|
4869
|
-
/* @__PURE__ */ jsxRuntime.jsx(Ripple, { ripples, onRippleDone: removeRipple }),
|
|
4870
|
-
/* @__PURE__ */ jsxRuntime.jsx(react.AnimatePresence, { mode: "wait", initial: false, children: loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4871
|
-
react.m.span,
|
|
4872
|
-
__spreadProps(__spreadValues({}, ICON_SPAN_VARIANTS), {
|
|
4873
|
-
transition: SPRING_TRANSITION,
|
|
4874
|
-
className: cn(
|
|
4875
|
-
"flex items-center justify-center shrink-0",
|
|
4876
|
-
iconSize != null ? void 0 : iconClass
|
|
4877
|
-
),
|
|
4878
|
-
style: isCustomSize ? { width: `${iconSize}px`, height: `${iconSize}px` } : void 0,
|
|
4879
|
-
children: loadingVariant === "loading-indicator" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4880
|
-
LoadingIndicator,
|
|
4881
|
-
{
|
|
4882
|
-
size: typeof iconPx === "number" ? iconPx : defaultIconPx,
|
|
4883
|
-
color: "currentColor",
|
|
4884
|
-
"aria-label": "Loading"
|
|
4885
|
-
}
|
|
4886
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
4887
|
-
ProgressIndicator,
|
|
4888
|
-
{
|
|
4889
|
-
variant: "circular",
|
|
4890
|
-
size: typeof iconPx === "number" ? iconPx : defaultIconPx,
|
|
4891
|
-
color: "currentColor",
|
|
4892
|
-
trackColor: "transparent",
|
|
4893
|
-
"aria-label": "Loading"
|
|
4894
|
-
}
|
|
4895
|
-
)
|
|
4896
|
-
}),
|
|
4897
|
-
"loading"
|
|
4898
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
4899
|
-
react.m.span,
|
|
4900
|
-
__spreadProps(__spreadValues({}, ICON_SPAN_VARIANTS), {
|
|
4901
|
-
transition: SPRING_TRANSITION,
|
|
4902
|
-
"aria-hidden": "true",
|
|
4903
|
-
className: cn(
|
|
4904
|
-
"flex items-center justify-center shrink-0 [&_svg]:w-full [&_svg]:h-full [&_.md-icon]:text-[length:inherit]!",
|
|
4905
|
-
iconSize != null ? void 0 : iconClass
|
|
4906
|
-
),
|
|
4907
|
-
style: {
|
|
4908
|
-
fontSize: typeof iconPx === "number" ? `${iconPx}px` : iconPx,
|
|
4909
|
-
width: isCustomSize ? `${iconSize}px` : void 0,
|
|
4910
|
-
height: isCustomSize ? `${iconSize}px` : void 0
|
|
4911
|
-
},
|
|
4912
|
-
children
|
|
4913
|
-
}),
|
|
4914
|
-
"content"
|
|
4915
|
-
) })
|
|
4916
|
-
]
|
|
4990
|
+
children: innerContent
|
|
4917
4991
|
})
|
|
4918
4992
|
) });
|
|
4919
4993
|
}
|
|
@@ -5987,6 +6061,47 @@ var vibrantFloatingToolbarColors = {
|
|
|
5987
6061
|
fabContainerColor: "var(--md-sys-color-tertiary-container)",
|
|
5988
6062
|
fabContentColor: "var(--md-sys-color-on-tertiary-container)"
|
|
5989
6063
|
};
|
|
6064
|
+
var surfaceContainerHighFloatingToolbarColors = {
|
|
6065
|
+
toolbarContainerColor: "var(--md-sys-color-surface-container-high)",
|
|
6066
|
+
toolbarContentColor: "var(--md-sys-color-on-surface)",
|
|
6067
|
+
fabContainerColor: "var(--md-sys-color-secondary-container)",
|
|
6068
|
+
fabContentColor: "var(--md-sys-color-on-secondary-container)"
|
|
6069
|
+
};
|
|
6070
|
+
var surfaceContainerHighestFloatingToolbarColors = {
|
|
6071
|
+
toolbarContainerColor: "var(--md-sys-color-surface-container-highest)",
|
|
6072
|
+
toolbarContentColor: "var(--md-sys-color-on-surface)",
|
|
6073
|
+
fabContainerColor: "var(--md-sys-color-secondary-container)",
|
|
6074
|
+
fabContentColor: "var(--md-sys-color-on-secondary-container)"
|
|
6075
|
+
};
|
|
6076
|
+
var tertiaryContainerFloatingToolbarColors = {
|
|
6077
|
+
toolbarContainerColor: "var(--md-sys-color-tertiary-container)",
|
|
6078
|
+
toolbarContentColor: "var(--md-sys-color-on-tertiary-container)",
|
|
6079
|
+
fabContainerColor: "var(--md-sys-color-primary-container)",
|
|
6080
|
+
fabContentColor: "var(--md-sys-color-on-primary-container)"
|
|
6081
|
+
};
|
|
6082
|
+
var xrFloatingToolbarColors = {
|
|
6083
|
+
toolbarContainerColor: "color-mix(in srgb, var(--md-sys-color-surface-container-high) 80%, transparent)",
|
|
6084
|
+
toolbarContentColor: "var(--md-sys-color-on-surface)",
|
|
6085
|
+
fabContainerColor: "color-mix(in srgb, var(--md-sys-color-secondary-container) 85%, transparent)",
|
|
6086
|
+
fabContentColor: "var(--md-sys-color-on-secondary-container)"
|
|
6087
|
+
};
|
|
6088
|
+
function getToolbarColors(variant = "standard", customColors) {
|
|
6089
|
+
if (customColors) return customColors;
|
|
6090
|
+
switch (variant) {
|
|
6091
|
+
case "vibrant":
|
|
6092
|
+
return vibrantFloatingToolbarColors;
|
|
6093
|
+
case "surface-high":
|
|
6094
|
+
return surfaceContainerHighFloatingToolbarColors;
|
|
6095
|
+
case "surface-highest":
|
|
6096
|
+
return surfaceContainerHighestFloatingToolbarColors;
|
|
6097
|
+
case "tertiary":
|
|
6098
|
+
return tertiaryContainerFloatingToolbarColors;
|
|
6099
|
+
case "xr":
|
|
6100
|
+
return xrFloatingToolbarColors;
|
|
6101
|
+
default:
|
|
6102
|
+
return standardFloatingToolbarColors;
|
|
6103
|
+
}
|
|
6104
|
+
}
|
|
5990
6105
|
var ToolbarContext = React36__namespace.createContext(
|
|
5991
6106
|
null
|
|
5992
6107
|
);
|
|
@@ -6022,7 +6137,7 @@ var BottomDockedToolbar = React36__namespace.forwardRef(
|
|
|
6022
6137
|
"className",
|
|
6023
6138
|
"aria-label"
|
|
6024
6139
|
]);
|
|
6025
|
-
const colors =
|
|
6140
|
+
const colors = getToolbarColors(variant, customColors);
|
|
6026
6141
|
const { scrollY } = react.useScroll(
|
|
6027
6142
|
scrollContainerRef ? { container: scrollContainerRef } : void 0
|
|
6028
6143
|
);
|
|
@@ -6051,6 +6166,7 @@ var BottomDockedToolbar = React36__namespace.forwardRef(
|
|
|
6051
6166
|
full: "rounded-full"
|
|
6052
6167
|
};
|
|
6053
6168
|
const justifyClass = justify === "center" ? "justify-center gap-4" : "justify-between";
|
|
6169
|
+
const isXr = variant === "xr";
|
|
6054
6170
|
return /* @__PURE__ */ jsxRuntime.jsx(ToolbarContext.Provider, { value: { orientation: "horizontal" }, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6055
6171
|
react.m.div,
|
|
6056
6172
|
__spreadProps(__spreadValues({
|
|
@@ -6071,11 +6187,12 @@ var BottomDockedToolbar = React36__namespace.forwardRef(
|
|
|
6071
6187
|
paddingRight: paddingX
|
|
6072
6188
|
}),
|
|
6073
6189
|
className: cn(
|
|
6074
|
-
"fixed bottom-0 left-0 right-0 w-full z-40",
|
|
6190
|
+
"fixed bottom-0 left-0 right-0 w-full z-40 text-(--toolbar-color) [&_.text-m3-on-surface-variant]:text-current",
|
|
6075
6191
|
"flex items-center h-16",
|
|
6076
6192
|
justifyClass,
|
|
6077
6193
|
SHAPE_CLASSES[shape],
|
|
6078
|
-
"shadow-[0_-1px_3px_rgba(0,0,0,0.1)]
|
|
6194
|
+
isXr ? "backdrop-blur-md border-t border-white/10 shadow-lg" : "shadow-[0_-1px_3px_rgba(0,0,0,0.1)]",
|
|
6195
|
+
"pointer-events-auto",
|
|
6079
6196
|
className
|
|
6080
6197
|
)
|
|
6081
6198
|
}, props), {
|
|
@@ -6122,6 +6239,13 @@ var ToolbarIconButtonTokens = {
|
|
|
6122
6239
|
/** Icon size in dp — larger than standard 24dp to fill the 48dp button properly */
|
|
6123
6240
|
IconSize: 28
|
|
6124
6241
|
};
|
|
6242
|
+
var ToolbarToggleButtonTokens = {
|
|
6243
|
+
Height: 48,
|
|
6244
|
+
MinWidth: 95,
|
|
6245
|
+
IconSize: 24,
|
|
6246
|
+
PaddingX: 16,
|
|
6247
|
+
Gap: 8
|
|
6248
|
+
};
|
|
6125
6249
|
var ALIGNMENT_CLASS = {
|
|
6126
6250
|
start: "justify-start",
|
|
6127
6251
|
center: "justify-center",
|
|
@@ -6180,7 +6304,8 @@ var FloatingToolbarBase = React36__namespace.forwardRef(
|
|
|
6180
6304
|
var _b = _a, {
|
|
6181
6305
|
expanded,
|
|
6182
6306
|
orientation = "horizontal",
|
|
6183
|
-
|
|
6307
|
+
variant = "standard",
|
|
6308
|
+
colors: customColors,
|
|
6184
6309
|
shape = "full",
|
|
6185
6310
|
contentPadding,
|
|
6186
6311
|
scrollBehavior,
|
|
@@ -6198,6 +6323,7 @@ var FloatingToolbarBase = React36__namespace.forwardRef(
|
|
|
6198
6323
|
} = _b, props = __objRest(_b, [
|
|
6199
6324
|
"expanded",
|
|
6200
6325
|
"orientation",
|
|
6326
|
+
"variant",
|
|
6201
6327
|
"colors",
|
|
6202
6328
|
"shape",
|
|
6203
6329
|
"contentPadding",
|
|
@@ -6214,6 +6340,7 @@ var FloatingToolbarBase = React36__namespace.forwardRef(
|
|
|
6214
6340
|
"style",
|
|
6215
6341
|
"aria-label"
|
|
6216
6342
|
]);
|
|
6343
|
+
const colors = getToolbarColors(variant, customColors);
|
|
6217
6344
|
const isHorizontal = orientation === "horizontal";
|
|
6218
6345
|
const isStringPadding = typeof contentPadding === "string";
|
|
6219
6346
|
const cssVars = __spreadValues(__spreadValues({
|
|
@@ -6222,7 +6349,8 @@ var FloatingToolbarBase = React36__namespace.forwardRef(
|
|
|
6222
6349
|
"--toolbar-size": `${FloatingToolbarTokens.ContainerHeight}px`
|
|
6223
6350
|
}, isStringPadding ? {} : contentPadding), style);
|
|
6224
6351
|
const isScrolledOff = scrollBehavior && scrollBehavior.offset < 0;
|
|
6225
|
-
const
|
|
6352
|
+
const isXr = variant === "xr";
|
|
6353
|
+
const shadowClass = isXr ? "shadow-lg border border-white/10 backdrop-blur-md" : expanded ? "shadow-md" : "shadow-sm";
|
|
6226
6354
|
const containerShapeClass = shape === "full" ? "rounded-full" : "rounded-2xl";
|
|
6227
6355
|
const leadingVariants = buildSlotVariants(
|
|
6228
6356
|
isHorizontal ? "-100%" : 0,
|
|
@@ -6239,7 +6367,7 @@ var FloatingToolbarBase = React36__namespace.forwardRef(
|
|
|
6239
6367
|
scrollBehavior,
|
|
6240
6368
|
disableScrollTranslation
|
|
6241
6369
|
);
|
|
6242
|
-
return /* @__PURE__ */ jsxRuntime.jsx(ToolbarContext.Provider, { value: { orientation }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6370
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ToolbarContext.Provider, { value: { orientation, itemClassName }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6243
6371
|
react.m.div,
|
|
6244
6372
|
{
|
|
6245
6373
|
ref,
|
|
@@ -6261,8 +6389,8 @@ var FloatingToolbarBase = React36__namespace.forwardRef(
|
|
|
6261
6389
|
color: "var(--toolbar-color)"
|
|
6262
6390
|
}),
|
|
6263
6391
|
className: cn(
|
|
6264
|
-
"flex pointer-events-auto relative",
|
|
6265
|
-
isHorizontal ? "max-w-[90vw] h-(--toolbar-size)" : "max-h-[90vh] w-(--toolbar-size) h-fit",
|
|
6392
|
+
"flex pointer-events-auto relative text-(--toolbar-color) [&_.text-m3-on-surface-variant]:text-current",
|
|
6393
|
+
isHorizontal ? "max-w-[min(90vw,100%)] h-(--toolbar-size)" : "max-h-[min(90vh,100%)] w-(--toolbar-size) h-fit",
|
|
6266
6394
|
containerShapeClass,
|
|
6267
6395
|
shadowClass,
|
|
6268
6396
|
className
|
|
@@ -6279,11 +6407,13 @@ var FloatingToolbarBase = React36__namespace.forwardRef(
|
|
|
6279
6407
|
"div",
|
|
6280
6408
|
{
|
|
6281
6409
|
className: cn(
|
|
6282
|
-
"flex items-center
|
|
6410
|
+
"flex items-center min-w-0 min-h-0",
|
|
6283
6411
|
isHorizontal ? "flex-row h-full" : "flex-col w-full",
|
|
6284
|
-
isStringPadding ? contentPadding : isHorizontal ? "px-
|
|
6412
|
+
isStringPadding ? contentPadding : isHorizontal ? "px-2" : "py-2"
|
|
6285
6413
|
),
|
|
6286
|
-
style:
|
|
6414
|
+
style: __spreadValues({
|
|
6415
|
+
gap: itemGap
|
|
6416
|
+
}, isStringPadding ? {} : contentPadding),
|
|
6287
6417
|
children: [
|
|
6288
6418
|
/* @__PURE__ */ jsxRuntime.jsx(react.AnimatePresence, { initial: false, children: expanded && startContent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6289
6419
|
react.m.div,
|
|
@@ -6293,9 +6423,10 @@ var FloatingToolbarBase = React36__namespace.forwardRef(
|
|
|
6293
6423
|
animate: "visible",
|
|
6294
6424
|
exit: "hidden",
|
|
6295
6425
|
className: cn(
|
|
6296
|
-
"flex shrink-0 overflow-hidden",
|
|
6426
|
+
"flex shrink-0 items-center overflow-hidden",
|
|
6297
6427
|
isHorizontal ? "flex-row" : "flex-col"
|
|
6298
6428
|
),
|
|
6429
|
+
style: { gap: itemGap },
|
|
6299
6430
|
children: processNodes(startContent)
|
|
6300
6431
|
},
|
|
6301
6432
|
"start"
|
|
@@ -6320,9 +6451,10 @@ var FloatingToolbarBase = React36__namespace.forwardRef(
|
|
|
6320
6451
|
animate: "visible",
|
|
6321
6452
|
exit: "hidden",
|
|
6322
6453
|
className: cn(
|
|
6323
|
-
"flex shrink-0 overflow-hidden",
|
|
6454
|
+
"flex shrink-0 items-center overflow-hidden",
|
|
6324
6455
|
isHorizontal ? "flex-row" : "flex-col"
|
|
6325
6456
|
),
|
|
6457
|
+
style: { gap: itemGap },
|
|
6326
6458
|
children: processNodes(endContent)
|
|
6327
6459
|
},
|
|
6328
6460
|
"end"
|
|
@@ -6348,7 +6480,8 @@ var FloatingToolbarWithFabBase = React36__namespace.forwardRef(
|
|
|
6348
6480
|
var _b = _a, {
|
|
6349
6481
|
expanded,
|
|
6350
6482
|
orientation = "horizontal",
|
|
6351
|
-
|
|
6483
|
+
variant = "standard",
|
|
6484
|
+
colors: customColors,
|
|
6352
6485
|
floatingActionButton,
|
|
6353
6486
|
fabPosition = orientation === "horizontal" ? "end" : "bottom",
|
|
6354
6487
|
animationDuration = 0.3,
|
|
@@ -6359,6 +6492,7 @@ var FloatingToolbarWithFabBase = React36__namespace.forwardRef(
|
|
|
6359
6492
|
} = _b, props = __objRest(_b, [
|
|
6360
6493
|
"expanded",
|
|
6361
6494
|
"orientation",
|
|
6495
|
+
"variant",
|
|
6362
6496
|
"colors",
|
|
6363
6497
|
"floatingActionButton",
|
|
6364
6498
|
"fabPosition",
|
|
@@ -6368,6 +6502,7 @@ var FloatingToolbarWithFabBase = React36__namespace.forwardRef(
|
|
|
6368
6502
|
"className",
|
|
6369
6503
|
"style"
|
|
6370
6504
|
]);
|
|
6505
|
+
const colors = getToolbarColors(variant, customColors);
|
|
6371
6506
|
const isHorizontal = orientation === "horizontal";
|
|
6372
6507
|
const effectiveExpanded = expanded && (!scrollBehavior || scrollBehavior.isExpanded);
|
|
6373
6508
|
const isFabBefore = fabPosition === "start" || fabPosition === "top";
|
|
@@ -6445,7 +6580,8 @@ var FloatingToolbarWithFabBase = React36__namespace.forwardRef(
|
|
|
6445
6580
|
expanded,
|
|
6446
6581
|
colors,
|
|
6447
6582
|
disableScrollTranslation: true,
|
|
6448
|
-
disableLayoutAnimation: true
|
|
6583
|
+
disableLayoutAnimation: true,
|
|
6584
|
+
className: className ? cn("h-full", className) : void 0
|
|
6449
6585
|
}, props)
|
|
6450
6586
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
6451
6587
|
VerticalFloatingToolbar,
|
|
@@ -6453,7 +6589,8 @@ var FloatingToolbarWithFabBase = React36__namespace.forwardRef(
|
|
|
6453
6589
|
expanded,
|
|
6454
6590
|
colors,
|
|
6455
6591
|
disableScrollTranslation: true,
|
|
6456
|
-
disableLayoutAnimation: true
|
|
6592
|
+
disableLayoutAnimation: true,
|
|
6593
|
+
className: className ? cn("w-full", className) : void 0
|
|
6457
6594
|
}, props)
|
|
6458
6595
|
)
|
|
6459
6596
|
},
|
|
@@ -6483,7 +6620,7 @@ var ToolbarDivider = ({
|
|
|
6483
6620
|
"aria-orientation": isHorizontalToolbar ? "vertical" : "horizontal",
|
|
6484
6621
|
className: cn(
|
|
6485
6622
|
"shrink-0 bg-current opacity-30 border-none",
|
|
6486
|
-
isHorizontalToolbar ? "w-px h-8 self-center mx-
|
|
6623
|
+
isHorizontalToolbar ? "w-px h-8 self-center mx-1" : "h-px w-8 self-center my-1",
|
|
6487
6624
|
className
|
|
6488
6625
|
),
|
|
6489
6626
|
style: {
|
|
@@ -6506,20 +6643,47 @@ var VARIANT_TO_COLOR_STYLE = {
|
|
|
6506
6643
|
};
|
|
6507
6644
|
var ToolbarIconButton = React36__namespace.forwardRef(
|
|
6508
6645
|
(_a, ref) => {
|
|
6509
|
-
var _b = _a, {
|
|
6646
|
+
var _b = _a, {
|
|
6647
|
+
emphasis = "standard",
|
|
6648
|
+
toolbarSize = "default",
|
|
6649
|
+
selected,
|
|
6650
|
+
asChild,
|
|
6651
|
+
className
|
|
6652
|
+
} = _b, props = __objRest(_b, [
|
|
6653
|
+
"emphasis",
|
|
6654
|
+
"toolbarSize",
|
|
6655
|
+
"selected",
|
|
6656
|
+
"asChild",
|
|
6657
|
+
"className"
|
|
6658
|
+
]);
|
|
6659
|
+
const context = useToolbarContext();
|
|
6510
6660
|
const widthClass = TOOLBAR_ICON_BUTTON_WIDTH[toolbarSize];
|
|
6511
6661
|
const colorStyle = VARIANT_TO_COLOR_STYLE[emphasis];
|
|
6662
|
+
const iconButtonProps = selected !== void 0 ? {
|
|
6663
|
+
variant: "toggle",
|
|
6664
|
+
selected: Boolean(selected)
|
|
6665
|
+
} : {
|
|
6666
|
+
variant: "default"
|
|
6667
|
+
};
|
|
6512
6668
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6513
6669
|
IconButton,
|
|
6514
|
-
__spreadValues({
|
|
6670
|
+
__spreadValues(__spreadProps(__spreadValues({
|
|
6515
6671
|
ref,
|
|
6516
|
-
|
|
6672
|
+
asChild,
|
|
6517
6673
|
colorStyle,
|
|
6518
6674
|
size: "md",
|
|
6519
6675
|
shape: "round",
|
|
6520
|
-
iconSize: ToolbarIconButtonTokens.IconSize
|
|
6521
|
-
|
|
6522
|
-
|
|
6676
|
+
iconSize: ToolbarIconButtonTokens.IconSize
|
|
6677
|
+
}, iconButtonProps), {
|
|
6678
|
+
className: cn(
|
|
6679
|
+
"h-[48px]",
|
|
6680
|
+
widthClass,
|
|
6681
|
+
emphasis === "standard" && !selected && "text-current hover:bg-current/8 active:bg-current/12",
|
|
6682
|
+
emphasis === "standard" && selected && "bg-current/16 text-current hover:bg-current/20 active:bg-current/24",
|
|
6683
|
+
context == null ? void 0 : context.itemClassName,
|
|
6684
|
+
className
|
|
6685
|
+
)
|
|
6686
|
+
}), props)
|
|
6523
6687
|
);
|
|
6524
6688
|
}
|
|
6525
6689
|
);
|
|
@@ -6590,6 +6754,195 @@ function useFloatingToolbarScrollBehavior(options = {}) {
|
|
|
6590
6754
|
exitDirection
|
|
6591
6755
|
};
|
|
6592
6756
|
}
|
|
6757
|
+
var MOTION_PROP_KEYS = [
|
|
6758
|
+
"animate",
|
|
6759
|
+
"exit",
|
|
6760
|
+
"initial",
|
|
6761
|
+
"transition",
|
|
6762
|
+
"variants",
|
|
6763
|
+
"whileHover",
|
|
6764
|
+
"whileTap",
|
|
6765
|
+
"whileFocus",
|
|
6766
|
+
"whileDrag",
|
|
6767
|
+
"whileInView",
|
|
6768
|
+
"onAnimationStart",
|
|
6769
|
+
"onAnimationComplete",
|
|
6770
|
+
"onUpdate",
|
|
6771
|
+
"onDragStart",
|
|
6772
|
+
"onDragEnd",
|
|
6773
|
+
"onDrag",
|
|
6774
|
+
"onDirectionLock",
|
|
6775
|
+
"onDragTransitionEnd",
|
|
6776
|
+
"layout",
|
|
6777
|
+
"layoutId",
|
|
6778
|
+
"onLayoutAnimationComplete"
|
|
6779
|
+
];
|
|
6780
|
+
var ToolbarToggleButton = React36__namespace.forwardRef(
|
|
6781
|
+
(_a, ref) => {
|
|
6782
|
+
var _b = _a, {
|
|
6783
|
+
emphasis = "standard",
|
|
6784
|
+
selected = false,
|
|
6785
|
+
icon,
|
|
6786
|
+
children,
|
|
6787
|
+
pressScale = 0.95,
|
|
6788
|
+
pressBounceOffset = 6,
|
|
6789
|
+
ripple = true,
|
|
6790
|
+
asChild = false,
|
|
6791
|
+
className,
|
|
6792
|
+
type = "button",
|
|
6793
|
+
disabled,
|
|
6794
|
+
onPointerDown: onPointerDownProp
|
|
6795
|
+
} = _b, props = __objRest(_b, [
|
|
6796
|
+
"emphasis",
|
|
6797
|
+
"selected",
|
|
6798
|
+
"icon",
|
|
6799
|
+
"children",
|
|
6800
|
+
"pressScale",
|
|
6801
|
+
"pressBounceOffset",
|
|
6802
|
+
"ripple",
|
|
6803
|
+
"asChild",
|
|
6804
|
+
"className",
|
|
6805
|
+
"type",
|
|
6806
|
+
"disabled",
|
|
6807
|
+
"onPointerDown"
|
|
6808
|
+
]);
|
|
6809
|
+
const context = useToolbarContext();
|
|
6810
|
+
const {
|
|
6811
|
+
ripples,
|
|
6812
|
+
onPointerDown: handleRipplePointerDown,
|
|
6813
|
+
removeRipple
|
|
6814
|
+
} = useRippleState({
|
|
6815
|
+
disabled: Boolean(disabled) || !ripple
|
|
6816
|
+
});
|
|
6817
|
+
const handlePointerDown = React36__namespace.useCallback(
|
|
6818
|
+
(e) => {
|
|
6819
|
+
if (!disabled && ripple) {
|
|
6820
|
+
handleRipplePointerDown(e);
|
|
6821
|
+
}
|
|
6822
|
+
onPointerDownProp == null ? void 0 : onPointerDownProp(e);
|
|
6823
|
+
},
|
|
6824
|
+
[disabled, ripple, handleRipplePointerDown, onPointerDownProp]
|
|
6825
|
+
);
|
|
6826
|
+
const baseClasses = "relative overflow-hidden inline-flex items-center justify-center min-w-[95px] h-[48px] px-4 rounded-full text-sm font-medium transition-colors select-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-current/40 disabled:pointer-events-none disabled:opacity-38";
|
|
6827
|
+
const variantClasses = {
|
|
6828
|
+
standard: selected ? "bg-current/16 text-current hover:bg-current/20 active:bg-current/24" : "bg-transparent text-current hover:bg-current/8 active:bg-current/12",
|
|
6829
|
+
tonal: selected ? "bg-m3-secondary-container text-m3-on-secondary-container hover:shadow-sm" : "bg-m3-surface-container-high text-m3-on-surface hover:bg-m3-surface-container-highest",
|
|
6830
|
+
filled: selected ? "bg-m3-primary text-m3-on-primary hover:shadow-sm" : "bg-m3-surface-container-highest text-m3-on-surface hover:bg-m3-surface-container-high"
|
|
6831
|
+
};
|
|
6832
|
+
const combinedClassName = cn(
|
|
6833
|
+
baseClasses,
|
|
6834
|
+
variantClasses[emphasis],
|
|
6835
|
+
context == null ? void 0 : context.itemClassName,
|
|
6836
|
+
className
|
|
6837
|
+
);
|
|
6838
|
+
const whileTapConfig = React36__namespace.useMemo(
|
|
6839
|
+
() => ({
|
|
6840
|
+
scale: pressScale,
|
|
6841
|
+
x: pressBounceOffset ? [
|
|
6842
|
+
0,
|
|
6843
|
+
-pressBounceOffset,
|
|
6844
|
+
pressBounceOffset,
|
|
6845
|
+
-pressBounceOffset / 2,
|
|
6846
|
+
pressBounceOffset / 2,
|
|
6847
|
+
0
|
|
6848
|
+
] : 0
|
|
6849
|
+
}),
|
|
6850
|
+
[pressScale, pressBounceOffset]
|
|
6851
|
+
);
|
|
6852
|
+
const transitionConfig = React36__namespace.useMemo(
|
|
6853
|
+
() => ({
|
|
6854
|
+
scale: FAST_SPATIAL_SPRING,
|
|
6855
|
+
x: {
|
|
6856
|
+
duration: 0.35,
|
|
6857
|
+
ease: "easeInOut"
|
|
6858
|
+
}
|
|
6859
|
+
}),
|
|
6860
|
+
[]
|
|
6861
|
+
);
|
|
6862
|
+
const mainContent = /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center justify-center h-full gap-2", children: [
|
|
6863
|
+
icon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6864
|
+
"span",
|
|
6865
|
+
{
|
|
6866
|
+
className: "shrink-0 inline-flex items-center justify-center",
|
|
6867
|
+
style: {
|
|
6868
|
+
width: ToolbarToggleButtonTokens.IconSize,
|
|
6869
|
+
height: ToolbarToggleButtonTokens.IconSize
|
|
6870
|
+
},
|
|
6871
|
+
children: icon
|
|
6872
|
+
}
|
|
6873
|
+
),
|
|
6874
|
+
children && (typeof children === "string" || typeof children === "number" ? /* @__PURE__ */ jsxRuntime.jsx("span", { children }) : children)
|
|
6875
|
+
] });
|
|
6876
|
+
if (asChild) {
|
|
6877
|
+
const child = React36__namespace.Children.only(children);
|
|
6878
|
+
const childContent = child.props.children;
|
|
6879
|
+
const innerChildContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6880
|
+
ripple && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6881
|
+
Ripple,
|
|
6882
|
+
{
|
|
6883
|
+
ripples,
|
|
6884
|
+
onRippleDone: removeRipple,
|
|
6885
|
+
disabled
|
|
6886
|
+
}
|
|
6887
|
+
),
|
|
6888
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center justify-center h-full gap-2", children: icon ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6889
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6890
|
+
"span",
|
|
6891
|
+
{
|
|
6892
|
+
className: "shrink-0 inline-flex items-center justify-center",
|
|
6893
|
+
style: {
|
|
6894
|
+
width: ToolbarToggleButtonTokens.IconSize,
|
|
6895
|
+
height: ToolbarToggleButtonTokens.IconSize
|
|
6896
|
+
},
|
|
6897
|
+
children: icon
|
|
6898
|
+
}
|
|
6899
|
+
),
|
|
6900
|
+
typeof childContent === "string" || typeof childContent === "number" ? /* @__PURE__ */ jsxRuntime.jsx("span", { children: childContent }) : childContent
|
|
6901
|
+
] }) : childContent })
|
|
6902
|
+
] });
|
|
6903
|
+
const strippedProps = __spreadValues({}, props);
|
|
6904
|
+
for (const key of MOTION_PROP_KEYS) delete strippedProps[key];
|
|
6905
|
+
delete strippedProps.children;
|
|
6906
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.LazyMotion, { features: react.domMax, strict: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6907
|
+
reactSlot.Slot,
|
|
6908
|
+
__spreadProps(__spreadValues({
|
|
6909
|
+
ref,
|
|
6910
|
+
"aria-pressed": selected,
|
|
6911
|
+
className: combinedClassName,
|
|
6912
|
+
onPointerDown: handlePointerDown
|
|
6913
|
+
}, strippedProps), {
|
|
6914
|
+
children: React36__namespace.cloneElement(child, { children: innerChildContent })
|
|
6915
|
+
})
|
|
6916
|
+
) });
|
|
6917
|
+
}
|
|
6918
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.LazyMotion, { features: react.domMax, strict: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6919
|
+
react.m.button,
|
|
6920
|
+
__spreadProps(__spreadValues({
|
|
6921
|
+
ref,
|
|
6922
|
+
type,
|
|
6923
|
+
"aria-pressed": selected,
|
|
6924
|
+
disabled,
|
|
6925
|
+
whileTap: whileTapConfig,
|
|
6926
|
+
transition: transitionConfig,
|
|
6927
|
+
onPointerDown: handlePointerDown,
|
|
6928
|
+
className: combinedClassName
|
|
6929
|
+
}, props), {
|
|
6930
|
+
children: [
|
|
6931
|
+
ripple && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6932
|
+
Ripple,
|
|
6933
|
+
{
|
|
6934
|
+
ripples,
|
|
6935
|
+
onRippleDone: removeRipple,
|
|
6936
|
+
disabled
|
|
6937
|
+
}
|
|
6938
|
+
),
|
|
6939
|
+
mainContent
|
|
6940
|
+
]
|
|
6941
|
+
})
|
|
6942
|
+
) });
|
|
6943
|
+
}
|
|
6944
|
+
);
|
|
6945
|
+
ToolbarToggleButton.displayName = "ToolbarToggleButton";
|
|
6593
6946
|
|
|
6594
6947
|
exports.APP_BAR_BOTTOM_SPRING = APP_BAR_BOTTOM_SPRING;
|
|
6595
6948
|
exports.APP_BAR_COLORS = APP_BAR_COLORS;
|
|
@@ -6665,6 +7018,8 @@ exports.ToolbarDivider = ToolbarDivider;
|
|
|
6665
7018
|
exports.ToolbarDividerTokens = ToolbarDividerTokens;
|
|
6666
7019
|
exports.ToolbarIconButton = ToolbarIconButton;
|
|
6667
7020
|
exports.ToolbarIconButtonTokens = ToolbarIconButtonTokens;
|
|
7021
|
+
exports.ToolbarToggleButton = ToolbarToggleButton;
|
|
7022
|
+
exports.ToolbarToggleButtonTokens = ToolbarToggleButtonTokens;
|
|
6668
7023
|
exports.VIBRANT_COLORS = VIBRANT_COLORS;
|
|
6669
7024
|
exports.VerticalFloatingToolbar = VerticalFloatingToolbar;
|
|
6670
7025
|
exports.VerticalFloatingToolbarWithFab = VerticalFloatingToolbarWithFab;
|
|
@@ -6673,12 +7028,17 @@ exports.VerticalMenuContent = VerticalMenuContent;
|
|
|
6673
7028
|
exports.VerticalMenuDivider = VerticalMenuDivider;
|
|
6674
7029
|
exports.VerticalMenuGroup = VerticalMenuGroup;
|
|
6675
7030
|
exports.appBarTypography = appBarTypography;
|
|
7031
|
+
exports.getToolbarColors = getToolbarColors;
|
|
6676
7032
|
exports.standardFloatingToolbarColors = standardFloatingToolbarColors;
|
|
7033
|
+
exports.surfaceContainerHighFloatingToolbarColors = surfaceContainerHighFloatingToolbarColors;
|
|
7034
|
+
exports.surfaceContainerHighestFloatingToolbarColors = surfaceContainerHighestFloatingToolbarColors;
|
|
7035
|
+
exports.tertiaryContainerFloatingToolbarColors = tertiaryContainerFloatingToolbarColors;
|
|
6677
7036
|
exports.useAppBarScroll = useAppBarScroll;
|
|
6678
7037
|
exports.useFloatingToolbarScrollBehavior = useFloatingToolbarScrollBehavior;
|
|
6679
7038
|
exports.useMenuContext = useMenuContext;
|
|
6680
7039
|
exports.useSearch = useSearch;
|
|
6681
7040
|
exports.useSearchKeyboard = useSearchKeyboard;
|
|
6682
7041
|
exports.vibrantFloatingToolbarColors = vibrantFloatingToolbarColors;
|
|
7042
|
+
exports.xrFloatingToolbarColors = xrFloatingToolbarColors;
|
|
6683
7043
|
//# sourceMappingURL=navigation.js.map
|
|
6684
7044
|
//# sourceMappingURL=navigation.js.map
|