@overmap-ai/blocks 1.0.40-overlay.1 → 1.0.40-phone-input.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ButtonGroup/ButtonGroup.d.ts +1 -2
- package/dist/ButtonGroup/context.d.ts +2 -7
- package/dist/CheckboxGroup/context.d.ts +2 -6
- package/dist/CheckedIndicator/CheckedIndicator.d.ts +4 -3
- package/dist/CommandMenu/CheckboxIndicator.d.ts +2 -4
- package/dist/CommandMenu/SelectedIndicator.d.ts +2 -3
- package/dist/CommandMenu/context.d.ts +2 -3
- package/dist/Heading/cva.d.ts +1 -1
- package/dist/HoverUtility/HoverUtility.d.ts +2 -2
- package/dist/Link/cva.d.ts +1 -1
- package/dist/Menu/{CheckboxItem/CheckboxItem.d.ts → CheckboxItem.d.ts} +1 -1
- package/dist/Menu/{CheckboxItemIndicator/CheckboxItemIndicator.d.ts → CheckboxItemIndicator.d.ts} +1 -1
- package/dist/Menu/{ClickTrigger/ClickTrigger.d.ts → ClickTrigger.d.ts} +1 -1
- package/dist/Menu/{Content/Content.d.ts → Content.d.ts} +1 -1
- package/dist/Menu/{ContextTrigger/ContextTrigger.d.ts → ContextTrigger.d.ts} +1 -1
- package/dist/Menu/{Group/Group.d.ts → Group.d.ts} +1 -1
- package/dist/Menu/{Input/Field.d.ts → InputField.d.ts} +1 -1
- package/dist/Menu/{Input/Root.d.ts → InputRoot.d.ts} +1 -1
- package/dist/Menu/{Input/Slot.d.ts → InputSlot.d.ts} +1 -1
- package/dist/Menu/{Item/Item.d.ts → Item.d.ts} +1 -1
- package/dist/Menu/{MultiSelectGroup/MultiSelectGroup.d.ts → MultiSelectGroup.d.ts} +1 -1
- package/dist/Menu/{MultiSelectItem/MultiSelectItem.d.ts → MultiSelectItem.d.ts} +1 -1
- package/dist/Menu/PageContent.d.ts +2 -0
- package/dist/Menu/{PageTrigger/PageTrigger.d.ts → PageTrigger.d.ts} +1 -1
- package/dist/Menu/{Pages/Pages.d.ts → Pages.d.ts} +1 -1
- package/dist/Menu/{root/Root.d.ts → Root.d.ts} +1 -1
- package/dist/Menu/{Scroll/Scroll.d.ts → Scroll.d.ts} +1 -1
- package/dist/Menu/{SelectAll/SelectAllItem.d.ts → SelectAllItem.d.ts} +1 -1
- package/dist/Menu/{SelectGroup/SelectGroup.d.ts → SelectGroup.d.ts} +1 -1
- package/dist/Menu/{SelectItem/SelectItem.d.ts → SelectItem.d.ts} +1 -1
- package/dist/Menu/SelectedIndicator.d.ts +4 -0
- package/dist/Menu/{Separator/Separator.d.ts → Separator.d.ts} +1 -1
- package/dist/Menu/{Sub/Sub.d.ts → Sub.d.ts} +1 -1
- package/dist/Menu/{SubContent/SubContent.d.ts → SubContent.d.ts} +1 -1
- package/dist/Menu/{SubTrigger/SubTrigger.d.ts → SubTrigger.d.ts} +1 -1
- package/dist/Menu/{VirtualTrigger/VirtualTrigger.d.ts → VirtualTrigger.d.ts} +1 -1
- package/dist/Menu/index.d.ts +9 -7
- package/dist/Menu/{Content/context.d.ts → menuContentContext.d.ts} +2 -2
- package/dist/Menu/{root/context.d.ts → rootContext.d.ts} +1 -1
- package/dist/Menu/{Sub/context.d.ts → subContentContext.d.ts} +1 -1
- package/dist/Menu/utils.d.ts +0 -6
- package/dist/MenuV2/CheckboxItem.d.ts +6 -0
- package/dist/MenuV2/CheckboxItemIndicator.d.ts +3 -0
- package/dist/MenuV2/Group.d.ts +4 -0
- package/dist/MenuV2/GroupLabel.d.ts +4 -0
- package/dist/MenuV2/Item.d.ts +6 -0
- package/dist/MenuV2/MultiSelectAllItem.d.ts +4 -0
- package/dist/MenuV2/MultiSelectGroup.d.ts +5 -0
- package/dist/MenuV2/MultiSelectItem.d.ts +5 -0
- package/dist/MenuV2/Page.d.ts +5 -0
- package/dist/MenuV2/PageTriggerItem.d.ts +5 -0
- package/dist/MenuV2/Pages.d.ts +7 -0
- package/dist/MenuV2/Root.d.ts +6 -0
- package/dist/MenuV2/SelectGroup.d.ts +4 -0
- package/dist/MenuV2/SelectItem.d.ts +5 -0
- package/dist/MenuV2/SelectedIndicator.d.ts +3 -0
- package/dist/MenuV2/Separator.d.ts +5 -0
- package/dist/MenuV2/constants.d.ts +9 -0
- package/dist/MenuV2/context.d.ts +17 -0
- package/dist/MenuV2/cva.d.ts +14 -0
- package/dist/MenuV2/index.d.ts +36 -0
- package/dist/MenuV2/typings.d.ts +9 -0
- package/dist/MenuV2/utils.d.ts +1 -0
- package/dist/PhoneNumberInput/CountrySelect.d.ts +11 -0
- package/dist/PhoneNumberInput/FlagComponent.d.ts +2 -0
- package/dist/PhoneNumberInput/InputComponent.d.ts +5 -0
- package/dist/PhoneNumberInput/PhoneNumberInput.d.ts +6 -0
- package/dist/PhoneNumberInput/context.d.ts +4 -0
- package/dist/PhoneNumberInput/index.d.ts +2 -0
- package/dist/PhoneNumberInput/typings.d.ts +9 -0
- package/dist/Rating/Item.d.ts +6 -0
- package/dist/Rating/ItemIndicator.d.ts +5 -0
- package/dist/Rating/Root.d.ts +8 -0
- package/dist/Rating/context.d.ts +9 -0
- package/dist/Rating/index.d.ts +9 -0
- package/dist/SelectedIndicator/SelectedIndicator.d.ts +5 -0
- package/dist/{Menu/SelectedIndicator → SelectedIndicator}/context.d.ts +0 -1
- package/dist/SelectedIndicator/index.d.ts +2 -0
- package/dist/SlideOut/SlideOut.d.ts +1 -2
- package/dist/Text/cva.d.ts +1 -1
- package/dist/blocks.js +1364 -864
- package/dist/blocks.js.map +1 -1
- package/dist/blocks.umd.cjs +1652 -1155
- package/dist/blocks.umd.cjs.map +1 -1
- package/dist/hooks.d.ts +20 -0
- package/dist/index.d.ts +5 -2
- package/dist/typings.d.ts +0 -5
- package/dist/utils.d.ts +7 -30
- package/package.json +2 -1
- package/dist/CheckboxGroup/utils.d.ts +0 -1
- package/dist/CollapsibleTree/CollapsibleTree.d.ts +0 -5
- package/dist/CollapsibleTree/context.d.ts +0 -11
- package/dist/CollapsibleTree/index.d.ts +0 -2
- package/dist/CollapsibleTree/typings.d.ts +0 -58
- package/dist/CommandMenu/utils.d.ts +0 -4
- package/dist/Menu/ClickTrigger/index.d.ts +0 -1
- package/dist/Menu/Content/index.d.ts +0 -2
- package/dist/Menu/ContextTrigger/index.d.ts +0 -1
- package/dist/Menu/Group/index.d.ts +0 -1
- package/dist/Menu/Input/index.d.ts +0 -3
- package/dist/Menu/Item/index.d.ts +0 -1
- package/dist/Menu/Label/index.d.ts +0 -1
- package/dist/Menu/MultiSelectGroup/index.d.ts +0 -1
- package/dist/Menu/MultiSelectItem/index.d.ts +0 -1
- package/dist/Menu/PageContent/PageContent.d.ts +0 -3
- package/dist/Menu/PageContent/index.d.ts +0 -1
- package/dist/Menu/PageTrigger/index.d.ts +0 -1
- package/dist/Menu/Pages/index.d.ts +0 -2
- package/dist/Menu/SelectAll/index.d.ts +0 -1
- package/dist/Menu/SelectGroup/index.d.ts +0 -1
- package/dist/Menu/SelectItem/index.d.ts +0 -1
- package/dist/Menu/SelectedIndicator/SelectedIndicator.d.ts +0 -4
- package/dist/Menu/SelectedIndicator/index.d.ts +0 -2
- package/dist/Menu/Separator/index.d.ts +0 -1
- package/dist/Menu/Sub/index.d.ts +0 -2
- package/dist/Menu/SubContent/index.d.ts +0 -1
- package/dist/Menu/SubTrigger/index.d.ts +0 -1
- package/dist/Menu/VirtualTrigger/index.d.ts +0 -1
- package/dist/Menu/root/index.d.ts +0 -2
- /package/dist/Menu/{Label/Label.d.ts → Label.d.ts} +0 -0
- /package/dist/Menu/{Pages/context.d.ts → menuPagesContext.d.ts} +0 -0
package/dist/blocks.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import * as RadixAlertDialog from "@radix-ui/react-alert-dialog";
|
|
2
2
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { cva, cx } from "class-variance-authority";
|
|
4
|
-
import
|
|
5
|
-
import React__default, { createContext, useContext, memo, useMemo, useState, useCallback, useEffect, useLayoutEffect, use, useRef } from "react";
|
|
4
|
+
import { createContext, useContext, memo, useMemo, useState, useCallback, useEffect, useId, useLayoutEffect, use, useRef } from "react";
|
|
6
5
|
import * as RadixAvatar from "@radix-ui/react-avatar";
|
|
7
6
|
import * as RadixCheckbox from "@radix-ui/react-checkbox";
|
|
8
7
|
import { useMediaQuery } from "react-responsive";
|
|
9
|
-
import * as RadixPrimitiveCollapsible from "@radix-ui/react-collapsible";
|
|
10
8
|
import { CommandItem, CommandRoot, CommandEmpty, CommandGroup, CommandInput, useCommandState, CommandList, CommandSeparator } from "cmdk";
|
|
11
9
|
import * as RadixDialog from "@radix-ui/react-dialog";
|
|
12
10
|
import { DialogPortal, DialogContent as DialogContent$1, DialogTitle, DialogDescription, DialogOverlay as DialogOverlay$1, DialogTrigger } from "@radix-ui/react-dialog";
|
|
@@ -16,10 +14,13 @@ import * as RadixHoverCard from "@radix-ui/react-hover-card";
|
|
|
16
14
|
import { CSSTransition } from "react-transition-group";
|
|
17
15
|
import ReactDOM from "react-dom";
|
|
18
16
|
import { Slot } from "@radix-ui/react-slot";
|
|
19
|
-
import { useFloatingNodeId, useFloating, offset, size, flip, shift, hide, autoUpdate, useRole, useDismiss, useClick, useListNavigation, useInteractions, FloatingTree,
|
|
17
|
+
import { useListItem, useMergeRefs, FloatingNode, FloatingPortal, FloatingOverlay, FloatingFocusManager, FloatingList, useFloatingNodeId, useFloating, offset, size, flip, shift, hide, autoUpdate, useRole, useDismiss, useClick, useListNavigation, useInteractions, FloatingTree, useHover, safePolygon } from "@floating-ui/react";
|
|
20
18
|
import * as RadixSeparator from "@radix-ui/react-separator";
|
|
21
19
|
import * as RadixOneTimePasswordField from "@radix-ui/react-one-time-password-field";
|
|
22
20
|
import { useErrorBoundary, ErrorBoundary } from "react-error-boundary";
|
|
21
|
+
import PhoneInput from "react-phone-number-input";
|
|
22
|
+
import { PhoneIcon, ChevronDownIcon } from "lucide-react";
|
|
23
|
+
import { getCountryCallingCode } from "react-phone-number-input/min";
|
|
23
24
|
import * as RadixPopover from "@radix-ui/react-popover";
|
|
24
25
|
import * as RadixProgress from "@radix-ui/react-progress";
|
|
25
26
|
import * as RadixRadioGroup from "@radix-ui/react-radio-group";
|
|
@@ -788,82 +789,6 @@ const Checkbox = {
|
|
|
788
789
|
};
|
|
789
790
|
const SelectContext = createContext({});
|
|
790
791
|
const MultiSelectContext = createContext({});
|
|
791
|
-
const usePassiveLayoutEffect = React__default[typeof document !== "undefined" && document.createElement !== void 0 ? "useLayoutEffect" : "useEffect"];
|
|
792
|
-
const useLatest = (current) => {
|
|
793
|
-
const storedValue = React.useRef(current);
|
|
794
|
-
React.useEffect(() => {
|
|
795
|
-
storedValue.current = current;
|
|
796
|
-
});
|
|
797
|
-
return storedValue;
|
|
798
|
-
};
|
|
799
|
-
function _ref() {
|
|
800
|
-
}
|
|
801
|
-
function useResizeObserver(target, callback, options = {}) {
|
|
802
|
-
const resizeObserver = getResizeObserver(options.polyfill);
|
|
803
|
-
const storedCallback = useLatest(callback);
|
|
804
|
-
usePassiveLayoutEffect(() => {
|
|
805
|
-
let didUnsubscribe = false;
|
|
806
|
-
const targetEl = target && "current" in target ? target.current : target;
|
|
807
|
-
if (!targetEl) return _ref;
|
|
808
|
-
function cb(entry, observer) {
|
|
809
|
-
if (didUnsubscribe) return;
|
|
810
|
-
storedCallback.current(entry, observer);
|
|
811
|
-
}
|
|
812
|
-
resizeObserver.subscribe(targetEl, cb);
|
|
813
|
-
return () => {
|
|
814
|
-
didUnsubscribe = true;
|
|
815
|
-
resizeObserver.unsubscribe(targetEl, cb);
|
|
816
|
-
};
|
|
817
|
-
}, [target, resizeObserver, storedCallback]);
|
|
818
|
-
return resizeObserver.observer;
|
|
819
|
-
}
|
|
820
|
-
function createResizeObserver(polyfill) {
|
|
821
|
-
let ticking = false;
|
|
822
|
-
let allEntries = [];
|
|
823
|
-
const callbacks = /* @__PURE__ */ new Map();
|
|
824
|
-
const observer = new (polyfill || window.ResizeObserver)((entries, obs) => {
|
|
825
|
-
allEntries = allEntries.concat(entries);
|
|
826
|
-
function _ref2() {
|
|
827
|
-
const triggered = /* @__PURE__ */ new Set();
|
|
828
|
-
for (let i = 0; i < allEntries.length; i++) {
|
|
829
|
-
if (triggered.has(allEntries[i].target)) continue;
|
|
830
|
-
triggered.add(allEntries[i].target);
|
|
831
|
-
const cbs = callbacks.get(allEntries[i].target);
|
|
832
|
-
cbs === null || cbs === void 0 ? void 0 : cbs.forEach((cb) => cb(allEntries[i], obs));
|
|
833
|
-
}
|
|
834
|
-
allEntries = [];
|
|
835
|
-
ticking = false;
|
|
836
|
-
}
|
|
837
|
-
if (!ticking) {
|
|
838
|
-
window.requestAnimationFrame(_ref2);
|
|
839
|
-
}
|
|
840
|
-
ticking = true;
|
|
841
|
-
});
|
|
842
|
-
return {
|
|
843
|
-
observer,
|
|
844
|
-
subscribe(target, callback) {
|
|
845
|
-
var _callbacks$get;
|
|
846
|
-
observer.observe(target);
|
|
847
|
-
const cbs = (_callbacks$get = callbacks.get(target)) !== null && _callbacks$get !== void 0 ? _callbacks$get : [];
|
|
848
|
-
cbs.push(callback);
|
|
849
|
-
callbacks.set(target, cbs);
|
|
850
|
-
},
|
|
851
|
-
unsubscribe(target, callback) {
|
|
852
|
-
var _callbacks$get2;
|
|
853
|
-
const cbs = (_callbacks$get2 = callbacks.get(target)) !== null && _callbacks$get2 !== void 0 ? _callbacks$get2 : [];
|
|
854
|
-
if (cbs.length === 1) {
|
|
855
|
-
observer.unobserve(target);
|
|
856
|
-
callbacks.delete(target);
|
|
857
|
-
return;
|
|
858
|
-
}
|
|
859
|
-
const cbIndex = cbs.indexOf(callback);
|
|
860
|
-
if (cbIndex !== -1) cbs.splice(cbIndex, 1);
|
|
861
|
-
callbacks.set(target, cbs);
|
|
862
|
-
}
|
|
863
|
-
};
|
|
864
|
-
}
|
|
865
|
-
let _resizeObserver;
|
|
866
|
-
const getResizeObserver = (polyfill) => !_resizeObserver ? _resizeObserver = createResizeObserver(polyfill) : _resizeObserver;
|
|
867
792
|
const useViewportSize = (props) => {
|
|
868
793
|
const { xs: xsProps, sm: smProps, md: mdProps, lg: lgProps, xl: xlProps } = props;
|
|
869
794
|
const [prevSize, setPrevSize] = useState("initial");
|
|
@@ -881,33 +806,14 @@ const useViewportSize = (props) => {
|
|
|
881
806
|
}, [lg, md, sm, xl, xs]);
|
|
882
807
|
return { size: size2, prevSize, xs, sm, md, lg, xl };
|
|
883
808
|
};
|
|
884
|
-
|
|
885
|
-
return useCallback((event) => {
|
|
886
|
-
event.stopPropagation();
|
|
887
|
-
}, []);
|
|
888
|
-
};
|
|
889
|
-
function useTextFilter(values, filterFunction) {
|
|
809
|
+
function useTextFilter(items, filterFunction) {
|
|
890
810
|
const [filteredOptions, setFilteredOptions] = useState([]);
|
|
891
811
|
const [filterValue, setFilterValue] = useState("");
|
|
892
812
|
useEffect(() => {
|
|
893
|
-
setFilteredOptions(
|
|
894
|
-
}, [filterFunction, filterValue,
|
|
813
|
+
setFilteredOptions(items.filter((value) => filterFunction(value, filterValue)));
|
|
814
|
+
}, [filterFunction, filterValue, items]);
|
|
895
815
|
return [filteredOptions, filterValue, setFilterValue];
|
|
896
816
|
}
|
|
897
|
-
const useSize = (target) => {
|
|
898
|
-
const [size2, setSize] = useState();
|
|
899
|
-
useLayoutEffect(() => {
|
|
900
|
-
var _a;
|
|
901
|
-
setSize((_a = target.current) == null ? void 0 : _a.getBoundingClientRect());
|
|
902
|
-
}, [target]);
|
|
903
|
-
const handleResize = useCallback((entry) => {
|
|
904
|
-
const rect = entry.contentRect;
|
|
905
|
-
setSize(rect);
|
|
906
|
-
}, []);
|
|
907
|
-
useResizeObserver(target, handleResize);
|
|
908
|
-
return size2;
|
|
909
|
-
};
|
|
910
|
-
const genericMemo = memo;
|
|
911
817
|
function useControlledState(initialState, state, setState) {
|
|
912
818
|
const [uncontrolledState, setUncontrolledState] = useState(initialState);
|
|
913
819
|
const handleStateChange = useCallback(
|
|
@@ -924,26 +830,34 @@ function useControlledState(initialState, state, setState) {
|
|
|
924
830
|
}, [state]);
|
|
925
831
|
return [state ?? uncontrolledState, handleStateChange];
|
|
926
832
|
}
|
|
833
|
+
function useFallbackId(id) {
|
|
834
|
+
const fallbackId = useId();
|
|
835
|
+
return id ?? fallbackId;
|
|
836
|
+
}
|
|
837
|
+
const genericMemo = memo;
|
|
927
838
|
function mergeRefs(refs) {
|
|
928
839
|
return (value) => {
|
|
929
|
-
const cleanups = refs.reduce(
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
840
|
+
const cleanups = refs.reduce(
|
|
841
|
+
(cleanups2, ref) => {
|
|
842
|
+
if (typeof ref === "function") {
|
|
843
|
+
const cleanup = ref(value);
|
|
844
|
+
if (typeof cleanup === "function") {
|
|
845
|
+
cleanups2.push(cleanup);
|
|
846
|
+
} else {
|
|
847
|
+
cleanups2.push(() => {
|
|
848
|
+
ref(null);
|
|
849
|
+
});
|
|
850
|
+
}
|
|
851
|
+
} else if (ref != null) {
|
|
852
|
+
ref.current = value;
|
|
935
853
|
cleanups2.push(() => {
|
|
936
|
-
ref
|
|
854
|
+
ref.current = null;
|
|
937
855
|
});
|
|
938
856
|
}
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
});
|
|
944
|
-
}
|
|
945
|
-
return cleanups2;
|
|
946
|
-
}, []);
|
|
857
|
+
return cleanups2;
|
|
858
|
+
},
|
|
859
|
+
[]
|
|
860
|
+
);
|
|
947
861
|
return () => {
|
|
948
862
|
cleanups.forEach((cleanup) => {
|
|
949
863
|
cleanup();
|
|
@@ -954,6 +868,21 @@ function mergeRefs(refs) {
|
|
|
954
868
|
const stopPropagation = (e) => {
|
|
955
869
|
e.stopPropagation();
|
|
956
870
|
};
|
|
871
|
+
function getSelectedState(selected) {
|
|
872
|
+
return selected ? "selected" : "unselected";
|
|
873
|
+
}
|
|
874
|
+
function getCheckedState(checked) {
|
|
875
|
+
return checked === true ? "checked" : checked === false ? "unchecked" : "indeterminate";
|
|
876
|
+
}
|
|
877
|
+
function getActiveState(active) {
|
|
878
|
+
return active ? "active" : "inactive";
|
|
879
|
+
}
|
|
880
|
+
function getBooleanState(value) {
|
|
881
|
+
return value ? "true" : "false";
|
|
882
|
+
}
|
|
883
|
+
function getOpenState(open) {
|
|
884
|
+
return open ? "open" : "closed";
|
|
885
|
+
}
|
|
957
886
|
const MultiSelectProvider = genericMemo(function MultiSelectProvider2(props) {
|
|
958
887
|
const { children, defaultValues, values: controlledValues, onValuesChange } = props;
|
|
959
888
|
const [itemValueMapping, setItemValueMapping] = useState(/* @__PURE__ */ new Set());
|
|
@@ -1036,8 +965,8 @@ const CheckboxGroupItem = memo((props) => {
|
|
|
1036
965
|
ref,
|
|
1037
966
|
className,
|
|
1038
967
|
value,
|
|
1039
|
-
accentColor,
|
|
1040
968
|
disabled,
|
|
969
|
+
accentColor = groupContext.accentColor,
|
|
1041
970
|
variant = groupContext.variant,
|
|
1042
971
|
size: size2 = groupContext.size,
|
|
1043
972
|
radius = groupContext.radius,
|
|
@@ -1074,9 +1003,6 @@ const CheckboxGroupItemIndicator = memo((props) => {
|
|
|
1074
1003
|
return /* @__PURE__ */ jsx(RadixCheckbox.Indicator, { className: cx("flex items-center justify-center", className), ref, ...rest });
|
|
1075
1004
|
});
|
|
1076
1005
|
CheckboxGroupItemIndicator.displayName = "CheckboxGroupItemIndicator";
|
|
1077
|
-
function getBooleanState$1(value) {
|
|
1078
|
-
return value ? "true" : "false";
|
|
1079
|
-
}
|
|
1080
1006
|
const CheckboxGroupRoot = memo((props) => {
|
|
1081
1007
|
const providerContext = useProvider();
|
|
1082
1008
|
const {
|
|
@@ -1099,20 +1025,22 @@ const CheckboxGroupRoot = memo((props) => {
|
|
|
1099
1025
|
name,
|
|
1100
1026
|
required,
|
|
1101
1027
|
disabled,
|
|
1028
|
+
// style props
|
|
1029
|
+
accentColor,
|
|
1102
1030
|
size: size2,
|
|
1103
1031
|
variant,
|
|
1104
1032
|
radius
|
|
1105
1033
|
}),
|
|
1106
|
-
[disabled, name, radius, required, size2, variant]
|
|
1034
|
+
[accentColor, disabled, name, radius, required, size2, variant]
|
|
1107
1035
|
);
|
|
1108
1036
|
return /* @__PURE__ */ jsx(
|
|
1109
1037
|
"div",
|
|
1110
1038
|
{
|
|
1111
1039
|
ref,
|
|
1112
1040
|
role: "group",
|
|
1113
|
-
"data-disabled": getBooleanState
|
|
1041
|
+
"data-disabled": getBooleanState(!!disabled),
|
|
1114
1042
|
"data-accent-color": accentColor,
|
|
1115
|
-
"aria-disabled": getBooleanState
|
|
1043
|
+
"aria-disabled": getBooleanState(!!disabled),
|
|
1116
1044
|
...rest,
|
|
1117
1045
|
children: /* @__PURE__ */ jsx(CheckboxGroupContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
1118
1046
|
MultiSelectProvider,
|
|
@@ -1132,8 +1060,8 @@ const CheckboxGroupSelectAllItem = memo((props) => {
|
|
|
1132
1060
|
const {
|
|
1133
1061
|
ref,
|
|
1134
1062
|
className,
|
|
1135
|
-
accentColor,
|
|
1136
1063
|
disabled,
|
|
1064
|
+
accentColor = groupContext.accentColor,
|
|
1137
1065
|
variant = groupContext.variant,
|
|
1138
1066
|
size: size2 = groupContext.size,
|
|
1139
1067
|
radius = groupContext.radius,
|
|
@@ -1164,137 +1092,39 @@ const CheckboxGroup = {
|
|
|
1164
1092
|
SelectAllItem: CheckboxGroupSelectAllItem,
|
|
1165
1093
|
ItemIndicator: CheckboxGroupItemIndicator
|
|
1166
1094
|
};
|
|
1167
|
-
const
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
}
|
|
1173
|
-
const CollapsibleNode = genericMemo(function(props) {
|
|
1174
|
-
const { meta, nodes, level = 0, disabled } = props;
|
|
1175
|
-
const [controlledOpenState, setControlledOpenState] = useState(false);
|
|
1176
|
-
const {
|
|
1177
|
-
nodeRenderer,
|
|
1178
|
-
disabled: disabledFromContext,
|
|
1179
|
-
onNodeOpen,
|
|
1180
|
-
onNodeClose,
|
|
1181
|
-
onNodeClick,
|
|
1182
|
-
nodeStyles,
|
|
1183
|
-
nodeClassName
|
|
1184
|
-
} = useCollapsibleTreeContext();
|
|
1185
|
-
const isDisabled = disabled ?? disabledFromContext;
|
|
1186
|
-
const handleClick = useCallback(() => {
|
|
1187
|
-
if (onNodeClick) onNodeClick(meta);
|
|
1188
|
-
}, [meta, onNodeClick]);
|
|
1189
|
-
const toggleOpenState = useCallback(() => {
|
|
1190
|
-
setControlledOpenState(!controlledOpenState);
|
|
1191
|
-
if (!controlledOpenState && onNodeOpen) onNodeOpen(meta);
|
|
1192
|
-
if (controlledOpenState && onNodeClose) onNodeClose(meta);
|
|
1193
|
-
}, [meta, onNodeClose, onNodeOpen, controlledOpenState]);
|
|
1194
|
-
const { children, style, className } = useMemo(() => {
|
|
1195
|
-
return nodeRenderer({
|
|
1196
|
-
meta,
|
|
1197
|
-
toggleOpen: toggleOpenState,
|
|
1198
|
-
open: controlledOpenState,
|
|
1199
|
-
disabled: isDisabled
|
|
1200
|
-
});
|
|
1201
|
-
}, [isDisabled, meta, nodeRenderer, toggleOpenState, controlledOpenState]);
|
|
1202
|
-
const combinedStyles = useMemo(
|
|
1203
|
-
() => ({
|
|
1204
|
-
// want node specific styles to overwrite and global node styles
|
|
1205
|
-
...nodeStyles,
|
|
1206
|
-
...style
|
|
1207
|
-
}),
|
|
1208
|
-
[nodeStyles, style]
|
|
1209
|
-
);
|
|
1210
|
-
return /* @__PURE__ */ jsx(RadixPrimitiveCollapsible.Root, { asChild: true, open: controlledOpenState, disabled: isDisabled, children: /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col", children: [
|
|
1211
|
-
/* @__PURE__ */ jsx(
|
|
1212
|
-
"div",
|
|
1213
|
-
{
|
|
1214
|
-
onClick: handleClick,
|
|
1215
|
-
className: cx(nodeClassName, "flex w-full shrink-0 items-center", className),
|
|
1216
|
-
style: combinedStyles,
|
|
1217
|
-
"data-state": controlledOpenState ? "open" : "closed",
|
|
1218
|
-
"data-disabled": isDisabled,
|
|
1219
|
-
children
|
|
1220
|
-
}
|
|
1221
|
-
),
|
|
1222
|
-
nodes && nodes.length > 0 && /* @__PURE__ */ jsx(RadixPrimitiveCollapsible.Content, { asChild: true, children: /* @__PURE__ */ jsx("div", { className: "flex h-max w-full flex-col pl-2", children: nodes.map((treeNodeProps, index) => /* @__PURE__ */ jsx(
|
|
1223
|
-
CollapsibleNode,
|
|
1224
|
-
{
|
|
1225
|
-
level: level + 1,
|
|
1226
|
-
...treeNodeProps
|
|
1227
|
-
},
|
|
1228
|
-
`${level},${index}`
|
|
1229
|
-
)) }) })
|
|
1230
|
-
] }) });
|
|
1231
|
-
});
|
|
1232
|
-
const CollapsibleTree = genericMemo(function(props) {
|
|
1233
|
-
const {
|
|
1234
|
-
nodes,
|
|
1235
|
-
disabled = false,
|
|
1236
|
-
nodeClassName,
|
|
1237
|
-
nodeStyles,
|
|
1238
|
-
onNodeClick,
|
|
1239
|
-
onNodeClose,
|
|
1240
|
-
onNodeOpen,
|
|
1241
|
-
nodeRenderer,
|
|
1242
|
-
...rest
|
|
1243
|
-
} = props;
|
|
1244
|
-
return /* @__PURE__ */ jsx(
|
|
1245
|
-
CollapsibleTreeContext.Provider,
|
|
1246
|
-
{
|
|
1247
|
-
value: {
|
|
1248
|
-
nodeRenderer,
|
|
1249
|
-
nodeClassName,
|
|
1250
|
-
nodeStyles,
|
|
1251
|
-
disabled,
|
|
1252
|
-
onNodeClick,
|
|
1253
|
-
onNodeClose,
|
|
1254
|
-
onNodeOpen
|
|
1255
|
-
},
|
|
1256
|
-
children: /* @__PURE__ */ jsx("div", { className: "flex h-max w-full flex-col", ...rest, children: nodes.map((treeNodeProps, index) => /* @__PURE__ */ jsx(CollapsibleNode, { ...treeNodeProps }, `${0},${index}`)) })
|
|
1257
|
-
}
|
|
1258
|
-
);
|
|
1259
|
-
});
|
|
1260
|
-
const CommandMenuContext = createContext({});
|
|
1261
|
-
const SelectedIndicatorContext$1 = createContext(false);
|
|
1262
|
-
const CheckboxIndicatorContext = createContext(false);
|
|
1263
|
-
const CommandMenuPageContext = createContext({});
|
|
1264
|
-
const CommandMenuDialogContext = createContext({});
|
|
1265
|
-
function getSelectedState$1(selected) {
|
|
1266
|
-
return selected ? "selected" : "unselected";
|
|
1267
|
-
}
|
|
1268
|
-
function getCheckedState$1(checked) {
|
|
1269
|
-
return checked === true ? "checked" : checked === false ? "unchecked" : "indeterminate";
|
|
1270
|
-
}
|
|
1271
|
-
function getActiveState(active) {
|
|
1272
|
-
return active ? "active" : "inactive";
|
|
1273
|
-
}
|
|
1274
|
-
const CommandMenuCheckboxIndicator = memo((props) => {
|
|
1275
|
-
const { ref, className, children, ...rest } = props;
|
|
1276
|
-
const checkedState = use(CheckboxIndicatorContext);
|
|
1277
|
-
const computedChildren = useMemo(() => {
|
|
1278
|
-
return typeof children === "function" ? children(checkedState) : children;
|
|
1279
|
-
}, [checkedState, children]);
|
|
1095
|
+
const CheckedIndicatorContext = createContext({});
|
|
1096
|
+
const CheckedIndicator = memo((props) => {
|
|
1097
|
+
const { children, ref, className, ...rest } = props;
|
|
1098
|
+
const checked = useContext(CheckedIndicatorContext);
|
|
1099
|
+
const computedChildren = typeof children === "function" ? children(checked) : children;
|
|
1280
1100
|
return /* @__PURE__ */ jsx(
|
|
1281
1101
|
"span",
|
|
1282
1102
|
{
|
|
1283
1103
|
ref,
|
|
1284
|
-
"data-state": getCheckedState$1(checkedState),
|
|
1285
1104
|
className: cx(
|
|
1286
|
-
"
|
|
1105
|
+
"flex size-max items-center",
|
|
1287
1106
|
{
|
|
1288
|
-
invisible:
|
|
1107
|
+
invisible: checked === false
|
|
1289
1108
|
},
|
|
1290
1109
|
className
|
|
1291
1110
|
),
|
|
1111
|
+
"data-state": getCheckedState(checked),
|
|
1292
1112
|
...rest,
|
|
1293
1113
|
children: computedChildren
|
|
1294
1114
|
}
|
|
1295
1115
|
);
|
|
1296
1116
|
});
|
|
1117
|
+
CheckedIndicator.displayName = "CheckedIndicator";
|
|
1118
|
+
const CommandMenuCheckboxIndicator = memo((props) => {
|
|
1119
|
+
const { ref, children, ...rest } = props;
|
|
1120
|
+
return /* @__PURE__ */ jsx(CheckedIndicator, { ref, ...rest, children });
|
|
1121
|
+
});
|
|
1297
1122
|
CommandMenuCheckboxIndicator.displayName = "CommandMenuCheckboxIndicator";
|
|
1123
|
+
const CommandMenuContext = createContext({});
|
|
1124
|
+
const SelectedIndicatorContext$1 = createContext(false);
|
|
1125
|
+
const CheckboxIndicatorContext = createContext(false);
|
|
1126
|
+
const CommandMenuPageContext = createContext({});
|
|
1127
|
+
const CommandMenuDialogContext = createContext({});
|
|
1298
1128
|
const commandMenuContentCva = cva(
|
|
1299
1129
|
[
|
|
1300
1130
|
"ring",
|
|
@@ -1531,7 +1361,7 @@ const CommandMenuCheckboxItem = memo((props) => {
|
|
|
1531
1361
|
onSelect == null ? void 0 : onSelect();
|
|
1532
1362
|
onCheckedChange(checked !== true);
|
|
1533
1363
|
}, [checked, onCheckedChange, onSelect]);
|
|
1534
|
-
return /* @__PURE__ */ jsx(CheckboxIndicatorContext, { value: checked, children: /* @__PURE__ */ jsx(CommandMenuItem, { ref, onSelect: handleSelect, "data-state": getCheckedState
|
|
1364
|
+
return /* @__PURE__ */ jsx(CheckboxIndicatorContext, { value: checked, children: /* @__PURE__ */ jsx(CommandMenuItem, { ref, onSelect: handleSelect, "data-state": getCheckedState(checked), ...rest, children }) });
|
|
1535
1365
|
});
|
|
1536
1366
|
CommandMenuCheckboxItem.displayName = "CommandMenuCheckboxItem";
|
|
1537
1367
|
const CommandMenuContent = memo((props) => {
|
|
@@ -1558,9 +1388,10 @@ const CommandMenuContent = memo((props) => {
|
|
|
1558
1388
|
return {
|
|
1559
1389
|
variant,
|
|
1560
1390
|
size: size2,
|
|
1561
|
-
radius
|
|
1391
|
+
radius,
|
|
1392
|
+
accentColor
|
|
1562
1393
|
};
|
|
1563
|
-
}, [radius, size2, variant]);
|
|
1394
|
+
}, [accentColor, radius, size2, variant]);
|
|
1564
1395
|
return /* @__PURE__ */ jsx(DialogPortal, { children: /* @__PURE__ */ jsx(
|
|
1565
1396
|
DialogContent$1,
|
|
1566
1397
|
{
|
|
@@ -1647,7 +1478,7 @@ const CommandMenuMultiSelectItem = genericMemo(function(props) {
|
|
|
1647
1478
|
{
|
|
1648
1479
|
ref,
|
|
1649
1480
|
onSelect: handleSelect,
|
|
1650
|
-
"data-state": getSelectedState
|
|
1481
|
+
"data-state": getSelectedState(isSelected),
|
|
1651
1482
|
"aria-selected": isSelected,
|
|
1652
1483
|
closeOnSelect,
|
|
1653
1484
|
...rest,
|
|
@@ -1721,7 +1552,7 @@ const CommandMenuRadioItem = genericMemo(function(props) {
|
|
|
1721
1552
|
selectValue(value);
|
|
1722
1553
|
}, [onSelect, selectValue, value]);
|
|
1723
1554
|
const isSelected = selected(value);
|
|
1724
|
-
return /* @__PURE__ */ jsx(SelectedIndicatorContext$1, { value: isSelected, children: /* @__PURE__ */ jsx(CommandMenuItem, { ref, onSelect: handleSelect, "data-state": getSelectedState
|
|
1555
|
+
return /* @__PURE__ */ jsx(SelectedIndicatorContext$1, { value: isSelected, children: /* @__PURE__ */ jsx(CommandMenuItem, { ref, onSelect: handleSelect, "data-state": getSelectedState(isSelected), ...rest, children }) });
|
|
1725
1556
|
});
|
|
1726
1557
|
const CommandMenuRoot = memo((props) => {
|
|
1727
1558
|
const { children, defaultOpen, open: controlledOpen, onOpenChange, modal } = props;
|
|
@@ -1749,35 +1580,39 @@ const CommandMenuSelectAllItem = genericMemo(function(props) {
|
|
|
1749
1580
|
ref,
|
|
1750
1581
|
role: "menuitemcheckbox",
|
|
1751
1582
|
onSelect: handleSelect,
|
|
1752
|
-
"data-state": getCheckedState
|
|
1583
|
+
"data-state": getCheckedState(selectedState),
|
|
1753
1584
|
closeOnSelect,
|
|
1754
1585
|
...rest
|
|
1755
1586
|
}
|
|
1756
1587
|
) });
|
|
1757
1588
|
});
|
|
1758
|
-
const
|
|
1759
|
-
|
|
1760
|
-
const
|
|
1761
|
-
const
|
|
1762
|
-
|
|
1763
|
-
}, [isSelected, children]);
|
|
1589
|
+
const SelectedIndicatorContext = createContext(false);
|
|
1590
|
+
const SelectedIndicator = memo((props) => {
|
|
1591
|
+
const { ref, children, className, ...rest } = props;
|
|
1592
|
+
const isSelected = use(SelectedIndicatorContext);
|
|
1593
|
+
const computedChildren = typeof children === "function" ? children(isSelected) : children;
|
|
1764
1594
|
return /* @__PURE__ */ jsx(
|
|
1765
1595
|
"span",
|
|
1766
1596
|
{
|
|
1767
1597
|
ref,
|
|
1768
|
-
"data-state": getSelectedState$1(isSelected),
|
|
1769
1598
|
className: cx(
|
|
1770
|
-
"
|
|
1599
|
+
"flex size-max items-center",
|
|
1771
1600
|
{
|
|
1772
1601
|
invisible: !isSelected
|
|
1773
1602
|
},
|
|
1774
1603
|
className
|
|
1775
1604
|
),
|
|
1605
|
+
"data-state": getSelectedState(isSelected),
|
|
1776
1606
|
...rest,
|
|
1777
1607
|
children: computedChildren
|
|
1778
1608
|
}
|
|
1779
1609
|
);
|
|
1780
1610
|
});
|
|
1611
|
+
SelectedIndicator.displayName = "SelectedIndicator";
|
|
1612
|
+
const CommandMenuSelectedIndicator = memo((props) => {
|
|
1613
|
+
const { ref, children, ...rest } = props;
|
|
1614
|
+
return /* @__PURE__ */ jsx(SelectedIndicator, { ref, ...rest, children });
|
|
1615
|
+
});
|
|
1781
1616
|
CommandMenuSelectedIndicator.displayName = "CommandMenuSelectedIndicator";
|
|
1782
1617
|
const CommandMenuSeparator = memo((props) => {
|
|
1783
1618
|
const { className, ref, spacing = false, ...rest } = props;
|
|
@@ -2254,7 +2089,7 @@ const HoverCard = {
|
|
|
2254
2089
|
Root: RadixHoverCard.Root,
|
|
2255
2090
|
Trigger: RadixHoverCard.Trigger
|
|
2256
2091
|
};
|
|
2257
|
-
const HoverUtility = memo(
|
|
2092
|
+
const HoverUtility = memo(({ children, forceHover }) => {
|
|
2258
2093
|
const [isHovered, setIsHovered] = useState(false);
|
|
2259
2094
|
const handlePointerEnter = useCallback(() => {
|
|
2260
2095
|
setIsHovered(true);
|
|
@@ -2268,6 +2103,7 @@ const HoverUtility = memo(function Root({ children, forceHover }) {
|
|
|
2268
2103
|
onPointerLeave: handlePointerLeave
|
|
2269
2104
|
});
|
|
2270
2105
|
});
|
|
2106
|
+
HoverUtility.displayName = "HoverUtility";
|
|
2271
2107
|
const InputContext = createContext({});
|
|
2272
2108
|
const inputRoot$1 = cva(
|
|
2273
2109
|
[
|
|
@@ -2746,40 +2582,6 @@ const LayoutSlideOutOverlay = memo((props) => {
|
|
|
2746
2582
|
return showOverlay && /* @__PURE__ */ jsx("div", { className: cx("overmap-layout-overlay", "fixed inset-0", className), ref, ...rest, children });
|
|
2747
2583
|
});
|
|
2748
2584
|
LayoutSlideOutOverlay.displayName = "SlideOutOverlay";
|
|
2749
|
-
const MENU_OVERFLOW_PADDING = 20;
|
|
2750
|
-
const MENU_CONTENT_PADDING = 8;
|
|
2751
|
-
const MENU_MINIMUM_MAX_HEIGHT = 250;
|
|
2752
|
-
const computeOffsets = (side, alignment) => {
|
|
2753
|
-
switch (side) {
|
|
2754
|
-
case "right":
|
|
2755
|
-
if (alignment === "start") {
|
|
2756
|
-
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: -MENU_CONTENT_PADDING };
|
|
2757
|
-
} else if (alignment === "end") {
|
|
2758
|
-
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: MENU_CONTENT_PADDING };
|
|
2759
|
-
}
|
|
2760
|
-
break;
|
|
2761
|
-
case "left":
|
|
2762
|
-
if (alignment === "start") {
|
|
2763
|
-
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: -MENU_CONTENT_PADDING };
|
|
2764
|
-
} else if (alignment === "end") {
|
|
2765
|
-
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: MENU_CONTENT_PADDING };
|
|
2766
|
-
}
|
|
2767
|
-
break;
|
|
2768
|
-
}
|
|
2769
|
-
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: 0 };
|
|
2770
|
-
};
|
|
2771
|
-
function getSelectedState(selected) {
|
|
2772
|
-
return selected ? "selected" : "unselected";
|
|
2773
|
-
}
|
|
2774
|
-
function getCheckedState(checked) {
|
|
2775
|
-
return checked === true ? "checked" : checked === false ? "unchecked" : "indeterminate";
|
|
2776
|
-
}
|
|
2777
|
-
function getBooleanState(value) {
|
|
2778
|
-
return value ? "true" : "false";
|
|
2779
|
-
}
|
|
2780
|
-
function getOpenState(open) {
|
|
2781
|
-
return open ? "open" : "closed";
|
|
2782
|
-
}
|
|
2783
2585
|
function nextStateBasedOnType(open, type) {
|
|
2784
2586
|
switch (type) {
|
|
2785
2587
|
case "toggle":
|
|
@@ -2875,28 +2677,6 @@ const Link = memo((props) => {
|
|
|
2875
2677
|
);
|
|
2876
2678
|
});
|
|
2877
2679
|
Link.displayName = "Link";
|
|
2878
|
-
const CheckedIndicatorContext = createContext({});
|
|
2879
|
-
const CheckedIndicator = (props) => {
|
|
2880
|
-
const { children, ref, className, ...rest } = props;
|
|
2881
|
-
const checked = useContext(CheckedIndicatorContext);
|
|
2882
|
-
const computedChildren = typeof children === "function" ? children(checked === "indeterminate") : children;
|
|
2883
|
-
return /* @__PURE__ */ jsx(
|
|
2884
|
-
"span",
|
|
2885
|
-
{
|
|
2886
|
-
ref,
|
|
2887
|
-
className: cx(
|
|
2888
|
-
"flex size-max items-center",
|
|
2889
|
-
{
|
|
2890
|
-
invisible: checked === false
|
|
2891
|
-
},
|
|
2892
|
-
className
|
|
2893
|
-
),
|
|
2894
|
-
"data-state": getCheckedState$1(checked),
|
|
2895
|
-
...rest,
|
|
2896
|
-
children: computedChildren
|
|
2897
|
-
}
|
|
2898
|
-
);
|
|
2899
|
-
};
|
|
2900
2680
|
const menuItem = cva(
|
|
2901
2681
|
[
|
|
2902
2682
|
"select-none",
|
|
@@ -3042,100 +2822,115 @@ const inputRoot = cva(
|
|
|
3042
2822
|
}
|
|
3043
2823
|
}
|
|
3044
2824
|
);
|
|
2825
|
+
const MenuContentContext = createContext({});
|
|
3045
2826
|
const MenuContext = createContext({});
|
|
3046
|
-
const
|
|
3047
|
-
const
|
|
3048
|
-
const
|
|
2827
|
+
const SubContext = createContext({});
|
|
2828
|
+
const TRIGGER_SELECT_KEYS = ["Enter", " "];
|
|
2829
|
+
const MenuItem = memo((props) => {
|
|
2830
|
+
const rootMenuContext = use(MenuContext);
|
|
2831
|
+
const { getItemProps, activeIndex, setOpen, size: size2, variant, radius } = use(MenuContentContext);
|
|
2832
|
+
const { closeRoot } = use(SubContext);
|
|
3049
2833
|
const {
|
|
2834
|
+
ref: forwardedRef,
|
|
2835
|
+
className,
|
|
3050
2836
|
children,
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
open: controlledOpen,
|
|
3058
|
-
onOpenChange,
|
|
3059
|
-
defaultOpen
|
|
2837
|
+
onSelect,
|
|
2838
|
+
onClick,
|
|
2839
|
+
onKeyDown,
|
|
2840
|
+
closeOnSelect = true,
|
|
2841
|
+
disabled = false,
|
|
2842
|
+
...rest
|
|
3060
2843
|
} = props;
|
|
3061
|
-
const
|
|
3062
|
-
const [
|
|
3063
|
-
const
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
});
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
{
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
|
|
3117
|
-
|
|
3118
|
-
|
|
3119
|
-
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
2844
|
+
const { ref, index } = useListItem();
|
|
2845
|
+
const mergeRefs2 = useMergeRefs([ref, forwardedRef]);
|
|
2846
|
+
const handleClick = useCallback(
|
|
2847
|
+
(e) => {
|
|
2848
|
+
e.stopPropagation();
|
|
2849
|
+
if (disabled) return;
|
|
2850
|
+
onClick == null ? void 0 : onClick(e);
|
|
2851
|
+
onSelect == null ? void 0 : onSelect();
|
|
2852
|
+
if (closeOnSelect) setOpen(false);
|
|
2853
|
+
if (closeRoot) rootMenuContext.setOpen(false);
|
|
2854
|
+
},
|
|
2855
|
+
[closeOnSelect, closeRoot, disabled, rootMenuContext, onClick, onSelect, setOpen]
|
|
2856
|
+
);
|
|
2857
|
+
const handleKeyDown = useCallback(
|
|
2858
|
+
(e) => {
|
|
2859
|
+
if (disabled) return;
|
|
2860
|
+
onKeyDown == null ? void 0 : onKeyDown(e);
|
|
2861
|
+
if (TRIGGER_SELECT_KEYS.includes(e.key)) {
|
|
2862
|
+
onSelect == null ? void 0 : onSelect();
|
|
2863
|
+
if (closeOnSelect) setOpen(false);
|
|
2864
|
+
}
|
|
2865
|
+
},
|
|
2866
|
+
[closeOnSelect, disabled, onKeyDown, onSelect, setOpen]
|
|
2867
|
+
);
|
|
2868
|
+
const isActive = useMemo(() => index === activeIndex, [activeIndex, index]);
|
|
2869
|
+
const computedChildren = useMemo(() => {
|
|
2870
|
+
return typeof children === "function" ? children({ active: isActive, selected: false }) : children;
|
|
2871
|
+
}, [children, isActive]);
|
|
2872
|
+
return /* @__PURE__ */ jsx(
|
|
2873
|
+
"li",
|
|
2874
|
+
{
|
|
2875
|
+
className: cx(menuItem({ size: size2, variant }), radiusCva({ radius, maxLarge: true }), className),
|
|
2876
|
+
ref: mergeRefs2,
|
|
2877
|
+
role: "menuitem",
|
|
2878
|
+
"data-disabled": getBooleanState(disabled),
|
|
2879
|
+
"aria-disabled": disabled,
|
|
2880
|
+
"data-highlighted": isActive ? "" : void 0,
|
|
2881
|
+
...getItemProps({
|
|
2882
|
+
onClick: handleClick,
|
|
2883
|
+
onKeyDown: handleKeyDown,
|
|
2884
|
+
tabIndex: isActive ? 0 : -1,
|
|
2885
|
+
...rest
|
|
2886
|
+
}),
|
|
2887
|
+
children: computedChildren
|
|
2888
|
+
}
|
|
2889
|
+
);
|
|
2890
|
+
});
|
|
2891
|
+
MenuItem.displayName = "MenuItem";
|
|
2892
|
+
const MenuCheckboxItem = memo((props) => {
|
|
2893
|
+
const { ref, checked, onCheckedChange, onSelect, ...rest } = props;
|
|
2894
|
+
const handleSelect = useCallback(() => {
|
|
2895
|
+
onSelect == null ? void 0 : onSelect();
|
|
2896
|
+
switch (checked) {
|
|
2897
|
+
case true:
|
|
2898
|
+
onCheckedChange(false);
|
|
2899
|
+
break;
|
|
2900
|
+
case "indeterminate":
|
|
2901
|
+
case false:
|
|
2902
|
+
onCheckedChange(true);
|
|
2903
|
+
break;
|
|
2904
|
+
}
|
|
2905
|
+
}, [checked, onCheckedChange, onSelect]);
|
|
2906
|
+
return /* @__PURE__ */ jsx(CheckedIndicatorContext.Provider, { value: checked, children: /* @__PURE__ */ jsx(MenuItem, { ref, onSelect: handleSelect, ...rest }) });
|
|
2907
|
+
});
|
|
2908
|
+
MenuCheckboxItem.displayName = "MenuCheckboxItem";
|
|
2909
|
+
const MenuCheckboxItemIndicator = memo((props) => {
|
|
2910
|
+
const { ref, children, ...rest } = props;
|
|
2911
|
+
return /* @__PURE__ */ jsx(CheckedIndicator, { ref, ...rest, children });
|
|
2912
|
+
});
|
|
2913
|
+
MenuCheckboxItemIndicator.displayName = "MenuCheckboxItemIndicator";
|
|
2914
|
+
const MenuClickTrigger = memo((props) => {
|
|
2915
|
+
const { ref: forwardedRef, children, disabled = false } = props;
|
|
2916
|
+
const { getReferenceProps, refs, setTriggerType, open } = use(MenuContext);
|
|
2917
|
+
const mergedRefs = useMergeRefs([refs.setReference, forwardedRef]);
|
|
2918
|
+
useEffect(() => {
|
|
2919
|
+
setTriggerType("click");
|
|
2920
|
+
}, [setTriggerType]);
|
|
2921
|
+
return /* @__PURE__ */ jsx(
|
|
2922
|
+
Slot,
|
|
2923
|
+
{
|
|
2924
|
+
ref: mergedRefs,
|
|
2925
|
+
"aria-disabled": disabled,
|
|
2926
|
+
"data-disabled": getBooleanState(disabled),
|
|
2927
|
+
"data-state": getOpenState(open),
|
|
2928
|
+
...getReferenceProps({ disabled }),
|
|
3132
2929
|
children
|
|
3133
2930
|
}
|
|
3134
|
-
)
|
|
2931
|
+
);
|
|
3135
2932
|
});
|
|
3136
|
-
|
|
3137
|
-
const MenuContentContext = createContext({});
|
|
3138
|
-
const useMenuContentContext = () => useContext(MenuContentContext);
|
|
2933
|
+
MenuClickTrigger.displayName = "MenuClickTrigger";
|
|
3139
2934
|
const MenuContent = memo((props) => {
|
|
3140
2935
|
var _a;
|
|
3141
2936
|
const providerContext = useProvider();
|
|
@@ -3164,7 +2959,7 @@ const MenuContent = memo((props) => {
|
|
|
3164
2959
|
floatingStyles,
|
|
3165
2960
|
modal,
|
|
3166
2961
|
side
|
|
3167
|
-
} =
|
|
2962
|
+
} = use(MenuContext);
|
|
3168
2963
|
const computedFloatingStyles = useMemo(() => {
|
|
3169
2964
|
var _a2;
|
|
3170
2965
|
return {
|
|
@@ -3236,254 +3031,48 @@ const MenuContent = memo((props) => {
|
|
|
3236
3031
|
) }) });
|
|
3237
3032
|
});
|
|
3238
3033
|
MenuContent.displayName = "Menu.Content";
|
|
3239
|
-
const
|
|
3240
|
-
const
|
|
3241
|
-
const
|
|
3242
|
-
const {
|
|
3243
|
-
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3034
|
+
const MenuContextTrigger = memo((props) => {
|
|
3035
|
+
const { ref: forwardedRef, children, disabled = false } = props;
|
|
3036
|
+
const ref = useRef(null);
|
|
3037
|
+
const { setOpen, refs, setTriggerType, open } = use(MenuContext);
|
|
3038
|
+
const mergedRefs = useMergeRefs([forwardedRef, ref]);
|
|
3039
|
+
useEffect(() => {
|
|
3040
|
+
setTriggerType("context");
|
|
3041
|
+
}, [setTriggerType]);
|
|
3042
|
+
const handleContextMenu = useCallback(
|
|
3043
|
+
(e) => {
|
|
3044
|
+
const { clientY, clientX } = e;
|
|
3045
|
+
if (!disabled && ref.current) {
|
|
3046
|
+
e.preventDefault();
|
|
3047
|
+
refs.setPositionReference({
|
|
3048
|
+
getBoundingClientRect() {
|
|
3049
|
+
return {
|
|
3050
|
+
x: clientX,
|
|
3051
|
+
y: clientY,
|
|
3052
|
+
top: clientY,
|
|
3053
|
+
left: clientX,
|
|
3054
|
+
height: 0,
|
|
3055
|
+
width: 0,
|
|
3056
|
+
bottom: clientY,
|
|
3057
|
+
right: clientX
|
|
3058
|
+
};
|
|
3059
|
+
},
|
|
3060
|
+
contextElement: ref.current
|
|
3061
|
+
});
|
|
3062
|
+
setOpen(true);
|
|
3063
|
+
}
|
|
3264
3064
|
},
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
offset({ ...computeOffsets(side, align) }),
|
|
3268
|
-
size({
|
|
3269
|
-
padding: MENU_OVERFLOW_PADDING,
|
|
3270
|
-
apply({ availableHeight, elements }) {
|
|
3271
|
-
elements.floating.style.setProperty(
|
|
3272
|
-
"--overmap-menu-available-height",
|
|
3273
|
-
`${Math.max(availableHeight, MENU_MINIMUM_MAX_HEIGHT)}px`
|
|
3274
|
-
);
|
|
3275
|
-
}
|
|
3276
|
-
}),
|
|
3277
|
-
flip(),
|
|
3278
|
-
shift({ padding: MENU_OVERFLOW_PADDING }),
|
|
3279
|
-
hide()
|
|
3280
|
-
]
|
|
3281
|
-
});
|
|
3282
|
-
const dismiss = useDismiss(context, {
|
|
3283
|
-
bubbles: closeRoot,
|
|
3284
|
-
outsidePress: closeRoot
|
|
3285
|
-
});
|
|
3286
|
-
const hover = useHover(context, {
|
|
3287
|
-
restMs: 50,
|
|
3288
|
-
handleClose: safePolygon({
|
|
3289
|
-
blockPointerEvents: true,
|
|
3290
|
-
requireIntent: false
|
|
3291
|
-
}),
|
|
3292
|
-
enabled: !disabled
|
|
3293
|
-
});
|
|
3294
|
-
const click = useClick(context, {
|
|
3295
|
-
enabled: !disabled
|
|
3296
|
-
});
|
|
3297
|
-
const elementsRef = useRef([]);
|
|
3298
|
-
const [activeIndex, setActiveIndex] = useState(null);
|
|
3299
|
-
const listNavigation = useListNavigation(context, {
|
|
3300
|
-
listRef: elementsRef,
|
|
3301
|
-
nested: true,
|
|
3302
|
-
activeIndex,
|
|
3303
|
-
onNavigate: setActiveIndex,
|
|
3304
|
-
loop,
|
|
3305
|
-
rtl: side === "left"
|
|
3306
|
-
});
|
|
3307
|
-
const { getFloatingProps, getItemProps, getReferenceProps } = useInteractions([
|
|
3308
|
-
listNavigation,
|
|
3309
|
-
dismiss,
|
|
3310
|
-
hover,
|
|
3311
|
-
click
|
|
3312
|
-
]);
|
|
3065
|
+
[disabled, refs, setOpen]
|
|
3066
|
+
);
|
|
3313
3067
|
return /* @__PURE__ */ jsx(
|
|
3314
|
-
|
|
3068
|
+
Slot,
|
|
3315
3069
|
{
|
|
3316
|
-
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
context,
|
|
3323
|
-
elementsRef,
|
|
3324
|
-
activeIndex,
|
|
3325
|
-
setActiveIndex,
|
|
3326
|
-
getFloatingProps,
|
|
3327
|
-
getItemProps,
|
|
3328
|
-
getReferenceProps,
|
|
3329
|
-
disabled,
|
|
3330
|
-
side,
|
|
3331
|
-
closeRoot,
|
|
3332
|
-
modal
|
|
3333
|
-
},
|
|
3334
|
-
children
|
|
3335
|
-
}
|
|
3336
|
-
);
|
|
3337
|
-
});
|
|
3338
|
-
MenuSub.displayName = "SubMenu";
|
|
3339
|
-
const TRIGGER_SELECT_KEYS = ["Enter", " "];
|
|
3340
|
-
const MenuItem = memo((props) => {
|
|
3341
|
-
const rootMenuContext = useMenuContext();
|
|
3342
|
-
const { getItemProps, activeIndex, setOpen, size: size2, variant, radius } = useMenuContentContext();
|
|
3343
|
-
const { closeRoot } = useSubContext();
|
|
3344
|
-
const {
|
|
3345
|
-
ref: forwardedRef,
|
|
3346
|
-
className,
|
|
3347
|
-
children,
|
|
3348
|
-
onSelect,
|
|
3349
|
-
onClick,
|
|
3350
|
-
onKeyDown,
|
|
3351
|
-
closeOnSelect = true,
|
|
3352
|
-
disabled = false,
|
|
3353
|
-
...rest
|
|
3354
|
-
} = props;
|
|
3355
|
-
const { ref, index } = useListItem();
|
|
3356
|
-
const mergeRefs2 = useMergeRefs([ref, forwardedRef]);
|
|
3357
|
-
const handleClick = useCallback(
|
|
3358
|
-
(e) => {
|
|
3359
|
-
e.stopPropagation();
|
|
3360
|
-
if (disabled) return;
|
|
3361
|
-
onClick == null ? void 0 : onClick(e);
|
|
3362
|
-
onSelect == null ? void 0 : onSelect();
|
|
3363
|
-
if (closeOnSelect) setOpen(false);
|
|
3364
|
-
if (closeRoot) rootMenuContext.setOpen(false);
|
|
3365
|
-
},
|
|
3366
|
-
[closeOnSelect, closeRoot, disabled, rootMenuContext, onClick, onSelect, setOpen]
|
|
3367
|
-
);
|
|
3368
|
-
const handleKeyDown = useCallback(
|
|
3369
|
-
(e) => {
|
|
3370
|
-
if (disabled) return;
|
|
3371
|
-
onKeyDown == null ? void 0 : onKeyDown(e);
|
|
3372
|
-
if (TRIGGER_SELECT_KEYS.includes(e.key)) {
|
|
3373
|
-
onSelect == null ? void 0 : onSelect();
|
|
3374
|
-
if (closeOnSelect) setOpen(false);
|
|
3375
|
-
}
|
|
3376
|
-
},
|
|
3377
|
-
[closeOnSelect, disabled, onKeyDown, onSelect, setOpen]
|
|
3378
|
-
);
|
|
3379
|
-
const isActive = useMemo(() => index === activeIndex, [activeIndex, index]);
|
|
3380
|
-
const computedChildren = useMemo(() => {
|
|
3381
|
-
return typeof children === "function" ? children({ active: isActive, selected: false }) : children;
|
|
3382
|
-
}, [children, isActive]);
|
|
3383
|
-
return /* @__PURE__ */ jsx(
|
|
3384
|
-
"li",
|
|
3385
|
-
{
|
|
3386
|
-
className: cx(menuItem({ size: size2, variant }), radiusCva({ radius, maxLarge: true }), className),
|
|
3387
|
-
ref: mergeRefs2,
|
|
3388
|
-
role: "menuitem",
|
|
3389
|
-
"data-disabled": getBooleanState(disabled),
|
|
3390
|
-
"aria-disabled": disabled,
|
|
3391
|
-
"data-highlighted": isActive ? "" : void 0,
|
|
3392
|
-
...getItemProps({
|
|
3393
|
-
onClick: handleClick,
|
|
3394
|
-
onKeyDown: handleKeyDown,
|
|
3395
|
-
tabIndex: isActive ? 0 : -1,
|
|
3396
|
-
...rest
|
|
3397
|
-
}),
|
|
3398
|
-
children: computedChildren
|
|
3399
|
-
}
|
|
3400
|
-
);
|
|
3401
|
-
});
|
|
3402
|
-
MenuItem.displayName = "MenuItem";
|
|
3403
|
-
const MenuCheckboxItem = memo((props) => {
|
|
3404
|
-
const { ref, checked, onCheckedChange, onSelect, ...rest } = props;
|
|
3405
|
-
const handleSelect = useCallback(() => {
|
|
3406
|
-
onSelect == null ? void 0 : onSelect();
|
|
3407
|
-
switch (checked) {
|
|
3408
|
-
case true:
|
|
3409
|
-
onCheckedChange(false);
|
|
3410
|
-
break;
|
|
3411
|
-
case "indeterminate":
|
|
3412
|
-
case false:
|
|
3413
|
-
onCheckedChange(true);
|
|
3414
|
-
break;
|
|
3415
|
-
}
|
|
3416
|
-
}, [checked, onCheckedChange, onSelect]);
|
|
3417
|
-
return /* @__PURE__ */ jsx(CheckedIndicatorContext.Provider, { value: checked, children: /* @__PURE__ */ jsx(MenuItem, { ref, onSelect: handleSelect, ...rest }) });
|
|
3418
|
-
});
|
|
3419
|
-
MenuCheckboxItem.displayName = "MenuCheckboxItem";
|
|
3420
|
-
const MenuCheckboxItemIndicator = memo((props) => {
|
|
3421
|
-
const { ref, children, ...rest } = props;
|
|
3422
|
-
return /* @__PURE__ */ jsx(CheckedIndicator, { ref, ...rest, children });
|
|
3423
|
-
});
|
|
3424
|
-
MenuCheckboxItemIndicator.displayName = "MenuCheckboxItemIndicator";
|
|
3425
|
-
const MenuClickTrigger = memo((props) => {
|
|
3426
|
-
const { ref: forwardedRef, children, disabled = false } = props;
|
|
3427
|
-
const { getReferenceProps, refs, setTriggerType, open } = useMenuContext();
|
|
3428
|
-
const mergedRefs = useMergeRefs([refs.setReference, forwardedRef]);
|
|
3429
|
-
useEffect(() => {
|
|
3430
|
-
setTriggerType("click");
|
|
3431
|
-
}, [setTriggerType]);
|
|
3432
|
-
return /* @__PURE__ */ jsx(
|
|
3433
|
-
Slot,
|
|
3434
|
-
{
|
|
3435
|
-
ref: mergedRefs,
|
|
3436
|
-
"aria-disabled": disabled,
|
|
3437
|
-
"data-disabled": getBooleanState(disabled),
|
|
3438
|
-
"data-state": getOpenState(open),
|
|
3439
|
-
...getReferenceProps({ disabled }),
|
|
3440
|
-
children
|
|
3441
|
-
}
|
|
3442
|
-
);
|
|
3443
|
-
});
|
|
3444
|
-
MenuClickTrigger.displayName = "MenuClickTrigger";
|
|
3445
|
-
const MenuContextTrigger = memo((props) => {
|
|
3446
|
-
const { ref: forwardedRef, children, disabled = false } = props;
|
|
3447
|
-
const ref = useRef(null);
|
|
3448
|
-
const { setOpen, refs, setTriggerType, open } = useMenuContext();
|
|
3449
|
-
const mergedRefs = useMergeRefs([forwardedRef, ref]);
|
|
3450
|
-
useEffect(() => {
|
|
3451
|
-
setTriggerType("context");
|
|
3452
|
-
}, [setTriggerType]);
|
|
3453
|
-
const handleContextMenu = useCallback(
|
|
3454
|
-
(e) => {
|
|
3455
|
-
const { clientY, clientX } = e;
|
|
3456
|
-
if (!disabled && ref.current) {
|
|
3457
|
-
e.preventDefault();
|
|
3458
|
-
refs.setPositionReference({
|
|
3459
|
-
getBoundingClientRect() {
|
|
3460
|
-
return {
|
|
3461
|
-
x: clientX,
|
|
3462
|
-
y: clientY,
|
|
3463
|
-
top: clientY,
|
|
3464
|
-
left: clientX,
|
|
3465
|
-
height: 0,
|
|
3466
|
-
width: 0,
|
|
3467
|
-
bottom: clientY,
|
|
3468
|
-
right: clientX
|
|
3469
|
-
};
|
|
3470
|
-
},
|
|
3471
|
-
contextElement: ref.current
|
|
3472
|
-
});
|
|
3473
|
-
setOpen(true);
|
|
3474
|
-
}
|
|
3475
|
-
},
|
|
3476
|
-
[disabled, refs, setOpen]
|
|
3477
|
-
);
|
|
3478
|
-
return /* @__PURE__ */ jsx(
|
|
3479
|
-
Slot,
|
|
3480
|
-
{
|
|
3481
|
-
ref: mergedRefs,
|
|
3482
|
-
style: { WebkitTouchCallout: disabled ? "none" : "unset" },
|
|
3483
|
-
"aria-disabled": disabled,
|
|
3484
|
-
"data-disabled": getBooleanState(disabled),
|
|
3485
|
-
"data-state": getOpenState(open),
|
|
3486
|
-
onContextMenu: handleContextMenu,
|
|
3070
|
+
ref: mergedRefs,
|
|
3071
|
+
style: { WebkitTouchCallout: disabled ? "none" : "unset" },
|
|
3072
|
+
"aria-disabled": disabled,
|
|
3073
|
+
"data-disabled": getBooleanState(disabled),
|
|
3074
|
+
"data-state": getOpenState(open),
|
|
3075
|
+
onContextMenu: handleContextMenu,
|
|
3487
3076
|
children
|
|
3488
3077
|
}
|
|
3489
3078
|
);
|
|
@@ -3496,7 +3085,7 @@ const MenuGroup = memo((props) => {
|
|
|
3496
3085
|
MenuGroup.displayName = "MenuGroup";
|
|
3497
3086
|
const MenuInputField = memo((props) => {
|
|
3498
3087
|
const { ref: forwardedRef, className, onValueChange, onChange, disabled = false, ...rest } = props;
|
|
3499
|
-
const { activeIndex, getItemProps } =
|
|
3088
|
+
const { activeIndex, getItemProps } = use(MenuContentContext);
|
|
3500
3089
|
const { index, ref } = useListItem();
|
|
3501
3090
|
const mergedRefs = useMergeRefs([ref, forwardedRef]);
|
|
3502
3091
|
const handleChange = useCallback(
|
|
@@ -3529,7 +3118,7 @@ const MenuInputField = memo((props) => {
|
|
|
3529
3118
|
MenuInputField.displayName = "MenuInputField";
|
|
3530
3119
|
const MenuInputRoot = memo((props) => {
|
|
3531
3120
|
const { ref, className, ...rest } = props;
|
|
3532
|
-
const { size: size2 } =
|
|
3121
|
+
const { size: size2 } = use(MenuContentContext);
|
|
3533
3122
|
return /* @__PURE__ */ jsx("div", { className: cx(inputRoot({ size: size2 }), className), ref, ...rest });
|
|
3534
3123
|
});
|
|
3535
3124
|
MenuInputRoot.displayName = "MenuInputRoot";
|
|
@@ -3540,7 +3129,7 @@ const MenuInputSlot = memo((props) => {
|
|
|
3540
3129
|
MenuInputSlot.displayName = "MenuInputSlot";
|
|
3541
3130
|
const MenuLabel = memo((props) => {
|
|
3542
3131
|
const { ref, className, ...rest } = props;
|
|
3543
|
-
const { size: size2 } =
|
|
3132
|
+
const { size: size2 } = use(MenuContentContext);
|
|
3544
3133
|
return /* @__PURE__ */ jsx("div", { ref, className: cx(menuLabelCva({ size: size2 }), className), ...rest });
|
|
3545
3134
|
});
|
|
3546
3135
|
MenuLabel.displayName = "MenuLabel";
|
|
@@ -3548,29 +3137,6 @@ const MenuMultiSelectGroup = genericMemo(function MenuMultiSelectGroup2(props) {
|
|
|
3548
3137
|
const { ref, children, defaultValues, values, onValuesChange, ...rest } = props;
|
|
3549
3138
|
return /* @__PURE__ */ jsx(MenuGroup, { ref, ...rest, children: /* @__PURE__ */ jsx(MultiSelectProvider, { defaultValues, values, onValuesChange, children }) });
|
|
3550
3139
|
});
|
|
3551
|
-
const SelectedIndicatorContext = createContext(false);
|
|
3552
|
-
const useSelectedIndicatorContext = () => useContext(SelectedIndicatorContext);
|
|
3553
|
-
const MenuSelectedIndicator = memo((props) => {
|
|
3554
|
-
const { ref, children, className, ...rest } = props;
|
|
3555
|
-
const isSelected = useSelectedIndicatorContext();
|
|
3556
|
-
return /* @__PURE__ */ jsx(
|
|
3557
|
-
"span",
|
|
3558
|
-
{
|
|
3559
|
-
ref,
|
|
3560
|
-
className: cx(
|
|
3561
|
-
"flex size-max items-center",
|
|
3562
|
-
{
|
|
3563
|
-
invisible: !isSelected
|
|
3564
|
-
},
|
|
3565
|
-
className
|
|
3566
|
-
),
|
|
3567
|
-
"data-state": getSelectedState(isSelected),
|
|
3568
|
-
...rest,
|
|
3569
|
-
children
|
|
3570
|
-
}
|
|
3571
|
-
);
|
|
3572
|
-
});
|
|
3573
|
-
MenuSelectedIndicator.displayName = "SelectedIndicator";
|
|
3574
3140
|
const MenuMultiSelectItem = genericMemo(function(props) {
|
|
3575
3141
|
const { ref, onSelect, children, closeOnSelect = false, value, ...rest } = props;
|
|
3576
3142
|
const { selected, selectValue, registerValue } = use(MultiSelectContext);
|
|
@@ -3599,7 +3165,12 @@ const MenuMultiSelectItem = genericMemo(function(props) {
|
|
|
3599
3165
|
) });
|
|
3600
3166
|
});
|
|
3601
3167
|
const PagesContext = createContext({});
|
|
3602
|
-
const
|
|
3168
|
+
const MenuPageContent = memo((props) => {
|
|
3169
|
+
const { page, children } = props;
|
|
3170
|
+
const { activePage } = use(PagesContext);
|
|
3171
|
+
return activePage === page ? children : null;
|
|
3172
|
+
});
|
|
3173
|
+
MenuPageContent.displayName = "PageContent";
|
|
3603
3174
|
const MenuPages = memo((props) => {
|
|
3604
3175
|
const { children, defaultPage, page, onPageChange } = props;
|
|
3605
3176
|
const [activePage, setActivePage] = useControlledState(defaultPage ?? "", page, onPageChange);
|
|
@@ -3607,16 +3178,10 @@ const MenuPages = memo((props) => {
|
|
|
3607
3178
|
return /* @__PURE__ */ jsx(PagesContext.Provider, { value: contextValue, children });
|
|
3608
3179
|
});
|
|
3609
3180
|
MenuPages.displayName = "MenuPages";
|
|
3610
|
-
const MenuPageContent = (props) => {
|
|
3611
|
-
const { page, children } = props;
|
|
3612
|
-
const { activePage } = usePagesContext();
|
|
3613
|
-
return activePage === page ? children : null;
|
|
3614
|
-
};
|
|
3615
|
-
MenuPageContent.displayName = "PageContent";
|
|
3616
3181
|
const MenuPageTrigger = memo((props) => {
|
|
3617
3182
|
const { ref, onSelect, page, ...rest } = props;
|
|
3618
|
-
const { refs, setActiveIndex } =
|
|
3619
|
-
const { setActivePage } =
|
|
3183
|
+
const { refs, setActiveIndex } = use(MenuContentContext);
|
|
3184
|
+
const { setActivePage } = use(PagesContext);
|
|
3620
3185
|
const handleSelect = useCallback(() => {
|
|
3621
3186
|
var _a;
|
|
3622
3187
|
onSelect == null ? void 0 : onSelect();
|
|
@@ -3627,6 +3192,100 @@ const MenuPageTrigger = memo((props) => {
|
|
|
3627
3192
|
return /* @__PURE__ */ jsx(MenuItem, { ref, onSelect: handleSelect, closeOnSelect: false, ...rest });
|
|
3628
3193
|
});
|
|
3629
3194
|
MenuPageTrigger.displayName = "MenuPageTrigger";
|
|
3195
|
+
const MENU_OVERFLOW_PADDING = 20;
|
|
3196
|
+
const MENU_CONTENT_PADDING = 8;
|
|
3197
|
+
const MENU_MINIMUM_MAX_HEIGHT = 250;
|
|
3198
|
+
const DEFAULT_OFFSET = 5;
|
|
3199
|
+
const MenuRoot = memo((props) => {
|
|
3200
|
+
const {
|
|
3201
|
+
children,
|
|
3202
|
+
side = "bottom",
|
|
3203
|
+
align = "center",
|
|
3204
|
+
offset: offset$1,
|
|
3205
|
+
loop = false,
|
|
3206
|
+
modal = false,
|
|
3207
|
+
// open state related props
|
|
3208
|
+
open: controlledOpen,
|
|
3209
|
+
onOpenChange,
|
|
3210
|
+
defaultOpen
|
|
3211
|
+
} = props;
|
|
3212
|
+
const [open, setOpen] = useControlledState(defaultOpen ?? false, controlledOpen, onOpenChange);
|
|
3213
|
+
const [activeIndex, setActiveIndex] = useState(null);
|
|
3214
|
+
const [triggerType, setTriggerType] = useState(null);
|
|
3215
|
+
const elementsRef = useRef([]);
|
|
3216
|
+
const nodeId = useFloatingNodeId();
|
|
3217
|
+
const { refs, floatingStyles, context, middlewareData } = useFloating({
|
|
3218
|
+
nodeId,
|
|
3219
|
+
strategy: "fixed",
|
|
3220
|
+
// TODO: probably some way with template string types to not need the "as Placement"
|
|
3221
|
+
placement: side + (align !== "center" ? "-" + align : ""),
|
|
3222
|
+
whileElementsMounted: autoUpdate,
|
|
3223
|
+
open,
|
|
3224
|
+
onOpenChange: setOpen,
|
|
3225
|
+
middleware: [
|
|
3226
|
+
offset({ mainAxis: offset$1 ?? DEFAULT_OFFSET }),
|
|
3227
|
+
size({
|
|
3228
|
+
apply({ availableHeight, elements }) {
|
|
3229
|
+
elements.floating.style.setProperty(
|
|
3230
|
+
"--overmap-menu-available-height",
|
|
3231
|
+
`${Math.max(availableHeight, MENU_MINIMUM_MAX_HEIGHT)}px`
|
|
3232
|
+
);
|
|
3233
|
+
},
|
|
3234
|
+
padding: MENU_OVERFLOW_PADDING
|
|
3235
|
+
}),
|
|
3236
|
+
flip({ fallbackStrategy: "initialPlacement" }),
|
|
3237
|
+
shift({ padding: MENU_OVERFLOW_PADDING }),
|
|
3238
|
+
hide()
|
|
3239
|
+
]
|
|
3240
|
+
});
|
|
3241
|
+
const role = useRole(context, {
|
|
3242
|
+
role: "menu"
|
|
3243
|
+
});
|
|
3244
|
+
const dismiss = useDismiss(context, {
|
|
3245
|
+
capture: true,
|
|
3246
|
+
ancestorScroll: triggerType === "context" || triggerType === "virtual"
|
|
3247
|
+
});
|
|
3248
|
+
const click = useClick(context, {
|
|
3249
|
+
enabled: triggerType === "click"
|
|
3250
|
+
});
|
|
3251
|
+
const listNavigation = useListNavigation(context, {
|
|
3252
|
+
listRef: elementsRef,
|
|
3253
|
+
activeIndex,
|
|
3254
|
+
onNavigate: setActiveIndex,
|
|
3255
|
+
loop
|
|
3256
|
+
});
|
|
3257
|
+
const { getFloatingProps, getItemProps, getReferenceProps } = useInteractions([
|
|
3258
|
+
dismiss,
|
|
3259
|
+
listNavigation,
|
|
3260
|
+
click,
|
|
3261
|
+
role
|
|
3262
|
+
]);
|
|
3263
|
+
return /* @__PURE__ */ jsx(FloatingTree, { children: /* @__PURE__ */ jsx(
|
|
3264
|
+
MenuContext.Provider,
|
|
3265
|
+
{
|
|
3266
|
+
value: {
|
|
3267
|
+
open,
|
|
3268
|
+
setOpen,
|
|
3269
|
+
refs,
|
|
3270
|
+
context,
|
|
3271
|
+
floatingStyles,
|
|
3272
|
+
elementsRef,
|
|
3273
|
+
getFloatingProps,
|
|
3274
|
+
getItemProps,
|
|
3275
|
+
getReferenceProps,
|
|
3276
|
+
nodeId,
|
|
3277
|
+
activeIndex,
|
|
3278
|
+
setActiveIndex,
|
|
3279
|
+
middlewareData,
|
|
3280
|
+
side,
|
|
3281
|
+
modal,
|
|
3282
|
+
setTriggerType
|
|
3283
|
+
},
|
|
3284
|
+
children
|
|
3285
|
+
}
|
|
3286
|
+
) });
|
|
3287
|
+
});
|
|
3288
|
+
MenuRoot.displayName = "Root";
|
|
3630
3289
|
const MenuScroll = memo((props) => {
|
|
3631
3290
|
const { ref, className, ...rest } = props;
|
|
3632
3291
|
return /* @__PURE__ */ jsx(
|
|
@@ -3656,18 +3315,821 @@ const MenuSelectAllItem = genericMemo((props) => {
|
|
|
3656
3315
|
return /* @__PURE__ */ jsx(CheckedIndicatorContext, { value: selectedState, children: /* @__PURE__ */ jsx(
|
|
3657
3316
|
MenuItem,
|
|
3658
3317
|
{
|
|
3659
|
-
onSelect: handleSelect,
|
|
3660
|
-
ref,
|
|
3661
|
-
"data-state": getCheckedState(selectedState),
|
|
3662
|
-
closeOnSelect,
|
|
3318
|
+
onSelect: handleSelect,
|
|
3319
|
+
ref,
|
|
3320
|
+
"data-state": getCheckedState(selectedState),
|
|
3321
|
+
closeOnSelect,
|
|
3322
|
+
...rest,
|
|
3323
|
+
children: computedChildren
|
|
3324
|
+
}
|
|
3325
|
+
) });
|
|
3326
|
+
});
|
|
3327
|
+
const MenuSelectedIndicator = memo((props) => {
|
|
3328
|
+
const { ref, children, ...rest } = props;
|
|
3329
|
+
return /* @__PURE__ */ jsx(SelectedIndicator, { ref, ...rest, children });
|
|
3330
|
+
});
|
|
3331
|
+
MenuSelectedIndicator.displayName = "MenuSelectedIndicator";
|
|
3332
|
+
const MenuSelectGroup = genericMemo(function MenuSelectGroup2(props) {
|
|
3333
|
+
const { ref, children, required, defaultValue, value, onValueChange, ...rest } = props;
|
|
3334
|
+
return /* @__PURE__ */ jsx(MenuGroup, { ref, ...rest, children: required ? /* @__PURE__ */ jsx(SingleSelectRequiredProvider, { defaultValue, value, onValueChange, children }) : /* @__PURE__ */ jsx(
|
|
3335
|
+
SingleSelectNotRequiredProvider,
|
|
3336
|
+
{
|
|
3337
|
+
defaultValue,
|
|
3338
|
+
value,
|
|
3339
|
+
onValueChange,
|
|
3340
|
+
children
|
|
3341
|
+
}
|
|
3342
|
+
) });
|
|
3343
|
+
});
|
|
3344
|
+
const MenuSelectItem = genericMemo(function(props) {
|
|
3345
|
+
const { ref, value, onSelect, children, closeOnSelect = true, ...rest } = props;
|
|
3346
|
+
const { selected, selectValue } = use(SelectContext);
|
|
3347
|
+
const isSelected = selected(value);
|
|
3348
|
+
const handleSelect = useCallback(() => {
|
|
3349
|
+
onSelect == null ? void 0 : onSelect();
|
|
3350
|
+
selectValue(value);
|
|
3351
|
+
}, [onSelect, selectValue, value]);
|
|
3352
|
+
const computedChildren = useMemo(() => {
|
|
3353
|
+
return typeof children === "function" ? ({ active }) => children({ selected: isSelected, active }) : children;
|
|
3354
|
+
}, [children, isSelected]);
|
|
3355
|
+
return /* @__PURE__ */ jsx(SelectedIndicatorContext.Provider, { value: isSelected, children: /* @__PURE__ */ jsx(
|
|
3356
|
+
MenuItem,
|
|
3357
|
+
{
|
|
3358
|
+
ref,
|
|
3359
|
+
role: "menuitemcheckbox",
|
|
3360
|
+
onSelect: handleSelect,
|
|
3361
|
+
closeOnSelect,
|
|
3362
|
+
"data-state": getSelectedState(isSelected),
|
|
3363
|
+
...rest,
|
|
3364
|
+
children: computedChildren
|
|
3365
|
+
}
|
|
3366
|
+
) });
|
|
3367
|
+
});
|
|
3368
|
+
const MenuSeparator = memo((props) => {
|
|
3369
|
+
const { ref, className, ...rest } = props;
|
|
3370
|
+
const { size: size2 } = use(MenuContentContext);
|
|
3371
|
+
return /* @__PURE__ */ jsx(RadixSeparator.Root, { className: cx(menuSeparator({ size: size2 }), className), ref, ...rest });
|
|
3372
|
+
});
|
|
3373
|
+
MenuSeparator.displayName = "MenuSeparator";
|
|
3374
|
+
const computeOffsets = (side, alignment) => {
|
|
3375
|
+
switch (side) {
|
|
3376
|
+
case "right":
|
|
3377
|
+
if (alignment === "start") {
|
|
3378
|
+
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: -MENU_CONTENT_PADDING };
|
|
3379
|
+
} else if (alignment === "end") {
|
|
3380
|
+
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: MENU_CONTENT_PADDING };
|
|
3381
|
+
}
|
|
3382
|
+
break;
|
|
3383
|
+
case "left":
|
|
3384
|
+
if (alignment === "start") {
|
|
3385
|
+
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: -MENU_CONTENT_PADDING };
|
|
3386
|
+
} else if (alignment === "end") {
|
|
3387
|
+
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: MENU_CONTENT_PADDING };
|
|
3388
|
+
}
|
|
3389
|
+
break;
|
|
3390
|
+
}
|
|
3391
|
+
return { mainAxis: MENU_CONTENT_PADDING + 1, crossAxis: 0 };
|
|
3392
|
+
};
|
|
3393
|
+
const MenuSub = memo((props) => {
|
|
3394
|
+
const {
|
|
3395
|
+
children,
|
|
3396
|
+
disabled = false,
|
|
3397
|
+
side = "right",
|
|
3398
|
+
align = "start",
|
|
3399
|
+
closeRoot = false,
|
|
3400
|
+
loop = false,
|
|
3401
|
+
modal = false,
|
|
3402
|
+
// open state related props
|
|
3403
|
+
open: controlledOpen,
|
|
3404
|
+
onOpenChange,
|
|
3405
|
+
defaultOpen
|
|
3406
|
+
} = props;
|
|
3407
|
+
const [open, setOpen] = useControlledState(defaultOpen ?? false, controlledOpen, onOpenChange);
|
|
3408
|
+
const nodeId = useFloatingNodeId();
|
|
3409
|
+
const { refs, floatingStyles, context } = useFloating({
|
|
3410
|
+
nodeId,
|
|
3411
|
+
strategy: "fixed",
|
|
3412
|
+
whileElementsMounted: autoUpdate,
|
|
3413
|
+
open,
|
|
3414
|
+
onOpenChange: (open2, _event, reason) => {
|
|
3415
|
+
if (reason) setOpen(open2);
|
|
3416
|
+
},
|
|
3417
|
+
placement: side + (align !== "center" ? "-" + align : ""),
|
|
3418
|
+
middleware: [
|
|
3419
|
+
offset({ ...computeOffsets(side, align) }),
|
|
3420
|
+
size({
|
|
3421
|
+
padding: MENU_OVERFLOW_PADDING,
|
|
3422
|
+
apply({ availableHeight, elements }) {
|
|
3423
|
+
elements.floating.style.setProperty(
|
|
3424
|
+
"--overmap-menu-available-height",
|
|
3425
|
+
`${Math.max(availableHeight, MENU_MINIMUM_MAX_HEIGHT)}px`
|
|
3426
|
+
);
|
|
3427
|
+
}
|
|
3428
|
+
}),
|
|
3429
|
+
flip(),
|
|
3430
|
+
shift({ padding: MENU_OVERFLOW_PADDING }),
|
|
3431
|
+
hide()
|
|
3432
|
+
]
|
|
3433
|
+
});
|
|
3434
|
+
const dismiss = useDismiss(context, {
|
|
3435
|
+
bubbles: closeRoot,
|
|
3436
|
+
outsidePress: closeRoot
|
|
3437
|
+
});
|
|
3438
|
+
const hover = useHover(context, {
|
|
3439
|
+
restMs: 50,
|
|
3440
|
+
handleClose: safePolygon({
|
|
3441
|
+
blockPointerEvents: true,
|
|
3442
|
+
requireIntent: false
|
|
3443
|
+
}),
|
|
3444
|
+
enabled: !disabled
|
|
3445
|
+
});
|
|
3446
|
+
const click = useClick(context, {
|
|
3447
|
+
enabled: !disabled
|
|
3448
|
+
});
|
|
3449
|
+
const elementsRef = useRef([]);
|
|
3450
|
+
const [activeIndex, setActiveIndex] = useState(null);
|
|
3451
|
+
const listNavigation = useListNavigation(context, {
|
|
3452
|
+
listRef: elementsRef,
|
|
3453
|
+
nested: true,
|
|
3454
|
+
activeIndex,
|
|
3455
|
+
onNavigate: setActiveIndex,
|
|
3456
|
+
loop,
|
|
3457
|
+
rtl: side === "left"
|
|
3458
|
+
});
|
|
3459
|
+
const { getFloatingProps, getItemProps, getReferenceProps } = useInteractions([
|
|
3460
|
+
listNavigation,
|
|
3461
|
+
dismiss,
|
|
3462
|
+
hover,
|
|
3463
|
+
click
|
|
3464
|
+
]);
|
|
3465
|
+
return /* @__PURE__ */ jsx(
|
|
3466
|
+
SubContext.Provider,
|
|
3467
|
+
{
|
|
3468
|
+
value: {
|
|
3469
|
+
open,
|
|
3470
|
+
setOpen,
|
|
3471
|
+
nodeId,
|
|
3472
|
+
refs,
|
|
3473
|
+
floatingStyles,
|
|
3474
|
+
context,
|
|
3475
|
+
elementsRef,
|
|
3476
|
+
activeIndex,
|
|
3477
|
+
setActiveIndex,
|
|
3478
|
+
getFloatingProps,
|
|
3479
|
+
getItemProps,
|
|
3480
|
+
getReferenceProps,
|
|
3481
|
+
disabled,
|
|
3482
|
+
side,
|
|
3483
|
+
closeRoot,
|
|
3484
|
+
modal
|
|
3485
|
+
},
|
|
3486
|
+
children
|
|
3487
|
+
}
|
|
3488
|
+
);
|
|
3489
|
+
});
|
|
3490
|
+
MenuSub.displayName = "SubMenu";
|
|
3491
|
+
const MenuSubContent = memo((props) => {
|
|
3492
|
+
var _a;
|
|
3493
|
+
const { ref: forwardedRef, children, ...rest } = props;
|
|
3494
|
+
const { middlewareData } = use(MenuContext);
|
|
3495
|
+
const { accentColor, radius, variant, size: size2 } = use(MenuContentContext);
|
|
3496
|
+
const {
|
|
3497
|
+
open,
|
|
3498
|
+
nodeId,
|
|
3499
|
+
refs,
|
|
3500
|
+
context,
|
|
3501
|
+
getFloatingProps,
|
|
3502
|
+
getItemProps,
|
|
3503
|
+
activeIndex,
|
|
3504
|
+
setActiveIndex,
|
|
3505
|
+
elementsRef,
|
|
3506
|
+
floatingStyles,
|
|
3507
|
+
setOpen,
|
|
3508
|
+
side
|
|
3509
|
+
} = use(SubContext);
|
|
3510
|
+
const wrapperRef = useRef(null);
|
|
3511
|
+
const mergeRefs2 = useMergeRefs([refs.setFloating, wrapperRef]);
|
|
3512
|
+
const computedFloatingStyles = useMemo(() => {
|
|
3513
|
+
var _a2;
|
|
3514
|
+
return {
|
|
3515
|
+
...floatingStyles,
|
|
3516
|
+
visibility: ((_a2 = middlewareData.hide) == null ? void 0 : _a2.referenceHidden) ? "hidden" : "visible"
|
|
3517
|
+
};
|
|
3518
|
+
}, [floatingStyles, (_a = middlewareData.hide) == null ? void 0 : _a.referenceHidden]);
|
|
3519
|
+
return /* @__PURE__ */ jsx(FloatingNode, { id: nodeId, children: open && /* @__PURE__ */ jsx(FloatingPortal, { children: /* @__PURE__ */ jsx(FloatingFocusManager, { context, initialFocus: wrapperRef, children: /* @__PURE__ */ jsx(FloatingList, { elementsRef, children: /* @__PURE__ */ jsx(
|
|
3520
|
+
MenuContentContext.Provider,
|
|
3521
|
+
{
|
|
3522
|
+
value: {
|
|
3523
|
+
getItemProps,
|
|
3524
|
+
activeIndex,
|
|
3525
|
+
setActiveIndex,
|
|
3526
|
+
elementsRef,
|
|
3527
|
+
open,
|
|
3528
|
+
setOpen,
|
|
3529
|
+
refs,
|
|
3530
|
+
size: size2,
|
|
3531
|
+
radius,
|
|
3532
|
+
accentColor,
|
|
3533
|
+
variant
|
|
3534
|
+
},
|
|
3535
|
+
children: /* @__PURE__ */ jsx(
|
|
3536
|
+
"div",
|
|
3537
|
+
{
|
|
3538
|
+
className: "outline-none",
|
|
3539
|
+
ref: mergeRefs2,
|
|
3540
|
+
style: computedFloatingStyles,
|
|
3541
|
+
...getFloatingProps(),
|
|
3542
|
+
children: /* @__PURE__ */ jsx(
|
|
3543
|
+
"ul",
|
|
3544
|
+
{
|
|
3545
|
+
className: cx(
|
|
3546
|
+
"overmap-menu-sub-content",
|
|
3547
|
+
menuContent({ size: size2 }),
|
|
3548
|
+
floating({ side, shadow: "3" }),
|
|
3549
|
+
radiusCva({ radius, maxLarge: true }),
|
|
3550
|
+
"max-h-(--overmap-menu-available-height)"
|
|
3551
|
+
),
|
|
3552
|
+
ref: forwardedRef,
|
|
3553
|
+
"data-state": getOpenState(open),
|
|
3554
|
+
"data-side": side,
|
|
3555
|
+
"data-accent-color": accentColor,
|
|
3556
|
+
...rest,
|
|
3557
|
+
children
|
|
3558
|
+
}
|
|
3559
|
+
)
|
|
3560
|
+
}
|
|
3561
|
+
)
|
|
3562
|
+
}
|
|
3563
|
+
) }) }) }) });
|
|
3564
|
+
});
|
|
3565
|
+
MenuSubContent.displayName = "MenuSubContent";
|
|
3566
|
+
const MenuSubTrigger = memo((props) => {
|
|
3567
|
+
const { ref: forwardedRef, children, ...rest } = props;
|
|
3568
|
+
const { refs, getReferenceProps, open, disabled } = use(SubContext);
|
|
3569
|
+
const mergedRefs = useMergeRefs([forwardedRef, refs.setReference]);
|
|
3570
|
+
return /* @__PURE__ */ jsx(
|
|
3571
|
+
MenuItem,
|
|
3572
|
+
{
|
|
3573
|
+
ref: mergedRefs,
|
|
3574
|
+
closeOnSelect: false,
|
|
3575
|
+
"aria-haspopup": "menu",
|
|
3576
|
+
"data-state": getOpenState(open),
|
|
3577
|
+
disabled,
|
|
3578
|
+
...getReferenceProps(rest),
|
|
3579
|
+
children
|
|
3580
|
+
}
|
|
3581
|
+
);
|
|
3582
|
+
});
|
|
3583
|
+
MenuSubTrigger.displayName = "MenuSubTrigger";
|
|
3584
|
+
const MenuVirtualTrigger = memo((props) => {
|
|
3585
|
+
const { virtualElement, disabled } = props;
|
|
3586
|
+
const { refs, setTriggerType, setOpen } = use(MenuContext);
|
|
3587
|
+
useEffect(() => {
|
|
3588
|
+
setTriggerType("virtual");
|
|
3589
|
+
}, [setTriggerType]);
|
|
3590
|
+
useEffect(() => {
|
|
3591
|
+
if (!disabled && virtualElement) {
|
|
3592
|
+
refs.setPositionReference(virtualElement);
|
|
3593
|
+
setOpen(true);
|
|
3594
|
+
} else {
|
|
3595
|
+
refs.setPositionReference(null);
|
|
3596
|
+
setOpen(false);
|
|
3597
|
+
}
|
|
3598
|
+
}, [disabled, refs, setOpen, virtualElement]);
|
|
3599
|
+
return null;
|
|
3600
|
+
});
|
|
3601
|
+
MenuVirtualTrigger.displayName = "VirtualTrigger";
|
|
3602
|
+
const Menu = {
|
|
3603
|
+
Root: MenuRoot,
|
|
3604
|
+
Content: MenuContent,
|
|
3605
|
+
// sub
|
|
3606
|
+
Sub: MenuSub,
|
|
3607
|
+
SubContent: MenuSubContent,
|
|
3608
|
+
SubTrigger: MenuSubTrigger,
|
|
3609
|
+
// pages
|
|
3610
|
+
Pages: MenuPages,
|
|
3611
|
+
PageContent: MenuPageContent,
|
|
3612
|
+
PageTrigger: MenuPageTrigger,
|
|
3613
|
+
// triggers
|
|
3614
|
+
ClickTrigger: MenuClickTrigger,
|
|
3615
|
+
ContextTrigger: MenuContextTrigger,
|
|
3616
|
+
VirtualTrigger: MenuVirtualTrigger,
|
|
3617
|
+
// groups
|
|
3618
|
+
Group: MenuGroup,
|
|
3619
|
+
SelectGroup: MenuSelectGroup,
|
|
3620
|
+
MultiSelectGroup: MenuMultiSelectGroup,
|
|
3621
|
+
// items
|
|
3622
|
+
Item: MenuItem,
|
|
3623
|
+
SelectItem: MenuSelectItem,
|
|
3624
|
+
MultiSelectItem: MenuMultiSelectItem,
|
|
3625
|
+
SelectAllItem: MenuSelectAllItem,
|
|
3626
|
+
CheckboxItem: MenuCheckboxItem,
|
|
3627
|
+
// indicators
|
|
3628
|
+
SelectedIndicator: MenuSelectedIndicator,
|
|
3629
|
+
CheckboxItemIndicator: MenuCheckboxItemIndicator,
|
|
3630
|
+
// input
|
|
3631
|
+
InputRoot: MenuInputRoot,
|
|
3632
|
+
InputField: MenuInputField,
|
|
3633
|
+
InputSlot: MenuInputSlot,
|
|
3634
|
+
// others
|
|
3635
|
+
Label: MenuLabel,
|
|
3636
|
+
Separator: MenuSeparator,
|
|
3637
|
+
Scroll: MenuScroll
|
|
3638
|
+
};
|
|
3639
|
+
const KEY_MAPPING = {
|
|
3640
|
+
next: "ArrowDown",
|
|
3641
|
+
prev: "ArrowUp",
|
|
3642
|
+
first: "PageUp",
|
|
3643
|
+
last: "PageDown",
|
|
3644
|
+
selectItem: "Enter"
|
|
3645
|
+
};
|
|
3646
|
+
const ITEM_SELECTOR = "menu-item";
|
|
3647
|
+
const GROUP_SELECTOR = "menu-group";
|
|
3648
|
+
const MenuRootContext = createContext({});
|
|
3649
|
+
const MenuGroupContext = createContext({});
|
|
3650
|
+
const MenuPageContext = createContext({});
|
|
3651
|
+
const menuRootCva = cva(["w-full", "outline-none"], {
|
|
3652
|
+
variants: {
|
|
3653
|
+
size: {
|
|
3654
|
+
xs: ["p-0.5", "text-xs", "min-w-30"],
|
|
3655
|
+
sm: ["p-0.75", "text-sm", "min-w-35"],
|
|
3656
|
+
md: ["p-1", "text-md", "min-w-40"],
|
|
3657
|
+
lg: ["p-1.25", "text-lg", "min-w-45"],
|
|
3658
|
+
xl: ["p-1.5", "text-xl", "min-w-50"]
|
|
3659
|
+
},
|
|
3660
|
+
radius: {
|
|
3661
|
+
none: ["rounded-none"],
|
|
3662
|
+
xs: ["rounded-xs"],
|
|
3663
|
+
sm: ["rounded-sm"],
|
|
3664
|
+
md: ["rounded-md"],
|
|
3665
|
+
lg: ["rounded-lg"],
|
|
3666
|
+
xl: ["rounded-lg"],
|
|
3667
|
+
full: ["rounded-lg"]
|
|
3668
|
+
}
|
|
3669
|
+
}
|
|
3670
|
+
});
|
|
3671
|
+
const menuItemCva = cva(
|
|
3672
|
+
[
|
|
3673
|
+
"select-none",
|
|
3674
|
+
"relative",
|
|
3675
|
+
"flex",
|
|
3676
|
+
"items-center",
|
|
3677
|
+
"outline-none",
|
|
3678
|
+
"data-[disabled=true]:text-(--base-a8)",
|
|
3679
|
+
"data-[disabled=true]:pointer-events-none",
|
|
3680
|
+
"shrink-0",
|
|
3681
|
+
"py-1",
|
|
3682
|
+
"text-(--base-12)"
|
|
3683
|
+
],
|
|
3684
|
+
{
|
|
3685
|
+
variants: {
|
|
3686
|
+
size: {
|
|
3687
|
+
xs: ["gap-1.5", "px-3"],
|
|
3688
|
+
sm: ["gap-1.75", "px-3.5"],
|
|
3689
|
+
md: ["gap-2", "px-4"],
|
|
3690
|
+
lg: ["gap-2.25", "px-4.5"],
|
|
3691
|
+
xl: ["gap-2.5", "px-5"]
|
|
3692
|
+
},
|
|
3693
|
+
variant: {
|
|
3694
|
+
solid: [
|
|
3695
|
+
"data-[active=true]:not-[data-[disabled=true]]:text-(--accent-contrast)",
|
|
3696
|
+
"data-[active=true]:not-[data-[disabled=true]]:bg-(--accent-a9)",
|
|
3697
|
+
"data-[active=true]:not-[data-[disabled=true]]:active:brightness-110"
|
|
3698
|
+
],
|
|
3699
|
+
soft: [
|
|
3700
|
+
"data-[active=true]:not-[data-[disabled=true]]:bg-(--accent-a3)",
|
|
3701
|
+
"data-[active=true]:not-[data-[disabled=true]]:active:bg-(--accent-a4)"
|
|
3702
|
+
]
|
|
3703
|
+
}
|
|
3704
|
+
}
|
|
3705
|
+
}
|
|
3706
|
+
);
|
|
3707
|
+
const menuGroupLabelCva = cva(["text-(--base-a11)", "flex", "items-center", "select-none", "py-1"], {
|
|
3708
|
+
variants: {
|
|
3709
|
+
size: {
|
|
3710
|
+
xs: ["gap-1.5", "px-3", "text-xs"],
|
|
3711
|
+
sm: ["gap-1.75", "px-3.5", "text-xs"],
|
|
3712
|
+
md: ["gap-2", "px-4", "text-sm"],
|
|
3713
|
+
lg: ["gap-2.25", "px-4.5", "text-base"],
|
|
3714
|
+
xl: ["gap-2.5", "px-5", "text-lg"]
|
|
3715
|
+
}
|
|
3716
|
+
}
|
|
3717
|
+
});
|
|
3718
|
+
const menuSeparatorCva = cva(["h-px", "bg-(--base-a6)", "w-auto", "shrink-0"], {
|
|
3719
|
+
variants: {
|
|
3720
|
+
size: {
|
|
3721
|
+
xs: ["-mx-0.5", "my-0.5"],
|
|
3722
|
+
sm: ["-mx-0.75", "my-0.75"],
|
|
3723
|
+
md: ["-mx-1", "my-1"],
|
|
3724
|
+
lg: ["-mx-1.25", "my-1.25"],
|
|
3725
|
+
xl: ["-mx-1.5", "my-1.5"]
|
|
3726
|
+
}
|
|
3727
|
+
}
|
|
3728
|
+
});
|
|
3729
|
+
const MenuV2Item = memo((props) => {
|
|
3730
|
+
const {
|
|
3731
|
+
ref,
|
|
3732
|
+
children,
|
|
3733
|
+
className,
|
|
3734
|
+
disabled = false,
|
|
3735
|
+
onClick,
|
|
3736
|
+
onSelect,
|
|
3737
|
+
onPointerEnter,
|
|
3738
|
+
onPointerLeave,
|
|
3739
|
+
onPointerMove,
|
|
3740
|
+
...rest
|
|
3741
|
+
} = props;
|
|
3742
|
+
const internalRef = useRef(null);
|
|
3743
|
+
const itemId = useId();
|
|
3744
|
+
const { activeItemId, setActiveItemId, size: size2, variant, radius } = use(MenuRootContext);
|
|
3745
|
+
const isActive = itemId === activeItemId;
|
|
3746
|
+
const handleSelect = useCallback(
|
|
3747
|
+
(e) => {
|
|
3748
|
+
onSelect == null ? void 0 : onSelect(e);
|
|
3749
|
+
},
|
|
3750
|
+
[onSelect]
|
|
3751
|
+
);
|
|
3752
|
+
const handleClick = useCallback(
|
|
3753
|
+
(e) => {
|
|
3754
|
+
onClick == null ? void 0 : onClick(e);
|
|
3755
|
+
handleSelect(new Event("menu-select"));
|
|
3756
|
+
},
|
|
3757
|
+
[handleSelect, onClick]
|
|
3758
|
+
);
|
|
3759
|
+
const handlePointerEnter = useCallback(
|
|
3760
|
+
(e) => {
|
|
3761
|
+
onPointerEnter == null ? void 0 : onPointerEnter(e);
|
|
3762
|
+
if (e.defaultPrevented) return;
|
|
3763
|
+
setActiveItemId(itemId);
|
|
3764
|
+
},
|
|
3765
|
+
[onPointerEnter, setActiveItemId, itemId]
|
|
3766
|
+
);
|
|
3767
|
+
const handlePointerLeave = useCallback(
|
|
3768
|
+
(e) => {
|
|
3769
|
+
onPointerLeave == null ? void 0 : onPointerLeave(e);
|
|
3770
|
+
if (e.defaultPrevented) return;
|
|
3771
|
+
setActiveItemId(null);
|
|
3772
|
+
},
|
|
3773
|
+
[onPointerLeave, setActiveItemId]
|
|
3774
|
+
);
|
|
3775
|
+
const handlePointerMove = useCallback(
|
|
3776
|
+
(e) => {
|
|
3777
|
+
onPointerMove == null ? void 0 : onPointerMove(e);
|
|
3778
|
+
if (e.defaultPrevented) return;
|
|
3779
|
+
setActiveItemId(itemId);
|
|
3780
|
+
},
|
|
3781
|
+
[onPointerMove, itemId, setActiveItemId]
|
|
3782
|
+
);
|
|
3783
|
+
useEffect(() => {
|
|
3784
|
+
if (!internalRef.current) return;
|
|
3785
|
+
const element = internalRef.current;
|
|
3786
|
+
element.addEventListener("menu-select", handleSelect);
|
|
3787
|
+
return () => {
|
|
3788
|
+
element.removeEventListener("menu-select", handleSelect);
|
|
3789
|
+
};
|
|
3790
|
+
}, [handleSelect]);
|
|
3791
|
+
return /* @__PURE__ */ jsx(
|
|
3792
|
+
"div",
|
|
3793
|
+
{
|
|
3794
|
+
ref: mergeRefs([ref, internalRef]),
|
|
3795
|
+
className: cx(menuItemCva({ size: size2, variant }), radiusCva({ radius, maxLarge: true }), className),
|
|
3796
|
+
role: "menuitem",
|
|
3797
|
+
onClick: handleClick,
|
|
3798
|
+
onPointerEnter: handlePointerEnter,
|
|
3799
|
+
onPointerLeave: handlePointerLeave,
|
|
3800
|
+
onPointerMove: handlePointerMove,
|
|
3801
|
+
...{ [ITEM_SELECTOR]: itemId },
|
|
3802
|
+
"data-active": getBooleanState(isActive),
|
|
3803
|
+
"data-disabled": getBooleanState(disabled),
|
|
3804
|
+
"aria-disabled": getBooleanState(disabled),
|
|
3805
|
+
...rest,
|
|
3806
|
+
children
|
|
3807
|
+
}
|
|
3808
|
+
);
|
|
3809
|
+
});
|
|
3810
|
+
MenuV2Item.displayName = "MenuItem";
|
|
3811
|
+
const MenuV2CheckboxItem = memo((props) => {
|
|
3812
|
+
const { ref, checked, onCheckedChange, onSelect, ...rest } = props;
|
|
3813
|
+
const handleSelect = useCallback(
|
|
3814
|
+
(e) => {
|
|
3815
|
+
onSelect == null ? void 0 : onSelect(e);
|
|
3816
|
+
if (e.defaultPrevented) return;
|
|
3817
|
+
switch (checked) {
|
|
3818
|
+
case true:
|
|
3819
|
+
onCheckedChange(false);
|
|
3820
|
+
break;
|
|
3821
|
+
case "indeterminate":
|
|
3822
|
+
onCheckedChange(true);
|
|
3823
|
+
break;
|
|
3824
|
+
case false:
|
|
3825
|
+
onCheckedChange(true);
|
|
3826
|
+
break;
|
|
3827
|
+
}
|
|
3828
|
+
},
|
|
3829
|
+
[checked, onCheckedChange, onSelect]
|
|
3830
|
+
);
|
|
3831
|
+
return /* @__PURE__ */ jsx(CheckedIndicatorContext.Provider, { value: checked, children: /* @__PURE__ */ jsx(MenuV2Item, { ref, onSelect: handleSelect, ...rest }) });
|
|
3832
|
+
});
|
|
3833
|
+
MenuV2CheckboxItem.displayName = "MenuCheckboxItem";
|
|
3834
|
+
const MenuV2CheckedIndicator = memo((props) => {
|
|
3835
|
+
const { ref, children, ...rest } = props;
|
|
3836
|
+
return /* @__PURE__ */ jsx(CheckedIndicator, { ref, ...rest, children });
|
|
3837
|
+
});
|
|
3838
|
+
MenuV2CheckedIndicator.displayName = "MenuCheckboxItemIndicator";
|
|
3839
|
+
const MenuV2Group = memo((props) => {
|
|
3840
|
+
const { ref, children, ...rest } = props;
|
|
3841
|
+
const groupId = useId();
|
|
3842
|
+
const [labelId, setLabelId] = useState(null);
|
|
3843
|
+
const contextValue = useMemo(
|
|
3844
|
+
() => ({
|
|
3845
|
+
labelId,
|
|
3846
|
+
setLabelId
|
|
3847
|
+
}),
|
|
3848
|
+
[labelId]
|
|
3849
|
+
);
|
|
3850
|
+
return /* @__PURE__ */ jsx("div", { ref, role: "group", ...{ [GROUP_SELECTOR]: groupId }, "aria-labelledby": labelId ?? void 0, ...rest, children: /* @__PURE__ */ jsx(MenuGroupContext, { value: contextValue, children }) });
|
|
3851
|
+
});
|
|
3852
|
+
MenuV2Group.displayName = "MenuGroup";
|
|
3853
|
+
const MenuV2GroupLabel = memo((props) => {
|
|
3854
|
+
const { ref, children, id, className, ...rest } = props;
|
|
3855
|
+
const labelId = useFallbackId(id);
|
|
3856
|
+
const { size: size2 } = use(MenuRootContext);
|
|
3857
|
+
const { setLabelId } = use(MenuGroupContext);
|
|
3858
|
+
useEffect(() => {
|
|
3859
|
+
setLabelId(labelId);
|
|
3860
|
+
}, [labelId, setLabelId]);
|
|
3861
|
+
return /* @__PURE__ */ jsx("div", { ref, id: labelId, className: cx(menuGroupLabelCva({ size: size2 }), className), ...rest, children });
|
|
3862
|
+
});
|
|
3863
|
+
MenuV2GroupLabel.displayName = "MenuGroupLabel";
|
|
3864
|
+
const MenuV2SelectAllItem = genericMemo((props) => {
|
|
3865
|
+
const { ref, children, onSelect, ...rest } = props;
|
|
3866
|
+
const { allSelected, someSelected, toggleSelectAll } = use(MultiSelectContext);
|
|
3867
|
+
const selectedState = allSelected ? true : someSelected ? "indeterminate" : false;
|
|
3868
|
+
const handleSelect = useCallback(
|
|
3869
|
+
(e) => {
|
|
3870
|
+
onSelect == null ? void 0 : onSelect(e);
|
|
3871
|
+
if (e.defaultPrevented) return;
|
|
3872
|
+
toggleSelectAll();
|
|
3873
|
+
},
|
|
3874
|
+
[onSelect, toggleSelectAll]
|
|
3875
|
+
);
|
|
3876
|
+
return /* @__PURE__ */ jsx(MenuV2Item, { onSelect: handleSelect, ref, "data-state": getCheckedState(selectedState), ...rest, children: /* @__PURE__ */ jsx(CheckedIndicatorContext, { value: selectedState, children }) });
|
|
3877
|
+
});
|
|
3878
|
+
const MenuV2MultiSelectGroup = genericMemo(function MenuMultiSelectGroup3(props) {
|
|
3879
|
+
const { ref, children, defaultValues, values, onValuesChange, ...rest } = props;
|
|
3880
|
+
return /* @__PURE__ */ jsx(MenuV2Group, { ref, ...rest, children: /* @__PURE__ */ jsx(MultiSelectProvider, { defaultValues, values, onValuesChange, children }) });
|
|
3881
|
+
});
|
|
3882
|
+
const MenuV2MultiSelectItem = genericMemo(function(props) {
|
|
3883
|
+
const { ref, onSelect, children, value, ...rest } = props;
|
|
3884
|
+
const { selected, selectValue, registerValue } = use(MultiSelectContext);
|
|
3885
|
+
useLayoutEffect(() => {
|
|
3886
|
+
return registerValue(value);
|
|
3887
|
+
}, [registerValue, value]);
|
|
3888
|
+
const isSelected = selected(value);
|
|
3889
|
+
const handleSelect = useCallback(
|
|
3890
|
+
(e) => {
|
|
3891
|
+
onSelect == null ? void 0 : onSelect(e);
|
|
3892
|
+
if (e.defaultPrevented) return;
|
|
3893
|
+
selectValue(value);
|
|
3894
|
+
},
|
|
3895
|
+
[onSelect, selectValue, value]
|
|
3896
|
+
);
|
|
3897
|
+
return /* @__PURE__ */ jsx(
|
|
3898
|
+
MenuV2Item,
|
|
3899
|
+
{
|
|
3900
|
+
ref,
|
|
3901
|
+
role: "menuitemcheckbox",
|
|
3902
|
+
onSelect: handleSelect,
|
|
3903
|
+
"data-state": getSelectedState(isSelected),
|
|
3904
|
+
...rest,
|
|
3905
|
+
children: /* @__PURE__ */ jsx(SelectedIndicatorContext, { value: isSelected, children })
|
|
3906
|
+
}
|
|
3907
|
+
);
|
|
3908
|
+
});
|
|
3909
|
+
const MenuV2Page = memo((props) => {
|
|
3910
|
+
const { children, ref, page, ...rest } = props;
|
|
3911
|
+
const { page: activePage } = use(MenuPageContext);
|
|
3912
|
+
const isActive = page === activePage;
|
|
3913
|
+
return /* @__PURE__ */ jsx("div", { ref, "data-active": getActiveState(isActive), hidden: !isActive, ...rest, children: isActive ? children : null });
|
|
3914
|
+
});
|
|
3915
|
+
MenuV2Page.displayName = "MenuPage";
|
|
3916
|
+
const MenuV2Pages = memo((props) => {
|
|
3917
|
+
const { children, defaultPage = "", page: controlledPage, onPageChange } = props;
|
|
3918
|
+
const [page, setPage] = useControlledState(defaultPage, controlledPage, onPageChange);
|
|
3919
|
+
const contextValue = useMemo(
|
|
3920
|
+
() => ({
|
|
3921
|
+
page,
|
|
3922
|
+
setPage
|
|
3923
|
+
}),
|
|
3924
|
+
[page, setPage]
|
|
3925
|
+
);
|
|
3926
|
+
return /* @__PURE__ */ jsx(MenuPageContext, { value: contextValue, children });
|
|
3927
|
+
});
|
|
3928
|
+
MenuV2Pages.displayName = "MenuPages";
|
|
3929
|
+
const MenuV2PageTriggerItem = memo((props) => {
|
|
3930
|
+
const { ref, children, page, onSelect, ...rest } = props;
|
|
3931
|
+
const { page: activePage, setPage } = use(MenuPageContext);
|
|
3932
|
+
const isActive = page === activePage;
|
|
3933
|
+
const handleSelect = useCallback(
|
|
3934
|
+
(e) => {
|
|
3935
|
+
onSelect == null ? void 0 : onSelect(e);
|
|
3936
|
+
if (e.defaultPrevented) return;
|
|
3937
|
+
setPage(page);
|
|
3938
|
+
},
|
|
3939
|
+
[onSelect, page, setPage]
|
|
3940
|
+
);
|
|
3941
|
+
return /* @__PURE__ */ jsx(MenuV2Item, { ref, onSelect: handleSelect, "data-state": getActiveState(isActive), ...rest, children: /* @__PURE__ */ jsx(SelectedIndicatorContext, { value: isActive, children }) });
|
|
3942
|
+
});
|
|
3943
|
+
MenuV2PageTriggerItem.displayName = "CommandMenuPageTriggerItem";
|
|
3944
|
+
const computeNextIndex = (index, length, direction, loop) => {
|
|
3945
|
+
switch (direction) {
|
|
3946
|
+
case "next":
|
|
3947
|
+
return index === length - 1 ? loop ? 0 : index : index + 1;
|
|
3948
|
+
case "prev":
|
|
3949
|
+
return index === 0 ? loop ? length - 1 : index : index - 1;
|
|
3950
|
+
}
|
|
3951
|
+
};
|
|
3952
|
+
const MenuV2Root = memo((props) => {
|
|
3953
|
+
const providerContext = useProvider();
|
|
3954
|
+
const {
|
|
3955
|
+
ref,
|
|
3956
|
+
children,
|
|
3957
|
+
className,
|
|
3958
|
+
onKeyDown,
|
|
3959
|
+
loop = false,
|
|
3960
|
+
// style props
|
|
3961
|
+
radius = providerContext.radius,
|
|
3962
|
+
accentColor = "base",
|
|
3963
|
+
size: size2 = "md",
|
|
3964
|
+
variant = "soft",
|
|
3965
|
+
...rest
|
|
3966
|
+
} = props;
|
|
3967
|
+
const internalRef = useRef(null);
|
|
3968
|
+
const [activeItemId, setActiveItemId] = useState(null);
|
|
3969
|
+
const getItems = useCallback((element) => {
|
|
3970
|
+
return Array.from(element.querySelectorAll(`[${ITEM_SELECTOR}]:not([data-disabled=true]`));
|
|
3971
|
+
}, []);
|
|
3972
|
+
const getFirstItem = useCallback(
|
|
3973
|
+
(element) => {
|
|
3974
|
+
return getItems(element).at(0);
|
|
3975
|
+
},
|
|
3976
|
+
[getItems]
|
|
3977
|
+
);
|
|
3978
|
+
const getLastItem = useCallback(
|
|
3979
|
+
(element) => {
|
|
3980
|
+
return getItems(element).at(-1);
|
|
3981
|
+
},
|
|
3982
|
+
[getItems]
|
|
3983
|
+
);
|
|
3984
|
+
const getActiveItem = useCallback(
|
|
3985
|
+
(element) => {
|
|
3986
|
+
return getItems(element).find((itemEle) => itemEle.getAttribute(ITEM_SELECTOR) === activeItemId);
|
|
3987
|
+
},
|
|
3988
|
+
[activeItemId, getItems]
|
|
3989
|
+
);
|
|
3990
|
+
const getNextItem = useCallback(
|
|
3991
|
+
(element, direction) => {
|
|
3992
|
+
const items = getItems(element);
|
|
3993
|
+
const activeItem = getActiveItem(element);
|
|
3994
|
+
const activeItemIndex = items.findIndex((itemEle) => itemEle === activeItem);
|
|
3995
|
+
const nextItemIndex = computeNextIndex(activeItemIndex, items.length, direction, loop);
|
|
3996
|
+
return items[nextItemIndex];
|
|
3997
|
+
},
|
|
3998
|
+
[getActiveItem, getItems, loop]
|
|
3999
|
+
);
|
|
4000
|
+
const getGroups = useCallback(() => {
|
|
4001
|
+
if (!internalRef.current) return [];
|
|
4002
|
+
return Array.from(internalRef.current.querySelectorAll(`[${GROUP_SELECTOR}]`));
|
|
4003
|
+
}, []);
|
|
4004
|
+
const getActiveGroup = useCallback(() => {
|
|
4005
|
+
var _a;
|
|
4006
|
+
return ((_a = getActiveItem(internalRef.current)) == null ? void 0 : _a.closest(`[${GROUP_SELECTOR}]`)) ?? void 0;
|
|
4007
|
+
}, [getActiveItem]);
|
|
4008
|
+
const getNextGroup = useCallback(
|
|
4009
|
+
(direction) => {
|
|
4010
|
+
const groups = getGroups();
|
|
4011
|
+
const activeGroup = getActiveGroup();
|
|
4012
|
+
const activeGroupIndex = groups.findIndex((groupEle) => groupEle === activeGroup);
|
|
4013
|
+
const nextGroupIndex = computeNextIndex(activeGroupIndex, groups.length, direction, loop);
|
|
4014
|
+
return groups[nextGroupIndex];
|
|
4015
|
+
},
|
|
4016
|
+
[getActiveGroup, getGroups, loop]
|
|
4017
|
+
);
|
|
4018
|
+
const getFirstGroup = useCallback(() => {
|
|
4019
|
+
return getGroups().at(0);
|
|
4020
|
+
}, [getGroups]);
|
|
4021
|
+
const getLastGroup = useCallback(() => {
|
|
4022
|
+
return getGroups().at(-1);
|
|
4023
|
+
}, [getGroups]);
|
|
4024
|
+
const handleKeyDown = useCallback(
|
|
4025
|
+
(e) => {
|
|
4026
|
+
onKeyDown == null ? void 0 : onKeyDown(e);
|
|
4027
|
+
if (e.defaultPrevented) return;
|
|
4028
|
+
switch (e.code) {
|
|
4029
|
+
case KEY_MAPPING.selectItem: {
|
|
4030
|
+
const activeItem = getActiveItem(internalRef.current);
|
|
4031
|
+
if (activeItem) activeItem.dispatchEvent(new Event("menu-select"));
|
|
4032
|
+
break;
|
|
4033
|
+
}
|
|
4034
|
+
case KEY_MAPPING.next: {
|
|
4035
|
+
let nextItem;
|
|
4036
|
+
if (e.shiftKey) {
|
|
4037
|
+
const nextGroup = getNextGroup("next");
|
|
4038
|
+
if (!nextGroup) return;
|
|
4039
|
+
nextItem = getFirstItem(nextGroup);
|
|
4040
|
+
} else {
|
|
4041
|
+
nextItem = getNextItem(internalRef.current, "next");
|
|
4042
|
+
}
|
|
4043
|
+
if (!nextItem) return;
|
|
4044
|
+
setActiveItemId(nextItem.getAttribute(ITEM_SELECTOR));
|
|
4045
|
+
break;
|
|
4046
|
+
}
|
|
4047
|
+
case KEY_MAPPING.prev: {
|
|
4048
|
+
let prevItem;
|
|
4049
|
+
if (e.shiftKey) {
|
|
4050
|
+
const prevGroup = getNextGroup("prev");
|
|
4051
|
+
if (!prevGroup) return;
|
|
4052
|
+
prevItem = getFirstItem(prevGroup);
|
|
4053
|
+
} else {
|
|
4054
|
+
prevItem = getNextItem(internalRef.current, "prev");
|
|
4055
|
+
}
|
|
4056
|
+
if (!prevItem) return;
|
|
4057
|
+
setActiveItemId(prevItem.getAttribute(ITEM_SELECTOR));
|
|
4058
|
+
break;
|
|
4059
|
+
}
|
|
4060
|
+
case KEY_MAPPING.first: {
|
|
4061
|
+
let firstItem;
|
|
4062
|
+
if (e.shiftKey) {
|
|
4063
|
+
const firstGroup = getFirstGroup();
|
|
4064
|
+
if (!firstGroup) return;
|
|
4065
|
+
firstItem = getFirstItem(firstGroup);
|
|
4066
|
+
} else {
|
|
4067
|
+
firstItem = getFirstItem(internalRef.current);
|
|
4068
|
+
}
|
|
4069
|
+
if (!firstItem) return;
|
|
4070
|
+
setActiveItemId(firstItem.getAttribute(ITEM_SELECTOR));
|
|
4071
|
+
break;
|
|
4072
|
+
}
|
|
4073
|
+
case KEY_MAPPING.last: {
|
|
4074
|
+
let lastItem;
|
|
4075
|
+
if (e.shiftKey) {
|
|
4076
|
+
const lastGroup = getLastGroup();
|
|
4077
|
+
if (!lastGroup) return;
|
|
4078
|
+
lastItem = getFirstItem(lastGroup);
|
|
4079
|
+
} else {
|
|
4080
|
+
lastItem = getLastItem(internalRef.current);
|
|
4081
|
+
}
|
|
4082
|
+
if (!lastItem) return;
|
|
4083
|
+
setActiveItemId(lastItem.getAttribute(ITEM_SELECTOR));
|
|
4084
|
+
break;
|
|
4085
|
+
}
|
|
4086
|
+
}
|
|
4087
|
+
},
|
|
4088
|
+
[getActiveItem, getFirstGroup, getFirstItem, getLastGroup, getLastItem, getNextGroup, getNextItem, onKeyDown]
|
|
4089
|
+
);
|
|
4090
|
+
useEffect(() => {
|
|
4091
|
+
var _a;
|
|
4092
|
+
const firstItem = getFirstItem(internalRef.current);
|
|
4093
|
+
if (!firstItem) return;
|
|
4094
|
+
(_a = internalRef.current) == null ? void 0 : _a.focus();
|
|
4095
|
+
setActiveItemId(firstItem.getAttribute(ITEM_SELECTOR));
|
|
4096
|
+
}, [getFirstItem]);
|
|
4097
|
+
const contextValue = useMemo(
|
|
4098
|
+
() => ({
|
|
4099
|
+
activeItemId,
|
|
4100
|
+
setActiveItemId,
|
|
4101
|
+
// style props
|
|
4102
|
+
accentColor,
|
|
4103
|
+
radius,
|
|
4104
|
+
variant,
|
|
4105
|
+
size: size2
|
|
4106
|
+
}),
|
|
4107
|
+
[accentColor, activeItemId, radius, size2, variant]
|
|
4108
|
+
);
|
|
4109
|
+
return /* @__PURE__ */ jsx(
|
|
4110
|
+
"div",
|
|
4111
|
+
{
|
|
4112
|
+
ref: mergeRefs([ref, internalRef]),
|
|
4113
|
+
className: cx(menuRootCva({ size: size2 }), radiusCva({ radius, maxLarge: true }), className),
|
|
4114
|
+
role: "menu",
|
|
4115
|
+
onKeyDown: handleKeyDown,
|
|
4116
|
+
tabIndex: 0,
|
|
4117
|
+
"aria-activedescendant": activeItemId ?? void 0,
|
|
4118
|
+
"data-accent-color": accentColor,
|
|
3663
4119
|
...rest,
|
|
3664
|
-
children:
|
|
4120
|
+
children: /* @__PURE__ */ jsx(MenuRootContext, { value: contextValue, children })
|
|
3665
4121
|
}
|
|
3666
|
-
)
|
|
4122
|
+
);
|
|
3667
4123
|
});
|
|
3668
|
-
|
|
4124
|
+
MenuV2Root.displayName = "MenuRoot";
|
|
4125
|
+
const MenuV2SelectedIndicator = memo((props) => {
|
|
4126
|
+
const { ref, children, ...rest } = props;
|
|
4127
|
+
return /* @__PURE__ */ jsx(SelectedIndicator, { ref, ...rest, children });
|
|
4128
|
+
});
|
|
4129
|
+
MenuV2SelectedIndicator.displayName = "MenuCheckboxItemIndicator";
|
|
4130
|
+
const MenuV2SelectGroup = genericMemo(function MenuSelectGroup3(props) {
|
|
3669
4131
|
const { ref, children, required, defaultValue, value, onValueChange, ...rest } = props;
|
|
3670
|
-
return /* @__PURE__ */ jsx(
|
|
4132
|
+
return /* @__PURE__ */ jsx(MenuV2Group, { ref, ...rest, children: required ? /* @__PURE__ */ jsx(SingleSelectRequiredProvider, { defaultValue, value, onValueChange, children }) : /* @__PURE__ */ jsx(
|
|
3671
4133
|
SingleSelectNotRequiredProvider,
|
|
3672
4134
|
{
|
|
3673
4135
|
defaultValue,
|
|
@@ -3677,183 +4139,53 @@ const MenuSelectGroup = genericMemo(function MenuSelectGroup2(props) {
|
|
|
3677
4139
|
}
|
|
3678
4140
|
) });
|
|
3679
4141
|
});
|
|
3680
|
-
const
|
|
3681
|
-
const { ref, value, onSelect, children,
|
|
4142
|
+
const MenuV2SelectItem = genericMemo(function(props) {
|
|
4143
|
+
const { ref, value, onSelect, children, ...rest } = props;
|
|
3682
4144
|
const { selected, selectValue } = use(SelectContext);
|
|
3683
|
-
const isSelected =
|
|
3684
|
-
const handleSelect = useCallback(
|
|
3685
|
-
|
|
3686
|
-
|
|
3687
|
-
|
|
3688
|
-
|
|
3689
|
-
|
|
3690
|
-
|
|
3691
|
-
|
|
3692
|
-
|
|
4145
|
+
const isSelected = selected(value);
|
|
4146
|
+
const handleSelect = useCallback(
|
|
4147
|
+
(e) => {
|
|
4148
|
+
onSelect == null ? void 0 : onSelect(e);
|
|
4149
|
+
if (e.defaultPrevented) return;
|
|
4150
|
+
selectValue(value);
|
|
4151
|
+
},
|
|
4152
|
+
[onSelect, selectValue, value]
|
|
4153
|
+
);
|
|
4154
|
+
return /* @__PURE__ */ jsx(
|
|
4155
|
+
MenuV2Item,
|
|
3693
4156
|
{
|
|
3694
4157
|
ref,
|
|
3695
4158
|
role: "menuitemcheckbox",
|
|
3696
4159
|
onSelect: handleSelect,
|
|
3697
|
-
closeOnSelect,
|
|
3698
4160
|
"data-state": getSelectedState(isSelected),
|
|
3699
4161
|
...rest,
|
|
3700
|
-
children:
|
|
3701
|
-
}
|
|
3702
|
-
) });
|
|
3703
|
-
});
|
|
3704
|
-
const MenuSeparator = memo((props) => {
|
|
3705
|
-
const { ref, className, ...rest } = props;
|
|
3706
|
-
const { size: size2 } = useMenuContentContext();
|
|
3707
|
-
return /* @__PURE__ */ jsx(RadixSeparator.Root, { className: cx(menuSeparator({ size: size2 }), className), ref, ...rest });
|
|
3708
|
-
});
|
|
3709
|
-
MenuSeparator.displayName = "MenuSeparator";
|
|
3710
|
-
const MenuSubContent = memo((props) => {
|
|
3711
|
-
var _a;
|
|
3712
|
-
const { ref: forwardedRef, children, ...rest } = props;
|
|
3713
|
-
const { middlewareData } = useMenuContext();
|
|
3714
|
-
const { accentColor, radius, variant, size: size2 } = useMenuContentContext();
|
|
3715
|
-
const {
|
|
3716
|
-
open,
|
|
3717
|
-
nodeId,
|
|
3718
|
-
refs,
|
|
3719
|
-
context,
|
|
3720
|
-
getFloatingProps,
|
|
3721
|
-
getItemProps,
|
|
3722
|
-
activeIndex,
|
|
3723
|
-
setActiveIndex,
|
|
3724
|
-
elementsRef,
|
|
3725
|
-
floatingStyles,
|
|
3726
|
-
setOpen,
|
|
3727
|
-
side
|
|
3728
|
-
} = useSubContext();
|
|
3729
|
-
const wrapperRef = useRef(null);
|
|
3730
|
-
const mergeRefs2 = useMergeRefs([refs.setFloating, wrapperRef]);
|
|
3731
|
-
const computedFloatingStyles = useMemo(() => {
|
|
3732
|
-
var _a2;
|
|
3733
|
-
return {
|
|
3734
|
-
...floatingStyles,
|
|
3735
|
-
visibility: ((_a2 = middlewareData.hide) == null ? void 0 : _a2.referenceHidden) ? "hidden" : "visible"
|
|
3736
|
-
};
|
|
3737
|
-
}, [floatingStyles, (_a = middlewareData.hide) == null ? void 0 : _a.referenceHidden]);
|
|
3738
|
-
return /* @__PURE__ */ jsx(FloatingNode, { id: nodeId, children: open && /* @__PURE__ */ jsx(FloatingPortal, { children: /* @__PURE__ */ jsx(FloatingFocusManager, { context, initialFocus: wrapperRef, children: /* @__PURE__ */ jsx(FloatingList, { elementsRef, children: /* @__PURE__ */ jsx(
|
|
3739
|
-
MenuContentContext.Provider,
|
|
3740
|
-
{
|
|
3741
|
-
value: {
|
|
3742
|
-
getItemProps,
|
|
3743
|
-
activeIndex,
|
|
3744
|
-
setActiveIndex,
|
|
3745
|
-
elementsRef,
|
|
3746
|
-
open,
|
|
3747
|
-
setOpen,
|
|
3748
|
-
refs,
|
|
3749
|
-
size: size2,
|
|
3750
|
-
radius,
|
|
3751
|
-
accentColor,
|
|
3752
|
-
variant
|
|
3753
|
-
},
|
|
3754
|
-
children: /* @__PURE__ */ jsx(
|
|
3755
|
-
"div",
|
|
3756
|
-
{
|
|
3757
|
-
className: "outline-none",
|
|
3758
|
-
ref: mergeRefs2,
|
|
3759
|
-
style: computedFloatingStyles,
|
|
3760
|
-
...getFloatingProps(),
|
|
3761
|
-
children: /* @__PURE__ */ jsx(
|
|
3762
|
-
"ul",
|
|
3763
|
-
{
|
|
3764
|
-
className: cx(
|
|
3765
|
-
"overmap-menu-sub-content",
|
|
3766
|
-
menuContent({ size: size2 }),
|
|
3767
|
-
floating({ side, shadow: "3" }),
|
|
3768
|
-
radiusCva({ radius, maxLarge: true }),
|
|
3769
|
-
"max-h-(--overmap-menu-available-height)"
|
|
3770
|
-
),
|
|
3771
|
-
ref: forwardedRef,
|
|
3772
|
-
"data-state": getOpenState(open),
|
|
3773
|
-
"data-side": side,
|
|
3774
|
-
"data-accent-color": accentColor,
|
|
3775
|
-
...rest,
|
|
3776
|
-
children
|
|
3777
|
-
}
|
|
3778
|
-
)
|
|
3779
|
-
}
|
|
3780
|
-
)
|
|
3781
|
-
}
|
|
3782
|
-
) }) }) }) });
|
|
3783
|
-
});
|
|
3784
|
-
MenuSubContent.displayName = "MenuSubContent";
|
|
3785
|
-
const MenuSubTrigger = memo((props) => {
|
|
3786
|
-
const { ref: forwardedRef, children, ...rest } = props;
|
|
3787
|
-
const { refs, getReferenceProps, open, disabled } = useSubContext();
|
|
3788
|
-
const mergedRefs = useMergeRefs([forwardedRef, refs.setReference]);
|
|
3789
|
-
return /* @__PURE__ */ jsx(
|
|
3790
|
-
MenuItem,
|
|
3791
|
-
{
|
|
3792
|
-
ref: mergedRefs,
|
|
3793
|
-
closeOnSelect: false,
|
|
3794
|
-
"aria-haspopup": "menu",
|
|
3795
|
-
"data-state": getOpenState(open),
|
|
3796
|
-
disabled,
|
|
3797
|
-
...getReferenceProps(rest),
|
|
3798
|
-
children
|
|
4162
|
+
children: /* @__PURE__ */ jsx(SelectedIndicatorContext, { value: isSelected, children })
|
|
3799
4163
|
}
|
|
3800
4164
|
);
|
|
3801
4165
|
});
|
|
3802
|
-
|
|
3803
|
-
const
|
|
3804
|
-
const {
|
|
3805
|
-
|
|
3806
|
-
|
|
3807
|
-
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
|
|
3812
|
-
|
|
3813
|
-
|
|
3814
|
-
|
|
3815
|
-
|
|
3816
|
-
|
|
3817
|
-
|
|
3818
|
-
|
|
3819
|
-
|
|
3820
|
-
|
|
3821
|
-
|
|
3822
|
-
|
|
3823
|
-
|
|
3824
|
-
|
|
3825
|
-
Sub: MenuSub,
|
|
3826
|
-
SubContent: MenuSubContent,
|
|
3827
|
-
SubTrigger: MenuSubTrigger,
|
|
3828
|
-
// pages
|
|
3829
|
-
Pages: MenuPages,
|
|
3830
|
-
PageContent: MenuPageContent,
|
|
3831
|
-
PageTrigger: MenuPageTrigger,
|
|
3832
|
-
// triggers
|
|
3833
|
-
ClickTrigger: MenuClickTrigger,
|
|
3834
|
-
ContextTrigger: MenuContextTrigger,
|
|
3835
|
-
VirtualTrigger: MenuVirtualTrigger,
|
|
3836
|
-
// groups
|
|
3837
|
-
Group: MenuGroup,
|
|
3838
|
-
SelectGroup: MenuSelectGroup,
|
|
3839
|
-
MultiSelectGroup: MenuMultiSelectGroup,
|
|
3840
|
-
// items
|
|
3841
|
-
Item: MenuItem,
|
|
3842
|
-
SelectItem: MenuSelectItem,
|
|
3843
|
-
MultiSelectItem: MenuMultiSelectItem,
|
|
3844
|
-
SelectAllItem: MenuSelectAllItem,
|
|
3845
|
-
CheckboxItem: MenuCheckboxItem,
|
|
3846
|
-
// indicators
|
|
3847
|
-
SelectedIndicator: MenuSelectedIndicator,
|
|
3848
|
-
CheckboxItemIndicator: MenuCheckboxItemIndicator,
|
|
3849
|
-
// input
|
|
3850
|
-
InputRoot: MenuInputRoot,
|
|
3851
|
-
InputField: MenuInputField,
|
|
3852
|
-
InputSlot: MenuInputSlot,
|
|
3853
|
-
// others
|
|
3854
|
-
Label: MenuLabel,
|
|
3855
|
-
Separator: MenuSeparator,
|
|
3856
|
-
Scroll: MenuScroll
|
|
4166
|
+
const MenuV2Separator = memo((props) => {
|
|
4167
|
+
const { ref, className, ...rest } = props;
|
|
4168
|
+
const { size: size2 } = use(MenuRootContext);
|
|
4169
|
+
return /* @__PURE__ */ jsx(RadixSeparator.Root, { className: cx(menuSeparatorCva({ size: size2 }), className), ref, ...rest });
|
|
4170
|
+
});
|
|
4171
|
+
MenuV2Separator.displayName = "MenuSeparator";
|
|
4172
|
+
const MenuV2 = {
|
|
4173
|
+
Root: MenuV2Root,
|
|
4174
|
+
Group: MenuV2Group,
|
|
4175
|
+
GroupLabel: MenuV2GroupLabel,
|
|
4176
|
+
Item: MenuV2Item,
|
|
4177
|
+
Separator: MenuV2Separator,
|
|
4178
|
+
SelectGroup: MenuV2SelectGroup,
|
|
4179
|
+
SelectItem: MenuV2SelectItem,
|
|
4180
|
+
MultiSelectGroup: MenuV2MultiSelectGroup,
|
|
4181
|
+
MultiSelectItem: MenuV2MultiSelectItem,
|
|
4182
|
+
SelectAllItem: MenuV2SelectAllItem,
|
|
4183
|
+
SelectedIndicator: MenuV2SelectedIndicator,
|
|
4184
|
+
CheckboxItem: MenuV2CheckboxItem,
|
|
4185
|
+
CheckedIndicator: MenuV2CheckedIndicator,
|
|
4186
|
+
Pages: MenuV2Pages,
|
|
4187
|
+
Page: MenuV2Page,
|
|
4188
|
+
PageTriggerItem: MenuV2PageTriggerItem
|
|
3857
4189
|
};
|
|
3858
4190
|
const OneTimePasswordFieldHiddenInput = memo((props) => {
|
|
3859
4191
|
return /* @__PURE__ */ jsx(RadixOneTimePasswordField.HiddenInput, { ...props });
|
|
@@ -4050,6 +4382,95 @@ const OvermapErrorBoundary = memo((props) => {
|
|
|
4050
4382
|
);
|
|
4051
4383
|
});
|
|
4052
4384
|
OvermapErrorBoundary.displayName = "OvermapErrorBoundary";
|
|
4385
|
+
const PhoneNumberInputContext = createContext({});
|
|
4386
|
+
const FlagComponent = memo((props) => {
|
|
4387
|
+
const { country } = props;
|
|
4388
|
+
return country ? country : /* @__PURE__ */ jsx(PhoneIcon, { size: 16 });
|
|
4389
|
+
});
|
|
4390
|
+
FlagComponent.displayName = "FlagComponent";
|
|
4391
|
+
const CountrySelect = memo((props) => {
|
|
4392
|
+
const { disabled, value, onChange, options } = props;
|
|
4393
|
+
const { radius, size: size2, variant, accentColor } = use(PhoneNumberInputContext);
|
|
4394
|
+
const handleSelect = useCallback(
|
|
4395
|
+
(e) => {
|
|
4396
|
+
onChange(e.target.value);
|
|
4397
|
+
},
|
|
4398
|
+
[onChange]
|
|
4399
|
+
);
|
|
4400
|
+
return /* @__PURE__ */ jsxs(
|
|
4401
|
+
Button,
|
|
4402
|
+
{
|
|
4403
|
+
className: "relative",
|
|
4404
|
+
accentColor,
|
|
4405
|
+
radius,
|
|
4406
|
+
size: size2,
|
|
4407
|
+
variant,
|
|
4408
|
+
disabled,
|
|
4409
|
+
children: [
|
|
4410
|
+
/* @__PURE__ */ jsx(FlagComponent, { country: value, countryName: value, "aria-hidden": "true" }),
|
|
4411
|
+
/* @__PURE__ */ jsx(ChevronDownIcon, { size: 16, "aria-hidden": "true" }),
|
|
4412
|
+
/* @__PURE__ */ jsxs(
|
|
4413
|
+
"select",
|
|
4414
|
+
{
|
|
4415
|
+
disabled,
|
|
4416
|
+
value,
|
|
4417
|
+
onChange: handleSelect,
|
|
4418
|
+
className: "absolute inset-0 text-sm opacity-0",
|
|
4419
|
+
"aria-label": "Select country",
|
|
4420
|
+
children: [
|
|
4421
|
+
/* @__PURE__ */ jsx("option", { value: "", children: "Select a country" }, "default"),
|
|
4422
|
+
options.filter((x) => x.value).map((option, i) => /* @__PURE__ */ jsxs("option", { value: option.value, children: [
|
|
4423
|
+
option.label,
|
|
4424
|
+
" ",
|
|
4425
|
+
option.value && `+${getCountryCallingCode(option.value)}`
|
|
4426
|
+
] }, option.value ?? `empty-${i}`))
|
|
4427
|
+
]
|
|
4428
|
+
}
|
|
4429
|
+
)
|
|
4430
|
+
]
|
|
4431
|
+
}
|
|
4432
|
+
);
|
|
4433
|
+
});
|
|
4434
|
+
CountrySelect.displayName = "CountrySelect";
|
|
4435
|
+
const InputComponent = memo((props) => {
|
|
4436
|
+
const { accentColor, radius, size: size2, variant } = use(PhoneNumberInputContext);
|
|
4437
|
+
return /* @__PURE__ */ jsx(Input.Root, { variant, size: size2, radius, accentColor, children: /* @__PURE__ */ jsx(Input.Field, { ...props }) });
|
|
4438
|
+
});
|
|
4439
|
+
InputComponent.displayName = "InputComponent";
|
|
4440
|
+
const PhoneNumberInput = memo((props) => {
|
|
4441
|
+
const providerContext = useProvider();
|
|
4442
|
+
const {
|
|
4443
|
+
ref,
|
|
4444
|
+
className,
|
|
4445
|
+
size: size2 = "md",
|
|
4446
|
+
variant = "outline",
|
|
4447
|
+
radius = providerContext.radius,
|
|
4448
|
+
accentColor = providerContext.accentColor,
|
|
4449
|
+
...rest
|
|
4450
|
+
} = props;
|
|
4451
|
+
const contextValue = useMemo(
|
|
4452
|
+
() => ({
|
|
4453
|
+
size: size2,
|
|
4454
|
+
variant,
|
|
4455
|
+
radius,
|
|
4456
|
+
accentColor
|
|
4457
|
+
}),
|
|
4458
|
+
[accentColor, radius, size2, variant]
|
|
4459
|
+
);
|
|
4460
|
+
return /* @__PURE__ */ jsx(PhoneNumberInputContext, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
4461
|
+
PhoneInput,
|
|
4462
|
+
{
|
|
4463
|
+
ref,
|
|
4464
|
+
className: cx(className, "flex gap-1"),
|
|
4465
|
+
flagComponent: FlagComponent,
|
|
4466
|
+
countrySelectComponent: CountrySelect,
|
|
4467
|
+
inputComponent: InputComponent,
|
|
4468
|
+
"data-accent-color": accentColor,
|
|
4469
|
+
...rest
|
|
4470
|
+
}
|
|
4471
|
+
) });
|
|
4472
|
+
});
|
|
4473
|
+
PhoneNumberInput.displayName = "PhoneNumberInput";
|
|
4053
4474
|
const PopoverArrow = memo((props) => {
|
|
4054
4475
|
const { ref, children, className, ...rest } = props;
|
|
4055
4476
|
return /* @__PURE__ */ jsx(RadixPopover.Arrow, { className: cx("fill-(--base-6)", className), ref, ...rest, children });
|
|
@@ -4373,6 +4794,65 @@ const RadioGroup = {
|
|
|
4373
4794
|
Item: RadioGroupItem,
|
|
4374
4795
|
Root: RadioGroupRoot
|
|
4375
4796
|
};
|
|
4797
|
+
const RatingRootContext = createContext({});
|
|
4798
|
+
const RatingItemContext = createContext({});
|
|
4799
|
+
const RatingItem = memo((props) => {
|
|
4800
|
+
const { ref, children, value, ...rest } = props;
|
|
4801
|
+
const { value: activeValue } = use(RatingRootContext);
|
|
4802
|
+
const active = !!activeValue && value <= activeValue;
|
|
4803
|
+
const contextValue = useMemo(() => ({ value }), [value]);
|
|
4804
|
+
return /* @__PURE__ */ jsx(RadixRadioGroup.Item, { ref, value: value.toString(), "data-active": active, ...rest, children: /* @__PURE__ */ jsx(RatingItemContext, { value: contextValue, children }) });
|
|
4805
|
+
});
|
|
4806
|
+
RatingItem.displayName = "RatingItem";
|
|
4807
|
+
const RatingItemIndicator = memo((props) => {
|
|
4808
|
+
const { ref, children, forceMount, ...rest } = props;
|
|
4809
|
+
const { value: activeValue } = use(RatingRootContext);
|
|
4810
|
+
const { value } = use(RatingItemContext);
|
|
4811
|
+
const active = !!activeValue && value <= activeValue;
|
|
4812
|
+
return /* @__PURE__ */ jsx(
|
|
4813
|
+
RadixRadioGroup.Indicator,
|
|
4814
|
+
{
|
|
4815
|
+
ref,
|
|
4816
|
+
forceMount: forceMount ?? (active || void 0),
|
|
4817
|
+
"data-active": active,
|
|
4818
|
+
...rest,
|
|
4819
|
+
children
|
|
4820
|
+
}
|
|
4821
|
+
);
|
|
4822
|
+
});
|
|
4823
|
+
RatingItemIndicator.displayName = "RatingItemIndicator";
|
|
4824
|
+
const RatingRoot = memo((props) => {
|
|
4825
|
+
const { ref, children, defaultValue, value: controlledValue, onValueChange, ...rest } = props;
|
|
4826
|
+
const [value, setValue] = useControlledState(defaultValue ?? null, controlledValue, onValueChange);
|
|
4827
|
+
const handleValueChange = useCallback(
|
|
4828
|
+
(value2) => {
|
|
4829
|
+
setValue(parseInt(value2));
|
|
4830
|
+
},
|
|
4831
|
+
[setValue]
|
|
4832
|
+
);
|
|
4833
|
+
const contextValue = useMemo(
|
|
4834
|
+
() => ({
|
|
4835
|
+
value
|
|
4836
|
+
}),
|
|
4837
|
+
[value]
|
|
4838
|
+
);
|
|
4839
|
+
return /* @__PURE__ */ jsx(
|
|
4840
|
+
RadixRadioGroup.Root,
|
|
4841
|
+
{
|
|
4842
|
+
ref,
|
|
4843
|
+
value: value ? value.toString() : null,
|
|
4844
|
+
onValueChange: handleValueChange,
|
|
4845
|
+
...rest,
|
|
4846
|
+
children: /* @__PURE__ */ jsx(RatingRootContext, { value: contextValue, children })
|
|
4847
|
+
}
|
|
4848
|
+
);
|
|
4849
|
+
});
|
|
4850
|
+
RatingRoot.displayName = "RatingRoot";
|
|
4851
|
+
const Rating = {
|
|
4852
|
+
Item: RatingItem,
|
|
4853
|
+
ItemIndicator: RatingItemIndicator,
|
|
4854
|
+
Root: RatingRoot
|
|
4855
|
+
};
|
|
4376
4856
|
const segmentedControlRootCva = cva(
|
|
4377
4857
|
["shrink-0", "transition-colors", "inline-flex", "box-border", "min-w-max", "text-center"],
|
|
4378
4858
|
{
|
|
@@ -6150,7 +6630,6 @@ export {
|
|
|
6150
6630
|
CheckboxGroupSelectAllItem,
|
|
6151
6631
|
CheckboxIndicator,
|
|
6152
6632
|
CheckboxRoot,
|
|
6153
|
-
CollapsibleTree,
|
|
6154
6633
|
CommandMenu,
|
|
6155
6634
|
CommandMenuCheckboxIndicator,
|
|
6156
6635
|
CommandMenuCheckboxItem,
|
|
@@ -6225,6 +6704,23 @@ export {
|
|
|
6225
6704
|
MenuSub,
|
|
6226
6705
|
MenuSubContent,
|
|
6227
6706
|
MenuSubTrigger,
|
|
6707
|
+
MenuV2,
|
|
6708
|
+
MenuV2CheckboxItem,
|
|
6709
|
+
MenuV2CheckedIndicator,
|
|
6710
|
+
MenuV2Group,
|
|
6711
|
+
MenuV2GroupLabel,
|
|
6712
|
+
MenuV2Item,
|
|
6713
|
+
MenuV2MultiSelectGroup,
|
|
6714
|
+
MenuV2MultiSelectItem,
|
|
6715
|
+
MenuV2Page,
|
|
6716
|
+
MenuV2PageTriggerItem,
|
|
6717
|
+
MenuV2Pages,
|
|
6718
|
+
MenuV2Root,
|
|
6719
|
+
MenuV2SelectAllItem,
|
|
6720
|
+
MenuV2SelectGroup,
|
|
6721
|
+
MenuV2SelectItem,
|
|
6722
|
+
MenuV2SelectedIndicator,
|
|
6723
|
+
MenuV2Separator,
|
|
6228
6724
|
MenuVirtualTrigger,
|
|
6229
6725
|
OneTimePasswordField,
|
|
6230
6726
|
OneTimePasswordFieldHiddenInput,
|
|
@@ -6238,6 +6734,7 @@ export {
|
|
|
6238
6734
|
OverlayTitle,
|
|
6239
6735
|
OverlayTrigger,
|
|
6240
6736
|
OvermapErrorBoundary,
|
|
6737
|
+
PhoneNumberInput,
|
|
6241
6738
|
Popover,
|
|
6242
6739
|
PopoverArrow,
|
|
6243
6740
|
PopoverContent,
|
|
@@ -6250,6 +6747,10 @@ export {
|
|
|
6250
6747
|
RadioGroupIndicator,
|
|
6251
6748
|
RadioGroupItem,
|
|
6252
6749
|
RadioGroupRoot,
|
|
6750
|
+
Rating,
|
|
6751
|
+
RatingItem,
|
|
6752
|
+
RatingItemIndicator,
|
|
6753
|
+
RatingRoot,
|
|
6253
6754
|
SegmentedControl,
|
|
6254
6755
|
SegmentedControlItem,
|
|
6255
6756
|
SegmentedControlRoot,
|
|
@@ -6257,7 +6758,6 @@ export {
|
|
|
6257
6758
|
SegmentedTabsList,
|
|
6258
6759
|
SegmentedTabsRoot,
|
|
6259
6760
|
SegmentedTabsTrigger,
|
|
6260
|
-
SelectedIndicatorContext,
|
|
6261
6761
|
Separator,
|
|
6262
6762
|
SlideOut,
|
|
6263
6763
|
Slider,
|
|
@@ -6294,6 +6794,12 @@ export {
|
|
|
6294
6794
|
badge,
|
|
6295
6795
|
buttonCva,
|
|
6296
6796
|
floating,
|
|
6797
|
+
genericMemo,
|
|
6798
|
+
getActiveState,
|
|
6799
|
+
getBooleanState,
|
|
6800
|
+
getCheckedState,
|
|
6801
|
+
getOpenState,
|
|
6802
|
+
getSelectedState,
|
|
6297
6803
|
mergeRefs,
|
|
6298
6804
|
radiusCva,
|
|
6299
6805
|
stopPropagation,
|
|
@@ -6301,15 +6807,9 @@ export {
|
|
|
6301
6807
|
useAlertDialog,
|
|
6302
6808
|
useButtonGroup,
|
|
6303
6809
|
useControlledState,
|
|
6810
|
+
useFallbackId,
|
|
6304
6811
|
useLayoutContext,
|
|
6305
|
-
useMenuContentContext,
|
|
6306
|
-
useMenuContext,
|
|
6307
|
-
usePagesContext,
|
|
6308
6812
|
useProvider,
|
|
6309
|
-
useSelectedIndicatorContext,
|
|
6310
|
-
useSize,
|
|
6311
|
-
useStopEventPropagation,
|
|
6312
|
-
useSubContext,
|
|
6313
6813
|
useTextFilter,
|
|
6314
6814
|
useToast,
|
|
6315
6815
|
useViewportSize
|