A granular cookie consent manager: one row per category with plain-language copy and a vendor-count disclosure, a locked strictly-necessary row, equal-weight accept-all / reject-all / save-selection, and a saved-choice strip that re-opens the editor.
npx shadcn@latest add @zyeon/cookie-preferencesZyeon UI limits how often it can be asked, and Cookie Preferences hasn't had its turn. Its source will show here once it has.