# Vue Star Rate (vue-js-star-rating) > Zero-dependency Vue 3.5+ star rating component — keyboard accessible, TypeScript-first, half-star precision, Lucide / FontAwesome / custom icons, SSR & Nuxt ready. **Package:** `vue-js-star-rating` · **License:** MIT · **Peer:** `vue ^3.5.0` · **Bundle:** ~4.6 KB gzip JS + ~0.75 KB gzip CSS for `import { VueStarRate }` (vue excluded; `useStarRating` alone is ~1 KB gzip) Vue Star Rate is a modern, keyboard-accessible star rating component for Vue 3 applications. Built with ` ``` ## Props - `v-model` (`number`, default `0`) — current rating value - `maxStars` (`number`, default `5`) - `allowHalf` (`boolean`, default `false`) — enable 0.5 increments - `size` (`'xs' | 'sm' | 'md' | 'lg' | 'xl'`, default `'md'`) - `iconSize` (`number | { width, height }`) — override pixel size - `iconProvider` (`'custom' | 'lucide' | 'fontawesome'`, default `'custom'`) - `colors` (`Partial`) — `{ empty, filled, hover, half }` - `animation` (`Partial`) — `{ enabled, duration, type: 'scale'|'bounce'|'pulse'|'none' }`; not a full off-switch: interactive stars still scale to 1.1 on hover - `readonly` (`boolean`, default `false`) - `disabled` (`boolean`, default `false`) - `clearable` (`boolean`, default `false`) - `allowReset` (`boolean`, default `true`) — click active star again to reset - `showCounter` / `counterTemplate` (default template `'{value} / {max}'`) - `showTooltip` / `tooltipLabels` (`string[]`) - `minRating` (`number`, default `0`) / `step` (`number`, default `1`) - `rtl` (`boolean`; known gap: the half-star fill is still painted on the left side of the star and `ArrowLeft` / `ArrowRight` are not mirrored) / `inline` (`boolean`; not implemented: no visual effect) / `gap` (`number`, px) - `ariaLabel` (`string`, default `'Star rating'`) / `className` / `faIcons` / `customIcon` (not implemented: accepted but ignored; use the `icon` slot) ## Events - `update:modelValue` (`number`) — emitted by `v-model` - `change` (`value`, `oldValue`) - `hover` (`number | null`) - `focus` / `blur` ## Slots - `icon` — scoped: `{ filled, half, size, color, index }` - `counter` — scoped: `{ value, max }` - `clear` — content of the clear button ## Keyboard - `→` / `↑` — increase · `←` / `↓` — decrease - `Home` — minimum · `End` — maximum - `1`–`9` — jump to value · `0` — reset ## Accessibility - Root `role="group"` with an `aria-label`; each star is a `