This component no longer exists. It was in Wednesday UI’s manifest when we first indexed it and is not there now — the registry served its inventory on 2026-08-13 and this item was not on it. The install command below will fail. It is kept here because a tutorial somewhere still tells people to run it.
Use Disclosure
wednesday-ui/use-disclosureRemovedHook
A hook for managing disclosure state
Install it
npx shadcn@latest add https://ui.ednesdayw.com/r/use-disclosure.jsonSource
1"use client";23import { useCallbackRef } from "@radix-ui/react-use-callback-ref";4import { useCallback, useState } from "react";56export interface UseDisclosureProps {7 open?: boolean;8 defaultOpen?: boolean;9 onOpen?: () => void;10 onClose?: () => void;11}1213export const useDisclosure = (props: UseDisclosureProps = {}) => {14 const handleOpen = useCallbackRef(props.onOpen);15 const handleClose = useCallbackRef(props.onClose);16 const [uncontrolledOpen, setUncontrolledOpen] = useState(17 props.defaultOpen ?? false,18 );1920 const open = props.open !== undefined ? props.open : uncontrolledOpen;21 const isControlled = props.open !== undefined;2223 const onOpen = useCallback(() => {24 if (!isControlled) {25 setUncontrolledOpen(true);26 }27 handleOpen?.();28 }, [isControlled, handleOpen]);2930 const onClose = useCallback(() => {31 if (!isControlled) {32 setUncontrolledOpen(false);33 }34 handleClose?.();35 }, [isControlled, handleClose]);3637 const onOpenChange = useCallback(38 (isOpen?: boolean) => {39 const newIsOpen = isOpen !== undefined ? isOpen : !open;4041 if (newIsOpen) {42 onOpen();43 } else {44 onClose();45 }46 },47 [open, onOpen, onClose],48 );49 return {50 open,51 onOpen,52 onClose,53 onOpenChange,54 };55};5657export type UseDisclosureReturn = ReturnType<typeof useDisclosure>;
What it pulls in
npm packages
