@chakra-ui/hooks
Version:
React hooks for Chakra components
29 lines (26 loc) • 697 B
JavaScript
'use client';
import { useId as useId$1, useMemo, useState, useCallback } from 'react';
function useId(idProp, prefix) {
const id = useId$1();
return useMemo(
() => idProp || [prefix, id].filter(Boolean).join("-"),
[idProp, prefix, id]
);
}
function useIds(idProp, ...prefixes) {
const id = useId(idProp);
return useMemo(() => {
return prefixes.map((prefix) => `${prefix}-${id}`);
}, [id, prefixes]);
}
function useOptionalPart(partId) {
const [id, setId] = useState(null);
const ref = useCallback(
(node) => {
setId(node ? partId : null);
},
[partId]
);
return { ref, id, isRendered: Boolean(id) };
}
export { useId, useIds, useOptionalPart };