diff --git a/docs/WRNEXUS-COMPLETE-FEATURE-REPORT.md b/docs/WRNEXUS-COMPLETE-FEATURE-REPORT.md new file mode 100644 index 00000000..bad96bbb --- /dev/null +++ b/docs/WRNEXUS-COMPLETE-FEATURE-REPORT.md @@ -0,0 +1,1396 @@ +# WRNexusJS complete framework and `.wrn` report + +Generated for workspace version **0.8.8** from the checked-out source and generated references. + +> Scope and source of truth: this report describes the checked-out implementation, not only the prose docs. The parser in `packages/syntax`, compiler/runtime code, package manifests, `docs/public-api-0.8.json`, and `packages/ui/component-reference.json` take precedence when older documents disagree. + +## 1. Executive summary + +- Workspace framework version: **0.8.8**. The 48 independently published packages have their own patch versions; see Appendix A. +- Architecture: compiler-driven, SSR-first, Bun-native/full-stack, with Node-friendly selected tooling. +- Static routes retain the zero-framework-JavaScript goal; hydration is selective and islands are loaded only where declared. +- Current headline features include typed callable API blocks, reactive `if`/`each` control blocks, runtime-scoped state and functions, typed outputs, stores, React islands, HTML-aware editor tooling, package/plugin discovery, generated contracts, security gates, and multi-app RPC. +- Audited public API baseline: **48 packages / 2741 exported symbols** across root and subpath exports. +- Audited packaged `.wrn` sources: **142**; generated UI reference: **102 components**. + +## 2. What a `.wrn` file is + +A `.wrn` file is a single compiler-owned source unit combining imports, a root declaration, typed data/state, runtime behavior, HTML view markup, styles, metadata, API handlers/bindings, and realtime handlers. It is parsed into the canonical AST owned by `@wrnexus/syntax`; `@wrnexus/compiler` turns that AST into SSR, browser, route, style, and metadata artifacts. + +Valid roots: + +| Root | Purpose | +| ---------------------- | ----------------------------------- | +| `page Name {}` | Routed page. | +| `component Name {}` | Reusable server-rendered component. | +| `layout Name {}` | Reusable page wrapper. | +| `global store Name {}` | Application-wide store. | +| `page store Name {}` | Page-lifetime store. | + +A file may start with static TypeScript imports. Component and layout symbols can be imported explicitly; compatibility discovery remains configurable for upgraded applications. + +## 3. Complete `.wrn` block and declaration catalog + +| Declaration/block | Shape | Meaning and current behavior | +| -------------------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `layout = LayoutSymbol` | root member | Preferred imported layout reference. String layout names remain a compatibility path. | +| `runtime = "…"` | root member | Targets: `server`, `client`, `universal`, `edge`, `worker`, `service-worker`. | +| `render = "…"` | root member | Modes: `static`, `server`, `hybrid`, `client`, `partial-static`. | +| `hydrate = "…"` | root member | `load`, `idle`, `visible`, `interaction`, `none`, or `media:`; legacy `never` normalizes to `none`. | +| `client = "…"` | root member | Legacy alias for hydration configuration; `client {}` remains a different runtime-mode block. | +| `types {}` | raw TypeScript | Local type declarations emitted for checking. | +| `props {}` | typed declarations | Required without default; optional via `?`; defaults supported; legacy `@event name = function` is parsed for compatibility. | +| `outputs {}` | typed declarations | Canonical child-to-parent callable output contract, zero or one typed payload. | +| `state name = expr` / `state {}` | reactive data | Shared state; type annotation optional, initializer required. Arrays, objects, and multiline expressions are supported. | +| `server state {}` / `client state {}` | runtime-scoped data | State visible only in the declared runtime boundary. | +| `computed name = expr` / `computed {}` | derived data | Dependency-tracked cached values. | +| `effect {}` | reactive side effect | Runs after batched updates when referenced reactive values change. | +| `load server {}` / `load client {}` | loader | Runtime-specific loading; named/dependent/deferred forms are represented in the AST. | +| `action name(args) {}` | action | Named action, optionally schema-backed, exported for adapters. | +| `view {}` | HTML/template | HTML/component tree with expressions, events, directives, and reactive control blocks. | +| `style {}` | scoped CSS | Multiple blocks allowed; promoted into the document head with CSP/HMR/navigation support. | +| `seo {}` | metadata | Key/value SEO metadata. | +| `security {}` | policy metadata | Auth, CSRF, roles, rate-limit and organization-specific enforcement metadata. | +| `navigation {}` | navigation metadata | Page navigation policy/configuration consumed by runtime tooling. | +| `cache {}` | cache metadata | Declarative framework cache policy. | +| `functions {}` | shared helpers | Legacy/general shared helper body; runtime-specific function grammar is preferred where applicable. | +| `server { functions {} }` / `client { functions {} }` | mode helper block | Raw helpers scoped to SSR or browser execution. | +| `[async] server function name(args) {}` | callable function | Explicit server RPC boundary. | +| `[async] client function name(args) {}` | browser function | Explicit client callable function. | +| `[async] shared function name(args) {}` | universal helper | Explicit shared function. | +| `ssr { api … }` | render-time own-route data | Executes during render. Legacy bare response body is supported; sectioned `response`/`error` is supported; request parameters are intentionally forbidden. | +| `client { api … }` | callable own-route data | Sectioned form creates `api.name(input)` in browser scope; GET uses query parameters, other methods use JSON and CSRF. | +| `api METHOD /path {}` | route handler | Defines an application API endpoint/handler. Distinct from named data API bindings inside `ssr`/`client`. | +| `lifecycle { mount/update/unmount {} }` | component lifecycle | Hydrated lifecycle hooks. | +| `watch stateName {}` | watcher | Runs for changes to the named state. | +| `realtime name { on event(args) {} }` | websocket behavior | Declares named realtime handlers. | +| `persist {}` | store persistence | Storage (`memory`, `session`, `local`), included keys, version, migrations, and validation. | +| `lifecycle { serverInit/clientInit/hydrate/dispose {} }` | store lifecycle | Store-specific lifecycle form. | + +### View/template features + +- Standard HTML and custom/component tags; HTML void elements follow the platform list. +- Escaped `{expression}` interpolation. Raw HTML is an explicit security boundary. +- Browser event attributes: `@click`, `@window:scroll`, `@document:click`, and other event names. +- Conditional classes through `class:name='expression'`; visibility through `data-show`. +- Legacy loop attribute: `data-for="item, index in items key item.id"`, with optional `data-key`. +- Canonical control blocks: `{#if}`, `{:else if}`, `{:else}`, `{/if}` and `{#each list as item, index key expr}`, `{:empty}`, `{/each}`. Initial output is SSR and remains reactive after hydration. +- JSX-style expression props (`items={items}`, object/array expressions) are current; quoted expressions remain compatible. Literal HTML attributes remain quoted. +- React/TSX islands use imported `.tsx` components and `client:only`, `client:load`, `client:visible`, or `client:idle`. They are client-only in v1; island props must be JSON-serializable. + +### Typed callable API block (latest form) + +```wrn +client { + api searchUsers POST /api/users { + request { body { name?: string age?: number } } + response { return data.users } + error { return [] } + } +} +``` + +Call it with `await api.searchUsers({ name })`. GET uses `request { parameters {} }`; non-GET uses `body {}`. Fields are type-only declarations checked against generated route contracts in `app/types/wrnexus.generated.api-checks.ts`. Success binds parsed JSON as `data`. `error {}` converts failure to its returned value; without it, non-2xx, network, and parse failures reject. Targets are restricted to the current app’s `/api/*` routes. External APIs, custom headers, parameterized SSR calls, caching, and deduplication are deferred. + +Legacy API binding remains valid: `ssr { api users GET /api/users { return users } }`. Its bare body receives payload fields through the legacy dynamic scope. The sectioned form deliberately uses `data` so TypeScript can check it. + +## 4. Runtime, rendering, and data flow + +1. `@wrnexus/syntax` tokenizes/parses and emits stable diagnostics and AST nodes. +2. The compiler resolves imports/components/islands and generates SSR HTML functions, client modules, route/API exports, styles, metadata, and contracts. +3. Static pages ship no framework JS. Interactive pages receive only the required CSR runtime; island routes lazily receive React/island assets. +4. State changes batch, invalidate computed values, run effects/watchers, update expressions/classes/visibility, and rerender `if`/`each` regions. +5. Server functions use the RPC boundary; typed API blocks call same-app API routes; realtime blocks produce websocket handlers; stores bridge SSR and client state. +6. Generated types validate component props, outputs, functions, routes, and typed API-block request contracts during `tsc` and release checks. + +## 5. Framework feature inventory + +- Routing and rendering: filesystem pages/layouts, static/request/hybrid/client/partial-static rendering, route analysis, advanced routing, CSR navigation, layouts, streaming/SSR packages. +- Reactivity: state, computed values, effects, watchers, reactive attributes/events, SSR-to-client control blocks, loaders/actions, explicit hydration. +- Components/UI: application components, package-owned blocks, generated prop/output references, theming/tokens, 102 audited first-party UI components, app overrides/ejection. +- Data/backend: database drivers and migrations, repositories, cache, queue, pub/sub, realtime, GraphQL, route APIs, server functions, workspace RPC. +- Identity/security: auth, authorization, OAuth, JWT/JWKS, MFA/passkeys/recovery, CAPTCHA, encryption, SSRF defenses, CSP/CSRF, request limits, audit/security gates. +- Product capabilities: AI/RAG/provider adapters, content, i18n, image optimization, uploads, validation, PWA, native/mobile, analytics/tracking, observability. +- Developer experience: CLI create/dev/build/update/doctor/inspect/generate/eject/db/workspace operations, HMR, dev toolbar, language server, VS Code completion/HTML editing/formatting/diagnostics, playground, MCP, tests/benchmarks/release validation. +- Deployment: production builds, Docker and platform examples, migrations, package staging/integrity checks, SBOM and security/performance reports. + +## 6. Legacy-to-current migration map + +| Legacy/earlier approach | Current approach | Compatibility/status | +| ------------------------------------------------------------- | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| Compiler-owned/internal parsing imports | Canonical `@wrnexus/syntax` lexer/parser/AST/diagnostics | Compiler re-exports remain for compatibility; direct internals are deprecated. | +| Implicit component discovery everywhere | Explicit imports and generated contracts | Upgraded apps can retain `legacyComponentDiscovery`; unresolved symbols are reported rather than guessed. | +| `layout = "PublicLayout"` | Import layout and use `layout = PublicLayout` | String layouts remain behind compatibility configuration. | +| `@event changed = function` in props | `outputs { changed(payload: Type) }` | v0.6 migration converts declarations; ambiguous payloads become `unknown`. | +| `$emit("changed", value)` and `event.detail` | `output.changed(value)` and direct `payload` | Static cases auto-migrated; dynamic emit names require review. | +| Unclassified functions | `server function`, `client function`, or `shared function` | v0.6 classifies unambiguous cases; compatibility default can preserve ambiguous behavior. | +| Manually copied CAPTCHA JS/script tags | Package-discovered client runtime/assets | v0.4 removes tags and archives old assets under `.wrnexus/legacy-assets/0.4.0`. | +| Package components/routes/assets wired manually | Automatic package/plugin discovery and contribution registry | Current CLI/build/dev server inspect and consume contributions. | +| Only scalar/quoted dynamic props | Native arrays/objects and JSX-style unquoted expressions | Quoted expression attributes remain supported. | +| `data-for` and older each forms | `{#each …}{:empty}{/each}` | Legacy loop forms remain supported; canonical blocks offer keyed/empty/reactive behavior. | +| Static server-only `if`/`each` after hydration | Reactive client rerendering of control blocks | Current runtime updates branches/rows after state changes. | +| Bare `api` binding bodies and hand-written `fetch` for inputs | Sectioned typed callable client API blocks | Bare body stays supported; new form adds inputs, route-contract checking, CSRF, response/error transforms. | +| Generated API assertions in `.d.ts` | Assertions in real `wrnexus.generated.api-checks.ts` | Changed because `skipLibCheck` made `.d.ts` assertions inert. | +| Client functions accidentally retaining TypeScript | Compiler strips type syntax before browser-module emission | Fixed and regression-tested. | +| Markup merely highlighted as embedded HTML | Virtual HTML document plus HTML language service | Current editor adds tag/attribute completion, auto-close/rename, hover, Emmet, and folding; WRN formatter still owns formatting. | +| Framework-only component ecosystem | Optional React `.tsx` islands | React is isolated and lazy; zero-JS routes remain unchanged; island SSR/Fast Refresh are deferred. | +| Per-component/global style placement inconsistencies | `style {}` promoted to document head | Current pipeline supports CSP, HMR and CSR navigation. | +| Manually maintained API/component knowledge | Generated public API and component references plus validation gates | `check:public-api`, generated-type checks, UI visual contract and package audits detect drift. | + +Compatibility flags visible in generated/upgraded config include `legacyEmit`, `legacyEventProps`, `legacyComponentDiscovery`, `stringLayouts`, and `functions.legacyDefaultRuntime`. New projects default legacy flags off; migration-created configs may enable them to preserve behavior until source modernization is complete. + +## 7. Diagnostics, security, and correctness guarantees + +Stable diagnostics include parse/member/prop/state/hydration/runtime/accessibility codes and feature-specific diagnostics such as island prop or missing-React errors. Compiler, CLI doctor/build, type generation, and editor tooling share syntax ownership to reduce parser drift. + +Security properties include escaped output by default, CSP-aware styles/scripts, same-origin API restriction, CSRF on non-GET callable API requests, credential handling via same-origin cookies, safe serialization, SSRF policies, request limits, auth/authz metadata and middleware, secret/audit gates, and application-layer encryption where explicitly needed. Security metadata is declarative input; enforcement still belongs to installed middleware/plugins and route policy. + +## 8. Current limitations and deferred work + +- Typed API blocks do not target third-party URLs, accept custom author headers, parameterize SSR requests, or provide built-in request caching/deduplication. +- React islands are client-rendered in v1; island SSR/hydration and React Fast Refresh are deferred. +- Native compilation does not directly port data API blocks; native screens use generated backend helpers. +- HTML language features intentionally do not replace the WRN formatter. +- Generated type checks must stay fresh; `check:generated-types` is the enforcement gate. + +## 9. Documentation drift discovered by this audit + +- Root `README.md` says 0.8.0, while the workspace manifest is 0.8.8. +- `packages/ui/README.md` says 85 components and `docs/UI-COMPONENT-INVENTORY.md` says 891; the current generated component reference contains 102. +- `docs/WRN-LANGUAGE-SPEC-1.0.md` calls itself the 0.3.x contract and predates several implemented roots/members (stores, rendering modes, outputs, runtime-scoped state/functions, React islands, sectioned callable API blocks). Use it as historical baseline, not a complete 0.8.8 reference. +- Package patch versions are intentionally ahead of the workspace umbrella version in many packages. Consumers should use the actual package manifest/version selected by the release process. + +## 10. Recommended release verification + +Run `bun run check:production` for the complete production gate. Its chain covers workspace repair, generated types, public API, UI visual contract, 0.8 validation, framework/ASVS security, editor bundle freshness, typecheck, lint, component imports, package tests, formatting, and examples. Additional focused commands include `bun run test:all`, `bun run audit:packages`, `bun run test:package-kits`, `bun run validate:staging`, `bun run sbom`, and `bun run benchmark:framework`. + +## Appendix A — package/version inventory + +| Package | Version | Purpose | +| -------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------ | +| `@wrnexus/ai` | 0.8.9 | Zero-dependency Claude (Anthropic) client for WrNexus apps. | +| `@wrnexus/auth` | 0.8.12 | Complete authentication, account security, MFA, passkeys, recovery, devices, risk, and audit system for WRNexusJS. | +| `@wrnexus/authz` | 0.8.9 | — | +| `@wrnexus/benchmark` | 0.8.8 | Deterministic benchmark runner and performance regression budgets for WRNexusJS. | +| `@wrnexus/cache` | 0.8.8 | Tag-aware memory and response caching with stale-while-revalidate for WRNexusJS. | +| `@wrnexus/captcha` | 0.8.11 | First-class CAPTCHA challenges, providers, verification guards, page gates, and WRNexusJS UI. | +| `@wrnexus/cli` | 0.8.45 | — | +| `@wrnexus/compiler` | 0.8.13 | — | +| `@wrnexus/content` | 0.8.9 | Typed Markdown content collections, loaders, indexes, feeds, and preview workflows for WRNexusJS. | +| `@wrnexus/core` | 0.8.9 | — | +| `@wrnexus/csr` | 0.8.24 | — | +| `@wrnexus/db` | 0.8.16 | Typed database drivers, migrations, instrumentation, repositories, pagination, and transaction helpers. | +| `@wrnexus/dev-server` | 0.8.41 | — | +| `@wrnexus/dev-toolbar` | 0.8.13 | — | +| `@wrnexus/encryption` | 0.8.9 | Authenticated encryption, key rotation, hashing, and optional application-layer encrypted HTTP envelopes. | +| `@wrnexus/graphql` | 0.8.8 | — | +| `@wrnexus/helpers` | 0.8.8 | Safe convenience helpers for WrNexus request contexts and common application flows. | +| `@wrnexus/i18n` | 0.8.12 | Locale loading, fallback resolution, SSR/browser translations, formatters, and WRNexusJS language components. | +| `@wrnexus/identity` | 0.8.8 | Enterprise federation, provisioning, machine identity, and privacy governance for WRNexusJS. | +| `@wrnexus/image` | 0.8.10 | Responsive image planning, secure remote image policies, and performance auditing for WRNexusJS. | +| `@wrnexus/jwt` | 0.8.9 | HS256 JSON Web Tokens, key rotation, access/refresh helpers, scopes, cookies, and auth middleware. | +| `@wrnexus/language-server` | 0.8.11 | Editor-neutral Language Server Protocol implementation for WRNexus .wrn files. | +| `@wrnexus/mcp` | 0.8.8 | Model Context Protocol server exposing WRNexus application and framework context. | +| `@wrnexus/mobile` | 0.8.8 | — | +| `@wrnexus/native` | 0.8.8 | — | +| `@wrnexus/oauth` | 0.8.8 | — | +| `@wrnexus/observability` | 0.8.8 | Metrics, Web Vitals collection, request instrumentation, and exporter adapters for WRNexusJS. | +| `@wrnexus/playground` | 0.8.8 | Secure, shareable WRNexus compiler and UI playground. | +| `@wrnexus/plugin` | 0.8.8 | — | +| `@wrnexus/pubsub` | 0.8.9 | — | +| `@wrnexus/pwa` | 0.8.9 | Service workers, manifests, offline queues, background sync, push, and conflict resolution for WRNexusJS. | +| `@wrnexus/queue` | 0.8.8 | — | +| `@wrnexus/react` | 0.8.9 | — | +| `@wrnexus/reactive` | 0.8.8 | — | +| `@wrnexus/realtime` | 0.8.10 | Typed realtime rooms, message helpers, presence utilities, package UI blocks, and WRNexusJS integration. | +| `@wrnexus/router` | 0.8.9 | — | +| `@wrnexus/rpc` | 0.8.10 | Typed request/response calls between workspace apps, carrying end-user identity. | +| `@wrnexus/security` | 0.8.8 | Security policies, safe serialization, SSRF protection, request limits, and secure cookie helpers for WRNexusJS. | +| `@wrnexus/ssr` | 0.8.9 | — | +| `@wrnexus/store` | 0.8.8 | — | +| `@wrnexus/styles` | 0.8.15 | — | +| `@wrnexus/syntax` | 0.8.9 | — | +| `@wrnexus/test` | 0.8.9 | — | +| `@wrnexus/tracking` | 0.8.8 | — | +| `@wrnexus/typecheck` | 0.8.10 | — | +| `@wrnexus/ui` | 0.8.20 | — | +| `@wrnexus/uploader` | 0.8.10 | Secure upload drivers, policies, client runtime, helper functions, and reusable upload components. | +| `@wrnexus/validation` | 0.8.10 | Shared server/browser schemas, validation helpers, form runtime, and reusable error components. | + +## Appendix B — complete audited public export inventory + +### `@wrnexus/ai` (62 symbols) + +- **.:** `AI`, `AIAttemptEvent`, `AICircuitBreakerOptions`, `AIClient`, `AIClientOptions`, `AIConfig`, `AIError`, `AIGuardrail`, `AIProvider`, `AIProviderCapabilities`, `AIResult`, `AIRetryOptions`, `AITool`, `AIToolCall`, `AIUsage`, `ConversationStore`, `DeterministicAIProviderOptions`, `Effort`, `EmbeddingProvider`, `GenerateOptions`, `HttpAIProviderOptions`, `Message`, `Role`, `VectorMatch`, `VectorRecord`, `VectorStore`, `aiProvider`, `aiRateLimiter`, `anthropicProvider`, `createAI`, `createAIClient`, `createRagPipeline`, `deterministicAIProvider`, `evaluateAI`, `googleAIProvider`, `guardedProvider`, `localAIProvider`, `maxPromptLength`, `memoryConversationStore`, `memoryVectorStore`, `openAIEmbeddings`, `openAIProvider`, `promptTemplate` +- **./platform:** `AIGuardrail`, `ConversationStore`, `EmbeddingProvider`, `HttpAIProviderOptions`, `VectorMatch`, `VectorRecord`, `VectorStore`, `aiRateLimiter`, `createRagPipeline`, `evaluateAI`, `googleAIProvider`, `guardedProvider`, `localAIProvider`, `maxPromptLength`, `memoryConversationStore`, `memoryVectorStore`, `openAIEmbeddings`, `openAIProvider`, `promptTemplate` + +### `@wrnexus/auth` (353 symbols) + +- **.:** `AUTH_SECURITY_EVENT_TYPES`, `AUTH_SESSION_KEY`, `AuthAccountStatus`, `AuthAuditIssue`, `AuthClock`, `AuthConfig`, `AuthDeliveryMessage`, `AuthDeliveryProvider`, `AuthEngine`, `AuthEngineOptions`, `AuthHttpOptions`, `AuthIdentity`, `AuthIdentityType`, `AuthImpersonationDecision`, `AuthMfaMethod`, `AuthPasskeyHttpOptions`, `AuthPluginOptions`, `AuthPublicUser`, `AuthRandom`, `AuthResult`, `AuthRiskDecision`, `AuthRiskLevel`, `AuthRiskSignals`, `AuthRouteName`, `AuthRoutesConfig`, `AuthSchemaOverrides`, `AuthSchemaSet`, `AuthSecretProtector`, `AuthSecurityEvent`, `AuthSecurityEventType`, `AuthSession`, `AuthSessionVerificationHandler`, `AuthSignedInHandler`, `AuthSignedOutHandler`, `AuthStore`, `AuthSuccessfulSignUpAction`, `AuthSuccessfulSignUpHandler`, `AuthTokenPurpose`, `AuthTokenUrlInput`, `AuthUser`, `AuthenticatedContext`, `DefaultAuthRouteOptions`, `KnownAuthSecurityEventType`, `LoginAttempt`, `LoginInput`, `MemoryAuthStore`, `MemoryPasskeyChallengeStore`, `OAuthAccount`, `OneTimeToken`, `OtpChallenge`, `PasskeyAuthenticationOptions`, `PasskeyChallengeKind`, `PasskeyChallengeRecord`, `PasskeyChallengeStore`, `PasskeyCredential`, `PasskeyProvider`, `PasskeyRegistrationOptions`, `PasskeyVerificationResult`, `PasswordBreachProvider`, `PasswordCredential`, `RecoveryCodeRecord`, `RegisterInput`, `RiskPolicy`, `SqlAuthStore`, `TotpCredential`, `TrustedDevice`, `assertPasskeyProvider`, `authBrowserSchemaDescriptors`, `authBrowserSchemaMap`, `authComponentProps`, `authComponentsDir`, `authFailure`, `authPlugin`, `authRoute`, `authSchemas`, `authSession`, `authSuccess`, `authenticatorConfirmSchema`, `authenticatorDisableSchema`, `authenticatorSetupSchema`, `changePasswordSchema`, `clearAuthSession`, `clearDefaultAuthEngine`, `createAuthEngine`, `createAuthHttpHandlers`, `createAuthSecretProtector`, `currentAuthSession`, `decodeBase32`, `emptyActionSchema`, `encodeBase32`, `establishAuthSession`, `evaluateAuthRisk`, `generateTotp`, `generateTotpSecret`, `getAuthSession`, `getAuthUser`, `getDefaultAuthEngine`, `getDefaultAuthRouteOptions`, `getDefaultAuthSchemas`, `hasDefaultAuthEngine`, `impersonationStartSchema`, `inferIdentityType`, `invitationAcceptSchema`, `isAuthenticatedContext`, `loginSchema`, `magicLinkConsumeSchema`, `magicLinkRequestSchema`, `mfaOtpRequestSchema`, `mfaSchema`, `normalizeEmail`, `normalizeIdentity`, `normalizePhone`, `normalizeUsername`, `optionalAuthUser`, `otpIssueSchema`, `otpLoginCompleteSchema`, `otpLoginRequestSchema`, `otpSchema`, `passkeyAuthenticationOptionsSchema`, `passkeyAuthenticationVerifySchema`, `passkeyRegistrationOptionsSchema`, `passkeyRegistrationVerifySchema`, `passwordResetRequestSchema`, `passwordResetSchema`, `publicUser`, `recoveryCodesSchema`, `registerSchema`, `requireAuth`, `requireAuthUser`, `resolveAuthSchemas`, `safeAuthReturnTo`, `sessionRevokeSchema`, `setDefaultAuthEngine`, `setDefaultAuthRouteOptions`, `setDefaultAuthSchemas`, `signUpSchema`, `totpUri`, `tryGetDefaultAuthEngine`, `verificationRequestSchema`, `verificationTokenSchema`, `verifyTotp` +- **./client:** `AuthRuntimeApi`, `authRuntime` +- **./engine:** `AuthEngine`, `createAuthEngine` +- **./http:** `AuthHttpOptions`, `AuthPasskeyHttpOptions`, `createAuthHttpHandlers` +- **./middleware:** `AUTH_SESSION_KEY`, `AuthSessionOptions`, `RequireAuthOptions`, `authSession`, `clearAuthSession`, `establishAuthSession`, `getAuthSession`, `getAuthUser`, `isAuthenticatedContext`, `requireAuth` +- **./passkeys:** `MemoryPasskeyChallengeStore`, `PasskeyChallengeKind`, `PasskeyChallengeRecord`, `PasskeyChallengeStore`, `PasskeyProvider`, `assertPasskeyProvider`, `publicKeyCreationOptions`, `publicKeyRequestOptions` +- **./plugin:** `AuthAuditIssue`, `AuthConfig`, `AuthPluginOptions`, `AuthRoutesConfig`, `authComponentsDir`, `authPlugin`, `default` +- **./protector:** `createAuthSecretProtector` +- **./runtime:** `DefaultAuthRouteOptions`, `clearDefaultAuthEngine`, `getDefaultAuthEngine`, `getDefaultAuthRouteOptions`, `getDefaultAuthSchemas`, `hasDefaultAuthEngine`, `setDefaultAuthEngine`, `setDefaultAuthRouteOptions`, `setDefaultAuthSchemas`, `tryGetDefaultAuthEngine` +- **./server:** `AUTH_SECURITY_EVENT_TYPES`, `AUTH_SESSION_KEY`, `AuthAccountStatus`, `AuthClock`, `AuthDeliveryMessage`, `AuthDeliveryProvider`, `AuthEngine`, `AuthEngineOptions`, `AuthHttpOptions`, `AuthIdentity`, `AuthIdentityType`, `AuthImpersonationDecision`, `AuthMfaMethod`, `AuthPasskeyHttpOptions`, `AuthPublicUser`, `AuthRandom`, `AuthResult`, `AuthRiskDecision`, `AuthRiskLevel`, `AuthRiskSignals`, `AuthSchemaOverrides`, `AuthSchemaSet`, `AuthSecretProtector`, `AuthSecurityEvent`, `AuthSecurityEventType`, `AuthSession`, `AuthSessionVerificationHandler`, `AuthSignedInHandler`, `AuthSignedOutHandler`, `AuthSuccessfulSignUpAction`, `AuthSuccessfulSignUpHandler`, `AuthTokenPurpose`, `AuthTokenUrlInput`, `AuthUser`, `AuthenticatedContext`, `DefaultAuthRouteOptions`, `KnownAuthSecurityEventType`, `LoginAttempt`, `LoginInput`, `MemoryAuthStore`, `OAuthAccount`, `OneTimeToken`, `OtpChallenge`, `PasskeyAuthenticationOptions`, `PasskeyCredential`, `PasskeyProvider`, `PasskeyRegistrationOptions`, `PasskeyVerificationResult`, `PasswordBreachProvider`, `PasswordCredential`, `RecoveryCodeRecord`, `RegisterInput`, `SqlAuthStore`, `TotpCredential`, `TrustedDevice`, `authBrowserSchemaDescriptors`, `authBrowserSchemaMap`, `authSchemas`, `authSession`, `authenticatorConfirmSchema`, `authenticatorDisableSchema`, `authenticatorSetupSchema`, `changePasswordSchema`, `clearAuthSession`, `clearDefaultAuthEngine`, `createAuthEngine`, `createAuthHttpHandlers`, `createAuthSecretProtector`, `emptyActionSchema`, `establishAuthSession`, `getAuthSession`, `getAuthUser`, `getDefaultAuthEngine`, `getDefaultAuthRouteOptions`, `getDefaultAuthSchemas`, `hasDefaultAuthEngine`, `impersonationStartSchema`, `inferIdentityType`, `invitationAcceptSchema`, `isAuthenticatedContext`, `loginSchema`, `magicLinkConsumeSchema`, `magicLinkRequestSchema`, `mfaOtpRequestSchema`, `mfaSchema`, `normalizeEmail`, `normalizeIdentity`, `normalizePhone`, `normalizeUsername`, `otpIssueSchema`, `otpLoginCompleteSchema`, `otpLoginRequestSchema`, `otpSchema`, `passkeyAuthenticationOptionsSchema`, `passkeyAuthenticationVerifySchema`, `passkeyRegistrationOptionsSchema`, `passkeyRegistrationVerifySchema`, `passwordResetRequestSchema`, `passwordResetSchema`, `publicUser`, `recoveryCodesSchema`, `registerSchema`, `requireAuth`, `resolveAuthSchemas`, `safeAuthReturnTo`, `sessionRevokeSchema`, `setDefaultAuthEngine`, `setDefaultAuthRouteOptions`, `setDefaultAuthSchemas`, `signUpSchema`, `tryGetDefaultAuthEngine`, `verificationRequestSchema`, `verificationTokenSchema` +- **./store:** `AuthStore` +- **./stores/memory:** `MemoryAuthStore` +- **./stores/sql:** `SqlAuthStore` +- **./totp:** `TotpOptions`, `decodeBase32`, `encodeBase32`, `generateTotp`, `generateTotpSecret`, `totpUri`, `verifyTotp` +- **./types:** `AUTH_SECURITY_EVENT_TYPES`, `AuthAccountStatus`, `AuthClock`, `AuthDeliveryMessage`, `AuthDeliveryProvider`, `AuthEngineOptions`, `AuthIdentity`, `AuthIdentityType`, `AuthImpersonationDecision`, `AuthMfaMethod`, `AuthPublicUser`, `AuthRandom`, `AuthResult`, `AuthRiskDecision`, `AuthRiskLevel`, `AuthRiskSignals`, `AuthSecretProtector`, `AuthSecurityEvent`, `AuthSecurityEventType`, `AuthSession`, `AuthSessionVerificationHandler`, `AuthSignedInHandler`, `AuthSignedOutHandler`, `AuthSuccessfulSignUpAction`, `AuthSuccessfulSignUpHandler`, `AuthTokenPurpose`, `AuthTokenUrlInput`, `AuthUser`, `AuthenticatedContext`, `KnownAuthSecurityEventType`, `LoginAttempt`, `LoginInput`, `OAuthAccount`, `OneTimeToken`, `OtpChallenge`, `PasskeyAuthenticationOptions`, `PasskeyCredential`, `PasskeyProvider`, `PasskeyRegistrationOptions`, `PasskeyVerificationResult`, `PasswordBreachProvider`, `PasswordCredential`, `RecoveryCodeRecord`, `RegisterInput`, `TotpCredential`, `TrustedDevice` + +### `@wrnexus/authz` (66 symbols) + +- **.:** `AUTHZ_LOCALS_KEY`, `AttributeMeta`, `AuthorizationDecision`, `AuthorizeDecisionOptions`, `AuthzAuditEvent`, `AuthzAuditSink`, `AuthzCatalog`, `AuthzModule`, `AuthzResolver`, `AuthzResolverOptions`, `AuthzScope`, `CacheOptions`, `CachedPermissionStore`, `CatalogSource`, `DecideInput`, `DecisionPolicy`, `GrantEffect`, `GuardOptions`, `MemoryAuditSink`, `PermissionMeta`, `PermissionStore`, `Policy`, `Rbac`, `Subject`, `SubjectAssignments`, `all`, `allDecisions`, `allow`, `any`, `anyDecision`, `attr`, `authorize`, `authorizeDecision`, `authzMiddleware`, `cachedPermissionStore`, `can`, `consoleAuditSink`, `createAuthzResolver`, `decideFor`, `decision`, `defineAuthz`, `defineRbac`, `deniedBy`, `deny`, `emptyCatalog`, `expandRoles`, `filterAuthorized`, `filterCan`, `generatePermissionTypes`, `getAuthzCatalog`, `guardPermission`, `hasAuthzCatalog`, `hasRole`, `memoryAuditSink`, `memoryPermissionStore`, `mergeCatalogs`, `owner`, `permissionMatches`, `requirePermission`, `requireRole`, `safeRecord`, `scopeKey`, `setAuthzCatalog` +- **./db:** `authzMigrationSql`, `dbPermissionStore`, `ensureAuthzTables` + +### `@wrnexus/benchmark` (8 symbols) + +- **.:** `BenchmarkOptions`, `BenchmarkResult`, `RegressionBudget`, `RegressionViolation`, `assertBenchmarkBudget`, `compareBenchmark`, `percentile`, `runBenchmark` + +### `@wrnexus/cache` (19 symbols) + +- **.:** `CacheCoordinator`, `CacheCoordinatorOptions`, `CacheEntry`, `CacheEvent`, `CacheInspection`, `CacheInvalidationBus`, `CacheLayerName`, `CacheLookup`, `CacheSetOptions`, `CacheSnapshotEntry`, `CachedResponse`, `DistributedInvalidation`, `DistributedInvalidationOptions`, `RequestCache`, `ResponseCacheOptions`, `TagCache`, `TagCacheOptions`, `connectCacheInvalidation`, `responseCache` + +### `@wrnexus/captcha` (336 symbols) + +- **.:** `AssetAudioRenderer`, `AssetAudioRendererOptions`, `CAPTCHA_CONCRETE_IMAGE_STYLES`, `CAPTCHA_IMAGE_STYLES`, `CalculationCaptchaGenerator`, `CaptchaAudioRenderer`, `CaptchaAuditIssue`, `CaptchaBinding`, `CaptchaChallenge`, `CaptchaChallengeGenerator`, `CaptchaChallengeRecord`, `CaptchaChallengeType`, `CaptchaConcreteImageStyle`, `CaptchaDifficulty`, `CaptchaEngine`, `CaptchaEngineOptions`, `CaptchaFailureCode`, `CaptchaGeneratorContext`, `CaptchaGuardOptions`, `CaptchaHttpHandlers`, `CaptchaHttpOptions`, `CaptchaImageItem`, `CaptchaImageStyle`, `CaptchaMiddleware`, `CaptchaPageGateOptions`, `CaptchaParseResult`, `CaptchaPluginOptions`, `CaptchaPolicyMode`, `CaptchaPolicyOptions`, `CaptchaPresentation`, `CaptchaProvider`, `CaptchaProviderClientConfig`, `CaptchaProviderName`, `CaptchaResponseTokenRecord`, `CaptchaRiskResult`, `CaptchaRiskSignals`, `CaptchaSessionGrant`, `CaptchaStore`, `CaptchaVerificationResult`, `CreateCaptchaOptions`, `DefaultCaptchaEngine`, `GeneratedCaptchaChallenge`, `HcaptchaProvider`, `ImageCaptchaGenerator`, `InvisibleCaptchaGenerator`, `ManagedCaptchaProvider`, `ManagedCaptchaProviderOptions`, `MemoryCaptchaStore`, `MemoryCaptchaStoreOptions`, `ParseWithCaptchaOptions`, `RecaptchaProvider`, `RedisCaptchaClient`, `RedisCaptchaStore`, `RedisCaptchaStoreOptions`, `ResolveCaptchaImageStyleOptions`, `ResolvedCaptchaImageStyle`, `Rgba`, `RgbaImage`, `SelfHostedCaptchaProvider`, `SiteverifyCaptchaProvider`, `SiteverifyPreset`, `SiteverifyProviderOptions`, `SqliteCaptchaStore`, `SqliteCaptchaStoreOptions`, `SqliteDatabaseLike`, `SqliteStatementLike`, `TextCaptchaGenerator`, `TurnstileCaptchaProvider`, `VerifyCaptchaInput`, `alphaCaptchaGenerator`, `alphanumericCaptchaGenerator`, `bindingHash`, `bytesToBase64`, `bytesToBase64Url`, `calculationCaptchaGenerator`, `captchaComponentsDir`, `captchaContext`, `captchaFields`, `captchaGuard`, `captchaHeaders`, `captchaPageGate`, `captchaPlugin`, `captchaResultResponse`, `captchaTokenFrom`, `clearCaptchaGrants`, `constantTimeEqual`, `createAssetAudioRenderer`, `createCaptchaEngine`, `createCaptchaHttpHandlers`, `createImage`, `createMemoryCaptchaStore`, `createRedisCaptchaStore`, `createSqliteCaptchaStore`, `defaultCaptchaGenerators`, `defaultRandomBytes`, `defineCaptchaGenerator`, `defineCaptchaProvider`, `drawGlyph`, `drawLine`, `drawText`, `encodePng`, `evaluateCaptchaRisk`, `fillCircle`, `fillPolygon`, `fillRect`, `hcaptchaProvider`, `hmacSha256`, `honeypotCaptchaGenerator`, `imageCaptchaGenerator`, `isCaptchaImageStyle`, `managedCaptchaProvider`, `normalizeCaptchaImageStyle`, `normalizeCaptchaImageStyleList`, `notRobotCaptchaGenerator`, `numberCaptchaGenerator`, `parseWithCaptcha`, `pngDataUri`, `randomId`, `recaptchaProvider`, `resolveCaptchaAudioAssetsDir`, `resolveCaptchaImageStyle`, `selfHostedProvider`, `setPixel`, `sha256`, `shouldRequireCaptcha`, `timingCaptchaGenerator`, `turnstileProvider`, `validCaptchaGrant`, `verifyCaptcha`, `verifyCaptchaOrThrow` +- **./audio:** `AssetAudioRenderer`, `AssetAudioRendererOptions`, `createAssetAudioRenderer`, `resolveCaptchaAudioAssetsDir` +- **./challenges:** `CAPTCHA_CONCRETE_IMAGE_STYLES`, `CAPTCHA_IMAGE_STYLES`, `CalculationCaptchaGenerator`, `ImageCaptchaGenerator`, `InvisibleCaptchaGenerator`, `ResolveCaptchaImageStyleOptions`, `ResolvedCaptchaImageStyle`, `Rgba`, `RgbaImage`, `TextCaptchaGenerator`, `alphaCaptchaGenerator`, `alphanumericCaptchaGenerator`, `bytesToBase64`, `calculationCaptchaGenerator`, `createImage`, `defaultCaptchaGenerators`, `defineCaptchaGenerator`, `drawGlyph`, `drawLine`, `drawText`, `encodePng`, `fillCircle`, `fillPolygon`, `fillRect`, `honeypotCaptchaGenerator`, `imageCaptchaGenerator`, `isCaptchaImageStyle`, `normalizeCaptchaImageStyle`, `normalizeCaptchaImageStyleList`, `notRobotCaptchaGenerator`, `numberCaptchaGenerator`, `pngDataUri`, `resolveCaptchaImageStyle`, `setPixel`, `timingCaptchaGenerator` +- **./client:** `CaptchaClientProviderDefinition`, `captchaClientProviders`, `getCaptchaResponse`, `resetCaptchaElement` +- **./plugin:** `CaptchaAuditIssue`, `CaptchaPluginOptions`, `captchaComponentsDir`, `captchaPlugin`, `default` +- **./providers:** `HcaptchaProvider`, `ManagedCaptchaProvider`, `ManagedCaptchaProviderOptions`, `RecaptchaProvider`, `SelfHostedCaptchaProvider`, `SiteverifyCaptchaProvider`, `SiteverifyPreset`, `SiteverifyProviderOptions`, `TurnstileCaptchaProvider`, `defineCaptchaProvider`, `hcaptchaProvider`, `managedCaptchaProvider`, `recaptchaProvider`, `selfHostedProvider`, `turnstileProvider` +- **./providers/custom:** `defineCaptchaProvider` +- **./providers/hcaptcha:** `HcaptchaProvider`, `hcaptchaProvider` +- **./providers/managed:** `ManagedCaptchaProvider`, `ManagedCaptchaProviderOptions`, `managedCaptchaProvider` +- **./providers/recaptcha:** `RecaptchaProvider`, `recaptchaProvider` +- **./providers/self-hosted:** `SelfHostedCaptchaProvider`, `selfHostedProvider` +- **./providers/turnstile:** `TurnstileCaptchaProvider`, `turnstileProvider` +- **./server:** `AssetAudioRenderer`, `AssetAudioRendererOptions`, `CaptchaAudioRenderer`, `CaptchaBinding`, `CaptchaChallenge`, `CaptchaChallengeGenerator`, `CaptchaChallengeRecord`, `CaptchaChallengeType`, `CaptchaConcreteImageStyle`, `CaptchaDifficulty`, `CaptchaEngine`, `CaptchaEngineOptions`, `CaptchaFailureCode`, `CaptchaGeneratorContext`, `CaptchaGuardOptions`, `CaptchaHttpHandlers`, `CaptchaHttpOptions`, `CaptchaImageItem`, `CaptchaImageStyle`, `CaptchaMiddleware`, `CaptchaPageGateOptions`, `CaptchaParseResult`, `CaptchaPolicyMode`, `CaptchaPolicyOptions`, `CaptchaPresentation`, `CaptchaProvider`, `CaptchaProviderClientConfig`, `CaptchaProviderName`, `CaptchaResponseTokenRecord`, `CaptchaRiskResult`, `CaptchaRiskSignals`, `CaptchaSessionGrant`, `CaptchaStore`, `CaptchaVerificationResult`, `CreateCaptchaOptions`, `DefaultCaptchaEngine`, `GeneratedCaptchaChallenge`, `HcaptchaProvider`, `ManagedCaptchaProvider`, `ManagedCaptchaProviderOptions`, `MemoryCaptchaStore`, `MemoryCaptchaStoreOptions`, `ParseWithCaptchaOptions`, `RecaptchaProvider`, `RedisCaptchaClient`, `RedisCaptchaStore`, `RedisCaptchaStoreOptions`, `SelfHostedCaptchaProvider`, `SiteverifyCaptchaProvider`, `SiteverifyPreset`, `SiteverifyProviderOptions`, `SqliteCaptchaStore`, `SqliteCaptchaStoreOptions`, `SqliteDatabaseLike`, `SqliteStatementLike`, `TurnstileCaptchaProvider`, `VerifyCaptchaInput`, `bindingHash`, `bytesToBase64Url`, `captchaGuard`, `captchaPageGate`, `clearCaptchaGrants`, `constantTimeEqual`, `createAssetAudioRenderer`, `createCaptchaEngine`, `createCaptchaHttpHandlers`, `createMemoryCaptchaStore`, `createRedisCaptchaStore`, `createSqliteCaptchaStore`, `defaultRandomBytes`, `defineCaptchaProvider`, `evaluateCaptchaRisk`, `hcaptchaProvider`, `hmacSha256`, `managedCaptchaProvider`, `parseWithCaptcha`, `randomId`, `recaptchaProvider`, `resolveCaptchaAudioAssetsDir`, `selfHostedProvider`, `sha256`, `shouldRequireCaptcha`, `turnstileProvider`, `validCaptchaGrant` +- **./stores:** `MemoryCaptchaStore`, `MemoryCaptchaStoreOptions`, `createMemoryCaptchaStore` +- **./stores/memory:** `MemoryCaptchaStore`, `MemoryCaptchaStoreOptions`, `createMemoryCaptchaStore` +- **./stores/redis:** `RedisCaptchaClient`, `RedisCaptchaStore`, `RedisCaptchaStoreOptions`, `createRedisCaptchaStore` +- **./stores/sqlite:** `SqliteCaptchaStore`, `SqliteCaptchaStoreOptions`, `SqliteDatabaseLike`, `SqliteStatementLike`, `createSqliteCaptchaStore` +- **./types:** `CaptchaAudioRenderer`, `CaptchaBinding`, `CaptchaChallenge`, `CaptchaChallengeGenerator`, `CaptchaChallengeRecord`, `CaptchaChallengeType`, `CaptchaConcreteImageStyle`, `CaptchaDifficulty`, `CaptchaEngine`, `CaptchaEngineOptions`, `CaptchaFailureCode`, `CaptchaGeneratorContext`, `CaptchaGuardOptions`, `CaptchaHttpHandlers`, `CaptchaImageItem`, `CaptchaImageStyle`, `CaptchaMiddleware`, `CaptchaPageGateOptions`, `CaptchaPolicyMode`, `CaptchaPolicyOptions`, `CaptchaPresentation`, `CaptchaProvider`, `CaptchaProviderClientConfig`, `CaptchaProviderName`, `CaptchaResponseTokenRecord`, `CaptchaRiskResult`, `CaptchaRiskSignals`, `CaptchaStore`, `CaptchaVerificationResult`, `CreateCaptchaOptions`, `GeneratedCaptchaChallenge`, `VerifyCaptchaInput` + +### `@wrnexus/cli` (15 symbols) + +- **.:** +- **./workspace:** `ResolvedWorkspaceApp`, `ResolvedWorkspaceConfig`, `WorkspaceApp`, `WorkspaceConfig`, `WorkspaceEnvironment`, `WorkspaceEnvironmentConfig`, `addWorkspaceApp`, `createWorkspace`, `insertWorkspaceApp`, `loadWorkspaceConfig`, `resolveWorkspaceConfig`, `runGateway`, `runProduction`, `workspaceFiles`, `workspaceMigrationTargets` + +### `@wrnexus/compiler` (84 symbols) + +- **.:** `ActionBlock`, `ApiBlock`, `Attr`, `CompilationCache`, `CompilationCacheEntry`, `CompilationCacheOptions`, `CompileResult`, `ComputedDecl`, `DataApiBlock`, `DataMode`, `DependencyGraph`, `DeploymentRuntime`, `EffectBlock`, `EventDecl`, `FormatWrnOptions`, `IslandBuildResult`, `IslandDiagnostic`, `IslandInput`, `IslandStrategy`, `LexError`, `Lexer`, `LoadBlock`, `ModeFunctionsBlock`, `NativeCompileError`, `OptimizationReport`, `OutputDecl`, `PageAst`, `ParseError`, `PropDecl`, `RealtimeBlock`, `RouteExecutionKind`, `RuntimeCapability`, `RuntimeCapabilityDiagnostic`, `RuntimeFunctionDecl`, `RuntimeRequirements`, `SeoBlock`, `StateDecl`, `StateRuntime`, `StoreKind`, `StructuredImportDecl`, `ViewNode`, `WrnDiagnostic`, `analyzeOptimizations`, `analyzeRuntimeImports`, `analyzeRuntimeRequirements`, `assertReactAvailable`, `assertValidAst`, `buildIslands`, `compilationKey`, `compile`, `compileNativeWrnFile`, `compileWrnFile`, `createCompilationCache`, `createComponentContract`, `createWrnSourceMap`, `diagnose`, `diagnosticFromError`, `eraseFunctionTypes`, `formatDiagnostic`, `formatWrn`, `generate`, `generateBrowserModule`, `generateDeclarations`, `generateIslandEntry`, `generateNative`, `generateServerFunctionsModule`, `generateStoreBrowserModule`, `generateStoreModule`, `generateTargets`, `inferredRuntimeType`, `islandNamesFrom`, `islandPropValue`, `optimizeAst`, `parse`, `parseIslandStrategy`, `renderIslandMarker`, `resolveWrnImport`, `resolveWrnImports`, `routeNeedsIslands`, `rpcManifest`, `runtimeCapabilities`, `runtimeTypeOf`, `serializeIslandProps`, `stripBrowserTypes` + +### `@wrnexus/content` (28 symbols) + +- **.:** `CmsAdapter`, `ContentCollection`, `ContentCollectionOptions`, `ContentEntry`, `ContentHeading`, `ContentLoader`, `ContentLoaderResult`, `ContentSchema`, `MdxComponent`, `SyntaxLanguageBundle`, `VendorAdapterOptions`, `cmsContentLoader`, `contentRss`, `contentSitemap`, `contentfulAdapter`, `createIncrementalHighlighter`, `createSearchIndex`, `defineCollection`, `localContentLoader`, `paginateContent`, `parseFrontmatter`, `remoteContentLoader`, `renderMarkdown`, `renderMdxComponents`, `resolveContentReference`, `sanityAdapter`, `searchContent`, `strapiAdapter` + +### `@wrnexus/core` (224 symbols) + +- **.:** `ActionDefinition`, `ApplicationLifecycle`, `AsyncSessionBackend`, `BackoffStrategy`, `Bucket`, `BudgetViolation`, `Bulkhead`, `BulkheadOptions`, `CSRF_COOKIE`, `CSRF_HEADER`, `CacheControlOptions`, `CachePolicy`, `CircuitBreaker`, `CircuitBreakerOptions`, `CircuitBreakerSnapshot`, `ContentSecurityPolicyConfig`, `Context`, `CookieOptions`, `CookieStore`, `CorsConfig`, `CorsOrigin`, `CspDirectiveValue`, `CsrfProtectionOptions`, `DefinedAction`, `DefinedEndpoint`, `DefinedLoader`, `Duration`, `EndpointDefinition`, `EndpointError`, `EndpointErrorBody`, `ExecutionContext`, `ExecutionContextInput`, `ExecutionKind`, `FeatureFlags`, `FeatureRule`, `FeatureValue`, `Fragment`, `HealthCheck`, `HealthCheckResult`, `HealthRegistry`, `HstsConfig`, `Html`, `IdempotencyRecord`, `IdempotencyStore`, `InferEndpointSchema`, `JSXComponent`, `JSXProps`, `LifecycleHandler`, `LifecyclePhase`, `LoaderDefinition`, `LocalStorageSnapshot`, `Middleware`, `Mode`, `Next`, `OutputSchemaLike`, `POSTGRES_TENANT_DIRECTORY_SCHEMA`, `PageComponent`, `PageMeta`, `PerformanceBudgets`, `PerformanceMeasurement`, `PermissionsPolicyConfig`, `ProblemDetails`, `ProblemDetailsInput`, `RateLimitOptions`, `RateLimitStore`, `RawSocket`, `RealtimeBridge`, `RealtimeBus`, `RealtimeConnectMeta`, `RealtimeEnvelope`, `RealtimeHandler`, `RealtimeRegistry`, `RealtimeRegistryOptions`, `RealtimeSecurityOptions`, `RealtimeSocket`, `Renderable`, `RequestLimitsConfig`, `RequestLoggerOptions`, `RequestRecord`, `RequireAuthOptions`, `ResilienceError`, `ResilientCallOptions`, `ResponseContext`, `Room`, `RoomAuthInfo`, `RoomClient`, `RoomDefinition`, `RoomHandlers`, `RpcClientOptions`, `SESSION_USER_KEY`, `SaveUploadOptions`, `SavedUpload`, `SchemaLike`, `SecureUploadOptions`, `SecurityConfig`, `SeoConfig`, `ServerSentEvent`, `ServiceContainer`, `ServiceToken`, `SessionBackend`, `SessionEntry`, `SessionPolicy`, `SessionStore`, `Span`, `SpanRecord`, `StreamResponseInit`, `TFunction`, `TTLCache`, `Target`, `Tenant`, `TenantAuditEvent`, `TenantDirectoryStore`, `TenantMembership`, `TenantMiddlewareOptions`, `TenantQuota`, `TenantResolver`, `TenantResource`, `TenantSqlClient`, `Tracer`, `TrustedTypesConfig`, `UploadError`, `UploadInspectionResult`, `UploadInspector`, `UploadScanner`, `assertTenantAccess`, `bridgeRealtime`, `cacheControl`, `checkPerformanceBudgets`, `collectUploads`, `composeTenantResolvers`, `createContext`, `createCorsPreflightResponse`, `createExecutionContext`, `createPersistentTenantDirectory`, `createRealtimeRegistry`, `createRpcClient`, `createTenantDirectory`, `createTracer`, `csrfProtection`, `csrfToken`, `dedupe`, `defaultKey`, `defineAction`, `defineEndpoint`, `defineFeatureFlags`, `defineLoader`, `defineRoom`, `durationMs`, `escapeHtml`, `etag`, `executionContextFromHttp`, `getUser`, `hashPassword`, `isRoomDefinition`, `isSafeIslandName`, `isSafeRequestPath`, `isWebSocketOriginAllowed`, `jsx`, `jsxs`, `loadSession`, `logIn`, `logOut`, `memoryIdempotencyStore`, `memoryTenantDirectoryStore`, `migrateTenants`, `mustache`, `notModified`, `peerKey`, `postgresTenantDirectoryStore`, `problem`, `proxyKey`, `randomUploadFilename`, `rateLimit`, `recommendedWebBudgets`, `renderDevError`, `renderError`, `renderNotFound`, `renderProdError`, `renderStatusPage`, `requestId`, `requestLogger`, `requireAuth`, `requireTenant`, `resilientCall`, `resolveRequestUrl`, `sanitizeFilename`, `saveUpload`, `saveUploadSecure`, `secureDownloadHeaders`, `serviceToken`, `sessionAuth`, `setSessionBackend`, `setSessionPolicy`, `sse`, `streamResponse`, `tenantFromDomain`, `tenantFromHeader`, `tenantFromPath`, `tenantFromSession`, `tenantFromSubdomain`, `tenantKey`, `tenantMiddleware`, `tenantScope`, `tracingMiddleware`, `verifyCsrf`, `verifyPassword`, `withCacheControl`, `withContextHeaders`, `withIdempotency`, `withSecurityHeaders`, `withSpan` +- **./jsx-dev-runtime:** `Fragment`, `JSX`, `jsxDEV` +- **./jsx-runtime:** `Component`, `ElementType`, `Fragment`, `Html`, `JSX`, `Props`, `Renderable`, `jsx`, `jsxs`, `mustache` + +### `@wrnexus/csr` (28 symbols) + +- **.:** `ACTION_RUNTIME`, `ActionClientError`, `ActionClientOptions`, `ActionResult`, `ClientModuleScope`, `HydrationScopeApi`, `NAV_RUNTIME`, `OutputHandler`, `OutputHost`, `REACTIVE_RUNTIME`, `REALTIME_RUNTIME`, `ServerCallOptions`, `WrnServerCallError`, `WrnexusBrowserGlobals`, `callServerFunction`, `collectRefs`, `createActionClient`, `createOutputProxy`, `createServerProxy`, `getActionRuntime`, `getComponentControllerRuntime`, `getNavRuntime`, `getReactiveRuntime`, `getRealtimeRuntime`, `invalidateClientModule`, `invokeOutput`, `loadClientFunctions`, `registerOutputHandler` + +### `@wrnexus/db` (79 symbols) + +- **.:** `BaseType`, `Column`, `ColumnDef`, `Columns`, `CursorPage`, `CursorPageOptions`, `Db`, `Dialect`, `Driver`, `ExecResult`, `Migration`, `MigrationRunOptions`, `MigrationSafetyIssue`, `Model`, `ModelRef`, `PageOptions`, `Paginated`, `QueryDef`, `QueryIssue`, `QueryKind`, `QueryPolicy`, `QueryRecord`, `RecordNotFoundError`, `RelationOptions`, `Repository`, `Row`, `TxHandle`, `analyzeMigrationSafety`, `analyzeMigrations`, `appliedMigrations`, `applyMigrations`, `batch`, `closeDatabases`, `countRows`, `createDb`, `createRepository`, `createTableSql`, `cursorPaginate`, `databaseHealth`, `databaseNames`, `exists`, `firstOrThrow`, `generateQueriesFile`, `getDb`, `getDbPerformanceSnapshot`, `hasDb`, `instrumentDb`, `loadMigrations`, `loadRelated`, `migrate`, `optimisticUpdate`, `paginate`, `parseMigration`, `parseQueries`, `queryOperation`, `registerDb`, `registerLazyDb`, `resetDbPerformanceSnapshot`, `retryTransaction`, `rollback`, `scaffoldMigration`, `setDb`, `softDeleteClause`, `status`, `table`, `tenantScope`, `v`, `withTransaction` +- **./connect:** `DbConfig`, `connectFromConfig`, `resolveDbUrl` +- **./mongo:** `FindOptions`, `MongoDb`, `MongoRepo`, `mongo` +- **./mysql:** `mysql` +- **./postgres:** `postgres` +- **./session:** `sqliteSessionStore` +- **./sqlite:** `sqlite` + +### `@wrnexus/dev-server` (29 symbols) + +- **.:** `AssetServer`, `AuthzManifestEntry`, `FetchHandler`, `GatewayApp`, `GatewayAuth`, `GatewayOptions`, `GatewaySecurity`, `RESTART_EXIT_CODE`, `RunningGateway`, `RunningServer`, `RuntimeDeps`, `ServeOptions`, `WrnCompileMetrics`, `WsData`, `applyAuthzManifestEarly`, `createHandlers`, `createProductionHandlers`, `createProductionServer`, `expandStaticComponents`, `getWrnCompileMetrics`, `nodeListener`, `precomputePartialStaticShell`, `resetWrnCompileMetrics`, `serveNode`, `startGateway`, `startServer`, `toRequest`, `validateRpcCsrf`, `writeResponse` +- **./serve-entry:** + +### `@wrnexus/dev-toolbar` (116 symbols) + +- **.:** `BuiltinPanelOptions`, `DEV_TOOLBAR_CSS`, `DEV_TOOLBAR_RULES`, `DEV_TOOLBAR_RUNTIME`, `DevToolbarApp`, `DevToolbarCategory`, `DevToolbarClientApi`, `DevToolbarCollector`, `DevToolbarConfig`, `DevToolbarElementTarget`, `DevToolbarFix`, `DevToolbarIssue`, `DevToolbarIssueListener`, `DevToolbarMetrics`, `DevToolbarPageReport`, `DevToolbarPanel`, `DevToolbarPlatformSnapshot`, `DevToolbarRegistry`, `DevToolbarRouteOptions`, `DevToolbarRule`, `DevToolbarRuleContext`, `DevToolbarServerMessage`, `DevToolbarSeverity`, `DevToolbarSourceLocation`, `OpenEditorOptions`, `OpenEditorRequest`, `accessibilityRules`, `accessibleName`, `buildEditorCommand`, `builtinDevToolbarPanels`, `colorRules`, `contrastRatio`, `createDevToolbarCollector`, `createDevToolbarRegistry`, `createFingerprint`, `createIssue`, `createServerIssue`, `effectiveBackground`, `formRules`, `getStableSelector`, `handleDevToolbarRoute`, `htmlRules`, `imageRules`, `isVisible`, `issueFromError`, `linkRules`, `luminance`, `mediaRules`, `openInEditor`, `parseRgb`, `parseSource`, `performanceRules`, `resolveEditorFile`, `responsiveRules`, `runDevToolbarRules`, `securityRules`, `seoRules`, `serializeDevToolbarJson` +- **./client:** `DEV_TOOLBAR_CSS`, `DEV_TOOLBAR_RUNTIME` +- **./rules:** `DEV_TOOLBAR_RULES`, `DevToolbarRule`, `DevToolbarRuleContext`, `accessibilityRules`, `accessibleName`, `colorRules`, `contrastRatio`, `createFingerprint`, `createIssue`, `effectiveBackground`, `formRules`, `getStableSelector`, `htmlRules`, `imageRules`, `isVisible`, `linkRules`, `luminance`, `mediaRules`, `parseRgb`, `parseSource`, `performanceRules`, `responsiveRules`, `runDevToolbarRules`, `securityRules`, `seoRules` +- **./server:** `BuiltinPanelOptions`, `DevToolbarApp`, `DevToolbarCollector`, `DevToolbarIssueListener`, `DevToolbarRegistry`, `DevToolbarRouteOptions`, `OpenEditorOptions`, `OpenEditorRequest`, `buildEditorCommand`, `builtinDevToolbarPanels`, `createDevToolbarCollector`, `createDevToolbarRegistry`, `createServerIssue`, `handleDevToolbarRoute`, `issueFromError`, `openInEditor`, `resolveEditorFile`, `serializeDevToolbarJson` +- **./types:** `DevToolbarCategory`, `DevToolbarClientApi`, `DevToolbarConfig`, `DevToolbarElementTarget`, `DevToolbarFix`, `DevToolbarIssue`, `DevToolbarMetrics`, `DevToolbarPageReport`, `DevToolbarPanel`, `DevToolbarPlatformSnapshot`, `DevToolbarServerMessage`, `DevToolbarSeverity`, `DevToolbarSourceLocation` + +### `@wrnexus/encryption` (30 symbols) + +- **.:** `DecryptedHttpBody`, `ENCRYPTED_HTTP_CONTENT_TYPE`, `ENCRYPTED_HTTP_VERSION`, `EncryptedHttpEnvelope`, `EncryptedHttpOptions`, `EncryptionKey`, `EncryptionKeyring`, `ReplayStore`, `createEncryptedRequest`, `createKeyring`, `createMemoryReplayStore`, `decrypt`, `decryptEncryptedResponse`, `decryptHttpBody`, `decryptRequest`, `deriveKey`, `encrypt`, `encryptHttpBody`, `encryptResponse`, `encryptedBody`, `encryptedExchange`, `encryptedFetch`, `generateKey`, `hmacSign`, `hmacVerify`, `needsRotation`, `open`, `seal`, `sealedKeyId`, `sha256` + +### `@wrnexus/graphql` (7 symbols) + +- **.:** `GraphqlExecutionResult`, `GraphqlOptions`, `GraphqlRequest`, `createGraphqlHandler`, `graphqlPlugin` +- **./plugin:** `default`, `graphqlPlugin` + +### `@wrnexus/helpers` (24 symbols) + +- **.:** `AllowedHosts`, `LoginRedirectOptions`, `OriginalRequestOptions`, `RequestContext`, `RetryOptions`, `appOrigin`, `appUrl`, `backoffDelay`, `clamp`, `currentAppName`, `currentAppOrigin`, `getOriginalRequestMethod`, `getOriginalRequestOrigin`, `getOriginalRequestPath`, `getOriginalRequestUrl`, `once`, `redirectToLogin`, `retry`, `safeJsonParse`, `sleep`, `stableStringify`, `withTimeout`, `workspaceAppOrigins`, `workspaceRootDomain` + +### `@wrnexus/i18n` (49 symbols) + +- **.:** `ExtractedTranslationKey`, `I18N_DATA_ATTRIBUTE`, `I18N_JS_HREF`, `I18N_RUNTIME`, `I18nConfig`, `I18nCookieConfig`, `I18nPluginOptions`, `LANG_COOKIE`, `LocaleFormatter`, `LocaleLoadOptions`, `Messages`, `ResolvedI18n`, `auditLocaleKeys`, `createLocaleFormatter`, `createPseudoLocale`, `extractTranslationKeys`, `extractTranslationKeysFromFiles`, `flattenMessageKeys`, `flattenMessages`, `formatCurrency`, `formatDate`, `formatMessage`, `formatNumber`, `formatRelativeTime`, `i18nComponentsDir`, `i18nPlugin`, `interpolate`, `loadLocales`, `loadRouteMessages`, `localeDirection`, `localeFallbacks`, `lookupMessage`, `makeT`, `normalizeLocale`, `parseAcceptLanguage`, `plural`, `pseudoLocalize`, `renderI18nData`, `renderI18nDataTag`, `resolveI18n`, `resolveLang`, `translateHtml`, `translationChain`, `translationCoverage`, `withTenantMessages` +- **./plugin:** `I18nPluginOptions`, `default`, `i18nComponentsDir`, `i18nPlugin` + +### `@wrnexus/identity` (19 symbols) + +- **.:** `DirectoryAdapter`, `EnterpriseIdentity`, `GovernanceEvent`, `MachineCredential`, `OidcMetadata`, `ReplayStore`, `SamlAdapter`, `SamlAssertion`, `ScimStore`, `ScimUser`, `createGovernance`, `createMachineIdentityManager`, `createSamlFederation`, `createScimHandler`, `discoverOidc`, `memoryReplayStore`, `memoryScimStore`, `oidcAuthorizationUrl`, `syncDirectory` + +### `@wrnexus/image` (33 symbols) + +- **.:** `ImageAuditInput`, `ImageAuditIssue`, `ImageFormat`, `ImageLoader`, `ImageLoaderInput`, `ImagePluginOptions`, `ImagePolicy`, `ImageProcessor`, `ImageProcessorResult`, `OptimizeImageOptions`, `OptimizedImageManifest`, `OptimizedImageVariant`, `PicturePlan`, `PictureSource`, `ResponsiveImageAttributes`, `ResponsiveImageOptions`, `auditImage`, `createBlurPlaceholder`, `createCdnImageLoader`, `createPathImageLoader`, `createPicture`, `createResponsiveImage`, `defaultImageLoader`, `imageCacheKey`, `imageComponentsDir`, `imagePlugin`, `imagePreload`, `normalizeImageWidths`, `optimizeImage` +- **./plugin:** `ImagePluginOptions`, `default`, `imageComponentsDir`, `imagePlugin` + +### `@wrnexus/jwt` (36 symbols) + +- **.:** `AccessTokenClaims`, `JwtAuthOptions`, `JwtClaims`, `JwtError`, `JwtKey`, `JwtKeyring`, `JwtTokenPair`, `RefreshTokenClaims`, `RemoteJwks`, `RemoteJwksOptions`, `SignOptions`, `VerifyOptions`, `assertJwtClaims`, `clearJwtCookie`, `createAccessToken`, `createJwtKeyring`, `createRefreshToken`, `createRemoteJwks`, `createTokenPair`, `decodeJwt`, `extractBearerToken`, `hasScopes`, `jwtAuth`, `jwtCookie`, `jwtResponse`, `readJwtCookie`, `requireScopes`, `signJwt`, `signWithKeyring`, `tokenScopes`, `tryVerifyJwt`, `verifyAccessToken`, `verifyJwt`, `verifyJwtWithJwks`, `verifyRefreshToken`, `verifyWithKeyring` + +### `@wrnexus/language-server` (23 symbols) + +- **.:** `Position`, `Range`, `TextDocument`, `WRN_COMPLETIONS`, `WorkspaceCompletionItem`, `clearWorkspaceIndexCache`, `completionItems`, `definitionLocation`, `documentDiagnostics`, `documentSymbols`, `extractComponentRefactor`, `formatDocument`, `hover`, `htmlToWrn`, `offsetAt`, `positionAt`, `semanticTokens`, `semanticTokensLegend`, `symbolLocations`, `virtualTypeScriptDocument`, `wordAt`, `workspaceCompletionItems`, `workspaceSymbolLocations` +- **./server:** + +### `@wrnexus/mcp` (5 symbols) + +- **.:** `McpServer`, `McpServerOptions`, `McpTool`, `createFrameworkMcpServer` +- **./stdio:** `runMcpStdio` + +### `@wrnexus/mobile` (27 symbols) + +- **.:** `CapacitorBridge`, `DeepLink`, `DeepLinkSource`, `MobileEnvironment`, `MobilePlatform`, `MobileUnavailableError`, `OfflineQueue`, `OfflineTask`, `OfflineTaskStore`, `PushAdapter`, `PushNotifications`, `PushRegistration`, `SecureStorage`, `SecureStorageAdapter`, `invoke`, `isNative`, `listenDeepLinks`, `memoryOfflineTaskStore`, `mobile`, `mobileEnvironment`, `native`, `parseDeepLink`, `platform`, `plugin`, `registerPlugin`, `requirePlugin`, `whenNative` + +### `@wrnexus/native` (27 symbols) + +- **.:** `NativeAdapter`, `NativeBrowserRuntime`, `NativeCapability`, `NativeCapabilityManifest`, `NativeCapabilityManifestEntry`, `NativePermission`, `NativePlatform`, `NativeRunOptions`, `NativeTarget`, `NativeUnavailableError`, `PermissionAdapter`, `PermissionManager`, `browserCapabilities`, `clearRegistry`, `defineNativeManifest`, `inspectNativeCapabilities`, `isMobile`, `missingNativeCapabilities`, `mobileCapabilities`, `native`, `platform`, `register`, `registered`, `run`, `supports` +- **./browser:** `browserCapabilities` +- **./mobile:** `mobileCapabilities` + +### `@wrnexus/oauth` (28 symbols) + +- **.:** `CompleteAuthOptions`, `OAuthProfile`, `OAuthProvider`, `OAuthStateRecord`, `OAuthStateStore`, `OAuthTokens`, `OidcDiscovery`, `OidcIdTokenClaims`, `ProviderCredentials`, `StartAuthOptions`, `StartAuthResult`, `VerifyOidcIdTokenOptions`, `completeAuth`, `createOAuthState`, `defineProvider`, `discord`, `discoverOidc`, `exchangeCode`, `fetchProfile`, `github`, `google`, `memoryOAuthStateStore`, `randomToken`, `refreshOAuthTokens`, `startAuth`, `validateOAuthReturnTo`, `validateOidcClaims`, `verifyOidcIdToken` + +### `@wrnexus/observability` (84 symbols) + +- **.:** `ErrorReporter`, `FrameworkSpanKind`, `HealthHandlerOptions`, `LogExporter`, `LogLevel`, `LogRecord`, `MetricExporter`, `MetricLabels`, `MetricPoint`, `MetricsMiddlewareOptions`, `MetricsRegistry`, `OperationTracer`, `SpanExporter`, `SpanRecord`, `StructuredLogger`, `StructuredLoggerOptions`, `TraceContext`, `TraceMiddlewareOptions`, `WebVitalRecord`, `WebVitalsClientOptions`, `WebVitalsHandlerOptions`, `createHttpMetricExporter`, `createJaegerExporter`, `createLivenessHandler`, `createOperationTracer`, `createOtlpLogExporter`, `createOtlpMetricExporter`, `createOtlpTraceExporter`, `createPerformanceProfiler`, `createPrometheusPushExporter`, `createReadinessHandler`, `createSentryCompatibleReporter`, `createStructuredLogger`, `createWebVitalsHandler`, `createZipkinExporter`, `defaultMetrics`, `formatTraceparent`, `metricsMiddleware`, `parseTraceparent`, `renderPrometheus`, `traceMiddleware`, `webVitalsClient` +- **./client:** `WebVitalsClientOptions`, `webVitalsClient` +- **./health:** `HealthHandlerOptions`, `createLivenessHandler`, `createReadinessHandler` +- **./integrations:** `ErrorReporter`, `FrameworkSpanKind`, `LogExporter`, `OperationTracer`, `createJaegerExporter`, `createOperationTracer`, `createOtlpLogExporter`, `createPerformanceProfiler`, `createPrometheusPushExporter`, `createSentryCompatibleReporter`, `createZipkinExporter`, `renderPrometheus` +- **./logging:** `LogLevel`, `LogRecord`, `StructuredLogger`, `StructuredLoggerOptions`, `createStructuredLogger` +- **./metrics:** `MetricLabels`, `MetricPoint`, `MetricsRegistry` +- **./server:** `MetricExporter`, `MetricsMiddlewareOptions`, `WebVitalRecord`, `WebVitalsHandlerOptions`, `createHttpMetricExporter`, `createOtlpMetricExporter`, `createWebVitalsHandler`, `defaultMetrics`, `metricsMiddleware` +- **./trace:** `SpanExporter`, `SpanRecord`, `TraceContext`, `TraceMiddlewareOptions`, `createOtlpTraceExporter`, `formatTraceparent`, `parseTraceparent`, `traceMiddleware` + +### `@wrnexus/playground` (7 symbols) + +- **.:** `PlaygroundCompilation`, `PlaygroundVersionAdapter`, `comparePlaygroundVersions`, `compilePlayground`, `createPlaygroundHandler`, `decodePlaygroundShare`, `encodePlaygroundShare` + +### `@wrnexus/plugin` (79 symbols) + +- **.:** `ClientRuntimeDefinition`, `ClientRuntimeInject`, `ClientRuntimeLoad`, `ClientRuntimeType`, `DiscoverPluginOptions`, `PackageAssetDefinition`, `PackageMigrationDefinition`, `PackagePluginManifest`, `PackageRouteDefinition`, `PackageStyleDefinition`, `PageAst`, `PluginCliCommand`, `PluginCommand`, `PluginCompatibilityResult`, `PluginCompatibilityTarget`, `PluginConfigSchema`, `PluginContext`, `PluginContributions`, `PluginDeploymentAdapter`, `PluginDevToolbarPanel`, `PluginDirective`, `PluginInput`, `PluginOrder`, `PluginPermission`, `PluginRunner`, `PluginVirtualModule`, `TransformContext`, `WrnDiagnostic`, `WrnexusPackageManifest`, `WrnexusPlugin`, `assertContributionId`, `contentTypeForPath`, `createPluginRunner`, `defaultClientRuntimePath`, `defaultPackageAssetPath`, `definePackageManifest`, `definePlugin`, `discoverPlugins`, `flattenPlugins`, `normalizeClientRuntime`, `normalizePackageAsset`, `resolvePlugins`, `testPluginCompatibility`, `validateStyleIds` +- **./discovery:** `DiscoverPluginOptions`, `discoverPlugins` +- **./manifest:** `assertContributionId`, `contentTypeForPath`, `defaultClientRuntimePath`, `defaultPackageAssetPath`, `definePackageManifest`, `normalizeClientRuntime`, `normalizePackageAsset`, `validateStyleIds` +- **./types:** `ClientRuntimeDefinition`, `ClientRuntimeInject`, `ClientRuntimeLoad`, `ClientRuntimeType`, `PackageAssetDefinition`, `PackageMigrationDefinition`, `PackagePluginManifest`, `PackageRouteDefinition`, `PackageStyleDefinition`, `PluginCliCommand`, `PluginCommand`, `PluginConfigSchema`, `PluginContext`, `PluginContributions`, `PluginDeploymentAdapter`, `PluginDevToolbarPanel`, `PluginDirective`, `PluginInput`, `PluginOrder`, `PluginPermission`, `PluginRunner`, `PluginVirtualModule`, `TransformContext`, `WrnexusPackageManifest`, `WrnexusPlugin` + +### `@wrnexus/pubsub` (22 symbols) + +- **.:** `Handler`, `KafkaClient`, `MessageEnvelope`, `NatsClient`, `PresenceChannel`, `PresenceMember`, `PubSub`, `PubSubDriver`, `ResilientPubSubOptions`, `SubjectPubSub`, `createPubSub`, `createResilientPubSub`, `kafkaDriver`, `memoryDriver`, `natsDriver`, `subjectPubSub` +- **./brokers:** `KafkaClient`, `NatsClient`, `kafkaDriver`, `natsDriver` +- **./redis:** `RedisDriverOptions`, `redisDriver` + +### `@wrnexus/pwa` (27 symbols) + +- **.:** `ConflictResolution`, `IndexedDbMigration`, `OfflineMutation`, `OfflineQueueStore`, `POSTGRES_PUSH_SUBSCRIPTION_SCHEMA`, `PWA_REVIEW_RUNTIME`, `PushSqlClient`, `PushSubscriptionStore`, `RuntimeCacheRule`, `RuntimeCacheStrategy`, `ServiceWorkerOptions`, `StoredPushSubscription`, `WebManifestOptions`, `createOfflineQueue`, `createPushSubscriptionService`, `createWebManifest`, `generateServiceWorker`, `indexedDbOfflineQueueStore`, `memoryOfflineQueueStore`, `memoryPushSubscriptionStore`, `offlineQueueMigration`, `openPwaDatabase`, `postgresPushSubscriptionStore`, `pwaClientRuntime`, `renderOfflineQueueReview`, `resolveOfflineConflict`, `subscribeToPush` + +### `@wrnexus/queue` (42 symbols) + +- **.:** `AddOptions`, `DurableQueue`, `DurableQueueOptions`, `Job`, `JobContext`, `JobDefinition`, `JobHandler`, `POSTGRES_QUEUE_SCHEMA`, `Queue`, `QueueDashboardSnapshot`, `QueueOptions`, `QueueScheduler`, `QueueStore`, `RedisQueueClient`, `ScheduledJob`, `SqlQueueClient`, `SubjectJob`, `SubjectQueue`, `WorkflowDefinition`, `WorkflowEngine`, `WorkflowRunContext`, `WorkflowSnapshot`, `WorkflowStatus`, `WorkflowStep`, `WorkflowStore`, `addBatch`, `createDurableQueue`, `createQueue`, `createQueueScheduler`, `createWorkflowEngine`, `cronToInterval`, `defineDurableWorkflow`, `defineJob`, `defineWorkflow`, `memoryQueueStore`, `memoryWorkflowStore`, `postgresQueueStore`, `queueDashboardSnapshot`, `redisQueueStore`, `renderQueueDashboard`, `runQueueDaemon`, `subjectQueue` + +### `@wrnexus/react` (28 symbols) + +- **.:** `BoundStore`, `IslandErrorBoundary`, `IslandErrorBoundaryProps`, `IslandStore`, `MountOptions`, `SnapshotCache`, `SnapshotSource`, `StoreResolver`, `createSelectorCache`, `createSnapshotCache`, `discardDetachedRoots`, `islandRootCount`, `mountIslands`, `remountIslands`, `setStoreResolver`, `unmountIslands`, `useWrnActions`, `useWrnStore` +- **./browser:** `MountOptions`, `discardDetachedRoots`, `islandRootCount`, `mountIslands`, `remountIslands`, `setStoreResolver`, `unmountIslands`, `useWrnActions`, `useWrnStore` +- **./runtime:** `getIslandRuntime` + +### `@wrnexus/reactive` (29 symbols) + +- **.:** `AnimationTimeline`, `Cleanup`, `HistorySignal`, `ReactiveContext`, `ReactiveScope`, `ReadonlySignal`, `Resource`, `ResourceOptions`, `ResourceStatus`, `Signal`, `Subscriber`, `TimelineStep`, `Unsubscribe`, `UrlStateOptions`, `WatchOptions`, `batch`, `computed`, `createContextProvider`, `createScope`, `createTimeline`, `effect`, `historySignal`, `mountPortal`, `resource`, `signal`, `transition`, `untrack`, `urlSignal`, `watch` + +### `@wrnexus/realtime` (58 symbols) + +- **.:** `BrowserRoomConnection`, `CreateRealtimeMessageOptions`, `DatabaseChange`, `DatabaseChangeSource`, `FileStreamFrame`, `ParseRealtimeMessageOptions`, `RawSocket`, `RealtimeBridge`, `RealtimeBus`, `RealtimeConnectMeta`, `RealtimeEnvelope`, `RealtimeHandler`, `RealtimeHistory`, `RealtimeHistoryOptions`, `RealtimeHistorySnapshot`, `RealtimeMessage`, `RealtimeMessageType`, `RealtimePluginOptions`, `RealtimePresence`, `RealtimeRegistry`, `RealtimeRegistryOptions`, `RealtimeRoomMeta`, `RealtimeSecurityOptions`, `RealtimeSocket`, `Room`, `RoomAuthInfo`, `RoomClient`, `RoomDefinition`, `RoomHandlers`, `SequencedRealtimeMessage`, `Target`, `WrnexusRealtimeWindow`, `assertRealtimeRoomName`, `bridgeRealtime`, `connectRoom`, `createAcknowledgement`, `createFileStreamReceiver`, `createPresenceEvent`, `createRealtimeHistory`, `createRealtimeMessage`, `createRealtimeRegistry`, `createTypingEvent`, `databaseChangeFeed`, `defineRoom`, `frameFileStream`, `isRealtimeMessage`, `isRoomDefinition`, `parseRealtimeMessage`, `realtimeComponentsDir`, `realtimePlugin`, `realtimeSseResponse`, `roomMemberSummary`, `roomQuery`, `sendRoomMessage` +- **./plugin:** `RealtimePluginOptions`, `default`, `realtimeComponentsDir`, `realtimePlugin` + +### `@wrnexus/router` (22 symbols) + +- **.:** `ComponentRef`, `ExternalRouteDefinition`, `Middleware`, `NamedRoute`, `Route`, `RouteManifestEntry`, `RouteMatch`, `Router`, `RouterOptions`, `buildRouter`, `compileRoutePattern`, `createRouteManifest`, `fileToRoute`, `findNamedRoute`, `findRouteConflicts`, `generateRoutesFile`, `getRouteParams`, `matchRoute`, `nameRoutes`, `routeName`, `routeUrl`, `sortRoutes` + +### `@wrnexus/rpc` (57 symbols) + +- **.:** `AnyProcedures`, `CallOptions`, `ExportOptions`, `HandlerContext`, `HttpTransportOptions`, `ImplementOptions`, `ImportOptions`, `InProcessHandler`, `InferInput`, `InferProcedureInput`, `InferProcedureOutput`, `InputSchema`, `ProcedureBuilder`, `ProcedureDef`, `RPC_ERROR_CODES`, `RPC_IDENTITY_HEADER`, `RPC_INTERNAL_HEADER`, `RPC_PATH_PREFIX`, `RPC_STREAM_PATH_PREFIX`, `RetryTransportOptions`, `RpcErrorCode`, `RpcTarget`, `ServiceClient`, `ServiceClientOptions`, `ServiceContract`, `ServiceError`, `ServiceHandlers`, `ServiceImplementation`, `ServiceResult`, `StreamClient`, `StreamClientOptions`, `StreamHandlers`, `StreamImplementOptions`, `StreamImplementation`, `StreamMetrics`, `StreamMetricsSnapshot`, `SubjectContext`, `ToResultOptions`, `Transport`, `defineService`, `exportSubjectContext`, `failure`, `httpTransport`, `implement`, `implementStream`, `importSubjectContext`, `inProcessTransport`, `isRetryableStatus`, `procedure`, `resolveAppOrigin`, `retryingTransport`, `rpcPath`, `rpcSecret`, `rpcStreamPath`, `serviceClient`, `streamClient`, `success` + +### `@wrnexus/security` (38 symbols) + +- **.:** `RequestHardeningOptions`, `SafeFetchOptions`, `SafeObjectOptions`, `SafeUrlPolicy`, `SecureCookieOptions`, `SecureSerializeOptions`, `SecurityError`, `SecurityPreset`, `TrustedHtmlPolicy`, `TrustedHtmlValue`, `assertSafeObject`, `createTrustedHtml`, `isDangerousObjectKey`, `isPrivateAddress`, `isSafeUrl`, `isTrustedHtml`, `requestHardening`, `safeFetch`, `safeMerge`, `sanitizeUrl`, `secureCookieOptions`, `secureJsonStringify`, `securityPreset`, `serializeForHtml`, `setSecureCookie`, `unwrapTrustedHtml`, `validateUrl` +- **./fetch:** `SafeFetchOptions`, `isPrivateAddress`, `safeFetch` +- **./serialization:** `SecureSerializeOptions`, `secureJsonStringify`, `serializeForHtml` +- **./trusted-html:** `TrustedHtmlPolicy`, `TrustedHtmlValue`, `createTrustedHtml`, `isTrustedHtml`, `unwrapTrustedHtml` + +### `@wrnexus/ssr` (29 symbols) + +- **.:** `PartialPrerenderResult`, `RenderOptions`, `RenderScript`, `RpcContext`, `RpcHandlerOptions`, `RpcManifestContract`, `RpcParameterContract`, `RpcRequestPayload`, `ScriptAsset`, `StreamRenderOptions`, `createRpcHandler`, `disposeRequestStores`, `extractWrnexusStyles`, `partialPrerender`, `renderDocument`, `renderDocumentStream`, `renderStoreHydration`, `requestStoreContainer`, `streamDocumentResponse`, `streamPartialDocument` +- **./rpc:** `RpcContext`, `RpcHandlerOptions`, `RpcManifestContract`, `RpcParameterContract`, `RpcRequestPayload`, `createRpcHandler` +- **./store-context:** `disposeRequestStores`, `renderStoreHydration`, `requestStoreContainer` + +### `@wrnexus/store` (34 symbols) + +- **.:** `PersistenceStorage`, `StoreActionContext`, `StoreActionDefinition`, `StoreCombinedState`, `StoreContainer`, `StoreContainerOptions`, `StoreDefinition`, `StoreFunction`, `StoreInstance`, `StoreInstanceCore`, `StoreKind`, `StoreLifecycleContext`, `StoreMutation`, `StorePersistenceConfig`, `StoreRuntime`, `createStoreContainer`, `createStoreInstance`, `defineStore` +- **./client:** `browserStoreContainer`, `resetBrowserStores` +- **./server:** `createRequestStoreContainer` +- **./types:** `PersistenceStorage`, `StoreActionContext`, `StoreActionDefinition`, `StoreCombinedState`, `StoreDefinition`, `StoreFunction`, `StoreInstance`, `StoreInstanceCore`, `StoreKind`, `StoreLifecycleContext`, `StoreMutation`, `StorePersistenceConfig`, `StoreRuntime` + +### `@wrnexus/styles` (82 symbols) + +- **.:** `ACCENT_COOKIE`, `AppConfig`, `BrowserCookieApi`, `BrowserCookieOptions`, `BrowserCookiePreference`, `BrowserCookiesConfig`, `BuildConfig`, `CURRENT_COMPATIBILITY_DATE`, `CURRENT_FRAMEWORK_BEHAVIOUR`, `CompatibilityPolicy`, `CompatibilityReport`, `ConfigIssue`, `ContrastResult`, `CssPerformanceAuditIssue`, `CssTokenAudit`, `CustomThemePalette`, `DEFAULT_THEMES`, `DevToolbarConfig`, `ExperimentalConfig`, `ExplainedConfig`, `FontConfig`, `FontDisplay`, `GoogleFont`, `LocalFontFace`, `MobileConfig`, `Mode`, `NavigationConfig`, `ObservabilityConfig`, `PerformanceConfig`, `PwaConfig`, `ResolvedConfigLayers`, `ResolvedTheme`, `StyleProcessContext`, `StyleSource`, `StylesConfig`, `StylesMode`, `THEME_COOKIE`, `THEME_CSS_HREF`, `THEME_CSS_PREFIX`, `THEME_JS_HREF`, `THEME_PALETTES`, `THEME_PALETTE_NAMES`, `TenancyConfig`, `ThemeAccentConfig`, `ThemeConfig`, `ThemeCookieConfig`, `ThemePaletteName`, `ThemeSemanticColor`, `ThemeToken`, `ThemeTokens`, `activeThemeCssHref`, `auditCssPerformance`, `auditWrnTokens`, `bundleCss`, `contrast`, `defineConfig`, `defineThemeTokens`, `explainAppConfig`, `findStyleEntry`, `fontCspSources`, `headToString`, `isCompatibilityDate`, `loadAppConfig`, `loadEnv`, `loadRawConfig`, `normalizeStyleSources`, `renderActiveThemeCss`, `renderFontHead`, `renderProductionFontHead`, `renderStyles`, `renderThemeCss`, `renderThemeRuntime`, `resolveAccentName`, `resolveBrowserCookieOptions`, `resolveCompatibility`, `resolveConfigLayers`, `resolveProfile`, `resolveThemeConfig`, `resolveThemeName`, `tailwindSourceDirectives`, `themeVar`, `validateAppConfig` + +### `@wrnexus/syntax` (141 symbols) + +- **.:** `ActionBlock`, `ApiBlock`, `Attr`, `ComputedDecl`, `DataApiBlock`, `DataMode`, `DiagnoseOptions`, `EffectBlock`, `EventDecl`, `FormatWrnOptions`, `FunctionParameterDecl`, `FunctionRuntime`, `LexError`, `Lexer`, `LifecycleBlock`, `LoadBlock`, `ModeFunctionsBlock`, `OutputDecl`, `PageAst`, `ParseError`, `PersistDecl`, `PropDecl`, `RealtimeBlock`, `RealtimeHandler`, `RuntimeFunctionDecl`, `RuntimeType`, `SeoBlock`, `SourceRange`, `StateDecl`, `StateRuntime`, `StoreKind`, `StoreLifecycleDecl`, `StructuredImportDecl`, `VOID_ELEMENTS`, `ViewNode`, `WRN_DIAGNOSTIC_CODES`, `WRN_HYDRATION_STRATEGIES`, `WRN_LANGUAGE_VERSION`, `WRN_ROOT_KINDS`, `WRN_ROOT_MEMBERS`, `WRN_RUNTIME_TARGETS`, `WRN_SYNTAX_FEATURES`, `WRN_SYNTAX_VERSION`, `WatchBlock`, `WrnDiagnostic`, `WrnDiagnosticSeverity`, `WrnHydrationStrategy`, `WrnRootKind`, `WrnRootMember`, `WrnRuntimeTarget`, `WrnSourcePosition`, `WrnSyntaxFeature`, `assertValidAst`, `classifyParseError`, `containsReadonlyPropMutation`, `createSourceRange`, `diagnose`, `diagnosticFromError`, `diagnosticSummary`, `eraseFunctionTypes`, `formatDiagnostic`, `formatWrn`, `inferredRuntimeType`, `isHydrationStrategy`, `isRuntimeTarget`, `parse`, `parseComputedDeclarations`, `parseHtmlView`, `parseOutputs`, `parsePersist`, `parseRuntimeFunctions`, `parseStateDeclarations`, `parseStoreLifecycle`, `parseStructuredImports`, `positionAt`, `runtimeTypeOf`, `sliceSource`, `stripRuntimeFunctionModifiers`, `supportsSyntaxFeature`, `validateTypedInitializer` +- **./diagnostics:** `DiagnoseOptions`, `WrnDiagnostic`, `WrnDiagnosticSeverity`, `WrnSourcePosition`, `assertValidAst`, `classifyParseError`, `containsReadonlyPropMutation`, `diagnose`, `diagnosticFromError`, `formatDiagnostic`, `isHydrationStrategy`, `isRuntimeTarget`, `positionAt` +- **./formatter:** `FormatWrnOptions`, `formatWrn` +- **./parser:** `ActionBlock`, `ApiBlock`, `Attr`, `ComputedDecl`, `DataApiBlock`, `DataMode`, `EffectBlock`, `EventDecl`, `LifecycleBlock`, `LifecycleHookName`, `LoadBlock`, `ModeFunctionsBlock`, `PageAst`, `ParseError`, `PropDecl`, `RealtimeBlock`, `RealtimeHandler`, `SeoBlock`, `StateDecl`, `VOID_ELEMENTS`, `ViewNode`, `WatchBlock`, `parse`, `parseHtmlView` +- **./spec:** `WRN_DIAGNOSTIC_CODES`, `WRN_HYDRATION_STRATEGIES`, `WRN_LANGUAGE_VERSION`, `WRN_ROOT_KINDS`, `WRN_ROOT_MEMBERS`, `WRN_RUNTIME_TARGETS`, `WrnHydrationStrategy`, `WrnRootKind`, `WrnRootMember`, `WrnRuntimeTarget` +- **./tokenizer:** `LexError`, `Lexer`, `Token`, `TokenType`, `isIdentPart`, `isIdentStart`, `skipLiteralOrComment` +- **./types:** `RuntimeType`, `eraseFunctionTypes`, `inferredRuntimeType`, `runtimeTypeOf`, `validateTypedInitializer` + +### `@wrnexus/test` (33 symbols) + +- **.:** `BrowserArtifactPage`, `Deferred`, `Harness`, `HarnessOptions`, `JsonResponse`, `MemoryCookieJar`, `TestRequestOptions`, `TransactionalDatabase`, `WaitForOptions`, `afterAll`, `afterEach`, `beforeAll`, `beforeEach`, `callRoute`, `captureBrowserArtifacts`, `createContext`, `createFactory`, `createHarness`, `deferred`, `describe`, `expect`, `expectProblem`, `it`, `mock`, `mountHtml`, `readJsonResponse`, `renderComponent`, `spyOn`, `test`, `testContext`, `testRequest`, `waitFor`, `withDatabaseRollback` + +### `@wrnexus/tracking` (13 symbols) + +- **.:** `ErrorEvent`, `ErrorSink`, `TelemetryEnvelope`, `TelemetryKind`, `TelemetryPipeline`, `TelemetryPipelineOptions`, `TelemetrySink`, `Tracker`, `TrackerOptions`, `consoleSink`, `createTelemetryPipeline`, `createTracker`, `telemetryConsoleSink` + +### `@wrnexus/typecheck` (15 symbols) + +- **.:** `TypecheckOptions`, `VirtualTypeScriptModule`, `WrnTypeDiagnostic`, `checkWrnFile`, `checkWrnSource`, `componentContract`, `findAppRoot`, `loadApplicationTypes`, `storeContract`, `virtualTypeScriptModule` +- **./contracts:** `componentContract`, `storeContract` +- **./project:** `ApplicationTypes`, `findAppRoot`, `loadApplicationTypes` + +### `@wrnexus/ui` (10 symbols) + +- **.:** +- **./registry:** `UiComponentMetadata`, `UiComponentReference`, `auditUiComponents`, `findUiComponent`, `uiComponentNames`, `uiComponentPath`, `uiComponentReference`, `uiComponentsDir`, `uiCss`, `uiCssPath` + +### `@wrnexus/uploader` (77 symbols) + +- **.:** `CreateResumableUpload`, `LocalStoreConfig`, `MultipartObjectClient`, `POSTGRES_QUOTA_SCHEMA`, `PutMeta`, `QuotaSqlClient`, `QuotaStore`, `QuotaUsage`, `ResumableChunkResult`, `ResumableSessionStore`, `ResumableUploadManager`, `ResumableUploadManagerOptions`, `ResumableUploadSession`, `S3StoreConfig`, `SignedFileToken`, `StorageConfig`, `StorageDriver`, `Store`, `StoreAccess`, `StoreConfig`, `StoredObject`, `TemporaryObject`, `UPLOADS_PREFIX`, `UPLOAD_JS_HREF`, `UPLOAD_RUNTIME`, `UploadError`, `UploadInspection`, `UploadOptions`, `UploadPolicy`, `UploadPolicyError`, `UploadScanInput`, `UploadScanResult`, `UploadedFile`, `UploaderPluginOptions`, `VideoTranscodeOptions`, `accepts`, `assertUploadedFiles`, `configureStorage`, `contentTypeOf`, `createResumableUploadManager`, `createSignedFileToken`, `createTemporaryObjectCleaner`, `encodeKey`, `enforceUploadPolicy`, `extForType`, `extOf`, `ffmpegVideoTranscoder`, `formatFileSize`, `getStore`, `handleUpload`, `hasStorage`, `inspectUpload`, `localDriver`, `memoryQuotaStore`, `memoryResumableSessionStore`, `multipartUpload`, `postgresQuotaStore`, `s3Driver`, `safeObjectKey`, `serveFromStore`, `serveStoredFile`, `sha256Hex`, `signS3`, `sniffContentType`, `storeNames`, `storedUrl`, `upload`, `uploadAccept`, `uploadedFileMap`, `uploaderAttributes`, `uploaderComponentsDir`, `uploaderPlugin`, `verifySignedFileToken` +- **./plugin:** `UploaderPluginOptions`, `default`, `uploaderComponentsDir`, `uploaderPlugin` + +### `@wrnexus/validation` (59 symbols) + +- **.:** `AnyFieldSchema`, `AsyncObjectSchema`, `AsyncRefinement`, `AsyncValidationContext`, `BooleanSchema`, `ContractDefinition`, `ContractIssue`, `ContractKind`, `ContractRecord`, `ContractRegistry`, `ContractSnapshot`, `FieldDescriptor`, `FieldSchema`, `InferFieldValue`, `InferObjectFields`, `InferSchema`, `JsonSchemaDocument`, `NumberSchema`, `ObjectSchema`, `OpenApiSchema`, `ParseResult`, `RuleDescriptor`, `SchemaDescriptor`, `StringSchema`, `UnknownSchema`, `VALIDATE_RUNTIME`, `ValidationError`, `ValidationMessageKey`, `ValidationMessageTranslator`, `ValidationPluginOptions`, `applyRule`, `asyncSchema`, `checkContractCompatibility`, `checkField`, `defineContract`, `defineEvent`, `firstValidationError`, `invalid`, `localizeDescriptor`, `mergeValidationResults`, `openApiRequestBody`, `parseBody`, `parseBodyAsync`, `parseDescriptor`, `parseEnv`, `parseOrThrow`, `renderSchemasScript`, `schemaFieldNames`, `schemaToOpenApi`, `toJsonSchema`, `v`, `validationComponentsDir`, `validationPlugin`, `validationResponse`, `validationSummary` +- **./plugin:** `ValidationPluginOptions`, `default`, `validationComponentsDir`, `validationPlugin` + +## Appendix C — current UI component/block reference + +### `Accordion` + +- Category: base; mount: `Accordion`; source: `components/Accordion.wrn`. +- Purpose: Theme-aware, responsive accordion component. +- Props: size: string = "default"; color: string = "primary"; variant: string = "default"; class: string = ""; id: string = "accordion"; items: unknown[] = []; defaultOpen: unknown[] = []; multiple: boolean = false; alwaysOpen: boolean = false; disabled: boolean = false; indicator: string = "plus"; indicatorPosition: string = "start"; showIndicator: boolean = true; bordered: boolean = false; separated: boolean = false; flush: boolean = false; contentItalic: boolean = false +- Outputs/events: change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); open({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); close({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: none + +### `AdvancedSelect` + +- Category: advanced-forms; mount: `AdvancedSelect`; source: `components/AdvancedSelect.wrn`. +- Purpose: Theme-aware, responsive advanced select component. +- Props: size: string = "default"; color: string = "primary"; label: string = "Advanced Select"; name: string = ""; value: string = ""; values: unknown[] = []; options: unknown[] = []; groups: unknown[] = []; placeholder: string = "Select an option"; placeholderIcon: string = ""; searchPlaceholder: string = "Search options…"; multiple: boolean = false; searchable: boolean = true; defaultOpen: boolean = false; clearable: boolean = true; allowEmpty: boolean = true; tags: boolean = false; disabled: boolean = false; required: boolean = false; invalid: boolean = false; validationMessage: string = ""; helpText: string = ""; loading: boolean = false; loadingLabel: string = "Loading options…"; emptyLabel: string = "No options found"; selectedOptionsLabel: string = "Selected options"; clearLabel: string = "Clear selection"; createLabel: string = "Create"; loadMoreLabel: string = "Load more"; searchMode: string = "contains"; searchFields: string = "label,description"; minSearchLength: number = 0; searchResultLimit: number = 0; maxSelections: number = 0; showCounter: boolean = false; counterTemplate: string = "{selected} selected"; optionTemplate: string = "default"; selectedTemplate: string = "default"; closeOnSelect: boolean = true; scrollToSelected: boolean = true; fixed: boolean = false; placement: string = "bottom"; remote: boolean = false; remoteUrl: string = ""; remoteQueryParam: string = "q"; remoteDebounce: number = 250; remoteAutoLoad: boolean = true; infinite: boolean = false; hasMore: boolean = false; page: number = 1; class: string = "" +- Outputs/events: search({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); select({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); clear({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); open({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); close({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); load({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); error({ error: Error | string; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | Error | string) +- Slots: none + +### `Alert` + +- Category: base; mount: `Alert`; source: `components/alert.wrn`. +- Purpose: Theme-aware, responsive alert component. +- Props: size: string = "default"; color: string = "info"; variant: string = "soft"; class: string = ""; radius: string = "md"; shadow: string = "sm"; title: string = "Alert"; description: string = ""; items: unknown[] = []; actions: unknown[] = []; showIcon: boolean = false; icon: string = ""; dismissible: boolean = false; dismissLabel: string = "Dismiss alert"; role: string = "alert"; live: string = "polite"; linkLabel: string = ""; linkHref: string = ""; actionLabel: string = ""; actionHref: string = ""; compact: boolean = false +- Outputs/events: dismiss({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); action({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: none + +### `AnnouncementBar` + +- Category: marketing; mount: `AnnouncementBar`; source: `components/AnnouncementBar.wrn`. +- Purpose: Publish a responsive notice with badge, icon, supporting copy, action, dismiss behavior, and width controls. +- Props: badge: string = ""; badgeIcon: string = ""; message: string = "Announcement"; description: string = ""; icon: string = "icon-[lucide--megaphone]"; actionLabel: string = ""; actionHref: string = ""; actionIcon: string = ""; dismissible: boolean = false; dismissLabel: string = "Dismiss announcement"; sticky: boolean = false; compact: boolean = false; size: string = "default"; width: string = "default"; color: string = "primary"; variant: string = "soft"; role: string = "status"; live: string = "polite"; class: string = "" +- Outputs/events: dismiss({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: none + +### `AuthForm` + +- Category: core; mount: `AuthForm`; source: `components/AuthForm.wrn`. +- Purpose: Reusable auth form component. +- Props: size: string = "default"; color: string = "primary"; mode: string = "sign-in"; action: string = "/api/auth/login"; method: string = "post"; title: string = "Sign in"; description: string = ""; returnTo: string = ""; schema: string = ""; showRemember: boolean = true; showName: boolean = true; submitLabel: string = "Continue"; class: string = "" +- Outputs/events: submit({ event: Event; mode: string; action: string }); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); input({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: default + +### `AuthSplitLayout` + +- Category: core; mount: `AuthSplitLayout`; source: `components/AuthSplitLayout.wrn`. +- Purpose: Reusable auth split layout component. +- Props: size: string = "default"; color: string = "primary"; eyebrow: string = "Secure identity"; title: string = "Welcome back"; description: string = ""; brand: string = "Police Management System"; features: unknown[] = []; class: string = "" +- Outputs/events: none +- Slots: aside-extra, form + +### `Avatar` + +- Category: base; mount: `Avatar`; source: `components/avatar.wrn`. +- Purpose: Theme-aware, responsive avatar component. +- Props: src: string = ""; alt: string = ""; initials: string = ""; size: string = "md"; color: string = "primary"; variant: string = "solid"; shape: string = "circle"; status: string = ""; statusLabel: string = ""; statusPosition: string = "bottom"; badge: string = ""; badgeIcon: string = ""; badgeLabel: string = ""; tooltip: string = ""; name: string = ""; description: string = ""; loading: string = "lazy"; class: string = "" +- Outputs/events: load({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); error({ error: Error | string; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | Error | string); click({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: none + +### `AvatarGroup` + +- Category: base; mount: `AvatarGroup`; source: `components/AvatarGroup.wrn`. +- Purpose: Theme-aware, responsive avatar group component. +- Props: items: unknown[] = []; size: string = "md"; color: string = "primary"; variant: string = "solid"; shape: string = "circle"; layout: string = "stack"; maxVisible: number = 4; columns: number = 3; borderColor: string = ""; showTooltips: boolean = true; overflowLabel: string = "Show remaining members"; class: string = "" +- Outputs/events: overflow({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]) +- Slots: none + +### `BackToTop` + +- Category: navigation; mount: `BackToTop`; source: `components/BackToTop.wrn`. +- Purpose: Provide a responsive floating control that returns long pages to the top and can show scroll progress. +- Props: threshold: number = 500; label: string = "Back to top"; ariaLabel: string = "Scroll back to top"; icon: string = "icon-[lucide--arrow-up]"; position: string = "right"; offset: string = "md"; behavior: string = "smooth"; showProgress: boolean = false; showLabel: boolean = false; alwaysVisible: boolean = false; size: string = "default"; color: string = "primary"; variant: string = "solid"; shape: string = "round"; class: string = "" +- Outputs/events: none +- Slots: none + +### `Badge` + +- Category: base; mount: `Badge`; source: `components/badge.wrn`. +- Purpose: Theme-aware, responsive badge component. +- Props: label: string = "Badge"; size: string = "md"; color: string = "primary"; variant: string = "solid"; shape: string = "pill"; class: string = ""; icon: string = ""; iconPosition: string = "start"; dot: boolean = false; dotOnly: boolean = false; dotLabel: string = "Status"; animated: boolean = false; avatarSrc: string = ""; avatarAlt: string = ""; dismissible: boolean = false; dismissLabel: string = "Remove badge"; truncate: boolean = false; maxWidth: string = "12rem"; anchorLabel: string = ""; anchorIcon: string = ""; placement: string = "inline"; anchorLabelText: string = "Badge anchor" +- Outputs/events: dismiss({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: none + +### `Blockquote` + +- Category: base; mount: `Blockquote`; source: `components/Blockquote.wrn`. +- Purpose: Theme-aware, responsive blockquote component. +- Props: quote: string = "I just wanted to say that I'm very happy with my purchase so far. The documentation is outstanding - clear and detailed."; citation: string = ""; citationTitle: string = ""; citationUrl: string = ""; avatarSrc: string = ""; avatarAlt: string = ""; size: string = "md"; color: string = "primary"; align: string = "left"; variant: string = "default"; quoteMark: boolean = true; italic: boolean = true; class: string = "" +- Outputs/events: none +- Slots: default + +### `Breadcrumb` + +- Category: navigation; mount: `Breadcrumb`; source: `components/Breadcrumb.wrn`. +- Purpose: Show responsive hierarchical navigation with home support, separators, current-page state, sizes, and selection events. +- Props: label: string = "Breadcrumb"; items: unknown[] = []; active: string = ""; separator: string = "chevron"; showHome: boolean = false; homeLabel: string = "Home"; homeHref: string = "/"; homeIcon: string = "icon-[lucide--house]"; size: string = "default"; color: string = "primary"; variant: string = "minimal"; class: string = "" +- Outputs/events: select({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null) +- Slots: none + +### `Button` + +- Category: base; mount: `Button`; source: `components/button.wrn`. +- Purpose: Theme-aware, responsive button component. +- Props: label: string = "Button"; loadingLabel: string = "Loading…"; description: string = ""; as: string = ""; href: string = ""; target: string = ""; rel: string = ""; type: string = "button"; variant: string = "default"; color: string = "primary"; size: string = "default"; disabled: boolean = false; loading: boolean = false; pill: boolean = false; fullWidth: boolean = false; icon: string = ""; iconPosition: string = "start"; ariaLabel: string = ""; ariaPressed: string = ""; ariaExpanded: string = ""; ariaControls: string = ""; title: string = ""; autofocus: boolean = false; controlClass: string = ""; class: string = "" +- Outputs/events: click({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: default + +### `ButtonGroup` + +- Category: base; mount: `ButtonGroup`; source: `components/ButtonGroup.wrn`. +- Purpose: Theme-aware, responsive button group component. +- Props: items: unknown[] = []; value: string = ""; size: string = "md"; color: string = "primary"; variant: string = "default"; orientation: string = "horizontal"; responsive: boolean = false; attached: boolean = true; selectable: boolean = false; toolbar: boolean = false; disabled: boolean = false; ariaLabel: string = "Button group"; class: string = "" +- Outputs/events: click({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); select({ value: string | number | boolean | null | object; previousValue: string | number | boolean | null | object; item: string | number | boolean | null | object; index: number }); change({ value: string | number | boolean | null | object; previousValue: string | number | boolean | null | object; item: string | number | boolean | null | object; index: number }) +- Slots: default + +### `CTASection` + +- Category: marketing; mount: `CTASection`; source: `components/CTASection.wrn`. +- Purpose: Close a page or major section with conversion-focused copy, actions, and optional supporting visual content. +- Props: eyebrow: string = ""; title: string = "Ready to get started?"; description: string = ""; icon: string = ""; align: string = "center"; size: string = "default"; color: string = "primary"; variant: string = "solid"; primaryLabel: string = "Get started"; primaryHref: string = "#"; primaryIcon: string = ""; secondaryLabel: string = ""; secondaryHref: string = ""; secondaryIcon: string = ""; backgroundImage: string = ""; visualImage: string = ""; visualAlt: string = ""; visualIcon: string = ""; visualTitle: string = ""; visualDescription: string = ""; visualItems: unknown[] = []; visualPosition: string = "right"; maxWidth: string = "xl"; fullBleed: boolean = false; class: string = "" +- Outputs/events: none +- Slots: default, actions, visual, footer + +### `Card` + +- Category: base; mount: `Card`; source: `components/Card.wrn`. +- Purpose: Group related content in a responsive themed surface with title, description, content, and supporting slots. +- Props: title: string = "Card title"; subtitle: string = ""; description: string = ""; header: string = ""; footer: string = ""; imageSrc: string = ""; imageAlt: string = ""; imagePosition: string = "top"; actionLabel: string = ""; actionHref: string = ""; headerActions: unknown[] = []; navigation: unknown[] = []; activeNav: string = ""; mobileNavigation: boolean = false; alertTitle: string = ""; alertDescription: string = ""; empty: boolean = false; emptyTitle: string = "No data to show"; emptyIcon: string = "icon-[lucide--inbox]"; items: unknown[] = []; size: string = "md"; color: string = "primary"; variant: string = "default"; layout: string = "vertical"; align: string = "left"; hover: string = "none"; scrollable: boolean = false; maxHeight: string = "18rem"; dismissible: boolean = false; ariaLabel: string = ""; class: string = "" +- Outputs/events: click({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); action({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); navigate({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); dismiss({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); load({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); error({ error: Error | string; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | Error | string) +- Slots: default + +### `Carousel` + +- Category: base; mount: `Carousel`; source: `components/Carousel.wrn`. +- Purpose: Theme-aware, responsive carousel component. +- Props: size: string = "default"; color: string = "primary"; title: string = ""; description: string = ""; items: unknown[] = []; activeIndex: number = 0; slidesPerView: number = 1; gap: string = "0.75rem"; showPagination: boolean = false; isAutoPlay: boolean = false; autoplayInterval: number = 4000; isInfiniteLoop: boolean = false; isRTL: boolean = false; isCentered: boolean = false; isDraggable: boolean = false; isAutoHeight: boolean = false; isSnap: boolean = false; showCounter: boolean = false; thumbnails: string = "none"; ariaLabel: string = "Content carousel"; variant: string = "default"; class: string = "" +- Outputs/events: initialize({ index: number; count: number }); change({ index: number; previousIndex: number; item: string | number | boolean | null | object; reason: string | boolean }); previous({ index: number; previousIndex: number; item: string | number | boolean | null | object }); next({ index: number; previousIndex: number; item: string | number | boolean | null | object }); play({ index: number; interval: number }); pause({ index: number }); reachStart({ index: number }); reachEnd({ index: number }); dragStart({ index: number; x: null }); dragEnd({ index: number; distance: number }) +- Slots: default + +### `Chart` + +- Category: integrations; mount: `Chart`; source: `components/Chart.wrn`. +- Purpose: Theme-aware, responsive chart component. +- Props: title: string = "Chart"; description: string = ""; items: unknown[] = []; valueKey: string = "value"; labelKey: string = "label"; height: number = 240; showLegend: boolean = true; showValues: boolean = true; size: string = "default"; color: string = "primary"; variant: string = "bar"; class: string = "" +- Outputs/events: select({ item: object; index: number; sourceEvent?: Event }); dataPointClick({ item: object; index: number; sourceEvent?: Event }); legendToggle({ item: object; index: number; hidden: boolean; sourceEvent?: Event }) +- Slots: default + +### `ChatBubble` + +- Category: base; mount: `ChatBubble`; source: `components/ChatBubble.wrn`. +- Purpose: Theme-aware, responsive chat bubble component. +- Props: size: string = "default"; color: string = "primary"; title: string = ""; description: string = ""; items: unknown[] = []; oneSided: boolean = false; showAvatars: boolean = false; showMetadata: boolean = false; ariaLabel: string = "Conversation"; variant: string = "default"; class: string = "" +- Outputs/events: action({ action: boolean; item: string | number | boolean | null | object; index: number }); messageClick({ item: string | number | boolean | null | object; index: number; direction: string }); avatarClick({ item: string | number | boolean | null | object; index: number; direction: string }); linkClick({ link: string | number | boolean | null | object; item: string | number | boolean | null | object; index: number }) +- Slots: default + +### `Checkbox` + +- Category: forms; mount: `Checkbox`; source: `components/checkbox.wrn`. +- Purpose: Theme-aware, responsive checkbox component. +- Props: size: string = "default"; color: string = "primary"; id: string = ""; name: string = ""; label: string = "Checkbox"; hiddenLabel: boolean = false; placeholder: string = ""; variant: string = "normal"; icon: string = ""; iconPosition: string = "start"; value: string = "on"; values: unknown[] = []; options: unknown[] = []; checked: boolean = false; indeterminate: boolean = false; orientation: string = "vertical"; card: boolean = false; rightAligned: boolean = false; list: boolean = false; helperText: string = ""; cornerHint: string = ""; error: string = ""; inline: boolean = false; readonly: boolean = false; disabled: boolean = false; required: boolean = false; class: string = "" +- Outputs/events: input({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); invalid({ message?: string; value: string | number | boolean | null | object; sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: default + +### `Clipboard` + +- Category: integrations; mount: `Clipboard`; source: `components/Clipboard.wrn`. +- Purpose: Theme-aware, responsive clipboard component. +- Props: value: string = ""; label: string = "Copy"; copiedLabel: string = "Copied"; errorLabel: string = "Copy failed"; title: string = "Clipboard"; description: string = ""; code: boolean = true; size: string = "default"; color: string = "primary"; disabled: boolean = false; class: string = "" +- Outputs/events: copy({ value: string; sourceEvent?: Event }); success({ value: string; sourceEvent?: Event }); error({ error: Error | string; value: string; sourceEvent?: Event }) +- Slots: default + +### `Collapse` + +- Category: base; mount: `Collapse`; source: `components/Collapse.wrn`. +- Purpose: Theme-aware, responsive collapse component. +- Props: size: string = "default"; color: string = "primary"; items: unknown[] = []; multiple: boolean = false; mode: string = "panel"; initialOpenIndexes: unknown[] = []; ariaLabel: string = "Collapsible content"; class: string = "" +- Outputs/events: toggle({ index: number; item: string | number | boolean | null | object; open: boolean; openIndexes: number[] }); open({ index: number; item: string | number | boolean | null | object }); close({ index: number; item: string | number | boolean | null | object }) +- Slots: default + +### `ColorPicker` + +- Category: forms; mount: `ColorPicker`; source: `components/ColorPicker.wrn`. +- Purpose: Theme-aware, responsive color picker component. +- Props: size: string = "default"; color: string = "primary"; id: string = ""; name: string = ""; label: string = "Color"; hiddenLabel: boolean = false; placeholder: string = ""; value: string = "#2563eb"; icon: string = ""; iconPosition: string = "start"; helperText: string = ""; cornerHint: string = ""; error: string = ""; inline: boolean = false; variant: string = "normal"; readonly: boolean = false; disabled: boolean = false; required: boolean = false; class: string = "" +- Outputs/events: input({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: none + +### `Columns` + +- Category: layout; mount: `Columns`; source: `components/Columns.wrn`. +- Purpose: Create responsive balanced content columns with configurable count, gap, density, and maximum width. +- Props: size: string = "default"; color: string = "primary"; columns: number = 2; gap: string = "md"; maxWidth: string = "xl"; class: string = "" +- Outputs/events: none +- Slots: default + +### `ComboBox` + +- Category: advanced-forms; mount: `ComboBox`; source: `components/Combobox.wrn`. +- Purpose: Editable autocomplete combobox with local and remote suggestions. +- Props: size: string = "default"; color: string = "primary"; label: string = "ComboBox"; name: string = ""; value: string = ""; options: unknown[] = []; groups: unknown[] = []; placeholder: string = "Search or select an option"; searchPlaceholder: string = "Start typing…"; clearable: boolean = true; allowCustomValue: boolean = false; disabled: boolean = false; required: boolean = false; invalid: boolean = false; validationMessage: string = ""; helpText: string = ""; loading: boolean = false; loadingLabel: string = "Loading suggestions…"; emptyLabel: string = "No matching options"; clearLabel: string = "Clear value"; toggleLabel: string = "Toggle suggestions"; searchMode: string = "contains"; searchFields: string = "label,description"; minSearchLength: number = 0; searchResultLimit: number = 0; optionTemplate: string = "default"; defaultOpen: boolean = false; closeOnSelect: boolean = true; fixed: boolean = false; placement: string = "bottom"; autocomplete: string = "off"; remote: boolean = false; remoteUrl: string = ""; remoteQueryParam: string = "q"; remoteDebounce: number = 250; remoteAutoLoad: boolean = true; infinite: boolean = false; hasMore: boolean = false; page: number = 1; loadMoreLabel: string = "Load more"; class: string = "" +- Outputs/events: search({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); select({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); clear({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); open({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); close({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); load({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); error({ error: Error | string; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | Error | string) +- Slots: none + +### `Confetti` + +- Category: integrations; mount: `Confetti`; source: `components/Confetti.wrn`. +- Purpose: Theme-aware, responsive confetti component. +- Props: label: string = "Celebrate"; duration: number = 1200; count: number = 24; autoStart: boolean = false; disabled: boolean = false; size: string = "default"; color: string = "primary"; class: string = "" +- Outputs/events: start({ sourceEvent?: Event; duration: number }); complete({ sourceEvent?: Event; duration: number }) +- Slots: default + +### `Container` + +- Category: layout; mount: `Container`; source: `components/Container.wrn`. +- Purpose: Constrain and align page content with responsive gutters and compact, wide, or full width options. +- Props: size: string = "default"; color: string = "primary"; columns: number = 2; gap: string = "md"; maxWidth: string = "xl"; centered: boolean = true; class: string = "" +- Outputs/events: none +- Slots: default + +### `ContextMenu` + +- Category: overlays; mount: `ContextMenu`; source: `components/ContextMenu.wrn`. +- Purpose: Open an accessible keyboard-aware action menu from pointer or keyboard context interactions. +- Props: items: unknown[] = []; open: boolean = false; defaultOpen: boolean = false; trigger: string = "contextmenu"; placement: string = "pointer"; align: string = "start"; size: string = "default"; color: string = "primary"; variant: string = "raised"; title: string = ""; description: string = ""; label: string = "Context menu"; closeOnSelect: boolean = true; closeOnOutside: boolean = true; disabled: boolean = false; minWidth: string = "14rem"; maxWidth: string = "20rem"; class: string = "" +- Outputs/events: open({ x: number; y: number; trigger: string; sourceEvent: Event }); close({ reason: string; sourceEvent: Event }); select({ item: string | number | boolean | null | object; itemIndex: number; value: string | number | boolean; sourceEvent: Event }); action({ item: string | number | boolean | null | object; itemIndex: number; value: string | number | boolean; sourceEvent: Event }) +- Slots: trigger, header, default, footer + +### `CustomScrollbar` + +- Category: layout; mount: `CustomScrollbar`; source: `components/CustomScrollbar.wrn`. +- Purpose: Theme-aware, responsive custom scrollbar component. +- Props: color: string = "primary"; size: string = "default"; axis: string = "vertical"; thickness: number = 8; maxHeight: string = "20rem"; radius: string = "999px"; class: string = "" +- Outputs/events: none +- Slots: default + +### `DataMap` + +- Category: integrations; mount: `DataMap`; source: `components/DataMap.wrn`. +- Purpose: Theme-aware, responsive data map component. +- Props: size: string = "default"; color: string = "primary"; title: string = "Data Map"; description: string = ""; items: unknown[] = []; variant: string = "default"; class: string = "" +- Outputs/events: select({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null) +- Slots: default + +### `DataTable` + +- Category: tables; mount: `DataTable`; source: `components/DataTable.wrn`. +- Purpose: Sortable, filterable, paginated data table with row selection. +- Props: color: string = "primary"; size: string = "default"; columns: unknown[] = []; rows: unknown[] = []; rowKey: string = "id"; remote: boolean = false; loadingLabel: string = "Loading"; errorLabel: string = "Could not load this data"; retryLabel: string = "Try again"; caption: string = ""; description: string = ""; searchable: boolean = true; searchPlaceholder: string = "Search"; paginated: boolean = true; pageSize: number = 10; paginationStyle: string = "compact"; pageSizes: number[] = [10, 25, 50]; selectable: boolean = false; actions: unknown[] = []; striped: boolean = true; bordered: boolean = true; gridlines: string = "rows"; density: string = "default"; emptyLabel: string = "No records to show"; noResultsLabel: string = "No records match your search"; clearSearchLabel: string = "Clear search"; stickyFirstColumn: boolean = false; layout: string = "rows"; class: string = "" +- Outputs/events: sort({ key: string; direction: string }); search({ query: string }); pageChange({ page: number; pageSize: number }); select({ selected: Array; all: boolean }); change({ page: number; pageSize: number; total: number; query: string; sortKey: string; sortDirection: string }); rowClick({ row: object; sourceEvent: Event }); action({ id: string; selected: Array; rows: object[]; sourceEvent: Event }); request({ instanceId: number; page: number; pageSize: number; sortKey: string; sortDirection: string; query: string }) +- Slots: default + +### `DatePicker` + +- Category: base; mount: `DatePicker`; source: `components/DatePicker.wrn`. +- Purpose: Theme-aware, responsive date picker component. +- Props: size: string = "default"; color: string = "primary"; label: string = "Date Picker"; id: string = ""; name: string = ""; value: string = ""; placeholder: string = ""; type: string = "date"; locale: string = "en-US"; firstDayOfWeek: number = 0; months: string = [{ label: "Jan", value: "01" }, { label: "Feb", value: "02" }, { label: "Mar", value: "03" }, { label: "Apr", value: "04" }, { label: "May", value: "05" }, { label: "Jun", value: "06" }, { label: "Jul", value: "07" }, { label: "Aug", value: "08" }, { label: "Sep", value: "09" }, { label: "Oct", value: "10" }, { label: "Nov", value: "11" }, { label: "Dec", value: "12" }]; days: string = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]; years: string = [2024, 2025, 2026, 2027, 2028, 2029, 2030]; min: string = ""; max: string = ""; step: string = ""; helperText: string = ""; cornerHint: string = ""; error: string = ""; variant: string = "normal"; inline: boolean = false; readonly: boolean = false; disabled: boolean = false; required: boolean = false; class: string = "" +- Outputs/events: input({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]); change({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]); open({ value: string; name: string; sourceEvent: Event }); close({ value: string; name: string; sourceEvent: Event }); focus({ value: string; name: string; sourceEvent: Event }); blur({ value: string; name: string; sourceEvent: Event }); invalid({ name: string; message: string; sourceEvent: Event }) +- Slots: none + +### `DeviceFrame` + +- Category: base; mount: `DeviceFrame`; source: `components/DeviceFrame.wrn`. +- Purpose: Theme-aware, responsive device frame component. +- Props: size: string = "default"; color: string = "primary"; title: string = "Device Frame"; description: string = ""; items: unknown[] = []; variant: string = "default"; device: string = "phone"; orientation: string = "portrait"; src: string = ""; srcdoc: string = ""; frameTitle: string = "Device preview"; showToolbar: boolean = true; allow: string = ""; class: string = "" +- Outputs/events: change({ device: string; orientation: string; sourceEvent: Event }); rotate({ device: string; orientation: string; sourceEvent: Event }) +- Slots: default + +### `Divider` + +- Category: layout; mount: `Divider`; source: `components/Divider.wrn`. +- Purpose: Separate related horizontal or vertical content with optional labels, sizes, and semantic colors. +- Props: size: string = "default"; color: string = "primary"; label: string = ""; orientation: string = "horizontal"; variant: string = "solid"; class: string = "" +- Outputs/events: none +- Slots: none + +### `DragAndDrop` + +- Category: integrations; mount: `DragAndDrop`; source: `components/DragAndDrop.wrn`. +- Purpose: Theme-aware, responsive drag and drop component. +- Props: size: string = "default"; color: string = "primary"; title: string = "Drag And Drop"; description: string = ""; items: unknown[] = []; variant: string = "default"; class: string = "" +- Outputs/events: dragStart({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); dragEnd({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); dragEnter({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); dragLeave({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); drop({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null) +- Slots: default + +### `Drawer` + +- Category: overlays; mount: `Drawer`; source: `components/Drawer.wrn`. +- Purpose: Present responsive modal side or bottom content with focus management, backdrop behavior, slots, and close events. +- Props: open: boolean = false; defaultOpen: boolean = false; placement: string = "right"; size: string = "md"; color: string = "primary"; variant: string = "default"; title: string = "Drawer"; description: string = ""; icon: string = ""; label: string = "Drawer"; closeLabel: string = "Close drawer"; showClose: boolean = true; closeOnBackdrop: boolean = true; closeOnEscape: boolean = true; duration: number = 260; overlay: boolean = true; scrollable: boolean = true; triggerLabel: string = ""; triggerIcon: string = ""; class: string = "" +- Outputs/events: open({ placement: string; sourceEvent: Event }); close({ reason: string; placement: string; sourceEvent: Event }); cancel({ placement: string; sourceEvent: Event }) +- Slots: trigger, header, default, footer + +### `Dropdown` + +- Category: overlays; mount: `Dropdown`; source: `components/Dropdown.wrn`. +- Purpose: Open an accessible anchored menu with keyboard navigation, item selection, actions, and responsive placement. +- Props: items: unknown[] = []; open: boolean = false; defaultOpen: boolean = false; label: string = "Open menu"; icon: string = ""; showChevron: boolean = true; menuLabel: string = "Dropdown menu"; placement: string = "bottom-start"; width: string = "md"; size: string = "default"; color: string = "primary"; variant: string = "raised"; closeOnSelect: boolean = true; closeOnOutside: boolean = true; disabled: boolean = false; emptyLabel: string = "No menu items"; class: string = "" +- Outputs/events: toggle({ open: boolean; sourceEvent: Event; reason?: object }); open({ sourceEvent: Event }); close({ reason: string; sourceEvent: Event }); select({ item: string | number | boolean | null | object; itemIndex: number; value: string | number | boolean; sourceEvent: Event }); action({ item: string | number | boolean | null | object; itemIndex: number; value: string | number | boolean; sourceEvent: Event }) +- Slots: trigger, header, default, footer + +### `FeatureCard` + +- Category: marketing; mount: `FeatureCard`; source: `components/FeatureCard.wrn`. +- Purpose: Present one linked feature or service with media, icon, badge, description, and action. +- Props: icon: string = ""; iconStyle: string = "soft"; iconSize: string = "default"; eyebrow: string = ""; title: string = "Feature"; description: string = ""; image: string = ""; imageAlt: string = ""; imagePosition: string = "top"; imageAspect: string = "wide"; imageLoading: string = "lazy"; href: string = ""; target: string = ""; rel: string = ""; external: boolean = false; actionLabel: string = "Learn more"; actionIcon: string = ""; showArrow: boolean = true; stretchedLink: boolean = true; badge: string = ""; badgeColor: string = "primary"; size: string = "default"; color: string = "primary"; variant: string = "default"; hover: string = "lift"; align: string = "left"; disabled: boolean = false; class: string = "" +- Outputs/events: none +- Slots: media, icon, default, footer + +### `FeatureGrid` + +- Category: layout; mount: `FeatureGrid`; source: `components/FeatureGrid.wrn`. +- Purpose: Arrange feature cards, services, solutions, or benefits in a responsive equal-height grid. +- Props: size: string = "default"; color: string = "primary"; items: unknown[] = []; columns: number = 3; tabletColumns: number = 2; mobileColumns: number = 1; gap: string = "md"; minItemWidth: string = ""; equalHeight: boolean = true; align: string = "stretch"; maxWidth: string = "full"; variant: string = "default"; label: string = "Features"; class: string = "" +- Outputs/events: none +- Slots: default + +### `FeatureIconCard` + +- Category: marketing; mount: `FeatureIconCard`; source: `components/FeatureIconCard.wrn`. +- Purpose: Present a compact feature or benefit with a styled icon, title, description, badge, and optional link. +- Props: icon: string = "icon-[lucide--sparkles]"; iconSize: string = "md"; iconVariant: string = "soft"; title: string = "Feature"; description: string = ""; href: string = ""; actionLabel: string = "Explore"; badge: string = ""; size: string = "default"; color: string = "primary"; variant: string = "default"; align: string = "left"; hover: string = "lift"; class: string = "" +- Outputs/events: none +- Slots: default, footer + +### `FileInput` + +- Category: forms; mount: `FileInput`; source: `components/FileInput.wrn`. +- Purpose: Theme-aware, responsive file input component. +- Props: size: string = "default"; color: string = "primary"; id: string = ""; name: string = ""; label: string = "File"; hiddenLabel: boolean = false; placeholder: string = "Choose a file"; value: string = ""; icon: string = "icon-[lucide--upload]"; iconPosition: string = "start"; accept: string = ""; multiple: boolean = false; helperText: string = ""; cornerHint: string = ""; error: string = ""; inline: boolean = false; variant: string = "normal"; readonly: boolean = false; disabled: boolean = false; required: boolean = false; class: string = "" +- Outputs/events: input({ files: File[]; name: string; sourceEvent: Event }); change({ files: File[]; name: string; sourceEvent: Event }); focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); select({ files: File[]; name: string; sourceEvent: Event }); clear({ name: string; sourceEvent: Event }); invalid({ message?: string; value: string | number | boolean | null | object; sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: none + +### `FileUploadProgress` + +- Category: base; mount: `FileUploadProgress`; source: `components/FileUploadProgress.wrn`. +- Purpose: Theme-aware, responsive file upload progress component. +- Props: size: string = "default"; color: string = "primary"; label: string = "Progress"; value: number = 50; max: number = 100; showValue: boolean = true; fileName: string = ""; fileSize: string = ""; uploadedSize: string = ""; status: string = "uploading"; cancelLabel: string = "Cancel upload"; retryLabel: string = "Retry upload"; class: string = "" +- Outputs/events: cancel({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]); retry({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]); complete({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]) +- Slots: none + +### `Footer` + +- Category: layout; mount: `Footer`; source: `components/Footer.wrn`. +- Purpose: Render structured responsive footer navigation, pre and post content, copyright content, links, and public events. +- Props: size: string = "default"; color: string = "primary"; label: string = "Footer navigation"; items: unknown[] = []; columns: number = 3; maxWidth: string = "compact"; copyright: string = ""; class: string = "" +- Outputs/events: select({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); action({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: pre-footer, post-footer, copyright-left, copyright-right + +### `Grid` + +- Category: layout; mount: `Grid`; source: `components/Grid.wrn`. +- Purpose: Arrange arbitrary content in a responsive configurable CSS grid with stable columns, gaps, alignment, and width. +- Props: size: string = "default"; color: string = "primary"; columns: number = 2; gap: string = "md"; maxWidth: string = "xl"; minItemWidth: string = ""; class: string = "" +- Outputs/events: none +- Slots: default + +### `Hero` + +- Category: marketing; mount: `Hero`; source: `components/Hero.wrn`. +- Purpose: Build a full-width responsive hero with constrained content, actions, trust signals, and a structured or custom visual panel. +- Props: eyebrow: string = ""; eyebrowIcon: string = ""; icon: string = ""; title: string = "Build something remarkable"; highlight: string = ""; description: string = ""; align: string = "left"; size: string = "default"; color: string = "primary"; variant: string = "default"; layout: string = "split"; visualPosition: string = "right"; visualStyle: string = "plain"; showDecorations: boolean = true; fullBleed: boolean = true; visualEyebrow: string = ""; visualTitle: string = ""; visualDescription: string = ""; visualIcon: string = ""; visualImage: string = ""; visualAlt: string = ""; visualItems: unknown[] = []; primaryLabel: string = ""; primaryHref: string = ""; primaryIcon: string = ""; primaryTarget: string = ""; secondaryLabel: string = ""; secondaryHref: string = ""; secondaryIcon: string = ""; secondaryTarget: string = ""; tertiaryLabel: string = ""; tertiaryHref: string = ""; tertiaryIcon: string = ""; tertiaryTarget: string = ""; badges: unknown[] = []; trustItems: unknown[] = []; maxWidth: string = "xl"; class: string = "" +- Outputs/events: none +- Slots: eyebrow, actions, trust, default, visual, footer + +### `HeroActions` + +- Category: marketing; mount: `HeroActions`; source: `components/HeroActions.wrn`. +- Purpose: Group hero and campaign actions with consistent alignment, orientation, sizing, and responsive mobile stacking. +- Props: actions: unknown[] = []; align: string = "left"; orientation: string = "horizontal"; stackOnMobile: boolean = true; fullWidthMobile: boolean = true; size: string = "default"; color: string = "primary"; class: string = "" +- Outputs/events: none +- Slots: default + +### `Image` + +- Category: layout; mount: `Image`; source: `components/Image.wrn`. +- Purpose: Render a responsive image with explicit dimensions, loading behavior, alternative text, sizing, and rounded treatment. +- Props: size: string = "default"; color: string = "primary"; src: string = ""; alt: string = ""; width: string = ""; height: string = ""; loading: string = "lazy"; fit: string = "cover"; rounded: boolean = false; class: string = "" +- Outputs/events: none +- Slots: default + +### `Input` + +- Category: forms; mount: `Input`; source: `components/input.wrn`. +- Purpose: Theme-aware, responsive input component. +- Props: size: string = "default"; color: string = "primary"; id: string = ""; name: string = ""; label: string = "Input"; hiddenLabel: boolean = false; placeholder: string = ""; value: string = ""; type: string = "text"; variant: string = "normal"; icon: string = ""; iconPosition: string = "start"; helperText: string = ""; cornerHint: string = ""; error: string = ""; inline: boolean = false; readonly: boolean = false; disabled: boolean = false; required: boolean = false; autocomplete: string = ""; inputmode: string = ""; minlength: string = ""; maxlength: string = ""; pattern: string = ""; min: string = ""; max: string = ""; step: string = ""; class: string = "" +- Outputs/events: input({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]); change({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]); focus({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]); blur({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]); invalid({ value: string | number | boolean | null | object; name: string; message: string; sourceEvent: Event }); keydown({ key: string; value: string | number | boolean | null | object; name: string; sourceEvent: Event }); keyup({ key: string; value: string | number | boolean | null | object; name: string; sourceEvent: Event }) +- Slots: none + +### `InputGroup` + +- Category: forms; mount: `InputGroup`; source: `components/InputGroup.wrn`. +- Purpose: Theme-aware, responsive input group component. +- Props: size: string = "default"; color: string = "primary"; id: string = ""; name: string = ""; label: string = "Input group"; hiddenLabel: boolean = false; value: string = ""; placeholder: string = ""; type: string = "text"; startText: string = ""; endText: string = ""; icon: string = ""; iconPosition: string = "start"; actionLabel: string = ""; helperText: string = ""; cornerHint: string = ""; error: string = ""; inline: boolean = false; variant: string = "normal"; readonly: boolean = false; disabled: boolean = false; required: boolean = false; class: string = "" +- Outputs/events: input({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); submit({ value: string | number | boolean | null | object; name: string; sourceEvent: Event }); action({ name: string; sourceEvent: Event }) +- Slots: none + +### `InputNumber` + +- Category: advanced-forms; mount: `InputNumber`; source: `components/InputNumber.wrn`. +- Purpose: Theme-aware, responsive input number component. +- Props: size: string = "default"; color: string = "primary"; variant: string = "default"; class: string = ""; id: string = ""; name: string = "quantity"; value: number = 0; min: string = ""; max: string = ""; step: number = 1; precision: string = "auto"; label: string = ""; description: string = ""; helpText: string = ""; error: string = ""; invalid: boolean = false; prefix: string = ""; suffix: string = ""; placeholder: string = ""; autocomplete: string = "off"; inputMode: string = "decimal"; ariaLabel: string = ""; required: boolean = false; disabled: boolean = false; inputDisabled: boolean = false; buttonsDisabled: boolean = false; readonly: boolean = false; allowInput: boolean = true; keyboard: boolean = true; wheel: boolean = false; clamp: boolean = true; fullWidth: boolean = false; showButtons: boolean = true; showValidationMessage: boolean = true; decrementLabel: string = "Decrease value"; incrementLabel: string = "Increase value"; controlsLabel: string = "Quantity controls"; requiredMessage: string = "A value is required."; minMessage: string = "Value is below the minimum."; maxMessage: string = "Value is above the maximum." +- Outputs/events: input({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); increment({ value: number; previousValue?: number; sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); decrement({ value: number; previousValue?: number; sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: none + +### `Kbd` + +- Category: layout; mount: `Kbd`; source: `components/Kbd.wrn`. +- Purpose: Theme-aware, responsive kbd component. +- Props: size: string = "default"; color: string = "primary"; label: string = "K"; class: string = "" +- Outputs/events: none +- Slots: default + +### `LayoutSplitter` + +- Category: layout; mount: `LayoutSplitter`; source: `components/LayoutSplitter.wrn`. +- Purpose: Theme-aware, responsive layout splitter component. +- Props: color: string = "primary"; size: number = 50; orientation: string = "horizontal"; minSize: number = 15; step: number = 5; label: string = "Resize panels"; class: string = "" +- Outputs/events: sizeChange({ size: number }) +- Slots: start, end, default + +### `LegendIndicator` + +- Category: base; mount: `LegendIndicator`; source: `components/LegendIndicator.wrn`. +- Purpose: Theme-aware, responsive legend indicator component. +- Props: size: string = "default"; color: string = "primary"; title: string = "Legend Indicator"; description: string = ""; items: unknown[] = []; variant: string = "default"; class: string = "" +- Outputs/events: toggle({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); select({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null) +- Slots: default + +### `Link` + +- Category: layout; mount: `Link`; source: `components/Link.wrn`. +- Purpose: Render an accessible internal or external link with target, relation, size, color, and public focus or click events. +- Props: size: string = "default"; color: string = "primary"; label: string = "Link"; href: string = "#"; target: string = ""; rel: string = ""; underline: string = "hover"; external: boolean = false; class: string = "" +- Outputs/events: none +- Slots: default + +### `List` + +- Category: base; mount: `List`; source: `components/List.wrn`. +- Purpose: Present structured responsive linked or status items with icons, descriptions, actions, and selection events. +- Props: size: string = "default"; color: string = "primary"; title: string = "List"; description: string = ""; items: unknown[] = []; variant: string = "default"; class: string = "" +- Outputs/events: select({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: default + +### `ListGroup` + +- Category: base; mount: `ListGroup`; source: `components/ListGroup.wrn`. +- Purpose: Theme-aware, responsive list group component. +- Props: size: string = "default"; color: string = "primary"; title: string = "List Group"; description: string = ""; items: unknown[] = []; variant: string = "default"; class: string = "" +- Outputs/events: select({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null) +- Slots: default + +### `Map` + +- Category: integrations; mount: `Map`; source: `components/Map.wrn`. +- Purpose: Present responsive location information and markers with map-ready metadata and movement or marker events. +- Props: size: string = "default"; color: string = "primary"; title: string = "Map"; description: string = ""; items: unknown[] = []; variant: string = "default"; class: string = "" +- Outputs/events: markerClick({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); select({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); zoom({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: default + +### `MarketingSectionHeader` + +- Category: marketing; mount: `MarketingSectionHeader`; source: `components/MarketingSectionHeader.wrn`. +- Purpose: Introduce marketing content with an eyebrow, title, description, and optional linked action. +- Props: id: string = ""; eyebrow: string = ""; title: string = ""; description: string = ""; align: string = "split"; size: string = "default"; color: string = "primary"; actionLabel: string = ""; actionHref: string = ""; actionIcon: string = ""; actionExternal: boolean = false; class: string = "" +- Outputs/events: none +- Slots: icon, actions, default + +### `Marquee` + +- Category: base; mount: `Marquee`; source: `components/Marquee.wrn`. +- Purpose: Continuously present responsive labels, partners, notices, or capabilities with pause and resume behavior. +- Props: size: string = "default"; color: string = "primary"; title: string = "Marquee"; description: string = ""; items: unknown[] = []; variant: string = "default"; class: string = "" +- Outputs/events: pause({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); resume({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: default + +### `MegaMenu` + +- Category: navigation; mount: `MegaMenu`; source: `components/MegaMenu.wrn`. +- Purpose: Theme-aware, responsive mega menu component. +- Props: color: string = "primary"; size: string = "default"; label: string = "Menu"; icon: string = ""; columns: unknown[] = []; footer: string = ""; defaultOpen: boolean = false; class: string = "" +- Outputs/events: open({ sourceEvent: Event }); close({ reason: string }); select({ item: object; value: string }) +- Slots: default + +### `MetricCard` + +- Category: data; mount: `MetricCard`; source: `components/MetricCard.wrn`. +- Purpose: Display one operational metric with value, suffix, description, icon, trend, progress, and optional action. +- Props: label: string = "Metric"; value: string = "0"; description: string = ""; icon: string = ""; iconStyle: string = "soft"; prefix: string = ""; suffix: string = ""; badge: string = ""; trend: string = ""; trendLabel: string = ""; trendDirection: string = "neutral"; progress: number = -1; progressLabel: string = ""; href: string = ""; target: string = ""; rel: string = ""; external: boolean = false; actionLabel: string = ""; actionIcon: string = ""; showArrow: boolean = true; selectable: boolean = false; disabled: boolean = false; size: string = "default"; color: string = "primary"; variant: string = "default"; hover: string = "lift"; align: string = "left"; class: string = "" +- Outputs/events: select({ label: string; value: string; href: string; sourceEvent: Event }); action({ label: string; value: string; href: string; sourceEvent: Event }) +- Slots: default, footer + +### `MetricGrid` + +- Category: data; mount: `MetricGrid`; source: `components/MetricGrid.wrn`. +- Purpose: Arrange operational metrics, KPIs, public statistics, or service indicators in a responsive equal-height grid. +- Props: items: unknown[] = []; columns: number = 4; tabletColumns: number = 2; mobileColumns: number = 1; gap: string = "md"; equalHeight: boolean = true; dividers: boolean = false; size: string = "default"; color: string = "primary"; variant: string = "default"; maxWidth: string = "full"; minItemWidth: string = ""; class: string = "" +- Outputs/events: select({ item: string | number | boolean | null | object; itemIndex: number; sourceEvent: Event }); action({ item: string | number | boolean | null | object; itemIndex: number; sourceEvent: Event }) +- Slots: default + +### `Modal` + +- Category: overlays; mount: `Modal`; source: `components/Modal.wrn`. +- Purpose: Present an accessible modal dialog with focus management, confirmation, cancellation, slots, and responsive sizing. +- Props: open: boolean = false; defaultOpen: boolean = false; title: string = "Modal"; description: string = ""; icon: string = ""; label: string = "Modal dialog"; size: string = "md"; placement: string = "center"; color: string = "primary"; variant: string = "default"; showClose: boolean = true; closeLabel: string = "Close modal"; closeOnBackdrop: boolean = true; closeOnEscape: boolean = true; closeOnCancel: boolean = true; closeOnConfirm: boolean = false; showFooter: boolean = true; cancelLabel: string = "Cancel"; cancelIcon: string = ""; confirmLabel: string = "Confirm"; confirmIcon: string = ""; confirmDisabled: boolean = false; confirmLoading: boolean = false; destructive: boolean = false; triggerLabel: string = ""; triggerIcon: string = ""; scrollable: boolean = true; scrollBehavior: string = "inside"; class: string = "" +- Outputs/events: open({ sourceEvent: Event }); close({ reason: string; sourceEvent: Event }); cancel({ sourceEvent: Event }); confirm({ sourceEvent: Event }) +- Slots: trigger, header, default, footer + +### `Nav` + +- Category: navigation; mount: `Nav`; source: `components/Nav.wrn`. +- Purpose: Theme-aware, responsive nav component. +- Props: color: string = "primary"; size: string = "default"; items: unknown[] = []; active: string = ""; orientation: string = "horizontal"; label: string = "Main"; collapsible: boolean = true; toggleLabel: string = "Menu"; class: string = "" +- Outputs/events: select({ item: object; value: string }) +- Slots: default + +### `Navbar` + +- Category: navigation; mount: `Navbar`; source: `components/Navbar.wrn`. +- Purpose: Theme-aware, responsive navbar component. +- Props: size: string = "default"; color: string = "primary"; label: string = "Primary navigation"; topbarLabel: string = "Utility navigation"; brand: Record = {}; items: unknown[] = []; actions: unknown[] = []; active: string = ""; sticky: boolean = false; openOnHover: boolean = false; maxWidth: string = "full"; mobileLabel: string = "Toggle navigation"; class: string = "" +- Outputs/events: toggle({ open: boolean }); open({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); close({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); select({ item: string | number | boolean | null | object; value: string | number | boolean; level: string }); action({ item: string | number | boolean | null | object; value: string | number | boolean }) +- Slots: topbar, actions + +### `PageHeader` + +- Category: marketing; mount: `PageHeader`; source: `components/PageHeader.wrn`. +- Purpose: Introduce an internal or public page with breadcrumbs, icon, title, description, and primary or secondary actions. +- Props: eyebrow: string = ""; title: string = ""; description: string = ""; icon: string = ""; id: string = "page-title"; align: string = "left"; centered: boolean = false; compact: boolean = false; size: string = "default"; maxWidth: string = "xl"; showBreadcrumbs: boolean = false; breadcrumbs: unknown[] = []; breadcrumbParent: string = ""; breadcrumbParentHref: string = ""; breadcrumbCurrent: string = ""; primaryLabel: string = ""; primaryHref: string = ""; primaryIcon: string = ""; secondaryLabel: string = ""; secondaryHref: string = ""; secondaryIcon: string = ""; color: string = "primary"; variant: string = "default"; borderBottom: boolean = true; class: string = "" +- Outputs/events: none +- Slots: meta, actions, default + +### `Pagination` + +- Category: navigation; mount: `Pagination`; source: `components/Pagination.wrn`. +- Purpose: Theme-aware, responsive pagination component. +- Props: color: string = "primary"; size: string = "default"; page: number = 1; pageSize: number = 10; total: number = 0; variant: string = "compact"; siblingCount: number = 1; showSummary: boolean = true; label: string = "Pagination"; previousLabel: string = "Previous"; nextLabel: string = "Next"; hrefTemplate: string = ""; class: string = "" +- Outputs/events: change({ page: number; pageSize: number }); previous({ page: number }); next({ page: number }) +- Slots: default + +### `PinInput` + +- Category: advanced-forms; mount: `PinInput`; source: `components/PinInput.wrn`. +- Purpose: Secure multi-cell PIN and verification-code input with regex and paste support. +- Props: size: string = "default"; color: string = "primary"; label: string = "Verification code"; name: string = "pin"; value: string = ""; length: number = 4; pattern: string = "[0-9]"; type: string = "text"; inputMode: string = "numeric"; placeholder: string = "○"; autocomplete: string = "one-time-code"; masked: boolean = false; disabled: boolean = false; readonly: boolean = false; required: boolean = false; autoFocus: boolean = false; autoSubmit: boolean = false; allowPaste: boolean = true; clearable: boolean = true; clearLabel: string = "Clear code"; separator: string = ""; groupSize: number = 0; helpText: string = ""; invalid: boolean = false; validationMessage: string = ""; class: string = "" +- Outputs/events: input({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); complete({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); paste({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]); clear({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); error({ error: Error | string; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | Error | string) +- Slots: none + +### `Popover` + +- Category: overlays; mount: `Popover`; source: `components/Popover.wrn`. +- Purpose: Display anchored supporting content with configurable trigger, placement, responsive sizing, and open or close events. +- Props: open: boolean = false; defaultOpen: boolean = false; triggerLabel: string = "Open popover"; triggerIcon: string = ""; title: string = ""; description: string = ""; icon: string = ""; placement: string = "bottom-start"; width: string = "md"; size: string = "default"; color: string = "primary"; variant: string = "raised"; showArrow: boolean = true; showClose: boolean = false; closeLabel: string = "Close popover"; closeOnOutside: boolean = true; closeOnEscape: boolean = true; actionLabel: string = ""; actionHref: string = ""; actionIcon: string = ""; closeOnAction: boolean = true; disabled: boolean = false; class: string = "" +- Outputs/events: toggle({ open: boolean; sourceEvent: Event; reason?: object }); open({ sourceEvent: Event }); close({ reason: string; sourceEvent: Event }); action({ href: string; sourceEvent: Event }) +- Slots: trigger, header, default, footer + +### `PortalDashboard` + +- Category: core; mount: `PortalDashboard`; source: `components/PortalDashboard.wrn`. +- Purpose: Reusable portal dashboard component. +- Props: size: string = "default"; color: string = "primary"; eyebrow: string = "Overview"; eyebrowKey: string = ""; title: string = "Dashboard"; titleKey: string = ""; description: string = ""; descriptionKey: string = ""; userName: string = ""; metrics: unknown[] = []; actions: unknown[] = []; updates: unknown[] = []; tasks: unknown[] = []; class: string = "" +- Outputs/events: action({ item: string | number | boolean | null | object; value: string | number | boolean; index: number }); navigate({ item: string | number | boolean | null | object; value: string | number | boolean; index: number }) +- Slots: hero-action + +### `PreferenceSwitcher` + +- Category: core; mount: `PreferenceSwitcher`; source: `components/PreferenceSwitcher.wrn`. +- Purpose: Reusable preference switcher component. +- Props: size: string = "default"; color: string = "primary"; themeLabel: string = "Theme"; colorLabel: string = "Accent color"; languageLabel: string = "Language"; languages: string = [; colors: string = [; compact: boolean = true; class: string = "" +- Outputs/events: theme({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]); color({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]); language({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]) +- Slots: none + +### `Progress` + +- Category: base; mount: `Progress`; source: `components/progress.wrn`. +- Purpose: Theme-aware, responsive progress component. +- Props: size: string = "default"; color: string = "primary"; label: string = "Progress"; value: number = 50; max: number = 100; showValue: boolean = true; class: string = "" +- Outputs/events: none +- Slots: none + +### `PublicPageShell` + +- Category: layout; mount: `PublicPageShell`; source: `components/PublicPageShell.wrn`. +- Purpose: Provide the outer responsive structure, width, background, slots, overflow, and minimum-height behavior for public pages. +- Props: maxWidth: string = "full"; fullWidth: boolean = true; headerOffset: string = "none"; background: string = "default"; overflow: string = "clip"; minHeight: string = "screen"; size: string = "default"; color: string = "primary"; variant: string = "default"; class: string = "" +- Outputs/events: none +- Slots: before, default, after + +### `Radio` + +- Category: forms; mount: `Radio`; source: `components/radio.wrn`. +- Purpose: Theme-aware, responsive radio component. +- Props: size: string = "default"; color: string = "primary"; id: string = ""; name: string = ""; label: string = "Radio"; hiddenLabel: boolean = false; placeholder: string = ""; variant: string = "normal"; icon: string = ""; iconPosition: string = "start"; value: string = "on"; options: unknown[] = []; checked: boolean = false; orientation: string = "vertical"; card: boolean = false; rightAligned: boolean = false; list: boolean = false; helperText: string = ""; cornerHint: string = ""; error: string = ""; inline: boolean = false; readonly: boolean = false; disabled: boolean = false; required: boolean = false; class: string = "" +- Outputs/events: input({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); invalid({ message?: string; value: string | number | boolean | null | object; sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: none + +### `RangeSlider` + +- Category: forms; mount: `RangeSlider`; source: `components/RangeSlider.wrn`. +- Purpose: Theme-aware, responsive range slider component. +- Props: size: string = "default"; color: string = "primary"; id: string = ""; name: string = ""; label: string = "Range"; hiddenLabel: boolean = false; placeholder: string = ""; variant: string = "normal"; icon: string = ""; iconPosition: string = "start"; value: number = 50; min: number = 0; max: number = 100; step: number = 1; showValue: boolean = true; showBounds: boolean = true; showSteps: boolean = false; marks: unknown[] = []; helperText: string = ""; cornerHint: string = ""; error: string = ""; inline: boolean = false; readonly: boolean = false; disabled: boolean = false; required: boolean = false; class: string = "" +- Outputs/events: input(({ value: number; name: string; sourceEvent: Event }) | ({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[])); change(({ value: number; name: string; sourceEvent: Event }) | ({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[])); focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: none + +### `Rating` + +- Category: base; mount: `Rating`; source: `components/Rating.wrn`. +- Purpose: Theme-aware, responsive rating component. +- Props: size: string = "default"; color: string = "primary"; title: string = "Rating"; description: string = ""; items: unknown[] = []; variant: string = "default"; class: string = "" +- Outputs/events: input({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null) +- Slots: default + +### `Scrollspy` + +- Category: navigation; mount: `Scrollspy`; source: `components/Scrollspy.wrn`. +- Purpose: Theme-aware, responsive scrollspy component. +- Props: color: string = "primary"; size: string = "default"; items: unknown[] = []; active: string = ""; label: string = "On this page"; heading: string = ""; class: string = "" +- Outputs/events: change({ href: string; label: string }) +- Slots: default + +### `SearchBox` + +- Category: forms; mount: `SearchBox`; source: `components/SearchBox.wrn`. +- Purpose: Provide an accessible responsive search field with labels, validation states, sizes, and input or change events. +- Props: size: string = "default"; color: string = "primary"; label: string = "Search Box"; name: string = ""; value: string = ""; placeholder: string = ""; type: string = "search"; min: string = ""; max: string = ""; step: string = ""; disabled: boolean = false; required: boolean = false; class: string = "" +- Outputs/events: search({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); clear({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: none + +### `Section` + +- Category: layout; mount: `Section`; source: `components/Section.wrn`. +- Purpose: Create a responsive themed page section with controlled spacing, width, borders, and surface treatment. +- Props: id: string = ""; size: string = "default"; color: string = "primary"; variant: string = "default"; spacing: string = "lg"; maxWidth: string = "xl"; fullWidth: boolean = false; borderTop: boolean = false; borderBottom: boolean = false; class: string = "" +- Outputs/events: none +- Slots: default + +### `SectionHeader` + +- Category: layout; mount: `SectionHeader`; source: `components/SectionHeader.wrn`. +- Purpose: Introduce a section with an eyebrow, title, description, alignment, and responsive heading hierarchy. +- Props: id: string = ""; eyebrow: string = ""; title: string = ""; description: string = ""; align: string = "left"; size: string = "default"; color: string = "primary"; headingLevel: number = 2; maxWidth: string = "3xl"; class: string = "" +- Outputs/events: none +- Slots: icon, default, actions + +### `Select` + +- Category: forms; mount: `Select`; source: `components/select.wrn`. +- Purpose: Theme-aware, responsive select component. +- Props: size: string = "default"; color: string = "primary"; id: string = ""; name: string = ""; label: string = "Select"; hiddenLabel: boolean = false; value: string = ""; values: unknown[] = []; options: unknown[] = []; placeholder: string = "Select an option"; variant: string = "normal"; icon: string = ""; iconPosition: string = "start"; helperText: string = ""; cornerHint: string = ""; error: string = ""; inline: boolean = false; multiple: boolean = false; readonly: boolean = false; disabled: boolean = false; required: boolean = false; class: string = "" +- Outputs/events: input({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); open({ name: string; sourceEvent: Event }); close({ name: string; sourceEvent: Event }); invalid({ name: string; message: string; sourceEvent: Event }) +- Slots: none + +### `Sidebar` + +- Category: navigation; mount: `Sidebar`; source: `components/Sidebar.wrn`. +- Purpose: Theme-aware, responsive sidebar component. +- Props: color: string = "primary"; size: string = "default"; label: string = "Sidebar"; items: unknown[] = []; active: string = ""; mobileLabel: string = "Open navigation"; drawerTitle: string = "Navigation"; class: string = "" +- Outputs/events: toggle({ open: boolean }); open({ sourceEvent: Event }); close({ source: string }); select({ item: object; value: string; level: number }) +- Slots: default, drawer + +### `Skeleton` + +- Category: base; mount: `Skeleton`; source: `components/skeleton.wrn`. +- Purpose: Theme-aware, responsive skeleton component. +- Props: color: string = "primary"; label: string = "Loading"; size: string = "md"; lines: number = 3; class: string = "" +- Outputs/events: none +- Slots: none + +### `Spinner` + +- Category: base; mount: `Spinner`; source: `components/spinner.wrn`. +- Purpose: Theme-aware, responsive spinner component. +- Props: color: string = "primary"; label: string = "Loading"; size: string = "md"; lines: number = 3; class: string = "" +- Outputs/events: none +- Slots: none + +### `SplitHero` + +- Category: marketing; mount: `SplitHero`; source: `components/SplitHero.wrn`. +- Purpose: Build a responsive two-column introduction balancing descriptive content with a visual, image, or structured data panel. +- Props: eyebrow: string = ""; eyebrowIcon: string = "icon-[lucide--sparkles]"; title: string = "A better digital experience"; highlight: string = ""; description: string = ""; primaryLabel: string = ""; primaryHref: string = ""; primaryIcon: string = ""; secondaryLabel: string = ""; secondaryHref: string = ""; secondaryIcon: string = ""; visualPosition: string = "right"; reverse: boolean = false; ratio: string = "balanced"; align: string = "left"; size: string = "default"; color: string = "primary"; variant: string = "default"; maxWidth: string = "xl"; fullBleed: boolean = true; backgroundImage: string = ""; visualImage: string = ""; visualAlt: string = ""; visualIcon: string = ""; visualEyebrow: string = ""; visualTitle: string = ""; visualDescription: string = ""; visualItems: unknown[] = []; visualStyle: string = "panel"; trustItems: unknown[] = []; class: string = "" +- Outputs/events: none +- Slots: default, actions, trust, visual + +### `StatsBar` + +- Category: data; mount: `StatsBar`; source: `components/StatsBar.wrn`. +- Purpose: Present a compact responsive strip of key facts, counts, performance indicators, or trust signals. +- Props: items: unknown[] = []; columns: number = 4; compact: boolean = true; dividers: boolean = true; icons: boolean = true; size: string = "default"; color: string = "primary"; variant: string = "raised"; maxWidth: string = "xl"; class: string = "" +- Outputs/events: none +- Slots: none + +### `Stepper` + +- Category: navigation; mount: `Stepper`; source: `components/Stepper.wrn`. +- Purpose: Theme-aware, responsive stepper component. +- Props: color: string = "primary"; size: string = "default"; steps: unknown[] = []; active: number = 0; orientation: string = "horizontal"; clickable: boolean = false; label: string = "Progress"; showPanel: boolean = false; controls: boolean = false; allowSkip: boolean = false; nextDisabled: boolean = false; backLabel: string = "Back"; nextLabel: string = "Next"; skipLabel: string = "Skip"; finishLabel: string = "Finish"; class: string = "" +- Outputs/events: change({ index: number; step: object }); back({ index: number; step: object }); next({ index: number; step: object }); skip({ index: number; step: object }); finish({ index: number; step: object }) +- Slots: step-{index}, panel-{index}, default + +### `StrongPassword` + +- Category: advanced-forms; mount: `StrongPassword`; source: `components/StrongPassword.wrn`. +- Purpose: Theme-aware, responsive strong password component. +- Props: size: string = "default"; color: string = "primary"; label: string = "Password"; name: string = "password"; value: string = ""; placeholder: string = "Create a strong password"; autocomplete: string = "new-password"; minLength: number = 8; specialCharactersSet: string = "!@#$%^&*()_+-=[]{}|;:,.<>?"; requireLowercase: boolean = true; requireUppercase: boolean = true; requireNumber: boolean = true; requireSpecialCharacter: boolean = true; showRequirements: boolean = true; presentation: string = "inline"; hintText: string = "Use a unique password you do not use elsewhere."; emptyLabel: string = "Enter a password"; weakLabel: string = "Weak"; fairLabel: string = "Fair"; goodLabel: string = "Good"; strongLabel: string = "Strong"; disabled: boolean = false; readonly: boolean = false; required: boolean = false; invalid: boolean = false; validationMessage: string = ""; class: string = "" +- Outputs/events: input({ value: string; score: number; maximumScore: number; percent: number; level: string }); change({ value: string; score: number; maximumScore: number; percent: number; level: string }); strength({ value: string; score: number; maximumScore: number; percent: number; level: string }) +- Slots: none + +### `StyledIcon` + +- Category: base; mount: `StyledIcon`; source: `components/StyledIcon.wrn`. +- Purpose: Theme-aware, responsive styled icon component. +- Props: size: string = "default"; color: string = "primary"; title: string = "Styled Icon"; description: string = ""; items: unknown[] = []; variant: string = "default"; class: string = "" +- Outputs/events: none +- Slots: default + +### `Switch` + +- Category: forms; mount: `Switch`; source: `components/switch.wrn`. +- Purpose: Theme-aware, responsive switch component. +- Props: size: string = "default"; color: string = "primary"; id: string = ""; name: string = ""; label: string = "Switch"; hiddenLabel: boolean = false; placeholder: string = ""; variant: string = "normal"; icon: string = ""; iconPosition: string = "start"; value: string = "on"; checked: boolean = false; helperText: string = ""; cornerHint: string = ""; error: string = ""; inline: boolean = false; readonly: boolean = false; disabled: boolean = false; required: boolean = false; class: string = "" +- Outputs/events: input({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: none + +### `Tabs` + +- Category: navigation; mount: `Tabs`; source: `components/Tabs.wrn`. +- Purpose: Switch between related responsive content panels with horizontal or vertical orientation and selection events. +- Props: color: string = "primary"; size: string = "default"; items: unknown[] = []; active: string = ""; orientation: string = "horizontal"; mode: string = "client"; param: string = "tab"; label: string = "Tabs"; class: string = "" +- Outputs/events: change({ value: string; item: object; index: number }); select({ value: string; item: object; index: number }) +- Slots: panel-{valueOf(item, index)}, default + +### `TextLink` + +- Category: marketing; mount: `TextLink`; source: `components/TextLink.wrn`. +- Purpose: Render an accessible text action with optional icon, arrow, underline, external state, and semantic styling. +- Props: label: string = "Learn more"; href: string = "#"; target: string = ""; rel: string = ""; external: boolean = false; icon: string = ""; iconPosition: string = "start"; showArrow: boolean = true; underline: boolean = false; size: string = "default"; color: string = "primary"; variant: string = "default"; disabled: boolean = false; class: string = "" +- Outputs/events: click({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: none + +### `Textarea` + +- Category: forms; mount: `Textarea`; source: `components/textarea.wrn`. +- Purpose: Theme-aware, responsive textarea component. +- Props: size: string = "default"; color: string = "primary"; id: string = ""; name: string = ""; label: string = "Textarea"; hiddenLabel: boolean = false; placeholder: string = ""; value: string = ""; variant: string = "normal"; icon: string = ""; iconPosition: string = "start"; helperText: string = ""; cornerHint: string = ""; error: string = ""; inline: boolean = false; rows: number = 5; resize: string = "vertical"; readonly: boolean = false; disabled: boolean = false; required: boolean = false; minlength: string = ""; maxlength: string = ""; class: string = "" +- Outputs/events: input({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); invalid({ value: string | number | boolean | null | object; name: string; message: string; sourceEvent: Event }) +- Slots: none + +### `TimePicker` + +- Category: forms; mount: `TimePicker`; source: `components/TimePicker.wrn`. +- Purpose: Theme-aware, responsive time picker component. +- Props: size: string = "default"; color: string = "primary"; id: string = ""; name: string = ""; label: string = "Time"; hiddenLabel: boolean = false; value: string = ""; placeholder: string = ""; variant: string = "normal"; icon: string = "icon-[lucide--clock-3]"; iconPosition: string = "end"; helperText: string = ""; cornerHint: string = ""; error: string = ""; inline: boolean = false; min: string = ""; max: string = ""; step: string = ""; format: string = "24"; minuteStep: number = 5; hours: string = ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"]; minutes: string = ["00", "05", "10", "15", "20", "25", "30", "35", "40", "45", "50", "55"]; readonly: boolean = false; disabled: boolean = false; required: boolean = false; class: string = "" +- Outputs/events: input({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]); change({ sourceEvent?: Event; value: string | number | boolean | null | object; [key: string]: string | number | boolean | null | object } | string | number | boolean | null | object[]); focus({ value: string; name: string; sourceEvent: Event }); blur({ value: string; name: string; sourceEvent: Event }); open({ value: string; name: string; sourceEvent: Event }); close({ value: string; name: string; sourceEvent: Event }); invalid({ name: string; message: string; sourceEvent: Event }) +- Slots: none + +### `Timeline` + +- Category: base; mount: `Timeline`; source: `components/Timeline.wrn`. +- Purpose: Present responsive chronological activity, milestones, or workflow status with rich item metadata. +- Props: size: string = "default"; color: string = "primary"; title: string = "Timeline"; description: string = ""; items: unknown[] = []; variant: string = "default"; class: string = "" +- Outputs/events: select({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: default + +### `Toaster` + +- Category: core; mount: `Toaster`; source: `components/Toaster.wrn`. +- Purpose: Reusable toaster component. +- Props: color: string = "info"; size: string = "default"; position: string = "bottom-right"; duration: number = 4500; max: number = 4; pauseOnHover: boolean = true; showIcon: boolean = true; successIcon: string = ""; dangerIcon: string = ""; warningIcon: string = ""; infoIcon: string = ""; closable: boolean = true; showProgress: boolean = true; closeLabel: string = "Dismiss notification"; class: string = "" +- Outputs/events: show({ id: number; message: string; tone: string }); dismiss({ id: number; reason: string }); action({ id: number; sourceEvent: Event }) +- Slots: none + +### `ToggleCount` + +- Category: advanced-forms; mount: `ToggleCount`; source: `components/ToggleCount.wrn`. +- Purpose: Theme-aware, responsive toggle count component. +- Props: size: string = "default"; color: string = "primary"; variant: string = "segmented"; class: string = ""; name: string = "billing-cycle"; value: string = "monthly"; firstValue: string = "monthly"; firstLabel: string = "Monthly"; secondValue: string = "annual"; secondLabel: string = "Annual"; ariaLabel: string = "Billing frequency"; items: unknown[] = []; currency: string = "$"; suffix: string = ""; firstValueKey: string = "monthly"; secondValueKey: string = "annual"; emptyValue: string = "—"; align: string = "end"; fullWidth: boolean = true; disabled: boolean = false; animate: boolean = true; animationDuration: number = 450; animationSteps: number = 18 +- Outputs/events: change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); toggle({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: none + +### `TogglePassword` + +- Category: advanced-forms; mount: `TogglePassword`; source: `components/TogglePassword.wrn`. +- Purpose: Accessible password field with optional show and hide controls. +- Props: size: string = "default"; color: string = "primary"; label: string = "Password"; name: string = "password"; value: string = ""; placeholder: string = "Enter your password"; autocomplete: string = "current-password"; minlength: string = ""; maxlength: string = ""; pattern: string = "(?=._[a-z])(?=._[A-Z])(?=._[0-9])(?=._[^A-Za-z0-9]).{8,}"; fields: unknown[] = []; visible: boolean = false; toggleable: boolean = true; toggleMode: string = "button"; checkboxLabel: string = "Show password"; showLabel: string = "Show password"; hideLabel: string = "Hide password"; disabled: boolean = false; readonly: boolean = false; required: boolean = false; invalid: boolean = false; helpText: string = ""; validationMessage: string = ""; cornerHint: string = ""; cornerHref: string = ""; class: string = "" +- Outputs/events: input({ name?: string; value: string | number | boolean | null | object; visible: boolean }); change({ name?: string; value: string | number | boolean | null | object; visible: boolean }); toggle({ visible: boolean }) +- Slots: none + +### `Tooltip` + +- Category: overlays; mount: `Tooltip`; source: `components/tooltip.wrn`. +- Purpose: Show concise accessible contextual help on hover, focus, click, or controlled open state. +- Props: id: string = ""; open: boolean = false; defaultOpen: boolean = false; title: string = ""; description: string = ""; content: string = "Tooltip"; trigger: string = "hover"; placement: string = "top"; size: string = "default"; color: string = "primary"; variant: string = "dark"; maxWidth: string = "18rem"; offset: number = 10; showArrow: boolean = true; interactive: boolean = false; disabled: boolean = false; class: string = "" +- Outputs/events: toggle({ open: boolean; reason: string; sourceEvent: Event }); open({ reason: string; sourceEvent: Event }); close({ reason: string; sourceEvent: Event }) +- Slots: trigger, default + +### `TreeView` + +- Category: base; mount: `TreeView`; source: `components/TreeView.wrn`. +- Purpose: Theme-aware, responsive tree view component. +- Props: title: string = "Tree View"; description: string = ""; items: unknown[] = []; valueKey: string = "value"; labelKey: string = "label"; defaultExpanded: unknown[] = []; selected: string = ""; size: string = "default"; color: string = "primary"; class: string = "" +- Outputs/events: select({ item: object; value: string; sourceEvent?: Event }); toggle({ item: object; value: string; expanded: boolean; sourceEvent?: Event }); expand({ item: object; value: string; sourceEvent?: Event }); collapse({ item: object; value: string; sourceEvent?: Event }) +- Slots: default + +### `Typography` + +- Category: layout; mount: `Typography`; source: `components/Typography.wrn`. +- Purpose: Apply consistent readable responsive typography, widths, columns, spacing, and editorial hierarchy. +- Props: size: string = "default"; color: string = "primary"; columns: number = 2; gap: string = "md"; maxWidth: string = "xl"; class: string = "" +- Outputs/events: none +- Slots: default + +### `WysiwygEditor` + +- Category: integrations; mount: `WysiwygEditor`; source: `components/WysiwygEditor.wrn`. +- Purpose: Theme-aware, responsive wysiwyg editor component. +- Props: size: string = "default"; color: string = "primary"; title: string = "Wysiwyg Editor"; description: string = ""; items: unknown[] = []; variant: string = "default"; class: string = "" +- Outputs/events: input({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); change({ value?: string | number | boolean | null; values?: Array; sourceEvent?: Event; [key: string]: string | number | boolean | null | object } | string | number | boolean | null); focus({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }); blur({ sourceEvent?: Event; [key: string]: string | number | boolean | null | object }) +- Slots: default + +## Appendix D — all other package-owned `.wrn` blocks + +### `@wrnexus/auth` (19) + +- `packages/auth/components/AccountStatus.wrn` +- `packages/auth/components/AuthProviderButtons.wrn` +- `packages/auth/components/AuthSecurityNotice.wrn` +- `packages/auth/components/AuthShell.wrn` +- `packages/auth/components/AuthenticatorSetup.wrn` +- `packages/auth/components/DeviceSessions.wrn` +- `packages/auth/components/ForgotPassword.wrn` +- `packages/auth/components/ImpersonationBanner.wrn` +- `packages/auth/components/InvitationAccept.wrn` +- `packages/auth/components/MagicLinkSignIn.wrn` +- `packages/auth/components/OtpSignIn.wrn` +- `packages/auth/components/PasskeyButton.wrn` +- `packages/auth/components/RecoveryCodes.wrn` +- `packages/auth/components/ResetPassword.wrn` +- `packages/auth/components/SignIn.wrn` +- `packages/auth/components/SignUp.wrn` +- `packages/auth/components/TwoFactorChallenge.wrn` +- `packages/auth/components/VerifyEmail.wrn` +- `packages/auth/components/VerifyPhone.wrn` + +### `@wrnexus/captcha` (3) + +- `packages/captcha/components/Captcha.wrn` +- `packages/captcha/components/CaptchaField.wrn` +- `packages/captcha/components/CaptchaStatus.wrn` + +### `@wrnexus/i18n` (2) + +- `packages/i18n/components/LanguageSwitcher.wrn` +- `packages/i18n/components/LocaleStatus.wrn` + +### `@wrnexus/image` (3) + +- `packages/image/components/ImageCard.wrn` +- `packages/image/components/OptimizedImage.wrn` +- `packages/image/components/Picture.wrn` + +### `@wrnexus/language-server` (1) + +- `packages/language-server/test/fixtures/html-editing-check.wrn` + +### `@wrnexus/realtime` (7) + +- `packages/realtime/components/MessageBubble.wrn` +- `packages/realtime/components/MessageComposer.wrn` +- `packages/realtime/components/PresenceList.wrn` +- `packages/realtime/components/RealtimeRoom.wrn` +- `packages/realtime/components/RoomMeta.wrn` +- `packages/realtime/components/RoomStatus.wrn` +- `packages/realtime/components/TypingIndicator.wrn` + +### `@wrnexus/uploader` (2) + +- `packages/uploader/components/UploadDropzone.wrn` +- `packages/uploader/components/UploadStatus.wrn` + +### `@wrnexus/validation` (2) + +- `packages/validation/components/FieldError.wrn` +- `packages/validation/components/ValidationSummary.wrn` + +## Appendix E — authoritative files + +- Language parser/AST: `packages/syntax/src/parser.ts`, `v060.ts`, `api-sections.ts`, `spec.ts`. +- Compiler/runtime: `packages/compiler/src`, `packages/csr/src`, `packages/ssr/src`, `packages/dev-server/src`. +- Migration registry: `packages/cli/src/update.ts`. +- Public exports: `docs/public-api-0.8.json` (checked by `scripts/check-public-api.mjs`). +- UI blocks: `packages/ui/component-reference.json` and `packages/ui/COMPONENTS.md`. +- Latest feature designs: `docs/superpowers/specs/2026-08-19-typed-api-block-design.md`, `2026-08-18-react-islands-design.md`, and `2026-08-18-wrn-html-editing-design.md`. + +--- + +This report is reproducible: run `node scripts/generate-complete-framework-report.mjs` after implementation or generated-reference changes. diff --git a/scripts/generate-complete-framework-report.mjs b/scripts/generate-complete-framework-report.mjs new file mode 100644 index 00000000..e998ae3f --- /dev/null +++ b/scripts/generate-complete-framework-report.mjs @@ -0,0 +1,302 @@ +import { readFileSync, readdirSync, statSync, writeFileSync } from "node:fs"; +import { join, relative } from "node:path"; +import console from "node:console"; +import process from "node:process"; +import { format } from "prettier"; + +const root = process.cwd(); +const json = (path) => JSON.parse(readFileSync(join(root, path), "utf8")); +const rootPackage = json("package.json"); +const publicApi = json("docs/public-api-0.8.json"); +const uiReference = json("packages/ui/component-reference.json"); + +function walk(dir, extension, out = []) { + for (const entry of readdirSync(dir)) { + const path = join(dir, entry); + const info = statSync(path); + if (info.isDirectory() && !["node_modules", "dist", ".wrnexus"].includes(entry)) + walk(path, extension, out); + else if (path.endsWith(extension)) out.push(path); + } + return out; +} + +const packageRows = readdirSync(join(root, "packages"), { withFileTypes: true }) + .filter((entry) => entry.isDirectory()) + .map((entry) => { + const manifest = json(`packages/${entry.name}/package.json`); + return { + name: manifest.name, + version: manifest.version, + description: manifest.description ?? "—", + }; + }) + .sort((a, b) => a.name.localeCompare(b.name)); + +const wrnFiles = walk(join(root, "packages"), ".wrn").sort(); +const packageBlocks = new Map(); +for (const file of wrnFiles) { + const packageName = relative(join(root, "packages"), file).split(/[\\/]/)[0]; + const list = packageBlocks.get(packageName) ?? []; + list.push(relative(root, file).replaceAll("\\", "/")); + packageBlocks.set(packageName, list); +} + +const apiPackages = Object.entries(publicApi.packages); +const apiSymbolCount = apiPackages.reduce( + (total, [, entries]) => + total + Object.values(entries).reduce((sum, symbols) => sum + symbols.length, 0), + 0, +); + +const lines = []; +const add = (...value) => lines.push(...value); + +add( + "# WRNexusJS complete framework and `.wrn` report", + "", + `Generated for workspace version **${rootPackage.version}** from the checked-out source and generated references.`, + "", + "> Scope and source of truth: this report describes the checked-out implementation, not only the prose docs. The parser in `packages/syntax`, compiler/runtime code, package manifests, `docs/public-api-0.8.json`, and `packages/ui/component-reference.json` take precedence when older documents disagree.", + "", + "## 1. Executive summary", + "", + `- Workspace framework version: **${rootPackage.version}**. The 48 independently published packages have their own patch versions; see Appendix A.`, + "- Architecture: compiler-driven, SSR-first, Bun-native/full-stack, with Node-friendly selected tooling.", + "- Static routes retain the zero-framework-JavaScript goal; hydration is selective and islands are loaded only where declared.", + "- Current headline features include typed callable API blocks, reactive `if`/`each` control blocks, runtime-scoped state and functions, typed outputs, stores, React islands, HTML-aware editor tooling, package/plugin discovery, generated contracts, security gates, and multi-app RPC.", + `- Audited public API baseline: **${apiPackages.length} packages / ${apiSymbolCount} exported symbols** across root and subpath exports.`, + `- Audited packaged \`.wrn\` sources: **${wrnFiles.length}**; generated UI reference: **${uiReference.components.length} components**.`, + "", + "## 2. What a `.wrn` file is", + "", + "A `.wrn` file is a single compiler-owned source unit combining imports, a root declaration, typed data/state, runtime behavior, HTML view markup, styles, metadata, API handlers/bindings, and realtime handlers. It is parsed into the canonical AST owned by `@wrnexus/syntax`; `@wrnexus/compiler` turns that AST into SSR, browser, route, style, and metadata artifacts.", + "", + "Valid roots:", + "", + "| Root | Purpose |", + "| --- | --- |", + "| `page Name {}` | Routed page. |", + "| `component Name {}` | Reusable server-rendered component. |", + "| `layout Name {}` | Reusable page wrapper. |", + "| `global store Name {}` | Application-wide store. |", + "| `page store Name {}` | Page-lifetime store. |", + "", + "A file may start with static TypeScript imports. Component and layout symbols can be imported explicitly; compatibility discovery remains configurable for upgraded applications.", + "", + "## 3. Complete `.wrn` block and declaration catalog", + "", + "| Declaration/block | Shape | Meaning and current behavior |", + "| --- | --- | --- |", + "| `layout = LayoutSymbol` | root member | Preferred imported layout reference. String layout names remain a compatibility path. |", + '| `runtime = "…"` | root member | Targets: `server`, `client`, `universal`, `edge`, `worker`, `service-worker`. |', + '| `render = "…"` | root member | Modes: `static`, `server`, `hybrid`, `client`, `partial-static`. |', + '| `hydrate = "…"` | root member | `load`, `idle`, `visible`, `interaction`, `none`, or `media:`; legacy `never` normalizes to `none`. |', + '| `client = "…"` | root member | Legacy alias for hydration configuration; `client {}` remains a different runtime-mode block. |', + "| `types {}` | raw TypeScript | Local type declarations emitted for checking. |", + "| `props {}` | typed declarations | Required without default; optional via `?`; defaults supported; legacy `@event name = function` is parsed for compatibility. |", + "| `outputs {}` | typed declarations | Canonical child-to-parent callable output contract, zero or one typed payload. |", + "| `state name = expr` / `state {}` | reactive data | Shared state; type annotation optional, initializer required. Arrays, objects, and multiline expressions are supported. |", + "| `server state {}` / `client state {}` | runtime-scoped data | State visible only in the declared runtime boundary. |", + "| `computed name = expr` / `computed {}` | derived data | Dependency-tracked cached values. |", + "| `effect {}` | reactive side effect | Runs after batched updates when referenced reactive values change. |", + "| `load server {}` / `load client {}` | loader | Runtime-specific loading; named/dependent/deferred forms are represented in the AST. |", + "| `action name(args) {}` | action | Named action, optionally schema-backed, exported for adapters. |", + "| `view {}` | HTML/template | HTML/component tree with expressions, events, directives, and reactive control blocks. |", + "| `style {}` | scoped CSS | Multiple blocks allowed; promoted into the document head with CSP/HMR/navigation support. |", + "| `seo {}` | metadata | Key/value SEO metadata. |", + "| `security {}` | policy metadata | Auth, CSRF, roles, rate-limit and organization-specific enforcement metadata. |", + "| `navigation {}` | navigation metadata | Page navigation policy/configuration consumed by runtime tooling. |", + "| `cache {}` | cache metadata | Declarative framework cache policy. |", + "| `functions {}` | shared helpers | Legacy/general shared helper body; runtime-specific function grammar is preferred where applicable. |", + "| `server { functions {} }` / `client { functions {} }` | mode helper block | Raw helpers scoped to SSR or browser execution. |", + "| `[async] server function name(args) {}` | callable function | Explicit server RPC boundary. |", + "| `[async] client function name(args) {}` | browser function | Explicit client callable function. |", + "| `[async] shared function name(args) {}` | universal helper | Explicit shared function. |", + "| `ssr { api … }` | render-time own-route data | Executes during render. Legacy bare response body is supported; sectioned `response`/`error` is supported; request parameters are intentionally forbidden. |", + "| `client { api … }` | callable own-route data | Sectioned form creates `api.name(input)` in browser scope; GET uses query parameters, other methods use JSON and CSRF. |", + "| `api METHOD /path {}` | route handler | Defines an application API endpoint/handler. Distinct from named data API bindings inside `ssr`/`client`. |", + "| `lifecycle { mount/update/unmount {} }` | component lifecycle | Hydrated lifecycle hooks. |", + "| `watch stateName {}` | watcher | Runs for changes to the named state. |", + "| `realtime name { on event(args) {} }` | websocket behavior | Declares named realtime handlers. |", + "| `persist {}` | store persistence | Storage (`memory`, `session`, `local`), included keys, version, migrations, and validation. |", + "| `lifecycle { serverInit/clientInit/hydrate/dispose {} }` | store lifecycle | Store-specific lifecycle form. |", + "", + "### View/template features", + "", + "- Standard HTML and custom/component tags; HTML void elements follow the platform list.", + "- Escaped `{expression}` interpolation. Raw HTML is an explicit security boundary.", + "- Browser event attributes: `@click`, `@window:scroll`, `@document:click`, and other event names.", + "- Conditional classes through `class:name='expression'`; visibility through `data-show`.", + '- Legacy loop attribute: `data-for="item, index in items key item.id"`, with optional `data-key`.', + "- Canonical control blocks: `{#if}`, `{:else if}`, `{:else}`, `{/if}` and `{#each list as item, index key expr}`, `{:empty}`, `{/each}`. Initial output is SSR and remains reactive after hydration.", + "- JSX-style expression props (`items={items}`, object/array expressions) are current; quoted expressions remain compatible. Literal HTML attributes remain quoted.", + "- React/TSX islands use imported `.tsx` components and `client:only`, `client:load`, `client:visible`, or `client:idle`. They are client-only in v1; island props must be JSON-serializable.", + "", + "### Typed callable API block (latest form)", + "", + "```wrn", + "client {", + " api searchUsers POST /api/users {", + " request { body { name?: string age?: number } }", + " response { return data.users }", + " error { return [] }", + " }", + "}", + "```", + "", + "Call it with `await api.searchUsers({ name })`. GET uses `request { parameters {} }`; non-GET uses `body {}`. Fields are type-only declarations checked against generated route contracts in `app/types/wrnexus.generated.api-checks.ts`. Success binds parsed JSON as `data`. `error {}` converts failure to its returned value; without it, non-2xx, network, and parse failures reject. Targets are restricted to the current app’s `/api/*` routes. External APIs, custom headers, parameterized SSR calls, caching, and deduplication are deferred.", + "", + "Legacy API binding remains valid: `ssr { api users GET /api/users { return users } }`. Its bare body receives payload fields through the legacy dynamic scope. The sectioned form deliberately uses `data` so TypeScript can check it.", + "", + "## 4. Runtime, rendering, and data flow", + "", + "1. `@wrnexus/syntax` tokenizes/parses and emits stable diagnostics and AST nodes.", + "2. The compiler resolves imports/components/islands and generates SSR HTML functions, client modules, route/API exports, styles, metadata, and contracts.", + "3. Static pages ship no framework JS. Interactive pages receive only the required CSR runtime; island routes lazily receive React/island assets.", + "4. State changes batch, invalidate computed values, run effects/watchers, update expressions/classes/visibility, and rerender `if`/`each` regions.", + "5. Server functions use the RPC boundary; typed API blocks call same-app API routes; realtime blocks produce websocket handlers; stores bridge SSR and client state.", + "6. Generated types validate component props, outputs, functions, routes, and typed API-block request contracts during `tsc` and release checks.", + "", + "## 5. Framework feature inventory", + "", + "- Routing and rendering: filesystem pages/layouts, static/request/hybrid/client/partial-static rendering, route analysis, advanced routing, CSR navigation, layouts, streaming/SSR packages.", + "- Reactivity: state, computed values, effects, watchers, reactive attributes/events, SSR-to-client control blocks, loaders/actions, explicit hydration.", + "- Components/UI: application components, package-owned blocks, generated prop/output references, theming/tokens, 102 audited first-party UI components, app overrides/ejection.", + "- Data/backend: database drivers and migrations, repositories, cache, queue, pub/sub, realtime, GraphQL, route APIs, server functions, workspace RPC.", + "- Identity/security: auth, authorization, OAuth, JWT/JWKS, MFA/passkeys/recovery, CAPTCHA, encryption, SSRF defenses, CSP/CSRF, request limits, audit/security gates.", + "- Product capabilities: AI/RAG/provider adapters, content, i18n, image optimization, uploads, validation, PWA, native/mobile, analytics/tracking, observability.", + "- Developer experience: CLI create/dev/build/update/doctor/inspect/generate/eject/db/workspace operations, HMR, dev toolbar, language server, VS Code completion/HTML editing/formatting/diagnostics, playground, MCP, tests/benchmarks/release validation.", + "- Deployment: production builds, Docker and platform examples, migrations, package staging/integrity checks, SBOM and security/performance reports.", + "", + "## 6. Legacy-to-current migration map", + "", + "| Legacy/earlier approach | Current approach | Compatibility/status |", + "| --- | --- | --- |", + "| Compiler-owned/internal parsing imports | Canonical `@wrnexus/syntax` lexer/parser/AST/diagnostics | Compiler re-exports remain for compatibility; direct internals are deprecated. |", + "| Implicit component discovery everywhere | Explicit imports and generated contracts | Upgraded apps can retain `legacyComponentDiscovery`; unresolved symbols are reported rather than guessed. |", + '| `layout = "PublicLayout"` | Import layout and use `layout = PublicLayout` | String layouts remain behind compatibility configuration. |', + "| `@event changed = function` in props | `outputs { changed(payload: Type) }` | v0.6 migration converts declarations; ambiguous payloads become `unknown`. |", + '| `$emit("changed", value)` and `event.detail` | `output.changed(value)` and direct `payload` | Static cases auto-migrated; dynamic emit names require review. |', + "| Unclassified functions | `server function`, `client function`, or `shared function` | v0.6 classifies unambiguous cases; compatibility default can preserve ambiguous behavior. |", + "| Manually copied CAPTCHA JS/script tags | Package-discovered client runtime/assets | v0.4 removes tags and archives old assets under `.wrnexus/legacy-assets/0.4.0`. |", + "| Package components/routes/assets wired manually | Automatic package/plugin discovery and contribution registry | Current CLI/build/dev server inspect and consume contributions. |", + "| Only scalar/quoted dynamic props | Native arrays/objects and JSX-style unquoted expressions | Quoted expression attributes remain supported. |", + "| `data-for` and older each forms | `{#each …}{:empty}{/each}` | Legacy loop forms remain supported; canonical blocks offer keyed/empty/reactive behavior. |", + "| Static server-only `if`/`each` after hydration | Reactive client rerendering of control blocks | Current runtime updates branches/rows after state changes. |", + "| Bare `api` binding bodies and hand-written `fetch` for inputs | Sectioned typed callable client API blocks | Bare body stays supported; new form adds inputs, route-contract checking, CSRF, response/error transforms. |", + "| Generated API assertions in `.d.ts` | Assertions in real `wrnexus.generated.api-checks.ts` | Changed because `skipLibCheck` made `.d.ts` assertions inert. |", + "| Client functions accidentally retaining TypeScript | Compiler strips type syntax before browser-module emission | Fixed and regression-tested. |", + "| Markup merely highlighted as embedded HTML | Virtual HTML document plus HTML language service | Current editor adds tag/attribute completion, auto-close/rename, hover, Emmet, and folding; WRN formatter still owns formatting. |", + "| Framework-only component ecosystem | Optional React `.tsx` islands | React is isolated and lazy; zero-JS routes remain unchanged; island SSR/Fast Refresh are deferred. |", + "| Per-component/global style placement inconsistencies | `style {}` promoted to document head | Current pipeline supports CSP, HMR and CSR navigation. |", + "| Manually maintained API/component knowledge | Generated public API and component references plus validation gates | `check:public-api`, generated-type checks, UI visual contract and package audits detect drift. |", + "", + "Compatibility flags visible in generated/upgraded config include `legacyEmit`, `legacyEventProps`, `legacyComponentDiscovery`, `stringLayouts`, and `functions.legacyDefaultRuntime`. New projects default legacy flags off; migration-created configs may enable them to preserve behavior until source modernization is complete.", + "", + "## 7. Diagnostics, security, and correctness guarantees", + "", + "Stable diagnostics include parse/member/prop/state/hydration/runtime/accessibility codes and feature-specific diagnostics such as island prop or missing-React errors. Compiler, CLI doctor/build, type generation, and editor tooling share syntax ownership to reduce parser drift.", + "", + "Security properties include escaped output by default, CSP-aware styles/scripts, same-origin API restriction, CSRF on non-GET callable API requests, credential handling via same-origin cookies, safe serialization, SSRF policies, request limits, auth/authz metadata and middleware, secret/audit gates, and application-layer encryption where explicitly needed. Security metadata is declarative input; enforcement still belongs to installed middleware/plugins and route policy.", + "", + "## 8. Current limitations and deferred work", + "", + "- Typed API blocks do not target third-party URLs, accept custom author headers, parameterize SSR requests, or provide built-in request caching/deduplication.", + "- React islands are client-rendered in v1; island SSR/hydration and React Fast Refresh are deferred.", + "- Native compilation does not directly port data API blocks; native screens use generated backend helpers.", + "- HTML language features intentionally do not replace the WRN formatter.", + "- Generated type checks must stay fresh; `check:generated-types` is the enforcement gate.", + "", + "## 9. Documentation drift discovered by this audit", + "", + `- Root ` + + "`README.md`" + + ` says 0.8.0, while the workspace manifest is ${rootPackage.version}.`, + `- ` + + "`packages/ui/README.md`" + + ` says 85 components and ` + + "`docs/UI-COMPONENT-INVENTORY.md`" + + ` says 891; the current generated component reference contains ${uiReference.components.length}.`, + "- `docs/WRN-LANGUAGE-SPEC-1.0.md` calls itself the 0.3.x contract and predates several implemented roots/members (stores, rendering modes, outputs, runtime-scoped state/functions, React islands, sectioned callable API blocks). Use it as historical baseline, not a complete 0.8.8 reference.", + "- Package patch versions are intentionally ahead of the workspace umbrella version in many packages. Consumers should use the actual package manifest/version selected by the release process.", + "", + "## 10. Recommended release verification", + "", + "Run `bun run check:production` for the complete production gate. Its chain covers workspace repair, generated types, public API, UI visual contract, 0.8 validation, framework/ASVS security, editor bundle freshness, typecheck, lint, component imports, package tests, formatting, and examples. Additional focused commands include `bun run test:all`, `bun run audit:packages`, `bun run test:package-kits`, `bun run validate:staging`, `bun run sbom`, and `bun run benchmark:framework`.", + "", + "## Appendix A — package/version inventory", + "", + "| Package | Version | Purpose |", + "| --- | --- | --- |", +); +for (const item of packageRows) + add(`| \`${item.name}\` | ${item.version} | ${item.description.replaceAll("|", "\\|")} |`); + +add("", "## Appendix B — complete audited public export inventory", ""); +for (const [packageName, entries] of apiPackages) { + const count = Object.values(entries).reduce((sum, symbols) => sum + symbols.length, 0); + add(`### \`${packageName}\` (${count} symbols)`, ""); + for (const [subpath, symbols] of Object.entries(entries)) { + add(`- **${subpath}:** ${symbols.map((symbol) => `\`${symbol}\``).join(", ")}`); + } + add(""); +} + +add("## Appendix C — current UI component/block reference", ""); +for (const component of uiReference.components) { + const props = component.props.length + ? component.props + .map( + (prop) => + `${prop.name}: ${prop.type}${prop.required ? " (required)" : ` = ${prop.default}`}`, + ) + .join("; ") + : "none"; + const outputs = component.outputs?.length + ? component.outputs.map((output) => `${output.name}(${output.payloadType})`).join("; ") + : "none"; + const slots = component.slots?.length ? component.slots.join(", ") : "none"; + add( + `### \`${component.name}\``, + "", + `- Category: ${component.category}; mount: \`${component.mount}\`; source: \`${component.source}\`.`, + `- Purpose: ${component.purpose}`, + `- Props: ${props}`, + `- Outputs/events: ${outputs}`, + `- Slots: ${slots}`, + "", + ); +} + +add("## Appendix D — all other package-owned `.wrn` blocks", ""); +for (const [packageName, files] of [...packageBlocks.entries()].sort(([a], [b]) => + a.localeCompare(b), +)) { + if (packageName === "ui") continue; + add( + `### \`@wrnexus/${packageName}\` (${files.length})`, + "", + ...files.map((file) => `- \`${file}\``), + "", + ); +} + +add( + "## Appendix E — authoritative files", + "", + "- Language parser/AST: `packages/syntax/src/parser.ts`, `v060.ts`, `api-sections.ts`, `spec.ts`.", + "- Compiler/runtime: `packages/compiler/src`, `packages/csr/src`, `packages/ssr/src`, `packages/dev-server/src`.", + "- Migration registry: `packages/cli/src/update.ts`.", + "- Public exports: `docs/public-api-0.8.json` (checked by `scripts/check-public-api.mjs`).", + "- UI blocks: `packages/ui/component-reference.json` and `packages/ui/COMPONENTS.md`.", + "- Latest feature designs: `docs/superpowers/specs/2026-08-19-typed-api-block-design.md`, `2026-08-18-react-islands-design.md`, and `2026-08-18-wrn-html-editing-design.md`.", + "", + "---", + "", + "This report is reproducible: run `node scripts/generate-complete-framework-report.mjs` after implementation or generated-reference changes.", +); + +const report = await format(`${lines.join("\n")}\n`, { parser: "markdown" }); +writeFileSync(join(root, "docs", "WRNEXUS-COMPLETE-FEATURE-REPORT.md"), report, "utf8"); +console.log(`Wrote docs/WRNEXUS-COMPLETE-FEATURE-REPORT.md (${lines.length} lines).`);