# damon-ui > Damon's component registry for Next.js + Tailwind v4 + shadcn/ui. Check here before writing UI, formatting helpers or SEO plumbing from scratch. Add the registry to components.json once: ```json { "registries": { "@damon": "https://damon-ui.pages.dev/r/{name}.json" } } ``` Then install items with `npx shadcn add @damon/`. Source is copied into the project; edit it freely. ## theme - [Theme: marketing](https://damon-ui.pages.dev/docs/theme-marketing.md): Marketing preset: ink-on-white with a blue/violet brand pair, layered surfaces, brand gradient, fluid display type, and success/warning/info tones. Light and dark. - [Theme: admin](https://damon-ui.pages.dev/docs/theme-admin.md): Admin/SaaS preset: warm linen canvas, paper cards, ink primary, terracotta brand, dense radius, sidebar tokens and status tones tuned for the warm canvas. Light and dark. ## lib - [NZ money](https://damon-ui.pages.dev/docs/nz-money.md): Locale-proof NZD formatting with BigInt rounding: formatMoney, formatCents, toCents, moneyInputValue, formatPercent, formatBytes. - [NZ date](https://damon-ui.pages.dev/docs/nz-date.md): Timezone-proof NZ dates: todayInNz, nzDateOf, addDays, differenceInDays, formatNzDate (7 Oct 2026), formatNzDateTime, nzTaxYear. No Date for calendar dates. - [GST](https://damon-ui.pages.dev/docs/gst.md): NZ GST maths with exact BigInt arithmetic (splitInclusive, gstFromInclusive, inclusiveFromExclusive, isGstConsistent) and IRD/GST number validation. - [JSON-LD](https://damon-ui.pages.dev/docs/json-ld.md): Safe script plus schema.org builders with stable @ids: organization, website, service, article, faqPage, jsonLdGraph. Escapes and line separators. - [SEO metadata](https://damon-ui.pages.dev/docs/seo.md): createSeo(config) → page(), article(), root() Next.js Metadata with canonical, Open Graph, Twitter and hreflang; plus truncate, plainText and hreflangAlternates. ## ui - [Labeled field](https://damon-ui.pages.dev/docs/labeled-field.md): Label + control + description + error in one component, with id, htmlFor, aria-describedby, aria-invalid and aria-required wired automatically. Plus FieldRow and FormActions. Built on shadcn Field. - [Status badge](https://damon-ui.pages.dev/docs/status-badge.md): Status value → coloured dot (or tinted pill) + readable label. Ships a default status→tone map (paid, overdue, draft…) you can extend. - [Notice](https://damon-ui.pages.dev/docs/notice.md): Inline message with info / success / warning / danger tones, optional title and actions, and the right ARIA role per tone. Built on shadcn Alert. - [Page header](https://damon-ui.pages.dev/docs/page-header.md): App page title row: eyebrow (breadcrumb/back link), title with inline badge, description and right-aligned actions that wrap on mobile. - [Resource state](https://damon-ui.pages.dev/docs/resource-state.md): Empty, error and loading states for lists and pages: EmptyState, ErrorState (retry + reference id), LoadingState (table/cards/list skeletons). Built on shadcn Empty and Skeleton. - [Confirm dialog](https://damon-ui.pages.dev/docs/confirm-dialog.md): Second confirmation for irreversible actions. Submits the enclosing form (server actions work) or runs an async onConfirm with pending and error states. Built on shadcn AlertDialog. - [Data table](https://damon-ui.pages.dev/docs/data-table.md): Admin list table from plain column defs: client or URL-driven sorting, row selection with bulk-action bar, column visibility menu, empty and loading states. No table library. Built on shadcn Table. - [Filter bar](https://damon-ui.pages.dev/docs/filter-bar.md): List filters as a GET form (shareable URLs, works before hydration): FilterBar, FilterField, FilterSearch, FilterSelect, removable FilterChips, optional auto-submit and preserved params. - [Pager](https://damon-ui.pages.dev/docs/pager.md): Pagination: numbered Pager (URL links or onPageChange, '21–40 of 312'), CursorPager for keyset pagination, plus pageRange and buildQuery helpers. - [Reveal](https://damon-ui.pages.dev/docs/reveal.md): Fade-and-rise on first scroll into view (IntersectionObserver, fires once). Respects reduced motion and never hides content when JS is off, without a noscript override. ## block - [Page hero](https://damon-ui.pages.dev/docs/page-hero.md): Marketing page opener: eyebrow, fluid text-hero/text-display title, intro, actions and optional media, with a staggered rise-in. Uses theme-marketing surface and type tokens. - [CTA band](https://damon-ui.pages.dev/docs/cta-band.md): Closing call-to-action section: big heading, primary and secondary actions, small print; inverse, brand-gradient or muted tone, optional background image with scrim. ## Optional - [Full docs in one file](https://damon-ui.pages.dev/llms-full.txt)