@bug-on/md3-react 3.0.0 → 3.0.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/.turbo/turbo-build.log +20 -12
- package/CHANGELOG.md +24 -0
- package/dist/index.css +178 -0
- package/dist/index.d.mts +65 -6
- package/dist/index.d.ts +65 -6
- package/dist/index.js +796 -487
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +742 -436
- package/dist/index.mjs.map +1 -1
- package/dist/plugin.d.mts +1 -0
- package/dist/plugin.d.ts +1 -0
- package/dist/plugin.js +13 -0
- package/dist/plugin.js.map +1 -0
- package/dist/plugin.mjs +3 -0
- package/dist/plugin.mjs.map +1 -0
- package/package.json +8 -2
- package/scripts/copy-assets.js +36 -3
- package/src/index.ts +9 -1
- package/src/lib/theme-utils.ts +19 -4
- package/src/plugin.ts +12 -0
- package/src/ui/button.test.tsx +19 -10
- package/src/ui/button.tsx +2 -6
- package/src/ui/navigation-bar.test.tsx +111 -0
- package/src/ui/navigation-bar.tsx +448 -0
- package/src/ui/navigation-rail.test.tsx +5 -4
- package/src/ui/navigation-rail.tsx +28 -26
- package/src/ui/scroll-area.tsx +4 -0
- package/src/ui/shared/constants.ts +13 -0
- package/src/ui/theme-provider/index.tsx +32 -7
- package/tsup.config.ts +3 -3
- package/test_output.txt +0 -164
- package/test_output_v2.txt +0 -5
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import * as
|
|
2
|
+
import * as React39 from 'react';
|
|
3
3
|
import { createContext, forwardRef, useMemo, useRef, useEffect, useState, useCallback, useContext, useId, cloneElement, useLayoutEffect, createElement } from 'react';
|
|
4
4
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
5
5
|
import { argbFromHex, themeFromSourceColor, hexFromArgb } from '@material/material-color-utilities';
|
|
@@ -153,6 +153,11 @@ function MaterialSymbolsPreconnect({
|
|
|
153
153
|
)
|
|
154
154
|
] });
|
|
155
155
|
}
|
|
156
|
+
function resolveMode(mode) {
|
|
157
|
+
if (mode !== "system") return mode;
|
|
158
|
+
if (typeof window === "undefined") return "light";
|
|
159
|
+
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
160
|
+
}
|
|
156
161
|
function generateM3Theme(sourceColorHex, mode = "light") {
|
|
157
162
|
const sourceColor = argbFromHex(sourceColorHex);
|
|
158
163
|
const theme = themeFromSourceColor(sourceColor);
|
|
@@ -211,13 +216,14 @@ function generateM3Theme(sourceColorHex, mode = "light") {
|
|
|
211
216
|
};
|
|
212
217
|
}
|
|
213
218
|
function applyTheme(sourceColorHex, mode = "light", root = document.documentElement) {
|
|
214
|
-
const
|
|
219
|
+
const resolved = resolveMode(mode);
|
|
220
|
+
const colors = generateM3Theme(sourceColorHex, resolved);
|
|
215
221
|
for (const [key, value] of Object.entries(colors)) {
|
|
216
|
-
const kebabKey = key.replace(/[A-Z]/g, (
|
|
222
|
+
const kebabKey = key.replace(/[A-Z]/g, (m48) => `-${m48.toLowerCase()}`);
|
|
217
223
|
root.style.setProperty(`--md-sys-color-${kebabKey}`, value);
|
|
218
224
|
root.style.setProperty(`--color-m3-${kebabKey}`, value);
|
|
219
225
|
}
|
|
220
|
-
root.setAttribute("data-theme",
|
|
226
|
+
root.setAttribute("data-theme", resolved);
|
|
221
227
|
}
|
|
222
228
|
function cn(...inputs) {
|
|
223
229
|
return twMerge(clsx(inputs));
|
|
@@ -474,7 +480,7 @@ var SUBMENU_CONTAINER_VARIANTS = {
|
|
|
474
480
|
transition: FAST_EFFECTS_TRANSITION
|
|
475
481
|
}
|
|
476
482
|
};
|
|
477
|
-
var MenuContext =
|
|
483
|
+
var MenuContext = React39.createContext({
|
|
478
484
|
variant: "baseline",
|
|
479
485
|
colorVariant: "standard",
|
|
480
486
|
menuPrimitive: "dropdown",
|
|
@@ -490,15 +496,15 @@ function MenuProvider({
|
|
|
490
496
|
onOpenChange,
|
|
491
497
|
children
|
|
492
498
|
}) {
|
|
493
|
-
const value =
|
|
499
|
+
const value = React39.useMemo(
|
|
494
500
|
() => ({ variant, colorVariant, menuPrimitive, open, onOpenChange }),
|
|
495
501
|
[variant, colorVariant, menuPrimitive, open, onOpenChange]
|
|
496
502
|
);
|
|
497
503
|
return /* @__PURE__ */ jsx(MenuContext.Provider, { value, children });
|
|
498
504
|
}
|
|
499
505
|
function useMenuContext() {
|
|
500
|
-
const ctx =
|
|
501
|
-
return
|
|
506
|
+
const ctx = React39.useContext(MenuContext);
|
|
507
|
+
return React39.useMemo(
|
|
502
508
|
() => __spreadProps(__spreadValues({}, ctx), {
|
|
503
509
|
isStatic: ctx.menuPrimitive === "static",
|
|
504
510
|
menuVariant: ctx.variant
|
|
@@ -615,7 +621,7 @@ function ContextMenu({
|
|
|
615
621
|
variant = "baseline",
|
|
616
622
|
colorVariant = "standard"
|
|
617
623
|
}) {
|
|
618
|
-
const [open, setOpen] =
|
|
624
|
+
const [open, setOpen] = React39.useState(false);
|
|
619
625
|
return /* @__PURE__ */ jsx(
|
|
620
626
|
MenuProvider,
|
|
621
627
|
{
|
|
@@ -629,12 +635,12 @@ function ContextMenu({
|
|
|
629
635
|
);
|
|
630
636
|
}
|
|
631
637
|
ContextMenu.displayName = "ContextMenu";
|
|
632
|
-
var ContextMenuTrigger =
|
|
638
|
+
var ContextMenuTrigger = React39.forwardRef((_a, ref) => {
|
|
633
639
|
var _b = _a, { children, asChild = true } = _b, props = __objRest(_b, ["children", "asChild"]);
|
|
634
640
|
return /* @__PURE__ */ jsx(RxContextMenu.Trigger, __spreadProps(__spreadValues({ ref, asChild }, props), { children }));
|
|
635
641
|
});
|
|
636
642
|
ContextMenuTrigger.displayName = "ContextMenuTrigger";
|
|
637
|
-
var ContextMenuContent =
|
|
643
|
+
var ContextMenuContent = React39.forwardRef(
|
|
638
644
|
(_a, ref) => {
|
|
639
645
|
var _b = _a, {
|
|
640
646
|
children,
|
|
@@ -682,10 +688,10 @@ var ContextMenuContent = React38.forwardRef(
|
|
|
682
688
|
className
|
|
683
689
|
);
|
|
684
690
|
const flattenChildren = (nodes) => {
|
|
685
|
-
return
|
|
691
|
+
return React39.Children.toArray(nodes).reduce(
|
|
686
692
|
(acc, child) => {
|
|
687
|
-
if (
|
|
688
|
-
if (child.type ===
|
|
693
|
+
if (React39.isValidElement(child)) {
|
|
694
|
+
if (child.type === React39.Fragment) {
|
|
689
695
|
return acc.concat(
|
|
690
696
|
flattenChildren(
|
|
691
697
|
child.props.children
|
|
@@ -704,7 +710,7 @@ var ContextMenuContent = React38.forwardRef(
|
|
|
704
710
|
const validChildren = flattenChildren(children);
|
|
705
711
|
const groupCount = validChildren.length;
|
|
706
712
|
const enhancedChildren = validChildren.map(
|
|
707
|
-
(child, i) =>
|
|
713
|
+
(child, i) => React39.cloneElement(
|
|
708
714
|
child,
|
|
709
715
|
{
|
|
710
716
|
index: i,
|
|
@@ -768,12 +774,12 @@ function Menu(_a) {
|
|
|
768
774
|
]);
|
|
769
775
|
var _a2;
|
|
770
776
|
const resolvedVariant = (_a2 = variant != null ? variant : menuVariant) != null ? _a2 : "baseline";
|
|
771
|
-
const [internalOpen, setInternalOpen] =
|
|
777
|
+
const [internalOpen, setInternalOpen] = React39.useState(
|
|
772
778
|
() => defaultOpen != null ? defaultOpen : false
|
|
773
779
|
);
|
|
774
780
|
const isControlled = controlledOpen !== void 0;
|
|
775
781
|
const open = isControlled ? controlledOpen : internalOpen;
|
|
776
|
-
const handleOpenChange =
|
|
782
|
+
const handleOpenChange = React39.useCallback(
|
|
777
783
|
(next) => {
|
|
778
784
|
if (!isControlled) setInternalOpen(next);
|
|
779
785
|
controlledOnOpenChange == null ? void 0 : controlledOnOpenChange(next);
|
|
@@ -800,12 +806,12 @@ function Menu(_a) {
|
|
|
800
806
|
);
|
|
801
807
|
}
|
|
802
808
|
Menu.displayName = "Menu";
|
|
803
|
-
var MenuTrigger =
|
|
809
|
+
var MenuTrigger = React39.forwardRef((_a, ref) => {
|
|
804
810
|
var _b = _a, { children, asChild = true } = _b, props = __objRest(_b, ["children", "asChild"]);
|
|
805
811
|
return /* @__PURE__ */ jsx(DropdownMenu.Trigger, __spreadProps(__spreadValues({ ref, asChild }, props), { children }));
|
|
806
812
|
});
|
|
807
813
|
MenuTrigger.displayName = "MenuTrigger";
|
|
808
|
-
var MenuContent =
|
|
814
|
+
var MenuContent = React39.forwardRef(
|
|
809
815
|
(_a, ref) => {
|
|
810
816
|
var _b = _a, {
|
|
811
817
|
children,
|
|
@@ -859,10 +865,10 @@ var MenuContent = React38.forwardRef(
|
|
|
859
865
|
className
|
|
860
866
|
);
|
|
861
867
|
const flattenChildren = (nodes) => {
|
|
862
|
-
return
|
|
868
|
+
return React39.Children.toArray(nodes).reduce(
|
|
863
869
|
(acc, child) => {
|
|
864
|
-
if (
|
|
865
|
-
if (child.type ===
|
|
870
|
+
if (React39.isValidElement(child)) {
|
|
871
|
+
if (child.type === React39.Fragment) {
|
|
866
872
|
return acc.concat(
|
|
867
873
|
flattenChildren(
|
|
868
874
|
child.props.children
|
|
@@ -881,7 +887,7 @@ var MenuContent = React38.forwardRef(
|
|
|
881
887
|
const validChildren = flattenChildren(children);
|
|
882
888
|
const groupCount = validChildren.length;
|
|
883
889
|
const enhancedChildren = validChildren.map(
|
|
884
|
-
(child, i) =>
|
|
890
|
+
(child, i) => React39.cloneElement(child, {
|
|
885
891
|
index: i,
|
|
886
892
|
count: groupCount,
|
|
887
893
|
isGapVariant: isExpressiveGap
|
|
@@ -936,7 +942,7 @@ var MenuContent = React38.forwardRef(
|
|
|
936
942
|
}
|
|
937
943
|
);
|
|
938
944
|
MenuContent.displayName = "MenuContent";
|
|
939
|
-
var MenuDivider =
|
|
945
|
+
var MenuDivider = React39.forwardRef(
|
|
940
946
|
(_a, ref) => {
|
|
941
947
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
942
948
|
const { menuVariant } = useMenuContext();
|
|
@@ -967,7 +973,7 @@ function getGroupPosition(index, count) {
|
|
|
967
973
|
function getGroupActiveShape(position) {
|
|
968
974
|
return GROUP_SHAPES[`${position}Active`];
|
|
969
975
|
}
|
|
970
|
-
var MenuGroup =
|
|
976
|
+
var MenuGroup = React39.forwardRef(
|
|
971
977
|
(_a, ref) => {
|
|
972
978
|
var _b = _a, {
|
|
973
979
|
children,
|
|
@@ -997,15 +1003,15 @@ var MenuGroup = React38.forwardRef(
|
|
|
997
1003
|
const colors = menuVariant === "baseline" ? BASELINE_COLORS : colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
|
|
998
1004
|
const position = getGroupPosition(index, count);
|
|
999
1005
|
const activeShape = getGroupActiveShape(position);
|
|
1000
|
-
const [isHovered, setIsHovered] =
|
|
1006
|
+
const [isHovered, setIsHovered] = React39.useState(false);
|
|
1001
1007
|
const currentShape = isStatic || isHovered ? activeShape : GROUP_SHAPES.inactive;
|
|
1002
|
-
const handlePointerEnter =
|
|
1003
|
-
const handlePointerLeave =
|
|
1008
|
+
const handlePointerEnter = React39.useCallback(() => setIsHovered(true), []);
|
|
1009
|
+
const handlePointerLeave = React39.useCallback(() => setIsHovered(false), []);
|
|
1004
1010
|
const flattenChildren = (children2) => {
|
|
1005
|
-
return
|
|
1011
|
+
return React39.Children.toArray(children2).reduce(
|
|
1006
1012
|
(acc, child) => {
|
|
1007
|
-
if (
|
|
1008
|
-
if (child.type ===
|
|
1013
|
+
if (React39.isValidElement(child)) {
|
|
1014
|
+
if (child.type === React39.Fragment) {
|
|
1009
1015
|
return acc.concat(
|
|
1010
1016
|
flattenChildren(
|
|
1011
1017
|
child.props.children
|
|
@@ -1023,7 +1029,7 @@ var MenuGroup = React38.forwardRef(
|
|
|
1023
1029
|
const itemCount = validChildren.length;
|
|
1024
1030
|
const enhancedChildren = validChildren.map((child, i) => {
|
|
1025
1031
|
const itemPosition2 = itemCount === 1 ? "standalone" : i === 0 ? "leading" : i === itemCount - 1 ? "trailing" : "middle";
|
|
1026
|
-
return
|
|
1032
|
+
return React39.cloneElement(child, {
|
|
1027
1033
|
itemPosition: itemPosition2,
|
|
1028
1034
|
colorVariant
|
|
1029
1035
|
});
|
|
@@ -1086,6 +1092,11 @@ var SPRING_TRANSITION = {
|
|
|
1086
1092
|
bounce: 0,
|
|
1087
1093
|
duration: 0.3
|
|
1088
1094
|
};
|
|
1095
|
+
var SPRING_TRANSITION_EXPRESSIVE = {
|
|
1096
|
+
type: "spring",
|
|
1097
|
+
bounce: 0.45,
|
|
1098
|
+
duration: 0.4
|
|
1099
|
+
};
|
|
1089
1100
|
var ICON_SPAN_VARIANTS = {
|
|
1090
1101
|
initial: { scale: 0.01 },
|
|
1091
1102
|
animate: { scale: 1 },
|
|
@@ -1106,7 +1117,7 @@ var VARIANT_FONT = {
|
|
|
1106
1117
|
rounded: "'Material Symbols Rounded'",
|
|
1107
1118
|
sharp: "'Material Symbols Sharp'"
|
|
1108
1119
|
};
|
|
1109
|
-
var IconComponent =
|
|
1120
|
+
var IconComponent = React39.forwardRef(
|
|
1110
1121
|
(_a, ref) => {
|
|
1111
1122
|
var _b = _a, {
|
|
1112
1123
|
name,
|
|
@@ -1172,14 +1183,14 @@ var IconComponent = React38.forwardRef(
|
|
|
1172
1183
|
}
|
|
1173
1184
|
);
|
|
1174
1185
|
IconComponent.displayName = "Icon";
|
|
1175
|
-
var Icon =
|
|
1186
|
+
var Icon = React39.memo(IconComponent);
|
|
1176
1187
|
function getItemShapeClass(position, selected, isStatic = false, menuVariant = "expressive") {
|
|
1177
1188
|
if (menuVariant === "baseline") return BASELINE_ITEM_SHAPE;
|
|
1178
1189
|
if (selected) return ITEM_SHAPE_CLASSES.selected;
|
|
1179
1190
|
if (isStatic && position === "standalone") return "rounded-[12px]";
|
|
1180
1191
|
return ITEM_SHAPE_CLASSES[position];
|
|
1181
1192
|
}
|
|
1182
|
-
var MenuItem =
|
|
1193
|
+
var MenuItem = React39.forwardRef(
|
|
1183
1194
|
(_a, ref) => {
|
|
1184
1195
|
var _b = _a, {
|
|
1185
1196
|
children,
|
|
@@ -1381,31 +1392,31 @@ function SubMenu({
|
|
|
1381
1392
|
}) {
|
|
1382
1393
|
const { colorVariant: contextColorVariant, menuPrimitive } = useMenuContext();
|
|
1383
1394
|
const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
|
|
1384
|
-
const [open, setOpen] =
|
|
1385
|
-
const openTimerRef =
|
|
1386
|
-
const closeTimerRef =
|
|
1395
|
+
const [open, setOpen] = React39.useState(false);
|
|
1396
|
+
const openTimerRef = React39.useRef(null);
|
|
1397
|
+
const closeTimerRef = React39.useRef(
|
|
1387
1398
|
null
|
|
1388
1399
|
);
|
|
1389
|
-
const clearTimers =
|
|
1400
|
+
const clearTimers = React39.useCallback(() => {
|
|
1390
1401
|
if (openTimerRef.current) clearTimeout(openTimerRef.current);
|
|
1391
1402
|
if (closeTimerRef.current) clearTimeout(closeTimerRef.current);
|
|
1392
1403
|
}, []);
|
|
1393
|
-
const handleTriggerPointerEnter =
|
|
1404
|
+
const handleTriggerPointerEnter = React39.useCallback(() => {
|
|
1394
1405
|
clearTimers();
|
|
1395
1406
|
openTimerRef.current = setTimeout(() => setOpen(true), hoverOpenDelay);
|
|
1396
1407
|
}, [hoverOpenDelay, clearTimers]);
|
|
1397
|
-
const handleTriggerPointerLeave =
|
|
1408
|
+
const handleTriggerPointerLeave = React39.useCallback(() => {
|
|
1398
1409
|
clearTimers();
|
|
1399
1410
|
closeTimerRef.current = setTimeout(() => setOpen(false), hoverCloseDelay);
|
|
1400
1411
|
}, [hoverCloseDelay, clearTimers]);
|
|
1401
|
-
const handleContentPointerEnter =
|
|
1412
|
+
const handleContentPointerEnter = React39.useCallback(() => {
|
|
1402
1413
|
clearTimers();
|
|
1403
1414
|
}, [clearTimers]);
|
|
1404
|
-
const handleContentPointerLeave =
|
|
1415
|
+
const handleContentPointerLeave = React39.useCallback(() => {
|
|
1405
1416
|
clearTimers();
|
|
1406
1417
|
closeTimerRef.current = setTimeout(() => setOpen(false), hoverCloseDelay);
|
|
1407
1418
|
}, [hoverCloseDelay, clearTimers]);
|
|
1408
|
-
|
|
1419
|
+
React39.useEffect(() => () => clearTimers(), [clearTimers]);
|
|
1409
1420
|
const Sub3 = menuPrimitive === "context" ? RxContextMenu.Sub : DropdownMenu.Sub;
|
|
1410
1421
|
const SubTrigger3 = menuPrimitive === "context" ? RxContextMenu.SubTrigger : DropdownMenu.SubTrigger;
|
|
1411
1422
|
const SubContent3 = menuPrimitive === "context" ? RxContextMenu.SubContent : DropdownMenu.SubContent;
|
|
@@ -1417,7 +1428,7 @@ function SubMenu({
|
|
|
1417
1428
|
className: "w-full outline-none",
|
|
1418
1429
|
onPointerEnter: handleTriggerPointerEnter,
|
|
1419
1430
|
onPointerLeave: handleTriggerPointerLeave,
|
|
1420
|
-
children:
|
|
1431
|
+
children: React39.isValidElement(trigger) ? React39.cloneElement(trigger, {
|
|
1421
1432
|
isSubTrigger: true,
|
|
1422
1433
|
// Auto-add chevron if missing
|
|
1423
1434
|
trailingIcon: trigger.props.trailingIcon || /* @__PURE__ */ jsx(Icon, { name: "chevron_right", size: 20 })
|
|
@@ -1494,7 +1505,7 @@ function SubMenuContent({
|
|
|
1494
1505
|
);
|
|
1495
1506
|
}
|
|
1496
1507
|
SubMenuContent.displayName = "SubMenuContent";
|
|
1497
|
-
var VerticalMenuDivider =
|
|
1508
|
+
var VerticalMenuDivider = React39.forwardRef((_a, ref) => {
|
|
1498
1509
|
var _b = _a, { className, index, count, isGapVariant } = _b, props = __objRest(_b, ["className", "index", "count", "isGapVariant"]);
|
|
1499
1510
|
return /* @__PURE__ */ jsx(
|
|
1500
1511
|
"hr",
|
|
@@ -1514,7 +1525,7 @@ var VerticalMenuDivider = React38.forwardRef((_a, ref) => {
|
|
|
1514
1525
|
});
|
|
1515
1526
|
VerticalMenuDivider.displayName = "VerticalMenuDivider";
|
|
1516
1527
|
var VerticalMenuGroup = MenuGroup;
|
|
1517
|
-
var VerticalMenuContent =
|
|
1528
|
+
var VerticalMenuContent = React39.forwardRef(
|
|
1518
1529
|
(_a, ref) => {
|
|
1519
1530
|
var _b = _a, {
|
|
1520
1531
|
children,
|
|
@@ -1531,10 +1542,10 @@ var VerticalMenuContent = React38.forwardRef(
|
|
|
1531
1542
|
const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
|
|
1532
1543
|
const colors = colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
|
|
1533
1544
|
const flattenChildren = (children2) => {
|
|
1534
|
-
return
|
|
1545
|
+
return React39.Children.toArray(children2).reduce(
|
|
1535
1546
|
(acc, child) => {
|
|
1536
|
-
if (
|
|
1537
|
-
if (child.type ===
|
|
1547
|
+
if (React39.isValidElement(child)) {
|
|
1548
|
+
if (child.type === React39.Fragment) {
|
|
1538
1549
|
return acc.concat(
|
|
1539
1550
|
flattenChildren(
|
|
1540
1551
|
child.props.children
|
|
@@ -1551,7 +1562,7 @@ var VerticalMenuContent = React38.forwardRef(
|
|
|
1551
1562
|
const validChildren = flattenChildren(children);
|
|
1552
1563
|
const groupCount = validChildren.length;
|
|
1553
1564
|
const enhancedChildren = validChildren.map(
|
|
1554
|
-
(child, i) =>
|
|
1565
|
+
(child, i) => React39.cloneElement(child, {
|
|
1555
1566
|
index: i,
|
|
1556
1567
|
count: groupCount,
|
|
1557
1568
|
isGapVariant: separatorStyle === "gap"
|
|
@@ -1588,13 +1599,13 @@ var VerticalMenuContent = React38.forwardRef(
|
|
|
1588
1599
|
}
|
|
1589
1600
|
);
|
|
1590
1601
|
VerticalMenuContent.displayName = "VerticalMenuContent";
|
|
1591
|
-
var VerticalMenu =
|
|
1602
|
+
var VerticalMenu = React39.forwardRef((_a, ref) => {
|
|
1592
1603
|
var _b = _a, { children, colorVariant = "standard", className } = _b, props = __objRest(_b, ["children", "colorVariant", "className"]);
|
|
1593
|
-
const noop =
|
|
1604
|
+
const noop = React39.useCallback(() => {
|
|
1594
1605
|
}, []);
|
|
1595
1606
|
const colors = colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
|
|
1596
|
-
const containerRef =
|
|
1597
|
-
const mergedRef =
|
|
1607
|
+
const containerRef = React39.useRef(null);
|
|
1608
|
+
const mergedRef = React39.useCallback(
|
|
1598
1609
|
(node) => {
|
|
1599
1610
|
containerRef.current = node;
|
|
1600
1611
|
if (typeof ref === "function") ref(node);
|
|
@@ -1603,7 +1614,7 @@ var VerticalMenu = React38.forwardRef((_a, ref) => {
|
|
|
1603
1614
|
},
|
|
1604
1615
|
[ref]
|
|
1605
1616
|
);
|
|
1606
|
-
const handleKeyDown =
|
|
1617
|
+
const handleKeyDown = React39.useCallback(
|
|
1607
1618
|
(e) => {
|
|
1608
1619
|
var _a2;
|
|
1609
1620
|
if (!containerRef.current) return;
|
|
@@ -1686,7 +1697,7 @@ var VerticalMenu = React38.forwardRef((_a, ref) => {
|
|
|
1686
1697
|
});
|
|
1687
1698
|
VerticalMenu.displayName = "VerticalMenu";
|
|
1688
1699
|
function detectSeparatorStyle(children) {
|
|
1689
|
-
const child =
|
|
1700
|
+
const child = React39.Children.toArray(children).find(React39.isValidElement);
|
|
1690
1701
|
if (child) {
|
|
1691
1702
|
const style = child.props.separatorStyle;
|
|
1692
1703
|
if (style) return style;
|
|
@@ -1767,11 +1778,11 @@ function AppBarColumn({
|
|
|
1767
1778
|
maxItemCount,
|
|
1768
1779
|
className
|
|
1769
1780
|
}) {
|
|
1770
|
-
const containerRef =
|
|
1771
|
-
const [visibleCount, setVisibleCount] =
|
|
1781
|
+
const containerRef = React39.useRef(null);
|
|
1782
|
+
const [visibleCount, setVisibleCount] = React39.useState(
|
|
1772
1783
|
maxItemCount != null ? maxItemCount : items.length
|
|
1773
1784
|
);
|
|
1774
|
-
|
|
1785
|
+
React39.useEffect(() => {
|
|
1775
1786
|
if (maxItemCount !== void 0) {
|
|
1776
1787
|
setVisibleCount(Math.min(maxItemCount, items.length));
|
|
1777
1788
|
return;
|
|
@@ -1819,11 +1830,11 @@ function AppBarColumn({
|
|
|
1819
1830
|
);
|
|
1820
1831
|
}
|
|
1821
1832
|
function AppBarRow({ items, maxItemCount, className }) {
|
|
1822
|
-
const containerRef =
|
|
1823
|
-
const [visibleCount, setVisibleCount] =
|
|
1833
|
+
const containerRef = React39.useRef(null);
|
|
1834
|
+
const [visibleCount, setVisibleCount] = React39.useState(
|
|
1824
1835
|
maxItemCount != null ? maxItemCount : items.length
|
|
1825
1836
|
);
|
|
1826
|
-
|
|
1837
|
+
React39.useEffect(() => {
|
|
1827
1838
|
if (maxItemCount !== void 0) {
|
|
1828
1839
|
setVisibleCount(Math.min(maxItemCount, items.length));
|
|
1829
1840
|
return;
|
|
@@ -1877,12 +1888,12 @@ function useAppBarScroll({
|
|
|
1877
1888
|
collapsedHeight = 64,
|
|
1878
1889
|
expandedHeight = 112
|
|
1879
1890
|
} = {}) {
|
|
1880
|
-
const [isScrolled, setIsScrolled] =
|
|
1881
|
-
const [collapsedFraction, setCollapsedFraction] =
|
|
1882
|
-
const [isHidden, setIsHidden] =
|
|
1883
|
-
const prevScrollYRef =
|
|
1891
|
+
const [isScrolled, setIsScrolled] = React39.useState(false);
|
|
1892
|
+
const [collapsedFraction, setCollapsedFraction] = React39.useState(0);
|
|
1893
|
+
const [isHidden, setIsHidden] = React39.useState(false);
|
|
1894
|
+
const prevScrollYRef = React39.useRef(0);
|
|
1884
1895
|
const hideThreshold = 64;
|
|
1885
|
-
|
|
1896
|
+
React39.useEffect(() => {
|
|
1886
1897
|
var _a;
|
|
1887
1898
|
const scrollDistance = expandedHeight - collapsedHeight;
|
|
1888
1899
|
const getScrollY = () => {
|
|
@@ -2003,7 +2014,7 @@ function useFlexibleAppBar({
|
|
|
2003
2014
|
expandedHeight
|
|
2004
2015
|
});
|
|
2005
2016
|
const scrollProgress = useMotionValue(0);
|
|
2006
|
-
|
|
2017
|
+
React39.useEffect(() => {
|
|
2007
2018
|
scrollProgress.set(
|
|
2008
2019
|
shouldReduceMotion ? collapsedFraction > 0.5 ? 1 : 0 : collapsedFraction
|
|
2009
2020
|
);
|
|
@@ -2344,7 +2355,7 @@ function SearchAppBar({
|
|
|
2344
2355
|
}) {
|
|
2345
2356
|
var _a, _b;
|
|
2346
2357
|
const shouldReduceMotion = useReducedMotion();
|
|
2347
|
-
const [isSearchOpen, setIsSearchOpen] =
|
|
2358
|
+
const [isSearchOpen, setIsSearchOpen] = React39.useState(false);
|
|
2348
2359
|
const { isScrolled } = useAppBarScroll({
|
|
2349
2360
|
scrollElement,
|
|
2350
2361
|
behavior: scrollBehavior === "exitUntilCollapsed" ? "pinned" : scrollBehavior
|
|
@@ -2458,8 +2469,8 @@ function SearchView({
|
|
|
2458
2469
|
className
|
|
2459
2470
|
}) {
|
|
2460
2471
|
const shouldReduceMotion = useReducedMotion();
|
|
2461
|
-
const inputRef =
|
|
2462
|
-
|
|
2472
|
+
const inputRef = React39.useRef(null);
|
|
2473
|
+
React39.useEffect(() => {
|
|
2463
2474
|
const timer = window.setTimeout(() => {
|
|
2464
2475
|
var _a;
|
|
2465
2476
|
(_a = inputRef.current) == null ? void 0 : _a.focus();
|
|
@@ -2729,9 +2740,9 @@ function formatBadgeLabel(children, max) {
|
|
|
2729
2740
|
return "";
|
|
2730
2741
|
}
|
|
2731
2742
|
function detectBadgeHasContent(badge) {
|
|
2732
|
-
return
|
|
2743
|
+
return React39.isValidElement(badge) && badge.props.children != null;
|
|
2733
2744
|
}
|
|
2734
|
-
var BadgeImpl =
|
|
2745
|
+
var BadgeImpl = React39.forwardRef(
|
|
2735
2746
|
(_a, ref) => {
|
|
2736
2747
|
var _b = _a, {
|
|
2737
2748
|
children,
|
|
@@ -2785,7 +2796,7 @@ var BadgeImpl = React38.forwardRef(
|
|
|
2785
2796
|
}
|
|
2786
2797
|
);
|
|
2787
2798
|
BadgeImpl.displayName = "Badge";
|
|
2788
|
-
var Badge =
|
|
2799
|
+
var Badge = React39.memo(BadgeImpl);
|
|
2789
2800
|
function BadgedBox({
|
|
2790
2801
|
badge,
|
|
2791
2802
|
children,
|
|
@@ -2851,11 +2862,11 @@ var ROTATE_KEY_SPLINES = [
|
|
|
2851
2862
|
var ROTATE_VALUES = "0 24 24; 154 24 24; 309 24 24; 463 24 24; 617 24 24; 771 24 24; 926 24 24; 1080 24 24";
|
|
2852
2863
|
var DETERMINATE_CIRCLE = "M24 7 C34.49 7 41 13.51 41 24 C41 34.49 34.49 41 24 41 C13.51 41 7 34.49 7 24 C7 13.51 13.51 7 24 7 Z";
|
|
2853
2864
|
var DETERMINATE_SOFT_BURST = "M20.9 10.4 21.4 9.5 21.9 8.7 22.5 7.8 23.2 7.2 24.2 7 25.1 7.4 25.7 8.1 26.2 9 26.8 9.8 27.3 10.6 28.1 11.2 29 11.3 30 11 30.9 10.6 31.8 10.3 32.8 9.9 33.7 10 34.5 10.6 34.9 11.5 34.8 12.5 34.8 13.5 34.7 14.5 34.7 15.5 35.2 16.3 36 16.8 37 17.1 37.9 17.3 38.9 17.5 39.8 17.9 40.4 18.7 40.5 19.7 40 20.5 39.4 21.3 38.7 22 38.1 22.8 37.6 23.7 37.7 24.6 38.3 25.5 38.9 26.2 39.6 27 40.2 27.7 40.5 28.7 40.3 29.6 39.5 30.3 38.6 30.6 37.6 30.8 36.7 31 35.7 31.3 35 31.9 34.6 32.8 34.7 33.8 34.8 34.8 34.9 35.8 34.8 36.8 34.3 37.6 33.4 38.1 32.4 38 31.5 37.6 30.6 37.2 29.7 36.9 28.7 36.6 27.8 36.9 27.1 37.6 26.6 38.5 26.1 39.3 25.5 40.2 24.8 40.8 23.8 41 22.9 40.6 22.3 39.9 21.8 39 21.2 38.2 20.7 37.4 19.9 36.8 19 36.7 18 37 17.1 37.4 16.2 37.7 15.2 38.1 14.3 38 13.5 37.4 13.1 36.5 13.2 35.5 13.2 34.5 13.3 33.5 13.3 32.5 12.8 31.7 12 31.2 11 31 10.1 30.7 9.1 30.5 8.2 30.1 7.6 29.3 7.5 28.3 8 27.5 8.7 26.7 9.3 26 9.9 25.2 10.4 24.3 10.3 23.4 9.7 22.5 9.1 21.8 8.4 21 7.8 20.3 7.5 19.3 7.7 18.4 8.5 17.7 9.4 17.4 10.4 17.2 11.3 17 12.3 16.7 13 16.1 13.4 15.2 13.3 14.2 13.2 13.2 13.1 12.2 13.2 11.2 13.7 10.4 14.6 9.9 15.6 10 16.5 10.4 17.4 10.8 18.3 11.1 19.3 11.4 20.2 11.1Z";
|
|
2854
|
-
var IndeterminateSvg =
|
|
2865
|
+
var IndeterminateSvg = React39.memo(function IndeterminateSvg2({
|
|
2855
2866
|
size
|
|
2856
2867
|
}) {
|
|
2857
|
-
const [ready, setReady] =
|
|
2858
|
-
|
|
2868
|
+
const [ready, setReady] = React39.useState(false);
|
|
2869
|
+
React39.useEffect(() => {
|
|
2859
2870
|
const raf = requestAnimationFrame(() => setReady(true));
|
|
2860
2871
|
return () => cancelAnimationFrame(raf);
|
|
2861
2872
|
}, []);
|
|
@@ -2900,7 +2911,7 @@ var IndeterminateSvg = React38.memo(function IndeterminateSvg2({
|
|
|
2900
2911
|
}
|
|
2901
2912
|
);
|
|
2902
2913
|
});
|
|
2903
|
-
var DeterminateSvg =
|
|
2914
|
+
var DeterminateSvg = React39.memo(function DeterminateSvg2({
|
|
2904
2915
|
size,
|
|
2905
2916
|
progress
|
|
2906
2917
|
}) {
|
|
@@ -2925,7 +2936,7 @@ var DeterminateSvg = React38.memo(function DeterminateSvg2({
|
|
|
2925
2936
|
}
|
|
2926
2937
|
);
|
|
2927
2938
|
});
|
|
2928
|
-
var LoadingIndicator =
|
|
2939
|
+
var LoadingIndicator = React39.forwardRef(
|
|
2929
2940
|
(_a, ref) => {
|
|
2930
2941
|
var _b = _a, {
|
|
2931
2942
|
variant = "uncontained",
|
|
@@ -3040,7 +3051,7 @@ function getSinePath(startX, endX, phase, wl, amp) {
|
|
|
3040
3051
|
d += ` L ${endX.toFixed(2)} ${yEnd.toFixed(2)}`;
|
|
3041
3052
|
return d;
|
|
3042
3053
|
}
|
|
3043
|
-
var CircularProgress =
|
|
3054
|
+
var CircularProgress = React39.forwardRef(
|
|
3044
3055
|
(_a, ref) => {
|
|
3045
3056
|
var _b = _a, {
|
|
3046
3057
|
value,
|
|
@@ -3078,15 +3089,15 @@ var CircularProgress = React38.forwardRef(
|
|
|
3078
3089
|
const isWavy = shape === "wavy";
|
|
3079
3090
|
const BASELINE_SIZE = 48;
|
|
3080
3091
|
const scaleFactor = size / BASELINE_SIZE;
|
|
3081
|
-
const effectiveAmplitude =
|
|
3092
|
+
const effectiveAmplitude = React39.useMemo(
|
|
3082
3093
|
() => amplitude != null ? amplitude : 1.6 * scaleFactor,
|
|
3083
3094
|
[amplitude, scaleFactor]
|
|
3084
3095
|
);
|
|
3085
|
-
const effectiveWavelength =
|
|
3096
|
+
const effectiveWavelength = React39.useMemo(
|
|
3086
3097
|
() => wavelength != null ? wavelength : 15 * scaleFactor,
|
|
3087
3098
|
[wavelength, scaleFactor]
|
|
3088
3099
|
);
|
|
3089
|
-
const wavyActivePath =
|
|
3100
|
+
const wavyActivePath = React39.useMemo(
|
|
3090
3101
|
() => isWavy ? generateWavyCircularPath(
|
|
3091
3102
|
center,
|
|
3092
3103
|
radius,
|
|
@@ -3095,8 +3106,8 @@ var CircularProgress = React38.forwardRef(
|
|
|
3095
3106
|
) : null,
|
|
3096
3107
|
[isWavy, center, radius, effectiveAmplitude, effectiveWavelength]
|
|
3097
3108
|
);
|
|
3098
|
-
const circumference =
|
|
3099
|
-
const gapForTrack =
|
|
3109
|
+
const circumference = React39.useMemo(() => 2 * Math.PI * radius, [radius]);
|
|
3110
|
+
const gapForTrack = React39.useMemo(
|
|
3100
3111
|
() => (gapSize + trackHeight) / circumference,
|
|
3101
3112
|
[gapSize, trackHeight, circumference]
|
|
3102
3113
|
);
|
|
@@ -3285,9 +3296,9 @@ var CircularProgress = React38.forwardRef(
|
|
|
3285
3296
|
);
|
|
3286
3297
|
CircularProgress.displayName = "CircularProgress";
|
|
3287
3298
|
function useContainerWidth() {
|
|
3288
|
-
const [width, setWidth] =
|
|
3289
|
-
const observerRef =
|
|
3290
|
-
const ref =
|
|
3299
|
+
const [width, setWidth] = React39.useState(0);
|
|
3300
|
+
const observerRef = React39.useRef(null);
|
|
3301
|
+
const ref = React39.useCallback((node) => {
|
|
3291
3302
|
if (observerRef.current) {
|
|
3292
3303
|
observerRef.current.disconnect();
|
|
3293
3304
|
observerRef.current = null;
|
|
@@ -3301,7 +3312,7 @@ function useContainerWidth() {
|
|
|
3301
3312
|
observerRef.current = obs;
|
|
3302
3313
|
}
|
|
3303
3314
|
}, []);
|
|
3304
|
-
|
|
3315
|
+
React39.useEffect(() => {
|
|
3305
3316
|
return () => {
|
|
3306
3317
|
if (observerRef.current) {
|
|
3307
3318
|
observerRef.current.disconnect();
|
|
@@ -3311,7 +3322,7 @@ function useContainerWidth() {
|
|
|
3311
3322
|
return [ref, width];
|
|
3312
3323
|
}
|
|
3313
3324
|
function useMergedRef(...refs) {
|
|
3314
|
-
return
|
|
3325
|
+
return React39.useCallback(
|
|
3315
3326
|
(node) => {
|
|
3316
3327
|
for (const ref of refs) {
|
|
3317
3328
|
if (typeof ref === "function") {
|
|
@@ -3325,7 +3336,7 @@ function useMergedRef(...refs) {
|
|
|
3325
3336
|
[refs]
|
|
3326
3337
|
);
|
|
3327
3338
|
}
|
|
3328
|
-
var FlatLinearTrack =
|
|
3339
|
+
var FlatLinearTrack = React39.memo(function FlatLinearTrack2({
|
|
3329
3340
|
trackHeight,
|
|
3330
3341
|
activeColor,
|
|
3331
3342
|
trackColor,
|
|
@@ -3401,7 +3412,7 @@ var FlatLinearTrack = React38.memo(function FlatLinearTrack2({
|
|
|
3401
3412
|
}
|
|
3402
3413
|
);
|
|
3403
3414
|
});
|
|
3404
|
-
var WavyLinearTrack =
|
|
3415
|
+
var WavyLinearTrack = React39.memo(function WavyLinearTrack2({
|
|
3405
3416
|
trackHeight,
|
|
3406
3417
|
svgHeight,
|
|
3407
3418
|
amplitude,
|
|
@@ -3420,13 +3431,13 @@ var WavyLinearTrack = React38.memo(function WavyLinearTrack2({
|
|
|
3420
3431
|
}) {
|
|
3421
3432
|
const isDeterminate = typeof value === "number";
|
|
3422
3433
|
const clampedValue = isDeterminate ? Math.max(0, Math.min(100, value)) : 100;
|
|
3423
|
-
const titleId =
|
|
3434
|
+
const titleId = React39.useId();
|
|
3424
3435
|
const [containerRef, width] = useContainerWidth();
|
|
3425
|
-
const activePathRef =
|
|
3426
|
-
const trackPathRef =
|
|
3436
|
+
const activePathRef = React39.useRef(null);
|
|
3437
|
+
const trackPathRef = React39.useRef(null);
|
|
3427
3438
|
const amplitudeMV = useMotionValue(amplitude);
|
|
3428
3439
|
const fractionMV = useMotionValue(isDeterminate ? clampedValue / 100 : 1);
|
|
3429
|
-
|
|
3440
|
+
React39.useEffect(() => {
|
|
3430
3441
|
if (isDeterminate) {
|
|
3431
3442
|
const fraction = clampedValue / 100;
|
|
3432
3443
|
let targetAmp = amplitude;
|
|
@@ -3597,7 +3608,7 @@ var WavyLinearTrack = React38.memo(function WavyLinearTrack2({
|
|
|
3597
3608
|
}
|
|
3598
3609
|
);
|
|
3599
3610
|
});
|
|
3600
|
-
var LinearProgress =
|
|
3611
|
+
var LinearProgress = React39.forwardRef(
|
|
3601
3612
|
(_a, ref) => {
|
|
3602
3613
|
var _b = _a, {
|
|
3603
3614
|
value,
|
|
@@ -3638,10 +3649,10 @@ var LinearProgress = React38.forwardRef(
|
|
|
3638
3649
|
]);
|
|
3639
3650
|
const isDeterminate = value !== void 0;
|
|
3640
3651
|
const clampedValue = isDeterminate ? Math.min(100, Math.max(0, value)) : 0;
|
|
3641
|
-
const containerRef =
|
|
3652
|
+
const containerRef = React39.useRef(null);
|
|
3642
3653
|
const mergedRef = useMergedRef(ref, containerRef);
|
|
3643
|
-
const [isRtl, setIsRtl] =
|
|
3644
|
-
|
|
3654
|
+
const [isRtl, setIsRtl] = React39.useState(false);
|
|
3655
|
+
React39.useEffect(() => {
|
|
3645
3656
|
if (containerRef.current) {
|
|
3646
3657
|
const dir = getComputedStyle(containerRef.current).direction;
|
|
3647
3658
|
setIsRtl(dir === "rtl");
|
|
@@ -3649,16 +3660,16 @@ var LinearProgress = React38.forwardRef(
|
|
|
3649
3660
|
}, []);
|
|
3650
3661
|
const isWavy = shape === "wavy";
|
|
3651
3662
|
const resolvedTrackShape = trackShape != null ? trackShape : shape;
|
|
3652
|
-
const effectiveAmplitude =
|
|
3653
|
-
const svgHeight =
|
|
3663
|
+
const effectiveAmplitude = React39.useMemo(() => amplitude != null ? amplitude : 3, [amplitude]);
|
|
3664
|
+
const svgHeight = React39.useMemo(
|
|
3654
3665
|
() => isWavy ? trackHeight + effectiveAmplitude * 2 : trackHeight,
|
|
3655
3666
|
[isWavy, trackHeight, effectiveAmplitude]
|
|
3656
3667
|
);
|
|
3657
|
-
const shouldShowStop =
|
|
3668
|
+
const shouldShowStop = React39.useMemo(
|
|
3658
3669
|
() => isDeterminate && resolvedTrackShape === "flat" && (showStopIndicator === true || showStopIndicator === "auto" && isDeterminate),
|
|
3659
3670
|
[isDeterminate, resolvedTrackShape, showStopIndicator]
|
|
3660
3671
|
);
|
|
3661
|
-
const stopSize =
|
|
3672
|
+
const stopSize = React39.useMemo(
|
|
3662
3673
|
() => Math.max(2, trackHeight > 4 ? 4 : trackHeight / 2),
|
|
3663
3674
|
[trackHeight]
|
|
3664
3675
|
);
|
|
@@ -3731,14 +3742,14 @@ var LinearProgress = React38.forwardRef(
|
|
|
3731
3742
|
}
|
|
3732
3743
|
);
|
|
3733
3744
|
LinearProgress.displayName = "LinearProgress";
|
|
3734
|
-
var ProgressIndicator =
|
|
3745
|
+
var ProgressIndicator = React39.forwardRef((props, ref) => {
|
|
3735
3746
|
if (props.variant === "circular") {
|
|
3736
3747
|
return /* @__PURE__ */ jsx(CircularProgress, __spreadValues({ ref }, props));
|
|
3737
3748
|
}
|
|
3738
3749
|
return /* @__PURE__ */ jsx(LinearProgress, __spreadValues({ ref }, props));
|
|
3739
3750
|
});
|
|
3740
3751
|
ProgressIndicator.displayName = "ProgressIndicator";
|
|
3741
|
-
var RippleItem =
|
|
3752
|
+
var RippleItem = React39.memo(function RippleItem2({
|
|
3742
3753
|
ripple,
|
|
3743
3754
|
onDone
|
|
3744
3755
|
}) {
|
|
@@ -3782,8 +3793,8 @@ function Ripple({
|
|
|
3782
3793
|
}
|
|
3783
3794
|
function useRippleState(options = {}) {
|
|
3784
3795
|
const { disabled = false } = options;
|
|
3785
|
-
const [ripples, setRipples] =
|
|
3786
|
-
const onPointerDown =
|
|
3796
|
+
const [ripples, setRipples] = React39.useState([]);
|
|
3797
|
+
const onPointerDown = React39.useCallback(
|
|
3787
3798
|
(e) => {
|
|
3788
3799
|
if (disabled) return;
|
|
3789
3800
|
const rect = e.currentTarget.getBoundingClientRect();
|
|
@@ -3797,7 +3808,7 @@ function useRippleState(options = {}) {
|
|
|
3797
3808
|
},
|
|
3798
3809
|
[disabled]
|
|
3799
3810
|
);
|
|
3800
|
-
const removeRipple =
|
|
3811
|
+
const removeRipple = React39.useCallback((id) => {
|
|
3801
3812
|
setRipples((prev) => prev.filter((r) => r.id !== id));
|
|
3802
3813
|
}, []);
|
|
3803
3814
|
return { ripples, onPointerDown, removeRipple };
|
|
@@ -3926,15 +3937,12 @@ var buttonColorVariants = cva(
|
|
|
3926
3937
|
defaultVariants: { colorStyle: "filled" }
|
|
3927
3938
|
}
|
|
3928
3939
|
);
|
|
3929
|
-
function toSentenceCase(text) {
|
|
3930
|
-
return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
|
|
3931
|
-
}
|
|
3932
3940
|
function resolveLabel(children, asChild) {
|
|
3933
3941
|
if (asChild) {
|
|
3934
|
-
const child =
|
|
3942
|
+
const child = React39.Children.only(children);
|
|
3935
3943
|
return child.props.children;
|
|
3936
3944
|
}
|
|
3937
|
-
return
|
|
3945
|
+
return children;
|
|
3938
3946
|
}
|
|
3939
3947
|
var MOTION_PROP_KEYS = [
|
|
3940
3948
|
"animate",
|
|
@@ -4003,7 +4011,7 @@ function AnimatedIconSlot({
|
|
|
4003
4011
|
}
|
|
4004
4012
|
);
|
|
4005
4013
|
}
|
|
4006
|
-
var ButtonComponent =
|
|
4014
|
+
var ButtonComponent = React39.forwardRef(
|
|
4007
4015
|
(_a, ref) => {
|
|
4008
4016
|
var _b = _a, {
|
|
4009
4017
|
className,
|
|
@@ -4052,15 +4060,15 @@ var ButtonComponent = React38.forwardRef(
|
|
|
4052
4060
|
const { pressed: pressedRadius } = (_b2 = radiusMap[size]) != null ? _b2 : radiusMap.sm;
|
|
4053
4061
|
const iconClass = (_c = SIZE_ICON_CLASS[size]) != null ? _c : "size-5";
|
|
4054
4062
|
const mergedStyle = __spreadValues(__spreadValues({}, SIZE_STYLES[size]), style);
|
|
4055
|
-
const labelText =
|
|
4063
|
+
const labelText = React39.useMemo(
|
|
4056
4064
|
() => resolveLabel(children, asChild),
|
|
4057
4065
|
[children, asChild]
|
|
4058
4066
|
);
|
|
4059
4067
|
const computedAriaLabel = ariaLabelProp || (typeof children === "string" ? children : void 0);
|
|
4060
4068
|
const needsTouchTarget = size === "xs" || size === "sm";
|
|
4061
4069
|
const motionRadius = useMotionValue(animateRadius);
|
|
4062
|
-
const asChildRef =
|
|
4063
|
-
const mergedRef =
|
|
4070
|
+
const asChildRef = React39.useRef(null);
|
|
4071
|
+
const mergedRef = React39.useCallback(
|
|
4064
4072
|
(node) => {
|
|
4065
4073
|
asChildRef.current = node;
|
|
4066
4074
|
if (typeof ref === "function") ref(node);
|
|
@@ -4069,27 +4077,27 @@ var ButtonComponent = React38.forwardRef(
|
|
|
4069
4077
|
},
|
|
4070
4078
|
[ref]
|
|
4071
4079
|
);
|
|
4072
|
-
|
|
4080
|
+
React39.useEffect(
|
|
4073
4081
|
() => motionRadius.on("change", (v) => {
|
|
4074
4082
|
if (asChildRef.current)
|
|
4075
4083
|
asChildRef.current.style.borderRadius = `${v}px`;
|
|
4076
4084
|
}),
|
|
4077
4085
|
[motionRadius]
|
|
4078
4086
|
);
|
|
4079
|
-
|
|
4087
|
+
React39.useEffect(() => {
|
|
4080
4088
|
springAnimate(motionRadius, animateRadius);
|
|
4081
4089
|
}, [animateRadius, motionRadius]);
|
|
4082
4090
|
const { ripples, onPointerDown, removeRipple } = useRippleState({
|
|
4083
4091
|
disabled: loading
|
|
4084
4092
|
});
|
|
4085
|
-
const handleClick =
|
|
4093
|
+
const handleClick = React39.useCallback(
|
|
4086
4094
|
(e) => {
|
|
4087
4095
|
if (loading) return e.preventDefault();
|
|
4088
4096
|
onClick == null ? void 0 : onClick(e);
|
|
4089
4097
|
},
|
|
4090
4098
|
[loading, onClick]
|
|
4091
4099
|
);
|
|
4092
|
-
const handleKeyDown =
|
|
4100
|
+
const handleKeyDown = React39.useCallback(
|
|
4093
4101
|
(e) => {
|
|
4094
4102
|
if (loading) return;
|
|
4095
4103
|
if (onClick && (e.key === "Enter" || e.key === " ")) {
|
|
@@ -4123,7 +4131,7 @@ var ButtonComponent = React38.forwardRef(
|
|
|
4123
4131
|
m.span,
|
|
4124
4132
|
{
|
|
4125
4133
|
layout: "size",
|
|
4126
|
-
className: "inline-flex items-center gap-[inherit]",
|
|
4134
|
+
className: "inline-flex items-center h-full gap-[inherit]",
|
|
4127
4135
|
transition: SPRING_TRANSITION,
|
|
4128
4136
|
children: labelText
|
|
4129
4137
|
}
|
|
@@ -4132,7 +4140,7 @@ var ButtonComponent = React38.forwardRef(
|
|
|
4132
4140
|
] });
|
|
4133
4141
|
if (asChild) {
|
|
4134
4142
|
const htmlProps = stripMotionProps(restProps);
|
|
4135
|
-
const child =
|
|
4143
|
+
const child = React39.Children.only(children);
|
|
4136
4144
|
const handleAsChildPointerDown = (e) => {
|
|
4137
4145
|
springAnimate(motionRadius, pressedRadius);
|
|
4138
4146
|
onPointerDown == null ? void 0 : onPointerDown(e);
|
|
@@ -4156,7 +4164,7 @@ var ButtonComponent = React38.forwardRef(
|
|
|
4156
4164
|
}),
|
|
4157
4165
|
className: buttonClassName
|
|
4158
4166
|
}, htmlProps), {
|
|
4159
|
-
children:
|
|
4167
|
+
children: React39.cloneElement(child, { children: innerContent })
|
|
4160
4168
|
})
|
|
4161
4169
|
) });
|
|
4162
4170
|
}
|
|
@@ -4184,7 +4192,7 @@ var ButtonComponent = React38.forwardRef(
|
|
|
4184
4192
|
}
|
|
4185
4193
|
);
|
|
4186
4194
|
ButtonComponent.displayName = "Button";
|
|
4187
|
-
var Button =
|
|
4195
|
+
var Button = React39.memo(ButtonComponent);
|
|
4188
4196
|
var SIZE_PADDING_MAP = {
|
|
4189
4197
|
xs: "0.75rem",
|
|
4190
4198
|
sm: "1rem",
|
|
@@ -4213,7 +4221,7 @@ var PRESSED_RADIUS_MAP = {
|
|
|
4213
4221
|
lg: 28,
|
|
4214
4222
|
xl: 40
|
|
4215
4223
|
};
|
|
4216
|
-
var ButtonGroupComponent =
|
|
4224
|
+
var ButtonGroupComponent = React39.forwardRef(
|
|
4217
4225
|
(_a, ref) => {
|
|
4218
4226
|
var _b = _a, {
|
|
4219
4227
|
className,
|
|
@@ -4234,13 +4242,13 @@ var ButtonGroupComponent = React38.forwardRef(
|
|
|
4234
4242
|
"showCheck",
|
|
4235
4243
|
"children"
|
|
4236
4244
|
]);
|
|
4237
|
-
const [pressedIndex, setPressedIndex] =
|
|
4238
|
-
const childrenArray =
|
|
4239
|
-
() =>
|
|
4245
|
+
const [pressedIndex, setPressedIndex] = React39.useState(null);
|
|
4246
|
+
const childrenArray = React39.useMemo(
|
|
4247
|
+
() => React39.Children.toArray(children).filter(React39.isValidElement),
|
|
4240
4248
|
[children]
|
|
4241
4249
|
);
|
|
4242
4250
|
const count = childrenArray.length;
|
|
4243
|
-
const handlePointerLeaveAndUp =
|
|
4251
|
+
const handlePointerLeaveAndUp = React39.useCallback(() => {
|
|
4244
4252
|
setPressedIndex(null);
|
|
4245
4253
|
}, []);
|
|
4246
4254
|
return /* @__PURE__ */ jsx(
|
|
@@ -4379,7 +4387,7 @@ var ButtonGroupComponent = React38.forwardRef(
|
|
|
4379
4387
|
duration: 0.2
|
|
4380
4388
|
};
|
|
4381
4389
|
}
|
|
4382
|
-
return
|
|
4390
|
+
return React39.cloneElement(element, __spreadValues(__spreadProps(__spreadValues({
|
|
4383
4391
|
key: (_a2 = element.key) != null ? _a2 : index,
|
|
4384
4392
|
tabIndex: isFirst ? 0 : -1,
|
|
4385
4393
|
size: size || element.props.size,
|
|
@@ -4408,7 +4416,7 @@ var ButtonGroupComponent = React38.forwardRef(
|
|
|
4408
4416
|
}
|
|
4409
4417
|
);
|
|
4410
4418
|
ButtonGroupComponent.displayName = "ButtonGroup";
|
|
4411
|
-
var ButtonGroup =
|
|
4419
|
+
var ButtonGroup = React39.memo(ButtonGroupComponent);
|
|
4412
4420
|
var SHADOW = {
|
|
4413
4421
|
level0: "none",
|
|
4414
4422
|
level1: "0px 1px 2px 0px rgba(0,0,0,.3), 0px 1px 3px 1px rgba(0,0,0,.15)",
|
|
@@ -4467,7 +4475,7 @@ function useCardElevation(variant, disabled) {
|
|
|
4467
4475
|
}
|
|
4468
4476
|
};
|
|
4469
4477
|
}
|
|
4470
|
-
var CardImpl =
|
|
4478
|
+
var CardImpl = React39.forwardRef(
|
|
4471
4479
|
(_a, ref) => {
|
|
4472
4480
|
var _b = _a, {
|
|
4473
4481
|
className,
|
|
@@ -4565,7 +4573,7 @@ var CardImpl = React38.forwardRef(
|
|
|
4565
4573
|
}
|
|
4566
4574
|
);
|
|
4567
4575
|
CardImpl.displayName = "Card";
|
|
4568
|
-
var Card =
|
|
4576
|
+
var Card = React39.memo(CardImpl);
|
|
4569
4577
|
var MD3_STANDARD = [0.2, 0, 0, 1];
|
|
4570
4578
|
var MD3_FAST_EFFECTS = [0.3, 0, 1, 1];
|
|
4571
4579
|
var CHECKMARK_PATH = "M 4.5 9.5 L 7.5 12.5 L 13.5 5.5";
|
|
@@ -4579,7 +4587,7 @@ var NEXT_STATE = {
|
|
|
4579
4587
|
checked: "indeterminate",
|
|
4580
4588
|
indeterminate: "unchecked"
|
|
4581
4589
|
};
|
|
4582
|
-
var CheckboxVisual =
|
|
4590
|
+
var CheckboxVisual = React39.memo(function CheckboxVisual2({
|
|
4583
4591
|
isSelected,
|
|
4584
4592
|
isIndeterminate,
|
|
4585
4593
|
containerBg,
|
|
@@ -4650,7 +4658,7 @@ var CheckboxVisual = React38.memo(function CheckboxVisual2({
|
|
|
4650
4658
|
);
|
|
4651
4659
|
});
|
|
4652
4660
|
function useMergedRef2(externalRef, internalRef) {
|
|
4653
|
-
return
|
|
4661
|
+
return React39.useCallback(
|
|
4654
4662
|
(node) => {
|
|
4655
4663
|
internalRef.current = node;
|
|
4656
4664
|
if (!externalRef) return;
|
|
@@ -4663,7 +4671,7 @@ function useMergedRef2(externalRef, internalRef) {
|
|
|
4663
4671
|
[externalRef, internalRef]
|
|
4664
4672
|
);
|
|
4665
4673
|
}
|
|
4666
|
-
var CheckboxComponent =
|
|
4674
|
+
var CheckboxComponent = React39.forwardRef(
|
|
4667
4675
|
({
|
|
4668
4676
|
checked,
|
|
4669
4677
|
defaultChecked = false,
|
|
@@ -4685,20 +4693,20 @@ var CheckboxComponent = React38.forwardRef(
|
|
|
4685
4693
|
}, ref) => {
|
|
4686
4694
|
var _a;
|
|
4687
4695
|
const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
|
|
4688
|
-
const generatedId =
|
|
4696
|
+
const generatedId = React39.useId();
|
|
4689
4697
|
const inputId = idProp != null ? idProp : label ? `checkbox-${generatedId}` : void 0;
|
|
4690
|
-
const [internalState, setInternalState] =
|
|
4698
|
+
const [internalState, setInternalState] = React39.useState(
|
|
4691
4699
|
() => defaultChecked ? "checked" : "unchecked"
|
|
4692
4700
|
);
|
|
4693
4701
|
const isControlled = stateProp !== void 0 || checked !== void 0;
|
|
4694
4702
|
const baseState = isControlled ? resolveState(checked, false, stateProp) : internalState;
|
|
4695
4703
|
const effectiveState = indeterminate ? "indeterminate" : baseState;
|
|
4696
|
-
const [ripples, setRipples] =
|
|
4697
|
-
const removeRipple =
|
|
4704
|
+
const [ripples, setRipples] = React39.useState([]);
|
|
4705
|
+
const removeRipple = React39.useCallback(
|
|
4698
4706
|
(id) => setRipples((prev) => prev.filter((r) => r.id !== id)),
|
|
4699
4707
|
[]
|
|
4700
4708
|
);
|
|
4701
|
-
const onPointerDown =
|
|
4709
|
+
const onPointerDown = React39.useCallback(
|
|
4702
4710
|
(e) => {
|
|
4703
4711
|
if (disabled) return;
|
|
4704
4712
|
const rect = e.currentTarget.getBoundingClientRect();
|
|
@@ -4712,7 +4720,7 @@ var CheckboxComponent = React38.forwardRef(
|
|
|
4712
4720
|
},
|
|
4713
4721
|
[disabled]
|
|
4714
4722
|
);
|
|
4715
|
-
const handleChange =
|
|
4723
|
+
const handleChange = React39.useCallback(
|
|
4716
4724
|
(e) => {
|
|
4717
4725
|
if (disabled) return;
|
|
4718
4726
|
if (stateProp !== void 0) {
|
|
@@ -4738,9 +4746,9 @@ var CheckboxComponent = React38.forwardRef(
|
|
|
4738
4746
|
onCheckedChange
|
|
4739
4747
|
]
|
|
4740
4748
|
);
|
|
4741
|
-
const inputRef =
|
|
4749
|
+
const inputRef = React39.useRef(null);
|
|
4742
4750
|
const mergedRef = useMergedRef2(ref, inputRef);
|
|
4743
|
-
|
|
4751
|
+
React39.useEffect(() => {
|
|
4744
4752
|
if (inputRef.current) {
|
|
4745
4753
|
inputRef.current.indeterminate = effectiveState === "indeterminate";
|
|
4746
4754
|
}
|
|
@@ -4865,13 +4873,13 @@ var CheckboxComponent = React38.forwardRef(
|
|
|
4865
4873
|
}
|
|
4866
4874
|
);
|
|
4867
4875
|
CheckboxComponent.displayName = "Checkbox";
|
|
4868
|
-
var Checkbox =
|
|
4869
|
-
var TriStateCheckboxComponent =
|
|
4876
|
+
var Checkbox = React39.memo(CheckboxComponent);
|
|
4877
|
+
var TriStateCheckboxComponent = React39.forwardRef((_a, ref) => {
|
|
4870
4878
|
var _b = _a, { state, onStateChange } = _b, rest = __objRest(_b, ["state", "onStateChange"]);
|
|
4871
4879
|
return /* @__PURE__ */ jsx(Checkbox, __spreadValues({ ref, state, onStateChange }, rest));
|
|
4872
4880
|
});
|
|
4873
4881
|
TriStateCheckboxComponent.displayName = "TriStateCheckbox";
|
|
4874
|
-
var TriStateCheckbox =
|
|
4882
|
+
var TriStateCheckbox = React39.memo(TriStateCheckboxComponent);
|
|
4875
4883
|
function CheckIcon({ className }) {
|
|
4876
4884
|
return /* @__PURE__ */ jsx(
|
|
4877
4885
|
"svg",
|
|
@@ -4965,7 +4973,7 @@ var chipVariants = cva(
|
|
|
4965
4973
|
defaultVariants: { variant: "assist" }
|
|
4966
4974
|
}
|
|
4967
4975
|
);
|
|
4968
|
-
var ChipImpl =
|
|
4976
|
+
var ChipImpl = React39.forwardRef(
|
|
4969
4977
|
(_a, ref) => {
|
|
4970
4978
|
var _b = _a, {
|
|
4971
4979
|
variant = "assist",
|
|
@@ -5001,7 +5009,7 @@ var ChipImpl = React38.forwardRef(
|
|
|
5001
5009
|
const showCheckmark = isFilter && selected;
|
|
5002
5010
|
const hasTrailingContent = !!trailingIcon || !!onRemove;
|
|
5003
5011
|
const hasLeadingContent = isFilter || !!resolvedLeadingIcon;
|
|
5004
|
-
const paddingClass =
|
|
5012
|
+
const paddingClass = React39.useMemo(
|
|
5005
5013
|
() => cn(
|
|
5006
5014
|
!isInput && !hasLeadingContent && !hasTrailingContent && "px-4",
|
|
5007
5015
|
!isInput && hasLeadingContent && !hasTrailingContent && "pl-2 pr-4",
|
|
@@ -5014,7 +5022,7 @@ var ChipImpl = React38.forwardRef(
|
|
|
5014
5022
|
),
|
|
5015
5023
|
[isInput, hasLeadingContent, hasTrailingContent]
|
|
5016
5024
|
);
|
|
5017
|
-
const stateClass =
|
|
5025
|
+
const stateClass = React39.useMemo(
|
|
5018
5026
|
() => cn(
|
|
5019
5027
|
(isFilter || isInput) && selected && "bg-m3-secondary-container text-m3-on-secondary-container border-none before:bg-m3-on-secondary-container",
|
|
5020
5028
|
elevated && !selected && "bg-m3-surface-container-low border-none elevation-1",
|
|
@@ -5025,7 +5033,7 @@ var ChipImpl = React38.forwardRef(
|
|
|
5025
5033
|
),
|
|
5026
5034
|
[isFilter, isInput, selected, elevated, disabled]
|
|
5027
5035
|
);
|
|
5028
|
-
const leadingIconColorClass =
|
|
5036
|
+
const leadingIconColorClass = React39.useMemo(
|
|
5029
5037
|
() => cn(
|
|
5030
5038
|
(variant === "assist" || variant === "suggestion") && "text-m3-primary",
|
|
5031
5039
|
isFilter && !selected && "text-m3-primary",
|
|
@@ -5197,8 +5205,8 @@ var ChipImpl = React38.forwardRef(
|
|
|
5197
5205
|
}
|
|
5198
5206
|
);
|
|
5199
5207
|
ChipImpl.displayName = "Chip";
|
|
5200
|
-
var Chip =
|
|
5201
|
-
var ScrollArea =
|
|
5208
|
+
var Chip = React39.memo(ChipImpl);
|
|
5209
|
+
var ScrollArea = React39.forwardRef(
|
|
5202
5210
|
(_a, ref) => {
|
|
5203
5211
|
var _b = _a, {
|
|
5204
5212
|
className,
|
|
@@ -5206,14 +5214,16 @@ var ScrollArea = React38.forwardRef(
|
|
|
5206
5214
|
children,
|
|
5207
5215
|
type = "hover",
|
|
5208
5216
|
orientation = "vertical",
|
|
5209
|
-
scrollHideDelay = 600
|
|
5217
|
+
scrollHideDelay = 600,
|
|
5218
|
+
viewportRef
|
|
5210
5219
|
} = _b, props = __objRest(_b, [
|
|
5211
5220
|
"className",
|
|
5212
5221
|
"viewportClassName",
|
|
5213
5222
|
"children",
|
|
5214
5223
|
"type",
|
|
5215
5224
|
"orientation",
|
|
5216
|
-
"scrollHideDelay"
|
|
5225
|
+
"scrollHideDelay",
|
|
5226
|
+
"viewportRef"
|
|
5217
5227
|
]);
|
|
5218
5228
|
const radixType = type === "none" ? "always" : type;
|
|
5219
5229
|
return /* @__PURE__ */ jsxs(
|
|
@@ -5228,6 +5238,7 @@ var ScrollArea = React38.forwardRef(
|
|
|
5228
5238
|
/* @__PURE__ */ jsx(
|
|
5229
5239
|
RadixScrollArea.Viewport,
|
|
5230
5240
|
{
|
|
5241
|
+
ref: viewportRef,
|
|
5231
5242
|
className: cn(
|
|
5232
5243
|
"h-full w-full flex-1 min-h-0 min-w-0 rounded-[inherit]",
|
|
5233
5244
|
"outline-none focus-visible:ring-2 focus-visible:ring-m3-primary focus-visible:ring-offset-1",
|
|
@@ -5257,7 +5268,7 @@ var ScrollArea = React38.forwardRef(
|
|
|
5257
5268
|
}
|
|
5258
5269
|
);
|
|
5259
5270
|
ScrollArea.displayName = "ScrollArea";
|
|
5260
|
-
var ScrollAreaScrollbar =
|
|
5271
|
+
var ScrollAreaScrollbar = React39.forwardRef((_a, ref) => {
|
|
5261
5272
|
var _b = _a, { className, orientation = "vertical" } = _b, props = __objRest(_b, ["className", "orientation"]);
|
|
5262
5273
|
return /* @__PURE__ */ jsx(
|
|
5263
5274
|
RadixScrollArea.Scrollbar,
|
|
@@ -5287,7 +5298,7 @@ var ScrollAreaScrollbar = React38.forwardRef((_a, ref) => {
|
|
|
5287
5298
|
);
|
|
5288
5299
|
});
|
|
5289
5300
|
ScrollAreaScrollbar.displayName = RadixScrollArea.Scrollbar.displayName;
|
|
5290
|
-
var ScrollAreaCorner =
|
|
5301
|
+
var ScrollAreaCorner = React39.forwardRef((_a, ref) => {
|
|
5291
5302
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5292
5303
|
return /* @__PURE__ */ jsx(
|
|
5293
5304
|
RadixScrollArea.Corner,
|
|
@@ -5564,7 +5575,7 @@ function resolveDisabledBgClass(colorStyle) {
|
|
|
5564
5575
|
}
|
|
5565
5576
|
return "disabled:text-m3-on-surface/[0.38]";
|
|
5566
5577
|
}
|
|
5567
|
-
var IconButtonComponent =
|
|
5578
|
+
var IconButtonComponent = React39.forwardRef(
|
|
5568
5579
|
(_a, ref) => {
|
|
5569
5580
|
var _b = _a, {
|
|
5570
5581
|
className,
|
|
@@ -5598,18 +5609,18 @@ var IconButtonComponent = React38.forwardRef(
|
|
|
5598
5609
|
var _a2, _b2;
|
|
5599
5610
|
const isToggle = variant === "toggle";
|
|
5600
5611
|
const isSelected = isToggle && !!selected;
|
|
5601
|
-
const resolvedColorClass =
|
|
5612
|
+
const resolvedColorClass = React39.useMemo(
|
|
5602
5613
|
() => isSelected ? colorStyles[colorStyle].selected : colorStyles[colorStyle].default,
|
|
5603
5614
|
[isSelected, colorStyle]
|
|
5604
5615
|
);
|
|
5605
|
-
const outlineWidthClass =
|
|
5616
|
+
const outlineWidthClass = React39.useMemo(
|
|
5606
5617
|
() => {
|
|
5607
5618
|
var _a3;
|
|
5608
5619
|
return colorStyle === "outlined" && !isSelected ? (_a3 = SIZE_OUTLINE_WIDTH[size]) != null ? _a3 : "border" : "";
|
|
5609
5620
|
},
|
|
5610
5621
|
[colorStyle, isSelected, size]
|
|
5611
5622
|
);
|
|
5612
|
-
const disabledBgClass =
|
|
5623
|
+
const disabledBgClass = React39.useMemo(
|
|
5613
5624
|
() => resolveDisabledBgClass(colorStyle),
|
|
5614
5625
|
[colorStyle]
|
|
5615
5626
|
);
|
|
@@ -5628,7 +5639,7 @@ var IconButtonComponent = React38.forwardRef(
|
|
|
5628
5639
|
const { ripples, onPointerDown, removeRipple } = useRippleState({
|
|
5629
5640
|
disabled: loading
|
|
5630
5641
|
});
|
|
5631
|
-
const handleClick =
|
|
5642
|
+
const handleClick = React39.useCallback(
|
|
5632
5643
|
(e) => {
|
|
5633
5644
|
if (loading) {
|
|
5634
5645
|
e.preventDefault();
|
|
@@ -5638,7 +5649,7 @@ var IconButtonComponent = React38.forwardRef(
|
|
|
5638
5649
|
},
|
|
5639
5650
|
[loading, onClick]
|
|
5640
5651
|
);
|
|
5641
|
-
const handleKeyDown =
|
|
5652
|
+
const handleKeyDown = React39.useCallback(
|
|
5642
5653
|
(e) => {
|
|
5643
5654
|
if (loading) return;
|
|
5644
5655
|
if ((e.key === "Enter" || e.key === " ") && onClick) {
|
|
@@ -5726,7 +5737,7 @@ var IconButtonComponent = React38.forwardRef(
|
|
|
5726
5737
|
}
|
|
5727
5738
|
);
|
|
5728
5739
|
IconButtonComponent.displayName = "IconButton";
|
|
5729
|
-
var IconButton =
|
|
5740
|
+
var IconButton = React39.memo(IconButtonComponent);
|
|
5730
5741
|
var MD3_SPRING = {
|
|
5731
5742
|
type: "spring",
|
|
5732
5743
|
stiffness: 400,
|
|
@@ -5763,9 +5774,9 @@ DialogTrigger.displayName = "DialogTrigger";
|
|
|
5763
5774
|
var DialogPortal = ({
|
|
5764
5775
|
open,
|
|
5765
5776
|
children
|
|
5766
|
-
}) => /* @__PURE__ */ jsx(RadixDialog.Portal, { forceMount: true, children: /* @__PURE__ */ jsx(AnimatePresence, { children: open ?
|
|
5777
|
+
}) => /* @__PURE__ */ jsx(RadixDialog.Portal, { forceMount: true, children: /* @__PURE__ */ jsx(AnimatePresence, { children: open ? React39.Children.toArray(children) : null }) });
|
|
5767
5778
|
DialogPortal.displayName = "DialogPortal";
|
|
5768
|
-
var DialogOverlay =
|
|
5779
|
+
var DialogOverlay = React39.forwardRef((_a, ref) => {
|
|
5769
5780
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5770
5781
|
return /* @__PURE__ */ jsx(RadixDialog.Overlay, __spreadProps(__spreadValues({ ref, asChild: true }, props), { children: /* @__PURE__ */ jsx(
|
|
5771
5782
|
m.div,
|
|
@@ -5776,7 +5787,7 @@ var DialogOverlay = React38.forwardRef((_a, ref) => {
|
|
|
5776
5787
|
) }));
|
|
5777
5788
|
});
|
|
5778
5789
|
DialogOverlay.displayName = "DialogOverlay";
|
|
5779
|
-
var DialogContent =
|
|
5790
|
+
var DialogContent = React39.forwardRef((_a, ref) => {
|
|
5780
5791
|
var _b = _a, { className, children, hideCloseButton = false } = _b, props = __objRest(_b, ["className", "children", "hideCloseButton"]);
|
|
5781
5792
|
return /* @__PURE__ */ jsx(
|
|
5782
5793
|
RadixDialog.Content,
|
|
@@ -5816,7 +5827,7 @@ var DialogContent = React38.forwardRef((_a, ref) => {
|
|
|
5816
5827
|
);
|
|
5817
5828
|
});
|
|
5818
5829
|
DialogContent.displayName = "DialogContent";
|
|
5819
|
-
var DialogIcon =
|
|
5830
|
+
var DialogIcon = React39.forwardRef((_a, ref) => {
|
|
5820
5831
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
5821
5832
|
return /* @__PURE__ */ jsx(
|
|
5822
5833
|
"div",
|
|
@@ -5839,7 +5850,7 @@ var DialogHeader = (_a) => {
|
|
|
5839
5850
|
return /* @__PURE__ */ jsx("div", __spreadValues({ className: cn("flex flex-col gap-2 mb-4", className) }, props));
|
|
5840
5851
|
};
|
|
5841
5852
|
DialogHeader.displayName = "DialogHeader";
|
|
5842
|
-
var DialogTitle =
|
|
5853
|
+
var DialogTitle = React39.forwardRef((_a, ref) => {
|
|
5843
5854
|
var _b = _a, { className, asChild } = _b, props = __objRest(_b, ["className", "asChild"]);
|
|
5844
5855
|
return /* @__PURE__ */ jsx(
|
|
5845
5856
|
RadixDialog.Title,
|
|
@@ -5854,7 +5865,7 @@ var DialogTitle = React38.forwardRef((_a, ref) => {
|
|
|
5854
5865
|
);
|
|
5855
5866
|
});
|
|
5856
5867
|
DialogTitle.displayName = "DialogTitle";
|
|
5857
|
-
var DialogDescription =
|
|
5868
|
+
var DialogDescription = React39.forwardRef((_a, ref) => {
|
|
5858
5869
|
var _b = _a, { className, asChild } = _b, props = __objRest(_b, ["className", "asChild"]);
|
|
5859
5870
|
return /* @__PURE__ */ jsx(
|
|
5860
5871
|
RadixDialog.Description,
|
|
@@ -5866,7 +5877,7 @@ var DialogDescription = React38.forwardRef((_a, ref) => {
|
|
|
5866
5877
|
);
|
|
5867
5878
|
});
|
|
5868
5879
|
DialogDescription.displayName = "DialogDescription";
|
|
5869
|
-
var DialogBody =
|
|
5880
|
+
var DialogBody = React39.forwardRef((_a, ref) => {
|
|
5870
5881
|
var _b = _a, { className, children, dir } = _b, props = __objRest(_b, ["className", "children", "dir"]);
|
|
5871
5882
|
return /* @__PURE__ */ jsx(
|
|
5872
5883
|
ScrollArea,
|
|
@@ -5897,7 +5908,7 @@ var DialogFooter = (_a) => {
|
|
|
5897
5908
|
};
|
|
5898
5909
|
DialogFooter.displayName = "DialogFooter";
|
|
5899
5910
|
var DialogClose = RadixDialog.Close;
|
|
5900
|
-
var DialogFullScreenContent =
|
|
5911
|
+
var DialogFullScreenContent = React39.forwardRef(
|
|
5901
5912
|
(_a, ref) => {
|
|
5902
5913
|
var _b = _a, {
|
|
5903
5914
|
className,
|
|
@@ -5980,7 +5991,7 @@ function buildWavePath(startX, endX, amplitude = 2, wavelength = 32, yCenter = 4
|
|
|
5980
5991
|
}
|
|
5981
5992
|
return d;
|
|
5982
5993
|
}
|
|
5983
|
-
var DividerImpl =
|
|
5994
|
+
var DividerImpl = React39.forwardRef(
|
|
5984
5995
|
(_a, ref) => {
|
|
5985
5996
|
var _b = _a, {
|
|
5986
5997
|
variant = "full-bleed",
|
|
@@ -6100,7 +6111,7 @@ var DividerImpl = React38.forwardRef(
|
|
|
6100
6111
|
}
|
|
6101
6112
|
);
|
|
6102
6113
|
DividerImpl.displayName = "Divider";
|
|
6103
|
-
var Divider =
|
|
6114
|
+
var Divider = React39.memo(DividerImpl);
|
|
6104
6115
|
var MD3_DRAWER_SPRING = {
|
|
6105
6116
|
type: "spring",
|
|
6106
6117
|
stiffness: 350,
|
|
@@ -6137,7 +6148,7 @@ var DrawerPortal = ({
|
|
|
6137
6148
|
open,
|
|
6138
6149
|
children
|
|
6139
6150
|
}) => /* @__PURE__ */ jsx(RadixDialog.Portal, { forceMount: true, children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: open && children }) });
|
|
6140
|
-
var DrawerOverlay =
|
|
6151
|
+
var DrawerOverlay = React39.forwardRef((_a, ref) => {
|
|
6141
6152
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
6142
6153
|
return /* @__PURE__ */ jsx(RadixDialog.Overlay, __spreadProps(__spreadValues({ ref, asChild: true }, props), { children: /* @__PURE__ */ jsx(
|
|
6143
6154
|
m.div,
|
|
@@ -6148,7 +6159,7 @@ var DrawerOverlay = React38.forwardRef((_a, ref) => {
|
|
|
6148
6159
|
) }));
|
|
6149
6160
|
});
|
|
6150
6161
|
DrawerOverlay.displayName = "DrawerOverlay";
|
|
6151
|
-
var DrawerContent =
|
|
6162
|
+
var DrawerContent = React39.forwardRef(
|
|
6152
6163
|
(_a, ref) => {
|
|
6153
6164
|
var _b = _a, {
|
|
6154
6165
|
className,
|
|
@@ -6227,7 +6238,7 @@ var DrawerFooter = (_a) => {
|
|
|
6227
6238
|
return /* @__PURE__ */ jsx("div", __spreadValues({ className: cn("flex flex-col gap-2 mt-4", className) }, props));
|
|
6228
6239
|
};
|
|
6229
6240
|
DrawerFooter.displayName = "DrawerFooter";
|
|
6230
|
-
var DrawerTitle =
|
|
6241
|
+
var DrawerTitle = React39.forwardRef((_a, ref) => {
|
|
6231
6242
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
6232
6243
|
return /* @__PURE__ */ jsx(
|
|
6233
6244
|
RadixDialog.Title,
|
|
@@ -6241,7 +6252,7 @@ var DrawerTitle = React38.forwardRef((_a, ref) => {
|
|
|
6241
6252
|
);
|
|
6242
6253
|
});
|
|
6243
6254
|
DrawerTitle.displayName = "DrawerTitle";
|
|
6244
|
-
var DrawerDescription =
|
|
6255
|
+
var DrawerDescription = React39.forwardRef((_a, ref) => {
|
|
6245
6256
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
6246
6257
|
return /* @__PURE__ */ jsx(
|
|
6247
6258
|
RadixDialog.Description,
|
|
@@ -6322,7 +6333,7 @@ function FABPosition({
|
|
|
6322
6333
|
}
|
|
6323
6334
|
);
|
|
6324
6335
|
}
|
|
6325
|
-
var FABComponent =
|
|
6336
|
+
var FABComponent = React39.forwardRef(
|
|
6326
6337
|
(_a, ref) => {
|
|
6327
6338
|
var _b = _a, {
|
|
6328
6339
|
className,
|
|
@@ -6367,7 +6378,7 @@ var FABComponent = React38.forwardRef(
|
|
|
6367
6378
|
const { ripples, onPointerDown, removeRipple } = useRippleState({
|
|
6368
6379
|
disabled: loading
|
|
6369
6380
|
});
|
|
6370
|
-
const handleClick =
|
|
6381
|
+
const handleClick = React39.useCallback(
|
|
6371
6382
|
(e) => {
|
|
6372
6383
|
if (loading) {
|
|
6373
6384
|
e.preventDefault();
|
|
@@ -6377,7 +6388,7 @@ var FABComponent = React38.forwardRef(
|
|
|
6377
6388
|
},
|
|
6378
6389
|
[loading, onClick]
|
|
6379
6390
|
);
|
|
6380
|
-
const handleKeyDown =
|
|
6391
|
+
const handleKeyDown = React39.useCallback(
|
|
6381
6392
|
(e) => {
|
|
6382
6393
|
if (loading) return;
|
|
6383
6394
|
if ((e.key === "Enter" || e.key === " ") && onClick) {
|
|
@@ -6486,7 +6497,7 @@ var FABComponent = React38.forwardRef(
|
|
|
6486
6497
|
}
|
|
6487
6498
|
);
|
|
6488
6499
|
FABComponent.displayName = "FAB";
|
|
6489
|
-
var FAB =
|
|
6500
|
+
var FAB = React39.memo(FABComponent);
|
|
6490
6501
|
var SPRING_NORMAL = { stiffness: 700, damping: 40 };
|
|
6491
6502
|
var SPRING_REDUCED = { stiffness: 1e4, damping: 100 };
|
|
6492
6503
|
var FOCUS_DELAY_MS = 50;
|
|
@@ -6594,7 +6605,7 @@ function CloseIcon3() {
|
|
|
6594
6605
|
function defaultFabIcon(progress) {
|
|
6595
6606
|
return progress > 0.5 ? /* @__PURE__ */ jsx(CloseIcon3, {}) : /* @__PURE__ */ jsx(AddIcon, {});
|
|
6596
6607
|
}
|
|
6597
|
-
var ToggleFABComponent =
|
|
6608
|
+
var ToggleFABComponent = React39.forwardRef(
|
|
6598
6609
|
({
|
|
6599
6610
|
expanded,
|
|
6600
6611
|
onToggle,
|
|
@@ -6612,7 +6623,7 @@ var ToggleFABComponent = React38.forwardRef(
|
|
|
6612
6623
|
const sizeTokens = (_b = TOGGLE_FAB_SIZES[fabSize]) != null ? _b : TOGGLE_FAB_SIZES.baseline;
|
|
6613
6624
|
const springConfig = prefersReduced ? SPRING_REDUCED : SPRING_NORMAL;
|
|
6614
6625
|
const checkedProgress = useSpring(expanded ? 1 : 0, springConfig);
|
|
6615
|
-
|
|
6626
|
+
React39.useEffect(() => {
|
|
6616
6627
|
checkedProgress.set(expanded ? 1 : 0);
|
|
6617
6628
|
}, [expanded, checkedProgress]);
|
|
6618
6629
|
const borderRadius = useTransform(
|
|
@@ -6620,12 +6631,12 @@ var ToggleFABComponent = React38.forwardRef(
|
|
|
6620
6631
|
[0, 1],
|
|
6621
6632
|
[`${sizeTokens.initialRadius}px`, `${sizeTokens.finalRadius}px`]
|
|
6622
6633
|
);
|
|
6623
|
-
const [iconProgress, setIconProgress] =
|
|
6624
|
-
|
|
6634
|
+
const [iconProgress, setIconProgress] = React39.useState(expanded ? 1 : 0);
|
|
6635
|
+
React39.useEffect(() => {
|
|
6625
6636
|
return checkedProgress.on("change", setIconProgress);
|
|
6626
6637
|
}, [checkedProgress]);
|
|
6627
6638
|
const { ripples, onPointerDown, removeRipple } = useRippleState();
|
|
6628
|
-
const handleClick =
|
|
6639
|
+
const handleClick = React39.useCallback(() => {
|
|
6629
6640
|
onToggle(!expanded);
|
|
6630
6641
|
}, [expanded, onToggle]);
|
|
6631
6642
|
return /* @__PURE__ */ jsxs(
|
|
@@ -6674,7 +6685,7 @@ var ToggleFABComponent = React38.forwardRef(
|
|
|
6674
6685
|
}
|
|
6675
6686
|
);
|
|
6676
6687
|
ToggleFABComponent.displayName = "ToggleFAB";
|
|
6677
|
-
var ToggleFAB =
|
|
6688
|
+
var ToggleFAB = React39.memo(ToggleFABComponent);
|
|
6678
6689
|
function FABMenuItem({
|
|
6679
6690
|
icon,
|
|
6680
6691
|
label,
|
|
@@ -6687,7 +6698,7 @@ function FABMenuItem({
|
|
|
6687
6698
|
var _a;
|
|
6688
6699
|
const colors = (_a = MENU_ITEM_COLORS[colorVariant]) != null ? _a : MENU_ITEM_COLORS.primary;
|
|
6689
6700
|
const { ripples, onPointerDown, removeRipple } = useRippleState({ disabled });
|
|
6690
|
-
const handleClick =
|
|
6701
|
+
const handleClick = React39.useCallback(
|
|
6691
6702
|
(e) => {
|
|
6692
6703
|
if (disabled) {
|
|
6693
6704
|
e.preventDefault();
|
|
@@ -6697,7 +6708,7 @@ function FABMenuItem({
|
|
|
6697
6708
|
},
|
|
6698
6709
|
[disabled, onClick]
|
|
6699
6710
|
);
|
|
6700
|
-
const handleKeyDown =
|
|
6711
|
+
const handleKeyDown = React39.useCallback(
|
|
6701
6712
|
(e) => {
|
|
6702
6713
|
if (disabled) return;
|
|
6703
6714
|
if (e.key === "Enter" || e.key === " ") {
|
|
@@ -6764,13 +6775,13 @@ function FABMenu({
|
|
|
6764
6775
|
focusLast = true,
|
|
6765
6776
|
"aria-label": ariaLabel
|
|
6766
6777
|
}) {
|
|
6767
|
-
const fabId =
|
|
6768
|
-
const menuId =
|
|
6769
|
-
const toggleRef =
|
|
6770
|
-
const itemRefs =
|
|
6771
|
-
const [focusedIndex, setFocusedIndex] =
|
|
6772
|
-
const reversedItems =
|
|
6773
|
-
const focusItem =
|
|
6778
|
+
const fabId = React39.useId();
|
|
6779
|
+
const menuId = React39.useId();
|
|
6780
|
+
const toggleRef = React39.useRef(null);
|
|
6781
|
+
const itemRefs = React39.useRef([]);
|
|
6782
|
+
const [focusedIndex, setFocusedIndex] = React39.useState(-1);
|
|
6783
|
+
const reversedItems = React39.useMemo(() => [...items].reverse(), [items]);
|
|
6784
|
+
const focusItem = React39.useCallback((index) => {
|
|
6774
6785
|
var _a;
|
|
6775
6786
|
const clampedIndex = Math.max(
|
|
6776
6787
|
0,
|
|
@@ -6779,8 +6790,8 @@ function FABMenu({
|
|
|
6779
6790
|
setFocusedIndex(clampedIndex);
|
|
6780
6791
|
(_a = itemRefs.current[clampedIndex]) == null ? void 0 : _a.focus();
|
|
6781
6792
|
}, []);
|
|
6782
|
-
const wasExpandedRef =
|
|
6783
|
-
|
|
6793
|
+
const wasExpandedRef = React39.useRef(false);
|
|
6794
|
+
React39.useEffect(() => {
|
|
6784
6795
|
var _a;
|
|
6785
6796
|
if (expanded) {
|
|
6786
6797
|
wasExpandedRef.current = true;
|
|
@@ -6795,7 +6806,7 @@ function FABMenu({
|
|
|
6795
6806
|
wasExpandedRef.current = false;
|
|
6796
6807
|
setFocusedIndex(-1);
|
|
6797
6808
|
}, [expanded, focusLast, items.length, focusItem]);
|
|
6798
|
-
const handleMenuKeyDown =
|
|
6809
|
+
const handleMenuKeyDown = React39.useCallback(
|
|
6799
6810
|
(e) => {
|
|
6800
6811
|
if (!expanded) return;
|
|
6801
6812
|
const lastIndex = items.length - 1;
|
|
@@ -6919,7 +6930,296 @@ function FABMenu({
|
|
|
6919
6930
|
)
|
|
6920
6931
|
] });
|
|
6921
6932
|
}
|
|
6922
|
-
var
|
|
6933
|
+
var NavigationBarContext = React39.createContext({ variant: "flexible" });
|
|
6934
|
+
function cloneIconWithFill(icon, selected) {
|
|
6935
|
+
if (!React39.isValidElement(icon)) return icon;
|
|
6936
|
+
if (icon.type === Icon) {
|
|
6937
|
+
return React39.cloneElement(
|
|
6938
|
+
icon,
|
|
6939
|
+
{ fill: selected ? 1 : 0, animateFill: true }
|
|
6940
|
+
);
|
|
6941
|
+
}
|
|
6942
|
+
return icon;
|
|
6943
|
+
}
|
|
6944
|
+
function ActivePill() {
|
|
6945
|
+
const { activeIndicatorTransition } = React39.useContext(NavigationBarContext);
|
|
6946
|
+
return /* @__PURE__ */ jsx(
|
|
6947
|
+
m.div,
|
|
6948
|
+
{
|
|
6949
|
+
className: "absolute inset-0 bg-m3-secondary-container pointer-events-none",
|
|
6950
|
+
style: {
|
|
6951
|
+
borderRadius: 9999,
|
|
6952
|
+
zIndex: 0
|
|
6953
|
+
},
|
|
6954
|
+
initial: { opacity: 0, scale: 0.5 },
|
|
6955
|
+
animate: { opacity: 1, scale: 1 },
|
|
6956
|
+
exit: { opacity: 0, scale: 0.5 },
|
|
6957
|
+
transition: activeIndicatorTransition || SPRING_TRANSITION_EXPRESSIVE
|
|
6958
|
+
}
|
|
6959
|
+
);
|
|
6960
|
+
}
|
|
6961
|
+
function HoverStateLayer() {
|
|
6962
|
+
return /* @__PURE__ */ jsx("div", { className: "absolute inset-0 rounded-full bg-m3-on-surface opacity-0 group-hover:opacity-[0.08] group-focus-visible:opacity-[0.10] active:opacity-[0.10] transition-opacity duration-200 pointer-events-none z-0" });
|
|
6963
|
+
}
|
|
6964
|
+
function RippleLayer({ ripples, onRippleDone }) {
|
|
6965
|
+
return /* @__PURE__ */ jsx("div", { className: "absolute inset-0 rounded-full overflow-hidden pointer-events-none z-0", children: /* @__PURE__ */ jsx(Ripple, { ripples, onRippleDone }) });
|
|
6966
|
+
}
|
|
6967
|
+
function IconContainer({ selected, badge, children }) {
|
|
6968
|
+
return /* @__PURE__ */ jsxs(
|
|
6969
|
+
"div",
|
|
6970
|
+
{
|
|
6971
|
+
"aria-hidden": "true",
|
|
6972
|
+
className: cn(
|
|
6973
|
+
"relative flex items-center justify-center size-6 transition-colors duration-200 shrink-0",
|
|
6974
|
+
selected ? "text-m3-on-secondary-container" : "text-m3-on-surface-variant"
|
|
6975
|
+
),
|
|
6976
|
+
children: [
|
|
6977
|
+
children,
|
|
6978
|
+
badge && /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-1 flex min-w-3 h-3 items-center justify-center rounded-full bg-m3-error px-1 text-[10px] font-medium leading-none tracking-normal text-m3-on-error ring-[1.5px] ring-m3-surface", children: badge })
|
|
6979
|
+
]
|
|
6980
|
+
}
|
|
6981
|
+
);
|
|
6982
|
+
}
|
|
6983
|
+
var NavigationBarItemComponent = React39.forwardRef(
|
|
6984
|
+
({
|
|
6985
|
+
selected,
|
|
6986
|
+
icon,
|
|
6987
|
+
label,
|
|
6988
|
+
onClick,
|
|
6989
|
+
disabled = false,
|
|
6990
|
+
badge,
|
|
6991
|
+
className,
|
|
6992
|
+
"aria-label": ariaLabelProp
|
|
6993
|
+
}, ref) => {
|
|
6994
|
+
const { variant, itemLayout } = React39.useContext(NavigationBarContext);
|
|
6995
|
+
const isForcedHorizontal = itemLayout === "horizontal";
|
|
6996
|
+
const isResponsiveHorizontal = (variant === "flexible" || variant === "xr") && itemLayout === void 0;
|
|
6997
|
+
const { ripples, onPointerDown, removeRipple } = useRippleState({
|
|
6998
|
+
disabled
|
|
6999
|
+
});
|
|
7000
|
+
const handleClick = React39.useCallback(
|
|
7001
|
+
(e) => {
|
|
7002
|
+
if (disabled) {
|
|
7003
|
+
e.preventDefault();
|
|
7004
|
+
return;
|
|
7005
|
+
}
|
|
7006
|
+
if (selected) {
|
|
7007
|
+
if (typeof window !== "undefined" && window.scrollY > 0) {
|
|
7008
|
+
window.scrollTo({ top: 0, behavior: "smooth" });
|
|
7009
|
+
}
|
|
7010
|
+
return;
|
|
7011
|
+
}
|
|
7012
|
+
onClick == null ? void 0 : onClick();
|
|
7013
|
+
},
|
|
7014
|
+
[disabled, selected, onClick]
|
|
7015
|
+
);
|
|
7016
|
+
const filledIcon = cloneIconWithFill(icon, selected);
|
|
7017
|
+
return /* @__PURE__ */ jsxs(
|
|
7018
|
+
m.button,
|
|
7019
|
+
{
|
|
7020
|
+
ref,
|
|
7021
|
+
type: "button",
|
|
7022
|
+
role: "menuitem",
|
|
7023
|
+
"aria-current": selected ? "page" : void 0,
|
|
7024
|
+
"aria-disabled": disabled ? true : void 0,
|
|
7025
|
+
"aria-label": ariaLabelProp || (typeof label === "string" ? label : void 0),
|
|
7026
|
+
onClick: handleClick,
|
|
7027
|
+
onPointerDown,
|
|
7028
|
+
className: cn(
|
|
7029
|
+
"group relative flex flex-1 cursor-pointer transition-colors duration-200 outline-none select-none h-full",
|
|
7030
|
+
variant === "xr" ? "items-center justify-center max-[599px]:min-w-28 max-[599px]:max-w-28 max-[599px]:items-start max-[599px]:pt-3 max-[599px]:pb-4" : "items-center justify-center",
|
|
7031
|
+
disabled && "pointer-events-none opacity-[0.38]",
|
|
7032
|
+
className
|
|
7033
|
+
),
|
|
7034
|
+
children: [
|
|
7035
|
+
/* @__PURE__ */ jsxs(
|
|
7036
|
+
"div",
|
|
7037
|
+
{
|
|
7038
|
+
className: cn(
|
|
7039
|
+
"relative flex items-center justify-center flex-col gap-y-1 w-full",
|
|
7040
|
+
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]:rounded-full min-[600px]:w-auto min-[600px]:max-w-42",
|
|
7041
|
+
isForcedHorizontal && "flex-row gap-y-0 gap-x-1 h-10 px-4 rounded-full w-auto max-w-42"
|
|
7042
|
+
),
|
|
7043
|
+
children: [
|
|
7044
|
+
/* @__PURE__ */ jsxs(
|
|
7045
|
+
"div",
|
|
7046
|
+
{
|
|
7047
|
+
className: cn(
|
|
7048
|
+
"absolute inset-0 z-0 hidden",
|
|
7049
|
+
isResponsiveHorizontal && "min-[600px]:block",
|
|
7050
|
+
isForcedHorizontal && "block!"
|
|
7051
|
+
),
|
|
7052
|
+
children: [
|
|
7053
|
+
/* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: selected && /* @__PURE__ */ jsx(ActivePill, {}) }),
|
|
7054
|
+
/* @__PURE__ */ jsx(HoverStateLayer, {}),
|
|
7055
|
+
/* @__PURE__ */ jsx(RippleLayer, { ripples, onRippleDone: removeRipple })
|
|
7056
|
+
]
|
|
7057
|
+
}
|
|
7058
|
+
),
|
|
7059
|
+
/* @__PURE__ */ jsxs(
|
|
7060
|
+
"div",
|
|
7061
|
+
{
|
|
7062
|
+
className: cn(
|
|
7063
|
+
"relative flex items-center justify-center shrink-0 z-10",
|
|
7064
|
+
"h-8 w-16 mx-auto rounded-full",
|
|
7065
|
+
isResponsiveHorizontal && "min-[600px]:size-6 min-[600px]:w-auto min-[600px]:h-auto",
|
|
7066
|
+
isForcedHorizontal && "size-6 w-auto h-auto"
|
|
7067
|
+
),
|
|
7068
|
+
children: [
|
|
7069
|
+
/* @__PURE__ */ jsxs(
|
|
7070
|
+
"div",
|
|
7071
|
+
{
|
|
7072
|
+
className: cn(
|
|
7073
|
+
"absolute inset-0 z-0",
|
|
7074
|
+
isResponsiveHorizontal && "min-[600px]:hidden",
|
|
7075
|
+
isForcedHorizontal && "hidden"
|
|
7076
|
+
),
|
|
7077
|
+
children: [
|
|
7078
|
+
/* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: selected && /* @__PURE__ */ jsx(ActivePill, {}) }),
|
|
7079
|
+
/* @__PURE__ */ jsx(HoverStateLayer, {}),
|
|
7080
|
+
/* @__PURE__ */ jsx(RippleLayer, { ripples, onRippleDone: removeRipple })
|
|
7081
|
+
]
|
|
7082
|
+
}
|
|
7083
|
+
),
|
|
7084
|
+
/* @__PURE__ */ jsx("div", { className: "relative z-10 flex size-6 items-center justify-center text-current", children: /* @__PURE__ */ jsx(IconContainer, { selected, badge, children: filledIcon }) })
|
|
7085
|
+
]
|
|
7086
|
+
}
|
|
7087
|
+
),
|
|
7088
|
+
/* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", children: /* @__PURE__ */ jsx(
|
|
7089
|
+
"span",
|
|
7090
|
+
{
|
|
7091
|
+
className: cn(
|
|
7092
|
+
"z-10 transition-all duration-200 truncate px-1",
|
|
7093
|
+
selected ? "text-m3-on-surface" : "text-m3-on-surface-variant",
|
|
7094
|
+
"font-medium text-[12px] leading-4 tracking-[0.5px]"
|
|
7095
|
+
),
|
|
7096
|
+
children: label
|
|
7097
|
+
},
|
|
7098
|
+
"nav-label"
|
|
7099
|
+
) })
|
|
7100
|
+
]
|
|
7101
|
+
}
|
|
7102
|
+
),
|
|
7103
|
+
/* @__PURE__ */ jsx(TouchTarget, {})
|
|
7104
|
+
]
|
|
7105
|
+
}
|
|
7106
|
+
);
|
|
7107
|
+
}
|
|
7108
|
+
);
|
|
7109
|
+
NavigationBarItemComponent.displayName = "NavigationBarItem";
|
|
7110
|
+
var NavigationBarItem = React39.memo(NavigationBarItemComponent);
|
|
7111
|
+
var navContainerVariants = cva(
|
|
7112
|
+
"flex items-center justify-center select-none transition-transform duration-300 z-50",
|
|
7113
|
+
{
|
|
7114
|
+
variants: {
|
|
7115
|
+
variant: {
|
|
7116
|
+
flexible: "bottom-0 left-0 right-0 w-full h-16 pb-safe",
|
|
7117
|
+
baseline: "bottom-0 left-0 right-0 w-full h-20 pb-safe",
|
|
7118
|
+
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"
|
|
7119
|
+
},
|
|
7120
|
+
position: {
|
|
7121
|
+
fixed: "fixed",
|
|
7122
|
+
absolute: "absolute"
|
|
7123
|
+
},
|
|
7124
|
+
elevated: {
|
|
7125
|
+
true: "shadow-[0_-1px_3px_rgba(0,0,0,0.1)]",
|
|
7126
|
+
false: "shadow-none"
|
|
7127
|
+
}
|
|
7128
|
+
},
|
|
7129
|
+
defaultVariants: {
|
|
7130
|
+
variant: "flexible",
|
|
7131
|
+
position: "fixed",
|
|
7132
|
+
elevated: false
|
|
7133
|
+
}
|
|
7134
|
+
}
|
|
7135
|
+
);
|
|
7136
|
+
var NavigationBarComponent = React39.forwardRef(
|
|
7137
|
+
({
|
|
7138
|
+
variant = "flexible",
|
|
7139
|
+
itemLayout,
|
|
7140
|
+
hideOnScroll = false,
|
|
7141
|
+
elevated = false,
|
|
7142
|
+
fixed = true,
|
|
7143
|
+
scrollContainerRef,
|
|
7144
|
+
activeIndicatorTransition,
|
|
7145
|
+
children,
|
|
7146
|
+
className,
|
|
7147
|
+
style
|
|
7148
|
+
}, ref) => {
|
|
7149
|
+
const [isVisible, setIsVisible] = React39.useState(true);
|
|
7150
|
+
const lastScrollY = React39.useRef(
|
|
7151
|
+
typeof window !== "undefined" ? window.scrollY : 0
|
|
7152
|
+
);
|
|
7153
|
+
React39.useEffect(() => {
|
|
7154
|
+
if (typeof window === "undefined" || !hideOnScroll) {
|
|
7155
|
+
setIsVisible(true);
|
|
7156
|
+
return;
|
|
7157
|
+
}
|
|
7158
|
+
const prefersReducedMotion = window.matchMedia(
|
|
7159
|
+
"(prefers-reduced-motion: reduce)"
|
|
7160
|
+
).matches;
|
|
7161
|
+
if (prefersReducedMotion) {
|
|
7162
|
+
setIsVisible(true);
|
|
7163
|
+
return;
|
|
7164
|
+
}
|
|
7165
|
+
let ticking = false;
|
|
7166
|
+
const handleScroll = () => {
|
|
7167
|
+
if (ticking) return;
|
|
7168
|
+
ticking = true;
|
|
7169
|
+
window.requestAnimationFrame(() => {
|
|
7170
|
+
const currentScrollY = (scrollContainerRef == null ? void 0 : scrollContainerRef.current) ? scrollContainerRef.current.scrollTop : window.scrollY;
|
|
7171
|
+
if (currentScrollY <= 0 || currentScrollY < lastScrollY.current) {
|
|
7172
|
+
setIsVisible(true);
|
|
7173
|
+
} else if (currentScrollY > lastScrollY.current) {
|
|
7174
|
+
setIsVisible(false);
|
|
7175
|
+
}
|
|
7176
|
+
lastScrollY.current = currentScrollY;
|
|
7177
|
+
ticking = false;
|
|
7178
|
+
});
|
|
7179
|
+
};
|
|
7180
|
+
const target = (scrollContainerRef == null ? void 0 : scrollContainerRef.current) || window;
|
|
7181
|
+
target.addEventListener("scroll", handleScroll, { passive: true });
|
|
7182
|
+
return () => target.removeEventListener("scroll", handleScroll);
|
|
7183
|
+
}, [hideOnScroll, scrollContainerRef]);
|
|
7184
|
+
const navBaseClasses = cn(
|
|
7185
|
+
navContainerVariants({
|
|
7186
|
+
variant,
|
|
7187
|
+
elevated,
|
|
7188
|
+
position: fixed ? "fixed" : "absolute"
|
|
7189
|
+
}),
|
|
7190
|
+
variant === "xr" ? "bg-m3-surface border border-white/5 shadow-xl" : "bg-m3-surface-container",
|
|
7191
|
+
className
|
|
7192
|
+
);
|
|
7193
|
+
return /* @__PURE__ */ jsx(LazyMotion, { features: domMax, strict: true, children: /* @__PURE__ */ jsx(NavigationBarContext.Provider, { value: { variant, itemLayout, activeIndicatorTransition }, children: /* @__PURE__ */ jsx(
|
|
7194
|
+
m.nav,
|
|
7195
|
+
{
|
|
7196
|
+
ref,
|
|
7197
|
+
role: "navigation",
|
|
7198
|
+
"aria-label": "Main navigation",
|
|
7199
|
+
className: navBaseClasses,
|
|
7200
|
+
style,
|
|
7201
|
+
initial: false,
|
|
7202
|
+
animate: { y: isVisible ? "0%" : "100%" },
|
|
7203
|
+
transition: { type: "tween", duration: 0.3, ease: "easeInOut" },
|
|
7204
|
+
children: /* @__PURE__ */ jsx(
|
|
7205
|
+
"div",
|
|
7206
|
+
{
|
|
7207
|
+
role: "menubar",
|
|
7208
|
+
"aria-orientation": "horizontal",
|
|
7209
|
+
className: cn(
|
|
7210
|
+
"flex w-full h-full mx-auto",
|
|
7211
|
+
variant === "xr" ? "gap-0 min-[600px]:gap-1.5" : "max-w-7xl gap-1.5"
|
|
7212
|
+
),
|
|
7213
|
+
children
|
|
7214
|
+
}
|
|
7215
|
+
)
|
|
7216
|
+
}
|
|
7217
|
+
) }) });
|
|
7218
|
+
}
|
|
7219
|
+
);
|
|
7220
|
+
NavigationBarComponent.displayName = "NavigationBar";
|
|
7221
|
+
var NavigationBar = React39.memo(NavigationBarComponent);
|
|
7222
|
+
var NavigationRailContext = React39.createContext({ variant: "collapsed", labelVisibility: "labeled" });
|
|
6923
7223
|
var MD3_MODAL_TRANSITION = {
|
|
6924
7224
|
type: "tween",
|
|
6925
7225
|
ease: [0.05, 0.7, 0.1, 1],
|
|
@@ -6930,17 +7230,14 @@ var railContainerVariants = cva(
|
|
|
6930
7230
|
{
|
|
6931
7231
|
variants: {
|
|
6932
7232
|
variant: {
|
|
6933
|
-
collapsed: "items-center",
|
|
6934
|
-
expanded: "items-start",
|
|
6935
|
-
modal: "bg-m3-surface shadow-lg rounded-r-[var(--m3-shape-corner-large)]"
|
|
7233
|
+
collapsed: "items-center h-full pt-11 pb-4 shadow-none bg-m3-surface rounded-none",
|
|
7234
|
+
expanded: "items-start h-full pt-11 pb-4 shadow-none bg-m3-surface rounded-none",
|
|
7235
|
+
modal: "bg-m3-surface shadow-lg rounded-r-[var(--m3-shape-corner-large)] h-full pt-11 pb-4",
|
|
7236
|
+
xr: "h-fit py-5 rounded-[48px] shadow-xl bg-m3-surface border border-white/5"
|
|
6936
7237
|
},
|
|
6937
7238
|
narrow: {
|
|
6938
7239
|
true: "w-20",
|
|
6939
7240
|
false: "w-24"
|
|
6940
|
-
},
|
|
6941
|
-
xr: {
|
|
6942
|
-
true: "h-fit py-5 rounded-[48px] shadow-xl bg-m3-surface border border-white/5",
|
|
6943
|
-
false: "h-full pt-11 pb-4 shadow-none bg-m3-surface rounded-none"
|
|
6944
7241
|
}
|
|
6945
7242
|
},
|
|
6946
7243
|
compoundVariants: [
|
|
@@ -6949,15 +7246,14 @@ var railContainerVariants = cva(
|
|
|
6949
7246
|
],
|
|
6950
7247
|
defaultVariants: {
|
|
6951
7248
|
variant: "collapsed",
|
|
6952
|
-
narrow: false
|
|
6953
|
-
xr: false
|
|
7249
|
+
narrow: false
|
|
6954
7250
|
}
|
|
6955
7251
|
}
|
|
6956
7252
|
);
|
|
6957
|
-
function
|
|
6958
|
-
if (!
|
|
7253
|
+
function cloneIconWithFill2(icon, selected) {
|
|
7254
|
+
if (!React39.isValidElement(icon)) return icon;
|
|
6959
7255
|
if (icon.type === Icon) {
|
|
6960
|
-
return
|
|
7256
|
+
return React39.cloneElement(
|
|
6961
7257
|
icon,
|
|
6962
7258
|
{ fill: selected ? 1 : 0, animateFill: true }
|
|
6963
7259
|
);
|
|
@@ -6979,27 +7275,28 @@ function setFocusedItem(items, index) {
|
|
|
6979
7275
|
target.focus();
|
|
6980
7276
|
}
|
|
6981
7277
|
}
|
|
6982
|
-
function
|
|
7278
|
+
function ActivePill2({ layoutId, disableInitial = false }) {
|
|
7279
|
+
const { activeIndicatorTransition } = React39.useContext(NavigationRailContext);
|
|
6983
7280
|
return /* @__PURE__ */ jsx(
|
|
6984
7281
|
m.div,
|
|
6985
7282
|
{
|
|
6986
7283
|
layoutId,
|
|
6987
7284
|
className: "absolute inset-0 bg-m3-secondary-container pointer-events-none",
|
|
6988
|
-
style: { borderRadius: 9999, zIndex: 0 },
|
|
6989
|
-
initial: disableInitial ? false : { opacity: 0 },
|
|
6990
|
-
animate: { opacity: 1 },
|
|
6991
|
-
exit: { opacity: 0 },
|
|
6992
|
-
transition:
|
|
7285
|
+
style: { borderRadius: 9999, zIndex: 0, originX: 0.5, originY: 0.5 },
|
|
7286
|
+
initial: disableInitial ? false : { opacity: 0, scale: 0.5 },
|
|
7287
|
+
animate: { opacity: 1, scale: 1 },
|
|
7288
|
+
exit: { opacity: 0, scale: 0.5, transition: { duration: 0.15 } },
|
|
7289
|
+
transition: activeIndicatorTransition || SPRING_TRANSITION_EXPRESSIVE
|
|
6993
7290
|
}
|
|
6994
7291
|
);
|
|
6995
7292
|
}
|
|
6996
|
-
function
|
|
7293
|
+
function HoverStateLayer2() {
|
|
6997
7294
|
return /* @__PURE__ */ jsx("div", { className: "absolute inset-0 rounded-full bg-m3-on-surface opacity-0 group-hover:opacity-[0.08] transition-opacity duration-200 pointer-events-none z-0" });
|
|
6998
7295
|
}
|
|
6999
|
-
function
|
|
7296
|
+
function RippleLayer2({ ripples, onRippleDone }) {
|
|
7000
7297
|
return /* @__PURE__ */ jsx("div", { className: "absolute inset-0 rounded-full overflow-hidden pointer-events-none z-0", children: /* @__PURE__ */ jsx(Ripple, { ripples, onRippleDone }) });
|
|
7001
7298
|
}
|
|
7002
|
-
function
|
|
7299
|
+
function IconContainer2({ selected, badge, children }) {
|
|
7003
7300
|
return /* @__PURE__ */ jsxs(
|
|
7004
7301
|
"div",
|
|
7005
7302
|
{
|
|
@@ -7015,7 +7312,7 @@ function IconContainer({ selected, badge, children }) {
|
|
|
7015
7312
|
}
|
|
7016
7313
|
);
|
|
7017
7314
|
}
|
|
7018
|
-
var NavigationRailItemComponent =
|
|
7315
|
+
var NavigationRailItemComponent = React39.forwardRef(
|
|
7019
7316
|
({
|
|
7020
7317
|
selected,
|
|
7021
7318
|
icon,
|
|
@@ -7026,18 +7323,18 @@ var NavigationRailItemComponent = React38.forwardRef(
|
|
|
7026
7323
|
className,
|
|
7027
7324
|
"aria-label": ariaLabelProp
|
|
7028
7325
|
}, ref) => {
|
|
7029
|
-
const { variant, labelVisibility } =
|
|
7326
|
+
const { variant, labelVisibility } = React39.useContext(
|
|
7030
7327
|
NavigationRailContext
|
|
7031
7328
|
);
|
|
7032
7329
|
const isExpanded = variant === "expanded" || variant === "modal";
|
|
7033
7330
|
const isModal = variant === "modal";
|
|
7034
7331
|
const enableLayout = !isModal;
|
|
7035
|
-
const activePillId = `rail-pill-${
|
|
7332
|
+
const activePillId = `rail-pill-${React39.useId()}`;
|
|
7036
7333
|
const { ripples, onPointerDown, removeRipple } = useRippleState({
|
|
7037
7334
|
disabled
|
|
7038
7335
|
});
|
|
7039
7336
|
const showLabel = isExpanded || labelVisibility === "labeled" || labelVisibility === "auto" && selected;
|
|
7040
|
-
const handleClick =
|
|
7337
|
+
const handleClick = React39.useCallback(
|
|
7041
7338
|
(e) => {
|
|
7042
7339
|
if (disabled) {
|
|
7043
7340
|
e.preventDefault();
|
|
@@ -7047,7 +7344,7 @@ var NavigationRailItemComponent = React38.forwardRef(
|
|
|
7047
7344
|
},
|
|
7048
7345
|
[disabled, onClick]
|
|
7049
7346
|
);
|
|
7050
|
-
const filledIcon =
|
|
7347
|
+
const filledIcon = cloneIconWithFill2(icon, selected);
|
|
7051
7348
|
const labelInitial = isModal ? false : { opacity: 0, x: isExpanded ? -12 : 0, y: isExpanded ? 0 : -8 };
|
|
7052
7349
|
return /* @__PURE__ */ jsx(LazyMotion, { features: domMax, strict: true, children: /* @__PURE__ */ jsxs(
|
|
7053
7350
|
m.button,
|
|
@@ -7080,14 +7377,14 @@ var NavigationRailItemComponent = React38.forwardRef(
|
|
|
7080
7377
|
),
|
|
7081
7378
|
children: [
|
|
7082
7379
|
isExpanded && /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: selected && /* @__PURE__ */ jsx(
|
|
7083
|
-
|
|
7380
|
+
ActivePill2,
|
|
7084
7381
|
{
|
|
7085
7382
|
layoutId: activePillId,
|
|
7086
7383
|
disableInitial: isModal
|
|
7087
7384
|
}
|
|
7088
7385
|
) }),
|
|
7089
|
-
isExpanded && /* @__PURE__ */ jsx(
|
|
7090
|
-
isExpanded && /* @__PURE__ */ jsx(
|
|
7386
|
+
isExpanded && /* @__PURE__ */ jsx(HoverStateLayer2, {}),
|
|
7387
|
+
isExpanded && /* @__PURE__ */ jsx(RippleLayer2, { ripples, onRippleDone: removeRipple }),
|
|
7091
7388
|
/* @__PURE__ */ jsxs(
|
|
7092
7389
|
m.div,
|
|
7093
7390
|
{
|
|
@@ -7098,15 +7395,15 @@ var NavigationRailItemComponent = React38.forwardRef(
|
|
|
7098
7395
|
),
|
|
7099
7396
|
style: { borderRadius: 9999 },
|
|
7100
7397
|
children: [
|
|
7101
|
-
!isExpanded && /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: selected && /* @__PURE__ */ jsx(
|
|
7102
|
-
!isExpanded && /* @__PURE__ */ jsx(
|
|
7103
|
-
!isExpanded && /* @__PURE__ */ jsx(
|
|
7398
|
+
!isExpanded && /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: selected && /* @__PURE__ */ jsx(ActivePill2, { layoutId: activePillId }) }),
|
|
7399
|
+
!isExpanded && /* @__PURE__ */ jsx(HoverStateLayer2, {}),
|
|
7400
|
+
!isExpanded && /* @__PURE__ */ jsx(RippleLayer2, { ripples, onRippleDone: removeRipple }),
|
|
7104
7401
|
/* @__PURE__ */ jsx(
|
|
7105
7402
|
m.div,
|
|
7106
7403
|
{
|
|
7107
7404
|
layout: enableLayout ? "position" : false,
|
|
7108
7405
|
className: "relative z-10 flex size-6 items-center justify-center text-current",
|
|
7109
|
-
children: /* @__PURE__ */ jsx(
|
|
7406
|
+
children: /* @__PURE__ */ jsx(IconContainer2, { selected, badge, children: filledIcon })
|
|
7110
7407
|
}
|
|
7111
7408
|
)
|
|
7112
7409
|
]
|
|
@@ -7139,9 +7436,9 @@ var NavigationRailItemComponent = React38.forwardRef(
|
|
|
7139
7436
|
}
|
|
7140
7437
|
);
|
|
7141
7438
|
NavigationRailItemComponent.displayName = "NavigationRailItem";
|
|
7142
|
-
var NavigationRailItem =
|
|
7439
|
+
var NavigationRailItem = React39.memo(NavigationRailItemComponent);
|
|
7143
7440
|
function useRoving(navRef) {
|
|
7144
|
-
|
|
7441
|
+
React39.useEffect(() => {
|
|
7145
7442
|
if (!navRef.current) return;
|
|
7146
7443
|
const items = getMenuItems(navRef.current);
|
|
7147
7444
|
const selected = items.find(
|
|
@@ -7151,7 +7448,7 @@ function useRoving(navRef) {
|
|
|
7151
7448
|
const firstFocusable = selected != null ? selected : items[0];
|
|
7152
7449
|
if (firstFocusable) firstFocusable.tabIndex = 0;
|
|
7153
7450
|
}, [navRef]);
|
|
7154
|
-
return
|
|
7451
|
+
return React39.useCallback(
|
|
7155
7452
|
(e) => {
|
|
7156
7453
|
if (!navRef.current) return;
|
|
7157
7454
|
const items = getMenuItems(navRef.current);
|
|
@@ -7179,29 +7476,29 @@ function useRoving(navRef) {
|
|
|
7179
7476
|
[navRef]
|
|
7180
7477
|
);
|
|
7181
7478
|
}
|
|
7182
|
-
var NavigationRailComponent =
|
|
7479
|
+
var NavigationRailComponent = React39.forwardRef(
|
|
7183
7480
|
({
|
|
7184
7481
|
variant = "collapsed",
|
|
7185
7482
|
labelVisibility = "labeled",
|
|
7186
7483
|
header,
|
|
7187
7484
|
fab,
|
|
7485
|
+
fabPlacement = "contained",
|
|
7188
7486
|
footer,
|
|
7189
7487
|
narrow = false,
|
|
7190
7488
|
open = false,
|
|
7191
|
-
xr = false,
|
|
7192
7489
|
onClose,
|
|
7490
|
+
activeIndicatorTransition,
|
|
7193
7491
|
children,
|
|
7194
7492
|
className,
|
|
7195
7493
|
style
|
|
7196
7494
|
}, ref) => {
|
|
7197
7495
|
const isModal = variant === "modal";
|
|
7198
|
-
const isXr =
|
|
7199
|
-
const
|
|
7200
|
-
const isSpatial = isXr && xrMode === "spatialized";
|
|
7496
|
+
const isXr = variant === "xr";
|
|
7497
|
+
const isSpatial = isXr && fabPlacement === "spatialized";
|
|
7201
7498
|
const applyAnimation = !isXr || !isSpatial;
|
|
7202
|
-
const navRef =
|
|
7499
|
+
const navRef = React39.useRef(null);
|
|
7203
7500
|
const handleKeyDown = useRoving(navRef);
|
|
7204
|
-
const setRefs =
|
|
7501
|
+
const setRefs = React39.useCallback(
|
|
7205
7502
|
(node) => {
|
|
7206
7503
|
navRef.current = node;
|
|
7207
7504
|
if (typeof ref === "function") ref(node);
|
|
@@ -7210,12 +7507,12 @@ var NavigationRailComponent = React38.forwardRef(
|
|
|
7210
7507
|
[ref]
|
|
7211
7508
|
);
|
|
7212
7509
|
const navBaseClasses = cn(
|
|
7213
|
-
railContainerVariants({ variant, narrow
|
|
7510
|
+
railContainerVariants({ variant, narrow })
|
|
7214
7511
|
);
|
|
7215
7512
|
const modalPositioning = isModal ? "fixed left-0 top-0 z-[100]" : "";
|
|
7216
7513
|
const navHeaderSpacing = (() => {
|
|
7217
7514
|
if (!isXr) return "mb-6 min-h-10";
|
|
7218
|
-
if (
|
|
7515
|
+
if (fabPlacement === "contained") return fab ? "mb-10" : "mb-5";
|
|
7219
7516
|
return "mb-5";
|
|
7220
7517
|
})();
|
|
7221
7518
|
const navElement = /* @__PURE__ */ jsxs(
|
|
@@ -7294,7 +7591,7 @@ var NavigationRailComponent = React38.forwardRef(
|
|
|
7294
7591
|
children: fab
|
|
7295
7592
|
}
|
|
7296
7593
|
),
|
|
7297
|
-
|
|
7594
|
+
React39.cloneElement(
|
|
7298
7595
|
navElement,
|
|
7299
7596
|
{
|
|
7300
7597
|
className: cn(navBaseClasses, "pointer-events-auto")
|
|
@@ -7305,7 +7602,7 @@ var NavigationRailComponent = React38.forwardRef(
|
|
|
7305
7602
|
"md3-nav-wrapper"
|
|
7306
7603
|
);
|
|
7307
7604
|
const finalNavElement = isSpatial ? spatialWrapper : navElement;
|
|
7308
|
-
const contextValue = { variant, labelVisibility,
|
|
7605
|
+
const contextValue = { variant, labelVisibility, activeIndicatorTransition };
|
|
7309
7606
|
if (isModal) {
|
|
7310
7607
|
if (typeof document === "undefined") return null;
|
|
7311
7608
|
return createPortal(
|
|
@@ -7332,13 +7629,13 @@ var NavigationRailComponent = React38.forwardRef(
|
|
|
7332
7629
|
}
|
|
7333
7630
|
);
|
|
7334
7631
|
NavigationRailComponent.displayName = "NavigationRail";
|
|
7335
|
-
var NavigationRail =
|
|
7632
|
+
var NavigationRail = React39.memo(NavigationRailComponent);
|
|
7336
7633
|
var MD3_FAST_EFFECTS2 = [0.3, 0, 1, 1];
|
|
7337
|
-
var RadioGroupContext =
|
|
7634
|
+
var RadioGroupContext = React39.createContext(
|
|
7338
7635
|
null
|
|
7339
7636
|
);
|
|
7340
7637
|
function useMergedRef3(externalRef, internalRef) {
|
|
7341
|
-
return
|
|
7638
|
+
return React39.useCallback(
|
|
7342
7639
|
(node) => {
|
|
7343
7640
|
internalRef.current = node;
|
|
7344
7641
|
if (!externalRef) return;
|
|
@@ -7351,7 +7648,7 @@ function useMergedRef3(externalRef, internalRef) {
|
|
|
7351
7648
|
[externalRef, internalRef]
|
|
7352
7649
|
);
|
|
7353
7650
|
}
|
|
7354
|
-
var RadioVisual =
|
|
7651
|
+
var RadioVisual = React39.memo(function RadioVisual2({
|
|
7355
7652
|
isSelected,
|
|
7356
7653
|
disabled,
|
|
7357
7654
|
error,
|
|
@@ -7404,7 +7701,7 @@ var RadioVisual = React38.memo(function RadioVisual2({
|
|
|
7404
7701
|
}
|
|
7405
7702
|
);
|
|
7406
7703
|
});
|
|
7407
|
-
var RadioButtonComponent =
|
|
7704
|
+
var RadioButtonComponent = React39.forwardRef(
|
|
7408
7705
|
({
|
|
7409
7706
|
selected,
|
|
7410
7707
|
defaultSelected = false,
|
|
@@ -7423,23 +7720,23 @@ var RadioButtonComponent = React38.forwardRef(
|
|
|
7423
7720
|
required: requiredProp
|
|
7424
7721
|
}, ref) => {
|
|
7425
7722
|
var _a, _b;
|
|
7426
|
-
const group =
|
|
7723
|
+
const group = React39.useContext(RadioGroupContext);
|
|
7427
7724
|
const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
|
|
7428
|
-
const generatedId =
|
|
7725
|
+
const generatedId = React39.useId();
|
|
7429
7726
|
const inputId = idProp != null ? idProp : label ? `radio-${generatedId}` : void 0;
|
|
7430
7727
|
const name = (_b = group == null ? void 0 : group.name) != null ? _b : nameProp;
|
|
7431
7728
|
const disabled = (group == null ? void 0 : group.disabled) || disabledProp;
|
|
7432
7729
|
const error = (group == null ? void 0 : group.error) || errorProp || color === "error";
|
|
7433
7730
|
const required = (group == null ? void 0 : group.required) || requiredProp;
|
|
7434
|
-
const [internalSelected, setInternalSelected] =
|
|
7731
|
+
const [internalSelected, setInternalSelected] = React39.useState(defaultSelected);
|
|
7435
7732
|
const isControlled = selected !== void 0;
|
|
7436
7733
|
const isSelected = group ? group.selectedValue === value : isControlled ? selected != null ? selected : false : internalSelected;
|
|
7437
|
-
const [ripples, setRipples] =
|
|
7438
|
-
const removeRipple =
|
|
7734
|
+
const [ripples, setRipples] = React39.useState([]);
|
|
7735
|
+
const removeRipple = React39.useCallback(
|
|
7439
7736
|
(id) => setRipples((prev) => prev.filter((r) => r.id !== id)),
|
|
7440
7737
|
[]
|
|
7441
7738
|
);
|
|
7442
|
-
const onPointerDown =
|
|
7739
|
+
const onPointerDown = React39.useCallback(
|
|
7443
7740
|
(e) => {
|
|
7444
7741
|
if (disabled) return;
|
|
7445
7742
|
const rect = e.currentTarget.getBoundingClientRect();
|
|
@@ -7453,12 +7750,12 @@ var RadioButtonComponent = React38.forwardRef(
|
|
|
7453
7750
|
},
|
|
7454
7751
|
[disabled]
|
|
7455
7752
|
);
|
|
7456
|
-
const [isHovered, setIsHovered] =
|
|
7457
|
-
const onPointerEnter =
|
|
7753
|
+
const [isHovered, setIsHovered] = React39.useState(false);
|
|
7754
|
+
const onPointerEnter = React39.useCallback(() => {
|
|
7458
7755
|
if (!disabled) setIsHovered(true);
|
|
7459
7756
|
}, [disabled]);
|
|
7460
|
-
const onPointerLeave =
|
|
7461
|
-
const handleChange =
|
|
7757
|
+
const onPointerLeave = React39.useCallback(() => setIsHovered(false), []);
|
|
7758
|
+
const handleChange = React39.useCallback(
|
|
7462
7759
|
(_e) => {
|
|
7463
7760
|
if (disabled || onClick === null) return;
|
|
7464
7761
|
if (group) {
|
|
@@ -7472,7 +7769,7 @@ var RadioButtonComponent = React38.forwardRef(
|
|
|
7472
7769
|
},
|
|
7473
7770
|
[disabled, onClick, group, value, isControlled]
|
|
7474
7771
|
);
|
|
7475
|
-
const inputRef =
|
|
7772
|
+
const inputRef = React39.useRef(null);
|
|
7476
7773
|
const mergedRef = useMergedRef3(ref, inputRef);
|
|
7477
7774
|
const stateLayerBg = error ? "before:bg-m3-error" : "before:bg-m3-primary";
|
|
7478
7775
|
const stateLayerClass = cn(
|
|
@@ -7583,8 +7880,8 @@ var RadioButtonComponent = React38.forwardRef(
|
|
|
7583
7880
|
}
|
|
7584
7881
|
);
|
|
7585
7882
|
RadioButtonComponent.displayName = "RadioButton";
|
|
7586
|
-
var RadioButton =
|
|
7587
|
-
var RadioGroupComponent =
|
|
7883
|
+
var RadioButton = React39.memo(RadioButtonComponent);
|
|
7884
|
+
var RadioGroupComponent = React39.forwardRef(
|
|
7588
7885
|
({
|
|
7589
7886
|
name,
|
|
7590
7887
|
value: valueProp,
|
|
@@ -7599,19 +7896,19 @@ var RadioGroupComponent = React38.forwardRef(
|
|
|
7599
7896
|
children,
|
|
7600
7897
|
className
|
|
7601
7898
|
}, ref) => {
|
|
7602
|
-
const [internalValue, setInternalValue] =
|
|
7899
|
+
const [internalValue, setInternalValue] = React39.useState(defaultValue);
|
|
7603
7900
|
const isControlled = valueProp !== void 0;
|
|
7604
7901
|
const selectedValue = isControlled ? valueProp : internalValue;
|
|
7605
|
-
const handleValueChange =
|
|
7902
|
+
const handleValueChange = React39.useCallback(
|
|
7606
7903
|
(val) => {
|
|
7607
7904
|
if (!isControlled) setInternalValue(val);
|
|
7608
7905
|
onValueChange == null ? void 0 : onValueChange(val);
|
|
7609
7906
|
},
|
|
7610
7907
|
[isControlled, onValueChange]
|
|
7611
7908
|
);
|
|
7612
|
-
const groupRef =
|
|
7909
|
+
const groupRef = React39.useRef(null);
|
|
7613
7910
|
const mergedRef = useMergedRef3(ref, groupRef);
|
|
7614
|
-
const onKeyDown =
|
|
7911
|
+
const onKeyDown = React39.useCallback(
|
|
7615
7912
|
(e) => {
|
|
7616
7913
|
var _a, _b;
|
|
7617
7914
|
if (disabled) return;
|
|
@@ -7635,7 +7932,7 @@ var RadioGroupComponent = React38.forwardRef(
|
|
|
7635
7932
|
},
|
|
7636
7933
|
[disabled, handleValueChange]
|
|
7637
7934
|
);
|
|
7638
|
-
const contextValue =
|
|
7935
|
+
const contextValue = React39.useMemo(
|
|
7639
7936
|
() => ({
|
|
7640
7937
|
name,
|
|
7641
7938
|
selectedValue,
|
|
@@ -7670,7 +7967,7 @@ var RadioGroupComponent = React38.forwardRef(
|
|
|
7670
7967
|
}
|
|
7671
7968
|
);
|
|
7672
7969
|
RadioGroupComponent.displayName = "RadioGroup";
|
|
7673
|
-
var RadioGroup =
|
|
7970
|
+
var RadioGroup = React39.memo(RadioGroupComponent);
|
|
7674
7971
|
function useSearchKeyboard({
|
|
7675
7972
|
active,
|
|
7676
7973
|
onActiveChange,
|
|
@@ -7679,14 +7976,14 @@ function useSearchKeyboard({
|
|
|
7679
7976
|
itemCount,
|
|
7680
7977
|
onSelectSuggestion
|
|
7681
7978
|
}) {
|
|
7682
|
-
const [activeIndex, setActiveIndex] =
|
|
7683
|
-
const resetKeyRef =
|
|
7979
|
+
const [activeIndex, setActiveIndex] = React39.useState(-1);
|
|
7980
|
+
const resetKeyRef = React39.useRef(`${active}:${query}`);
|
|
7684
7981
|
const currentKey = `${active}:${query}`;
|
|
7685
7982
|
if (resetKeyRef.current !== currentKey) {
|
|
7686
7983
|
resetKeyRef.current = currentKey;
|
|
7687
7984
|
setActiveIndex(-1);
|
|
7688
7985
|
}
|
|
7689
|
-
const handleKeyDown =
|
|
7986
|
+
const handleKeyDown = React39.useCallback(
|
|
7690
7987
|
(e) => {
|
|
7691
7988
|
if (!active) return;
|
|
7692
7989
|
switch (e.key) {
|
|
@@ -7726,7 +8023,7 @@ function useSearchKeyboard({
|
|
|
7726
8023
|
query
|
|
7727
8024
|
]
|
|
7728
8025
|
);
|
|
7729
|
-
const resetActiveIndex =
|
|
8026
|
+
const resetActiveIndex = React39.useCallback(() => {
|
|
7730
8027
|
setActiveIndex(-1);
|
|
7731
8028
|
}, []);
|
|
7732
8029
|
return { activeIndex, handleKeyDown, resetActiveIndex };
|
|
@@ -7814,10 +8111,10 @@ function AnimatedPlaceholder({
|
|
|
7814
8111
|
className
|
|
7815
8112
|
}) {
|
|
7816
8113
|
const shouldReduceMotion = useReducedMotion();
|
|
7817
|
-
const containerRef =
|
|
7818
|
-
const spanRef =
|
|
7819
|
-
const [xOffset, setXOffset] =
|
|
7820
|
-
const recalculate =
|
|
8114
|
+
const containerRef = React39.useRef(null);
|
|
8115
|
+
const spanRef = React39.useRef(null);
|
|
8116
|
+
const [xOffset, setXOffset] = React39.useState(0);
|
|
8117
|
+
const recalculate = React39.useCallback(() => {
|
|
7821
8118
|
const container = containerRef.current;
|
|
7822
8119
|
const span = spanRef.current;
|
|
7823
8120
|
if (!container || !span || textAlign === "left") {
|
|
@@ -7832,10 +8129,10 @@ function AnimatedPlaceholder({
|
|
|
7832
8129
|
setXOffset(Math.max(0, containerWidth - textWidth));
|
|
7833
8130
|
}
|
|
7834
8131
|
}, [textAlign]);
|
|
7835
|
-
|
|
8132
|
+
React39.useLayoutEffect(() => {
|
|
7836
8133
|
recalculate();
|
|
7837
8134
|
}, [recalculate]);
|
|
7838
|
-
|
|
8135
|
+
React39.useEffect(() => {
|
|
7839
8136
|
const container = containerRef.current;
|
|
7840
8137
|
if (!container) return;
|
|
7841
8138
|
const observer = new ResizeObserver(recalculate);
|
|
@@ -7904,10 +8201,10 @@ function SearchBar({
|
|
|
7904
8201
|
activeIndex
|
|
7905
8202
|
}) {
|
|
7906
8203
|
const shouldReduceMotion = useReducedMotion();
|
|
7907
|
-
const inputRef =
|
|
7908
|
-
const prevActiveRef =
|
|
7909
|
-
const isRestoringFocusRef =
|
|
7910
|
-
|
|
8204
|
+
const inputRef = React39.useRef(null);
|
|
8205
|
+
const prevActiveRef = React39.useRef(active);
|
|
8206
|
+
const isRestoringFocusRef = React39.useRef(false);
|
|
8207
|
+
React39.useEffect(() => {
|
|
7911
8208
|
var _a;
|
|
7912
8209
|
let rafId;
|
|
7913
8210
|
if (prevActiveRef.current === true && active === false) {
|
|
@@ -8026,7 +8323,7 @@ function SearchBar({
|
|
|
8026
8323
|
) })
|
|
8027
8324
|
);
|
|
8028
8325
|
}
|
|
8029
|
-
var SearchContext =
|
|
8326
|
+
var SearchContext = React39.createContext(null);
|
|
8030
8327
|
function SearchProvider({
|
|
8031
8328
|
children,
|
|
8032
8329
|
value
|
|
@@ -8034,7 +8331,7 @@ function SearchProvider({
|
|
|
8034
8331
|
return /* @__PURE__ */ jsx(SearchContext.Provider, { value, children });
|
|
8035
8332
|
}
|
|
8036
8333
|
function useSearch() {
|
|
8037
|
-
const context =
|
|
8334
|
+
const context = React39.useContext(SearchContext);
|
|
8038
8335
|
if (!context) {
|
|
8039
8336
|
return { listboxId: "", activeIndex: -1 };
|
|
8040
8337
|
}
|
|
@@ -8061,7 +8358,7 @@ function useClickOutside(handler, enabled = true) {
|
|
|
8061
8358
|
return ref;
|
|
8062
8359
|
}
|
|
8063
8360
|
function useSearchViewFocus(inputRef, active) {
|
|
8064
|
-
|
|
8361
|
+
React39.useEffect(() => {
|
|
8065
8362
|
if (!active) return;
|
|
8066
8363
|
let raf2;
|
|
8067
8364
|
const raf1 = requestAnimationFrame(() => {
|
|
@@ -8135,7 +8432,7 @@ function SearchViewDocked({
|
|
|
8135
8432
|
activeIndex
|
|
8136
8433
|
}) {
|
|
8137
8434
|
const shouldReduceMotion = useReducedMotion();
|
|
8138
|
-
const inputRef =
|
|
8435
|
+
const inputRef = React39.useRef(null);
|
|
8139
8436
|
useSearchViewFocus(inputRef, active);
|
|
8140
8437
|
const dropdownRef = useClickOutside(() => {
|
|
8141
8438
|
onActiveChange(false);
|
|
@@ -8281,10 +8578,10 @@ function SearchViewFullScreen({
|
|
|
8281
8578
|
activeIndex
|
|
8282
8579
|
}) {
|
|
8283
8580
|
const shouldReduceMotion = useReducedMotion();
|
|
8284
|
-
const inputRef =
|
|
8581
|
+
const inputRef = React39.useRef(null);
|
|
8285
8582
|
useSearchViewFocus(inputRef, active);
|
|
8286
|
-
const [mounted, setMounted] =
|
|
8287
|
-
|
|
8583
|
+
const [mounted, setMounted] = React39.useState(false);
|
|
8584
|
+
React39.useEffect(() => {
|
|
8288
8585
|
setMounted(true);
|
|
8289
8586
|
}, []);
|
|
8290
8587
|
const handleFormSubmit = (e) => {
|
|
@@ -8442,10 +8739,10 @@ function SearchComponent({
|
|
|
8442
8739
|
className,
|
|
8443
8740
|
viewClassName
|
|
8444
8741
|
}) {
|
|
8445
|
-
const generatedId =
|
|
8742
|
+
const generatedId = React39.useId();
|
|
8446
8743
|
const searchId = id != null ? id : generatedId;
|
|
8447
8744
|
const listboxId = `${searchId}-listbox`;
|
|
8448
|
-
const itemCount =
|
|
8745
|
+
const itemCount = React39.Children.count(children);
|
|
8449
8746
|
const { activeIndex, handleKeyDown } = useSearchKeyboard({
|
|
8450
8747
|
active,
|
|
8451
8748
|
onActiveChange,
|
|
@@ -8681,7 +8978,7 @@ var SLIDER_INDICATOR_TRANSITION = {
|
|
|
8681
8978
|
stiffness: 450,
|
|
8682
8979
|
damping: 32
|
|
8683
8980
|
};
|
|
8684
|
-
var ValueIndicator =
|
|
8981
|
+
var ValueIndicator = React39.memo(function ValueIndicator2({
|
|
8685
8982
|
value,
|
|
8686
8983
|
visible,
|
|
8687
8984
|
orientation,
|
|
@@ -8728,7 +9025,7 @@ var ValueIndicator = React38.memo(function ValueIndicator2({
|
|
|
8728
9025
|
"value-indicator"
|
|
8729
9026
|
) });
|
|
8730
9027
|
});
|
|
8731
|
-
var SliderThumb =
|
|
9028
|
+
var SliderThumb = React39.memo(function SliderThumb2({
|
|
8732
9029
|
value,
|
|
8733
9030
|
percent,
|
|
8734
9031
|
min,
|
|
@@ -8760,11 +9057,11 @@ var SliderThumb = React38.memo(function SliderThumb2({
|
|
|
8760
9057
|
[posTarget]: `calc(${trackInset}px + ${percent} * (100% - ${trackInset * 2}px))`
|
|
8761
9058
|
};
|
|
8762
9059
|
const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
|
|
8763
|
-
const [isDragging, setIsDragging] =
|
|
8764
|
-
const [isHovered, setIsHovered] =
|
|
8765
|
-
const [isFocused, setIsFocused] =
|
|
8766
|
-
const pointerIdRef =
|
|
8767
|
-
const thumbRef =
|
|
9060
|
+
const [isDragging, setIsDragging] = React39.useState(false);
|
|
9061
|
+
const [isHovered, setIsHovered] = React39.useState(false);
|
|
9062
|
+
const [isFocused, setIsFocused] = React39.useState(false);
|
|
9063
|
+
const pointerIdRef = React39.useRef(null);
|
|
9064
|
+
const thumbRef = React39.useRef(null);
|
|
8768
9065
|
const showIndicator = showValueIndicator && (isDragging || isHovered || isFocused);
|
|
8769
9066
|
const positionStyle = isHorizontal ? __spreadProps(__spreadValues({
|
|
8770
9067
|
position: "absolute"
|
|
@@ -8779,7 +9076,7 @@ var SliderThumb = React38.memo(function SliderThumb2({
|
|
|
8779
9076
|
transform: "translate(-50%, 50%)",
|
|
8780
9077
|
zIndex
|
|
8781
9078
|
});
|
|
8782
|
-
const getDeltaFromPointer =
|
|
9079
|
+
const getDeltaFromPointer = React39.useCallback(
|
|
8783
9080
|
(e) => {
|
|
8784
9081
|
const trackEl = trackRef.current;
|
|
8785
9082
|
if (!trackEl) return percent;
|
|
@@ -8806,7 +9103,7 @@ var SliderThumb = React38.memo(function SliderThumb2({
|
|
|
8806
9103
|
},
|
|
8807
9104
|
[isHorizontal, max, min, percent, step, trackRef, trackSize]
|
|
8808
9105
|
);
|
|
8809
|
-
const handlePointerDown =
|
|
9106
|
+
const handlePointerDown = React39.useCallback(
|
|
8810
9107
|
(e) => {
|
|
8811
9108
|
if (disabled) return;
|
|
8812
9109
|
e.preventDefault();
|
|
@@ -8817,7 +9114,7 @@ var SliderThumb = React38.memo(function SliderThumb2({
|
|
|
8817
9114
|
},
|
|
8818
9115
|
[disabled]
|
|
8819
9116
|
);
|
|
8820
|
-
const handlePointerMove =
|
|
9117
|
+
const handlePointerMove = React39.useCallback(
|
|
8821
9118
|
(e) => {
|
|
8822
9119
|
if (!isDragging || e.pointerId !== pointerIdRef.current) return;
|
|
8823
9120
|
const newValue = getDeltaFromPointer(e.nativeEvent);
|
|
@@ -8825,7 +9122,7 @@ var SliderThumb = React38.memo(function SliderThumb2({
|
|
|
8825
9122
|
},
|
|
8826
9123
|
[isDragging, getDeltaFromPointer, onValueChange]
|
|
8827
9124
|
);
|
|
8828
|
-
const handlePointerUp =
|
|
9125
|
+
const handlePointerUp = React39.useCallback(
|
|
8829
9126
|
(e) => {
|
|
8830
9127
|
if (e.pointerId !== pointerIdRef.current) return;
|
|
8831
9128
|
e.currentTarget.releasePointerCapture(e.pointerId);
|
|
@@ -8835,7 +9132,7 @@ var SliderThumb = React38.memo(function SliderThumb2({
|
|
|
8835
9132
|
},
|
|
8836
9133
|
[onValueChangeEnd, value]
|
|
8837
9134
|
);
|
|
8838
|
-
const handleKeyDown =
|
|
9135
|
+
const handleKeyDown = React39.useCallback(
|
|
8839
9136
|
(e) => {
|
|
8840
9137
|
if (disabled) return;
|
|
8841
9138
|
if (e.key === "Home") {
|
|
@@ -8939,7 +9236,7 @@ var SliderThumb = React38.memo(function SliderThumb2({
|
|
|
8939
9236
|
}
|
|
8940
9237
|
);
|
|
8941
9238
|
});
|
|
8942
|
-
var RangeTrack =
|
|
9239
|
+
var RangeTrack = React39.memo(function RangeTrack2({
|
|
8943
9240
|
startPercent,
|
|
8944
9241
|
endPercent,
|
|
8945
9242
|
trackSize,
|
|
@@ -9184,7 +9481,7 @@ var RangeTrack = React38.memo(function RangeTrack2({
|
|
|
9184
9481
|
}
|
|
9185
9482
|
);
|
|
9186
9483
|
});
|
|
9187
|
-
var RangeSliderComponent =
|
|
9484
|
+
var RangeSliderComponent = React39.forwardRef(
|
|
9188
9485
|
({
|
|
9189
9486
|
value: controlledValue,
|
|
9190
9487
|
defaultValue,
|
|
@@ -9208,7 +9505,7 @@ var RangeSliderComponent = React38.forwardRef(
|
|
|
9208
9505
|
const isHorizontal = orientation === "horizontal";
|
|
9209
9506
|
const defaultStart = (_a = defaultValue == null ? void 0 : defaultValue[0]) != null ? _a : min;
|
|
9210
9507
|
const defaultEnd = (_b = defaultValue == null ? void 0 : defaultValue[1]) != null ? _b : max;
|
|
9211
|
-
const [internalValue, setInternalValue] =
|
|
9508
|
+
const [internalValue, setInternalValue] = React39.useState([
|
|
9212
9509
|
defaultStart,
|
|
9213
9510
|
defaultEnd
|
|
9214
9511
|
]);
|
|
@@ -9222,10 +9519,10 @@ var RangeSliderComponent = React38.forwardRef(
|
|
|
9222
9519
|
const endValue = snap(coerce(resolvedValue[1]));
|
|
9223
9520
|
const startPercent = toPercent(startValue);
|
|
9224
9521
|
const endPercent = toPercent(endValue);
|
|
9225
|
-
const [topThumb, setTopThumb] =
|
|
9226
|
-
const trackRef =
|
|
9522
|
+
const [topThumb, setTopThumb] = React39.useState("end");
|
|
9523
|
+
const trackRef = React39.useRef(null);
|
|
9227
9524
|
const minGap = step > 0 ? step : (max - min) / 1e3;
|
|
9228
|
-
const handleStartChange =
|
|
9525
|
+
const handleStartChange = React39.useCallback(
|
|
9229
9526
|
(newStart) => {
|
|
9230
9527
|
setTopThumb("start");
|
|
9231
9528
|
const clamped = Math.min(newStart, endValue - minGap);
|
|
@@ -9237,7 +9534,7 @@ var RangeSliderComponent = React38.forwardRef(
|
|
|
9237
9534
|
},
|
|
9238
9535
|
[controlledValue, coerce, endValue, minGap, onValueChange, snap]
|
|
9239
9536
|
);
|
|
9240
|
-
const handleEndChange =
|
|
9537
|
+
const handleEndChange = React39.useCallback(
|
|
9241
9538
|
(newEnd) => {
|
|
9242
9539
|
setTopThumb("end");
|
|
9243
9540
|
const clamped = Math.max(newEnd, startValue + minGap);
|
|
@@ -9249,15 +9546,15 @@ var RangeSliderComponent = React38.forwardRef(
|
|
|
9249
9546
|
},
|
|
9250
9547
|
[controlledValue, coerce, minGap, onValueChange, snap, startValue]
|
|
9251
9548
|
);
|
|
9252
|
-
const handleStartChangeEnd =
|
|
9549
|
+
const handleStartChangeEnd = React39.useCallback(
|
|
9253
9550
|
(v) => onValueChangeEnd == null ? void 0 : onValueChangeEnd([v, endValue]),
|
|
9254
9551
|
[endValue, onValueChangeEnd]
|
|
9255
9552
|
);
|
|
9256
|
-
const handleEndChangeEnd =
|
|
9553
|
+
const handleEndChangeEnd = React39.useCallback(
|
|
9257
9554
|
(v) => onValueChangeEnd == null ? void 0 : onValueChangeEnd([startValue, v]),
|
|
9258
9555
|
[onValueChangeEnd, startValue]
|
|
9259
9556
|
);
|
|
9260
|
-
const handleTrackPointerDown =
|
|
9557
|
+
const handleTrackPointerDown = React39.useCallback(
|
|
9261
9558
|
(e) => {
|
|
9262
9559
|
if (disabled) return;
|
|
9263
9560
|
const trackEl = trackRef.current;
|
|
@@ -9301,7 +9598,7 @@ var RangeSliderComponent = React38.forwardRef(
|
|
|
9301
9598
|
trackSize
|
|
9302
9599
|
]
|
|
9303
9600
|
);
|
|
9304
|
-
const id =
|
|
9601
|
+
const id = React39.useId();
|
|
9305
9602
|
return /* @__PURE__ */ jsx(LazyMotion, { features: domMax, strict: true, children: /* @__PURE__ */ jsxs(
|
|
9306
9603
|
"div",
|
|
9307
9604
|
{
|
|
@@ -9381,7 +9678,7 @@ var RangeSliderComponent = React38.forwardRef(
|
|
|
9381
9678
|
}
|
|
9382
9679
|
);
|
|
9383
9680
|
RangeSliderComponent.displayName = "RangeSlider";
|
|
9384
|
-
var RangeSlider =
|
|
9681
|
+
var RangeSlider = React39.memo(RangeSliderComponent);
|
|
9385
9682
|
function getHorizontalRadius(isLeading, innerR, outerR) {
|
|
9386
9683
|
if (isLeading) {
|
|
9387
9684
|
return {
|
|
@@ -9420,7 +9717,7 @@ var allInnerRadius = (innerR) => ({
|
|
|
9420
9717
|
borderTopRightRadius: innerR,
|
|
9421
9718
|
borderBottomRightRadius: innerR
|
|
9422
9719
|
});
|
|
9423
|
-
var InsetIcon =
|
|
9720
|
+
var InsetIcon = React39.memo(function InsetIcon2({
|
|
9424
9721
|
icon,
|
|
9425
9722
|
isOnActiveSegment,
|
|
9426
9723
|
position,
|
|
@@ -9514,7 +9811,7 @@ function Ticks({
|
|
|
9514
9811
|
return /* @__PURE__ */ jsx("div", { style, "aria-hidden": "true" }, tick);
|
|
9515
9812
|
}) });
|
|
9516
9813
|
}
|
|
9517
|
-
var SliderTrack =
|
|
9814
|
+
var SliderTrack = React39.memo(function SliderTrack2({
|
|
9518
9815
|
percent,
|
|
9519
9816
|
trackSize,
|
|
9520
9817
|
orientation,
|
|
@@ -9549,8 +9846,8 @@ var SliderTrack = React38.memo(function SliderTrack2({
|
|
|
9549
9846
|
const gapWithThumbStr = `${thumbGap + thumbHalfWidth}px`;
|
|
9550
9847
|
const hasAnyInsetIcon = Boolean(insetIcon || insetIconTrailing);
|
|
9551
9848
|
const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
|
|
9552
|
-
const [trackWidth, setTrackWidth] =
|
|
9553
|
-
|
|
9849
|
+
const [trackWidth, setTrackWidth] = React39.useState(0);
|
|
9850
|
+
React39.useLayoutEffect(() => {
|
|
9554
9851
|
const el = trackRef.current;
|
|
9555
9852
|
if (!el || !hasAnyInsetIcon) return;
|
|
9556
9853
|
setTrackWidth(isHorizontal ? el.clientWidth : el.clientHeight);
|
|
@@ -9567,8 +9864,8 @@ var SliderTrack = React38.memo(function SliderTrack2({
|
|
|
9567
9864
|
const iconTotalWidth = activeIconSize + SliderTokens.insetIconPadding * 2 + thumbGap + thumbHalfWidth;
|
|
9568
9865
|
const iconThreshold = trackWidth > 0 ? iconTotalWidth / trackWidth : 0.15;
|
|
9569
9866
|
const HYSTERESIS_GAP = 0.04;
|
|
9570
|
-
const trailingActiveRef =
|
|
9571
|
-
const leadingActiveRef =
|
|
9867
|
+
const trailingActiveRef = React39.useRef(1 - percent <= iconThreshold);
|
|
9868
|
+
const leadingActiveRef = React39.useRef(percent > iconThreshold);
|
|
9572
9869
|
const trailingPercent = 1 - percent;
|
|
9573
9870
|
if (trailingActiveRef.current) {
|
|
9574
9871
|
if (trailingPercent > iconThreshold + HYSTERESIS_GAP) {
|
|
@@ -10075,7 +10372,7 @@ var SliderTrack = React38.memo(function SliderTrack2({
|
|
|
10075
10372
|
}
|
|
10076
10373
|
);
|
|
10077
10374
|
});
|
|
10078
|
-
var SliderComponent =
|
|
10375
|
+
var SliderComponent = React39.forwardRef(
|
|
10079
10376
|
({
|
|
10080
10377
|
value: controlledValue,
|
|
10081
10378
|
defaultValue,
|
|
@@ -10104,7 +10401,7 @@ var SliderComponent = React38.forwardRef(
|
|
|
10104
10401
|
const isHorizontal = orientation === "horizontal";
|
|
10105
10402
|
const midpoint = min + (max - min) / 2;
|
|
10106
10403
|
const initialValue = defaultValue != null ? defaultValue : midpoint;
|
|
10107
|
-
const [internalValue, setInternalValue] =
|
|
10404
|
+
const [internalValue, setInternalValue] = React39.useState(initialValue);
|
|
10108
10405
|
const resolvedValue = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
10109
10406
|
const { coerce, snap, toPercent, ticks } = useSliderMath({
|
|
10110
10407
|
min,
|
|
@@ -10113,8 +10410,8 @@ var SliderComponent = React38.forwardRef(
|
|
|
10113
10410
|
});
|
|
10114
10411
|
const safeValue = snap(coerce(resolvedValue));
|
|
10115
10412
|
const percent = toPercent(safeValue);
|
|
10116
|
-
const trackRef =
|
|
10117
|
-
const handleValueChange =
|
|
10413
|
+
const trackRef = React39.useRef(null);
|
|
10414
|
+
const handleValueChange = React39.useCallback(
|
|
10118
10415
|
(newValue) => {
|
|
10119
10416
|
const clamped = snap(coerce(newValue));
|
|
10120
10417
|
if (controlledValue === void 0) {
|
|
@@ -10124,13 +10421,13 @@ var SliderComponent = React38.forwardRef(
|
|
|
10124
10421
|
},
|
|
10125
10422
|
[coerce, controlledValue, onValueChange, snap]
|
|
10126
10423
|
);
|
|
10127
|
-
const handleValueChangeEnd =
|
|
10424
|
+
const handleValueChangeEnd = React39.useCallback(
|
|
10128
10425
|
(newValue) => {
|
|
10129
10426
|
onValueChangeEnd == null ? void 0 : onValueChangeEnd(snap(coerce(newValue)));
|
|
10130
10427
|
},
|
|
10131
10428
|
[coerce, onValueChangeEnd, snap]
|
|
10132
10429
|
);
|
|
10133
|
-
const handleTrackPointerDown =
|
|
10430
|
+
const handleTrackPointerDown = React39.useCallback(
|
|
10134
10431
|
(e) => {
|
|
10135
10432
|
if (disabled) return;
|
|
10136
10433
|
const trackEl = trackRef.current;
|
|
@@ -10165,7 +10462,7 @@ var SliderComponent = React38.forwardRef(
|
|
|
10165
10462
|
trackSize
|
|
10166
10463
|
]
|
|
10167
10464
|
);
|
|
10168
|
-
const id =
|
|
10465
|
+
const id = React39.useId();
|
|
10169
10466
|
const thumbId = `slider-thumb-${id}`;
|
|
10170
10467
|
const supportsInsetIcon = !isCentered && SliderTokens.trackSizes[trackSize] >= 40;
|
|
10171
10468
|
const hasAnyInsetIcon = !!(insetIcon || insetIconTrailing);
|
|
@@ -10237,7 +10534,7 @@ var SliderComponent = React38.forwardRef(
|
|
|
10237
10534
|
}
|
|
10238
10535
|
);
|
|
10239
10536
|
SliderComponent.displayName = "Slider";
|
|
10240
|
-
var Slider =
|
|
10537
|
+
var Slider = React39.memo(SliderComponent);
|
|
10241
10538
|
var DURATION_MAP = {
|
|
10242
10539
|
short: 4e3,
|
|
10243
10540
|
long: 7e3
|
|
@@ -10283,9 +10580,9 @@ function toSnackbarData(item) {
|
|
|
10283
10580
|
return { id: generateId(), visuals: item.visuals, resolve: item.resolve };
|
|
10284
10581
|
}
|
|
10285
10582
|
function useSnackbarState() {
|
|
10286
|
-
const [current, setCurrent] =
|
|
10287
|
-
const queueRef =
|
|
10288
|
-
const showSnackbar =
|
|
10583
|
+
const [current, setCurrent] = React39.useState(null);
|
|
10584
|
+
const queueRef = React39.useRef([]);
|
|
10585
|
+
const showSnackbar = React39.useCallback(
|
|
10289
10586
|
(visuals) => {
|
|
10290
10587
|
return new Promise((resolve) => {
|
|
10291
10588
|
const item = { visuals, resolve };
|
|
@@ -10298,14 +10595,14 @@ function useSnackbarState() {
|
|
|
10298
10595
|
},
|
|
10299
10596
|
[]
|
|
10300
10597
|
);
|
|
10301
|
-
const _dismiss =
|
|
10598
|
+
const _dismiss = React39.useCallback((result) => {
|
|
10302
10599
|
setCurrent((prev) => {
|
|
10303
10600
|
if (prev) prev.resolve(result);
|
|
10304
10601
|
const next = queueRef.current.shift();
|
|
10305
10602
|
return next ? toSnackbarData(next) : null;
|
|
10306
10603
|
});
|
|
10307
10604
|
}, []);
|
|
10308
|
-
|
|
10605
|
+
React39.useEffect(() => {
|
|
10309
10606
|
return () => {
|
|
10310
10607
|
for (const item of queueRef.current) {
|
|
10311
10608
|
item.resolve(RESULT.DISMISSED);
|
|
@@ -10315,7 +10612,7 @@ function useSnackbarState() {
|
|
|
10315
10612
|
}, []);
|
|
10316
10613
|
return { current, showSnackbar, _dismiss };
|
|
10317
10614
|
}
|
|
10318
|
-
var Snackbar =
|
|
10615
|
+
var Snackbar = React39.memo(function Snackbar2({
|
|
10319
10616
|
data,
|
|
10320
10617
|
className
|
|
10321
10618
|
}) {
|
|
@@ -10329,15 +10626,15 @@ var Snackbar = React38.memo(function Snackbar2({
|
|
|
10329
10626
|
} = visuals;
|
|
10330
10627
|
const reducedMotion = useReducedMotion();
|
|
10331
10628
|
const durationMs = resolveDuration(duration);
|
|
10332
|
-
|
|
10629
|
+
React39.useEffect(() => {
|
|
10333
10630
|
const timer = setTimeout(() => resolve(RESULT.DISMISSED), durationMs);
|
|
10334
10631
|
return () => clearTimeout(timer);
|
|
10335
10632
|
}, [resolve, durationMs]);
|
|
10336
|
-
const handleAction =
|
|
10633
|
+
const handleAction = React39.useCallback(
|
|
10337
10634
|
() => resolve(RESULT.ACTION),
|
|
10338
10635
|
[resolve]
|
|
10339
10636
|
);
|
|
10340
|
-
const handleDismiss =
|
|
10637
|
+
const handleDismiss = React39.useCallback(
|
|
10341
10638
|
() => resolve(RESULT.DISMISSED),
|
|
10342
10639
|
[resolve]
|
|
10343
10640
|
);
|
|
@@ -10405,7 +10702,7 @@ var Snackbar = React38.memo(function Snackbar2({
|
|
|
10405
10702
|
Snackbar.displayName = "Snackbar";
|
|
10406
10703
|
function SnackbarHost({ state, className }) {
|
|
10407
10704
|
const { current, _dismiss } = state;
|
|
10408
|
-
const wrappedData =
|
|
10705
|
+
const wrappedData = React39.useMemo(() => {
|
|
10409
10706
|
if (!current) return null;
|
|
10410
10707
|
return __spreadProps(__spreadValues({}, current), { resolve: _dismiss });
|
|
10411
10708
|
}, [current, _dismiss]);
|
|
@@ -10423,12 +10720,12 @@ function SnackbarHost({ state, className }) {
|
|
|
10423
10720
|
) });
|
|
10424
10721
|
}
|
|
10425
10722
|
SnackbarHost.displayName = "SnackbarHost";
|
|
10426
|
-
var SnackbarContext =
|
|
10723
|
+
var SnackbarContext = React39.createContext(
|
|
10427
10724
|
null
|
|
10428
10725
|
);
|
|
10429
10726
|
function SnackbarProvider({ children }) {
|
|
10430
10727
|
const state = useSnackbarState();
|
|
10431
|
-
const contextValue =
|
|
10728
|
+
const contextValue = React39.useMemo(
|
|
10432
10729
|
() => ({ showSnackbar: state.showSnackbar }),
|
|
10433
10730
|
[state.showSnackbar]
|
|
10434
10731
|
);
|
|
@@ -10439,7 +10736,7 @@ function SnackbarProvider({ children }) {
|
|
|
10439
10736
|
}
|
|
10440
10737
|
SnackbarProvider.displayName = "SnackbarProvider";
|
|
10441
10738
|
function useSnackbar() {
|
|
10442
|
-
const ctx =
|
|
10739
|
+
const ctx = React39.useContext(SnackbarContext);
|
|
10443
10740
|
if (!ctx) {
|
|
10444
10741
|
throw new Error("useSnackbar must be used within a <SnackbarProvider>.");
|
|
10445
10742
|
}
|
|
@@ -10543,7 +10840,7 @@ function isIconVisible(thumbContent, icons, showOnlySelectedIcon, checked) {
|
|
|
10543
10840
|
if (icons) return true;
|
|
10544
10841
|
return showOnlySelectedIcon && checked;
|
|
10545
10842
|
}
|
|
10546
|
-
var SwitchVisual =
|
|
10843
|
+
var SwitchVisual = React39.memo(function SwitchVisual2({
|
|
10547
10844
|
checked,
|
|
10548
10845
|
disabled,
|
|
10549
10846
|
isPressed,
|
|
@@ -10663,7 +10960,7 @@ var SwitchVisual = React38.memo(function SwitchVisual2({
|
|
|
10663
10960
|
}
|
|
10664
10961
|
);
|
|
10665
10962
|
});
|
|
10666
|
-
var SwitchComponent =
|
|
10963
|
+
var SwitchComponent = React39.forwardRef(
|
|
10667
10964
|
({
|
|
10668
10965
|
checked,
|
|
10669
10966
|
onCheckedChange,
|
|
@@ -10681,16 +10978,16 @@ var SwitchComponent = React38.forwardRef(
|
|
|
10681
10978
|
}, ref) => {
|
|
10682
10979
|
var _a;
|
|
10683
10980
|
const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
|
|
10684
|
-
const [isPressed, setIsPressed] =
|
|
10685
|
-
const [isHovered, setIsHovered] =
|
|
10686
|
-
const [isFocused, setIsFocused] =
|
|
10687
|
-
const [ripples, setRipples] =
|
|
10688
|
-
const generatedId =
|
|
10981
|
+
const [isPressed, setIsPressed] = React39.useState(false);
|
|
10982
|
+
const [isHovered, setIsHovered] = React39.useState(false);
|
|
10983
|
+
const [isFocused, setIsFocused] = React39.useState(false);
|
|
10984
|
+
const [ripples, setRipples] = React39.useState([]);
|
|
10985
|
+
const generatedId = React39.useId();
|
|
10689
10986
|
const switchId = label ? `switch-${generatedId}` : void 0;
|
|
10690
|
-
const handleClick =
|
|
10987
|
+
const handleClick = React39.useCallback(() => {
|
|
10691
10988
|
if (!disabled) onCheckedChange(!checked);
|
|
10692
10989
|
}, [disabled, checked, onCheckedChange]);
|
|
10693
|
-
const handleKeyDown =
|
|
10990
|
+
const handleKeyDown = React39.useCallback(
|
|
10694
10991
|
(e) => {
|
|
10695
10992
|
if (disabled) return;
|
|
10696
10993
|
if (e.key === " " || e.key === "Enter") {
|
|
@@ -10700,7 +10997,7 @@ var SwitchComponent = React38.forwardRef(
|
|
|
10700
10997
|
},
|
|
10701
10998
|
[disabled, checked, onCheckedChange]
|
|
10702
10999
|
);
|
|
10703
|
-
const handlePointerDown =
|
|
11000
|
+
const handlePointerDown = React39.useCallback(
|
|
10704
11001
|
(e) => {
|
|
10705
11002
|
if (disabled) return;
|
|
10706
11003
|
setIsPressed(true);
|
|
@@ -10715,19 +11012,19 @@ var SwitchComponent = React38.forwardRef(
|
|
|
10715
11012
|
},
|
|
10716
11013
|
[disabled]
|
|
10717
11014
|
);
|
|
10718
|
-
const handlePointerUp =
|
|
11015
|
+
const handlePointerUp = React39.useCallback(() => {
|
|
10719
11016
|
setIsPressed(false);
|
|
10720
11017
|
}, []);
|
|
10721
|
-
const handlePointerEnter =
|
|
11018
|
+
const handlePointerEnter = React39.useCallback(() => {
|
|
10722
11019
|
if (!disabled) setIsHovered(true);
|
|
10723
11020
|
}, [disabled]);
|
|
10724
|
-
const handlePointerLeave =
|
|
11021
|
+
const handlePointerLeave = React39.useCallback(() => {
|
|
10725
11022
|
setIsHovered(false);
|
|
10726
11023
|
setIsPressed(false);
|
|
10727
11024
|
}, []);
|
|
10728
|
-
const handleFocus =
|
|
10729
|
-
const handleBlur =
|
|
10730
|
-
const removeRipple =
|
|
11025
|
+
const handleFocus = React39.useCallback(() => setIsFocused(true), []);
|
|
11026
|
+
const handleBlur = React39.useCallback(() => setIsFocused(false), []);
|
|
11027
|
+
const removeRipple = React39.useCallback(
|
|
10731
11028
|
(id) => setRipples((prev) => prev.filter((r) => r.id !== id)),
|
|
10732
11029
|
[]
|
|
10733
11030
|
);
|
|
@@ -10812,7 +11109,7 @@ var SwitchComponent = React38.forwardRef(
|
|
|
10812
11109
|
}
|
|
10813
11110
|
);
|
|
10814
11111
|
SwitchComponent.displayName = "Switch";
|
|
10815
|
-
var Switch =
|
|
11112
|
+
var Switch = React39.memo(SwitchComponent);
|
|
10816
11113
|
var typographyVariants = cva("m-0 p-0 text-m3-on-surface", {
|
|
10817
11114
|
variants: {
|
|
10818
11115
|
variant: {
|
|
@@ -10837,10 +11134,10 @@ var typographyVariants = cva("m-0 p-0 text-m3-on-surface", {
|
|
|
10837
11134
|
variant: "body-md"
|
|
10838
11135
|
}
|
|
10839
11136
|
});
|
|
10840
|
-
var Text =
|
|
11137
|
+
var Text = React39.forwardRef(
|
|
10841
11138
|
(_a, ref) => {
|
|
10842
11139
|
var _b = _a, { className, variant, as: Component } = _b, props = __objRest(_b, ["className", "variant", "as"]);
|
|
10843
|
-
const defaultComponent =
|
|
11140
|
+
const defaultComponent = React39.useMemo(() => {
|
|
10844
11141
|
if ((variant == null ? void 0 : variant.startsWith("display")) || (variant == null ? void 0 : variant.startsWith("headline")))
|
|
10845
11142
|
return "h1";
|
|
10846
11143
|
if (variant == null ? void 0 : variant.startsWith("title")) return "h2";
|
|
@@ -10857,9 +11154,9 @@ var Text = React38.forwardRef(
|
|
|
10857
11154
|
}
|
|
10858
11155
|
);
|
|
10859
11156
|
Text.displayName = "Text";
|
|
10860
|
-
var TabsContext =
|
|
11157
|
+
var TabsContext = React39.createContext(null);
|
|
10861
11158
|
function useTabsContext() {
|
|
10862
|
-
const ctx =
|
|
11159
|
+
const ctx = React39.useContext(TabsContext);
|
|
10863
11160
|
if (!ctx) {
|
|
10864
11161
|
throw new Error(
|
|
10865
11162
|
"[MD3 Tabs] Component must be used within a <Tabs> root. Ensure <TabsList>, <Tab>, and <TabsContent> are descendants of <Tabs>."
|
|
@@ -10867,7 +11164,7 @@ function useTabsContext() {
|
|
|
10867
11164
|
}
|
|
10868
11165
|
return ctx;
|
|
10869
11166
|
}
|
|
10870
|
-
var TabsComponent =
|
|
11167
|
+
var TabsComponent = React39.forwardRef(
|
|
10871
11168
|
({
|
|
10872
11169
|
value: controlledValue,
|
|
10873
11170
|
defaultValue = "",
|
|
@@ -10876,35 +11173,35 @@ var TabsComponent = React38.forwardRef(
|
|
|
10876
11173
|
children,
|
|
10877
11174
|
className
|
|
10878
11175
|
}, ref) => {
|
|
10879
|
-
const [internalValue, setInternalValue] =
|
|
11176
|
+
const [internalValue, setInternalValue] = React39.useState(defaultValue);
|
|
10880
11177
|
const isControlled = controlledValue !== void 0;
|
|
10881
11178
|
const value = isControlled ? controlledValue : internalValue;
|
|
10882
|
-
const handleValueChange =
|
|
11179
|
+
const handleValueChange = React39.useCallback(
|
|
10883
11180
|
(newValue) => {
|
|
10884
11181
|
if (!isControlled) setInternalValue(newValue);
|
|
10885
11182
|
onValueChange == null ? void 0 : onValueChange(newValue);
|
|
10886
11183
|
},
|
|
10887
11184
|
[isControlled, onValueChange]
|
|
10888
11185
|
);
|
|
10889
|
-
const [focusedValue, setFocusedValue] =
|
|
10890
|
-
|
|
11186
|
+
const [focusedValue, setFocusedValue] = React39.useState(value);
|
|
11187
|
+
React39.useEffect(() => {
|
|
10891
11188
|
setFocusedValue(value);
|
|
10892
11189
|
}, [value]);
|
|
10893
|
-
const [tabValues, setTabValues] =
|
|
10894
|
-
const registerTab =
|
|
11190
|
+
const [tabValues, setTabValues] = React39.useState([]);
|
|
11191
|
+
const registerTab = React39.useCallback((tabValue) => {
|
|
10895
11192
|
setTabValues((prev) => {
|
|
10896
11193
|
if (prev.includes(tabValue)) return prev;
|
|
10897
11194
|
return [...prev, tabValue];
|
|
10898
11195
|
});
|
|
10899
11196
|
}, []);
|
|
10900
|
-
const unregisterTab =
|
|
11197
|
+
const unregisterTab = React39.useCallback((tabValue) => {
|
|
10901
11198
|
setTabValues((prev) => prev.filter((v) => v !== tabValue));
|
|
10902
11199
|
}, []);
|
|
10903
|
-
const hasAutoSelected =
|
|
10904
|
-
const [disabledValues, setDisabledValues] =
|
|
11200
|
+
const hasAutoSelected = React39.useRef(false);
|
|
11201
|
+
const [disabledValues, setDisabledValues] = React39.useState(
|
|
10905
11202
|
/* @__PURE__ */ new Set()
|
|
10906
11203
|
);
|
|
10907
|
-
const markTabDisabled =
|
|
11204
|
+
const markTabDisabled = React39.useCallback(
|
|
10908
11205
|
(tabValue, disabled) => {
|
|
10909
11206
|
setDisabledValues((prev) => {
|
|
10910
11207
|
const next = new Set(prev);
|
|
@@ -10918,7 +11215,7 @@ var TabsComponent = React38.forwardRef(
|
|
|
10918
11215
|
},
|
|
10919
11216
|
[]
|
|
10920
11217
|
);
|
|
10921
|
-
|
|
11218
|
+
React39.useEffect(() => {
|
|
10922
11219
|
if (isControlled || hasAutoSelected.current || tabValues.length === 0) {
|
|
10923
11220
|
return;
|
|
10924
11221
|
}
|
|
@@ -10933,9 +11230,9 @@ var TabsComponent = React38.forwardRef(
|
|
|
10933
11230
|
setFocusedValue(firstEnabled);
|
|
10934
11231
|
}
|
|
10935
11232
|
}, [tabValues, disabledValues, isControlled, value]);
|
|
10936
|
-
const id =
|
|
11233
|
+
const id = React39.useId();
|
|
10937
11234
|
const layoutGroupId = `tabs-${id}`;
|
|
10938
|
-
const contextValue =
|
|
11235
|
+
const contextValue = React39.useMemo(
|
|
10939
11236
|
() => ({
|
|
10940
11237
|
value,
|
|
10941
11238
|
onValueChange: handleValueChange,
|
|
@@ -10966,12 +11263,12 @@ var TabsComponent = React38.forwardRef(
|
|
|
10966
11263
|
}
|
|
10967
11264
|
);
|
|
10968
11265
|
TabsComponent.displayName = "Tabs";
|
|
10969
|
-
var Tabs =
|
|
10970
|
-
var TabsListContext =
|
|
11266
|
+
var Tabs = React39.memo(TabsComponent);
|
|
11267
|
+
var TabsListContext = React39.createContext(
|
|
10971
11268
|
null
|
|
10972
11269
|
);
|
|
10973
11270
|
function useTabsListContext() {
|
|
10974
|
-
const ctx =
|
|
11271
|
+
const ctx = React39.useContext(TabsListContext);
|
|
10975
11272
|
return ctx != null ? ctx : { variant: "primary", scrollable: false };
|
|
10976
11273
|
}
|
|
10977
11274
|
|
|
@@ -11055,7 +11352,7 @@ var TABS_CONTENT_TRANSITION = {
|
|
|
11055
11352
|
ease: "easeInOut"
|
|
11056
11353
|
};
|
|
11057
11354
|
var INDICATOR_MIN_WIDTH = 24;
|
|
11058
|
-
var TabComponent =
|
|
11355
|
+
var TabComponent = React39.forwardRef(
|
|
11059
11356
|
({
|
|
11060
11357
|
value,
|
|
11061
11358
|
icon,
|
|
@@ -11085,9 +11382,9 @@ var TabComponent = React38.forwardRef(
|
|
|
11085
11382
|
const isFocused = focusedValue === value;
|
|
11086
11383
|
const hasIcon = icon != null;
|
|
11087
11384
|
const isStackedIcon = hasIcon && !inlineIcon;
|
|
11088
|
-
const buttonRef =
|
|
11089
|
-
const isFirstMount =
|
|
11090
|
-
const mergedRef =
|
|
11385
|
+
const buttonRef = React39.useRef(null);
|
|
11386
|
+
const isFirstMount = React39.useRef(true);
|
|
11387
|
+
const mergedRef = React39.useCallback(
|
|
11091
11388
|
(node) => {
|
|
11092
11389
|
buttonRef.current = node;
|
|
11093
11390
|
if (typeof ref === "function") ref(node);
|
|
@@ -11095,15 +11392,15 @@ var TabComponent = React38.forwardRef(
|
|
|
11095
11392
|
},
|
|
11096
11393
|
[ref]
|
|
11097
11394
|
);
|
|
11098
|
-
|
|
11395
|
+
React39.useEffect(() => {
|
|
11099
11396
|
registerTab(value);
|
|
11100
11397
|
return () => unregisterTab(value);
|
|
11101
11398
|
}, [value, registerTab, unregisterTab]);
|
|
11102
|
-
|
|
11399
|
+
React39.useEffect(() => {
|
|
11103
11400
|
markTabDisabled(value, disabled);
|
|
11104
11401
|
return () => markTabDisabled(value, false);
|
|
11105
11402
|
}, [value, disabled, markTabDisabled]);
|
|
11106
|
-
const handleKeyDown =
|
|
11403
|
+
const handleKeyDown = React39.useCallback(
|
|
11107
11404
|
(e) => {
|
|
11108
11405
|
const isRtl = buttonRef.current ? getComputedStyle(buttonRef.current).direction === "rtl" : false;
|
|
11109
11406
|
const enabledValues = tabValues.filter((v) => !disabledValues.has(v));
|
|
@@ -11157,7 +11454,7 @@ var TabComponent = React38.forwardRef(
|
|
|
11157
11454
|
autoActivate
|
|
11158
11455
|
]
|
|
11159
11456
|
);
|
|
11160
|
-
|
|
11457
|
+
React39.useEffect(() => {
|
|
11161
11458
|
if (isFirstMount.current) {
|
|
11162
11459
|
isFirstMount.current = false;
|
|
11163
11460
|
return;
|
|
@@ -11166,7 +11463,7 @@ var TabComponent = React38.forwardRef(
|
|
|
11166
11463
|
buttonRef.current.focus({ preventScroll: true });
|
|
11167
11464
|
}
|
|
11168
11465
|
}, [isFocused]);
|
|
11169
|
-
|
|
11466
|
+
React39.useEffect(() => {
|
|
11170
11467
|
if (!isActive || !scrollable || !buttonRef.current) return;
|
|
11171
11468
|
const btn = buttonRef.current;
|
|
11172
11469
|
let container = btn.parentElement;
|
|
@@ -11303,8 +11600,8 @@ var TabComponent = React38.forwardRef(
|
|
|
11303
11600
|
}
|
|
11304
11601
|
);
|
|
11305
11602
|
TabComponent.displayName = "Tab";
|
|
11306
|
-
var Tab =
|
|
11307
|
-
var TabsContentComponent =
|
|
11603
|
+
var Tab = React39.memo(TabComponent);
|
|
11604
|
+
var TabsContentComponent = React39.forwardRef(
|
|
11308
11605
|
({ value, className, children }, ref) => {
|
|
11309
11606
|
var _a;
|
|
11310
11607
|
const { value: selectedValue, layoutGroupId } = useTabsContext();
|
|
@@ -11338,8 +11635,8 @@ var TabsContentComponent = React38.forwardRef(
|
|
|
11338
11635
|
}
|
|
11339
11636
|
);
|
|
11340
11637
|
TabsContentComponent.displayName = "TabsContent";
|
|
11341
|
-
var TabsContent =
|
|
11342
|
-
var TabsListComponent =
|
|
11638
|
+
var TabsContent = React39.memo(TabsContentComponent);
|
|
11639
|
+
var TabsListComponent = React39.forwardRef(
|
|
11343
11640
|
({
|
|
11344
11641
|
variant,
|
|
11345
11642
|
scrollable = false,
|
|
@@ -11350,12 +11647,12 @@ var TabsListComponent = React38.forwardRef(
|
|
|
11350
11647
|
}, ref) => {
|
|
11351
11648
|
const { layoutGroupId, value, setFocusedValue } = useTabsContext();
|
|
11352
11649
|
const listLayoutId = `${layoutGroupId}-list`;
|
|
11353
|
-
const listContextValue =
|
|
11650
|
+
const listContextValue = React39.useMemo(
|
|
11354
11651
|
() => ({ variant, scrollable }),
|
|
11355
11652
|
[variant, scrollable]
|
|
11356
11653
|
);
|
|
11357
11654
|
const bgColor = backgroundColor != null ? backgroundColor : "var(--md-sys-color-surface)";
|
|
11358
|
-
const handleBlur =
|
|
11655
|
+
const handleBlur = React39.useCallback(
|
|
11359
11656
|
(e) => {
|
|
11360
11657
|
const listEl = e.currentTarget;
|
|
11361
11658
|
if (listEl.contains(e.relatedTarget)) return;
|
|
@@ -11404,7 +11701,7 @@ var TabsListComponent = React38.forwardRef(
|
|
|
11404
11701
|
}
|
|
11405
11702
|
);
|
|
11406
11703
|
TabsListComponent.displayName = "TabsList";
|
|
11407
|
-
var TabsList =
|
|
11704
|
+
var TabsList = React39.memo(TabsListComponent);
|
|
11408
11705
|
|
|
11409
11706
|
// src/ui/text-field/text-field.tokens.ts
|
|
11410
11707
|
var TF_COLORS = {
|
|
@@ -11443,7 +11740,7 @@ var TF_TYPOGRAPHY = {
|
|
|
11443
11740
|
var TF_CLASSES = {
|
|
11444
11741
|
// Prefix / Suffix
|
|
11445
11742
|
prefixSuffix: "text-base text-[var(--color-m3-on-surface-variant)] select-none shrink-0"};
|
|
11446
|
-
var ActiveIndicator =
|
|
11743
|
+
var ActiveIndicator = React39.memo(function ActiveIndicator2({
|
|
11447
11744
|
isFocused,
|
|
11448
11745
|
isError,
|
|
11449
11746
|
isDisabled,
|
|
@@ -11490,7 +11787,7 @@ function getLabelColor(isFloated, isFocused, isError, isDisabled) {
|
|
|
11490
11787
|
if (isFloated && isFocused) return TF_COLORS.primary;
|
|
11491
11788
|
return TF_COLORS.onSurfaceVariant;
|
|
11492
11789
|
}
|
|
11493
|
-
var FloatingLabel =
|
|
11790
|
+
var FloatingLabel = React39.memo(function FloatingLabel2({
|
|
11494
11791
|
text,
|
|
11495
11792
|
isFloated,
|
|
11496
11793
|
isFocused,
|
|
@@ -11550,7 +11847,7 @@ var FloatingLabel = React38.memo(function FloatingLabel2({
|
|
|
11550
11847
|
);
|
|
11551
11848
|
});
|
|
11552
11849
|
FloatingLabel.displayName = "FloatingLabel";
|
|
11553
|
-
var LeadingIcon =
|
|
11850
|
+
var LeadingIcon = React39.memo(function LeadingIcon2({
|
|
11554
11851
|
children,
|
|
11555
11852
|
isError,
|
|
11556
11853
|
isDisabled
|
|
@@ -11574,7 +11871,7 @@ function getOutlineColor(isFocused, isError, isHovered, isDisabled) {
|
|
|
11574
11871
|
if (isHovered) return TF_COLORS.inputText;
|
|
11575
11872
|
return TF_COLORS.outline;
|
|
11576
11873
|
}
|
|
11577
|
-
var OutlineContainer =
|
|
11874
|
+
var OutlineContainer = React39.memo(function OutlineContainer2({
|
|
11578
11875
|
isFloated,
|
|
11579
11876
|
isFocused,
|
|
11580
11877
|
isError,
|
|
@@ -11672,7 +11969,7 @@ var OutlineContainer = React38.memo(function OutlineContainer2({
|
|
|
11672
11969
|
);
|
|
11673
11970
|
});
|
|
11674
11971
|
OutlineContainer.displayName = "OutlineContainer";
|
|
11675
|
-
var PrefixSuffix =
|
|
11972
|
+
var PrefixSuffix = React39.memo(function PrefixSuffix2({
|
|
11676
11973
|
text,
|
|
11677
11974
|
type,
|
|
11678
11975
|
visible,
|
|
@@ -11714,7 +12011,7 @@ function AnimatedText({
|
|
|
11714
12011
|
motionKey
|
|
11715
12012
|
);
|
|
11716
12013
|
}
|
|
11717
|
-
var SupportingText =
|
|
12014
|
+
var SupportingText = React39.memo(function SupportingText2({
|
|
11718
12015
|
supportingText,
|
|
11719
12016
|
errorText,
|
|
11720
12017
|
isError,
|
|
@@ -11825,7 +12122,7 @@ function ClearIcon() {
|
|
|
11825
12122
|
}
|
|
11826
12123
|
);
|
|
11827
12124
|
}
|
|
11828
|
-
var TrailingIcon =
|
|
12125
|
+
var TrailingIcon = React39.memo(function TrailingIcon2({
|
|
11829
12126
|
mode,
|
|
11830
12127
|
children,
|
|
11831
12128
|
value,
|
|
@@ -11891,7 +12188,7 @@ var TrailingIcon = React38.memo(function TrailingIcon2({
|
|
|
11891
12188
|
});
|
|
11892
12189
|
TrailingIcon.displayName = "TrailingIcon";
|
|
11893
12190
|
var LINE_HEIGHT_PX = 24;
|
|
11894
|
-
var TextFieldComponent =
|
|
12191
|
+
var TextFieldComponent = React39.forwardRef(
|
|
11895
12192
|
({
|
|
11896
12193
|
// Core
|
|
11897
12194
|
variant = "filled",
|
|
@@ -11955,30 +12252,30 @@ var TextFieldComponent = React38.forwardRef(
|
|
|
11955
12252
|
}, ref) => {
|
|
11956
12253
|
var _a;
|
|
11957
12254
|
const prefersReduced = (_a = useReducedMotion()) != null ? _a : false;
|
|
11958
|
-
const generatedId =
|
|
12255
|
+
const generatedId = React39.useId();
|
|
11959
12256
|
const inputId = idProp != null ? idProp : `tf-${generatedId}`;
|
|
11960
12257
|
const supportingId = `${inputId}-supporting`;
|
|
11961
12258
|
const isControlled = valueProp !== void 0;
|
|
11962
|
-
const [internalValue, setInternalValue] =
|
|
12259
|
+
const [internalValue, setInternalValue] = React39.useState(defaultValue);
|
|
11963
12260
|
const currentValue = isControlled ? valueProp : internalValue;
|
|
11964
|
-
const [isFocused, setIsFocused] =
|
|
11965
|
-
const [showPassword, setShowPassword] =
|
|
12261
|
+
const [isFocused, setIsFocused] = React39.useState(false);
|
|
12262
|
+
const [showPassword, setShowPassword] = React39.useState(false);
|
|
11966
12263
|
const resolvedInputType = type === "password" && showPassword ? "text" : type;
|
|
11967
|
-
const [nativeError, setNativeError] =
|
|
11968
|
-
const [labelWidth, setLabelWidth] =
|
|
12264
|
+
const [nativeError, setNativeError] = React39.useState("");
|
|
12265
|
+
const [labelWidth, setLabelWidth] = React39.useState(0);
|
|
11969
12266
|
const hasValue = currentValue.length > 0;
|
|
11970
12267
|
const isFloated = isFocused || hasValue;
|
|
11971
12268
|
const isError = errorProp || !!nativeError || maxLength !== void 0 && currentValue.length > maxLength;
|
|
11972
12269
|
const containerHeight = dense ? TF_SIZE.denseHeight : TF_SIZE.height;
|
|
11973
12270
|
const showAsterisk = required && !noAsterisk;
|
|
11974
|
-
const inputRef =
|
|
11975
|
-
const labelSpanRef =
|
|
11976
|
-
|
|
12271
|
+
const inputRef = React39.useRef(null);
|
|
12272
|
+
const labelSpanRef = React39.useRef(null);
|
|
12273
|
+
React39.useLayoutEffect(() => {
|
|
11977
12274
|
if (labelSpanRef.current) {
|
|
11978
12275
|
setLabelWidth(labelSpanRef.current.offsetWidth);
|
|
11979
12276
|
}
|
|
11980
12277
|
}, []);
|
|
11981
|
-
|
|
12278
|
+
React39.useLayoutEffect(() => {
|
|
11982
12279
|
if (type !== "textarea" || !inputRef.current) return;
|
|
11983
12280
|
const textarea = inputRef.current;
|
|
11984
12281
|
if (autoResize) {
|
|
@@ -11990,7 +12287,7 @@ var TextFieldComponent = React38.forwardRef(
|
|
|
11990
12287
|
}
|
|
11991
12288
|
textarea.style.overflowY = "hidden";
|
|
11992
12289
|
}, [type, autoResize, maxRows, currentValue]);
|
|
11993
|
-
const handleValueChange =
|
|
12290
|
+
const handleValueChange = React39.useCallback(
|
|
11994
12291
|
(newValue) => {
|
|
11995
12292
|
var _a2, _b;
|
|
11996
12293
|
if (!isControlled) setInternalValue(newValue);
|
|
@@ -11999,7 +12296,7 @@ var TextFieldComponent = React38.forwardRef(
|
|
|
11999
12296
|
},
|
|
12000
12297
|
[isControlled]
|
|
12001
12298
|
);
|
|
12002
|
-
const handleChange =
|
|
12299
|
+
const handleChange = React39.useCallback(
|
|
12003
12300
|
(e) => {
|
|
12004
12301
|
const newVal = e.target.value;
|
|
12005
12302
|
handleValueChange(newVal);
|
|
@@ -12007,14 +12304,14 @@ var TextFieldComponent = React38.forwardRef(
|
|
|
12007
12304
|
},
|
|
12008
12305
|
[handleValueChange, onChange]
|
|
12009
12306
|
);
|
|
12010
|
-
const handleFocus =
|
|
12307
|
+
const handleFocus = React39.useCallback(
|
|
12011
12308
|
(e) => {
|
|
12012
12309
|
setIsFocused(true);
|
|
12013
12310
|
onFocus == null ? void 0 : onFocus(e);
|
|
12014
12311
|
},
|
|
12015
12312
|
[onFocus]
|
|
12016
12313
|
);
|
|
12017
|
-
const handleBlur =
|
|
12314
|
+
const handleBlur = React39.useCallback(
|
|
12018
12315
|
(e) => {
|
|
12019
12316
|
setIsFocused(false);
|
|
12020
12317
|
const el = inputRef.current;
|
|
@@ -12027,7 +12324,7 @@ var TextFieldComponent = React38.forwardRef(
|
|
|
12027
12324
|
},
|
|
12028
12325
|
[onBlur]
|
|
12029
12326
|
);
|
|
12030
|
-
const handleClear =
|
|
12327
|
+
const handleClear = React39.useCallback(() => {
|
|
12031
12328
|
var _a2;
|
|
12032
12329
|
handleValueChange("");
|
|
12033
12330
|
onChange == null ? void 0 : onChange("", {
|
|
@@ -12035,12 +12332,12 @@ var TextFieldComponent = React38.forwardRef(
|
|
|
12035
12332
|
});
|
|
12036
12333
|
(_a2 = inputRef.current) == null ? void 0 : _a2.focus();
|
|
12037
12334
|
}, [handleValueChange, onChange]);
|
|
12038
|
-
const handlePasswordToggle =
|
|
12335
|
+
const handlePasswordToggle = React39.useCallback(() => {
|
|
12039
12336
|
var _a2;
|
|
12040
12337
|
setShowPassword((prev) => !prev);
|
|
12041
12338
|
(_a2 = inputRef.current) == null ? void 0 : _a2.focus();
|
|
12042
12339
|
}, []);
|
|
12043
|
-
|
|
12340
|
+
React39.useImperativeHandle(
|
|
12044
12341
|
ref,
|
|
12045
12342
|
() => ({
|
|
12046
12343
|
focus: () => {
|
|
@@ -12285,7 +12582,7 @@ var TextFieldComponent = React38.forwardRef(
|
|
|
12285
12582
|
}
|
|
12286
12583
|
);
|
|
12287
12584
|
TextFieldComponent.displayName = "TextField";
|
|
12288
|
-
var TextField =
|
|
12585
|
+
var TextField = React39.memo(TextFieldComponent);
|
|
12289
12586
|
|
|
12290
12587
|
// src/ui/typography/typography-key-tokens.ts
|
|
12291
12588
|
var TypographyKeyTokens = /* @__PURE__ */ ((TypographyKeyTokens2) => {
|
|
@@ -13046,7 +13343,8 @@ function MD3ThemeProvider({
|
|
|
13046
13343
|
STORAGE_KEY_MODE
|
|
13047
13344
|
);
|
|
13048
13345
|
if (savedColor) setSourceColor(savedColor);
|
|
13049
|
-
if (savedMode === "light" || savedMode === "dark"
|
|
13346
|
+
if (savedMode === "light" || savedMode === "dark" || savedMode === "system")
|
|
13347
|
+
setMode(savedMode);
|
|
13050
13348
|
setIsHydrated(true);
|
|
13051
13349
|
}, [persistToLocalStorage]);
|
|
13052
13350
|
useEffect(() => {
|
|
@@ -13057,9 +13355,17 @@ function MD3ThemeProvider({
|
|
|
13057
13355
|
localStorage.setItem(STORAGE_KEY_MODE, mode);
|
|
13058
13356
|
}
|
|
13059
13357
|
}, [sourceColor, mode, persistToLocalStorage, isHydrated]);
|
|
13358
|
+
useEffect(() => {
|
|
13359
|
+
if (mode !== "system" || typeof window === "undefined") return;
|
|
13360
|
+
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
|
|
13361
|
+
const handleChange = () => applyTheme(sourceColor, "system");
|
|
13362
|
+
mediaQuery.addEventListener("change", handleChange);
|
|
13363
|
+
return () => mediaQuery.removeEventListener("change", handleChange);
|
|
13364
|
+
}, [mode, sourceColor]);
|
|
13365
|
+
const effectiveMode = resolveMode(mode);
|
|
13060
13366
|
const themeValue = useMemo(
|
|
13061
|
-
() => ({ sourceColor, setSourceColor, mode, setMode }),
|
|
13062
|
-
[sourceColor, mode]
|
|
13367
|
+
() => ({ sourceColor, setSourceColor, mode, setMode, effectiveMode }),
|
|
13368
|
+
[sourceColor, mode, effectiveMode]
|
|
13063
13369
|
);
|
|
13064
13370
|
const typographyValue = useMemo(() => {
|
|
13065
13371
|
if (typographyProp) return typographyProp;
|
|
@@ -13091,8 +13397,8 @@ function useTheme() {
|
|
|
13091
13397
|
return context;
|
|
13092
13398
|
}
|
|
13093
13399
|
function useThemeMode() {
|
|
13094
|
-
const { mode, setMode } = useTheme();
|
|
13095
|
-
return { mode, setMode };
|
|
13400
|
+
const { mode, setMode, effectiveMode } = useTheme();
|
|
13401
|
+
return { mode, setMode, effectiveMode };
|
|
13096
13402
|
}
|
|
13097
13403
|
function TableOfContents({
|
|
13098
13404
|
items,
|
|
@@ -13730,7 +14036,7 @@ function TooltipBox({
|
|
|
13730
14036
|
onKeyDown: handleKeyDown,
|
|
13731
14037
|
"aria-label": ariaLabel,
|
|
13732
14038
|
"aria-describedby": state.isVisible ? tooltipId : void 0,
|
|
13733
|
-
children:
|
|
14039
|
+
children: React39.isValidElement(children) ? children : /* @__PURE__ */ jsx("span", { children })
|
|
13734
14040
|
}
|
|
13735
14041
|
),
|
|
13736
14042
|
mounted && createPortal(
|
|
@@ -13760,6 +14066,6 @@ function TooltipBox({
|
|
|
13760
14066
|
] });
|
|
13761
14067
|
}
|
|
13762
14068
|
|
|
13763
|
-
export { APP_BAR_BOTTOM_SPRING, APP_BAR_COLORS, APP_BAR_COLOR_TRANSITION, APP_BAR_ENTER_ALWAYS_SPRING, APP_BAR_TITLE_FADE, AppBarColumn, AppBarOverflowIndicator, AppBarRow, AppBarTokens, Badge, BadgedBox, BottomAppBar, Button, ButtonGroup, CHECK_ICON_VARIANTS, Card, Checkbox, Chip, CodeBlock, ContextMenu, ContextMenuContent, ContextMenuTrigger, DIVIDER_COLOR, DIVIDER_PADDING, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogFullScreenContent, DialogHeader, DialogIcon, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Divider, DockedToolbar, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, FAB, FABMenu, FABMenuItem, FABPosition, FAST_EFFECTS_TRANSITION, FAST_SPATIAL_SPRING, GROUP_SHAPES, ITEM_SHAPE_CLASSES, Icon, IconButton, LargeFlexibleAppBar, LoadingIndicator, MD3ThemeProvider, MD3_EXPRESSIVE_FONT_VARIATION, MENU_CHECK_ICON_SIZE, MENU_CONTAINER_VARIANTS, MENU_GROUP_GAP, MENU_ICON_SIZE, MENU_ITEM_MIN_HEIGHT, MENU_MAX_WIDTH, MENU_MIN_WIDTH, MaterialSymbolsPreconnect, MediumFlexibleAppBar, Menu, MenuContent, MenuDivider, MenuGroup, MenuItem, MenuProvider, MenuTrigger, NavigationRail, NavigationRailItem, PlainTooltip, ProgressIndicator, RadioButton, RadioGroup, RangeSlider, RichTooltip, Ripple, SEARCH_BAR_EXPAND_SPRING, SEARCH_COLORS, SEARCH_DOCKED_REVEAL_SPRING, SEARCH_FULLSCREEN_SPRING, SEARCH_TYPOGRAPHY, SEARCH_VIEW_SPRING, STANDARD_COLORS, SUBMENU_CONTAINER_VARIANTS, ScrollArea, ScrollAreaScrollbar, Search, SearchAppBar, SearchBar, SearchTokens, SearchView, SearchViewContainer, SearchViewDocked, SearchViewFullScreen, Slider, SliderColors, SliderTokens, SmallAppBar, Snackbar, SnackbarHost, SnackbarProvider, SubMenu, Switch, SwitchColors, SwitchTokens, Tab, TableOfContents, Tabs, TabsColors, TabsContent, TabsList, TabsTokens, Text, TextField, ToggleFAB, TooltipBox, TooltipCaretShape, TooltipTokens, TriStateCheckbox, TypeScaleTokens, Typography, TypographyContext, TypographyKeyTokens, TypographyProvider, TypographyTokens, VIBRANT_COLORS, VerticalMenu, VerticalMenuContent, VerticalMenuDivider, VerticalMenuGroup, appBarTypography, applyTheme, buildWavePath, cn, generateM3Theme, useAppBarScroll, useRipple as useDOMRipple, useMediaQuery, useMenuContext, useRipple2 as useRipple, useRippleState, useSearchKeyboard, useSnackbar, useSnackbarState, useTheme, useThemeMode, useTooltipPosition, useTooltipState, useTypography };
|
|
14069
|
+
export { APP_BAR_BOTTOM_SPRING, APP_BAR_COLORS, APP_BAR_COLOR_TRANSITION, APP_BAR_ENTER_ALWAYS_SPRING, APP_BAR_TITLE_FADE, AppBarColumn, AppBarOverflowIndicator, AppBarRow, AppBarTokens, Badge, BadgedBox, BottomAppBar, Button, ButtonGroup, CHECK_ICON_VARIANTS, Card, Checkbox, Chip, CodeBlock, ContextMenu, ContextMenuContent, ContextMenuTrigger, DIVIDER_COLOR, DIVIDER_PADDING, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogFullScreenContent, DialogHeader, DialogIcon, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Divider, DockedToolbar, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, FAB, FABMenu, FABMenuItem, FABPosition, FAST_EFFECTS_TRANSITION, FAST_SPATIAL_SPRING, GROUP_SHAPES, ITEM_SHAPE_CLASSES, Icon, IconButton, LargeFlexibleAppBar, LoadingIndicator, MD3ThemeProvider, MD3_EXPRESSIVE_FONT_VARIATION, MENU_CHECK_ICON_SIZE, MENU_CONTAINER_VARIANTS, MENU_GROUP_GAP, MENU_ICON_SIZE, MENU_ITEM_MIN_HEIGHT, MENU_MAX_WIDTH, MENU_MIN_WIDTH, MaterialSymbolsPreconnect, MediumFlexibleAppBar, Menu, MenuContent, MenuDivider, MenuGroup, MenuItem, MenuProvider, MenuTrigger, NavigationBar, NavigationBarItem, NavigationRail, NavigationRailItem, PlainTooltip, ProgressIndicator, RadioButton, RadioGroup, RangeSlider, RichTooltip, Ripple, SEARCH_BAR_EXPAND_SPRING, SEARCH_COLORS, SEARCH_DOCKED_REVEAL_SPRING, SEARCH_FULLSCREEN_SPRING, SEARCH_TYPOGRAPHY, SEARCH_VIEW_SPRING, STANDARD_COLORS, SUBMENU_CONTAINER_VARIANTS, ScrollArea, ScrollAreaScrollbar, Search, SearchAppBar, SearchBar, SearchTokens, SearchView, SearchViewContainer, SearchViewDocked, SearchViewFullScreen, Slider, SliderColors, SliderTokens, SmallAppBar, Snackbar, SnackbarHost, SnackbarProvider, SubMenu, Switch, SwitchColors, SwitchTokens, Tab, TableOfContents, Tabs, TabsColors, TabsContent, TabsList, TabsTokens, Text, TextField, ToggleFAB, TooltipBox, TooltipCaretShape, TooltipTokens, TriStateCheckbox, TypeScaleTokens, Typography, TypographyContext, TypographyKeyTokens, TypographyProvider, TypographyTokens, VIBRANT_COLORS, VerticalMenu, VerticalMenuContent, VerticalMenuDivider, VerticalMenuGroup, appBarTypography, applyTheme, buildWavePath, cn, generateM3Theme, resolveMode, useAppBarScroll, useRipple as useDOMRipple, useMediaQuery, useMenuContext, useRipple2 as useRipple, useRippleState, useSearchKeyboard, useSnackbar, useSnackbarState, useTheme, useThemeMode, useTooltipPosition, useTooltipState, useTypography };
|
|
13764
14070
|
//# sourceMappingURL=index.mjs.map
|
|
13765
14071
|
//# sourceMappingURL=index.mjs.map
|