# @gentleduck/ui Documentation > A versatile and feature-rich UI component library built for modern web applications. ## MCP Server: https://gentleduck.org/api/mcp ## Docs - [Adapters](https://gentleduck.org/docs/duck-auth/adapters/index): Storage backends for identities, sessions, credentials, and orgs. Memory for dev, Redis for production, SQL bridge for Postgres / MySQL / SQLite via Drizzle. - Markdown: https://gentleduck.org/docs/duck-auth/adapters/index.md - [Memory adapter](https://gentleduck.org/docs/duck-auth/adapters/memory): In-memory Maps for identities, sessions, credentials, and orgs. Dev/test only - strict() rejects it in production. - Markdown: https://gentleduck.org/docs/duck-auth/adapters/memory.md - [Redis adapter bundle](https://gentleduck.org/docs/duck-auth/adapters/redis): Production session store + idempotency cache + DPoP nonce store + sliding-window limiter + cross-process events. Works against ioredis, @upstash/redis, or an in-tree AuthFakeRedis. - Markdown: https://gentleduck.org/docs/duck-auth/adapters/redis.md - [SQL bridge + Drizzle adapters](https://gentleduck.org/docs/duck-auth/adapters/sql): A bring-your-own-ORM contract. Bundled Drizzle reference implementations for Postgres, MySQL, and SQLite. - Markdown: https://gentleduck.org/docs/duck-auth/adapters/sql.md - [CLI reference](https://gentleduck.org/docs/duck-auth/advanced/cli): duck-auth init, doctor, keys generate, keys rotate, migrate, emit-openapi. - Markdown: https://gentleduck.org/docs/duck-auth/advanced/cli.md - [Internationalisation](https://gentleduck.org/docs/duck-auth/advanced/i18n): AuthI18nMessageCatalog (zero-dep) + AuthLinguiResolver. Translate every AUTH/* error code and channel template. - Markdown: https://gentleduck.org/docs/duck-auth/advanced/i18n.md - [Multi-tenancy](https://gentleduck.org/docs/duck-auth/advanced/multi-tenancy): authWithTenant + authCurrentTenant - AsyncLocalStorage-backed tenant scope that flows through every facet, store, and event without threading AuthTenantContext by hand. - Markdown: https://gentleduck.org/docs/duck-auth/advanced/multi-tenancy.md - [OIDC OP (provider)](https://gentleduck.org/docs/duck-auth/advanced/oidc-op): Full OAuth2/OIDC provider with /authorize, /token, /userinfo, /introspect, /revoke, and RFC 7591 dynamic client registration. - Markdown: https://gentleduck.org/docs/duck-auth/advanced/oidc-op.md - [OIDC discovery](https://gentleduck.org/docs/duck-auth/advanced/oidc): Expose /.well-known/openid-configuration + /.well-known/jwks.json so downstream services treat your auth issuer as an OIDC OP. - Markdown: https://gentleduck.org/docs/duck-auth/advanced/oidc.md - [OpenAPI generator](https://gentleduck.org/docs/duck-auth/advanced/openapi): authBuildOpenApiSpec + authRenderOpenApiYaml - emit an OpenAPI 3.1 spec for the mounted auth routes. - Markdown: https://gentleduck.org/docs/duck-auth/advanced/openapi.md - [Production hardening](https://gentleduck.org/docs/duck-auth/advanced/security): Every gate AuthEngine.strict() enforces, plus the threat model and the OWASP Top 10 mapping. - Markdown: https://gentleduck.org/docs/duck-auth/advanced/security.md - [OpenTelemetry](https://gentleduck.org/docs/duck-auth/advanced/telemetry): OtelInstrumentation auto-wires counters, up-down counters, and histograms onto the events bus. Redacted attributes by default. - Markdown: https://gentleduck.org/docs/duck-auth/advanced/telemetry.md - [Testing](https://gentleduck.org/docs/duck-auth/advanced/testing): authCreateTest() - a fluent builder with sensible defaults. Plus the adapter compliance suite for custom stores. - Markdown: https://gentleduck.org/docs/duck-auth/advanced/testing.md - [Webhooks](https://gentleduck.org/docs/duck-auth/advanced/webhooks): AuthWebhookDeliverer broadcasts AuthEngine events to HTTP endpoints with HMAC-signed bodies, exponential backoff, SSRF guards, and dead-letter sinks. - Markdown: https://gentleduck.org/docs/duck-auth/advanced/webhooks.md - [Changelog](https://gentleduck.org/docs/duck-auth/changelog): Release history for @gentleduck/auth. - Markdown: https://gentleduck.org/docs/duck-auth/changelog.md - [AuthConsoleChannel](https://gentleduck.org/docs/duck-auth/channels/console): Logs messages to stdout for development. Plus AuthTestChannel (captures into an outbox) and AuthNoopChannel (discards). - Markdown: https://gentleduck.org/docs/duck-auth/channels/console.md - [Channels](https://gentleduck.org/docs/duck-auth/channels/index): Outbound message delivery - email, SMS, WebPush. Console + Test for dev, SMTP + Resend + SES + Twilio + WebPush for production. - Markdown: https://gentleduck.org/docs/duck-auth/channels/index.md - [AuthResendChannel](https://gentleduck.org/docs/duck-auth/channels/resend): Resend.com transactional email channel. - Markdown: https://gentleduck.org/docs/duck-auth/channels/resend.md - [AWS SES channel](https://gentleduck.org/docs/duck-auth/channels/ses): AWS Simple Email Service via @aws-sdk/client-ses. - Markdown: https://gentleduck.org/docs/duck-auth/channels/ses.md - [AuthSmtpChannel](https://gentleduck.org/docs/duck-auth/channels/smtp): Nodemailer-compatible SMTP relay. Works with Postmark, Mailgun, custom SMTP servers - anywhere you have credentials. - Markdown: https://gentleduck.org/docs/duck-auth/channels/smtp.md - [AuthTwilioChannel](https://gentleduck.org/docs/duck-auth/channels/twilio): Twilio Programmable Messaging for SMS magic-link and MFA codes. - Markdown: https://gentleduck.org/docs/duck-auth/channels/twilio.md - [AuthWebPushChannel](https://gentleduck.org/docs/duck-auth/channels/webpush): Web Push protocol with VAPID. Deliver magic-link prompts to a user's existing browser tab without email. - Markdown: https://gentleduck.org/docs/duck-auth/channels/webpush.md - [Client libraries](https://gentleduck.org/docs/duck-auth/client/index): Vanilla authCreateClient + React AuthProvider + hooks. Vue, Svelte, and Solid clients are also shipped. - Markdown: https://gentleduck.org/docs/duck-auth/client/index.md - [React client](https://gentleduck.org/docs/duck-auth/client/react): , authUseSession, authUseSignIn, authUseSignOut, authUseBeginProvider. React 16.8+. - Markdown: https://gentleduck.org/docs/duck-auth/client/react.md - [Solid client](https://gentleduck.org/docs/duck-auth/client/solid): SolidJS provider + hooks - authUseSession, authUseSignIn, authUseSignOut. Built on createSignal so updates are fine-grained. - Markdown: https://gentleduck.org/docs/duck-auth/client/solid.md - [Svelte client](https://gentleduck.org/docs/duck-auth/client/svelte): Svelte 4+ store. Single readable store, single signIn / signOut helpers. - Markdown: https://gentleduck.org/docs/duck-auth/client/svelte.md - [Vanilla client](https://gentleduck.org/docs/duck-auth/client/vanilla): Framework-agnostic authCreateClient. Promise-based signIn / signOut / getSession + onChange subscription. - Markdown: https://gentleduck.org/docs/duck-auth/client/vanilla.md - [Vue client](https://gentleduck.org/docs/duck-auth/client/vue): Vue 3 composables - authUseSession, authUseSignIn, authUseSignOut. Reactive across components and across browser tabs. - Markdown: https://gentleduck.org/docs/duck-auth/client/vue.md - [How duck-auth compares](https://gentleduck.org/docs/duck-auth/comparison): Honest tradeoffs versus NextAuth/Auth.js, Clerk, WorkOS, Lucia, and Better-Auth. What we picked, what we deliberately don't do. - Markdown: https://gentleduck.org/docs/duck-auth/comparison.md - [Concepts & glossary](https://gentleduck.org/docs/duck-auth/concepts): The vocabulary - AAL, AMR, transport, provider, channel, facet, freshness, step-up - all defined in one place. - Markdown: https://gentleduck.org/docs/duck-auth/concepts.md - [Anomaly detection](https://gentleduck.org/docs/duck-auth/core/anomaly/index): Hijack / device-fingerprint / IP-shift detectors that gate session use; aggregated into a single allow / step-up / deny decision. - Markdown: https://gentleduck.org/docs/duck-auth/core/anomaly/index.md - [Anomaly detection](https://gentleduck.org/docs/duck-auth/core/anomaly): Detector registry. Impossible-travel and device-fingerprint detectors. Aggregator emits allow / deny / step-up. - Markdown: https://gentleduck.org/docs/duck-auth/core/anomaly.md - [Captcha](https://gentleduck.org/docs/duck-auth/core/captcha): Pluggable bot defense - Turnstile, hCaptcha, reCAPTCHA v3, and a Null verifier for tests. Wire into signin / signup / magic-link routes. - Markdown: https://gentleduck.org/docs/duck-auth/core/captcha.md - [Compliance](https://gentleduck.org/docs/duck-auth/core/compliance/index): GDPR / SOC 2 / HIPAA primitives - audit events, encrypted-at-rest profile data, retention windows, data-export and data-erase flows. - Markdown: https://gentleduck.org/docs/duck-auth/core/compliance/index.md - [Compliance presets](https://gentleduck.org/docs/duck-auth/core/compliance): gdpr, hipaa, soc2, fips - apply a regulatory profile in one call. Strictest preset wins. - Markdown: https://gentleduck.org/docs/duck-auth/core/compliance.md - [Data at rest](https://gentleduck.org/docs/duck-auth/core/data-at-rest): Field-level encryption for sensitive Identity.profile values - AES-256-GCM (local key) or KMS envelope (AWS / Vault / your own). - Markdown: https://gentleduck.org/docs/duck-auth/core/data-at-rest.md - [Errors](https://gentleduck.org/docs/duck-auth/core/errors): Every AUTH/* error code, the HTTP status it maps to, and the wire-safe meta redaction policy. - Markdown: https://gentleduck.org/docs/duck-auth/core/errors.md - [Events](https://gentleduck.org/docs/duck-auth/core/events): AuthInMemoryEvents, AuthRedisEvents, the typed event taxonomy, and AuthWebhookDeliverer for signed outbound delivery. - Markdown: https://gentleduck.org/docs/duck-auth/core/events.md - [Flows](https://gentleduck.org/docs/duck-auth/core/flows): High-level flows - signIn, signOut, signUp state machine, password reset, email change, impersonate. - Markdown: https://gentleduck.org/docs/duck-auth/core/flows.md - [Identities](https://gentleduck.org/docs/duck-auth/core/identities): CRUD, provider linking, identity merge, soft-delete grace, GDPR erase, bulk import, and the typed Profile generic. - Markdown: https://gentleduck.org/docs/duck-auth/core/identities.md - [Core overview](https://gentleduck.org/docs/duck-auth/core/index): AuthEngine is the single faceted root. Sessions, identities, passwords, providers, MFA, flows, API keys, M2M, orgs, idempotency, hijack policy, anomaly - all on one instance. - Markdown: https://gentleduck.org/docs/duck-auth/core/index.md - [Operations facet](https://gentleduck.org/docs/duck-auth/core/operations): Maintenance mode + read-only mode toggles. Drain traffic before a migration; freeze writes during incident response. - Markdown: https://gentleduck.org/docs/duck-auth/core/operations.md - [Orgs (multi-tenancy)](https://gentleduck.org/docs/duck-auth/core/orgs): Typed organization memberships per identity. Pairs with duck-iam's scoped roles for B2B SaaS apps. - Markdown: https://gentleduck.org/docs/duck-auth/core/orgs.md - [Passwords](https://gentleduck.org/docs/duck-auth/core/passwords): AuthScryptHasher (built-in) and AuthArgon2idHasher (lazy peerDep). Hash, verify, and rehash on successful sign-in. - Markdown: https://gentleduck.org/docs/duck-auth/core/passwords.md - [Sessions](https://gentleduck.org/docs/duck-auth/core/sessions): The 7-row rotation matrix, session lifecycle, freshness windows, absolute TTL, and how privilege changes force rotation. - Markdown: https://gentleduck.org/docs/duck-auth/core/sessions.md - [BearerTransport](https://gentleduck.org/docs/duck-auth/core/transports/bearer): Opaque session token in the Authorization header. For mobile, native, and SPA workloads. - Markdown: https://gentleduck.org/docs/duck-auth/core/transports/bearer.md - [CompositeTransport](https://gentleduck.org/docs/duck-auth/core/transports/composite): Try several transports in order. Cookie on the web app, Bearer on the API, same origin. - Markdown: https://gentleduck.org/docs/duck-auth/core/transports/composite.md - [CookieTransport](https://gentleduck.org/docs/duck-auth/core/transports/cookie): Session id in an HttpOnly, __Host-prefixed, SameSite=Lax cookie. The safe first-party default. - Markdown: https://gentleduck.org/docs/duck-auth/core/transports/cookie.md - [DPoP - sender-constrained tokens](https://gentleduck.org/docs/duck-auth/core/transports/dpop): RFC 9449. Bind every JWT or bearer to a client public key so a stolen token is useless without the private key. - Markdown: https://gentleduck.org/docs/duck-auth/core/transports/dpop.md - [Transports](https://gentleduck.org/docs/duck-auth/core/transports/index): How sessions ride on the request - Cookie, Bearer, JWT, Composite, and DPoP binding. - Markdown: https://gentleduck.org/docs/duck-auth/core/transports/index.md - [JwtTransport](https://gentleduck.org/docs/duck-auth/core/transports/jwt): Stateless JWT access token + opaque refresh cookie. HS256, ES256, RS256, EdDSA with live JWKS rotation and refresh-token family reuse detection. - Markdown: https://gentleduck.org/docs/duck-auth/core/transports/jwt.md - [FAQ](https://gentleduck.org/docs/duck-auth/faq): Answers to the questions every team asks before adopting duck-auth. - Markdown: https://gentleduck.org/docs/duck-auth/faq.md - [Bridging to duck-iam](https://gentleduck.org/docs/duck-auth/guides/iam-bridge): Authentication proves who the caller is; duck-iam decides what they may do. Wire the two with a 15-line projectToSubject function. - Markdown: https://gentleduck.org/docs/duck-auth/guides/iam-bridge.md - [Quick start](https://gentleduck.org/docs/duck-auth/guides/index): Wire password + magic-link end-to-end on Express, sign-in to sign-out, in 15 minutes. - Markdown: https://gentleduck.org/docs/duck-auth/guides/index.md - [Adding MFA](https://gentleduck.org/docs/duck-auth/guides/mfa): TOTP, backup codes, WebAuthn-MFA. Enrolment, verify, step-up. - Markdown: https://gentleduck.org/docs/duck-auth/guides/mfa.md - [Installation](https://gentleduck.org/docs/duck-auth/installation/index): Install duck-auth, scaffold a starter, and run the 60-second quickstart with the Memory adapter. - Markdown: https://gentleduck.org/docs/duck-auth/installation/index.md - [Introduction](https://gentleduck.org/docs/duck-auth/introduction): Faceted, framework-agnostic, transport-pluggable authentication for modern TypeScript apps. - Markdown: https://gentleduck.org/docs/duck-auth/introduction.md - [API key provider](https://gentleduck.org/docs/duck-auth/providers/api-key): Long-lived bearer keys for integrations, CLI tools, and machine-to-machine. Plaintext shown once, hashed at rest, scope-checked at verify. - Markdown: https://gentleduck.org/docs/duck-auth/providers/api-key.md - [Providers](https://gentleduck.org/docs/duck-auth/providers/index): Password, magic-link, six OAuth providers, WebAuthn passkeys, API keys, and SAML. Every provider is an instance of AuthProvider.IProvider. - Markdown: https://gentleduck.org/docs/duck-auth/providers/index.md - [Magic-link provider](https://gentleduck.org/docs/duck-auth/providers/magic-link): Passwordless sign-in over email, SMS, or WebPush. Hashed-at-rest tokens, single-use, configurable TTL. - Markdown: https://gentleduck.org/docs/duck-auth/providers/magic-link.md - [Apple OAuth](https://gentleduck.org/docs/duck-auth/providers/oauth/apple): Sign in with Apple. OIDC-compliant. iOS apps require this if you ship any other social sign-in. - Markdown: https://gentleduck.org/docs/duck-auth/providers/oauth/apple.md - [Discord OAuth](https://gentleduck.org/docs/duck-auth/providers/oauth/discord): Discord Sign-in. Useful for community apps, gated content, and game services. - Markdown: https://gentleduck.org/docs/duck-auth/providers/oauth/discord.md - [GitHub OAuth](https://gentleduck.org/docs/duck-auth/providers/oauth/github): GitHub Sign-in with PKCE-S256 and signed state. Default scopes read:user + user:email. - Markdown: https://gentleduck.org/docs/duck-auth/providers/oauth/github.md - [Google OAuth](https://gentleduck.org/docs/duck-auth/providers/oauth/google): Google Sign-in with PKCE-S256, signed state, OIDC nonce. Default scopes openid + email + profile. - Markdown: https://gentleduck.org/docs/duck-auth/providers/oauth/google.md - [OAuth providers](https://gentleduck.org/docs/duck-auth/providers/oauth/index): Six OAuth providers (Google, GitHub, LinkedIn, Microsoft, Discord, Apple), all with PKCE-S256, signed state, and RFC 6749 refresh-token reuse detection. - Markdown: https://gentleduck.org/docs/duck-auth/providers/oauth/index.md - [LinkedIn OAuth](https://gentleduck.org/docs/duck-auth/providers/oauth/linkedin): LinkedIn Sign-in with OIDC. - Markdown: https://gentleduck.org/docs/duck-auth/providers/oauth/linkedin.md - [Microsoft OAuth](https://gentleduck.org/docs/duck-auth/providers/oauth/microsoft): Microsoft Entra ID / personal Microsoft accounts via OpenID Connect. - Markdown: https://gentleduck.org/docs/duck-auth/providers/oauth/microsoft.md - [Passkey provider](https://gentleduck.org/docs/duck-auth/providers/passkey): WebAuthn passkeys, discoverable and username flows. The strongest factor duck-auth ships. - Markdown: https://gentleduck.org/docs/duck-auth/providers/passkey.md - [Password provider](https://gentleduck.org/docs/duck-auth/providers/password): Email + password sign-in with per-email rate limiting and auto-rehash on parameter drift. - Markdown: https://gentleduck.org/docs/duck-auth/providers/password.md - [SAML provider](https://gentleduck.org/docs/duck-auth/providers/saml): IdP-initiated SAML 2.0 SSO. Pairs with @node-saml/node-saml for the protocol details; duck-auth handles session minting. - Markdown: https://gentleduck.org/docs/duck-auth/providers/saml.md - [Elysia adapter](https://gentleduck.org/docs/duck-auth/server/elysia): Elysia (Bun) - Web-Fetch-native, fast cold starts. Mounts as a plugin. - Markdown: https://gentleduck.org/docs/duck-auth/server/elysia.md - [Express adapter](https://gentleduck.org/docs/duck-auth/server/express): Express 4+ middleware. Each mount returns an Express RequestHandler. - Markdown: https://gentleduck.org/docs/duck-auth/server/express.md - [Fastify adapter](https://gentleduck.org/docs/duck-auth/server/fastify): Fastify 4+ as a plugin. Schema-validated routes by default. - Markdown: https://gentleduck.org/docs/duck-auth/server/fastify.md - [Generic Web-Fetch adapter](https://gentleduck.org/docs/duck-auth/server/generic): Mount duck-auth on any runtime that speaks the Web-Fetch Request / Response standard. Bun, Deno, Cloudflare Workers, Service Workers - all work. - Markdown: https://gentleduck.org/docs/duck-auth/server/generic.md - [gRPC adapter](https://gentleduck.org/docs/duck-auth/server/grpc): Server interceptor for @grpc/grpc-js. Resolves the session from per-call metadata, raises typed AUTH/* errors. - Markdown: https://gentleduck.org/docs/duck-auth/server/grpc.md - [Hono adapter](https://gentleduck.org/docs/duck-auth/server/hono): Hono 4+ handlers. Runs on Bun, Node, Cloudflare Workers, Deno, and Vercel Edge. - Markdown: https://gentleduck.org/docs/duck-auth/server/hono.md - [Server adapters](https://gentleduck.org/docs/duck-auth/server/index): Mount duck-auth on Express, Hono, Next.js, Fastify, Koa, Elysia, NestJS, gRPC, or any Web-Fetch runtime. - Markdown: https://gentleduck.org/docs/duck-auth/server/index.md - [Koa adapter](https://gentleduck.org/docs/duck-auth/server/koa): Koa 2+ middleware. Composes naturally with koa-router and koa-bodyparser. - Markdown: https://gentleduck.org/docs/duck-auth/server/koa.md - [NestJS adapter](https://gentleduck.org/docs/duck-auth/server/nestjs): NestJS guard + module + controller. Decorator-driven session resolution. - Markdown: https://gentleduck.org/docs/duck-auth/server/nestjs.md - [Next.js adapter](https://gentleduck.org/docs/duck-auth/server/next): Next.js App Router. Catch-all [...auth]/route.ts mount, plus standalone Web-Fetch route handlers. - Markdown: https://gentleduck.org/docs/duck-auth/server/next.md - ["Grid"](https://gentleduck.org/docs/duck-calendar/api/grid): "Pure functions for building calendar month grids, year pickers, and decade views." - Markdown: https://gentleduck.org/docs/duck-calendar/api/grid.md - ["API Reference"](https://gentleduck.org/docs/duck-calendar/api/index): "Complete API reference for @gentleduck/calendar hooks, core functions, and types." - Markdown: https://gentleduck.org/docs/duck-calendar/api/index.md - ["Navigation"](https://gentleduck.org/docs/duck-calendar/api/navigation): "Pure functions for navigating between months, years, and decades." - Markdown: https://gentleduck.org/docs/duck-calendar/api/navigation.md - ["Selection"](https://gentleduck.org/docs/duck-calendar/api/selection): "Pure functions for computing and applying selection state to calendar grids." - Markdown: https://gentleduck.org/docs/duck-calendar/api/selection.md - ["useCalendar"](https://gentleduck.org/docs/duck-calendar/api/use-calendar): "The main calendar hook providing state, actions, and prop getters for building date pickers." - Markdown: https://gentleduck.org/docs/duck-calendar/api/use-calendar.md - ["useDateTime"](https://gentleduck.org/docs/duck-calendar/api/use-datetime): "Combined date and time picker hook that composes useCalendar and useTimePicker." - Markdown: https://gentleduck.org/docs/duck-calendar/api/use-datetime.md - ["useTimePicker"](https://gentleduck.org/docs/duck-calendar/api/use-time-picker): "Time picker hook with spinbutton fields, keyboard input, and AM/PM support." - Markdown: https://gentleduck.org/docs/duck-calendar/api/use-time-picker.md - ["Benchmarks"](https://gentleduck.org/docs/duck-calendar/benchmarks): "Real bundle size and performance measurements for @gentleduck/calendar compared to react-day-picker, react-aria, react-datepicker, and react-calendar." - Markdown: https://gentleduck.org/docs/duck-calendar/benchmarks.md - [Changelog](https://gentleduck.org/docs/duck-calendar/changelog): Release history for @gentleduck/calendar. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-calendar/changelog.md - ["Lesson 1: Introduction"](https://gentleduck.org/docs/duck-calendar/course/01-introduction): "Why we built our own calendar engine and what problems it solves." - Markdown: https://gentleduck.org/docs/duck-calendar/course/01-introduction.md - ["Lesson 2: Adapter Pattern"](https://gentleduck.org/docs/duck-calendar/course/02-adapter-pattern): "Understanding Adapter.IDateAdapter and how to plug in any date library." - Markdown: https://gentleduck.org/docs/duck-calendar/course/02-adapter-pattern.md - ["Lesson 3: Building a Grid"](https://gentleduck.org/docs/duck-calendar/course/03-building-a-grid): "Using buildCalendarMonth to generate and render a calendar month grid." - Markdown: https://gentleduck.org/docs/duck-calendar/course/03-building-a-grid.md - ["Lesson 4: Selection Modes"](https://gentleduck.org/docs/duck-calendar/course/04-selection-modes): "Implementing single, range, and multi-select with useCalendar." - Markdown: https://gentleduck.org/docs/duck-calendar/course/04-selection-modes.md - ["Lesson 5: Keyboard and Accessibility"](https://gentleduck.org/docs/duck-calendar/course/05-keyboard-a11y): "Keyboard navigation, ARIA roles, and screen reader support." - Markdown: https://gentleduck.org/docs/duck-calendar/course/05-keyboard-a11y.md - ["Lesson 6: Time Picker"](https://gentleduck.org/docs/duck-calendar/course/06-time-picker): "Using useTimePicker and useDateTime for time input." - Markdown: https://gentleduck.org/docs/duck-calendar/course/06-time-picker.md - ["Lesson 7: Styling"](https://gentleduck.org/docs/duck-calendar/course/07-styling): "Using data attributes to style the calendar with Tailwind or plain CSS." - Markdown: https://gentleduck.org/docs/duck-calendar/course/07-styling.md - ["Lesson 8: Performance"](https://gentleduck.org/docs/duck-calendar/course/08-performance): "Benchmarks, bundle size comparisons, and optimization strategies." - Markdown: https://gentleduck.org/docs/duck-calendar/course/08-performance.md - ["Course"](https://gentleduck.org/docs/duck-calendar/course/index): "A hands-on course that walks you through building a complete calendar from scratch using @gentleduck/calendar." - Markdown: https://gentleduck.org/docs/duck-calendar/course/index.md - ["Getting Started"](https://gentleduck.org/docs/duck-calendar/getting-started): "Install @gentleduck/calendar, wire up the hook, and render a month grid." - Markdown: https://gentleduck.org/docs/duck-calendar/getting-started.md - ["Accessibility"](https://gentleduck.org/docs/duck-calendar/guides/accessibility): "Keyboard navigation, ARIA attributes, and screen reader support in @gentleduck/calendar." - Markdown: https://gentleduck.org/docs/duck-calendar/guides/accessibility.md - ["Date Adapters"](https://gentleduck.org/docs/duck-calendar/guides/adapters): "Understand the DateAdapter pattern and how to plug in any date library." - Markdown: https://gentleduck.org/docs/duck-calendar/guides/adapters.md - ["Guides"](https://gentleduck.org/docs/duck-calendar/guides/index): "Practical guides for using @gentleduck/calendar in real-world applications." - Markdown: https://gentleduck.org/docs/duck-calendar/guides/index.md - ["Styling"](https://gentleduck.org/docs/duck-calendar/guides/styling): "Style your calendar using data attributes, Tailwind CSS, or plain CSS." - Markdown: https://gentleduck.org/docs/duck-calendar/guides/styling.md - ["duck-calendar"](https://gentleduck.org/docs/duck-calendar/introduction): "Headless, framework-agnostic calendar engine with date adapter pattern, React hooks, and compound components." - Markdown: https://gentleduck.org/docs/duck-calendar/introduction.md - [Changelog](https://gentleduck.org/docs/duck-cli/changelog): Release history for @gentleduck/cli. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-cli/changelog.md - [add](https://gentleduck.org/docs/duck-cli/commands/add): Install components from the registry. Source files copied directly into your project — no runtime dependency. - Markdown: https://gentleduck.org/docs/duck-cli/commands/add.md - [diff](https://gentleduck.org/docs/duck-cli/commands/diff): Show differences between local component copies and the latest registry versions. Syntax-highlighted side-by-side TUI. - Markdown: https://gentleduck.org/docs/duck-cli/commands/diff.md - [init](https://gentleduck.org/docs/duck-cli/commands/init): Initialize project config and optionally install components. Supports templates and monorepo setup. - Markdown: https://gentleduck.org/docs/duck-cli/commands/init.md - [list](https://gentleduck.org/docs/duck-cli/commands/list): List available components from the registry. Filter by type, JSON output for scripts. - Markdown: https://gentleduck.org/docs/duck-cli/commands/list.md - [remove](https://gentleduck.org/docs/duck-cli/commands/remove): Remove installed components and clean up unused dependencies. - Markdown: https://gentleduck.org/docs/duck-cli/commands/remove.md - [theme](https://gentleduck.org/docs/duck-cli/commands/theme): Manage theme tokens — list available themes, inspect color values, install one into your globals.css. - Markdown: https://gentleduck.org/docs/duck-cli/commands/theme.md - [update](https://gentleduck.org/docs/duck-cli/commands/update): Update installed components with the interactive merge TUI. Hunk-by-hunk conflict resolution without git markers. - Markdown: https://gentleduck.org/docs/duck-cli/commands/update.md - [monorepo usage](https://gentleduck.org/docs/duck-cli/guides/monorepo): Run the CLI inside a monorepo — workspace targeting, config inheritance, validation rules. - Markdown: https://gentleduck.org/docs/duck-cli/guides/monorepo.md - [gentleduck/cli](https://gentleduck.org/docs/duck-cli/introduction): "CLI for initializing projects, adding components, managing themes, and updating with an interactive merge TUI." - Markdown: https://gentleduck.org/docs/duck-cli/introduction.md - [api routes](https://gentleduck.org/docs/duck-gen/api-routes): Learn how Duck Gen scans NestJS controllers and generates fully typed route maps with request and response types. - Markdown: https://gentleduck.org/docs/duck-gen/api-routes.md - [Changelog](https://gentleduck.org/docs/duck-gen/changelog): Release history for @gentleduck/gen. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-gen/changelog.md - [configuration](https://gentleduck.org/docs/duck-gen/configuration): Complete reference for every duck-gen.json configuration option with examples and explanations. - Markdown: https://gentleduck.org/docs/duck-gen/configuration.md - ["Chapter 7: Duck Query Client"](https://gentleduck.org/docs/duck-gen/course/duck-query-client): Set up Duck Query for type-safe HTTP requests that use your generated route types. - Markdown: https://gentleduck.org/docs/duck-gen/course/duck-query-client.md - ["Chapter 3: Your First Controller"](https://gentleduck.org/docs/duck-gen/course/first-controller): Build a NestJS controller with typed DTOs and decorators that Duck Gen can scan. - Markdown: https://gentleduck.org/docs/duck-gen/course/first-controller.md - ["Chapter 4: Generating Types"](https://gentleduck.org/docs/duck-gen/course/generating-types): Run Duck Gen for the first time and understand the generated output files. - Markdown: https://gentleduck.org/docs/duck-gen/course/generating-types.md - [Course Overview](https://gentleduck.org/docs/duck-gen/course/index): A step-by-step course that teaches you Duck Gen from the ground up. No prior knowledge required. - Markdown: https://gentleduck.org/docs/duck-gen/course/index.md - ["Chapter 6: Message Keys"](https://gentleduck.org/docs/duck-gen/course/message-keys): Add typed i18n message registries using @duckgen JSDoc tags. - Markdown: https://gentleduck.org/docs/duck-gen/course/message-keys.md - ["Chapter 2: Project Setup"](https://gentleduck.org/docs/duck-gen/course/project-setup): Create a NestJS project, install Duck Gen, and configure it for type generation. - Markdown: https://gentleduck.org/docs/duck-gen/course/project-setup.md - ["Chapter 8: Real World Patterns"](https://gentleduck.org/docs/duck-gen/course/real-world-patterns): Production patterns for error handling, interceptors, CI/CD integration, and team workflows. - Markdown: https://gentleduck.org/docs/duck-gen/course/real-world-patterns.md - ["Chapter 1: The Problem"](https://gentleduck.org/docs/duck-gen/course/the-problem): Why manually syncing types between server and client breaks down, and how code generation solves it. - Markdown: https://gentleduck.org/docs/duck-gen/course/the-problem.md - ["Chapter 5: Using Generated Types"](https://gentleduck.org/docs/duck-gen/course/using-generated-types): Import generated types in your client code and get full type safety for API calls. - Markdown: https://gentleduck.org/docs/duck-gen/course/using-generated-types.md - [generated types](https://gentleduck.org/docs/duck-gen/generated-types): Complete reference for every type exported by Duck Gen, with usage examples for API routes and message registries. - Markdown: https://gentleduck.org/docs/duck-gen/generated-types.md - [end-to-end guide](https://gentleduck.org/docs/duck-gen/guides/index): Complete walkthrough. Build a NestJS backend, generate types with Duck Gen, and consume them with Duck Query on the client. - Markdown: https://gentleduck.org/docs/duck-gen/guides/index.md - [installation](https://gentleduck.org/docs/duck-gen/installation/index): Step-by-step guide to install Duck Gen and Duck Query, configure your project, and generate your first types. - Markdown: https://gentleduck.org/docs/duck-gen/installation/index.md - [duck gen](https://gentleduck.org/docs/duck-gen/introduction): Type-safe API route and message key generator for TypeScript. Scans your server code and emits .d.ts files so your client types always match your backend contracts. - Markdown: https://gentleduck.org/docs/duck-gen/introduction.md - [messages](https://gentleduck.org/docs/duck-gen/messages): Learn how Duck Gen scans @duckgen tags and generates strongly-typed i18n dictionaries and message registries. - Markdown: https://gentleduck.org/docs/duck-gen/messages.md - [templates](https://gentleduck.org/docs/duck-gen/templates): Full Duck Gen + Duck Query + NestJS example with DTOs, constants, and a controller. - Markdown: https://gentleduck.org/docs/duck-gen/templates.md - [Changelog](https://gentleduck.org/docs/duck-hooks/changelog): Release history for @gentleduck/hooks. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-hooks/changelog.md - [gentleduck/hooks](https://gentleduck.org/docs/duck-hooks/introduction): "A collection of reusable React hooks for the @gentleduck ecosystem." - Markdown: https://gentleduck.org/docs/duck-hooks/introduction.md - [defineIam()](https://gentleduck.org/docs/duck-iam/advanced/config/access-config): The factory - input shape, optional fields, how const assertions work, and what the return value gives you. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/config/access-config.md - [typed vs untyped comparison](https://gentleduck.org/docs/duck-iam/advanced/config/comparison): Side-by-side - what each approach catches, what each misses, and when to use which. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/config/comparison.md - [typed context](https://gentleduck.org/docs/duck-iam/advanced/config/context): Pass a context phantom field for full dot-path intellisense, value-type narrowing, and per-resource attribute keys. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/config/context.md - [typed $-references](https://gentleduck.org/docs/duck-iam/advanced/config/dollar-paths): DollarPaths utility - typed $-prefixed value autocomplete for dynamic cross-field comparisons. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/config/dollar-paths.md - [type-safe config overview](https://gentleduck.org/docs/duck-iam/advanced/config/index): defineIam() - lock down actions, resources, scopes, roles, and conditions at the type level. Compile-time validation for the whole permission schema. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/config/index.md - [methods reference](https://gentleduck.org/docs/duck-iam/advanced/config/methods): All access.* methods - defineRole, definePolicy, defineRule, when, createEngine, checks, validateRoles, validatePolicy. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/config/methods.md - [Devtools panel](https://gentleduck.org/docs/duck-iam/advanced/devtools): Floating React panel for inspecting the engine - flow recorder, decision tester, metrics, policies / roles / subjects. Dev-only, tree-shaken in prod. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/devtools.md - [admin API](https://gentleduck.org/docs/duck-iam/advanced/engine/admin): engine.admin.* - runtime CRUD for policies, roles, role assignments, and subject attributes. Automatically invalidates caches. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/engine/admin.md - [caching](https://gentleduck.org/docs/duck-iam/advanced/engine/caching): Four LRU caches, automatic invalidation via the admin API, manual invalidation, and tuning for high-traffic apps. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/engine/caching.md - [hooks](https://gentleduck.org/docs/duck-iam/advanced/engine/hooks): beforeEvaluate, afterEvaluate, onDeny, onError, onPolicyError, onMetrics - observe and modify the evaluation lifecycle. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/engine/hooks.md - [engine overview](https://gentleduck.org/docs/duck-iam/advanced/engine/index): The Engine class - central evaluator. Configuration, the IDecision object, and a tour of the API surface. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/engine/index.md - [methods](https://gentleduck.org/docs/duck-iam/advanced/engine/methods): engine.can, check, authorize, permissions, explain, preload, healthCheck, stats, dispose - when to use each. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/engine/methods.md - [development vs production mode](https://gentleduck.org/docs/duck-iam/advanced/engine/modes): The mode option - full AccessControl.IDecision objects with timing in dev, plain booleans with zero allocations in prod. 2x performance trade-off. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/engine/modes.md - [explain and debug](https://gentleduck.org/docs/duck-iam/advanced/explain): Use engine.explain() to trace every policy, rule, and condition evaluation. Validate policies and roles to catch config mistakes before they reach production. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/explain.md - [JSON schema](https://gentleduck.org/docs/duck-iam/advanced/json-schema): IAM_POLICY_JSON_SCHEMA - hand-authored JSON Schema (Draft 2020-12) for AccessControl.IPolicy. Wire into editors, admin forms, or out-of-band validators. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/json-schema.md - [utilities](https://gentleduck.org/docs/duck-iam/advanced/utilities): Low-level matching, resolution, and condition functions exported from @gentleduck/iam for custom evaluation pipelines, testing, and routing guards. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/utilities.md - [validation](https://gentleduck.org/docs/duck-iam/advanced/validation): validatePolicy, validateRoles, validateRole, parsePolicyRow, parseRoleRow + the closed-set limits that the engine enforces at boot. - Markdown: https://gentleduck.org/docs/duck-iam/advanced/validation.md - ["Benchmarks"](https://gentleduck.org/docs/duck-iam/benchmarks): "Real performance measurements and honest comparisons: @gentleduck/iam benchmarked against every major JS authorization library." - Markdown: https://gentleduck.org/docs/duck-iam/benchmarks.md - [Changelog](https://gentleduck.org/docs/duck-iam/changelog): Release history for @gentleduck/iam. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-iam/changelog.md - [How duck-iam compares](https://gentleduck.org/docs/duck-iam/comparison): Honest tradeoffs versus Casbin, CASL, Oso, OPA, AccessControl.js, and roll-your-own. - Markdown: https://gentleduck.org/docs/duck-iam/comparison.md - [cross-policy combination](https://gentleduck.org/docs/duck-iam/core/cross-policy): How policies combine across an engine - AND (default), allow-overrides, first-applicable, NotApplicable semantics, and how intra-policy combining stays separate. - Markdown: https://gentleduck.org/docs/duck-iam/core/cross-policy.md - [evaluation pipeline](https://gentleduck.org/docs/duck-iam/core/evaluation): Step-by-step trace of an authorization check - from engine.can() through subject resolution, policy collection, rule matching, and AND-combination. - Markdown: https://gentleduck.org/docs/duck-iam/core/evaluation.md - [core overview](https://gentleduck.org/docs/duck-iam/core/index): How duck-iam combines RBAC and ABAC into a single evaluation pipeline. Subjects, resources, policies, rules, and combining algorithms. - Markdown: https://gentleduck.org/docs/duck-iam/core/index.md - [building policies](https://gentleduck.org/docs/duck-iam/core/policies/building): The definePolicy() builder, defineRule(), wildcards, and hierarchical resource matching. - Markdown: https://gentleduck.org/docs/duck-iam/core/policies/building.md - [combining algorithms](https://gentleduck.org/docs/duck-iam/core/policies/combining-algorithms): deny-overrides, allow-overrides, first-match, and highest-priority - pick the right strategy for each policy. - Markdown: https://gentleduck.org/docs/duck-iam/core/policies/combining-algorithms.md - [conditions](https://gentleduck.org/docs/duck-iam/core/policies/conditions): The When builder - operators, semantic shortcuts, and field paths for ABAC condition logic. - Markdown: https://gentleduck.org/docs/duck-iam/core/policies/conditions.md - [$-variable references](https://gentleduck.org/docs/duck-iam/core/policies/dollar-variables): Compare two fields on the same request - $subject.id, $resource.attributes.ownerId, $env.ip - for owner checks, attribute matching, and self-action prevention. - Markdown: https://gentleduck.org/docs/duck-iam/core/policies/dollar-variables.md - [layered example](https://gentleduck.org/docs/duck-iam/core/policies/example-layered): Full RBAC + ABAC example combining roles, policies, scopes, and the engine. Walks through every step of evaluation. - Markdown: https://gentleduck.org/docs/duck-iam/core/policies/example-layered.md - [policies overview](https://gentleduck.org/docs/duck-iam/core/policies/index): When and why to use ABAC policies - time, IP, attribute, and dynamic deny rules that go beyond what RBAC roles can express. - Markdown: https://gentleduck.org/docs/duck-iam/core/policies/index.md - [nesting (and / or / not)](https://gentleduck.org/docs/duck-iam/core/policies/nesting): Nested condition groups via and(), or(), not(), and whenAny(). Depth limit, empty-group semantics, and composition patterns. - Markdown: https://gentleduck.org/docs/duck-iam/core/policies/nesting.md - [rules](https://gentleduck.org/docs/duck-iam/core/policies/rules): Rule builder API - effect, actions, resources, priority, scopes, and metadata. - Markdown: https://gentleduck.org/docs/duck-iam/core/policies/rules.md - [policy targets](https://gentleduck.org/docs/duck-iam/core/policies/targets): Pre-filter policies by action, resource, or role. Skip evaluation entirely when targets don't match. - Markdown: https://gentleduck.org/docs/duck-iam/core/policies/targets.md - [primitives](https://gentleduck.org/docs/duck-iam/core/primitives): Core data types - Subject, Resource, Action, Scope, Environment, AccessRequest, Decision. The shapes every check is built on. - Markdown: https://gentleduck.org/docs/duck-iam/core/primitives.md - [conditional permissions](https://gentleduck.org/docs/duck-iam/core/roles/conditional): grantWhen() - attach conditions to a single permission. Use for owner checks, attribute matching, and role-local logic. - Markdown: https://gentleduck.org/docs/duck-iam/core/roles/conditional.md - [defining roles](https://gentleduck.org/docs/duck-iam/core/roles/definition): defineRole() builder, grant variants (grantAll, grantCRUD, grantRead, grantScoped), and metadata. - Markdown: https://gentleduck.org/docs/duck-iam/core/roles/definition.md - [roles overview](https://gentleduck.org/docs/duck-iam/core/roles/index): RBAC in duck-iam - roles convert to ABAC policies internally and run through the same evaluation pipeline. - Markdown: https://gentleduck.org/docs/duck-iam/core/roles/index.md - [inheritance](https://gentleduck.org/docs/duck-iam/core/roles/inheritance): inherits() - single and multi-parent inheritance, cycle handling, deep chains. - Markdown: https://gentleduck.org/docs/duck-iam/core/roles/inheritance.md - [rolesToPolicy (under the hood)](https://gentleduck.org/docs/duck-iam/core/roles/roles-to-policy): How role definitions become a synthetic ABAC policy at engine load time. - Markdown: https://gentleduck.org/docs/duck-iam/core/roles/roles-to-policy.md - [scoped roles (multi-tenancy)](https://gentleduck.org/docs/duck-iam/core/roles/scoped): Three scoping mechanisms - role-level scope, permission-level scope, and scoped role assignments. Pick the right one for your tenancy model. - Markdown: https://gentleduck.org/docs/duck-iam/core/roles/scoped.md - [type-safe roles](https://gentleduck.org/docs/duck-iam/core/roles/type-safe): defineIam() constraints on actions, resources, scopes, and roles. validateRoles() pre-flight checks. - Markdown: https://gentleduck.org/docs/duck-iam/core/roles/type-safe.md - [rule matching](https://gentleduck.org/docs/duck-iam/core/rule-matching): How a rule fires - three checks (action, resource, conditions), wildcards, hierarchical resource matching, and field resolution. - Markdown: https://gentleduck.org/docs/duck-iam/core/rule-matching.md - ["chapter 1: your first permission check"](https://gentleduck.org/docs/duck-iam/course/chapter-1): Install duck-iam, define your first role, create an engine, and run your first permission check, all in under 20 lines of code. - Markdown: https://gentleduck.org/docs/duck-iam/course/chapter-1.md - ["chapter 2: role hierarchies"](https://gentleduck.org/docs/duck-iam/course/chapter-2): Build a role hierarchy with inheritance, assign multiple roles, use wildcards, grant shortcuts, and validate your configuration at startup. - Markdown: https://gentleduck.org/docs/duck-iam/course/chapter-2.md - ["chapter 3: policies, rules, and conditions"](https://gentleduck.org/docs/duck-iam/course/chapter-3): Go beyond roles with attribute-based access control. Write policies with conditions that check resource ownership, time of day, and custom attributes. - Markdown: https://gentleduck.org/docs/duck-iam/course/chapter-3.md - ["chapter 4: the engine in depth"](https://gentleduck.org/docs/duck-iam/course/chapter-4): Every engine method, hook, cache, batch permission, explain/debug, and Admin API. Build a complete authorization backend. - Markdown: https://gentleduck.org/docs/duck-iam/course/chapter-4.md - ["chapter 5: multi-tenant scoping"](https://gentleduck.org/docs/duck-iam/course/chapter-5): Add multi-tenant authorization to BlogDuck. Users get different roles in different organizations, and permissions are isolated per tenant. - Markdown: https://gentleduck.org/docs/duck-iam/course/chapter-5.md - ["chapter 6: server integration"](https://gentleduck.org/docs/duck-iam/course/chapter-6): Add authorization middleware to your backend. Protect Express, Hono, NestJS, or Next.js routes with duck-iam guards and generate permission maps for the client. - Markdown: https://gentleduck.org/docs/duck-iam/course/chapter-6.md - ["chapter 7: client libraries"](https://gentleduck.org/docs/duck-iam/course/chapter-7): Use permission maps in the browser to show and hide UI elements. Integrate with React, Vue, or vanilla JavaScript for real-time permission-based rendering. - Markdown: https://gentleduck.org/docs/duck-iam/course/chapter-7.md - ["chapter 8: production readiness"](https://gentleduck.org/docs/duck-iam/course/chapter-8): Ship BlogDuck to production with type-safe configuration, database adapters, validation, testing strategies, and security hardening. - Markdown: https://gentleduck.org/docs/duck-iam/course/chapter-8.md - [build an app with duck-iam](https://gentleduck.org/docs/duck-iam/course/index): A hands-on course that takes you from zero to a production-ready authorization system. Build a real blog platform step by step, using every feature along the way. - Markdown: https://gentleduck.org/docs/duck-iam/course/index.md - [Pairing with duck-auth](https://gentleduck.org/docs/duck-iam/guides/auth-bridge): duck-iam answers "what may they do?"; duck-auth answers "who are they?". Wire the two with a tiny projectToSubject function. - Markdown: https://gentleduck.org/docs/duck-iam/guides/auth-bridge.md - [Cookbook](https://gentleduck.org/docs/duck-iam/guides/cookbook): Common authorization patterns as copy-pasteable recipes - owners, public-vs-private, role hierarchies, multi-tenant, time-bound access. - Markdown: https://gentleduck.org/docs/duck-iam/guides/cookbook.md - [quick start](https://gentleduck.org/docs/duck-iam/guides/index): End-to-end guide covering role definitions, ABAC policies, server middleware, client-side permission checks, multi-tenant scoping, and owner-only conditions. - Markdown: https://gentleduck.org/docs/duck-iam/guides/index.md - [production deployment](https://gentleduck.org/docs/duck-iam/guides/production): SRE playbook for duck-iam - cache TTL trade-offs, multi-node invalidation, fail-closed defaults, recommended hook set, adapter timeout + retry tuning, health checks, and metrics. - Markdown: https://gentleduck.org/docs/duck-iam/guides/production.md - [Troubleshooting](https://gentleduck.org/docs/duck-iam/guides/troubleshooting): Common errors, what causes them, and how to fix them. Plus the right knobs for diagnosing your own conditions. - Markdown: https://gentleduck.org/docs/duck-iam/guides/troubleshooting.md - [installation](https://gentleduck.org/docs/duck-iam/installation/index): Install duck-iam, configure a storage adapter, and run your first permission check in under five minutes. - Markdown: https://gentleduck.org/docs/duck-iam/installation/index.md - [choosing & FAQ](https://gentleduck.org/docs/duck-iam/integrations/adapters/comparison): Pick the right adapter for your stack and answer common questions about persistence, scoped roles, idempotency, and migration. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/adapters/comparison.md - [custom adapter](https://gentleduck.org/docs/duck-iam/integrations/adapters/custom): Implement the Adapter interface to connect duck-iam to any storage backend - DynamoDB, MongoDB, Firestore, Supabase, or your in-house DB. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/adapters/custom.md - [drizzle adapter](https://gentleduck.org/docs/duck-iam/integrations/adapters/drizzle): Drizzle ORM adapter with pre-built schemas for PostgreSQL, MySQL, and SQLite. Drop-in tables with idempotent migrations via drizzle-kit. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/adapters/drizzle.md - [file adapter](https://gentleduck.org/docs/duck-iam/integrations/adapters/file): Filesystem-backed JSON adapter for CLIs, dev fixtures, and single-process apps with modest policy counts. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/adapters/file.md - [http adapter](https://gentleduck.org/docs/duck-iam/integrations/adapters/http): Delegates storage operations to a remote duck-iam API. Useful for client-server splits, microservices, and shared policy stores. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/adapters/http.md - [adapters overview](https://gentleduck.org/docs/duck-iam/integrations/adapters/index): Storage layer for duck-iam - pick a built-in adapter (Memory, File, Prisma, Drizzle, Redis, HTTP) or implement IamAdapter.IAdapter for custom backends. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/adapters/index.md - [memory adapter](https://gentleduck.org/docs/duck-iam/integrations/adapters/memory): In-process Map-backed adapter for development, testing, and prototyping. Zero dependencies, no persistence. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/adapters/memory.md - [prisma adapter](https://gentleduck.org/docs/duck-iam/integrations/adapters/prisma): Persist policies, roles, assignments, and subject attributes through Prisma Client. Ships a reference schema for any Prisma-supported database. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/adapters/prisma.md - [redis adapter](https://gentleduck.org/docs/duck-iam/integrations/adapters/redis): Distributed key/value backend using ioredis or node-redis. Idempotent assignments via Redis sets, multi-tenant isolation via key prefix. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/adapters/redis.md - [client overview](https://gentleduck.org/docs/duck-iam/integrations/client/index): Client-side permission checks for React, Vue, and vanilla JavaScript. Server-driven hydration with sub-millisecond lookups. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/client/index.md - [PermissionMap reference](https://gentleduck.org/docs/duck-iam/integrations/client/permission-map): Wire format, key encoding rules, and iamBuildPermissionKey helper for the duck-iam client integrations. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/client/permission-map.md - [react](https://gentleduck.org/docs/duck-iam/integrations/client/react): React Provider, hooks, and declarative Can/Cannot components for duck-iam. Server-driven hydration with usePermissions for client-only flows. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/client/react.md - [vanilla js](https://gentleduck.org/docs/duck-iam/integrations/client/vanilla): Framework-agnostic AccessClient with subscribe, merge, fromServer, and helpers for any JS runtime. Foundation for Svelte, Solid, and custom integrations. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/client/vanilla.md - [vue](https://gentleduck.org/docs/duck-iam/integrations/client/vue): Vue 3 plugin, composable, and Can/Cannot components for duck-iam. Reactive permissions via provide/inject. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/client/vue.md - [Integrations](https://gentleduck.org/docs/duck-iam/integrations/index): Where duck-iam plugs into the rest of your stack - adapters, server middleware, client SDKs, observability, and cross-instance invalidation. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/index.md - [redis invalidator](https://gentleduck.org/docs/duck-iam/integrations/invalidators/redis): Cross-instance cache invalidation broadcaster backed by Redis pub/sub. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/invalidators/redis.md - [metrics aggregator](https://gentleduck.org/docs/duck-iam/integrations/observability/metrics): In-process p50 / p95 / p99 + allow / deny counters over the engine's onMetrics hook. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/observability/metrics.md - [express](https://gentleduck.org/docs/duck-iam/integrations/server/express): Express middleware, per-route guard, and admin router for duck-iam. No runtime dependency on Express. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/server/express.md - [generic helpers](https://gentleduck.org/docs/duck-iam/integrations/server/generic): Framework-agnostic helpers - IAM_METHOD_ACTION_MAP, createSubjectCan, extractEnvironment, generatePermissionMap. Use across runtimes or for custom integrations. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/server/generic.md - [hono](https://gentleduck.org/docs/duck-iam/integrations/server/hono): Hono middleware and per-route guard for duck-iam. Edge-friendly with cf-connecting-ip detection and zero hard dependencies. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/server/hono.md - [server middleware overview](https://gentleduck.org/docs/duck-iam/integrations/server/index): Server-side integrations for Express, NestJS, Hono, and Next.js - extract identity, infer action and resource, call engine.can(). - Markdown: https://gentleduck.org/docs/duck-iam/integrations/server/index.md - [nestjs](https://gentleduck.org/docs/duck-iam/integrations/server/nest): NestJS guard, @Authorize decorator, type-safe decorator factory, and engine provider for duck-iam. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/server/nest.md - [next.js app router](https://gentleduck.org/docs/duck-iam/integrations/server/next): Route handler wrapper, server component checks, permission map generation, and edge middleware for Next.js. - Markdown: https://gentleduck.org/docs/duck-iam/integrations/server/next.md - [Introduction](https://gentleduck.org/docs/duck-iam/introduction): Type-safe RBAC + ABAC authorization engine for TypeScript. - Markdown: https://gentleduck.org/docs/duck-iam/introduction.md - [types & namespaces](https://gentleduck.org/docs/duck-iam/types): I-prefixed interfaces under per-module namespaces - the type-import contract for duck-iam consumers. - Markdown: https://gentleduck.org/docs/duck-iam/types.md - [Changelog](https://gentleduck.org/docs/duck-lazy/changelog): Release history for @gentleduck/lazy. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-lazy/changelog.md - ["gentleduck/lazy"](https://gentleduck.org/docs/duck-lazy/introduction): Lightweight React library for lazy-loading images and components using IntersectionObserver. - Markdown: https://gentleduck.org/docs/duck-lazy/introduction.md - [Changelog](https://gentleduck.org/docs/duck-libs/changelog): Release history for @gentleduck/libs. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-libs/changelog.md - [gentleduck/libs](https://gentleduck.org/docs/duck-libs/introduction): "A collection of tiny, framework-agnostic utility functions. Each utility lives in its own folder and can be imported individually or all together." - Markdown: https://gentleduck.org/docs/duck-libs/introduction.md - [Changelog](https://gentleduck.org/docs/duck-motion/changelog): Release history for @gentleduck/motion. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-motion/changelog.md - [gentleduck motion](https://gentleduck.org/docs/duck-motion/introduction): Motion primitives and reduced-motion utilities used across the gentleduck ecosystem. - Markdown: https://gentleduck.org/docs/duck-motion/introduction.md - ["Accordion"](https://gentleduck.org/docs/duck-primitives/api/accordion): "A vertically stacked set of interactive headings that each reveal an associated section of content." - Markdown: https://gentleduck.org/docs/duck-primitives/api/accordion.md - ["Alert Dialog"](https://gentleduck.org/docs/duck-primitives/api/alert-dialog): "A modal confirmation dialog that requires the user to acknowledge or dismiss before continuing." - Markdown: https://gentleduck.org/docs/duck-primitives/api/alert-dialog.md - ["Arrow"](https://gentleduck.org/docs/duck-primitives/api/arrow): "Reusable SVG arrow primitive used by popper-based components." - Markdown: https://gentleduck.org/docs/duck-primitives/api/arrow.md - ["Avatar"](https://gentleduck.org/docs/duck-primitives/api/avatar): "An image element with a fallback for representing the user." - Markdown: https://gentleduck.org/docs/duck-primitives/api/avatar.md - ["Calendar"](https://gentleduck.org/docs/duck-primitives/api/calendar): "Compound components for building accessible calendars, powered by @gentleduck/calendar." - Markdown: https://gentleduck.org/docs/duck-primitives/api/calendar.md - ["Checkers"](https://gentleduck.org/docs/duck-primitives/api/checkers): "Utilities for checkbox/radio indicator rendering." - Markdown: https://gentleduck.org/docs/duck-primitives/api/checkers.md - ["Command"](https://gentleduck.org/docs/duck-primitives/api/command): "A composable command menu with built-in search filtering, keyboard navigation, and group support." - Markdown: https://gentleduck.org/docs/duck-primitives/api/command.md - ["Context Menu"](https://gentleduck.org/docs/duck-primitives/api/context-menu): "Right-click menu with items, checkboxes, radio groups, and submenus." - Markdown: https://gentleduck.org/docs/duck-primitives/api/context-menu.md - ["Dialog"](https://gentleduck.org/docs/duck-primitives/api/dialog): "A modal or non-modal dialog with focus trapping, scroll locking, and accessible labeling." - Markdown: https://gentleduck.org/docs/duck-primitives/api/dialog.md - ["Direction"](https://gentleduck.org/docs/duck-primitives/api/direction): "Global RTL/LTR direction context for primitives and registry components." - Markdown: https://gentleduck.org/docs/duck-primitives/api/direction.md - ["Dismissable Layer"](https://gentleduck.org/docs/duck-primitives/api/dismissable-layer): "Handles click-outside and Escape-to-dismiss behavior for overlay components." - Markdown: https://gentleduck.org/docs/duck-primitives/api/dismissable-layer.md - ["Dropdown Menu"](https://gentleduck.org/docs/duck-primitives/api/dropdown-menu): "A button-triggered menu with items, checkboxes, radio groups, and submenus." - Markdown: https://gentleduck.org/docs/duck-primitives/api/dropdown-menu.md - ["Focus Scope"](https://gentleduck.org/docs/duck-primitives/api/focus-scope): "Traps focus within a container with loop support and auto-focus on mount/unmount." - Markdown: https://gentleduck.org/docs/duck-primitives/api/focus-scope.md - ["Hover Card"](https://gentleduck.org/docs/duck-primitives/api/hover-card): "A card that appears on hover to show a preview or additional information." - Markdown: https://gentleduck.org/docs/duck-primitives/api/hover-card.md - ["API Reference"](https://gentleduck.org/docs/duck-primitives/api/index): "Complete API reference for every gentleduck/primitives component." - Markdown: https://gentleduck.org/docs/duck-primitives/api/index.md - ["Input OTP"](https://gentleduck.org/docs/duck-primitives/api/input-otp): "Composable one-time-password input primitive with direction-aware keyboard navigation and paste support." - Markdown: https://gentleduck.org/docs/duck-primitives/api/input-otp.md - ["Menu"](https://gentleduck.org/docs/duck-primitives/api/menu): "Base menu primitive with items, checkboxes, radio groups, and submenu support." - Markdown: https://gentleduck.org/docs/duck-primitives/api/menu.md - ["Menubar"](https://gentleduck.org/docs/duck-primitives/api/menubar): "Horizontal menu bar with multiple menus (File, Edit, View) and full keyboard navigation." - Markdown: https://gentleduck.org/docs/duck-primitives/api/menubar.md - ["Mount"](https://gentleduck.org/docs/duck-primitives/api/mount): "Simple mount/unmount helpers with animation delay support." - Markdown: https://gentleduck.org/docs/duck-primitives/api/mount.md - ["Navigation Menu"](https://gentleduck.org/docs/duck-primitives/api/navigation-menu): "Composable navigation menu primitive with trigger/content/viewport parts." - Markdown: https://gentleduck.org/docs/duck-primitives/api/navigation-menu.md - ["Pagination"](https://gentleduck.org/docs/duck-primitives/api/pagination): "Structural pagination primitives with optional direction support." - Markdown: https://gentleduck.org/docs/duck-primitives/api/pagination.md - ["Popover"](https://gentleduck.org/docs/duck-primitives/api/popover): "Floating content anchored to a trigger element with click-outside dismissal." - Markdown: https://gentleduck.org/docs/duck-primitives/api/popover.md - ["Popper"](https://gentleduck.org/docs/duck-primitives/api/popper): "Floating element positioning engine used by Popover, Tooltip, and Menu." - Markdown: https://gentleduck.org/docs/duck-primitives/api/popper.md - ["Portal"](https://gentleduck.org/docs/duck-primitives/api/portal): "Render children into document.body or a custom DOM container." - Markdown: https://gentleduck.org/docs/duck-primitives/api/portal.md - ["Presence"](https://gentleduck.org/docs/duck-primitives/api/presence): "Animation-aware mount/unmount. Delays unmounting until CSS exit animations complete." - Markdown: https://gentleduck.org/docs/duck-primitives/api/presence.md - ["Primitive Elements"](https://gentleduck.org/docs/duck-primitives/api/primitive-elements): "Low-level HTML element wrappers that support the asChild prop for composition." - Markdown: https://gentleduck.org/docs/duck-primitives/api/primitive-elements.md - ["Progress"](https://gentleduck.org/docs/duck-primitives/api/progress): "An accessible progress bar with determinate and indeterminate states." - Markdown: https://gentleduck.org/docs/duck-primitives/api/progress.md - ["Radio Group"](https://gentleduck.org/docs/duck-primitives/api/radio-group): "Single-selection radio buttons with roving focus, typeahead, vim-style navigation, and form integration." - Markdown: https://gentleduck.org/docs/duck-primitives/api/radio-group.md - ["Roving Focus"](https://gentleduck.org/docs/duck-primitives/api/roving-focus): "Arrow key navigation within a group of focusable items." - Markdown: https://gentleduck.org/docs/duck-primitives/api/roving-focus.md - ["Select"](https://gentleduck.org/docs/duck-primitives/api/select): "An accessible select/dropdown with keyboard navigation, typeahead search, scroll buttons, and form integration." - Markdown: https://gentleduck.org/docs/duck-primitives/api/select.md - ["Sheet"](https://gentleduck.org/docs/duck-primitives/api/sheet): "Dialog-compatible aliases for sheet-style naming." - Markdown: https://gentleduck.org/docs/duck-primitives/api/sheet.md - ["Slider"](https://gentleduck.org/docs/duck-primitives/api/slider): "An accessible range input that supports single and multi-thumb configurations, keyboard navigation, RTL, and form integration." - Markdown: https://gentleduck.org/docs/duck-primitives/api/slider.md - ["Slot"](https://gentleduck.org/docs/duck-primitives/api/slot): "The composition utility that powers the asChild pattern." - Markdown: https://gentleduck.org/docs/duck-primitives/api/slot.md - ["Toggle Group"](https://gentleduck.org/docs/duck-primitives/api/toggle-group): "A group of toggle buttons where one or multiple items can be active at a time." - Markdown: https://gentleduck.org/docs/duck-primitives/api/toggle-group.md - ["Toggle"](https://gentleduck.org/docs/duck-primitives/api/toggle): "A two-state button that can be toggled on or off." - Markdown: https://gentleduck.org/docs/duck-primitives/api/toggle.md - ["Tooltip"](https://gentleduck.org/docs/duck-primitives/api/tooltip): "A hover/focus hint with delay, skip-delay, and grace area support." - Markdown: https://gentleduck.org/docs/duck-primitives/api/tooltip.md - ["Visibility Hidden"](https://gentleduck.org/docs/duck-primitives/api/visibility-hidden): "Render content that is visually hidden but accessible to assistive technologies." - Markdown: https://gentleduck.org/docs/duck-primitives/api/visibility-hidden.md - ["Benchmarks"](https://gentleduck.org/docs/duck-primitives/benchmarks): "Full comparison of @gentleduck/primitives against Radix UI, Base UI, Ark UI, and Headless UI - bundle size, component count, features, and architecture." - Markdown: https://gentleduck.org/docs/duck-primitives/benchmarks.md - [Changelog](https://gentleduck.org/docs/duck-primitives/changelog): Release history for @gentleduck/primitives. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-primitives/changelog.md - ["Core Concepts"](https://gentleduck.org/docs/duck-primitives/concepts): "Advanced mental model for duck-primitives: composition, state ownership, focus safety, dismissal orchestration, and animation lifecycle." - Markdown: https://gentleduck.org/docs/duck-primitives/concepts.md - ["Lesson 1: Why Primitives"](https://gentleduck.org/docs/duck-primitives/course/01-why-primitives): "Understand the real engineering cost of interaction components and why headless primitives are a strategic foundation." - Markdown: https://gentleduck.org/docs/duck-primitives/course/01-why-primitives.md - ["Lesson 2: Your First Dialog"](https://gentleduck.org/docs/duck-primitives/course/02-first-dialog): "Build a production-ready dialog, then learn when to choose controlled state and guarded dismissal." - Markdown: https://gentleduck.org/docs/duck-primitives/course/02-first-dialog.md - ["Lesson 3: The asChild Pattern"](https://gentleduck.org/docs/duck-primitives/course/03-as-child): "Composition contracts: prop merging, ref forwarding, and safe custom components." - Markdown: https://gentleduck.org/docs/duck-primitives/course/03-as-child.md - ["Lesson 4: Popover and Positioning"](https://gentleduck.org/docs/duck-primitives/course/04-popover): "Use Popper-driven placement correctly: side/align strategy, collisions, anchors, and side-aware motion." - Markdown: https://gentleduck.org/docs/duck-primitives/course/04-popover.md - ["Lesson 5: Menus, Dropdowns, and Selection"](https://gentleduck.org/docs/duck-primitives/course/05-menus): "Build menu systems: context menus, dropdown actions, checkbox/radio items, submenus, and keyboard routing." - Markdown: https://gentleduck.org/docs/duck-primitives/course/05-menus.md - ["Lesson 6: Animation with Presence"](https://gentleduck.org/docs/duck-primitives/course/06-animation): "Use Presence for reliable enter/exit motion, forceMount integration, and reduced-motion compliance." - Markdown: https://gentleduck.org/docs/duck-primitives/course/06-animation.md - ["Lesson 7: Accessibility Deep Dive"](https://gentleduck.org/docs/duck-primitives/course/07-accessibility): "Validate primitive behavior with practical keyboard and screen-reader audits, and learn common failure modes." - Markdown: https://gentleduck.org/docs/duck-primitives/course/07-accessibility.md - ["Lesson 8: Building a Design System"](https://gentleduck.org/docs/duck-primitives/course/08-design-system): "Turn primitives into a stable design-system API with wrappers, defaults, testing strategy, and release discipline." - Markdown: https://gentleduck.org/docs/duck-primitives/course/08-design-system.md - ["Lesson 9: Testing and Quality Gates"](https://gentleduck.org/docs/duck-primitives/course/09-testing-quality): "Build reliable quality gates for primitives: interaction tests, accessibility assertions, and regression protection." - Markdown: https://gentleduck.org/docs/duck-primitives/course/09-testing-quality.md - ["Lesson 10: Operations, Migration, and Internal Registry"](https://gentleduck.org/docs/duck-primitives/course/10-operations-migration): "Operationalize your primitive wrappers: migrations, rollout safety, governance, and a reusable internal registry." - Markdown: https://gentleduck.org/docs/duck-primitives/course/10-operations-migration.md - ["gentleduck/primitives Course"](https://gentleduck.org/docs/duck-primitives/course/index): "Advanced, project-oriented curriculum for building accessible component systems with gentleduck/primitives." - Markdown: https://gentleduck.org/docs/duck-primitives/course/index.md - ["Getting Started"](https://gentleduck.org/docs/duck-primitives/getting-started): "Set up gentleduck/primitives with production defaults: accessibility, animation, direction, and state control." - Markdown: https://gentleduck.org/docs/duck-primitives/getting-started.md - ["Accessibility"](https://gentleduck.org/docs/duck-primitives/guides/accessibility): "How duck-primitives implement WAI-ARIA patterns and what you need to know." - Markdown: https://gentleduck.org/docs/duck-primitives/guides/accessibility.md - ["Animation"](https://gentleduck.org/docs/duck-primitives/guides/animation): "Add enter and exit animations to duck-primitives using CSS animations or transitions." - Markdown: https://gentleduck.org/docs/duck-primitives/guides/animation.md - ["Composition with asChild"](https://gentleduck.org/docs/duck-primitives/guides/composition): "Use the asChild pattern to compose primitives with your own components." - Markdown: https://gentleduck.org/docs/duck-primitives/guides/composition.md - ["Guides"](https://gentleduck.org/docs/duck-primitives/guides/index): "Practical guides for styling, composition, animation, and accessibility with gentleduck/primitives." - Markdown: https://gentleduck.org/docs/duck-primitives/guides/index.md - ["Styling gentleduck/primitives"](https://gentleduck.org/docs/duck-primitives/guides/styling): "How to style unstyled primitives with CSS, Tailwind, CSS modules, or CSS-in-JS." - Markdown: https://gentleduck.org/docs/duck-primitives/guides/styling.md - ["gentleduck/primitives"](https://gentleduck.org/docs/duck-primitives/introduction): "Unstyled, accessible React primitives for building serious component libraries and product-grade interaction systems." - Markdown: https://gentleduck.org/docs/duck-primitives/introduction.md - [advanced](https://gentleduck.org/docs/duck-query/advanced): Advanced Duck Query patterns. Covers interceptors, error handling, custom Axios instances, using without Duck Gen, and real-world integration tips. - Markdown: https://gentleduck.org/docs/duck-query/advanced.md - [Changelog](https://gentleduck.org/docs/duck-query/changelog): Release history for @gentleduck/query. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-query/changelog.md - [client methods](https://gentleduck.org/docs/duck-query/client-methods): Detailed reference for every Duck Query client method. Covers get, post, put, patch, del, request, byMethod, and the axios instance. - Markdown: https://gentleduck.org/docs/duck-query/client-methods.md - [duck query](https://gentleduck.org/docs/duck-query/introduction): Type-safe Axios HTTP client that uses route metadata from Duck Gen (or custom route maps) to give you fully typed requests and responses. - Markdown: https://gentleduck.org/docs/duck-query/introduction.md - [types](https://gentleduck.org/docs/duck-query/types): All types exported by Duck Query. Use them to build custom route maps, extract type information, and integrate with your own tooling. - Markdown: https://gentleduck.org/docs/duck-query/types.md - ["Architecture"](https://gentleduck.org/docs/duck-registry-build/architecture): "Understand the registry-build lifecycle, build context, cache model, and extension boundaries." - Markdown: https://gentleduck.org/docs/duck-registry-build/architecture.md - [Changelog](https://gentleduck.org/docs/duck-registry-build/changelog): Release history for @gentleduck/registry-build. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-registry-build/changelog.md - ["CLI"](https://gentleduck.org/docs/duck-registry-build/cli): "Run registry-build from config roots, CI, or local package scripts." - Markdown: https://gentleduck.org/docs/duck-registry-build/cli.md - ["Configuration"](https://gentleduck.org/docs/duck-registry-build/configuration): "Full registry-build config reference with a generic-first shape, collection docs, and legacy compatibility notes." - Markdown: https://gentleduck.org/docs/duck-registry-build/configuration.md - ["Arch Package Index"](https://gentleduck.org/docs/duck-registry-build/course-arch-package-index): "Step-by-step course for building an Arch-style package repository index with registry-build." - Markdown: https://gentleduck.org/docs/duck-registry-build/course-arch-package-index.md - ["Course"](https://gentleduck.org/docs/duck-registry-build/course): "Guided learning path for using registry-build as a generic index-building core." - Markdown: https://gentleduck.org/docs/duck-registry-build/course.md - ["Extensions"](https://gentleduck.org/docs/duck-registry-build/extensions): "Learn the explicit extension model, built-in extensions, and the custom extension API." - Markdown: https://gentleduck.org/docs/duck-registry-build/extensions.md - ["Getting Started"](https://gentleduck.org/docs/duck-registry-build/getting-started): "Install registry-build, define a config, attach extensions, and generate your first outputs." - Markdown: https://gentleduck.org/docs/duck-registry-build/getting-started.md - ["gentleduck/registry-build"](https://gentleduck.org/docs/duck-registry-build/introduction): "Generic index-building core with explicit extensions, type-safe config, and incremental rebuilds." - Markdown: https://gentleduck.org/docs/duck-registry-build/introduction.md - ["Operations"](https://gentleduck.org/docs/duck-registry-build/operations): "Operations hub for performance, testing, CI, and troubleshooting." - Markdown: https://gentleduck.org/docs/duck-registry-build/operations.md - ["Performance"](https://gentleduck.org/docs/duck-registry-build/performance): "Understand the cache, write-skipping, changed-only mode, and bounded concurrency." - Markdown: https://gentleduck.org/docs/duck-registry-build/performance.md - ["Recipes"](https://gentleduck.org/docs/duck-registry-build/recipes): "Practical registry-build patterns for docs sites, custom manifests, external data files, and framework-specific output." - Markdown: https://gentleduck.org/docs/duck-registry-build/recipes.md - ["Reference"](https://gentleduck.org/docs/duck-registry-build/reference): "Reference hub for configuration, extensions, and CLI usage." - Markdown: https://gentleduck.org/docs/duck-registry-build/reference.md - ["Testing and CI"](https://gentleduck.org/docs/duck-registry-build/testing-ci): "Recommended test layers, CI commands, and production release checks for registry-build consumers." - Markdown: https://gentleduck.org/docs/duck-registry-build/testing-ci.md - ["Troubleshooting"](https://gentleduck.org/docs/duck-registry-build/troubleshooting): "Common registry-build failure modes and the fastest way to debug each one." - Markdown: https://gentleduck.org/docs/duck-registry-build/troubleshooting.md - [Changelog](https://gentleduck.org/docs/duck-shortcut/changelog): Release history for @gentleduck/shortcut. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-shortcut/changelog.md - [gentleduck shortcut](https://gentleduck.org/docs/duck-shortcut/introduction): Deprecated React hook package for keyboard shortcuts and key sequences. - Markdown: https://gentleduck.org/docs/duck-shortcut/introduction.md - [Changelog](https://gentleduck.org/docs/duck-state/changelog): Release history for @gentleduck/state. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-state/changelog.md - [gentleduck state](https://gentleduck.org/docs/duck-state/introduction): Lightweight atomic state management for React with primitive and derived atoms. - Markdown: https://gentleduck.org/docs/duck-state/introduction.md - ["gentleduck/template"](https://gentleduck.org/docs/duck-template/introduction): Rust-powered project scaffolding with variant support, remote configs, and dynamic flag injection. - Markdown: https://gentleduck.org/docs/duck-template/introduction.md - [any](https://gentleduck.org/docs/duck-ttest/api/any): Detection helpers for any, never, unknown, and void. - Markdown: https://gentleduck.org/docs/duck-ttest/api/any.md - [aria](https://gentleduck.org/docs/duck-ttest/api/aria): WAI-ARIA 1.2 role and attribute string unions. - Markdown: https://gentleduck.org/docs/duck-ttest/api/aria.md - [assert](https://gentleduck.org/docs/duck-ttest/api/assert): AssertTrue and AssertFalse — the assertion primitives. - Markdown: https://gentleduck.org/docs/duck-ttest/api/assert.md - [async](https://gentleduck.org/docs/duck-ttest/api/async): Function, promise, and iterable helpers for async-shaped types. - Markdown: https://gentleduck.org/docs/duck-ttest/api/async.md - [bit](https://gentleduck.org/docs/duck-ttest/api/bit): Fixed-length little-endian bit tuples and bitwise operations. - Markdown: https://gentleduck.org/docs/duck-ttest/api/bit.md - [boolean](https://gentleduck.org/docs/duck-ttest/api/boolean): Logical operators on type-level booleans. - Markdown: https://gentleduck.org/docs/duck-ttest/api/boolean.md - [brand](https://gentleduck.org/docs/duck-ttest/api/brand): Nominal typing via a phantom tag — Brand, Opaque, Unbrand. - Markdown: https://gentleduck.org/docs/duck-ttest/api/brand.md - [class](https://gentleduck.org/docs/duck-ttest/api/class): Constructor and instance type helpers. - Markdown: https://gentleduck.org/docs/duck-ttest/api/class.md - [conditional](https://gentleduck.org/docs/duck-ttest/api/conditional): Type-level branching — If, IfExtends, Switch, Match. - Markdown: https://gentleduck.org/docs/duck-ttest/api/conditional.md - [css](https://gentleduck.org/docs/duck-ttest/api/css): Curated CSS value unions — colors, display, position, lengths, vars. - Markdown: https://gentleduck.org/docs/duck-ttest/api/css.md - [date](https://gentleduck.org/docs/duck-ttest/api/date): ISO-8601 string parsing and duration-branded numbers. - Markdown: https://gentleduck.org/docs/duck-ttest/api/date.md - [discriminated](https://gentleduck.org/docs/duck-ttest/api/discriminated): Helpers for tagged unions sharing a literal discriminant key. - Markdown: https://gentleduck.org/docs/duck-ttest/api/discriminated.md - [emitter](https://gentleduck.org/docs/duck-ttest/api/emitter): Type-only event-system shapes — drive an emitter from an EventMap. - Markdown: https://gentleduck.org/docs/duck-ttest/api/emitter.md - [equality](https://gentleduck.org/docs/duck-ttest/api/equality): Strict equality, shallow assignability, and key existence checks. - Markdown: https://gentleduck.org/docs/duck-ttest/api/equality.md - [extraction](https://gentleduck.org/docs/duck-ttest/api/extraction): Key extraction utilities — optional, required, readonly, mutable, by-type. - Markdown: https://gentleduck.org/docs/duck-ttest/api/extraction.md - [format](https://gentleduck.org/docs/duck-ttest/api/format): Structural string-format types — UUID, Email, ISO dates, hex colors, semver. - Markdown: https://gentleduck.org/docs/duck-ttest/api/format.md - [fp](https://gentleduck.org/docs/duck-ttest/api/fp): Higher-kinded-type encoding — Fn, Apply, MapTuple, Reduce, ComposeFn. - Markdown: https://gentleduck.org/docs/duck-ttest/api/fp.md - [fs](https://gentleduck.org/docs/duck-ttest/api/fs): POSIX and Windows path types — IsAbsolute, ExtensionOf, NormalizePath. - Markdown: https://gentleduck.org/docs/duck-ttest/api/fs.md - [function](https://gentleduck.org/docs/duck-ttest/api/function): ReturnTypeSafe, ParametersSafe, Curried, Promisify. - Markdown: https://gentleduck.org/docs/duck-ttest/api/function.md - [geometry](https://gentleduck.org/docs/duck-ttest/api/geometry): 2D and 3D shape primitives, transforms, direction, and angle brands. - Markdown: https://gentleduck.org/docs/duck-ttest/api/geometry.md - [guard](https://gentleduck.org/docs/duck-ttest/api/guard): Compile-time predicates returning true | false — IsString, IsObject, IsRecord, IsMap, ... - Markdown: https://gentleduck.org/docs/duck-ttest/api/guard.md - [http](https://gentleduck.org/docs/duck-ttest/api/http): HTTP method, status code, content-type, and request/response shape types. - Markdown: https://gentleduck.org/docs/duck-ttest/api/http.md - [json](https://gentleduck.org/docs/duck-ttest/api/json): JSONValue, Jsonify, Jsonifiable — the JSON shape lattice. - Markdown: https://gentleduck.org/docs/duck-ttest/api/json.md - [literal](https://gentleduck.org/docs/duck-ttest/api/literal): LiteralUnion, Exact, Narrow, Widen, and literal-vs-primitive guards. - Markdown: https://gentleduck.org/docs/duck-ttest/api/literal.md - [locale](https://gentleduck.org/docs/duck-ttest/api/locale): ISO language, country, currency, and IANA time-zone unions. - Markdown: https://gentleduck.org/docs/duck-ttest/api/locale.md - [number](https://gentleduck.org/docs/duck-ttest/api/number): Tuple-length recursion arithmetic — Add, Sub, Mul, Div, Pow, comparisons. - Markdown: https://gentleduck.org/docs/duck-ttest/api/number.md - [object](https://gentleduck.org/docs/duck-ttest/api/object): Deep transforms, key arithmetic, dotted-path access, case conversion — the broadest module. - Markdown: https://gentleduck.org/docs/duck-ttest/api/object.md - [pattern](https://gentleduck.org/docs/duck-ttest/api/pattern): Glob matching, prefix/suffix/contains, and tuple filtering. - Markdown: https://gentleduck.org/docs/duck-ttest/api/pattern.md - [predicates](https://gentleduck.org/docs/duck-ttest/api/predicates): Property-modifier guards — IsMutable, IsReadonly, IsPartial, IsRequired. - Markdown: https://gentleduck.org/docs/duck-ttest/api/predicates.md - [primitive](https://gentleduck.org/docs/duck-ttest/api/primitive): Primitive, Falsy, Truthy, Builtin, NonNullish — and IsOptional / IsNullable. - Markdown: https://gentleduck.org/docs/duck-ttest/api/primitive.md - [promise](https://gentleduck.org/docs/duck-ttest/api/promise): UnwrapPromise, DeepAwaited, MaybePromise, PromiseAll, IsPromise. - Markdown: https://gentleduck.org/docs/duck-ttest/api/promise.md - [result](https://gentleduck.org/docs/duck-ttest/api/result): Compile-time Result and Option mirroring Rust's monads. - Markdown: https://gentleduck.org/docs/duck-ttest/api/result.md - [router](https://gentleduck.org/docs/duck-ttest/api/router): URL pattern types — PathParams, BuildPath, MatchRoute, QueryParams. - Markdown: https://gentleduck.org/docs/duck-ttest/api/router.md - [sql](https://gentleduck.org/docs/duck-ttest/api/sql): Parse CREATE TABLE strings into typed row shapes — InferSchema, SQLTypeMap. - Markdown: https://gentleduck.org/docs/duck-ttest/api/sql.md - [template](https://gentleduck.org/docs/duck-ttest/api/template): Trim, CapitalizeWords, SnakeToCamel — template-literal string helpers. - Markdown: https://gentleduck.org/docs/duck-ttest/api/template.md - [tuple](https://gentleduck.org/docs/duck-ttest/api/tuple): Head, Tail, Last, Prepend, Append, Length, Zip. - Markdown: https://gentleduck.org/docs/duck-ttest/api/tuple.md - [union](https://gentleduck.org/docs/duck-ttest/api/union): UnionToIntersection, XOR, and union key arithmetic. - Markdown: https://gentleduck.org/docs/duck-ttest/api/union.md - [Changelog](https://gentleduck.org/docs/duck-ttest/changelog): Release history for @gentleduck/ttest. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-ttest/changelog.md - [How duck-ttest compares](https://gentleduck.org/docs/duck-ttest/comparison): Honest tradeoffs versus tsd, expect-type, and type-fest. - Markdown: https://gentleduck.org/docs/duck-ttest/comparison.md - [Assertions](https://gentleduck.org/docs/duck-ttest/core/assertions): AssertTrue, AssertFalse, Equal, and how they surface failures. - Markdown: https://gentleduck.org/docs/duck-ttest/core/assertions.md - [Composing tests](https://gentleduck.org/docs/duck-ttest/core/composing-tests): Naming, organization, and the pitfalls of branding inside assertions. - Markdown: https://gentleduck.org/docs/duck-ttest/core/composing-tests.md - [Type-level testing](https://gentleduck.org/docs/duck-ttest/core/type-level-testing): Workflow with tsc, vitest @ts-expect-error, and tsd. - Markdown: https://gentleduck.org/docs/duck-ttest/core/type-level-testing.md - [Getting started](https://gentleduck.org/docs/duck-ttest/getting-started): Write a type-level test, see it fail, fix it. Five minutes. - Markdown: https://gentleduck.org/docs/duck-ttest/getting-started.md - [Branded types](https://gentleduck.org/docs/duck-ttest/guides/branded-types): Tag primitives nominally without a runtime cost. - Markdown: https://gentleduck.org/docs/duck-ttest/guides/branded-types.md - [Catching regressions](https://gentleduck.org/docs/duck-ttest/guides/catching-regressions): Fold type tests into vitest, CI, and pre-commit hooks. - Markdown: https://gentleduck.org/docs/duck-ttest/guides/catching-regressions.md - [Discriminated unions](https://gentleduck.org/docs/duck-ttest/guides/discriminated-unions): Narrow, exhaust, and pattern-match unions tagged by a literal key. - Markdown: https://gentleduck.org/docs/duck-ttest/guides/discriminated-unions.md - [Cookbook](https://gentleduck.org/docs/duck-ttest/guides/index): Copy-pasteable patterns for common type-level work. - Markdown: https://gentleduck.org/docs/duck-ttest/guides/index.md - [Schema builders](https://gentleduck.org/docs/duck-ttest/guides/schema-builders): Use ttest utilities to author your own type-safe DSL or API. - Markdown: https://gentleduck.org/docs/duck-ttest/guides/schema-builders.md - [Installation](https://gentleduck.org/docs/duck-ttest/installation): Install duck-ttest, configure tsconfig, and import your first sub-path. - Markdown: https://gentleduck.org/docs/duck-ttest/installation.md - [Introduction](https://gentleduck.org/docs/duck-ttest/introduction): A TypeScript type-level test framework and a large library of type utilities. Zero runtime cost. - Markdown: https://gentleduck.org/docs/duck-ttest/introduction.md - [Migration](https://gentleduck.org/docs/duck-ttest/migration): Breaking renames and behaviour changes when upgrading duck-ttest. - Markdown: https://gentleduck.org/docs/duck-ttest/migration.md - [Core Engine](https://gentleduck.org/docs/duck-ttlog/core): "The ttlog crate — Trace orchestrator, writer/listener threads, ring buffer, and listener API." - Markdown: https://gentleduck.org/docs/duck-ttlog/core.md - [Introduction](https://gentleduck.org/docs/duck-ttlog/introduction): "High-performance, low-allocation logging framework for Rust with lock-free ring buffer and crash-safe snapshots." - Markdown: https://gentleduck.org/docs/duck-ttlog/introduction.md - [Macros](https://gentleduck.org/docs/duck-ttlog/macros): "Procedural macros for ttlog — info!, debug!, warn!, error! with compile-time work and string interning." - Markdown: https://gentleduck.org/docs/duck-ttlog/macros.md - [Changelog](https://gentleduck.org/docs/duck-ui/changelog): Release history for @gentleduck/registry-ui. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-ui/changelog.md - [accordion](https://gentleduck.org/docs/duck-ui/components/accordion): A vertically stacked set of interactive headings that each reveal a section of content. - Markdown: https://gentleduck.org/docs/duck-ui/components/accordion.md - [alert-dialog](https://gentleduck.org/docs/duck-ui/components/alert-dialog): A modal dialog temporarily interrupts the user's workflow with important content, requiring immediate attention and a response before allowing further interaction. - Markdown: https://gentleduck.org/docs/duck-ui/components/alert-dialog.md - [alert](https://gentleduck.org/docs/duck-ui/components/alert): Displays a callout for user attention. - Markdown: https://gentleduck.org/docs/duck-ui/components/alert.md - [aspect-ratio](https://gentleduck.org/docs/duck-ui/components/aspect-ratio): Displays content within a desired ratio. - Markdown: https://gentleduck.org/docs/duck-ui/components/aspect-ratio.md - [avatar](https://gentleduck.org/docs/duck-ui/components/avatar): An image element with a fallback for representing the user. - Markdown: https://gentleduck.org/docs/duck-ui/components/avatar.md - [badge](https://gentleduck.org/docs/duck-ui/components/badge): A versatile badge component for labels, statuses, and more. - Markdown: https://gentleduck.org/docs/duck-ui/components/badge.md - [breadcrumb](https://gentleduck.org/docs/duck-ui/components/breadcrumb): Displays the path to the current resource using a hierarchy of links. - Markdown: https://gentleduck.org/docs/duck-ui/components/breadcrumb.md - [button-group](https://gentleduck.org/docs/duck-ui/components/button-group): A container that groups related button like elements together with consistent styling. - Markdown: https://gentleduck.org/docs/duck-ui/components/button-group.md - [button](https://gentleduck.org/docs/duck-ui/components/button): A customizable button component for triggering actions in your application. - Markdown: https://gentleduck.org/docs/duck-ui/components/button.md - [calendar](https://gentleduck.org/docs/duck-ui/components/calendar): A date field component that allows users to enter and edit date. - Markdown: https://gentleduck.org/docs/duck-ui/components/calendar.md - [card](https://gentleduck.org/docs/duck-ui/components/card): Displays a card with header, content, and footer. - Markdown: https://gentleduck.org/docs/duck-ui/components/card.md - [carousel](https://gentleduck.org/docs/duck-ui/components/carousel): A carousel with motion and swipe built using Embla. - Markdown: https://gentleduck.org/docs/duck-ui/components/carousel.md - [Changelog](https://gentleduck.org/docs/duck-ui/components/changelog): Release history for @gentleduck/registry-ui. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-ui/components/changelog.md - [chart](https://gentleduck.org/docs/duck-ui/components/chart): Beautiful charts. Built using Recharts. Copy and paste into your apps. - Markdown: https://gentleduck.org/docs/duck-ui/components/chart.md - [checkbox](https://gentleduck.org/docs/duck-ui/components/checkbox): A control that allows the user to toggle between checked and not checked. - Markdown: https://gentleduck.org/docs/duck-ui/components/checkbox.md - [collapsible](https://gentleduck.org/docs/duck-ui/components/collapsible): An interactive component which expands/collapses a panel. - Markdown: https://gentleduck.org/docs/duck-ui/components/collapsible.md - [combobox](https://gentleduck.org/docs/duck-ui/components/combobox): Autocomplete input and command palette with a list of suggestions. - Markdown: https://gentleduck.org/docs/duck-ui/components/combobox.md - [command](https://gentleduck.org/docs/duck-ui/components/command): A fast, composable, unstyled command menu for React applications. - Markdown: https://gentleduck.org/docs/duck-ui/components/command.md - [context-menu](https://gentleduck.org/docs/duck-ui/components/context-menu): Displays a context menu of actions triggered by right-click on a target. - Markdown: https://gentleduck.org/docs/duck-ui/components/context-menu.md - [data-table](https://gentleduck.org/docs/duck-ui/components/data-table): Powerful table and datagrids built using TanStack Table. - Markdown: https://gentleduck.org/docs/duck-ui/components/data-table.md - [date-picker](https://gentleduck.org/docs/duck-ui/components/date-picker): A date picker component with range and presets. - Markdown: https://gentleduck.org/docs/duck-ui/components/date-picker.md - [dialog](https://gentleduck.org/docs/duck-ui/components/dialog): A window overlaid on either the primary window or another dialog window, rendering the content underneath inert. - Markdown: https://gentleduck.org/docs/duck-ui/components/dialog.md - [direction](https://gentleduck.org/docs/duck-ui/components/direction): Resolve and provide RTL/LTR direction using the shared primitives direction context. - Markdown: https://gentleduck.org/docs/duck-ui/components/direction.md - [drawer](https://gentleduck.org/docs/duck-ui/components/drawer): A customizable drawer component for React. - Markdown: https://gentleduck.org/docs/duck-ui/components/drawer.md - [dropdown-menu](https://gentleduck.org/docs/duck-ui/components/dropdown-menu): Displays a menu to the user - such as a set of actions or functions - triggered by a button. - Markdown: https://gentleduck.org/docs/duck-ui/components/dropdown-menu.md - [empty](https://gentleduck.org/docs/duck-ui/components/empty): Use the Empty component to display a empty state. - Markdown: https://gentleduck.org/docs/duck-ui/components/empty.md - [faqs](https://gentleduck.org/docs/duck-ui/components/faqs): Frequently asked questions about @gentleduck/ui. - Markdown: https://gentleduck.org/docs/duck-ui/components/faqs.md - [field](https://gentleduck.org/docs/duck-ui/components/field): Make accessible forms with Field components. - Markdown: https://gentleduck.org/docs/duck-ui/components/field.md - [hover-card](https://gentleduck.org/docs/duck-ui/components/hover-card): For sighted users to preview content available behind a link. - Markdown: https://gentleduck.org/docs/duck-ui/components/hover-card.md - [input-group](https://gentleduck.org/docs/duck-ui/components/input-group): Group inputs, in layouts, more easily. - Markdown: https://gentleduck.org/docs/duck-ui/components/input-group.md - [input-otp](https://gentleduck.org/docs/duck-ui/components/input-otp): Accessible one-time password component with paste-to-fill support. - Markdown: https://gentleduck.org/docs/duck-ui/components/input-otp.md - [input](https://gentleduck.org/docs/duck-ui/components/input): Displays a form input field or a component that looks like an input field. - Markdown: https://gentleduck.org/docs/duck-ui/components/input.md - [item](https://gentleduck.org/docs/duck-ui/components/item): A component for displaying content with media, title, description, and actions. - Markdown: https://gentleduck.org/docs/duck-ui/components/item.md - [javascript](https://gentleduck.org/docs/duck-ui/components/javascript): How to use @gentleduck/ui with JavaScript - Markdown: https://gentleduck.org/docs/duck-ui/components/javascript.md - [json-editor](https://gentleduck.org/docs/duck-ui/components/json-editor): A form-aware JSON editor field with inline, popover, and expanded editing modes. - Markdown: https://gentleduck.org/docs/duck-ui/components/json-editor.md - [kbd](https://gentleduck.org/docs/duck-ui/components/kbd): Used to display textual user input from keyboard. - Markdown: https://gentleduck.org/docs/duck-ui/components/kbd.md - [label](https://gentleduck.org/docs/duck-ui/components/label): Renders an accessible label associated with controls. - Markdown: https://gentleduck.org/docs/duck-ui/components/label.md - [menubar](https://gentleduck.org/docs/duck-ui/components/menubar): A visually persistent menu common in desktop applications that provides quick access to a consistent set of commands. - Markdown: https://gentleduck.org/docs/duck-ui/components/menubar.md - [navigation-menu](https://gentleduck.org/docs/duck-ui/components/navigation-menu): A collection of links for navigating websites. - Markdown: https://gentleduck.org/docs/duck-ui/components/navigation-menu.md - [pagination](https://gentleduck.org/docs/duck-ui/components/pagination): Pagination with page navigation, next and previous links. - Markdown: https://gentleduck.org/docs/duck-ui/components/pagination.md - [popover](https://gentleduck.org/docs/duck-ui/components/popover): Displays rich content in a floating layer, triggered by an anchor element. - Markdown: https://gentleduck.org/docs/duck-ui/components/popover.md - [preview-panel](https://gentleduck.org/docs/duck-ui/components/preview-panel): A pan-zoom container with controls, fullscreen dialog, and synced state between views. - Markdown: https://gentleduck.org/docs/duck-ui/components/preview-panel.md - [progress](https://gentleduck.org/docs/duck-ui/components/progress): Displays an indicator showing the completion progress of a task, typically displayed as a progress bar. - Markdown: https://gentleduck.org/docs/duck-ui/components/progress.md - [radio-group](https://gentleduck.org/docs/duck-ui/components/radio-group): A set of checkable buttons - known as radio buttons - where no more than one of the buttons can be checked at a time. - Markdown: https://gentleduck.org/docs/duck-ui/components/radio-group.md - [React Hook Form](https://gentleduck.org/docs/duck-ui/components/react-hook-form): Build forms in React using React Hook Form and Zod. - Markdown: https://gentleduck.org/docs/duck-ui/components/react-hook-form.md - [resizable](https://gentleduck.org/docs/duck-ui/components/resizable): Accessible resizable panel groups and layouts with keyboard support. - Markdown: https://gentleduck.org/docs/duck-ui/components/resizable.md - [scroll-area](https://gentleduck.org/docs/duck-ui/components/scroll-area): Augments native scroll functionality for custom, cross-browser styling. - Markdown: https://gentleduck.org/docs/duck-ui/components/scroll-area.md - [select](https://gentleduck.org/docs/duck-ui/components/select): Displays a list of options for the user to pick from - triggered by a button. - Markdown: https://gentleduck.org/docs/duck-ui/components/select.md - [separator](https://gentleduck.org/docs/duck-ui/components/separator): Visually or semantically separates content. - Markdown: https://gentleduck.org/docs/duck-ui/components/separator.md - [sheet](https://gentleduck.org/docs/duck-ui/components/sheet): Extends the Dialog component to display content that complements the main content of the screen. - Markdown: https://gentleduck.org/docs/duck-ui/components/sheet.md - [Sidebar](https://gentleduck.org/docs/duck-ui/components/sidebar): A composable, themeable and customizable sidebar component. - Markdown: https://gentleduck.org/docs/duck-ui/components/sidebar.md - [skeleton](https://gentleduck.org/docs/duck-ui/components/skeleton): Use to show a placeholder while content is loading. - Markdown: https://gentleduck.org/docs/duck-ui/components/skeleton.md - [slider](https://gentleduck.org/docs/duck-ui/components/slider): An input where the user selects a value from within a given range. - Markdown: https://gentleduck.org/docs/duck-ui/components/slider.md - [sonner](https://gentleduck.org/docs/duck-ui/components/sonner): An opinionated toast component for React. - Markdown: https://gentleduck.org/docs/duck-ui/components/sonner.md - [switch](https://gentleduck.org/docs/duck-ui/components/switch): A control that allows the user to toggle between checked and not checked. - Markdown: https://gentleduck.org/docs/duck-ui/components/switch.md - [table](https://gentleduck.org/docs/duck-ui/components/table): A responsive table component. - Markdown: https://gentleduck.org/docs/duck-ui/components/table.md - [tabs](https://gentleduck.org/docs/duck-ui/components/tabs): A set of layered sections of content - known as tab panels - that are displayed one at a time. - Markdown: https://gentleduck.org/docs/duck-ui/components/tabs.md - [TanStack Form](https://gentleduck.org/docs/duck-ui/components/tanstack-form): Build forms in React using TanStack Form and Zod. - Markdown: https://gentleduck.org/docs/duck-ui/components/tanstack-form.md - [textarea](https://gentleduck.org/docs/duck-ui/components/textarea): Displays a form textarea or a component that looks like a textarea. - Markdown: https://gentleduck.org/docs/duck-ui/components/textarea.md - [theming](https://gentleduck.org/docs/duck-ui/components/theming): Using CSS Variables and color utilities for theming. - Markdown: https://gentleduck.org/docs/duck-ui/components/theming.md - [toggle-group](https://gentleduck.org/docs/duck-ui/components/toggle-group): A set of two-state buttons that can be toggled on or off. - Markdown: https://gentleduck.org/docs/duck-ui/components/toggle-group.md - [toggle](https://gentleduck.org/docs/duck-ui/components/toggle): A two-state button that can be either on or off. - Markdown: https://gentleduck.org/docs/duck-ui/components/toggle.md - [tooltip](https://gentleduck.org/docs/duck-ui/components/tooltip): A customizable and accessible tooltip component with Floating UI positioning, state-aware styling hooks, and flexible triggers. - Markdown: https://gentleduck.org/docs/duck-ui/components/tooltip.md - [typography](https://gentleduck.org/docs/duck-ui/components/typography): Semantic headings, paragraphs, lists, tables, and inline text components. - Markdown: https://gentleduck.org/docs/duck-ui/components/typography.md - [faqs](https://gentleduck.org/docs/duck-ui/faqs): Frequently asked questions about @gentleduck/ui. - Markdown: https://gentleduck.org/docs/duck-ui/faqs.md - [astro](https://gentleduck.org/docs/duck-ui/installation/astro): Install and configure @gentleduck/ui for Astro - Markdown: https://gentleduck.org/docs/duck-ui/installation/astro.md - [installation](https://gentleduck.org/docs/duck-ui/installation/index): How to install dependencies and structure your app. - Markdown: https://gentleduck.org/docs/duck-ui/installation/index.md - [laravel](https://gentleduck.org/docs/duck-ui/installation/laravel): Install and configure @gentleduck/ui for Laravel - Markdown: https://gentleduck.org/docs/duck-ui/installation/laravel.md - [manual-installation](https://gentleduck.org/docs/duck-ui/installation/manual): Add dependencies to your project manually. - Markdown: https://gentleduck.org/docs/duck-ui/installation/manual.md - [monorepo](https://gentleduck.org/docs/duck-ui/installation/monorepo): Set up duck-ui in a monorepo with shared UI packages. - Markdown: https://gentleduck.org/docs/duck-ui/installation/monorepo.md - [next.js](https://gentleduck.org/docs/duck-ui/installation/next): Install and configure @gentleduck/ui for Next.js. - Markdown: https://gentleduck.org/docs/duck-ui/installation/next.md - [react-router](https://gentleduck.org/docs/duck-ui/installation/react-router): Install and configure @gentleduck/ui for React Router. - Markdown: https://gentleduck.org/docs/duck-ui/installation/react-router.md - [tanstack-router](https://gentleduck.org/docs/duck-ui/installation/tanstack-router): Install and configure @gentleduck/ui for TanStack Router. - Markdown: https://gentleduck.org/docs/duck-ui/installation/tanstack-router.md - [tanstack-start](https://gentleduck.org/docs/duck-ui/installation/tanstack): Install and configure @gentleduck/ui for TanStack Start. - Markdown: https://gentleduck.org/docs/duck-ui/installation/tanstack.md - [vite](https://gentleduck.org/docs/duck-ui/installation/vite): Install and configure @gentleduck/ui for Vite. - Markdown: https://gentleduck.org/docs/duck-ui/installation/vite.md - [Introduction](https://gentleduck.org/docs/duck-ui/introduction): Accessible, composable UI components built on gentleduck primitives. - Markdown: https://gentleduck.org/docs/duck-ui/introduction.md - [javascript](https://gentleduck.org/docs/duck-ui/javascript): How to use @gentleduck/ui with JavaScript - Markdown: https://gentleduck.org/docs/duck-ui/javascript.md - [theming](https://gentleduck.org/docs/duck-ui/theming): Using CSS Variables and color utilities for theming. - Markdown: https://gentleduck.org/docs/duck-ui/theming.md - [Changelog](https://gentleduck.org/docs/duck-upload/changelog): Release history for @gentleduck/upload. Newest first. - Markdown: https://gentleduck.org/docs/duck-upload/changelog.md - [Store Options](https://gentleduck.org/docs/duck-upload/core/client): Everything you pass to createUploadStore — config, plugins, hooks, fingerprinting, and validation. - Markdown: https://gentleduck.org/docs/duck-upload/core/client.md - [Contracts](https://gentleduck.org/docs/duck-upload/core/contracts): The Contracts namespace — the API, transport, and strategy interfaces that connect your backend to the engine. - Markdown: https://gentleduck.org/docs/duck-upload/core/contracts.md - [Engine](https://gentleduck.org/docs/duck-upload/core/engine): The phase state machine, scheduler, event layer, and retry model. - Markdown: https://gentleduck.org/docs/duck-upload/core/engine.md - [Errors](https://gentleduck.org/docs/duck-upload/core/errors): Typed UploadEngineError classes with static, XSS-safe messages. Tainted values live on context, never in the message. - Markdown: https://gentleduck.org/docs/duck-upload/core/errors.md - [Core Overview](https://gentleduck.org/docs/duck-upload/core/index): The framework-agnostic upload engine core. - Markdown: https://gentleduck.org/docs/duck-upload/core/index.md - [Persistence](https://gentleduck.org/docs/duck-upload/core/persistence): Resume uploads across reloads and crashes with IndexedDB, localStorage, or memory adapters. - Markdown: https://gentleduck.org/docs/duck-upload/core/persistence.md - [Utilities](https://gentleduck.org/docs/duck-upload/core/utils): The internal helpers the engine and strategies share — async, guards, IDs, fingerprints, and the typed emitter. - Markdown: https://gentleduck.org/docs/duck-upload/core/utils.md - ["Chapter 1: Your First Upload"](https://gentleduck.org/docs/duck-upload/course/chapter-1): "Create the store, add a file, watch it move through the phase machine." - Markdown: https://gentleduck.org/docs/duck-upload/course/chapter-1.md - ["Chapter 2: Strategies & Backends"](https://gentleduck.org/docs/duck-upload/course/chapter-2): "Understand strategies, wire the POST strategy to a real presigned backend, and write your own." - Markdown: https://gentleduck.org/docs/duck-upload/course/chapter-2.md - ["Chapter 3: React Integration"](https://gentleduck.org/docs/duck-upload/course/chapter-3): "Build a dropzone UI with UploadProvider and useUploader, complete with progress and controls." - Markdown: https://gentleduck.org/docs/duck-upload/course/chapter-3.md - ["Chapter 4: Multipart Uploads"](https://gentleduck.org/docs/duck-upload/course/chapter-4): "Upload large files in concurrent chunks with the multipart strategy, signPart, and completeMultipart." - Markdown: https://gentleduck.org/docs/duck-upload/course/chapter-4.md - ["Chapter 5: Pause, Resume & Retry"](https://gentleduck.org/docs/duck-upload/course/chapter-5): "Control the upload lifecycle — pause, resume, cancel — and configure automatic retry with backoff." - Markdown: https://gentleduck.org/docs/duck-upload/course/chapter-5.md - ["Chapter 6: Persistence & Offline"](https://gentleduck.org/docs/duck-upload/course/chapter-6): "Survive reloads and crashes: persist upload state, restore it, and rebind files to resume." - Markdown: https://gentleduck.org/docs/duck-upload/course/chapter-6.md - ["Chapter 7: Validation & Plugins"](https://gentleduck.org/docs/duck-upload/course/chapter-7): "Reject bad files before they upload, and extend the engine with plugins and hooks." - Markdown: https://gentleduck.org/docs/duck-upload/course/chapter-7.md - ["Chapter 8: Production Patterns"](https://gentleduck.org/docs/duck-upload/course/chapter-8): "Typed results, checksum deduplication, multiple purposes, and a testing strategy." - Markdown: https://gentleduck.org/docs/duck-upload/course/chapter-8.md - ["Course Overview"](https://gentleduck.org/docs/duck-upload/course/index): "Build PhotoDuck — a photo-sharing app with resumable uploads — from an empty folder to production." - Markdown: https://gentleduck.org/docs/duck-upload/course/index.md - [Design Decisions](https://gentleduck.org/docs/duck-upload/design/index): The architecture choices behind @gentleduck/upload and why they were made. - Markdown: https://gentleduck.org/docs/duck-upload/design/index.md - [Guides](https://gentleduck.org/docs/duck-upload/guides/index): Copy-paste recipes for common upload scenarios. - Markdown: https://gentleduck.org/docs/duck-upload/guides/index.md - [Installation](https://gentleduck.org/docs/duck-upload/installation/index): Get started with @gentleduck/upload in your project. - Markdown: https://gentleduck.org/docs/duck-upload/installation/index.md - [Introduction](https://gentleduck.org/docs/duck-upload/introduction): A modular, strategy-based file upload engine with React bindings. - Markdown: https://gentleduck.org/docs/duck-upload/introduction.md - [React Overview](https://gentleduck.org/docs/duck-upload/react/index): The React bindings for the upload engine — provider and hooks. - Markdown: https://gentleduck.org/docs/duck-upload/react/index.md - [UploadProvider](https://gentleduck.org/docs/duck-upload/react/upload-provider): Share an upload store across the component tree via React context. - Markdown: https://gentleduck.org/docs/duck-upload/react/upload-provider.md - [useDropzone](https://gentleduck.org/docs/duck-upload/react/use-dropzone): Headless drag-and-drop and file-picker hook — prop getters, isDragging, accept filtering. - Markdown: https://gentleduck.org/docs/duck-upload/react/use-dropzone.md - [useUploader](https://gentleduck.org/docs/duck-upload/react/use-uploader): The React hook for reading upload state and dispatching commands. - Markdown: https://gentleduck.org/docs/duck-upload/react/use-uploader.md - [Strategies Overview](https://gentleduck.org/docs/duck-upload/strategies/index): Pluggable upload protocols selected by the intent's strategy field. - Markdown: https://gentleduck.org/docs/duck-upload/strategies/index.md - [Multipart Strategy](https://gentleduck.org/docs/duck-upload/strategies/multipart): S3/MinIO-style chunked uploads with concurrent parts, per-part retry, and resume. - Markdown: https://gentleduck.org/docs/duck-upload/strategies/multipart.md - [POST Strategy](https://gentleduck.org/docs/duck-upload/strategies/post): Presigned multipart/form-data uploads for small and medium files. - Markdown: https://gentleduck.org/docs/duck-upload/strategies/post.md - [PUT Strategy](https://gentleduck.org/docs/duck-upload/strategies/put): Single-request presigned HTTP PUT — the S3 putObject / signed-PUT path. - Markdown: https://gentleduck.org/docs/duck-upload/strategies/put.md - [Strategy Registry](https://gentleduck.org/docs/duck-upload/strategies/registry): Register and resolve upload strategies by id, and write your own. - Markdown: https://gentleduck.org/docs/duck-upload/strategies/registry.md - [tus Strategy](https://gentleduck.org/docs/duck-upload/strategies/tus): Resumable uploads over the tus protocol — HEAD for the offset, chunked PATCH, cursor-persisted resume. - Markdown: https://gentleduck.org/docs/duck-upload/strategies/tus.md - [Changelog](https://gentleduck.org/docs/duck-variants/changelog): Release history for @gentleduck/variants. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-variants/changelog.md - ["gentleduck/variants"](https://gentleduck.org/docs/duck-variants/introduction): A lightweight, type-safe utility for generating class names from variant configurations. Designed to be fast, ergonomic, and easy to adopt in both small components and large design systems. - Markdown: https://gentleduck.org/docs/duck-variants/introduction.md - ["Command"](https://gentleduck.org/docs/duck-vim/api/command): "The Registry and KeyHandler classes that form the core of duck-vim's shortcut system." - Markdown: https://gentleduck.org/docs/duck-vim/api/command.md - ["Format"](https://gentleduck.org/docs/duck-vim/api/format): "Format key binding strings for display with platform-aware modifier labels." - Markdown: https://gentleduck.org/docs/duck-vim/api/format.md - ["API Reference"](https://gentleduck.org/docs/duck-vim/api/index): "Complete API reference for every duck-vim module." - Markdown: https://gentleduck.org/docs/duck-vim/api/index.md - ["Matcher"](https://gentleduck.org/docs/duck-vim/api/matcher): "Match keyboard events against parsed key bindings and create standalone handlers." - Markdown: https://gentleduck.org/docs/duck-vim/api/matcher.md - ["Parser"](https://gentleduck.org/docs/duck-vim/api/parser): "Parse, normalize, and validate key binding strings." - Markdown: https://gentleduck.org/docs/duck-vim/api/parser.md - ["Platform"](https://gentleduck.org/docs/duck-vim/api/platform): "OS detection and cross-platform Mod key resolution." - Markdown: https://gentleduck.org/docs/duck-vim/api/platform.md - ["React Bindings"](https://gentleduck.org/docs/duck-vim/api/react): "Provider, hooks, and context for using duck-vim in React applications." - Markdown: https://gentleduck.org/docs/duck-vim/api/react.md - ["Recorder"](https://gentleduck.org/docs/duck-vim/api/recorder): "Record key combinations for settings UIs where users customize their shortcuts." - Markdown: https://gentleduck.org/docs/duck-vim/api/recorder.md - ["Sequence"](https://gentleduck.org/docs/duck-vim/api/sequence): "Multi-step keyboard sequence matching with timeout support." - Markdown: https://gentleduck.org/docs/duck-vim/api/sequence.md - [Changelog](https://gentleduck.org/docs/duck-vim/changelog): Release history for @gentleduck/vim. Newest releases at the top. - Markdown: https://gentleduck.org/docs/duck-vim/changelog.md - ["Core Concepts"](https://gentleduck.org/docs/duck-vim/concepts): "Understand key descriptors, sequences, prefixes, the Mod key, and how duck-vim processes keyboard input." - Markdown: https://gentleduck.org/docs/duck-vim/concepts.md - ["Lesson 1: Introduction"](https://gentleduck.org/docs/duck-vim/course/01-introduction): "Why keyboard shortcuts matter and how duck-vim approaches the problem." - Markdown: https://gentleduck.org/docs/duck-vim/course/01-introduction.md - ["Lesson 2: Your First Shortcut"](https://gentleduck.org/docs/duck-vim/course/02-first-shortcut): "Create a Registry, register a command, and attach a KeyHandler to start listening for keyboard events." - Markdown: https://gentleduck.org/docs/duck-vim/course/02-first-shortcut.md - ["Lesson 3: Understanding Key Binding Strings"](https://gentleduck.org/docs/duck-vim/course/03-key-bindings): "Learn how duck-vim parses, normalizes, and validates key binding strings." - Markdown: https://gentleduck.org/docs/duck-vim/course/03-key-bindings.md - ["Lesson 4: React Integration"](https://gentleduck.org/docs/duck-vim/course/04-react): "Use KeyProvider and hooks to manage keyboard shortcuts in React applications." - Markdown: https://gentleduck.org/docs/duck-vim/course/04-react.md - ["Lesson 5: Multi-Key Sequences"](https://gentleduck.org/docs/duck-vim/course/05-sequences): "Build Vim-style multi-key sequences with prefix matching and timeouts." - Markdown: https://gentleduck.org/docs/duck-vim/course/05-sequences.md - ["Lesson 6: Display Formatting"](https://gentleduck.org/docs/duck-vim/course/06-formatting): "Render keyboard shortcuts in your UI with platform-aware labels and symbols." - Markdown: https://gentleduck.org/docs/duck-vim/course/06-formatting.md - ["Lesson 7: Key Recorder and Settings"](https://gentleduck.org/docs/duck-vim/course/07-recorder): "Build a settings UI where users can record and customize their keyboard shortcuts." - Markdown: https://gentleduck.org/docs/duck-vim/course/07-recorder.md - ["Lesson 8: Advanced Patterns"](https://gentleduck.org/docs/duck-vim/course/08-advanced): "Scoped bindings, command palettes, conflict detection, testing, and production best practices." - Markdown: https://gentleduck.org/docs/duck-vim/course/08-advanced.md - ["duck-vim Course"](https://gentleduck.org/docs/duck-vim/course/index): "Learn duck-vim from scratch. 8 lessons that take you from zero to building production keyboard interfaces." - Markdown: https://gentleduck.org/docs/duck-vim/course/index.md - ["Getting Started"](https://gentleduck.org/docs/duck-vim/getting-started): "Install duck-vim and register your first keyboard shortcut in under 2 minutes." - Markdown: https://gentleduck.org/docs/duck-vim/getting-started.md - ["Building a Command Palette"](https://gentleduck.org/docs/duck-vim/guides/command-palette): "Use duck-vim's registry to build a searchable command palette like VS Code's Ctrl+K." - Markdown: https://gentleduck.org/docs/duck-vim/guides/command-palette.md - ["Integrating with Other Frameworks"](https://gentleduck.org/docs/duck-vim/guides/custom-framework): "Use duck-vim's framework-agnostic core with Vue, Svelte, Angular, or any other framework." - Markdown: https://gentleduck.org/docs/duck-vim/guides/custom-framework.md - ["duck-vim Guides"](https://gentleduck.org/docs/duck-vim/guides/index): "Practical recipes for implementing keyboard UX patterns with duck-vim." - Markdown: https://gentleduck.org/docs/duck-vim/guides/index.md - ["Scoped Key Bindings"](https://gentleduck.org/docs/duck-vim/guides/scoped-bindings): "Attach keyboard shortcuts to specific DOM elements instead of the entire document." - Markdown: https://gentleduck.org/docs/duck-vim/guides/scoped-bindings.md - ["Shortcut Customization UI"](https://gentleduck.org/docs/duck-vim/guides/shortcut-settings): "Build a settings page where users can record and customize their keyboard shortcuts." - Markdown: https://gentleduck.org/docs/duck-vim/guides/shortcut-settings.md - ["duck-vim"](https://gentleduck.org/docs/duck-vim/introduction): "Tiny, framework-agnostic keyboard command engine with optional React bindings." - Markdown: https://gentleduck.org/docs/duck-vim/introduction.md - [Changelogs](https://gentleduck.org/docs/www/changelog): Per-package release notes. Each package keeps its own version history. Newest releases sit at the top. - Markdown: https://gentleduck.org/docs/www/changelog.md - ["gentleduck/primitives vs Radix UI"](https://gentleduck.org/docs/www/comparisons/vs-radix): "Compare @gentleduck/primitives with Radix UI Primitives. Same API, full ownership." - Markdown: https://gentleduck.org/docs/www/comparisons/vs-radix.md - ["gentleduck/calendar vs react-day-picker"](https://gentleduck.org/docs/www/comparisons/vs-react-day-picker): "Side-by-side comparison of @gentleduck/calendar and react-day-picker. Bundle size, features, migration guide." - Markdown: https://gentleduck.org/docs/www/comparisons/vs-react-day-picker.md - ["gentleduck/ui vs shadcn/ui"](https://gentleduck.org/docs/www/comparisons/vs-shadcn): "Same copy-paste philosophy. gentleduck/ui gives you the primitives, calendar, keyboard engine, and motion system that shadcn depends on external libraries for." - Markdown: https://gentleduck.org/docs/www/comparisons/vs-shadcn.md - [faqs](https://gentleduck.org/docs/www/faqs): Frequently asked questions about the GentleDuck organization and ecosystem. - Markdown: https://gentleduck.org/docs/www/faqs.md - [Installation](https://gentleduck.org/docs/www/installation): Pick the gentleduck package you want to install and follow the per-framework setup guide. - Markdown: https://gentleduck.org/docs/www/installation.md - [Introduction](https://gentleduck.org/docs/www/introduction): The story behind gentleduck — why we rebuilt the React UI stack from primitives up, who it is for, and how the pieces fit together. - Markdown: https://gentleduck.org/docs/www/introduction.md - [MCP Server](https://gentleduck.org/docs/www/mcp): Connect AI tools like Claude, Cursor, and Windsurf to the gentleduck documentation through the Model Context Protocol — live access to every package's docs, APIs, and examples. - Markdown: https://gentleduck.org/docs/www/mcp.md - [mdx](https://gentleduck.org/docs/www/mdx): Authoring MDX in this docs site (syntax, components, and project-specific conventions). - Markdown: https://gentleduck.org/docs/www/mdx.md - [building accessible uis with duck primitives](https://gentleduck.org/docs/www/news/building-accessible-uis): How @gentleduck/primitives handles focus trapping, keyboard navigation, ARIA attributes, and screen reader support so you can focus on design. - Markdown: https://gentleduck.org/docs/www/news/building-accessible-uis.md - [the duck ui component library](https://gentleduck.org/docs/www/news/component-library): 59+ production-ready components with a copy-source philosophy. Own your code, not your dependencies. - Markdown: https://gentleduck.org/docs/www/news/component-library.md - [duck gen and duck query](https://gentleduck.org/docs/www/news/duck-gen-and-query): Type-safe API generation and HTTP client for TypeScript. Scan your server code, emit .d.ts files, and get fully typed requests and responses with zero runtime cost. - Markdown: https://gentleduck.org/docs/www/news/duck-gen-and-query.md - [the gentleduck ecosystem](https://gentleduck.org/docs/www/news/ecosystem-overview): How primitives, variants, hooks, motion, and libs compose into a unified developer tooling stack. - Markdown: https://gentleduck.org/docs/www/news/ecosystem-overview.md - [february 2026 updates](https://gentleduck.org/docs/www/news/february-2026-updates): Recharts v3 migration, documentation overhaul, new components, layout cleanup, and registry fixes across the GentleDuck ecosystem. - Markdown: https://gentleduck.org/docs/www/news/february-2026-updates.md - [introducing duck motion](https://gentleduck.org/docs/www/news/introducing-duck-motion): Enter/exit animations, mount/unmount transitions, and staggered sequences — built to pair with duck-variants and duck-primitives. - Markdown: https://gentleduck.org/docs/www/news/introducing-duck-motion.md - [type-safe apis with duck gen](https://gentleduck.org/docs/www/news/type-safe-apis-with-duck-gen): How Duck Gen eliminates the gap between your server routes and client code. A deep dive into the compiler extension workflow. - Markdown: https://gentleduck.org/docs/www/news/type-safe-apis-with-duck-gen.md - [Packages](https://gentleduck.org/docs/www/packages): Every package in the gentleduck organization, what it does, and when to reach for it. - Markdown: https://gentleduck.org/docs/www/packages.md - [Agent Skills](https://gentleduck.org/docs/www/skills): Install AI coding skills that teach your agent how to work with every package in the gentleduck ecosystem. - Markdown: https://gentleduck.org/docs/www/skills.md - [whoiam](https://gentleduck.org/docs/www/whoiam): Get to know more about the person behind @gentleduck. - Markdown: https://gentleduck.org/docs/www/whoiam.md