# Hooks

> Generated reference (regen-owned; see [index.md](index.md)). Binds only under `primitives: nurix`.

Standalone React hooks, each imported from its own subpath under `@nurix/components/`.

## useClickOutside

`useClickOutside(ref, callback)` — invokes `callback` on `mousedown`/`touchstart` outside the referenced element.

```tsx
const ref = useRef<HTMLDivElement>(null);
useClickOutside(ref, () => setOpen(false));
```

## useFileUpload

`useFileUpload(options?)` — returns `[state, actions]`.

**Options:** `maxFiles` (multi mode only, default Infinity), `maxSize` (bytes), `accept`, `multiple`, `initialFiles`, `onFilesChange`, `onFilesAdded`

**State:** `{ files: FileWithPreview[], isDragging, errors }` **Actions:** `addFiles`, `removeFile`, `clearFiles`, `clearErrors`, `handleDragEnter/Leave/Over/Drop`, `handleFileChange`, `openFileDialog`, `getInputProps()`. Also exports `formatBytes`.

```tsx
const [state, actions] = useFileUpload({ multiple: true, maxFiles: 5 });
<div {...actions.getInputProps()} onDrop={actions.handleDrop} />
```

## useMediaQuery

`useMediaQuery(query)` — reactive boolean for a CSS media query string, updates on `matchMedia` change events.

## useIsMobile

`useIsMobile()` (from `hooks/use-mobile`) — reactive boolean, true below the 768px breakpoint.
