KQ-554 · FIND/MARKS
Find Marks
Find in text, with the finding visible. Every match takes a wash that sweeps in from its left edge on a cascade capped at the 600ms budget, and one ring travels between matches on glide through a shared layoutId so the reader follows a ring that moves rather than one that blinks. Enter steps forward, Shift+Enter steps back, and the counter rolls a digit at a time on snap.
Basinworks measures flow at the weir, not at the pump. A pump reports what it was asked to do; the weir reports what the channel actually carried. Where the two disagree the difference is a leak, and the leak is what the report is for. Each station samples flow every thirty seconds and keeps a rolling median of the last five minutes. Short spikes are held back, because a gust of flow through a half-open valve is not a reading. When the median settles the station writes one row: the flow in litres per second, the head above the sill, and the temperature of the water at the sill. Nightly, the site totals its rows and compares them against the flow allocated to it. A station that runs over allocation twice in a week is flagged for a visit; a station that reports no flow at all is flagged the same night, because a silent weir is usually a blocked one.
No matches
Install
One command — the source lands in your repo. Or copy it from the Code tab.
$ pnpm dlx shadcn@latest add @kinetiq/find-marks
Props
- text
- string
- default —
- The body to search.
- query / defaultQuery
- string
- default —
- Controlled or initial search term.
- onQueryChange
- (query: string) => void
- default —
- Fires on typing.
- caseSensitive
- boolean
- default false
- Match case.
- onMatchChange
- (index: number, total: number) => void
- default —
- Fires when the current match or the total changes; memoise it.
- maxHeight
- number
- default 260
- Tallest the passage grows before it scrolls, in px.
- label
- string
- default "Find in passage"
- Field label, used as the accessible name.
| Prop | Type | Default | Description |
|---|---|---|---|
| text | string | — | The body to search. |
| query / defaultQuery | string | — | Controlled or initial search term. |
| onQueryChange | (query: string) => void | — | Fires on typing. |
| caseSensitive | boolean | false | Match case. |
| onMatchChange | (index: number, total: number) => void | — | Fires when the current match or the total changes; memoise it. |
| maxHeight | number | 260 | Tallest the passage grows before it scrolls, in px. |
| label | string | "Find in passage" | Field label, used as the accessible name. |