Clean up exports now that we are leaning into the gibui thing

This commit is contained in:
2026-03-26 10:49:12 -05:00
parent 6e78140103
commit 0bc04dbf6b
8 changed files with 69 additions and 77 deletions

View File

@@ -4,68 +4,8 @@
"type": "module",
"exports": {
".": "./src/index.tsx",
"./accordion": "./src/accordion.tsx",
"./alert": "./src/alert.tsx",
"./alert-dialog": "./src/alert-dialog.tsx",
"./aspect-ratio": "./src/aspect-ratio.tsx",
"./avatar": "./src/avatar.tsx",
"./badge": "./src/badge.tsx",
"./based-avatar": "./src/based-avatar.tsx",
"./based-progress": "./src/based-progress.tsx",
"./breadcrumb": "./src/breadcrumb.tsx",
"./button": "./src/button.tsx",
"./button-group": "./src/button-group.tsx",
"./calendar": "./src/calendar.tsx",
"./card": "./src/card.tsx",
"./carousel": "./src/carousel.tsx",
"./chart": "./src/chart.tsx",
"./checkbox": "./src/checkbox.tsx",
"./collapsible": "./src/collapsible.tsx",
"./combobox": "./src/combobox.tsx",
"./command": "./src/command.tsx",
"./context-menu": "./src/context-menu.tsx",
"./dialog": "./src/dialog.tsx",
"./drawer": "./src/drawer.tsx",
"./dropdown-menu": "./src/dropdown-menu.tsx",
"./empty": "./src/empty.tsx",
"./field": "./src/field.tsx",
"./form": "./src/form.tsx",
"./hover-card": "./src/hover-card.tsx",
"./image-crop": "./src/image-crop.tsx",
"./input": "./src/input.tsx",
"./input-group": "./src/input-group.tsx",
"./input-otp": "./src/input-otp.tsx",
"./item": "./src/item.tsx",
"./kbd": "./src/kbd.tsx",
"./label": "./src/label.tsx",
"./menubar": "./src/menubar.tsx",
"./native-select": "./src/native-select.tsx",
"./navigation-menu": "./src/navigation-menu.tsx",
"./pagination": "./src/pagination.tsx",
"./popover": "./src/popover.tsx",
"./progress": "./src/progress.tsx",
"./radio-group": "./src/radio-group.tsx",
"./resizeable": "./src/resizeable.tsx",
"./scroll-area": "./src/scroll-area.tsx",
"./select": "./src/select.tsx",
"./separator": "./src/separator.tsx",
"./sheet": "./src/sheet.tsx",
"./sidebar": "./src/sidebar.tsx",
"./skeleton": "./src/skeleton.tsx",
"./slider": "./src/slider.tsx",
"./sonner": "./src/sonner.tsx",
"./spinner": "./src/spinner.tsx",
"./status-message": "./src/status-message.tsx",
"./submit-button": "./src/submit-button.tsx",
"./switch": "./src/switch.tsx",
"./table": "./src/table.tsx",
"./tabs": "./src/tabs.tsx",
"./textarea": "./src/textarea.tsx",
"./theme": "./src/theme.tsx",
"./toast": "./src/toast.tsx",
"./toggle": "./src/toggle.tsx",
"./toggle-group": "./src/toggle-group.tsx",
"./tooltip": "./src/tooltip.tsx"
"./hooks": "./src/index.tsx",
"./hooks/*": "./src/hooks/*"
},
"license": "MIT",
"scripts": {

View File

@@ -0,0 +1,2 @@
export { useIsMobile } from './use-mobile';
export { useOnClickOutside } from './use-on-click-outside';

View File

@@ -0,0 +1,60 @@
import * as React from 'react';
import { MousePointerClick, X } from 'lucide-react';
type EventType =
| 'mousedown'
| 'mouseup'
| 'touchstart'
| 'touchend'
| 'focusin'
| 'focusout';
export function useOnClickOutside<T extends HTMLElement = HTMLElement>(
ref: React.RefObject<T | null> | React.RefObject<T | null>[],
handler: (event: MouseEvent | TouchEvent | FocusEvent) => void,
eventType: EventType = 'mousedown',
eventListenerOptions: AddEventListenerOptions = {},
): void {
const savedHandler = React.useRef(handler);
React.useLayoutEffect(() => {
savedHandler.current = handler;
}, [handler]);
React.useEffect(() => {
const listener = (event: MouseEvent | TouchEvent | FocusEvent) => {
const target = event.target as Node;
// Do nothing if the target is not connected element with document
if (!target.isConnected) {
return;
}
const isOutside = Array.isArray(ref)
? ref
.filter((r) => Boolean(r.current))
.every((r) => r.current && !r.current.contains(target))
: ref.current && !ref.current.contains(target);
if (isOutside) {
savedHandler.current(event);
}
};
document.addEventListener(
eventType,
listener as EventListener,
eventListenerOptions,
);
return () => {
document.removeEventListener(
eventType,
listener as EventListener,
eventListenerOptions,
);
};
}, [ref, eventType, eventListenerOptions]);
}
export type { EventType };

View File

@@ -381,4 +381,4 @@ export {
TooltipContent,
TooltipProvider,
} from './tooltip';
export { useIsMobile } from './hooks/use-mobile';
export { useIsMobile, useOnClickOutside } from './hooks';