// Trait barrel — categories below mirror the canonical taxonomy in
// _catalog.json (generated from defineTrait() metadata). When adding a
// trait, place it under its category header here, then run
// `npm run build:traits` to refresh the catalog.
//
// Side-effect: the <traits-host> wrapper is auto-registered when this
// barrel is imported, so consumers who use the trait library at all
// also get raw-HTML declarative composition for free.
import './traits-host.js';

// input-interaction
export { pressable } from './pressable/pressable.js';
export { focusable } from './focusable/focusable.js';
export { hoverable } from './hoverable/hoverable.js';
export { activeState } from './active-state/active-state.js';
export { longPress } from './long-press/long-press.js';
export { droppable } from './droppable/droppable.js';
export { droppableCollection } from './droppable-collection/droppable-collection.js';

// keyboard-navigation
export { keyboardNav } from './keyboard-nav/keyboard-nav.js';
export { rovingTabindex } from './roving-tabindex/roving-tabindex.js';
export { typeahead } from './typeahead/typeahead.js';
export { hotkey } from './hotkey/hotkey.js';
export { focusTrap } from './focus-trap/focus-trap.js';
export { focusRestore } from './focus-restore/focus-restore.js';
export { arrowGridNav } from './arrow-grid-nav/arrow-grid-nav.js';
export { keyboardReorderable } from './keyboard-reorderable/keyboard-reorderable.js';

// forms-data
export { validation } from './validation/validation.js';
export { dirtyState } from './dirty-state/dirty-state.js';
export { resettable } from './resettable/resettable.js';
export { inputMask } from './input-mask/input-mask.js';

// layout-measurement
export { resizeObserver } from './resize-observer/resize-observer.js';
export { intersectionObserver } from './intersection-observer/intersection-observer.js';
export { anchorPositioning } from './anchor-positioning/anchor-positioning.js';
export { portal } from './portal/portal.js';
export { scrollLock } from './scroll-lock/scroll-lock.js';
export { scrollProgress } from './scroll-progress/scroll-progress.js';

// motion-positioning
export { draggable } from './draggable/draggable.js';
export { tossable } from './tossable/tossable.js';
export { resizable } from './resizable/resizable.js';
export { inertiaDrag } from './inertia-drag/inertia-drag.js';
export { snapToGrid } from './snap-to-grid/snap-to-grid.js';
export { dragGhost } from './drag-ghost/drag-ghost.js';
export { dropTarget } from './drop-target/drop-target.js';
export { layoutAnimation } from './layout-animation/layout-animation.js';
export { viewTransition } from './view-transition/view-transition.js';
export { draggableListItem } from './draggable-list-item/draggable-list-item.js';

// animation-feedback
export { ripple } from './ripple/ripple.js';
export { springAnimate } from './spring-animate/spring-animate.js';
export { fadePresence } from './fade-presence/fade-presence.js';
export { scalePress } from './scale-press/scale-press.js';
export { tiltHover } from './tilt-hover/tilt-hover.js';
export { errorShake } from './error-shake/error-shake.js';
export { successCheckmark } from './success-checkmark/success-checkmark.js';

// visual-dynamics
export { glowFocus } from './glow-focus/glow-focus.js';
export { gradientShift } from './gradient-shift/gradient-shift.js';
export { parallax } from './parallax/parallax.js';
export { shimmerLoading } from './shimmer-loading/shimmer-loading.js';
export { noiseTexture } from './noise-texture/noise-texture.js';

// interaction-delight
export { magneticHover } from './magnetic-hover/magnetic-hover.js';
export { confetti } from './confetti/confetti.js';
export { confettiBurst } from './confetti-burst/confetti-burst.js';

// audio-haptics-sensory
export { soundFeedback } from './sound-feedback/sound-feedback.js';
export { hapticFeedback } from './haptic-feedback/haptic-feedback.js';
export { typewriter } from './typewriter/typewriter.js';
export { countUp } from './count-up/count-up.js';
export { attentionPulse } from './attention-pulse/attention-pulse.js';
export { announcer } from './announcer/announcer.js';
