# glyphfill
> glyphfill shows progress inside a word. As a task completes, letters get heavier or fill with ink. It ships a React component, a Vue component, a Svelte component and a plain JavaScript function, with no runtime dependencies.
Install with `npm install glyphfill` (or `pnpm add`, `yarn add`, `bun add`), then import `glyphfill/styles.css` once. With Tailwind CSS v4, add `@import "glyphfill/styles.css" layer(components);` to the main CSS file instead.
Entry points:
- `glyphfill/react`: `USAGE`
- `glyphfill/vue`: `USAGE`
- `glyphfill/svelte`: ``, or the action `use:glyphfill={{ value: 40 }}`
- `glyphfill`: `glyphfill(element, { value: 40 })` returns `{ update, destroy }`
Options: `value` (0–100; leave it out to show a loading animation), `mode` (`'sweep'` default, `'fill'`, `'weight'`), `minWeight` (100), `maxWeight` (900), `fillColor` (any CSS color), `duration` (ms, 300), `tooltip` (`true`, a string, a function `(word, pct) => string`, or `false`).
Styling: the word inherits font, size and color. glyphfill's rules have zero specificity, so the project's classes win. CSS variables: `--gf-fill`, `--gf-tip-bg`, `--gf-tip-fg`, `--gf-stroke`. Attributes: `data-gf-state` (`loading`, `progress`, `complete`) and `data-gf-mode`.
Sweep and weight modes need a variable font to animate smoothly. Fill mode works with any font.
## Docs
- [Full documentation](https://glyphfill.sush.dev/llms-full.txt): every option, framework examples and styling notes, as plain text
- [Website and playground](https://glyphfill.sush.dev): live demos of every mode
## Source
- [GitHub repository](https://github.com/sushilburagute/glyphfill)
- [npm package](https://www.npmjs.com/package/glyphfill)
## Optional
- [Author: Sushil Buragute](https://sush.dev)