U
UIPKGE
useBoard — DnD + insertion-index state for the Board primitiveuse-boardState + handlers for the `@uipkge/board` compositional primitive. Returns a `state` (draggingId / dragOverLaneId / justMovedId), `handlers` to bind on lanes and cards (onDragStart / onLaneDragOver / onLaneDragLeave / onLaneDrop / onDragEnd), and an imperative `moveItem(itemId, toLaneId, toIndex?)` — used by keyboard navigation, undo, or server-pushed updates. Drop math computes the insertion index from pointer Y vs each card's bounding-box midpoint. An `accepts` predicate gives consumers a per-lane veto. The hook doesn't mutate your lanes data directly — it calls `onLanesChange(next)` and emits `onChange({ itemId, from, to, index })` so you stay in control of the canonical store (useState, Zustand, server). Imports the Board's shared types from `@/components/ui/board/context` so `shadcn add @uipkge/board` and `shadcn add @uipkge/use-board` produce a typed, drop-in pairing.
Use Kanbanuse-kanbanTypes (KanbanTask, KanbanColumn, CommentItem, FileItem), configs (priorityConfig with icons, assignee colour palette, tagPresets, fileIconMap), and helpers (getInitials, getDueStatus, formatDueDate, findTaskById, getTaskColumn). Shipped as a sibling to the kanban-board block so all the kanban files import the same types and assignee/tag presets.
Use Month Griduse-month-gridHeadless month-grid + drag/shift range-select hook. Returns the 42-cell grid, today/cursor state, range state, and mouse handlers. Domain-agnostic -- pair with EventCalendar or any month-shaped UI by reading the returned values. Also exports isoDate / dateFromKey / dayDiff helpers.
Use Themeuse-themeTheme provider + useTheme hook (next-themes). ThemeProvider injects a blocking script that sets the dark class before first paint (no flash on reload); useTheme reads/sets the active theme. The React/Next equivalent of the Vue useTheme composable.