@featherk/composables

Vue 3 composables that improve Kendo UI for Vue behavior and accessibility.
17,793
Install
npm install @featherk/composables
Latest Version:0.17.1
Vue:3
License:MIT
Last Updated:Oct 21, 2026
Links: npm
Maintainer: janderson-nh

@featherk/composables

Vue 3 composables that improve Kendo UI for Vue behavior and accessibility.

Composables Overview

Utility Export

computeCollisionOffset is a pure utility export, not a Vue composable. It applies per-axis fit or flip collision behavior and is available from @featherk/composables/geometry or the package root.

Importing Composables

You can import directly from subpaths or from the package root.

Subpath imports (recommended for clarity):

// Grid
import {
  useGridA11y,
  useGridActiveFilter,
  useGridRowAction,
  type RowActionContext,
} from "@featherk/composables/grid";

// Date input
import {
  useMaskedDateInput,
  type DateChangePayload,
} from "@featherk/composables/date";

// Date range input
import {
  useMaskedDateRangeInput,
  type RangeChangePayload,
} from "@featherk/composables/range";

// Time input
import {
  useMaskedTimeInput,
  type TimeChangePayload,
} from "@featherk/composables/time";

// Popup focus trap utilities
import { usePopupTrap } from "@featherk/composables/trap";

// Kendo Popup + Menu action-menu utilities
import {
  usePopupMenu,
  type KendoMenuSelectEvent,
} from "@featherk/composables/menu";

// Shared active-id bookkeeping for single-open grid or list patterns
import {
  useActiveIdRegistry,
  useExclusiveGroup,
} from "@featherk/composables/registry";

// Intersection observer utilities
import { useIntersectionObserver } from "@featherk/composables/observer";

// Geometry utilities
import { computeCollisionOffset } from "@featherk/composables/geometry";

// Component-scoped DOM ID utilities
import { useCompositeId } from "@featherk/composables/id";

// Address utilities
import {
  useZipTextBox,
  useUSAddress,
  type USAddressSubmitPayload,
} from "@featherk/composables/address";

// Form utilities
import {
  useFieldsetValidationKit,
  useFieldsetTouchTracker,
} from "@featherk/composables/form";

// Kendo Window wrapper
import { useWindow } from "@featherk/composables/window";

Root imports (types are aliased to avoid name collisions):

import {
  useGridA11y,
  useGridActiveFilter,
  useGridRowAction,
  type RowActionContext,
  useMaskedDateInput,
  type DateChangePayload,
  useMaskedDateRangeInput,
  type RangeChangePayload,
  useMaskedTimeInput,
  type TimeChangePayload,
  usePopupTrap,
  usePopupMenu,
  type KendoMenuSelectEvent,
  useActiveIdRegistry,
  useExclusiveGroup,
  useIntersectionObserver,
  useCompositeId,
  useZipTextBox,
  useUSAddress,
  useFieldsetValidationKit,
  useFieldsetTouchTracker,
  useWindow,
} from "@featherk/composables";

usePopupTrap depends on VueUse integrations and focus-trap internally. Those runtime packages are shipped as regular dependencies of @featherk/composables, so consumers do not need to install them separately.

Kendo UI Compatibility

Built and tested against Kendo UI for Vue 6.4.1. The composables do not import Kendo at runtime, but they depend on the DOM structure and k-* classes rendered by specific Kendo versions, and several public types come from Kendo packages. Those packages are declared as optional peer dependencies (^6.4.1): none is required, but any you install must be in the supported range.

Composables Kendo package
useGridA11y, useGridActiveFilter, useGridRowAction @progress/kendo-vue-grid, @progress/kendo-data-query
useWindow @progress/kendo-vue-dialogs
usePopupMenu @progress/kendo-vue-layout, @progress/kendo-vue-popup
usePopupTrap @progress/kendo-vue-popup
useMaskedDateInput, useMaskedDateRangeInput, useMaskedTimeInput @progress/kendo-vue-dateinputs
useZipTextBox, useUSAddress @progress/kendo-vue-inputs

Peer Dependencies

  • Required: vue (3.5+)
npm install vue

Notes

  • Every public feature area has a source index.ts barrel, is re-exported from the package root, and has a matching public package subpath. For example, import useIntersectionObserver from @featherk/composables/observer, useCompositeId from @featherk/composables/id, or either from the package root. Consumers should not import internal dist paths.
  • The runtime files for useGridA11y, useGridActiveFilter, and useGridRowAction live in src/grid/. All three are re-exported from the package root and from @featherk/composables/grid — no import path changes are needed by consumers.

Changelog

Release history for all @featherk/* packages is maintained in a single CHANGELOG.md.

Related Packages

nuxt-a11y

This module integrates Axe tool for auditing website against common Accessibilit...

462
@lexical/a11y

Framework-agnostic accessibility helpers (ARIA live regions, focus management, r...

12,617,619 23,971
vue-axe

Dynamic accessibility analysis for Vue.js using axe-core

1,471,163 188
@focusring/wcagify

WCAG accessibility audit tool — Nuxt layer with report generation, PDF export an...

5,246 1
vue-skip-to

It helps people who only use the keyboard to jump to what matters most.

2,047 80

Version History

Version Released License
0.17.1 MIT
0.17.0 MIT
0.16.2 MIT
0.16.1 MIT
0.16.0 MIT