From 9dfbbd63e45d5e7e6bfb06979b781327fa7b5a87 Mon Sep 17 00:00:00 2001 From: Jeff Repanich Date: Mon, 12 Oct 2026 22:23:44 -0400 Subject: [PATCH 1/3] chore: prepare website consumers for 0.5 --- package-lock.json | 626 +- package.json | 34 +- src/pages/docs/api-manifest.ts | 2123 +- src/pages/docs/api-snapshot.ts | 33504 ++++++++++++++-------- src/pages/docs/cli-snapshot.ts | 4 +- src/pages/docs/usage-guide.ts | 2 +- tests/accessibility-contract.test.tsx | 2 +- tests/docs-catalog.test.ts | 2 +- tests/generated-output-contract.test.ts | 2 +- tests/llm-docs.test.ts | 2 +- tests/package-snapshot-contract.test.ts | 31 +- tests/route-analytics.test.ts | 2 +- tests/static-output-contract.test.ts | 2 +- vite.config.ts | 2 +- 14 files changed, 23333 insertions(+), 13005 deletions(-) diff --git a/package-lock.json b/package-lock.json index eb82853..2707971 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,26 +9,26 @@ "version": "0.1.2", "license": "Apache-2.0", "dependencies": { - "@askrjs/askr": ">=0.4.3 <0.5.0", - "@askrjs/charts": ">=0.4.0 <0.5.0", - "@askrjs/fetch": ">=0.4.2 <0.5.0", - "@askrjs/i18n": ">=0.4.0 <0.5.0", - "@askrjs/logos": ">=0.4.0 <0.5.0", - "@askrjs/lucide": ">=0.4.0 <0.5.0", - "@askrjs/monaco": ">=0.4.0 <0.5.0", - "@askrjs/otel": ">=0.4.0 <0.5.0", - "@askrjs/themes": ">=0.4.2 <0.5.0", - "@askrjs/ui": ">=0.4.3 <0.5.0", + "@askrjs/askr": ">=0.5.0 <0.6.0", + "@askrjs/charts": ">=0.5.0 <0.6.0", + "@askrjs/fetch": ">=0.5.0 <0.6.0", + "@askrjs/i18n": ">=0.5.0 <0.6.0", + "@askrjs/logos": ">=0.5.0 <0.6.0", + "@askrjs/lucide": ">=0.5.0 <0.6.0", + "@askrjs/monaco": ">=0.5.0 <0.6.0", + "@askrjs/otel": ">=0.5.0 <0.6.0", + "@askrjs/themes": ">=0.5.0 <0.6.0", + "@askrjs/ui": ">=0.5.0 <0.6.0", "@fontsource-variable/domine": "^5.3.0" }, "devDependencies": { - "@askrjs/auth": ">=0.4.1 <0.5.0", - "@askrjs/cli": ">=0.4.0 <0.5.0", - "@askrjs/node": ">=0.4.0 <0.5.0", - "@askrjs/schema": ">=0.4.1 <0.5.0", - "@askrjs/server": ">=0.4.1 <0.5.0", - "@askrjs/testing": ">=0.4.1 <0.5.0", - "@askrjs/vite": ">=0.4.1 <0.5.0", + "@askrjs/auth": ">=0.5.0 <0.6.0", + "@askrjs/cli": ">=0.5.0 <0.6.0", + "@askrjs/node": ">=0.5.0 <0.6.0", + "@askrjs/schema": ">=0.5.0 <0.6.0", + "@askrjs/server": ">=0.5.0 <0.6.0", + "@askrjs/testing": ">=0.5.0 <0.6.0", + "@askrjs/vite": ">=0.5.0 <0.6.0", "@playwright/test": "^1.63.0", "@types/node": "^26.6.4", "@typescript/native": "npm:typescript@^7.0.2", @@ -42,16 +42,16 @@ } }, "node_modules/@askrjs/askr": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@askrjs/askr/-/askr-0.4.3.tgz", - "integrity": "sha512-/kgytC8QXI7MRWo0jDWHVOugIG11WAzoYSNV29lKMRpYBuooGWrLaOx+m4TyOZO3XvRdJBB4thy4edlvgG9ecQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/askr/-/askr-0.5.0.tgz", + "integrity": "sha512-VaMVh23Qj/pik7j1y57t0JzKpKhYq8zO+0UmVfzleDVNme73pI/C0iNOYtJuaYYaAV5+fsSCUpvX7TPgeCuYSA==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/auth": ">=0.4.0 <0.5.0", - "@askrjs/schema": ">=0.4.0 <0.5.0" + "@askrjs/auth": ">=0.5.0 <0.6.0", + "@askrjs/schema": ">=0.5.0 <0.6.0" }, "peerDependenciesMeta": { "@askrjs/auth": { @@ -63,9 +63,9 @@ } }, "node_modules/@askrjs/auth": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@askrjs/auth/-/auth-0.4.1.tgz", - "integrity": "sha512-tBJXtx1Zy2y6gOfLOex1qkGFTNusIzlv81I+laP23M2qtSNFen8NcSTIP7yx0huqEtvoPTKaQsI2E9YDlfxgcA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/auth/-/auth-0.5.0.tgz", + "integrity": "sha512-2quLsDz8mH/6eyKSdcKLJcJQFPcNU2P5H8lS56/IzMzPOt3eihO17e1W5DDnVNMYbNaGVc5FJwWj9Snz0++ygw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { @@ -78,21 +78,21 @@ } }, "node_modules/@askrjs/charts": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@askrjs/charts/-/charts-0.4.0.tgz", - "integrity": "sha512-Dxqxzm3kynFVDB85VINWqMdY+BzPaL2tMi1lxOypXpYPjSpGotRMLEohr25BxPeOvpVw5eXYDby+OzsftiXQKA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/charts/-/charts-0.5.0.tgz", + "integrity": "sha512-/pwEk71WlxSGG8FZ71D71kLNDMPqA13eB5i8jxFMuzaY0o1D15nZybziJD5v1S9vlervOryH0AulCmI64Ulfwg==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.4.0 <0.5.0" + "@askrjs/askr": ">=0.5.0 <0.6.0" } }, "node_modules/@askrjs/cli": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@askrjs/cli/-/cli-0.4.0.tgz", - "integrity": "sha512-KquJOAxR4eOyK6yjCBy6L2q50r6EmWO8T/EL79iFErdTfGpwOnm0FefZO4VVaS2whRrleIAABaWybXU1f3N9dA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/cli/-/cli-0.5.0.tgz", + "integrity": "sha512-gn+I+ejpvQ3qI0QbQW4EEEzOawXEBL5+ww7vCx6PDLt0bGBfkufiZ2e5ZYj1+vr60KV0EcvHaRyDKtUB8JFNkg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -113,7 +113,7 @@ "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.4.0 <0.5.0" + "@askrjs/askr": ">=0.5.0 <0.6.0" }, "peerDependenciesMeta": { "@askrjs/askr": { @@ -122,72 +122,72 @@ } }, "node_modules/@askrjs/fetch": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@askrjs/fetch/-/fetch-0.4.2.tgz", - "integrity": "sha512-OW9bGhAoghXuYE9j5JJyjwjrNK36jmxDuPhk6ZtZ8sjtZyiS3JrpaNEieuhiS6Z4Hco2E87+gXB6+z4hfaLwFA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/fetch/-/fetch-0.5.0.tgz", + "integrity": "sha512-/eAjeP7x3xPfKaIaa0elg5mjNxx5ZJ51YZR1W5X2BhhVfiIXSxXRMBBa+6QIY9oNbsquzzP3BbJc6TIMlDyFgA==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" } }, "node_modules/@askrjs/i18n": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@askrjs/i18n/-/i18n-0.4.0.tgz", - "integrity": "sha512-RQm9CVV2aTmdP4QnsKMpF6K4BWlrqOEijXLEaHBfOA0MRD+rxrBRL0xSbifV+AQzI7Dfmdlb+ZJRRFeEhTaFuA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/i18n/-/i18n-0.5.0.tgz", + "integrity": "sha512-DN6zf0Ok1zBLFGgm3EY35bITsOpA35qpGWvY7HNLAqw/qLjBn2ijvKEBalhc9+Fvmw72hwjgL/d2df+hWlJYKQ==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.4.0 <0.5.0" + "@askrjs/askr": ">=0.5.0 <0.6.0" } }, "node_modules/@askrjs/logos": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@askrjs/logos/-/logos-0.4.0.tgz", - "integrity": "sha512-jtmd32OD1UYNq/rMnfkuEPMXkg8ZkfmPlm9/R454Oe9M1cItmqrSvqCfPo61RC9Gqu+Eg/ap50A9PL+GgPqatQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/logos/-/logos-0.5.0.tgz", + "integrity": "sha512-Ko3Cf12+qwfoFx1QgDoEANPtFEILyGfSsA1/mwKD8AjTXH3n58cH0bXBv4s6FvfFH46FSIc9xzOr0eTC2YuLkw==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.4.0 <0.5.0" + "@askrjs/askr": ">=0.5.0 <0.6.0" } }, "node_modules/@askrjs/lucide": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@askrjs/lucide/-/lucide-0.4.0.tgz", - "integrity": "sha512-pSBe6I3FY8nfIH0aAVL+qu8rrDGY8QR3zJyuVA9JqWflPg9xcqhJg/CsZOES2YhKhFKWYJFIDvIsDP5O0NG74w==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/lucide/-/lucide-0.5.0.tgz", + "integrity": "sha512-naFre5an65bHCVYL9lSpdk/InU2PMbfigiY+b4oafNBQpcJWfEFKtZ0EayaVLlGoxDxlg2t4O23DParn8eKQgQ==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.4.0 <0.5.0" + "@askrjs/askr": ">=0.5.0 <0.6.0" } }, "node_modules/@askrjs/monaco": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@askrjs/monaco/-/monaco-0.4.0.tgz", - "integrity": "sha512-Br6yECjn5qh7O9Bri3DkN797/leTlHF2i3yrCsNJ/fSEYFf5lkiSO6MM3Jesie/21jQY6AjpLwyhffG0a/7y8g==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/monaco/-/monaco-0.5.0.tgz", + "integrity": "sha512-oKAtmvvS5ZdB+V4B/Qt1v0781ftS1ZLPU2ErQNZdaVFSox7lXFax1iZYnA2yvuXlATPtax43fLaLwt0WmPiBBQ==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.4.0 <0.5.0", + "@askrjs/askr": ">=0.5.0 <0.6.0", "monaco-editor": "^0.56.0" } }, "node_modules/@askrjs/node": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@askrjs/node/-/node-0.4.0.tgz", - "integrity": "sha512-gRdFGwMDiVadJatJSveLJL8ZAmxMxFTJW+ShVT8mXZa46ZSP3p28ZKGYa2TWH8j3nlhf3H1CJW+FSUmjfL1i/w==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/node/-/node-0.5.0.tgz", + "integrity": "sha512-HnsI+53V/JPWiEuPk954VTLhHHf+jK0in8Mvq2FKu+fBsaUhJENRiray8BC9LMex5Lvt+czX1XvAF/f4RdBpag==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@askrjs/auth": ">=0.4.0 <0.5.0", - "@askrjs/server": ">=0.4.0 <0.5.0", + "@askrjs/auth": ">=0.5.0 <0.6.0", + "@askrjs/server": ">=0.5.0 <0.6.0", "@types/ws": "^8.18.1", "ws": "^8.21.3" }, @@ -196,9 +196,9 @@ } }, "node_modules/@askrjs/otel": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@askrjs/otel/-/otel-0.4.0.tgz", - "integrity": "sha512-wyYRbYj84BjU9AAFXYXEM4XQNxo19V3kY5gkCV61KxrqmTNYlVwh8eRtw39DkLPpzYCKhHm5+vOVphPLQ2QnGA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/otel/-/otel-0.5.0.tgz", + "integrity": "sha512-sGKn5ny+SlClKG5GnC9fsyE00hAui4SeCm30f4kOHnVHW9CXvJdfggFAK7tG+FZlORtuJnHGjjPf+/59dihMtg==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" @@ -208,9 +208,9 @@ } }, "node_modules/@askrjs/schema": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@askrjs/schema/-/schema-0.4.1.tgz", - "integrity": "sha512-H50xFmvPlGLkVWae/Lz7794Wqy0oaAfIut64WKjG0LTh5B6KXv8u/713sZz++HFIAhymvoIZqx7knEiEsD7zMA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/schema/-/schema-0.5.0.tgz", + "integrity": "sha512-JMciK1KmJJ7Jy/GY+ph3ibFf/75qFA1HXMuC0tI/QMxnqpVTbIY694AXk9KDODrY1qm8WaF9ktpjKlY7ciENgA==", "devOptional": true, "license": "Apache-2.0", "engines": { @@ -218,20 +218,20 @@ } }, "node_modules/@askrjs/server": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@askrjs/server/-/server-0.4.1.tgz", - "integrity": "sha512-WQr7+8PJMoSmBT1z4GRk1j82XalVRWzQqSj0BN4hQrDNwTyr1bj03I6Y8uQGijoOz/hdW3hLXhClyHeTKhbfGQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/server/-/server-0.5.0.tgz", + "integrity": "sha512-piD546hjlQElDs+7fNbTCBE85qdnpZRnLmcOUAoalI1l7h6+Elpp0/+nkfVVim2BMnNs8CTqW01Cwpxv/hv9pA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@askrjs/auth": ">=0.4.0 <0.5.0", - "@askrjs/schema": ">=0.4.0 <0.5.0" + "@askrjs/auth": ">=0.5.0 <0.6.0", + "@askrjs/schema": ">=0.5.0 <0.6.0" }, "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.4.0 <0.5.0" + "@askrjs/askr": ">=0.5.0 <0.6.0" }, "peerDependenciesMeta": { "@askrjs/askr": { @@ -240,9 +240,9 @@ } }, "node_modules/@askrjs/testing": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@askrjs/testing/-/testing-0.4.1.tgz", - "integrity": "sha512-aXcYg/S1buWL1n2UpqQWysD56HEC5uk9CO/1QCNoVtJWmSjGF/Xr41qgtxcyTfwVCe/D5Y2+MMHvE8qOuRuQlA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/testing/-/testing-0.5.0.tgz", + "integrity": "sha512-GR3kKzfmcExylK+jWfIc8fAHK6kqtUDfzP60uNM86HSk0Pc+FFZ+a/ZUULhmqIdv/cZdI29XUejEUQSMY8Ojqg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -253,38 +253,38 @@ } }, "node_modules/@askrjs/themes": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@askrjs/themes/-/themes-0.4.2.tgz", - "integrity": "sha512-xg+BZcpKkkYxMirBBgykDT3hTrbvUpn1nl1GcPMzDeMiI2Uow9IQKqs027ng+qTC8lHbskzhTYHws+TyqJxBlQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/themes/-/themes-0.5.0.tgz", + "integrity": "sha512-qqR1q8cdl0w8ayXRh45WvEmCgk3WPAcOCeNcOGPm9ymCY7iO5aNjrwxz/hJ9fdrAB1vAGb3FQF5K/uddciZphw==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.4.0 <0.5.0", - "@askrjs/ui": ">=0.4.0 <0.5.0" + "@askrjs/askr": ">=0.5.0 <0.6.0", + "@askrjs/ui": ">=0.5.0 <0.6.0" } }, "node_modules/@askrjs/ui": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@askrjs/ui/-/ui-0.4.3.tgz", - "integrity": "sha512-ADnB7CENORt7b1BLae1a6643Dh6cfc9dvpmDiS1Igu1L1PY0rvrh+tIu0OTJj0DdTypwIA/qFOviwx5VGLiBog==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/ui/-/ui-0.5.0.tgz", + "integrity": "sha512-Q3yvvcah8rp9iWEq7H0uQHU4to4uLx9lT5B8GpXz43qh2i9UVtxjrpJ5rdPWfNiIPCYEkqjDnhpT3JOlMnMOsg==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.4.0 <0.5.0" + "@askrjs/askr": ">=0.5.0 <0.6.0" } }, "node_modules/@askrjs/vite": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@askrjs/vite/-/vite-0.4.1.tgz", - "integrity": "sha512-3pcvhmsRJiptJpvSmTHoIvwN6dWVkRkR05+KGeYaRqcfCh/LyWUAHmG9Agi7M7xPjkKQTLAhtpb+c53G+WqG/g==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@askrjs/vite/-/vite-0.5.0.tgz", + "integrity": "sha512-7V7rS+oF8so2O0Kjr3CQUKtYUJIogP5taogHJTu9kqFrjfuBNpI9aMZkQcS1FwsQnJ9hHOVK1OE0JyDmZ6A92g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@askrjs/node": ">=0.4.0 <0.5.0", + "@askrjs/node": ">=0.5.0 <0.6.0", "oxc-parser": "^0.147.0", "parse5": "^8.0.1" }, @@ -292,10 +292,10 @@ "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.4.0 <0.5.0", + "@askrjs/askr": ">=0.5.0 <0.6.0", "sharp": "^0.35.3", - "vite": "^8.2.2", - "vite-plus": "^0.3.1" + "vite": "^8.2.2 || ^0.3.1 || ^1.1.0", + "vite-plus": "^0.3.1 || ^1.1.0" }, "peerDependenciesMeta": { "sharp": { @@ -335,9 +335,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", - "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.10.tgz", + "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", "dev": true, "license": "MIT", "engines": { @@ -2126,13 +2126,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.63.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.63.0.tgz", - "integrity": "sha512-oxMK4vllB9RK5NQ2l1pq1IfOf2AvnEuj/vYGDj0H2nMtmtZpKtCwt/l00GEO6xjGfpBNAvjovvYdCm50dRQkpQ==", + "version": "1.64.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.64.0.tgz", + "integrity": "sha512-oTN9FNYuN6bqQMwiho6jJKLCG2/QOYCixGXuCjRmzOq23eODeukuY2XiAVoVpAECbuezMt1MHQjAiQxK8F+Y+g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.63.0" + "playwright": "1.64.0" }, "bin": { "playwright": "cli.js" @@ -2149,9 +2149,9 @@ "license": "MIT" }, "node_modules/@rolldown/binding-android-arm-eabi": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.12.tgz", - "integrity": "sha512-dB/a1214qKfHMXCpgqR4OZT+jS4kTyEXbQGJPqzobt5EwH5rX080pxE37alt3RzvR1bf1Yz/yGqRfrYAxuPw0A==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.13.tgz", + "integrity": "sha512-Vu/NICrgdRvUOeaJZIyB2FP63s6fO/4ud5l8dXmxDx9yDyn+mN0y+gsvsVviSli+T361Aqo0h46EuMoobrwawA==", "cpu": [ "arm" ], @@ -2166,9 +2166,9 @@ } }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.12.tgz", - "integrity": "sha512-7KHFgQ5VJxIHcLlrwrc3Xbds7oTNQT7Pgi9gQCJKrd2VGab/UksIOYp6VD8MzCstGxOKMgNamPwUCfxPdP1OHg==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.13.tgz", + "integrity": "sha512-6LEoIrGy5vvCd2boNnv2soPSUZj/PRvhp8R/t9KlX+mIZxThIE/ZqxrGXxmuNX0FuvQFvLdZr7S4HrYpYBVhEQ==", "cpu": [ "arm64" ], @@ -2183,9 +2183,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.12.tgz", - "integrity": "sha512-3YIhqHD96nA5SaYNRBR16HnGv4oavZvXfD/ayHM+oYZ0WD/8lBAtf6zQua4kEyAvpqrluKXl0lnOBoiNby7x9w==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.13.tgz", + "integrity": "sha512-CaJSRzlQ6Q+zkDMVA9OkVxBjVoPRCDEE3v0FSJ9kIQBgRjFApA3Si4ijhbNVUji7ZJt+PfO0e46qy4nPInHUPA==", "cpu": [ "arm64" ], @@ -2200,9 +2200,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.12.tgz", - "integrity": "sha512-UuuJ35MFw4gmFOrE9pEqIV+K3syIKveph+Qc1/ljHZVdoDW4pz/JHR/eMVom+TZGl/5OOvGJOWaOCVt3ZfqhxA==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.13.tgz", + "integrity": "sha512-e4r340I5hxSzJkD3YJBxgzq/rJ3wwxwdLLb2FPt1Zpyem20nrQPT11DDEEkazwxaHumH8wpglsp/Ozgj/wT6mw==", "cpu": [ "x64" ], @@ -2217,9 +2217,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.12.tgz", - "integrity": "sha512-uMvssit0a4W+/7D8CbHUvG719mH3R2jwXAlh/XcPvuHTE0g++LymF88DCGNX0HM2rBOn0xrzgXktIB6fLSJBTQ==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.13.tgz", + "integrity": "sha512-hoBWDZ4/K/mJKVMbsgUd1jfpA2DiOrJ54mpegObU9TBHBBrtX4FLIXJJQRDPZ/2Dn91GvPob+Z2hwKJzf4E5SQ==", "cpu": [ "x64" ], @@ -2234,9 +2234,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.12.tgz", - "integrity": "sha512-XcFu0R0xWnwzSf4IQgFH1rJIckPN1pLy2R+4r9IDB7Yfu/ys9cVqfa4pBrMHj7a3gl8mIR4nRNPg0e5IvEVs6g==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.13.tgz", + "integrity": "sha512-oF9fZu3vTWnTiVAkDFxU9PJLt1nh20K9RRpuHsR7ZnE2L7XookBbDBVLojCVSLGbvtSlxeUNnjAj6DbNsKyzbg==", "cpu": [ "arm" ], @@ -2251,9 +2251,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.12.tgz", - "integrity": "sha512-260UrKgn8tz39ak+SMDOirKzr7V04M9dWPw5llW00SwBivCZoWcRBKV1d8cXnRkUmSZA3BdiUmBHWk7734Ulpw==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.13.tgz", + "integrity": "sha512-DTpb/+jMiqWMPgphn4ksW1zW+XLJ6dJJ9FMvnIk9I291LhCctMPhMYJrP5t9p6C9qa3KXadDdUEZHBaPh3kNxQ==", "cpu": [ "arm64" ], @@ -2271,9 +2271,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.12.tgz", - "integrity": "sha512-5YK1I9SqDkbPgc1IA8BgDl34suqUS2q0KWnBrirm0E51YjOs6eo6dV6jbQfNE/argHRSvd0QUGgtpIoYx+WWpw==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.13.tgz", + "integrity": "sha512-xU+Kvv9N2A3SY35zFh1FWWNjxbadE/BKeqnkXe7vScU4GZsw757BlVmDLITZEq8DPpk6m7uoDYkK7P+x/uU5Ow==", "cpu": [ "arm64" ], @@ -2291,9 +2291,9 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.12.tgz", - "integrity": "sha512-Rkcrmp7eFRg74yL5fXEU91JEWbdEPLevWwGtXpmhbjlD1StScbWTmO94Bhly+Mo+ketKYkdmM1vNUKeWSlx8cQ==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.13.tgz", + "integrity": "sha512-XMk/hnhh25oQ756Lclb1Q11h4ll0xC0Esa5w4Vzp+mAE2S3AGJgeM0SonrIgY8fHhjarb6hcoTuwoFG0VVP2ig==", "cpu": [ "ppc64" ], @@ -2311,9 +2311,9 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.12.tgz", - "integrity": "sha512-qvK4DuAsQc2BSjlx+Xr+IzOIvvxbGZqxFwdWfG6F518Erj0GGISyQbJ6pIappnOxlNPzNHvo/L0BwB30GZ+zVw==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.13.tgz", + "integrity": "sha512-U1BoTHYmlywE2n3HUWjzZ+8EQsKr+OwpxYuDWaubx42tUL8QSL7nOqRz/NVHanibbFP3M1Rxuprz/wNcbMKjqw==", "cpu": [ "s390x" ], @@ -2331,9 +2331,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.12.tgz", - "integrity": "sha512-Q9uLBO53Xd4QIq1WOycVQyPP1O4HhraEV2qqb3uTrnVw6QZih9duY4vNXOivL1xoUS1/z+W8eF4NMfl2a8Sdjw==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.13.tgz", + "integrity": "sha512-J4cm80Pc6wEwV5AZ42o62sIQgDk+Y7R2s646jIwuvO+4V46QB58N4vVuMPWCBaNgursXLpmUWJV//WQAkPvHBQ==", "cpu": [ "x64" ], @@ -2351,9 +2351,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.12.tgz", - "integrity": "sha512-3IBxWFMjbOZskDPKv8Lf9BCnahlKuHthWkYnyIxOH/QcJrFcS4EmcenthApkwr/5+nEqZlLzeYbxeMaX7A5u4g==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.13.tgz", + "integrity": "sha512-W0euZS40U4V6JkmEnVCIX9mcsL6cbXQ4X8c2w+MMOIjFg68TXUW+u3RT+2e1t1pv9mg/EP3pDtK3POXdQ7Rxyw==", "cpu": [ "x64" ], @@ -2371,9 +2371,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.12.tgz", - "integrity": "sha512-xtX61xg4LKPkPWilZU1ynKClz5Gj4bf74LML4r3eVLWumKnGjoEr1OSHQhMdbBDoYTi+yjrujvpZe2pUnqCrrA==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.13.tgz", + "integrity": "sha512-do/AF/4n9MRshia3a5aXoy8xM2c6mgfT6D7H/dY6my5z+hfCIR4ab7mk4IRj++nsEQpKy39kd0DQnDq+r692tw==", "cpu": [ "arm64" ], @@ -2388,9 +2388,9 @@ } }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.12.tgz", - "integrity": "sha512-At7fPB6PCaIjzgIhEZFxuT+BBFqiQibJDT4d3PhiR3f4E7bbMZF4aKblbFfEM3sETRDd1YiQx/+U/g/B/ou5Ew==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.13.tgz", + "integrity": "sha512-6FtUf2cJZobutJdxnGYX8z0vtbgqU0b2v8vfBhkXb9wp2MppMFtkunE+IaOntyi01rkIQoPW2GHABtfzsC0BRQ==", "cpu": [ "arm64" ], @@ -2405,9 +2405,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.12.tgz", - "integrity": "sha512-WIw2haVKwjuYdXkHaoC0mF8Le71TuCBxjrdKqLbJGctbBABj+ClfmNvtbOnzpq3RokNo5+V1qhtSzJyXorsklQ==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.13.tgz", + "integrity": "sha512-UKhFaZTeTcbKrb3iU82m17jVcPEAoqDkCN5MBqgPyZSwp/cQmib21crTS0DdH7T1B7wZRWEI89YQAOJMet5yhg==", "cpu": [ "x64" ], @@ -2502,9 +2502,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "26.6.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.4.tgz", - "integrity": "sha512-ldVPDCzj7fsaGZrLB0NuHuTvJcsNasysBAqMolr/cgxrLd1xbqxIr3XJiPnHHJUCxj5sNF1vnRj9aWnrVh5Jcg==", + "version": "26.6.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.5.tgz", + "integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==", "dev": true, "license": "MIT", "dependencies": { @@ -4102,9 +4102,9 @@ } }, "node_modules/ip-address": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.3.tgz", - "integrity": "sha512-A1kdq/tSb5QjvKvAMgIoEvDBIgL7qaqVP/jkvSwYYRZ9iEzvPpopxp2wQfu3SuZRHtpHNxMn8Fs0bS+gf5Xmwg==", + "version": "10.7.4", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.4.tgz", + "integrity": "sha512-DWBMKyeM25D70nrIiTkgQth59/G+naKOTep6huF9j+GmeK3DMD60Zvxg5d5qQnz+38AHgou6ean2LECX+lrKDg==", "dev": true, "license": "MIT", "engines": { @@ -4129,9 +4129,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.4.2.tgz", - "integrity": "sha512-m+aqu+LwO1O6sIopafj8HUVl5aawITwZQe/yHpMCKjaWBaA/d07B/QdMb3529REftiU+RMMHL3Vlsw3hON7vWg==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.4.3.tgz", + "integrity": "sha512-yzzNtgczwgoVHNigCyKTXcQJU4Y8t/ikU4UxXW0BvrLfHTGWZhsNcOT2s/a7vn81/4KqVnNmHjaUEPlvWnNwVw==", "dev": true, "funding": [ { @@ -4673,9 +4673,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.19", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.19.tgz", - "integrity": "sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==", + "version": "3.3.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz", + "integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==", "dev": true, "funding": [ { @@ -4970,9 +4970,9 @@ } }, "node_modules/p-map": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.8.tgz", - "integrity": "sha512-MitaVsCuCFIvOLLPIU7NnfrZvS9H9h7kwMUkDo+T2pEISaJD48IV9S8iIdXB7PsvvdxyYcsSTTrr90XKsbulNw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.1.1.tgz", + "integrity": "sha512-6Lh3jQPLthYujSrlw6ccWXBGZTkoTCz27Hd92g79LH/kjAbgoEu0t442cCCNbegPSJsA0lwDX8z0bcKtkpA32g==", "dev": true, "license": "MIT", "engines": { @@ -5040,13 +5040,13 @@ } }, "node_modules/playwright": { - "version": "1.63.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.63.0.tgz", - "integrity": "sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg==", + "version": "1.64.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.64.0.tgz", + "integrity": "sha512-kVzTnYFYEyQ9RGzBjNCd2+yEqWmVbxl3AHPynv3qQ6JTjv4a+kwRcnqQwIpuP3NnrnIrE/Q6wWAIAvMfIE2/Yg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.63.0" + "playwright-core": "1.64.0" }, "bin": { "playwright": "cli.js" @@ -5056,9 +5056,9 @@ } }, "node_modules/playwright-core": { - "version": "1.63.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.63.0.tgz", - "integrity": "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==", + "version": "1.64.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.64.0.tgz", + "integrity": "sha512-T9r+MZkTECl2+oUcZ26YgZzTrYidTsIhYYkJix+6iDOymOb1FB2RLLSOxRGnZGv5DStt+aduIVbt+E8WygXYpg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5079,9 +5079,9 @@ } }, "node_modules/postcss": { - "version": "8.5.28", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", - "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", + "version": "8.5.30", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.30.tgz", + "integrity": "sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA==", "dev": true, "funding": [ { @@ -5099,9 +5099,9 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.18", + "nanoid": "^3.3.20", "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" + "source-map-js": "^1.2.2" }, "engines": { "node": "^10 || ^12 || >=14" @@ -5158,13 +5158,13 @@ "license": "MIT" }, "node_modules/rolldown": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.12.tgz", - "integrity": "sha512-8wafseiaG80xmXSfqidUNqZcylTlhmPZZt+za2m+js2sFZ8dTNlhIOV2WcbIPx2hgwPBJpEUGFAMZ9bgBBLTSQ==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.13.tgz", + "integrity": "sha512-/5apOkwWxtACcQtZ5WlrAsKS4JwXVThQPJZ3RqIruRY9UG9M8e0VlXN068xum/JRKA4aIUoJ13ghe/kGCvidiQ==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.152.0", + "@oxc-project/types": "=0.153.0", "@rolldown/pluginutils": "^1.0.0" }, "bin": { @@ -5174,27 +5174,27 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm-eabi": "1.2.12", - "@rolldown/binding-android-arm64": "1.2.12", - "@rolldown/binding-darwin-arm64": "1.2.12", - "@rolldown/binding-darwin-x64": "1.2.12", - "@rolldown/binding-freebsd-x64": "1.2.12", - "@rolldown/binding-linux-arm-gnueabihf": "1.2.12", - "@rolldown/binding-linux-arm64-gnu": "1.2.12", - "@rolldown/binding-linux-arm64-musl": "1.2.12", - "@rolldown/binding-linux-ppc64-gnu": "1.2.12", - "@rolldown/binding-linux-s390x-gnu": "1.2.12", - "@rolldown/binding-linux-x64-gnu": "1.2.12", - "@rolldown/binding-linux-x64-musl": "1.2.12", - "@rolldown/binding-openharmony-arm64": "1.2.12", - "@rolldown/binding-win32-arm64-msvc": "1.2.12", - "@rolldown/binding-win32-x64-msvc": "1.2.12" + "@rolldown/binding-android-arm-eabi": "1.2.13", + "@rolldown/binding-android-arm64": "1.2.13", + "@rolldown/binding-darwin-arm64": "1.2.13", + "@rolldown/binding-darwin-x64": "1.2.13", + "@rolldown/binding-freebsd-x64": "1.2.13", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.13", + "@rolldown/binding-linux-arm64-gnu": "1.2.13", + "@rolldown/binding-linux-arm64-musl": "1.2.13", + "@rolldown/binding-linux-ppc64-gnu": "1.2.13", + "@rolldown/binding-linux-s390x-gnu": "1.2.13", + "@rolldown/binding-linux-x64-gnu": "1.2.13", + "@rolldown/binding-linux-x64-musl": "1.2.13", + "@rolldown/binding-openharmony-arm64": "1.2.13", + "@rolldown/binding-win32-arm64-msvc": "1.2.13", + "@rolldown/binding-win32-x64-msvc": "1.2.13" } }, "node_modules/rolldown/node_modules/@oxc-project/types": { - "version": "0.152.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.152.0.tgz", - "integrity": "sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.153.0.tgz", + "integrity": "sha512-jSNrRIyvPVLL5E1z/tS5zLAprosGz/FuI1PWwEOz59j3E4TTTzSpqKb/RDGqJhhW0QHYISGXxq582wGx6T11Tw==", "dev": true, "license": "MIT", "funding": { @@ -5402,22 +5402,22 @@ } }, "node_modules/tldts": { - "version": "7.4.16", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.4.16.tgz", - "integrity": "sha512-QwBER5KMR86IIjpIiO7H/Z3IMJPsZ1A6RKPAqzTTgOyUQUSt9FdnKcqhTaJmkY6HVrgouZHZR0ncK5QxvmnQeg==", + "version": "7.4.18", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.4.18.tgz", + "integrity": "sha512-somxA8xKAUzlAxl0TX/jMSYIbRNFIVGnI96pVGJPeMc5BsHmfVXn6mOJT6U++ELnl04eGfzpfcEuZe8WiASkXg==", "dev": true, "license": "MIT", "dependencies": { - "tldts-core": "^7.4.16" + "tldts-core": "^7.4.18" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "7.4.16", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.16.tgz", - "integrity": "sha512-MDolfaSJtlSK5Y0A1xl3277ekubZwobpBjugknDizI9O5Rm60a1m8k4ICK+MRsCDzPygT81mp3BBf5RKDlFRfA==", + "version": "7.4.18", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.18.tgz", + "integrity": "sha512-KI2PKvCmvQI/xD6ypPqkU0i7oxNXR/O58RLRaHR4svsgVUQ2JE/XC8BtMbG6PSehD27I8sZJRcC1ASnCy6lp3g==", "dev": true, "license": "MIT" }, @@ -5495,45 +5495,57 @@ } }, "node_modules/vite": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.2.tgz", - "integrity": "sha512-SQr1x6W5vVSbROg7vsyXIaxK9b0G7zsT68acdWWRmnBUsgDieLCRG+Rep9WdZgcposvv/GSnr4GUUBqB3vXq6w==", + "name": "@voidzero-dev/vite-plus-core", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-core/-/vite-plus-core-0.3.3.tgz", + "integrity": "sha512-Ui92VENIZG+p0nMJuVGMsHBHrQqgUNxXObdo5PlSDEBOdRmD8AHKr8tOClZTVU1U5blLQKtHKplxtTun0yZEmw==", "dev": true, "license": "MIT", "dependencies": { + "@oxc-project/runtime": "=0.150.0", + "@oxc-project/types": "=0.150.0", "lightningcss": "^1.33.0", - "picomatch": "^4.0.7", - "postcss": "^8.5.28", - "rolldown": "~1.2.11", - "tinyglobby": "^0.2.17" - }, - "bin": { - "vite": "bin/vite.js" + "postcss": "^8.5.6", + "yuku-codegen": "^0.9.3", + "yuku-parser": "^0.9.3" }, "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" + "node": "^20.19.0 || ^22.18.0 || >=24.11.0" }, "optionalDependencies": { + "@voidzero-dev/vite-plus-darwin-arm64": "0.3.3", + "@voidzero-dev/vite-plus-darwin-x64": "0.3.3", + "@voidzero-dev/vite-plus-linux-arm64-gnu": "0.3.3", + "@voidzero-dev/vite-plus-linux-arm64-musl": "0.3.3", + "@voidzero-dev/vite-plus-linux-x64-gnu": "0.3.3", + "@voidzero-dev/vite-plus-linux-x64-musl": "0.3.3", + "@voidzero-dev/vite-plus-win32-arm64-msvc": "0.3.3", + "@voidzero-dev/vite-plus-win32-x64-msvc": "0.3.3", "fsevents": "~2.3.3" }, "peerDependencies": { + "@arethetypeswrong/core": "^0.18.1", "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.7.1", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", + "publint": "^0.3.8", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", + "typescript": "^5.0.0 || ^6.0.0 || ^7.0.0", + "unplugin-unused": ">=0.5.0", + "unrun": "*", "yaml": "^2.4.2" }, "peerDependenciesMeta": { + "@arethetypeswrong/core": { + "optional": true + }, "@types/node": { "optional": true }, @@ -5549,6 +5561,9 @@ "less": { "optional": true }, + "publint": { + "optional": true + }, "sass": { "optional": true }, @@ -5567,6 +5582,15 @@ "tsx": { "optional": true }, + "typescript": { + "optional": true + }, + "unplugin-unused": { + "optional": true + }, + "unrun": { + "optional": true + }, "yaml": { "optional": true } @@ -5638,106 +5662,14 @@ "url": "https://github.com/sponsors/oxc-project" } }, - "node_modules/vite-plus/node_modules/vite": { - "name": "@voidzero-dev/vite-plus-core", - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@voidzero-dev/vite-plus-core/-/vite-plus-core-0.3.3.tgz", - "integrity": "sha512-Ui92VENIZG+p0nMJuVGMsHBHrQqgUNxXObdo5PlSDEBOdRmD8AHKr8tOClZTVU1U5blLQKtHKplxtTun0yZEmw==", + "node_modules/vite/node_modules/@oxc-project/types": { + "version": "0.150.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.150.0.tgz", + "integrity": "sha512-rDS5/31E9HfPl/CIzGrn0DOlvBbXFseQ5URJ9sYMfstbKLD/c6Gm9vmRzRGDdAXyOIL4zmO37lc9RIwYqVruZw==", "dev": true, "license": "MIT", - "dependencies": { - "@oxc-project/runtime": "=0.150.0", - "@oxc-project/types": "=0.150.0", - "lightningcss": "^1.33.0", - "postcss": "^8.5.6", - "yuku-codegen": "^0.9.3", - "yuku-parser": "^0.9.3" - }, - "engines": { - "node": "^20.19.0 || ^22.18.0 || >=24.11.0" - }, - "optionalDependencies": { - "@voidzero-dev/vite-plus-darwin-arm64": "0.3.3", - "@voidzero-dev/vite-plus-darwin-x64": "0.3.3", - "@voidzero-dev/vite-plus-linux-arm64-gnu": "0.3.3", - "@voidzero-dev/vite-plus-linux-arm64-musl": "0.3.3", - "@voidzero-dev/vite-plus-linux-x64-gnu": "0.3.3", - "@voidzero-dev/vite-plus-linux-x64-musl": "0.3.3", - "@voidzero-dev/vite-plus-win32-arm64-msvc": "0.3.3", - "@voidzero-dev/vite-plus-win32-x64-msvc": "0.3.3", - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@arethetypeswrong/core": "^0.18.1", - "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.7.1", - "esbuild": "^0.27.0 || ^0.28.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "publint": "^0.3.8", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "typescript": "^5.0.0 || ^6.0.0 || ^7.0.0", - "unplugin-unused": ">=0.5.0", - "unrun": "*", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@arethetypeswrong/core": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitejs/devtools": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "publint": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "typescript": { - "optional": true - }, - "unplugin-unused": { - "optional": true - }, - "unrun": { - "optional": true - }, - "yaml": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/oxc-project" } }, "node_modules/vitest": { @@ -5830,6 +5762,84 @@ } } }, + "node_modules/vitest/node_modules/vite": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.4.tgz", + "integrity": "sha512-IftLE8phJhdNRIGNEV4JCCvfNScoZQVfcXaN8TQropWGJtOHcu+iAB9pHcuGvmEb/kddw0LBe/jS8ztdC6xdiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lightningcss": "^1.33.0", + "picomatch": "^4.0.7", + "postcss": "^8.5.29", + "rolldown": "~1.2.12", + "tinyglobby": "^0.2.17" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.7.1", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, "node_modules/walk-up-path": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-4.0.0.tgz", diff --git a/package.json b/package.json index 09bef28..29c6b3c 100644 --- a/package.json +++ b/package.json @@ -26,26 +26,26 @@ "preview": "vp preview --outDir dist" }, "dependencies": { - "@askrjs/askr": ">=0.4.3 <0.5.0", - "@askrjs/charts": ">=0.4.0 <0.5.0", - "@askrjs/fetch": ">=0.4.2 <0.5.0", - "@askrjs/i18n": ">=0.4.0 <0.5.0", - "@askrjs/logos": ">=0.4.0 <0.5.0", - "@askrjs/lucide": ">=0.4.0 <0.5.0", - "@askrjs/monaco": ">=0.4.0 <0.5.0", - "@askrjs/otel": ">=0.4.0 <0.5.0", - "@askrjs/themes": ">=0.4.2 <0.5.0", - "@askrjs/ui": ">=0.4.3 <0.5.0", + "@askrjs/askr": ">=0.5.0 <0.6.0", + "@askrjs/charts": ">=0.5.0 <0.6.0", + "@askrjs/fetch": ">=0.5.0 <0.6.0", + "@askrjs/i18n": ">=0.5.0 <0.6.0", + "@askrjs/logos": ">=0.5.0 <0.6.0", + "@askrjs/lucide": ">=0.5.0 <0.6.0", + "@askrjs/monaco": ">=0.5.0 <0.6.0", + "@askrjs/otel": ">=0.5.0 <0.6.0", + "@askrjs/themes": ">=0.5.0 <0.6.0", + "@askrjs/ui": ">=0.5.0 <0.6.0", "@fontsource-variable/domine": "^5.3.0" }, "devDependencies": { - "@askrjs/auth": ">=0.4.1 <0.5.0", - "@askrjs/cli": ">=0.4.0 <0.5.0", - "@askrjs/node": ">=0.4.0 <0.5.0", - "@askrjs/schema": ">=0.4.1 <0.5.0", - "@askrjs/server": ">=0.4.1 <0.5.0", - "@askrjs/testing": ">=0.4.1 <0.5.0", - "@askrjs/vite": ">=0.4.1 <0.5.0", + "@askrjs/auth": ">=0.5.0 <0.6.0", + "@askrjs/cli": ">=0.5.0 <0.6.0", + "@askrjs/node": ">=0.5.0 <0.6.0", + "@askrjs/schema": ">=0.5.0 <0.6.0", + "@askrjs/server": ">=0.5.0 <0.6.0", + "@askrjs/testing": ">=0.5.0 <0.6.0", + "@askrjs/vite": ">=0.5.0 <0.6.0", "@playwright/test": "^1.63.0", "@types/node": "^26.6.4", "@typescript/native": "npm:typescript@^7.0.2", diff --git a/src/pages/docs/api-manifest.ts b/src/pages/docs/api-manifest.ts index adfdd24..34ac66f 100644 --- a/src/pages/docs/api-manifest.ts +++ b/src/pages/docs/api-manifest.ts @@ -11,7 +11,7 @@ export interface ApiEntrypointDefinition { export const apiManifest: readonly ApiEntrypointDefinition[] = [ { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: '.', importName: '@askrjs/askr', slug: 'root', @@ -19,7 +19,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './boot', importName: '@askrjs/askr/boot', slug: 'boot', @@ -27,7 +27,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './components', importName: '@askrjs/askr/components', slug: 'components', @@ -35,7 +35,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './control', importName: '@askrjs/askr/control', slug: 'control', @@ -43,7 +43,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './foundations', importName: '@askrjs/askr/foundations', slug: 'foundations', @@ -51,7 +51,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './foundations/utilities', importName: '@askrjs/askr/foundations/utilities', slug: 'foundations--utilities', @@ -59,7 +59,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './foundations/interactions', importName: '@askrjs/askr/foundations/interactions', slug: 'foundations--interactions', @@ -67,7 +67,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './foundations/state', importName: '@askrjs/askr/foundations/state', slug: 'foundations--state', @@ -75,7 +75,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './foundations/structures', importName: '@askrjs/askr/foundations/structures', slug: 'foundations--structures', @@ -83,7 +83,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './foundations/icon', importName: '@askrjs/askr/foundations/icon', slug: 'foundations--icon', @@ -91,7 +91,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './resources', importName: '@askrjs/askr/resources', slug: 'resources', @@ -99,7 +99,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './data', importName: '@askrjs/askr/data', slug: 'data', @@ -107,7 +107,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './testing', importName: '@askrjs/askr/testing', slug: 'testing', @@ -115,7 +115,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './fx', importName: '@askrjs/askr/fx', slug: 'fx', @@ -123,7 +123,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './router', importName: '@askrjs/askr/router', slug: 'router', @@ -131,7 +131,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './actions', importName: '@askrjs/askr/actions', slug: 'actions', @@ -139,7 +139,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './ssr', importName: '@askrjs/askr/ssr', slug: 'ssr', @@ -147,7 +147,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './ssg', importName: '@askrjs/askr/ssg', slug: 'ssg', @@ -155,7 +155,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './jsx-runtime', importName: '@askrjs/askr/jsx-runtime', slug: 'jsx-runtime', @@ -163,7 +163,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.4.3', + version: '0.5.0', subpath: './jsx-dev-runtime', importName: '@askrjs/askr/jsx-dev-runtime', slug: 'jsx-dev-runtime', @@ -171,7 +171,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/auth', - version: '0.4.1', + version: '0.5.0', subpath: '.', importName: '@askrjs/auth', slug: 'root', @@ -179,7 +179,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/auth', - version: '0.4.1', + version: '0.5.0', subpath: './jwt', importName: '@askrjs/auth/jwt', slug: 'jwt', @@ -187,7 +187,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/auth', - version: '0.4.1', + version: '0.5.0', subpath: './oidc', importName: '@askrjs/auth/oidc', slug: 'oidc', @@ -195,602 +195,2129 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/auth', - version: '0.4.1', + version: '0.5.0', + subpath: './server', + importName: '@askrjs/auth/server', + slug: 'server', + symbolSet: 'symbols23', + }, + { + packageName: '@askrjs/auth', + version: '0.5.0', + subpath: './providers/auth0', + importName: '@askrjs/auth/providers/auth0', + slug: 'providers--auth0', + symbolSet: 'symbols24', + }, + { + packageName: '@askrjs/auth', + version: '0.5.0', subpath: './saml', importName: '@askrjs/auth/saml', slug: 'saml', - symbolSet: 'symbols23', + symbolSet: 'symbols25', }, { packageName: '@askrjs/auth', - version: '0.4.1', + version: '0.5.0', subpath: './mfa', importName: '@askrjs/auth/mfa', slug: 'mfa', - symbolSet: 'symbols24', + symbolSet: 'symbols26', }, { packageName: '@askrjs/auth', - version: '0.4.1', + version: '0.5.0', subpath: './webauthn-client', importName: '@askrjs/auth/webauthn-client', slug: 'webauthn-client', - symbolSet: 'symbols25', + symbolSet: 'symbols27', + }, + { + packageName: '@askrjs/auth', + version: '0.5.0', + subpath: './providers/microsoft', + importName: '@askrjs/auth/providers/microsoft', + slug: 'providers--microsoft', + symbolSet: 'symbols28', + }, + { + packageName: '@askrjs/auth', + version: '0.5.0', + subpath: './providers/google', + importName: '@askrjs/auth/providers/google', + slug: 'providers--google', + symbolSet: 'symbols29', + }, + { + packageName: '@askrjs/auth', + version: '0.5.0', + subpath: './providers/apple', + importName: '@askrjs/auth/providers/apple', + slug: 'providers--apple', + symbolSet: 'symbols30', + }, + { + packageName: '@askrjs/charts', + version: '0.5.0', + subpath: '.', + importName: '@askrjs/charts', + slug: 'root', + symbolSet: 'symbols31', + }, + { + packageName: '@askrjs/charts', + version: '0.5.0', + subpath: './styles', + importName: '@askrjs/charts/styles', + slug: 'styles', + symbolSet: 'symbols32', + }, + { + packageName: '@askrjs/fetch', + version: '0.5.0', + subpath: '.', + importName: '@askrjs/fetch', + slug: 'root', + symbolSet: 'symbols33', + }, + { + packageName: '@askrjs/fetch', + version: '0.5.0', + subpath: './middleware', + importName: '@askrjs/fetch/middleware', + slug: 'middleware', + symbolSet: 'symbols34', + }, + { + packageName: '@askrjs/i18n', + version: '0.5.0', + subpath: '.', + importName: '@askrjs/i18n', + slug: 'root', + symbolSet: 'symbols35', + }, + { + packageName: '@askrjs/logos', + version: '0.5.0', + subpath: '.', + importName: '@askrjs/logos', + slug: 'root', + symbolSet: 'symbols36', + }, + { + packageName: '@askrjs/lucide', + version: '0.5.0', + subpath: '.', + importName: '@askrjs/lucide', + slug: 'root', + symbolSet: 'symbols37', + }, + { + packageName: '@askrjs/monaco', + version: '0.5.0', + subpath: '.', + importName: '@askrjs/monaco', + slug: 'root', + symbolSet: 'symbols38', + }, + { + packageName: '@askrjs/node', + version: '0.5.0', + subpath: '.', + importName: '@askrjs/node', + slug: 'root', + symbolSet: 'symbols39', + }, + { + packageName: '@askrjs/node', + version: '0.5.0', + subpath: './mcp', + importName: '@askrjs/node/mcp', + slug: 'mcp', + symbolSet: 'symbols40', + }, + { + packageName: '@askrjs/otel', + version: '0.5.0', + subpath: '.', + importName: '@askrjs/otel', + slug: 'root', + symbolSet: 'symbols41', + }, + { + packageName: '@askrjs/schema', + version: '0.5.0', + subpath: '.', + importName: '@askrjs/schema', + slug: 'root', + symbolSet: 'symbols42', + }, + { + packageName: '@askrjs/server', + version: '0.5.0', + subpath: '.', + importName: '@askrjs/server', + slug: 'root', + symbolSet: 'symbols43', + }, + { + packageName: '@askrjs/server', + version: '0.5.0', + subpath: './router', + importName: '@askrjs/server/router', + slug: 'router', + symbolSet: 'symbols44', + }, + { + packageName: '@askrjs/server', + version: '0.5.0', + subpath: './http', + importName: '@askrjs/server/http', + slug: 'http', + symbolSet: 'symbols45', + }, + { + packageName: '@askrjs/server', + version: '0.5.0', + subpath: './middleware', + importName: '@askrjs/server/middleware', + slug: 'middleware', + symbolSet: 'symbols46', + }, + { + packageName: '@askrjs/server', + version: '0.5.0', + subpath: './askr', + importName: '@askrjs/server/askr', + slug: 'askr', + symbolSet: 'symbols47', + }, + { + packageName: '@askrjs/server', + version: '0.5.0', + subpath: './auth', + importName: '@askrjs/server/auth', + slug: 'auth', + symbolSet: 'symbols48', + }, + { + packageName: '@askrjs/server', + version: '0.5.0', + subpath: './openapi', + importName: '@askrjs/server/openapi', + slug: 'openapi', + symbolSet: 'symbols49', + }, + { + packageName: '@askrjs/server', + version: '0.5.0', + subpath: './mcp', + importName: '@askrjs/server/mcp', + slug: 'mcp', + symbolSet: 'symbols50', + }, + { + packageName: '@askrjs/server', + version: '0.5.0', + subpath: './testing', + importName: '@askrjs/server/testing', + slug: 'testing', + symbolSet: 'symbols51', + }, + { + packageName: '@askrjs/testing', + version: '0.5.0', + subpath: '.', + importName: '@askrjs/testing', + slug: 'root', + symbolSet: 'symbols52', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: '.', + importName: '@askrjs/themes', + slug: 'root', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default', + importName: '@askrjs/themes/default', + slug: 'default', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './presets', + importName: '@askrjs/themes/presets', + slug: 'presets', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './components', + importName: '@askrjs/themes/components', + slug: 'components', + symbolSet: 'symbols54', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './theme', + importName: '@askrjs/themes/theme', + slug: 'theme', + symbolSet: 'symbols55', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './ssr', + importName: '@askrjs/themes/ssr', + slug: 'ssr', + symbolSet: 'symbols56', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/tokens.css', + importName: '@askrjs/themes/default/tokens.css', + slug: 'default--tokens.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/foundations.css', + importName: '@askrjs/themes/default/foundations.css', + slug: 'default--foundations.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/input.css', + importName: '@askrjs/themes/default/input.css', + slug: 'default--input.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/label.css', + importName: '@askrjs/themes/default/label.css', + slug: 'default--label.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './accordion', + importName: '@askrjs/themes/accordion', + slug: 'accordion', + symbolSet: 'symbols57', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './alert-dialog', + importName: '@askrjs/themes/alert-dialog', + slug: 'alert-dialog', + symbolSet: 'symbols58', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './alert', + importName: '@askrjs/themes/alert', + slug: 'alert', + symbolSet: 'symbols59', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './aspect-ratio', + importName: '@askrjs/themes/aspect-ratio', + slug: 'aspect-ratio', + symbolSet: 'symbols60', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './avatar', + importName: '@askrjs/themes/avatar', + slug: 'avatar', + symbolSet: 'symbols61', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './badge', + importName: '@askrjs/themes/badge', + slug: 'badge', + symbolSet: 'symbols62', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './block', + importName: '@askrjs/themes/block', + slug: 'block', + symbolSet: 'symbols63', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './breadcrumb', + importName: '@askrjs/themes/breadcrumb', + slug: 'breadcrumb', + symbolSet: 'symbols64', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './button-group', + importName: '@askrjs/themes/button-group', + slug: 'button-group', + symbolSet: 'symbols65', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './button', + importName: '@askrjs/themes/button', + slug: 'button', + symbolSet: 'symbols66', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './calendar', + importName: '@askrjs/themes/calendar', + slug: 'calendar', + symbolSet: 'symbols67', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './card', + importName: '@askrjs/themes/card', + slug: 'card', + symbolSet: 'symbols68', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './carousel', + importName: '@askrjs/themes/carousel', + slug: 'carousel', + symbolSet: 'symbols69', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './center', + importName: '@askrjs/themes/center', + slug: 'center', + symbolSet: 'symbols70', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './checkbox', + importName: '@askrjs/themes/checkbox', + slug: 'checkbox', + symbolSet: 'symbols71', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './cluster', + importName: '@askrjs/themes/cluster', + slug: 'cluster', + symbolSet: 'symbols72', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './collapsible', + importName: '@askrjs/themes/collapsible', + slug: 'collapsible', + symbolSet: 'symbols73', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './combobox', + importName: '@askrjs/themes/combobox', + slug: 'combobox', + symbolSet: 'symbols74', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './command', + importName: '@askrjs/themes/command', + slug: 'command', + symbolSet: 'symbols75', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './container', + importName: '@askrjs/themes/container', + slug: 'container', + symbolSet: 'symbols76', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './context-menu', + importName: '@askrjs/themes/context-menu', + slug: 'context-menu', + symbolSet: 'symbols77', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './data-table', + importName: '@askrjs/themes/data-table', + slug: 'data-table', + symbolSet: 'symbols78', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './date-picker', + importName: '@askrjs/themes/date-picker', + slug: 'date-picker', + symbolSet: 'symbols79', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './dialog', + importName: '@askrjs/themes/dialog', + slug: 'dialog', + symbolSet: 'symbols80', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './direction', + importName: '@askrjs/themes/direction', + slug: 'direction', + symbolSet: 'symbols81', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './dropdown-menu', + importName: '@askrjs/themes/dropdown-menu', + slug: 'dropdown-menu', + symbolSet: 'symbols82', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './empty', + importName: '@askrjs/themes/empty', + slug: 'empty', + symbolSet: 'symbols83', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './field', + importName: '@askrjs/themes/field', + slug: 'field', + symbolSet: 'symbols84', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './form', + importName: '@askrjs/themes/form', + slug: 'form', + symbolSet: 'symbols85', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './grid', + importName: '@askrjs/themes/grid', + slug: 'grid', + symbolSet: 'symbols86', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './heading', + importName: '@askrjs/themes/heading', + slug: 'heading', + symbolSet: 'symbols87', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './hover-card', + importName: '@askrjs/themes/hover-card', + slug: 'hover-card', + symbolSet: 'symbols88', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './input-group', + importName: '@askrjs/themes/input-group', + slug: 'input-group', + symbolSet: 'symbols89', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './input-otp', + importName: '@askrjs/themes/input-otp', + slug: 'input-otp', + symbolSet: 'symbols90', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './input', + importName: '@askrjs/themes/input', + slug: 'input', + symbolSet: 'symbols91', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './item', + importName: '@askrjs/themes/item', + slug: 'item', + symbolSet: 'symbols92', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './kbd', + importName: '@askrjs/themes/kbd', + slug: 'kbd', + symbolSet: 'symbols93', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './label', + importName: '@askrjs/themes/label', + slug: 'label', + symbolSet: 'symbols94', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './menubar', + importName: '@askrjs/themes/menubar', + slug: 'menubar', + symbolSet: 'symbols95', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './native-select', + importName: '@askrjs/themes/native-select', + slug: 'native-select', + symbolSet: 'symbols96', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './navigation-menu', + importName: '@askrjs/themes/navigation-menu', + slug: 'navigation-menu', + symbolSet: 'symbols97', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './page-header', + importName: '@askrjs/themes/page-header', + slug: 'page-header', + symbolSet: 'symbols98', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './page', + importName: '@askrjs/themes/page', + slug: 'page', + symbolSet: 'symbols99', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './pagination', + importName: '@askrjs/themes/pagination', + slug: 'pagination', + symbolSet: 'symbols100', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './popover', + importName: '@askrjs/themes/popover', + slug: 'popover', + symbolSet: 'symbols101', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './progress', + importName: '@askrjs/themes/progress', + slug: 'progress', + symbolSet: 'symbols102', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './radio-group', + importName: '@askrjs/themes/radio-group', + slug: 'radio-group', + symbolSet: 'symbols103', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './resizable', + importName: '@askrjs/themes/resizable', + slug: 'resizable', + symbolSet: 'symbols104', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './scroll-area', + importName: '@askrjs/themes/scroll-area', + slug: 'scroll-area', + symbolSet: 'symbols105', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './section', + importName: '@askrjs/themes/section', + slug: 'section', + symbolSet: 'symbols106', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './select', + importName: '@askrjs/themes/select', + slug: 'select', + symbolSet: 'symbols107', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './separator', + importName: '@askrjs/themes/separator', + slug: 'separator', + symbolSet: 'symbols108', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './sheet', + importName: '@askrjs/themes/sheet', + slug: 'sheet', + symbolSet: 'symbols109', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './sidebar', + importName: '@askrjs/themes/sidebar', + slug: 'sidebar', + symbolSet: 'symbols110', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './skeleton', + importName: '@askrjs/themes/skeleton', + slug: 'skeleton', + symbolSet: 'symbols111', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './slider', + importName: '@askrjs/themes/slider', + slug: 'slider', + symbolSet: 'symbols112', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './spinner', + importName: '@askrjs/themes/spinner', + slug: 'spinner', + symbolSet: 'symbols113', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './stack', + importName: '@askrjs/themes/stack', + slug: 'stack', + symbolSet: 'symbols114', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './switch', + importName: '@askrjs/themes/switch', + slug: 'switch', + symbolSet: 'symbols115', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './table', + importName: '@askrjs/themes/table', + slug: 'table', + symbolSet: 'symbols116', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './tabs', + importName: '@askrjs/themes/tabs', + slug: 'tabs', + symbolSet: 'symbols117', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './text', + importName: '@askrjs/themes/text', + slug: 'text', + symbolSet: 'symbols118', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './textarea', + importName: '@askrjs/themes/textarea', + slug: 'textarea', + symbolSet: 'symbols119', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './toast', + importName: '@askrjs/themes/toast', + slug: 'toast', + symbolSet: 'symbols120', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './toggle-group', + importName: '@askrjs/themes/toggle-group', + slug: 'toggle-group', + symbolSet: 'symbols121', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './toggle', + importName: '@askrjs/themes/toggle', + slug: 'toggle', + symbolSet: 'symbols122', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './tooltip', + importName: '@askrjs/themes/tooltip', + slug: 'tooltip', + symbolSet: 'symbols123', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './typography', + importName: '@askrjs/themes/typography', + slug: 'typography', + symbolSet: 'symbols124', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './toaster', + importName: '@askrjs/themes/toaster', + slug: 'toaster', + symbolSet: 'symbols125', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/actions/button-group.css', + importName: '@askrjs/themes/default/styles/actions/button-group.css', + slug: 'default--styles--actions--button-group.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/actions/button.css', + importName: '@askrjs/themes/default/styles/actions/button.css', + slug: 'default--styles--actions--button.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/actions/copy-button.css', + importName: '@askrjs/themes/default/styles/actions/copy-button.css', + slug: 'default--styles--actions--copy-button.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/actions/toggle-group.css', + importName: '@askrjs/themes/default/styles/actions/toggle-group.css', + slug: 'default--styles--actions--toggle-group.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/base/accessibility.css', + importName: '@askrjs/themes/default/styles/base/accessibility.css', + slug: 'default--styles--base--accessibility.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/base/icon.css', + importName: '@askrjs/themes/default/styles/base/icon.css', + slug: 'default--styles--base--icon.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/base/reset.css', + importName: '@askrjs/themes/default/styles/base/reset.css', + slug: 'default--styles--base--reset.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/base/text.css', + importName: '@askrjs/themes/default/styles/base/text.css', + slug: 'default--styles--base--text.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/base/typography.css', + importName: '@askrjs/themes/default/styles/base/typography.css', + slug: 'default--styles--base--typography.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/base/utilities.css', + importName: '@askrjs/themes/default/styles/base/utilities.css', + slug: 'default--styles--base--utilities.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/disclosure/accordion.css', + importName: '@askrjs/themes/default/styles/disclosure/accordion.css', + slug: 'default--styles--disclosure--accordion.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/alert.css', + importName: '@askrjs/themes/default/styles/display/alert.css', + slug: 'default--styles--display--alert.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/avatar.css', + importName: '@askrjs/themes/default/styles/display/avatar.css', + slug: 'default--styles--display--avatar.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/badge.css', + importName: '@askrjs/themes/default/styles/display/badge.css', + slug: 'default--styles--display--badge.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/card.css', + importName: '@askrjs/themes/default/styles/display/card.css', + slug: 'default--styles--display--card.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/catalog.css', + importName: '@askrjs/themes/default/styles/display/catalog.css', + slug: 'default--styles--display--catalog.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/coverage.css', + importName: '@askrjs/themes/default/styles/display/coverage.css', + slug: 'default--styles--display--coverage.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/meta-strip.css', + importName: '@askrjs/themes/default/styles/display/meta-strip.css', + slug: 'default--styles--display--meta-strip.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/progress-circle.css', + importName: '@askrjs/themes/default/styles/display/progress-circle.css', + slug: 'default--styles--display--progress-circle.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/progress.css', + importName: '@askrjs/themes/default/styles/display/progress.css', + slug: 'default--styles--display--progress.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/scroll-area.css', + importName: '@askrjs/themes/default/styles/display/scroll-area.css', + slug: 'default--styles--display--scroll-area.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/separator.css', + importName: '@askrjs/themes/default/styles/display/separator.css', + slug: 'default--styles--display--separator.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/skeleton.css', + importName: '@askrjs/themes/default/styles/display/skeleton.css', + slug: 'default--styles--display--skeleton.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/spinner.css', + importName: '@askrjs/themes/default/styles/display/spinner.css', + slug: 'default--styles--display--spinner.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/stat.css', + importName: '@askrjs/themes/default/styles/display/stat.css', + slug: 'default--styles--display--stat.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/table.css', + importName: '@askrjs/themes/default/styles/display/table.css', + slug: 'default--styles--display--table.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/virtual-list.css', + importName: '@askrjs/themes/default/styles/display/virtual-list.css', + slug: 'default--styles--display--virtual-list.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/display/virtual-table.css', + importName: '@askrjs/themes/default/styles/display/virtual-table.css', + slug: 'default--styles--display--virtual-table.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/forms/checkbox.css', + importName: '@askrjs/themes/default/styles/forms/checkbox.css', + slug: 'default--styles--forms--checkbox.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/forms/field.css', + importName: '@askrjs/themes/default/styles/forms/field.css', + slug: 'default--styles--forms--field.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/forms/input-group.css', + importName: '@askrjs/themes/default/styles/forms/input-group.css', + slug: 'default--styles--forms--input-group.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/forms/input.css', + importName: '@askrjs/themes/default/styles/forms/input.css', + slug: 'default--styles--forms--input.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/forms/label.css', + importName: '@askrjs/themes/default/styles/forms/label.css', + slug: 'default--styles--forms--label.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/forms/radio-group.css', + importName: '@askrjs/themes/default/styles/forms/radio-group.css', + slug: 'default--styles--forms--radio-group.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/forms/select.css', + importName: '@askrjs/themes/default/styles/forms/select.css', + slug: 'default--styles--forms--select.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/forms/slider.css', + importName: '@askrjs/themes/default/styles/forms/slider.css', + slug: 'default--styles--forms--slider.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/forms/switch.css', + importName: '@askrjs/themes/default/styles/forms/switch.css', + slug: 'default--styles--forms--switch.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/forms/textarea.css', + importName: '@askrjs/themes/default/styles/forms/textarea.css', + slug: 'default--styles--forms--textarea.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/layout/aspect-ratio.css', + importName: '@askrjs/themes/default/styles/layout/aspect-ratio.css', + slug: 'default--styles--layout--aspect-ratio.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/layout/block.css', + importName: '@askrjs/themes/default/styles/layout/block.css', + slug: 'default--styles--layout--block.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/layout/grid.css', + importName: '@askrjs/themes/default/styles/layout/grid.css', + slug: 'default--styles--layout--grid.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/layout/layout.css', + importName: '@askrjs/themes/default/styles/layout/layout.css', + slug: 'default--styles--layout--layout.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/layout/patterns.css', + importName: '@askrjs/themes/default/styles/layout/patterns.css', + slug: 'default--styles--layout--patterns.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/navigation/menu.css', + importName: '@askrjs/themes/default/styles/navigation/menu.css', + slug: 'default--styles--navigation--menu.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/navigation/nav.css', + importName: '@askrjs/themes/default/styles/navigation/nav.css', + slug: 'default--styles--navigation--nav.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/overlays/alert-dialog.css', + importName: '@askrjs/themes/default/styles/overlays/alert-dialog.css', + slug: 'default--styles--overlays--alert-dialog.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/overlays/dialog.css', + importName: '@askrjs/themes/default/styles/overlays/dialog.css', + slug: 'default--styles--overlays--dialog.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/overlays/dropdown.css', + importName: '@askrjs/themes/default/styles/overlays/dropdown.css', + slug: 'default--styles--overlays--dropdown.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/overlays/hover-card.css', + importName: '@askrjs/themes/default/styles/overlays/hover-card.css', + slug: 'default--styles--overlays--hover-card.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/overlays/menubar.css', + importName: '@askrjs/themes/default/styles/overlays/menubar.css', + slug: 'default--styles--overlays--menubar.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/overlays/popover.css', + importName: '@askrjs/themes/default/styles/overlays/popover.css', + slug: 'default--styles--overlays--popover.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/overlays/toast.css', + importName: '@askrjs/themes/default/styles/overlays/toast.css', + slug: 'default--styles--overlays--toast.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/overlays/tooltip.css', + importName: '@askrjs/themes/default/styles/overlays/tooltip.css', + slug: 'default--styles--overlays--tooltip.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/shell/brand.css', + importName: '@askrjs/themes/default/styles/shell/brand.css', + slug: 'default--styles--shell--brand.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/shell/footer.css', + importName: '@askrjs/themes/default/styles/shell/footer.css', + slug: 'default--styles--shell--footer.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/shell/header.css', + importName: '@askrjs/themes/default/styles/shell/header.css', + slug: 'default--styles--shell--header.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/shell/navbar.css', + importName: '@askrjs/themes/default/styles/shell/navbar.css', + slug: 'default--styles--shell--navbar.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './default/styles/shell/sidebar.css', + importName: '@askrjs/themes/default/styles/shell/sidebar.css', + slug: 'default--styles--shell--sidebar.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/index.css', + importName: '@askrjs/themes/templates/theme/index.css', + slug: 'templates--theme--index.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/actions/button-group.css', + importName: + '@askrjs/themes/templates/theme/styles/actions/button-group.css', + slug: 'templates--theme--styles--actions--button-group.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/actions/button.css', + importName: '@askrjs/themes/templates/theme/styles/actions/button.css', + slug: 'templates--theme--styles--actions--button.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/actions/copy-button.css', + importName: '@askrjs/themes/templates/theme/styles/actions/copy-button.css', + slug: 'templates--theme--styles--actions--copy-button.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/actions/toggle-group.css', + importName: + '@askrjs/themes/templates/theme/styles/actions/toggle-group.css', + slug: 'templates--theme--styles--actions--toggle-group.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/base/accessibility.css', + importName: '@askrjs/themes/templates/theme/styles/base/accessibility.css', + slug: 'templates--theme--styles--base--accessibility.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/base/icon.css', + importName: '@askrjs/themes/templates/theme/styles/base/icon.css', + slug: 'templates--theme--styles--base--icon.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/base/reset.css', + importName: '@askrjs/themes/templates/theme/styles/base/reset.css', + slug: 'templates--theme--styles--base--reset.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/base/text.css', + importName: '@askrjs/themes/templates/theme/styles/base/text.css', + slug: 'templates--theme--styles--base--text.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/base/typography.css', + importName: '@askrjs/themes/templates/theme/styles/base/typography.css', + slug: 'templates--theme--styles--base--typography.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/base/utilities.css', + importName: '@askrjs/themes/templates/theme/styles/base/utilities.css', + slug: 'templates--theme--styles--base--utilities.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/disclosure/accordion.css', + importName: + '@askrjs/themes/templates/theme/styles/disclosure/accordion.css', + slug: 'templates--theme--styles--disclosure--accordion.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/alert.css', + importName: '@askrjs/themes/templates/theme/styles/display/alert.css', + slug: 'templates--theme--styles--display--alert.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/avatar.css', + importName: '@askrjs/themes/templates/theme/styles/display/avatar.css', + slug: 'templates--theme--styles--display--avatar.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/badge.css', + importName: '@askrjs/themes/templates/theme/styles/display/badge.css', + slug: 'templates--theme--styles--display--badge.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/card.css', + importName: '@askrjs/themes/templates/theme/styles/display/card.css', + slug: 'templates--theme--styles--display--card.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/catalog.css', + importName: '@askrjs/themes/templates/theme/styles/display/catalog.css', + slug: 'templates--theme--styles--display--catalog.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/coverage.css', + importName: '@askrjs/themes/templates/theme/styles/display/coverage.css', + slug: 'templates--theme--styles--display--coverage.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/meta-strip.css', + importName: '@askrjs/themes/templates/theme/styles/display/meta-strip.css', + slug: 'templates--theme--styles--display--meta-strip.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/progress-circle.css', + importName: + '@askrjs/themes/templates/theme/styles/display/progress-circle.css', + slug: 'templates--theme--styles--display--progress-circle.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/progress.css', + importName: '@askrjs/themes/templates/theme/styles/display/progress.css', + slug: 'templates--theme--styles--display--progress.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/scroll-area.css', + importName: '@askrjs/themes/templates/theme/styles/display/scroll-area.css', + slug: 'templates--theme--styles--display--scroll-area.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/separator.css', + importName: '@askrjs/themes/templates/theme/styles/display/separator.css', + slug: 'templates--theme--styles--display--separator.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/skeleton.css', + importName: '@askrjs/themes/templates/theme/styles/display/skeleton.css', + slug: 'templates--theme--styles--display--skeleton.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/spinner.css', + importName: '@askrjs/themes/templates/theme/styles/display/spinner.css', + slug: 'templates--theme--styles--display--spinner.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/charts', - version: '0.4.0', - subpath: '.', - importName: '@askrjs/charts', - slug: 'root', - symbolSet: 'symbols26', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/stat.css', + importName: '@askrjs/themes/templates/theme/styles/display/stat.css', + slug: 'templates--theme--styles--display--stat.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/charts', - version: '0.4.0', - subpath: './styles', - importName: '@askrjs/charts/styles', - slug: 'styles', - symbolSet: 'symbols27', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/table.css', + importName: '@askrjs/themes/templates/theme/styles/display/table.css', + slug: 'templates--theme--styles--display--table.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/fetch', - version: '0.4.2', - subpath: '.', - importName: '@askrjs/fetch', - slug: 'root', - symbolSet: 'symbols28', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/virtual-list.css', + importName: + '@askrjs/themes/templates/theme/styles/display/virtual-list.css', + slug: 'templates--theme--styles--display--virtual-list.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/fetch', - version: '0.4.2', - subpath: './middleware', - importName: '@askrjs/fetch/middleware', - slug: 'middleware', - symbolSet: 'symbols29', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/display/virtual-table.css', + importName: + '@askrjs/themes/templates/theme/styles/display/virtual-table.css', + slug: 'templates--theme--styles--display--virtual-table.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/i18n', - version: '0.4.0', - subpath: '.', - importName: '@askrjs/i18n', - slug: 'root', - symbolSet: 'symbols30', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/forms/checkbox.css', + importName: '@askrjs/themes/templates/theme/styles/forms/checkbox.css', + slug: 'templates--theme--styles--forms--checkbox.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/logos', - version: '0.4.0', - subpath: '.', - importName: '@askrjs/logos', - slug: 'root', - symbolSet: 'symbols31', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/forms/field.css', + importName: '@askrjs/themes/templates/theme/styles/forms/field.css', + slug: 'templates--theme--styles--forms--field.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/lucide', - version: '0.4.0', - subpath: '.', - importName: '@askrjs/lucide', - slug: 'root', - symbolSet: 'symbols32', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/forms/input-group.css', + importName: '@askrjs/themes/templates/theme/styles/forms/input-group.css', + slug: 'templates--theme--styles--forms--input-group.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/monaco', - version: '0.4.0', - subpath: '.', - importName: '@askrjs/monaco', - slug: 'root', - symbolSet: 'symbols33', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/forms/input.css', + importName: '@askrjs/themes/templates/theme/styles/forms/input.css', + slug: 'templates--theme--styles--forms--input.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/monaco', - version: '0.4.0', - subpath: './monaco-editor', - importName: '@askrjs/monaco/monaco-editor', - slug: 'monaco-editor', - symbolSet: 'symbols34', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/forms/label.css', + importName: '@askrjs/themes/templates/theme/styles/forms/label.css', + slug: 'templates--theme--styles--forms--label.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/monaco', - version: '0.4.0', - subpath: './testing', - importName: '@askrjs/monaco/testing', - slug: 'testing', - symbolSet: 'symbols35', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/forms/radio-group.css', + importName: '@askrjs/themes/templates/theme/styles/forms/radio-group.css', + slug: 'templates--theme--styles--forms--radio-group.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/node', - version: '0.4.0', - subpath: '.', - importName: '@askrjs/node', - slug: 'root', - symbolSet: 'symbols36', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/forms/select.css', + importName: '@askrjs/themes/templates/theme/styles/forms/select.css', + slug: 'templates--theme--styles--forms--select.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/node', - version: '0.4.0', - subpath: './mcp', - importName: '@askrjs/node/mcp', - slug: 'mcp', - symbolSet: 'symbols37', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/forms/slider.css', + importName: '@askrjs/themes/templates/theme/styles/forms/slider.css', + slug: 'templates--theme--styles--forms--slider.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/otel', - version: '0.4.0', - subpath: '.', - importName: '@askrjs/otel', - slug: 'root', - symbolSet: 'symbols38', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/forms/switch.css', + importName: '@askrjs/themes/templates/theme/styles/forms/switch.css', + slug: 'templates--theme--styles--forms--switch.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/schema', - version: '0.4.1', - subpath: '.', - importName: '@askrjs/schema', - slug: 'root', - symbolSet: 'symbols39', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/forms/textarea.css', + importName: '@askrjs/themes/templates/theme/styles/forms/textarea.css', + slug: 'templates--theme--styles--forms--textarea.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/server', - version: '0.4.1', - subpath: '.', - importName: '@askrjs/server', - slug: 'root', - symbolSet: 'symbols40', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/layout/aspect-ratio.css', + importName: '@askrjs/themes/templates/theme/styles/layout/aspect-ratio.css', + slug: 'templates--theme--styles--layout--aspect-ratio.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/server', - version: '0.4.1', - subpath: './router', - importName: '@askrjs/server/router', - slug: 'router', - symbolSet: 'symbols41', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/layout/block.css', + importName: '@askrjs/themes/templates/theme/styles/layout/block.css', + slug: 'templates--theme--styles--layout--block.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/server', - version: '0.4.1', - subpath: './http', - importName: '@askrjs/server/http', - slug: 'http', - symbolSet: 'symbols42', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/layout/grid.css', + importName: '@askrjs/themes/templates/theme/styles/layout/grid.css', + slug: 'templates--theme--styles--layout--grid.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/server', - version: '0.4.1', - subpath: './middleware', - importName: '@askrjs/server/middleware', - slug: 'middleware', - symbolSet: 'symbols43', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/layout/layout.css', + importName: '@askrjs/themes/templates/theme/styles/layout/layout.css', + slug: 'templates--theme--styles--layout--layout.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/server', - version: '0.4.1', - subpath: './askr', - importName: '@askrjs/server/askr', - slug: 'askr', - symbolSet: 'symbols44', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/layout/patterns.css', + importName: '@askrjs/themes/templates/theme/styles/layout/patterns.css', + slug: 'templates--theme--styles--layout--patterns.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/server', - version: '0.4.1', - subpath: './auth', - importName: '@askrjs/server/auth', - slug: 'auth', - symbolSet: 'symbols45', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/navigation/menu.css', + importName: '@askrjs/themes/templates/theme/styles/navigation/menu.css', + slug: 'templates--theme--styles--navigation--menu.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/server', - version: '0.4.1', - subpath: './openapi', - importName: '@askrjs/server/openapi', - slug: 'openapi', - symbolSet: 'symbols46', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/navigation/nav.css', + importName: '@askrjs/themes/templates/theme/styles/navigation/nav.css', + slug: 'templates--theme--styles--navigation--nav.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/server', - version: '0.4.1', - subpath: './mcp', - importName: '@askrjs/server/mcp', - slug: 'mcp', - symbolSet: 'symbols47', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/overlays/alert-dialog.css', + importName: + '@askrjs/themes/templates/theme/styles/overlays/alert-dialog.css', + slug: 'templates--theme--styles--overlays--alert-dialog.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/server', - version: '0.4.1', - subpath: './testing', - importName: '@askrjs/server/testing', - slug: 'testing', - symbolSet: 'symbols48', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/overlays/dialog.css', + importName: '@askrjs/themes/templates/theme/styles/overlays/dialog.css', + slug: 'templates--theme--styles--overlays--dialog.css', + symbolSet: 'symbols53', }, { - packageName: '@askrjs/testing', - version: '0.4.1', - subpath: '.', - importName: '@askrjs/testing', - slug: 'root', - symbolSet: 'symbols49', + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/styles/overlays/dropdown.css', + importName: '@askrjs/themes/templates/theme/styles/overlays/dropdown.css', + slug: 'templates--theme--styles--overlays--dropdown.css', + symbolSet: 'symbols53', }, { packageName: '@askrjs/themes', - version: '0.4.2', - subpath: '.', - importName: '@askrjs/themes', - slug: 'root', - symbolSet: 'symbols50', + version: '0.5.0', + subpath: './templates/theme/styles/overlays/hover-card.css', + importName: '@askrjs/themes/templates/theme/styles/overlays/hover-card.css', + slug: 'templates--theme--styles--overlays--hover-card.css', + symbolSet: 'symbols53', }, { packageName: '@askrjs/themes', - version: '0.4.2', - subpath: './default', - importName: '@askrjs/themes/default', - slug: 'default', - symbolSet: 'symbols50', + version: '0.5.0', + subpath: './templates/theme/styles/overlays/menubar.css', + importName: '@askrjs/themes/templates/theme/styles/overlays/menubar.css', + slug: 'templates--theme--styles--overlays--menubar.css', + symbolSet: 'symbols53', }, { packageName: '@askrjs/themes', - version: '0.4.2', - subpath: './presets', - importName: '@askrjs/themes/presets', - slug: 'presets', - symbolSet: 'symbols50', + version: '0.5.0', + subpath: './templates/theme/styles/overlays/popover.css', + importName: '@askrjs/themes/templates/theme/styles/overlays/popover.css', + slug: 'templates--theme--styles--overlays--popover.css', + symbolSet: 'symbols53', }, { packageName: '@askrjs/themes', - version: '0.4.2', - subpath: './components', - importName: '@askrjs/themes/components', - slug: 'components', - symbolSet: 'symbols51', + version: '0.5.0', + subpath: './templates/theme/styles/overlays/toast.css', + importName: '@askrjs/themes/templates/theme/styles/overlays/toast.css', + slug: 'templates--theme--styles--overlays--toast.css', + symbolSet: 'symbols53', }, { packageName: '@askrjs/themes', - version: '0.4.2', - subpath: './theme', - importName: '@askrjs/themes/theme', - slug: 'theme', - symbolSet: 'symbols52', + version: '0.5.0', + subpath: './templates/theme/styles/overlays/tooltip.css', + importName: '@askrjs/themes/templates/theme/styles/overlays/tooltip.css', + slug: 'templates--theme--styles--overlays--tooltip.css', + symbolSet: 'symbols53', }, { packageName: '@askrjs/themes', - version: '0.4.2', - subpath: './ssr', - importName: '@askrjs/themes/ssr', - slug: 'ssr', + version: '0.5.0', + subpath: './templates/theme/styles/shell/brand.css', + importName: '@askrjs/themes/templates/theme/styles/shell/brand.css', + slug: 'templates--theme--styles--shell--brand.css', symbolSet: 'symbols53', }, { packageName: '@askrjs/themes', - version: '0.4.2', - subpath: './default/tokens.css', - importName: '@askrjs/themes/default/tokens.css', - slug: 'default--tokens.css', - symbolSet: 'symbols50', + version: '0.5.0', + subpath: './templates/theme/styles/shell/footer.css', + importName: '@askrjs/themes/templates/theme/styles/shell/footer.css', + slug: 'templates--theme--styles--shell--footer.css', + symbolSet: 'symbols53', }, { packageName: '@askrjs/themes', - version: '0.4.2', - subpath: './default/foundations.css', - importName: '@askrjs/themes/default/foundations.css', - slug: 'default--foundations.css', - symbolSet: 'symbols50', + version: '0.5.0', + subpath: './templates/theme/styles/shell/header.css', + importName: '@askrjs/themes/templates/theme/styles/shell/header.css', + slug: 'templates--theme--styles--shell--header.css', + symbolSet: 'symbols53', }, { packageName: '@askrjs/themes', - version: '0.4.2', - subpath: './default/input.css', - importName: '@askrjs/themes/default/input.css', - slug: 'default--input.css', - symbolSet: 'symbols50', + version: '0.5.0', + subpath: './templates/theme/styles/shell/navbar.css', + importName: '@askrjs/themes/templates/theme/styles/shell/navbar.css', + slug: 'templates--theme--styles--shell--navbar.css', + symbolSet: 'symbols53', }, { packageName: '@askrjs/themes', - version: '0.4.2', - subpath: './default/label.css', - importName: '@askrjs/themes/default/label.css', - slug: 'default--label.css', - symbolSet: 'symbols50', + version: '0.5.0', + subpath: './templates/theme/styles/shell/sidebar.css', + importName: '@askrjs/themes/templates/theme/styles/shell/sidebar.css', + slug: 'templates--theme--styles--shell--sidebar.css', + symbolSet: 'symbols53', + }, + { + packageName: '@askrjs/themes', + version: '0.5.0', + subpath: './templates/theme/tokens.css', + importName: '@askrjs/themes/templates/theme/tokens.css', + slug: 'templates--theme--tokens.css', + symbolSet: 'symbols53', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: '.', importName: '@askrjs/ui', slug: 'root', - symbolSet: 'symbols54', + symbolSet: 'symbols126', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './avatar', importName: '@askrjs/ui/avatar', slug: 'avatar', - symbolSet: 'symbols55', + symbolSet: 'symbols127', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './button', importName: '@askrjs/ui/button', slug: 'button', - symbolSet: 'symbols56', + symbolSet: 'symbols128', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './checkbox', importName: '@askrjs/ui/checkbox', slug: 'checkbox', - symbolSet: 'symbols57', + symbolSet: 'symbols129', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './input', importName: '@askrjs/ui/input', slug: 'input', - symbolSet: 'symbols58', + symbolSet: 'symbols130', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './form', importName: '@askrjs/ui/form', slug: 'form', - symbolSet: 'symbols59', + symbolSet: 'symbols131', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './label', importName: '@askrjs/ui/label', slug: 'label', - symbolSet: 'symbols60', + symbolSet: 'symbols132', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './progress', importName: '@askrjs/ui/progress', slug: 'progress', - symbolSet: 'symbols61', + symbolSet: 'symbols133', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './progress-circle', importName: '@askrjs/ui/progress-circle', slug: 'progress-circle', - symbolSet: 'symbols62', + symbolSet: 'symbols134', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './radio-group', importName: '@askrjs/ui/radio-group', slug: 'radio-group', - symbolSet: 'symbols63', + symbolSet: 'symbols135', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './select', importName: '@askrjs/ui/select', slug: 'select', - symbolSet: 'symbols64', + symbolSet: 'symbols136', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './slider', importName: '@askrjs/ui/slider', slug: 'slider', - symbolSet: 'symbols65', + symbolSet: 'symbols137', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './switch', importName: '@askrjs/ui/switch', slug: 'switch', - symbolSet: 'symbols66', + symbolSet: 'symbols138', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './table', importName: '@askrjs/ui/table', slug: 'table', - symbolSet: 'symbols67', + symbolSet: 'symbols139', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './virtual-list', importName: '@askrjs/ui/virtual-list', slug: 'virtual-list', - symbolSet: 'symbols68', + symbolSet: 'symbols140', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './virtual-table', importName: '@askrjs/ui/virtual-table', slug: 'virtual-table', - symbolSet: 'symbols69', + symbolSet: 'symbols141', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './textarea', importName: '@askrjs/ui/textarea', slug: 'textarea', - symbolSet: 'symbols70', + symbolSet: 'symbols142', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './toggle', importName: '@askrjs/ui/toggle', slug: 'toggle', - symbolSet: 'symbols71', + symbolSet: 'symbols143', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './toggle-group', importName: '@askrjs/ui/toggle-group', slug: 'toggle-group', - symbolSet: 'symbols72', + symbolSet: 'symbols144', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './visually-hidden', importName: '@askrjs/ui/visually-hidden', slug: 'visually-hidden', - symbolSet: 'symbols73', + symbolSet: 'symbols145', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './accordion', importName: '@askrjs/ui/accordion', slug: 'accordion', - symbolSet: 'symbols74', + symbolSet: 'symbols146', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './alert-dialog', importName: '@askrjs/ui/alert-dialog', slug: 'alert-dialog', - symbolSet: 'symbols75', + symbolSet: 'symbols147', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './collapsible', importName: '@askrjs/ui/collapsible', slug: 'collapsible', - symbolSet: 'symbols76', + symbolSet: 'symbols148', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './dialog', importName: '@askrjs/ui/dialog', slug: 'dialog', - symbolSet: 'symbols77', + symbolSet: 'symbols149', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './dismissable-layer', importName: '@askrjs/ui/dismissable-layer', slug: 'dismissable-layer', - symbolSet: 'symbols78', + symbolSet: 'symbols150', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './dropdown', importName: '@askrjs/ui/dropdown', slug: 'dropdown', - symbolSet: 'symbols79', + symbolSet: 'symbols151', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './focus-scope', importName: '@askrjs/ui/focus-scope', slug: 'focus-scope', - symbolSet: 'symbols80', + symbolSet: 'symbols152', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './hover-card', importName: '@askrjs/ui/hover-card', slug: 'hover-card', - symbolSet: 'symbols81', + symbolSet: 'symbols153', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './menu', importName: '@askrjs/ui/menu', slug: 'menu', - symbolSet: 'symbols82', + symbolSet: 'symbols154', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './menubar', importName: '@askrjs/ui/menubar', slug: 'menubar', - symbolSet: 'symbols83', + symbolSet: 'symbols155', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './overlay-host', importName: '@askrjs/ui/overlay-host', slug: 'overlay-host', - symbolSet: 'symbols84', + symbolSet: 'symbols156', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './popover', importName: '@askrjs/ui/popover', slug: 'popover', - symbolSet: 'symbols85', + symbolSet: 'symbols157', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './scroll-area', importName: '@askrjs/ui/scroll-area', slug: 'scroll-area', - symbolSet: 'symbols86', + symbolSet: 'symbols158', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './toast', importName: '@askrjs/ui/toast', slug: 'toast', - symbolSet: 'symbols87', + symbolSet: 'symbols159', }, { packageName: '@askrjs/ui', - version: '0.4.3', + version: '0.5.0', subpath: './tooltip', importName: '@askrjs/ui/tooltip', slug: 'tooltip', - symbolSet: 'symbols88', + symbolSet: 'symbols160', }, { packageName: '@askrjs/vite', - version: '0.4.1', + version: '0.5.0', subpath: '.', importName: '@askrjs/vite', slug: 'root', - symbolSet: 'symbols89', + symbolSet: 'symbols161', }, { packageName: '@askrjs/vite', - version: '0.4.1', + version: '0.5.0', subpath: './server', importName: '@askrjs/vite/server', slug: 'server', - symbolSet: 'symbols90', + symbolSet: 'symbols162', }, { packageName: '@askrjs/vite', - version: '0.4.1', + version: '0.5.0', subpath: './image', importName: '@askrjs/vite/image', slug: 'image', - symbolSet: 'symbols91', + symbolSet: 'symbols163', }, ]; diff --git a/src/pages/docs/api-snapshot.ts b/src/pages/docs/api-snapshot.ts index 48c2a26..c2900c2 100644 --- a/src/pages/docs/api-snapshot.ts +++ b/src/pages/docs/api-snapshot.ts @@ -178,6 +178,13 @@ export const apiSymbolSets: Readonly< summary: 'Register request-local CSS produced during SSR without importing the SSR renderer in clients.', }, + { + name: 'RenderableChild', + anchor: 'renderable-child', + signature: + 'RenderableChild: VNode | JSXElement | readonly RenderableChild[]', + typeOnly: true, + }, { name: 'RenderDepthError', anchor: 'render-depth-error', @@ -371,6 +378,15 @@ export const apiSymbolSets: Readonly< summary: 'Configuration for {@link createIslands}: mounts several islands at once.', }, + { + name: 'replaceDataRuntime', + anchor: 'replace-data-runtime', + signature: + 'replaceDataRuntime: (root: Element | string, next: DataRuntime) => void', + typeOnly: true, + summary: + 'Replace the data owner of a live app without remounting or disposing the previous runtime.', + }, { name: 'SPAConfig', anchor: 'spaconfig', @@ -764,33 +780,6 @@ export const apiSymbolSets: Readonly< }, ], symbols5: [ - { - name: 'ariaDisabled', - anchor: 'aria-disabled', - signature: - 'ariaDisabled: (disabled?: boolean) => { "aria-disabled"?: "true"; }', - typeOnly: true, - summary: - 'Build an `aria-disabled` prop object; omitted entirely when `disabled` is falsy.', - }, - { - name: 'ariaExpanded', - anchor: 'aria-expanded', - signature: - 'ariaExpanded: (expanded?: boolean) => { "aria-expanded"?: "true" | "false"; }', - typeOnly: true, - summary: - 'Build an `aria-expanded` prop object; omitted when `expanded` is `undefined`.', - }, - { - name: 'ariaSelected', - anchor: 'aria-selected', - signature: - 'ariaSelected: (selected?: boolean) => { "aria-selected"?: "true" | "false"; }', - typeOnly: true, - summary: - 'Build an `aria-selected` prop object; omitted when `selected` is `undefined`.', - }, { name: 'composeHandlers', anchor: 'compose-handlers', @@ -824,41 +813,6 @@ export const apiSymbolSets: Readonly< summary: 'Combine multiple refs into one callback ref that writes to all of them.', }, - { - name: 'DefaultPreventable', - anchor: 'default-preventable', - signature: 'DefaultPreventable: any', - typeOnly: true, - summary: - 'Minimal shape of an event that can be prevented from its default action.', - members: [ - { - name: 'defaultPrevented', - summary: '', - signature: 'defaultPrevented?: boolean;', - }, - { - name: 'preventDefault', - summary: '', - signature: 'preventDefault?: () => void;', - }, - ], - }, - { - name: 'FocusLikeEvent', - anchor: 'focus-like-event', - signature: 'FocusLikeEvent: any', - typeOnly: true, - summary: - 'Structural subset of a focus event, for handlers that accept native or synthetic events.', - members: [ - { - name: 'relatedTarget', - summary: '', - signature: 'relatedTarget?: unknown;', - }, - ], - }, { name: 'formatId', anchor: 'format-id', @@ -886,31 +840,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'KeyboardLikeEvent', - anchor: 'keyboard-like-event', - signature: 'KeyboardLikeEvent: any', - typeOnly: true, - summary: - 'Structural subset of a keyboard event, for handlers that accept native or synthetic events.', - members: [ - { - name: 'key', - summary: '', - signature: 'key: string;', - }, - { - name: 'currentTarget', - summary: '', - signature: 'currentTarget?: unknown;', - }, - { - name: 'target', - summary: '', - signature: 'target?: unknown;', - }, - ], - }, { name: 'MergedProps', anchor: 'merged-props', @@ -929,35 +858,6 @@ export const apiSymbolSets: Readonly< summary: 'Merge `base` props over `injected` props: non-handler keys in `base` win,\nand matching event handlers are composed (`injected` runs first). `base`\nvalues that are `undefined` are treated as absent and never overwrite an\ninjected value; use `null` to clear one explicitly.', }, - { - name: 'PointerLikeEvent', - anchor: 'pointer-like-event', - signature: 'PointerLikeEvent: any', - typeOnly: true, - summary: - 'Structural subset of a pointer event, for handlers that accept native or synthetic events.', - members: [ - { - name: 'target', - summary: '', - signature: 'target?: unknown;', - }, - ], - }, - { - name: 'PropagationStoppable', - anchor: 'propagation-stoppable', - signature: 'PropagationStoppable: any', - typeOnly: true, - summary: 'Minimal shape of an event whose propagation can be stopped.', - members: [ - { - name: 'stopPropagation', - summary: '', - signature: 'stopPropagation?: () => void;', - }, - ], - }, { name: 'Ref', anchor: 'ref', @@ -1330,31 +1230,6 @@ export const apiSymbolSets: Readonly< summary: 'A {@link StateTuple} accessor that also reports whether it is controlled.', }, - { - name: 'isControlled', - anchor: 'is-controlled', - signature: 'isControlled: (value: T | undefined) => value is T', - typeOnly: true, - summary: 'Whether `value` represents controlled mode (not `undefined`).', - }, - { - name: 'makeControllable', - anchor: 'make-controllable', - signature: - 'makeControllable: (options: { value: T | undefined; defaultValue: T; onChange?: (next: T) => void; setInternal?: (next: T) => void; }) => { set: (next: T) => void; isControlled: boolean; }', - typeOnly: true, - summary: - 'Build a `set` function that calls `onChange` in controlled mode, or\nupdates internal state and then calls `onChange` in uncontrolled mode.', - }, - { - name: 'resolveControllable', - anchor: 'resolve-controllable', - signature: - 'resolveControllable: (value: T | undefined, defaultValue: T) => { value: T; isControlled: boolean; }', - typeOnly: true, - summary: - 'Resolve the effective value and controlled-ness for a controllable prop.', - }, ], symbols8: [ { @@ -1415,14 +1290,6 @@ export const apiSymbolSets: Readonly< summary: 'Create an empty, insertion-ordered {@link Collection} registry.', }, - { - name: 'createLayer', - anchor: 'create-layer', - signature: 'createLayer: () => LayerManager', - typeOnly: true, - summary: - 'Create a new, empty {@link LayerManager} for coordinating overlay stacking.', - }, { name: 'DefaultPortal', anchor: 'default-portal', @@ -1476,86 +1343,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'Layer', - anchor: 'layer', - signature: 'Layer: any', - typeOnly: true, - summary: - 'A registered layer entry returned by {@link LayerManager.register}.', - members: [ - { - name: 'id', - summary: 'Unique layer ID', - signature: 'id: number;', - }, - { - name: 'isTop', - summary: 'Check if this layer is the topmost', - signature: 'isTop(): boolean;', - }, - { - name: 'unregister', - summary: 'Remove this layer from the stack', - signature: 'unregister(): void;', - }, - ], - }, - { - name: 'LayerManager', - anchor: 'layer-manager', - signature: 'LayerManager: any', - typeOnly: true, - summary: 'Stacking coordinator returned by {@link createLayer}.', - members: [ - { - name: 'register', - summary: 'Register a new layer', - signature: 'register(options: LayerOptions): Layer;', - }, - { - name: 'layers', - summary: 'Get all active layers in order', - signature: 'layers(): ReadonlyArray;', - }, - { - name: 'handleEscape', - summary: 'Manually trigger escape handling on the top layer', - signature: 'handleEscape(): void;', - }, - { - name: 'handleOutsidePointer', - summary: 'Manually trigger outside pointer handling on the top layer', - signature: 'handleOutsidePointer(e: PointerEvent): void;', - }, - ], - }, - { - name: 'LayerOptions', - anchor: 'layer-options', - signature: 'LayerOptions: any', - typeOnly: true, - summary: - 'Options for registering a layer with {@link LayerManager.register}.', - members: [ - { - name: 'onEscape', - summary: 'Called when Escape is pressed and this is the top layer', - signature: 'onEscape?: () => void;', - }, - { - name: 'onOutsidePointer', - summary: - 'Called when pointer event occurs outside and this is the top layer', - signature: 'onOutsidePointer?: (e: PointerEvent) => void;', - }, - { - name: 'node', - summary: 'Optional node reference for outside pointer detection', - signature: 'node?: Node | null;', - }, - ], - }, { name: 'layout', anchor: 'layout', @@ -2164,6 +1951,14 @@ export const apiSymbolSets: Readonly< summary: "Extract a runtime's cached query data into a JSON-serializable snapshot.\nThrows a `TypeError` naming the key and path of any value that would not\nsurvive JSON transport unchanged (for example a `Date`, `Map`, or bigint).", }, + { + name: 'disposeDataRuntime', + anchor: 'dispose-data-runtime', + signature: 'disposeDataRuntime: (runtime: DataRuntime) => void', + typeOnly: true, + summary: + 'Terminally retire an isolated runtime. The shared default cannot be disposed.', + }, { name: 'getDefaultDataRuntime', anchor: 'get-default-data-runtime', @@ -2464,7 +2259,8 @@ export const apiSymbolSets: Readonly< }, { name: 'signal', - summary: '', + summary: + 'Effective fetch signal; native runtimes compose caller cancellation and retirement.', signature: 'readonly signal: AbortSignal;', }, { @@ -2522,6 +2318,53 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Why a {@link Query} is stale.', }, + { + name: 'refreshOnActivity', + anchor: 'refresh-on-activity', + signature: + 'refreshOnActivity: (prefix: string, options: RefreshOnActivityOptions) => void', + typeOnly: true, + summary: + 'Refresh live queries on browser activity, with an explicit freshness age.', + }, + { + name: 'RefreshOnActivityOptions', + anchor: 'refresh-on-activity-options', + signature: 'RefreshOnActivityOptions: any', + typeOnly: true, + summary: + 'Component-owned refresh policy for browser focus/visibility and reconnect.', + members: [ + { + name: 'staleTimeMs', + summary: + 'Age since successful completion (or initial data). Zero refreshes on every event.', + signature: "staleTimeMs: number | 'always';", + }, + { + name: 'focus', + summary: + 'Listen to window focus and visible document transitions. Defaults to true.', + signature: 'focus?: boolean;', + }, + { + name: 'online', + summary: 'Listen to the window online hint. Defaults to true.', + signature: 'online?: boolean;', + }, + { + name: 'enabled', + summary: + 'Disable listeners without changing hook order. Defaults to true.', + signature: 'enabled?: boolean;', + }, + { + name: 'runtime', + summary: '', + signature: 'runtime?: DataRuntime;', + }, + ], + }, { name: 'serveQuery', anchor: 'serve-query', @@ -2701,15 +2544,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'matchRoute', - anchor: 'match-route', - signature: - 'matchRoute: (path: string, options: MatchRouteOptions) => RouteMatch | null', - typeOnly: true, - summary: - 'Match `path` against a route registry for tests, without mounting the app.', - }, { name: 'mockQuery', anchor: 'mock-query', @@ -2741,14 +2575,6 @@ export const apiSymbolSets: Readonly< summary: "Refresh callback for a {@link mockQuery} fixture, invoked by the query's `refresh()`.", }, - { - name: 'mount', - anchor: 'mount', - signature: - 'mount: (component: ComponentFunction, options?: RenderOptions) => RenderResult', - typeOnly: true, - summary: 'Alias for {@link render}.', - }, { name: 'MutationFixture', anchor: 'mutation-fixture', @@ -2807,15 +2633,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'queryState', - anchor: 'query-state', - signature: - 'queryState: { fresh: typeof createFreshQuery; loading: (options?: MockQueryOptions) => Query; error: (error: {}, previousData?: T, options?: MockQueryOptions) => Query; refreshing: (data: T, options?: MockQueryOptions) => Query; stale: (data: T, reason?: StaleValueReason, options?: MockQueryOptions) => Query; pendingWrite: (data: T, options?: MockQueryOptions) => Query; }', - typeOnly: true, - summary: - "Alias table mirroring {@link mockQuery}'s state builders (`fresh`, `loading`, `error`, ...).", - }, { name: 'QueryTestRegistry', anchor: 'query-test-registry', @@ -3296,48 +3113,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Policy decision: allow the route to render.', }, - { - name: 'AuthContext', - anchor: 'auth-context', - signature: 'AuthContext: any', - typeOnly: true, - summary: 'Authentication state resolved for one request.', - members: [ - { - name: 'authenticated', - summary: 'Whether a valid principal was resolved.', - signature: 'authenticated: boolean;', - }, - { - name: 'principal', - summary: 'Resolved principal, or null for anonymous requests.', - signature: 'principal: P | null;', - }, - { - name: 'session', - summary: 'Resolved session, or null when no session is active.', - signature: 'session: S | null;', - }, - { - name: 'tenant', - summary: 'Resolved tenant identifier, or null when unavailable.', - signature: 'tenant: string | null;', - }, - { - name: 'scopes', - summary: 'Optional scopes carried by the credential.', - signature: 'scopes?: readonly string[];', - }, - ], - }, - { - name: 'AuthRequirement', - anchor: 'auth-requirement', - signature: - 'AuthRequirement: (context: AuthContext) => AuthDecision | PromiseLike', - typeOnly: true, - summary: 'Predicate that allows or rejects an authentication context.', - }, { name: 'createRouteRegistry', anchor: 'create-route-registry', @@ -3347,6 +3122,15 @@ export const apiSymbolSets: Readonly< summary: 'Run `definition` to declare routes (via `route`/`page`/`group`/`fallback`)\nand build a {@link RouteRegistry} to pass to `createSPA`/`hydrateSPA`.', }, + { + name: 'createSessionAuth', + anchor: 'create-session-auth', + signature: + 'createSessionAuth: (options?: SessionAuthOptions) => SessionAuth', + typeOnly: true, + summary: + 'Bind server provider sessions to router auth in SSR and the browser.', + }, { name: 'currentAuth', anchor: 'current-auth', @@ -3359,7 +3143,7 @@ export const apiSymbolSets: Readonly< name: 'currentRoute', anchor: 'current-route', signature: - 'currentRoute: () => RouteSnapshot', + 'currentRoute: () => RouteSnapshot', typeOnly: true, summary: "Read the currently active route's {@link RouteSnapshot}; reactive during component render.", @@ -3458,6 +3242,11 @@ export const apiSymbolSets: Readonly< summary: '', signature: 'meta?: RouteMetaSource;', }, + { + name: 'appMeta', + summary: '', + signature: 'appMeta?: TAppMeta;', + }, ], }, { @@ -3485,22 +3274,6 @@ export const apiSymbolSets: Readonly< summary: 'Check whether `value` is a {@link Deferred} produced by {@link defer}.', }, - { - name: 'LayoutScopeRecord', - anchor: 'layout-scope-record', - signature: 'LayoutScopeRecord: any', - typeOnly: true, - summary: - "Resolved layout component as stored in a route record's layout chain.", - members: [ - { - name: 'component', - summary: '', - signature: - 'component: (props: { children?: RenderableChild }) => RenderableChild;', - }, - ], - }, { name: 'lazy', anchor: 'lazy', @@ -3616,7 +3389,7 @@ export const apiSymbolSets: Readonly< name: 'matchRoute', anchor: 'match-route', signature: - 'matchRoute: (pathname: string, options: { registry: RouteRegistry; }) => RouteMatch | null', + 'matchRoute: (pathname: string, options: { registry: RouteRegistry; }) => RouteMatch | null', typeOnly: true, summary: 'Match a path against a route registry without resolving route policies or loading data.', @@ -3696,42 +3469,10 @@ export const apiSymbolSets: Readonly< summary: '', signature: 'meta?: RouteMetaSource;', }, - ], - }, - { - name: 'PageScopeRecord', - anchor: 'page-scope-record', - signature: 'PageScopeRecord: any', - typeOnly: true, - summary: - "Resolved page host component as stored in a route record's page chain.", - members: [ - { - name: 'component', - summary: '', - signature: 'component: RouteComponent;', - }, - ], - }, - { - name: 'ParsedSegment', - anchor: 'parsed-segment', - signature: 'ParsedSegment: any', - typeOnly: true, - summary: - 'A single parsed segment from a route path.\n\n- `static`: a literal path segment, e.g. `"users"` in `/users/{id}`\n- `param`: a `{name}` capture group — `value` holds the param name\n- `wildcard`: a bare `*` segment that captures exactly one segment\n- `splat`: a `{*name}` capture group that captures the remaining path\n- `catchall`: the `/*` catch-all that matches any depth', - members: [ { - name: 'kind', + name: 'appMeta', summary: '', - signature: - "kind: 'static' | 'param' | 'wildcard' | 'splat' | 'catchall';", - }, - { - name: 'value', - summary: - 'For static/wildcard/catchall: the literal text; for param: the param name.', - signature: 'value: string;', + signature: 'appMeta?: TAppMeta;', }, ], }, @@ -4099,6 +3840,11 @@ export const apiSymbolSets: Readonly< summary: '', signature: 'namespace?: string;', }, + { + name: 'appMeta', + summary: '', + signature: 'readonly appMeta?: TAppMeta;', + }, ], }, { @@ -4226,6 +3972,12 @@ export const apiSymbolSets: Readonly< summary: '', signature: 'meta?: RouteMetaSource;', }, + { + name: 'appMeta', + summary: + 'Immutable application declaration data; never automatically serialized for hydration.', + signature: 'appMeta?: TAppMeta;', + }, { name: 'actions', summary: '', @@ -4636,7 +4388,7 @@ export const apiSymbolSets: Readonly< { name: 'matches', summary: '', - signature: 'matches: readonly RouteMatch[];', + signature: 'matches: readonly RouteMatch[];', }, ], }, @@ -4656,6 +4408,92 @@ export const apiSymbolSets: Readonly< summary: 'Render a {@link RouteMeta} to the ``/`<meta>`/`<link>`/JSON-LD markup for the document `<head>`.', }, + { + name: 'SessionAuth', + anchor: 'session-auth', + signature: 'SessionAuth: any', + typeOnly: true, + summary: + 'Pass this exact object as the registry or boot `auth` configuration.', + members: [ + { + name: 'resolve', + summary: + 'Resolve the identity for a request. When omitted, requests are anonymous\nunless the caller supplies an identity (for example `authContext` on the\nserver, or an opted-in hydration snapshot for the initial client route).', + signature: 'readonly resolve: RouteAuthResolver;', + }, + { + name: 'dehydrate', + summary: + 'Opt in to sending a minimal identity snapshot to the browser for\nhydration. Called on the server with the identity that authorized the\npage. `authenticated`, `principal`, `tenant`, and `scopes` of the result\nare serialized verbatim into the page, so return only what the client\nneeds; the session is never sent. The client uses the snapshot to resolve\nthe initial route and, without `resolve`, as its identity for\nnavigations. Nothing crosses without this hook.', + signature: + "readonly dehydrate: NonNullable<RouteAuthOptions['dehydrate']>;", + }, + { + name: 'loginHref', + summary: '', + signature: + 'loginHref(provider: string, options: SessionLoginOptions): string;', + }, + { + name: 'logout', + summary: + 'Local logout; provider logout/revocation remains an explicit server action.', + signature: 'logout(): Promise<void>;', + }, + { + name: 'handleAuthFailure', + summary: 'Handle a decoded 401 problem or an', + signature: 'handleAuthFailure(failure: unknown): boolean;', + tags: { + askrjs: ['/fetch result/error.'], + }, + }, + ], + }, + { + name: 'SessionAuthOptions', + anchor: 'session-auth-options', + signature: 'SessionAuthOptions: any', + typeOnly: true, + summary: + 'Client binding for the same-origin askr-server provider-session routes.', + members: [ + { + name: 'loginPath', + summary: 'App-owned login page, default `/login`.', + signature: 'readonly loginPath?: string;', + }, + { + name: 'fetch', + summary: 'Native transport for session resolution and logout.', + signature: 'readonly fetch?: typeof globalThis.fetch;', + }, + ], + }, + { + name: 'SessionLoginOptions', + anchor: 'session-login-options', + signature: 'SessionLoginOptions: any', + typeOnly: true, + members: [ + { + name: 'returnTo', + summary: '', + signature: 'readonly returnTo: string;', + }, + { + name: 'resource', + summary: '', + signature: 'readonly resource?: string;', + }, + { + name: 'scopes', + summary: '', + signature: 'readonly scopes?: readonly string[];', + }, + ], + }, { name: 'to', anchor: 'to', @@ -4693,10 +4531,10 @@ export const apiSymbolSets: Readonly< name: 'action', anchor: 'action', signature: - 'action: <TInput extends Record<string, unknown>, TResult = unknown>(descriptor: ActionDescriptor<TInput>) => { state: StateTuple<ActionStatus<TResult>>; submit(input: TInput): Promise<TResult>; }', + 'action: <TInput extends Record<string, unknown>, TResult = unknown>(descriptor: ActionDescriptor<TInput>, options?: { readonly csrfToken: (signal: AbortSignal) => Promise<string | undefined>; }) => { state: StateTuple<ActionStatus<TResult>>; submit(input: TInput): Promise<TResult>; }', typeOnly: true, summary: - 'Bind an action descriptor to the calling component and return its\n`{ state, submit }` handle. `action()` allocates its status with `state()`,\nso it follows the same rule: call it during component render, at the top\nlevel and in the same order on every render. `submit()` itself may be\ncalled from event handlers or other async work.', + 'Bind an action descriptor to the calling component and return its\n`{ state, submit }` handle. `action()` allocates its status with `state()`,\nso it follows the same rule: call it during component render, at the top\nlevel and in the same order on every render. `submit()` itself may be\ncalled from event handlers or other async work. An explicit csrfToken\nresolver runs fresh for every submission under the component/data lifetime.\nIts undefined result omits the token instead of falling back to SSR data.', }, { name: 'ActionDescriptor', @@ -5099,15 +4937,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'SSRRoute', - anchor: 'ssrroute', - signature: - 'SSRRoute: {\n path: string;\n handler: RouteHandler;\n namespace?: string;\n}', - typeOnly: true, - summary: - 'A single path-to-handler route binding accepted by low-level SSR route rendering.', - }, { name: 'SSRStyleRegistration', anchor: 'ssrstyle-registration', @@ -5172,13 +5001,6 @@ export const apiSymbolSets: Readonly< summary: "Create a Static Site Generator\n\nUsage:\n```ts\nconst ssg = createStaticGen({\n registry,\n outputDir: './dist',\n dataOverrides: {\n '/api/posts': { posts: [...] }\n }\n});\n\nconst result = await ssg.generate();\nconsole.log(`Generated ${result.successful}/${result.totalRoutes} routes`);\n```", }, - { - name: 'DiscoveredResources', - anchor: 'discovered-resources', - signature: 'DiscoveredResources: any', - typeOnly: true, - summary: 'Resource discovery result for a single route', - }, { name: 'DocumentRenderArgs', anchor: 'document-render-args', @@ -5271,88 +5093,6 @@ export const apiSymbolSets: Readonly< summary: 'Wraps rendered app HTML in a full document (`<html>`, `<head>`, etc.) for SSR/SSG output.', }, - { - name: 'RouteConfig', - anchor: 'route-config', - signature: 'RouteConfig: any', - typeOnly: true, - summary: - 'Route config accepted by SSG.\n\nThe handler is defined by the route registry and matches router/SSR naming.', - members: [ - { - name: 'path', - summary: 'URL path to generate (e.g., "/blog/post-1", "/")', - signature: 'path: Path;', - }, - { - name: 'handler', - summary: 'Route handler compatible with router/SSR', - signature: 'handler: RouteHandler;', - }, - { - name: 'props', - summary: 'Optional base props merged with route params during render', - signature: 'props?: Record<string, unknown>;', - }, - { - name: 'namespace', - summary: 'Optional namespace for router compatibility', - signature: 'namespace?: string;', - }, - { - name: 'auth', - summary: - 'Routes with request-auth requirements are runtime-only by default.', - signature: 'auth?: AuthRequirement;', - }, - { - name: 'policies', - summary: - 'Advanced runtime access checks disable prerendering by default', - signature: 'policies?: readonly RoutePolicy[];', - }, - { - name: 'params', - summary: - 'Optional path parameter map for template paths like "/blog/{slug}"', - signature: 'params?: RouteConfigParams<Path>;', - }, - { - name: 'invalidationKeys', - summary: - 'Optional explicit invalidation keys for incremental generation', - signature: 'invalidationKeys?: string[];', - }, - { - name: 'loader', - summary: - 'Route loader resolved completely before static HTML is rendered.', - signature: "loader?: RouteOptions['loader'];", - }, - { - name: 'dehydrate', - summary: 'Select the loader data transported for initial hydration.', - signature: "dehydrate?: RouteOptions['dehydrate'];", - }, - { - name: 'basePath', - summary: '', - signature: 'basePath?: string;', - tags: { - internal: [ - 'Public mount point inherited from the owning registry.', - ], - }, - }, - { - name: 'entries', - summary: - "SSG entry generator for parameterized routes.\n\nReturn one param map per page to be generated. The path template is\nexpanded with each map to produce a concrete URL, e.g.:\n\n```ts\nroute('/posts/{slug}', PostPage, {\n entries: async () => getPosts().map(p => ({ slug: p.slug })),\n});\n```", - signature: - 'entries?: () =>\n | Array<RouteConfigParams<Path>>\n | Promise<Array<RouteConfigParams<Path>>>;', - }, - ], - }, { name: 'RouteRenderReason', anchor: 'route-render-reason', @@ -5578,7 +5318,7 @@ export const apiSymbolSets: Readonly< name: 'SSGOptions', anchor: 'ssgoptions', signature: - 'SSGOptions: SSGBaseOptions & {\n /** Explicit route registry captured with `createRouteRegistry()`. */\n registry: RouteRegistry;\n }', + 'SSGOptions: SSGBaseOptions & {\n /** Explicit route registry captured with `createRouteRegistry()`. */\n registry: RouteRegistry;\n}', typeOnly: true, summary: 'Options for createStaticGen', }, @@ -5656,14 +5396,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'SSRStyleRegistrationValidation', - anchor: 'ssrstyle-registration-validation', - signature: "SSRStyleRegistrationValidation: 'warn' | 'error' | 'off'", - typeOnly: true, - summary: - 'How to react when SSR styles were registered but not included in the rendered document.', - }, ], symbols18: [ { @@ -5698,13 +5430,6 @@ export const apiSymbolSets: Readonly< summary: "A component function accepting `TProps`, usable as a JSX element's `type`.", }, - { - name: 'jsxDEV', - anchor: 'jsx-dev', - signature: - 'jsxDEV: { <TTag extends keyof KnownIntrinsicElementProps>(type: TTag, props: KnownIntrinsicElementProps[NoInfer<TTag>] | null, key?: string | number, isStaticChildren?: boolean): JSXElement; <TTag extends OtherIntrinsicTag>(type: TTag, props: OtherIntrinsicProps<TTag> | null, key?: string | number, isStaticChildren?: boolean): JSXElement; <TProps extends object>(type: (props: TProps) => unknown, props: TProps | null, key?: string | number, isStaticChildren?: boolean): JSXElement; (type: symbol, props: Props | null, key?: string | number, isStaticChildren?: boolean): JSXElement; }', - typeOnly: true, - }, { name: 'JSXElement', anchor: 'jsxelement', @@ -5767,15 +5492,6 @@ export const apiSymbolSets: Readonly< signature: 'JSX: any', typeOnly: true, }, - { - name: 'JSXComponent', - anchor: 'jsxcomponent', - signature: - "JSXComponent: {\n bivarianceHack(props: TProps): unknown;\n}['bivarianceHack']", - typeOnly: true, - summary: - "A component function accepting `TProps`, usable as a JSX element's `type`.", - }, { name: 'jsxDEV', anchor: 'jsx-dev', @@ -5783,43 +5499,6 @@ export const apiSymbolSets: Readonly< 'jsxDEV: { <TTag extends keyof KnownIntrinsicElementProps>(type: TTag, props: KnownIntrinsicElementProps[NoInfer<TTag>] | null, key?: string | number, isStaticChildren?: boolean): JSXElement; <TTag extends OtherIntrinsicTag>(type: TTag, props: OtherIntrinsicProps<TTag> | null, key?: string | number, isStaticChildren?: boolean): JSXElement; <TProps extends object>(type: (props: TProps) => unknown, props: TProps | null, key?: string | number, isStaticChildren?: boolean): JSXElement; (type: symbol, props: Props | null, key?: string | number, isStaticChildren?: boolean): JSXElement; }', typeOnly: true, }, - { - name: 'JSXElement', - anchor: 'jsxelement', - signature: 'JSXElement: any', - typeOnly: true, - summary: 'The vnode shape produced by JSX/`jsx()` calls.', - members: [ - { - name: '$$typeof', - summary: 'Internal element marker', - signature: '$$typeof: symbol;', - }, - { - name: 'type', - summary: 'Element type: string, component, Fragment, etc', - signature: 'type: JSXElementType;', - }, - { - name: 'props', - summary: 'Props bag', - signature: 'props: Props;', - }, - { - name: 'key', - summary: 'Optional key (normalized by runtime)', - signature: 'key?: string | number | null;', - }, - ], - }, - { - name: 'JSXElementType', - anchor: 'jsxelement-type', - signature: 'JSXElementType: string | JSXComponent | symbol', - typeOnly: true, - summary: - 'Valid `type` values for a JSX element: a tag name, a component, or a symbol (e.g. `Fragment`).', - }, ], symbols20: [ { @@ -6479,20 +6158,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'OidcIdTokenOptions', - anchor: 'oidc-id-token-options', - signature: 'OidcIdTokenOptions: any', - typeOnly: true, - summary: 'OIDC-specific JWT validation options.', - members: [ - { - name: 'nonce', - summary: 'Expected OIDC nonce claim.', - signature: 'nonce: string;', - }, - ], - }, { name: 'TimedJwtInput', anchor: 'timed-jwt-input', @@ -6537,21 +6202,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'validateOidcIdToken', - anchor: 'validate-oidc-id-token', - signature: - 'validateOidcIdToken: (token: string, options: OidcIdTokenOptions) => Promise<Principal>', - typeOnly: true, - summary: 'Validate an OIDC ID token, including its nonce claim.', - tags: { - param: [ - 'token Compact serialized ID token.', - 'options OIDC validation policy.', - ], - returns: ['Validated principal claims.'], - }, - }, ], symbols22: [ { @@ -6686,7 +6336,7 @@ export const apiSymbolSets: Readonly< name: 'OidcClientErrorCode', anchor: 'oidc-client-error-code', signature: - 'OidcClientErrorCode: "discovery-failed" | "invalid-metadata" | "state-mismatch" | "exchange-failed" | "invalid-token-response" | "invalid-id-token"', + 'OidcClientErrorCode: "invalid-authorization-params" | "discovery-failed" | "invalid-metadata" | "state-mismatch" | "exchange-failed" | "invalid-token-response" | "invalid-id-token"', typeOnly: true, summary: 'Stable failure codes for OIDC client operations.', }, @@ -6722,6 +6372,12 @@ export const apiSymbolSets: Readonly< summary: 'Requested scopes.', signature: 'scopes?: readonly string[];', }, + { + name: 'authorizationParams', + summary: + 'Bounded provider-specific string parameters; protocol-owned parameters are rejected.', + signature: 'authorizationParams?: Readonly<Record<string, string>>;', + }, { name: 'fetch', summary: 'Fetch implementation for provider requests.', @@ -6848,6 +6504,355 @@ export const apiSymbolSets: Readonly< }, ], symbols23: [ + { + name: 'createOidcProvider', + anchor: 'create-oidc-provider', + signature: + 'createOidcProvider: (options: OidcProviderOptions) => ProviderDefinition', + typeOnly: false, + }, + { + name: 'createProviderSession', + anchor: 'create-provider-session', + signature: + 'createProviderSession: (options: ProviderSessionOptions) => ProviderSession', + typeOnly: false, + summary: + 'Confidential provider sessions share one atomic authority and one application cookie.', + }, + { + name: 'InteractionRequiredError', + anchor: 'interaction-required-error', + signature: 'InteractionRequiredError: typeof InteractionRequiredError', + typeOnly: false, + members: [ + { + name: 'code', + summary: '', + signature: 'readonly code = "interaction-required";', + }, + { + name: 'reason', + summary: '', + signature: 'readonly reason: "login" | "consent";', + }, + { + name: 'provider', + summary: '', + signature: 'readonly provider: string;', + }, + { + name: 'resource', + summary: '', + signature: 'readonly resource?: string;', + }, + { + name: 'scopes', + summary: '', + signature: 'readonly scopes: readonly string[];', + }, + ], + }, + { + name: 'OidcProviderOptions', + anchor: 'oidc-provider-options', + signature: 'OidcProviderOptions: any', + typeOnly: true, + members: [ + { + name: 'id', + summary: '', + signature: 'readonly id: string;', + }, + { + name: 'issuer', + summary: '', + signature: 'readonly issuer: string;', + }, + { + name: 'clientId', + summary: '', + signature: 'readonly clientId: string;', + }, + { + name: 'clientAuthentication', + summary: '', + signature: + 'readonly clientAuthentication: ProviderClientAuthentication;', + }, + { + name: 'identityScopes', + summary: '', + signature: 'readonly identityScopes?: readonly string[];', + }, + { + name: 'responseMode', + summary: '', + signature: 'readonly responseMode?: "query" | "form_post";', + }, + { + name: 'capabilities', + summary: '', + signature: 'readonly capabilities?: Partial<ProviderCapabilities>;', + }, + { + name: 'authorizationParams', + summary: '', + signature: + 'readonly authorizationParams?: Readonly<Record<string, string>>;', + }, + { + name: 'endpoints', + summary: '', + signature: + 'readonly endpoints?: {\n readonly authorization?: string;\n readonly token?: string;\n readonly jwks?: string;\n readonly logout?: string;\n readonly revocation?: string;\n };', + }, + ], + }, + { + name: 'ProviderDefinition', + anchor: 'provider-definition', + signature: 'ProviderDefinition: any', + typeOnly: true, + members: [ + { + name: 'id', + summary: '', + signature: 'readonly id: string;', + }, + { + name: 'issuer', + summary: '', + signature: 'readonly issuer: string;', + }, + { + name: 'clientId', + summary: '', + signature: 'readonly clientId: string;', + }, + { + name: 'clientAuthentication', + summary: '', + signature: + 'readonly clientAuthentication: ProviderClientAuthentication;', + }, + { + name: 'responseMode', + summary: '', + signature: 'readonly responseMode: "query" | "form_post";', + }, + { + name: 'identityScopes', + summary: '', + signature: 'readonly identityScopes: readonly string[];', + }, + { + name: 'capabilities', + summary: '', + signature: 'readonly capabilities: ProviderCapabilities;', + }, + { + name: 'authorizationParams', + summary: '', + signature: + 'readonly authorizationParams?: Readonly<Record<string, string>>;', + }, + ], + }, + { + name: 'ProviderSession', + anchor: 'provider-session', + signature: 'ProviderSession: any', + typeOnly: true, + members: [ + { + name: 'resolve', + summary: + 'Resolve the principal, session, tenant, and authorization state.\nInvalid bearer and cookie JWTs fall through as unauthenticated; tenant and store failures propagate.', + signature: + 'resolve(request: Request, options?: {\n signal?: AbortSignal;\n }): Promise<AuthContext>;', + tags: { + param: [ + 'request Incoming request.', + 'options Optional cancellation signal.', + ], + returns: ['Resolved authentication context.'], + }, + }, + { + name: 'login', + summary: '', + signature: + 'login(request: Request, options: ProviderLoginRequest): Promise<Response>;', + }, + { + name: 'callback', + summary: '', + signature: + 'callback(request: Request, options: {\n readonly provider: string;\n }): Promise<Response>;', + }, + { + name: 'logout', + summary: '', + signature: + 'logout(request: Request, options?: ProviderLogoutRequest): Promise<Response>;', + }, + { + name: 'token', + summary: '', + signature: + 'token(request: Request, provider: string, options: ProviderTokenRequest): Promise<string>;', + }, + { + name: 'finalize', + summary: '', + signature: + 'finalize(request: Request, response: Response): Promise<Response>;', + }, + { + name: 'close', + summary: '', + signature: 'close(): Promise<void>;', + }, + ], + }, + { + name: 'ProviderSessionError', + anchor: 'provider-session-error', + signature: 'ProviderSessionError: typeof ProviderSessionError', + typeOnly: false, + members: [ + { + name: 'code', + summary: '', + signature: 'readonly code: ProviderSessionErrorCode;', + }, + ], + }, + { + name: 'ProviderSessionErrorCode', + anchor: 'provider-session-error-code', + signature: + 'ProviderSessionErrorCode: "configuration" | "invalid-callback" | "invalid-transaction" | "session-oversize" | "capacity" | "store-unavailable" | "provider-unavailable" | "closed"', + typeOnly: true, + }, + { + name: 'ProviderSessionOptions', + anchor: 'provider-session-options', + signature: 'ProviderSessionOptions: any', + typeOnly: true, + members: [ + { + name: 'origin', + summary: '', + signature: 'readonly origin: string;', + }, + { + name: 'providers', + summary: '', + signature: 'readonly providers: readonly ProviderDefinition[];', + }, + { + name: 'session', + summary: '', + signature: + 'readonly session: {\n readonly secrets: readonly string[];\n readonly store?: ProviderSessionStore;\n readonly maxAgeSeconds?: number;\n readonly leewaySeconds?: number;\n readonly maxEntries?: number;\n };', + }, + { + name: 'onSignIn', + summary: '', + signature: + 'readonly onSignIn?: (context: {\n readonly provider: string;\n readonly principal: Readonly<Principal>;\n readonly profileHint?: {\n readonly givenName?: string;\n readonly familyName?: string;\n };\n readonly signal: AbortSignal;\n }) => void | PromiseLike<void>;', + }, + { + name: 'postLogoutRedirects', + summary: '', + signature: 'readonly postLogoutRedirects?: readonly string[];', + }, + { + name: 'transactionTtlSeconds', + summary: '', + signature: 'readonly transactionTtlSeconds?: number;', + }, + { + name: 'fetch', + summary: '', + signature: 'readonly fetch?: typeof fetch;', + }, + { + name: 'clock', + summary: '', + signature: 'readonly clock?: () => number;', + }, + ], + }, + { + name: 'ProviderSessionRecord', + anchor: 'provider-session-record', + signature: 'ProviderSessionRecord: any', + typeOnly: true, + members: [ + { + name: 'revision', + summary: '', + signature: 'readonly revision: number;', + }, + { + name: 'expiresAt', + summary: '', + signature: 'readonly expiresAt: number;', + }, + { + name: 'retired', + summary: '', + signature: 'readonly retired: boolean;', + }, + { + name: 'value', + summary: '', + signature: 'readonly value: string | null;', + }, + ], + }, + { + name: 'ProviderSessionStore', + anchor: 'provider-session-store', + signature: 'ProviderSessionStore: any', + typeOnly: true, + members: [ + { + name: 'read', + summary: '', + signature: + 'read(id: string, options: {\n signal: AbortSignal;\n }): Promise<ProviderSessionRecord | null>;', + }, + { + name: 'compareAndSwap', + summary: '', + signature: + 'compareAndSwap(id: string, expectedRevision: number | null, next: ProviderSessionRecord, options: {\n signal: AbortSignal;\n }): Promise<boolean>;', + }, + { + name: 'withLock', + summary: '', + signature: + 'withLock<T>(key: string, operation: () => Promise<T>, options: {\n signal: AbortSignal;\n }): Promise<T>;', + }, + ], + }, + ], + symbols24: [ + { + name: 'createAuth0Provider', + anchor: 'create-auth0-provider', + signature: + 'createAuth0Provider: (options: Auth0ProviderOptions) => ProviderDefinition', + typeOnly: true, + summary: + 'Create an Auth0 definition using the shared signed OIDC/session engine.', + }, + ], + symbols25: [ { name: 'createSamlServiceProvider', anchor: 'create-saml-service-provider', @@ -7070,56 +7075,14 @@ export const apiSymbolSets: Readonly< summary: 'Stable failure codes for SAML validation.', }, ], - symbols24: [ - { - name: 'CborDecodeOptions', - anchor: 'cbor-decode-options', - signature: 'CborDecodeOptions: any', - typeOnly: true, - summary: 'Resource limits applied while decoding CBOR.', - members: [ - { - name: 'maxBytes', - summary: 'Maximum encoded input bytes.', - signature: 'maxBytes?: number;', - }, - { - name: 'maxDepth', - summary: 'Maximum nesting depth.', - signature: 'maxDepth?: number;', - }, - { - name: 'maxCollectionLength', - summary: 'Maximum array or map entries.', - signature: 'maxCollectionLength?: number;', - }, - ], - }, - { - name: 'CborFirstResult', - anchor: 'cbor-first-result', - signature: 'CborFirstResult: any', - typeOnly: true, - summary: 'Decoded CBOR value and the number of consumed bytes.', - members: [ - { - name: 'value', - summary: 'Decoded value.', - signature: 'value: unknown;', - }, - { - name: 'bytesRead', - summary: 'Number of bytes consumed from the input.', - signature: 'bytesRead: number;', - }, - ], - }, + symbols26: [ { name: 'CoseAlgorithm', anchor: 'cose-algorithm', signature: 'CoseAlgorithm: -7 | -257 | -8', typeOnly: true, - summary: 'COSE algorithm identifiers supported for WebAuthn public keys.', + summary: + 'Algorithm identifier persisted with a supported WebAuthn credential.', }, { name: 'createTotpProvisioningUri', @@ -7133,68 +7096,6 @@ export const apiSymbolSets: Readonly< returns: ['Authenticator provisioning URI.'], }, }, - { - name: 'decodeCbor', - anchor: 'decode-cbor', - signature: - 'decodeCbor: (input: Uint8Array, options?: CborDecodeOptions) => unknown', - typeOnly: false, - summary: 'Decode one complete CBOR value.', - tags: { - param: [ - 'input Encoded CBOR bytes.', - 'options Decoder resource limits.', - ], - returns: ['Decoded value.'], - }, - }, - { - name: 'decodeCborFirst', - anchor: 'decode-cbor-first', - signature: - 'decodeCborFirst: (input: Uint8Array, options?: CborDecodeOptions) => CborFirstResult', - typeOnly: false, - summary: 'Decode the first CBOR value, allowing trailing bytes.', - tags: { - param: [ - 'input Encoded CBOR bytes.', - 'options Decoder resource limits.', - ], - returns: ['Decoded value and consumed byte count.'], - }, - }, - { - name: 'decodeCosePublicKey', - anchor: 'decode-cose-public-key', - signature: - 'decodeCosePublicKey: (input: Uint8Array) => DecodedCosePublicKey', - typeOnly: false, - summary: 'Decode a COSE public key into an algorithm and Web Crypto JWK.', - tags: { - param: ['input Encoded COSE key.'], - returns: ['Decoded public-key information.'], - }, - }, - { - name: 'DecodedCosePublicKey', - anchor: 'decoded-cose-public-key', - signature: 'DecodedCosePublicKey: any', - typeOnly: true, - summary: - 'Public-key algorithm and Web Crypto representation decoded from COSE.', - members: [ - { - name: 'algorithm', - summary: 'COSE algorithm identifier.', - signature: 'algorithm: CoseAlgorithm;', - }, - { - name: 'publicKeyJwk', - summary: 'Equivalent Web Crypto JWK.', - signature: 'publicKeyJwk: JsonWebKey;', - }, - ], - }, { name: 'generateTotpSecret', anchor: 'generate-totp-secret', @@ -7307,7 +7208,8 @@ export const apiSymbolSets: Readonly< }, { name: 'at', - summary: 'Verification time; defaults to the current time.', + summary: + 'Non-negative Unix time in milliseconds, or a valid Date. Defaults to the current time.', signature: 'at?: number | Date;', }, { @@ -7495,7 +7397,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols25: [ + symbols27: [ { name: 'createPasskey', anchor: 'create-passkey', @@ -7552,28 +7454,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'decodeBase64Url', - anchor: 'decode-base64-url', - signature: 'decodeBase64Url: (value: string) => ArrayBuffer', - typeOnly: false, - summary: 'Decode canonical unpadded base64url.', - tags: { - param: ['value Base64url text.'], - returns: ['Decoded bytes.'], - }, - }, - { - name: 'encodeBase64Url', - anchor: 'encode-base64-url', - signature: 'encodeBase64Url: (buffer: ArrayBuffer) => string', - typeOnly: false, - summary: 'Encode binary data as unpadded base64url.', - tags: { - param: ['buffer Bytes to encode.'], - returns: ['Canonical base64url text.'], - }, - }, { name: 'getPasskeyAssertion', anchor: 'get-passkey-assertion', @@ -7670,23 +7550,40 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols26: [ + symbols28: [ + { + name: 'createMicrosoftProvider', + anchor: 'create-microsoft-provider', + signature: + 'createMicrosoftProvider: (options: MicrosoftProviderOptions) => ProviderDefinition', + typeOnly: true, + summary: + 'One explicit Entra tenant, confidential Web credentials, and qualified delegated API scopes.', + }, + ], + symbols29: [ { - name: 'AggregatedNumericChannelInput', - anchor: 'aggregated-numeric-channel-input', + name: 'createGoogleProvider', + anchor: 'create-google-provider', signature: - 'AggregatedNumericChannelInput: RowChannelInput<Row, number> | ChannelExpression<number, NumericField<Row>, "count" | "sum" | "mean" | "stack" | "normalize">', + 'createGoogleProvider: (options: GoogleProviderOptions) => ProviderDefinition', typeOnly: true, summary: - 'A numeric channel input that may additionally be an aggregate expression.', + 'Confidential Google Web OAuth, exact signed hosted-domain policy, and explicit API grants.', }, + ], + symbols30: [ { - name: 'AggregateOperation', - anchor: 'aggregate-operation', - signature: 'AggregateOperation: "count" | "sum" | "mean"', + name: 'createAppleProvider', + anchor: 'create-apple-provider', + signature: + 'createAppleProvider: (options: AppleProviderOptions) => ProviderDefinition', typeOnly: true, - summary: 'Aggregate operations supported by grouping expressions.', + summary: + 'Confidential Apple Services ID with server-owned signing and daily account verification.', }, + ], + symbols31: [ { name: 'appendPlotRows', anchor: 'append-plot-rows', @@ -8098,15 +7995,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Bins a numeric or temporal channel into discrete intervals.', }, - { - name: 'BinnedScaleChannelInput', - anchor: 'binned-scale-channel-input', - signature: - 'BinnedScaleChannelInput: RowChannelInput<Row, string | number | Date> | ChannelExpression<number | Date, NumericField<Row> | TemporalField<Row>, "bin">', - typeOnly: true, - summary: - 'A channel input for scales that may be binned, e.g. via {@link bin }.', - }, { name: 'BinOptions', anchor: 'bin-options', @@ -8157,100 +8045,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'A Cartesian axis identifier.', }, - { - name: 'CartesianMarkProps', - anchor: 'cartesian-mark-props', - signature: 'CartesianMarkProps: any', - typeOnly: true, - summary: 'Props shared by marks positioned on Cartesian (x/y) axes.', - members: [ - { - name: 'colorScale', - summary: '', - signature: 'colorScale?: string | undefined;', - }, - { - name: 'data', - summary: '', - signature: 'data?: PlotData<Row> | undefined;', - }, - { - name: 'fill', - summary: '', - signature: 'fill?: RowColorChannelInput<Row> | undefined;', - }, - { - name: 'hidden', - summary: '', - signature: 'hidden?: boolean | undefined;', - }, - { - name: 'key', - summary: '', - signature: 'key?: PlotRowKey<Row> | undefined;', - }, - { - name: 'opacity', - summary: '', - signature: 'opacity?: number | undefined;', - }, - { - name: 'stroke', - summary: '', - signature: 'stroke?: RowColorChannelInput<Row> | undefined;', - }, - { - name: 'title', - summary: '', - signature: 'title?: RowTextChannelInput<Row> | undefined;', - }, - { - name: 'transform', - summary: '', - signature: - 'transform?: RowTransform<Row> | readonly RowTransform<Row>[] | undefined;', - }, - { - name: 'x', - summary: '', - signature: 'x?: unknown;', - }, - { - name: 'x2', - summary: '', - signature: 'x2?: unknown;', - }, - { - name: 'xScale', - summary: '', - signature: 'xScale?: string | undefined;', - }, - { - name: 'y', - summary: '', - signature: 'y?: unknown;', - }, - { - name: 'y2', - summary: '', - signature: 'y2?: unknown;', - }, - { - name: 'yScale', - summary: '', - signature: 'yScale?: string | undefined;', - }, - ], - }, - { - name: 'CategoricalField', - anchor: 'categorical-field', - signature: - 'CategoricalField: FieldOfType<Row, string | number | boolean>', - typeOnly: true, - summary: - 'Field names of `Row` holding categorical (string, number, or boolean) values.', - }, { name: 'CellProps', anchor: 'cell-props', @@ -8346,72 +8140,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'ChannelExpression', - anchor: 'channel-expression', - signature: 'ChannelExpression: any', - typeOnly: true, - summary: - 'A serialized channel transform produced by helpers such as {@link bin }, {@link sum },\nor {@link stack }, and consumed by mark channel props (e.g. `x`, `y`).', - members: [ - { - name: '__askrPlotExpression', - summary: '', - signature: 'readonly __askrPlotExpression: true;', - }, - { - name: 'kind', - summary: '', - signature: 'readonly kind: Kind;', - }, - { - name: 'input', - summary: '', - signature: 'readonly input?: unknown;', - }, - { - name: 'options', - summary: '', - signature: 'readonly options: Readonly<Record<string, unknown>>;', - }, - { - name: '__field', - summary: '', - signature: 'readonly __field?: Field;', - }, - { - name: '__value', - summary: '', - signature: 'readonly __value?: Value;', - }, - ], - }, - { - name: 'ChannelExpressionKind', - anchor: 'channel-expression-kind', - signature: - 'ChannelExpressionKind: "constant" | "bin" | "count" | "sum" | "mean" | "group" | "stack" | "normalize" | "moving-window" | "moving-average" | "regression"', - typeOnly: true, - summary: - 'The discriminant `kind` values a {@link ChannelExpression} may carry.', - }, - { - name: 'ChannelInput', - anchor: 'channel-input', - signature: - 'ChannelInput: FieldOfType<Row, Value> | RowAccessor<Row, Value> | ChannelExpression<Value, FieldOfType<Row, Value>>', - typeOnly: true, - summary: - 'Anything usable as a mark channel input: a field name, an accessor, or a channel expression.', - }, - { - name: 'ColorChannelInput', - anchor: 'color-channel-input', - signature: - 'ColorChannelInput: ChannelInput<Row, string | number | boolean>', - typeOnly: true, - summary: 'A channel input resolving to a color-scale-compatible value.', - }, { name: 'constant', anchor: 'constant', @@ -8455,15 +8183,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'FieldOfType', - anchor: 'field-of-type', - signature: - 'FieldOfType: { [Field in RowField<Row>]-?: Present<Row[Field]> extends Value ? Field : never; }[RowField<Row>]', - typeOnly: true, - summary: - 'The field names of `Row` whose (non-nullable) value type is assignable to `Value`.', - }, { name: 'filterRows', anchor: 'filter-rows', @@ -8684,71 +8403,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'MarkBaseProps', - anchor: 'mark-base-props', - signature: 'MarkBaseProps: any', - typeOnly: true, - summary: 'Props shared by all mark components.', - members: [ - { - name: 'colorScale', - summary: '', - signature: 'colorScale?: string | undefined;', - }, - { - name: 'data', - summary: '', - signature: 'data?: PlotData<Row> | undefined;', - }, - { - name: 'fill', - summary: '', - signature: 'fill?: RowColorChannelInput<Row> | undefined;', - }, - { - name: 'hidden', - summary: '', - signature: 'hidden?: boolean | undefined;', - }, - { - name: 'key', - summary: '', - signature: 'key?: PlotRowKey<Row> | undefined;', - }, - { - name: 'opacity', - summary: '', - signature: 'opacity?: number | undefined;', - }, - { - name: 'stroke', - summary: '', - signature: 'stroke?: RowColorChannelInput<Row> | undefined;', - }, - { - name: 'title', - summary: '', - signature: 'title?: RowTextChannelInput<Row> | undefined;', - }, - { - name: 'transform', - summary: '', - signature: - 'transform?: RowTransform<Row> | readonly RowTransform<Row>[] | undefined;', - }, - { - name: 'xScale', - summary: '', - signature: 'xScale?: string | undefined;', - }, - { - name: 'yScale', - summary: '', - signature: 'yScale?: string | undefined;', - }, - ], - }, { name: 'mean', anchor: 'mean', @@ -8842,20 +8496,6 @@ export const apiSymbolSets: Readonly< summary: "Normalizes a numeric channel's values within each group to a 0–1 (or proportional) range.", }, - { - name: 'NumericChannelInput', - anchor: 'numeric-channel-input', - signature: 'NumericChannelInput: ChannelInput<Row, number>', - typeOnly: true, - summary: 'A channel input resolving to a number.', - }, - { - name: 'NumericField', - anchor: 'numeric-field', - signature: 'NumericField: FieldOfType<Row, number>', - typeOnly: true, - summary: 'Field names of `Row` holding numbers.', - }, { name: 'partition', anchor: 'partition', @@ -8942,13 +8582,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'PlotChannelValue', - anchor: 'plot-channel-value', - signature: 'PlotChannelValue: PlotScalar | null | undefined', - typeOnly: true, - summary: 'A channel value, allowing for missing data.', - }, { name: 'PlotData', anchor: 'plot-data', @@ -9212,13 +8845,6 @@ export const apiSymbolSets: Readonly< summary: "How to derive a row's stable {@link PlotKey}: a field name or an accessor function.", }, - { - name: 'PlotScalar', - anchor: 'plot-scalar', - signature: 'PlotScalar: string | number | boolean | Date', - typeOnly: true, - summary: 'A primitive value a plot channel may resolve to.', - }, { name: 'PlotSelection', anchor: 'plot-selection', @@ -9405,402 +9031,292 @@ export const apiSymbolSets: Readonly< ], }, { - name: 'PrimitiveComponent', - anchor: 'primitive-component', - signature: 'PrimitiveComponent: any', + name: 'RectProps', + anchor: 'rect-props', + signature: 'RectProps: any', typeOnly: true, - summary: 'A plot component that renders `Props` to a `JSXElement`.', + summary: 'Props for `Plot.Rect`.', + members: [ + { + name: 'colorScale', + summary: '', + signature: 'colorScale?: string | undefined;', + }, + { + name: 'data', + summary: '', + signature: 'data?: PlotData<Row> | undefined;', + }, + { + name: 'fill', + summary: '', + signature: 'fill?: RowColorChannelInput<Row> | undefined;', + }, + { + name: 'hidden', + summary: '', + signature: 'hidden?: boolean | undefined;', + }, + { + name: 'key', + summary: '', + signature: 'key?: PlotRowKey<Row> | undefined;', + }, + { + name: 'opacity', + summary: '', + signature: 'opacity?: number | undefined;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: number | undefined;', + }, + { + name: 'stroke', + summary: '', + signature: 'stroke?: RowColorChannelInput<Row> | undefined;', + }, + { + name: 'title', + summary: '', + signature: 'title?: RowTextChannelInput<Row> | undefined;', + }, + { + name: 'transform', + summary: '', + signature: + 'transform?: RowTransform<Row> | readonly RowTransform<Row>[] | undefined;', + }, + { + name: 'x', + summary: '', + signature: 'x?: RowScaleChannelInput<Row> | undefined;', + }, + { + name: 'x2', + summary: '', + signature: 'x2?: RowScaleChannelInput<Row> | undefined;', + }, + { + name: 'xScale', + summary: '', + signature: 'xScale?: string | undefined;', + }, + { + name: 'y', + summary: '', + signature: 'y?: RowScaleChannelInput<Row> | undefined;', + }, + { + name: 'y2', + summary: '', + signature: 'y2?: RowScaleChannelInput<Row> | undefined;', + }, + { + name: 'yScale', + summary: '', + signature: 'yScale?: string | undefined;', + }, + ], }, { - name: 'PrimitiveKind', - anchor: 'primitive-kind', - signature: 'PrimitiveKind: Exclude<keyof PlotFactory<unknown>, "Root">', + name: 'regression', + anchor: 'regression', + signature: + 'regression: { <Field extends string>(input: Field, options?: { x?: string; method?: "linear"; }): ChannelExpression<number, Field, "regression">; <Row>(input: NumericChannelInput<Row>, options?: RegressionOptions<Row>): ChannelExpression<number, never, "regression">; }', typeOnly: true, summary: - 'The keys of {@link PlotFactory} that identify a mark/annotation primitive (excludes `Root`).', + 'Fits a regression curve (currently linear) to a numeric channel against an x channel.', }, { - name: 'RectProps', - anchor: 'rect-props', - signature: 'RectProps: any', + name: 'RegressionOptions', + anchor: 'regression-options', + signature: 'RegressionOptions: any', typeOnly: true, - summary: 'Props for `Plot.Rect`.', + summary: 'Options for {@link regression }.', + members: [ + { + name: 'x', + summary: '', + signature: 'x?: RowScaleChannelInput<Row>;', + }, + { + name: 'method', + summary: '', + signature: 'method?: "linear";', + }, + ], + }, + { + name: 'removePlotRows', + anchor: 'remove-plot-rows', + signature: + 'removePlotRows: <Row>(rows: readonly Row[], keys: readonly PlotKey[] | ReadonlySet<PlotKey> | ((row: Readonly<Row>, index: number) => boolean), rowKey?: PlotRowKey<Row>) => readonly Row[]', + typeOnly: true, + summary: + 'Removes rows matching a predicate, or by key (requires `rowKey` when `keys` is an array/set).\nReturns the original `rows` reference unchanged if nothing was removed.', + }, + { + name: 'RootProps', + anchor: 'root-props', + signature: 'RootProps: any', + typeOnly: true, + summary: "Props accepted by a plot factory's `Root` component.", + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'class', + summary: '', + signature: 'class?: string | undefined;', + }, + { + name: 'data', + summary: '', + signature: 'data: PlotData<Row>;', + }, + { + name: 'defaultSelection', + summary: '', + signature: 'defaultSelection?: PlotSelection | undefined;', + }, + { + name: 'defaultView', + summary: '', + signature: 'defaultView?: PlotView | undefined;', + }, + { + name: 'description', + summary: '', + signature: 'description?: string | undefined;', + }, + { + name: 'diagnostics', + summary: '', + signature: 'diagnostics?: boolean | undefined;', + }, + { + name: 'empty', + summary: '', + signature: 'empty?: string | undefined;', + }, + { + name: 'followLatest', + summary: '', + signature: 'followLatest?: FollowLatest<Row> | undefined;', + }, + { + name: 'headingLevel', + summary: '', + signature: 'headingLevel?: PlotHeadingLevel | undefined;', + }, + { + name: 'height', + summary: '', + signature: 'height?: number | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'label', + summary: '', + signature: 'label: string;', + }, + { + name: 'locale', + summary: '', + signature: 'locale?: string | undefined;', + }, + { + name: 'meter', + summary: '', + signature: 'meter?: MeterSemantics | undefined;', + }, + { + name: 'onActivate', + summary: '', + signature: + 'onActivate?: ((row: Row, key: PlotKey, target: PlotInteractionTarget<Row>) => void) | undefined;', + }, + { + name: 'onApiChange', + summary: '', + signature: + 'onApiChange?: ((api: PlotApi<Row> | null) => void) | undefined;', + }, + { + name: 'onSelectionChange', + summary: '', + signature: + 'onSelectionChange?: ((selection: PlotSelection) => void) | undefined;', + }, + { + name: 'onViewChange', + summary: '', + signature: 'onViewChange?: ((view: PlotView) => void) | undefined;', + }, + { + name: 'rowKey', + summary: '', + signature: 'rowKey: PlotRowKey<Row>;', + }, + { + name: 'selection', + summary: '', + signature: 'selection?: PlotSelection | undefined;', + }, + { + name: 'style', + summary: '', + signature: + 'style?: string | Record<string, string | number | false | null | undefined> | undefined;', + }, + { + name: 'summary', + summary: '', + signature: + 'summary?: string | ((context: PlotSummaryContext<Row>) => string) | undefined;', + }, + { + name: 'title', + summary: '', + signature: 'title?: string | undefined;', + }, + { + name: 'view', + summary: '', + signature: 'view?: PlotView | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: number | undefined;', + }, + ], + }, + { + name: 'RuleProps', + anchor: 'rule-props', + signature: 'RuleProps: any', + typeOnly: true, + summary: 'Props for `Plot.Rule`.', members: [ { name: 'colorScale', summary: '', signature: 'colorScale?: string | undefined;', - }, - { - name: 'data', - summary: '', - signature: 'data?: PlotData<Row> | undefined;', - }, - { - name: 'fill', - summary: '', - signature: 'fill?: RowColorChannelInput<Row> | undefined;', - }, - { - name: 'hidden', - summary: '', - signature: 'hidden?: boolean | undefined;', - }, - { - name: 'key', - summary: '', - signature: 'key?: PlotRowKey<Row> | undefined;', - }, - { - name: 'opacity', - summary: '', - signature: 'opacity?: number | undefined;', - }, - { - name: 'radius', - summary: '', - signature: 'radius?: number | undefined;', - }, - { - name: 'stroke', - summary: '', - signature: 'stroke?: RowColorChannelInput<Row> | undefined;', - }, - { - name: 'title', - summary: '', - signature: 'title?: RowTextChannelInput<Row> | undefined;', - }, - { - name: 'transform', - summary: '', - signature: - 'transform?: RowTransform<Row> | readonly RowTransform<Row>[] | undefined;', - }, - { - name: 'x', - summary: '', - signature: 'x?: RowScaleChannelInput<Row> | undefined;', - }, - { - name: 'x2', - summary: '', - signature: 'x2?: RowScaleChannelInput<Row> | undefined;', - }, - { - name: 'xScale', - summary: '', - signature: 'xScale?: string | undefined;', - }, - { - name: 'y', - summary: '', - signature: 'y?: RowScaleChannelInput<Row> | undefined;', - }, - { - name: 'y2', - summary: '', - signature: 'y2?: RowScaleChannelInput<Row> | undefined;', - }, - { - name: 'yScale', - summary: '', - signature: 'yScale?: string | undefined;', - }, - ], - }, - { - name: 'regression', - anchor: 'regression', - signature: - 'regression: { <Field extends string>(input: Field, options?: { x?: string; method?: "linear"; }): ChannelExpression<number, Field, "regression">; <Row>(input: NumericChannelInput<Row>, options?: RegressionOptions<Row>): ChannelExpression<number, never, "regression">; }', - typeOnly: true, - summary: - 'Fits a regression curve (currently linear) to a numeric channel against an x channel.', - }, - { - name: 'RegressionOptions', - anchor: 'regression-options', - signature: 'RegressionOptions: any', - typeOnly: true, - summary: 'Options for {@link regression }.', - members: [ - { - name: 'x', - summary: '', - signature: 'x?: RowScaleChannelInput<Row>;', - }, - { - name: 'method', - summary: '', - signature: 'method?: "linear";', - }, - ], - }, - { - name: 'removePlotRows', - anchor: 'remove-plot-rows', - signature: - 'removePlotRows: <Row>(rows: readonly Row[], keys: readonly PlotKey[] | ReadonlySet<PlotKey> | ((row: Readonly<Row>, index: number) => boolean), rowKey?: PlotRowKey<Row>) => readonly Row[]', - typeOnly: true, - summary: - 'Removes rows matching a predicate, or by key (requires `rowKey` when `keys` is an array/set).\nReturns the original `rows` reference unchanged if nothing was removed.', - }, - { - name: 'RootProps', - anchor: 'root-props', - signature: 'RootProps: any', - typeOnly: true, - summary: "Props accepted by a plot factory's `Root` component.", - members: [ - { - name: 'children', - summary: '', - signature: 'children?: unknown;', - }, - { - name: 'class', - summary: '', - signature: 'class?: string | undefined;', - }, - { - name: 'data', - summary: '', - signature: 'data: PlotData<Row>;', - }, - { - name: 'defaultSelection', - summary: '', - signature: 'defaultSelection?: PlotSelection | undefined;', - }, - { - name: 'defaultView', - summary: '', - signature: 'defaultView?: PlotView | undefined;', - }, - { - name: 'description', - summary: '', - signature: 'description?: string | undefined;', - }, - { - name: 'diagnostics', - summary: '', - signature: 'diagnostics?: boolean | undefined;', - }, - { - name: 'empty', - summary: '', - signature: 'empty?: string | undefined;', - }, - { - name: 'followLatest', - summary: '', - signature: 'followLatest?: FollowLatest<Row> | undefined;', - }, - { - name: 'headingLevel', - summary: '', - signature: 'headingLevel?: PlotHeadingLevel | undefined;', - }, - { - name: 'height', - summary: '', - signature: 'height?: number | undefined;', - }, - { - name: 'id', - summary: '', - signature: 'id?: string | undefined;', - }, - { - name: 'label', - summary: '', - signature: 'label: string;', - }, - { - name: 'locale', - summary: '', - signature: 'locale?: string | undefined;', - }, - { - name: 'meter', - summary: '', - signature: 'meter?: MeterSemantics | undefined;', - }, - { - name: 'onActivate', - summary: '', - signature: - 'onActivate?: ((row: Row, key: PlotKey, target: PlotInteractionTarget<Row>) => void) | undefined;', - }, - { - name: 'onApiChange', - summary: '', - signature: - 'onApiChange?: ((api: PlotApi<Row> | null) => void) | undefined;', - }, - { - name: 'onSelectionChange', - summary: '', - signature: - 'onSelectionChange?: ((selection: PlotSelection) => void) | undefined;', - }, - { - name: 'onViewChange', - summary: '', - signature: 'onViewChange?: ((view: PlotView) => void) | undefined;', - }, - { - name: 'rowKey', - summary: '', - signature: 'rowKey: PlotRowKey<Row>;', - }, - { - name: 'selection', - summary: '', - signature: 'selection?: PlotSelection | undefined;', - }, - { - name: 'style', - summary: '', - signature: - 'style?: string | Record<string, string | number | false | null | undefined> | undefined;', - }, - { - name: 'summary', - summary: '', - signature: - 'summary?: string | ((context: PlotSummaryContext<Row>) => string) | undefined;', - }, - { - name: 'title', - summary: '', - signature: 'title?: string | undefined;', - }, - { - name: 'view', - summary: '', - signature: 'view?: PlotView | undefined;', - }, - { - name: 'width', - summary: '', - signature: 'width?: number | undefined;', - }, - ], - }, - { - name: 'RowAccessor', - anchor: 'row-accessor', - signature: - 'RowAccessor: (row: Readonly<Row>, index: number) => Value | null | undefined', - typeOnly: true, - summary: - 'A function that reads a channel value from a row and its index.', - }, - { - name: 'RowChannelInput', - anchor: 'row-channel-input', - signature: - 'RowChannelInput: FieldOfType<Row, Value> | RowAccessor<Row, Value> | ChannelExpression<Value, FieldOfType<Row, Value>, RowExpressionKind>', - typeOnly: true, - summary: - 'A channel input restricted to row-level (non-aggregating) expression kinds.', - }, - { - name: 'RowColorChannelInput', - anchor: 'row-color-channel-input', - signature: - 'RowColorChannelInput: RowChannelInput<Row, string | number | boolean>', - typeOnly: true, - summary: - '{@link RowChannelInput} resolving to a color-scale-compatible value.', - }, - { - name: 'RowField', - anchor: 'row-field', - signature: 'RowField: Extract<keyof Row, string>', - typeOnly: true, - summary: 'The string-keyed field names of a row type.', - }, - { - name: 'RowNumericChannelInput', - anchor: 'row-numeric-channel-input', - signature: 'RowNumericChannelInput: RowChannelInput<Row, number>', - typeOnly: true, - summary: '{@link RowChannelInput} resolving to a number.', - }, - { - name: 'RowScaleChannelInput', - anchor: 'row-scale-channel-input', - signature: - 'RowScaleChannelInput: RowChannelInput<Row, string | number | Date>', - typeOnly: true, - summary: '{@link RowChannelInput} for a positional/categorical scale.', - }, - { - name: 'RowTextChannelInput', - anchor: 'row-text-channel-input', - signature: - 'RowTextChannelInput: RowChannelInput<Row, string | number | Date | boolean>', - typeOnly: true, - summary: '{@link RowChannelInput} resolving to a displayable text value.', - }, - { - name: 'RowTransform', - anchor: 'row-transform', - signature: 'RowTransform: any', - typeOnly: true, - summary: - "A serialized row-level transform produced by helpers such as {@link filterRows },\n{@link sortRows }, or {@link partition }, and applied to a mark's `data` via `transform`.", - members: [ - { - name: '__askrPlotTransform', - summary: '', - signature: 'readonly __askrPlotTransform: true;', - }, - { - name: 'kind', - summary: '', - signature: 'readonly kind: RowTransformKind;', - }, - { - name: 'options', - summary: '', - signature: 'readonly options: Readonly<Record<string, unknown>>;', - }, - { - name: '__row', - summary: '', - signature: 'readonly __row?: (row: Row) => Row;', - }, - ], - }, - { - name: 'RowTransformKind', - anchor: 'row-transform-kind', - signature: 'RowTransformKind: "filter" | "sort" | "partition"', - typeOnly: true, - summary: - 'The discriminant `kind` values a {@link RowTransform} may carry.', - }, - { - name: 'RuleProps', - anchor: 'rule-props', - signature: 'RuleProps: any', - typeOnly: true, - summary: 'Props for `Plot.Rule`.', - members: [ - { - name: 'colorScale', - summary: '', - signature: 'colorScale?: string | undefined;', - }, - { - name: 'dash', - summary: '', - signature: 'dash?: readonly number[] | undefined;', + }, + { + name: 'dash', + summary: '', + signature: 'dash?: readonly number[] | undefined;', }, { name: 'data', @@ -9880,29 +9396,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'ScaleChannelInput', - anchor: 'scale-channel-input', - signature: 'ScaleChannelInput: ChannelInput<Row, string | number | Date>', - typeOnly: true, - summary: 'A channel input for a positional/categorical scale.', - }, - { - name: 'ScaleDomainValue', - anchor: 'scale-domain-value', - signature: 'ScaleDomainValue: ScaleValue | boolean', - typeOnly: true, - summary: - 'A scale domain value, including booleans (for ordinal/color scales).', - }, - { - name: 'ScaleField', - anchor: 'scale-field', - signature: 'ScaleField: FieldOfType<Row, string | number | Date>', - typeOnly: true, - summary: - 'Field names of `Row` usable as a scale channel (string, number, or Date).', - }, { name: 'ScaleProps', anchor: 'scale-props', @@ -10080,21 +9573,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Sums a numeric channel across each group.', }, - { - name: 'TemporalField', - anchor: 'temporal-field', - signature: 'TemporalField: FieldOfType<Row, Date>', - typeOnly: true, - summary: 'Field names of `Row` holding `Date` values.', - }, - { - name: 'TextChannelInput', - anchor: 'text-channel-input', - signature: - 'TextChannelInput: ChannelInput<Row, string | number | Date | boolean>', - typeOnly: true, - summary: 'A channel input resolving to a displayable text value.', - }, { name: 'TextProps', anchor: 'text-props', @@ -10299,159 +9777,8 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols27: [], - symbols28: [ - { - name: 'AdHocCall', - anchor: 'ad-hoc-call', - signature: 'AdHocCall: any', - typeOnly: true, - summary: - "A one-off, untyped request description accepted by {@link createFetch}'s returned function.", - members: [ - { - name: 'url', - summary: '', - signature: 'url: string;', - }, - { - name: 'method', - summary: '', - signature: 'method?: string;', - }, - { - name: 'headers', - summary: '', - signature: 'headers?: HeadersInit;', - }, - { - name: 'query', - summary: '', - signature: 'query?: Record<string, unknown>;', - }, - { - name: 'querySpec', - summary: '', - signature: 'querySpec?: ParameterMap;', - }, - { - name: 'body', - summary: '', - signature: 'body?: unknown;', - }, - { - name: 'bodyCodec', - summary: '', - signature: 'bodyCodec?: Codec;', - }, - { - name: 'bodyMediaType', - summary: - 'Explicit media type used to encode a request body with a multi-variant `content()` codec.', - signature: 'bodyMediaType?: string;', - }, - { - name: 'response', - summary: '', - signature: 'response?: Codec;', - }, - { - name: 'responses', - summary: '', - signature: 'responses?: Readonly<Record<number, Codec>>;', - }, - { - name: 'errors', - summary: '', - signature: 'errors?: Partial<Record<number | "default", Codec>>;', - }, - { - name: 'signal', - summary: '', - signature: 'signal?: AbortSignal;', - }, - { - name: 'timeout', - summary: '', - signature: 'timeout?: number;', - }, - { - name: 'endpoint', - summary: '', - signature: 'endpoint?: EndpointDescriptor;', - }, - { - name: 'operationId', - summary: '', - signature: 'operationId?: string;', - }, - ], - }, - { - name: 'AnyEndpointDescriptor', - anchor: 'any-endpoint-descriptor', - signature: - 'AnyEndpointDescriptor: EndpointDescriptor<any, any, any, any, any, any>', - typeOnly: true, - summary: - 'An {@link EndpointDescriptor} with its type parameters erased, for use in generic contexts.', - }, - { - name: 'ApiClient', - anchor: 'api-client', - signature: - 'ApiClient: Readonly<{ [K in keyof A["endpoints"]]: ClientMethod<A["endpoints"][K]>; }>', - typeOnly: true, - summary: - 'A fully-typed client for an {@link ApiDefinition}, with one method per endpoint.', - }, - { - name: 'ApiDefinition', - anchor: 'api-definition', - signature: 'ApiDefinition: any', - typeOnly: true, - summary: - 'A named collection of endpoints plus optional API metadata, as produced by {@link defineApi }.', - members: [ - { - name: 'endpoints', - summary: '', - signature: 'readonly endpoints: E;', - }, - { - name: 'metadata', - summary: '', - signature: 'readonly metadata?: ApiMetadata;', - }, - ], - }, - { - name: 'ApiMetadata', - anchor: 'api-metadata', - signature: 'ApiMetadata: any', - typeOnly: true, - summary: - 'API-level (rather than per-endpoint) metadata, such as servers and security schemes.', - members: [ - { - name: 'servers', - summary: '', - signature: - 'readonly servers?: readonly (string | {\n readonly url: string;\n })[];', - }, - { - name: 'tags', - summary: '', - signature: 'readonly tags?: readonly unknown[];', - }, - { - name: 'securitySchemes', - summary: '', - signature: - 'readonly securitySchemes?: Readonly<Record<string, unknown>>;', - }, - ], - }, + symbols32: [], + symbols33: [ { name: 'arrayBuffer', anchor: 'array-buffer', @@ -10507,14 +9834,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'ClientResult', - anchor: 'client-result', - signature: 'ClientResult: Successes<D> | Errors<D> | FailureResult', - typeOnly: true, - summary: - 'The possible results of calling a typed client method for endpoint descriptor `D`.', - }, { name: 'Codec', anchor: 'codec', @@ -10605,170 +9924,26 @@ export const apiSymbolSets: Readonly< 'Creates a codec for bodies expected to be empty (e.g. 204 No Content), decoded as `undefined`.', }, { - name: 'EndpointBuilder', - anchor: 'endpoint-builder', - signature: 'EndpointBuilder: any', + name: 'FetchError', + anchor: 'fetch-error', + signature: 'FetchError: typeof FetchError', typeOnly: true, summary: - "Fluent, immutable builder for describing a single endpoint's params, query,\nheaders, body, responses, errors, and security requirements. Each method\nreturns a new builder reflecting the added configuration; the accumulated\nstate is finalized into an {@link EndpointDescriptor} by {@link defineApi}.", + 'An `Error` thrown by {@link unwrap} that wraps a failed (non-`ok`) {@link FetchResult}.', members: [ { - name: 'params', - summary: - 'Declares path parameter types and optional runtime validators. Generic types are erased;\nruntime validation occurs only for entries whose specification includes a validator.', - signature: - 'params<T extends Record<string, unknown>>(spec?: ParameterMap): EndpointBuilder<T, Q, H, B, R, E>;', - }, - { - name: 'query', - summary: '', - signature: - 'query<T extends Record<string, unknown>>(spec?: ParameterMap): EndpointBuilder<P, T, H, B, R, E>;', - }, - { - name: 'headers', - summary: '', - signature: - 'headers<T extends Record<string, unknown>>(spec?: ParameterMap): EndpointBuilder<P, Q, T, B, R, E>;', - }, - { - name: 'body', - summary: '', - signature: - 'body<C extends Codec>(codec: C): EndpointBuilder<P, Q, H, C extends Codec<infer T> ? T : never, R, E>;', - }, - { - name: 'returns', - summary: '', - signature: - 'returns<C extends Codec>(codec: C): EndpointBuilder<P, Q, H, B, R & Record<200, C>, E>;', - }, - { - name: 'returns', - summary: '', - signature: - 'returns<S extends number, C extends Codec>(status: S, codec: C): EndpointBuilder<P, Q, H, B, R & Record<S, C>, E>;', - }, - { - name: 'errors', - summary: '', - signature: - 'errors<T extends Errors>(spec: T): EndpointBuilder<P, Q, H, B, R, E & T>;', - }, - { - name: 'security', + name: 'result', summary: '', signature: - 'security(requirements: readonly Readonly<Record<string, readonly string[]>>[]): EndpointBuilder<P, Q, H, B, R, E>;', + 'readonly result: Exclude<FetchResult, {\n ok: true;\n }>;', }, ], }, { - name: 'EndpointDescriptor', - anchor: 'endpoint-descriptor', - signature: 'EndpointDescriptor: any', - typeOnly: true, - summary: - 'Describes a single API endpoint: its method, path, parameters, body, and possible responses.', - members: [ - { - name: 'method', - summary: '', - signature: 'readonly method: HttpMethod;', - }, - { - name: 'path', - summary: '', - signature: 'readonly path: string;', - }, - { - name: 'params', - summary: '', - signature: 'readonly params?: ParameterMap;', - }, - { - name: 'query', - summary: '', - signature: 'readonly query?: ParameterMap;', - }, - { - name: 'headers', - summary: '', - signature: 'readonly headers?: ParameterMap;', - }, - { - name: 'body', - summary: '', - signature: 'readonly body?: Codec;', - }, - { - name: 'responses', - summary: '', - signature: 'readonly responses: Readonly<R>;', - }, - { - name: 'errors', - summary: '', - signature: 'readonly errors: Readonly<E>;', - }, - { - name: 'security', - summary: '', - signature: - 'readonly security?: readonly Readonly<Record<string, readonly string[]>>[];', - }, - { - name: 'operationId', - summary: '', - signature: 'readonly operationId?: string;', - }, - { - name: '__input', - summary: '', - signature: - 'readonly __input?: {\n params: P;\n query: Q;\n headers: H;\n body: B;\n };', - }, - ], - }, - { - name: 'FailureKind', - anchor: 'failure-kind', - signature: - 'FailureKind: "request" | "network" | "timeout" | "abort" | "decode" | "middleware"', - typeOnly: true, - summary: - 'Categorizes why a fetch could not produce an {@link HttpResult} or {@link SuccessResult}.', - }, - { - name: 'FailureResult', - anchor: 'failure-result', - signature: - 'FailureResult: {\n ok: false;\n kind: FailureKind;\n status: number;\n error: unknown;\n headers: Headers;\n url: string;\n response?: Response;\n}', - typeOnly: true, - summary: - 'A fetch outcome that failed before or independently of receiving a decodable HTTP response.', - }, - { - name: 'FetchError', - anchor: 'fetch-error', - signature: 'FetchError: typeof FetchError', - typeOnly: true, - summary: - 'An `Error` thrown by {@link unwrap} that wraps a failed (non-`ok`) {@link FetchResult}.', - members: [ - { - name: 'result', - summary: '', - signature: - 'readonly result: Exclude<FetchResult, {\n ok: true;\n }>;', - }, - ], - }, - { - name: 'FetchResult', - anchor: 'fetch-result', - signature: - 'FetchResult: SuccessResult<T> | HttpResult<T> | FailureResult', + name: 'FetchResult', + anchor: 'fetch-result', + signature: + 'FetchResult: SuccessResult<T> | HttpResult<T> | FailureResult', typeOnly: true, summary: 'The outcome of a fetch call: success, an HTTP-level error, or another kind of failure.', @@ -10789,38 +9964,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Starts building a HEAD endpoint at the given path.', }, - { - name: 'HttpMethod', - anchor: 'http-method', - signature: - 'HttpMethod: "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD" | "OPTIONS"', - typeOnly: true, - summary: 'The set of HTTP methods supported by endpoint descriptors.', - }, - { - name: 'HttpResult', - anchor: 'http-result', - signature: - 'HttpResult: {\n ok: false;\n kind: "http";\n status: S;\n error: T;\n mediaType: string | null;\n headers: Headers;\n url: string;\n /** For stream codecs, this body is the same one-shot stream exposed by `error`. */\n response: Response;\n}', - typeOnly: true, - summary: - 'A non-2xx fetch outcome where the server responded with a decodable error body.', - }, - { - name: 'InferCodec', - anchor: 'infer-codec', - signature: 'InferCodec: C extends Codec<infer T> ? T : never', - typeOnly: true, - summary: 'Infers the decoded value type `T` from a {@link Codec}.', - }, - { - name: 'InferValidator', - anchor: 'infer-validator', - signature: - 'InferValidator: V extends {\n safeParse(value: unknown): infer Result;\n} ? Extract<Result, {\n readonly success: true;\n}> extends {\n readonly data: infer T;\n} ? T : never : never', - typeOnly: true, - summary: 'Infers the parsed output type `T` from a {@link Validator}.', - }, { name: 'json', anchor: 'json', @@ -10847,14 +9990,6 @@ export const apiSymbolSets: Readonly< summary: 'Creates a codec for `multipart/form-data` bodies, decoded as `FormData`.', }, - { - name: 'Next', - anchor: 'next', - signature: 'Next: (context?: RequestContext) => Promise<FetchResult>', - typeOnly: true, - summary: - 'Invokes the next middleware in the chain, optionally passing a replacement context.', - }, { name: 'options', anchor: 'options', @@ -10863,49 +9998,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Starts building an OPTIONS endpoint at the given path.', }, - { - name: 'ParameterMap', - anchor: 'parameter-map', - signature: - 'ParameterMap: Readonly<Record<string, Validator<unknown> | ParameterSpec | undefined>>', - typeOnly: true, - summary: - 'Maps parameter names to either a bare {@link Validator} or a full\n{@link ParameterSpec} describing serialization and validation.', - }, - { - name: 'ParameterSpec', - anchor: 'parameter-spec', - signature: 'ParameterSpec: any', - typeOnly: true, - summary: - 'Serialization and validation settings for a single path, query, or header parameter.', - members: [ - { - name: 'validator', - summary: '', - signature: 'readonly validator?: Validator<T>;', - }, - { - name: 'style', - summary: '', - signature: 'readonly style?: ParameterStyle;', - }, - { - name: 'explode', - summary: '', - signature: 'readonly explode?: boolean;', - }, - ], - }, - { - name: 'ParameterStyle', - anchor: 'parameter-style', - signature: - 'ParameterStyle: "simple" | "label" | "matrix" | "form" | "spaceDelimited" | "pipeDelimited" | "deepObject"', - typeOnly: true, - summary: - 'OpenAPI-style serialization styles for path, query, and header parameters.', - }, { name: 'patch', anchor: 'patch', @@ -10914,19 +10006,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Starts building a PATCH endpoint at the given path.', }, - { - name: 'pathNames', - anchor: 'path-names', - signature: 'pathNames: (path: string) => string[]', - typeOnly: true, - summary: - 'Extracts the ordered list of `{param}` placeholder names from an endpoint path.', - tags: { - throws: [ - '{TypeError} If the path uses colon/wildcard syntax, has malformed\n`{...}` placeholders, or contains a duplicate parameter name.', - ], - }, - }, { name: 'post', anchor: 'post', @@ -10943,54 +10022,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Starts building a PUT endpoint at the given path.', }, - { - name: 'RequestContext', - anchor: 'request-context', - signature: 'RequestContext: any', - typeOnly: true, - summary: - 'The mutable-by-replacement state threaded through the middleware chain for a single request.', - members: [ - { - name: 'request', - summary: '', - signature: 'readonly request: Request;', - }, - { - name: 'endpoint', - summary: '', - signature: 'readonly endpoint?: AnyEndpointDescriptor;', - }, - { - name: 'operationId', - summary: '', - signature: 'readonly operationId?: string;', - }, - { - name: 'security', - summary: '', - signature: 'readonly security?: AnyEndpointDescriptor["security"];', - }, - { - name: 'attempt', - summary: - '1 on the first attempt, incremented by middleware (e.g. {@link retry }) on subsequent attempts.', - signature: 'readonly attempt: number;', - }, - { - name: 'replayableBody', - summary: - 'Whether a body was encoded from a replayable value; streaming bodies set this to `false`.', - signature: 'readonly replayableBody?: boolean;', - }, - { - name: 'deadline', - summary: - 'Absolute timestamp (ms since epoch) by which the request must complete, if a timeout is set.', - signature: 'readonly deadline?: number;', - }, - ], - }, { name: 'stream', anchor: 'stream', @@ -10999,15 +10030,6 @@ export const apiSymbolSets: Readonly< summary: 'Creates a codec that exposes the raw response body as a `ReadableStream`, without buffering it.', }, - { - name: 'SuccessResult', - anchor: 'success-result', - signature: - 'SuccessResult: {\n ok: true;\n kind: "success";\n status: S;\n data: T;\n mediaType: string | null;\n headers: Headers;\n url: string;\n /** For stream codecs, this body is the same one-shot stream exposed by `data`. */\n response: Response;\n}', - typeOnly: true, - summary: - 'A successful (2xx) fetch outcome, carrying the decoded response data.', - }, { name: 'text', anchor: 'text', @@ -11049,13 +10071,13 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols29: [ + symbols34: [ { name: 'apiKeyAuth', anchor: 'api-key-auth', signature: 'apiKeyAuth: ({ key, value, in: location }: { key: string; value: string | (() => string | Promise<string>); in?: "header" | "query"; }) => Middleware', - typeOnly: false, + typeOnly: true, summary: 'Middleware that attaches an API key to every request, either as a header or a query\nparameter (`in`, default `"header"`). `value` may be a static string or a (possibly\nasync) function resolved on each request. The key is marked sensitive so the\n{@link logging} middleware redacts it.', }, @@ -11064,7 +10086,7 @@ export const apiSymbolSets: Readonly< anchor: 'bearer-auth', signature: 'bearerAuth: ({ token }: { token: string | (() => string | Promise<string>); }) => Middleware', - typeOnly: false, + typeOnly: true, summary: 'Middleware that attaches an `Authorization: Bearer <token>` header to every request.\n`token` may be a static string or a (possibly async) function resolved on each request.', }, @@ -11073,7 +10095,7 @@ export const apiSymbolSets: Readonly< anchor: 'logging', signature: 'logging: (logger?: { log(event: Record<string, unknown>): void; }) => Middleware', - typeOnly: false, + typeOnly: true, summary: 'Middleware that logs a `"request"` event before and a `"response"` event after each\nrequest, via the given logger (defaults to `console`). Headers and query parameters\nmarked sensitive (e.g. by {@link apiKeyAuth}) or matching common sensitive-name\npatterns (authorization, cookie, token, secret, password, api key) are redacted.', }, @@ -11081,92 +10103,26 @@ export const apiSymbolSets: Readonly< name: 'retry', anchor: 'retry', signature: 'retry: (options?: RetryOptions) => Middleware', - typeOnly: false, + typeOnly: true, summary: "Middleware that retries failed requests. Retries eligible methods on network failures\nor eligible response statuses, honoring a `Retry-After` header when present and\nstopping early if the request's deadline would be exceeded. A non-streaming request body\nis replayed only when it can be cloned before the first attempt; streaming, already-consumed,\nor otherwise non-cloneable bodies are sent once without retrying.", }, - { - name: 'RetryOptions', - anchor: 'retry-options', - signature: 'RetryOptions: any', - typeOnly: true, - summary: "Options controlling the {@link retry} middleware's behavior.", - members: [ - { - name: 'attempts', - summary: - 'Maximum number of attempts, including the first. Defaults to 3.', - signature: 'attempts?: number;', - }, - { - name: 'methods', - summary: - 'HTTP methods eligible for retry. Defaults to idempotent-by-convention methods.', - signature: 'methods?: readonly string[];', - }, - { - name: 'statuses', - summary: - 'Response statuses that trigger a retry. Defaults to common transient failure codes.', - signature: 'statuses?: readonly number[];', - }, - { - name: 'delay', - summary: - 'Computes the delay (ms) before the given retry attempt, if no `Retry-After` header is present.', - signature: 'delay?: (attempt: number) => number;', - }, - { - name: 'maxRetryAfter', - summary: - 'Maximum delay (ms) accepted from `Retry-After`. Defaults to 60 seconds.', - signature: 'maxRetryAfter?: number;', - }, - ], - }, { name: 'telemetry', anchor: 'telemetry', signature: 'telemetry: (hooks: TelemetryHooks) => Middleware', - typeOnly: false, - summary: - 'Middleware that wraps each request with {@link TelemetryHooks}, calling `start` before\nthe request, `end` after it completes, and `error` (then rethrowing) if it throws.', - }, - { - name: 'TelemetryHooks', - anchor: 'telemetry-hooks', - signature: 'TelemetryHooks: any', typeOnly: true, summary: - 'Hooks invoked by the {@link telemetry} middleware around each request.', - members: [ - { - name: 'start', - summary: - 'Called before the request proceeds; its return value (a "span") is passed to `end`/`error`.', - signature: 'start?(context: RequestContext): unknown;', - }, - { - name: 'end', - summary: - "Called after the request completes successfully (from this middleware's perspective).", - signature: 'end?(span: unknown, result: FetchResult): void;', - }, - { - name: 'error', - summary: 'Called if a downstream middleware or the transport throws.', - signature: 'error?(span: unknown, error: unknown): void;', - }, - ], + 'Middleware that wraps each request with {@link TelemetryHooks}, calling `start` before\nthe request, `end` after it completes, and `error` (then rethrowing) if it throws.', }, ], - symbols30: [ + symbols35: [ { name: 'applyLocaleAttributes', anchor: 'apply-locale-attributes', signature: 'applyLocaleAttributes: (target: LocaleAttributeTarget, attributes: LocaleAttributes) => void', - typeOnly: false, + typeOnly: true, summary: 'Apply locale attributes to an explicit DOM target such as `document.documentElement`.', }, @@ -11177,13 +10133,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Read-only map of message keys to typed message functions.', }, - { - name: 'CatalogKey', - anchor: 'catalog-key', - signature: - 'CatalogKey: { [Locale in keyof Catalogs]: keyof Catalogs[Locale]; }[keyof Catalogs] & string', - typeOnly: true, - }, { name: 'CatalogMessage', anchor: 'catalog-message', @@ -11196,7 +10145,7 @@ export const apiSymbolSets: Readonly< anchor: 'create-i18n', signature: 'createI18n: <const SourceLocale extends string, const Catalogs extends Record<SourceLocale, Catalog>>(sourceLocale: SourceLocale, catalogs: Catalogs & ValidCatalogs<Catalogs, SourceLocale>) => I18n<Catalogs>', - typeOnly: false, + typeOnly: true, summary: 'Creates an application-owned internationalization service.\n\nCatalog values are ordinary typed TypeScript functions. Locale selection is\nintentionally left to the application and installed lexically through Scope.', tags: { @@ -11207,65 +10156,6 @@ export const apiSymbolSets: Readonly< returns: ['A typed internationalization service.'], }, }, - { - name: 'I18n', - anchor: 'i18n', - signature: 'I18n: any', - typeOnly: true, - summary: - 'Typed internationalization service backed by aligned locale catalogs.', - members: [ - { - name: 'catalogs', - summary: 'Frozen catalogs supplied at creation time.', - signature: 'readonly catalogs: Readonly<Catalogs>;', - }, - { - name: 'Scope', - summary: 'JSX scope component that installs the active locale.', - signature: - 'readonly Scope: (props: I18nScopeProps<LocaleOf<Catalogs>>) => JSXElement;', - }, - { - name: 'text', - summary: 'Format a message in the active locale.', - signature: - 'text<Key extends CatalogKey<Catalogs>>(key: Key, ...args: MessageArgs<MessageAt<Catalogs, Key>>): string;', - }, - { - name: 'format', - summary: 'Format a message in an explicitly selected locale.', - signature: - 'format<Locale extends LocaleOf<Catalogs>, Key extends keyof Catalogs[Locale] & string>(locale: Locale, key: Key, ...args: MessageArgs<Catalogs[Locale][Key]>): string;', - }, - { - name: 'locale', - summary: 'Read the active locale.', - signature: 'locale(): LocaleOf<Catalogs>;', - }, - { - name: 'direction', - summary: "Read the active locale's text direction.", - signature: 'direction(): TextDirection;', - }, - { - name: 'catalog', - summary: 'Read the active catalog identifier.', - signature: 'catalog(): LocaleOf<Catalogs>;', - }, - { - name: 'attributes', - summary: - 'Read semantic HTML attributes for the active locale boundary.', - signature: 'attributes(): LocaleAttributes<LocaleOf<Catalogs>>;', - }, - { - name: 'dehydrate', - summary: 'Serialize the active locale state for hydration.', - signature: 'dehydrate(): I18nHydration<LocaleOf<Catalogs>>;', - }, - ], - }, { name: 'I18nHydration', anchor: 'i18n-hydration', @@ -11274,123 +10164,26 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Serializable locale state for SSR hydration.', }, - { - name: 'I18nScopeProps', - anchor: 'i18n-scope-props', - signature: - 'I18nScopeProps: {\n locale: Locale;\n dir?: TextDirection;\n hydration?: never;\n children?: unknown;\n} | {\n locale?: never;\n dir?: never;\n hydration: I18nHydration<Locale>;\n children?: unknown;\n}', - typeOnly: true, - summary: 'Props for installing locale state through the Scope component.', - members: [ - { - name: 'children', - summary: '', - signature: 'children?: unknown;', - }, - { - name: 'dir', - summary: '', - signature: 'dir?: TextDirection | undefined;', - }, - { - name: 'hydration', - summary: '', - signature: - 'hydration?: Readonly<{ version: 1; locale: Locale; dir: TextDirection; catalog: Locale; }> | undefined;', - }, - { - name: 'locale', - summary: '', - signature: 'locale?: Locale | undefined;', - }, - ], - }, { name: 'localeAttributes', anchor: 'locale-attributes', signature: 'localeAttributes: <const Locale extends string>(locale: Locale, direction?: TextDirection) => LocaleAttributes<Locale>', - typeOnly: false, - summary: - 'Build semantic HTML attributes for a document or nested locale boundary.', - }, - { - name: 'LocaleAttributes', - anchor: 'locale-attributes-2', - signature: - 'LocaleAttributes: Readonly<{\n lang: Locale;\n dir: TextDirection;\n}>', - typeOnly: true, - summary: - 'Semantic HTML locale attributes for a document or nested language boundary.', - }, - { - name: 'LocaleAttributeTarget', - anchor: 'locale-attribute-target', - signature: - 'LocaleAttributeTarget: {\n setAttribute(name: "lang" | "dir", value: string): void;\n}', typeOnly: true, summary: - 'Minimal target contract accepted by {@link applyLocaleAttributes}.', - }, - { - name: 'LocaleOf', - anchor: 'locale-of', - signature: 'LocaleOf: keyof Catalogs & string', - typeOnly: true, - }, - { - name: 'MessageArgs', - anchor: 'message-args', - signature: - 'MessageArgs: Message extends ((...args: infer Args) => string) ? Args : never', - typeOnly: true, - }, - { - name: 'MessageAt', - anchor: 'message-at', - signature: - 'MessageAt: { [Locale in keyof Catalogs]: Key extends keyof Catalogs[Locale] ? Catalogs[Locale][Key] : never; }[keyof Catalogs]', - typeOnly: true, + 'Build semantic HTML attributes for a document or nested locale boundary.', }, { name: 'resolveTextDirection', anchor: 'resolve-text-direction', signature: 'resolveTextDirection: (locale: string, override?: TextDirection) => TextDirection', - typeOnly: false, + typeOnly: true, summary: "Resolve a locale's default text direction, allowing an explicit application override.", }, - { - name: 'SameTuple', - anchor: 'same-tuple', - signature: - 'SameTuple: (<Value>() => Value extends Left ? 1 : 2) extends (<Value>() => (Value extends Right ? 1 : 2)) ? (<Value>() => Value extends Right ? 1 : 2) extends (<Value>() => (Value extends Left ? 1 : 2)) ? true : false : false', - typeOnly: true, - }, - { - name: 'TextDirection', - anchor: 'text-direction', - signature: 'TextDirection: "ltr" | "rtl"', - typeOnly: true, - summary: 'Text direction used by a locale.', - }, - { - name: 'ValidCatalog', - anchor: 'valid-catalog', - signature: - 'ValidCatalog: Candidate & { [Key in keyof Candidate]: Key extends keyof Source ? SameTuple<MessageArgs<Candidate[Key]>, MessageArgs<Source[Key]>> extends true ? Candidate[Key] : never : never; } & { [Key in Exclude<keyof Source, keyof Candidate>]: never; }', - typeOnly: true, - }, - { - name: 'ValidCatalogs', - anchor: 'valid-catalogs', - signature: - 'ValidCatalogs: { [Locale in keyof Catalogs]: ValidCatalog<Catalogs[SourceLocale], Catalogs[Locale]>; }', - typeOnly: true, - }, ], - symbols31: [ + symbols36: [ { name: 'AppleLogo', anchor: 'apple-logo', @@ -11399,27 +10192,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Apple logo icon component.', }, - { - name: 'createLogo', - anchor: 'create-logo', - signature: - 'createLogo: (displayName: string, logoNode: LogoNode) => { (props: LogoProps): JSXElement; displayName: string; }', - typeOnly: true, - summary: - 'Builds a brand logo icon component from a set of SVG shape descriptors.\n\nValidates the given `logoNode` against an allow-list of safe SVG tags and\nattributes (rejecting any `url(...)` references in `fill`/`stroke`), then\nreturns a component that renders those shapes wrapped in `IconBase`,\nmatching the sizing/color conventions of other Askr icons.', - tags: { - param: [ - "displayName - Name used for the icon (`iconName`) and set as the\nreturned component's `displayName`.", - "logoNode - Read-only list of `[tag, attributes]` pairs describing\nthe logo's SVG shapes.", - ], - returns: [ - 'A component accepting {@link LogoProps} that renders the logo.', - ], - throws: [ - '{TypeError} If `logoNode` contains an unsupported tag/attribute,\na non-string attribute value, or a `url(...)` reference in `fill`/`stroke`.', - ], - }, - }, { name: 'FacebookLogo', anchor: 'facebook-logo', @@ -11444,49 +10216,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Google logo icon component.', }, - { - name: 'LogoAttribute', - anchor: 'logo-attribute', - signature: - 'LogoAttribute: "clipRule" | "cx" | "cy" | "d" | "fill" | "fillRule" | "height" | "opacity" | "points" | "r" | "rx" | "ry" | "stroke" | "strokeWidth" | "transform" | "width" | "x" | "x1" | "x2" | "y" | "y1" | "y2"', - typeOnly: true, - summary: - 'SVG attribute names permitted on the elements of a {@link LogoNode}.', - }, - { - name: 'LogoAttributes', - anchor: 'logo-attributes', - signature: - 'LogoAttributes: Readonly<Partial<Record<LogoAttribute, string>>>', - typeOnly: true, - summary: - 'Map of allowed SVG attribute values, keyed by {@link LogoAttribute}.', - }, - { - name: 'LogoNode', - anchor: 'logo-node', - signature: - 'LogoNode: ReadonlyArray<readonly [tag: LogoTag, attrs: LogoAttributes]>', - typeOnly: true, - summary: - "Ordered list of `[tag, attributes]` pairs describing a logo's SVG shapes.", - }, - { - name: 'LogoProps', - anchor: 'logo-props', - signature: 'LogoProps: IconProps', - typeOnly: true, - summary: - 'Props accepted by logo components; identical to {@link IconProps}.', - }, - { - name: 'LogoTag', - anchor: 'logo-tag', - signature: - 'LogoTag: "circle" | "ellipse" | "line" | "path" | "polygon" | "polyline" | "rect"', - typeOnly: true, - summary: 'SVG element tags permitted inside a {@link LogoNode}.', - }, { name: 'MicrosoftLogo', anchor: 'microsoft-logo', @@ -11496,7 +10225,7 @@ export const apiSymbolSets: Readonly< summary: 'Microsoft logo icon component.', }, ], - symbols32: [ + symbols37: [ { name: 'AArrowDownIcon', anchor: 'aarrow-down-icon', @@ -15571,13 +14300,6 @@ export const apiSymbolSets: Readonly< 'CpuIcon: { ({ ...rest }: import("@askrjs/askr/foundations/icon").IconProps): import("@askrjs/askr/jsx-runtime").JSXElement; displayName: string; }', typeOnly: true, }, - { - name: 'createIcon', - anchor: 'create-icon', - signature: - 'createIcon: (displayName: string, iconNode: IconNode) => { ({ ...rest }: IconProps): import("@askrjs/askr/jsx-runtime").JSXElement; displayName: string; }', - typeOnly: true, - }, { name: 'CreativeCommonsIcon', anchor: 'creative-commons-icon', @@ -18392,77 +17114,6 @@ export const apiSymbolSets: Readonly< 'IceCreamIcon: { ({ ...rest }: import("@askrjs/askr/foundations/icon").IconProps): import("@askrjs/askr/jsx-runtime").JSXElement; displayName: string; }', typeOnly: true, }, - { - name: 'IconNode', - anchor: 'icon-node', - signature: - 'IconNode: ReadonlyArray<readonly [tag: string, attrs: Readonly<Record<string, string>>]>', - typeOnly: true, - }, - { - name: 'IconProps', - anchor: 'icon-props', - signature: - "IconProps: Omit<\n Props,\n | 'children'\n | 'class'\n | 'color'\n | 'height'\n | 'ref'\n | 'role'\n | 'stroke'\n | 'stroke-width'\n | 'style'\n | 'title'\n | 'width'\n> &\n IconOwnProps & {\n children?: unknown;\n ref?: Ref<SVGSVGElement>;\n }", - typeOnly: true, - summary: - 'Full prop set accepted by {@link IconBase} and generated icon components.', - members: [ - { - name: 'children', - summary: '', - signature: 'children?: unknown;', - }, - { - name: 'class', - summary: '', - signature: 'class?: string | undefined;', - }, - { - name: 'color', - summary: '', - signature: 'color?: string | undefined;', - }, - { - name: 'iconName', - summary: '', - signature: 'iconName?: string | undefined;', - }, - { - name: 'ref', - summary: '', - signature: 'ref?: Ref<SVGSVGElement>;', - }, - { - name: 'size', - summary: '', - signature: 'size?: string | number | undefined;', - }, - { - name: 'strokeWidth', - summary: '', - signature: 'strokeWidth?: number | undefined;', - }, - { - name: 'style', - summary: '', - signature: 'style?: string | IconStyleObject | undefined;', - }, - { - name: 'title', - summary: '', - signature: 'title?: string | undefined;', - }, - ], - }, - { - name: 'IconSizeToken', - anchor: 'icon-size-token', - signature: "IconSizeToken: 'sm' | 'md' | 'lg' | 'xl'", - typeOnly: true, - summary: - 'Named icon size presets, mapped to CSS variables at render time.', - }, { name: 'IdCardIcon', anchor: 'id-card-icon', @@ -25793,209 +24444,7 @@ export const apiSymbolSets: Readonly< typeOnly: true, }, ], - symbols33: [ - { - name: 'MonacoBeforeMount', - anchor: 'monaco-before-mount', - signature: - 'MonacoBeforeMount: ((monaco: MonacoNamespace) => void | PromiseLike<void>) | undefined', - typeOnly: true, - summary: - 'Hook run after Monaco loads but before the editor instance is created.', - }, - { - name: 'MonacoEditor', - anchor: 'monaco-editor', - signature: 'MonacoEditor: (props: MonacoEditorProps) => JSX.Element', - typeOnly: true, - summary: - "Monaco wrapper that keeps the Askr surface thin and forwards real Monaco\nmodels, options, and lifecycle access instead of recreating Monaco's API.", - }, - { - name: 'MonacoEditorInstance', - anchor: 'monaco-editor-instance', - signature: 'MonacoEditorInstance: Monaco.editor.IStandaloneCodeEditor', - typeOnly: true, - summary: 'A live Monaco standalone code editor instance.', - }, - { - name: 'MonacoEditorOptions', - anchor: 'monaco-editor-options', - signature: - "MonacoEditorOptions: Omit<Monaco.editor.IStandaloneEditorConstructionOptions, 'model' | 'value' | 'language' | 'theme'>", - typeOnly: true, - summary: - 'Monaco standalone editor construction options, excluding the fields that\n`MonacoEditorProps` manages directly (`model`, `value`, `language`, `theme`).', - }, - { - name: 'MonacoEditorProps', - anchor: 'monaco-editor-props', - signature: - "MonacoEditorProps: Omit<JSX.IntrinsicElements['div'], 'children' | 'ref'> & {\n ref?: Ref<HTMLDivElement>;\n children?: never;\n role?: JSX.IntrinsicElements['div']['role'];\n options?: MonacoEditorOptions;\n overrideServices?: Monaco.editor.IEditorOverrideServices;\n model?: MonacoTextModel | null;\n value?: string;\n defaultValue?: string;\n language?: string;\n path?: string | MonacoUri;\n /** Monaco theme name. Monaco applies themes process-wide, so simultaneous editors cannot use different themes. */\n theme?: string;\n monaco?: MonacoNamespace;\n loadMonaco?: MonacoLoader;\n beforeMount?: MonacoBeforeMount;\n onMount?: MonacoMountHandler;\n onUnmount?: MonacoMountHandler;\n onError?: MonacoErrorHandler;\n editorRef?: Ref<MonacoEditorInstance>;\n monacoRef?: Ref<MonacoNamespace>;\n}", - typeOnly: true, - summary: - "Thin Askr host for Monaco's standalone editor.\n\nPass raw Monaco `options` and, when needed, provide an external `model`\nto keep full access to Monaco's language services, providers, and editor APIs.", - members: [ - { - name: 'beforeMount', - summary: '', - signature: 'beforeMount?: MonacoBeforeMount;', - }, - { - name: 'children', - summary: '', - signature: 'children?: undefined;', - }, - { - name: 'defaultValue', - summary: '', - signature: 'defaultValue?: string | undefined;', - }, - { - name: 'editorRef', - summary: '', - signature: 'editorRef?: Ref<Monaco.editor.IStandaloneCodeEditor>;', - }, - { - name: 'language', - summary: '', - signature: 'language?: string | undefined;', - }, - { - name: 'loadMonaco', - summary: '', - signature: 'loadMonaco?: MonacoLoader;', - }, - { - name: 'model', - summary: '', - signature: 'model?: Monaco.editor.ITextModel | null | undefined;', - }, - { - name: 'monaco', - summary: '', - signature: - 'monaco?: typeof import("monaco-editor/editor/editor.api") | undefined;', - }, - { - name: 'monacoRef', - summary: '', - signature: - 'monacoRef?: Ref<typeof import("monaco-editor/editor/editor.api")>;', - }, - { - name: 'onError', - summary: '', - signature: 'onError?: MonacoErrorHandler;', - }, - { - name: 'onMount', - summary: '', - signature: 'onMount?: MonacoMountHandler;', - }, - { - name: 'onUnmount', - summary: '', - signature: 'onUnmount?: MonacoMountHandler;', - }, - { - name: 'options', - summary: '', - signature: 'options?: MonacoEditorOptions | undefined;', - }, - { - name: 'overrideServices', - summary: '', - signature: - 'overrideServices?: Monaco.editor.IEditorOverrideServices | undefined;', - }, - { - name: 'path', - summary: '', - signature: 'path?: string | Monaco.Uri | undefined;', - }, - { - name: 'ref', - summary: '', - signature: 'ref?: Ref<HTMLDivElement>;', - }, - { - name: 'role', - summary: '', - signature: 'role?: ReactiveProp<IntrinsicTextValue>;', - }, - { - name: 'theme', - summary: - 'Monaco theme name. Monaco applies themes process-wide, so simultaneous editors cannot use different themes.', - signature: 'theme?: string | undefined;', - }, - { - name: 'value', - summary: '', - signature: 'value?: string | undefined;', - }, - ], - }, - { - name: 'MonacoErrorHandler', - anchor: 'monaco-error-handler', - signature: 'MonacoErrorHandler: ((error: unknown) => void) | undefined', - typeOnly: true, - summary: 'Handler invoked when loading Monaco or applying an edit fails.', - }, - { - name: 'MonacoLoader', - anchor: 'monaco-loader', - signature: - 'MonacoLoader: (() => MonacoNamespace | PromiseLike<MonacoNamespace>) | undefined', - typeOnly: true, - summary: - "Loader invoked to resolve the Monaco namespace when `monaco` isn't provided directly.", - }, - { - name: 'MonacoMountHandler', - anchor: 'monaco-mount-handler', - signature: - 'MonacoMountHandler: ((editor: MonacoEditorInstance, monaco: MonacoNamespace) => void) | undefined', - typeOnly: true, - summary: - 'Handler invoked with the editor and Monaco namespace on mount or unmount.', - }, - { - name: 'MonacoNamespace', - anchor: 'monaco-namespace', - signature: - "MonacoNamespace: typeof import('monaco-editor/editor/editor.api')", - typeOnly: true, - summary: - 'The `monaco-editor` module namespace, either provided directly or resolved by `loadMonaco`.', - }, - { - name: 'MonacoTextModel', - anchor: 'monaco-text-model', - signature: 'MonacoTextModel: Monaco.editor.ITextModel', - typeOnly: true, - summary: 'A Monaco text model backing an editor instance.', - }, - { - name: 'MonacoUri', - anchor: 'monaco-uri', - signature: 'MonacoUri: Monaco.Uri', - typeOnly: true, - summary: "A Monaco URI, used to identify a text model's path.", - }, - ], - symbols34: [ - { - name: 'MonacoBeforeMount', - anchor: 'monaco-before-mount', - signature: - 'MonacoBeforeMount: ((monaco: MonacoNamespace) => void | PromiseLike<void>) | undefined', - typeOnly: true, - summary: - 'Hook run after Monaco loads but before the editor instance is created.', - }, + symbols38: [ { name: 'MonacoEditor', anchor: 'monaco-editor', @@ -26004,13 +24453,6 @@ export const apiSymbolSets: Readonly< summary: "Monaco wrapper that keeps the Askr surface thin and forwards real Monaco\nmodels, options, and lifecycle access instead of recreating Monaco's API.", }, - { - name: 'MonacoEditorInstance', - anchor: 'monaco-editor-instance', - signature: 'MonacoEditorInstance: Monaco.editor.IStandaloneCodeEditor', - typeOnly: true, - summary: 'A live Monaco standalone code editor instance.', - }, { name: 'MonacoEditorOptions', anchor: 'monaco-editor-options', @@ -26130,107 +24572,8 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'MonacoErrorHandler', - anchor: 'monaco-error-handler', - signature: 'MonacoErrorHandler: ((error: unknown) => void) | undefined', - typeOnly: true, - summary: 'Handler invoked when loading Monaco or applying an edit fails.', - }, - { - name: 'MonacoLoader', - anchor: 'monaco-loader', - signature: - 'MonacoLoader: (() => MonacoNamespace | PromiseLike<MonacoNamespace>) | undefined', - typeOnly: true, - summary: - "Loader invoked to resolve the Monaco namespace when `monaco` isn't provided directly.", - }, - { - name: 'MonacoMountHandler', - anchor: 'monaco-mount-handler', - signature: - 'MonacoMountHandler: ((editor: MonacoEditorInstance, monaco: MonacoNamespace) => void) | undefined', - typeOnly: true, - summary: - 'Handler invoked with the editor and Monaco namespace on mount or unmount.', - }, - { - name: 'MonacoNamespace', - anchor: 'monaco-namespace', - signature: - "MonacoNamespace: typeof import('monaco-editor/editor/editor.api')", - typeOnly: true, - summary: - 'The `monaco-editor` module namespace, either provided directly or resolved by `loadMonaco`.', - }, - { - name: 'MonacoTextModel', - anchor: 'monaco-text-model', - signature: 'MonacoTextModel: Monaco.editor.ITextModel', - typeOnly: true, - summary: 'A Monaco text model backing an editor instance.', - }, - { - name: 'MonacoUri', - anchor: 'monaco-uri', - signature: 'MonacoUri: Monaco.Uri', - typeOnly: true, - summary: "A Monaco URI, used to identify a text model's path.", - }, - ], - symbols35: [ - { - name: 'createMonacoEditorTestDriver', - anchor: 'create-monaco-editor-test-driver', - signature: - 'createMonacoEditorTestDriver: (editor: MonacoEditorInstance) => MonacoEditorTestDriver', - typeOnly: false, - summary: - "Create deterministic test controls for model edits and editor commands.\nThese controls bypass host keyboard mapping but still use Monaco's model and\nundo stack.", - }, - { - name: 'MonacoEditorTestDriver', - anchor: 'monaco-editor-test-driver', - signature: 'MonacoEditorTestDriver: any', - typeOnly: true, - members: [ - { - name: 'selectAll', - summary: - 'Select the complete model without relying on a platform modifier key.', - signature: 'selectAll(): void;', - }, - { - name: 'deleteSelection', - summary: "Delete the current selection through Monaco's edit stack.", - signature: 'deleteSelection(): void;', - }, - { - name: 'replaceAll', - summary: "Replace the complete model through Monaco's edit stack.", - signature: 'replaceAll(value: string): void;', - }, - { - name: 'undo', - summary: "Invoke Monaco's undo command.", - signature: 'undo(): void;', - }, - { - name: 'redo', - summary: "Invoke Monaco's redo command.", - signature: 'redo(): void;', - }, - { - name: 'trigger', - summary: - 'Invoke any Monaco editor command, including completion commands.', - signature: 'trigger(actionId: string, payload?: unknown): void;', - }, - ], - }, ], - symbols36: [ + symbols39: [ { name: 'CLIENT_ADDRESS_HEADER', anchor: 'client-address-header', @@ -26239,14 +24582,6 @@ export const apiSymbolSets: Readonly< summary: 'Reserved request header containing the TCP peer address authenticated by the Node adapter.\nAny value supplied by the HTTP client is overwritten before application dispatch.', }, - { - name: 'ConnectNext', - anchor: 'connect-next', - signature: 'ConnectNext: (error?: unknown) => void', - typeOnly: true, - summary: - 'Connect/Express-style `next` callback used to hand off unhandled requests.', - }, { name: 'createNodeHandler', anchor: 'create-node-handler', @@ -26383,56 +24718,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'NodeWebSocketOptions', - anchor: 'node-web-socket-options', - signature: 'NodeWebSocketOptions: any', - typeOnly: true, - summary: - 'Options controlling how WebSocket upgrades are handled on a Node server.', - members: [ - { - name: 'closeTimeout', - summary: - 'Milliseconds to wait for a peer to acknowledge a close handshake before the socket is force-closed.', - signature: 'readonly closeTimeout?: number;', - }, - { - name: 'maxPayload', - summary: - 'Maximum allowed size, in bytes, of a single WebSocket message.', - signature: 'readonly maxPayload?: number;', - }, - { - name: 'maxRejectionBodyBytes', - summary: - 'Maximum number of body bytes read from a rejected upgrade request before the connection is destroyed.', - signature: 'readonly maxRejectionBodyBytes?: number;', - }, - { - name: 'perMessageDeflate', - summary: - 'Enables or configures the permessage-deflate WebSocket extension.', - signature: - 'readonly perMessageDeflate?: boolean | PerMessageDeflateOptions;', - }, - { - name: 'allowedOrigins', - summary: - 'Origins allowed to open a WebSocket connection; when omitted, all origins are allowed.', - signature: 'readonly allowedOrigins?: readonly string[];', - }, - ], - }, - { - name: 'normalizeClientAddress', - anchor: 'normalize-client-address', - signature: - 'normalizeClientAddress: (address: string | undefined) => string', - typeOnly: false, - summary: - 'Normalizes the socket peer address used for the adapter-authenticated request header.', - }, { name: 'serve', anchor: 'serve', @@ -26503,7 +24788,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols37: [ + symbols40: [ { name: 'connectMcpStdio', anchor: 'connect-mcp-stdio', @@ -26607,185 +24892,14 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols38: [ + symbols41: [ { name: 'createTelemetry', anchor: 'create-telemetry', signature: 'createTelemetry: (options?: TelemetryOptions) => Telemetry', - typeOnly: false, - summary: - "Creates a function-first bridge to the application's installed OpenTelemetry\nprovider. This package never installs an SDK, processor, backend, or exporter.", - }, - { - name: 'Telemetry', - anchor: 'telemetry', - signature: 'Telemetry: any', - typeOnly: true, - summary: - "Function-first bridge to the application's installed OpenTelemetry provider.\nEvery method wraps a unit of work in a span (or emits a log line) and never\nthrows on account of tracing/logging failures — application behavior is\nalways isolated from observability failures.", - members: [ - { - name: 'span', - summary: - 'Wraps `work` in a span for the given `operation`, recording `fields` as attributes.', - signature: - 'span<T>(operation: TelemetryOperation, fields: TelemetryFields, work: () => T): T;', - }, - { - name: 'request', - summary: - 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.request"`.', - signature: 'request<T>(fields: TelemetryFields, work: () => T): T;', - }, - { - name: 'routeMatch', - summary: - 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.route.match"`.', - signature: - 'routeMatch<T>(fields: TelemetryFields, work: () => T): T;', - }, - { - name: 'loader', - summary: - 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.loader"`.', - signature: 'loader<T>(fields: TelemetryFields, work: () => T): T;', - }, - { - name: 'action', - summary: - 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.action"`.', - signature: 'action<T>(fields: TelemetryFields, work: () => T): T;', - }, - { - name: 'apiOperation', - summary: - 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.api.operation"`.', - signature: - 'apiOperation<T>(fields: TelemetryFields, work: () => T): T;', - }, - { - name: 'queryPrefetch', - summary: - 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.query.prefetch"`.', - signature: - 'queryPrefetch<T>(fields: TelemetryFields, work: () => T): T;', - }, - { - name: 'ssrRender', - summary: - 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.ssr.render"`.', - signature: 'ssrRender<T>(fields: TelemetryFields, work: () => T): T;', - }, - { - name: 'viteDocument', - summary: - 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.vite.document"`.', - signature: - 'viteDocument<T>(fields: TelemetryFields, work: () => T): T;', - }, - { - name: 'log', - summary: 'Emits a single sanitized log line without opening a span.', - signature: - 'log(level: TelemetryLevel, event: TelemetryOperation, fields?: TelemetryFields): void;', - }, - { - name: 'extract', - summary: - 'Extracts a trace {@link Context} from a carrier (e.g. incoming request headers) using `getter`.', - signature: - 'extract<Carrier>(carrier: Carrier, getter: TextMapGetter<Carrier>): Context;', - }, - { - name: 'inject', - summary: - 'Injects the active (or given) {@link Context} into `carrier` using `setter`, returning the carrier.', - signature: - 'inject<Carrier>(carrier: Carrier, setter: TextMapSetter<Carrier>, value?: Context): Carrier;', - }, - { - name: 'withContext', - summary: - 'Runs `work` with `value` as the active OpenTelemetry context.', - signature: 'withContext<T>(value: Context, work: () => T): T;', - }, - { - name: 'traceId', - summary: - 'Returns the trace ID of the currently active span, if any and if valid.', - signature: 'traceId(): string | undefined;', - }, - ], - }, - { - name: 'TelemetryFields', - anchor: 'telemetry-fields', - signature: 'TelemetryFields: any', - typeOnly: true, - summary: - 'Structured fields attached to a span or log line. Only these known keys are\never sanitized and forwarded; unknown keys on a passed-in object are dropped.', - members: [ - { - name: 'requestId', - summary: '', - signature: 'requestId?: string;', - }, - { - name: 'traceId', - summary: '', - signature: 'traceId?: string;', - }, - { - name: 'route', - summary: '', - signature: 'route?: string;', - }, - { - name: 'action', - summary: '', - signature: 'action?: string;', - }, - { - name: 'operation', - summary: '', - signature: 'operation?: string;', - }, - { - name: 'status', - summary: '', - signature: 'status?: number;', - }, - { - name: 'durationMs', - summary: '', - signature: 'durationMs?: number;', - }, - ], - }, - { - name: 'TelemetryLevel', - anchor: 'telemetry-level', - signature: 'TelemetryLevel: "debug" | "info" | "warn" | "error"', - typeOnly: true, - summary: - 'Severity of a telemetry log line, mirrored from common structured-logging conventions.', - }, - { - name: 'TelemetryLogger', - anchor: 'telemetry-logger', - signature: - 'TelemetryLogger: (level: TelemetryLevel, event: TelemetryOperation, fields: Readonly<TelemetryFields>) => void', - typeOnly: true, - summary: 'Callback invoked with each sanitized telemetry log line.', - }, - { - name: 'TelemetryOperation', - anchor: 'telemetry-operation', - signature: - 'TelemetryOperation: "askr.request" | "askr.route.match" | "askr.loader" | "askr.action" | "askr.api.operation" | "askr.query.prefetch" | "askr.ssr.render" | "askr.vite.document"', typeOnly: true, summary: - 'The set of Askr lifecycle stages that {@link Telemetry} can wrap with a span.', + "Creates a function-first bridge to the application's installed OpenTelemetry\nprovider. This package never installs an SDK, processor, backend, or exporter.", }, { name: 'TelemetryOptions', @@ -26839,34 +24953,13 @@ export const apiSymbolSets: Readonly< { name: 'onDroppedField', summary: - 'Optional diagnostic invoked for each non-allowlisted field; failures are isolated from application work.', + 'Optional diagnostic invoked for each non-allowlisted field; thrown and asynchronously rejected failures are isolated without awaiting diagnostics.', signature: 'onDroppedField?: (name: PropertyKey) => void;', }, ], }, ], - symbols39: [ - { - name: 'array', - anchor: 'array', - signature: - 'array: <T>(items: Schema<T>, options?: ArrayOptions) => Schema<T[]>', - typeOnly: false, - }, - { - name: 'ArrayOptions', - anchor: 'array-options', - signature: - 'ArrayOptions: CommonOptions & {\n minItems?: number;\n maxItems?: number;\n uniqueItems?: boolean;\n}', - typeOnly: true, - }, - { - name: 'CommonOptions', - anchor: 'common-options', - signature: - 'CommonOptions: {\n description?: string;\n title?: string;\n examples?: readonly unknown[];\n default?: unknown;\n deprecated?: boolean;\n readOnly?: boolean;\n writeOnly?: boolean;\n}', - typeOnly: true, - }, + symbols42: [ { name: 'InferSchema', anchor: 'infer-schema', @@ -26909,34 +25002,6 @@ export const apiSymbolSets: Readonly< summary: 'A frozen, deterministic JSON Schema (draft 2020-12) object produced by a {@link Schema}.', }, - { - name: 'NullableSchema', - anchor: 'nullable-schema', - signature: - 'NullableSchema: T extends OptionalSchema<infer Value> ? OptionalSchema<Value | null> : Schema<InferSchema<T> | null>', - typeOnly: true, - }, - { - name: 'NumberOptions', - anchor: 'number-options', - signature: - 'NumberOptions: CommonOptions & {\n minimum?: number;\n maximum?: number;\n exclusiveMinimum?: number;\n exclusiveMaximum?: number;\n multipleOf?: number;\n}', - typeOnly: true, - }, - { - name: 'object', - anchor: 'object', - signature: - 'object: <T extends Record<string, Schema>>(properties: T, options?: ObjectOptions) => ObjectSchema<ObjectValue<T>>', - typeOnly: false, - }, - { - name: 'ObjectOptions', - anchor: 'object-options', - signature: - 'ObjectOptions: CommonOptions & {\n additionalProperties?: boolean | Schema;\n minProperties?: number;\n maxProperties?: number;\n}', - typeOnly: true, - }, { name: 'ObjectSchema', anchor: 'object-schema', @@ -26952,20 +25017,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'ObjectValue', - anchor: 'object-value', - signature: - 'ObjectValue: { [K in Exclude<keyof T, OptionalKeys<T>>]: InferSchema<T[K]>; } & { [K in OptionalKeys<T>]?: Exclude<InferSchema<T[K]>, undefined>; }', - typeOnly: true, - }, - { - name: 'OptionalKeys', - anchor: 'optional-keys', - signature: - 'OptionalKeys: { [K in keyof T]-?: T[K] extends OptionalSchema<unknown> ? K : never; }[keyof T]', - typeOnly: true, - }, { name: 'OptionalSchema', anchor: 'optional-schema', @@ -26981,21 +25032,12 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'SafeParseResult', - anchor: 'safe-parse-result', - signature: - 'SafeParseResult: {\n readonly success: true;\n readonly data: T;\n} | {\n readonly success: false;\n readonly issues: readonly Issue[];\n}', - typeOnly: true, - summary: - 'The outcome of parsing a value: either the validated data, or the list of issues found.', - }, { name: 'schema', anchor: 'schema-2', signature: 'schema: Readonly<{ string: typeof string; uuid: (options?: StringOptions) => Schema<string>; email: (options?: StringOptions) => Schema<string>; uri: (options?: StringOptions) => Schema<string>; date: (options?: StringOptions) => Schema<string>; dateTime: (options?: StringOptions) => Schema<string>; byte: (options?: StringOptions) => Schema<string>; binary: (options?: StringOptions) => Schema<string>; number: (options?: NumberOptions) => Schema<number>; integer: (options?: NumberOptions) => Schema<number>; boolean: (options?: CommonOptions) => Schema<boolean>; null: (options?: CommonOptions) => Schema<null>; object: typeof object; array: typeof array; record: <T>(values: Schema<T>, options?: CommonOptions) => ObjectSchema<Record<string, T>>; enum: <const T extends readonly (string | number | boolean)[]>(values: T, options?: CommonOptions) => Schema<T[number]>; literal: <const T extends string | number | boolean | null>(value: T, options?: CommonOptions) => Schema<T>; optional: <T>(value: Schema<T>) => OptionalSchema<T>; nullable: <T extends Schema>(value: T) => NullableSchema<T>; oneOf: <const T extends readonly Schema[]>(...values: T) => Schema<InferSchema<T[number]>>; anyOf: <const T extends readonly Schema[]>(...values: T) => Schema<InferSchema<T[number]>>; allOf: <const T extends readonly Schema[]>(...values: T) => Schema<UnionToIntersection<InferSchema<T[number]>>>; raw: <T>(jsonSchema: JsonSchema, safeParse: (value: unknown) => SafeParseResult<T>) => Schema<T>; }>', - typeOnly: false, + typeOnly: true, summary: 'The public schema builder namespace: create executable schemas whose {@link Schema.safeParse}\nvalidates a value and whose `jsonSchema` field is a deterministic JSON Schema (draft 2020-12)\nprojection suitable for OpenAPI documents.', tags: { @@ -27031,107 +25073,125 @@ export const apiSymbolSets: Readonly< }, ], }, + ], + symbols43: [ { - name: 'string', - anchor: 'string', - signature: 'string: (options?: StringOptions) => Schema<string>', - typeOnly: false, - }, - { - name: 'StringFormat', - anchor: 'string-format', + name: 'createServerApp', + anchor: 'create-server-app', signature: - 'StringFormat: "uuid" | "email" | "uri" | "date" | "date-time" | "byte" | "binary"', + 'createServerApp: { (router: Router): ServerApp; (options?: ServerAppOptions): ServerApp; }', typeOnly: true, summary: - 'Supported `format` values for {@link schema.string} and its format-specific shorthands.', - }, - { - name: 'StringOptions', - anchor: 'string-options', - signature: - 'StringOptions: CommonOptions & {\n minLength?: number;\n maxLength?: number;\n pattern?: string;\n format?: StringFormat;\n}', - typeOnly: true, + "Creates a transport-neutral server application that dispatches Web `Request`s to a\nrouter's routes and middleware, returning Web `Response`s.\n\nAccepts either a bare {@link Router} or a full {@link ServerAppOptions} object (which\nmay itself reference a router). Builds a path matcher from the combined routes, validates\nrequest-size limits, and wraps dispatch with auth resolution, telemetry, and error handling\n(payload-too-large, malformed path parameters, binding errors, and a fallback `onError`).\nCreates a transport-neutral server application. See the {@link Router} overload for details.", + tags: { + param: [ + 'router - A router whose routes and middleware should back the application.', + 'options - Configuration including router, middleware, auth, telemetry,\nerror handling, and request-size limits.', + ], + returns: [ + 'A {@link ServerApp} exposing a `fetch(request, dispatchOptions)` method.', + 'A {@link ServerApp} exposing a `fetch(request, dispatchOptions)` method.', + ], + example: [ + 'const app = createServerApp(router);\nexport default { fetch: app.fetch };', + ], + }, }, { - name: 'UnionToIntersection', - anchor: 'union-to-intersection', + name: 'Handler', + anchor: 'handler', signature: - 'UnionToIntersection: (T extends unknown ? (value: T) => void : never) extends ((value: infer Value) => void) ? Value : never', + 'Handler: {\n bivarianceHack(context: ServerContext<RouteParams>): Response | Promise<Response>;\n}["bivarianceHack"]', typeOnly: true, + summary: + 'A route handler function that produces a response for a given {@link ServerContext}.', }, - ], - symbols40: [ { - name: 'accepted', - anchor: 'accepted', + name: 'Middleware', + anchor: 'middleware', signature: - 'accepted: (value?: JsonValue, init?: ResponseInit) => Response', + 'Middleware: {\n bivarianceHack(context: ServerContext<RouteParams>, next: Next): Response | Promise<Response>;\n}["bivarianceHack"]', typeOnly: true, summary: - 'Builds a `202 Accepted` response; JSON-serializes `value` if given, otherwise an empty body.', + 'A middleware function that may short-circuit or delegate to `next` to produce a response.', }, { - name: 'accepts', - anchor: 'accepts', - signature: 'accepts: (value: string, expected: string) => boolean', + name: 'Next', + anchor: 'next', + signature: 'Next: () => Response | Promise<Response>', typeOnly: true, + summary: + 'Continuation function passed to a {@link Middleware}, invoking the next handler in the chain.', }, { - name: 'AccessDeniedHandler', - anchor: 'access-denied-handler', - signature: - 'AccessDeniedHandler: (decision: Extract<AuthDecision, {\n allowed: false;\n}>, context: ServerContext) => Response | Promise<Response>', + name: 'ServerApp', + anchor: 'server-app', + signature: 'ServerApp: any', typeOnly: true, summary: - 'Handler invoked to produce a response when an auth decision denies access.', + 'A configured server application, as returned by {@link createServerApp }.', + members: [ + { + name: 'fetch', + summary: '', + signature: + 'fetch(request: Request, dispatchOptions?: ServerDispatchOptions): Promise<Response>;', + }, + ], }, { - name: 'ApiRoute', - anchor: 'api-route', - signature: 'ApiRoute: any', + name: 'ServerAppOptions', + anchor: 'server-app-options', + signature: 'ServerAppOptions: any', typeOnly: true, summary: - 'A single registered route: a path/method pattern paired with a handler (or WebSocket upgrade handler).', + 'Options accepted by {@link createServerApp } to configure a server application.', members: [ { - name: 'path', + name: 'router', summary: '', - signature: 'path: string;', + signature: 'router?: Router;', }, { - name: 'method', + name: 'middleware', summary: '', - signature: 'method?: string | readonly string[];', + signature: 'middleware?: readonly Middleware[];', }, { - name: 'handler', + name: 'onError', summary: '', - signature: 'handler: Handler<RouteParams>;', + signature: + 'onError?: (error: unknown, context: ServerContext) => Response | Promise<Response>;', }, { - name: 'upgrade', + name: 'onAccessDenied', summary: '', - signature: 'upgrade?: WebSocketHandler<RouteParams>;', + signature: 'onAccessDenied?: AccessDeniedHandler;', }, - ], - }, - { - name: 'ApiRouteOptions', - anchor: 'api-route-options', - signature: 'ApiRouteOptions: any', - typeOnly: true, - summary: 'Per-route configuration shared by {@link ApiRoute}.', - members: [ { name: 'auth', summary: '', - signature: 'auth?: AuthRequirement;', + signature: 'auth?: AuthResolver;', }, { - name: 'middleware', + name: 'fallback', summary: '', - signature: 'middleware?: readonly Middleware<RouteParams>[];', + signature: 'fallback?: Handler;', + }, + { + name: 'websocket', + summary: '', + signature: 'websocket?: WebSocketAdapter;', + }, + { + name: 'probes', + summary: '', + signature: 'probes?: ProbeOptions;', + }, + { + name: 'telemetry', + summary: '', + signature: 'telemetry?: ServerTelemetry;', }, { name: 'maxRequestBytes', @@ -27141,906 +25201,399 @@ export const apiSymbolSets: Readonly< ], }, { - name: 'AuthCredentials', - anchor: 'auth-credentials', - signature: 'AuthCredentials: any', + name: 'ServerContext', + anchor: 'server-context', + signature: 'ServerContext: any', typeOnly: true, summary: - 'Email/password credentials submitted to the register or authenticate endpoints.', + 'The per-request context passed to handlers and middleware, bundling the incoming request,\nparsed URL/params/query, auth state, and a family of response-building helper methods\n(`json`, `ok`, `notFound`, `problem`, `setCookie`, `upgrade`, etc.).', members: [ { - name: 'email', + name: 'request', summary: '', - signature: 'email: string;', + signature: 'request: Request;', }, { - name: 'password', + name: 'url', summary: '', - signature: 'password: string;', + signature: 'url: URL;', }, - ], - }, - { - name: 'AuthRouteError', - anchor: 'auth-route-error', - signature: 'AuthRouteError: typeof AuthRouteError', - typeOnly: true, - summary: - 'Error thrown from `register`/`authenticate`/etc. callbacks to short-circuit an auth route with a specific status.', - members: [ { - name: 'status', + name: 'params', summary: '', - signature: 'readonly status: 401 | 409 | 429;', + signature: 'params: RouteParams;', }, - ], - }, - { - name: 'AuthRouteOptions', - anchor: 'auth-route-options', - signature: 'AuthRouteOptions: any', - typeOnly: true, - summary: 'Configuration for {@link registerAuthRoutes}.', - members: [ { - name: 'issuer', + name: 'headers', summary: '', - signature: 'issuer: TokenIssuer<P>;', + signature: 'headers: Headers;', }, { - name: 'cookie', + name: 'query', summary: '', - signature: 'cookie: CookieOptions & {\n name: string;\n };', + signature: 'query: URLSearchParams;', }, { - name: 'principalSchema', + name: 'state', summary: '', - signature: 'principalSchema: Schema;', + signature: 'state: RequestState;', }, { - name: 'register', + name: 'auth', summary: '', - signature: - 'register(context: ServerContext, credentials: AuthCredentials): P | Promise<P>;', + signature: 'auth: ServerAuthContext;', }, { - name: 'authenticate', + name: 'signal', summary: '', - signature: - 'authenticate(context: ServerContext, credentials: AuthCredentials): P | null | Promise<P | null>;', + signature: 'signal: AbortSignal;', }, { - name: 'allowAttempt', + name: 'sse', summary: '', signature: - 'allowAttempt(context: ServerContext, operation: "register" | "authenticate", normalizedEmail: string): boolean | Promise<boolean>;', + 'sse(options?: Omit<EventStreamOptions, "signal">): EventStream;', }, { - name: 'revoke', + name: 'telemetry', summary: '', - signature: 'revoke?(context: ServerContext): void | Promise<void>;', + signature: 'telemetry?: ServerTelemetry;', }, { - name: 'redirect', + name: 'bind', summary: '', signature: - 'redirect?: (context: ServerContext, operation: "register" | "authenticate", principal: P) => string | undefined;', + 'bind<T extends object = Record<string, unknown>>(): Promise<T>;', }, - ], - }, - { - name: 'bad', - anchor: 'bad', - signature: 'bad: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Alias for {@link badRequest}.', - }, - { - name: 'badRequest', - anchor: 'bad-request', - signature: - 'badRequest: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `400 Bad Request` Problem Details response.', - }, - { - name: 'bind', - anchor: 'bind', - signature: - 'bind: <T extends object = Record<string, unknown>>(context: BindContext) => Promise<T>', - typeOnly: true, - summary: - "Merges a request's body, query string, and path parameters into a single object, in that\nprecedence order (path parameters win, then query string, then body). Supports JSON,\nURL-encoded, and multipart/form-data bodies; unrecognized content types yield an empty body.", - tags: { - param: [ - 'context - The request, URL, query, and path parameters to bind from.', - ], - returns: ['The merged values, cast to `T`.'], - throws: [ - '{BindingError} If the body cannot be read or parsed for its declared content type.', - ], - }, - }, - { - name: 'BindContext', - anchor: 'bind-context', - signature: 'BindContext: any', - typeOnly: true, - summary: - 'Minimal request context required by {@link bind} to gather body, query, and path values.', - members: [ { - name: 'request', + name: 'json', summary: '', - signature: 'request: Request;', + signature: 'json(value: JsonValue, init?: ResponseInit): Response;', }, { - name: 'params', + name: 'text', summary: '', - signature: 'params: Params;', + signature: 'text(value: string, init?: ResponseInit): Response;', }, { - name: 'url', + name: 'redirect', summary: '', - signature: 'url: URL;', + signature: + 'redirect(location: string, status?: 301 | 302 | 303 | 307 | 308): Response;', }, { - name: 'query', + name: 'ok', summary: '', - signature: 'query: URLSearchParams;', + signature: 'ok(value?: JsonValue, init?: ResponseInit): Response;', }, - ], - }, - { - name: 'BindingError', - anchor: 'binding-error', - signature: 'BindingError: typeof BindingError', - typeOnly: true, - summary: - 'Error thrown when request data cannot be bound, e.g. an unreadable or malformed body.', - members: [ { - name: 'field', + name: 'created', summary: '', - signature: 'readonly field?: string | undefined;', + signature: + 'created(value?: JsonValue, init?: ResponseInit): Response;', }, { - name: 'status', + name: 'accepted', summary: '', - signature: 'readonly status = 400;', + signature: + 'accepted(value?: JsonValue, init?: ResponseInit): Response;', }, - ], - }, - { - name: 'challenge', - anchor: 'challenge', - signature: 'challenge: (options?: ChallengeOptions) => Response', - typeOnly: true, - summary: - 'Builds a `401`/`407` Problem Details response with a `WWW-Authenticate` (or\n`Proxy-Authenticate` for `407`) challenge header.', - }, - { - name: 'ChallengeOptions', - anchor: 'challenge-options', - signature: 'ChallengeOptions: any', - typeOnly: true, - summary: - 'Options for building a `WWW-Authenticate` challenge response via {@link ServerContext.challenge}.', - members: [ { - name: 'scheme', + name: 'noContent', summary: '', - signature: 'scheme?: string;', + signature: 'noContent(init?: ResponseInit): Response;', }, { - name: 'realm', + name: 'badRequest', summary: '', - signature: 'realm?: string;', + signature: + 'badRequest(message?: string, init?: ResponseInit): Response;', }, { - name: 'status', + name: 'unauthorized', summary: '', - signature: 'status?: 401 | 407;', + signature: + 'unauthorized(message?: string, init?: ResponseInit): Response;', }, { - name: 'detail', + name: 'forbidden', summary: '', - signature: 'detail?: string;', + signature: + 'forbidden(message?: string, init?: ResponseInit): Response;', }, { - name: 'init', + name: 'notFound', summary: '', - signature: 'init?: ResponseInit;', + signature: + 'notFound(message?: string, init?: ResponseInit): Response;', }, - ], - }, - { - name: 'clearCookie', - anchor: 'clear-cookie', - signature: - 'clearCookie: (response: Response, name: string, options?: CookieOptions) => Response', - typeOnly: true, - summary: - 'Returns a clone of `response` with a `Set-Cookie` header that expires and clears `name`.', - tags: { - throws: [ - '{TypeError} If the cookie domain or path contains invalid attribute characters.', - ], - }, - }, - { - name: 'conflict', - anchor: 'conflict', - signature: 'conflict: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `409 Conflict` Problem Details response.', - }, - { - name: 'contentType', - anchor: 'content-type', - signature: 'contentType: (value: string | null) => string | undefined', - typeOnly: true, - }, - { - name: 'CookieOptions', - anchor: 'cookie-options', - signature: 'CookieOptions: any', - typeOnly: true, - summary: - 'Options controlling how a cookie is set via {@link ServerContext.setCookie}.\nDo not derive `domain` or `path` from untrusted input; invalid attribute characters are rejected.', - members: [ { - name: 'domain', - summary: - 'ASCII cookie domain without whitespace or attribute delimiters.', - signature: 'domain?: string;', + name: 'conflict', + summary: '', + signature: + 'conflict(message?: string, init?: ResponseInit): Response;', }, { - name: 'expires', + name: 'unprocessableEntity', summary: '', - signature: 'expires?: Date;', + signature: + 'unprocessableEntity(message?: string, init?: ResponseInit): Response;', }, { - name: 'httpOnly', + name: 'tooManyRequests', summary: '', - signature: 'httpOnly?: boolean;', + signature: + 'tooManyRequests(message?: string, init?: ResponseInit): Response;', }, { - name: 'maxAge', + name: 'methodNotAllowed', summary: '', - signature: 'maxAge?: number;', + signature: + 'methodNotAllowed(allow?: string | readonly string[], init?: ResponseInit): Response;', }, { - name: 'path', - summary: - 'Cookie path without control characters or the `;` attribute delimiter.', - signature: 'path?: string;', + name: 'error', + summary: '', + signature: + 'error(status?: number, message?: string, init?: ResponseInit): Response;', }, { - name: 'sameSite', + name: 'internalServerError', summary: '', - signature: 'sameSite?: CookieSameSite;', + signature: + 'internalServerError(message?: string, init?: ResponseInit): Response;', }, { - name: 'secure', + name: 'notImplemented', summary: '', - signature: 'secure?: boolean;', + signature: + 'notImplemented(message?: string, init?: ResponseInit): Response;', }, - ], - }, - { - name: 'CookieSameSite', - anchor: 'cookie-same-site', - signature: 'CookieSameSite: "strict" | "lax" | "none"', - typeOnly: true, - summary: 'Valid values for the `SameSite` cookie attribute.', - }, - { - name: 'createCspNonce', - anchor: 'create-csp-nonce', - signature: 'createCspNonce: () => CspNonceProvider', - typeOnly: true, - summary: - 'Creates a {@link CspNonceProvider} that lazily generates a cryptographically random,\nURL-safe base64 nonce per {@link ServerContext} and caches it for the lifetime of that\ncontext, so repeated calls within the same request return the same value.', - tags: { - returns: ['A provider function `(context) => nonce`.'], - }, - }, - { - name: 'created', - anchor: 'created', - signature: - 'created: (value?: JsonValue, init?: ResponseInit) => Response', - typeOnly: true, - summary: - 'Builds a `201 Created` response; JSON-serializes `value` if given, otherwise an empty body.', - }, - { - name: 'createEventStream', - anchor: 'create-event-stream', - signature: - 'createEventStream: (options?: EventStreamOptions) => EventStream', - typeOnly: true, - summary: - 'Creates a Server-Sent Events stream backed by a `text/event-stream` `Response`, with\nbounded backpressure-aware writes, optional heartbeat comments, and automatic closing when\n`options.signal` aborts or `close()` is called.', - tags: { - param: [ - 'options - Stream configuration (abort signal, heartbeat interval, backpressure, headers).', - ], - returns: [ - 'An {@link EventStream} exposing the response plus `send`/`comment`/`close` methods.', - ], - throws: [ - '{TypeError} If `highWaterMark` or `heartbeatInterval` are not positive safe integers.', - ], - }, - }, - { - name: 'createRouter', - anchor: 'create-router', - signature: 'createRouter: () => Router', - typeOnly: true, - summary: - 'Creates an empty, mutable {@link Router} with chainable HTTP-method route builders\n(`get`, `post`, `put`, `patch`, `delete`, `options`, `head`, `trace`, `connect`, `ws`) and a\n`use` method for registering middleware.', - tags: { - returns: ['A new router instance.'], - }, - }, - { - name: 'createServerApp', - anchor: 'create-server-app', - signature: - 'createServerApp: { (router: Router): ServerApp; (options?: ServerAppOptions): ServerApp; }', - typeOnly: true, - summary: - "Creates a transport-neutral server application that dispatches Web `Request`s to a\nrouter's routes and middleware, returning Web `Response`s.\n\nAccepts either a bare {@link Router} or a full {@link ServerAppOptions} object (which\nmay itself reference a router). Builds a path matcher from the combined routes, validates\nrequest-size limits, and wraps dispatch with auth resolution, telemetry, and error handling\n(payload-too-large, malformed path parameters, binding errors, and a fallback `onError`).\nCreates a transport-neutral server application. See the {@link Router} overload for details.", - tags: { - param: [ - 'router - A router whose routes and middleware should back the application.', - 'options - Configuration including router, middleware, auth, telemetry,\nerror handling, and request-size limits.', - ], - returns: [ - 'A {@link ServerApp} exposing a `fetch(request, dispatchOptions)` method.', - 'A {@link ServerApp} exposing a `fetch(request, dispatchOptions)` method.', - ], - example: [ - 'const app = createServerApp(router);\nexport default { fetch: app.fetch };', - ], - }, - }, - { - name: 'CspNonceProvider', - anchor: 'csp-nonce-provider', - signature: 'CspNonceProvider: (context: ServerContext) => string', - typeOnly: true, - summary: - 'A function that returns a CSP nonce for a given request context, stable across calls for the same context.', - }, - { - name: 'DEFAULT_MAX_REQUEST_BYTES', - anchor: 'default-max-request-bytes', - signature: 'DEFAULT_MAX_REQUEST_BYTES: 1048576', - typeOnly: true, - summary: - 'Default maximum request body size, in bytes (1 MiB), used when no limit is configured.', - }, - { - name: 'defineRoutes', - anchor: 'define-routes', - signature: - 'defineRoutes: (definition: (route: RouteBuilder) => void) => ApiRoute[]', - typeOnly: true, - summary: - 'Builds a flat list of {@link ApiRoute}s by invoking `definition` with a {@link RouteBuilder}.\nUseful for defining a set of routes without a full {@link Router} (e.g. to compose into one).', - tags: { - param: [ - 'definition - Callback that registers routes via the provided builder.', - ], - returns: ['The collected routes.'], - }, - }, - { - name: 'error', - anchor: 'error', - signature: - 'error: (status?: number, detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: - 'Builds a Problem Details error response with a configurable status (default `500`).', - }, - { - name: 'EventStream', - anchor: 'event-stream', - signature: 'EventStream: any', - typeOnly: true, - summary: - 'A live Server-Sent Events stream, backed by a streaming `Response`.', - members: [ { - name: 'response', + name: 'serviceUnavailable', summary: '', - signature: 'readonly response: Response;', + signature: + 'serviceUnavailable(message?: string, init?: ResponseInit): Response;', }, { - name: 'closed', + name: 'problem', summary: '', - signature: 'readonly closed: Promise<void>;', - }, - { - name: 'send', - summary: - 'Queues an event in order. Await or otherwise handle the returned promise before producing\nwithout bound. Rejects with `QuotaExceededError` when the pending-write limit is full.', - signature: 'send(event: ServerSentEvent): Promise<void>;', - }, - { - name: 'comment', - summary: - 'Queues an SSE comment in order. Rejects with `QuotaExceededError` when the pending-write\nlimit is full.', - signature: 'comment(value: string): Promise<void>;', + signature: + 'problem(status: number, detail?: string, options?: ProblemOptions): Response;', }, { - name: 'close', + name: 'challenge', summary: '', - signature: 'close(): Promise<void>;', - }, - ], - }, - { - name: 'EventStreamOptions', - anchor: 'event-stream-options', - signature: 'EventStreamOptions: any', - typeOnly: true, - summary: 'Options for {@link createEventStream}.', - members: [ - { - name: 'signal', - summary: 'Aborting this signal closes the stream.', - signature: 'signal?: AbortSignal;', + signature: 'challenge(options?: ChallengeOptions): Response;', }, { - name: 'heartbeatInterval', - summary: - 'If set, sends a `heartbeat` comment on this interval (in ms) to keep the connection alive.', - signature: 'heartbeatInterval?: number;', + name: 'setCookie', + summary: '', + signature: + 'setCookie(response: Response, name: string, value: string, options?: CookieOptions): Response;', }, { - name: 'highWaterMark', - summary: - 'Backpressure threshold for the underlying `ReadableStream` and maximum number of\nunresolved `send()`/`comment()` calls admitted at once. Defaults to 16.', - signature: 'highWaterMark?: number;', + name: 'clearCookie', + summary: '', + signature: + 'clearCookie(response: Response, name: string, options?: CookieOptions): Response;', }, { - name: 'headers', + name: 'upgrade', summary: '', - signature: 'headers?: HeadersInit;', + signature: + 'upgrade(handler: WebSocketHandler): Response | Promise<Response>;', }, ], }, { - name: 'explicitlyAccepts', - anchor: 'explicitly-accepts', - signature: - 'explicitlyAccepts: (value: string, expected: string) => boolean', - typeOnly: true, - }, - { - name: 'forbidden', - anchor: 'forbidden', - signature: - 'forbidden: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `403 Forbidden` Problem Details response.', - }, - { - name: 'formatServerSentEvent', - anchor: 'format-server-sent-event', - signature: 'formatServerSentEvent: (event: ServerSentEvent) => string', - typeOnly: true, - summary: - 'Serializes a {@link ServerSentEvent} to the `text/event-stream` wire format, escaping\nmulti-line data/comment fields and validating that `event`/`id` contain no line breaks.', - tags: { - throws: [ - '{TypeError} If `event`, `id`, or `retry` contain invalid characters/values.', - ], - }, - }, - { - name: 'Handler', - anchor: 'handler', - signature: - 'Handler: {\n bivarianceHack(context: ServerContext<RouteParams>): Response | Promise<Response>;\n}["bivarianceHack"]', - typeOnly: true, - summary: - 'A route handler function that produces a response for a given {@link ServerContext}.', - }, - { - name: 'internalServerError', - anchor: 'internal-server-error', - signature: - 'internalServerError: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `500 Internal Server Error` Problem Details response.', - }, - { - name: 'json', - anchor: 'json', - signature: 'json: (value: JsonValue, init?: ResponseInit) => Response', - typeOnly: true, - summary: - 'Builds a `200 OK`-shaped JSON response, serializing `value` and setting the JSON content type.', - }, - { - name: 'JsonValue', - anchor: 'json-value', - signature: 'JsonValue: unknown', - typeOnly: true, - summary: 'A value that can be serialized as JSON.', - }, - { - name: 'methodNotAllowed', - anchor: 'method-not-allowed', - signature: - 'methodNotAllowed: (allow?: string | readonly string[], init?: ResponseInit) => Response', - typeOnly: true, - summary: - 'Builds a `405 Method Not Allowed` Problem Details response, setting the `Allow` header if given.', - }, - { - name: 'Middleware', - anchor: 'middleware', - signature: - 'Middleware: {\n bivarianceHack(context: ServerContext<RouteParams>, next: Next): Response | Promise<Response>;\n}["bivarianceHack"]', - typeOnly: true, - summary: - 'A middleware function that may short-circuit or delegate to `next` to produce a response.', - }, - { - name: 'Next', - anchor: 'next', - signature: 'Next: () => Response | Promise<Response>', - typeOnly: true, - summary: - 'Continuation function passed to a {@link Middleware}, invoking the next handler in the chain.', - }, - { - name: 'noContent', - anchor: 'no-content', - signature: 'noContent: (init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `204 No Content` response with an empty body.', - }, - { - name: 'notFound', - anchor: 'not-found', - signature: 'notFound: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `404 Not Found` Problem Details response.', - }, - { - name: 'notImplemented', - anchor: 'not-implemented', - signature: - 'notImplemented: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `501 Not Implemented` Problem Details response.', - }, - { - name: 'ok', - anchor: 'ok', - signature: 'ok: (value?: JsonValue, init?: ResponseInit) => Response', - typeOnly: true, - summary: - 'Builds a `200 OK` response; JSON-serializes `value` if given, otherwise an empty body.', - }, - { - name: 'Params', - anchor: 'params', - signature: 'Params: Record<string, string>', - typeOnly: true, - summary: 'A map of route path parameter names to their string values.', - }, - { - name: 'PathParams', - anchor: 'path-params', - signature: - 'PathParams: string extends Path ? Params : { [Name in PathParameterNames<Path>]: string; }', - typeOnly: true, - summary: - 'Infers a {@link Params}-shaped object type from a route path pattern, extracting the names\nof `{param}` and `{*param}` segments as required string keys.', - }, - { - name: 'PayloadTooLargeError', - anchor: 'payload-too-large-error', - signature: 'PayloadTooLargeError: typeof PayloadTooLargeError', + name: 'ServerDispatchOptions', + anchor: 'server-dispatch-options', + signature: 'ServerDispatchOptions: any', typeOnly: true, - summary: - 'Error thrown when a request body exceeds the configured maximum size.', + summary: 'Per-request options passed to {@link ServerApp.fetch}.', members: [ { - name: 'status', + name: 'websocket', summary: '', - signature: 'readonly status = 413;', + signature: 'websocket?: WebSocketAdapter;', }, ], }, { - name: 'ProbeHandler', - anchor: 'probe-handler', - signature: - 'ProbeHandler: (context: ServerContext) => ProbeResult | Promise<ProbeResult>', - typeOnly: true, - summary: - 'A health-check handler used for liveness/readiness/startup probes.', - }, - { - name: 'ProbeOptions', - anchor: 'probe-options', - signature: 'ProbeOptions: any', + name: 'ServerTelemetry', + anchor: 'server-telemetry', + signature: 'ServerTelemetry: any', typeOnly: true, summary: - 'Optional handlers for the built-in `livez`/`readyz`/`startupz`/`targetz` health probe routes.', + 'Telemetry hooks that a {@link ServerAppOptions.telemetry} implementation provides. Each\n`work`-wrapping method should run `work` inside an appropriately named span, propagating its\nreturn value.', members: [ { - name: 'livez', - summary: '', - signature: 'livez?: ProbeHandler;', - }, - { - name: 'readyz', - summary: '', - signature: 'readyz?: ProbeHandler;', - }, - { - name: 'startupz', + name: 'request', summary: '', - signature: 'startupz?: ProbeHandler;', + signature: + 'request<T>(fields: ServerTelemetryFields, work: () => T): T;', }, { - name: 'targetz', + name: 'routeMatch', summary: '', - signature: 'targetz?: ProbeHandler;', + signature: + 'routeMatch<T>(fields: ServerTelemetryFields, work: () => T): T;', }, - ], - }, - { - name: 'ProbeResult', - anchor: 'probe-result', - signature: 'ProbeResult: boolean | Response | void', - typeOnly: true, - summary: - 'Result of a health probe: `true`/`false` for pass/fail, a `Response` to return as-is, or `void` for pass.', - }, - { - name: 'problem', - anchor: 'problem-2', - signature: - 'problem: (status: number, detail?: string, options?: ProblemOptions & { init?: ResponseInit; }) => Response', - typeOnly: true, - summary: - 'Builds an RFC 9457 `application/problem+json` response, defaulting `type` to `about:blank`\nand `title` to a standard reason phrase for the given `status` (falling back to "HTTP Error").', - }, - { - name: 'Problem', - anchor: 'problem', - signature: 'Problem: any', - typeOnly: true, - summary: - 'An RFC 9457 Problem Details object, as produced by {@link ServerContext.problem}.', - members: [ { - name: 'type', + name: 'loader', summary: '', - signature: 'type: string;', + signature: + 'loader?<T>(fields: ServerTelemetryFields, work: () => T): T;', }, { - name: 'title', + name: 'action', summary: '', - signature: 'title: string;', + signature: + 'action<T>(fields: ServerTelemetryFields, work: () => T): T;', }, { - name: 'status', + name: 'apiOperation', summary: '', - signature: 'status: number;', + signature: + 'apiOperation<T>(fields: ServerTelemetryFields, work: () => T): T;', }, { - name: 'detail', + name: 'queryPrefetch', summary: '', - signature: 'detail?: string;', + signature: + 'queryPrefetch?<T>(fields: ServerTelemetryFields, work: () => T): T;', }, { - name: 'instance', + name: 'ssrRender', summary: '', - signature: 'instance?: string;', + signature: + 'ssrRender?<T>(fields: ServerTelemetryFields, work: () => T): T;', }, - ], - }, - { - name: 'ProblemOptions', - anchor: 'problem-options', - signature: 'ProblemOptions: any', - typeOnly: true, - summary: 'Optional fields used to customize a {@link Problem} response.', - members: [ { - name: 'type', + name: 'log', summary: '', - signature: 'type?: string;', + signature: + 'log(level: "debug" | "info" | "warn" | "error", event: ServerTelemetryOperation, fields?: ServerTelemetryFields): void;', }, { - name: 'title', + name: 'traceId', summary: '', - signature: 'title?: string;', + signature: 'traceId(): string | undefined;', }, { - name: 'instance', + name: 'extract', summary: '', - signature: 'instance?: string;', + signature: + 'extract?<Carrier>(carrier: Carrier, getter: {\n keys(value: Carrier): string[];\n get(value: Carrier, key: string): string | string[] | undefined;\n }): unknown;', }, { - name: 'extensions', + name: 'withContext', summary: '', - signature: 'extensions?: Record<string, unknown>;', + signature: 'withContext?<T>(context: unknown, work: () => T): T;', }, ], }, { - name: 'readRequestBytes', - anchor: 'read-request-bytes', - signature: - 'readRequestBytes: (request: Request, maximum?: number) => Promise<Uint8Array>', - typeOnly: true, - summary: - 'Reads a request body into memory as raw bytes, enforcing a maximum size. The result is\ncached per-request so subsequent reads (e.g. for JSON, text, or form data) reuse the same\nbuffered bytes instead of re-reading the stream.', - tags: { - param: [ - 'request - The request whose body to read.', - "maximum - Maximum allowed size in bytes; defaults to the request's configured limit.", - ], - returns: ['The full body as a `Uint8Array`.'], - throws: ['{PayloadTooLargeError} If the body exceeds `maximum`.'], - }, - }, - { - name: 'readRequestFormData', - anchor: 'read-request-form-data', - signature: - 'readRequestFormData: (request: Request, maximum?: number) => Promise<FormData>', - typeOnly: true, - summary: - 'Reads a request body and parses it as `multipart/form-data`, enforcing a maximum size.', - tags: { - param: [ - 'request - The request whose body to read.', - "maximum - Maximum allowed size in bytes; defaults to the request's configured limit.", - ], - returns: ['The parsed form data.'], - throws: ['{PayloadTooLargeError} If the body exceeds `maximum`.'], - }, - }, - { - name: 'readRequestText', - anchor: 'read-request-text', - signature: - 'readRequestText: (request: Request, maximum?: number) => Promise<string>', - typeOnly: true, - summary: - 'Reads and decodes a request body as UTF-8 text, enforcing a maximum size.', - tags: { - param: [ - 'request - The request whose body to read.', - "maximum - Maximum allowed size in bytes; defaults to the request's configured limit.", - ], - throws: ['{PayloadTooLargeError} If the body exceeds `maximum`.'], - }, - }, - { - name: 'redirect', - anchor: 'redirect', - signature: - 'redirect: (location: string, status?: 301 | 302 | 303 | 307 | 308) => Response', + name: 'WebSocketAdapter', + anchor: 'web-socket-adapter', + signature: 'WebSocketAdapter: any', typeOnly: true, summary: - 'Builds a redirect response with an empty body and a `Location` header. Defaults to `302 Found`.', + 'Adapter that performs the transport-specific work of upgrading a request to a WebSocket.', + members: [ + { + name: 'upgrade', + summary: '', + signature: + 'upgrade(request: Request, handler: WebSocketHandler, context: ServerContext): Response | Promise<Response>;', + }, + ], }, { - name: 'registerAuthRoutes', - anchor: 'register-auth-routes', + name: 'WebSocketHandler', + anchor: 'web-socket-handler', signature: - 'registerAuthRoutes: <Dependencies, P extends Principal>(api: Pick<ApiDefinition<Dependencies>, "group">, options: AuthRouteOptions<P>) => void', - typeOnly: true, - summary: - 'Registers a standard set of authentication routes (`POST /auth/v1/accounts`,\n`GET/POST /auth/v1/session`, `DELETE /auth/v1/session`) on an OpenAPI-style API/group,\nhandling registration, login, session lookup, and logout with CSRF protection via a\nsame-origin `Origin` header check, per-attempt rate limiting, and cookie-based token storage.', - tags: { - param: [ - 'api - The API or group to register routes on (only its `group` method is used).', - 'options - Issuer, cookie configuration, principal schema, and register/authenticate/\nallowAttempt/revoke/redirect callbacks.', - ], - }, - }, - { - name: 'RequestState', - anchor: 'request-state', - signature: 'RequestState: Record<string, unknown>', + 'WebSocketHandler: {\n bivarianceHack(socket: WebSocketLike, context: ServerContext<RouteParams>): void | Promise<void>;\n}["bivarianceHack"]', typeOnly: true, summary: - 'Arbitrary per-request state bag attached to a {@link ServerContext}.', + 'Handler invoked with a live {@link WebSocketLike} once a connection has been upgraded.', }, { - name: 'RouteBuilder', - anchor: 'route-builder', - signature: 'RouteBuilder: any', + name: 'WebSocketLike', + anchor: 'web-socket-like', + signature: 'WebSocketLike: any', typeOnly: true, summary: - 'Chainable, per-HTTP-method route registration methods, one per method plus `ws` for WebSockets.', + 'Transport-neutral interface for an upgraded WebSocket connection.', members: [ { - name: 'route', - summary: '', - signature: - 'route<const Path extends string>(method: string | readonly string[], path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', - }, - { - name: 'get', - summary: '', - signature: - 'get<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', - }, - { - name: 'post', - summary: '', - signature: - 'post<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', - }, - { - name: 'put', + name: 'send', summary: '', signature: - 'put<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + 'send(data: string | ArrayBufferLike | ArrayBufferView): void;', }, { - name: 'patch', + name: 'close', summary: '', - signature: - 'patch<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + signature: 'close(code?: number, reason?: string): void;', }, { - name: 'delete', + name: 'onMessage', summary: '', signature: - 'delete<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + 'onMessage(listener: (data: string | Uint8Array) => void): () => void;', }, { - name: 'options', + name: 'onClose', summary: '', signature: - 'options<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + 'onClose(listener: (event: WebSocketCloseEvent) => void): () => void;', }, { - name: 'head', + name: 'onError', summary: '', - signature: - 'head<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + signature: 'onError(listener: (error: unknown) => void): () => void;', }, + ], + }, + ], + symbols44: [ + { + name: 'ApiRouteOptions', + anchor: 'api-route-options', + signature: 'ApiRouteOptions: any', + typeOnly: true, + summary: 'Per-route configuration shared by {@link ApiRoute}.', + members: [ { - name: 'trace', + name: 'auth', summary: '', - signature: - 'trace<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + signature: 'auth?: AuthRequirement;', }, { - name: 'connect', + name: 'middleware', summary: '', - signature: - 'connect<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + signature: 'middleware?: readonly Middleware<RouteParams>[];', }, { - name: 'ws', + name: 'maxRequestBytes', summary: '', - signature: - 'ws<const Path extends string>(path: Path, handler: WebSocketHandler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + signature: 'maxRequestBytes?: number;', }, ], }, + { + name: 'createRouter', + anchor: 'create-router', + signature: 'createRouter: () => Router', + typeOnly: true, + summary: + 'Creates an empty, mutable {@link Router} with chainable HTTP-method route builders\n(`get`, `post`, `put`, `patch`, `delete`, `options`, `head`, `trace`, `connect`, `ws`) and a\n`use` method for registering middleware.', + tags: { + returns: ['A new router instance.'], + }, + }, { name: 'Router', anchor: 'router', @@ -28132,355 +25685,246 @@ export const apiSymbolSets: Readonly< }, ], }, + ], + symbols45: [ { - name: 'safeRedirect', - anchor: 'safe-redirect', + name: 'clearCookie', + anchor: 'clear-cookie', signature: - 'safeRedirect: (fallback: string, options?: SafeRedirectOptions) => (value: unknown) => string', + 'clearCookie: (response: Response, name: string, options?: CookieOptions) => Response', typeOnly: true, summary: - 'Creates a validator that resolves an untrusted redirect target to a safe, same-origin,\nrelative path — or to `fallback` if the value is unsafe (absolute, protocol-relative,\ncontains a scheme, control characters, `..` traversal, backslashes, or an unwanted hash).', + 'Returns a clone of `response` with a `Set-Cookie` header that expires and clears `name`.', tags: { - param: [ - 'fallback - The safe path to use when the requested value is not itself safe. Must\nitself pass the safety check, or this function throws.', - 'options - Redirect validation options.', + throws: [ + '{TypeError} If the cookie domain or path contains invalid attribute characters.', ], - returns: [ - 'A function `(value) => path` that returns `value` if safe, otherwise `fallback`.', - ], - throws: ['{Error} If `fallback` is not itself a safe path.'], }, }, { - name: 'SafeRedirectOptions', - anchor: 'safe-redirect-options', - signature: 'SafeRedirectOptions: any', - typeOnly: true, - summary: 'Options for {@link safeRedirect}.', - members: [ - { - name: 'allowHash', - summary: - 'Allow redirect targets that include a URL fragment (`#...`). Defaults to disallowed.', - signature: 'readonly allowHash?: boolean;', - }, - ], - }, - { - name: 'ServerApp', - anchor: 'server-app', - signature: 'ServerApp: any', - typeOnly: true, - summary: - 'A configured server application, as returned by {@link createServerApp }.', - members: [ - { - name: 'fetch', - summary: '', - signature: - 'fetch(request: Request, dispatchOptions?: ServerDispatchOptions): Promise<Response>;', - }, - ], - }, - { - name: 'ServerAppOptions', - anchor: 'server-app-options', - signature: 'ServerAppOptions: any', + name: 'CookieOptions', + anchor: 'cookie-options', + signature: 'CookieOptions: any', typeOnly: true, summary: - 'Options accepted by {@link createServerApp } to configure a server application.', + 'Options controlling how a cookie is set via {@link ServerContext.setCookie}.\nDo not derive `domain` or `path` from untrusted input; invalid attribute characters are rejected.', members: [ { - name: 'router', - summary: '', - signature: 'router?: Router;', - }, - { - name: 'middleware', - summary: '', - signature: 'middleware?: readonly Middleware[];', - }, - { - name: 'onError', - summary: '', - signature: - 'onError?: (error: unknown, context: ServerContext) => Response | Promise<Response>;', - }, - { - name: 'onAccessDenied', - summary: '', - signature: 'onAccessDenied?: AccessDeniedHandler;', + name: 'domain', + summary: + 'ASCII cookie domain without whitespace or attribute delimiters.', + signature: 'domain?: string;', }, { - name: 'auth', + name: 'expires', summary: '', - signature: 'auth?: AuthResolver;', + signature: 'expires?: Date;', }, { - name: 'fallback', + name: 'httpOnly', summary: '', - signature: 'fallback?: Handler;', + signature: 'httpOnly?: boolean;', }, { - name: 'websocket', + name: 'maxAge', summary: '', - signature: 'websocket?: WebSocketAdapter;', + signature: 'maxAge?: number;', }, { - name: 'probes', - summary: '', - signature: 'probes?: ProbeOptions;', + name: 'path', + summary: + 'Cookie path without control characters or the `;` attribute delimiter.', + signature: 'path?: string;', }, { - name: 'telemetry', + name: 'sameSite', summary: '', - signature: 'telemetry?: ServerTelemetry;', + signature: 'sameSite?: CookieSameSite;', }, { - name: 'maxRequestBytes', + name: 'secure', summary: '', - signature: 'maxRequestBytes?: number;', + signature: 'secure?: boolean;', }, ], }, { - name: 'ServerContext', - anchor: 'server-context', - signature: 'ServerContext: any', + name: 'createEventStream', + anchor: 'create-event-stream', + signature: + 'createEventStream: (options?: EventStreamOptions) => EventStream', typeOnly: true, summary: - 'The per-request context passed to handlers and middleware, bundling the incoming request,\nparsed URL/params/query, auth state, and a family of response-building helper methods\n(`json`, `ok`, `notFound`, `problem`, `setCookie`, `upgrade`, etc.).', + 'Creates a Server-Sent Events stream backed by a `text/event-stream` `Response`, with\nbounded backpressure-aware writes, optional heartbeat comments, and automatic closing when\n`options.signal` aborts or `close()` is called.', + tags: { + param: [ + 'options - Stream configuration (abort signal, heartbeat interval, backpressure, headers).', + ], + returns: [ + 'An {@link EventStream} exposing the response plus `send`/`comment`/`close` methods.', + ], + throws: [ + '{TypeError} If `highWaterMark` or `heartbeatInterval` are not positive safe integers.', + ], + }, + }, + { + name: 'EventStream', + anchor: 'event-stream', + signature: 'EventStream: any', + typeOnly: true, + summary: + 'A live Server-Sent Events stream, backed by a streaming `Response`.', members: [ { - name: 'request', - summary: '', - signature: 'request: Request;', - }, - { - name: 'url', - summary: '', - signature: 'url: URL;', - }, - { - name: 'params', + name: 'response', summary: '', - signature: 'params: RouteParams;', + signature: 'readonly response: Response;', }, { - name: 'headers', + name: 'closed', summary: '', - signature: 'headers: Headers;', + signature: 'readonly closed: Promise<void>;', }, { - name: 'query', - summary: '', - signature: 'query: URLSearchParams;', + name: 'send', + summary: + 'Queues an event in order. Await or otherwise handle the returned promise before producing\nwithout bound. Rejects with `QuotaExceededError` when the pending-write limit is full.', + signature: 'send(event: ServerSentEvent): Promise<void>;', }, { - name: 'state', - summary: '', - signature: 'state: RequestState;', + name: 'comment', + summary: + 'Queues an SSE comment in order. Rejects with `QuotaExceededError` when the pending-write\nlimit is full.', + signature: 'comment(value: string): Promise<void>;', }, { - name: 'auth', + name: 'close', summary: '', - signature: 'auth: AuthContext;', + signature: 'close(): Promise<void>;', }, + ], + }, + { + name: 'EventStreamOptions', + anchor: 'event-stream-options', + signature: 'EventStreamOptions: any', + typeOnly: true, + summary: 'Options for {@link createEventStream}.', + members: [ { name: 'signal', - summary: '', - signature: 'signal: AbortSignal;', - }, - { - name: 'sse', - summary: '', - signature: - 'sse(options?: Omit<EventStreamOptions, "signal">): EventStream;', - }, - { - name: 'telemetry', - summary: '', - signature: 'telemetry?: ServerTelemetry;', - }, - { - name: 'bind', - summary: '', - signature: - 'bind<T extends object = Record<string, unknown>>(): Promise<T>;', - }, - { - name: 'json', - summary: '', - signature: 'json(value: JsonValue, init?: ResponseInit): Response;', - }, - { - name: 'text', - summary: '', - signature: 'text(value: string, init?: ResponseInit): Response;', - }, - { - name: 'redirect', - summary: '', - signature: - 'redirect(location: string, status?: 301 | 302 | 303 | 307 | 308): Response;', - }, - { - name: 'ok', - summary: '', - signature: 'ok(value?: JsonValue, init?: ResponseInit): Response;', - }, - { - name: 'created', - summary: '', - signature: - 'created(value?: JsonValue, init?: ResponseInit): Response;', - }, - { - name: 'accepted', - summary: '', - signature: - 'accepted(value?: JsonValue, init?: ResponseInit): Response;', - }, - { - name: 'noContent', - summary: '', - signature: 'noContent(init?: ResponseInit): Response;', - }, - { - name: 'badRequest', - summary: '', - signature: - 'badRequest(message?: string, init?: ResponseInit): Response;', - }, - { - name: 'bad', - summary: '', - signature: 'bad(message?: string, init?: ResponseInit): Response;', - }, - { - name: 'unauthorized', - summary: '', - signature: - 'unauthorized(message?: string, init?: ResponseInit): Response;', - }, - { - name: 'forbidden', - summary: '', - signature: - 'forbidden(message?: string, init?: ResponseInit): Response;', - }, - { - name: 'notFound', - summary: '', - signature: - 'notFound(message?: string, init?: ResponseInit): Response;', - }, - { - name: 'conflict', - summary: '', - signature: - 'conflict(message?: string, init?: ResponseInit): Response;', - }, - { - name: 'unprocessableEntity', - summary: '', - signature: - 'unprocessableEntity(message?: string, init?: ResponseInit): Response;', - }, - { - name: 'tooManyRequests', - summary: '', - signature: - 'tooManyRequests(message?: string, init?: ResponseInit): Response;', + summary: 'Aborting this signal closes the stream.', + signature: 'signal?: AbortSignal;', }, { - name: 'methodNotAllowed', - summary: '', - signature: - 'methodNotAllowed(allow?: string | readonly string[], init?: ResponseInit): Response;', + name: 'heartbeatInterval', + summary: + 'If set, sends a `heartbeat` comment on this interval (in ms) to keep the connection alive.', + signature: 'heartbeatInterval?: number;', }, { - name: 'error', - summary: '', - signature: - 'error(status?: number, message?: string, init?: ResponseInit): Response;', + name: 'highWaterMark', + summary: + 'Backpressure threshold for the underlying `ReadableStream` and maximum number of\nunresolved `send()`/`comment()` calls admitted at once. Defaults to 16.', + signature: 'highWaterMark?: number;', }, { - name: 'internalServerError', + name: 'headers', summary: '', - signature: - 'internalServerError(message?: string, init?: ResponseInit): Response;', + signature: 'headers?: HeadersInit;', }, + ], + }, + { + name: 'json', + anchor: 'json', + signature: 'json: (value: JsonValue, init?: ResponseInit) => Response', + typeOnly: true, + summary: + 'Builds a `200 OK`-shaped JSON response, serializing `value` and setting the JSON content type.', + }, + { + name: 'problem', + anchor: 'problem-2', + signature: + 'problem: (status: number, detail?: string, options?: ProblemOptions & { init?: ResponseInit; }) => Response', + typeOnly: true, + summary: + 'Builds an RFC 9457 `application/problem+json` response, defaulting `type` to `about:blank`\nand `title` to a standard reason phrase for the given `status` (falling back to "HTTP Error").', + }, + { + name: 'Problem', + anchor: 'problem', + signature: 'Problem: any', + typeOnly: true, + summary: + 'An RFC 9457 Problem Details object, as produced by {@link ServerContext.problem}.', + members: [ { - name: 'serverError', + name: 'type', summary: '', - signature: - 'serverError(message?: string, init?: ResponseInit): Response;', + signature: 'type: string;', }, { - name: 'notImplemented', + name: 'title', summary: '', - signature: - 'notImplemented(message?: string, init?: ResponseInit): Response;', + signature: 'title: string;', }, { - name: 'serviceUnavailable', + name: 'status', summary: '', - signature: - 'serviceUnavailable(message?: string, init?: ResponseInit): Response;', + signature: 'status: number;', }, { - name: 'problem', + name: 'detail', summary: '', - signature: - 'problem(status: number, detail?: string, options?: ProblemOptions): Response;', + signature: 'detail?: string;', }, { - name: 'challenge', + name: 'instance', summary: '', - signature: 'challenge(options?: ChallengeOptions): Response;', + signature: 'instance?: string;', }, + ], + }, + { + name: 'ProblemOptions', + anchor: 'problem-options', + signature: 'ProblemOptions: any', + typeOnly: true, + summary: 'Optional fields used to customize a {@link Problem} response.', + members: [ { - name: 'setCookie', + name: 'type', summary: '', - signature: - 'setCookie(response: Response, name: string, value: string, options?: CookieOptions): Response;', + signature: 'type?: string;', }, { - name: 'clearCookie', + name: 'title', summary: '', - signature: - 'clearCookie(response: Response, name: string, options?: CookieOptions): Response;', + signature: 'title?: string;', }, { - name: 'upgrade', + name: 'instance', summary: '', - signature: - 'upgrade(handler: WebSocketHandler): Response | Promise<Response>;', + signature: 'instance?: string;', }, - ], - }, - { - name: 'ServerDispatchOptions', - anchor: 'server-dispatch-options', - signature: 'ServerDispatchOptions: any', - typeOnly: true, - summary: 'Per-request options passed to {@link ServerApp.fetch}.', - members: [ { - name: 'websocket', + name: 'extensions', summary: '', - signature: 'websocket?: WebSocketAdapter;', + signature: 'extensions?: Record<string, unknown>;', }, ], }, { - name: 'serverError', - anchor: 'server-error', + name: 'redirect', + anchor: 'redirect', signature: - 'serverError: (detail?: string, init?: ResponseInit) => Response', + 'redirect: (location: string, status?: 301 | 302 | 303 | 307 | 308) => Response', typeOnly: true, - summary: 'Alias for {@link internalServerError}.', + summary: + 'Builds a redirect response with an empty body and a `Location` header. Defaults to `302 Found`.', }, { name: 'ServerSentEvent', @@ -28512,141 +25956,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'ServerTelemetry', - anchor: 'server-telemetry', - signature: 'ServerTelemetry: any', - typeOnly: true, - summary: - 'Telemetry hooks that a {@link ServerAppOptions.telemetry} implementation provides. Each\n`work`-wrapping method should run `work` inside an appropriately named span, propagating its\nreturn value.', - members: [ - { - name: 'request', - summary: '', - signature: - 'request<T>(fields: ServerTelemetryFields, work: () => T): T;', - }, - { - name: 'routeMatch', - summary: '', - signature: - 'routeMatch<T>(fields: ServerTelemetryFields, work: () => T): T;', - }, - { - name: 'loader', - summary: '', - signature: - 'loader?<T>(fields: ServerTelemetryFields, work: () => T): T;', - }, - { - name: 'action', - summary: '', - signature: - 'action<T>(fields: ServerTelemetryFields, work: () => T): T;', - }, - { - name: 'apiOperation', - summary: '', - signature: - 'apiOperation<T>(fields: ServerTelemetryFields, work: () => T): T;', - }, - { - name: 'queryPrefetch', - summary: '', - signature: - 'queryPrefetch?<T>(fields: ServerTelemetryFields, work: () => T): T;', - }, - { - name: 'ssrRender', - summary: '', - signature: - 'ssrRender?<T>(fields: ServerTelemetryFields, work: () => T): T;', - }, - { - name: 'log', - summary: '', - signature: - 'log(level: "debug" | "info" | "warn" | "error", event: ServerTelemetryOperation, fields?: ServerTelemetryFields): void;', - }, - { - name: 'traceId', - summary: '', - signature: 'traceId(): string | undefined;', - }, - { - name: 'extract', - summary: '', - signature: - 'extract?<Carrier>(carrier: Carrier, getter: {\n keys(value: Carrier): string[];\n get(value: Carrier, key: string): string | string[] | undefined;\n }): unknown;', - }, - { - name: 'withContext', - summary: '', - signature: 'withContext?<T>(context: unknown, work: () => T): T;', - }, - ], - }, - { - name: 'ServerTelemetryFields', - anchor: 'server-telemetry-fields', - signature: 'ServerTelemetryFields: any', - typeOnly: true, - summary: 'Contextual fields attached to a telemetry span or log entry.', - members: [ - { - name: 'requestId', - summary: '', - signature: 'requestId?: string;', - }, - { - name: 'traceId', - summary: '', - signature: 'traceId?: string;', - }, - { - name: 'route', - summary: '', - signature: 'route?: string;', - }, - { - name: 'action', - summary: '', - signature: 'action?: string;', - }, - { - name: 'operation', - summary: '', - signature: 'operation?: string;', - }, - { - name: 'status', - summary: '', - signature: 'status?: number;', - }, - { - name: 'durationMs', - summary: '', - signature: 'durationMs?: number;', - }, - ], - }, - { - name: 'ServerTelemetryOperation', - anchor: 'server-telemetry-operation', - signature: - 'ServerTelemetryOperation: "askr.request" | "askr.route.match" | "askr.loader" | "askr.action" | "askr.api.operation" | "askr.query.prefetch" | "askr.ssr.render" | "askr.vite.document"', - typeOnly: true, - summary: - 'Identifies the kind of operation a {@link ServerTelemetry} call is instrumenting.', - }, - { - name: 'serviceUnavailable', - anchor: 'service-unavailable', - signature: - 'serviceUnavailable: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `503 Service Unavailable` Problem Details response.', - }, { name: 'setCookie', anchor: 'set-cookie', @@ -28669,3638 +25978,2834 @@ export const apiSymbolSets: Readonly< summary: 'Builds a plain-text response, setting the `text/plain; charset=utf-8` content type.', }, + ], + symbols46: [ { - name: 'TokenIssuer', - anchor: 'token-issuer', - signature: 'TokenIssuer: any', + name: 'accessLog', + anchor: 'access-log', + signature: 'accessLog: (logger: ResponseLogger) => Middleware', typeOnly: true, summary: - 'Issues auth tokens for a principal, used by {@link registerAuthRoutes} to mint session tokens.', - members: [ - { - name: 'issue', - summary: '', - signature: - 'issue(principal: Omit<P, "id"> & {\n subject: string;\n }): Promise<string>;', - }, - ], + 'Creates middleware that times each request and invokes `logger` with the request, response,\nduration, and (if present) request ID after the downstream chain resolves.', + tags: { + param: ['logger - Called once per request with the completed entry.'], + }, }, { - name: 'tooManyRequests', - anchor: 'too-many-requests', - signature: - 'tooManyRequests: (detail?: string, init?: ResponseInit) => Response', + name: 'cors', + anchor: 'cors', + signature: 'cors: (options?: CorsOptions) => Middleware', typeOnly: true, - summary: 'Builds a `429 Too Many Requests` Problem Details response.', - }, - { - name: 'unauthorized', - anchor: 'unauthorized', - signature: - 'unauthorized: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `401 Unauthorized` Problem Details response.', - }, - { - name: 'unprocessableEntity', - anchor: 'unprocessable-entity', - signature: - 'unprocessableEntity: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `422 Unprocessable Entity` Problem Details response.', + summary: + 'Creates CORS middleware that validates the request origin, answers preflight `OPTIONS`\nrequests with `204` and the appropriate `Access-Control-*` headers, and adds\n`Access-Control-Allow-Origin`/`Vary: Origin` (plus exposed headers) to actual responses.\nGenuine preflight is quota-neutral in {@link rateLimit } regardless of middleware order.', + tags: { + param: [ + 'options - Allowed origin(s)/methods/headers, credential support, and preflight max-age.', + ], + throws: [ + '{TypeError} If `credentials` is combined with a wildcard origin, or `maxAgeSeconds`\nis not a non-negative safe integer.', + ], + }, }, { - name: 'WebSocketAdapter', - anchor: 'web-socket-adapter', - signature: 'WebSocketAdapter: any', + name: 'CorsOptions', + anchor: 'cors-options', + signature: 'CorsOptions: any', typeOnly: true, - summary: - 'Adapter that performs the transport-specific work of upgrading a request to a WebSocket.', + summary: 'Options for {@link cors}.', members: [ { - name: 'upgrade', + name: 'origin', summary: '', signature: - 'upgrade(request: Request, handler: WebSocketHandler, context: ServerContext): Response | Promise<Response>;', + 'origin?: string | ((origin: string, context: ServerContext) => string | null);', }, - ], - }, - { - name: 'WebSocketCloseEvent', - anchor: 'web-socket-close-event', - signature: 'WebSocketCloseEvent: any', - typeOnly: true, - summary: - 'Details of a WebSocket close event, mirroring the DOM `CloseEvent` fields used here.', - members: [ { - name: 'code', + name: 'methods', summary: '', - signature: 'readonly code: number;', + signature: 'methods?: readonly string[];', }, { - name: 'reason', + name: 'allowedHeaders', + summary: '', + signature: 'allowedHeaders?: readonly string[];', + }, + { + name: 'exposedHeaders', + summary: '', + signature: 'exposedHeaders?: readonly string[];', + }, + { + name: 'credentials', summary: '', - signature: 'readonly reason: string;', + signature: 'credentials?: boolean;', }, { - name: 'wasClean', + name: 'maxAgeSeconds', summary: '', - signature: 'readonly wasClean: boolean;', + signature: 'maxAgeSeconds?: number;', }, ], }, { - name: 'WebSocketHandler', - anchor: 'web-socket-handler', + name: 'createCspNonce', + anchor: 'create-csp-nonce', + signature: 'createCspNonce: () => CspNonceProvider', + typeOnly: true, + summary: + 'Creates a {@link CspNonceProvider} that lazily generates a cryptographically random,\nURL-safe base64 nonce per {@link ServerContext} and caches it for the lifetime of that\ncontext, so repeated calls within the same request return the same value.', + tags: { + returns: ['A provider function `(context) => nonce`.'], + }, + }, + { + name: 'createCsrfToken', + anchor: 'create-csrf-token', signature: - 'WebSocketHandler: {\n bivarianceHack(socket: WebSocketLike, context: ServerContext<RouteParams>): void | Promise<void>;\n}["bivarianceHack"]', + 'createCsrfToken: (secret: string, sessionId: string) => Promise<string>', typeOnly: true, summary: - 'Handler invoked with a live {@link WebSocketLike} once a connection has been upgraded.', + 'Creates a CSRF token bound to a session ID, as an HMAC-SHA256 signature encoded base64url.', + tags: { + param: [ + 'secret - The HMAC secret; must match what {@link verifyCsrfToken } uses.', + 'sessionId - The session ID to bind the token to.', + ], + }, }, { - name: 'WebSocketLike', - anchor: 'web-socket-like', - signature: 'WebSocketLike: any', + name: 'createMemoryRateLimitStore', + anchor: 'create-memory-rate-limit-store', + signature: + 'createMemoryRateLimitStore: (options?: MemoryRateLimitStoreOptions) => RateLimitStore', typeOnly: true, summary: - 'Transport-neutral interface for an upgraded WebSocket connection.', + "Creates an in-memory {@link RateLimitStore} backed by a `Map`, suitable for single-process\ndeployments. Expired keys are pruned before capacity eviction, then the least recently used key\nis evicted when `maxEntries` is reached. Eviction forgets that key's current quota; use a custom\nstore when the key space is adversarial or cannot be safely bounded for one process.", + tags: { + param: [ + 'options.now - Clock function used to determine window boundaries. Defaults to `Date.now`.', + 'options.maxEntries - Maximum retained key count. Defaults to 10,000.', + ], + }, + }, + { + name: 'CspNonceProvider', + anchor: 'csp-nonce-provider', + signature: 'CspNonceProvider: (context: ServerContext) => string', + typeOnly: true, + summary: + 'A function that returns a CSP nonce for a given request context, stable across calls for the same context.', + }, + { + name: 'csrf', + anchor: 'csrf', + signature: 'csrf: (options: CsrfOptions) => Middleware', + typeOnly: true, + summary: + 'Creates middleware that enforces CSRF protection on state-changing requests (all methods\nexcept `GET`/`HEAD`/`OPTIONS`/`TRACE`) by requiring a valid token bound to the current\nsession, supplied via a request header or (for form-encoded bodies) a form field.', + tags: { + param: [ + 'options - HMAC secret, session ID resolver, and header/form field names.', + ], + throws: ['{Error} If `options.secret` is empty.'], + }, + }, + { + name: 'CsrfOptions', + anchor: 'csrf-options', + signature: 'CsrfOptions: any', + typeOnly: true, + summary: 'Options for {@link csrf}.', members: [ { - name: 'send', + name: 'secret', summary: '', - signature: - 'send(data: string | ArrayBufferLike | ArrayBufferView): void;', + signature: 'readonly secret: string;', }, { - name: 'close', + name: 'sessionId', summary: '', - signature: 'close(code?: number, reason?: string): void;', + signature: + 'readonly sessionId?: (context: Parameters<Middleware>[0]) => string | undefined;', }, { - name: 'onMessage', + name: 'header', summary: '', - signature: - 'onMessage(listener: (data: string | Uint8Array) => void): () => void;', + signature: 'readonly header?: string;', }, { - name: 'onClose', + name: 'formField', summary: '', - signature: - 'onClose(listener: (event: WebSocketCloseEvent) => void): () => void;', + signature: 'readonly formField?: string;', }, + ], + }, + { + name: 'enforceHttps', + anchor: 'enforce-https', + signature: + 'enforceHttps: (options?: { trustProxy?: boolean; status?: 301 | 302 | 307 | 308; }) => Middleware', + typeOnly: true, + summary: + 'Creates middleware that redirects non-HTTPS requests to their HTTPS equivalent.', + tags: { + param: [ + "options.trustProxy - When true, honors the `X-Forwarded-Proto` header (first value)\ninstead of the request's own scheme, for use behind a TLS-terminating proxy.", + 'options.status - Redirect status code to use. Defaults to `308` (permanent, method-preserving).', + ], + }, + }, + { + name: 'MemoryRateLimitStoreOptions', + anchor: 'memory-rate-limit-store-options', + signature: 'MemoryRateLimitStoreOptions: any', + typeOnly: true, + summary: 'Options for {@link createMemoryRateLimitStore}.', + members: [ { - name: 'onError', + name: 'now', summary: '', - signature: 'onError(listener: (error: unknown) => void): () => void;', + signature: 'readonly now?: () => number;', + }, + { + name: 'maxEntries', + summary: + 'Maximum active keys retained in memory. Defaults to 10,000.', + signature: 'readonly maxEntries?: number;', }, ], }, - ], - symbols41: [ { - name: 'ApiRoute', - anchor: 'api-route', - signature: 'ApiRoute: any', + name: 'rateLimit', + anchor: 'rate-limit', + signature: 'rateLimit: (options: RateLimitOptions) => Middleware', typeOnly: true, summary: - 'A single registered route: a path/method pattern paired with a handler (or WebSocket upgrade handler).', + 'Creates middleware that enforces a request-rate limit per key (e.g. per client), adding\n`RateLimit-*` response headers and returning `429 Too Many Requests` with `Retry-After`\nwhen the limit is exceeded. Genuine CORS preflight requests (`OPTIONS` with both `Origin`\nand `Access-Control-Request-Method`) are quota-neutral regardless of middleware order.', + tags: { + param: [ + 'options - Limit, window, key resolver, and optional store/clock.', + ], + throws: [ + '{Error} If `limit` is not a positive integer or `windowMs` is not positive.', + ], + }, + }, + { + name: 'RateLimitOptions', + anchor: 'rate-limit-options', + signature: 'RateLimitOptions: any', + typeOnly: true, + summary: 'Options for {@link rateLimit}.', members: [ { - name: 'path', + name: 'store', summary: '', - signature: 'path: string;', + signature: 'readonly store?: RateLimitStore;', }, { - name: 'method', + name: 'limit', summary: '', - signature: 'method?: string | readonly string[];', + signature: 'readonly limit: number;', }, { - name: 'handler', + name: 'windowMs', summary: '', - signature: 'handler: Handler<RouteParams>;', + signature: 'readonly windowMs: number;', }, { - name: 'upgrade', + name: 'key', + summary: + 'Returns an application-trusted bucket identity. Proxy headers are\nintentionally never interpreted by this middleware.', + signature: + 'readonly key: (context: Parameters<Middleware>[0]) => string;', + }, + { + name: 'now', summary: '', - signature: 'upgrade?: WebSocketHandler<RouteParams>;', + signature: 'readonly now?: () => number;', }, ], }, { - name: 'ApiRouteOptions', - anchor: 'api-route-options', - signature: 'ApiRouteOptions: any', + name: 'RateLimitStore', + anchor: 'rate-limit-store', + signature: 'RateLimitStore: any', typeOnly: true, - summary: 'Per-route configuration shared by {@link ApiRoute}.', + summary: + 'Pluggable backing store for {@link rateLimit}, tracking request counts per key/window.', members: [ { - name: 'auth', - summary: '', - signature: 'auth?: AuthRequirement;', - }, - { - name: 'middleware', - summary: '', - signature: 'middleware?: readonly Middleware<RouteParams>[];', - }, - { - name: 'maxRequestBytes', + name: 'consume', summary: '', - signature: 'maxRequestBytes?: number;', + signature: + 'consume(key: string, limit: number, windowMs: number): Promise<{\n readonly remaining: number;\n /** Epoch milliseconds at which the current window resets. */\n readonly reset: number;\n readonly allowed: boolean;\n }>;', }, ], }, { - name: 'createRouter', - anchor: 'create-router', - signature: 'createRouter: () => Router', + name: 'requestId', + anchor: 'request-id', + signature: + 'requestId: (options?: { header?: string; generate?: () => string; }) => Middleware', typeOnly: true, summary: - 'Creates an empty, mutable {@link Router} with chainable HTTP-method route builders\n(`get`, `post`, `put`, `patch`, `delete`, `options`, `head`, `trace`, `connect`, `ws`) and a\n`use` method for registering middleware.', + 'Creates middleware that reads a request ID from an incoming header (generating one if\nabsent), stores it on `ctx.state.requestId`, and echoes it back on the response header.', tags: { - returns: ['A new router instance.'], + param: [ + 'options.header - Header name to read/write. Defaults to `x-request-id`.', + 'options.generate - ID generator used when the header is absent. Defaults to `crypto.randomUUID()`.', + ], }, }, { - name: 'defineRoutes', - anchor: 'define-routes', + name: 'securityHeaders', + anchor: 'security-headers', signature: - 'defineRoutes: (definition: (route: RouteBuilder) => void) => ApiRoute[]', + 'securityHeaders: (options?: { contentSecurityPolicy?: string | ((context: ServerContext) => string); referrerPolicy?: string; frameOptions?: string; }) => Middleware', typeOnly: true, summary: - 'Builds a flat list of {@link ApiRoute}s by invoking `definition` with a {@link RouteBuilder}.\nUseful for defining a set of routes without a full {@link Router} (e.g. to compose into one).', + 'Creates middleware that adds standard security headers to every response:\n`X-Content-Type-Options: nosniff`, `Referrer-Policy`, `X-Frame-Options`, and (if configured)\n`Content-Security-Policy`.', tags: { param: [ - 'definition - Callback that registers routes via the provided builder.', + 'options.contentSecurityPolicy - A static CSP string, or a function of the request\ncontext (e.g. to embed a per-request nonce). Omitted if not set.', + 'options.referrerPolicy - Defaults to `strict-origin-when-cross-origin`.', + 'options.frameOptions - Defaults to `DENY`.', ], - returns: ['The collected routes.'], }, }, { - name: 'Handler', - anchor: 'handler', + name: 'trace', + anchor: 'trace', signature: - 'Handler: {\n bivarianceHack(context: ServerContext<RouteParams>): Response | Promise<Response>;\n}["bivarianceHack"]', + 'trace: (start: (context: ServerContext) => void | (() => void | Promise<void>)) => Middleware', typeOnly: true, summary: - 'A route handler function that produces a response for a given {@link ServerContext}.', + 'Creates middleware that invokes `start` at the beginning of each request and, if it returns\na function, invokes that function after the downstream chain settles (success or throw) —\ne.g. to open and close a tracing span around the request.', + tags: { + param: [ + 'start - Called with the request context; may return a cleanup/finish callback.', + ], + }, }, + ], + symbols47: [ { - name: 'Middleware', - anchor: 'middleware', + name: 'ActionHandler', + anchor: 'action-handler', signature: - 'Middleware: {\n bivarianceHack(context: ServerContext<RouteParams>, next: Next): Response | Promise<Response>;\n}["bivarianceHack"]', + 'ActionHandler: (context: ActionHandlerContext, input: Input, dependencies: Dependencies) => ActionOutcome<Result> | Promise<ActionOutcome<Result>>', typeOnly: true, summary: - 'A middleware function that may short-circuit or delegate to `next` to produce a response.', + "A server action's business logic: validated `input` in, an {@link ActionOutcome} out.", }, { - name: 'RouteBuilder', - anchor: 'route-builder', - signature: 'RouteBuilder: any', + name: 'ActionOutcome', + anchor: 'action-outcome', + signature: 'ActionOutcome: any', typeOnly: true, summary: - 'Chainable, per-HTTP-method route registration methods, one per method plus `ws` for WebSockets.', + 'The result of a successful {@link ActionHandler} invocation: an optional redirect, result payload, and cookies.', members: [ { - name: 'route', - summary: '', - signature: - 'route<const Path extends string>(method: string | readonly string[], path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', - }, - { - name: 'get', + name: 'redirect', summary: '', - signature: - 'get<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + signature: 'readonly redirect?: string;', }, { - name: 'post', + name: 'result', summary: '', - signature: - 'post<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + signature: 'readonly result?: Result;', }, { - name: 'put', + name: 'cookies', summary: '', - signature: - 'put<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + signature: 'readonly cookies?: readonly ActionCookieInstruction[];', }, + ], + }, + { + name: 'ActionRegistry', + anchor: 'action-registry', + signature: 'ActionRegistry: any', + typeOnly: true, + summary: + 'A registry of server actions, as created by {@link defineServerActions }, used by {@link createAskrPageHandler }.', + members: [ { - name: 'patch', + name: 'entries', summary: '', signature: - 'patch<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + 'readonly entries: readonly Readonly<{\n descriptor: ActionDescriptor;\n }>[];', }, { - name: 'delete', + name: 'csrfToken', summary: '', signature: - 'delete<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + 'csrfToken(context: ServerContext): Promise<string | undefined>;', }, { - name: 'options', + name: 'execute', summary: '', signature: - 'options<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + 'execute(context: ServerContext, options: ActionExecutionOptions): Promise<ActionExecution | undefined>;', }, + ], + }, + { + name: 'AskrApp', + anchor: 'askr-app', + signature: 'AskrApp: any', + typeOnly: true, + summary: + 'A configured Askr application, as returned by {@link createAskrApp}.', + members: [ { - name: 'head', + name: 'fetch', summary: '', - signature: - 'head<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + signature: 'fetch(request: Request): Promise<Response>;', }, { - name: 'trace', + name: 'toOpenApiDocument', summary: '', - signature: - 'trace<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + signature: 'toOpenApiDocument(): OpenApiDocument;', }, { - name: 'connect', + name: 'close', summary: '', - signature: - 'connect<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + signature: 'close(): Promise<void>;', }, + ], + }, + { + name: 'AskrAppApi', + anchor: 'askr-app-api', + signature: 'AskrAppApi: any', + typeOnly: true, + summary: + 'The API group passed to {@link AskrAppApiOptions.define}, extended with a `schema` helper.', + members: [ { - name: 'ws', + name: 'schema', summary: '', - signature: - 'ws<const Path extends string>(path: Path, handler: WebSocketHandler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): ApiRoute<PathParams<Path>>;', + signature: 'schema: ApiDefinition<Dependencies>["schema"];', }, ], }, { - name: 'Router', - anchor: 'router', - signature: 'Router: any', + name: 'AskrAppOptions', + anchor: 'askr-app-options', + signature: 'AskrAppOptions: any', typeOnly: true, - summary: - 'A mutable collection of routes and middleware, built with chainable per-method registration\nmethods (each returning the router itself for chaining) and a `use` method for middleware.', + summary: 'Options for {@link createAskrApp}.', members: [ { - name: 'routes', + name: 'name', summary: '', - signature: 'readonly routes: readonly ApiRoute[];', + signature: 'readonly name: string;', }, { - name: 'middleware', + name: 'version', summary: '', - signature: 'readonly middleware: readonly Middleware[];', + signature: 'readonly version: string;', }, { - name: 'use', + name: 'dependencies', summary: '', - signature: 'use(...middleware: Middleware[]): Router;', + signature: 'readonly dependencies: Dependencies;', }, { - name: 'route', + name: 'pages', summary: '', - signature: - 'route<const Path extends string>(method: string | readonly string[], path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): Router;', + signature: 'readonly pages: RouteRegistry;', }, { - name: 'get', + name: 'queryRegistry', summary: '', - signature: - 'get<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): Router;', + signature: 'readonly queryRegistry?: ServerQueryRegistry;', }, { - name: 'post', + name: 'api', summary: '', - signature: - 'post<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): Router;', + signature: 'readonly api?: AskrAppApiOptions<Dependencies>;', }, { - name: 'put', + name: 'actions', summary: '', signature: - 'put<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): Router;', + 'readonly actions?: ActionRegistryOptions & {\n readonly handlers: readonly ActionRegistration<Dependencies>[];\n };', }, { - name: 'patch', + name: 'auth', summary: '', - signature: - 'patch<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): Router;', + signature: 'readonly auth?: AskrAppAuthOptions<P>;', }, { - name: 'delete', + name: 'middleware', summary: '', - signature: - 'delete<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): Router;', + signature: 'readonly middleware?: readonly Middleware[];', }, { - name: 'options', + name: 'probes', summary: '', - signature: - 'options<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): Router;', + signature: 'readonly probes?: ProbeOptions;', }, { - name: 'head', + name: 'telemetry', summary: '', - signature: - 'head<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): Router;', + signature: 'readonly telemetry?: ServerTelemetry;', }, { - name: 'trace', + name: 'onError', summary: '', - signature: - 'trace<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): Router;', + signature: 'readonly onError?: ServerAppOptions["onError"];', }, { - name: 'connect', + name: 'onAccessDenied', summary: '', signature: - 'connect<const Path extends string>(path: Path, handler: Handler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): Router;', + 'readonly onAccessDenied?: ServerAppOptions["onAccessDenied"];', }, { - name: 'ws', + name: 'close', summary: '', signature: - 'ws<const Path extends string>(path: Path, handler: WebSocketHandler<PathParams<Path>>, options?: ApiRouteOptions<PathParams<Path>>): Router;', + 'readonly close?: (dependencies: Dependencies) => void | Promise<void>;', + }, + { + name: 'cspNonce', + summary: '', + signature: 'readonly cspNonce?: CspNonceProvider;', }, ], }, { - name: 'WebSocketHandler', - anchor: 'web-socket-handler', - signature: - 'WebSocketHandler: {\n bivarianceHack(socket: WebSocketLike, context: ServerContext<RouteParams>): void | Promise<void>;\n}["bivarianceHack"]', + name: 'AskrPageHandlerOptions', + anchor: 'askr-page-handler-options', + signature: 'AskrPageHandlerOptions: any', typeOnly: true, - summary: - 'Handler invoked with a live {@link WebSocketLike} once a connection has been upgraded.', + summary: 'Options for {@link createAskrPageHandler}.', + members: [ + { + name: 'registry', + summary: '', + signature: 'registry: RouteRegistry;', + }, + { + name: 'auth', + summary: '', + signature: 'auth?: RouteAuthOptions;', + }, + { + name: 'queryRegistry', + summary: '', + signature: 'queryRegistry?: ServerQueryRegistry;', + }, + { + name: 'seed', + summary: '', + signature: 'seed?: number;', + }, + { + name: 'actions', + summary: '', + signature: 'actions?: ActionRegistry;', + }, + { + name: 'cspNonce', + summary: '', + signature: 'cspNonce?: CspNonceProvider;', + }, + ], }, - ], - symbols42: [ { - name: 'accepted', - anchor: 'accepted', + name: 'createAskrApp', + anchor: 'create-askr-app', signature: - 'accepted: (value?: JsonValue, init?: ResponseInit) => Response', + 'createAskrApp: <Dependencies, P extends Principal = Principal>(options: AskrAppOptions<Dependencies, P>) => AskrApp', typeOnly: true, summary: - 'Builds a `202 Accepted` response; JSON-serializes `value` if given, otherwise an empty body.', - }, - { - name: 'accepts', - anchor: 'accepts', - signature: 'accepts: (value: string, expected: string) => boolean', - typeOnly: true, - }, - { - name: 'bad', - anchor: 'bad', - signature: 'bad: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Alias for {@link badRequest}.', + 'Assembles a complete Askr application from page routes, an optional OpenAPI-described API,\noptional server actions, and optional authentication — wiring an API router (mounted at\n`options.api?.prefix`, default `/api`), auth routes, and a page-rendering fallback handler\ninto a single {@link ServerApp }-like object.', + tags: { + param: [ + 'options - Pages registry, dependencies, API/auth/action configuration, and lifecycle hooks.', + ], + returns: [ + 'An {@link AskrApp} exposing `fetch`, `toOpenApiDocument`, and `close`.', + ], + throws: [ + '{Error} If `options.api.prefix` is invalid, or collides with the reserved `/auth` prefix.', + ], + }, }, { - name: 'badRequest', - anchor: 'bad-request', + name: 'createAskrPageHandler', + anchor: 'create-askr-page-handler', signature: - 'badRequest: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `400 Bad Request` Problem Details response.', - }, - { - name: 'challenge', - anchor: 'challenge', - signature: 'challenge: (options?: ChallengeOptions) => Response', - typeOnly: true, - summary: - 'Builds a `401`/`407` Problem Details response with a `WWW-Authenticate` (or\n`Proxy-Authenticate` for `407`) challenge header.', - }, - { - name: 'clearCookie', - anchor: 'clear-cookie', - signature: - 'clearCookie: (response: Response, name: string, options?: CookieOptions) => Response', + 'createAskrPageHandler: (options: AskrPageHandlerOptions) => Handler', typeOnly: true, summary: - 'Returns a clone of `response` with a `Set-Cookie` header that expires and clears `name`.', + "Creates a catch-all route {@link Handler} that server-renders Askr framework pages: routes\n`GET`/`HEAD` requests through Askr's SSR pipeline, and (if `options.actions` is provided)\ndispatches `POST` requests as form actions, re-rendering the page with validation errors on\nfailure or following a redirect/response on success.", tags: { - throws: [ - '{TypeError} If the cookie domain or path contains invalid attribute characters.', + param: [ + 'options - Route registry, auth policy, query registry, action registry, and CSP nonce provider.', ], + throws: ['{Error} If `options.registry` is not provided.'], }, }, { - name: 'conflict', - anchor: 'conflict', - signature: 'conflict: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `409 Conflict` Problem Details response.', - }, - { - name: 'contentType', - anchor: 'content-type', - signature: 'contentType: (value: string | null) => string | undefined', - typeOnly: true, - }, - { - name: 'created', - anchor: 'created', - signature: - 'created: (value?: JsonValue, init?: ResponseInit) => Response', - typeOnly: true, - summary: - 'Builds a `201 Created` response; JSON-serializes `value` if given, otherwise an empty body.', - }, - { - name: 'createEventStream', - anchor: 'create-event-stream', + name: 'defineServerActions', + anchor: 'define-server-actions', signature: - 'createEventStream: (options?: EventStreamOptions) => EventStream', + 'defineServerActions: <Dependencies>(options: ServerActionsOptions<Dependencies>, ...entries: readonly ActionRegistration<Dependencies>[]) => ActionRegistry', typeOnly: true, summary: - 'Creates a Server-Sent Events stream backed by a `text/event-stream` `Response`, with\nbounded backpressure-aware writes, optional heartbeat comments, and automatic closing when\n`options.signal` aborts or `close()` is called.', + 'Builds an {@link ActionRegistry} from a set of {@link ActionEntry}s (via {@link handleAction}),\nwiring up CSRF token issuance/verification (unless `options.csrf` is `false`), submission\nparsing (JSON or form-encoded), input validation, telemetry, and response negotiation\n(redirect vs. JSON envelope) for each action invocation.', tags: { param: [ - 'options - Stream configuration (abort signal, heartbeat interval, backpressure, headers).', - ], - returns: [ - 'An {@link EventStream} exposing the response plus `send`/`comment`/`close` methods.', - ], - throws: [ - '{TypeError} If `highWaterMark` or `heartbeatInterval` are not positive safe integers.', + 'options - Dependencies to inject into handlers, plus CSRF configuration.', + 'entries - The registered actions.', ], + throws: ['{Error} If two entries share the same action ID.'], }, }, { - name: 'error', - anchor: 'error', + name: 'handleAction', + anchor: 'handle-action', signature: - 'error: (status?: number, detail?: string, init?: ResponseInit) => Response', + 'handleAction: <Dependencies, Input extends Record<string, unknown>, Result = unknown>(descriptor: ActionDescriptor<Input>, handler: ActionHandler<Dependencies, Input, Result>) => ActionEntry<Dependencies, Input, Result>', typeOnly: true, summary: - 'Builds a Problem Details error response with a configurable status (default `500`).', + 'Pairs an action descriptor (its ID and input schema) with a typed handler, ready to pass to\n{@link defineServerActions}.', }, { - name: 'EventStream', - anchor: 'event-stream', - signature: 'EventStream: any', + name: 'ServerActionsOptions', + anchor: 'server-actions-options', + signature: 'ServerActionsOptions: any', + typeOnly: true, + summary: 'Options for {@link defineServerActions }.', + members: [ + { + name: 'dependencies', + summary: '', + signature: 'readonly dependencies: Dependencies;', + }, + ], + }, + ], + symbols48: [ + { + name: 'AuthRouteError', + anchor: 'auth-route-error', + signature: 'AuthRouteError: typeof AuthRouteError', typeOnly: true, summary: - 'A live Server-Sent Events stream, backed by a streaming `Response`.', + 'Error thrown from `register`/`authenticate`/etc. callbacks to short-circuit an auth route with a specific status.', members: [ { - name: 'response', + name: 'status', summary: '', - signature: 'readonly response: Response;', + signature: 'readonly status: 401 | 409 | 429;', }, + ], + }, + { + name: 'AuthRouteOptions', + anchor: 'auth-route-options', + signature: 'AuthRouteOptions: any', + typeOnly: true, + summary: 'Configuration for {@link registerAuthRoutes}.', + members: [ { - name: 'closed', + name: 'issuer', summary: '', - signature: 'readonly closed: Promise<void>;', + signature: 'issuer: TokenIssuer<P>;', }, { - name: 'send', - summary: - 'Queues an event in order. Await or otherwise handle the returned promise before producing\nwithout bound. Rejects with `QuotaExceededError` when the pending-write limit is full.', - signature: 'send(event: ServerSentEvent): Promise<void>;', + name: 'cookie', + summary: '', + signature: 'cookie: CookieOptions & {\n name: string;\n };', }, { - name: 'comment', - summary: - 'Queues an SSE comment in order. Rejects with `QuotaExceededError` when the pending-write\nlimit is full.', - signature: 'comment(value: string): Promise<void>;', + name: 'principalSchema', + summary: '', + signature: 'principalSchema: Schema;', }, { - name: 'close', + name: 'register', summary: '', - signature: 'close(): Promise<void>;', + signature: + 'register(context: ServerContext, credentials: AuthCredentials): P | Promise<P>;', }, - ], - }, - { - name: 'EventStreamOptions', - anchor: 'event-stream-options', - signature: 'EventStreamOptions: any', - typeOnly: true, - summary: 'Options for {@link createEventStream}.', - members: [ { - name: 'signal', - summary: 'Aborting this signal closes the stream.', - signature: 'signal?: AbortSignal;', + name: 'authenticate', + summary: '', + signature: + 'authenticate(context: ServerContext, credentials: AuthCredentials): P | null | Promise<P | null>;', }, { - name: 'heartbeatInterval', - summary: - 'If set, sends a `heartbeat` comment on this interval (in ms) to keep the connection alive.', - signature: 'heartbeatInterval?: number;', + name: 'allowAttempt', + summary: '', + signature: + 'allowAttempt(context: ServerContext, operation: "register" | "authenticate", normalizedEmail: string): boolean | Promise<boolean>;', }, { - name: 'highWaterMark', - summary: - 'Backpressure threshold for the underlying `ReadableStream` and maximum number of\nunresolved `send()`/`comment()` calls admitted at once. Defaults to 16.', - signature: 'highWaterMark?: number;', + name: 'revoke', + summary: '', + signature: 'revoke?(context: ServerContext): void | Promise<void>;', }, { - name: 'headers', + name: 'redirect', summary: '', - signature: 'headers?: HeadersInit;', + signature: + 'redirect?: (context: ServerContext, operation: "register" | "authenticate", principal: P) => string | undefined;', }, ], }, { - name: 'explicitlyAccepts', - anchor: 'explicitly-accepts', - signature: - 'explicitlyAccepts: (value: string, expected: string) => boolean', - typeOnly: true, - }, - { - name: 'forbidden', - anchor: 'forbidden', + name: 'registerAuthRoutes', + anchor: 'register-auth-routes', signature: - 'forbidden: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `403 Forbidden` Problem Details response.', - }, - { - name: 'formatServerSentEvent', - anchor: 'format-server-sent-event', - signature: 'formatServerSentEvent: (event: ServerSentEvent) => string', + 'registerAuthRoutes: <Dependencies, P extends Principal>(api: Pick<ApiDefinition<Dependencies>, "group">, options: AuthRouteOptions<P>) => void', typeOnly: true, summary: - 'Serializes a {@link ServerSentEvent} to the `text/event-stream` wire format, escaping\nmulti-line data/comment fields and validating that `event`/`id` contain no line breaks.', + 'Registers a standard set of authentication routes (`POST /auth/v1/accounts`,\n`GET/POST /auth/v1/session`, `DELETE /auth/v1/session`) on an OpenAPI-style API/group,\nhandling registration, login, session lookup, and logout with CSRF protection via a\nsame-origin `Origin` header check, per-attempt rate limiting, and cookie-based token storage.', tags: { - throws: [ - '{TypeError} If `event`, `id`, or `retry` contain invalid characters/values.', + param: [ + 'api - The API or group to register routes on (only its `group` method is used).', + 'options - Issuer, cookie configuration, principal schema, and register/authenticate/\nallowAttempt/revoke/redirect callbacks.', ], }, }, { - name: 'internalServerError', - anchor: 'internal-server-error', - signature: - 'internalServerError: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `500 Internal Server Error` Problem Details response.', - }, - { - name: 'json', - anchor: 'json', - signature: 'json: (value: JsonValue, init?: ResponseInit) => Response', - typeOnly: true, - summary: - 'Builds a `200 OK`-shaped JSON response, serializing `value` and setting the JSON content type.', - }, - { - name: 'methodNotAllowed', - anchor: 'method-not-allowed', - signature: - 'methodNotAllowed: (allow?: string | readonly string[], init?: ResponseInit) => Response', - typeOnly: true, - summary: - 'Builds a `405 Method Not Allowed` Problem Details response, setting the `Allow` header if given.', - }, - { - name: 'noContent', - anchor: 'no-content', - signature: 'noContent: (init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `204 No Content` response with an empty body.', - }, - { - name: 'notFound', - anchor: 'not-found', - signature: 'notFound: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `404 Not Found` Problem Details response.', - }, - { - name: 'notImplemented', - anchor: 'not-implemented', - signature: - 'notImplemented: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `501 Not Implemented` Problem Details response.', - }, - { - name: 'ok', - anchor: 'ok', - signature: 'ok: (value?: JsonValue, init?: ResponseInit) => Response', - typeOnly: true, - summary: - 'Builds a `200 OK` response; JSON-serializes `value` if given, otherwise an empty body.', - }, - { - name: 'problem', - anchor: 'problem', + name: 'safeRedirect', + anchor: 'safe-redirect', signature: - 'problem: (status: number, detail?: string, options?: ProblemOptions & { init?: ResponseInit; }) => Response', + 'safeRedirect: (fallback: string, options?: SafeRedirectOptions) => (value: unknown) => string', typeOnly: true, summary: - 'Builds an RFC 9457 `application/problem+json` response, defaulting `type` to `about:blank`\nand `title` to a standard reason phrase for the given `status` (falling back to "HTTP Error").', + 'Creates a validator that resolves an untrusted redirect target to a safe, same-origin,\nrelative path — or to `fallback` if the value is unsafe (absolute, protocol-relative,\ncontains a scheme, control characters, `..` traversal, backslashes, or an unwanted hash).', + tags: { + param: [ + 'fallback - The safe path to use when the requested value is not itself safe. Must\nitself pass the safety check, or this function throws.', + 'options - Redirect validation options.', + ], + returns: [ + 'A function `(value) => path` that returns `value` if safe, otherwise `fallback`.', + ], + throws: ['{Error} If `fallback` is not itself a safe path.'], + }, }, + ], + symbols49: [ { - name: 'redirect', - anchor: 'redirect', - signature: - 'redirect: (location: string, status?: 301 | 302 | 303 | 307 | 308) => Response', + name: 'ApiDefinition', + anchor: 'api-definition', + signature: 'ApiDefinition: any', typeOnly: true, summary: - 'Builds a redirect response with an empty body and a `Location` header. Defaults to `302 Found`.', - }, - { - name: 'serverError', - anchor: 'server-error', - signature: - 'serverError: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Alias for {@link internalServerError}.', + 'The root API definition returned by {@link createApi }: a top-level {@link ApiGroup} that can\nalso register reusable named schemas, build a concrete {@link Router} from its routes, and\nrender an {@link OpenApiDocument}.', + members: [ + { + name: 'schema', + summary: '', + signature: + 'schema<const Value extends Schema>(name: string, value: Value): Value;', + }, + { + name: 'createRouter', + summary: '', + signature: + 'createRouter: [Dependencies] extends [undefined] ? (dependencies?: undefined) => Router : (dependencies: Dependencies) => Router;', + }, + { + name: 'toOpenApiDocument', + summary: '', + signature: 'toOpenApiDocument(): OpenApiDocument;', + }, + ], }, { - name: 'ServerSentEvent', - anchor: 'server-sent-event', - signature: 'ServerSentEvent: any', + name: 'ApiGroup', + anchor: 'api-group', + signature: 'ApiGroup: any', typeOnly: true, summary: - 'A single Server-Sent Event; `data` is JSON-serialized unless already a string.', + 'A prefixed group of routes within an {@link ApiDefinition}, supporting nested sub-groups,\nshared tags/middleware/auth/params, and per-HTTP-method route registration.', members: [ { - name: 'data', + name: 'tags', summary: '', - signature: 'data?: unknown;', + signature: 'tags(...values: string[]): ApiGroup<Dependencies>;', }, { - name: 'event', + name: 'use', summary: '', - signature: 'event?: string;', + signature: + 'use(...middleware: Middleware[]): ApiGroup<Dependencies>;', }, { - name: 'id', + name: 'access', summary: '', - signature: 'id?: string;', + signature: + 'access(requirement: AuthRequirement, security: SecurityRequirement): ApiGroup<Dependencies>;', }, { - name: 'retry', + name: 'pathParam', summary: '', - signature: 'retry?: number;', + signature: + 'pathParam(name: string, value: Schema, options?: ParameterOptions): ApiGroup<Dependencies>;', }, - ], - }, - { - name: 'serviceUnavailable', - anchor: 'service-unavailable', - signature: - 'serviceUnavailable: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `503 Service Unavailable` Problem Details response.', - }, - { - name: 'setCookie', - anchor: 'set-cookie', - signature: - 'setCookie: (response: Response, name: string, value: string, options?: CookieOptions) => Response', - typeOnly: true, - summary: - 'Returns a clone of `response` with an additional `Set-Cookie` header appended, serialized\nfrom `name`, `value`, and `options`.', - tags: { - throws: [ - '{TypeError} If the cookie domain or path contains invalid attribute characters.', - ], - }, - }, - { - name: 'text', - anchor: 'text', - signature: 'text: (value: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: - 'Builds a plain-text response, setting the `text/plain; charset=utf-8` content type.', - }, - { - name: 'tooManyRequests', - anchor: 'too-many-requests', - signature: - 'tooManyRequests: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `429 Too Many Requests` Problem Details response.', - }, - { - name: 'unauthorized', - anchor: 'unauthorized', - signature: - 'unauthorized: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `401 Unauthorized` Problem Details response.', - }, - { - name: 'unprocessableEntity', - anchor: 'unprocessable-entity', - signature: - 'unprocessableEntity: (detail?: string, init?: ResponseInit) => Response', - typeOnly: true, - summary: 'Builds a `422 Unprocessable Entity` Problem Details response.', - }, - ], - symbols43: [ - { - name: 'accessLog', - anchor: 'access-log', - signature: 'accessLog: (logger: ResponseLogger) => Middleware', - typeOnly: true, - summary: - 'Creates middleware that times each request and invokes `logger` with the request, response,\nduration, and (if present) request ID after the downstream chain resolves.', - tags: { - param: ['logger - Called once per request with the completed entry.'], - }, - }, - { - name: 'cors', - anchor: 'cors', - signature: 'cors: (options?: CorsOptions) => Middleware', - typeOnly: true, - summary: - 'Creates CORS middleware that validates the request origin, answers preflight `OPTIONS`\nrequests with `204` and the appropriate `Access-Control-*` headers, and adds\n`Access-Control-Allow-Origin`/`Vary: Origin` (plus exposed headers) to actual responses.\nGenuine preflight is quota-neutral in {@link rateLimit } regardless of middleware order.', - tags: { - param: [ - 'options - Allowed origin(s)/methods/headers, credential support, and preflight max-age.', - ], - throws: [ - '{TypeError} If `credentials` is combined with a wildcard origin, or `maxAgeSeconds`\nis not a non-negative safe integer.', - ], - }, - }, - { - name: 'CorsOptions', - anchor: 'cors-options', - signature: 'CorsOptions: any', - typeOnly: true, - summary: 'Options for {@link cors}.', - members: [ { - name: 'origin', + name: 'queryParam', summary: '', signature: - 'origin?: string | ((origin: string, context: ServerContext) => string | null);', + 'queryParam(name: string, value: Schema, options?: ParameterOptions): ApiGroup<Dependencies>;', }, { - name: 'methods', + name: 'headerParam', summary: '', - signature: 'methods?: readonly string[];', + signature: + 'headerParam(name: string, value: Schema, options?: ParameterOptions): ApiGroup<Dependencies>;', }, { - name: 'allowedHeaders', + name: 'cookieParam', summary: '', - signature: 'allowedHeaders?: readonly string[];', + signature: + 'cookieParam(name: string, value: Schema, options?: ParameterOptions): ApiGroup<Dependencies>;', }, { - name: 'exposedHeaders', + name: 'group', summary: '', - signature: 'exposedHeaders?: readonly string[];', + signature: + 'group<const Child extends string>(prefix: Child): ApiGroup<Dependencies, JoinPath<Prefix, Child>>;', }, { - name: 'credentials', + name: 'get', summary: '', - signature: 'credentials?: boolean;', + signature: 'get: ApiMethod<Dependencies, Prefix>;', }, { - name: 'maxAgeSeconds', + name: 'post', summary: '', - signature: 'maxAgeSeconds?: number;', + signature: 'post: ApiMethod<Dependencies, Prefix>;', + }, + { + name: 'put', + summary: '', + signature: 'put: ApiMethod<Dependencies, Prefix>;', + }, + { + name: 'patch', + summary: '', + signature: 'patch: ApiMethod<Dependencies, Prefix>;', + }, + { + name: 'delete', + summary: '', + signature: 'delete: ApiMethod<Dependencies, Prefix>;', + }, + { + name: 'options', + summary: '', + signature: 'options: ApiMethod<Dependencies, Prefix>;', + }, + { + name: 'head', + summary: '', + signature: 'head: ApiMethod<Dependencies, Prefix>;', + }, + { + name: 'trace', + summary: '', + signature: 'trace: ApiMethod<Dependencies, Prefix>;', }, ], }, { - name: 'createCsrfToken', - anchor: 'create-csrf-token', - signature: - 'createCsrfToken: (secret: string, sessionId: string) => Promise<string>', - typeOnly: true, - summary: - 'Creates a CSRF token bound to a session ID, as an HMAC-SHA256 signature encoded base64url.', - tags: { - param: [ - 'secret - The HMAC secret; must match what {@link verifyCsrfToken} uses.', - 'sessionId - The session ID to bind the token to.', - ], - }, - }, - { - name: 'createMemoryRateLimitStore', - anchor: 'create-memory-rate-limit-store', + name: 'ApiHandler', + anchor: 'api-handler', signature: - 'createMemoryRateLimitStore: (options?: MemoryRateLimitStoreOptions) => RateLimitStore', + 'ApiHandler: {\n bivarianceHack(context: ServerContext<RouteParams>, dependencies: Dependencies): Response | Promise<Response>;\n}["bivarianceHack"]', typeOnly: true, summary: - "Creates an in-memory {@link RateLimitStore} backed by a `Map`, suitable for single-process\ndeployments. Expired keys are pruned before capacity eviction, then the least recently used key\nis evicted when `maxEntries` is reached. Eviction forgets that key's current quota; use a custom\nstore when the key space is adversarial or cannot be safely bounded for one process.", - tags: { - param: [ - 'options.now - Clock function used to determine window boundaries. Defaults to `Date.now`.', - 'options.maxEntries - Maximum retained key count. Defaults to 10,000.', - ], - }, + 'A plain route handler registered via an {@link ApiGroup } method, receiving the resolved `dependencies`.', }, { - name: 'csrf', - anchor: 'csrf', - signature: 'csrf: (options: CsrfOptions) => Middleware', + name: 'ApiInput', + anchor: 'api-input', + signature: 'ApiInput: any', typeOnly: true, summary: - 'Creates middleware that enforces CSRF protection on state-changing requests (all methods\nexcept `GET`/`HEAD`/`OPTIONS`/`TRACE`) by requiring a valid token bound to the current\nsession, supplied via a request header or (for form-encoded bodies) a form field.', - tags: { - param: [ - 'options - HMAC secret, session ID resolver, and header/form field names.', - ], - throws: ['{Error} If `options.secret` is empty.'], - }, - }, - { - name: 'CsrfOptions', - anchor: 'csrf-options', - signature: 'CsrfOptions: any', - typeOnly: true, - summary: 'Options for {@link csrf}.', + "Declares the schemas for a route's inputs (path params, query, headers, body).", members: [ { - name: 'secret', + name: 'params', summary: '', - signature: 'readonly secret: string;', + signature: 'readonly params?: ObjectSchema;', }, { - name: 'sessionId', + name: 'query', summary: '', - signature: - 'readonly sessionId?: (context: Parameters<Middleware>[0]) => string | undefined;', + signature: 'readonly query?: ObjectSchema;', }, { - name: 'header', + name: 'headers', summary: '', - signature: 'readonly header?: string;', + signature: 'readonly headers?: ObjectSchema;', }, { - name: 'formField', + name: 'body', summary: '', - signature: 'readonly formField?: string;', + signature: 'readonly body?: ApiBodyInput;', }, ], }, { - name: 'enforceHttps', - anchor: 'enforce-https', - signature: - 'enforceHttps: (options?: { trustProxy?: boolean; status?: 301 | 302 | 307 | 308; }) => Middleware', + name: 'ApiOperation', + anchor: 'api-operation', + signature: 'ApiOperation: any', typeOnly: true, summary: - 'Creates middleware that redirects non-HTTPS requests to their HTTPS equivalent.', - tags: { - param: [ - "options.trustProxy - When true, honors the `X-Forwarded-Proto` header (first value)\ninstead of the request's own scheme, for use behind a TLS-terminating proxy.", - 'options.status - Redirect status code to use. Defaults to `308` (permanent, method-preserving).', - ], - }, - }, - { - name: 'MemoryRateLimitStoreOptions', - anchor: 'memory-rate-limit-store-options', - signature: 'MemoryRateLimitStoreOptions: any', - typeOnly: true, - summary: 'Options for {@link createMemoryRateLimitStore}.', + 'A schema-typed route registered via an {@link ApiGroup } method: declares its `input` schemas\n(validated and bound before `handler` runs, with results typed via {@link InferApiInput}) and\noptional extra `documentation` for parameters/body not otherwise inferable.', members: [ { - name: 'now', + name: 'input', summary: '', - signature: 'readonly now?: () => number;', + signature: 'readonly input?: Input;', }, { - name: 'maxEntries', - summary: - 'Maximum active keys retained in memory. Defaults to 10,000.', - signature: 'readonly maxEntries?: number;', + name: 'documentation', + summary: '', + signature: 'readonly documentation?: InputDocumentation;', }, - ], - }, - { - name: 'rateLimit', - anchor: 'rate-limit', - signature: 'rateLimit: (options: RateLimitOptions) => Middleware', - typeOnly: true, - summary: - 'Creates middleware that enforces a request-rate limit per key (e.g. per client), adding\n`RateLimit-*` response headers and returning `429 Too Many Requests` with `Retry-After`\nwhen the limit is exceeded. Genuine CORS preflight requests (`OPTIONS` with both `Origin`\nand `Access-Control-Request-Method`) are quota-neutral regardless of middleware order.', - tags: { - param: [ - 'options - Limit, window, key resolver, and optional store/clock.', - ], - throws: [ - '{Error} If `limit` is not a positive integer or `windowMs` is not positive.', - ], - }, + { + name: 'handler', + summary: '', + signature: + 'readonly handler: (context: ServerContext<RouteParams>, input: InferApiInput<Input>, dependencies: Dependencies) => Response | Promise<Response>;', + }, + ], }, { - name: 'RateLimitOptions', - anchor: 'rate-limit-options', - signature: 'RateLimitOptions: any', + name: 'ApiOptions', + anchor: 'api-options', + signature: 'ApiOptions: any', typeOnly: true, - summary: 'Options for {@link rateLimit}.', + summary: 'Options for {@link createApi }.', members: [ { - name: 'store', + name: 'info', summary: '', - signature: 'readonly store?: RateLimitStore;', + signature: 'readonly info: ApiInfo;', }, { - name: 'limit', - summary: '', - signature: 'readonly limit: number;', + name: 'metadata', + summary: + 'Infer registration-safe metadata, or require fully authored public contracts.', + signature: 'readonly metadata?: "inferred" | "authored";', }, { - name: 'windowMs', + name: 'servers', summary: '', - signature: 'readonly windowMs: number;', - }, - { - name: 'key', - summary: - 'Returns an application-trusted bucket identity. Proxy headers are\nintentionally never interpreted by this middleware.', - signature: - 'readonly key: (context: Parameters<Middleware>[0]) => string;', + signature: 'readonly servers?: readonly ServerObject[];', }, { - name: 'now', + name: 'externalDocs', summary: '', - signature: 'readonly now?: () => number;', + signature: 'readonly externalDocs?: ExternalDocumentationObject;', }, - ], - }, - { - name: 'RateLimitStore', - anchor: 'rate-limit-store', - signature: 'RateLimitStore: any', - typeOnly: true, - summary: - 'Pluggable backing store for {@link rateLimit}, tracking request counts per key/window.', - members: [ { - name: 'consume', + name: 'securitySchemes', summary: '', signature: - 'consume(key: string, limit: number, windowMs: number): Promise<{\n readonly remaining: number;\n /** Epoch milliseconds at which the current window resets. */\n readonly reset: number;\n readonly allowed: boolean;\n }>;', + 'readonly securitySchemes?: Readonly<Record<string, SecurityScheme>>;', + }, + { + name: 'validateResponses', + summary: + 'Validate documented response bodies only when explicitly enabled outside production.', + signature: 'readonly validateResponses?: boolean;', }, ], }, { - name: 'requestId', - anchor: 'request-id', - signature: - 'requestId: (options?: { header?: string; generate?: () => string; }) => Middleware', - typeOnly: true, - summary: - 'Creates middleware that reads a request ID from an incoming header (generating one if\nabsent), stores it on `ctx.state.requestId`, and echoes it back on the response header.', - tags: { - param: [ - 'options.header - Header name to read/write. Defaults to `x-request-id`.', - 'options.generate - ID generator used when the header is absent. Defaults to `crypto.randomUUID()`.', - ], - }, - }, - { - name: 'ResponseLogger', - anchor: 'response-logger', - signature: - 'ResponseLogger: (entry: {\n request: Request;\n response: Response;\n durationMs: number;\n requestId?: string;\n}) => void', - typeOnly: true, - summary: - 'Callback invoked by {@link accessLog} with details of a completed request.', - }, - { - name: 'securityHeaders', - anchor: 'security-headers', - signature: - 'securityHeaders: (options?: { contentSecurityPolicy?: string | ((context: ServerContext) => string); referrerPolicy?: string; frameOptions?: string; }) => Middleware', - typeOnly: true, - summary: - 'Creates middleware that adds standard security headers to every response:\n`X-Content-Type-Options: nosniff`, `Referrer-Policy`, `X-Frame-Options`, and (if configured)\n`Content-Security-Policy`.', - tags: { - param: [ - 'options.contentSecurityPolicy - A static CSP string, or a function of the request\ncontext (e.g. to embed a per-request nonce). Omitted if not set.', - 'options.referrerPolicy - Defaults to `strict-origin-when-cross-origin`.', - 'options.frameOptions - Defaults to `DENY`.', - ], - }, - }, - { - name: 'trace', - anchor: 'trace', - signature: - 'trace: (start: (context: ServerContext) => void | (() => void | Promise<void>)) => Middleware', - typeOnly: true, - summary: - 'Creates middleware that invokes `start` at the beginning of each request and, if it returns\na function, invokes that function after the downstream chain settles (success or throw) —\ne.g. to open and close a tracing span around the request.', - tags: { - param: [ - 'start - Called with the request context; may return a cleanup/finish callback.', - ], - }, - }, - { - name: 'verifyCsrfToken', - anchor: 'verify-csrf-token', + name: 'createApi', + anchor: 'create-api', signature: - 'verifyCsrfToken: (secret: string, sessionId: string, token: string) => Promise<boolean>', + 'createApi: <Dependencies = undefined>(options: ApiOptions) => ApiDefinition<Dependencies>', typeOnly: true, summary: - 'Verifies a CSRF token against a session ID using an HMAC-SHA256 signature.', + 'Creates an OpenAPI-aware {@link ApiDefinition}: a schema-typed route builder that records\noperation metadata and input/response schemas as routes are registered, then can render the\nroutes as a concrete {@link Router } (`createRouter`) or as an OpenAPI document\n(`toOpenApiDocument`).', tags: { param: [ - 'secret - The HMAC secret used to sign tokens.', - 'sessionId - The session ID the token should be bound to.', - 'token - The base64url-encoded token to verify.', - ], - returns: [ - '`true` if the token is a valid signature of `sessionId` under `secret`.', + 'options - API-level metadata (title, version, servers, etc.) and validation settings.', ], + returns: ['The root {@link ApiDefinition}.'], }, }, - ], - symbols44: [ - { - name: 'ActionCookieInstruction', - anchor: 'action-cookie-instruction', - signature: - 'ActionCookieInstruction: {\n readonly name: string;\n readonly value: string;\n readonly clear?: false;\n readonly options?: CookieOptions;\n} | {\n readonly name: string;\n readonly clear: true;\n readonly value?: never;\n readonly options?: CookieOptions;\n}', - typeOnly: true, - summary: 'A cookie to set or clear as part of an {@link ActionOutcome}.', - }, { - name: 'ActionEntry', - anchor: 'action-entry', - signature: 'ActionEntry: any', + name: 'OpenApiDocument', + anchor: 'open-api-document', + signature: 'OpenApiDocument: any', typeOnly: true, summary: - 'A registered action: its descriptor (schema/id) paired with its handler, as produced by {@link handleAction }.', + 'A complete OpenAPI 3.1 document, as produced by {@link ApiDefinition.toOpenApiDocument }.', members: [ { - name: 'descriptor', + name: 'openapi', summary: '', - signature: 'readonly descriptor: ActionDescriptor<Input>;', + signature: 'readonly openapi: "3.1.2";', }, { - name: 'handler', + name: 'info', summary: '', - signature: - 'readonly handler: ActionHandler<Dependencies, Input, Result>;', + signature: 'readonly info: ApiInfo;', }, - ], - }, - { - name: 'ActionExecution', - anchor: 'action-execution', - signature: - 'ActionExecution: {\n readonly kind: "response";\n readonly response: Response;\n} | {\n readonly kind: "invalid";\n readonly action: string;\n readonly values: Readonly<Record<string, unknown>>;\n readonly issues: readonly Issue[];\n readonly fieldErrors: Readonly<Record<string, readonly string[]>>;\n}', - typeOnly: true, - summary: - 'Result of {@link ActionRegistry.execute}: either a final response, or invalid-input details to re-render the page with.', - }, - { - name: 'ActionExecutionOptions', - anchor: 'action-execution-options', - signature: 'ActionExecutionOptions: any', - typeOnly: true, - summary: - "Options passed to {@link ActionRegistry.execute} describing the current page's allowed actions.", - members: [ { - name: 'authorized', + name: 'servers', summary: '', - signature: 'readonly authorized: readonly ActionDescriptor[];', + signature: 'readonly servers?: readonly ServerObject[];', }, { - name: 'params', + name: 'paths', summary: '', - signature: 'readonly params: Params;', + signature: + 'readonly paths: Readonly<Record<string, PathItemObject>>;', }, { - name: 'policies', + name: 'components', summary: '', - signature: 'readonly policies: readonly RoutePolicy[];', + signature: 'readonly components: ComponentsObject;', }, { - name: 'allowsRedirect', + name: 'externalDocs', summary: '', - signature: 'readonly allowsRedirect: (location: URL) => boolean;', + signature: 'readonly externalDocs?: ExternalDocumentationObject;', }, ], }, { - name: 'ActionHandler', - anchor: 'action-handler', - signature: - 'ActionHandler: (context: ActionHandlerContext, input: Input, dependencies: Dependencies) => ActionOutcome<Result> | Promise<ActionOutcome<Result>>', + name: 'RouteBuilder', + anchor: 'route-builder', + signature: 'RouteBuilder: any', typeOnly: true, summary: - "A server action's business logic: validated `input` in, an {@link ActionOutcome} out.", - }, - { - name: 'ActionHandlerContext', - anchor: 'action-handler-context', - signature: 'ActionHandlerContext: any', - typeOnly: true, - summary: 'Request-derived context passed to an {@link ActionHandler}.', + "Fluent builder for describing a single route's OpenAPI operation: metadata (operation ID,\nsummary, tags), request inputs (path/query/header/cookie params and body), and possible\nresponses (both status-coded shorthand methods like `ok`/`notFound` and the generic `response`).", members: [ { - name: 'request', - summary: '', - signature: 'readonly request: Request;', - }, - { - name: 'url', - summary: '', - signature: 'readonly url: URL;', - }, - { - name: 'params', - summary: '', - signature: 'readonly params: Params;', - }, - { - name: 'auth', + name: 'operationId', summary: '', - signature: 'readonly auth: AuthContext;', + signature: 'operationId(value: string): RouteBuilder<Dependencies>;', }, { - name: 'policies', + name: 'summary', summary: '', - signature: 'readonly policies: readonly RoutePolicy[];', + signature: 'summary(value: string): RouteBuilder<Dependencies>;', }, { - name: 'signal', + name: 'description', summary: '', - signature: 'readonly signal: AbortSignal;', + signature: 'description(value: string): RouteBuilder<Dependencies>;', }, - ], - }, - { - name: 'ActionOutcome', - anchor: 'action-outcome', - signature: 'ActionOutcome: any', - typeOnly: true, - summary: - 'The result of a successful {@link ActionHandler} invocation: an optional redirect, result payload, and cookies.', - members: [ { - name: 'redirect', + name: 'tags', summary: '', - signature: 'readonly redirect?: string;', + signature: 'tags(...values: string[]): RouteBuilder<Dependencies>;', }, { - name: 'result', + name: 'deprecated', summary: '', - signature: 'readonly result?: Result;', + signature: 'deprecated(value?: boolean): RouteBuilder<Dependencies>;', }, { - name: 'cookies', + name: 'externalDocs', summary: '', - signature: 'readonly cookies?: readonly ActionCookieInstruction[];', + signature: + 'externalDocs(url: string, description?: string): RouteBuilder<Dependencies>;', }, - ], - }, - { - name: 'ActionRegistration', - anchor: 'action-registration', - signature: 'ActionRegistration: any', - typeOnly: true, - summary: - 'A type-erased {@link ActionEntry}, as accepted by {@link defineServerActions }.', - members: [ { - name: 'descriptor', + name: 'use', summary: '', - signature: 'readonly descriptor: ActionDescriptor;', + signature: + 'use(...middleware: Middleware[]): RouteBuilder<Dependencies>;', }, { - name: 'handler', + name: 'maxRequestBytes', summary: '', signature: - 'readonly handler: (context: ActionHandlerContext, input: never, dependencies: Dependencies) => ActionOutcome<unknown> | Promise<ActionOutcome<unknown>>;', + 'maxRequestBytes(bytes: number): RouteBuilder<Dependencies>;', }, - ], - }, - { - name: 'ActionRegistry', - anchor: 'action-registry', - signature: 'ActionRegistry: any', - typeOnly: true, - summary: - 'A registry of server actions, as created by {@link defineServerActions }, used by {@link createAskrPageHandler }.', - members: [ { - name: 'entries', + name: 'access', summary: '', signature: - 'readonly entries: readonly Readonly<{\n descriptor: ActionDescriptor;\n }>[];', + 'access(requirement: AuthRequirement, security: SecurityRequirement): RouteBuilder<Dependencies>;', }, { - name: 'csrfToken', + name: 'pathParam', summary: '', signature: - 'csrfToken(context: ServerContext): Promise<string | undefined>;', + 'pathParam(name: string, value: Schema, options?: ParameterOptions): RouteBuilder<Dependencies>;', }, { - name: 'execute', + name: 'queryParam', summary: '', signature: - 'execute(context: ServerContext, options: ActionExecutionOptions): Promise<ActionExecution | undefined>;', + 'queryParam(name: string, value: Schema, options?: ParameterOptions): RouteBuilder<Dependencies>;', }, - ], - }, - { - name: 'ActionRegistryOptions', - anchor: 'action-registry-options', - signature: 'ActionRegistryOptions: any', - typeOnly: true, - summary: 'CSRF configuration shared by {@link ServerActionsOptions }.', - members: [ { - name: 'csrf', - summary: - 'Page actions are protected by session-bound CSRF by default.\n\nThe default identity is `context.auth.session?.id`, so anonymous pages do\nnot receive a token and their submissions are rejected. Pre-authentication\nforms such as login, signup, and password reset must establish an opaque\nguest session before rendering and return its stable identity from\n`sessionId`. The resolver identifies an existing session; it does not\ncreate or persist one.\n\nSet this to `false` only when the complete flow intentionally uses another\nCSRF defense.', + name: 'headerParam', + summary: '', signature: - 'readonly csrf?: false | {\n /** HMAC secret. A process-local random secret is generated when omitted. */\n readonly secret?: string;\n /**\n * Resolves the authenticated or pre-authentication session identity\n * used to issue and verify tokens. Returning `undefined` means no token\n * is rendered and action submissions fail with `403`.\n */\n readonly sessionId?: (context: ServerContext) => string | undefined;\n /** Enhanced-submission token header. Defaults to `x-askr-csrf-token`. */\n readonly header?: string;\n /** Native-form token field. Defaults to `_csrf`. */\n readonly formField?: string;\n };', + 'headerParam(name: string, value: Schema, options?: ParameterOptions): RouteBuilder<Dependencies>;', }, { - name: 'randomSecret', + name: 'cookieParam', summary: '', - signature: 'readonly randomSecret?: () => string;', + signature: + 'cookieParam(name: string, value: Schema, options?: ParameterOptions): RouteBuilder<Dependencies>;', }, - ], - }, - { - name: 'AskrApp', - anchor: 'askr-app', - signature: 'AskrApp: any', - typeOnly: true, - summary: - 'A configured Askr application, as returned by {@link createAskrApp}.', - members: [ { - name: 'fetch', + name: 'jsonBody', summary: '', - signature: 'fetch(request: Request): Promise<Response>;', + signature: + 'jsonBody(value: Schema, options?: BodyOptions): RouteBuilder<Dependencies>;', }, { - name: 'toOpenApiDocument', + name: 'formBody', summary: '', - signature: 'toOpenApiDocument(): OpenApiDocument;', + signature: + 'formBody(value: Schema, options?: BodyOptions): RouteBuilder<Dependencies>;', }, { - name: 'close', + name: 'multipartBody', summary: '', - signature: 'close(): Promise<void>;', + signature: + 'multipartBody(value: Schema, options?: BodyOptions): RouteBuilder<Dependencies>;', }, - ], - }, - { - name: 'AskrAppApi', - anchor: 'askr-app-api', - signature: 'AskrAppApi: any', - typeOnly: true, - summary: - 'The API group passed to {@link AskrAppApiOptions.define}, extended with a `schema` helper.', - members: [ { - name: 'schema', + name: 'body', summary: '', - signature: 'schema: ApiDefinition<Dependencies>["schema"];', + signature: + 'body(mediaType: string, value: Schema, options?: BodyOptions): RouteBuilder<Dependencies>;', }, - ], - }, - { - name: 'AskrAppApiOptions', - anchor: 'askr-app-api-options', - signature: 'AskrAppApiOptions: any', - typeOnly: true, - summary: - 'Options for the OpenAPI-backed API portion of an {@link AskrApp}.', - members: [ { - name: 'prefix', + name: 'response', summary: '', - signature: 'readonly prefix?: string;', + signature: + 'response(status: number | string, value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'securitySchemes', + name: 'ok', summary: '', signature: - 'readonly securitySchemes?: Readonly<Record<string, SecurityScheme>>;', + 'ok(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'define', + name: 'created', summary: '', signature: - 'readonly define?: (api: AskrAppApi<Dependencies>) => void;', + 'created(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'validateResponses', + name: 'accepted', summary: '', - signature: 'readonly validateResponses?: boolean;', + signature: + 'accepted(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, - ], - }, - { - name: 'AskrAppAuthOptions', - anchor: 'askr-app-auth-options', - signature: 'AskrAppAuthOptions: any', - typeOnly: true, - summary: - 'Authentication configuration for an {@link AskrApp}: request resolver, optional auth routes, and page auth policy.', - members: [ { - name: 'resolver', + name: 'noContent', summary: '', - signature: 'readonly resolver: AuthResolver;', + signature: + 'noContent(options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'routes', + name: 'movedPermanently', summary: '', - signature: 'readonly routes?: AuthRouteOptions<P>;', + signature: + 'movedPermanently(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'pages', + name: 'found', summary: '', - signature: 'readonly pages?: RouteAuthOptions;', + signature: + 'found(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, - ], - }, - { - name: 'AskrAppOptions', - anchor: 'askr-app-options', - signature: 'AskrAppOptions: any', - typeOnly: true, - summary: 'Options for {@link createAskrApp}.', - members: [ { - name: 'name', + name: 'seeOther', summary: '', - signature: 'readonly name: string;', + signature: + 'seeOther(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'version', + name: 'temporaryRedirect', summary: '', - signature: 'readonly version: string;', + signature: + 'temporaryRedirect(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'dependencies', + name: 'permanentRedirect', summary: '', - signature: 'readonly dependencies: Dependencies;', + signature: + 'permanentRedirect(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'pages', + name: 'badRequest', summary: '', - signature: 'readonly pages: RouteRegistry;', + signature: + 'badRequest(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'queryRegistry', + name: 'unauthorized', summary: '', - signature: 'readonly queryRegistry?: ServerQueryRegistry;', + signature: + 'unauthorized(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'api', + name: 'forbidden', summary: '', - signature: 'readonly api?: AskrAppApiOptions<Dependencies>;', + signature: + 'forbidden(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'actions', + name: 'notFound', summary: '', signature: - 'readonly actions?: ActionRegistryOptions & {\n readonly handlers: readonly ActionRegistration<Dependencies>[];\n };', + 'notFound(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'auth', + name: 'conflict', summary: '', - signature: 'readonly auth?: AskrAppAuthOptions<P>;', + signature: + 'conflict(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'middleware', + name: 'unprocessableEntity', summary: '', - signature: 'readonly middleware?: readonly Middleware[];', + signature: + 'unprocessableEntity(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'probes', + name: 'tooManyRequests', summary: '', - signature: 'readonly probes?: ProbeOptions;', + signature: + 'tooManyRequests(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'telemetry', + name: 'methodNotAllowed', summary: '', - signature: 'readonly telemetry?: ServerTelemetry;', + signature: + 'methodNotAllowed(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'onError', + name: 'internalServerError', summary: '', - signature: 'readonly onError?: ServerAppOptions["onError"];', + signature: + 'internalServerError(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'onAccessDenied', + name: 'notImplemented', summary: '', signature: - 'readonly onAccessDenied?: ServerAppOptions["onAccessDenied"];', + 'notImplemented(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, { - name: 'close', + name: 'serviceUnavailable', summary: '', signature: - 'readonly close?: (dependencies: Dependencies) => void | Promise<void>;', + 'serviceUnavailable(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', }, + ], + }, + { + name: 'security', + anchor: 'security', + signature: + 'security: Readonly<{ httpBearer(options?: { bearerFormat?: string; description?: string; }): SecurityScheme; httpBasic(options?: { description?: string; }): SecurityScheme; apiKey(name: string, location?: "header" | "query" | "cookie", options?: { description?: string; }): SecurityScheme; oauth2(flows: Record<string, unknown>, description?: string): SecurityScheme; openIdConnect(openIdConnectUrl: string, description?: string): SecurityScheme; require(name: string, scopes?: readonly string[]): SecurityRequirement; any(...requirements: readonly SecurityRequirement[]): SecurityRequirement; none(): SecurityRequirement; }>', + typeOnly: true, + summary: + "Helpers for building OpenAPI security schemes and requirements, used with\n`ApiGroup.access`/`RouteBuilder.access` to describe an operation's authentication needs.", + }, + { + name: 'SecurityRequirement', + anchor: 'security-requirement', + signature: 'SecurityRequirement: readonly SecurityRequirementObject[]', + typeOnly: true, + summary: + 'An OpenAPI security requirement (a list of alternative scheme+scopes requirements), as built by the {@link security } helpers.', + }, + { + name: 'SecurityScheme', + anchor: 'security-scheme', + signature: 'SecurityScheme: Readonly<Record<string, unknown>>', + typeOnly: true, + summary: + 'An OpenAPI security scheme definition, as built by the {@link security } helpers.', + }, + ], + symbols50: [ + { + name: 'createMcpServer', + anchor: 'create-mcp-server', + signature: + 'createMcpServer: <Dependencies = undefined>(options: McpServerOptions) => McpServer<Dependencies>', + typeOnly: true, + summary: + 'Creates a transport-neutral Model Context Protocol server: register tools, resources,\nresource templates, and prompts, then feed it JSON-RPC messages via `handle` (e.g. from\n{@link registerMcpRoutes }). Manages session negotiation, protocol version selection, and\nlist-changed notifications to subscribed clients.', + tags: { + param: [ + 'options - Server name/version/instructions and pagination settings.', + ], + returns: [ + 'An {@link McpServer} exposing registration methods, notification methods, and `handle`.', + ], + throws: [ + '{TypeError} If `name`/`version` are blank, `pageSize` is invalid, or a duplicate\ntool/resource/template/prompt is registered.', + ], + }, + }, + { + name: 'McpContent', + anchor: 'mcp-content', + signature: 'McpContent: any', + typeOnly: true, + summary: + 'A single piece of MCP content (text, image, resource link, etc.), keyed by `type`.', + members: [ { - name: 'cspNonce', + name: 'type', summary: '', - signature: 'readonly cspNonce?: CspNonceProvider;', + signature: 'type: string;', }, ], }, { - name: 'AskrPageHandlerOptions', - anchor: 'askr-page-handler-options', - signature: 'AskrPageHandlerOptions: any', + name: 'McpContext', + anchor: 'mcp-context', + signature: 'McpContext: any', typeOnly: true, - summary: 'Options for {@link createAskrPageHandler}.', + summary: + 'The per-request context passed to tool/resource/prompt handlers, exposing client info,\nnegotiated protocol/transport details, and `progress`/`log` callbacks for sending\nnotifications back to the client.', members: [ { - name: 'registry', + name: 'dependencies', summary: '', - signature: 'registry: RouteRegistry;', + signature: 'readonly dependencies: Dependencies;', }, { name: 'auth', summary: '', - signature: 'auth?: RouteAuthOptions;', + signature: 'readonly auth: AuthContext;', }, { - name: 'queryRegistry', + name: 'client', summary: '', - signature: 'queryRegistry?: ServerQueryRegistry;', + signature: + 'readonly client: {\n name: string;\n version: string;\n title?: string;\n } | null;', }, { - name: 'seed', + name: 'clientCapabilities', summary: '', - signature: 'seed?: number;', + signature: + 'readonly clientCapabilities: Readonly<Record<string, unknown>>;', }, { - name: 'actions', + name: 'protocolRevision', summary: '', - signature: 'actions?: ActionRegistry;', + signature: 'readonly protocolRevision: McpProtocolRevision;', }, { - name: 'cspNonce', + name: 'transport', summary: '', - signature: 'cspNonce?: CspNonceProvider;', + signature: 'readonly transport: McpTransportKind;', }, - ], - }, - { - name: 'createAskrApp', - anchor: 'create-askr-app', - signature: - 'createAskrApp: <Dependencies, P extends Principal = Principal>(options: AskrAppOptions<Dependencies, P>) => AskrApp', - typeOnly: true, - summary: - 'Assembles a complete Askr application from page routes, an optional OpenAPI-described API,\noptional server actions, and optional authentication — wiring an API router (mounted at\n`options.api?.prefix`, default `/api`), auth routes, and a page-rendering fallback handler\ninto a single {@link ServerApp }-like object.', - tags: { - param: [ - 'options - Pages registry, dependencies, API/auth/action configuration, and lifecycle hooks.', - ], - returns: [ - 'An {@link AskrApp} exposing `fetch`, `toOpenApiDocument`, and `close`.', - ], - throws: [ - '{Error} If `options.api.prefix` is invalid, or collides with the reserved `/auth` prefix.', - ], - }, - }, - { - name: 'createAskrPageHandler', - anchor: 'create-askr-page-handler', - signature: - 'createAskrPageHandler: (options: AskrPageHandlerOptions) => Handler', - typeOnly: true, - summary: - "Creates a catch-all route {@link Handler} that server-renders Askr framework pages: routes\n`GET`/`HEAD` requests through Askr's SSR pipeline, and (if `options.actions` is provided)\ndispatches `POST` requests as form actions, re-rendering the page with validation errors on\nfailure or following a redirect/response on success.", - tags: { - param: [ - 'options - Route registry, auth policy, query registry, action registry, and CSP nonce provider.', - ], - throws: ['{Error} If `options.registry` is not provided.'], - }, - }, - { - name: 'defineServerActions', - anchor: 'define-server-actions', - signature: - 'defineServerActions: <Dependencies>(options: ServerActionsOptions<Dependencies>, ...entries: readonly ActionRegistration<Dependencies>[]) => ActionRegistry', - typeOnly: true, - summary: - 'Builds an {@link ActionRegistry} from a set of {@link ActionEntry}s (via {@link handleAction}),\nwiring up CSRF token issuance/verification (unless `options.csrf` is `false`), submission\nparsing (JSON or form-encoded), input validation, telemetry, and response negotiation\n(redirect vs. JSON envelope) for each action invocation.', - tags: { - param: [ - 'options - Dependencies to inject into handlers, plus CSRF configuration.', - 'entries - The registered actions.', - ], - throws: ['{Error} If two entries share the same action ID.'], - }, - }, - { - name: 'handleAction', - anchor: 'handle-action', - signature: - 'handleAction: <Dependencies, Input extends Record<string, unknown>, Result = unknown>(descriptor: ActionDescriptor<Input>, handler: ActionHandler<Dependencies, Input, Result>) => ActionEntry<Dependencies, Input, Result>', - typeOnly: true, - summary: - 'Pairs an action descriptor (its ID and input schema) with a typed handler, ready to pass to\n{@link defineServerActions}.', - }, - { - name: 'ServerActionsOptions', - anchor: 'server-actions-options', - signature: 'ServerActionsOptions: any', - typeOnly: true, - summary: 'Options for {@link defineServerActions }.', - members: [ { - name: 'dependencies', + name: 'sessionId', summary: '', - signature: 'readonly dependencies: Dependencies;', + signature: 'readonly sessionId?: string;', + }, + { + name: 'signal', + summary: '', + signature: 'readonly signal: AbortSignal;', }, - ], - }, - { - name: 'translateAskrPageResult', - anchor: 'translate-askr-page-result', - signature: - 'translateAskrPageResult: (result: RenderRouteRequestResult, context: ServerContext, status?: number, cspNonce?: string) => Promise<Response>', - typeOnly: true, - }, - ], - symbols45: [ - { - name: 'AuthCredentials', - anchor: 'auth-credentials', - signature: 'AuthCredentials: any', - typeOnly: true, - summary: - 'Email/password credentials submitted to the register or authenticate endpoints.', - members: [ { - name: 'email', + name: 'progress', summary: '', - signature: 'email: string;', + signature: + 'progress(progress: number, total?: number, message?: string): void | Promise<void>;', }, { - name: 'password', + name: 'log', summary: '', - signature: 'password: string;', + signature: + 'log(level: McpLogLevel, data: unknown, logger?: string): void | Promise<void>;', }, ], }, { - name: 'AuthRouteError', - anchor: 'auth-route-error', - signature: 'AuthRouteError: typeof AuthRouteError', - typeOnly: false, - summary: - 'Error thrown from `register`/`authenticate`/etc. callbacks to short-circuit an auth route with a specific status.', + name: 'McpPromptOptions', + anchor: 'mcp-prompt-options', + signature: 'McpPromptOptions: any', + typeOnly: true, + summary: 'Options for registering a prompt via {@link McpServer.prompt}.', members: [ { - name: 'status', + name: 'arguments', summary: '', - signature: 'readonly status: 401 | 409 | 429;', + signature: 'arguments?: Arguments;', }, ], }, { - name: 'AuthRouteOptions', - anchor: 'auth-route-options', - signature: 'AuthRouteOptions: any', + name: 'McpRequestEnvironment', + anchor: 'mcp-request-environment', + signature: 'McpRequestEnvironment: any', typeOnly: true, - summary: 'Configuration for {@link registerAuthRoutes}.', + summary: + 'Transport-provided context for a single inbound MCP message, passed to\n{@link McpServer.handle}. `send` (if provided) delivers server-to-client notifications for\npush-capable transports.', members: [ { - name: 'issuer', - summary: '', - signature: 'issuer: TokenIssuer<P>;', - }, - { - name: 'cookie', - summary: '', - signature: 'cookie: CookieOptions & {\n name: string;\n };', - }, - { - name: 'principalSchema', + name: 'dependencies', summary: '', - signature: 'principalSchema: Schema;', + signature: 'dependencies: Dependencies;', }, { - name: 'register', + name: 'auth', summary: '', - signature: - 'register(context: ServerContext, credentials: AuthCredentials): P | Promise<P>;', + signature: 'auth: AuthContext;', }, { - name: 'authenticate', + name: 'transport', summary: '', - signature: - 'authenticate(context: ServerContext, credentials: AuthCredentials): P | null | Promise<P | null>;', + signature: 'transport: McpTransportKind;', }, { - name: 'allowAttempt', + name: 'sessionId', summary: '', - signature: - 'allowAttempt(context: ServerContext, operation: "register" | "authenticate", normalizedEmail: string): boolean | Promise<boolean>;', + signature: 'sessionId?: string;', }, { - name: 'revoke', + name: 'signal', summary: '', - signature: 'revoke?(context: ServerContext): void | Promise<void>;', + signature: 'signal?: AbortSignal;', }, { - name: 'redirect', + name: 'send', summary: '', - signature: - 'redirect?: (context: ServerContext, operation: "register" | "authenticate", principal: P) => string | undefined;', - }, - ], - }, - { - name: 'registerAuthRoutes', - anchor: 'register-auth-routes', - signature: - 'registerAuthRoutes: <Dependencies, P extends Principal>(api: Pick<ApiDefinition<Dependencies>, "group">, options: AuthRouteOptions<P>) => void', - typeOnly: false, - summary: - 'Registers a standard set of authentication routes (`POST /auth/v1/accounts`,\n`GET/POST /auth/v1/session`, `DELETE /auth/v1/session`) on an OpenAPI-style API/group,\nhandling registration, login, session lookup, and logout with CSRF protection via a\nsame-origin `Origin` header check, per-attempt rate limiting, and cookie-based token storage.', - tags: { - param: [ - 'api - The API or group to register routes on (only its `group` method is used).', - 'options - Issuer, cookie configuration, principal schema, and register/authenticate/\nallowAttempt/revoke/redirect callbacks.', - ], - }, - }, - { - name: 'safeRedirect', - anchor: 'safe-redirect', - signature: - 'safeRedirect: (fallback: string, options?: SafeRedirectOptions) => (value: unknown) => string', - typeOnly: false, - summary: - 'Creates a validator that resolves an untrusted redirect target to a safe, same-origin,\nrelative path — or to `fallback` if the value is unsafe (absolute, protocol-relative,\ncontains a scheme, control characters, `..` traversal, backslashes, or an unwanted hash).', - tags: { - param: [ - 'fallback - The safe path to use when the requested value is not itself safe. Must\nitself pass the safety check, or this function throws.', - 'options - Redirect validation options.', - ], - returns: [ - 'A function `(value) => path` that returns `value` if safe, otherwise `fallback`.', - ], - throws: ['{Error} If `fallback` is not itself a safe path.'], - }, - }, - { - name: 'SafeRedirectOptions', - anchor: 'safe-redirect-options', - signature: 'SafeRedirectOptions: any', - typeOnly: true, - summary: 'Options for {@link safeRedirect}.', - members: [ - { - name: 'allowHash', - summary: - 'Allow redirect targets that include a URL fragment (`#...`). Defaults to disallowed.', - signature: 'readonly allowHash?: boolean;', + signature: 'send?(message: unknown): void | Promise<void>;', }, - ], - }, - { - name: 'TokenIssuer', - anchor: 'token-issuer', - signature: 'TokenIssuer: any', - typeOnly: true, - summary: - 'Issues auth tokens for a principal, used by {@link registerAuthRoutes} to mint session tokens.', - members: [ { - name: 'issue', + name: 'supportsPush', summary: '', - signature: - 'issue(principal: Omit<P, "id"> & {\n subject: string;\n }): Promise<string>;', + signature: 'supportsPush?: boolean;', }, ], }, - ], - symbols46: [ { - name: 'ApiDefinition', - anchor: 'api-definition', - signature: 'ApiDefinition: any', + name: 'McpResourceOptions', + anchor: 'mcp-resource-options', + signature: 'McpResourceOptions: any', typeOnly: true, summary: - 'The root API definition returned by {@link createApi }: a top-level {@link ApiGroup} that can\nalso register reusable named schemas, build a concrete {@link Router} from its routes, and\nrender an {@link OpenApiDocument}.', + 'Options for registering a resource via {@link McpServer.resource}.', members: [ { - name: 'schema', - summary: '', - signature: - 'schema<const Value extends Schema>(name: string, value: Value): Value;', - }, - { - name: 'createRouter', + name: 'name', summary: '', - signature: - 'createRouter: [Dependencies] extends [undefined] ? (dependencies?: undefined) => Router : (dependencies: Dependencies) => Router;', + signature: 'name?: string;', }, { - name: 'toOpenApiDocument', + name: 'mimeType', summary: '', - signature: 'toOpenApiDocument(): OpenApiDocument;', + signature: 'mimeType?: string;', }, ], }, { - name: 'ApiGroup', - anchor: 'api-group', - signature: 'ApiGroup: any', + name: 'McpServer', + anchor: 'mcp-server', + signature: 'McpServer: any', typeOnly: true, summary: - 'A prefixed group of routes within an {@link ApiDefinition}, supporting nested sub-groups,\nshared tags/middleware/auth/params, and per-HTTP-method route registration.', + 'A Model Context Protocol server, as created by {@link createMcpServer }: register tools,\nresources, resource templates, and prompts; push list-changed notifications; and dispatch\ninbound JSON-RPC messages via `handle`.', members: [ { - name: 'tags', - summary: '', - signature: 'tags(...values: string[]): ApiGroup<Dependencies>;', - }, - { - name: 'use', - summary: '', - signature: - 'use(...middleware: Middleware[]): ApiGroup<Dependencies>;', - }, - { - name: 'access', - summary: '', - signature: - 'access(requirement: AuthRequirement, security: SecurityRequirement): ApiGroup<Dependencies>;', - }, - { - name: 'pathParam', - summary: '', - signature: - 'pathParam(name: string, value: Schema, options?: ParameterOptions): ApiGroup<Dependencies>;', - }, - { - name: 'queryParam', + name: 'tool', summary: '', signature: - 'queryParam(name: string, value: Schema, options?: ParameterOptions): ApiGroup<Dependencies>;', + 'tool<const Name extends string, Input extends ObjectSchema, Output extends Schema | undefined = undefined>(name: Name, options: McpToolOptions<Input, Output>, handler: (context: McpContext<Dependencies>, input: InferSchema<Input>) => McpToolResult<Output> | Promise<McpToolResult<Output>>): McpServer<Dependencies>;', }, { - name: 'headerParam', + name: 'resource', summary: '', signature: - 'headerParam(name: string, value: Schema, options?: ParameterOptions): ApiGroup<Dependencies>;', + 'resource(uri: string, options: McpResourceOptions, handler: (context: McpContext<Dependencies>, uri: URL) => McpContent | readonly McpContent[] | Promise<McpContent | readonly McpContent[]>): McpServer<Dependencies>;', }, { - name: 'cookieParam', + name: 'resourceTemplate', summary: '', signature: - 'cookieParam(name: string, value: Schema, options?: ParameterOptions): ApiGroup<Dependencies>;', + 'resourceTemplate(template: string, options: McpResourceOptions & {\n complete?: (argument: string, value: string) => readonly string[] | Promise<readonly string[]>;\n }, handler: (context: McpContext<Dependencies>, uri: URL, variables: Readonly<Record<string, string>>) => McpContent | readonly McpContent[] | Promise<McpContent | readonly McpContent[]>): McpServer<Dependencies>;', }, { - name: 'group', + name: 'prompt', summary: '', signature: - 'group<const Child extends string>(prefix: Child): ApiGroup<Dependencies, JoinPath<Prefix, Child>>;', - }, - { - name: 'get', - summary: '', - signature: 'get: ApiMethod<Dependencies, Prefix>;', - }, - { - name: 'post', - summary: '', - signature: 'post: ApiMethod<Dependencies, Prefix>;', - }, - { - name: 'put', - summary: '', - signature: 'put: ApiMethod<Dependencies, Prefix>;', + 'prompt<const Name extends string, Arguments extends ObjectSchema>(name: Name, options: McpPromptOptions<Arguments>, handler: (context: McpContext<Dependencies>, args: InferSchema<Arguments>) => {\n description?: string;\n messages: readonly unknown[];\n } | Promise<{\n description?: string;\n messages: readonly unknown[];\n }>): McpServer<Dependencies>;', }, { - name: 'patch', + name: 'notifyToolsChanged', summary: '', - signature: 'patch: ApiMethod<Dependencies, Prefix>;', + signature: 'notifyToolsChanged(): Promise<void>;', }, { - name: 'delete', + name: 'notifyResourcesChanged', summary: '', - signature: 'delete: ApiMethod<Dependencies, Prefix>;', + signature: 'notifyResourcesChanged(): Promise<void>;', }, { - name: 'options', + name: 'notifyPromptsChanged', summary: '', - signature: 'options: ApiMethod<Dependencies, Prefix>;', + signature: 'notifyPromptsChanged(): Promise<void>;', }, { - name: 'head', + name: 'handle', summary: '', - signature: 'head: ApiMethod<Dependencies, Prefix>;', + signature: + 'handle(message: unknown, environment: McpRequestEnvironment<Dependencies>): Promise<unknown | undefined>;', }, { - name: 'trace', + name: 'terminateSession', summary: '', - signature: 'trace: ApiMethod<Dependencies, Prefix>;', + signature: 'terminateSession(sessionId: string): void;', }, ], }, { - name: 'ApiHandler', - anchor: 'api-handler', - signature: - 'ApiHandler: {\n bivarianceHack(context: ServerContext<RouteParams>, dependencies: Dependencies): Response | Promise<Response>;\n}["bivarianceHack"]', - typeOnly: true, - summary: - 'A plain route handler registered via an {@link ApiGroup } method, receiving the resolved `dependencies`.', - }, - { - name: 'ApiInfo', - anchor: 'api-info', - signature: 'ApiInfo: any', + name: 'McpServerOptions', + anchor: 'mcp-server-options', + signature: 'McpServerOptions: any', typeOnly: true, - summary: - 'The OpenAPI `info` object: title, version, and descriptive metadata for the API.', + summary: 'Options for {@link createMcpServer }.', members: [ { - name: 'title', + name: 'name', summary: '', - signature: 'readonly title: string;', + signature: 'name: string;', }, { name: 'version', summary: '', - signature: 'readonly version: string;', - }, - { - name: 'summary', - summary: '', - signature: 'readonly summary?: string;', - }, - { - name: 'description', - summary: '', - signature: 'readonly description?: string;', + signature: 'version: string;', }, { - name: 'termsOfService', + name: 'title', summary: '', - signature: 'readonly termsOfService?: string;', + signature: 'title?: string;', }, { - name: 'contact', + name: 'instructions', summary: '', - signature: 'readonly contact?: ContactObject;', + signature: 'instructions?: string;', }, { - name: 'license', + name: 'pageSize', summary: '', - signature: 'readonly license?: LicenseObject;', + signature: 'pageSize?: number;', }, ], }, { - name: 'ApiInput', - anchor: 'api-input', - signature: 'ApiInput: any', + name: 'McpSessionStore', + anchor: 'mcp-session-store', + signature: 'McpSessionStore: any', typeOnly: true, summary: - "Declares the schemas for a route's inputs (path params, query, headers, body).", + 'Pluggable backing store for stateful MCP session IDs, used by the HTTP transport.', members: [ { - name: 'params', - summary: '', - signature: 'readonly params?: ObjectSchema;', - }, - { - name: 'query', + name: 'create', summary: '', - signature: 'readonly query?: ObjectSchema;', + signature: 'create(id: string): void | Promise<void>;', }, { - name: 'headers', + name: 'has', summary: '', - signature: 'readonly headers?: ObjectSchema;', + signature: 'has(id: string): boolean | Promise<boolean>;', }, { - name: 'body', + name: 'delete', summary: '', - signature: 'readonly body?: ApiBodyInput;', + signature: 'delete(id: string): boolean | Promise<boolean>;', }, ], }, { - name: 'ApiOperation', - anchor: 'api-operation', - signature: 'ApiOperation: any', + name: 'McpToolOptions', + anchor: 'mcp-tool-options', + signature: 'McpToolOptions: any', typeOnly: true, - summary: - 'A schema-typed route registered via an {@link ApiGroup } method: declares its `input` schemas\n(validated and bound before `handler` runs, with results typed via {@link InferApiInput}) and\noptional extra `documentation` for parameters/body not otherwise inferable.', + summary: 'Options for registering a tool via {@link McpServer.tool}.', members: [ { name: 'input', summary: '', - signature: 'readonly input?: Input;', - }, - { - name: 'documentation', - summary: '', - signature: 'readonly documentation?: InputDocumentation;', - }, - { - name: 'handler', - summary: '', - signature: - 'readonly handler: (context: ServerContext<RouteParams>, input: InferApiInput<Input>, dependencies: Dependencies) => Response | Promise<Response>;', - }, - ], - }, - { - name: 'ApiOptions', - anchor: 'api-options', - signature: 'ApiOptions: any', - typeOnly: true, - summary: 'Options for {@link createApi }.', - members: [ - { - name: 'info', - summary: '', - signature: 'readonly info: ApiInfo;', - }, - { - name: 'metadata', - summary: - 'Infer registration-safe metadata, or require fully authored public contracts.', - signature: 'readonly metadata?: "inferred" | "authored";', - }, - { - name: 'servers', - summary: '', - signature: 'readonly servers?: readonly ServerObject[];', - }, - { - name: 'externalDocs', - summary: '', - signature: 'readonly externalDocs?: ExternalDocumentationObject;', + signature: 'input?: Input;', }, { - name: 'securitySchemes', + name: 'output', summary: '', - signature: - 'readonly securitySchemes?: Readonly<Record<string, SecurityScheme>>;', - }, - { - name: 'validateResponses', - summary: - 'Validate documented response bodies only when explicitly enabled outside production.', - signature: 'readonly validateResponses?: boolean;', + signature: 'output?: Output;', }, ], }, { - name: 'BodyOptions', - anchor: 'body-options', - signature: 'BodyOptions: any', + name: 'McpToolResult', + anchor: 'mcp-tool-result', + signature: + 'McpToolResult: {\n content?: readonly McpContent[];\n structuredContent?: Output extends Schema ? InferSchema<Output> : unknown;\n isError?: boolean;\n}', typeOnly: true, summary: - 'Metadata for a request body, used to enrich the generated OpenAPI document.', - members: [ - { - name: 'required', - summary: '', - signature: 'required?: boolean;', - }, - { - name: 'description', - summary: '', - signature: 'description?: string;', - }, - { - name: 'examples', - summary: '', - signature: 'examples?: Record<string, unknown>;', - }, - ], + 'The result returned by a tool handler: content blocks and/or a typed structured result.', }, { - name: 'createApi', - anchor: 'create-api', + name: 'registerMcpRoutes', + anchor: 'register-mcp-routes', signature: - 'createApi: <Dependencies = undefined>(options: ApiOptions) => ApiDefinition<Dependencies>', + 'registerMcpRoutes: <Dependencies>(router: Router, path: string, mcp: McpServer<Dependencies>, options: McpHttpOptions<Dependencies>) => Router', typeOnly: true, summary: - 'Creates an OpenAPI-aware {@link ApiDefinition}: a schema-typed route builder that records\noperation metadata and input/response schemas as routes are registered, then can render the\nroutes as a concrete {@link Router } (`createRouter`) or as an OpenAPI document\n(`toOpenApiDocument`).', + 'Registers the streamable-HTTP transport for an {@link McpServer} on a router: `POST` for\nJSON-RPC requests (with optional stateful session creation), `GET` for the Server-Sent\nEvents notification stream, and `DELETE` for session termination. Validates the `Origin` and\n`Host` headers against allowlists, enforces a max request size, and optionally serves\nOAuth protected-resource metadata.', tags: { param: [ - 'options - API-level metadata (title, version, servers, etc.) and validation settings.', + 'router - The router to register routes on.', + 'path - The MCP endpoint path.', + 'mcp - The MCP server instance to dispatch messages to.', + 'options - Origin/host allowlists, statefulness, session store, and size/timing limits.', + ], + returns: ['The same `router`, for chaining.'], + throws: [ + '{TypeError} If `heartbeatInterval`, `sessionTtlMs`, or `maxSessions` are invalid.', ], - returns: ['The root {@link ApiDefinition}.'], }, }, + ], + symbols51: [ { - name: 'InferSchema', - anchor: 'infer-schema', - signature: 'InferSchema: T extends Schema<infer Value> ? Value : never', - typeOnly: true, - summary: 'Infers the parsed value type of a {@link Schema}.', - }, - { - name: 'OpenApiDocument', - anchor: 'open-api-document', - signature: 'OpenApiDocument: any', + name: 'AdapterConformanceError', + anchor: 'adapter-conformance-error', + signature: 'AdapterConformanceError: typeof AdapterConformanceError', typeOnly: true, summary: - 'A complete OpenAPI 3.1 document, as produced by {@link ApiDefinition.toOpenApiDocument }.', + 'A failed adapter-conformance guarantee with a stable machine-readable {@link code}.', members: [ { - name: 'openapi', + name: 'code', summary: '', - signature: 'readonly openapi: "3.1.2";', + signature: 'readonly code: AdapterConformanceErrorCode;', }, { - name: 'info', + name: 'name', summary: '', - signature: 'readonly info: ApiInfo;', - }, - { - name: 'servers', - summary: '', - signature: 'readonly servers?: readonly ServerObject[];', - }, - { - name: 'paths', - summary: '', - signature: - 'readonly paths: Readonly<Record<string, PathItemObject>>;', - }, - { - name: 'components', - summary: '', - signature: 'readonly components: ComponentsObject;', - }, - { - name: 'externalDocs', - summary: '', - signature: 'readonly externalDocs?: ExternalDocumentationObject;', + signature: 'readonly name = "AdapterConformanceError";', }, ], }, { - name: 'ParameterOptions', - anchor: 'parameter-options', - signature: 'ParameterOptions: any', + name: 'runAdapterConformance', + anchor: 'run-adapter-conformance', + signature: + 'runAdapterConformance: (exercises: AdapterConformanceExercises, options?: AdapterConformanceOptions) => Promise<Readonly<AdapterConformanceReport>>', typeOnly: true, summary: - 'Metadata for a path/query/header/cookie parameter, used to enrich the generated OpenAPI document.', - members: [ - { - name: 'description', - summary: '', - signature: 'description?: string;', - }, - { - name: 'required', - summary: '', - signature: 'required?: boolean;', - }, - { - name: 'deprecated', - summary: '', - signature: 'deprecated?: boolean;', - }, - { - name: 'example', - summary: '', - signature: 'example?: unknown;', - }, - ], + 'Runs reusable adapter guardrails against real-transport exercises supplied by the adapter.\nValidation errors throw synchronously; runtime failures reject with {@link AdapterConformanceError}.\nExercise callbacks must honor the cleanup signal and close any sockets/servers they own.', + }, + ], + symbols52: [ + { + name: 'createTestClient', + anchor: 'create-test-client', + signature: + 'createTestClient: (target: Injectable, options?: TestClientOptions) => TestClient', + typeOnly: false, + summary: + 'Create a {@link TestClient} bound to a target for repeated request injection.\n\nThe returned client applies shared defaults (base URL, headers, cookie jar,\nredirect behavior) to every request made through it. Redirects are manual\nunless `redirect: "follow"` is supplied.', + tags: { + param: [ + 'target - The {@link Injectable} handler or fetch-compatible object.', + 'options - Default options applied to every request made by this client.', + ], + returns: [ + 'A {@link TestClient} with `request`, `get`, `post`, and other HTTP-method helpers.', + ], + example: [ + 'const client = createTestClient(app, { baseUrl: "https://example.com", cookies: true });\nconst response = await client.get("/users");', + ], + }, + }, + { + name: 'createTestCookieJar', + anchor: 'create-test-cookie-jar', + signature: 'createTestCookieJar: () => TestCookieJar', + typeOnly: false, + summary: + 'Create an in-memory {@link TestCookieJar} backed by `tough-cookie`, suitable\nfor use as the `cookies` option of a {@link TestClient}.', + tags: { + returns: [ + 'A cookie jar that persists cookies across injected requests and\nenforces standard cookie-prefix security.', + ], + }, }, { - name: 'ResponseOptions', - anchor: 'response-options', - signature: 'ResponseOptions: any', + name: 'Form', + anchor: 'form', + signature: + 'Form: URLSearchParams | Iterable<readonly [string, FormValue]> | Record<string, FormValue | readonly FormValue[] | undefined>', typeOnly: true, summary: - 'Metadata for a response, used to enrich the generated OpenAPI document.', - members: [ - { - name: 'description', - summary: '', - signature: 'description?: string;', - }, - { - name: 'mediaType', - summary: '', - signature: 'mediaType?: string;', - }, - { - name: 'headers', - summary: '', - signature: 'headers?: Record<string, unknown>;', - }, - { - name: 'examples', - summary: '', - signature: 'examples?: Record<string, unknown>;', - }, - ], + 'URL-encoded form body data, accepted as `URLSearchParams`, an iterable of entries, or a plain record.', }, { - name: 'RouteBuilder', - anchor: 'route-builder', - signature: 'RouteBuilder: any', + name: 'inject', + anchor: 'inject', + signature: + 'inject: { (target: Injectable, request: Request, options?: Pick<InjectOptions, "maxRedirects">): Promise<Response>; (target: Injectable, input: string | URL, options?: InjectOptions): Promise<Response>; }', + typeOnly: false, + summary: + 'Inject a single request into a target and return the resulting response,\nfollowing redirects up to `maxRedirects` hops.\nInject a request built from a path/URL and options into a target and return\nthe resulting response, following redirects up to `maxRedirects` hops.', + tags: { + param: [ + 'target - The {@link Injectable} handler or fetch-compatible object.', + 'request - An unconsumed `Request`; each dispatch receives a clone.', + 'options - Only `maxRedirects` is honored when a `Request` is passed directly.', + 'target - The {@link Injectable} handler or fetch-compatible object.', + 'input - The request path or URL, resolved against `options.baseUrl`.', + 'options - Request options such as method, headers, query, and body.', + ], + returns: [ + 'The final `Response` after any redirects have been followed.', + 'The final `Response` after any redirects have been followed.', + ], + example: [ + 'const response = await inject(app, "/users", { method: "GET" });', + ], + }, + }, + { + name: 'Injectable', + anchor: 'injectable', + signature: 'Injectable: RequestTarget | RequestHandler', typeOnly: true, summary: - "Fluent builder for describing a single route's OpenAPI operation: metadata (operation ID,\nsummary, tags), request inputs (path/query/header/cookie params and body), and possible\nresponses (both status-coded shorthand methods like `ok`/`notFound` and the generic `response`).", + 'Anything that can receive an injected test request: a {@link RequestTarget} or a {@link RequestHandler}.', + }, + { + name: 'InjectOptions', + anchor: 'inject-options', + signature: 'InjectOptions: GetHeadOptions | BodyRequestOptions', + typeOnly: true, + summary: + 'Options accepted when injecting a request, covering both body-less and body-carrying methods.', + }, + { + name: 'Query', + anchor: 'query', + signature: + 'Query: URLSearchParams | Iterable<readonly [string, QueryValue]> | Record<string, QueryValue | readonly QueryValue[] | undefined>', + typeOnly: true, + summary: + 'Query string parameters, accepted as `URLSearchParams`, an iterable of entries, or a plain record.', + }, + { + name: 'TestClient', + anchor: 'test-client', + signature: 'TestClient: any', + typeOnly: true, + summary: + 'A reusable HTTP client that injects requests into a target and follows redirects.', members: [ { - name: 'operationId', - summary: '', - signature: 'operationId(value: string): RouteBuilder<Dependencies>;', - }, - { - name: 'summary', - summary: '', - signature: 'summary(value: string): RouteBuilder<Dependencies>;', - }, - { - name: 'description', - summary: '', - signature: 'description(value: string): RouteBuilder<Dependencies>;', - }, - { - name: 'tags', - summary: '', - signature: 'tags(...values: string[]): RouteBuilder<Dependencies>;', - }, - { - name: 'deprecated', - summary: '', - signature: 'deprecated(value?: boolean): RouteBuilder<Dependencies>;', - }, - { - name: 'externalDocs', - summary: '', - signature: - 'externalDocs(url: string, description?: string): RouteBuilder<Dependencies>;', - }, - { - name: 'use', - summary: '', - signature: - 'use(...middleware: Middleware[]): RouteBuilder<Dependencies>;', - }, - { - name: 'maxRequestBytes', - summary: '', - signature: - 'maxRequestBytes(bytes: number): RouteBuilder<Dependencies>;', - }, - { - name: 'access', - summary: '', - signature: - 'access(requirement: AuthRequirement, security: SecurityRequirement): RouteBuilder<Dependencies>;', - }, - { - name: 'pathParam', - summary: '', - signature: - 'pathParam(name: string, value: Schema, options?: ParameterOptions): RouteBuilder<Dependencies>;', - }, - { - name: 'queryParam', - summary: '', - signature: - 'queryParam(name: string, value: Schema, options?: ParameterOptions): RouteBuilder<Dependencies>;', - }, - { - name: 'headerParam', - summary: '', - signature: - 'headerParam(name: string, value: Schema, options?: ParameterOptions): RouteBuilder<Dependencies>;', - }, - { - name: 'cookieParam', - summary: '', - signature: - 'cookieParam(name: string, value: Schema, options?: ParameterOptions): RouteBuilder<Dependencies>;', - }, - { - name: 'jsonBody', + name: 'cookies', summary: '', - signature: - 'jsonBody(value: Schema, options?: BodyOptions): RouteBuilder<Dependencies>;', + signature: 'readonly cookies?: TestCookieJar;', }, { - name: 'formBody', + name: 'request', summary: '', signature: - 'formBody(value: Schema, options?: BodyOptions): RouteBuilder<Dependencies>;', + 'request(path: string | URL, options?: InjectOptions): Promise<Response>;', }, { - name: 'multipartBody', + name: 'get', summary: '', signature: - 'multipartBody(value: Schema, options?: BodyOptions): RouteBuilder<Dependencies>;', + 'get(path: string | URL, options?: Omit<GetHeadOptions, "method">): Promise<Response>;', }, { - name: 'body', + name: 'head', summary: '', signature: - 'body(mediaType: string, value: Schema, options?: BodyOptions): RouteBuilder<Dependencies>;', + 'head(path: string | URL, options?: Omit<GetHeadOptions, "method">): Promise<Response>;', }, { - name: 'response', + name: 'post', summary: '', signature: - 'response(status: number | string, value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + 'post(path: string | URL, options?: Omit<BodyRequestOptions, "method">): Promise<Response>;', }, { - name: 'ok', + name: 'put', summary: '', signature: - 'ok(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + 'put(path: string | URL, options?: Omit<BodyRequestOptions, "method">): Promise<Response>;', }, { - name: 'created', + name: 'patch', summary: '', signature: - 'created(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + 'patch(path: string | URL, options?: Omit<BodyRequestOptions, "method">): Promise<Response>;', }, { - name: 'accepted', + name: 'delete', summary: '', signature: - 'accepted(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + 'delete(path: string | URL, options?: Omit<BodyRequestOptions, "method">): Promise<Response>;', }, { - name: 'noContent', + name: 'options', summary: '', signature: - 'noContent(options?: ResponseOptions): RouteBuilder<Dependencies>;', + 'options(path: string | URL, options?: Omit<BodyRequestOptions, "method">): Promise<Response>;', }, + ], + }, + { + name: 'TestClientOptions', + anchor: 'test-client-options', + signature: 'TestClientOptions: any', + typeOnly: true, + summary: 'Options for constructing a {@link TestClient}.', + members: [ { - name: 'movedPermanently', + name: 'baseUrl', summary: '', - signature: - 'movedPermanently(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + signature: 'baseUrl?: string | URL;', }, { - name: 'found', + name: 'headers', summary: '', - signature: - 'found(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + signature: 'headers?: HeadersInit;', }, { - name: 'seeOther', - summary: '', - signature: - 'seeOther(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + name: 'cookies', + summary: + 'Enable an automatically managed cookie jar (`true`), or supply an existing {@link TestCookieJar}.', + signature: 'cookies?: true | TestCookieJar;', }, { - name: 'temporaryRedirect', + name: 'redirect', summary: '', - signature: - 'temporaryRedirect(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + signature: 'redirect?: RequestRedirect;', }, { - name: 'permanentRedirect', - summary: '', - signature: - 'permanentRedirect(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + name: 'maxRedirects', + summary: 'Non-negative safe integer; defaults to 10.', + signature: 'maxRedirects?: number;', }, + ], + }, + { + name: 'TestCookie', + anchor: 'test-cookie', + signature: 'TestCookie: any', + typeOnly: true, + summary: 'A cookie as read back from a {@link TestCookieJar}.', + members: [ { - name: 'badRequest', + name: 'name', summary: '', - signature: - 'badRequest(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + signature: 'name: string;', }, { - name: 'unauthorized', + name: 'value', summary: '', - signature: - 'unauthorized(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + signature: 'value: string;', }, { - name: 'forbidden', + name: 'domain', summary: '', - signature: - 'forbidden(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + signature: 'domain?: string;', }, { - name: 'notFound', + name: 'path', summary: '', - signature: - 'notFound(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + signature: 'path?: string;', }, { - name: 'conflict', + name: 'expires', summary: '', - signature: - 'conflict(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + signature: 'expires?: Date | "Infinity";', }, { - name: 'unprocessableEntity', + name: 'httpOnly', summary: '', - signature: - 'unprocessableEntity(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + signature: 'httpOnly: boolean;', }, { - name: 'tooManyRequests', + name: 'secure', summary: '', - signature: - 'tooManyRequests(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + signature: 'secure: boolean;', }, { - name: 'methodNotAllowed', + name: 'sameSite', summary: '', - signature: - 'methodNotAllowed(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + signature: 'sameSite?: "strict" | "lax" | "none";', }, + ], + }, + { + name: 'TestCookieJar', + anchor: 'test-cookie-jar', + signature: 'TestCookieJar: any', + typeOnly: true, + summary: + 'A cookie jar used to persist and replay cookies across injected requests.', + members: [ { - name: 'internalServerError', + name: 'setCookie', summary: '', signature: - 'internalServerError(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + 'setCookie(cookie: string, url: string | URL): Promise<void>;', }, { - name: 'notImplemented', + name: 'getCookies', summary: '', - signature: - 'notImplemented(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + signature: 'getCookies(url: string | URL): Promise<TestCookie[]>;', }, { - name: 'serviceUnavailable', + name: 'clear', summary: '', - signature: - 'serviceUnavailable(value?: Schema, options?: ResponseOptions): RouteBuilder<Dependencies>;', + signature: 'clear(): Promise<void>;', }, ], }, + ], + symbols53: [], + symbols54: [ { - name: 'schema', - anchor: 'schema-2', + name: 'Accordion', + anchor: 'accordion', + signature: 'Accordion: (props: AccordionProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a part of `accordion`.', + }, + { + name: 'AccordionContent', + anchor: 'accordion-content', signature: - 'schema: Readonly<{ string: typeof string; uuid: (options?: StringOptions) => Schema<string>; email: (options?: StringOptions) => Schema<string>; uri: (options?: StringOptions) => Schema<string>; date: (options?: StringOptions) => Schema<string>; dateTime: (options?: StringOptions) => Schema<string>; byte: (options?: StringOptions) => Schema<string>; binary: (options?: StringOptions) => Schema<string>; number: (options?: NumberOptions) => Schema<number>; integer: (options?: NumberOptions) => Schema<number>; boolean: (options?: CommonOptions) => Schema<boolean>; null: (options?: CommonOptions) => Schema<null>; object: typeof object; array: typeof array; record: <T>(values: Schema<T>, options?: CommonOptions) => ObjectSchema<Record<string, T>>; enum: <const T extends readonly (string | number | boolean)[]>(values: T, options?: CommonOptions) => Schema<T[number]>; literal: <const T extends string | number | boolean | null>(value: T, options?: CommonOptions) => Schema<T>; optional: <T>(value: Schema<T>) => OptionalSchema<T>; nullable: <T extends Schema>(value: T) => NullableSchema<T>; oneOf: <const T extends readonly Schema[]>(...values: T) => Schema<InferSchema<T[number]>>; anyOf: <const T extends readonly Schema[]>(...values: T) => Schema<InferSchema<T[number]>>; allOf: <const T extends readonly Schema[]>(...values: T) => Schema<UnionToIntersection<InferSchema<T[number]>>>; raw: <T>(jsonSchema: JsonSchema, safeParse: (value: unknown) => SafeParseResult<T>) => Schema<T>; }>', + 'AccordionContent: { (props: AccordionContentProps): JSX.Element | null; (props: AccordionContentAsChildProps): JSX.Element | null; }', typeOnly: true, summary: - 'The public schema builder namespace: create executable schemas whose {@link Schema.safeParse}\nvalidates a value and whose `jsonSchema` field is a deterministic JSON Schema (draft 2020-12)\nprojection suitable for OpenAPI documents.', - tags: { - example: [ - 'const user = schema.object({ id: schema.uuid(), name: schema.string({ minLength: 1 }) });\nconst result = user.safeParse({ id: "...", name: "Ada" });', - ], - }, + 'Renders the `accordion-content` part of `accordion` with `role="region"`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'Schema', - anchor: 'schema', - signature: 'Schema: any', + name: 'AccordionHeader', + anchor: 'accordion-header', + signature: + 'AccordionHeader: { (props: AccordionHeaderProps): JSX.Element; (props: AccordionHeaderAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'An executable schema: carries its JSON Schema projection and a runtime parser.', - members: [ - { - name: 'jsonSchema', - summary: - 'The deterministic JSON Schema (draft 2020-12) projection of this schema.', - signature: 'readonly jsonSchema: JsonSchema;', - }, - { - name: '__type', - summary: 'Phantom type marker only; never set at runtime.', - signature: 'readonly __type?: T;', - }, - { - name: 'safeParse', - summary: - 'Validates `value`, returning either the parsed data or a list of issues.', - signature: 'safeParse(value: unknown): SafeParseResult<T>;', - }, - ], + 'Renders the `accordion-header` part of `accordion`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'security', - anchor: 'security', + name: 'AccordionItem', + anchor: 'accordion-item', + signature: 'AccordionItem: (props: AccordionItemProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the `accordion-item` part of `accordion`.', + }, + { + name: 'AccordionTrigger', + anchor: 'accordion-trigger', signature: - 'security: Readonly<{ httpBearer(options?: { bearerFormat?: string; description?: string; }): SecurityScheme; httpBasic(options?: { description?: string; }): SecurityScheme; apiKey(name: string, location?: "header" | "query" | "cookie", options?: { description?: string; }): SecurityScheme; oauth2(flows: Record<string, unknown>, description?: string): SecurityScheme; openIdConnect(openIdConnectUrl: string, description?: string): SecurityScheme; require(name: string, scopes?: readonly string[]): SecurityRequirement; any(...requirements: readonly SecurityRequirement[]): SecurityRequirement; none(): SecurityRequirement; }>', + 'AccordionTrigger: { (props: AccordionTriggerProps): JSX.Element; (props: AccordionTriggerAsChildProps): JSX.Element; }', typeOnly: true, summary: - "Helpers for building OpenAPI security schemes and requirements, used with\n`ApiGroup.access`/`RouteBuilder.access` to describe an operation's authentication needs.", + 'Renders the `accordion-trigger` part of `accordion`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'SecurityRequirement', - anchor: 'security-requirement', - signature: 'SecurityRequirement: readonly SecurityRequirementObject[]', + name: 'Alert', + anchor: 'alert', + signature: 'Alert: (props: AlertProps) => JSX.Element', typeOnly: true, summary: - 'An OpenAPI security requirement (a list of alternative scheme+scopes requirements), as built by the {@link security } helpers.', + 'Renders an alert/status banner with an optional icon, title, description,\nactions, and a dismiss button. Automatically picks an "alert" or "status"\nARIA role from `variant` unless `role` is set explicitly.', }, { - name: 'SecurityScheme', - anchor: 'security-scheme', - signature: 'SecurityScheme: Readonly<Record<string, unknown>>', + name: 'AlertDescription', + anchor: 'alert-description', + signature: + 'AlertDescription: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'An OpenAPI security scheme definition, as built by the {@link security } helpers.', + 'Renders the `alert-description` part of the shadcn-compatible catalog primitives.', }, - ], - symbols47: [ { - name: 'createMcpServer', - anchor: 'create-mcp-server', + name: 'AlertDialog', + anchor: 'alert-dialog', signature: - 'createMcpServer: <Dependencies = undefined>(options: McpServerOptions) => McpServer<Dependencies>', + 'AlertDialog: (props: AlertDialogProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: 'Renders a part of `alert-dialog`.', + }, + { + name: 'AlertDialogAction', + anchor: 'alert-dialog-action', + signature: + 'DialogClose: { (props: DialogCloseProps): JSX.Element; (props: DialogCloseAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'Creates a transport-neutral Model Context Protocol server: register tools, resources,\nresource templates, and prompts, then feed it JSON-RPC messages via `handle` (e.g. from\n{@link registerMcpRoutes }). Manages session negotiation, protocol version selection, and\nlist-changed notifications to subscribed clients.', - tags: { - param: [ - 'options - Server name/version/instructions and pagination settings.', - ], - returns: [ - 'An {@link McpServer} exposing registration methods, notification methods, and `handle`.', - ], - throws: [ - '{TypeError} If `name`/`version` are blank, `pageSize` is invalid, or a duplicate\ntool/resource/template/prompt is registered.', - ], - }, + 'Renders the `dialog-close` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'McpContent', - anchor: 'mcp-content', - signature: 'McpContent: any', + name: 'AlertDialogCancel', + anchor: 'alert-dialog-cancel', + signature: + 'DialogClose: { (props: DialogCloseProps): JSX.Element; (props: DialogCloseAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'A single piece of MCP content (text, image, resource link, etc.), keyed by `type`.', - members: [ - { - name: 'type', - summary: '', - signature: 'type: string;', - }, - ], + 'Renders the `dialog-close` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'McpContext', - anchor: 'mcp-context', - signature: 'McpContext: any', + name: 'AlertDialogContent', + anchor: 'alert-dialog-content', + signature: + 'AlertDialogContent: (props: AlertDialogContentProps | AlertDialogContentAsChildProps) => JSX.Element', typeOnly: true, summary: - 'The per-request context passed to tool/resource/prompt handlers, exposing client info,\nnegotiated protocol/transport details, and `progress`/`log` callbacks for sending\nnotifications back to the client.', - members: [ - { - name: 'dependencies', - summary: '', - signature: 'readonly dependencies: Dependencies;', + 'Renders a part of `alert-dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AlertDialogDescription', + anchor: 'alert-dialog-description', + signature: + 'DialogDescription: { (props: DialogDescriptionProps): JSX.Element; (props: DialogDescriptionAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `dialog-description` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AlertDialogOverlay', + anchor: 'alert-dialog-overlay', + signature: + 'DialogOverlay: { (props: DialogOverlayProps): JSX.Element | null; (props: DialogOverlayAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `dialog-overlay` part of `dialog`.\n\nWith `@askrjs/themes/default`, the overlay is fully styled out of the box\nwith the shared backdrop token, blur, stacking, and fade animation. Standard\nDialog and AlertDialog usage requires no additional overlay CSS; customize\nthe theme tokens instead of applying a competing background class.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AlertDialogPortal', + anchor: 'alert-dialog-portal', + signature: + 'DialogPortal: (props: DialogPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `dialog`.', + }, + { + name: 'AlertDialogTitle', + anchor: 'alert-dialog-title', + signature: + 'DialogTitle: { (props: DialogTitleProps): JSX.Element; (props: DialogTitleAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `dialog-title` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AlertDialogTrigger', + anchor: 'alert-dialog-trigger', + signature: + 'AlertDialogTrigger: (props: AlertDialogTriggerProps | AlertDialogTriggerAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders a part of `alert-dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AlertHeadingTag', + anchor: 'alert-heading-tag', + signature: 'AlertHeadingTag: "h2" | "h3" | "h4" | "h5" | "h6"', + typeOnly: true, + summary: "Heading tag allowed for an alert's title via `titleAs`.", + }, + { + name: 'AlertProps', + anchor: 'alert-props', + signature: + 'AlertProps: DivProps & {\n actions?: unknown;\n children?: unknown;\n description?: unknown;\n dismissLabel?: string;\n icon?: unknown;\n onDismiss?: () => void;\n title?: unknown;\n titleAs?: AlertHeadingTag;\n variant?: AlertVariant;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link Alert } component.', + members: [ + { + name: 'actions', + summary: '', + signature: 'actions?: unknown;', }, { - name: 'auth', + name: 'children', summary: '', - signature: 'readonly auth: AuthContext;', + signature: 'children?: unknown;', }, { - name: 'client', + name: 'description', summary: '', - signature: - 'readonly client: {\n name: string;\n version: string;\n title?: string;\n } | null;', + signature: 'description?: unknown;', }, { - name: 'clientCapabilities', + name: 'dismissLabel', summary: '', - signature: - 'readonly clientCapabilities: Readonly<Record<string, unknown>>;', + signature: 'dismissLabel?: string | undefined;', }, { - name: 'protocolRevision', + name: 'icon', summary: '', - signature: 'readonly protocolRevision: McpProtocolRevision;', + signature: 'icon?: unknown;', }, { - name: 'transport', + name: 'onDismiss', summary: '', - signature: 'readonly transport: McpTransportKind;', + signature: 'onDismiss?: (() => void) | undefined;', }, { - name: 'sessionId', + name: 'ref', summary: '', - signature: 'readonly sessionId?: string;', + signature: 'ref?: Ref<HTMLDivElement>;', }, { - name: 'signal', + name: 'title', summary: '', - signature: 'readonly signal: AbortSignal;', + signature: 'title?: unknown;', }, { - name: 'progress', + name: 'titleAs', summary: '', - signature: - 'progress(progress: number, total?: number, message?: string): void | Promise<void>;', + signature: 'titleAs?: AlertHeadingTag | undefined;', }, { - name: 'log', + name: 'variant', summary: '', - signature: - 'log(level: McpLogLevel, data: unknown, logger?: string): void | Promise<void>;', + signature: 'variant?: AlertVariant | undefined;', }, ], }, { - name: 'McpLogLevel', - anchor: 'mcp-log-level', + name: 'AlertTitle', + anchor: 'alert-title', + signature: 'AlertTitle: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `alert-title` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'AlertVariant', + anchor: 'alert-variant', + signature: + 'AlertVariant: "default" | "info" | "success" | "warning" | "danger"', + typeOnly: true, + summary: + 'Visual tone of an {@link AlertProps} alert; `"danger"`/`"warning"` render with `role="alert"`.', + }, + { + name: 'Aside', + anchor: 'aside', + signature: 'Aside: (props: AsideProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders a `<aside>`-element {@link Block } tagged with `data-slot="aside"`.', + }, + { + name: 'AsideProps', + anchor: 'aside-props', + signature: 'AsideProps: Omit<BlockElementProps<"aside">, "as">', + typeOnly: true, + summary: 'Props for the {@link Aside } component.', + }, + { + name: 'AspectRatio', + anchor: 'aspect-ratio', signature: - 'McpLogLevel: "debug" | "info" | "notice" | "warning" | "error" | "critical" | "alert" | "emergency"', + 'AspectRatio: { (props: AspectRatioProps): JSX.Element; (props: AspectRatioAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'Severity level for {@link McpContext.log}, following syslog conventions.', + 'Constrains its content to a fixed width/height ratio (defaults to `1`)\nusing a computed `aspect-ratio` style, rendering as a `<div>` or, with\n`asChild`, merging its layout into the single child element.', }, { - name: 'McpPrimitiveOptions', - anchor: 'mcp-primitive-options', - signature: 'McpPrimitiveOptions: any', + name: 'AspectRatioAsChildProps', + anchor: 'aspect-ratio-as-child-props', + signature: + 'AspectRatioAsChildProps: AspectRatioOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', typeOnly: true, - summary: 'Metadata shared by tools, resources, and prompts.', + summary: + 'Props for {@link AspectRatio } rendered with `asChild`, merging layout onto a single child element.', members: [ { - name: 'title', + name: 'asChild', summary: '', - signature: 'title?: string;', + signature: 'asChild: true;', }, { - name: 'description', + name: 'children', summary: '', - signature: 'description?: string;', + signature: 'children: JSXElement;', }, { - name: 'auth', + name: 'ratio', summary: '', - signature: 'auth?: AuthRequirement;', + signature: 'ratio?: string | number | undefined;', }, { - name: 'annotations', + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + { + name: 'style', summary: '', - signature: 'annotations?: Readonly<Record<string, unknown>>;', + signature: 'style?: unknown;', }, ], }, { - name: 'McpPromptOptions', - anchor: 'mcp-prompt-options', - signature: 'McpPromptOptions: any', + name: 'AspectRatioProps', + anchor: 'aspect-ratio-props', + signature: + 'AspectRatioProps: Omit<JSX.IntrinsicElements["div"], "children" | "ref"> & AspectRatioOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLDivElement>;\n}', typeOnly: true, - summary: 'Options for registering a prompt via {@link McpServer.prompt}.', + summary: + 'Props for {@link AspectRatio } rendered as its default `<div>` element.', members: [ { - name: 'arguments', + name: 'asChild', summary: '', - signature: 'arguments?: Arguments;', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ratio', + summary: '', + signature: 'ratio?: string | number | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + { + name: 'style', + summary: '', + signature: 'style?: unknown;', }, ], }, { - name: 'McpProtocolRevision', - anchor: 'mcp-protocol-revision', - signature: 'McpProtocolRevision: "2025-11-25" | "2025-06-18"', + name: 'Avatar', + anchor: 'avatar', + signature: + 'Avatar: { (props: AvatarProps): JSX.Element; (props: AvatarAsChildProps): JSX.Element; }', typeOnly: true, - summary: 'MCP protocol version negotiated between client and server.', + summary: + 'Renders the `avatar` part of `avatar`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'McpRequestEnvironment', - anchor: 'mcp-request-environment', - signature: 'McpRequestEnvironment: any', + name: 'AvatarFallback', + anchor: 'avatar-fallback', + signature: + 'AvatarFallback: { (props: AvatarFallbackProps): JSX.Element | null; (props: AvatarFallbackAsChildProps): JSX.Element | null; }', typeOnly: true, summary: - 'Transport-provided context for a single inbound MCP message, passed to\n{@link McpServer.handle}. `send` (if provided) delivers server-to-client notifications for\npush-capable transports.', + 'Renders the `avatar-fallback` part of `avatar`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AvatarImage', + anchor: 'avatar-image', + signature: 'AvatarImage: (props: AvatarImageProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the `avatar-image` part of `avatar`.', + }, + { + name: 'Badge', + anchor: 'badge', + signature: + 'Badge: { (props: BadgeProps): JSX.Element; (props: BadgeAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a small status/label badge, defaulting to a `<span>` (or merging onto a child via `asChild`), with a `variant` color modifier.', + }, + { + name: 'BadgeAsChildProps', + anchor: 'badge-as-child-props', + signature: + 'BadgeAsChildProps: BadgeOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + typeOnly: true, + summary: + 'Props for {@link Badge } rendered with `asChild`, merging its attributes onto a single child element.', members: [ { - name: 'dependencies', - summary: '', - signature: 'dependencies: Dependencies;', - }, - { - name: 'auth', + name: 'asChild', summary: '', - signature: 'auth: AuthContext;', + signature: 'asChild: true;', }, { - name: 'transport', + name: 'children', summary: '', - signature: 'transport: McpTransportKind;', + signature: 'children: JSXElement;', }, { - name: 'sessionId', + name: 'ref', summary: '', - signature: 'sessionId?: string;', + signature: 'ref?: Ref<unknown>;', }, { - name: 'signal', + name: 'variant', summary: '', - signature: 'signal?: AbortSignal;', + signature: 'variant?: BadgeVariant | undefined;', }, + ], + }, + { + name: 'BadgeOwnProps', + anchor: 'badge-own-props', + signature: + 'BadgeOwnProps: {\n children?: unknown;\n variant?: BadgeVariant;\n}', + typeOnly: true, + summary: 'Props shared by both {@link Badge } call signatures.', + members: [ { - name: 'send', + name: 'children', summary: '', - signature: 'send?(message: unknown): void | Promise<void>;', + signature: 'children?: unknown;', }, { - name: 'supportsPush', + name: 'variant', summary: '', - signature: 'supportsPush?: boolean;', + signature: 'variant?: BadgeVariant | undefined;', }, ], }, { - name: 'McpResourceOptions', - anchor: 'mcp-resource-options', - signature: 'McpResourceOptions: any', + name: 'BadgeProps', + anchor: 'badge-props', + signature: + 'BadgeProps: Omit<JSX.IntrinsicElements["span"], "children" | "ref"> & BadgeOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLSpanElement>;\n}', typeOnly: true, summary: - 'Options for registering a resource via {@link McpServer.resource}.', + 'Props for {@link Badge } rendered as its default `<span>` element.', members: [ { - name: 'name', + name: 'asChild', summary: '', - signature: 'name?: string;', + signature: 'asChild?: false | undefined;', }, { - name: 'mimeType', + name: 'children', summary: '', - signature: 'mimeType?: string;', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLSpanElement>;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: BadgeVariant | undefined;', }, ], }, { - name: 'McpServer', - anchor: 'mcp-server', - signature: 'McpServer: any', + name: 'Block', + anchor: 'block', + signature: + 'Block: { (props: BlockNativeProps): JSX.Element; (props: BlockAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'A Model Context Protocol server, as created by {@link createMcpServer }: register tools,\nresources, resource templates, and prompts; push list-changed notifications; and dispatch\ninbound JSON-RPC messages via `handle`.', + 'Low-level layout primitive: renders any element in {@link BlockElement }\n(default `<div>`) and turns layout-only props (spacing, alignment,\ndirection, sizing, etc.) into a generated utility class. With `asChild`,\nthe layout is merged onto a single child element instead of a wrapper.', + }, + { + name: 'BlockAlign', + anchor: 'block-align', + signature: + 'BlockAlign: "start" | "end" | "center" | "stretch" | "baseline"', + typeOnly: true, + }, + { + name: 'BlockAsChildProps', + anchor: 'block-as-child-props', + signature: + 'BlockAsChildProps: Omit<BlockOwnProps, "as"> & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + typeOnly: true, + summary: + 'Props for {@link Block } rendered with `asChild`, merging layout onto a single child element.', members: [ { - name: 'tool', + name: 'align', summary: '', - signature: - 'tool<const Name extends string, Input extends ObjectSchema, Output extends Schema | undefined = undefined>(name: Name, options: McpToolOptions<Input, Output>, handler: (context: McpContext<Dependencies>, input: InferSchema<Input>) => McpToolResult<Output> | Promise<McpToolResult<Output>>): McpServer<Dependencies>;', + signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', }, { - name: 'resource', + name: 'asChild', summary: '', - signature: - 'resource(uri: string, options: McpResourceOptions, handler: (context: McpContext<Dependencies>, uri: URL) => McpContent | readonly McpContent[] | Promise<McpContent | readonly McpContent[]>): McpServer<Dependencies>;', + signature: 'asChild: true;', }, { - name: 'resourceTemplate', + name: 'background', summary: '', signature: - 'resourceTemplate(template: string, options: McpResourceOptions & {\n complete?: (argument: string, value: string) => readonly string[] | Promise<readonly string[]>;\n }, handler: (context: McpContext<Dependencies>, uri: URL, variables: Readonly<Record<string, string>>) => McpContent | readonly McpContent[] | Promise<McpContent | readonly McpContent[]>): McpServer<Dependencies>;', + 'background?: ResponsiveValue<BlockBackground> | undefined;', }, { - name: 'prompt', + name: 'border', summary: '', - signature: - 'prompt<const Name extends string, Arguments extends ObjectSchema>(name: Name, options: McpPromptOptions<Arguments>, handler: (context: McpContext<Dependencies>, args: InferSchema<Arguments>) => {\n description?: string;\n messages: readonly unknown[];\n } | Promise<{\n description?: string;\n messages: readonly unknown[];\n }>): McpServer<Dependencies>;', + signature: 'border?: ResponsiveValue<boolean> | undefined;', }, { - name: 'notifyToolsChanged', + name: 'borderBottom', summary: '', - signature: 'notifyToolsChanged(): Promise<void>;', + signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', }, { - name: 'notifyResourcesChanged', + name: 'borderRight', summary: '', - signature: 'notifyResourcesChanged(): Promise<void>;', + signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', }, { - name: 'notifyPromptsChanged', + name: 'borderTop', summary: '', - signature: 'notifyPromptsChanged(): Promise<void>;', + signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', }, { - name: 'handle', + name: 'center', summary: '', - signature: - 'handle(message: unknown, environment: McpRequestEnvironment<Dependencies>): Promise<unknown | undefined>;', + signature: 'center?: ResponsiveValue<boolean> | undefined;', }, { - name: 'terminateSession', + name: 'children', summary: '', - signature: 'terminateSession(sessionId: string): void;', + signature: 'children: JSXElement;', }, - ], - }, - { - name: 'McpServerOptions', - anchor: 'mcp-server-options', - signature: 'McpServerOptions: any', - typeOnly: true, - summary: 'Options for {@link createMcpServer }.', - members: [ { - name: 'name', + name: 'className', summary: '', - signature: 'name: string;', + signature: 'className?: string | undefined;', }, { - name: 'version', + name: 'direction', summary: '', - signature: 'version: string;', + signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', }, { - name: 'title', + name: 'gap', summary: '', - signature: 'title?: string;', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', }, { - name: 'instructions', + name: 'grow', summary: '', - signature: 'instructions?: string;', + signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', }, { - name: 'pageSize', + name: 'height', summary: '', - signature: 'pageSize?: number;', + signature: 'height?: ResponsiveValue<BlockSize> | undefined;', }, - ], - }, - { - name: 'McpSessionStore', - anchor: 'mcp-session-store', - signature: 'McpSessionStore: any', - typeOnly: true, - summary: - 'Pluggable backing store for stateful MCP session IDs, used by the HTTP transport.', - members: [ { - name: 'create', + name: 'hide', summary: '', - signature: 'create(id: string): void | Promise<void>;', + signature: 'hide?: ResponsiveValue<boolean> | undefined;', }, { - name: 'has', + name: 'justify', summary: '', - signature: 'has(id: string): boolean | Promise<boolean>;', + signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', }, { - name: 'delete', + name: 'margin', summary: '', - signature: 'delete(id: string): boolean | Promise<boolean>;', + signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', }, - ], - }, - { - name: 'McpToolOptions', - anchor: 'mcp-tool-options', - signature: 'McpToolOptions: any', - typeOnly: true, - summary: 'Options for registering a tool via {@link McpServer.tool}.', - members: [ { - name: 'input', + name: 'marginX', summary: '', - signature: 'input?: Input;', + signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', }, { - name: 'output', + name: 'marginY', summary: '', - signature: 'output?: Output;', + signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', }, - ], - }, - { - name: 'McpToolResult', - anchor: 'mcp-tool-result', - signature: - 'McpToolResult: {\n content?: readonly McpContent[];\n structuredContent?: Output extends Schema ? InferSchema<Output> : unknown;\n isError?: boolean;\n}', - typeOnly: true, - summary: - 'The result returned by a tool handler: content blocks and/or a typed structured result.', - }, - { - name: 'McpTransportKind', - anchor: 'mcp-transport-kind', - signature: 'McpTransportKind: "http" | "stdio"', - typeOnly: true, - summary: 'The transport an MCP session is communicating over.', - }, - { - name: 'protectedResourceMetadata', - anchor: 'protected-resource-metadata', - signature: - 'protectedResourceMetadata: (resource: string, authorizationServers?: readonly string[]) => Readonly<Record<string, unknown>>', - typeOnly: true, - summary: - 'Builds an OAuth 2.0 Protected Resource Metadata document (RFC 9728) advertising `resource`\nand its authorization servers, as served at `/.well-known/oauth-protected-resource` by\n{@link registerMcpRoutes} when `options.resource` is configured.', - }, - { - name: 'registerMcpRoutes', - anchor: 'register-mcp-routes', - signature: - 'registerMcpRoutes: <Dependencies>(router: Router, path: string, mcp: McpServer<Dependencies>, options: McpHttpOptions<Dependencies>) => Router', - typeOnly: true, - summary: - 'Registers the streamable-HTTP transport for an {@link McpServer} on a router: `POST` for\nJSON-RPC requests (with optional stateful session creation), `GET` for the Server-Sent\nEvents notification stream, and `DELETE` for session termination. Validates the `Origin` and\n`Host` headers against allowlists, enforces a max request size, and optionally serves\nOAuth protected-resource metadata.', - tags: { - param: [ - 'router - The router to register routes on.', - 'path - The MCP endpoint path.', - 'mcp - The MCP server instance to dispatch messages to.', - 'options - Origin/host allowlists, statefulness, session store, and size/timing limits.', - ], - returns: ['The same `router`, for chaining.'], - throws: [ - '{TypeError} If `heartbeatInterval`, `sessionTtlMs`, or `maxSessions` are invalid.', - ], - }, - }, - ], - symbols48: [ - { - name: 'AdapterConformanceError', - anchor: 'adapter-conformance-error', - signature: 'AdapterConformanceError: typeof AdapterConformanceError', - typeOnly: false, - summary: - 'A failed adapter-conformance guarantee with a stable machine-readable {@link code}.', - members: [ { - name: 'code', + name: 'maxHeight', summary: '', - signature: 'readonly code: AdapterConformanceErrorCode;', + signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', }, { - name: 'name', + name: 'maxWidth', summary: '', - signature: 'readonly name = "AdapterConformanceError";', + signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', }, - ], - }, - { - name: 'AdapterConformanceErrorCode', - anchor: 'adapter-conformance-error-code', - signature: - 'AdapterConformanceErrorCode: "STREAM_EXERCISE_FAILED" | "STREAM_EXERCISE_TIMEOUT" | "STREAM_CANCELLATION_TIMEOUT" | "REQUEST_TIMEOUT_EXERCISE_FAILED" | "REQUEST_TIMEOUT_ENFORCEMENT_TIMEOUT"', - typeOnly: true, - summary: - 'Stable diagnostic codes produced by {@link runAdapterConformance}.', - }, - { - name: 'AdapterConformanceExercises', - anchor: 'adapter-conformance-exercises', - signature: 'AdapterConformanceExercises: any', - typeOnly: true, - summary: - "Real-transport exercises supplied by an adapter's integration test.", - members: [ { - name: 'abortStreamingResponse', - summary: - 'Write the supplied infinite response through the real adapter, observe a client chunk,\nthen close/reset the client. Resolve after the transport disconnect is observed.', - signature: - 'abortStreamingResponse(response: Response, cleanup: AbortSignal): Promise<void>;', - }, + name: 'minHeight', + summary: '', + signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + }, { - name: 'enforceRequestTimeout', - summary: - 'Run the supplied body-reading app through the real adapter with finite request/header\ntimeouts, send an incomplete request, and resolve after the transport terminates it.', - signature: - 'enforceRequestTimeout(app: ServerApp, cleanup: AbortSignal): Promise<void>;', + name: 'minWidth', + summary: '', + signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', }, - ], - }, - { - name: 'AdapterConformanceOptions', - anchor: 'adapter-conformance-options', - signature: 'AdapterConformanceOptions: any', - typeOnly: true, - summary: 'Options for {@link runAdapterConformance}.', - members: [ { - name: 'deadlineMs', - summary: 'Per-exercise deadline in milliseconds. Defaults to 1,000.', - signature: 'deadlineMs?: number;', + name: 'padding', + summary: '', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', }, - ], - }, - { - name: 'AdapterConformanceReport', - anchor: 'adapter-conformance-report', - signature: 'AdapterConformanceReport: any', - typeOnly: true, - summary: - 'Frozen success result returned by {@link runAdapterConformance}.', - members: [ { - name: 'streamingResponseCancellation', + name: 'paddingX', summary: '', - signature: 'readonly streamingResponseCancellation: "passed";', + signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', }, { - name: 'incompleteRequestTimeout', + name: 'paddingY', summary: '', - signature: 'readonly incompleteRequestTimeout: "passed";', + signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', }, - ], - }, - { - name: 'runAdapterConformance', - anchor: 'run-adapter-conformance', - signature: - 'runAdapterConformance: (exercises: AdapterConformanceExercises, options?: AdapterConformanceOptions) => Promise<Readonly<AdapterConformanceReport>>', - typeOnly: false, - summary: - 'Runs reusable adapter guardrails against real-transport exercises supplied by the adapter.\nValidation errors throw synchronously; runtime failures reject with {@link AdapterConformanceError}.\nExercise callbacks must honor the cleanup signal and close any sockets/servers they own.', - }, - ], - symbols49: [ - { - name: 'BodyRequestOptions', - anchor: 'body-request-options', - signature: - 'BodyRequestOptions: RequestOptionsBase & {\n method: "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS" | "post" | "put" | "patch" | "delete" | "options";\n} & BodyMode', - typeOnly: true, - summary: - 'Options for a request that may carry a body, restricted to methods that support one.', - }, - { - name: 'createTestClient', - anchor: 'create-test-client', - signature: - 'createTestClient: (target: Injectable, options?: TestClientOptions) => TestClient', - typeOnly: false, - summary: - 'Create a {@link TestClient} bound to a target for repeated request injection.\n\nThe returned client applies shared defaults (base URL, headers, cookie jar,\nredirect behavior) to every request made through it, and follows redirects\nautomatically unless `redirect` is overridden.', - tags: { - param: [ - 'target - The handler or {@link RequestTarget} to inject requests into.', - 'options - Default options applied to every request made by this client.', - ], - returns: [ - 'A {@link TestClient} with `request`, `get`, `post`, and other HTTP-method helpers.', - ], - example: [ - 'const client = createTestClient(app, { baseUrl: "https://example.com", cookies: true });\nconst response = await client.get("/users");', - ], - }, - }, - { - name: 'createTestCookieJar', - anchor: 'create-test-cookie-jar', - signature: 'createTestCookieJar: () => TestCookieJar', - typeOnly: false, - summary: - 'Create an in-memory {@link TestCookieJar} backed by `tough-cookie`, suitable\nfor use as the `cookies` option of a {@link TestClient}.', - tags: { - returns: [ - 'A cookie jar that persists cookies across injected requests and\nenforces standard cookie-prefix security.', - ], - }, - }, - { - name: 'createTestRequest', - anchor: 'create-test-request', - signature: - 'createTestRequest: (input: string | URL, options?: InjectOptions) => Request', - typeOnly: false, - summary: - "Build a `Request` for testing from a path or URL and a set of options.\n\nResolves `input` against `options.baseUrl` (defaulting to `https://askr.test/`),\nappends any `query` parameters, and serializes at most one of `body`, `json`,\nor `form` into the request body, setting an appropriate `content-type` header\nwhen one isn't already present. Throws a `TypeError` if more than one body\nmode is supplied, if `json` is `undefined`, or if a `GET`/`HEAD` request is\ngiven a body.", - tags: { - param: [ - 'input - The request path or URL.', - 'options - Request options such as method, headers, query, and body.', - ], - returns: ['A `Request` ready to be dispatched to a test target.'], - }, - }, - { - name: 'Form', - anchor: 'form', - signature: - 'Form: URLSearchParams | Iterable<readonly [string, FormValue]> | Record<string, FormValue | readonly FormValue[] | undefined>', - typeOnly: true, - summary: - 'URL-encoded form body data, accepted as `URLSearchParams`, an iterable of entries, or a plain record.', - }, - { - name: 'FormValue', - anchor: 'form-value', - signature: 'FormValue: string | number | boolean', - typeOnly: true, - summary: - 'A single form field value, coerced to `string` when serialized.', - }, - { - name: 'GetHeadOptions', - anchor: 'get-head-options', - signature: - 'GetHeadOptions: RequestOptionsBase & {\n method?: "GET" | "HEAD" | "get" | "head";\n} & NoBody', - typeOnly: true, - summary: 'Options for a body-less `GET` or `HEAD` request.', - }, - { - name: 'inject', - anchor: 'inject', - signature: - 'inject: { (target: Injectable, request: Request, options?: Pick<InjectOptions, "maxRedirects">): Promise<Response>; (target: Injectable, input: string | URL, options?: InjectOptions): Promise<Response>; }', - typeOnly: false, - summary: - 'Inject a single request into a target and return the resulting response,\nfollowing redirects up to `maxRedirects` hops.\nInject a request built from a path/URL and options into a target and return\nthe resulting response, following redirects up to `maxRedirects` hops.', - tags: { - param: [ - 'target - The handler or {@link RequestTarget} to inject the request into.', - 'request - An existing `Request` to dispatch as-is.', - 'options - Only `maxRedirects` is honored when a `Request` is passed directly.', - 'target - The handler or {@link RequestTarget} to inject the request into.', - 'input - The request path or URL, resolved against `options.baseUrl`.', - 'options - Request options such as method, headers, query, and body.', - ], - returns: [ - 'The final `Response` after any redirects have been followed.', - 'The final `Response` after any redirects have been followed.', - ], - example: [ - 'const response = await inject(app, "/users", { method: "GET" });', - ], - }, - }, - { - name: 'Injectable', - anchor: 'injectable', - signature: 'Injectable: RequestTarget | RequestHandler', - typeOnly: true, - summary: - 'Anything that can receive an injected test request: a {@link RequestTarget} or a {@link RequestHandler}.', - }, - { - name: 'InjectOptions', - anchor: 'inject-options', - signature: 'InjectOptions: GetHeadOptions | BodyRequestOptions', - typeOnly: true, - summary: - 'Options accepted when injecting a request, covering both body-less and body-carrying methods.', - }, - { - name: 'Query', - anchor: 'query', - signature: - 'Query: URLSearchParams | Iterable<readonly [string, QueryValue]> | Record<string, QueryValue | readonly QueryValue[] | undefined>', - typeOnly: true, - summary: - 'Query string parameters, accepted as `URLSearchParams`, an iterable of entries, or a plain record.', - }, - { - name: 'QueryValue', - anchor: 'query-value', - signature: 'QueryValue: string | number | boolean', - typeOnly: true, - summary: - 'A single query string value, coerced to `string` when serialized.', - }, - { - name: 'RequestHandler', - anchor: 'request-handler', - signature: - 'RequestHandler: (request: Request) => Response | Promise<Response>', - typeOnly: true, - summary: - 'A function that handles a `Request` and produces a `Response`, synchronously or asynchronously.', - }, - { - name: 'RequestTarget', - anchor: 'request-target', - signature: 'RequestTarget: any', - typeOnly: true, - summary: - 'A target that can receive an injected request directly via a `fetch`-style method.', - members: [ { - name: 'fetch', + name: 'radius', summary: '', - signature: 'fetch(request: Request): Response | Promise<Response>;', + signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', }, - ], - }, - { - name: 'TestClient', - anchor: 'test-client', - signature: 'TestClient: any', - typeOnly: true, - summary: - 'A reusable HTTP client that injects requests into a target and follows redirects.', - members: [ { - name: 'cookies', + name: 'ref', summary: '', - signature: 'readonly cookies?: TestCookieJar;', + signature: 'ref?: Ref<unknown>;', }, { - name: 'request', + name: 'rowFrom', summary: '', - signature: - 'request(path: string | URL, options?: InjectOptions): Promise<Response>;', + signature: 'rowFrom?: BlockRowFrom | undefined;', }, { - name: 'get', + name: 'shadow', summary: '', - signature: - 'get(path: string | URL, options?: Omit<GetHeadOptions, "method">): Promise<Response>;', + signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', }, { - name: 'head', + name: 'shrink', summary: '', - signature: - 'head(path: string | URL, options?: Omit<GetHeadOptions, "method">): Promise<Response>;', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', }, { - name: 'post', + name: 'sticky', summary: '', - signature: - 'post(path: string | URL, options?: Omit<BodyRequestOptions, "method">): Promise<Response>;', + signature: 'sticky?: boolean | undefined;', }, { - name: 'put', + name: 'top', summary: '', - signature: - 'put(path: string | URL, options?: Omit<BodyRequestOptions, "method">): Promise<Response>;', + signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', }, { - name: 'patch', + name: 'width', summary: '', - signature: - 'patch(path: string | URL, options?: Omit<BodyRequestOptions, "method">): Promise<Response>;', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', }, { - name: 'delete', + name: 'wrap', summary: '', - signature: - 'delete(path: string | URL, options?: Omit<BodyRequestOptions, "method">): Promise<Response>;', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', }, { - name: 'options', + name: 'zIndex', summary: '', - signature: - 'options(path: string | URL, options?: Omit<BodyRequestOptions, "method">): Promise<Response>;', + signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', }, ], }, { - name: 'TestClientOptions', - anchor: 'test-client-options', - signature: 'TestClientOptions: any', + name: 'BlockBackground', + anchor: 'block-background', + signature: + 'BlockBackground: "surface" | "muted" | "selected" | "canvas" | "raised" | "overlay" | "transparent"', typeOnly: true, - summary: 'Options for constructing a {@link TestClient}.', + }, + { + name: 'BlockDirection', + anchor: 'block-direction', + signature: + 'BlockDirection: "row" | "column" | "row-reverse" | "column-reverse"', + typeOnly: true, + }, + { + name: 'BlockDivProps', + anchor: 'block-div-props', + signature: 'BlockDivProps: BlockElementProps<"div">', + typeOnly: true, + summary: '{@link Block } props specialized for a `<div>` element.', members: [ { - name: 'baseUrl', + name: 'align', summary: '', - signature: 'baseUrl?: string | URL;', + signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', }, { - name: 'headers', + name: 'as', summary: '', - signature: 'headers?: HeadersInit;', + signature: 'as?: "div" | undefined;', }, { - name: 'cookies', - summary: - 'Enable an automatically managed cookie jar (`true`), or supply an existing {@link TestCookieJar}.', - signature: 'cookies?: true | TestCookieJar;', + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', }, { - name: 'redirect', + name: 'background', summary: '', - signature: 'redirect?: RequestRedirect;', + signature: + 'background?: ResponsiveValue<BlockBackground> | undefined;', }, { - name: 'maxRedirects', + name: 'border', summary: '', - signature: 'maxRedirects?: number;', + signature: 'border?: ResponsiveValue<boolean> | undefined;', }, - ], - }, - { - name: 'TestCookie', - anchor: 'test-cookie', - signature: 'TestCookie: any', - typeOnly: true, - summary: 'A cookie as read back from a {@link TestCookieJar}.', - members: [ { - name: 'name', + name: 'borderBottom', summary: '', - signature: 'name: string;', + signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', }, { - name: 'value', + name: 'borderRight', summary: '', - signature: 'value: string;', + signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', }, { - name: 'domain', + name: 'borderTop', summary: '', - signature: 'domain?: string;', + signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', }, { - name: 'path', + name: 'center', summary: '', - signature: 'path?: string;', + signature: 'center?: ResponsiveValue<boolean> | undefined;', }, { - name: 'expires', + name: 'children', summary: '', - signature: 'expires?: Date | "Infinity";', + signature: 'children?: unknown;', }, { - name: 'httpOnly', + name: 'className', summary: '', - signature: 'httpOnly: boolean;', + signature: 'className?: string | undefined;', }, { - name: 'secure', + name: 'direction', summary: '', - signature: 'secure: boolean;', + signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', }, { - name: 'sameSite', + name: 'gap', summary: '', - signature: 'sameSite?: "strict" | "lax" | "none";', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', }, - ], - }, - { - name: 'TestCookieJar', - anchor: 'test-cookie-jar', - signature: 'TestCookieJar: any', - typeOnly: true, - summary: - 'A cookie jar used to persist and replay cookies across injected requests.', - members: [ { - name: 'setCookie', + name: 'grow', summary: '', - signature: - 'setCookie(cookie: string, url: string | URL): Promise<void>;', + signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', }, { - name: 'getCookies', + name: 'height', summary: '', - signature: 'getCookies(url: string | URL): Promise<TestCookie[]>;', + signature: 'height?: ResponsiveValue<BlockSize> | undefined;', }, { - name: 'clear', + name: 'hide', summary: '', - signature: 'clear(): Promise<void>;', + signature: 'hide?: ResponsiveValue<boolean> | undefined;', }, - ], - }, - ], - symbols50: [], - symbols51: [ - { - name: 'Accordion', - anchor: 'accordion', - signature: 'Accordion: (props: AccordionProps) => JSX.Element', - typeOnly: true, - summary: 'Renders a part of `accordion`.', - }, - { - name: 'AccordionContent', - anchor: 'accordion-content', - signature: - 'AccordionContent: { (props: AccordionContentProps): JSX.Element | null; (props: AccordionContentAsChildProps): JSX.Element | null; }', - typeOnly: true, - summary: - 'Renders the `accordion-content` part of `accordion` with `role="region"`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'AccordionHeader', - anchor: 'accordion-header', - signature: - 'AccordionHeader: { (props: AccordionHeaderProps): JSX.Element; (props: AccordionHeaderAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `accordion-header` part of `accordion`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'AccordionItem', - anchor: 'accordion-item', - signature: 'AccordionItem: (props: AccordionItemProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the `accordion-item` part of `accordion`.', - }, - { - name: 'AccordionTrigger', - anchor: 'accordion-trigger', - signature: - 'AccordionTrigger: { (props: AccordionTriggerProps): JSX.Element; (props: AccordionTriggerAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `accordion-trigger` part of `accordion`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'Alert', - anchor: 'alert', - signature: 'Alert: (props: AlertProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders an alert/status banner with an optional icon, title, description,\nactions, and a dismiss button. Automatically picks an "alert" or "status"\nARIA role from `variant` unless `role` is set explicitly.', - }, - { - name: 'AlertDescription', - anchor: 'alert-description', - signature: - 'AlertDescription: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `alert-description` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'AlertDialog', - anchor: 'alert-dialog', - signature: - 'AlertDialog: (props: AlertDialogProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', - typeOnly: true, - summary: 'Renders a part of `alert-dialog`.', - }, - { - name: 'AlertDialogAction', - anchor: 'alert-dialog-action', - signature: - 'DialogClose: { (props: DialogCloseProps): JSX.Element; (props: DialogCloseAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `dialog-close` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'AlertDialogCancel', - anchor: 'alert-dialog-cancel', - signature: - 'DialogClose: { (props: DialogCloseProps): JSX.Element; (props: DialogCloseAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `dialog-close` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'AlertDialogContent', - anchor: 'alert-dialog-content', - signature: - 'AlertDialogContent: (props: AlertDialogContentProps | AlertDialogContentAsChildProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders a part of `alert-dialog`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'AlertDialogDescription', - anchor: 'alert-dialog-description', - signature: - 'DialogDescription: { (props: DialogDescriptionProps): JSX.Element; (props: DialogDescriptionAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `dialog-description` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'AlertDialogOverlay', - anchor: 'alert-dialog-overlay', - signature: - 'DialogOverlay: { (props: DialogOverlayProps): JSX.Element | null; (props: DialogOverlayAsChildProps): JSX.Element | null; }', - typeOnly: true, - summary: - 'Renders the `dialog-overlay` part of `dialog`.\n\nWith `@askrjs/themes/default`, the overlay is fully styled out of the box\nwith the shared backdrop token, blur, stacking, and fade animation. Standard\nDialog and AlertDialog usage requires no additional overlay CSS; customize\nthe theme tokens instead of applying a competing background class.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'AlertDialogPortal', - anchor: 'alert-dialog-portal', - signature: - 'DialogPortal: (props: DialogPortalProps) => JSX.Element | null', - typeOnly: true, - summary: 'Renders a part of `dialog`.', - }, - { - name: 'AlertDialogTitle', - anchor: 'alert-dialog-title', - signature: - 'DialogTitle: { (props: DialogTitleProps): JSX.Element; (props: DialogTitleAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `dialog-title` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'AlertDialogTrigger', - anchor: 'alert-dialog-trigger', - signature: - 'AlertDialogTrigger: (props: AlertDialogTriggerProps | AlertDialogTriggerAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', - typeOnly: true, - summary: - 'Renders a part of `alert-dialog`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'AlertHeadingTag', - anchor: 'alert-heading-tag', - signature: 'AlertHeadingTag: "h2" | "h3" | "h4" | "h5" | "h6"', - typeOnly: true, - summary: "Heading tag allowed for an alert's title via `titleAs`.", - }, - { - name: 'AlertProps', - anchor: 'alert-props', - signature: - 'AlertProps: DivProps & {\n actions?: unknown;\n children?: unknown;\n description?: unknown;\n dismissLabel?: string;\n icon?: unknown;\n onDismiss?: () => void;\n title?: unknown;\n titleAs?: AlertHeadingTag;\n variant?: AlertVariant;\n ref?: Ref<HTMLDivElement>;\n}', - typeOnly: true, - summary: 'Props for the {@link Alert } component.', - members: [ { - name: 'actions', + name: 'justify', summary: '', - signature: 'actions?: unknown;', + signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', }, { - name: 'children', + name: 'margin', summary: '', - signature: 'children?: unknown;', + signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', }, { - name: 'description', + name: 'marginX', summary: '', - signature: 'description?: unknown;', + signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', }, { - name: 'dismissLabel', + name: 'marginY', summary: '', - signature: 'dismissLabel?: string | undefined;', + signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', }, { - name: 'icon', + name: 'maxHeight', summary: '', - signature: 'icon?: unknown;', + signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', }, { - name: 'onDismiss', + name: 'maxWidth', summary: '', - signature: 'onDismiss?: (() => void) | undefined;', + signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', }, { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLDivElement>;', + signature: 'ref?: Ref<unknown>;', }, { - name: 'title', + name: 'rowFrom', summary: '', - signature: 'title?: unknown;', + signature: 'rowFrom?: BlockRowFrom | undefined;', }, { - name: 'titleAs', + name: 'shadow', summary: '', - signature: 'titleAs?: AlertHeadingTag | undefined;', + signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', }, { - name: 'variant', + name: 'shrink', summary: '', - signature: 'variant?: AlertVariant | undefined;', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: boolean | undefined;', + }, + { + name: 'top', + summary: '', + signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', }, ], }, { - name: 'AlertTitle', - anchor: 'alert-title', - signature: 'AlertTitle: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `alert-title` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'AlertVariant', - anchor: 'alert-variant', - signature: - 'AlertVariant: "default" | "info" | "success" | "warning" | "danger"', - typeOnly: true, - summary: - 'Visual tone of an {@link AlertProps} alert; `"danger"`/`"warning"` render with `role="alert"`.', - }, - { - name: 'Aside', - anchor: 'aside', - signature: 'Aside: (props: AsideProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders a `<aside>`-element {@link Block } tagged with `data-slot="aside"`.', - }, - { - name: 'AsideProps', - anchor: 'aside-props', - signature: 'AsideProps: Omit<BlockElementProps<"aside">, "as">', - typeOnly: true, - summary: 'Props for the {@link Aside } component.', - }, - { - name: 'AspectRatio', - anchor: 'aspect-ratio', + name: 'BlockElement', + anchor: 'block-element', signature: - 'AspectRatio: { (props: AspectRatioProps): JSX.Element; (props: AspectRatioAsChildProps): JSX.Element; }', + 'BlockElement: "div" | "span" | "main" | "header" | "footer" | "section" | "aside" | "nav" | "a" | "ul" | "ol" | "li" | "form" | "article"', typeOnly: true, - summary: - 'Constrains its content to a fixed width/height ratio (defaults to `1`)\nusing a computed `aspect-ratio` style, rendering as a `<div>` or, with\n`asChild`, merging its layout into the single child element.', + summary: 'Element tags {@link Block } can render as via its `as` prop.', }, { - name: 'AspectRatioAsChildProps', - anchor: 'aspect-ratio-as-child-props', + name: 'BlockElementProps', + anchor: 'block-element-props', signature: - 'AspectRatioAsChildProps: AspectRatioOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + 'BlockElementProps: Omit<JSX.IntrinsicElements[TElement], "children" | "ref"> & BlockOwnProps & {\n as?: TElement;\n asChild?: false;\n ref?: Ref<unknown>;\n}', typeOnly: true, summary: - 'Props for {@link AspectRatio } rendered with `asChild`, merging layout onto a single child element.', + '{@link Block } props specialized for a given {@link BlockElement} tag `TElement`.', members: [ + { + name: 'align', + summary: '', + signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', + }, + { + name: 'as', + summary: '', + signature: 'as?: TElement | undefined;', + }, { name: 'asChild', summary: '', - signature: 'asChild: true;', + signature: 'asChild?: false | undefined;', }, { - name: 'children', + name: 'background', summary: '', - signature: 'children: JSXElement;', + signature: + 'background?: ResponsiveValue<BlockBackground> | undefined;', }, { - name: 'ratio', + name: 'border', summary: '', - signature: 'ratio?: string | number | undefined;', + signature: 'border?: ResponsiveValue<boolean> | undefined;', }, { - name: 'ref', + name: 'borderBottom', summary: '', - signature: 'ref?: Ref<unknown>;', + signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', }, { - name: 'style', + name: 'borderRight', summary: '', - signature: 'style?: unknown;', + signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', }, - ], - }, - { - name: 'AspectRatioProps', - anchor: 'aspect-ratio-props', - signature: - 'AspectRatioProps: Omit<JSX.IntrinsicElements["div"], "children" | "ref"> & AspectRatioOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLDivElement>;\n}', - typeOnly: true, - summary: - 'Props for {@link AspectRatio } rendered as its default `<div>` element.', - members: [ { - name: 'asChild', + name: 'borderTop', summary: '', - signature: 'asChild?: false | undefined;', + signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'center', + summary: '', + signature: 'center?: ResponsiveValue<boolean> | undefined;', }, { name: 'children', @@ -32308,74 +28813,89 @@ export const apiSymbolSets: Readonly< signature: 'children?: unknown;', }, { - name: 'ratio', + name: 'direction', summary: '', - signature: 'ratio?: string | number | undefined;', + signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', }, { - name: 'ref', + name: 'gap', summary: '', - signature: 'ref?: Ref<HTMLDivElement>;', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', }, { - name: 'style', + name: 'grow', summary: '', - signature: 'style?: unknown;', + signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', }, - ], - }, - { - name: 'Avatar', - anchor: 'avatar', - signature: - 'Avatar: { (props: AvatarProps): JSX.Element; (props: AvatarAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `avatar` part of `avatar`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'AvatarFallback', - anchor: 'avatar-fallback', - signature: - 'AvatarFallback: { (props: AvatarFallbackProps): JSX.Element | null; (props: AvatarFallbackAsChildProps): JSX.Element | null; }', - typeOnly: true, - summary: - 'Renders the `avatar-fallback` part of `avatar`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'AvatarImage', - anchor: 'avatar-image', - signature: 'AvatarImage: (props: AvatarImageProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the `avatar-image` part of `avatar`.', - }, - { - name: 'Badge', - anchor: 'badge', - signature: - 'Badge: { (props: BadgeProps): JSX.Element; (props: BadgeAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders a small status/label badge, defaulting to a `<span>` (or merging onto a child via `asChild`), with a `variant` color modifier.', - }, - { - name: 'BadgeAsChildProps', - anchor: 'badge-as-child-props', - signature: - 'BadgeAsChildProps: BadgeOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', - typeOnly: true, - summary: - 'Props for {@link Badge } rendered with `asChild`, merging its attributes onto a single child element.', - members: [ { - name: 'asChild', + name: 'height', summary: '', - signature: 'asChild: true;', + signature: 'height?: ResponsiveValue<BlockSize> | undefined;', }, { - name: 'children', + name: 'hide', summary: '', - signature: 'children: JSXElement;', + signature: 'hide?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', }, { name: 'ref', @@ -32383,97 +28903,83 @@ export const apiSymbolSets: Readonly< signature: 'ref?: Ref<unknown>;', }, { - name: 'variant', + name: 'rowFrom', summary: '', - signature: 'variant?: BadgeVariant | undefined;', + signature: 'rowFrom?: BlockRowFrom | undefined;', }, - ], - }, - { - name: 'BadgeOwnProps', - anchor: 'badge-own-props', - signature: - 'BadgeOwnProps: {\n children?: unknown;\n variant?: BadgeVariant;\n}', - typeOnly: true, - summary: 'Props shared by both {@link Badge } call signatures.', - members: [ { - name: 'children', + name: 'shadow', summary: '', - signature: 'children?: unknown;', + signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', }, { - name: 'variant', + name: 'shrink', summary: '', - signature: 'variant?: BadgeVariant | undefined;', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', }, - ], - }, - { - name: 'BadgeProps', - anchor: 'badge-props', - signature: - 'BadgeProps: Omit<JSX.IntrinsicElements["span"], "children" | "ref"> & BadgeOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLSpanElement>;\n}', - typeOnly: true, - summary: - 'Props for {@link Badge } rendered as its default `<span>` element.', - members: [ { - name: 'asChild', + name: 'sticky', summary: '', - signature: 'asChild?: false | undefined;', + signature: 'sticky?: boolean | undefined;', }, { - name: 'children', + name: 'top', summary: '', - signature: 'children?: unknown;', + signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', }, { - name: 'ref', + name: 'width', summary: '', - signature: 'ref?: Ref<HTMLSpanElement>;', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', }, { - name: 'variant', + name: 'wrap', summary: '', - signature: 'variant?: BadgeVariant | undefined;', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', }, ], }, { - name: 'Block', - anchor: 'block', - signature: - 'Block: { (props: BlockNativeProps): JSX.Element; (props: BlockAsChildProps): JSX.Element; }', + name: 'BlockJustify', + anchor: 'block-justify', + signature: 'BlockJustify: "start" | "end" | "center" | "between"', typeOnly: true, - summary: - 'Low-level layout primitive: renders any element in {@link BlockElement }\n(default `<div>`) and turns layout-only props (spacing, alignment,\ndirection, sizing, etc.) into a generated utility class. With `asChild`,\nthe layout is merged onto a single child element instead of a wrapper.', }, { - name: 'BlockAlign', - anchor: 'block-align', - signature: - 'BlockAlign: "start" | "end" | "center" | "stretch" | "baseline"', + name: 'BlockMargin', + anchor: 'block-margin', + signature: 'BlockMargin: BlockSpace | "auto"', typeOnly: true, }, { - name: 'BlockAsChildProps', - anchor: 'block-as-child-props', + name: 'BlockNativeProps', + anchor: 'block-native-props', signature: - 'BlockAsChildProps: Omit<BlockOwnProps, "as"> & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + 'BlockNativeProps: { [TElement in BlockElement]: BlockElementProps<TElement>; }[BlockElement]', typeOnly: true, summary: - 'Props for {@link Block } rendered with `asChild`, merging layout onto a single child element.', + "Union of {@link BlockElementProps} across every {@link BlockElement}, used for {@link Block }'s native (non-`asChild`) overload.", members: [ { name: 'align', summary: '', signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', }, + { + name: 'as', + summary: '', + signature: + 'as?: "a" | "article" | "aside" | "div" | "form" | "footer" | "header" | "li" | "main" | "nav" | "ol" | "section" | "span" | "ul" | undefined;', + }, { name: 'asChild', summary: '', - signature: 'asChild: true;', + signature: 'asChild?: false | undefined;', }, { name: 'background', @@ -32509,12 +29015,13 @@ export const apiSymbolSets: Readonly< { name: 'children', summary: '', - signature: 'children: JSXElement;', + signature: 'children?: unknown;', }, { name: 'className', summary: '', - signature: 'className?: string | undefined;', + signature: + 'className?: string | ((() => IntrinsicClassValue) & string) | undefined;', }, { name: 'direction', @@ -32649,25 +29156,13 @@ export const apiSymbolSets: Readonly< ], }, { - name: 'BlockBackground', - anchor: 'block-background', - signature: - 'BlockBackground: "surface" | "muted" | "selected" | "canvas" | "raised" | "overlay" | "transparent"', - typeOnly: true, - }, - { - name: 'BlockDirection', - anchor: 'block-direction', + name: 'BlockOwnProps', + anchor: 'block-own-props', signature: - 'BlockDirection: "row" | "column" | "row-reverse" | "column-reverse"', - typeOnly: true, - }, - { - name: 'BlockDivProps', - anchor: 'block-div-props', - signature: 'BlockDivProps: BlockElementProps<"div">', + 'BlockOwnProps: BlockLayoutProps & {\n as?: BlockElement;\n children?: unknown;\n className?: string;\n}', typeOnly: true, - summary: '{@link Block } props specialized for a `<div>` element.', + summary: + 'Layout and structural props accepted by {@link Block }, independent of the rendered element.', members: [ { name: 'align', @@ -32677,12 +29172,7 @@ export const apiSymbolSets: Readonly< { name: 'as', summary: '', - signature: 'as?: "div" | undefined;', - }, - { - name: 'asChild', - summary: '', - signature: 'asChild?: false | undefined;', + signature: 'as?: BlockElement | undefined;', }, { name: 'background', @@ -32810,11 +29300,6 @@ export const apiSymbolSets: Readonly< summary: '', signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', }, - { - name: 'ref', - summary: '', - signature: 'ref?: Ref<unknown>;', - }, { name: 'rowFrom', summary: '', @@ -32858,67 +29343,12325 @@ export const apiSymbolSets: Readonly< ], }, { - name: 'BlockElement', - anchor: 'block-element', + name: 'BlockProps', + anchor: 'block-props', + signature: 'BlockProps: BlockNativeProps | BlockAsChildProps', + typeOnly: true, + summary: 'Union of all prop shapes accepted by {@link Block }.', + members: [ + { + name: 'align', + summary: '', + signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, + { + name: 'background', + summary: '', + signature: + 'background?: ResponsiveValue<BlockBackground> | undefined;', + }, + { + name: 'border', + summary: '', + signature: 'border?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'center', + summary: '', + signature: 'center?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'className', + summary: '', + signature: + 'className?: string | ((() => IntrinsicClassValue) & string) | undefined;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'height', + summary: '', + signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: BlockRowFrom | undefined;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: boolean | undefined;', + }, + { + name: 'top', + summary: '', + signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + }, + ], + }, + { + name: 'BlockRadius', + anchor: 'block-radius', + signature: 'BlockRadius: true | "sm" | "md" | "lg" | "xl" | "round"', + typeOnly: true, + }, + { + name: 'BlockResponsiveValue', + anchor: 'block-responsive-value', + signature: 'ResponsiveValue: T | Partial<Record<LayoutBreakpoint, T>>', + typeOnly: true, + }, + { + name: 'BlockRowFrom', + anchor: 'block-row-from', + signature: 'BlockRowFrom: Exclude<LayoutBreakpoint, "base">', + typeOnly: true, + }, + { + name: 'BlockShadow', + anchor: 'block-shadow', + signature: 'BlockShadow: true | "sm" | "md" | "lg"', + typeOnly: true, + }, + { + name: 'BlockSize', + anchor: 'block-size', + signature: + 'BlockSize: "auto" | "full" | "screen" | "content" | "sidebar" | "page" | "sm" | "md" | "lg" | "xl"', + typeOnly: true, + }, + { + name: 'BlockSpace', + anchor: 'block-space', + signature: + 'BlockSpace: "0" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "page"', + typeOnly: true, + }, + { + name: 'BlockSpanProps', + anchor: 'block-span-props', + signature: 'BlockSpanProps: BlockElementProps<"span">', + typeOnly: true, + summary: '{@link Block } props specialized for a `<span>` element.', + members: [ + { + name: 'align', + summary: '', + signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', + }, + { + name: 'as', + summary: '', + signature: 'as?: "span" | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'background', + summary: '', + signature: + 'background?: ResponsiveValue<BlockBackground> | undefined;', + }, + { + name: 'border', + summary: '', + signature: 'border?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'center', + summary: '', + signature: 'center?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'className', + summary: '', + signature: 'className?: string | undefined;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'height', + summary: '', + signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: BlockRowFrom | undefined;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: boolean | undefined;', + }, + { + name: 'top', + summary: '', + signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + }, + ], + }, + { + name: 'BlockZIndex', + anchor: 'block-zindex', + signature: + 'BlockZIndex: "header" | "sticky" | "fixed" | "dropdown" | "modal" | "popover" | "toast" | "tooltip"', + typeOnly: true, + }, + { + name: 'Brand', + anchor: 'brand', + signature: + 'Brand: <TElement extends "div" | "a" | "span" = "div">(props: BrandProps<TElement>) => JSX.Element', + typeOnly: true, + summary: + 'Renders a brand/logo wrapper, defaulting to a `<div>` (or `<a>`/`<span>` via `as`), or merges onto a single child via `asChild`.', + }, + { + name: 'BrandLabel', + anchor: 'brand-label', + signature: 'BrandLabel: (props: BrandLabelProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the text label portion of a {@link Brand}.', + }, + { + name: 'BrandMark', + anchor: 'brand-mark', + signature: 'BrandMark: (props: BrandMarkProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the icon/mark portion of a {@link Brand}.', + }, + { + name: 'Breadcrumb', + anchor: 'breadcrumb', + signature: 'Breadcrumb: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `breadcrumb` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'BreadcrumbEllipsis', + anchor: 'breadcrumb-ellipsis', + signature: + 'BreadcrumbEllipsis: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders a non-interactive ellipsis marker in a breadcrumb trail.', + }, + { + name: 'BreadcrumbItem', + anchor: 'breadcrumb-item', + signature: + 'BreadcrumbItem: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `breadcrumb-item` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'BreadcrumbLink', + anchor: 'breadcrumb-link', + signature: + 'BreadcrumbLink: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `breadcrumb-link` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'BreadcrumbList', + anchor: 'breadcrumb-list', + signature: + 'BreadcrumbList: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `breadcrumb-list` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'BreadcrumbPage', + anchor: 'breadcrumb-page', + signature: + 'BreadcrumbPage: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the current (non-link) breadcrumb page, marked `aria-current="page"`.', + }, + { + name: 'BreadcrumbSeparator', + anchor: 'breadcrumb-separator', + signature: + 'BreadcrumbSeparator: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the separator between breadcrumb items (defaults to `"/"`).', + }, + { + name: 'Button', + anchor: 'button', + signature: + 'Button: { (props: ButtonNativeProps): JSX.Element; (props: ButtonAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Headless Button component\n\n## Responsibilities\n- Compose pressable foundation for interaction behavior\n- Enforce type="button" default to prevent accidental form submission\n- Forward props and refs to native button or child element\n\n## Non-Responsibilities (delegated to pressable foundation)\n- Keyboard event handling (Enter/Space)\n- Pointer event handling\n- Disabled state enforcement\n- ARIA attribute application\n\n## Invariants\n- MUST NOT contain any event handler logic\n- MUST NOT check disabled prop directly\n- MUST use pressable() for ALL interaction behavior\n- MUST use mergeProps() for ALL prop composition\nRenders the `button` part of `button`.\n\nSupports polymorphic rendering via `asChild`.', + tags: { + example: [ + 'Native button (prevents accidental submit)\n```tsx\n<Button onPress={handleSave}>Save</Button>\n```', + 'Explicit form submission\n```tsx\n<Button type="submit" onPress={handleSubmit}>Submit</Button>\n```', + 'Polymorphic rendering (asChild)\n```tsx\n<Button asChild onPress={handleNav}>\n<a href="/home">Home</a>\n</Button>\n```', + ], + }, + }, + { + name: 'ButtonAsChildElement', + anchor: 'button-as-child-element', + signature: 'ButtonAsChildElement: JSXElement | JSX.Element', + typeOnly: true, + summary: 'Button As Child Element.', + }, + { + name: 'ButtonAsChildProps', + anchor: 'button-as-child-props', + signature: + 'ButtonAsChildProps: ButtonOwnProps & {\n asChild: true;\n children: ButtonAsChildElement;\n ref?: Ref<Element>;\n type?: never;\n}', + typeOnly: true, + summary: 'Props when rendering with asChild (polymorphic)', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: ButtonAsChildElement;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'size', + summary: '', + signature: 'size?: ButtonSize | undefined;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: ButtonVariant | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ButtonWidth | undefined;', + }, + ], + }, + { + name: 'ButtonGroup', + anchor: 'button-group', + signature: 'ButtonGroup: (props: ButtonGroupProps) => JSX.Element', + typeOnly: true, + summary: + 'Groups related buttons together, optionally visually attached, with a horizontal or vertical\norientation and `role="group"` by default. Attached groups without an explicit `orientation`\nstack at phone width unless they contain icon buttons; pass `orientation="horizontal"` to\nkeep the row.', + }, + { + name: 'ButtonGroupOrientation', + anchor: 'button-group-orientation', + signature: 'ButtonGroupOrientation: "horizontal" | "vertical"', + typeOnly: true, + summary: + 'Layout direction of a {@link ButtonGroup }. When omitted, an attached group is a row that\nstacks at phone width unless it contains icon buttons. An explicit value keeps that direction\nunless the caller also passes `data-responsive="true"`, which opts back into phone stacking.', + }, + { + name: 'ButtonGroupProps', + anchor: 'button-group-props', + signature: + 'ButtonGroupProps: DivProps & {\n children?: unknown;\n attached?: boolean;\n orientation?: ButtonGroupOrientation;\n /** Stack at phone width. Defaults to `"true"` for attached groups without an `orientation`. */\n "data-responsive"?: "true" | "false";\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link ButtonGroup } component.', + members: [ + { + name: 'attached', + summary: '', + signature: 'attached?: boolean | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'data-responsive', + summary: + 'Stack at phone width. Defaults to `"true"` for attached groups without an `orientation`.', + signature: 'data-responsive?: "true" | "false" | undefined;', + }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: ButtonGroupOrientation | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'ButtonNativeProps', + anchor: 'button-native-props', + signature: + "ButtonNativeProps: Omit<JSX.IntrinsicElements['button'], 'children' | 'onClick' | 'disabled' | 'type' | 'ref'> & ButtonOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLButtonElement>;\n type?: 'button' | 'submit' | 'reset';\n}", + typeOnly: true, + summary: 'Props when rendering as native <button>', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + { + name: 'size', + summary: '', + signature: 'size?: ButtonSize | undefined;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: ButtonVariant | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ButtonWidth | undefined;', + }, + ], + }, + { + name: 'ButtonProps', + anchor: 'button-props', + signature: 'ButtonProps: ButtonNativeProps | ButtonAsChildProps', + typeOnly: true, + summary: 'Union of all Button prop variants', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLButtonElement | null) => void) | { current: HTMLButtonElement | null; } | null | undefined;', + }, + { + name: 'size', + summary: '', + signature: 'size?: ButtonSize | undefined;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: ButtonVariant | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ButtonWidth | undefined;', + }, + ], + }, + { + name: 'ButtonSize', + anchor: 'button-size', + signature: + "ButtonSize: 'xs' | 'sm' | 'md' | 'lg' | 'icon' | 'icon-xs' | 'icon-sm' | 'icon-lg'", + typeOnly: true, + summary: 'Button Size.', + }, + { + name: 'ButtonVariant', + anchor: 'button-variant', + signature: + "ButtonVariant: 'default' | 'primary' | 'secondary' | 'outline' | 'ghost' | 'destructive' | 'link'", + typeOnly: true, + summary: 'Button Variant.', + }, + { + name: 'ButtonWidth', + anchor: 'button-width', + signature: "ButtonWidth: 'auto' | 'full'", + typeOnly: true, + summary: 'Button Width.', + }, + { + name: 'Calendar', + anchor: 'calendar', + signature: 'Calendar: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only calendar anatomy; it does not own dates, grid focus, selection, or month navigation.', + }, + { + name: 'CalendarBody', + anchor: 'calendar-body', + signature: 'CalendarBody: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-body` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CalendarCaption', + anchor: 'calendar-caption', + signature: + 'CalendarCaption: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-caption` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CalendarCell', + anchor: 'calendar-cell', + signature: 'CalendarCell: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-cell` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CalendarDay', + anchor: 'calendar-day', + signature: + 'CalendarDay: (props: CatalogComponentProps<HTMLButtonElement> & { disabled?: boolean; outside?: boolean; rangeEnd?: boolean; rangeMiddle?: boolean; rangeStart?: boolean; selected?: boolean; today?: boolean; }) => JSX.Element', + typeOnly: true, + summary: + 'Renders a single selectable day cell in the calendar grid, with selection/range/today state exposed as data attributes.', + }, + { + name: 'CalendarGrid', + anchor: 'calendar-grid', + signature: 'CalendarGrid: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-grid` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CalendarHead', + anchor: 'calendar-head', + signature: 'CalendarHead: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-head` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CalendarHeader', + anchor: 'calendar-header', + signature: + 'CalendarHeader: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-header` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CalendarNav', + anchor: 'calendar-nav', + signature: 'CalendarNav: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-nav` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CalendarNextButton', + anchor: 'calendar-next-button', + signature: + 'CalendarNextButton: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', + typeOnly: true, + summary: 'Button that navigates the calendar to the next month.', + }, + { + name: 'CalendarPreviousButton', + anchor: 'calendar-previous-button', + signature: + 'CalendarPreviousButton: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', + typeOnly: true, + summary: 'Button that navigates the calendar to the previous month.', + }, + { + name: 'CalendarRow', + anchor: 'calendar-row', + signature: 'CalendarRow: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-row` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'Card', + anchor: 'card', + signature: 'Card: (props: CardProps) => JSX.Element', + typeOnly: true, + summary: + 'Root card container; applies the `card` class and an optional `variant` modifier.', + }, + { + name: 'CardAction', + anchor: 'card-action', + signature: 'CardAction: (props: CardActionProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders an action/control region of a {@link Card}, typically positioned alongside the header.', + }, + { + name: 'CardActionProps', + anchor: 'card-action-props', + signature: + 'CardActionProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link CardAction } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'CardContent', + anchor: 'card-content', + signature: 'CardContent: (props: CardContentProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the main content region of a {@link Card}.', + }, + { + name: 'CardContentProps', + anchor: 'card-content-props', + signature: + 'CardContentProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link CardContent } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'CardDescription', + anchor: 'card-description', + signature: + 'CardDescription: (props: CardDescriptionProps) => JSX.Element', + typeOnly: true, + summary: "Renders a {@link Card}'s supporting description text.", + }, + { + name: 'CardDescriptionProps', + anchor: 'card-description-props', + signature: + 'CardDescriptionProps: ParagraphProps & {\n children?: unknown;\n ref?: Ref<HTMLParagraphElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link CardDescription } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLParagraphElement>;', + }, + ], + }, + { + name: 'CardFooter', + anchor: 'card-footer', + signature: 'CardFooter: (props: CardFooterProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the footer region of a {@link Card}.', + }, + { + name: 'CardFooterProps', + anchor: 'card-footer-props', + signature: + 'CardFooterProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link CardFooter } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'CardHeader', + anchor: 'card-header', + signature: 'CardHeader: (props: CardHeaderProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the header region of a {@link Card}.', + }, + { + name: 'CardHeaderProps', + anchor: 'card-header-props', + signature: + 'CardHeaderProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link CardHeader } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'CardProps', + anchor: 'card-props', + signature: + 'CardProps: DivProps & {\n children?: unknown;\n variant?: CardVariant;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link Card } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: CardVariant | undefined;', + }, + ], + }, + { + name: 'CardTitle', + anchor: 'card-title', + signature: 'CardTitle: (props: CardTitleProps) => JSX.Element', + typeOnly: true, + summary: + "Renders a {@link Card}'s title, defaulting to an `<h3>` (override with `titleAs`).", + }, + { + name: 'CardTitleHeadingTag', + anchor: 'card-title-heading-tag', + signature: 'CardTitleHeadingTag: "h1" | "h2" | "h3" | "h4" | "h5" | "h6"', + typeOnly: true, + summary: "Heading tag allowed for a card's title via `titleAs`.", + }, + { + name: 'CardTitleProps', + anchor: 'card-title-props', + signature: + 'CardTitleProps: HeadingProps & {\n children?: unknown;\n /** Choose the level that follows the surrounding document hierarchy. */\n titleAs?: CardTitleHeadingTag;\n ref?: Ref<HTMLHeadingElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link CardTitle } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLHeadingElement>;', + }, + { + name: 'titleAs', + summary: + 'Choose the level that follows the surrounding document hierarchy.', + signature: 'titleAs?: CardTitleHeadingTag | undefined;', + }, + ], + }, + { + name: 'CardVariant', + anchor: 'card-variant', + signature: 'CardVariant: "default" | "raised"', + typeOnly: true, + summary: 'Visual style of a {@link CardProps} card.', + }, + { + name: 'Carousel', + anchor: 'carousel', + signature: 'Carousel: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only carousel anatomy; it does not own an active slide, scrolling, or keyboard navigation.', + }, + { + name: 'CarouselContent', + anchor: 'carousel-content', + signature: + 'CarouselContent: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `carousel-content` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CarouselItem', + anchor: 'carousel-item', + signature: 'CarouselItem: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `carousel-item` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CarouselNext', + anchor: 'carousel-next', + signature: + 'CarouselNext: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', + typeOnly: true, + summary: 'Button that navigates the carousel to the next item.', + }, + { + name: 'CarouselPrevious', + anchor: 'carousel-previous', + signature: + 'CarouselPrevious: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', + typeOnly: true, + summary: 'Button that navigates the carousel to the previous item.', + }, + { + name: 'CAT_THEME_NAMES', + anchor: 'cat-theme-names', + signature: + 'CAT_THEME_NAMES: readonly ["tabby", "ginger", "tuxedo", "calico", "torty"]', + typeOnly: true, + summary: 'Names of the built-in "cat" theme presets.', + }, + { + name: 'CAT_THEME_OPTIONS', + anchor: 'cat-theme-options', + signature: 'CAT_THEME_OPTIONS: readonly ThemeOption[]', + typeOnly: true, + summary: + 'Theme options for the built-in "cat" theme presets, keyed to {@link CAT_THEME_NAMES}.', + }, + { + name: 'CatalogComponentProps', + anchor: 'catalog-component-props', + signature: + 'CatalogComponentProps: Record<string, unknown> & {\n as?: CatalogElement;\n asChild?: boolean;\n children?: unknown;\n class?: string;\n ref?: Ref<TElement>;\n}', + typeOnly: true, + summary: + 'Shared prop shape for the shadcn-compatible catalog primitives below: a\npolymorphic `as`/`asChild` element plus passthrough attributes.', + members: [ + { + name: 'as', + summary: '', + signature: 'as?: keyof JSX.IntrinsicElements | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'class', + summary: '', + signature: 'class?: string | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<TElement>;', + }, + ], + }, + { + name: 'CatThemeName', + anchor: 'cat-theme-name', + signature: 'CatThemeName: (typeof CAT_THEME_NAMES)[number]', + typeOnly: true, + summary: 'A built-in "cat" theme name, one of {@link CAT_THEME_NAMES}.', + }, + { + name: 'Center', + anchor: 'center', + signature: 'Center: (props: CenterProps) => JSX.Element', + typeOnly: true, + summary: + 'Centers content on both axes within the supplied Block dimensions.', + }, + { + name: 'CenterProps', + anchor: 'center-props', + signature: + 'CenterProps: WithoutOwnedLayout<BlockProps, "align" | "justify"> & {\n align?: never;\n justify?: never;\n}', + typeOnly: true, + members: [ + { + name: 'align', + summary: '', + signature: 'align?: undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: unknown;', + }, + { + name: 'background', + summary: '', + signature: 'background?: unknown;', + }, + { + name: 'border', + summary: '', + signature: 'border?: unknown;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: unknown;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: unknown;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: unknown;', + }, + { + name: 'center', + summary: '', + signature: 'center?: unknown;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: unknown;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: unknown;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: unknown;', + }, + { + name: 'height', + summary: '', + signature: 'height?: unknown;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: unknown;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: undefined;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: unknown;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: unknown;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: unknown;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: unknown;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: unknown;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: unknown;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: unknown;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: unknown;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: unknown;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: unknown;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: unknown;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: unknown;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: unknown;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: unknown;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: unknown;', + }, + { + name: 'top', + summary: '', + signature: 'top?: unknown;', + }, + { + name: 'width', + summary: '', + signature: 'width?: unknown;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: unknown;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: unknown;', + }, + ], + }, + { + name: 'Checkbox', + anchor: 'checkbox', + signature: + 'Checkbox: { (props: CheckboxInputProps): JSX.Element; (props: CheckboxAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Headless Checkbox component\n\n## Responsibilities\n- Apply aria-checked for checkbox state signaling\n- Handle indeterminate state for native and asChild hosts\n- Support controlled and uncontrolled checked state\n- Forward props and refs to native input or child element\n- Preserve native checkbox semantics and apply checkbox behavior to asChild hosts\n\n## Non-Responsibilities\n- Form submission orchestration beyond native input props\n\n## Invariants\n- MUST NOT add role="button" (native inputs are role="checkbox")\n- checked state may be controlled or uncontrolled\n- indeterminate overrides checked for state signaling\n- For asChild, consumer MUST provide role="checkbox"\nRenders the `checkbox` part of `checkbox` with `role="checkbox"`.\n\nSupports polymorphic rendering via `asChild`.', + tags: { + example: [ + 'Native checkbox input\n```tsx\nconst checked = state(false);\n<Checkbox checked={checked()} onPress={() => checked.set(!checked())} />\n```', + 'Polymorphic rendering (asChild)\n```tsx\n<Checkbox asChild checked={agreed} onPress={toggleAgree}>\n<div role="checkbox">I agree to terms</div>\n</Checkbox>\n```', + 'Indeterminate state (partial selection)\n```tsx\n<Checkbox checked={someChecked} indeterminate={!allChecked && someChecked} onPress={toggleAll}>\nSelect All\n</Checkbox>\n```', + ], + }, + }, + { + name: 'Close', + anchor: 'close', + signature: 'Close: (props: CloseNativeProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders a dismiss ("×") icon button, built on top of `Button`, defaulting to an icon-sized ghost variant with an accessible `label`.', + }, + { + name: 'CloseNativeProps', + anchor: 'close-native-props', + signature: 'CloseNativeProps: ButtonNativeProps & CloseOwnProps', + typeOnly: true, + summary: 'Props for the {@link Close } component.', + members: [ + { + name: 'label', + summary: '', + signature: 'label?: string | undefined;', + }, + ], + }, + { + name: 'CloseOwnProps', + anchor: 'close-own-props', + signature: 'CloseOwnProps: {\n label?: string;\n}', + typeOnly: true, + summary: + 'Props specific to {@link Close }, layered on top of {@link ButtonNativeProps}.', + members: [ + { + name: 'label', + summary: '', + signature: 'label?: string | undefined;', + }, + ], + }, + { + name: 'Cluster', + anchor: 'cluster', + signature: 'Cluster: (props: ClusterProps) => JSX.Element', + typeOnly: true, + summary: + 'Wrapping horizontal content flow for actions, tags, and compact controls.', + }, + { + name: 'ClusterProps', + anchor: 'cluster-props', + signature: + 'ClusterProps: WithoutOwnedLayout<BlockProps, "direction" | "rowFrom" | "wrap"> & {\n direction?: never;\n rowFrom?: never;\n wrap?: never;\n}', + typeOnly: true, + members: [ + { + name: 'align', + summary: '', + signature: 'align?: unknown;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: unknown;', + }, + { + name: 'background', + summary: '', + signature: 'background?: unknown;', + }, + { + name: 'border', + summary: '', + signature: 'border?: unknown;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: unknown;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: unknown;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: unknown;', + }, + { + name: 'center', + summary: '', + signature: 'center?: unknown;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: unknown;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: unknown;', + }, + { + name: 'height', + summary: '', + signature: 'height?: unknown;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: unknown;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: unknown;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: unknown;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: unknown;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: unknown;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: unknown;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: unknown;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: unknown;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: unknown;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: unknown;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: unknown;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: unknown;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: unknown;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: undefined;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: unknown;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: unknown;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: unknown;', + }, + { + name: 'top', + summary: '', + signature: 'top?: unknown;', + }, + { + name: 'width', + summary: '', + signature: 'width?: unknown;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: unknown;', + }, + ], + }, + { + name: 'Collapsible', + anchor: 'collapsible', + signature: 'Collapsible: (props: CollapsibleProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a part of `collapsible`.', + }, + { + name: 'CollapsibleContent', + anchor: 'collapsible-content', + signature: + 'CollapsibleContent: { (props: CollapsibleContentProps): JSX.Element | null; (props: CollapsibleContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `collapsible-content` part of `collapsible`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'CollapsibleTrigger', + anchor: 'collapsible-trigger', + signature: + 'CollapsibleTrigger: { (props: CollapsibleTriggerProps): JSX.Element; (props: CollapsibleTriggerAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `collapsible-trigger` part of `collapsible`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'Combobox', + anchor: 'combobox', + signature: 'Combobox: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only combobox anatomy; it does not own value, popup, filtering, focus, or ARIA state.', + }, + { + name: 'ComboboxInput', + anchor: 'combobox-input', + signature: + 'ComboboxInput: (props: CatalogComponentProps<HTMLInputElement>) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only combobox input; consumers supplying behavior also own its complete ARIA contract.', + }, + { + name: 'ComboboxList', + anchor: 'combobox-list', + signature: 'ComboboxList: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `combobox-list` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'ComboboxOption', + anchor: 'combobox-option', + signature: + 'ComboboxOption: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `combobox-option` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'Command', + anchor: 'command', + signature: 'Command: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only command anatomy; it does not own filtering, selection, focus, or keyboard commands.', + }, + { + name: 'CommandDialog', + anchor: 'command-dialog', + signature: 'CommandDialog: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-dialog` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CommandEmpty', + anchor: 'command-empty', + signature: 'CommandEmpty: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-empty` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CommandGroup', + anchor: 'command-group', + signature: 'CommandGroup: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-group` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CommandGroupHeading', + anchor: 'command-group-heading', + signature: + 'CommandGroupHeading: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-group-heading` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CommandHeader', + anchor: 'command-header', + signature: 'CommandHeader: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-header` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CommandInput', + anchor: 'command-input', + signature: + 'CommandInput: (props: CatalogComponentProps<HTMLInputElement>) => JSX.Element', + typeOnly: true, + summary: "Renders the command palette's search `<input>`.", + }, + { + name: 'CommandItem', + anchor: 'command-item', + signature: + 'CommandItem: (props: CatalogComponentProps & { active?: boolean; disabled?: boolean; selected?: boolean; }) => JSX.Element', + typeOnly: true, + summary: + 'Renders a selectable command list entry, exposing `active`/`disabled`/`selected` as ARIA and data attributes.', + }, + { + name: 'CommandList', + anchor: 'command-list', + signature: 'CommandList: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-list` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CommandPalette', + anchor: 'command-palette', + signature: 'CommandPalette: (props: CommandPaletteProps) => JSX.Element', + typeOnly: true, + summary: + 'Root dialog wrapper for a searchable command palette. Manages open state\n(controlled or uncontrolled), tracks the triggering element, and restores\nfocus to it after the palette closes.', + }, + { + name: 'CommandPaletteContent', + anchor: 'command-palette-content', + signature: + 'CommandPaletteContent: (props: CommandPaletteContentProps) => JSX.Element', + typeOnly: true, + summary: + 'Dialog content for a {@link CommandPalette}: renders the overlay, an\naccessible (visually hidden) title/description, and a `Command` list,\nmoving initial focus to `initialFocus` (defaults to the search input) once\nmounted, and optionally suppressing dismiss-on-escape/backdrop.', + }, + { + name: 'CommandPaletteContentProps', + anchor: 'command-palette-content-props', + signature: + 'CommandPaletteContentProps: Omit<DialogContentProps, "children" | "title" | "onEscapeKeyDown" | "onInteractOutside" | "onPointerDownOutside"> & {\n children?: unknown;\n title: string;\n description?: string;\n initialFocus?: string | (() => HTMLElement | null) | false;\n closeOnBackdrop?: boolean;\n closeOnEscape?: boolean;\n overlayProps?: DialogOverlayProps;\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n onInteractOutside?: (event: Event) => void;\n onPointerDownOutside?: (event: PointerEvent) => void;\n}', + typeOnly: true, + summary: 'Props for the {@link CommandPaletteContent } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'closeOnBackdrop', + summary: '', + signature: 'closeOnBackdrop?: boolean | undefined;', + }, + { + name: 'closeOnEscape', + summary: '', + signature: 'closeOnEscape?: boolean | undefined;', + }, + { + name: 'description', + summary: '', + signature: 'description?: string | undefined;', + }, + { + name: 'initialFocus', + summary: '', + signature: + 'initialFocus?: string | false | (() => HTMLElement | null) | undefined;', + }, + { + name: 'onEscapeKeyDown', + summary: '', + signature: + 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', + }, + { + name: 'onInteractOutside', + summary: '', + signature: + 'onInteractOutside?: ((event: Event) => void) | undefined;', + }, + { + name: 'onPointerDownOutside', + summary: '', + signature: + 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', + }, + { + name: 'overlayProps', + summary: '', + signature: 'overlayProps?: DialogOverlayProps | undefined;', + }, + { + name: 'title', + summary: '', + signature: 'title: string;', + }, + ], + }, + { + name: 'CommandPaletteLink', + anchor: 'command-palette-link', + signature: + 'CommandPaletteLink: (props: CommandPaletteLinkProps) => JSX.Element', + typeOnly: true, + summary: + 'A navigable result row that closes the palette on selection (unless `closeOnSelect` is `false`) and supports cancelling navigation via `onBeforeNavigate`.', + }, + { + name: 'CommandPaletteLinkProps', + anchor: 'command-palette-link-props', + signature: + 'CommandPaletteLinkProps: LinkProps & {\n closeOnSelect?: boolean;\n onBeforeNavigate?: (event: Event) => void;\n}', + typeOnly: true, + summary: 'Props for the {@link CommandPaletteLink } component.', + members: [ + { + name: 'closeOnSelect', + summary: '', + signature: 'closeOnSelect?: boolean | undefined;', + }, + { + name: 'onBeforeNavigate', + summary: '', + signature: 'onBeforeNavigate?: ((event: Event) => void) | undefined;', + }, + ], + }, + { + name: 'CommandPaletteList', + anchor: 'command-palette-list', + signature: + 'CommandPaletteList: (props: CommandPaletteListProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `<ul>` list wrapper for {@link CommandPalette} results.', + }, + { + name: 'CommandPaletteListProps', + anchor: 'command-palette-list-props', + signature: + 'CommandPaletteListProps: Omit<JSX.IntrinsicElements["ul"], "children" | "ref"> & {\n children?: unknown;\n ref?: Ref<HTMLUListElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link CommandPaletteList } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLUListElement>;', + }, + ], + }, + { + name: 'CommandPaletteProps', + anchor: 'command-palette-props', + signature: 'CommandPaletteProps: DialogProps', + typeOnly: true, + summary: 'Props for the {@link CommandPalette } component.', + }, + { + name: 'CommandPaletteTrigger', + anchor: 'command-palette-trigger', + signature: + 'CommandPaletteTrigger: { (props: CommandPaletteTriggerProps): JSX.Element; (props: CommandPaletteTriggerAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Trigger that opens the {@link CommandPalette}, registering itself so focus returns here on close.', + }, + { + name: 'CommandPaletteTriggerAsChildProps', + anchor: 'command-palette-trigger-as-child-props', + signature: 'CommandPaletteTriggerAsChildProps: DialogTriggerAsChildProps', + typeOnly: true, + summary: + 'Props for {@link CommandPaletteTrigger } rendered with `asChild`.', + }, + { + name: 'CommandPaletteTriggerProps', + anchor: 'command-palette-trigger-props', + signature: 'CommandPaletteTriggerProps: DialogTriggerProps', + typeOnly: true, + summary: 'Props for the {@link CommandPaletteTrigger } component.', + }, + { + name: 'CommandSeparator', + anchor: 'command-separator', + signature: + 'CommandSeparator: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-separator` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CommandShortcut', + anchor: 'command-shortcut', + signature: + 'CommandShortcut: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-shortcut` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'Container', + anchor: 'container', + signature: 'Container: (props: ContainerProps) => JSX.Element', + typeOnly: true, + summary: + 'Centers content in a max-width column with page gutters (defaults to the `"page"` {@link BlockSize }).', + }, + { + name: 'ContainerProps', + anchor: 'container-props', + signature: + 'ContainerProps: Omit<BlockDivProps, "maxWidth"> & {\n size?: BlockSize;\n}', + typeOnly: true, + summary: 'Props for the {@link Container } component.', + members: [ + { + name: 'size', + summary: '', + signature: 'size?: BlockSize | undefined;', + }, + ], + }, + { + name: 'ContextMenu', + anchor: 'context-menu', + signature: 'Dropdown: (props: DropdownProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a part of `dropdown`.', + }, + { + name: 'ContextMenuContent', + anchor: 'context-menu-content', + signature: + 'DropdownContent$1: { (props: DropdownContentProps): JSX.Element | null; (props: DropdownContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + "Dropdown/context-menu content wrapper around `@askrjs/ui`'s `DropdownContent`.\nNon-`asChild` usage lazily evaluates `children` inside a body component so\nthey're only rendered once the dropdown is actually open.", + }, + { + name: 'ContextMenuGroup', + anchor: 'context-menu-group', + signature: + 'DropdownGroup: (props: DropdownGroupProps | DropdownGroupAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `dropdown-group` part of `dropdown` with `role="group"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'ContextMenuItem', + anchor: 'context-menu-item', + signature: + 'DropdownItem: { (props: DropdownItemProps): JSX.Element | null; (props: DropdownItemAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders a part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'ContextMenuLabel', + anchor: 'context-menu-label', + signature: + 'DropdownLabel: (props: DropdownLabelProps | DropdownLabelAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `dropdown-label` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'ContextMenuPortal', + anchor: 'context-menu-portal', + signature: + 'DropdownPortal: (props: DropdownPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `dropdown`.', + }, + { + name: 'ContextMenuSeparator', + anchor: 'context-menu-separator', + signature: + 'DropdownSeparator: (props: DropdownSeparatorProps | DropdownSeparatorAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `dropdown-separator` part of `dropdown` with `role="separator"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'ContextMenuTrigger', + anchor: 'context-menu-trigger', + signature: + 'DropdownTrigger: { (props: DropdownTriggerProps): JSX.Element | null; (props: DropdownTriggerAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `dropdown-trigger` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'CopyButton', + anchor: 'copy-button', + signature: 'CopyButton: (props: CopyButtonProps) => JSX.Element', + typeOnly: true, + summary: + 'Copies text with visual and assistive success/failure feedback.', + }, + { + name: 'CopyButtonProps', + anchor: 'copy-button-props', + signature: + 'CopyButtonProps: Omit<ButtonNativeProps, "children" | "onPress"> & {\n text: string;\n label: string;\n successMessage?: string;\n failureMessage?: string;\n resetAfter?: number;\n}', + typeOnly: true, + members: [ + { + name: 'failureMessage', + summary: '', + signature: 'failureMessage?: string | undefined;', + }, + { + name: 'label', + summary: '', + signature: 'label: string;', + }, + { + name: 'resetAfter', + summary: '', + signature: 'resetAfter?: number | undefined;', + }, + { + name: 'successMessage', + summary: '', + signature: 'successMessage?: string | undefined;', + }, + { + name: 'text', + summary: '', + signature: 'text: string;', + }, + ], + }, + { + name: 'DataTable', + anchor: 'data-table', + signature: 'DataTable: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only container for the `data-table` catalog slot. It does not sort, filter, select, or paginate data.\nCompose semantic `Table`/`VirtualTable` primitives with application-owned data state for those behaviors.', + }, + { + name: 'DatePicker', + anchor: 'date-picker', + signature: 'DatePicker: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only `date-picker` container. It does not implement a popup calendar, formatting, or\ncalendar-grid keyboard behavior; pair it with {@link DatePickerInput} for a native date input.', + }, + { + name: 'DatePickerInput', + anchor: 'date-picker-input', + signature: + 'DatePickerInput: (props: CatalogComponentProps<HTMLInputElement>) => JSX.Element', + typeOnly: true, + summary: + 'Native `<input type="date">` styling slot; browser behavior and localization remain native.', + }, + { + name: 'DebouncedInput', + anchor: 'debounced-input', + signature: 'DebouncedInput: (props: DebouncedInputProps) => JSX.Element', + typeOnly: true, + summary: + 'DebouncedInput is a convenience wrapper around Input that emits a settled\nvalue for search and filter surfaces.\n\nOne component-owned timer is re-timed when `debounceMs` changes (or emits\nat once when the delay drops to zero). A pending value is delivered to the latest\n`onDebouncedInput`, is dropped when `onDebouncedInput` is removed, and is\ncancelled on unmount.', + }, + { + name: 'DEFAULT_THEME_OPTIONS', + anchor: 'default-theme-options', + signature: 'DEFAULT_THEME_OPTIONS: readonly ThemeOption[]', + typeOnly: true, + summary: + 'Default light/dark/system theme options used by {@link ThemeScope} and {@link ThemePicker}.', + }, + { + name: 'Dialog', + anchor: 'dialog', + signature: 'Dialog: (props: DialogProps) => JSX.Element', + typeOnly: true, + summary: 'Coordinates the Dialog trigger, portal, overlay, and content.', + tags: { + example: [ + '```tsx\n<Dialog>\n <DialogTrigger>Open dialog</DialogTrigger>\n <DialogPortal>\n <DialogOverlay />\n <DialogContent>Confirm action</DialogContent>\n </DialogPortal>\n</Dialog>\n```', + ], + }, + }, + { + name: 'DialogClose', + anchor: 'dialog-close', + signature: + 'DialogClose: { (props: DialogCloseProps): JSX.Element; (props: DialogCloseAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `dialog-close` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DialogContent', + anchor: 'dialog-content', + signature: + 'DialogContent: { (props: DialogContentProps): JSX.Element | null; (props: DialogContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `dialog-content` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DialogDescription', + anchor: 'dialog-description', + signature: + 'DialogDescription: { (props: DialogDescriptionProps): JSX.Element; (props: DialogDescriptionAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `dialog-description` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DialogOverlay', + anchor: 'dialog-overlay', + signature: + 'DialogOverlay: { (props: DialogOverlayProps): JSX.Element | null; (props: DialogOverlayAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `dialog-overlay` part of `dialog`.\n\nWith `@askrjs/themes/default`, the overlay is fully styled out of the box\nwith the shared backdrop token, blur, stacking, and fade animation. Standard\nDialog and AlertDialog usage requires no additional overlay CSS; customize\nthe theme tokens instead of applying a competing background class.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DialogPortal', + anchor: 'dialog-portal', + signature: + 'DialogPortal: (props: DialogPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `dialog`.', + }, + { + name: 'DialogProps', + anchor: 'dialog-props', + signature: 'DialogProps: DialogOwnProps', + typeOnly: true, + summary: 'Props for Dialog.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'defaultOpen', + summary: '', + signature: 'defaultOpen?: boolean | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'modal', + summary: '', + signature: 'modal?: boolean | undefined;', + }, + { + name: 'onOpenChange', + summary: '', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', + }, + { + name: 'open', + summary: '', + signature: 'open?: boolean | undefined;', + }, + ], + }, + { + name: 'DialogTitle', + anchor: 'dialog-title', + signature: + 'DialogTitle: { (props: DialogTitleProps): JSX.Element; (props: DialogTitleAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `dialog-title` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DialogTrigger', + anchor: 'dialog-trigger', + signature: + 'DialogTrigger: { (props: DialogTriggerProps): JSX.Element; (props: DialogTriggerAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `dialog-trigger` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'Direction', + anchor: 'direction', + signature: + 'Direction: (props: CatalogComponentProps & { dir?: "ltr" | "rtl"; }) => JSX.Element', + typeOnly: true, + summary: + 'Sets the `dir` attribute (defaulting to `"ltr"`) on its wrapping element for RTL/LTR scoping.', + }, + { + name: 'Dropdown', + anchor: 'dropdown', + signature: 'Dropdown: (props: DropdownProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a part of `dropdown`.', + }, + { + name: 'DropdownContent', + anchor: 'dropdown-content', + signature: + 'DropdownContent$1: { (props: DropdownContentProps): JSX.Element | null; (props: DropdownContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + "Dropdown/context-menu content wrapper around `@askrjs/ui`'s `DropdownContent`.\nNon-`asChild` usage lazily evaluates `children` inside a body component so\nthey're only rendered once the dropdown is actually open.", + }, + { + name: 'DropdownGroup', + anchor: 'dropdown-group', + signature: + 'DropdownGroup: (props: DropdownGroupProps | DropdownGroupAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `dropdown-group` part of `dropdown` with `role="group"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DropdownItem', + anchor: 'dropdown-item', + signature: + 'DropdownItem: { (props: DropdownItemProps): JSX.Element | null; (props: DropdownItemAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders a part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DropdownItemVariant', + anchor: 'dropdown-item-variant', + signature: "DropdownItemVariant: 'default' | 'destructive'", + typeOnly: true, + summary: 'Dropdown Item Variant.', + }, + { + name: 'DropdownLabel', + anchor: 'dropdown-label', + signature: + 'DropdownLabel: (props: DropdownLabelProps | DropdownLabelAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `dropdown-label` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DropdownMenu', + anchor: 'dropdown-menu', + signature: 'Dropdown: (props: DropdownProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a part of `dropdown`.', + }, + { + name: 'DropdownMenuContent', + anchor: 'dropdown-menu-content', + signature: + 'DropdownContent$1: { (props: DropdownContentProps): JSX.Element | null; (props: DropdownContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + "Dropdown/context-menu content wrapper around `@askrjs/ui`'s `DropdownContent`.\nNon-`asChild` usage lazily evaluates `children` inside a body component so\nthey're only rendered once the dropdown is actually open.", + }, + { + name: 'DropdownMenuGroup', + anchor: 'dropdown-menu-group', + signature: + 'DropdownGroup: (props: DropdownGroupProps | DropdownGroupAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `dropdown-group` part of `dropdown` with `role="group"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DropdownMenuItem', + anchor: 'dropdown-menu-item', + signature: + 'DropdownItem: { (props: DropdownItemProps): JSX.Element | null; (props: DropdownItemAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders a part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DropdownMenuLabel', + anchor: 'dropdown-menu-label', + signature: + 'DropdownLabel: (props: DropdownLabelProps | DropdownLabelAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `dropdown-label` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DropdownMenuPortal', + anchor: 'dropdown-menu-portal', + signature: + 'DropdownPortal: (props: DropdownPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `dropdown`.', + }, + { + name: 'DropdownMenuSeparator', + anchor: 'dropdown-menu-separator', + signature: + 'DropdownSeparator: (props: DropdownSeparatorProps | DropdownSeparatorAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `dropdown-separator` part of `dropdown` with `role="separator"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DropdownMenuTrigger', + anchor: 'dropdown-menu-trigger', + signature: + 'DropdownTrigger: { (props: DropdownTriggerProps): JSX.Element | null; (props: DropdownTriggerAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `dropdown-trigger` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DropdownPortal', + anchor: 'dropdown-portal', + signature: + 'DropdownPortal: (props: DropdownPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `dropdown`.', + }, + { + name: 'DropdownSeparator', + anchor: 'dropdown-separator', + signature: + 'DropdownSeparator: (props: DropdownSeparatorProps | DropdownSeparatorAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `dropdown-separator` part of `dropdown` with `role="separator"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DropdownTrigger', + anchor: 'dropdown-trigger', + signature: + 'DropdownTrigger: { (props: DropdownTriggerProps): JSX.Element | null; (props: DropdownTriggerAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `dropdown-trigger` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DropdownTriggerSize', + anchor: 'dropdown-trigger-size', + signature: "DropdownTriggerSize: 'md' | 'icon'", + typeOnly: true, + summary: 'Dropdown Trigger Size.', + }, + { + name: 'DropdownTriggerVariant', + anchor: 'dropdown-trigger-variant', + signature: "DropdownTriggerVariant: 'default' | 'ghost'", + typeOnly: true, + summary: 'Dropdown Trigger Variant.', + }, + { + name: 'Empty', + anchor: 'empty', + signature: 'Empty: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `empty` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'EmptyContent', + anchor: 'empty-content', + signature: 'EmptyContent: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `empty-content` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'EmptyDescription', + anchor: 'empty-description', + signature: + 'EmptyDescription: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `empty-description` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'EmptyHeader', + anchor: 'empty-header', + signature: 'EmptyHeader: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `empty-header` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'EmptyMedia', + anchor: 'empty-media', + signature: 'EmptyMedia: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `empty-media` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'EmptyState', + anchor: 'empty-state', + signature: 'EmptyState: (props: EmptyStateProps) => JSX.Element', + typeOnly: true, + summary: + 'Centered placeholder for empty lists/views: an icon, title (default `<h2>`), description, extra content, and an action row.', + }, + { + name: 'EmptyStateHeadingTag', + anchor: 'empty-state-heading-tag', + signature: + 'EmptyStateHeadingTag: "h1" | "h2" | "h3" | "h4" | "h5" | "h6"', + typeOnly: true, + summary: "Heading tag allowed for an empty state's title via `titleAs`.", + }, + { + name: 'EmptyStateProps', + anchor: 'empty-state-props', + signature: + 'EmptyStateProps: BlockDivProps & {\n icon?: unknown;\n title?: unknown;\n titleAs?: EmptyStateHeadingTag;\n description?: unknown;\n action?: unknown;\n}', + typeOnly: true, + summary: 'Props for the {@link EmptyState } component.', + members: [ + { + name: 'action', + summary: '', + signature: 'action?: unknown;', + }, + { + name: 'align', + summary: '', + signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', + }, + { + name: 'as', + summary: '', + signature: 'as?: "div" | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'background', + summary: '', + signature: + 'background?: ResponsiveValue<BlockBackground> | undefined;', + }, + { + name: 'border', + summary: '', + signature: 'border?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'center', + summary: '', + signature: 'center?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'className', + summary: '', + signature: 'className?: string | undefined;', + }, + { + name: 'description', + summary: '', + signature: 'description?: unknown;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'height', + summary: '', + signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'icon', + summary: '', + signature: 'icon?: unknown;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: BlockRowFrom | undefined;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: boolean | undefined;', + }, + { + name: 'title', + summary: '', + signature: 'title?: unknown;', + }, + { + name: 'titleAs', + summary: '', + signature: 'titleAs?: EmptyStateHeadingTag | undefined;', + }, + { + name: 'top', + summary: '', + signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + }, + ], + }, + { + name: 'EmptyTitle', + anchor: 'empty-title', + signature: 'EmptyTitle: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `empty-title` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'Field', + anchor: 'field', + signature: 'Field: (props: FieldProps) => JSX.Element', + typeOnly: true, + summary: + 'Groups a form control with its hint/error text, marking `data-invalid` when `invalid` is set.', + }, + { + name: 'FieldContent', + anchor: 'field-content', + signature: 'FieldContent: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `field-content` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'FieldDescription', + anchor: 'field-description', + signature: + 'FieldDescription: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `field-description` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'FieldError', + anchor: 'field-error', + signature: 'FieldError: (props: FieldErrorProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders validation error text for a {@link Field}, exposed with `role="alert"`.', + }, + { + name: 'FieldErrorProps', + anchor: 'field-error-props', + signature: + 'FieldErrorProps: ParagraphProps & {\n children?: unknown;\n ref?: Ref<HTMLParagraphElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link FieldError } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLParagraphElement>;', + }, + ], + }, + { + name: 'FieldGroup', + anchor: 'field-group', + signature: 'FieldGroup: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `field-group` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'FieldHint', + anchor: 'field-hint', + signature: 'FieldHint: (props: FieldHintProps) => JSX.Element', + typeOnly: true, + summary: 'Renders supporting hint text for a {@link Field}.', + }, + { + name: 'FieldHintProps', + anchor: 'field-hint-props', + signature: + 'FieldHintProps: ParagraphProps & {\n children?: unknown;\n ref?: Ref<HTMLParagraphElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link FieldHint } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLParagraphElement>;', + }, + ], + }, + { + name: 'FieldLabel', + anchor: 'field-label', + signature: 'FieldLabel: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `field-label` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'FieldLegend', + anchor: 'field-legend', + signature: 'FieldLegend: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `field-legend` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'FieldProps', + anchor: 'field-props', + signature: + 'FieldProps: DivProps & {\n children?: unknown;\n invalid?: boolean;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link Field } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'invalid', + summary: '', + signature: 'invalid?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'FieldSeparator', + anchor: 'field-separator', + signature: + 'FieldSeparator: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `field-separator` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'FieldSet', + anchor: 'field-set', + signature: 'FieldSet: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `field-set` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'FieldTitle', + anchor: 'field-title', + signature: 'FieldTitle: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `field-title` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'Footer', + anchor: 'footer', + signature: 'Footer: (props: FooterProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders a `<footer>`-element {@link Block } with a muted background and top border.', + }, + { + name: 'FooterContent', + anchor: 'footer-content', + signature: 'FooterContent: (props: FooterContentProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the main content wrapper of a {@link Footer}.', + }, + { + name: 'FooterContentProps', + anchor: 'footer-content-props', + signature: + 'FooterContentProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link FooterContent } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'FooterDescription', + anchor: 'footer-description', + signature: + 'FooterDescription: (props: FooterDescriptionProps) => JSX.Element', + typeOnly: true, + summary: 'Renders supporting description text within a {@link Footer}.', + }, + { + name: 'FooterDescriptionProps', + anchor: 'footer-description-props', + signature: + 'FooterDescriptionProps: ParagraphProps & {\n children?: unknown;\n ref?: Ref<HTMLParagraphElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link FooterDescription } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLParagraphElement>;', + }, + ], + }, + { + name: 'FooterLink', + anchor: 'footer-link', + signature: 'FooterLink: (props: FooterLinkProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a single link within a {@link Footer}.', + }, + { + name: 'FooterLinkProps', + anchor: 'footer-link-props', + signature: + 'FooterLinkProps: AnchorProps & {\n children?: unknown;\n ref?: Ref<HTMLAnchorElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link FooterLink } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLAnchorElement>;', + }, + ], + }, + { + name: 'FooterLinks', + anchor: 'footer-links', + signature: 'FooterLinks: (props: FooterLinksProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a `<nav>` wrapper for a group of {@link FooterLink}s.', + }, + { + name: 'FooterLinksProps', + anchor: 'footer-links-props', + signature: + 'FooterLinksProps: NavProps & {\n children?: unknown;\n ref?: Ref<HTMLElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link FooterLinks } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLElement>;', + }, + ], + }, + { + name: 'FooterProps', + anchor: 'footer-props', + signature: 'FooterProps: Omit<BlockElementProps<"footer">, "as">', + typeOnly: true, + summary: 'Props for the {@link Footer } component.', + }, + { + name: 'FooterSection', + anchor: 'footer-section', + signature: 'FooterSection: (props: FooterSectionProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a grouped section within a {@link Footer}.', + }, + { + name: 'FooterSectionProps', + anchor: 'footer-section-props', + signature: + 'FooterSectionProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link FooterSection } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'FooterTitle', + anchor: 'footer-title', + signature: 'FooterTitle: (props: FooterTitleProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a section title (`<h2>`) within a {@link Footer}.', + }, + { + name: 'FooterTitleProps', + anchor: 'footer-title-props', + signature: + 'FooterTitleProps: HeadingProps & {\n children?: unknown;\n ref?: Ref<HTMLHeadingElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link FooterTitle } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLHeadingElement>;', + }, + ], + }, + { + name: 'Form', + anchor: 'form', + signature: + 'Form: { (props: FormProps): JSX.Element; (props: FormAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `form`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'Grid', + anchor: 'grid', + signature: + 'Grid: <TElement extends GridElement = "div">(props: GridProps<TElement>) => JSX.Element', + typeOnly: true, + summary: + 'CSS grid layout primitive: turns `columns`/`gap`/`align` (each optionally responsive) into generated grid-template styles, rendering as `<div>` by default.', + }, + { + name: 'GridAlign', + anchor: 'grid-align', + signature: 'GridAlign: "start" | "center" | "end" | "stretch"', + typeOnly: true, + summary: '`align-items` value applied to a {@link Grid }.', + }, + { + name: 'GridColumns', + anchor: 'grid-columns', + signature: 'GridColumns: number | string', + typeOnly: true, + summary: + 'Column definition for {@link Grid }: a track count or a raw `grid-template-columns` string.', + }, + { + name: 'GridElement', + anchor: 'grid-element', + signature: 'GridElement: "div" | "section" | "ul"', + typeOnly: true, + summary: 'Element tags {@link Grid } can render as via its `as` prop.', + }, + { + name: 'GridProps', + anchor: 'grid-props', + signature: + 'GridProps: GridIntrinsicProps<TElement> & {\n as?: TElement;\n columns?: ResponsiveValue<GridColumns>;\n gap?: ResponsiveValue<BlockSpace>;\n align?: ResponsiveValue<GridAlign>;\n children?: unknown;\n ref?: Ref<HTMLElement>;\n}', + typeOnly: true, + summary: + 'Props for the {@link Grid } component, specialized for a given {@link GridElement} `TElement`.', + members: [ + { + name: 'align', + summary: '', + signature: 'align?: ResponsiveValue<GridAlign> | undefined;', + }, + { + name: 'as', + summary: '', + signature: 'as?: TElement | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'columns', + summary: '', + signature: 'columns?: ResponsiveValue<GridColumns> | undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLElement>;', + }, + ], + }, + { + name: 'Header', + anchor: 'header', + signature: 'Header: (props: HeaderProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders a `<header>`-element {@link Block } with a surface background and bottom border, optionally sticky-positioned via `position`/`sticky`.', + }, + { + name: 'HeaderProps', + anchor: 'header-props', + signature: + 'HeaderProps: Omit<BlockElementProps<"header">, "as" | "sticky"> & {\n position?: "sticky" | "static";\n sticky?: boolean;\n}', + typeOnly: true, + summary: 'Props for the {@link Header } component.', + members: [ + { + name: 'position', + summary: '', + signature: 'position?: "sticky" | "static" | undefined;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: boolean | undefined;', + }, + ], + }, + { + name: 'Heading', + anchor: 'heading', + signature: 'Heading: ({ level, ...props }: HeadingProps) => JSX.Element', + typeOnly: true, + summary: + 'Native semantic heading whose visual size is independent from its explicit document level.', + }, + { + name: 'HeadingLevel', + anchor: 'heading-level', + signature: 'HeadingLevel: 1 | 2 | 3 | 4 | 5 | 6', + typeOnly: true, + }, + { + name: 'HeadingProps', + anchor: 'heading-props', + signature: + 'HeadingProps: NativeHeadingProps & {\n level: HeadingLevel;\n size?: HeadingSize;\n tone?: TextTone;\n weight?: TextWeight;\n font?: TextFont;\n numeric?: TextNumeric;\n wrap?: TextWrap;\n truncate?: boolean;\n children?: unknown;\n ref?: Ref<HTMLHeadingElement>;\n}', + typeOnly: true, + summary: + 'Strongly typed semantic heading props with visual treatment independent from document level.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'font', + summary: '', + signature: 'font?: TextFont | undefined;', + }, + { + name: 'level', + summary: '', + signature: 'level: HeadingLevel;', + }, + { + name: 'numeric', + summary: '', + signature: 'numeric?: TextNumeric | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLHeadingElement>;', + }, + { + name: 'size', + summary: '', + signature: 'size?: HeadingSize | undefined;', + }, + { + name: 'tone', + summary: '', + signature: 'tone?: TextTone | undefined;', + }, + { + name: 'truncate', + summary: '', + signature: 'truncate?: boolean | undefined;', + }, + { + name: 'weight', + summary: '', + signature: 'weight?: TextWeight | undefined;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: TextWrap | undefined;', + }, + ], + }, + { + name: 'HeadingSize', + anchor: 'heading-size', + signature: 'HeadingSize: "sm" | "md" | "lg" | "xl" | "2xl" | "3xl"', + typeOnly: true, + }, + { + name: 'HoverCard', + anchor: 'hover-card', + signature: + 'HoverCard: (props: HoverCardProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: 'Renders a part of `hover-card`.', + }, + { + name: 'HoverCardContent', + anchor: 'hover-card-content', + signature: + 'HoverCardContent: { (props: HoverCardContentProps): JSX.Element | null; (props: HoverCardContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `hover-card-content` part of `hover-card` with `role="dialog"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'HoverCardPortal', + anchor: 'hover-card-portal', + signature: + 'HoverCardPortal: (props: HoverCardPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `hover-card`.', + }, + { + name: 'HoverCardTrigger', + anchor: 'hover-card-trigger', + signature: + 'HoverCardTrigger: { (props: HoverCardTriggerProps): JSX.Element; (props: HoverCardTriggerAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `hover-card-trigger` part of `hover-card`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'Input', + anchor: 'input', + signature: + 'Input: { (props: InputInputProps): JSX.Element; (props: InputAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `input` part of `input`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'InputGroup', + anchor: 'input-group', + signature: 'InputGroup: (props: InputGroupProps) => JSX.Element', + typeOnly: true, + summary: + 'Groups related inputs/addons together, optionally visually attached, with a horizontal or vertical orientation and `role="group"` by default.', + }, + { + name: 'InputGroupOrientation', + anchor: 'input-group-orientation', + signature: 'InputGroupOrientation: "horizontal" | "vertical"', + typeOnly: true, + summary: 'Layout direction of an {@link InputGroup }.', + }, + { + name: 'InputGroupProps', + anchor: 'input-group-props', + signature: + 'InputGroupProps: DivProps & {\n children?: unknown;\n attached?: boolean;\n orientation?: InputGroupOrientation;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link InputGroup } component.', + members: [ + { + name: 'attached', + summary: '', + signature: 'attached?: boolean | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: InputGroupOrientation | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'InputGroupText', + anchor: 'input-group-text', + signature: + 'InputGroupText: { (props: InputGroupTextProps): JSX.Element; (props: InputGroupTextAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders static text/label content within an {@link InputGroup}.', + }, + { + name: 'InputGroupTextAsChildProps', + anchor: 'input-group-text-as-child-props', + signature: + 'InputGroupTextAsChildProps: SpanProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + typeOnly: true, + summary: + 'Props for {@link InputGroupText } rendered with `asChild`, merging its attributes onto a single child element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + ], + }, + { + name: 'InputGroupTextProps', + anchor: 'input-group-text-props', + signature: + 'InputGroupTextProps: SpanProps & {\n asChild?: false;\n children?: unknown;\n ref?: Ref<HTMLSpanElement>;\n}', + typeOnly: true, + summary: + 'Props for {@link InputGroupText } rendered as its default `<span>` element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLSpanElement>;', + }, + ], + }, + { + name: 'InputOTP', + anchor: 'input-otp', + signature: 'InputOTP: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only OTP anatomy; it does not render an input or own value, focus, paste, or validation behavior.', + }, + { + name: 'InputOTPGroup', + anchor: 'input-otpgroup', + signature: 'InputOTPGroup: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `input-otp-group` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'InputOTPSeparator', + anchor: 'input-otpseparator', + signature: + 'InputOTPSeparator: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the visual separator between InputOTP groups (defaults to `"-"`).', + }, + { + name: 'InputOTPSlot', + anchor: 'input-otpslot', + signature: 'InputOTPSlot: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `input-otp-slot` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'Item', + anchor: 'item', + signature: + 'Item: (props: CatalogComponentProps & { active?: boolean; size?: "default" | "sm" | "xs"; variant?: "default" | "outline" | "muted"; }) => JSX.Element', + typeOnly: true, + summary: + 'Renders a generic list item part, exposing `active`/`size`/`variant` as data attributes.', + }, + { + name: 'ItemActions', + anchor: 'item-actions', + signature: 'ItemActions: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `item-actions` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'ItemContent', + anchor: 'item-content', + signature: 'ItemContent: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `item-content` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'ItemDescription', + anchor: 'item-description', + signature: + 'ItemDescription: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `item-description` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'ItemFooter', + anchor: 'item-footer', + signature: 'ItemFooter: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `item-footer` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'ItemGroup', + anchor: 'item-group', + signature: 'ItemGroup: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `item-group` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'ItemHeader', + anchor: 'item-header', + signature: 'ItemHeader: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `item-header` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'ItemMedia', + anchor: 'item-media', + signature: 'ItemMedia: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `item-media` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'ItemTitle', + anchor: 'item-title', + signature: 'ItemTitle: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `item-title` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'Kbd', + anchor: 'kbd', + signature: 'Kbd: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `kbd` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'Label', + anchor: 'label', + signature: + 'Label: { (props: LabelLabelProps): JSXElement; (props: LabelAsChildProps): JSXElement; }', + typeOnly: true, + summary: + 'Renders the `label` part of `label`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'Main', + anchor: 'main', + signature: 'Main: (props: MainProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders a `<main>`-element {@link Block } that grows to fill available space.', + }, + { + name: 'MainProps', + anchor: 'main-props', + signature: 'MainProps: Omit<BlockElementProps<"main">, "as">', + typeOnly: true, + summary: 'Props for the {@link Main } component.', + }, + { + name: 'Menubar', + anchor: 'menubar', + signature: 'Menubar: (props: MenubarProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a part of `menubar`.', + }, + { + name: 'MenubarContent', + anchor: 'menubar-content', + signature: + 'MenubarContent: { (props: MenubarContentProps): JSX.Element | null; (props: MenubarContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: 'Renders a part of `menubar`.', + }, + { + name: 'MenubarGroup', + anchor: 'menubar-group', + signature: + 'MenubarGroup: (props: MenubarGroupProps | MenubarGroupAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `menubar-group` part of `menubar` with `role="group"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'MenubarItem', + anchor: 'menubar-item', + signature: + 'MenubarItem: { (props: MenubarItemProps): JSX.Element | null; (props: MenubarItemAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders a part of `menubar`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'MenubarLabel', + anchor: 'menubar-label', + signature: + 'MenubarLabel: (props: MenubarLabelProps | MenubarLabelAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `menubar-label` part of `menubar`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'MenubarMenu', + anchor: 'menubar-menu', + signature: 'MenubarMenu: (props: MenubarMenuProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a part of `menubar`.', + }, + { + name: 'MenubarPortal', + anchor: 'menubar-portal', + signature: + 'MenubarPortal: (props: MenubarPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `menubar`.', + }, + { + name: 'MenubarSeparator', + anchor: 'menubar-separator', + signature: + 'MenubarSeparator: (props: MenubarSeparatorProps | MenubarSeparatorAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `menubar-separator` part of `menubar` with `role="separator"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'MenubarSub', + anchor: 'menubar-sub', + signature: 'MenubarSub: (props: MenubarSubProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a part of `menubar`.', + }, + { + name: 'MenubarSubContent', + anchor: 'menubar-sub-content', + signature: + 'MenubarSubContent: { (props: MenubarSubContentProps): JSX.Element | null; (props: MenubarSubContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: 'Renders a part of `menubar`.', + }, + { + name: 'MenubarSubTrigger', + anchor: 'menubar-sub-trigger', + signature: + 'MenubarSubTrigger: { (props: MenubarSubTriggerProps): JSX.Element | null; (props: MenubarSubTriggerAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders a part of `menubar`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'MenubarTrigger', + anchor: 'menubar-trigger', + signature: + 'MenubarTrigger: { (props: MenubarTriggerProps): JSX.Element | null; (props: MenubarTriggerAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders a part of `menubar`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'MetaStrip', + anchor: 'meta-strip', + signature: 'MetaStrip: (props: MetaStripProps) => JSX.Element', + typeOnly: true, + summary: + 'Semantic compact key/value facts with consistent inline or stacked wrapping.', + }, + { + name: 'MetaStripDensity', + anchor: 'meta-strip-density', + signature: 'MetaStripDensity: "inline" | "stacked"', + typeOnly: true, + }, + { + name: 'MetaStripItem', + anchor: 'meta-strip-item', + signature: + 'MetaStripItem: {\n label: string;\n value: string | number;\n caption?: string;\n font?: "body" | "mono";\n numeric?: "normal" | "tabular";\n}', + typeOnly: true, + }, + { + name: 'MetaStripProps', + anchor: 'meta-strip-props', + signature: + 'MetaStripProps: Omit<JSX.IntrinsicElements["dl"], "children" | "ref"> & {\n items: readonly MetaStripItem[];\n density?: MetaStripDensity;\n ref?: Ref<HTMLDListElement>;\n}', + typeOnly: true, + members: [ + { + name: 'density', + summary: '', + signature: 'density?: MetaStripDensity | undefined;', + }, + { + name: 'items', + summary: '', + signature: 'items: readonly MetaStripItem[];', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDListElement>;', + }, + ], + }, + { + name: 'NativeSelect', + anchor: 'native-select', + signature: + 'NativeSelect: (props: CatalogComponentProps<HTMLSelectElement>) => JSX.Element', + typeOnly: true, + summary: 'Renders a styled native `<select>` element.', + }, + { + name: 'Nav', + anchor: 'nav', + signature: 'Navbar: (props: NavbarProps) => JSX.Element', + typeOnly: true, + summary: + 'Horizontal navigation bar. Below `collapseAt`/`breakpoint`, non-brand\nchildren are grouped behind a collapsible toggle so brand content stays\nvisible while the rest collapses on small screens.', + }, + { + name: 'Navbar', + anchor: 'navbar', + signature: 'Navbar: (props: NavbarProps) => JSX.Element', + typeOnly: true, + summary: + 'Horizontal navigation bar. Below `collapseAt`/`breakpoint`, non-brand\nchildren are grouped behind a collapsible toggle so brand content stays\nvisible while the rest collapses on small screens.', + }, + { + name: 'NavbarCollapseBreakpoint', + anchor: 'navbar-collapse-breakpoint', + signature: 'NavbarCollapseBreakpoint: "sm" | "md" | "lg" | "xl"', + typeOnly: true, + summary: + 'Breakpoint at which a {@link Navbar } collapses non-brand content behind a toggle.', + }, + { + name: 'NavbarProps', + anchor: 'navbar-props', + signature: + 'NavbarProps: Omit<BlockElementProps<"nav">, "as" | "direction" | "align"> & {\n breakpoint?: NavbarCollapseBreakpoint | false;\n collapseAt?: NavbarCollapseBreakpoint | false;\n collapseLabel?: string;\n collapseIcon?: unknown;\n}', + typeOnly: true, + summary: 'Props for the {@link Navbar } component.', + members: [ + { + name: 'breakpoint', + summary: '', + signature: + 'breakpoint?: false | NavbarCollapseBreakpoint | undefined;', + }, + { + name: 'collapseAt', + summary: '', + signature: + 'collapseAt?: false | NavbarCollapseBreakpoint | undefined;', + }, + { + name: 'collapseIcon', + summary: '', + signature: 'collapseIcon?: unknown;', + }, + { + name: 'collapseLabel', + summary: '', + signature: 'collapseLabel?: string | undefined;', + }, + ], + }, + { + name: 'NavBrand', + anchor: 'nav-brand', + signature: 'NavBrand: (props: NavBrandProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the brand/logo slot of a {@link Navbar}; excluded from the collapsible section.', + }, + { + name: 'NavBrandProps', + anchor: 'nav-brand-props', + signature: + 'NavBrandProps: BlockDivProps | BlockElementProps<"a"> | BlockAsChildProps', + typeOnly: true, + summary: 'Props for the {@link NavBrand } component.', + members: [ + { + name: 'align', + summary: '', + signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, + { + name: 'background', + summary: '', + signature: + 'background?: ResponsiveValue<BlockBackground> | undefined;', + }, + { + name: 'border', + summary: '', + signature: 'border?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'center', + summary: '', + signature: 'center?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'height', + summary: '', + signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: BlockRowFrom | undefined;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: boolean | undefined;', + }, + { + name: 'top', + summary: '', + signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + }, + ], + }, + { + name: 'NavDropdown', + anchor: 'nav-dropdown', + signature: 'NavDropdown: (props: NavDropdownProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders a dropdown menu triggered from within a {@link Navbar}.', + }, + { + name: 'NavDropdownProps', + anchor: 'nav-dropdown-props', + signature: + 'NavDropdownProps: Omit<DropdownProps, "children"> & Pick<DropdownContentOwnProps, "align" | "side" | "sideOffset"> & {\n label: unknown;\n children?: unknown;\n}', + typeOnly: true, + summary: 'Props for the {@link NavDropdown } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'label', + summary: '', + signature: 'label: unknown;', + }, + ], + }, + { + name: 'NavGroup', + anchor: 'nav-group', + signature: 'NavGroup: (props: NavGroupProps) => JSX.Element', + typeOnly: true, + summary: 'Groups related {@link Navbar} items under an optional label.', + }, + { + name: 'NavGroupProps', + anchor: 'nav-group-props', + signature: + 'NavGroupProps: Omit<BlockDivProps, "title"> & {\n label?: unknown;\n title?: unknown;\n}', + typeOnly: true, + summary: 'Props for the {@link NavGroup } component.', + members: [ + { + name: 'label', + summary: '', + signature: 'label?: unknown;', + }, + { + name: 'title', + summary: '', + signature: 'title?: unknown;', + }, + ], + }, + { + name: 'NavigationMenu', + anchor: 'navigation-menu', + signature: + 'NavigationMenu: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only navigation-menu anatomy; it does not own disclosure, roving focus, or keyboard behavior.', + }, + { + name: 'NavigationMenuContent', + anchor: 'navigation-menu-content', + signature: + 'NavigationMenuContent: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `navigation-menu-content` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'NavigationMenuIndicator', + anchor: 'navigation-menu-indicator', + signature: + 'NavigationMenuIndicator: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `navigation-menu-indicator` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'NavigationMenuItem', + anchor: 'navigation-menu-item', + signature: + 'NavigationMenuItem: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `navigation-menu-item` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'NavigationMenuLink', + anchor: 'navigation-menu-link', + signature: + 'NavigationMenuLink: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `navigation-menu-link` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'NavigationMenuList', + anchor: 'navigation-menu-list', + signature: + 'NavigationMenuList: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `navigation-menu-list` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'NavigationMenuTrigger', + anchor: 'navigation-menu-trigger', + signature: + 'NavigationMenuTrigger: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `navigation-menu-content` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'NavigationMenuViewport', + anchor: 'navigation-menu-viewport', + signature: + 'NavigationMenuViewport: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `navigation-menu-viewport` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'NavItem', + anchor: 'nav-item', + signature: + 'NavItem: { (props: NavItemProps): JSX.Element; (props: NavItemAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'A generic navigation item, rendered as an `<a>` (or, with `asChild`, merged onto a child), highlighted when `active`.', + }, + { + name: 'NavItemAsChildProps', + anchor: 'nav-item-as-child-props', + signature: + 'NavItemAsChildProps: Omit<JSX.IntrinsicElements["a"], "children" | "ref"> & NavItemOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + typeOnly: true, + summary: + 'Props for {@link NavItem } rendered with `asChild`, merging onto a single child element.', + members: [ + { + name: 'active', + summary: '', + signature: 'active?: boolean | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + ], + }, + { + name: 'NavItemProps', + anchor: 'nav-item-props', + signature: + 'NavItemProps: Omit<JSX.IntrinsicElements["a"], "children" | "ref"> & NavItemOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLAnchorElement>;\n}', + typeOnly: true, + summary: + 'Props for {@link NavItem } rendered as its default `<a>` element.', + members: [ + { + name: 'active', + summary: '', + signature: 'active?: boolean | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLAnchorElement>;', + }, + ], + }, + { + name: 'NavLink', + anchor: 'nav-link', + signature: 'NavLink: (props: NavLinkProps) => JSX.Element', + typeOnly: true, + summary: + 'A router-aware navigation link that highlights itself when its route matches the current location.', + }, + { + name: 'NavLinkProps', + anchor: 'nav-link-props', + signature: 'NavLinkProps: LinkProps & NavLinkOwnProps', + typeOnly: true, + summary: 'Props for the {@link NavLink } component.', + members: [ + { + name: 'active', + summary: '', + signature: 'active?: boolean | undefined;', + }, + { + name: 'match', + summary: '', + signature: 'match?: NavLinkMatch | undefined;', + }, + ], + }, + { + name: 'Page', + anchor: 'page', + signature: 'Page: (props: PageProps) => JSX.Element', + typeOnly: true, + summary: + 'Top-level page wrapper: a growing `<main>` containing a {@link Container } with vertical page padding and content spacing.', + }, + { + name: 'PageHeader', + anchor: 'page-header', + signature: 'PageHeader: (props: PageHeaderProps) => JSX.Element', + typeOnly: true, + summary: + 'Page-level header with a title, optional description, and an actions row that wraps to a new line on small screens.', + }, + { + name: 'PageHeaderProps', + anchor: 'page-header-props', + signature: + 'PageHeaderProps: Omit<BlockDivProps, "direction" | "rowFrom"> & {\n title: unknown;\n description?: unknown;\n actions?: unknown;\n direction?: never;\n rowFrom?: never;\n}', + typeOnly: true, + summary: 'Props for the {@link PageHeader } component.', + members: [ + { + name: 'actions', + summary: '', + signature: 'actions?: unknown;', + }, + { + name: 'description', + summary: '', + signature: 'description?: unknown;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: undefined;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: undefined;', + }, + { + name: 'title', + summary: '', + signature: 'title: unknown;', + }, + ], + }, + { + name: 'PageProps', + anchor: 'page-props', + signature: 'PageProps: MainProps', + typeOnly: true, + summary: 'Props for the {@link Page } component.', + }, + { + name: 'Pagination', + anchor: 'pagination', + signature: 'Pagination: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `pagination` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'PaginationContent', + anchor: 'pagination-content', + signature: + 'PaginationContent: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `pagination-content` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'PaginationEllipsis', + anchor: 'pagination-ellipsis', + signature: + 'PaginationEllipsis: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders a non-interactive ellipsis marker between pagination links.', + }, + { + name: 'PaginationItem', + anchor: 'pagination-item', + signature: + 'PaginationItem: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `pagination-item` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'PaginationLink', + anchor: 'pagination-link', + signature: + 'PaginationLink: (props: CatalogComponentProps & { active?: boolean; }) => JSX.Element', + typeOnly: true, + summary: + 'Renders a pagination page link, marking it `aria-current="page"` when `active`.', + }, + { + name: 'PaginationNext', + anchor: 'pagination-next', + signature: + 'PaginationNext: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: 'Pagination link that moves to the next page.', + }, + { + name: 'PaginationPrevious', + anchor: 'pagination-previous', + signature: + 'PaginationPrevious: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: 'Pagination link that moves to the previous page.', + }, + { + name: 'Pill', + anchor: 'pill', + signature: 'Pill: (props: PillProps) => JSX.Element', + typeOnly: true, + summary: + 'A router-aware link styled as a pill, auto-marked active by matching the current route, with an active background highlight.', + }, + { + name: 'PillProps', + anchor: 'pill-props', + signature: 'PillProps: LinkProps & NavLinkOwnProps', + typeOnly: true, + summary: 'Props for the {@link Pill } component.', + members: [ + { + name: 'active', + summary: '', + signature: 'active?: boolean | undefined;', + }, + { + name: 'match', + summary: '', + signature: 'match?: NavLinkMatch | undefined;', + }, + ], + }, + { + name: 'Pills', + anchor: 'pills', + signature: + 'Pills: { (props: PillsProps): JSX.Element; (props: PillsAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a `<nav>` wrapper (or, with `asChild`, merges onto a child) for a set of {@link Pill} links.', + }, + { + name: 'PillsAsChildProps', + anchor: 'pills-as-child-props', + signature: + 'PillsAsChildProps: Omit<JSX.IntrinsicElements["nav"], "children" | "ref"> & PillsOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + typeOnly: true, + summary: + 'Props for {@link Pills } rendered with `asChild`, merging onto a single child element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + ], + }, + { + name: 'PillsProps', + anchor: 'pills-props', + signature: + 'PillsProps: Omit<JSX.IntrinsicElements["nav"], "children" | "ref"> & PillsOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLElement>;\n}', + typeOnly: true, + summary: + 'Props for {@link Pills } rendered as its default `<nav>` element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLElement>;', + }, + ], + }, + { + name: 'Popover', + anchor: 'popover', + signature: + 'Popover: (props: PopoverProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: 'Renders a part of `popover`.', + }, + { + name: 'PopoverClose', + anchor: 'popover-close', + signature: + 'PopoverClose: { (props: PopoverCloseProps): JSX.Element; (props: PopoverCloseAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `popover-close` part of `popover`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'PopoverContent', + anchor: 'popover-content', + signature: + 'PopoverContent: { (props: PopoverContentProps): JSX.Element | null; (props: PopoverContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `popover-content` part of `popover` with `role="dialog"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'PopoverContentWidth', + anchor: 'popover-content-width', + signature: "PopoverContentWidth: 'sm' | 'md' | 'lg'", + typeOnly: true, + summary: 'Popover Content Width.', + }, + { + name: 'PopoverPortal', + anchor: 'popover-portal', + signature: + 'PopoverPortal: (props: PopoverPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `popover`.', + }, + { + name: 'PopoverTrigger', + anchor: 'popover-trigger', + signature: + 'PopoverTrigger: { (props: PopoverTriggerProps): JSX.Element; (props: PopoverTriggerAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `popover-trigger` part of `popover`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'Progress', + anchor: 'progress', + signature: 'Progress: (props: ProgressProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `progress` part of `progress` with `role="progressbar"`.', + }, + { + name: 'ProgressCircle', + anchor: 'progress-circle', + signature: 'ProgressCircle: (props: ProgressCircleProps) => JSX.Element', + typeOnly: true, + summary: + 'Headless circular progress indicator root.\n\nNormalizes value/max, computes percentage, exposes `--ak-progress-percentage`\nas a dynamically injected CSS custom property, and provides progress state\nto `ProgressCircleIndicator` via context.', + }, + { + name: 'ProgressCircleIndicator', + anchor: 'progress-circle-indicator', + signature: + 'ProgressCircleIndicator: { (props: ProgressCircleIndicatorProps): JSX.Element; (props: ProgressCircleIndicatorAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Visual indicator for `ProgressCircle`, rendering the fill/arc element.\nMust be used within a `ProgressCircle`; reads progress state from context\nand exposes it as `data-state`/`data-value`/`data-max`/`data-percentage`.', + }, + { + name: 'ProgressIndicator', + anchor: 'progress-indicator', + signature: + 'ProgressIndicator: { (props: ProgressIndicatorProps): JSX.Element; (props: ProgressIndicatorAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `progress-indicator` part of `progress`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'RadioGroup', + anchor: 'radio-group', + signature: + 'RadioGroup: (props: RadioGroupProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: 'Renders a part of `radio-group`.', + }, + { + name: 'RadioGroupItem', + anchor: 'radio-group-item', + signature: + 'RadioGroupItem: { (props: RadioGroupItemProps): JSX.Element; (props: RadioGroupItemAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `radio-group-item` part of `radio-group` with `role="radio"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'ResizableHandle', + anchor: 'resizable-handle', + signature: + 'ResizableHandle: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only separator slot; it does not implement resizing, pointer dragging, or keyboard controls.', + }, + { + name: 'ResizablePanel', + anchor: 'resizable-panel', + signature: + 'ResizablePanel: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only `resizable-panel` slot; it does not implement resizing or manage panel dimensions.', + }, + { + name: 'ResizablePanelGroup', + anchor: 'resizable-panel-group', + signature: + 'ResizablePanelGroup: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only container for the `resizable-panel-group` catalog slot. It does not implement resizing.\nConsumers own pointer, keyboard, sizing, and ARIA state until a behavior primitive exists in `@askrjs/ui`.', + }, + { + name: 'ScrollArea', + anchor: 'scroll-area', + signature: + 'ScrollArea: { (props: ScrollAreaProps): JSX.Element; (props: ScrollAreaAsChildProps): JSX.Element; }', + typeOnly: true, + summary: 'Renders a part of `scroll-area`.', + }, + { + name: 'ScrollAreaCorner', + anchor: 'scroll-area-corner', + signature: + 'ScrollAreaCorner: (props: ScrollAreaCornerProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the `scroll-area-corner` part of `scroll-area`.', + }, + { + name: 'ScrollAreaScrollbar', + anchor: 'scroll-area-scrollbar', + signature: + 'ScrollAreaScrollbar: (props: ScrollAreaScrollbarProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `scroll-area-scrollbar` part of `scroll-area` with `role="scrollbar"`.', + }, + { + name: 'ScrollAreaThumb', + anchor: 'scroll-area-thumb', + signature: + 'ScrollAreaThumb: (props: ScrollAreaThumbProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the `scroll-area-thumb` part of `scroll-area`.', + }, + { + name: 'ScrollAreaViewport', + anchor: 'scroll-area-viewport', + signature: + 'ScrollAreaViewport: { (props: ScrollAreaViewportProps): JSX.Element; (props: ScrollAreaViewportAsChildProps): JSX.Element; }', + typeOnly: true, + summary: 'Renders a part of `scroll-area`.', + }, + { + name: 'Section', + anchor: 'section', + signature: 'Section: (props: SectionProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders a `<section>`-element {@link Block } with vertical spacing between children and page padding.', + }, + { + name: 'SectionProps', + anchor: 'section-props', + signature: 'SectionProps: Omit<BlockElementProps<"section">, "as">', + typeOnly: true, + summary: 'Props for the {@link Section } component.', + }, + { + name: 'Select', + anchor: 'select', + signature: 'Select: (props: SelectProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a part of `select`.', + }, + { + name: 'SelectContent', + anchor: 'select-content', + signature: + 'SelectContent: { (props: SelectContentProps): JSX.Element | null; (props: SelectContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders a part of `select` with `role="listbox"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SelectGroup', + anchor: 'select-group', + signature: + 'SelectGroup: { (props: SelectGroupProps): JSX.Element; (props: SelectGroupAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `select-group` part of `select` with `role="group"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SelectItem', + anchor: 'select-item', + signature: + 'SelectItem: { (props: SelectItemProps): JSX.Element | null; (props: SelectItemAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders a part of `select`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SelectItemText', + anchor: 'select-item-text', + signature: + 'SelectItemText: { (props: SelectItemTextProps): JSX.Element; (props: SelectItemTextAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'SelectItemText marks the item text node so Select can resolve labels and\nstyle the text slot directly.\nRenders the `select-item-text` part of `select`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SelectLabel', + anchor: 'select-label', + signature: + 'SelectLabel: { (props: SelectLabelProps): JSX.Element | null; (props: SelectLabelAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `select-label` part of `select`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SelectPortal', + anchor: 'select-portal', + signature: + 'SelectPortal: (props: SelectPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `select`.', + }, + { + name: 'SelectSeparator', + anchor: 'select-separator', + signature: + 'SelectSeparator: { (props: SelectSeparatorProps): JSX.Element | null; (props: SelectSeparatorAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `select-separator` part of `select` with `role="separator"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SelectTrigger', + anchor: 'select-trigger', + signature: + 'SelectTrigger: { (props: SelectTriggerProps): JSX.Element | null; (props: SelectTriggerAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `select-trigger` part of `select`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SelectTriggerSize', + anchor: 'select-trigger-size', + signature: "SelectTriggerSize: 'sm' | 'md' | 'lg'", + typeOnly: true, + summary: 'Select Trigger Size.', + }, + { + name: 'SelectValue', + anchor: 'select-value', + signature: + 'SelectValue: { (props: SelectValueProps): JSX.Element | null; (props: SelectValueAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `select-value` part of `select`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'Separator', + anchor: 'separator', + signature: + 'Separator: { (props: SeparatorNativeProps): JSX.Element; (props: SeparatorAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Visual divider, defaulting to horizontal `role="separator"`; pass\n`decorative` to drop the semantic role, or `asChild` to merge onto a\nsingle child element.', + }, + { + name: 'SeparatorAsChildProps', + anchor: 'separator-as-child-props', + signature: + 'SeparatorAsChildProps: SeparatorOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + typeOnly: true, + summary: + 'Props for {@link Separator } rendered with `asChild`, merging its attributes onto a single child element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'decorative', + summary: '', + signature: 'decorative?: boolean | undefined;', + }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: "vertical" | "horizontal" | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + ], + }, + { + name: 'SeparatorNativeProps', + anchor: 'separator-native-props', + signature: + 'SeparatorNativeProps: Omit<JSX.IntrinsicElements["div"], "children" | "ref"> & SeparatorOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: + 'Props for {@link Separator } rendered as its default `<div>` element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'decorative', + summary: '', + signature: 'decorative?: boolean | undefined;', + }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: "vertical" | "horizontal" | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'SeparatorOwnProps', + anchor: 'separator-own-props', + signature: + 'SeparatorOwnProps: {\n decorative?: boolean;\n orientation?: "horizontal" | "vertical";\n children?: unknown;\n}', + typeOnly: true, + summary: 'Props shared by both {@link Separator } call signatures.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'decorative', + summary: '', + signature: 'decorative?: boolean | undefined;', + }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: "vertical" | "horizontal" | undefined;', + }, + ], + }, + { + name: 'SeparatorProps', + anchor: 'separator-props', + signature: 'SeparatorProps: SeparatorNativeProps | SeparatorAsChildProps', + typeOnly: true, + summary: 'Union of all prop shapes accepted by {@link Separator }.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'decorative', + summary: '', + signature: 'decorative?: boolean | undefined;', + }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: "vertical" | "horizontal" | undefined;', + }, + { + name: 'ref', + summary: '', + signature: + 'ref?: ((value: unknown) => void) | { current: unknown; } | ((value: HTMLDivElement | null) => void) | { current: HTMLDivElement | null; } | null | undefined;', + }, + ], + }, + { + name: 'Sheet', + anchor: 'sheet', + signature: 'Dialog: (props: DialogProps) => JSX.Element', + typeOnly: true, + summary: 'Coordinates the Dialog trigger, portal, overlay, and content.', + tags: { + example: [ + '```tsx\n<Dialog>\n <DialogTrigger>Open dialog</DialogTrigger>\n <DialogPortal>\n <DialogOverlay />\n <DialogContent>Confirm action</DialogContent>\n </DialogPortal>\n</Dialog>\n```', + ], + }, + }, + { + name: 'SheetClose', + anchor: 'sheet-close', + signature: + 'DialogClose: { (props: DialogCloseProps): JSX.Element; (props: DialogCloseAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `dialog-close` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SheetContent', + anchor: 'sheet-content', + signature: + 'SheetContent: (props: CatalogComponentProps & { side?: "top" | "right" | "bottom" | "left"; }) => JSX.Element', + typeOnly: true, + summary: + 'Sheet variant of the dialog content part; defaults to sliding in from the right.', + }, + { + name: 'SheetDescription', + anchor: 'sheet-description', + signature: + 'SheetDescription: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: 'Sheet variant of the dialog description part.', + }, + { + name: 'SheetFooter', + anchor: 'sheet-footer', + signature: 'SheetFooter: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `sheet-footer` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'SheetHeader', + anchor: 'sheet-header', + signature: 'SheetHeader: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `sheet-header` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'SheetOverlay', + anchor: 'sheet-overlay', + signature: + 'DialogOverlay: { (props: DialogOverlayProps): JSX.Element | null; (props: DialogOverlayAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `dialog-overlay` part of `dialog`.\n\nWith `@askrjs/themes/default`, the overlay is fully styled out of the box\nwith the shared backdrop token, blur, stacking, and fade animation. Standard\nDialog and AlertDialog usage requires no additional overlay CSS; customize\nthe theme tokens instead of applying a competing background class.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SheetPortal', + anchor: 'sheet-portal', + signature: + 'DialogPortal: (props: DialogPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `dialog`.', + }, + { + name: 'SheetTitle', + anchor: 'sheet-title', + signature: 'SheetTitle: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: 'Sheet variant of the dialog title part.', + }, + { + name: 'SheetTrigger', + anchor: 'sheet-trigger', + signature: + 'DialogTrigger: { (props: DialogTriggerProps): JSX.Element; (props: DialogTriggerAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `dialog-trigger` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'Sidebar', + anchor: 'sidebar', + signature: 'Sidebar: (props: SidebarProps) => JSX.Element', + typeOnly: true, + summary: + 'Root `<aside>` sidebar layout with configurable width, side, collapse behavior, and visual variant, exposed as data attributes for CSS.', + }, + { + name: 'SidebarButtonProps', + anchor: 'sidebar-button-props', + signature: + 'SidebarButtonProps: JSX.IntrinsicElements["button"] & {\n active?: boolean;\n asChild?: boolean;\n size?: "default" | "sm" | "lg";\n tooltip?: string;\n tooltipSide?: SidebarTooltipSide;\n variant?: "default" | "outline";\n}', + typeOnly: true, + summary: + 'Props shared by the interactive {@link Sidebar } button parts (menu button, action, trigger).', + members: [ + { + name: 'active', + summary: '', + signature: 'active?: boolean | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, + { + name: 'size', + summary: '', + signature: 'size?: "default" | "sm" | "lg" | undefined;', + }, + { + name: 'tooltip', + summary: '', + signature: 'tooltip?: string | undefined;', + }, + { + name: 'tooltipSide', + summary: '', + signature: 'tooltipSide?: SidebarTooltipSide | undefined;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: "default" | "outline" | undefined;', + }, + ], + }, + { + name: 'SidebarCollapsible', + anchor: 'sidebar-collapsible', + signature: 'SidebarCollapsible: "offcanvas" | "icon" | "none"', + typeOnly: true, + summary: + 'How a {@link Sidebar } collapses: fully off-canvas, down to icons only, or not at all.', + }, + { + name: 'SidebarContent', + anchor: 'sidebar-content', + signature: 'SidebarContent: (props: SidebarPartProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the scrollable content region of a {@link Sidebar}.', + }, + { + name: 'SidebarFooter', + anchor: 'sidebar-footer', + signature: 'SidebarFooter: (props: SidebarPartProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the footer region of a {@link Sidebar}.', + }, + { + name: 'SidebarGroup', + anchor: 'sidebar-group', + signature: 'SidebarGroup: (props: SidebarPartProps) => JSX.Element', + typeOnly: true, + summary: 'Groups related {@link SidebarMenu} items together.', + }, + { + name: 'SidebarGroupContent', + anchor: 'sidebar-group-content', + signature: + 'SidebarGroupContent: (props: SidebarPartProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the content region of a {@link SidebarGroup}.', + }, + { + name: 'SidebarGroupLabel', + anchor: 'sidebar-group-label', + signature: 'SidebarGroupLabel: (props: SidebarPartProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the label for a {@link SidebarGroup}.', + }, + { + name: 'SidebarHeader', + anchor: 'sidebar-header', + signature: 'SidebarHeader: (props: SidebarPartProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the header region of a {@link Sidebar}.', + }, + { + name: 'SidebarInset', + anchor: 'sidebar-inset', + signature: 'SidebarInset: (props: SidebarPartProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the `<main>` content area beside the {@link Sidebar}.', + }, + { + name: 'SidebarMenu', + anchor: 'sidebar-menu', + signature: 'SidebarMenu: (props: SidebarPartProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a `<ul>` list of {@link SidebarMenuItem}s.', + }, + { + name: 'SidebarMenuAction', + anchor: 'sidebar-menu-action', + signature: + 'SidebarMenuAction: (props: SidebarButtonProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders a secondary action button attached to a {@link SidebarMenuItem}, with an optional tooltip.', + }, + { + name: 'SidebarMenuBadge', + anchor: 'sidebar-menu-badge', + signature: 'SidebarMenuBadge: (props: SidebarPartProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a status badge attached to a {@link SidebarMenuItem}.', + }, + { + name: 'SidebarMenuButton', + anchor: 'sidebar-menu-button', + signature: + 'SidebarMenuButton: (props: SidebarButtonProps) => JSX.Element', + typeOnly: true, + summary: + 'Clickable menu button within a {@link SidebarMenuItem}; supports `active`/`size`/`variant` state and an optional tooltip.', + }, + { + name: 'SidebarMenuItem', + anchor: 'sidebar-menu-item', + signature: 'SidebarMenuItem: (props: SidebarPartProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a single `<li>` entry within a {@link SidebarMenu}.', + }, + { + name: 'SidebarPartProps', + anchor: 'sidebar-part-props', + signature: + 'SidebarPartProps: JSX.IntrinsicElements["div"] & {\n as?: keyof JSX.IntrinsicElements;\n asChild?: boolean;\n}', + typeOnly: true, + summary: + 'Props shared by the generic {@link Sidebar } structural parts (content, header, footer, group, etc.).', + members: [ + { + name: 'as', + summary: '', + signature: 'as?: keyof JSX.IntrinsicElements | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, + ], + }, + { + name: 'SidebarProps', + anchor: 'sidebar-props', + signature: + 'SidebarProps: Omit<BlockElementProps<"aside">, "as" | "width" | "shrink"> & {\n collapsible?: SidebarCollapsible;\n side?: SidebarSide;\n variant?: SidebarVariant;\n width?: BlockElementProps<"aside">["width"];\n shrink?: BlockElementProps<"aside">["shrink"];\n}', + typeOnly: true, + summary: 'Props for the {@link Sidebar } component.', + members: [ + { + name: 'collapsible', + summary: '', + signature: 'collapsible?: SidebarCollapsible | undefined;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'side', + summary: '', + signature: 'side?: SidebarSide | undefined;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: SidebarVariant | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + }, + ], + }, + { + name: 'SidebarRail', + anchor: 'sidebar-rail', + signature: 'SidebarRail: (props: SidebarButtonProps) => JSX.Element', + typeOnly: true, + summary: + "Renders a draggable/clickable rail along the sidebar's edge for resizing or toggling it.", + }, + { + name: 'SidebarRailProps', + anchor: 'sidebar-rail-props', + signature: 'SidebarRailProps: SidebarButtonProps', + typeOnly: true, + summary: 'Props for the {@link SidebarRail } component.', + members: [ + { + name: 'active', + summary: '', + signature: 'active?: boolean | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, + { + name: 'size', + summary: '', + signature: 'size?: "default" | "sm" | "lg" | undefined;', + }, + { + name: 'tooltip', + summary: '', + signature: 'tooltip?: string | undefined;', + }, + { + name: 'tooltipSide', + summary: '', + signature: 'tooltipSide?: SidebarTooltipSide | undefined;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: "default" | "outline" | undefined;', + }, + ], + }, + { + name: 'SidebarScope', + anchor: 'sidebar-scope', + signature: 'SidebarScope: (props: SidebarPartProps) => JSX.Element', + typeOnly: true, + summary: + "Scoping wrapper that establishes the sidebar's CSS/context boundary.", + }, + { + name: 'SidebarSide', + anchor: 'sidebar-side', + signature: 'SidebarSide: "left" | "right"', + typeOnly: true, + summary: 'Which edge of the viewport a {@link Sidebar } is docked to.', + }, + { + name: 'SidebarTooltipSide', + anchor: 'sidebar-tooltip-side', + signature: 'SidebarTooltipSide: "top" | "bottom" | "left" | "right"', + typeOnly: true, + summary: "Side a sidebar button's tooltip is positioned on.", + }, + { + name: 'SidebarTrigger', + anchor: 'sidebar-trigger', + signature: 'SidebarTrigger: (props: SidebarButtonProps) => JSX.Element', + typeOnly: true, + summary: + "Icon button that toggles the {@link Sidebar}'s open/collapsed state, with an optional tooltip.", + }, + { + name: 'SidebarVariant', + anchor: 'sidebar-variant', + signature: 'SidebarVariant: "sidebar" | "floating" | "inset"', + typeOnly: true, + summary: 'Visual style of a {@link Sidebar }.', + }, + { + name: 'Skeleton', + anchor: 'skeleton', + signature: + 'Skeleton: { (props: SkeletonProps): JSX.Element; (props: SkeletonAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Loading placeholder block with configurable `width`/`height`, hidden from assistive tech via `aria-hidden`, rendered as a `<div>` or merged onto a child via `asChild`.', + }, + { + name: 'SkeletonAsChildProps', + anchor: 'skeleton-as-child-props', + signature: + 'SkeletonAsChildProps: SkeletonOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + typeOnly: true, + summary: + 'Props for {@link Skeleton } rendered with `asChild`, merging its attributes onto a single child element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'height', + summary: '', + signature: 'height?: string | number | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + { + name: 'width', + summary: '', + signature: 'width?: string | number | undefined;', + }, + ], + }, + { + name: 'SkeletonOwnProps', + anchor: 'skeleton-own-props', + signature: + 'SkeletonOwnProps: {\n children?: unknown;\n height?: string | number;\n width?: string | number;\n}', + typeOnly: true, + summary: 'Props shared by both {@link Skeleton } call signatures.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'height', + summary: '', + signature: 'height?: string | number | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: string | number | undefined;', + }, + ], + }, + { + name: 'SkeletonProps', + anchor: 'skeleton-props', + signature: + 'SkeletonProps: Omit<JSX.IntrinsicElements["div"], "children" | "ref"> & SkeletonOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: + 'Props for {@link Skeleton } rendered as its default `<div>` element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'height', + summary: '', + signature: 'height?: string | number | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + { + name: 'width', + summary: '', + signature: 'width?: string | number | undefined;', + }, + ], + }, + { + name: 'Slider', + anchor: 'slider', + signature: 'Slider: (props: SliderProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the `slider` part of `slider`.', + }, + { + name: 'SliderRange', + anchor: 'slider-range', + signature: + 'SliderRange: { (props: SliderRangeProps): JSX.Element; (props: SliderRangeAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `slider-range` part of `slider`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SliderThumb', + anchor: 'slider-thumb', + signature: + 'SliderThumb: { (props: SliderThumbProps): JSX.Element; (props: SliderThumbAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `slider-thumb` part of `slider` with `role="slider"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SliderTrack', + anchor: 'slider-track', + signature: + 'SliderTrack: { (props: SliderTrackProps): JSX.Element; (props: SliderTrackAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `slider-track` part of `slider`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'Spinner', + anchor: 'spinner', + signature: 'Spinner: (props: SpinnerProps) => JSX.Element', + typeOnly: true, + summary: + 'Indeterminate loading spinner built on `ProgressCircle`, with an accessible label (defaults to `"Loading"`) and a `size` modifier.', + }, + { + name: 'SpinnerOwnProps', + anchor: 'spinner-own-props', + signature: + 'SpinnerOwnProps: Omit<ProgressCircleProps, "value" | "getValueLabel"> & {\n label?: string;\n size?: SpinnerSize;\n}', + typeOnly: true, + summary: + 'Props specific to {@link Spinner }, layered on top of `ProgressCircleProps`.', + members: [ + { + name: 'label', + summary: '', + signature: 'label?: string | undefined;', + }, + { + name: 'size', + summary: '', + signature: 'size?: SpinnerSize | undefined;', + }, + ], + }, + { + name: 'SpinnerProps', + anchor: 'spinner-props', + signature: 'SpinnerProps: SpinnerOwnProps', + typeOnly: true, + summary: 'Props for the {@link Spinner } component.', + members: [ + { + name: 'label', + summary: '', + signature: 'label?: string | undefined;', + }, + { + name: 'size', + summary: '', + signature: 'size?: SpinnerSize | undefined;', + }, + ], + }, + { + name: 'SpinnerSize', + anchor: 'spinner-size', + signature: 'SpinnerSize: "sm" | "md" | "lg"', + typeOnly: true, + summary: 'Size modifier for {@link Spinner }.', + }, + { + name: 'Stack', + anchor: 'stack', + signature: 'Stack: (props: StackProps) => JSX.Element', + typeOnly: true, + summary: 'Vertical content flow with responsive, token-backed spacing.', + }, + { + name: 'StackProps', + anchor: 'stack-props', + signature: + 'StackProps: WithoutOwnedLayout<BlockProps, "direction" | "rowFrom" | "gap" | "padding" | "wrap"> & {\n direction?: never;\n gap?: ResponsiveValue<StackSpace>;\n p?: ResponsiveValue<StackSpace>;\n padding?: ResponsiveValue<StackSpace>;\n rowFrom?: never;\n wrap?: ResponsiveValue<StackWrap>;\n}', + typeOnly: true, + members: [ + { + name: 'align', + summary: '', + signature: 'align?: unknown;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: unknown;', + }, + { + name: 'background', + summary: '', + signature: 'background?: unknown;', + }, + { + name: 'border', + summary: '', + signature: 'border?: unknown;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: unknown;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: unknown;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: unknown;', + }, + { + name: 'center', + summary: '', + signature: 'center?: unknown;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: unknown;', + }, + { + name: 'height', + summary: '', + signature: 'height?: unknown;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: unknown;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: unknown;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: unknown;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: unknown;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: unknown;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: unknown;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: unknown;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: unknown;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: unknown;', + }, + { + name: 'p', + summary: '', + signature: 'p?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: unknown;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: unknown;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: unknown;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: undefined;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: unknown;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: unknown;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: unknown;', + }, + { + name: 'top', + summary: '', + signature: 'top?: unknown;', + }, + { + name: 'width', + summary: '', + signature: 'width?: unknown;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: unknown;', + }, + ], + }, + { + name: 'Stat', + anchor: 'stat', + signature: 'Stat: (props: StatProps) => JSX.Element', + typeOnly: true, + summary: 'Container for a labeled statistic (label, value, description).', + }, + { + name: 'StatDescription', + anchor: 'stat-description', + signature: + 'StatDescription: (props: StatDescriptionProps) => JSX.Element', + typeOnly: true, + summary: 'Renders supporting description text for a {@link Stat}.', + }, + { + name: 'StatLabel', + anchor: 'stat-label', + signature: 'StatLabel: (props: StatLabelProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the label of a {@link Stat}.', + }, + { + name: 'StatValue', + anchor: 'stat-value', + signature: 'StatValue: (props: StatValueProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the primary value of a {@link Stat}.', + }, + { + name: 'Switch', + anchor: 'switch', + signature: + 'Switch: { (props: SwitchButtonProps): JSX.Element; (props: SwitchAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `switch` part of `switch` with `role="switch"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'Tab', + anchor: 'tab', + signature: 'Tab: (props: TabProps) => JSX.Element', + typeOnly: true, + summary: + 'A router-aware link styled as a tab, auto-marked active by matching the current route (see {@link NavLinkProps.match}).', + }, + { + name: 'Table', + anchor: 'table', + signature: + 'Table: { (props: TableProps): JSX.Element; (props: TableAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Semantic table primitive family.\nRenders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TableBody', + anchor: 'table-body', + signature: + 'TableBody: { (props: TableBodyProps): JSX.Element; (props: TableBodyAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TableCaption', + anchor: 'table-caption', + signature: + 'TableCaption: { (props: TableCaptionProps): JSX.Element; (props: TableCaptionAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TableCell', + anchor: 'table-cell', + signature: + 'TableCell: { (props: TableCellProps): JSX.Element; (props: TableCellAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TableFoot', + anchor: 'table-foot', + signature: + 'TableFoot: { (props: TableFootProps): JSX.Element; (props: TableFootAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TableHead', + anchor: 'table-head', + signature: + 'TableHead: { (props: TableHeadProps): JSX.Element; (props: TableHeadAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TableHeaderCell', + anchor: 'table-header-cell', + signature: + 'TableHeaderCell: { (props: TableHeaderCellProps): JSX.Element; (props: TableHeaderCellAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TableRow', + anchor: 'table-row', + signature: + 'TableRow: { (props: TableRowProps): JSX.Element; (props: TableRowAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TabProps', + anchor: 'tab-props', + signature: 'TabProps: LinkProps & NavLinkOwnProps', + typeOnly: true, + summary: 'Props for the {@link Tab } component.', + members: [ + { + name: 'active', + summary: '', + signature: 'active?: boolean | undefined;', + }, + { + name: 'match', + summary: '', + signature: 'match?: NavLinkMatch | undefined;', + }, + ], + }, + { + name: 'Tabs', + anchor: 'tabs', + signature: + 'Tabs: { (props: TabsProps): JSX.Element; (props: TabsAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a `<nav>` wrapper (or, with `asChild`, merges onto a child) for a set of {@link Tab} links.', + }, + { + name: 'TabsAsChildProps', + anchor: 'tabs-as-child-props', + signature: + 'TabsAsChildProps: Omit<JSX.IntrinsicElements["nav"], "children" | "ref"> & TabsOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + typeOnly: true, + summary: + 'Props for {@link Tabs } rendered with `asChild`, merging onto a single child element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + ], + }, + { + name: 'TabsContent', + anchor: 'tabs-content', + signature: 'TabsContent: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only tabs-content slot; visibility and panel association are consumer-owned.', + }, + { + name: 'TabsList', + anchor: 'tabs-list', + signature: 'TabsList: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only tabs-list slot; it does not own tab selection, ARIA state, or keyboard behavior.', + }, + { + name: 'TabsProps', + anchor: 'tabs-props', + signature: + 'TabsProps: Omit<JSX.IntrinsicElements["nav"], "children" | "ref"> & TabsOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLElement>;\n}', + typeOnly: true, + summary: + 'Props for {@link Tabs } rendered as its default `<nav>` element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLElement>;', + }, + ], + }, + { + name: 'TabsTrigger', + anchor: 'tabs-trigger', + signature: + 'TabsTrigger: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only trigger button; it does not select or associate a tab panel.', + }, + { + name: 'Text', + anchor: 'text', + signature: + 'Text: <TElement extends TextElement = "p">(props: TextProps<TElement>) => JSX.Element', + typeOnly: true, + summary: + 'Typography primitive: renders any {@link TextElement} (default `<p>`) and turns `size`/`tone`/`weight`/`font`/`numeric`/`wrap`/`truncate` into data attributes for CSS styling.', + }, + { + name: 'Textarea', + anchor: 'textarea', + signature: + 'Textarea: { (props: TextareaElementProps): JSX.Element; (props: TextareaAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `textarea` part of `textarea`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TextElement', + anchor: 'text-element', + signature: 'TextElement: "p" | "span" | "div" | "strong"', + typeOnly: true, + summary: 'Element tags {@link Text} can render as via its `as` prop.', + }, + { + name: 'TextFont', + anchor: 'text-font', + signature: 'TextFont: "body" | "mono"', + typeOnly: true, + summary: 'Font family modifier for {@link Text}.', + }, + { + name: 'TextNumeric', + anchor: 'text-numeric', + signature: 'TextNumeric: "normal" | "tabular"', + typeOnly: true, + summary: 'Numeric glyph variant (e.g. tabular figures) for {@link Text}.', + }, + { + name: 'TextProps', + anchor: 'text-props', + signature: + 'TextProps: TextIntrinsicProps<TElement> & {\n as?: TElement;\n size?: TextSize;\n tone?: TextTone;\n weight?: TextWeight;\n font?: TextFont;\n numeric?: TextNumeric;\n wrap?: TextWrap;\n truncate?: boolean;\n children?: unknown;\n ref?: Ref<HTMLElement>;\n}', + typeOnly: true, + summary: + 'Props for the {@link Text} component, specialized for a given {@link TextElement} `TElement`.', + members: [ + { + name: 'as', + summary: '', + signature: 'as?: TElement | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'font', + summary: '', + signature: 'font?: TextFont | undefined;', + }, + { + name: 'numeric', + summary: '', + signature: 'numeric?: TextNumeric | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLElement>;', + }, + { + name: 'size', + summary: '', + signature: 'size?: TextSize | undefined;', + }, + { + name: 'tone', + summary: '', + signature: 'tone?: TextTone | undefined;', + }, + { + name: 'truncate', + summary: '', + signature: 'truncate?: boolean | undefined;', + }, + { + name: 'weight', + summary: '', + signature: 'weight?: TextWeight | undefined;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: TextWrap | undefined;', + }, + ], + }, + { + name: 'TextSize', + anchor: 'text-size', + signature: 'TextSize: "sm" | "md" | "lg"', + typeOnly: true, + summary: 'Font size modifier for {@link Text}.', + }, + { + name: 'TextTone', + anchor: 'text-tone', + signature: + 'TextTone: "default" | "muted" | "subtle" | "inverse" | "success" | "warning" | "danger" | "info"', + typeOnly: true, + summary: 'Color tone modifier for {@link Text}.', + }, + { + name: 'TextWeight', + anchor: 'text-weight', + signature: 'TextWeight: "normal" | "medium" | "semibold" | "bold"', + typeOnly: true, + summary: 'Font weight modifier for {@link Text}.', + }, + { + name: 'TextWrap', + anchor: 'text-wrap', + signature: 'TextWrap: "normal" | "nowrap" | "anywhere"', + typeOnly: true, + summary: 'White-space wrapping behavior for {@link Text}.', + }, + { + name: 'theme', + anchor: 'theme', + signature: 'theme: () => ThemeScopeValue', + typeOnly: true, + summary: + 'Reads the current {@link ThemeScopeValue} from the nearest enclosing {@link ThemeScope}.', + }, + { + name: 'ThemeName', + anchor: 'theme-name', + signature: + 'ThemeName: "light" | "dark" | "system" | CatThemeName | (string & {})', + typeOnly: true, + summary: + 'Any theme identifier accepted by {@link ThemeScope}: `"light"`, `"dark"`, `"system"`, a {@link CatThemeName}, or a custom string.', + }, + { + name: 'ThemeOption', + anchor: 'theme-option', + signature: 'ThemeOption: {\n value: ThemeName;\n label: string;\n}', + typeOnly: true, + summary: + 'A theme choice offered by {@link ThemePicker}/{@link ThemeToggle}: a `value` paired with a display `label`.', + }, + { + name: 'ThemePicker', + anchor: 'theme-picker', + signature: 'ThemePicker: (props: ThemePickerProps) => JSX.Element', + typeOnly: true, + summary: + "A `<select>` bound to the current {@link theme}, listing `themes` (defaults to the enclosing scope's options).", + }, + { + name: 'ThemePickerProps', + anchor: 'theme-picker-props', + signature: + 'ThemePickerProps: Omit<JSX.IntrinsicElements["select"], "children" | "value" | "defaultValue" | "onChange"> & {\n themes?: readonly ThemeOption[];\n label?: string;\n}', + typeOnly: true, + summary: 'Props for the {@link ThemePicker} component.', + members: [ + { + name: 'label', + summary: '', + signature: 'label?: string | undefined;', + }, + { + name: 'themes', + summary: '', + signature: 'themes?: readonly ThemeOption[] | undefined;', + }, + ], + }, + { + name: 'ThemeScope', + anchor: 'theme-scope', + signature: 'ThemeScope: (props: ThemeScopeProps) => JSX.Element', + typeOnly: true, + summary: + 'Establishes a theme boundary: tracks the active theme (persisted to\n`localStorage` under `storageKey` and synced across tabs/scopes), resolves\nthe OS `"system"` preference, and reflects the choice onto the DOM via\n`data-theme`/`data-theme-choice` attributes. Nested scopes cooperate\nthrough a shared coordinator so the deepest explicitly-set scope wins.', + }, + { + name: 'ThemeScopeProps', + anchor: 'theme-scope-props', + signature: + 'ThemeScopeProps: {\n children?: unknown;\n defaultTheme?: ThemeName;\n themes?: readonly ThemeOption[];\n storageKey?: string;\n}', + typeOnly: true, + summary: 'Props for the {@link ThemeScope} component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'defaultTheme', + summary: '', + signature: 'defaultTheme?: ThemeName | undefined;', + }, + { + name: 'storageKey', + summary: '', + signature: 'storageKey?: string | undefined;', + }, + { + name: 'themes', + summary: '', + signature: 'themes?: readonly ThemeOption[] | undefined;', + }, + ], + }, + { + name: 'ThemeScopeValue', + anchor: 'theme-scope-value', + signature: + 'ThemeScopeValue: {\n theme: () => ThemeName;\n resolvedSystemTheme: () => "light" | "dark";\n setTheme: (theme: ThemeName) => void;\n themes: readonly ThemeOption[];\n storageKey: string;\n}', + typeOnly: true, + summary: + 'Value read from {@link theme}: the active theme, its resolved system value, a setter, and the available theme options.', + }, + { + name: 'ThemeToggle', + anchor: 'theme-toggle', + signature: 'ThemeToggle: (props: ThemeToggleProps) => JSX.Element', + typeOnly: true, + summary: + 'A button that cycles through `themes` (defaults to `["light", "dark"]`) on\npress. Supports icon props per theme, or a function-as-children render\nprop receiving {@link ThemeToggleRenderContext}.', + }, + { + name: 'ThemeToggleProps', + anchor: 'theme-toggle-props', + signature: + 'ThemeToggleProps: Omit<ButtonNativeProps, "children" | "onPress"> & {\n children?: unknown | ((context: ThemeToggleRenderContext) => unknown);\n lightIcon?: unknown;\n darkIcon?: unknown;\n systemIcon?: unknown;\n themes?: readonly ThemeName[];\n onPress?: (event: PressEvent) => void;\n}', + typeOnly: true, + summary: 'Props for the {@link ThemeToggle} component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'darkIcon', + summary: '', + signature: 'darkIcon?: unknown;', + }, + { + name: 'lightIcon', + summary: '', + signature: 'lightIcon?: unknown;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'systemIcon', + summary: '', + signature: 'systemIcon?: unknown;', + }, + { + name: 'themes', + summary: '', + signature: 'themes?: readonly ThemeName[] | undefined;', + }, + ], + }, + { + name: 'ThemeToggleRenderContext', + anchor: 'theme-toggle-render-context', + signature: + 'ThemeToggleRenderContext: {\n theme: ThemeName;\n nextTheme: ThemeName;\n}', + typeOnly: true, + summary: + 'Render context passed to a function-as-children {@link ThemeToggleProps.children}.', + }, + { + name: 'Toast', + anchor: 'toast', + signature: 'Toast: (props: ToastProps) => JSX.Element | null', + typeOnly: true, + summary: + 'Toast registers a notification entry with the host and returns no DOM on\nits own.', + }, + { + name: 'ToastAction', + anchor: 'toast-action', + signature: + 'ToastAction: { (props: ToastActionProps): JSX.Element; (props: ToastActionAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'ToastAction closes the toast after handling a user-triggered action.\nRenders the `toast-action` part of `toast`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'ToastClose', + anchor: 'toast-close', + signature: + 'ToastClose: { (props: ToastCloseProps): JSX.Element; (props: ToastCloseAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'ToastClose is the dedicated dismiss control for a toast entry.\nRenders the `toast-close` part of `toast`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'ToastDescription', + anchor: 'toast-description', + signature: + 'ToastDescription: { (props: ToastDescriptionProps): JSX.Element; (props: ToastDescriptionAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'ToastDescription marks the accessible description slot for a toast entry.\nRenders the `toast-description` part of `toast`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'Toaster', + anchor: 'toaster', + signature: 'Toaster: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Presentational Toaster host retaining the `sonner` styling slot.', + }, + { + name: 'ToastHost', + anchor: 'toast-host', + signature: 'ToastHost: (props: ToastHostProps) => JSX.Element', + typeOnly: true, + summary: + 'ToastHost owns the registry of active toast entries and the default\ndisplay duration for the family.', + }, + { + name: 'ToastTitle', + anchor: 'toast-title', + signature: + 'ToastTitle: { (props: ToastTitleProps): JSX.Element; (props: ToastTitleAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'ToastTitle marks the accessible title slot for a toast entry.\nRenders the `toast-title` part of `toast`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'ToastViewport', + anchor: 'toast-viewport', + signature: + 'ToastViewport: { (props: ToastViewportProps): JSX.Element; (props: ToastViewportAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'ToastViewport renders the live toast stack and the notification region.\nRenders the `toast-viewport` part of `toast` with `role="region"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'Toggle', + anchor: 'toggle', + signature: + 'Toggle: { (props: ToggleButtonProps): JSX.Element; (props: ToggleAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Headless Toggle component\n\n## Responsibilities\n- Compose pressable foundation for interaction behavior\n- Apply aria-pressed for toggle state signaling\n- Enforce type="button" default to prevent accidental form submission\n- Forward props and refs to native button or child element\n\n## Non-Responsibilities (delegated to pressable foundation)\n- Keyboard event handling (Enter/Space)\n- Pointer event handling\n- Disabled state enforcement\n- Role attribute application (for non-native elements)\n\n## Invariants\n- MUST NOT contain any event handler logic\n- MUST NOT check disabled or pressed props directly\n- MUST use pressable() for ALL interaction behavior\n- MUST use mergeProps() for ALL prop composition\n- pressed state is CONTROLLED (consumer manages state)\nRenders the `toggle` part of `toggle`.\n\nSupports polymorphic rendering via `asChild`.', + tags: { + example: [ + 'Native toggle button\n```tsx\nconst pressed = state(false);\n<Toggle pressed={pressed()} onPress={() => pressed.set(!pressed())}>\nMute\n</Toggle>\n```', + 'Polymorphic rendering (asChild)\n```tsx\n<Toggle asChild pressed={muted} onPress={toggleMute}>\n<span>🔇</span>\n</Toggle>\n```', + ], + }, + }, + { + name: 'ToggleGroup', + anchor: 'toggle-group', + signature: + 'ToggleGroup: (props: ToggleGroupProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: 'Renders a part of `toggle-group`.', + }, + { + name: 'ToggleGroupItem', + anchor: 'toggle-group-item', + signature: + 'ToggleGroupItem: { (props: ToggleGroupItemProps): JSX.Element; (props: ToggleGroupItemAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `toggle-group`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'Toolbar', + anchor: 'toolbar', + signature: 'Toolbar: (props: ToolbarProps) => JSX.Element', + typeOnly: true, + summary: + 'Titled toolbar row with an actions area, wrapping to a new line on small screens.', + }, + { + name: 'ToolbarProps', + anchor: 'toolbar-props', + signature: + 'ToolbarProps: Omit<BlockDivProps, "direction" | "rowFrom"> & {\n title: unknown;\n actions?: unknown;\n direction?: never;\n rowFrom?: never;\n}', + typeOnly: true, + summary: 'Props for the {@link Toolbar } component.', + members: [ + { + name: 'actions', + summary: '', + signature: 'actions?: unknown;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: undefined;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: undefined;', + }, + { + name: 'title', + summary: '', + signature: 'title: unknown;', + }, + ], + }, + { + name: 'Tooltip', + anchor: 'tooltip', + signature: + 'Tooltip: (props: TooltipProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: 'Renders a part of `tooltip`.', + }, + { + name: 'TooltipContent', + anchor: 'tooltip-content', + signature: + 'TooltipContent: { (props: TooltipContentProps): JSX.Element | null; (props: TooltipContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `tooltip-content` part of `tooltip` with `role="tooltip"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TooltipPortal', + anchor: 'tooltip-portal', + signature: + 'TooltipPortal: (props: TooltipPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `tooltip`.', + }, + { + name: 'TooltipTrigger', + anchor: 'tooltip-trigger', + signature: + 'TooltipTrigger: { (props: TooltipTriggerProps): JSX.Element; (props: TooltipTriggerAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `tooltip-trigger` part of `tooltip`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'Typography', + anchor: 'typography', + signature: 'Typography: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `typography` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'TypographyBlockquote', + anchor: 'typography-blockquote', + signature: + 'TypographyBlockquote: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `typography-blockquote` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'TypographyH1', + anchor: 'typography-h1', + signature: 'TypographyH1: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `typography-h1` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'TypographyH2', + anchor: 'typography-h2', + signature: 'TypographyH2: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `typography-h2` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'TypographyH3', + anchor: 'typography-h3', + signature: 'TypographyH3: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `typography-h3` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'TypographyH4', + anchor: 'typography-h4', + signature: 'TypographyH4: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `typography-h4` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'TypographyLead', + anchor: 'typography-lead', + signature: + 'TypographyLead: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `typography-lead` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'TypographyList', + anchor: 'typography-list', + signature: + 'TypographyList: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `typography-list` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'TypographyMuted', + anchor: 'typography-muted', + signature: + 'TypographyMuted: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `typography-muted` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'TypographyP', + anchor: 'typography-p', + signature: 'TypographyP: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `typography-p` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'VirtualList', + anchor: 'virtual-list', + signature: + 'VirtualList: { <Item>(props: VirtualListProps<Item>): JSX.Element; <Item>(props: VirtualListAsChildProps<Item>): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `virtual-list`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'VirtualListApi', + anchor: 'virtual-list-api', + signature: + 'VirtualListApi: {\n scrollToIndex: (index: number, alignment?: VirtualScrollAlignment) => void;\n scrollToTop: () => void;\n scrollToBottom: () => void;\n getState: () => VirtualListState;\n getVisibleRange: () => VirtualRange;\n getItemCount: () => number;\n getScrollTop: () => number;\n isAtTop: () => boolean;\n isAtBottom: () => boolean;\n isFollowingBottom: () => boolean;\n getPendingUnseenCount: () => number;\n setFollowBottom: (followBottom: boolean) => void;\n}', + typeOnly: true, + summary: 'Virtual List Api.', + }, + { + name: 'VirtualListAsChildProps', + anchor: 'virtual-list-as-child-props', + signature: + "VirtualListAsChildProps: Omit<VirtualListRootProps, 'children'> & {\n items: readonly Item[];\n rowHeight: number;\n /** Optional keyed row sizing. When omitted, VirtualList retains its fixed-height arithmetic path. */\n getRowHeight?: (item: Item, index: number) => number;\n overscan?: VirtualOverscan;\n getKey: (item: Item, index: number) => string | number;\n rowComponent: VirtualListRowComponent<Item>;\n followBottom?: boolean | {\n threshold?: number;\n };\n onScroll?: (event: Event) => void;\n viewport?: VirtualListViewport;\n apiRef?: Ref<VirtualListApi<Item> | null>;\n ref?: Ref<HTMLElement>;\n asChild: true;\n children: JSXElement;\n}", + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Virtual List.', + members: [ + { + name: 'apiRef', + summary: '', + signature: 'apiRef?: Ref<VirtualListApi<Item> | null>;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'followBottom', + summary: '', + signature: + 'followBottom?: boolean | { threshold?: number; } | undefined;', + }, + { + name: 'getKey', + summary: '', + signature: 'getKey: (item: Item, index: number) => string | number;', + }, + { + name: 'getRowHeight', + summary: + 'Optional keyed row sizing. When omitted, VirtualList retains its fixed-height arithmetic path.', + signature: + 'getRowHeight?: ((item: Item, index: number) => number) | undefined;', + }, + { + name: 'items', + summary: '', + signature: 'items: readonly Item[];', + }, + { + name: 'onScroll', + summary: '', + signature: 'onScroll?: ((event: Event) => void) | undefined;', + }, + { + name: 'overscan', + summary: '', + signature: 'overscan?: VirtualOverscan | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLElement>;', + }, + { + name: 'rowComponent', + summary: '', + signature: 'rowComponent: VirtualListRowComponent<Item>;', + }, + { + name: 'rowHeight', + summary: '', + signature: 'rowHeight: number;', + }, + { + name: 'viewport', + summary: '', + signature: 'viewport?: "lg" | undefined;', + }, + ], + }, + { + name: 'VirtualListProps', + anchor: 'virtual-list-props', + signature: + 'VirtualListProps: VirtualListRootProps & {\n items: readonly Item[];\n rowHeight: number;\n /** Optional keyed row sizing. When omitted, VirtualList retains its fixed-height arithmetic path. */\n getRowHeight?: (item: Item, index: number) => number;\n overscan?: VirtualOverscan;\n getKey: (item: Item, index: number) => string | number;\n rowComponent: VirtualListRowComponent<Item>;\n followBottom?: boolean | {\n threshold?: number;\n };\n onScroll?: (event: Event) => void;\n viewport?: VirtualListViewport;\n apiRef?: Ref<VirtualListApi<Item> | null>;\n ref?: Ref<HTMLElement>;\n asChild?: false;\n}', + typeOnly: true, + summary: 'Props for Virtual List.', + members: [ + { + name: 'apiRef', + summary: '', + signature: 'apiRef?: Ref<VirtualListApi<Item> | null>;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'followBottom', + summary: '', + signature: + 'followBottom?: boolean | { threshold?: number; } | undefined;', + }, + { + name: 'getKey', + summary: '', + signature: 'getKey: (item: Item, index: number) => string | number;', + }, + { + name: 'getRowHeight', + summary: + 'Optional keyed row sizing. When omitted, VirtualList retains its fixed-height arithmetic path.', + signature: + 'getRowHeight?: ((item: Item, index: number) => number) | undefined;', + }, + { + name: 'items', + summary: '', + signature: 'items: readonly Item[];', + }, + { + name: 'onScroll', + summary: '', + signature: 'onScroll?: ((event: Event) => void) | undefined;', + }, + { + name: 'overscan', + summary: '', + signature: 'overscan?: VirtualOverscan | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLElement>;', + }, + { + name: 'rowComponent', + summary: '', + signature: 'rowComponent: VirtualListRowComponent<Item>;', + }, + { + name: 'rowHeight', + summary: '', + signature: 'rowHeight: number;', + }, + { + name: 'viewport', + summary: '', + signature: 'viewport?: "lg" | undefined;', + }, + ], + }, + { + name: 'VirtualListRowComponent', + anchor: 'virtual-list-row-component', + signature: + 'VirtualListRowComponent: (props: VirtualListRowComponentProps<Item>) => VirtualListRowElement | null', + typeOnly: true, + summary: 'Virtual List Row Component.', + }, + { + name: 'VirtualListRowComponentProps', + anchor: 'virtual-list-row-component-props', + signature: + 'VirtualListRowComponentProps: {\n item: Item;\n index: number;\n rowKey: string;\n isVisible: boolean;\n}', + typeOnly: true, + summary: 'Props for Virtual List Row Component.', + members: [ + { + name: 'index', + summary: '', + signature: 'index: number;', + }, + { + name: 'isVisible', + summary: '', + signature: 'isVisible: boolean;', + }, + { + name: 'item', + summary: '', + signature: 'item: Item;', + }, + { + name: 'rowKey', + summary: '', + signature: 'rowKey: string;', + }, + ], + }, + { + name: 'VirtualListRowElement', + anchor: 'virtual-list-row-element', + signature: 'VirtualListRowElement: JSXElement | JSX.Element', + typeOnly: true, + summary: 'Virtual List Row Element.', + }, + { + name: 'VirtualListState', + anchor: 'virtual-list-state', + signature: + 'VirtualListState: {\n count: number;\n scrollTop: number;\n viewportHeight: number;\n totalHeight: number;\n visibleRange: VirtualRange;\n isAtTop: boolean;\n isAtBottom: boolean;\n followBottom: boolean;\n pendingUnseenCount: number;\n}', + typeOnly: true, + summary: 'Virtual List State.', + }, + { + name: 'VirtualListViewport', + anchor: 'virtual-list-viewport', + signature: "VirtualListViewport: 'lg'", + typeOnly: true, + summary: 'Virtual List Viewport.', + }, + { + name: 'VirtualTable', + anchor: 'virtual-table', + signature: + 'VirtualTable: { <Row>(props: VirtualTableProps<Row>): JSX.Element; <Row>(props: VirtualTableAsChildProps<Row>): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `virtual-table`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'VirtualTableApi', + anchor: 'virtual-table-api', + signature: + 'VirtualTableApi: {\n scrollToIndex: (index: number, alignment?: VirtualScrollAlignment) => void;\n scrollToTop: () => void;\n scrollToBottom: () => void;\n getState: () => VirtualTableState;\n getVisibleRange: () => VirtualRange;\n getRowCount: () => number;\n getScrollTop: () => number;\n isAtTop: () => boolean;\n isAtBottom: () => boolean;\n getSelectedRowKey: () => string | null;\n getSelectedRowIndex: () => number;\n selectRowByKey: (rowKey: string) => void;\n selectRowByIndex: (index: number) => void;\n clearSelection: () => void;\n}', + typeOnly: true, + summary: 'Virtual Table Api.', + }, + { + name: 'VirtualTableAsChildProps', + anchor: 'virtual-table-as-child-props', + signature: + "VirtualTableAsChildProps: Omit<VirtualTableRootProps, 'children'> & {\n rows: readonly Row[];\n rowHeight: number;\n headerHeight: number;\n overscan?: VirtualOverscan;\n getKey: (row: Row, index: number) => string | number;\n columns: readonly VirtualTableColumn<Row>[];\n selectedRowKey?: string | null;\n defaultSelectedRowKey?: string | null;\n onSelectedRowKeyChange?: (next: string | null) => void;\n onRowClick?: (row: Row, rowIndex: number, rowKey: string, event: MouseEvent) => void;\n onScroll?: (event: Event) => void;\n viewport?: VirtualTableViewport;\n tableWidth?: VirtualTableWidth;\n apiRef?: Ref<VirtualTableApi<Row> | null>;\n ref?: Ref<HTMLElement>;\n asChild: true;\n children: JSXElement;\n}", + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Virtual Table.', + members: [ + { + name: 'apiRef', + summary: '', + signature: 'apiRef?: Ref<VirtualTableApi<Row> | null>;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'columns', + summary: '', + signature: 'columns: readonly VirtualTableColumn<Row>[];', + }, + { + name: 'defaultSelectedRowKey', + summary: '', + signature: 'defaultSelectedRowKey?: string | null | undefined;', + }, + { + name: 'getKey', + summary: '', + signature: 'getKey: (row: Row, index: number) => string | number;', + }, + { + name: 'headerHeight', + summary: '', + signature: 'headerHeight: number;', + }, + { + name: 'onRowClick', + summary: '', + signature: + 'onRowClick?: ((row: Row, rowIndex: number, rowKey: string, event: MouseEvent) => void) | undefined;', + }, + { + name: 'onScroll', + summary: '', + signature: 'onScroll?: ((event: Event) => void) | undefined;', + }, + { + name: 'onSelectedRowKeyChange', + summary: '', + signature: + 'onSelectedRowKeyChange?: ((next: string | null) => void) | undefined;', + }, + { + name: 'overscan', + summary: '', + signature: 'overscan?: VirtualOverscan | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLElement>;', + }, + { + name: 'rowHeight', + summary: '', + signature: 'rowHeight: number;', + }, + { + name: 'rows', + summary: '', + signature: 'rows: readonly Row[];', + }, + { + name: 'selectedRowKey', + summary: '', + signature: 'selectedRowKey?: string | null | undefined;', + }, + { + name: 'tableWidth', + summary: '', + signature: 'tableWidth?: "compact" | undefined;', + }, + { + name: 'viewport', + summary: '', + signature: 'viewport?: "lg" | undefined;', + }, + ], + }, + { + name: 'VirtualTableCellComponent', + anchor: 'virtual-table-cell-component', + signature: + 'VirtualTableCellComponent: (props: VirtualTableCellComponentProps<Row>) => VirtualTableCellElement | null', + typeOnly: true, + summary: 'Virtual Table Cell Component.', + }, + { + name: 'VirtualTableCellComponentProps', + anchor: 'virtual-table-cell-component-props', + signature: + 'VirtualTableCellComponentProps: {\n row: Row;\n rowIndex: number;\n rowKey: string;\n column: VirtualTableColumn<Row>;\n selected: boolean;\n}', + typeOnly: true, + summary: 'Props for Virtual Table Cell Component.', + members: [ + { + name: 'column', + summary: '', + signature: 'column: VirtualTableColumn<Row>;', + }, + { + name: 'row', + summary: '', + signature: 'row: Row;', + }, + { + name: 'rowIndex', + summary: '', + signature: 'rowIndex: number;', + }, + { + name: 'rowKey', + summary: '', + signature: 'rowKey: string;', + }, + { + name: 'selected', + summary: '', + signature: 'selected: boolean;', + }, + ], + }, + { + name: 'VirtualTableCellElement', + anchor: 'virtual-table-cell-element', + signature: 'VirtualTableCellElement: JSXElement | JSX.Element', + typeOnly: true, + summary: 'Virtual Table Cell Element.', + }, + { + name: 'VirtualTableColumn', + anchor: 'virtual-table-column', + signature: + 'VirtualTableColumn: {\n id: string;\n header: JSXElement | string;\n width?: number | string;\n cellComponent: VirtualTableCellComponent<Row>;\n}', + typeOnly: true, + summary: 'Virtual Table Column.', + }, + { + name: 'VirtualTableProps', + anchor: 'virtual-table-props', + signature: + 'VirtualTableProps: VirtualTableRootProps & {\n rows: readonly Row[];\n rowHeight: number;\n headerHeight: number;\n overscan?: VirtualOverscan;\n getKey: (row: Row, index: number) => string | number;\n columns: readonly VirtualTableColumn<Row>[];\n selectedRowKey?: string | null;\n defaultSelectedRowKey?: string | null;\n onSelectedRowKeyChange?: (next: string | null) => void;\n onRowClick?: (row: Row, rowIndex: number, rowKey: string, event: MouseEvent) => void;\n onScroll?: (event: Event) => void;\n viewport?: VirtualTableViewport;\n tableWidth?: VirtualTableWidth;\n apiRef?: Ref<VirtualTableApi<Row> | null>;\n ref?: Ref<HTMLElement>;\n asChild?: false;\n}', + typeOnly: true, + summary: 'Props for Virtual Table.', + members: [ + { + name: 'apiRef', + summary: '', + signature: 'apiRef?: Ref<VirtualTableApi<Row> | null>;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'columns', + summary: '', + signature: 'columns: readonly VirtualTableColumn<Row>[];', + }, + { + name: 'defaultSelectedRowKey', + summary: '', + signature: 'defaultSelectedRowKey?: string | null | undefined;', + }, + { + name: 'getKey', + summary: '', + signature: 'getKey: (row: Row, index: number) => string | number;', + }, + { + name: 'headerHeight', + summary: '', + signature: 'headerHeight: number;', + }, + { + name: 'onRowClick', + summary: '', + signature: + 'onRowClick?: ((row: Row, rowIndex: number, rowKey: string, event: MouseEvent) => void) | undefined;', + }, + { + name: 'onScroll', + summary: '', + signature: 'onScroll?: ((event: Event) => void) | undefined;', + }, + { + name: 'onSelectedRowKeyChange', + summary: '', + signature: + 'onSelectedRowKeyChange?: ((next: string | null) => void) | undefined;', + }, + { + name: 'overscan', + summary: '', + signature: 'overscan?: VirtualOverscan | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLElement>;', + }, + { + name: 'rowHeight', + summary: '', + signature: 'rowHeight: number;', + }, + { + name: 'rows', + summary: '', + signature: 'rows: readonly Row[];', + }, + { + name: 'selectedRowKey', + summary: '', + signature: 'selectedRowKey?: string | null | undefined;', + }, + { + name: 'tableWidth', + summary: '', + signature: 'tableWidth?: "compact" | undefined;', + }, + { + name: 'viewport', + summary: '', + signature: 'viewport?: "lg" | undefined;', + }, + ], + }, + { + name: 'VirtualTableState', + anchor: 'virtual-table-state', + signature: + 'VirtualTableState: {\n count: number;\n rowHeight: number;\n headerHeight: number;\n scrollTop: number;\n viewportHeight: number;\n totalHeight: number;\n visibleRange: VirtualRange;\n isAtTop: boolean;\n isAtBottom: boolean;\n selectedRowKey: string | null;\n selectedRowIndex: number;\n}', + typeOnly: true, + summary: 'Virtual Table State.', + }, + { + name: 'VirtualTableViewport', + anchor: 'virtual-table-viewport', + signature: "VirtualTableViewport: 'lg'", + typeOnly: true, + summary: 'Virtual Table Viewport.', + }, + { + name: 'VirtualTableWidth', + anchor: 'virtual-table-width', + signature: "VirtualTableWidth: 'compact'", + typeOnly: true, + summary: 'Virtual Table Width.', + }, + { + name: 'VisuallyHidden', + anchor: 'visually-hidden', + signature: + 'VisuallyHidden: { (props: VisuallyHiddenSpanProps): JSX.Element; (props: VisuallyHiddenAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `visually-hidden`.\n\nSupports polymorphic rendering via `asChild`.', + }, + ], + symbols55: [ + { + name: 'CAT_THEME_NAMES', + anchor: 'cat-theme-names', + signature: + 'CAT_THEME_NAMES: readonly ["tabby", "ginger", "tuxedo", "calico", "torty"]', + typeOnly: true, + summary: 'Names of the built-in "cat" theme presets.', + }, + { + name: 'CAT_THEME_OPTIONS', + anchor: 'cat-theme-options', + signature: 'CAT_THEME_OPTIONS: readonly ThemeOption[]', + typeOnly: true, + summary: + 'Theme options for the built-in "cat" theme presets, keyed to {@link CAT_THEME_NAMES}.', + }, + { + name: 'CatThemeName', + anchor: 'cat-theme-name', + signature: 'CatThemeName: (typeof CAT_THEME_NAMES)[number]', + typeOnly: true, + summary: 'A built-in "cat" theme name, one of {@link CAT_THEME_NAMES}.', + }, + { + name: 'DEFAULT_THEME_OPTIONS', + anchor: 'default-theme-options', + signature: 'DEFAULT_THEME_OPTIONS: readonly ThemeOption[]', + typeOnly: true, + summary: + 'Default light/dark/system theme options used by {@link ThemeScope} and {@link ThemePicker}.', + }, + { + name: 'theme', + anchor: 'theme', + signature: 'theme: () => ThemeScopeValue', + typeOnly: true, + summary: + 'Reads the current {@link ThemeScopeValue} from the nearest enclosing {@link ThemeScope}.', + }, + { + name: 'ThemeName', + anchor: 'theme-name', + signature: + 'ThemeName: "light" | "dark" | "system" | CatThemeName | (string & {})', + typeOnly: true, + summary: + 'Any theme identifier accepted by {@link ThemeScope}: `"light"`, `"dark"`, `"system"`, a {@link CatThemeName}, or a custom string.', + }, + { + name: 'ThemeOption', + anchor: 'theme-option', + signature: 'ThemeOption: {\n value: ThemeName;\n label: string;\n}', + typeOnly: true, + summary: + 'A theme choice offered by {@link ThemePicker}/{@link ThemeToggle}: a `value` paired with a display `label`.', + }, + { + name: 'ThemePicker', + anchor: 'theme-picker', + signature: 'ThemePicker: (props: ThemePickerProps) => JSX.Element', + typeOnly: true, + summary: + "A `<select>` bound to the current {@link theme}, listing `themes` (defaults to the enclosing scope's options).", + }, + { + name: 'ThemePickerProps', + anchor: 'theme-picker-props', + signature: + 'ThemePickerProps: Omit<JSX.IntrinsicElements["select"], "children" | "value" | "defaultValue" | "onChange"> & {\n themes?: readonly ThemeOption[];\n label?: string;\n}', + typeOnly: true, + summary: 'Props for the {@link ThemePicker} component.', + members: [ + { + name: 'label', + summary: '', + signature: 'label?: string | undefined;', + }, + { + name: 'themes', + summary: '', + signature: 'themes?: readonly ThemeOption[] | undefined;', + }, + ], + }, + { + name: 'ThemeScope', + anchor: 'theme-scope', + signature: 'ThemeScope: (props: ThemeScopeProps) => JSX.Element', + typeOnly: true, + summary: + 'Establishes a theme boundary: tracks the active theme (persisted to\n`localStorage` under `storageKey` and synced across tabs/scopes), resolves\nthe OS `"system"` preference, and reflects the choice onto the DOM via\n`data-theme`/`data-theme-choice` attributes. Nested scopes cooperate\nthrough a shared coordinator so the deepest explicitly-set scope wins.', + }, + { + name: 'ThemeScopeProps', + anchor: 'theme-scope-props', + signature: + 'ThemeScopeProps: {\n children?: unknown;\n defaultTheme?: ThemeName;\n themes?: readonly ThemeOption[];\n storageKey?: string;\n}', + typeOnly: true, + summary: 'Props for the {@link ThemeScope} component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'defaultTheme', + summary: '', + signature: 'defaultTheme?: ThemeName | undefined;', + }, + { + name: 'storageKey', + summary: '', + signature: 'storageKey?: string | undefined;', + }, + { + name: 'themes', + summary: '', + signature: 'themes?: readonly ThemeOption[] | undefined;', + }, + ], + }, + { + name: 'ThemeScopeValue', + anchor: 'theme-scope-value', + signature: + 'ThemeScopeValue: {\n theme: () => ThemeName;\n resolvedSystemTheme: () => "light" | "dark";\n setTheme: (theme: ThemeName) => void;\n themes: readonly ThemeOption[];\n storageKey: string;\n}', + typeOnly: true, + summary: + 'Value read from {@link theme}: the active theme, its resolved system value, a setter, and the available theme options.', + }, + { + name: 'ThemeToggle', + anchor: 'theme-toggle', + signature: 'ThemeToggle: (props: ThemeToggleProps) => JSX.Element', + typeOnly: true, + summary: + 'A button that cycles through `themes` (defaults to `["light", "dark"]`) on\npress. Supports icon props per theme, or a function-as-children render\nprop receiving {@link ThemeToggleRenderContext}.', + }, + { + name: 'ThemeToggleProps', + anchor: 'theme-toggle-props', + signature: + 'ThemeToggleProps: Omit<ButtonNativeProps, "children" | "onPress"> & {\n children?: unknown | ((context: ThemeToggleRenderContext) => unknown);\n lightIcon?: unknown;\n darkIcon?: unknown;\n systemIcon?: unknown;\n themes?: readonly ThemeName[];\n onPress?: (event: PressEvent) => void;\n}', + typeOnly: true, + summary: 'Props for the {@link ThemeToggle} component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'darkIcon', + summary: '', + signature: 'darkIcon?: unknown;', + }, + { + name: 'lightIcon', + summary: '', + signature: 'lightIcon?: unknown;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'systemIcon', + summary: '', + signature: 'systemIcon?: unknown;', + }, + { + name: 'themes', + summary: '', + signature: 'themes?: readonly ThemeName[] | undefined;', + }, + ], + }, + { + name: 'ThemeToggleRenderContext', + anchor: 'theme-toggle-render-context', + signature: + 'ThemeToggleRenderContext: {\n theme: ThemeName;\n nextTheme: ThemeName;\n}', + typeOnly: true, + summary: + 'Render context passed to a function-as-children {@link ThemeToggleProps.children}.', + }, + ], + symbols56: [ + { + name: 'withThemeStyles', + anchor: 'with-theme-styles', + signature: + 'withThemeStyles: <TArgs extends { appHtml: string; context: { cspNonce?: string; styles?: readonly { id: string; cssText: string; }[]; }; }>(documentRenderer: (args: TArgs) => string) => (args: TArgs) => string', + typeOnly: false, + summary: + 'Wrap an Askr SSR/SSG document renderer so generated theme rules used by the\nrendered app are available before hydration.', + }, + ], + symbols57: [ + { + name: 'Accordion', + anchor: 'accordion', + signature: 'Accordion: (props: AccordionProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a part of `accordion`.', + }, + { + name: 'AccordionContent', + anchor: 'accordion-content', + signature: + 'AccordionContent: { (props: AccordionContentProps): JSX.Element | null; (props: AccordionContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `accordion-content` part of `accordion` with `role="region"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AccordionContentAsChildProps', + anchor: 'accordion-content-as-child-props', + signature: + 'AccordionContentAsChildProps: BoxAsChildProps & AccordionContentOwnProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Accordion Content.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'forceMount', + summary: '', + signature: 'forceMount?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + ], + }, + { + name: 'AccordionContentOwnProps', + anchor: 'accordion-content-own-props', + signature: 'AccordionContentOwnProps: {\n forceMount?: boolean;\n}', + typeOnly: true, + summary: + 'Own props for Accordion Content, before merging with native element attributes.', + members: [ + { + name: 'forceMount', + summary: '', + signature: 'forceMount?: boolean | undefined;', + }, + ], + }, + { + name: 'AccordionContentProps', + anchor: 'accordion-content-props', + signature: + "AccordionContentProps: BoxProps<'div', HTMLDivElement> & AccordionContentOwnProps", + typeOnly: true, + summary: 'Props for Accordion Content.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'forceMount', + summary: '', + signature: 'forceMount?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'AccordionHeader', + anchor: 'accordion-header', + signature: + 'AccordionHeader: { (props: AccordionHeaderProps): JSX.Element; (props: AccordionHeaderAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `accordion-header` part of `accordion`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AccordionHeaderAsChildProps', + anchor: 'accordion-header-as-child-props', + signature: 'AccordionHeaderAsChildProps: BoxAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Accordion Header.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + ], + }, + { + name: 'AccordionHeaderProps', + anchor: 'accordion-header-props', + signature: "AccordionHeaderProps: BoxProps<'h3', HTMLHeadingElement>", + typeOnly: true, + summary: 'Props for Accordion Header.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLHeadingElement>;', + }, + ], + }, + { + name: 'AccordionItem', + anchor: 'accordion-item', + signature: 'AccordionItem: (props: AccordionItemProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the `accordion-item` part of `accordion`.', + }, + { + name: 'AccordionItemOwnProps', + anchor: 'accordion-item-own-props', + signature: + 'AccordionItemOwnProps: {\n children?: unknown;\n value: string;\n disabled?: boolean;\n}', + typeOnly: true, + summary: + 'Own props for Accordion Item, before merging with native element attributes.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value: string;', + }, + ], + }, + { + name: 'AccordionItemProps', + anchor: 'accordion-item-props', + signature: + "AccordionItemProps: BoxProps<'div', HTMLDivElement> & AccordionItemOwnProps", + typeOnly: true, + summary: 'Props for Accordion Item.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + { + name: 'value', + summary: '', + signature: 'value: string;', + }, + ], + }, + { + name: 'AccordionMultipleProps', + anchor: 'accordion-multiple-props', + signature: + "AccordionMultipleProps: BoxProps<'div', HTMLDivElement> & AccordionSharedOwnProps & {\n type: 'multiple';\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n}", + typeOnly: true, + summary: 'Props for Accordion Multiple.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: + 'Supports literal, nested, array-mapped, and `For`-rendered descendants.', + signature: 'children?: unknown;', + }, + { + name: 'collapsible', + summary: '', + signature: 'collapsible?: boolean | undefined;', + }, + { + name: 'defaultValue', + summary: '', + signature: 'defaultValue?: string[] | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'loop', + summary: '', + signature: 'loop?: boolean | undefined;', + }, + { + name: 'onValueChange', + summary: '', + signature: 'onValueChange?: ((value: string[]) => void) | undefined;', + }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: AccordionOrientation | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type: "multiple";', + }, + { + name: 'value', + summary: '', + signature: 'value?: string[] | undefined;', + }, + ], + }, + { + name: 'AccordionOrientation', + anchor: 'accordion-orientation', + signature: "AccordionOrientation: 'vertical' | 'horizontal'", + typeOnly: true, + summary: 'Accordion Orientation.', + }, + { + name: 'AccordionProps', + anchor: 'accordion-props', + signature: + 'AccordionProps: AccordionSingleProps | AccordionMultipleProps', + typeOnly: true, + summary: 'Props for Accordion.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: + 'Supports literal, nested, array-mapped, and `For`-rendered descendants.', + signature: 'children?: unknown;', + }, + { + name: 'collapsible', + summary: '', + signature: 'collapsible?: boolean | undefined;', + }, + { + name: 'defaultValue', + summary: '', + signature: 'defaultValue?: string | string[] | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'loop', + summary: '', + signature: 'loop?: boolean | undefined;', + }, + { + name: 'onValueChange', + summary: '', + signature: + 'onValueChange?: ((value: string[]) => void) | ((value: string) => void) | undefined;', + }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: AccordionOrientation | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "single" | "multiple" | undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value?: string | string[] | undefined;', + }, + ], + }, + { + name: 'AccordionSingleProps', + anchor: 'accordion-single-props', + signature: + "AccordionSingleProps: BoxProps<'div', HTMLDivElement> & AccordionSharedOwnProps & {\n type?: 'single';\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n}", + typeOnly: true, + summary: 'Props for Accordion Single.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: + 'Supports literal, nested, array-mapped, and `For`-rendered descendants.', + signature: 'children?: unknown;', + }, + { + name: 'collapsible', + summary: '', + signature: 'collapsible?: boolean | undefined;', + }, + { + name: 'defaultValue', + summary: '', + signature: 'defaultValue?: string | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'loop', + summary: '', + signature: 'loop?: boolean | undefined;', + }, + { + name: 'onValueChange', + summary: '', + signature: 'onValueChange?: ((value: string) => void) | undefined;', + }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: AccordionOrientation | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "single" | undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value?: string | undefined;', + }, + ], + }, + { + name: 'AccordionTrigger', + anchor: 'accordion-trigger', + signature: + 'AccordionTrigger: { (props: AccordionTriggerProps): JSX.Element; (props: AccordionTriggerAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `accordion-trigger` part of `accordion`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AccordionTriggerAsChildProps', + anchor: 'accordion-trigger-as-child-props', + signature: 'AccordionTriggerAsChildProps: ButtonLikeAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Accordion Trigger.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', + }, + ], + }, + { + name: 'AccordionTriggerProps', + anchor: 'accordion-trigger-props', + signature: + "AccordionTriggerProps: ButtonLikeProps<'button', HTMLButtonElement>", + typeOnly: true, + summary: 'Props for Accordion Trigger.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', + }, + ], + }, + ], + symbols58: [ + { + name: 'AlertDialog', + anchor: 'alert-dialog', + signature: + 'AlertDialog: (props: AlertDialogProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: 'Renders a part of `alert-dialog`.', + }, + { + name: 'AlertDialogAction', + anchor: 'alert-dialog-action', + signature: + 'DialogClose: { (props: DialogCloseProps): JSX.Element; (props: DialogCloseAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `dialog-close` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AlertDialogActionAsChildProps', + anchor: 'alert-dialog-action-as-child-props', + signature: 'AlertDialogActionAsChildProps: DialogCloseAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Alert Dialog Action.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', + }, + ], + }, + { + name: 'AlertDialogActionProps', + anchor: 'alert-dialog-action-props', + signature: 'AlertDialogActionProps: DialogCloseProps', + typeOnly: true, + summary: 'Props for Alert Dialog Action.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', + }, + ], + }, + { + name: 'AlertDialogCancel', + anchor: 'alert-dialog-cancel', + signature: + 'DialogClose: { (props: DialogCloseProps): JSX.Element; (props: DialogCloseAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `dialog-close` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AlertDialogCancelAsChildProps', + anchor: 'alert-dialog-cancel-as-child-props', + signature: 'AlertDialogCancelAsChildProps: DialogCloseAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Alert Dialog Cancel.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', + }, + ], + }, + { + name: 'AlertDialogCancelProps', + anchor: 'alert-dialog-cancel-props', + signature: 'AlertDialogCancelProps: DialogCloseProps', + typeOnly: true, + summary: 'Props for Alert Dialog Cancel.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', + }, + ], + }, + { + name: 'AlertDialogContent', + anchor: 'alert-dialog-content', + signature: + 'AlertDialogContent: (props: AlertDialogContentProps | AlertDialogContentAsChildProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders a part of `alert-dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AlertDialogContentAsChildProps', + anchor: 'alert-dialog-content-as-child-props', + signature: 'AlertDialogContentAsChildProps: DialogContentAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Alert Dialog Content.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'forceMount', + summary: '', + signature: 'forceMount?: boolean | undefined;', + }, + { + name: 'onDismiss', + summary: '', + signature: 'onDismiss?: (() => void) | undefined;', + }, + { + name: 'onEscapeKeyDown', + summary: '', + signature: + 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', + }, + { + name: 'onInteractOutside', + summary: '', + signature: + 'onInteractOutside?: ((event: Event) => void) | undefined;', + }, + { + name: 'onPointerDownOutside', + summary: '', + signature: + 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'restoreFocus', + summary: + 'Explicit focus target used when a controlled dialog has no persistent trigger.', + signature: + 'restoreFocus?: HTMLElement | (() => HTMLElement | null) | null | undefined;', + }, + { + name: 'role', + summary: '', + signature: 'role?: "dialog" | "alertdialog" | undefined;', + }, + ], + }, + { + name: 'AlertDialogContentOwnProps', + anchor: 'alert-dialog-content-own-props', + signature: 'AlertDialogContentOwnProps: DialogContentOwnProps', + typeOnly: true, + summary: + 'Own props for Alert Dialog Content, before merging with native element attributes.', + members: [ + { + name: 'forceMount', + summary: '', + signature: 'forceMount?: boolean | undefined;', + }, + { + name: 'onDismiss', + summary: '', + signature: 'onDismiss?: (() => void) | undefined;', + }, + { + name: 'onEscapeKeyDown', + summary: '', + signature: + 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', + }, + { + name: 'onInteractOutside', + summary: '', + signature: + 'onInteractOutside?: ((event: Event) => void) | undefined;', + }, + { + name: 'onPointerDownOutside', + summary: '', + signature: + 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', + }, + { + name: 'restoreFocus', + summary: + 'Explicit focus target used when a controlled dialog has no persistent trigger.', + signature: + 'restoreFocus?: HTMLElement | (() => HTMLElement | null) | null | undefined;', + }, + { + name: 'role', + summary: '', + signature: 'role?: "dialog" | "alertdialog" | undefined;', + }, + ], + }, + { + name: 'AlertDialogContentProps', + anchor: 'alert-dialog-content-props', + signature: 'AlertDialogContentProps: DialogContentProps', + typeOnly: true, + summary: 'Props for Alert Dialog Content.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'forceMount', + summary: '', + signature: 'forceMount?: boolean | undefined;', + }, + { + name: 'onDismiss', + summary: '', + signature: 'onDismiss?: (() => void) | undefined;', + }, + { + name: 'onEscapeKeyDown', + summary: '', + signature: + 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', + }, + { + name: 'onInteractOutside', + summary: '', + signature: + 'onInteractOutside?: ((event: Event) => void) | undefined;', + }, + { + name: 'onPointerDownOutside', + summary: '', + signature: + 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + { + name: 'restoreFocus', + summary: + 'Explicit focus target used when a controlled dialog has no persistent trigger.', + signature: + 'restoreFocus?: HTMLElement | (() => HTMLElement | null) | null | undefined;', + }, + { + name: 'role', + summary: '', + signature: 'role?: "dialog" | "alertdialog" | undefined;', + }, + ], + }, + { + name: 'AlertDialogDescription', + anchor: 'alert-dialog-description', + signature: + 'DialogDescription: { (props: DialogDescriptionProps): JSX.Element; (props: DialogDescriptionAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `dialog-description` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AlertDialogDescriptionAsChildProps', + anchor: 'alert-dialog-description-as-child-props', + signature: + 'AlertDialogDescriptionAsChildProps: DialogDescriptionAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Alert Dialog Description.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + ], + }, + { + name: 'AlertDialogDescriptionProps', + anchor: 'alert-dialog-description-props', + signature: 'AlertDialogDescriptionProps: DialogDescriptionProps', + typeOnly: true, + summary: 'Props for Alert Dialog Description.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLParagraphElement>;', + }, + ], + }, + { + name: 'AlertDialogOverlay', + anchor: 'alert-dialog-overlay', + signature: + 'DialogOverlay: { (props: DialogOverlayProps): JSX.Element | null; (props: DialogOverlayAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `dialog-overlay` part of `dialog`.\n\nWith `@askrjs/themes/default`, the overlay is fully styled out of the box\nwith the shared backdrop token, blur, stacking, and fade animation. Standard\nDialog and AlertDialog usage requires no additional overlay CSS; customize\nthe theme tokens instead of applying a competing background class.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AlertDialogOverlayAsChildProps', + anchor: 'alert-dialog-overlay-as-child-props', + signature: 'AlertDialogOverlayAsChildProps: DialogOverlayAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Alert Dialog Overlay.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'forceMount', + summary: '', + signature: 'forceMount?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + ], + }, + { + name: 'AlertDialogOverlayOwnProps', + anchor: 'alert-dialog-overlay-own-props', + signature: 'AlertDialogOverlayOwnProps: DialogOverlayOwnProps', + typeOnly: true, + summary: + 'Own props for Alert Dialog Overlay, before merging with native element attributes.', + members: [ + { + name: 'forceMount', + summary: '', + signature: 'forceMount?: boolean | undefined;', + }, + ], + }, + { + name: 'AlertDialogOverlayProps', + anchor: 'alert-dialog-overlay-props', + signature: 'AlertDialogOverlayProps: DialogOverlayProps', + typeOnly: true, + summary: 'Props for Alert Dialog Overlay.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'forceMount', + summary: '', + signature: 'forceMount?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'AlertDialogOwnProps', + anchor: 'alert-dialog-own-props', + signature: 'AlertDialogOwnProps: DialogProps', + typeOnly: true, + summary: + 'Own props for Alert Dialog, before merging with native element attributes.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'defaultOpen', + summary: '', + signature: 'defaultOpen?: boolean | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'modal', + summary: '', + signature: 'modal?: boolean | undefined;', + }, + { + name: 'onOpenChange', + summary: '', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', + }, + { + name: 'open', + summary: '', + signature: 'open?: boolean | undefined;', + }, + ], + }, + { + name: 'AlertDialogPortal', + anchor: 'alert-dialog-portal', + signature: + 'DialogPortal: (props: DialogPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `dialog`.', + }, + { + name: 'AlertDialogPortalProps', + anchor: 'alert-dialog-portal-props', + signature: 'AlertDialogPortalProps: DialogPortalProps', + typeOnly: true, + summary: 'Props for Alert Dialog Portal.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + ], + }, + { + name: 'AlertDialogProps', + anchor: 'alert-dialog-props', + signature: 'AlertDialogProps: DialogProps', + typeOnly: true, + summary: 'Props for Alert Dialog.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'defaultOpen', + summary: '', + signature: 'defaultOpen?: boolean | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'modal', + summary: '', + signature: 'modal?: boolean | undefined;', + }, + { + name: 'onOpenChange', + summary: '', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', + }, + { + name: 'open', + summary: '', + signature: 'open?: boolean | undefined;', + }, + ], + }, + { + name: 'AlertDialogTitle', + anchor: 'alert-dialog-title', + signature: + 'DialogTitle: { (props: DialogTitleProps): JSX.Element; (props: DialogTitleAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `dialog-title` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AlertDialogTitleAsChildProps', + anchor: 'alert-dialog-title-as-child-props', + signature: 'AlertDialogTitleAsChildProps: DialogTitleAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Alert Dialog Title.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + ], + }, + { + name: 'AlertDialogTitleProps', + anchor: 'alert-dialog-title-props', + signature: 'AlertDialogTitleProps: DialogTitleProps', + typeOnly: true, + summary: 'Props for Alert Dialog Title.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLHeadingElement>;', + }, + ], + }, + { + name: 'AlertDialogTrigger', + anchor: 'alert-dialog-trigger', + signature: + 'AlertDialogTrigger: (props: AlertDialogTriggerProps | AlertDialogTriggerAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders a part of `alert-dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AlertDialogTriggerAsChildProps', + anchor: 'alert-dialog-trigger-as-child-props', + signature: 'AlertDialogTriggerAsChildProps: DialogTriggerAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Alert Dialog Trigger.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', + }, + ], + }, + { + name: 'AlertDialogTriggerProps', + anchor: 'alert-dialog-trigger-props', + signature: 'AlertDialogTriggerProps: DialogTriggerProps', + typeOnly: true, + summary: 'Props for Alert Dialog Trigger.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', + }, + ], + }, + ], + symbols59: [ + { + name: 'Alert', + anchor: 'alert', + signature: 'Alert: (props: AlertProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders an alert/status banner with an optional icon, title, description,\nactions, and a dismiss button. Automatically picks an "alert" or "status"\nARIA role from `variant` unless `role` is set explicitly.', + }, + { + name: 'AlertHeadingTag', + anchor: 'alert-heading-tag', + signature: 'AlertHeadingTag: "h2" | "h3" | "h4" | "h5" | "h6"', + typeOnly: true, + summary: "Heading tag allowed for an alert's title via `titleAs`.", + }, + { + name: 'AlertProps', + anchor: 'alert-props', + signature: + 'AlertProps: DivProps & {\n actions?: unknown;\n children?: unknown;\n description?: unknown;\n dismissLabel?: string;\n icon?: unknown;\n onDismiss?: () => void;\n title?: unknown;\n titleAs?: AlertHeadingTag;\n variant?: AlertVariant;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link Alert } component.', + members: [ + { + name: 'actions', + summary: '', + signature: 'actions?: unknown;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'description', + summary: '', + signature: 'description?: unknown;', + }, + { + name: 'dismissLabel', + summary: '', + signature: 'dismissLabel?: string | undefined;', + }, + { + name: 'icon', + summary: '', + signature: 'icon?: unknown;', + }, + { + name: 'onDismiss', + summary: '', + signature: 'onDismiss?: (() => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + { + name: 'title', + summary: '', + signature: 'title?: unknown;', + }, + { + name: 'titleAs', + summary: '', + signature: 'titleAs?: AlertHeadingTag | undefined;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: AlertVariant | undefined;', + }, + ], + }, + { + name: 'AlertVariant', + anchor: 'alert-variant', + signature: + 'AlertVariant: "default" | "info" | "success" | "warning" | "danger"', + typeOnly: true, + summary: + 'Visual tone of an {@link AlertProps} alert; `"danger"`/`"warning"` render with `role="alert"`.', + }, + ], + symbols60: [ + { + name: 'AspectRatio', + anchor: 'aspect-ratio', + signature: + 'AspectRatio: { (props: AspectRatioProps): JSX.Element; (props: AspectRatioAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Constrains its content to a fixed width/height ratio (defaults to `1`)\nusing a computed `aspect-ratio` style, rendering as a `<div>` or, with\n`asChild`, merging its layout into the single child element.', + }, + { + name: 'AspectRatioAsChildProps', + anchor: 'aspect-ratio-as-child-props', + signature: + 'AspectRatioAsChildProps: AspectRatioOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + typeOnly: true, + summary: + 'Props for {@link AspectRatio } rendered with `asChild`, merging layout onto a single child element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'ratio', + summary: '', + signature: 'ratio?: string | number | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + { + name: 'style', + summary: '', + signature: 'style?: unknown;', + }, + ], + }, + { + name: 'AspectRatioProps', + anchor: 'aspect-ratio-props', + signature: + 'AspectRatioProps: Omit<JSX.IntrinsicElements["div"], "children" | "ref"> & AspectRatioOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: + 'Props for {@link AspectRatio } rendered as its default `<div>` element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ratio', + summary: '', + signature: 'ratio?: string | number | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + { + name: 'style', + summary: '', + signature: 'style?: unknown;', + }, + ], + }, + ], + symbols61: [ + { + name: 'Avatar', + anchor: 'avatar', + signature: + 'Avatar: { (props: AvatarProps): JSX.Element; (props: AvatarAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `avatar` part of `avatar`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AvatarAsChildProps', + anchor: 'avatar-as-child-props', + signature: 'AvatarAsChildProps: BoxAsChildProps & AvatarOwnProps', + typeOnly: true, + summary: 'Props for the `asChild` (polymorphic) rendering of Avatar.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + ], + }, + { + name: 'AvatarFallback', + anchor: 'avatar-fallback', + signature: + 'AvatarFallback: { (props: AvatarFallbackProps): JSX.Element | null; (props: AvatarFallbackAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `avatar-fallback` part of `avatar`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'AvatarFallbackAsChildProps', + anchor: 'avatar-fallback-as-child-props', + signature: + 'AvatarFallbackAsChildProps: BoxAsChildProps & AvatarFallbackOwnProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Avatar Fallback.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + ], + }, + { + name: 'AvatarFallbackOwnProps', + anchor: 'avatar-fallback-own-props', + signature: 'AvatarFallbackOwnProps: {\n children?: unknown;\n}', + typeOnly: true, + summary: + 'Own props for Avatar Fallback, before merging with native element attributes.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + ], + }, + { + name: 'AvatarFallbackProps', + anchor: 'avatar-fallback-props', + signature: + "AvatarFallbackProps: BoxProps<'span', HTMLSpanElement> & AvatarFallbackOwnProps", + typeOnly: true, + summary: 'Props for Avatar Fallback.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLSpanElement>;', + }, + ], + }, + { + name: 'AvatarImage', + anchor: 'avatar-image', + signature: 'AvatarImage: (props: AvatarImageProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the `avatar-image` part of `avatar`.', + }, + { + name: 'AvatarImageOwnProps', + anchor: 'avatar-image-own-props', + signature: + 'AvatarImageOwnProps: {\n src?: string;\n alt: string;\n onLoadingStatusChange?: (status: AvatarLoadingStatus) => void;\n}', + typeOnly: true, + summary: + 'Own props for Avatar Image, before merging with native element attributes.', + members: [ + { + name: 'alt', + summary: '', + signature: 'alt: string;', + }, + { + name: 'onLoadingStatusChange', + summary: '', + signature: + 'onLoadingStatusChange?: ((status: AvatarLoadingStatus) => void) | undefined;', + }, + { + name: 'src', + summary: '', + signature: 'src?: string | undefined;', + }, + ], + }, + { + name: 'AvatarImageProps', + anchor: 'avatar-image-props', + signature: + "AvatarImageProps: Omit<JSX.IntrinsicElements['img'], 'children' | 'ref' | 'onLoad' | 'onError' | 'alt' | 'src'> & AvatarImageOwnProps & {\n ref?: Ref<HTMLImageElement>;\n}", + typeOnly: true, + summary: 'Props for Avatar Image.', + members: [ + { + name: 'alt', + summary: '', + signature: 'alt: string;', + }, + { + name: 'onLoadingStatusChange', + summary: '', + signature: + 'onLoadingStatusChange?: ((status: AvatarLoadingStatus) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLImageElement>;', + }, + { + name: 'src', + summary: '', + signature: 'src?: string | undefined;', + }, + ], + }, + { + name: 'AvatarLoadingStatus', + anchor: 'avatar-loading-status', + signature: "AvatarLoadingStatus: 'idle' | 'loading' | 'loaded' | 'error'", + typeOnly: true, + summary: 'Avatar Loading Status.', + }, + { + name: 'AvatarOwnProps', + anchor: 'avatar-own-props', + signature: 'AvatarOwnProps: {\n children?: unknown;\n id?: string;\n}', + typeOnly: true, + summary: + 'Own props for Avatar, before merging with native element attributes.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + ], + }, + { + name: 'AvatarProps', + anchor: 'avatar-props', + signature: + "AvatarProps: BoxProps<'span', HTMLSpanElement> & AvatarOwnProps", + typeOnly: true, + summary: 'Props for Avatar.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLSpanElement>;', + }, + ], + }, + ], + symbols62: [ + { + name: 'Badge', + anchor: 'badge', + signature: + 'Badge: { (props: BadgeProps): JSX.Element; (props: BadgeAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a small status/label badge, defaulting to a `<span>` (or merging onto a child via `asChild`), with a `variant` color modifier.', + }, + { + name: 'BadgeAsChildProps', + anchor: 'badge-as-child-props', + signature: + 'BadgeAsChildProps: BadgeOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + typeOnly: true, + summary: + 'Props for {@link Badge } rendered with `asChild`, merging its attributes onto a single child element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: BadgeVariant | undefined;', + }, + ], + }, + { + name: 'BadgeOwnProps', + anchor: 'badge-own-props', + signature: + 'BadgeOwnProps: {\n children?: unknown;\n variant?: BadgeVariant;\n}', + typeOnly: true, + summary: 'Props shared by both {@link Badge } call signatures.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: BadgeVariant | undefined;', + }, + ], + }, + { + name: 'BadgeProps', + anchor: 'badge-props', + signature: + 'BadgeProps: Omit<JSX.IntrinsicElements["span"], "children" | "ref"> & BadgeOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLSpanElement>;\n}', + typeOnly: true, + summary: + 'Props for {@link Badge } rendered as its default `<span>` element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLSpanElement>;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: BadgeVariant | undefined;', + }, + ], + }, + ], + symbols63: [ + { + name: 'Block', + anchor: 'block', + signature: + 'Block: { (props: BlockNativeProps): JSX.Element; (props: BlockAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Low-level layout primitive: renders any element in {@link BlockElement }\n(default `<div>`) and turns layout-only props (spacing, alignment,\ndirection, sizing, etc.) into a generated utility class. With `asChild`,\nthe layout is merged onto a single child element instead of a wrapper.', + }, + { + name: 'BlockAlign', + anchor: 'block-align', + signature: + 'BlockAlign: "start" | "end" | "center" | "stretch" | "baseline"', + typeOnly: true, + }, + { + name: 'BlockAsChildProps', + anchor: 'block-as-child-props', + signature: + 'BlockAsChildProps: Omit<BlockOwnProps, "as"> & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + typeOnly: true, + summary: + 'Props for {@link Block } rendered with `asChild`, merging layout onto a single child element.', + members: [ + { + name: 'align', + summary: '', + signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'background', + summary: '', + signature: + 'background?: ResponsiveValue<BlockBackground> | undefined;', + }, + { + name: 'border', + summary: '', + signature: 'border?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'center', + summary: '', + signature: 'center?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'className', + summary: '', + signature: 'className?: string | undefined;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'height', + summary: '', + signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: BlockRowFrom | undefined;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: boolean | undefined;', + }, + { + name: 'top', + summary: '', + signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + }, + ], + }, + { + name: 'BlockBackground', + anchor: 'block-background', + signature: + 'BlockBackground: "surface" | "muted" | "selected" | "canvas" | "raised" | "overlay" | "transparent"', + typeOnly: true, + }, + { + name: 'BlockDirection', + anchor: 'block-direction', + signature: + 'BlockDirection: "row" | "column" | "row-reverse" | "column-reverse"', + typeOnly: true, + }, + { + name: 'BlockDivProps', + anchor: 'block-div-props', + signature: 'BlockDivProps: BlockElementProps<"div">', + typeOnly: true, + summary: '{@link Block } props specialized for a `<div>` element.', + members: [ + { + name: 'align', + summary: '', + signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', + }, + { + name: 'as', + summary: '', + signature: 'as?: "div" | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'background', + summary: '', + signature: + 'background?: ResponsiveValue<BlockBackground> | undefined;', + }, + { + name: 'border', + summary: '', + signature: 'border?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'center', + summary: '', + signature: 'center?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'className', + summary: '', + signature: 'className?: string | undefined;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'height', + summary: '', + signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: BlockRowFrom | undefined;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: boolean | undefined;', + }, + { + name: 'top', + summary: '', + signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + }, + ], + }, + { + name: 'BlockElement', + anchor: 'block-element', + signature: + 'BlockElement: "div" | "span" | "main" | "header" | "footer" | "section" | "aside" | "nav" | "a" | "ul" | "ol" | "li" | "form" | "article"', + typeOnly: true, + summary: 'Element tags {@link Block } can render as via its `as` prop.', + }, + { + name: 'BlockElementProps', + anchor: 'block-element-props', + signature: + 'BlockElementProps: Omit<JSX.IntrinsicElements[TElement], "children" | "ref"> & BlockOwnProps & {\n as?: TElement;\n asChild?: false;\n ref?: Ref<unknown>;\n}', + typeOnly: true, + summary: + '{@link Block } props specialized for a given {@link BlockElement} tag `TElement`.', + members: [ + { + name: 'align', + summary: '', + signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', + }, + { + name: 'as', + summary: '', + signature: 'as?: TElement | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'background', + summary: '', + signature: + 'background?: ResponsiveValue<BlockBackground> | undefined;', + }, + { + name: 'border', + summary: '', + signature: 'border?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'center', + summary: '', + signature: 'center?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'height', + summary: '', + signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: BlockRowFrom | undefined;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: boolean | undefined;', + }, + { + name: 'top', + summary: '', + signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + }, + ], + }, + { + name: 'BlockJustify', + anchor: 'block-justify', + signature: 'BlockJustify: "start" | "end" | "center" | "between"', + typeOnly: true, + }, + { + name: 'BlockMargin', + anchor: 'block-margin', + signature: 'BlockMargin: BlockSpace | "auto"', + typeOnly: true, + }, + { + name: 'BlockNativeProps', + anchor: 'block-native-props', + signature: + 'BlockNativeProps: { [TElement in BlockElement]: BlockElementProps<TElement>; }[BlockElement]', + typeOnly: true, + summary: + "Union of {@link BlockElementProps} across every {@link BlockElement}, used for {@link Block }'s native (non-`asChild`) overload.", + members: [ + { + name: 'align', + summary: '', + signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', + }, + { + name: 'as', + summary: '', + signature: + 'as?: "a" | "article" | "aside" | "div" | "form" | "footer" | "header" | "li" | "main" | "nav" | "ol" | "section" | "span" | "ul" | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'background', + summary: '', + signature: + 'background?: ResponsiveValue<BlockBackground> | undefined;', + }, + { + name: 'border', + summary: '', + signature: 'border?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'center', + summary: '', + signature: 'center?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'className', + summary: '', + signature: + 'className?: string | ((() => IntrinsicClassValue) & string) | undefined;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'height', + summary: '', + signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: BlockRowFrom | undefined;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: boolean | undefined;', + }, + { + name: 'top', + summary: '', + signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + }, + ], + }, + { + name: 'BlockOwnProps', + anchor: 'block-own-props', + signature: + 'BlockOwnProps: BlockLayoutProps & {\n as?: BlockElement;\n children?: unknown;\n className?: string;\n}', + typeOnly: true, + summary: + 'Layout and structural props accepted by {@link Block }, independent of the rendered element.', + members: [ + { + name: 'align', + summary: '', + signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', + }, + { + name: 'as', + summary: '', + signature: 'as?: BlockElement | undefined;', + }, + { + name: 'background', + summary: '', + signature: + 'background?: ResponsiveValue<BlockBackground> | undefined;', + }, + { + name: 'border', + summary: '', + signature: 'border?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'center', + summary: '', + signature: 'center?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'className', + summary: '', + signature: 'className?: string | undefined;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'height', + summary: '', + signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: BlockRowFrom | undefined;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: boolean | undefined;', + }, + { + name: 'top', + summary: '', + signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + }, + ], + }, + { + name: 'BlockProps', + anchor: 'block-props', + signature: 'BlockProps: BlockNativeProps | BlockAsChildProps', + typeOnly: true, + summary: 'Union of all prop shapes accepted by {@link Block }.', + members: [ + { + name: 'align', + summary: '', + signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, + { + name: 'background', + summary: '', + signature: + 'background?: ResponsiveValue<BlockBackground> | undefined;', + }, + { + name: 'border', + summary: '', + signature: 'border?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'center', + summary: '', + signature: 'center?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'className', + summary: '', + signature: + 'className?: string | ((() => IntrinsicClassValue) & string) | undefined;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'height', + summary: '', + signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: BlockRowFrom | undefined;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: boolean | undefined;', + }, + { + name: 'top', + summary: '', + signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + }, + ], + }, + { + name: 'BlockRadius', + anchor: 'block-radius', + signature: 'BlockRadius: true | "sm" | "md" | "lg" | "xl" | "round"', + typeOnly: true, + }, + { + name: 'BlockResponsiveValue', + anchor: 'block-responsive-value', + signature: 'ResponsiveValue: T | Partial<Record<LayoutBreakpoint, T>>', + typeOnly: true, + }, + { + name: 'BlockRowFrom', + anchor: 'block-row-from', + signature: 'BlockRowFrom: Exclude<LayoutBreakpoint, "base">', + typeOnly: true, + }, + { + name: 'BlockShadow', + anchor: 'block-shadow', + signature: 'BlockShadow: true | "sm" | "md" | "lg"', + typeOnly: true, + }, + { + name: 'BlockSize', + anchor: 'block-size', + signature: + 'BlockSize: "auto" | "full" | "screen" | "content" | "sidebar" | "page" | "sm" | "md" | "lg" | "xl"', + typeOnly: true, + }, + { + name: 'BlockSpace', + anchor: 'block-space', + signature: + 'BlockSpace: "0" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "page"', + typeOnly: true, + }, + { + name: 'BlockSpanProps', + anchor: 'block-span-props', + signature: 'BlockSpanProps: BlockElementProps<"span">', + typeOnly: true, + summary: '{@link Block } props specialized for a `<span>` element.', + members: [ + { + name: 'align', + summary: '', + signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', + }, + { + name: 'as', + summary: '', + signature: 'as?: "span" | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'background', + summary: '', + signature: + 'background?: ResponsiveValue<BlockBackground> | undefined;', + }, + { + name: 'border', + summary: '', + signature: 'border?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'center', + summary: '', + signature: 'center?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'className', + summary: '', + signature: 'className?: string | undefined;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'height', + summary: '', + signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: BlockRowFrom | undefined;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: boolean | undefined;', + }, + { + name: 'top', + summary: '', + signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + }, + ], + }, + { + name: 'BlockZIndex', + anchor: 'block-zindex', + signature: + 'BlockZIndex: "header" | "sticky" | "fixed" | "dropdown" | "modal" | "popover" | "toast" | "tooltip"', + typeOnly: true, + }, + ], + symbols64: [ + { + name: 'Breadcrumb', + anchor: 'breadcrumb', + signature: 'Breadcrumb: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `breadcrumb` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'BreadcrumbEllipsis', + anchor: 'breadcrumb-ellipsis', + signature: + 'BreadcrumbEllipsis: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders a non-interactive ellipsis marker in a breadcrumb trail.', + }, + { + name: 'BreadcrumbItem', + anchor: 'breadcrumb-item', + signature: + 'BreadcrumbItem: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `breadcrumb-item` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'BreadcrumbLink', + anchor: 'breadcrumb-link', + signature: + 'BreadcrumbLink: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `breadcrumb-link` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'BreadcrumbList', + anchor: 'breadcrumb-list', + signature: + 'BreadcrumbList: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `breadcrumb-list` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'BreadcrumbPage', + anchor: 'breadcrumb-page', + signature: + 'BreadcrumbPage: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the current (non-link) breadcrumb page, marked `aria-current="page"`.', + }, + { + name: 'BreadcrumbSeparator', + anchor: 'breadcrumb-separator', + signature: + 'BreadcrumbSeparator: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the separator between breadcrumb items (defaults to `"/"`).', + }, + ], + symbols65: [ + { + name: 'ButtonGroup', + anchor: 'button-group', + signature: 'ButtonGroup: (props: ButtonGroupProps) => JSX.Element', + typeOnly: true, + summary: + 'Groups related buttons together, optionally visually attached, with a horizontal or vertical\norientation and `role="group"` by default. Attached groups without an explicit `orientation`\nstack at phone width unless they contain icon buttons; pass `orientation="horizontal"` to\nkeep the row.', + }, + { + name: 'ButtonGroupOrientation', + anchor: 'button-group-orientation', + signature: 'ButtonGroupOrientation: "horizontal" | "vertical"', + typeOnly: true, + summary: + 'Layout direction of a {@link ButtonGroup }. When omitted, an attached group is a row that\nstacks at phone width unless it contains icon buttons. An explicit value keeps that direction\nunless the caller also passes `data-responsive="true"`, which opts back into phone stacking.', + }, + { + name: 'ButtonGroupProps', + anchor: 'button-group-props', + signature: + 'ButtonGroupProps: DivProps & {\n children?: unknown;\n attached?: boolean;\n orientation?: ButtonGroupOrientation;\n /** Stack at phone width. Defaults to `"true"` for attached groups without an `orientation`. */\n "data-responsive"?: "true" | "false";\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link ButtonGroup } component.', + members: [ + { + name: 'attached', + summary: '', + signature: 'attached?: boolean | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'data-responsive', + summary: + 'Stack at phone width. Defaults to `"true"` for attached groups without an `orientation`.', + signature: 'data-responsive?: "true" | "false" | undefined;', + }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: ButtonGroupOrientation | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + ], + symbols66: [ + { + name: 'Button', + anchor: 'button', + signature: + 'Button: { (props: ButtonNativeProps): JSX.Element; (props: ButtonAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Headless Button component\n\n## Responsibilities\n- Compose pressable foundation for interaction behavior\n- Enforce type="button" default to prevent accidental form submission\n- Forward props and refs to native button or child element\n\n## Non-Responsibilities (delegated to pressable foundation)\n- Keyboard event handling (Enter/Space)\n- Pointer event handling\n- Disabled state enforcement\n- ARIA attribute application\n\n## Invariants\n- MUST NOT contain any event handler logic\n- MUST NOT check disabled prop directly\n- MUST use pressable() for ALL interaction behavior\n- MUST use mergeProps() for ALL prop composition\nRenders the `button` part of `button`.\n\nSupports polymorphic rendering via `asChild`.', + tags: { + example: [ + 'Native button (prevents accidental submit)\n```tsx\n<Button onPress={handleSave}>Save</Button>\n```', + 'Explicit form submission\n```tsx\n<Button type="submit" onPress={handleSubmit}>Submit</Button>\n```', + 'Polymorphic rendering (asChild)\n```tsx\n<Button asChild onPress={handleNav}>\n<a href="/home">Home</a>\n</Button>\n```', + ], + }, + }, + { + name: 'ButtonAsChildElement', + anchor: 'button-as-child-element', + signature: 'ButtonAsChildElement: JSXElement | JSX.Element', + typeOnly: true, + summary: 'Button As Child Element.', + }, + { + name: 'ButtonAsChildProps', + anchor: 'button-as-child-props', + signature: + 'ButtonAsChildProps: ButtonOwnProps & {\n asChild: true;\n children: ButtonAsChildElement;\n ref?: Ref<Element>;\n type?: never;\n}', + typeOnly: true, + summary: 'Props when rendering with asChild (polymorphic)', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: ButtonAsChildElement;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'size', + summary: '', + signature: 'size?: ButtonSize | undefined;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: ButtonVariant | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ButtonWidth | undefined;', + }, + ], + }, + { + name: 'ButtonNativeProps', + anchor: 'button-native-props', + signature: + "ButtonNativeProps: Omit<JSX.IntrinsicElements['button'], 'children' | 'onClick' | 'disabled' | 'type' | 'ref'> & ButtonOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLButtonElement>;\n type?: 'button' | 'submit' | 'reset';\n}", + typeOnly: true, + summary: 'Props when rendering as native <button>', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + { + name: 'size', + summary: '', + signature: 'size?: ButtonSize | undefined;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: ButtonVariant | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ButtonWidth | undefined;', + }, + ], + }, + { + name: 'ButtonOwnProps', + anchor: 'button-own-props', + signature: + 'ButtonOwnProps: {\n children?: unknown;\n onPress?: (e: PressEvent) => void;\n disabled?: boolean;\n variant?: ButtonVariant;\n size?: ButtonSize;\n width?: ButtonWidth;\n}', + typeOnly: true, + summary: 'Core Button props shared across all variants', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + }, + { + name: 'size', + summary: '', + signature: 'size?: ButtonSize | undefined;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: ButtonVariant | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ButtonWidth | undefined;', + }, + ], + }, + { + name: 'ButtonProps', + anchor: 'button-props', + signature: 'ButtonProps: ButtonNativeProps | ButtonAsChildProps', + typeOnly: true, + summary: 'Union of all Button prop variants', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLButtonElement | null) => void) | { current: HTMLButtonElement | null; } | null | undefined;', + }, + { + name: 'size', + summary: '', + signature: 'size?: ButtonSize | undefined;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: ButtonVariant | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ButtonWidth | undefined;', + }, + ], + }, + { + name: 'ButtonSize', + anchor: 'button-size', + signature: + "ButtonSize: 'xs' | 'sm' | 'md' | 'lg' | 'icon' | 'icon-xs' | 'icon-sm' | 'icon-lg'", + typeOnly: true, + summary: 'Button Size.', + }, + { + name: 'ButtonVariant', + anchor: 'button-variant', + signature: + "ButtonVariant: 'default' | 'primary' | 'secondary' | 'outline' | 'ghost' | 'destructive' | 'link'", + typeOnly: true, + summary: 'Button Variant.', + }, + { + name: 'ButtonWidth', + anchor: 'button-width', + signature: "ButtonWidth: 'auto' | 'full'", + typeOnly: true, + summary: 'Button Width.', + }, + ], + symbols67: [ + { + name: 'Calendar', + anchor: 'calendar', + signature: 'Calendar: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only calendar anatomy; it does not own dates, grid focus, selection, or month navigation.', + }, + { + name: 'CalendarBody', + anchor: 'calendar-body', + signature: 'CalendarBody: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-body` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CalendarCaption', + anchor: 'calendar-caption', + signature: + 'CalendarCaption: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-caption` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CalendarCell', + anchor: 'calendar-cell', + signature: 'CalendarCell: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-cell` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CalendarDay', + anchor: 'calendar-day', + signature: + 'CalendarDay: (props: CatalogComponentProps<HTMLButtonElement> & { disabled?: boolean; outside?: boolean; rangeEnd?: boolean; rangeMiddle?: boolean; rangeStart?: boolean; selected?: boolean; today?: boolean; }) => JSX.Element', + typeOnly: true, + summary: + 'Renders a single selectable day cell in the calendar grid, with selection/range/today state exposed as data attributes.', + }, + { + name: 'CalendarGrid', + anchor: 'calendar-grid', + signature: 'CalendarGrid: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-grid` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CalendarHead', + anchor: 'calendar-head', + signature: 'CalendarHead: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-head` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CalendarHeader', + anchor: 'calendar-header', + signature: + 'CalendarHeader: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-header` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CalendarNav', + anchor: 'calendar-nav', + signature: 'CalendarNav: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-nav` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CalendarNextButton', + anchor: 'calendar-next-button', + signature: + 'CalendarNextButton: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', + typeOnly: true, + summary: 'Button that navigates the calendar to the next month.', + }, + { + name: 'CalendarPreviousButton', + anchor: 'calendar-previous-button', + signature: + 'CalendarPreviousButton: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', + typeOnly: true, + summary: 'Button that navigates the calendar to the previous month.', + }, + { + name: 'CalendarRow', + anchor: 'calendar-row', + signature: 'CalendarRow: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `calendar-row` part of the shadcn-compatible catalog primitives.', + }, + ], + symbols68: [ + { + name: 'Card', + anchor: 'card', + signature: 'Card: (props: CardProps) => JSX.Element', + typeOnly: true, + summary: + 'Root card container; applies the `card` class and an optional `variant` modifier.', + }, + { + name: 'CardAction', + anchor: 'card-action', + signature: 'CardAction: (props: CardActionProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders an action/control region of a {@link Card}, typically positioned alongside the header.', + }, + { + name: 'CardActionProps', + anchor: 'card-action-props', + signature: + 'CardActionProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link CardAction } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'CardContent', + anchor: 'card-content', + signature: 'CardContent: (props: CardContentProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the main content region of a {@link Card}.', + }, + { + name: 'CardContentProps', + anchor: 'card-content-props', + signature: + 'CardContentProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link CardContent } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'CardDescription', + anchor: 'card-description', + signature: + 'CardDescription: (props: CardDescriptionProps) => JSX.Element', + typeOnly: true, + summary: "Renders a {@link Card}'s supporting description text.", + }, + { + name: 'CardDescriptionProps', + anchor: 'card-description-props', + signature: + 'CardDescriptionProps: ParagraphProps & {\n children?: unknown;\n ref?: Ref<HTMLParagraphElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link CardDescription } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLParagraphElement>;', + }, + ], + }, + { + name: 'CardFooter', + anchor: 'card-footer', + signature: 'CardFooter: (props: CardFooterProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the footer region of a {@link Card}.', + }, + { + name: 'CardFooterProps', + anchor: 'card-footer-props', + signature: + 'CardFooterProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link CardFooter } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'CardHeader', + anchor: 'card-header', + signature: 'CardHeader: (props: CardHeaderProps) => JSX.Element', + typeOnly: true, + summary: 'Renders the header region of a {@link Card}.', + }, + { + name: 'CardHeaderProps', + anchor: 'card-header-props', + signature: + 'CardHeaderProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link CardHeader } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'CardProps', + anchor: 'card-props', + signature: + 'CardProps: DivProps & {\n children?: unknown;\n variant?: CardVariant;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link Card } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: CardVariant | undefined;', + }, + ], + }, + { + name: 'CardTitle', + anchor: 'card-title', + signature: 'CardTitle: (props: CardTitleProps) => JSX.Element', + typeOnly: true, + summary: + "Renders a {@link Card}'s title, defaulting to an `<h3>` (override with `titleAs`).", + }, + { + name: 'CardTitleHeadingTag', + anchor: 'card-title-heading-tag', + signature: 'CardTitleHeadingTag: "h1" | "h2" | "h3" | "h4" | "h5" | "h6"', + typeOnly: true, + summary: "Heading tag allowed for a card's title via `titleAs`.", + }, + { + name: 'CardTitleProps', + anchor: 'card-title-props', + signature: + 'CardTitleProps: HeadingProps & {\n children?: unknown;\n /** Choose the level that follows the surrounding document hierarchy. */\n titleAs?: CardTitleHeadingTag;\n ref?: Ref<HTMLHeadingElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link CardTitle } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLHeadingElement>;', + }, + { + name: 'titleAs', + summary: + 'Choose the level that follows the surrounding document hierarchy.', + signature: 'titleAs?: CardTitleHeadingTag | undefined;', + }, + ], + }, + { + name: 'CardVariant', + anchor: 'card-variant', + signature: 'CardVariant: "default" | "raised"', + typeOnly: true, + summary: 'Visual style of a {@link CardProps} card.', + }, + ], + symbols69: [ + { + name: 'Carousel', + anchor: 'carousel', + signature: 'Carousel: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only carousel anatomy; it does not own an active slide, scrolling, or keyboard navigation.', + }, + { + name: 'CarouselContent', + anchor: 'carousel-content', + signature: + 'CarouselContent: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `carousel-content` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CarouselItem', + anchor: 'carousel-item', + signature: 'CarouselItem: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `carousel-item` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CarouselNext', + anchor: 'carousel-next', + signature: + 'CarouselNext: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', + typeOnly: true, + summary: 'Button that navigates the carousel to the next item.', + }, + { + name: 'CarouselPrevious', + anchor: 'carousel-previous', + signature: + 'CarouselPrevious: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', + typeOnly: true, + summary: 'Button that navigates the carousel to the previous item.', + }, + ], + symbols70: [ + { + name: 'Center', + anchor: 'center', + signature: 'Center: (props: CenterProps) => JSX.Element', + typeOnly: true, + summary: + 'Centers content on both axes within the supplied Block dimensions.', + }, + { + name: 'CenterProps', + anchor: 'center-props', + signature: + 'CenterProps: WithoutOwnedLayout<BlockProps, "align" | "justify"> & {\n align?: never;\n justify?: never;\n}', + typeOnly: true, + members: [ + { + name: 'align', + summary: '', + signature: 'align?: undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: unknown;', + }, + { + name: 'background', + summary: '', + signature: 'background?: unknown;', + }, + { + name: 'border', + summary: '', + signature: 'border?: unknown;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: unknown;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: unknown;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: unknown;', + }, + { + name: 'center', + summary: '', + signature: 'center?: unknown;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: unknown;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: unknown;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: unknown;', + }, + { + name: 'height', + summary: '', + signature: 'height?: unknown;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: unknown;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: undefined;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: unknown;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: unknown;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: unknown;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: unknown;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: unknown;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: unknown;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: unknown;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: unknown;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: unknown;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: unknown;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: unknown;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: unknown;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: unknown;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: unknown;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: unknown;', + }, + { + name: 'top', + summary: '', + signature: 'top?: unknown;', + }, + { + name: 'width', + summary: '', + signature: 'width?: unknown;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: unknown;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: unknown;', + }, + ], + }, + ], + symbols71: [ + { + name: 'Checkbox', + anchor: 'checkbox', + signature: + 'Checkbox: { (props: CheckboxInputProps): JSX.Element; (props: CheckboxAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Headless Checkbox component\n\n## Responsibilities\n- Apply aria-checked for checkbox state signaling\n- Handle indeterminate state for native and asChild hosts\n- Support controlled and uncontrolled checked state\n- Forward props and refs to native input or child element\n- Preserve native checkbox semantics and apply checkbox behavior to asChild hosts\n\n## Non-Responsibilities\n- Form submission orchestration beyond native input props\n\n## Invariants\n- MUST NOT add role="button" (native inputs are role="checkbox")\n- checked state may be controlled or uncontrolled\n- indeterminate overrides checked for state signaling\n- For asChild, consumer MUST provide role="checkbox"\nRenders the `checkbox` part of `checkbox` with `role="checkbox"`.\n\nSupports polymorphic rendering via `asChild`.', + tags: { + example: [ + 'Native checkbox input\n```tsx\nconst checked = state(false);\n<Checkbox checked={checked()} onPress={() => checked.set(!checked())} />\n```', + 'Polymorphic rendering (asChild)\n```tsx\n<Checkbox asChild checked={agreed} onPress={toggleAgree}>\n<div role="checkbox">I agree to terms</div>\n</Checkbox>\n```', + 'Indeterminate state (partial selection)\n```tsx\n<Checkbox checked={someChecked} indeterminate={!allChecked && someChecked} onPress={toggleAll}>\nSelect All\n</Checkbox>\n```', + ], + }, + }, + { + name: 'CheckboxAsChildProps', + anchor: 'checkbox-as-child-props', + signature: + 'CheckboxAsChildProps: CheckboxOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<Element>;\n}', + typeOnly: true, + summary: 'Props when rendering via asChild', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'checked', + summary: '', + signature: 'checked?: boolean | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'defaultChecked', + summary: '', + signature: 'defaultChecked?: boolean | undefined;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'indeterminate', + summary: '', + signature: 'indeterminate?: boolean | undefined;', + }, + { + name: 'name', + summary: '', + signature: 'name?: string | undefined;', + }, + { + name: 'onCheckedChange', + summary: '', + signature: + 'onCheckedChange?: ((checked: boolean) => void) | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'required', + summary: '', + signature: 'required?: boolean | undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value?: string | undefined;', + }, + ], + }, + { + name: 'CheckboxInputProps', + anchor: 'checkbox-input-props', + signature: + "CheckboxInputProps: Omit<JSX.IntrinsicElements['input'], 'children' | 'onClick' | 'disabled' | 'type' | 'ref' | 'checked' | 'name' | 'value' | 'required'> & CheckboxOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLInputElement>;\n}", + typeOnly: true, + summary: + 'Props when rendering as a native <input type="checkbox"> element', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'checked', + summary: '', + signature: 'checked?: boolean | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'defaultChecked', + summary: '', + signature: 'defaultChecked?: boolean | undefined;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'name', + summary: '', + signature: 'name?: string | undefined;', + }, + { + name: 'onCheckedChange', + summary: '', + signature: + 'onCheckedChange?: ((checked: boolean) => void) | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLInputElement>;', + }, + { + name: 'required', + summary: '', + signature: 'required?: boolean | undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value?: string | undefined;', + }, + ], + }, + { + name: 'CheckboxOwnProps', + anchor: 'checkbox-own-props', + signature: + 'CheckboxOwnProps: {\n children?: unknown;\n onPress?: (e: PressEvent) => void;\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n indeterminate?: boolean;\n disabled?: boolean;\n required?: boolean;\n name?: string;\n value?: string;\n}', + typeOnly: true, + summary: 'Props shared by all Checkbox variants', + members: [ + { + name: 'checked', + summary: '', + signature: 'checked?: boolean | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'defaultChecked', + summary: '', + signature: 'defaultChecked?: boolean | undefined;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'indeterminate', + summary: '', + signature: 'indeterminate?: boolean | undefined;', + }, + { + name: 'name', + summary: '', + signature: 'name?: string | undefined;', + }, + { + name: 'onCheckedChange', + summary: '', + signature: + 'onCheckedChange?: ((checked: boolean) => void) | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + }, + { + name: 'required', + summary: '', + signature: 'required?: boolean | undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value?: string | undefined;', + }, + ], + }, + { + name: 'CheckboxProps', + anchor: 'checkbox-props', + signature: 'CheckboxProps: CheckboxInputProps | CheckboxAsChildProps', + typeOnly: true, + summary: 'Discriminated union of Checkbox prop types', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, + { + name: 'checked', + summary: '', + signature: 'checked?: boolean | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'defaultChecked', + summary: '', + signature: 'defaultChecked?: boolean | undefined;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'name', + summary: '', + signature: 'name?: string | undefined;', + }, + { + name: 'onCheckedChange', + summary: '', + signature: + 'onCheckedChange?: ((checked: boolean) => void) | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLInputElement | null) => void) | { current: HTMLInputElement | null; } | null | undefined;', + }, + { + name: 'required', + summary: '', + signature: 'required?: boolean | undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value?: string | undefined;', + }, + ], + }, + ], + symbols72: [ + { + name: 'Cluster', + anchor: 'cluster', + signature: 'Cluster: (props: ClusterProps) => JSX.Element', + typeOnly: true, + summary: + 'Wrapping horizontal content flow for actions, tags, and compact controls.', + }, + { + name: 'ClusterProps', + anchor: 'cluster-props', + signature: + 'ClusterProps: WithoutOwnedLayout<BlockProps, "direction" | "rowFrom" | "wrap"> & {\n direction?: never;\n rowFrom?: never;\n wrap?: never;\n}', + typeOnly: true, + members: [ + { + name: 'align', + summary: '', + signature: 'align?: unknown;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: unknown;', + }, + { + name: 'background', + summary: '', + signature: 'background?: unknown;', + }, + { + name: 'border', + summary: '', + signature: 'border?: unknown;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: unknown;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: unknown;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: unknown;', + }, + { + name: 'center', + summary: '', + signature: 'center?: unknown;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: unknown;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: unknown;', + }, + { + name: 'height', + summary: '', + signature: 'height?: unknown;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: unknown;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: unknown;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: unknown;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: unknown;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: unknown;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: unknown;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: unknown;', + }, + { + name: 'minHeight', + summary: '', + signature: 'minHeight?: unknown;', + }, + { + name: 'minWidth', + summary: '', + signature: 'minWidth?: unknown;', + }, + { + name: 'padding', + summary: '', + signature: 'padding?: unknown;', + }, + { + name: 'paddingX', + summary: '', + signature: 'paddingX?: unknown;', + }, + { + name: 'paddingY', + summary: '', + signature: 'paddingY?: unknown;', + }, + { + name: 'radius', + summary: '', + signature: 'radius?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: unknown;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: undefined;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: unknown;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: unknown;', + }, + { + name: 'sticky', + summary: '', + signature: 'sticky?: unknown;', + }, + { + name: 'top', + summary: '', + signature: 'top?: unknown;', + }, + { + name: 'width', + summary: '', + signature: 'width?: unknown;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: unknown;', + }, + ], + }, + ], + symbols73: [ + { + name: 'Collapsible', + anchor: 'collapsible', + signature: 'Collapsible: (props: CollapsibleProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a part of `collapsible`.', + }, + { + name: 'CollapsibleContent', + anchor: 'collapsible-content', + signature: + 'CollapsibleContent: { (props: CollapsibleContentProps): JSX.Element | null; (props: CollapsibleContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `collapsible-content` part of `collapsible`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'CollapsibleContentAsChildProps', + anchor: 'collapsible-content-as-child-props', + signature: 'CollapsibleContentAsChildProps: any', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Collapsible Content.', + members: [ + { + name: 'asChild', + summary: 'Render as child element instead of div', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: 'Child content', + signature: 'children: JSXElement;', + }, + { + name: 'forceMount', + summary: 'Force mount even when closed (for animation)', + signature: 'forceMount?: boolean | undefined;', + }, + { + name: 'ref', + summary: 'Ref forwarding', + signature: 'ref?: Ref<Element>;', + }, + ], + }, + { + name: 'CollapsibleContentProps', + anchor: 'collapsible-content-props', + signature: 'CollapsibleContentProps: any', + typeOnly: true, + summary: 'Content component props', + members: [ + { + name: 'asChild', + summary: 'Render as child element instead of div', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: 'Child content', + signature: 'children?: unknown;', + }, + { + name: 'forceMount', + summary: 'Force mount even when closed (for animation)', + signature: 'forceMount?: boolean | undefined;', + }, + { + name: 'ref', + summary: 'Ref forwarding', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'CollapsibleProps', + anchor: 'collapsible-props', + signature: 'CollapsibleProps: any', + typeOnly: true, + summary: 'Root component props', + members: [ + { + name: 'children', + summary: 'Child components (Trigger, Content)', + signature: 'children?: unknown;', + }, + { + name: 'defaultOpen', + summary: 'Uncontrolled default open state', + signature: 'defaultOpen?: boolean | undefined;', + }, + { + name: 'disabled', + summary: 'Whether the collapsible is disabled', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'id', + summary: + 'Stable caller-provided identity used for ARIA linking when available', + signature: 'id?: string | undefined;', + }, + { + name: 'onOpenChange', + summary: 'Callback when open state changes', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', + }, + { + name: 'open', + summary: 'Controlled open state', + signature: 'open?: boolean | undefined;', + }, + ], + }, + { + name: 'CollapsibleTrigger', + anchor: 'collapsible-trigger', + signature: + 'CollapsibleTrigger: { (props: CollapsibleTriggerProps): JSX.Element; (props: CollapsibleTriggerAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `collapsible-trigger` part of `collapsible`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'CollapsibleTriggerAsChildProps', + anchor: 'collapsible-trigger-as-child-props', + signature: 'CollapsibleTriggerAsChildProps: any', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Collapsible Trigger.', + members: [ + { + name: 'asChild', + summary: 'Render as child element instead of button', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: 'Child content', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: 'Ref forwarding', + signature: 'ref?: Ref<Element>;', + }, + ], + }, + { + name: 'CollapsibleTriggerProps', + anchor: 'collapsible-trigger-props', + signature: 'CollapsibleTriggerProps: any', + typeOnly: true, + summary: 'Trigger component props (button semantics)', + members: [ + { + name: 'asChild', + summary: 'Render as child element instead of button', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: 'Child content', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: 'Ref forwarding', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + ], + }, + ], + symbols74: [ + { + name: 'Combobox', + anchor: 'combobox', + signature: 'Combobox: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only combobox anatomy; it does not own value, popup, filtering, focus, or ARIA state.', + }, + { + name: 'ComboboxInput', + anchor: 'combobox-input', + signature: + 'ComboboxInput: (props: CatalogComponentProps<HTMLInputElement>) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only combobox input; consumers supplying behavior also own its complete ARIA contract.', + }, + { + name: 'ComboboxList', + anchor: 'combobox-list', + signature: 'ComboboxList: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `combobox-list` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'ComboboxOption', + anchor: 'combobox-option', + signature: + 'ComboboxOption: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `combobox-option` part of the shadcn-compatible catalog primitives.', + }, + ], + symbols75: [ + { + name: 'Command', + anchor: 'command', + signature: 'Command: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only command anatomy; it does not own filtering, selection, focus, or keyboard commands.', + }, + { + name: 'CommandDialog', + anchor: 'command-dialog', + signature: 'CommandDialog: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-dialog` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CommandEmpty', + anchor: 'command-empty', + signature: 'CommandEmpty: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-empty` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CommandGroup', + anchor: 'command-group', + signature: 'CommandGroup: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-group` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CommandGroupHeading', + anchor: 'command-group-heading', + signature: + 'CommandGroupHeading: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-group-heading` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CommandHeader', + anchor: 'command-header', + signature: 'CommandHeader: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-header` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CommandInput', + anchor: 'command-input', + signature: + 'CommandInput: (props: CatalogComponentProps<HTMLInputElement>) => JSX.Element', + typeOnly: true, + summary: "Renders the command palette's search `<input>`.", + }, + { + name: 'CommandItem', + anchor: 'command-item', + signature: + 'CommandItem: (props: CatalogComponentProps & { active?: boolean; disabled?: boolean; selected?: boolean; }) => JSX.Element', + typeOnly: true, + summary: + 'Renders a selectable command list entry, exposing `active`/`disabled`/`selected` as ARIA and data attributes.', + }, + { + name: 'CommandList', + anchor: 'command-list', + signature: 'CommandList: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-list` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CommandPalette', + anchor: 'command-palette', + signature: 'CommandPalette: (props: CommandPaletteProps) => JSX.Element', + typeOnly: true, + summary: + 'Root dialog wrapper for a searchable command palette. Manages open state\n(controlled or uncontrolled), tracks the triggering element, and restores\nfocus to it after the palette closes.', + }, + { + name: 'CommandPaletteContent', + anchor: 'command-palette-content', + signature: + 'CommandPaletteContent: (props: CommandPaletteContentProps) => JSX.Element', + typeOnly: true, + summary: + 'Dialog content for a {@link CommandPalette}: renders the overlay, an\naccessible (visually hidden) title/description, and a `Command` list,\nmoving initial focus to `initialFocus` (defaults to the search input) once\nmounted, and optionally suppressing dismiss-on-escape/backdrop.', + }, + { + name: 'CommandPaletteContentProps', + anchor: 'command-palette-content-props', + signature: + 'CommandPaletteContentProps: Omit<DialogContentProps, "children" | "title" | "onEscapeKeyDown" | "onInteractOutside" | "onPointerDownOutside"> & {\n children?: unknown;\n title: string;\n description?: string;\n initialFocus?: string | (() => HTMLElement | null) | false;\n closeOnBackdrop?: boolean;\n closeOnEscape?: boolean;\n overlayProps?: DialogOverlayProps;\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n onInteractOutside?: (event: Event) => void;\n onPointerDownOutside?: (event: PointerEvent) => void;\n}', + typeOnly: true, + summary: 'Props for the {@link CommandPaletteContent } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'closeOnBackdrop', + summary: '', + signature: 'closeOnBackdrop?: boolean | undefined;', + }, + { + name: 'closeOnEscape', + summary: '', + signature: 'closeOnEscape?: boolean | undefined;', + }, + { + name: 'description', + summary: '', + signature: 'description?: string | undefined;', + }, + { + name: 'initialFocus', + summary: '', + signature: + 'initialFocus?: string | false | (() => HTMLElement | null) | undefined;', + }, + { + name: 'onEscapeKeyDown', + summary: '', + signature: + 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', + }, + { + name: 'onInteractOutside', + summary: '', + signature: + 'onInteractOutside?: ((event: Event) => void) | undefined;', + }, + { + name: 'onPointerDownOutside', + summary: '', + signature: + 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', + }, + { + name: 'overlayProps', + summary: '', + signature: 'overlayProps?: DialogOverlayProps | undefined;', + }, + { + name: 'title', + summary: '', + signature: 'title: string;', + }, + ], + }, + { + name: 'CommandPaletteLink', + anchor: 'command-palette-link', + signature: + 'CommandPaletteLink: (props: CommandPaletteLinkProps) => JSX.Element', + typeOnly: true, + summary: + 'A navigable result row that closes the palette on selection (unless `closeOnSelect` is `false`) and supports cancelling navigation via `onBeforeNavigate`.', + }, + { + name: 'CommandPaletteLinkProps', + anchor: 'command-palette-link-props', + signature: + 'CommandPaletteLinkProps: LinkProps & {\n closeOnSelect?: boolean;\n onBeforeNavigate?: (event: Event) => void;\n}', + typeOnly: true, + summary: 'Props for the {@link CommandPaletteLink } component.', + members: [ + { + name: 'closeOnSelect', + summary: '', + signature: 'closeOnSelect?: boolean | undefined;', + }, + { + name: 'onBeforeNavigate', + summary: '', + signature: 'onBeforeNavigate?: ((event: Event) => void) | undefined;', + }, + ], + }, + { + name: 'CommandPaletteList', + anchor: 'command-palette-list', + signature: + 'CommandPaletteList: (props: CommandPaletteListProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `<ul>` list wrapper for {@link CommandPalette} results.', + }, + { + name: 'CommandPaletteListProps', + anchor: 'command-palette-list-props', + signature: + 'CommandPaletteListProps: Omit<JSX.IntrinsicElements["ul"], "children" | "ref"> & {\n children?: unknown;\n ref?: Ref<HTMLUListElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link CommandPaletteList } component.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLUListElement>;', + }, + ], + }, + { + name: 'CommandPaletteProps', + anchor: 'command-palette-props', + signature: 'CommandPaletteProps: DialogProps', + typeOnly: true, + summary: 'Props for the {@link CommandPalette } component.', + }, + { + name: 'CommandPaletteTrigger', + anchor: 'command-palette-trigger', + signature: + 'CommandPaletteTrigger: { (props: CommandPaletteTriggerProps): JSX.Element; (props: CommandPaletteTriggerAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Trigger that opens the {@link CommandPalette}, registering itself so focus returns here on close.', + }, + { + name: 'CommandPaletteTriggerAsChildProps', + anchor: 'command-palette-trigger-as-child-props', + signature: 'CommandPaletteTriggerAsChildProps: DialogTriggerAsChildProps', + typeOnly: true, + summary: + 'Props for {@link CommandPaletteTrigger } rendered with `asChild`.', + }, + { + name: 'CommandPaletteTriggerProps', + anchor: 'command-palette-trigger-props', + signature: 'CommandPaletteTriggerProps: DialogTriggerProps', + typeOnly: true, + summary: 'Props for the {@link CommandPaletteTrigger } component.', + }, + { + name: 'CommandSeparator', + anchor: 'command-separator', + signature: + 'CommandSeparator: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-separator` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'CommandShortcut', + anchor: 'command-shortcut', + signature: + 'CommandShortcut: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `command-shortcut` part of the shadcn-compatible catalog primitives.', + }, + ], + symbols76: [ + { + name: 'Container', + anchor: 'container', + signature: 'Container: (props: ContainerProps) => JSX.Element', + typeOnly: true, + summary: + 'Centers content in a max-width column with page gutters (defaults to the `"page"` {@link BlockSize }).', + }, + { + name: 'ContainerProps', + anchor: 'container-props', + signature: + 'ContainerProps: Omit<BlockDivProps, "maxWidth"> & {\n size?: BlockSize;\n}', + typeOnly: true, + summary: 'Props for the {@link Container } component.', + members: [ + { + name: 'size', + summary: '', + signature: 'size?: BlockSize | undefined;', + }, + ], + }, + ], + symbols77: [ + { + name: 'ContextMenu', + anchor: 'context-menu', + signature: 'Dropdown: (props: DropdownProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a part of `dropdown`.', + }, + { + name: 'ContextMenuContent', + anchor: 'context-menu-content', + signature: + 'DropdownContent$1: { (props: DropdownContentProps): JSX.Element | null; (props: DropdownContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + "Dropdown/context-menu content wrapper around `@askrjs/ui`'s `DropdownContent`.\nNon-`asChild` usage lazily evaluates `children` inside a body component so\nthey're only rendered once the dropdown is actually open.", + }, + { + name: 'ContextMenuGroup', + anchor: 'context-menu-group', + signature: + 'DropdownGroup: (props: DropdownGroupProps | DropdownGroupAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `dropdown-group` part of `dropdown` with `role="group"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'ContextMenuItem', + anchor: 'context-menu-item', + signature: + 'DropdownItem: { (props: DropdownItemProps): JSX.Element | null; (props: DropdownItemAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders a part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'ContextMenuLabel', + anchor: 'context-menu-label', + signature: + 'DropdownLabel: (props: DropdownLabelProps | DropdownLabelAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `dropdown-label` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'ContextMenuPortal', + anchor: 'context-menu-portal', + signature: + 'DropdownPortal: (props: DropdownPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `dropdown`.', + }, + { + name: 'ContextMenuSeparator', + anchor: 'context-menu-separator', + signature: + 'DropdownSeparator: (props: DropdownSeparatorProps | DropdownSeparatorAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `dropdown-separator` part of `dropdown` with `role="separator"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'ContextMenuTrigger', + anchor: 'context-menu-trigger', signature: - 'BlockElement: "div" | "span" | "main" | "header" | "footer" | "section" | "aside" | "nav" | "a" | "ul" | "ol" | "li" | "form" | "article"', + 'DropdownTrigger: { (props: DropdownTriggerProps): JSX.Element | null; (props: DropdownTriggerAsChildProps): JSX.Element | null; }', typeOnly: true, - summary: 'Element tags {@link Block } can render as via its `as` prop.', + summary: + 'Renders the `dropdown-trigger` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + }, + ], + symbols78: [ + { + name: 'DataTable', + anchor: 'data-table', + signature: 'DataTable: (props: CatalogComponentProps) => JSX.Element', + typeOnly: false, + summary: + 'Styling-only container for the `data-table` catalog slot. It does not sort,\nfilter, select, or paginate data.', }, + ], + symbols79: [ { - name: 'BlockElementProps', - anchor: 'block-element-props', + name: 'DatePicker', + anchor: 'date-picker', + signature: 'DatePicker: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Styling-only `date-picker` container. It does not implement a popup calendar, formatting, or\ncalendar-grid keyboard behavior; pair it with {@link DatePickerInput} for a native date input.', + }, + { + name: 'DatePickerInput', + anchor: 'date-picker-input', signature: - 'BlockElementProps: Omit<JSX.IntrinsicElements[TElement], "children" | "ref"> & BlockOwnProps & {\n as?: TElement;\n asChild?: false;\n ref?: Ref<unknown>;\n}', + 'DatePickerInput: (props: CatalogComponentProps<HTMLInputElement>) => JSX.Element', typeOnly: true, summary: - '{@link Block } props specialized for a given {@link BlockElement} tag `TElement`.', + 'Native `<input type="date">` styling slot; browser behavior and localization remain native.', + }, + ], + symbols80: [ + { + name: 'Dialog', + anchor: 'dialog', + signature: 'Dialog: (props: DialogProps) => JSX.Element', + typeOnly: true, + summary: 'Coordinates the Dialog trigger, portal, overlay, and content.', + tags: { + example: [ + '```tsx\n<Dialog>\n <DialogTrigger>Open dialog</DialogTrigger>\n <DialogPortal>\n <DialogOverlay />\n <DialogContent>Confirm action</DialogContent>\n </DialogPortal>\n</Dialog>\n```', + ], + }, + }, + { + name: 'DialogClose', + anchor: 'dialog-close', + signature: + 'DialogClose: { (props: DialogCloseProps): JSX.Element; (props: DialogCloseAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `dialog-close` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DialogCloseAsChildProps', + anchor: 'dialog-close-as-child-props', + signature: 'DialogCloseAsChildProps: ButtonLikeAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Dialog Close.', members: [ - { - name: 'align', - summary: '', - signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', - }, - { - name: 'as', - summary: '', - signature: 'as?: TElement | undefined;', - }, { name: 'asChild', summary: '', - signature: 'asChild?: false | undefined;', + signature: 'asChild: true;', }, { - name: 'background', + name: 'children', summary: '', - signature: - 'background?: ResponsiveValue<BlockBackground> | undefined;', + signature: 'children: JSXElement;', }, { - name: 'border', + name: 'disabled', summary: '', - signature: 'border?: ResponsiveValue<boolean> | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'borderBottom', + name: 'onPress', summary: '', - signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', }, { - name: 'borderRight', + name: 'ref', summary: '', - signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + signature: 'ref?: Ref<Element>;', }, { - name: 'borderTop', + name: 'type', summary: '', - signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + signature: 'type?: undefined;', }, + ], + }, + { + name: 'DialogCloseProps', + anchor: 'dialog-close-props', + signature: + "DialogCloseProps: ButtonLikeProps<'button', HTMLButtonElement>", + typeOnly: true, + summary: 'Props for Dialog Close.', + members: [ { - name: 'center', + name: 'asChild', summary: '', - signature: 'center?: ResponsiveValue<boolean> | undefined;', + signature: 'asChild?: false | undefined;', }, { name: 'children', @@ -32926,582 +41669,508 @@ export const apiSymbolSets: Readonly< signature: 'children?: unknown;', }, { - name: 'direction', - summary: '', - signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', - }, - { - name: 'gap', - summary: '', - signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', - }, - { - name: 'grow', - summary: '', - signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', - }, - { - name: 'height', - summary: '', - signature: 'height?: ResponsiveValue<BlockSize> | undefined;', - }, - { - name: 'hide', - summary: '', - signature: 'hide?: ResponsiveValue<boolean> | undefined;', - }, - { - name: 'justify', - summary: '', - signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', - }, - { - name: 'margin', - summary: '', - signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', - }, - { - name: 'marginX', - summary: '', - signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', - }, - { - name: 'marginY', - summary: '', - signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', - }, - { - name: 'maxHeight', - summary: '', - signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', - }, - { - name: 'maxWidth', - summary: '', - signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', - }, - { - name: 'minHeight', - summary: '', - signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', - }, - { - name: 'minWidth', - summary: '', - signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', - }, - { - name: 'padding', - summary: '', - signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', - }, - { - name: 'paddingX', - summary: '', - signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', - }, - { - name: 'paddingY', + name: 'disabled', summary: '', - signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'radius', + name: 'onPress', summary: '', - signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', }, { name: 'ref', summary: '', - signature: 'ref?: Ref<unknown>;', - }, - { - name: 'rowFrom', - summary: '', - signature: 'rowFrom?: BlockRowFrom | undefined;', - }, - { - name: 'shadow', - summary: '', - signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', - }, - { - name: 'shrink', - summary: '', - signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', - }, - { - name: 'sticky', - summary: '', - signature: 'sticky?: boolean | undefined;', - }, - { - name: 'top', - summary: '', - signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', - }, - { - name: 'width', - summary: '', - signature: 'width?: ResponsiveValue<BlockSize> | undefined;', - }, - { - name: 'wrap', - summary: '', - signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + signature: 'ref?: Ref<HTMLButtonElement>;', }, { - name: 'zIndex', + name: 'type', summary: '', - signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + signature: 'type?: "button" | "submit" | "reset" | undefined;', }, ], }, { - name: 'BlockJustify', - anchor: 'block-justify', - signature: 'BlockJustify: "start" | "end" | "center" | "between"', - typeOnly: true, - }, - { - name: 'BlockMargin', - anchor: 'block-margin', - signature: 'BlockMargin: BlockSpace | "auto"', + name: 'DialogContent', + anchor: 'dialog-content', + signature: + 'DialogContent: { (props: DialogContentProps): JSX.Element | null; (props: DialogContentAsChildProps): JSX.Element | null; }', typeOnly: true, + summary: + 'Renders the `dialog-content` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'BlockNativeProps', - anchor: 'block-native-props', + name: 'DialogContentAsChildProps', + anchor: 'dialog-content-as-child-props', signature: - 'BlockNativeProps: { [TElement in BlockElement]: BlockElementProps<TElement>; }[BlockElement]', + 'DialogContentAsChildProps: BoxAsChildProps & DialogContentOwnProps', typeOnly: true, summary: - "Union of {@link BlockElementProps} across every {@link BlockElement}, used for {@link Block }'s native (non-`asChild`) overload.", + 'Props for the `asChild` (polymorphic) rendering of Dialog Content.', members: [ - { - name: 'align', - summary: '', - signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', - }, - { - name: 'as', - summary: '', - signature: - 'as?: "a" | "article" | "aside" | "div" | "form" | "footer" | "header" | "li" | "main" | "nav" | "ol" | "section" | "span" | "ul" | undefined;', - }, { name: 'asChild', summary: '', - signature: 'asChild?: false | undefined;', - }, - { - name: 'background', - summary: '', - signature: - 'background?: ResponsiveValue<BlockBackground> | undefined;', - }, - { - name: 'border', - summary: '', - signature: 'border?: ResponsiveValue<boolean> | undefined;', + signature: 'asChild: true;', }, { - name: 'borderBottom', + name: 'children', summary: '', - signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + signature: 'children: JSXElement;', }, { - name: 'borderRight', + name: 'forceMount', summary: '', - signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + signature: 'forceMount?: boolean | undefined;', }, { - name: 'borderTop', + name: 'onDismiss', summary: '', - signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + signature: 'onDismiss?: (() => void) | undefined;', }, { - name: 'center', + name: 'onEscapeKeyDown', summary: '', - signature: 'center?: ResponsiveValue<boolean> | undefined;', + signature: + 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', }, { - name: 'children', + name: 'onInteractOutside', summary: '', - signature: 'children?: unknown;', + signature: + 'onInteractOutside?: ((event: Event) => void) | undefined;', }, { - name: 'className', + name: 'onPointerDownOutside', summary: '', signature: - 'className?: string | ((() => IntrinsicClassValue) & string) | undefined;', + 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', }, { - name: 'direction', + name: 'ref', summary: '', - signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + signature: 'ref?: Ref<Element>;', }, { - name: 'gap', - summary: '', - signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + name: 'restoreFocus', + summary: + 'Explicit focus target used when a controlled dialog has no persistent trigger.', + signature: + 'restoreFocus?: HTMLElement | (() => HTMLElement | null) | null | undefined;', }, { - name: 'grow', + name: 'role', summary: '', - signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + signature: 'role?: "dialog" | "alertdialog" | undefined;', }, + ], + }, + { + name: 'DialogContentOwnProps', + anchor: 'dialog-content-own-props', + signature: + "DialogContentOwnProps: {\n forceMount?: boolean;\n role?: 'dialog' | 'alertdialog';\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n onPointerDownOutside?: (event: PointerEvent) => void;\n onInteractOutside?: (event: Event) => void;\n onDismiss?: () => void;\n /** Explicit focus target used when a controlled dialog has no persistent trigger. */\n restoreFocus?: HTMLElement | null | (() => HTMLElement | null);\n}", + typeOnly: true, + summary: + 'Own props for Dialog Content, before merging with native element attributes.', + members: [ { - name: 'height', + name: 'forceMount', summary: '', - signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + signature: 'forceMount?: boolean | undefined;', }, { - name: 'hide', + name: 'onDismiss', summary: '', - signature: 'hide?: ResponsiveValue<boolean> | undefined;', + signature: 'onDismiss?: (() => void) | undefined;', }, { - name: 'justify', + name: 'onEscapeKeyDown', summary: '', - signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + signature: + 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', }, { - name: 'margin', + name: 'onInteractOutside', summary: '', - signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + signature: + 'onInteractOutside?: ((event: Event) => void) | undefined;', }, { - name: 'marginX', + name: 'onPointerDownOutside', summary: '', - signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + signature: + 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', }, { - name: 'marginY', - summary: '', - signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + name: 'restoreFocus', + summary: + 'Explicit focus target used when a controlled dialog has no persistent trigger.', + signature: + 'restoreFocus?: HTMLElement | (() => HTMLElement | null) | null | undefined;', }, { - name: 'maxHeight', + name: 'role', summary: '', - signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + signature: 'role?: "dialog" | "alertdialog" | undefined;', }, + ], + }, + { + name: 'DialogContentProps', + anchor: 'dialog-content-props', + signature: + "DialogContentProps: BoxProps<'div', HTMLDivElement> & DialogContentOwnProps", + typeOnly: true, + summary: 'Props for Dialog Content.', + members: [ { - name: 'maxWidth', + name: 'asChild', summary: '', - signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + signature: 'asChild?: false | undefined;', }, { - name: 'minHeight', + name: 'children', summary: '', - signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + signature: 'children?: unknown;', }, { - name: 'minWidth', + name: 'forceMount', summary: '', - signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + signature: 'forceMount?: boolean | undefined;', }, { - name: 'padding', + name: 'onDismiss', summary: '', - signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'onDismiss?: (() => void) | undefined;', }, { - name: 'paddingX', + name: 'onEscapeKeyDown', summary: '', - signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + signature: + 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', }, { - name: 'paddingY', + name: 'onInteractOutside', summary: '', - signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + signature: + 'onInteractOutside?: ((event: Event) => void) | undefined;', }, { - name: 'radius', + name: 'onPointerDownOutside', summary: '', - signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + signature: + 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', }, { name: 'ref', summary: '', - signature: 'ref?: Ref<unknown>;', - }, - { - name: 'rowFrom', - summary: '', - signature: 'rowFrom?: BlockRowFrom | undefined;', - }, - { - name: 'shadow', - summary: '', - signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', - }, - { - name: 'shrink', - summary: '', - signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', - }, - { - name: 'sticky', - summary: '', - signature: 'sticky?: boolean | undefined;', - }, - { - name: 'top', - summary: '', - signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', - }, - { - name: 'width', - summary: '', - signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + signature: 'ref?: Ref<HTMLDivElement>;', }, { - name: 'wrap', - summary: '', - signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + name: 'restoreFocus', + summary: + 'Explicit focus target used when a controlled dialog has no persistent trigger.', + signature: + 'restoreFocus?: HTMLElement | (() => HTMLElement | null) | null | undefined;', }, { - name: 'zIndex', + name: 'role', summary: '', - signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + signature: 'role?: "dialog" | "alertdialog" | undefined;', }, ], }, { - name: 'BlockOwnProps', - anchor: 'block-own-props', + name: 'DialogDescription', + anchor: 'dialog-description', signature: - 'BlockOwnProps: BlockLayoutProps & {\n as?: BlockElement;\n children?: unknown;\n className?: string;\n}', + 'DialogDescription: { (props: DialogDescriptionProps): JSX.Element; (props: DialogDescriptionAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'Layout and structural props accepted by {@link Block }, independent of the rendered element.', - members: [ - { - name: 'align', - summary: '', - signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', - }, - { - name: 'as', - summary: '', - signature: 'as?: BlockElement | undefined;', - }, - { - name: 'background', - summary: '', - signature: - 'background?: ResponsiveValue<BlockBackground> | undefined;', - }, - { - name: 'border', - summary: '', - signature: 'border?: ResponsiveValue<boolean> | undefined;', - }, - { - name: 'borderBottom', - summary: '', - signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', - }, - { - name: 'borderRight', - summary: '', - signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', - }, - { - name: 'borderTop', - summary: '', - signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', - }, + 'Renders the `dialog-description` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DialogDescriptionAsChildProps', + anchor: 'dialog-description-as-child-props', + signature: 'DialogDescriptionAsChildProps: BoxAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Dialog Description.', + members: [ { - name: 'center', + name: 'asChild', summary: '', - signature: 'center?: ResponsiveValue<boolean> | undefined;', + signature: 'asChild: true;', }, { name: 'children', summary: '', - signature: 'children?: unknown;', + signature: 'children: JSXElement;', }, { - name: 'className', + name: 'ref', summary: '', - signature: 'className?: string | undefined;', + signature: 'ref?: Ref<Element>;', }, + ], + }, + { + name: 'DialogDescriptionProps', + anchor: 'dialog-description-props', + signature: "DialogDescriptionProps: BoxProps<'p', HTMLParagraphElement>", + typeOnly: true, + summary: 'Props for Dialog Description.', + members: [ { - name: 'direction', + name: 'asChild', summary: '', - signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + signature: 'asChild?: false | undefined;', }, { - name: 'gap', + name: 'children', summary: '', - signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'children?: unknown;', }, { - name: 'grow', + name: 'ref', summary: '', - signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + signature: 'ref?: Ref<HTMLParagraphElement>;', }, + ], + }, + { + name: 'DialogOverlay', + anchor: 'dialog-overlay', + signature: + 'DialogOverlay: { (props: DialogOverlayProps): JSX.Element | null; (props: DialogOverlayAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `dialog-overlay` part of `dialog`.\n\nWith `@askrjs/themes/default`, the overlay is fully styled out of the box\nwith the shared backdrop token, blur, stacking, and fade animation. Standard\nDialog and AlertDialog usage requires no additional overlay CSS; customize\nthe theme tokens instead of applying a competing background class.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DialogOverlayAsChildProps', + anchor: 'dialog-overlay-as-child-props', + signature: + 'DialogOverlayAsChildProps: BoxAsChildProps & DialogOverlayOwnProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Dialog Overlay.', + members: [ { - name: 'height', + name: 'asChild', summary: '', - signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + signature: 'asChild: true;', }, { - name: 'hide', + name: 'children', summary: '', - signature: 'hide?: ResponsiveValue<boolean> | undefined;', + signature: 'children: JSXElement;', }, { - name: 'justify', + name: 'forceMount', summary: '', - signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + signature: 'forceMount?: boolean | undefined;', }, { - name: 'margin', + name: 'ref', summary: '', - signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + signature: 'ref?: Ref<Element>;', }, + ], + }, + { + name: 'DialogOverlayOwnProps', + anchor: 'dialog-overlay-own-props', + signature: 'DialogOverlayOwnProps: {\n forceMount?: boolean;\n}', + typeOnly: true, + summary: + 'Own props for Dialog Overlay, before merging with native element attributes.', + members: [ { - name: 'marginX', + name: 'forceMount', summary: '', - signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + signature: 'forceMount?: boolean | undefined;', }, + ], + }, + { + name: 'DialogOverlayProps', + anchor: 'dialog-overlay-props', + signature: + "DialogOverlayProps: BoxProps<'div', HTMLDivElement> & DialogOverlayOwnProps", + typeOnly: true, + summary: 'Props for Dialog Overlay.', + members: [ { - name: 'marginY', + name: 'asChild', summary: '', - signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + signature: 'asChild?: false | undefined;', }, { - name: 'maxHeight', + name: 'children', summary: '', - signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + signature: 'children?: unknown;', }, { - name: 'maxWidth', + name: 'forceMount', summary: '', - signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + signature: 'forceMount?: boolean | undefined;', }, { - name: 'minHeight', + name: 'ref', summary: '', - signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + signature: 'ref?: Ref<HTMLDivElement>;', }, + ], + }, + { + name: 'DialogOwnProps', + anchor: 'dialog-own-props', + signature: + 'DialogOwnProps: {\n children?: unknown;\n id?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n modal?: boolean;\n}', + typeOnly: true, + summary: + 'Own props for Dialog, before merging with native element attributes.', + members: [ { - name: 'minWidth', + name: 'children', summary: '', - signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + signature: 'children?: unknown;', }, { - name: 'padding', + name: 'defaultOpen', summary: '', - signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'defaultOpen?: boolean | undefined;', }, { - name: 'paddingX', + name: 'id', summary: '', - signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'id?: string | undefined;', }, { - name: 'paddingY', + name: 'modal', summary: '', - signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'modal?: boolean | undefined;', }, { - name: 'radius', + name: 'onOpenChange', summary: '', - signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', }, { - name: 'rowFrom', + name: 'open', summary: '', - signature: 'rowFrom?: BlockRowFrom | undefined;', + signature: 'open?: boolean | undefined;', }, + ], + }, + { + name: 'DialogPortal', + anchor: 'dialog-portal', + signature: + 'DialogPortal: (props: DialogPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `dialog`.', + }, + { + name: 'DialogPortalProps', + anchor: 'dialog-portal-props', + signature: 'DialogPortalProps: {\n children?: unknown;\n}', + typeOnly: true, + summary: 'Props for Dialog Portal.', + members: [ { - name: 'shadow', + name: 'children', summary: '', - signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + signature: 'children?: unknown;', }, + ], + }, + { + name: 'DialogProps', + anchor: 'dialog-props', + signature: 'DialogProps: DialogOwnProps', + typeOnly: true, + summary: 'Props for Dialog.', + members: [ { - name: 'shrink', + name: 'children', summary: '', - signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + signature: 'children?: unknown;', }, { - name: 'sticky', + name: 'defaultOpen', summary: '', - signature: 'sticky?: boolean | undefined;', + signature: 'defaultOpen?: boolean | undefined;', }, { - name: 'top', + name: 'id', summary: '', - signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'id?: string | undefined;', }, { - name: 'width', + name: 'modal', summary: '', - signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + signature: 'modal?: boolean | undefined;', }, { - name: 'wrap', + name: 'onOpenChange', summary: '', - signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', }, { - name: 'zIndex', + name: 'open', summary: '', - signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + signature: 'open?: boolean | undefined;', }, ], }, { - name: 'BlockProps', - anchor: 'block-props', - signature: 'BlockProps: BlockNativeProps | BlockAsChildProps', + name: 'DialogTitle', + anchor: 'dialog-title', + signature: + 'DialogTitle: { (props: DialogTitleProps): JSX.Element; (props: DialogTitleAsChildProps): JSX.Element; }', typeOnly: true, - summary: 'Union of all prop shapes accepted by {@link Block }.', + summary: + 'Renders the `dialog-title` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DialogTitleAsChildProps', + anchor: 'dialog-title-as-child-props', + signature: 'DialogTitleAsChildProps: BoxAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Dialog Title.', members: [ - { - name: 'align', - summary: '', - signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', - }, { name: 'asChild', summary: '', - signature: 'asChild?: boolean | undefined;', - }, - { - name: 'background', - summary: '', - signature: - 'background?: ResponsiveValue<BlockBackground> | undefined;', - }, - { - name: 'border', - summary: '', - signature: 'border?: ResponsiveValue<boolean> | undefined;', - }, - { - name: 'borderBottom', - summary: '', - signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + signature: 'asChild: true;', }, { - name: 'borderRight', + name: 'children', summary: '', - signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + signature: 'children: JSXElement;', }, { - name: 'borderTop', + name: 'ref', summary: '', - signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + signature: 'ref?: Ref<Element>;', }, + ], + }, + { + name: 'DialogTitleProps', + anchor: 'dialog-title-props', + signature: "DialogTitleProps: BoxProps<'h2', HTMLHeadingElement>", + typeOnly: true, + summary: 'Props for Dialog Title.', + members: [ { - name: 'center', + name: 'asChild', summary: '', - signature: 'center?: ResponsiveValue<boolean> | undefined;', + signature: 'asChild?: false | undefined;', }, { name: 'children', @@ -33509,615 +42178,840 @@ export const apiSymbolSets: Readonly< signature: 'children?: unknown;', }, { - name: 'className', - summary: '', - signature: - 'className?: string | ((() => IntrinsicClassValue) & string) | undefined;', - }, - { - name: 'direction', + name: 'ref', summary: '', - signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + signature: 'ref?: Ref<HTMLHeadingElement>;', }, + ], + }, + { + name: 'DialogTrigger', + anchor: 'dialog-trigger', + signature: + 'DialogTrigger: { (props: DialogTriggerProps): JSX.Element; (props: DialogTriggerAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `dialog-trigger` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DialogTriggerAsChildProps', + anchor: 'dialog-trigger-as-child-props', + signature: 'DialogTriggerAsChildProps: ButtonLikeAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Dialog Trigger.', + members: [ { - name: 'gap', + name: 'asChild', summary: '', - signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'asChild: true;', }, { - name: 'grow', + name: 'children', summary: '', - signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + signature: 'children: JSXElement;', }, { - name: 'height', + name: 'disabled', summary: '', - signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'hide', + name: 'onPress', summary: '', - signature: 'hide?: ResponsiveValue<boolean> | undefined;', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', }, { - name: 'justify', + name: 'ref', summary: '', - signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + signature: 'ref?: Ref<Element>;', }, { - name: 'margin', + name: 'type', summary: '', - signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + signature: 'type?: undefined;', }, + ], + }, + { + name: 'DialogTriggerProps', + anchor: 'dialog-trigger-props', + signature: + "DialogTriggerProps: ButtonLikeProps<'button', HTMLButtonElement>", + typeOnly: true, + summary: 'Props for Dialog Trigger.', + members: [ { - name: 'marginX', + name: 'asChild', summary: '', - signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + signature: 'asChild?: false | undefined;', }, { - name: 'marginY', + name: 'children', summary: '', - signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + signature: 'children?: unknown;', }, { - name: 'maxHeight', + name: 'disabled', summary: '', - signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'maxWidth', + name: 'onPress', summary: '', - signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', }, { - name: 'minHeight', + name: 'ref', summary: '', - signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + signature: 'ref?: Ref<HTMLButtonElement>;', }, { - name: 'minWidth', + name: 'type', summary: '', - signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + signature: 'type?: "button" | "submit" | "reset" | undefined;', }, + ], + }, + ], + symbols81: [ + { + name: 'Direction', + anchor: 'direction', + signature: + 'Direction: (props: CatalogComponentProps & { dir?: "ltr" | "rtl"; }) => JSX.Element', + typeOnly: true, + summary: + 'Sets the `dir` attribute (defaulting to `"ltr"`) on its wrapping element for RTL/LTR scoping.', + }, + ], + symbols82: [ + { + name: 'DropdownMenu', + anchor: 'dropdown-menu', + signature: 'Dropdown: (props: DropdownProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a part of `dropdown`.', + }, + { + name: 'DropdownMenuContent', + anchor: 'dropdown-menu-content', + signature: + 'DropdownContent$1: { (props: DropdownContentProps): JSX.Element | null; (props: DropdownContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + "Dropdown/context-menu content wrapper around `@askrjs/ui`'s `DropdownContent`.\nNon-`asChild` usage lazily evaluates `children` inside a body component so\nthey're only rendered once the dropdown is actually open.", + }, + { + name: 'DropdownMenuGroup', + anchor: 'dropdown-menu-group', + signature: + 'DropdownGroup: (props: DropdownGroupProps | DropdownGroupAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `dropdown-group` part of `dropdown` with `role="group"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DropdownMenuItem', + anchor: 'dropdown-menu-item', + signature: + 'DropdownItem: { (props: DropdownItemProps): JSX.Element | null; (props: DropdownItemAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders a part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DropdownMenuLabel', + anchor: 'dropdown-menu-label', + signature: + 'DropdownLabel: (props: DropdownLabelProps | DropdownLabelAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `dropdown-label` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DropdownMenuPortal', + anchor: 'dropdown-menu-portal', + signature: + 'DropdownPortal: (props: DropdownPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `dropdown`.', + }, + { + name: 'DropdownMenuSeparator', + anchor: 'dropdown-menu-separator', + signature: + 'DropdownSeparator: (props: DropdownSeparatorProps | DropdownSeparatorAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `dropdown-separator` part of `dropdown` with `role="separator"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'DropdownMenuTrigger', + anchor: 'dropdown-menu-trigger', + signature: + 'DropdownTrigger: { (props: DropdownTriggerProps): JSX.Element | null; (props: DropdownTriggerAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `dropdown-trigger` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + }, + ], + symbols83: [ + { + name: 'Empty', + anchor: 'empty', + signature: 'Empty: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `empty` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'EmptyContent', + anchor: 'empty-content', + signature: 'EmptyContent: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `empty-content` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'EmptyDescription', + anchor: 'empty-description', + signature: + 'EmptyDescription: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `empty-description` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'EmptyHeader', + anchor: 'empty-header', + signature: 'EmptyHeader: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `empty-header` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'EmptyMedia', + anchor: 'empty-media', + signature: 'EmptyMedia: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `empty-media` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'EmptyTitle', + anchor: 'empty-title', + signature: 'EmptyTitle: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `empty-title` part of the shadcn-compatible catalog primitives.', + }, + ], + symbols84: [ + { + name: 'Field', + anchor: 'field', + signature: 'Field: (props: FieldProps) => JSX.Element', + typeOnly: true, + summary: + 'Groups a form control with its hint/error text, marking `data-invalid` when `invalid` is set.', + }, + { + name: 'FieldError', + anchor: 'field-error', + signature: 'FieldError: (props: FieldErrorProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders validation error text for a {@link Field}, exposed with `role="alert"`.', + }, + { + name: 'FieldErrorProps', + anchor: 'field-error-props', + signature: + 'FieldErrorProps: ParagraphProps & {\n children?: unknown;\n ref?: Ref<HTMLParagraphElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link FieldError } component.', + members: [ { - name: 'padding', + name: 'children', summary: '', - signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'children?: unknown;', }, { - name: 'paddingX', + name: 'ref', summary: '', - signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'ref?: Ref<HTMLParagraphElement>;', }, + ], + }, + { + name: 'FieldHint', + anchor: 'field-hint', + signature: 'FieldHint: (props: FieldHintProps) => JSX.Element', + typeOnly: true, + summary: 'Renders supporting hint text for a {@link Field}.', + }, + { + name: 'FieldHintProps', + anchor: 'field-hint-props', + signature: + 'FieldHintProps: ParagraphProps & {\n children?: unknown;\n ref?: Ref<HTMLParagraphElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link FieldHint } component.', + members: [ { - name: 'paddingY', + name: 'children', summary: '', - signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'children?: unknown;', }, { - name: 'radius', + name: 'ref', summary: '', - signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + signature: 'ref?: Ref<HTMLParagraphElement>;', }, + ], + }, + { + name: 'FieldProps', + anchor: 'field-props', + signature: + 'FieldProps: DivProps & {\n children?: unknown;\n invalid?: boolean;\n ref?: Ref<HTMLDivElement>;\n}', + typeOnly: true, + summary: 'Props for the {@link Field } component.', + members: [ { - name: 'ref', + name: 'children', summary: '', - signature: 'ref?: Ref<unknown>;', + signature: 'children?: unknown;', }, { - name: 'rowFrom', + name: 'invalid', summary: '', - signature: 'rowFrom?: BlockRowFrom | undefined;', + signature: 'invalid?: boolean | undefined;', }, { - name: 'shadow', + name: 'ref', summary: '', - signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + signature: 'ref?: Ref<HTMLDivElement>;', }, + ], + }, + ], + symbols85: [ + { + name: 'Form', + anchor: 'form', + signature: + 'Form: { (props: FormProps): JSX.Element; (props: FormAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `form`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'FormAsChildProps', + anchor: 'form-as-child-props', + signature: + "FormAsChildProps: Omit<JSX.IntrinsicElements['form'], 'children' | 'ref'> & FormOwnProps & {\n asChild: true;\n children: JSX.Element;\n ref?: import('@askrjs/askr/foundations/utilities').Ref<Element>;\n}", + typeOnly: true, + summary: + '`asChild` keeps the form host supplied by the consumer, while retaining the\nnative form attribute contract (method, action, target, encoding, etc.).', + members: [ { - name: 'shrink', + name: 'asChild', summary: '', - signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + signature: 'asChild: true;', }, { - name: 'sticky', + name: 'children', summary: '', - signature: 'sticky?: boolean | undefined;', + signature: 'children: JSX.Element;', }, { - name: 'top', + name: 'ref', summary: '', - signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'ref?: Ref<Element>;', }, + ], + }, + { + name: 'FormProps', + anchor: 'form-props', + signature: "FormProps: BoxProps<'form', HTMLFormElement> & FormOwnProps", + typeOnly: true, + summary: 'Props for Form.', + members: [ { - name: 'width', + name: 'asChild', summary: '', - signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + signature: 'asChild?: false | undefined;', }, { - name: 'wrap', + name: 'children', summary: '', - signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + signature: 'children?: unknown;', }, { - name: 'zIndex', + name: 'ref', summary: '', - signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + signature: 'ref?: Ref<HTMLFormElement>;', }, ], }, + ], + symbols86: [ { - name: 'BlockRadius', - anchor: 'block-radius', - signature: 'BlockRadius: true | "sm" | "md" | "lg" | "xl" | "round"', - typeOnly: true, - }, - { - name: 'BlockResponsiveValue', - anchor: 'block-responsive-value', - signature: 'ResponsiveValue: T | Partial<Record<LayoutBreakpoint, T>>', + name: 'Grid', + anchor: 'grid', + signature: + 'Grid: <TElement extends GridElement = "div">(props: GridProps<TElement>) => JSX.Element', typeOnly: true, + summary: + 'CSS grid layout primitive: turns `columns`/`gap`/`align` (each optionally responsive) into generated grid-template styles, rendering as `<div>` by default.', }, { - name: 'BlockRowFrom', - anchor: 'block-row-from', - signature: 'BlockRowFrom: Exclude<LayoutBreakpoint, "base">', + name: 'GridAlign', + anchor: 'grid-align', + signature: 'GridAlign: "start" | "center" | "end" | "stretch"', typeOnly: true, + summary: '`align-items` value applied to a {@link Grid }.', }, { - name: 'BlockShadow', - anchor: 'block-shadow', - signature: 'BlockShadow: true | "sm" | "md" | "lg"', + name: 'GridColumns', + anchor: 'grid-columns', + signature: 'GridColumns: number | string', typeOnly: true, + summary: + 'Column definition for {@link Grid }: a track count or a raw `grid-template-columns` string.', }, { - name: 'BlockSize', - anchor: 'block-size', - signature: - 'BlockSize: "auto" | "full" | "screen" | "content" | "sidebar" | "page" | "sm" | "md" | "lg" | "xl"', + name: 'GridElement', + anchor: 'grid-element', + signature: 'GridElement: "div" | "section" | "ul"', typeOnly: true, + summary: 'Element tags {@link Grid } can render as via its `as` prop.', }, { - name: 'BlockSpace', - anchor: 'block-space', + name: 'GridProps', + anchor: 'grid-props', signature: - 'BlockSpace: "0" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "page"', - typeOnly: true, - }, - { - name: 'BlockSpanProps', - anchor: 'block-span-props', - signature: 'BlockSpanProps: BlockElementProps<"span">', + 'GridProps: GridIntrinsicProps<TElement> & {\n as?: TElement;\n columns?: ResponsiveValue<GridColumns>;\n gap?: ResponsiveValue<BlockSpace>;\n align?: ResponsiveValue<GridAlign>;\n children?: unknown;\n ref?: Ref<HTMLElement>;\n}', typeOnly: true, - summary: '{@link Block } props specialized for a `<span>` element.', + summary: + 'Props for the {@link Grid } component, specialized for a given {@link GridElement} `TElement`.', members: [ { name: 'align', summary: '', - signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', + signature: 'align?: ResponsiveValue<GridAlign> | undefined;', }, { name: 'as', summary: '', - signature: 'as?: "span" | undefined;', - }, - { - name: 'asChild', - summary: '', - signature: 'asChild?: false | undefined;', - }, - { - name: 'background', - summary: '', - signature: - 'background?: ResponsiveValue<BlockBackground> | undefined;', - }, - { - name: 'border', - summary: '', - signature: 'border?: ResponsiveValue<boolean> | undefined;', + signature: 'as?: TElement | undefined;', }, { - name: 'borderBottom', + name: 'children', summary: '', - signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + signature: 'children?: unknown;', }, { - name: 'borderRight', + name: 'columns', summary: '', - signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + signature: 'columns?: ResponsiveValue<GridColumns> | undefined;', }, { - name: 'borderTop', + name: 'gap', summary: '', - signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', }, { - name: 'center', + name: 'ref', summary: '', - signature: 'center?: ResponsiveValue<boolean> | undefined;', + signature: 'ref?: Ref<HTMLElement>;', }, + ], + }, + ], + symbols87: [ + { + name: 'Heading', + anchor: 'heading', + signature: 'Heading: ({ level, ...props }: HeadingProps) => JSX.Element', + typeOnly: true, + summary: + 'Native semantic heading whose visual size is independent from its explicit document level.', + }, + { + name: 'HeadingLevel', + anchor: 'heading-level', + signature: 'HeadingLevel: 1 | 2 | 3 | 4 | 5 | 6', + typeOnly: true, + }, + { + name: 'HeadingProps', + anchor: 'heading-props', + signature: + 'HeadingProps: NativeHeadingProps & {\n level: HeadingLevel;\n size?: HeadingSize;\n tone?: TextTone;\n weight?: TextWeight;\n font?: TextFont;\n numeric?: TextNumeric;\n wrap?: TextWrap;\n truncate?: boolean;\n children?: unknown;\n ref?: Ref<HTMLHeadingElement>;\n}', + typeOnly: true, + summary: + 'Strongly typed semantic heading props with visual treatment independent from document level.', + members: [ { name: 'children', summary: '', signature: 'children?: unknown;', }, { - name: 'className', - summary: '', - signature: 'className?: string | undefined;', - }, - { - name: 'direction', - summary: '', - signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', - }, - { - name: 'gap', - summary: '', - signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', - }, - { - name: 'grow', + name: 'font', summary: '', - signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + signature: 'font?: TextFont | undefined;', }, { - name: 'height', + name: 'level', summary: '', - signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + signature: 'level: HeadingLevel;', }, { - name: 'hide', + name: 'numeric', summary: '', - signature: 'hide?: ResponsiveValue<boolean> | undefined;', + signature: 'numeric?: TextNumeric | undefined;', }, { - name: 'justify', + name: 'ref', summary: '', - signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + signature: 'ref?: Ref<HTMLHeadingElement>;', }, { - name: 'margin', + name: 'size', summary: '', - signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + signature: 'size?: HeadingSize | undefined;', }, { - name: 'marginX', + name: 'tone', summary: '', - signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + signature: 'tone?: TextTone | undefined;', }, { - name: 'marginY', + name: 'truncate', summary: '', - signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + signature: 'truncate?: boolean | undefined;', }, { - name: 'maxHeight', + name: 'weight', summary: '', - signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + signature: 'weight?: TextWeight | undefined;', }, { - name: 'maxWidth', + name: 'wrap', summary: '', - signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + signature: 'wrap?: TextWrap | undefined;', }, + ], + }, + { + name: 'HeadingSize', + anchor: 'heading-size', + signature: 'HeadingSize: "sm" | "md" | "lg" | "xl" | "2xl" | "3xl"', + typeOnly: true, + }, + ], + symbols88: [ + { + name: 'HoverCard', + anchor: 'hover-card', + signature: + 'HoverCard: (props: HoverCardProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: 'Renders a part of `hover-card`.', + }, + { + name: 'HoverCardAsChildProps', + anchor: 'hover-card-as-child-props', + signature: + 'HoverCardAsChildProps: HoverCardOwnProps & {\n asChild: true;\n children: JSX.Element;\n}', + typeOnly: true, + summary: 'Props for the `asChild` (polymorphic) rendering of Hover Card.', + members: [ { - name: 'minHeight', + name: 'asChild', summary: '', - signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + signature: 'asChild: true;', }, { - name: 'minWidth', + name: 'children', summary: '', - signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + signature: 'children: JSX.Element;', }, { - name: 'padding', + name: 'closeDelay', summary: '', - signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'closeDelay?: number | undefined;', }, { - name: 'paddingX', + name: 'defaultOpen', summary: '', - signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'defaultOpen?: boolean | undefined;', }, { - name: 'paddingY', + name: 'id', summary: '', - signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'id?: string | undefined;', }, { - name: 'radius', + name: 'onOpenChange', summary: '', - signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', }, { - name: 'ref', + name: 'open', summary: '', - signature: 'ref?: Ref<unknown>;', + signature: 'open?: boolean | undefined;', }, { - name: 'rowFrom', + name: 'openDelay', summary: '', - signature: 'rowFrom?: BlockRowFrom | undefined;', + signature: 'openDelay?: number | undefined;', }, + ], + }, + { + name: 'HoverCardContent', + anchor: 'hover-card-content', + signature: + 'HoverCardContent: { (props: HoverCardContentProps): JSX.Element | null; (props: HoverCardContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `hover-card-content` part of `hover-card` with `role="dialog"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'HoverCardContentAsChildProps', + anchor: 'hover-card-content-as-child-props', + signature: + 'HoverCardContentAsChildProps: BoxAsChildProps & HoverCardContentOwnProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Hover Card Content.', + members: [ { - name: 'shadow', + name: 'align', summary: '', - signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + signature: 'align?: OverlayAlign | undefined;', }, { - name: 'shrink', + name: 'asChild', summary: '', - signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + signature: 'asChild: true;', }, { - name: 'sticky', + name: 'children', summary: '', - signature: 'sticky?: boolean | undefined;', + signature: 'children: JSXElement;', }, { - name: 'top', + name: 'forceMount', summary: '', - signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'forceMount?: boolean | undefined;', }, { - name: 'width', + name: 'ref', summary: '', - signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + signature: 'ref?: Ref<Element>;', }, { - name: 'wrap', + name: 'side', summary: '', - signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + signature: 'side?: OverlaySide | undefined;', }, { - name: 'zIndex', + name: 'sideOffset', summary: '', - signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + signature: 'sideOffset?: number | undefined;', }, ], }, { - name: 'BlockZIndex', - anchor: 'block-zindex', - signature: - 'BlockZIndex: "header" | "sticky" | "fixed" | "dropdown" | "modal" | "popover" | "toast" | "tooltip"', - typeOnly: true, - }, - { - name: 'Brand', - anchor: 'brand', - signature: - 'Brand: <TElement extends "div" | "a" | "span" = "div">(props: BrandProps<TElement>) => JSX.Element', - typeOnly: true, - summary: - 'Renders a brand/logo wrapper, defaulting to a `<div>` (or `<a>`/`<span>` via `as`), or merges onto a single child via `asChild`.', - }, - { - name: 'BrandLabel', - anchor: 'brand-label', - signature: 'BrandLabel: (props: BrandLabelProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the text label portion of a {@link Brand}.', - }, - { - name: 'BrandMark', - anchor: 'brand-mark', - signature: 'BrandMark: (props: BrandMarkProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the icon/mark portion of a {@link Brand}.', - }, - { - name: 'Breadcrumb', - anchor: 'breadcrumb', - signature: 'Breadcrumb: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `breadcrumb` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'BreadcrumbEllipsis', - anchor: 'breadcrumb-ellipsis', - signature: - 'BreadcrumbEllipsis: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders a non-interactive ellipsis marker in a breadcrumb trail.', - }, - { - name: 'BreadcrumbItem', - anchor: 'breadcrumb-item', - signature: - 'BreadcrumbItem: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `breadcrumb-item` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'BreadcrumbLink', - anchor: 'breadcrumb-link', - signature: - 'BreadcrumbLink: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `breadcrumb-link` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'BreadcrumbList', - anchor: 'breadcrumb-list', - signature: - 'BreadcrumbList: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `breadcrumb-list` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'BreadcrumbPage', - anchor: 'breadcrumb-page', - signature: - 'BreadcrumbPage: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the current (non-link) breadcrumb page, marked `aria-current="page"`.', - }, - { - name: 'BreadcrumbSeparator', - anchor: 'breadcrumb-separator', - signature: - 'BreadcrumbSeparator: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the separator between breadcrumb items (defaults to `"/"`).', - }, - { - name: 'Button', - anchor: 'button', - signature: - 'Button: { (props: ButtonNativeProps): JSX.Element; (props: ButtonAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Headless Button component\n\n## Responsibilities\n- Compose pressable foundation for interaction behavior\n- Enforce type="button" default to prevent accidental form submission\n- Forward props and refs to native button or child element\n\n## Non-Responsibilities (delegated to pressable foundation)\n- Keyboard event handling (Enter/Space)\n- Pointer event handling\n- Disabled state enforcement\n- ARIA attribute application\n\n## Invariants\n- MUST NOT contain any event handler logic\n- MUST NOT check disabled prop directly\n- MUST use pressable() for ALL interaction behavior\n- MUST use mergeProps() for ALL prop composition\nRenders the `button` part of `button`.\n\nSupports polymorphic rendering via `asChild`.', - tags: { - example: [ - 'Native button (prevents accidental submit)\n```tsx\n<Button onPress={handleSave}>Save</Button>\n```', - 'Explicit form submission\n```tsx\n<Button type="submit" onPress={handleSubmit}>Submit</Button>\n```', - 'Polymorphic rendering (asChild)\n```tsx\n<Button asChild onPress={handleNav}>\n<a href="/home">Home</a>\n</Button>\n```', - ], - }, - }, - { - name: 'ButtonAsChildElement', - anchor: 'button-as-child-element', - signature: 'ButtonAsChildElement: JSXElement | JSX.Element', - typeOnly: true, - summary: 'Button As Child Element.', - }, - { - name: 'ButtonAsChildProps', - anchor: 'button-as-child-props', + name: 'HoverCardContentProps', + anchor: 'hover-card-content-props', signature: - 'ButtonAsChildProps: ButtonOwnProps & {\n asChild: true;\n children: ButtonAsChildElement;\n ref?: Ref<Element>;\n type?: never;\n}', + "HoverCardContentProps: BoxProps<'div', HTMLDivElement> & HoverCardContentOwnProps", typeOnly: true, - summary: 'Props when rendering with asChild (polymorphic)', + summary: 'Props for Hover Card Content.', members: [ + { + name: 'align', + summary: '', + signature: 'align?: OverlayAlign | undefined;', + }, { name: 'asChild', summary: '', - signature: 'asChild: true;', + signature: 'asChild?: false | undefined;', }, { name: 'children', summary: '', - signature: 'children: ButtonAsChildElement;', + signature: 'children?: unknown;', }, { - name: 'disabled', + name: 'forceMount', summary: '', - signature: 'disabled?: boolean | undefined;', + signature: 'forceMount?: boolean | undefined;', }, { - name: 'onPress', + name: 'ref', summary: '', - signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + signature: 'ref?: Ref<HTMLDivElement>;', }, { - name: 'ref', + name: 'side', summary: '', - signature: 'ref?: Ref<Element>;', + signature: 'side?: OverlaySide | undefined;', }, { - name: 'size', + name: 'sideOffset', summary: '', - signature: 'size?: ButtonSize | undefined;', + signature: 'sideOffset?: number | undefined;', }, + ], + }, + { + name: 'HoverCardOwnProps', + anchor: 'hover-card-own-props', + signature: + 'HoverCardOwnProps: {\n children?: unknown;\n id?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n openDelay?: number;\n closeDelay?: number;\n}', + typeOnly: true, + summary: + 'Own props for Hover Card, before merging with native element attributes.', + members: [ { - name: 'type', + name: 'children', summary: '', - signature: 'type?: undefined;', + signature: 'children?: unknown;', }, { - name: 'variant', + name: 'closeDelay', summary: '', - signature: 'variant?: ButtonVariant | undefined;', + signature: 'closeDelay?: number | undefined;', }, { - name: 'width', + name: 'defaultOpen', summary: '', - signature: 'width?: ButtonWidth | undefined;', + signature: 'defaultOpen?: boolean | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'onOpenChange', + summary: '', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', + }, + { + name: 'open', + summary: '', + signature: 'open?: boolean | undefined;', + }, + { + name: 'openDelay', + summary: '', + signature: 'openDelay?: number | undefined;', }, ], }, { - name: 'ButtonGroup', - anchor: 'button-group', - signature: 'ButtonGroup: (props: ButtonGroupProps) => JSX.Element', + name: 'HoverCardPortal', + anchor: 'hover-card-portal', + signature: + 'HoverCardPortal: (props: HoverCardPortalProps) => JSX.Element | null', typeOnly: true, - summary: - 'Groups related buttons together, optionally visually attached, with a horizontal or vertical\norientation and `role="group"` by default. Attached groups without an explicit `orientation`\nstack at phone width unless they contain icon buttons; pass `orientation="horizontal"` to\nkeep the row.', + summary: 'Renders a part of `hover-card`.', }, { - name: 'ButtonGroupOrientation', - anchor: 'button-group-orientation', - signature: 'ButtonGroupOrientation: "horizontal" | "vertical"', + name: 'HoverCardPortalProps', + anchor: 'hover-card-portal-props', + signature: 'HoverCardPortalProps: {\n children?: unknown;\n}', typeOnly: true, - summary: - 'Layout direction of a {@link ButtonGroup }. When omitted, an attached group is a row that\nstacks at phone width unless it contains icon buttons. An explicit value keeps that direction\nunless the caller also passes `data-responsive="true"`, which opts back into phone stacking.', + summary: 'Props for Hover Card Portal.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + ], }, { - name: 'ButtonGroupProps', - anchor: 'button-group-props', - signature: - 'ButtonGroupProps: DivProps & {\n children?: unknown;\n attached?: boolean;\n orientation?: ButtonGroupOrientation;\n /** Stack at phone width. Defaults to `"true"` for attached groups without an `orientation`. */\n "data-responsive"?: "true" | "false";\n ref?: Ref<HTMLDivElement>;\n}', + name: 'HoverCardProps', + anchor: 'hover-card-props', + signature: 'HoverCardProps: HoverCardOwnProps', typeOnly: true, - summary: 'Props for the {@link ButtonGroup } component.', + summary: 'Props for Hover Card.', members: [ { - name: 'attached', + name: 'children', summary: '', - signature: 'attached?: boolean | undefined;', + signature: 'children?: unknown;', }, { - name: 'children', + name: 'closeDelay', summary: '', - signature: 'children?: unknown;', + signature: 'closeDelay?: number | undefined;', }, { - name: 'data-responsive', - summary: - 'Stack at phone width. Defaults to `"true"` for attached groups without an `orientation`.', - signature: 'data-responsive?: "true" | "false" | undefined;', + name: 'defaultOpen', + summary: '', + signature: 'defaultOpen?: boolean | undefined;', }, { - name: 'orientation', + name: 'id', summary: '', - signature: 'orientation?: ButtonGroupOrientation | undefined;', + signature: 'id?: string | undefined;', }, { - name: 'ref', + name: 'onOpenChange', summary: '', - signature: 'ref?: Ref<HTMLDivElement>;', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', + }, + { + name: 'open', + summary: '', + signature: 'open?: boolean | undefined;', + }, + { + name: 'openDelay', + summary: '', + signature: 'openDelay?: number | undefined;', }, ], }, { - name: 'ButtonNativeProps', - anchor: 'button-native-props', + name: 'HoverCardTrigger', + anchor: 'hover-card-trigger', signature: - "ButtonNativeProps: Omit<JSX.IntrinsicElements['button'], 'children' | 'onClick' | 'disabled' | 'type' | 'ref'> & ButtonOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLButtonElement>;\n type?: 'button' | 'submit' | 'reset';\n}", + 'HoverCardTrigger: { (props: HoverCardTriggerProps): JSX.Element; (props: HoverCardTriggerAsChildProps): JSX.Element; }', typeOnly: true, - summary: 'Props when rendering as native <button>', + summary: + 'Renders the `hover-card-trigger` part of `hover-card`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'HoverCardTriggerAsChildProps', + anchor: 'hover-card-trigger-as-child-props', + signature: 'HoverCardTriggerAsChildProps: ButtonLikeAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Hover Card Trigger.', members: [ { name: 'asChild', summary: '', - signature: 'asChild?: false | undefined;', + signature: 'asChild: true;', }, { name: 'children', summary: '', - signature: 'children?: unknown;', + signature: 'children: JSXElement;', }, { name: 'disabled', @@ -34127,46 +43021,32 @@ export const apiSymbolSets: Readonly< { name: 'onPress', summary: '', - signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', }, { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLButtonElement>;', - }, - { - name: 'size', - summary: '', - signature: 'size?: ButtonSize | undefined;', + signature: 'ref?: Ref<Element>;', }, { name: 'type', summary: '', - signature: 'type?: "button" | "submit" | "reset" | undefined;', - }, - { - name: 'variant', - summary: '', - signature: 'variant?: ButtonVariant | undefined;', - }, - { - name: 'width', - summary: '', - signature: 'width?: ButtonWidth | undefined;', + signature: 'type?: undefined;', }, ], }, { - name: 'ButtonProps', - anchor: 'button-props', - signature: 'ButtonProps: ButtonNativeProps | ButtonAsChildProps', + name: 'HoverCardTriggerProps', + anchor: 'hover-card-trigger-props', + signature: + "HoverCardTriggerProps: ButtonLikeProps<'button', HTMLButtonElement>", typeOnly: true, - summary: 'Union of all Button prop variants', + summary: 'Props for Hover Card Trigger.', members: [ { name: 'asChild', summary: '', - signature: 'asChild?: boolean | undefined;', + signature: 'asChild?: false | undefined;', }, { name: 'children', @@ -34181,291 +43061,284 @@ export const apiSymbolSets: Readonly< { name: 'onPress', summary: '', - signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', }, { name: 'ref', summary: '', - signature: - 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLButtonElement | null) => void) | { current: HTMLButtonElement | null; } | null | undefined;', - }, - { - name: 'size', - summary: '', - signature: 'size?: ButtonSize | undefined;', + signature: 'ref?: Ref<HTMLButtonElement>;', }, { name: 'type', summary: '', signature: 'type?: "button" | "submit" | "reset" | undefined;', }, - { - name: 'variant', - summary: '', - signature: 'variant?: ButtonVariant | undefined;', - }, - { - name: 'width', - summary: '', - signature: 'width?: ButtonWidth | undefined;', - }, ], }, + ], + symbols89: [ { - name: 'ButtonSize', - anchor: 'button-size', - signature: - "ButtonSize: 'xs' | 'sm' | 'md' | 'lg' | 'icon' | 'icon-xs' | 'icon-sm' | 'icon-lg'", - typeOnly: true, - summary: 'Button Size.', - }, - { - name: 'ButtonVariant', - anchor: 'button-variant', - signature: - "ButtonVariant: 'default' | 'primary' | 'secondary' | 'outline' | 'ghost' | 'destructive' | 'link'", - typeOnly: true, - summary: 'Button Variant.', - }, - { - name: 'ButtonWidth', - anchor: 'button-width', - signature: "ButtonWidth: 'auto' | 'full'", - typeOnly: true, - summary: 'Button Width.', - }, - { - name: 'Calendar', - anchor: 'calendar', - signature: 'Calendar: (props: CatalogComponentProps) => JSX.Element', + name: 'InputGroup', + anchor: 'input-group', + signature: 'InputGroup: (props: InputGroupProps) => JSX.Element', typeOnly: true, summary: - 'Styling-only calendar anatomy; it does not own dates, grid focus, selection, or month navigation.', + 'Groups related inputs/addons together, optionally visually attached, with a horizontal or vertical orientation and `role="group"` by default.', }, { - name: 'CalendarBody', - anchor: 'calendar-body', - signature: 'CalendarBody: (props: CatalogComponentProps) => JSX.Element', + name: 'InputGroupOrientation', + anchor: 'input-group-orientation', + signature: 'InputGroupOrientation: "horizontal" | "vertical"', typeOnly: true, - summary: - 'Renders the `calendar-body` part of the shadcn-compatible catalog primitives.', + summary: 'Layout direction of an {@link InputGroup }.', }, { - name: 'CalendarCaption', - anchor: 'calendar-caption', + name: 'InputGroupProps', + anchor: 'input-group-props', signature: - 'CalendarCaption: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `calendar-caption` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'CalendarCell', - anchor: 'calendar-cell', - signature: 'CalendarCell: (props: CatalogComponentProps) => JSX.Element', + 'InputGroupProps: DivProps & {\n children?: unknown;\n attached?: boolean;\n orientation?: InputGroupOrientation;\n ref?: Ref<HTMLDivElement>;\n}', typeOnly: true, - summary: - 'Renders the `calendar-cell` part of the shadcn-compatible catalog primitives.', + summary: 'Props for the {@link InputGroup } component.', + members: [ + { + name: 'attached', + summary: '', + signature: 'attached?: boolean | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: InputGroupOrientation | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], }, { - name: 'CalendarDay', - anchor: 'calendar-day', + name: 'InputGroupText', + anchor: 'input-group-text', signature: - 'CalendarDay: (props: CatalogComponentProps<HTMLButtonElement> & { disabled?: boolean; outside?: boolean; rangeEnd?: boolean; rangeMiddle?: boolean; rangeStart?: boolean; selected?: boolean; today?: boolean; }) => JSX.Element', - typeOnly: true, - summary: - 'Renders a single selectable day cell in the calendar grid, with selection/range/today state exposed as data attributes.', - }, - { - name: 'CalendarGrid', - anchor: 'calendar-grid', - signature: 'CalendarGrid: (props: CatalogComponentProps) => JSX.Element', + 'InputGroupText: { (props: InputGroupTextProps): JSX.Element; (props: InputGroupTextAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'Renders the `calendar-grid` part of the shadcn-compatible catalog primitives.', + 'Renders static text/label content within an {@link InputGroup}.', }, { - name: 'CalendarHead', - anchor: 'calendar-head', - signature: 'CalendarHead: (props: CatalogComponentProps) => JSX.Element', + name: 'InputGroupTextAsChildProps', + anchor: 'input-group-text-as-child-props', + signature: + 'InputGroupTextAsChildProps: SpanProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', typeOnly: true, summary: - 'Renders the `calendar-head` part of the shadcn-compatible catalog primitives.', + 'Props for {@link InputGroupText } rendered with `asChild`, merging its attributes onto a single child element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + ], }, { - name: 'CalendarHeader', - anchor: 'calendar-header', + name: 'InputGroupTextProps', + anchor: 'input-group-text-props', signature: - 'CalendarHeader: (props: CatalogComponentProps) => JSX.Element', + 'InputGroupTextProps: SpanProps & {\n asChild?: false;\n children?: unknown;\n ref?: Ref<HTMLSpanElement>;\n}', typeOnly: true, summary: - 'Renders the `calendar-header` part of the shadcn-compatible catalog primitives.', + 'Props for {@link InputGroupText } rendered as its default `<span>` element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLSpanElement>;', + }, + ], }, + ], + symbols90: [ { - name: 'CalendarNav', - anchor: 'calendar-nav', - signature: 'CalendarNav: (props: CatalogComponentProps) => JSX.Element', + name: 'InputOTP', + anchor: 'input-otp', + signature: 'InputOTP: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `calendar-nav` part of the shadcn-compatible catalog primitives.', + 'Styling-only OTP anatomy; it does not render an input or own value, focus, paste, or validation behavior.', }, { - name: 'CalendarNextButton', - anchor: 'calendar-next-button', - signature: - 'CalendarNextButton: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', + name: 'InputOTPGroup', + anchor: 'input-otpgroup', + signature: 'InputOTPGroup: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, - summary: 'Button that navigates the calendar to the next month.', + summary: + 'Renders the `input-otp-group` part of the shadcn-compatible catalog primitives.', }, { - name: 'CalendarPreviousButton', - anchor: 'calendar-previous-button', + name: 'InputOTPSeparator', + anchor: 'input-otpseparator', signature: - 'CalendarPreviousButton: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', - typeOnly: true, - summary: 'Button that navigates the calendar to the previous month.', - }, - { - name: 'CalendarRow', - anchor: 'calendar-row', - signature: 'CalendarRow: (props: CatalogComponentProps) => JSX.Element', + 'InputOTPSeparator: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `calendar-row` part of the shadcn-compatible catalog primitives.', + 'Renders the visual separator between InputOTP groups (defaults to `"-"`).', }, { - name: 'Card', - anchor: 'card', - signature: 'Card: (props: CardProps) => JSX.Element', + name: 'InputOTPSlot', + anchor: 'input-otpslot', + signature: 'InputOTPSlot: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Root card container; applies the `card` class and an optional `variant` modifier.', + 'Renders the `input-otp-slot` part of the shadcn-compatible catalog primitives.', }, + ], + symbols91: [ { - name: 'CardAction', - anchor: 'card-action', - signature: 'CardAction: (props: CardActionProps) => JSX.Element', + name: 'DebouncedInput', + anchor: 'debounced-input', + signature: 'DebouncedInput: (props: DebouncedInputProps) => JSX.Element', typeOnly: true, summary: - 'Renders an action/control region of a {@link Card}, typically positioned alongside the header.', + 'DebouncedInput is a convenience wrapper around Input that emits a settled\nvalue for search and filter surfaces.\n\nOne component-owned timer is re-timed when `debounceMs` changes (or emits\nat once when the delay drops to zero). A pending value is delivered to the latest\n`onDebouncedInput`, is dropped when `onDebouncedInput` is removed, and is\ncancelled on unmount.', }, { - name: 'CardActionProps', - anchor: 'card-action-props', + name: 'DebouncedInputProps', + anchor: 'debounced-input-props', signature: - 'CardActionProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', + "DebouncedInputProps: Omit<InputInputProps, 'onInput' | 'type'> & {\n type?: JSX.IntrinsicElements['input']['type'];\n debounceMs?: number;\n onInput?: (event: InputEvent) => void;\n onDebouncedInput?: (value: string) => void;\n}", typeOnly: true, - summary: 'Props for the {@link CardAction } component.', + summary: 'Props for Debounced Input.', members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, { name: 'children', summary: '', signature: 'children?: unknown;', }, { - name: 'ref', + name: 'debounceMs', summary: '', - signature: 'ref?: Ref<HTMLDivElement>;', + signature: 'debounceMs?: number | undefined;', }, - ], - }, - { - name: 'CardContent', - anchor: 'card-content', - signature: 'CardContent: (props: CardContentProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the main content region of a {@link Card}.', - }, - { - name: 'CardContentProps', - anchor: 'card-content-props', - signature: - 'CardContentProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', - typeOnly: true, - summary: 'Props for the {@link CardContent } component.', - members: [ { - name: 'children', + name: 'onDebouncedInput', summary: '', - signature: 'children?: unknown;', + signature: + 'onDebouncedInput?: ((value: string) => void) | undefined;', + }, + { + name: 'onInput', + summary: '', + signature: 'onInput?: ((event: InputEvent) => void) | undefined;', }, { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLDivElement>;', + signature: 'ref?: Ref<HTMLInputElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: ReactiveProp<IntrinsicTextValue>;', }, ], }, { - name: 'CardDescription', - anchor: 'card-description', + name: 'Input', + anchor: 'input', signature: - 'CardDescription: (props: CardDescriptionProps) => JSX.Element', + 'Input: { (props: InputInputProps): JSX.Element; (props: InputAsChildProps): JSX.Element; }', typeOnly: true, - summary: "Renders a {@link Card}'s supporting description text.", + summary: + 'Renders the `input` part of `input`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'CardDescriptionProps', - anchor: 'card-description-props', + name: 'InputAsChildProps', + anchor: 'input-as-child-props', signature: - 'CardDescriptionProps: ParagraphProps & {\n children?: unknown;\n ref?: Ref<HTMLParagraphElement>;\n}', + 'InputAsChildProps: InputOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<Element>;\n}', typeOnly: true, - summary: 'Props for the {@link CardDescription } component.', + summary: 'Props for the `asChild` (polymorphic) rendering of Input.', members: [ { - name: 'children', + name: 'asChild', summary: '', - signature: 'children?: unknown;', + signature: 'asChild: true;', }, { - name: 'ref', + name: 'children', summary: '', - signature: 'ref?: Ref<HTMLParagraphElement>;', + signature: 'children: JSXElement;', }, - ], - }, - { - name: 'CardFooter', - anchor: 'card-footer', - signature: 'CardFooter: (props: CardFooterProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the footer region of a {@link Card}.', - }, - { - name: 'CardFooterProps', - anchor: 'card-footer-props', - signature: - 'CardFooterProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', - typeOnly: true, - summary: 'Props for the {@link CardFooter } component.', - members: [ { - name: 'children', + name: 'disabled', summary: '', - signature: 'children?: unknown;', + signature: 'disabled?: boolean | undefined;', }, { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLDivElement>;', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'tabIndex', + summary: '', + signature: 'tabIndex?: number | undefined;', }, ], }, - { - name: 'CardHeader', - anchor: 'card-header', - signature: 'CardHeader: (props: CardHeaderProps) => JSX.Element', + { + name: 'InputEvent', + anchor: 'input-event', + signature: + 'InputEvent: Event & {\n currentTarget: HTMLInputElement;\n target: HTMLInputElement;\n}', typeOnly: true, - summary: 'Renders the header region of a {@link Card}.', + summary: 'Input Event.', }, { - name: 'CardHeaderProps', - anchor: 'card-header-props', + name: 'InputInputProps', + anchor: 'input-input-props', signature: - 'CardHeaderProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', + "InputInputProps: Omit<JSX.IntrinsicElements['input'], 'children' | 'ref'> & InputOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLInputElement>;\n}", typeOnly: true, - summary: 'Props for the {@link CardHeader } component.', + summary: 'Props for Input Input.', members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, { name: 'children', summary: '', @@ -34474,17 +43347,18 @@ export const apiSymbolSets: Readonly< { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLDivElement>;', + signature: 'ref?: Ref<HTMLInputElement>;', }, ], }, { - name: 'CardProps', - anchor: 'card-props', + name: 'InputOwnProps', + anchor: 'input-own-props', signature: - 'CardProps: DivProps & {\n children?: unknown;\n variant?: CardVariant;\n ref?: Ref<HTMLDivElement>;\n}', + 'InputOwnProps: {\n children?: unknown;\n disabled?: boolean;\n tabIndex?: number;\n}', typeOnly: true, - summary: 'Props for the {@link Card } component.', + summary: + 'Own props for Input, before merging with native element attributes.', members: [ { name: 'children', @@ -34492,40 +43366,29 @@ export const apiSymbolSets: Readonly< signature: 'children?: unknown;', }, { - name: 'ref', + name: 'disabled', summary: '', - signature: 'ref?: Ref<HTMLDivElement>;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'variant', + name: 'tabIndex', summary: '', - signature: 'variant?: CardVariant | undefined;', + signature: 'tabIndex?: number | undefined;', }, ], }, { - name: 'CardTitle', - anchor: 'card-title', - signature: 'CardTitle: (props: CardTitleProps) => JSX.Element', - typeOnly: true, - summary: - "Renders a {@link Card}'s title, defaulting to an `<h3>` (override with `titleAs`).", - }, - { - name: 'CardTitleHeadingTag', - anchor: 'card-title-heading-tag', - signature: 'CardTitleHeadingTag: "h1" | "h2" | "h3" | "h4" | "h5" | "h6"', - typeOnly: true, - summary: "Heading tag allowed for a card's title via `titleAs`.", - }, - { - name: 'CardTitleProps', - anchor: 'card-title-props', - signature: - 'CardTitleProps: HeadingProps & {\n children?: unknown;\n /** Choose the level that follows the surrounding document hierarchy. */\n titleAs?: CardTitleHeadingTag;\n ref?: Ref<HTMLHeadingElement>;\n}', + name: 'InputProps', + anchor: 'input-props', + signature: 'InputProps: InputInputProps | InputAsChildProps', typeOnly: true, - summary: 'Props for the {@link CardTitle } component.', + summary: 'Props for Input.', members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, { name: 'children', summary: '', @@ -34534,177 +43397,145 @@ export const apiSymbolSets: Readonly< { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLHeadingElement>;', - }, - { - name: 'titleAs', - summary: - 'Choose the level that follows the surrounding document hierarchy.', - signature: 'titleAs?: CardTitleHeadingTag | undefined;', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLInputElement | null) => void) | { current: HTMLInputElement | null; } | null | undefined;', }, ], }, + ], + symbols92: [ { - name: 'CardVariant', - anchor: 'card-variant', - signature: 'CardVariant: "default" | "raised"', + name: 'Item', + anchor: 'item', + signature: + 'Item: (props: CatalogComponentProps & { active?: boolean; size?: "default" | "sm" | "xs"; variant?: "default" | "outline" | "muted"; }) => JSX.Element', typeOnly: true, - summary: 'Visual style of a {@link CardProps} card.', + summary: + 'Renders a generic list item part, exposing `active`/`size`/`variant` as data attributes.', }, { - name: 'Carousel', - anchor: 'carousel', - signature: 'Carousel: (props: CatalogComponentProps) => JSX.Element', + name: 'ItemActions', + anchor: 'item-actions', + signature: 'ItemActions: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Styling-only carousel anatomy; it does not own an active slide, scrolling, or keyboard navigation.', + 'Renders the `item-actions` part of the shadcn-compatible catalog primitives.', }, { - name: 'CarouselContent', - anchor: 'carousel-content', - signature: - 'CarouselContent: (props: CatalogComponentProps) => JSX.Element', + name: 'ItemContent', + anchor: 'item-content', + signature: 'ItemContent: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `carousel-content` part of the shadcn-compatible catalog primitives.', + 'Renders the `item-content` part of the shadcn-compatible catalog primitives.', }, { - name: 'CarouselItem', - anchor: 'carousel-item', - signature: 'CarouselItem: (props: CatalogComponentProps) => JSX.Element', + name: 'ItemDescription', + anchor: 'item-description', + signature: + 'ItemDescription: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `carousel-item` part of the shadcn-compatible catalog primitives.', + 'Renders the `item-description` part of the shadcn-compatible catalog primitives.', }, { - name: 'CarouselNext', - anchor: 'carousel-next', - signature: - 'CarouselNext: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', + name: 'ItemFooter', + anchor: 'item-footer', + signature: 'ItemFooter: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, - summary: 'Button that navigates the carousel to the next item.', + summary: + 'Renders the `item-footer` part of the shadcn-compatible catalog primitives.', }, { - name: 'CarouselPrevious', - anchor: 'carousel-previous', - signature: - 'CarouselPrevious: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', + name: 'ItemGroup', + anchor: 'item-group', + signature: 'ItemGroup: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, - summary: 'Button that navigates the carousel to the previous item.', + summary: + 'Renders the `item-group` part of the shadcn-compatible catalog primitives.', }, { - name: 'CAT_THEME_NAMES', - anchor: 'cat-theme-names', - signature: - 'CAT_THEME_NAMES: readonly ["tabby", "ginger", "tuxedo", "calico", "torty"]', + name: 'ItemHeader', + anchor: 'item-header', + signature: 'ItemHeader: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, - summary: 'Names of the built-in "cat" theme presets.', + summary: + 'Renders the `item-header` part of the shadcn-compatible catalog primitives.', }, { - name: 'CAT_THEME_OPTIONS', - anchor: 'cat-theme-options', - signature: 'CAT_THEME_OPTIONS: readonly ThemeOption[]', + name: 'ItemMedia', + anchor: 'item-media', + signature: 'ItemMedia: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Theme options for the built-in "cat" theme presets, keyed to {@link CAT_THEME_NAMES}.', + 'Renders the `item-media` part of the shadcn-compatible catalog primitives.', }, { - name: 'CatalogComponentProps', - anchor: 'catalog-component-props', - signature: - 'CatalogComponentProps: Record<string, unknown> & {\n as?: CatalogElement;\n asChild?: boolean;\n children?: unknown;\n class?: string;\n ref?: Ref<TElement>;\n}', + name: 'ItemTitle', + anchor: 'item-title', + signature: 'ItemTitle: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Shared prop shape for the shadcn-compatible catalog primitives below: a\npolymorphic `as`/`asChild` element plus passthrough attributes.', - members: [ - { - name: 'as', - summary: '', - signature: 'as?: keyof JSX.IntrinsicElements | undefined;', - }, - { - name: 'asChild', - summary: '', - signature: 'asChild?: boolean | undefined;', - }, - { - name: 'children', - summary: '', - signature: 'children?: unknown;', - }, - { - name: 'class', - summary: '', - signature: 'class?: string | undefined;', - }, - { - name: 'ref', - summary: '', - signature: 'ref?: Ref<TElement>;', - }, - ], + 'Renders the `item-title` part of the shadcn-compatible catalog primitives.', }, + ], + symbols93: [ { - name: 'CatThemeName', - anchor: 'cat-theme-name', - signature: 'CatThemeName: (typeof CAT_THEME_NAMES)[number]', + name: 'Kbd', + anchor: 'kbd', + signature: 'Kbd: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, - summary: 'A built-in "cat" theme name, one of {@link CAT_THEME_NAMES}.', + summary: + 'Renders the `kbd` part of the shadcn-compatible catalog primitives.', }, + ], + symbols94: [ { - name: 'Center', - anchor: 'center', - signature: 'Center: (props: CenterProps) => JSX.Element', + name: 'Label', + anchor: 'label', + signature: + 'Label: { (props: LabelLabelProps): JSXElement; (props: LabelAsChildProps): JSXElement; }', typeOnly: true, summary: - 'Centers content on both axes within the supplied Block dimensions.', + 'Renders the `label` part of `label`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'CenterProps', - anchor: 'center-props', + name: 'LabelAsChildProps', + anchor: 'label-as-child-props', signature: - 'CenterProps: WithoutOwnedLayout<BlockProps, "align" | "justify"> & {\n align?: never;\n justify?: never;\n}', + 'LabelAsChildProps: LabelOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<Element>;\n}', typeOnly: true, + summary: 'Props for the `asChild` (polymorphic) rendering of Label.', members: [ - { - name: 'align', - summary: '', - signature: 'align?: undefined;', - }, { name: 'asChild', summary: '', - signature: 'asChild?: unknown;', - }, - { - name: 'background', - summary: '', - signature: 'background?: unknown;', - }, - { - name: 'border', - summary: '', - signature: 'border?: unknown;', - }, - { - name: 'borderBottom', - summary: '', - signature: 'borderBottom?: unknown;', + signature: 'asChild: true;', }, { - name: 'borderRight', + name: 'children', summary: '', - signature: 'borderRight?: unknown;', + signature: 'children: JSXElement;', }, { - name: 'borderTop', + name: 'ref', summary: '', - signature: 'borderTop?: unknown;', + signature: 'ref?: Ref<Element>;', }, + ], + }, + { + name: 'LabelLabelProps', + anchor: 'label-label-props', + signature: + "LabelLabelProps: Omit<Props, 'children'> & LabelOwnProps & {\n asChild?: false;\n htmlFor?: string;\n ref?: Ref<HTMLLabelElement>;\n}", + typeOnly: true, + summary: 'Props for Label Label.', + members: [ { - name: 'center', + name: 'asChild', summary: '', - signature: 'center?: unknown;', + signature: 'asChild?: false | undefined;', }, { name: 'children', @@ -34712,1348 +43543,1673 @@ export const apiSymbolSets: Readonly< signature: 'children?: unknown;', }, { - name: 'direction', - summary: '', - signature: 'direction?: unknown;', - }, - { - name: 'gap', - summary: '', - signature: 'gap?: unknown;', - }, - { - name: 'grow', - summary: '', - signature: 'grow?: unknown;', - }, - { - name: 'height', - summary: '', - signature: 'height?: unknown;', - }, - { - name: 'hide', - summary: '', - signature: 'hide?: unknown;', - }, - { - name: 'justify', - summary: '', - signature: 'justify?: undefined;', - }, - { - name: 'margin', - summary: '', - signature: 'margin?: unknown;', - }, - { - name: 'marginX', - summary: '', - signature: 'marginX?: unknown;', - }, - { - name: 'marginY', - summary: '', - signature: 'marginY?: unknown;', - }, - { - name: 'maxHeight', - summary: '', - signature: 'maxHeight?: unknown;', - }, - { - name: 'maxWidth', - summary: '', - signature: 'maxWidth?: unknown;', - }, - { - name: 'minHeight', - summary: '', - signature: 'minHeight?: unknown;', - }, - { - name: 'minWidth', + name: 'htmlFor', summary: '', - signature: 'minWidth?: unknown;', + signature: 'htmlFor?: string | undefined;', }, { - name: 'padding', + name: 'ref', summary: '', - signature: 'padding?: unknown;', + signature: 'ref?: Ref<HTMLLabelElement>;', }, + ], + }, + { + name: 'LabelOwnProps', + anchor: 'label-own-props', + signature: 'LabelOwnProps: {\n children?: unknown;\n}', + typeOnly: true, + summary: + 'Own props for Label, before merging with native element attributes.', + members: [ { - name: 'paddingX', + name: 'children', summary: '', - signature: 'paddingX?: unknown;', + signature: 'children?: unknown;', }, + ], + }, + { + name: 'LabelProps', + anchor: 'label-props', + signature: 'LabelProps: LabelLabelProps | LabelAsChildProps', + typeOnly: true, + summary: 'Props for Label.', + members: [ { - name: 'paddingY', + name: 'asChild', summary: '', - signature: 'paddingY?: unknown;', + signature: 'asChild?: boolean | undefined;', }, { - name: 'radius', + name: 'children', summary: '', - signature: 'radius?: unknown;', + signature: 'children?: unknown;', }, { name: 'ref', summary: '', - signature: 'ref?: unknown;', - }, - { - name: 'rowFrom', - summary: '', - signature: 'rowFrom?: unknown;', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLLabelElement | null) => void) | { current: HTMLLabelElement | null; } | null | undefined;', }, + ], + }, + ], + symbols95: [ + { + name: 'Menubar', + anchor: 'menubar', + signature: 'Menubar: (props: MenubarProps) => JSX.Element', + typeOnly: true, + summary: 'Renders a part of `menubar`.', + }, + { + name: 'MenubarContent', + anchor: 'menubar-content', + signature: + 'MenubarContent: { (props: MenubarContentProps): JSX.Element | null; (props: MenubarContentAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: 'Renders a part of `menubar`.', + }, + { + name: 'MenubarContentAsChildProps', + anchor: 'menubar-content-as-child-props', + signature: + 'MenubarContentAsChildProps: BoxAsChildProps & MenubarContentOwnProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Menubar Content.', + members: [ { - name: 'shadow', + name: 'align', summary: '', - signature: 'shadow?: unknown;', + signature: 'align?: OverlayAlign | undefined;', }, { - name: 'shrink', + name: 'asChild', summary: '', - signature: 'shrink?: unknown;', + signature: 'asChild: true;', }, { - name: 'sticky', + name: 'children', summary: '', - signature: 'sticky?: unknown;', + signature: 'children: JSXElement;', }, { - name: 'top', + name: 'forceMount', summary: '', - signature: 'top?: unknown;', + signature: 'forceMount?: boolean | undefined;', }, { - name: 'width', + name: 'ref', summary: '', - signature: 'width?: unknown;', + signature: 'ref?: Ref<Element>;', }, { - name: 'wrap', + name: 'side', summary: '', - signature: 'wrap?: unknown;', + signature: 'side?: OverlaySide | undefined;', }, { - name: 'zIndex', + name: 'sideOffset', summary: '', - signature: 'zIndex?: unknown;', + signature: 'sideOffset?: number | undefined;', }, ], }, { - name: 'Checkbox', - anchor: 'checkbox', + name: 'MenubarContentOwnProps', + anchor: 'menubar-content-own-props', signature: - 'Checkbox: { (props: CheckboxInputProps): JSX.Element; (props: CheckboxAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Headless Checkbox component\n\n## Responsibilities\n- Apply aria-checked for checkbox state signaling\n- Handle indeterminate state for native and asChild hosts\n- Support controlled and uncontrolled checked state\n- Forward props and refs to native input or child element\n- Preserve native checkbox semantics and apply checkbox behavior to asChild hosts\n\n## Non-Responsibilities\n- Form submission orchestration beyond native input props\n\n## Invariants\n- MUST NOT add role="button" (native inputs are role="checkbox")\n- checked state may be controlled or uncontrolled\n- indeterminate overrides checked for state signaling\n- For asChild, consumer MUST provide role="checkbox"\nRenders the `checkbox` part of `checkbox` with `role="checkbox"`.\n\nSupports polymorphic rendering via `asChild`.', - tags: { - example: [ - 'Native checkbox input\n```tsx\nconst checked = state(false);\n<Checkbox checked={checked()} onPress={() => checked.set(!checked())} />\n```', - 'Polymorphic rendering (asChild)\n```tsx\n<Checkbox asChild checked={agreed} onPress={toggleAgree}>\n<div role="checkbox">I agree to terms</div>\n</Checkbox>\n```', - 'Indeterminate state (partial selection)\n```tsx\n<Checkbox checked={someChecked} indeterminate={!allChecked && someChecked} onPress={toggleAll}>\nSelect All\n</Checkbox>\n```', - ], - }, - }, - { - name: 'Close', - anchor: 'close', - signature: 'Close: (props: CloseNativeProps) => JSX.Element', + 'MenubarContentOwnProps: {\n forceMount?: boolean;\n side?: OverlaySide;\n align?: OverlayAlign;\n sideOffset?: number;\n}', typeOnly: true, summary: - 'Renders a dismiss ("×") icon button, built on top of `Button`, defaulting to an icon-sized ghost variant with an accessible `label`.', - }, - { - name: 'CloseNativeProps', - anchor: 'close-native-props', - signature: 'CloseNativeProps: ButtonNativeProps & CloseOwnProps', - typeOnly: true, - summary: 'Props for the {@link Close } component.', + 'Own props for Menubar Content, before merging with native element attributes.', members: [ { - name: 'label', + name: 'align', summary: '', - signature: 'label?: string | undefined;', + signature: 'align?: OverlayAlign | undefined;', }, - ], - }, - { - name: 'CloseOwnProps', - anchor: 'close-own-props', - signature: 'CloseOwnProps: {\n label?: string;\n}', - typeOnly: true, - summary: - 'Props specific to {@link Close }, layered on top of {@link ButtonNativeProps}.', - members: [ { - name: 'label', + name: 'forceMount', summary: '', - signature: 'label?: string | undefined;', + signature: 'forceMount?: boolean | undefined;', + }, + { + name: 'side', + summary: '', + signature: 'side?: OverlaySide | undefined;', + }, + { + name: 'sideOffset', + summary: '', + signature: 'sideOffset?: number | undefined;', }, ], }, { - name: 'Cluster', - anchor: 'cluster', - signature: 'Cluster: (props: ClusterProps) => JSX.Element', - typeOnly: true, - summary: - 'Wrapping horizontal content flow for actions, tags, and compact controls.', - }, - { - name: 'ClusterProps', - anchor: 'cluster-props', + name: 'MenubarContentProps', + anchor: 'menubar-content-props', signature: - 'ClusterProps: WithoutOwnedLayout<BlockProps, "direction" | "rowFrom" | "wrap"> & {\n direction?: never;\n rowFrom?: never;\n wrap?: never;\n}', + "MenubarContentProps: BoxProps<'div', HTMLDivElement> & MenubarContentOwnProps", typeOnly: true, + summary: 'Props for Menubar Content.', members: [ { name: 'align', summary: '', - signature: 'align?: unknown;', + signature: 'align?: OverlayAlign | undefined;', }, { name: 'asChild', summary: '', - signature: 'asChild?: unknown;', - }, - { - name: 'background', - summary: '', - signature: 'background?: unknown;', - }, - { - name: 'border', - summary: '', - signature: 'border?: unknown;', + signature: 'asChild?: false | undefined;', }, { - name: 'borderBottom', + name: 'children', summary: '', - signature: 'borderBottom?: unknown;', + signature: 'children?: unknown;', }, { - name: 'borderRight', + name: 'forceMount', summary: '', - signature: 'borderRight?: unknown;', + signature: 'forceMount?: boolean | undefined;', }, { - name: 'borderTop', + name: 'ref', summary: '', - signature: 'borderTop?: unknown;', + signature: 'ref?: Ref<HTMLDivElement>;', }, { - name: 'center', + name: 'side', summary: '', - signature: 'center?: unknown;', + signature: 'side?: OverlaySide | undefined;', }, { - name: 'children', + name: 'sideOffset', summary: '', - signature: 'children?: unknown;', + signature: 'sideOffset?: number | undefined;', }, + ], + }, + { + name: 'MenubarGroup', + anchor: 'menubar-group', + signature: + 'MenubarGroup: (props: MenubarGroupProps | MenubarGroupAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `menubar-group` part of `menubar` with `role="group"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'MenubarGroupAsChildProps', + anchor: 'menubar-group-as-child-props', + signature: 'MenubarGroupAsChildProps: BoxAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Menubar Group.', + members: [ { - name: 'direction', + name: 'asChild', summary: '', - signature: 'direction?: undefined;', + signature: 'asChild: true;', }, { - name: 'gap', + name: 'children', summary: '', - signature: 'gap?: unknown;', + signature: 'children: JSXElement;', }, { - name: 'grow', + name: 'ref', summary: '', - signature: 'grow?: unknown;', + signature: 'ref?: Ref<Element>;', }, + ], + }, + { + name: 'MenubarGroupProps', + anchor: 'menubar-group-props', + signature: "MenubarGroupProps: BoxProps<'div', HTMLDivElement>", + typeOnly: true, + summary: 'Props for Menubar Group.', + members: [ { - name: 'height', + name: 'asChild', summary: '', - signature: 'height?: unknown;', + signature: 'asChild?: false | undefined;', }, { - name: 'hide', + name: 'children', summary: '', - signature: 'hide?: unknown;', + signature: 'children?: unknown;', }, { - name: 'justify', + name: 'ref', summary: '', - signature: 'justify?: unknown;', + signature: 'ref?: Ref<HTMLDivElement>;', }, + ], + }, + { + name: 'MenubarItem', + anchor: 'menubar-item', + signature: + 'MenubarItem: { (props: MenubarItemProps): JSX.Element | null; (props: MenubarItemAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders a part of `menubar`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'MenubarItemAsChildProps', + anchor: 'menubar-item-as-child-props', + signature: + 'MenubarItemAsChildProps: ButtonLikeAsChildProps & MenubarTextValueOwnProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Menubar Item.', + members: [ { - name: 'margin', + name: 'asChild', summary: '', - signature: 'margin?: unknown;', + signature: 'asChild: true;', }, { - name: 'marginX', + name: 'children', summary: '', - signature: 'marginX?: unknown;', + signature: 'children: JSXElement;', }, { - name: 'marginY', + name: 'disabled', summary: '', - signature: 'marginY?: unknown;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'maxHeight', + name: 'onPress', summary: '', - signature: 'maxHeight?: unknown;', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', }, { - name: 'maxWidth', + name: 'ref', summary: '', - signature: 'maxWidth?: unknown;', + signature: 'ref?: Ref<Element>;', }, { - name: 'minHeight', - summary: '', - signature: 'minHeight?: unknown;', + name: 'textValue', + summary: + 'Text used for typeahead when rendered children are not plain text.', + signature: 'textValue?: string | undefined;', }, { - name: 'minWidth', + name: 'type', summary: '', - signature: 'minWidth?: unknown;', + signature: 'type?: undefined;', }, + ], + }, + { + name: 'MenubarItemProps', + anchor: 'menubar-item-props', + signature: + "MenubarItemProps: ButtonLikeProps<'button', HTMLButtonElement> & MenubarTextValueOwnProps", + typeOnly: true, + summary: 'Props for Menubar Item.', + members: [ { - name: 'padding', + name: 'asChild', summary: '', - signature: 'padding?: unknown;', + signature: 'asChild?: false | undefined;', }, { - name: 'paddingX', + name: 'children', summary: '', - signature: 'paddingX?: unknown;', + signature: 'children?: unknown;', }, { - name: 'paddingY', + name: 'disabled', summary: '', - signature: 'paddingY?: unknown;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'radius', + name: 'onPress', summary: '', - signature: 'radius?: unknown;', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', }, { name: 'ref', summary: '', - signature: 'ref?: unknown;', + signature: 'ref?: Ref<HTMLButtonElement>;', }, { - name: 'rowFrom', - summary: '', - signature: 'rowFrom?: undefined;', + name: 'textValue', + summary: + 'Text used for typeahead when rendered children are not plain text.', + signature: 'textValue?: string | undefined;', }, { - name: 'shadow', + name: 'type', summary: '', - signature: 'shadow?: unknown;', + signature: 'type?: "button" | "submit" | "reset" | undefined;', }, + ], + }, + { + name: 'MenubarLabel', + anchor: 'menubar-label', + signature: + 'MenubarLabel: (props: MenubarLabelProps | MenubarLabelAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: + 'Renders the `menubar-label` part of `menubar`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'MenubarLabelAsChildProps', + anchor: 'menubar-label-as-child-props', + signature: 'MenubarLabelAsChildProps: BoxAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Menubar Label.', + members: [ { - name: 'shrink', + name: 'asChild', summary: '', - signature: 'shrink?: unknown;', + signature: 'asChild: true;', }, { - name: 'sticky', + name: 'children', summary: '', - signature: 'sticky?: unknown;', + signature: 'children: JSXElement;', }, { - name: 'top', + name: 'ref', summary: '', - signature: 'top?: unknown;', + signature: 'ref?: Ref<Element>;', }, + ], + }, + { + name: 'MenubarLabelProps', + anchor: 'menubar-label-props', + signature: "MenubarLabelProps: BoxProps<'div', HTMLDivElement>", + typeOnly: true, + summary: 'Props for Menubar Label.', + members: [ { - name: 'width', + name: 'asChild', summary: '', - signature: 'width?: unknown;', + signature: 'asChild?: false | undefined;', }, { - name: 'wrap', + name: 'children', summary: '', - signature: 'wrap?: undefined;', + signature: 'children?: unknown;', }, { - name: 'zIndex', + name: 'ref', summary: '', - signature: 'zIndex?: unknown;', + signature: 'ref?: Ref<HTMLDivElement>;', }, ], }, { - name: 'Collapsible', - anchor: 'collapsible', - signature: 'Collapsible: (props: CollapsibleProps) => JSX.Element', + name: 'MenubarMenu', + anchor: 'menubar-menu', + signature: 'MenubarMenu: (props: MenubarMenuProps) => JSX.Element', typeOnly: true, - summary: 'Renders a part of `collapsible`.', + summary: 'Renders a part of `menubar`.', }, { - name: 'CollapsibleContent', - anchor: 'collapsible-content', + name: 'MenubarMenuProps', + anchor: 'menubar-menu-props', signature: - 'CollapsibleContent: { (props: CollapsibleContentProps): JSX.Element | null; (props: CollapsibleContentAsChildProps): JSX.Element | null; }', + 'MenubarMenuProps: {\n children?: unknown;\n /** Stable and unique among sibling menus when menus are rendered dynamically. */\n value?: string;\n}', typeOnly: true, - summary: - 'Renders the `collapsible-content` part of `collapsible`.\n\nSupports polymorphic rendering via `asChild`.', + summary: 'Props for Menubar Menu.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'value', + summary: + 'Stable and unique among sibling menus when menus are rendered dynamically.', + signature: 'value?: string | undefined;', + }, + ], }, { - name: 'CollapsibleTrigger', - anchor: 'collapsible-trigger', + name: 'MenubarOwnProps', + anchor: 'menubar-own-props', signature: - 'CollapsibleTrigger: { (props: CollapsibleTriggerProps): JSX.Element; (props: CollapsibleTriggerAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `collapsible-trigger` part of `collapsible`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'Combobox', - anchor: 'combobox', - signature: 'Combobox: (props: CatalogComponentProps) => JSX.Element', + 'MenubarOwnProps: {\n /** Supports literal, nested, array-mapped, and `For`-rendered descendants. */\n children?: unknown;\n id?: string;\n loop?: boolean;\n}', typeOnly: true, summary: - 'Styling-only combobox anatomy; it does not own value, popup, filtering, focus, or ARIA state.', + 'Own props for Menubar, before merging with native element attributes.', + members: [ + { + name: 'children', + summary: + 'Supports literal, nested, array-mapped, and `For`-rendered descendants.', + signature: 'children?: unknown;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'loop', + summary: '', + signature: 'loop?: boolean | undefined;', + }, + ], }, { - name: 'ComboboxInput', - anchor: 'combobox-input', + name: 'MenubarPortal', + anchor: 'menubar-portal', signature: - 'ComboboxInput: (props: CatalogComponentProps<HTMLInputElement>) => JSX.Element', + 'MenubarPortal: (props: MenubarPortalProps) => JSX.Element | null', typeOnly: true, - summary: - 'Styling-only combobox input; consumers supplying behavior also own its complete ARIA contract.', + summary: 'Renders a part of `menubar`.', }, { - name: 'ComboboxList', - anchor: 'combobox-list', - signature: 'ComboboxList: (props: CatalogComponentProps) => JSX.Element', + name: 'MenubarPortalProps', + anchor: 'menubar-portal-props', + signature: 'MenubarPortalProps: {\n children?: unknown;\n}', typeOnly: true, - summary: - 'Renders the `combobox-list` part of the shadcn-compatible catalog primitives.', + summary: 'Props for Menubar Portal.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + ], }, { - name: 'ComboboxOption', - anchor: 'combobox-option', + name: 'MenubarProps', + anchor: 'menubar-props', signature: - 'ComboboxOption: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `combobox-option` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'Command', - anchor: 'command', - signature: 'Command: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Styling-only command anatomy; it does not own filtering, selection, focus, or keyboard commands.', - }, - { - name: 'CommandDialog', - anchor: 'command-dialog', - signature: 'CommandDialog: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `command-dialog` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'CommandEmpty', - anchor: 'command-empty', - signature: 'CommandEmpty: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `command-empty` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'CommandGroup', - anchor: 'command-group', - signature: 'CommandGroup: (props: CatalogComponentProps) => JSX.Element', + "MenubarProps: BoxProps<'div', HTMLDivElement> & MenubarOwnProps", typeOnly: true, - summary: - 'Renders the `command-group` part of the shadcn-compatible catalog primitives.', + summary: 'Props for Menubar.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: + 'Supports literal, nested, array-mapped, and `For`-rendered descendants.', + signature: 'children?: unknown;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'loop', + summary: '', + signature: 'loop?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], }, { - name: 'CommandGroupHeading', - anchor: 'command-group-heading', + name: 'MenubarSeparator', + anchor: 'menubar-separator', signature: - 'CommandGroupHeading: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `command-group-heading` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'CommandHeader', - anchor: 'command-header', - signature: 'CommandHeader: (props: CatalogComponentProps) => JSX.Element', + 'MenubarSeparator: (props: MenubarSeparatorProps | MenubarSeparatorAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', typeOnly: true, summary: - 'Renders the `command-header` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'CommandInput', - anchor: 'command-input', - signature: - 'CommandInput: (props: CatalogComponentProps<HTMLInputElement>) => JSX.Element', - typeOnly: true, - summary: "Renders the command palette's search `<input>`.", + 'Renders the `menubar-separator` part of `menubar` with `role="separator"`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'CommandItem', - anchor: 'command-item', - signature: - 'CommandItem: (props: CatalogComponentProps & { active?: boolean; disabled?: boolean; selected?: boolean; }) => JSX.Element', + name: 'MenubarSeparatorAsChildProps', + anchor: 'menubar-separator-as-child-props', + signature: 'MenubarSeparatorAsChildProps: BoxAsChildProps', typeOnly: true, summary: - 'Renders a selectable command list entry, exposing `active`/`disabled`/`selected` as ARIA and data attributes.', + 'Props for the `asChild` (polymorphic) rendering of Menubar Separator.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + ], }, { - name: 'CommandList', - anchor: 'command-list', - signature: 'CommandList: (props: CatalogComponentProps) => JSX.Element', + name: 'MenubarSeparatorProps', + anchor: 'menubar-separator-props', + signature: "MenubarSeparatorProps: BoxProps<'div', HTMLDivElement>", typeOnly: true, - summary: - 'Renders the `command-list` part of the shadcn-compatible catalog primitives.', + summary: 'Props for Menubar Separator.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], }, { - name: 'CommandPalette', - anchor: 'command-palette', - signature: 'CommandPalette: (props: CommandPaletteProps) => JSX.Element', + name: 'MenubarSub', + anchor: 'menubar-sub', + signature: 'MenubarSub: (props: MenubarSubProps) => JSX.Element', typeOnly: true, - summary: - 'Root dialog wrapper for a searchable command palette. Manages open state\n(controlled or uncontrolled), tracks the triggering element, and restores\nfocus to it after the palette closes.', + summary: 'Renders a part of `menubar`.', }, { - name: 'CommandPaletteContent', - anchor: 'command-palette-content', + name: 'MenubarSubContent', + anchor: 'menubar-sub-content', signature: - 'CommandPaletteContent: (props: CommandPaletteContentProps) => JSX.Element', + 'MenubarSubContent: { (props: MenubarSubContentProps): JSX.Element | null; (props: MenubarSubContentAsChildProps): JSX.Element | null; }', typeOnly: true, - summary: - 'Dialog content for a {@link CommandPalette}: renders the overlay, an\naccessible (visually hidden) title/description, and a `Command` list,\nmoving initial focus to `initialFocus` (defaults to the search input) once\nmounted, and optionally suppressing dismiss-on-escape/backdrop.', + summary: 'Renders a part of `menubar`.', }, { - name: 'CommandPaletteContentProps', - anchor: 'command-palette-content-props', + name: 'MenubarSubContentAsChildProps', + anchor: 'menubar-sub-content-as-child-props', signature: - 'CommandPaletteContentProps: Omit<DialogContentProps, "children" | "title" | "onEscapeKeyDown" | "onInteractOutside" | "onPointerDownOutside"> & {\n children?: unknown;\n title: string;\n description?: string;\n initialFocus?: string | (() => HTMLElement | null) | false;\n closeOnBackdrop?: boolean;\n closeOnEscape?: boolean;\n overlayProps?: DialogOverlayProps;\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n onInteractOutside?: (event: Event) => void;\n onPointerDownOutside?: (event: PointerEvent) => void;\n}', + 'MenubarSubContentAsChildProps: BoxAsChildProps & MenubarContentOwnProps', typeOnly: true, - summary: 'Props for the {@link CommandPaletteContent } component.', + summary: + 'Props for the `asChild` (polymorphic) rendering of Menubar Sub Content.', members: [ + { + name: 'align', + summary: '', + signature: 'align?: OverlayAlign | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, { name: 'children', summary: '', - signature: 'children?: unknown;', + signature: 'children: JSXElement;', + }, + { + name: 'forceMount', + summary: '', + signature: 'forceMount?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'side', + summary: '', + signature: 'side?: OverlaySide | undefined;', + }, + { + name: 'sideOffset', + summary: '', + signature: 'sideOffset?: number | undefined;', }, + ], + }, + { + name: 'MenubarSubContentProps', + anchor: 'menubar-sub-content-props', + signature: + "MenubarSubContentProps: BoxProps<'div', HTMLDivElement> & MenubarContentOwnProps", + typeOnly: true, + summary: 'Props for Menubar Sub Content.', + members: [ { - name: 'closeOnBackdrop', + name: 'align', summary: '', - signature: 'closeOnBackdrop?: boolean | undefined;', + signature: 'align?: OverlayAlign | undefined;', }, { - name: 'closeOnEscape', + name: 'asChild', summary: '', - signature: 'closeOnEscape?: boolean | undefined;', + signature: 'asChild?: false | undefined;', }, { - name: 'description', + name: 'children', summary: '', - signature: 'description?: string | undefined;', + signature: 'children?: unknown;', }, { - name: 'initialFocus', + name: 'forceMount', summary: '', - signature: - 'initialFocus?: string | false | (() => HTMLElement | null) | undefined;', + signature: 'forceMount?: boolean | undefined;', }, { - name: 'onEscapeKeyDown', + name: 'ref', summary: '', - signature: - 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', + signature: 'ref?: Ref<HTMLDivElement>;', }, { - name: 'onInteractOutside', + name: 'side', summary: '', - signature: - 'onInteractOutside?: ((event: Event) => void) | undefined;', + signature: 'side?: OverlaySide | undefined;', }, { - name: 'onPointerDownOutside', + name: 'sideOffset', summary: '', - signature: - 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', + signature: 'sideOffset?: number | undefined;', }, + ], + }, + { + name: 'MenubarSubProps', + anchor: 'menubar-sub-props', + signature: + 'MenubarSubProps: {\n children?: unknown;\n value?: string;\n}', + typeOnly: true, + summary: 'Props for Menubar Sub.', + members: [ { - name: 'overlayProps', + name: 'children', summary: '', - signature: 'overlayProps?: DialogOverlayProps | undefined;', + signature: 'children?: unknown;', }, { - name: 'title', + name: 'value', summary: '', - signature: 'title: string;', + signature: 'value?: string | undefined;', }, ], }, { - name: 'CommandPaletteLink', - anchor: 'command-palette-link', + name: 'MenubarSubTrigger', + anchor: 'menubar-sub-trigger', signature: - 'CommandPaletteLink: (props: CommandPaletteLinkProps) => JSX.Element', + 'MenubarSubTrigger: { (props: MenubarSubTriggerProps): JSX.Element | null; (props: MenubarSubTriggerAsChildProps): JSX.Element | null; }', typeOnly: true, summary: - 'A navigable result row that closes the palette on selection (unless `closeOnSelect` is `false`) and supports cancelling navigation via `onBeforeNavigate`.', + 'Renders a part of `menubar`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'CommandPaletteLinkProps', - anchor: 'command-palette-link-props', + name: 'MenubarSubTriggerAsChildProps', + anchor: 'menubar-sub-trigger-as-child-props', signature: - 'CommandPaletteLinkProps: LinkProps & {\n closeOnSelect?: boolean;\n onBeforeNavigate?: (event: Event) => void;\n}', + 'MenubarSubTriggerAsChildProps: ButtonLikeAsChildProps & MenubarTextValueOwnProps', typeOnly: true, - summary: 'Props for the {@link CommandPaletteLink } component.', + summary: + 'Props for the `asChild` (polymorphic) rendering of Menubar Sub Trigger.', members: [ { - name: 'closeOnSelect', + name: 'asChild', summary: '', - signature: 'closeOnSelect?: boolean | undefined;', + signature: 'asChild: true;', }, { - name: 'onBeforeNavigate', + name: 'children', summary: '', - signature: 'onBeforeNavigate?: ((event: Event) => void) | undefined;', + signature: 'children: JSXElement;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'textValue', + summary: + 'Text used for typeahead when rendered children are not plain text.', + signature: 'textValue?: string | undefined;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', }, ], }, { - name: 'CommandPaletteList', - anchor: 'command-palette-list', - signature: - 'CommandPaletteList: (props: CommandPaletteListProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `<ul>` list wrapper for {@link CommandPalette} results.', - }, - { - name: 'CommandPaletteListProps', - anchor: 'command-palette-list-props', + name: 'MenubarSubTriggerProps', + anchor: 'menubar-sub-trigger-props', signature: - 'CommandPaletteListProps: Omit<JSX.IntrinsicElements["ul"], "children" | "ref"> & {\n children?: unknown;\n ref?: Ref<HTMLUListElement>;\n}', + "MenubarSubTriggerProps: ButtonLikeProps<'button', HTMLButtonElement> & MenubarTextValueOwnProps", typeOnly: true, - summary: 'Props for the {@link CommandPaletteList } component.', + summary: 'Props for Menubar Sub Trigger.', members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, { name: 'children', summary: '', signature: 'children?: unknown;', }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLUListElement>;', + signature: 'ref?: Ref<HTMLButtonElement>;', }, - ], - }, - { - name: 'CommandPaletteProps', - anchor: 'command-palette-props', - signature: 'CommandPaletteProps: DialogProps', - typeOnly: true, - summary: 'Props for the {@link CommandPalette } component.', - }, - { - name: 'CommandPaletteTrigger', - anchor: 'command-palette-trigger', - signature: - 'CommandPaletteTrigger: { (props: CommandPaletteTriggerProps): JSX.Element; (props: CommandPaletteTriggerAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Trigger that opens the {@link CommandPalette}, registering itself so focus returns here on close.', - }, - { - name: 'CommandPaletteTriggerAsChildProps', - anchor: 'command-palette-trigger-as-child-props', - signature: 'CommandPaletteTriggerAsChildProps: DialogTriggerAsChildProps', - typeOnly: true, - summary: - 'Props for {@link CommandPaletteTrigger } rendered with `asChild`.', - }, - { - name: 'CommandPaletteTriggerProps', - anchor: 'command-palette-trigger-props', - signature: 'CommandPaletteTriggerProps: DialogTriggerProps', - typeOnly: true, - summary: 'Props for the {@link CommandPaletteTrigger } component.', - }, - { - name: 'CommandSeparator', - anchor: 'command-separator', - signature: - 'CommandSeparator: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `command-separator` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'CommandShortcut', - anchor: 'command-shortcut', - signature: - 'CommandShortcut: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `command-shortcut` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'Container', - anchor: 'container', - signature: 'Container: (props: ContainerProps) => JSX.Element', - typeOnly: true, - summary: - 'Centers content in a max-width column with page gutters (defaults to the `"page"` {@link BlockSize }).', - }, - { - name: 'ContainerProps', - anchor: 'container-props', - signature: - 'ContainerProps: Omit<BlockDivProps, "maxWidth"> & {\n size?: BlockSize;\n}', - typeOnly: true, - summary: 'Props for the {@link Container } component.', - members: [ { - name: 'size', + name: 'textValue', + summary: + 'Text used for typeahead when rendered children are not plain text.', + signature: 'textValue?: string | undefined;', + }, + { + name: 'type', summary: '', - signature: 'size?: BlockSize | undefined;', + signature: 'type?: "button" | "submit" | "reset" | undefined;', }, ], }, { - name: 'ContextMenu', - anchor: 'context-menu', - signature: 'Dropdown: (props: DropdownProps) => JSX.Element', - typeOnly: true, - summary: 'Renders a part of `dropdown`.', - }, - { - name: 'ContextMenuContent', - anchor: 'context-menu-content', - signature: - 'DropdownContent$1: { (props: DropdownContentProps): JSX.Element | null; (props: DropdownContentAsChildProps): JSX.Element | null; }', - typeOnly: true, - summary: - "Dropdown/context-menu content wrapper around `@askrjs/ui`'s `DropdownContent`.\nNon-`asChild` usage lazily evaluates `children` inside a body component so\nthey're only rendered once the dropdown is actually open.", - }, - { - name: 'ContextMenuGroup', - anchor: 'context-menu-group', - signature: - 'DropdownGroup: (props: DropdownGroupProps | DropdownGroupAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', - typeOnly: true, - summary: - 'Renders the `dropdown-group` part of `dropdown` with `role="group"`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'ContextMenuItem', - anchor: 'context-menu-item', - signature: - 'DropdownItem: { (props: DropdownItemProps): JSX.Element | null; (props: DropdownItemAsChildProps): JSX.Element | null; }', - typeOnly: true, - summary: - 'Renders a part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'ContextMenuLabel', - anchor: 'context-menu-label', - signature: - 'DropdownLabel: (props: DropdownLabelProps | DropdownLabelAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', - typeOnly: true, - summary: - 'Renders the `dropdown-label` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'ContextMenuPortal', - anchor: 'context-menu-portal', - signature: - 'DropdownPortal: (props: DropdownPortalProps) => JSX.Element | null', - typeOnly: true, - summary: 'Renders a part of `dropdown`.', - }, - { - name: 'ContextMenuSeparator', - anchor: 'context-menu-separator', + name: 'MenubarTrigger', + anchor: 'menubar-trigger', signature: - 'DropdownSeparator: (props: DropdownSeparatorProps | DropdownSeparatorAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + 'MenubarTrigger: { (props: MenubarTriggerProps): JSX.Element | null; (props: MenubarTriggerAsChildProps): JSX.Element | null; }', typeOnly: true, summary: - 'Renders the `dropdown-separator` part of `dropdown` with `role="separator"`.\n\nSupports polymorphic rendering via `asChild`.', + 'Renders a part of `menubar`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'ContextMenuTrigger', - anchor: 'context-menu-trigger', + name: 'MenubarTriggerAsChildProps', + anchor: 'menubar-trigger-as-child-props', signature: - 'DropdownTrigger: { (props: DropdownTriggerProps): JSX.Element | null; (props: DropdownTriggerAsChildProps): JSX.Element | null; }', - typeOnly: true, - summary: - 'Renders the `dropdown-trigger` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'CopyButton', - anchor: 'copy-button', - signature: 'CopyButton: (props: CopyButtonProps) => JSX.Element', + 'MenubarTriggerAsChildProps: ButtonLikeAsChildProps & MenubarTextValueOwnProps', typeOnly: true, summary: - 'Copies text with visual and assistive success/failure feedback.', - }, - { - name: 'CopyButtonProps', - anchor: 'copy-button-props', - signature: - 'CopyButtonProps: Omit<ButtonNativeProps, "children" | "onPress"> & {\n text: string;\n label: string;\n successMessage?: string;\n failureMessage?: string;\n resetAfter?: number;\n}', - typeOnly: true, + 'Props for the `asChild` (polymorphic) rendering of Menubar Trigger.', members: [ { - name: 'failureMessage', + name: 'asChild', summary: '', - signature: 'failureMessage?: string | undefined;', + signature: 'asChild: true;', }, { - name: 'label', + name: 'children', summary: '', - signature: 'label: string;', + signature: 'children: JSXElement;', }, { - name: 'resetAfter', + name: 'disabled', summary: '', - signature: 'resetAfter?: number | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'successMessage', + name: 'onPress', summary: '', - signature: 'successMessage?: string | undefined;', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', }, { - name: 'text', + name: 'ref', summary: '', - signature: 'text: string;', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'textValue', + summary: + 'Text used for typeahead when rendered children are not plain text.', + signature: 'textValue?: string | undefined;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', }, ], }, { - name: 'DataTable', - anchor: 'data-table', - signature: 'DataTable: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Styling-only container for the `data-table` catalog slot. It does not sort, filter, select, or paginate data.\nCompose semantic `Table`/`VirtualTable` primitives with application-owned data state for those behaviors.', - }, - { - name: 'DatePicker', - anchor: 'date-picker', - signature: 'DatePicker: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Styling-only `date-picker` container. It does not implement a popup calendar, formatting, or\ncalendar-grid keyboard behavior; pair it with {@link DatePickerInput} for a native date input.', - }, - { - name: 'DatePickerInput', - anchor: 'date-picker-input', - signature: - 'DatePickerInput: (props: CatalogComponentProps<HTMLInputElement>) => JSX.Element', - typeOnly: true, - summary: - 'Native `<input type="date">` styling slot; browser behavior and localization remain native.', - }, - { - name: 'DebouncedInput', - anchor: 'debounced-input', - signature: 'DebouncedInput: (props: DebouncedInputProps) => JSX.Element', - typeOnly: true, - summary: - 'DebouncedInput is a convenience wrapper around Input that emits a settled\nvalue for search and filter surfaces.\n\nThe debounced emitter is created once per mount and replaced only when\n`debounceMs` changes. A pending value is re-timed with the new delay (or\nemitted at once when the delay drops to zero), is delivered to the latest\n`onDebouncedInput`, is dropped when `onDebouncedInput` is removed, and is\ncancelled on unmount.', - }, - { - name: 'DEFAULT_THEME_OPTIONS', - anchor: 'default-theme-options', - signature: 'DEFAULT_THEME_OPTIONS: readonly ThemeOption[]', - typeOnly: true, - summary: - 'Default light/dark/system theme options used by {@link ThemeScope} and {@link ThemePicker}.', - }, - { - name: 'Dialog', - anchor: 'dialog', - signature: 'Dialog: (props: DialogProps) => JSX.Element', - typeOnly: true, - summary: 'Coordinates the Dialog trigger, portal, overlay, and content.', - tags: { - example: [ - '```tsx\n<Dialog>\n <DialogTrigger>Open dialog</DialogTrigger>\n <DialogPortal>\n <DialogOverlay />\n <DialogContent>Confirm action</DialogContent>\n </DialogPortal>\n</Dialog>\n```', - ], - }, - }, - { - name: 'DialogClose', - anchor: 'dialog-close', - signature: - 'DialogClose: { (props: DialogCloseProps): JSX.Element; (props: DialogCloseAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `dialog-close` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'DialogContent', - anchor: 'dialog-content', - signature: - 'DialogContent: { (props: DialogContentProps): JSX.Element | null; (props: DialogContentAsChildProps): JSX.Element | null; }', - typeOnly: true, - summary: - 'Renders the `dialog-content` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'DialogDescription', - anchor: 'dialog-description', - signature: - 'DialogDescription: { (props: DialogDescriptionProps): JSX.Element; (props: DialogDescriptionAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `dialog-description` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'DialogOverlay', - anchor: 'dialog-overlay', - signature: - 'DialogOverlay: { (props: DialogOverlayProps): JSX.Element | null; (props: DialogOverlayAsChildProps): JSX.Element | null; }', - typeOnly: true, - summary: - 'Renders the `dialog-overlay` part of `dialog`.\n\nWith `@askrjs/themes/default`, the overlay is fully styled out of the box\nwith the shared backdrop token, blur, stacking, and fade animation. Standard\nDialog and AlertDialog usage requires no additional overlay CSS; customize\nthe theme tokens instead of applying a competing background class.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'DialogPortal', - anchor: 'dialog-portal', + name: 'MenubarTriggerProps', + anchor: 'menubar-trigger-props', signature: - 'DialogPortal: (props: DialogPortalProps) => JSX.Element | null', - typeOnly: true, - summary: 'Renders a part of `dialog`.', - }, - { - name: 'DialogProps', - anchor: 'dialog-props', - signature: 'DialogProps: DialogOwnProps', + "MenubarTriggerProps: ButtonLikeProps<'button', HTMLButtonElement> & MenubarTextValueOwnProps", typeOnly: true, - summary: 'Props for Dialog.', + summary: 'Props for Menubar Trigger.', members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, { name: 'children', summary: '', signature: 'children?: unknown;', }, { - name: 'defaultOpen', + name: 'disabled', summary: '', - signature: 'defaultOpen?: boolean | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'id', + name: 'onPress', summary: '', - signature: 'id?: string | undefined;', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', }, { - name: 'modal', + name: 'ref', summary: '', - signature: 'modal?: boolean | undefined;', + signature: 'ref?: Ref<HTMLButtonElement>;', }, { - name: 'onOpenChange', - summary: '', - signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', + name: 'textValue', + summary: + 'Text used for typeahead when rendered children are not plain text.', + signature: 'textValue?: string | undefined;', }, { - name: 'open', + name: 'type', summary: '', - signature: 'open?: boolean | undefined;', + signature: 'type?: "button" | "submit" | "reset" | undefined;', }, ], }, + ], + symbols96: [ { - name: 'DialogTitle', - anchor: 'dialog-title', + name: 'NativeSelect', + anchor: 'native-select', signature: - 'DialogTitle: { (props: DialogTitleProps): JSX.Element; (props: DialogTitleAsChildProps): JSX.Element; }', + 'NativeSelect: (props: CatalogComponentProps<HTMLSelectElement>) => JSX.Element', + typeOnly: true, + summary: 'Renders a styled native `<select>` element.', + }, + ], + symbols97: [ + { + name: 'NavigationMenu', + anchor: 'navigation-menu', + signature: + 'NavigationMenu: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `dialog-title` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + 'Styling-only navigation-menu anatomy; it does not own disclosure, roving focus, or keyboard behavior.', }, { - name: 'DialogTrigger', - anchor: 'dialog-trigger', + name: 'NavigationMenuContent', + anchor: 'navigation-menu-content', signature: - 'DialogTrigger: { (props: DialogTriggerProps): JSX.Element; (props: DialogTriggerAsChildProps): JSX.Element; }', + 'NavigationMenuContent: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `dialog-trigger` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + 'Renders the `navigation-menu-content` part of the shadcn-compatible catalog primitives.', }, { - name: 'Direction', - anchor: 'direction', + name: 'NavigationMenuIndicator', + anchor: 'navigation-menu-indicator', signature: - 'Direction: (props: CatalogComponentProps & { dir?: "ltr" | "rtl"; }) => JSX.Element', + 'NavigationMenuIndicator: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Sets the `dir` attribute (defaulting to `"ltr"`) on its wrapping element for RTL/LTR scoping.', + 'Renders the `navigation-menu-indicator` part of the shadcn-compatible catalog primitives.', }, { - name: 'Drawer', - anchor: 'drawer', - signature: 'Dialog: (props: DialogProps) => JSX.Element', + name: 'NavigationMenuItem', + anchor: 'navigation-menu-item', + signature: + 'NavigationMenuItem: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, - summary: 'Coordinates the Dialog trigger, portal, overlay, and content.', - tags: { - example: [ - '```tsx\n<Dialog>\n <DialogTrigger>Open dialog</DialogTrigger>\n <DialogPortal>\n <DialogOverlay />\n <DialogContent>Confirm action</DialogContent>\n </DialogPortal>\n</Dialog>\n```', - ], - }, + summary: + 'Renders the `navigation-menu-item` part of the shadcn-compatible catalog primitives.', + }, + { + name: 'NavigationMenuLink', + anchor: 'navigation-menu-link', + signature: + 'NavigationMenuLink: (props: CatalogComponentProps) => JSX.Element', + typeOnly: true, + summary: + 'Renders the `navigation-menu-link` part of the shadcn-compatible catalog primitives.', }, { - name: 'DrawerClose', - anchor: 'drawer-close', + name: 'NavigationMenuList', + anchor: 'navigation-menu-list', signature: - 'DialogClose: { (props: DialogCloseProps): JSX.Element; (props: DialogCloseAsChildProps): JSX.Element; }', + 'NavigationMenuList: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `dialog-close` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + 'Renders the `navigation-menu-list` part of the shadcn-compatible catalog primitives.', }, { - name: 'DrawerContent', - anchor: 'drawer-content', + name: 'NavigationMenuTrigger', + anchor: 'navigation-menu-trigger', signature: - 'DialogContent: { (props: DialogContentProps): JSX.Element | null; (props: DialogContentAsChildProps): JSX.Element | null; }', + 'NavigationMenuTrigger: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', typeOnly: true, summary: - 'Renders the `dialog-content` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + 'Renders the `navigation-menu-content` part of the shadcn-compatible catalog primitives.', }, { - name: 'DrawerDescription', - anchor: 'drawer-description', + name: 'NavigationMenuViewport', + anchor: 'navigation-menu-viewport', signature: - 'DialogDescription: { (props: DialogDescriptionProps): JSX.Element; (props: DialogDescriptionAsChildProps): JSX.Element; }', + 'NavigationMenuViewport: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `dialog-description` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + 'Renders the `navigation-menu-viewport` part of the shadcn-compatible catalog primitives.', }, + ], + symbols98: [ { - name: 'DrawerOverlay', - anchor: 'drawer-overlay', - signature: - 'DialogOverlay: { (props: DialogOverlayProps): JSX.Element | null; (props: DialogOverlayAsChildProps): JSX.Element | null; }', + name: 'PageHeader', + anchor: 'page-header', + signature: 'PageHeader: (props: PageHeaderProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `dialog-overlay` part of `dialog`.\n\nWith `@askrjs/themes/default`, the overlay is fully styled out of the box\nwith the shared backdrop token, blur, stacking, and fade animation. Standard\nDialog and AlertDialog usage requires no additional overlay CSS; customize\nthe theme tokens instead of applying a competing background class.\n\nSupports polymorphic rendering via `asChild`.', + 'Page-level header with a title, optional description, and an actions row that wraps to a new line on small screens.', }, { - name: 'DrawerPortal', - anchor: 'drawer-portal', + name: 'PageHeaderProps', + anchor: 'page-header-props', signature: - 'DialogPortal: (props: DialogPortalProps) => JSX.Element | null', + 'PageHeaderProps: Omit<BlockDivProps, "direction" | "rowFrom"> & {\n title: unknown;\n description?: unknown;\n actions?: unknown;\n direction?: never;\n rowFrom?: never;\n}', typeOnly: true, - summary: 'Renders a part of `dialog`.', + summary: 'Props for the {@link PageHeader } component.', + members: [ + { + name: 'actions', + summary: '', + signature: 'actions?: unknown;', + }, + { + name: 'description', + summary: '', + signature: 'description?: unknown;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: undefined;', + }, + { + name: 'rowFrom', + summary: '', + signature: 'rowFrom?: undefined;', + }, + { + name: 'title', + summary: '', + signature: 'title: unknown;', + }, + ], }, + ], + symbols99: [ { - name: 'DrawerTitle', - anchor: 'drawer-title', - signature: - 'DialogTitle: { (props: DialogTitleProps): JSX.Element; (props: DialogTitleAsChildProps): JSX.Element; }', + name: 'Page', + anchor: 'page', + signature: 'Page: (props: PageProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `dialog-title` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + 'Top-level page wrapper: a growing `<main>` containing a {@link Container } with vertical page padding and content spacing.', }, { - name: 'DrawerTrigger', - anchor: 'drawer-trigger', - signature: - 'DialogTrigger: { (props: DialogTriggerProps): JSX.Element; (props: DialogTriggerAsChildProps): JSX.Element; }', + name: 'PageProps', + anchor: 'page-props', + signature: 'PageProps: MainProps', typeOnly: true, - summary: - 'Renders the `dialog-trigger` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + summary: 'Props for the {@link Page } component.', }, + ], + symbols100: [ { - name: 'Dropdown', - anchor: 'dropdown', - signature: 'Dropdown: (props: DropdownProps) => JSX.Element', + name: 'Pagination', + anchor: 'pagination', + signature: 'Pagination: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, - summary: 'Renders a part of `dropdown`.', + summary: + 'Renders the `pagination` part of the shadcn-compatible catalog primitives.', }, { - name: 'DropdownContent', - anchor: 'dropdown-content', + name: 'PaginationContent', + anchor: 'pagination-content', signature: - 'DropdownContent$1: { (props: DropdownContentProps): JSX.Element | null; (props: DropdownContentAsChildProps): JSX.Element | null; }', + 'PaginationContent: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - "Dropdown/context-menu content wrapper around `@askrjs/ui`'s `DropdownContent`.\nNon-`asChild` usage lazily evaluates `children` inside a body component so\nthey're only rendered once the dropdown is actually open.", + 'Renders the `pagination-content` part of the shadcn-compatible catalog primitives.', }, { - name: 'DropdownGroup', - anchor: 'dropdown-group', + name: 'PaginationEllipsis', + anchor: 'pagination-ellipsis', signature: - 'DropdownGroup: (props: DropdownGroupProps | DropdownGroupAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + 'PaginationEllipsis: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `dropdown-group` part of `dropdown` with `role="group"`.\n\nSupports polymorphic rendering via `asChild`.', + 'Renders a non-interactive ellipsis marker between pagination links.', }, { - name: 'DropdownItem', - anchor: 'dropdown-item', + name: 'PaginationItem', + anchor: 'pagination-item', signature: - 'DropdownItem: { (props: DropdownItemProps): JSX.Element | null; (props: DropdownItemAsChildProps): JSX.Element | null; }', + 'PaginationItem: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Renders a part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + 'Renders the `pagination-item` part of the shadcn-compatible catalog primitives.', }, { - name: 'DropdownItemVariant', - anchor: 'dropdown-item-variant', - signature: "DropdownItemVariant: 'default' | 'destructive'", + name: 'PaginationLink', + anchor: 'pagination-link', + signature: + 'PaginationLink: (props: CatalogComponentProps & { active?: boolean; }) => JSX.Element', typeOnly: true, - summary: 'Dropdown Item Variant.', + summary: + 'Renders a pagination page link, marking it `aria-current="page"` when `active`.', }, { - name: 'DropdownLabel', - anchor: 'dropdown-label', + name: 'PaginationNext', + anchor: 'pagination-next', signature: - 'DropdownLabel: (props: DropdownLabelProps | DropdownLabelAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + 'PaginationNext: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, - summary: - 'Renders the `dropdown-label` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + summary: 'Pagination link that moves to the next page.', }, { - name: 'DropdownMenu', - anchor: 'dropdown-menu', - signature: 'Dropdown: (props: DropdownProps) => JSX.Element', + name: 'PaginationPrevious', + anchor: 'pagination-previous', + signature: + 'PaginationPrevious: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, - summary: 'Renders a part of `dropdown`.', + summary: 'Pagination link that moves to the previous page.', }, + ], + symbols101: [ { - name: 'DropdownMenuContent', - anchor: 'dropdown-menu-content', + name: 'Popover', + anchor: 'popover', signature: - 'DropdownContent$1: { (props: DropdownContentProps): JSX.Element | null; (props: DropdownContentAsChildProps): JSX.Element | null; }', + 'Popover: (props: PopoverProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', typeOnly: true, - summary: - "Dropdown/context-menu content wrapper around `@askrjs/ui`'s `DropdownContent`.\nNon-`asChild` usage lazily evaluates `children` inside a body component so\nthey're only rendered once the dropdown is actually open.", + summary: 'Renders a part of `popover`.', }, { - name: 'DropdownMenuGroup', - anchor: 'dropdown-menu-group', + name: 'PopoverClose', + anchor: 'popover-close', signature: - 'DropdownGroup: (props: DropdownGroupProps | DropdownGroupAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + 'PopoverClose: { (props: PopoverCloseProps): JSX.Element; (props: PopoverCloseAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'Renders the `dropdown-group` part of `dropdown` with `role="group"`.\n\nSupports polymorphic rendering via `asChild`.', + 'Renders the `popover-close` part of `popover`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'DropdownMenuItem', - anchor: 'dropdown-menu-item', - signature: - 'DropdownItem: { (props: DropdownItemProps): JSX.Element | null; (props: DropdownItemAsChildProps): JSX.Element | null; }', + name: 'PopoverCloseAsChildProps', + anchor: 'popover-close-as-child-props', + signature: 'PopoverCloseAsChildProps: ButtonLikeAsChildProps', typeOnly: true, summary: - 'Renders a part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + 'Props for the `asChild` (polymorphic) rendering of Popover Close.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', + }, + ], }, { - name: 'DropdownMenuLabel', - anchor: 'dropdown-menu-label', + name: 'PopoverCloseProps', + anchor: 'popover-close-props', signature: - 'DropdownLabel: (props: DropdownLabelProps | DropdownLabelAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + "PopoverCloseProps: ButtonLikeProps<'button', HTMLButtonElement>", typeOnly: true, - summary: - 'Renders the `dropdown-label` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + summary: 'Props for Popover Close.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', + }, + ], }, { - name: 'DropdownMenuPortal', - anchor: 'dropdown-menu-portal', + name: 'PopoverContent', + anchor: 'popover-content', signature: - 'DropdownPortal: (props: DropdownPortalProps) => JSX.Element | null', + 'PopoverContent: { (props: PopoverContentProps): JSX.Element | null; (props: PopoverContentAsChildProps): JSX.Element | null; }', typeOnly: true, - summary: 'Renders a part of `dropdown`.', + summary: + 'Renders the `popover-content` part of `popover` with `role="dialog"`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'DropdownMenuSeparator', - anchor: 'dropdown-menu-separator', + name: 'PopoverContentAsChildProps', + anchor: 'popover-content-as-child-props', signature: - 'DropdownSeparator: (props: DropdownSeparatorProps | DropdownSeparatorAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + 'PopoverContentAsChildProps: BoxAsChildProps & PopoverContentOwnProps', typeOnly: true, summary: - 'Renders the `dropdown-separator` part of `dropdown` with `role="separator"`.\n\nSupports polymorphic rendering via `asChild`.', + 'Props for the `asChild` (polymorphic) rendering of Popover Content.', + members: [ + { + name: 'align', + summary: '', + signature: 'align?: OverlayAlign | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'forceMount', + summary: '', + signature: 'forceMount?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'side', + summary: '', + signature: 'side?: OverlaySide | undefined;', + }, + { + name: 'sideOffset', + summary: '', + signature: 'sideOffset?: number | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: PopoverContentWidth | undefined;', + }, + ], }, { - name: 'DropdownMenuTrigger', - anchor: 'dropdown-menu-trigger', + name: 'PopoverContentOwnProps', + anchor: 'popover-content-own-props', signature: - 'DropdownTrigger: { (props: DropdownTriggerProps): JSX.Element | null; (props: DropdownTriggerAsChildProps): JSX.Element | null; }', + 'PopoverContentOwnProps: {\n forceMount?: boolean;\n side?: OverlaySide;\n align?: OverlayAlign;\n sideOffset?: number;\n width?: PopoverContentWidth;\n}', typeOnly: true, summary: - 'Renders the `dropdown-trigger` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + 'Own props for Popover Content, before merging with native element attributes.', + members: [ + { + name: 'align', + summary: '', + signature: 'align?: OverlayAlign | undefined;', + }, + { + name: 'forceMount', + summary: '', + signature: 'forceMount?: boolean | undefined;', + }, + { + name: 'side', + summary: '', + signature: 'side?: OverlaySide | undefined;', + }, + { + name: 'sideOffset', + summary: '', + signature: 'sideOffset?: number | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: PopoverContentWidth | undefined;', + }, + ], }, { - name: 'DropdownPortal', - anchor: 'dropdown-portal', + name: 'PopoverContentProps', + anchor: 'popover-content-props', signature: - 'DropdownPortal: (props: DropdownPortalProps) => JSX.Element | null', + "PopoverContentProps: BoxProps<'div', HTMLDivElement> & PopoverContentOwnProps", typeOnly: true, - summary: 'Renders a part of `dropdown`.', + summary: 'Props for Popover Content.', + members: [ + { + name: 'align', + summary: '', + signature: 'align?: OverlayAlign | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'forceMount', + summary: '', + signature: 'forceMount?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + { + name: 'side', + summary: '', + signature: 'side?: OverlaySide | undefined;', + }, + { + name: 'sideOffset', + summary: '', + signature: 'sideOffset?: number | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: PopoverContentWidth | undefined;', + }, + ], }, { - name: 'DropdownSeparator', - anchor: 'dropdown-separator', + name: 'PopoverContentWidth', + anchor: 'popover-content-width', + signature: "PopoverContentWidth: 'sm' | 'md' | 'lg'", + typeOnly: true, + summary: 'Popover Content Width.', + }, + { + name: 'PopoverOwnProps', + anchor: 'popover-own-props', signature: - 'DropdownSeparator: (props: DropdownSeparatorProps | DropdownSeparatorAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + 'PopoverOwnProps: {\n children?: unknown;\n id?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}', typeOnly: true, summary: - 'Renders the `dropdown-separator` part of `dropdown` with `role="separator"`.\n\nSupports polymorphic rendering via `asChild`.', + 'Own props for Popover, before merging with native element attributes.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'defaultOpen', + summary: '', + signature: 'defaultOpen?: boolean | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'onOpenChange', + summary: '', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', + }, + { + name: 'open', + summary: '', + signature: 'open?: boolean | undefined;', + }, + ], }, { - name: 'DropdownTrigger', - anchor: 'dropdown-trigger', + name: 'PopoverPortal', + anchor: 'popover-portal', signature: - 'DropdownTrigger: { (props: DropdownTriggerProps): JSX.Element | null; (props: DropdownTriggerAsChildProps): JSX.Element | null; }', + 'PopoverPortal: (props: PopoverPortalProps) => JSX.Element | null', typeOnly: true, - summary: - 'Renders the `dropdown-trigger` part of `dropdown`.\n\nSupports polymorphic rendering via `asChild`.', + summary: 'Renders a part of `popover`.', }, { - name: 'DropdownTriggerSize', - anchor: 'dropdown-trigger-size', - signature: "DropdownTriggerSize: 'md' | 'icon'", + name: 'PopoverPortalProps', + anchor: 'popover-portal-props', + signature: 'PopoverPortalProps: {\n children?: unknown;\n}', typeOnly: true, - summary: 'Dropdown Trigger Size.', + summary: 'Props for Popover Portal.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + ], }, { - name: 'DropdownTriggerVariant', - anchor: 'dropdown-trigger-variant', - signature: "DropdownTriggerVariant: 'default' | 'ghost'", + name: 'PopoverProps', + anchor: 'popover-props', + signature: 'PopoverProps: PopoverOwnProps', typeOnly: true, - summary: 'Dropdown Trigger Variant.', + summary: 'Props for Popover.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'defaultOpen', + summary: '', + signature: 'defaultOpen?: boolean | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'onOpenChange', + summary: '', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', + }, + { + name: 'open', + summary: '', + signature: 'open?: boolean | undefined;', + }, + ], }, { - name: 'Empty', - anchor: 'empty', - signature: 'Empty: (props: CatalogComponentProps) => JSX.Element', + name: 'PopoverTrigger', + anchor: 'popover-trigger', + signature: + 'PopoverTrigger: { (props: PopoverTriggerProps): JSX.Element; (props: PopoverTriggerAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'Renders the `empty` part of the shadcn-compatible catalog primitives.', + 'Renders the `popover-trigger` part of `popover`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'EmptyContent', - anchor: 'empty-content', - signature: 'EmptyContent: (props: CatalogComponentProps) => JSX.Element', + name: 'PopoverTriggerAsChildProps', + anchor: 'popover-trigger-as-child-props', + signature: 'PopoverTriggerAsChildProps: ButtonLikeAsChildProps', typeOnly: true, summary: - 'Renders the `empty-content` part of the shadcn-compatible catalog primitives.', + 'Props for the `asChild` (polymorphic) rendering of Popover Trigger.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', + }, + ], }, { - name: 'EmptyDescription', - anchor: 'empty-description', + name: 'PopoverTriggerProps', + anchor: 'popover-trigger-props', signature: - 'EmptyDescription: (props: CatalogComponentProps) => JSX.Element', + "PopoverTriggerProps: ButtonLikeProps<'button', HTMLButtonElement>", typeOnly: true, - summary: - 'Renders the `empty-description` part of the shadcn-compatible catalog primitives.', + summary: 'Props for Popover Trigger.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', + }, + ], }, + ], + symbols102: [ { - name: 'EmptyHeader', - anchor: 'empty-header', - signature: 'EmptyHeader: (props: CatalogComponentProps) => JSX.Element', + name: 'Progress', + anchor: 'progress', + signature: 'Progress: (props: ProgressProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `empty-header` part of the shadcn-compatible catalog primitives.', + 'Renders the `progress` part of `progress` with `role="progressbar"`.', }, { - name: 'EmptyMedia', - anchor: 'empty-media', - signature: 'EmptyMedia: (props: CatalogComponentProps) => JSX.Element', + name: 'ProgressIndicator', + anchor: 'progress-indicator', + signature: + 'ProgressIndicator: { (props: ProgressIndicatorProps): JSX.Element; (props: ProgressIndicatorAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'Renders the `empty-media` part of the shadcn-compatible catalog primitives.', + 'Renders the `progress-indicator` part of `progress`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'EmptyState', - anchor: 'empty-state', - signature: 'EmptyState: (props: EmptyStateProps) => JSX.Element', + name: 'ProgressIndicatorAsChildProps', + anchor: 'progress-indicator-as-child-props', + signature: 'ProgressIndicatorAsChildProps: BoxAsChildProps', typeOnly: true, summary: - 'Centered placeholder for empty lists/views: an icon, title (default `<h2>`), description, extra content, and an action row.', - }, - { - name: 'EmptyStateHeadingTag', - anchor: 'empty-state-heading-tag', - signature: - 'EmptyStateHeadingTag: "h1" | "h2" | "h3" | "h4" | "h5" | "h6"', - typeOnly: true, - summary: "Heading tag allowed for an empty state's title via `titleAs`.", - }, - { - name: 'EmptyStateProps', - anchor: 'empty-state-props', - signature: - 'EmptyStateProps: BlockDivProps & {\n icon?: unknown;\n title?: unknown;\n titleAs?: EmptyStateHeadingTag;\n description?: unknown;\n action?: unknown;\n}', - typeOnly: true, - summary: 'Props for the {@link EmptyState } component.', + 'Props for the `asChild` (polymorphic) rendering of Progress Indicator.', members: [ { - name: 'action', + name: 'asChild', summary: '', - signature: 'action?: unknown;', + signature: 'asChild: true;', }, { - name: 'align', + name: 'children', summary: '', - signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', + signature: 'children: JSXElement;', }, { - name: 'as', + name: 'ref', summary: '', - signature: 'as?: "div" | undefined;', + signature: 'ref?: Ref<Element>;', }, + ], + }, + { + name: 'ProgressIndicatorProps', + anchor: 'progress-indicator-props', + signature: "ProgressIndicatorProps: BoxProps<'div', HTMLDivElement>", + typeOnly: true, + summary: 'Props for Progress Indicator.', + members: [ { name: 'asChild', summary: '', signature: 'asChild?: false | undefined;', }, { - name: 'background', + name: 'children', summary: '', - signature: - 'background?: ResponsiveValue<BlockBackground> | undefined;', + signature: 'children?: unknown;', }, { - name: 'border', + name: 'ref', summary: '', - signature: 'border?: ResponsiveValue<boolean> | undefined;', + signature: 'ref?: Ref<HTMLDivElement>;', }, + ], + }, + { + name: 'ProgressOwnProps', + anchor: 'progress-own-props', + signature: + 'ProgressOwnProps: {\n children?: unknown;\n id?: string;\n value?: number | null;\n max?: number;\n getValueLabel?: (value: number | null, max: number) => string;\n}', + typeOnly: true, + summary: + 'Own props for Progress, before merging with native element attributes.', + members: [ { - name: 'borderBottom', + name: 'children', summary: '', - signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + signature: 'children?: unknown;', }, { - name: 'borderRight', + name: 'getValueLabel', summary: '', - signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + signature: + 'getValueLabel?: ((value: number | null, max: number) => string) | undefined;', }, { - name: 'borderTop', + name: 'id', summary: '', - signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + signature: 'id?: string | undefined;', }, { - name: 'center', + name: 'max', summary: '', - signature: 'center?: ResponsiveValue<boolean> | undefined;', + signature: 'max?: number | undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value?: number | null | undefined;', + }, + ], + }, + { + name: 'ProgressProps', + anchor: 'progress-props', + signature: + "ProgressProps: BoxProps<'div', HTMLDivElement> & ProgressOwnProps", + typeOnly: true, + summary: 'Props for Progress.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', }, { name: 'children', @@ -36061,291 +45217,341 @@ export const apiSymbolSets: Readonly< signature: 'children?: unknown;', }, { - name: 'className', + name: 'getValueLabel', summary: '', - signature: 'className?: string | undefined;', + signature: + 'getValueLabel?: ((value: number | null, max: number) => string) | undefined;', }, { - name: 'description', + name: 'id', summary: '', - signature: 'description?: unknown;', + signature: 'id?: string | undefined;', }, { - name: 'direction', + name: 'max', summary: '', - signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + signature: 'max?: number | undefined;', }, { - name: 'gap', + name: 'ref', summary: '', - signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'ref?: Ref<HTMLDivElement>;', }, { - name: 'grow', + name: 'value', summary: '', - signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + signature: 'value?: number | null | undefined;', }, + ], + }, + ], + symbols103: [ + { + name: 'RadioGroup', + anchor: 'radio-group', + signature: + 'RadioGroup: (props: RadioGroupProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + typeOnly: true, + summary: 'Renders a part of `radio-group`.', + }, + { + name: 'RadioGroupItem', + anchor: 'radio-group-item', + signature: + 'RadioGroupItem: { (props: RadioGroupItemProps): JSX.Element; (props: RadioGroupItemAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `radio-group-item` part of `radio-group` with `role="radio"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'RadioGroupItemAsChildProps', + anchor: 'radio-group-item-as-child-props', + signature: + 'RadioGroupItemAsChildProps: RadioGroupItemOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<Element>;\n}', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Radio Group Item.', + members: [ { - name: 'height', + name: 'asChild', summary: '', - signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + signature: 'asChild: true;', }, { - name: 'hide', + name: 'children', summary: '', - signature: 'hide?: ResponsiveValue<boolean> | undefined;', + signature: 'children: JSXElement;', }, { - name: 'icon', + name: 'disabled', summary: '', - signature: 'icon?: unknown;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'justify', + name: 'ref', summary: '', - signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + signature: 'ref?: Ref<Element>;', }, { - name: 'margin', + name: 'value', summary: '', - signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + signature: 'value: string;', + }, + ], + }, + { + name: 'RadioGroupItemOwnProps', + anchor: 'radio-group-item-own-props', + signature: + 'RadioGroupItemOwnProps: {\n value: string;\n disabled?: boolean;\n children?: unknown;\n}', + typeOnly: true, + summary: + 'Own props for Radio Group Item, before merging with native element attributes.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', }, { - name: 'marginX', + name: 'disabled', summary: '', - signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'marginY', + name: 'value', summary: '', - signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + signature: 'value: string;', }, + ], + }, + { + name: 'RadioGroupItemProps', + anchor: 'radio-group-item-props', + signature: + "RadioGroupItemProps: Omit<JSX.IntrinsicElements['button'], 'children' | 'ref' | 'onClick' | 'type' | 'value'> & RadioGroupItemOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLButtonElement>;\n}", + typeOnly: true, + summary: 'Props for Radio Group Item.', + members: [ { - name: 'maxHeight', + name: 'asChild', summary: '', - signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + signature: 'asChild?: false | undefined;', }, { - name: 'maxWidth', + name: 'children', summary: '', - signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + signature: 'children?: unknown;', }, { - name: 'minHeight', + name: 'ref', summary: '', - signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + signature: 'ref?: Ref<HTMLButtonElement>;', }, { - name: 'minWidth', + name: 'value', summary: '', - signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + signature: 'value: string;', + }, + ], + }, + { + name: 'RadioGroupOwnProps', + anchor: 'radio-group-own-props', + signature: + 'RadioGroupOwnProps: {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n disabled?: boolean;\n name?: string;\n orientation?: Orientation;\n loop?: boolean;\n /** Supports literal, nested, array-mapped, and `For`-rendered descendants. */\n children?: unknown;\n}', + typeOnly: true, + summary: + 'Own props for Radio Group, before merging with native element attributes.', + members: [ + { + name: 'children', + summary: + 'Supports literal, nested, array-mapped, and `For`-rendered descendants.', + signature: 'children?: unknown;', }, { - name: 'padding', + name: 'defaultValue', summary: '', - signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'defaultValue?: string | undefined;', }, { - name: 'paddingX', + name: 'disabled', summary: '', - signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'paddingY', + name: 'loop', summary: '', - signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'loop?: boolean | undefined;', }, { - name: 'radius', + name: 'name', summary: '', - signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + signature: 'name?: string | undefined;', }, { - name: 'ref', + name: 'onValueChange', summary: '', - signature: 'ref?: Ref<unknown>;', + signature: 'onValueChange?: ((value: string) => void) | undefined;', }, { - name: 'rowFrom', + name: 'orientation', summary: '', - signature: 'rowFrom?: BlockRowFrom | undefined;', + signature: 'orientation?: Orientation | undefined;', }, { - name: 'shadow', + name: 'value', summary: '', - signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + signature: 'value?: string | undefined;', + }, + ], + }, + { + name: 'RadioGroupProps', + anchor: 'radio-group-props', + signature: + "RadioGroupProps: Omit<JSX.IntrinsicElements['div'], 'children' | 'ref'> & RadioGroupOwnProps & {\n ref?: Ref<HTMLDivElement>;\n}", + typeOnly: true, + summary: 'Props for Radio Group.', + members: [ + { + name: 'children', + summary: + 'Supports literal, nested, array-mapped, and `For`-rendered descendants.', + signature: 'children?: unknown;', }, { - name: 'shrink', + name: 'defaultValue', summary: '', - signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + signature: 'defaultValue?: string | undefined;', }, { - name: 'sticky', + name: 'disabled', summary: '', - signature: 'sticky?: boolean | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'title', + name: 'loop', summary: '', - signature: 'title?: unknown;', + signature: 'loop?: boolean | undefined;', }, { - name: 'titleAs', + name: 'name', summary: '', - signature: 'titleAs?: EmptyStateHeadingTag | undefined;', + signature: 'name?: string | undefined;', }, { - name: 'top', + name: 'onValueChange', summary: '', - signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'onValueChange?: ((value: string) => void) | undefined;', }, { - name: 'width', + name: 'orientation', summary: '', - signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + signature: 'orientation?: Orientation | undefined;', }, { - name: 'wrap', + name: 'ref', summary: '', - signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + signature: 'ref?: Ref<HTMLDivElement>;', }, { - name: 'zIndex', + name: 'value', summary: '', - signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + signature: 'value?: string | undefined;', }, ], }, + ], + symbols104: [ { - name: 'EmptyTitle', - anchor: 'empty-title', - signature: 'EmptyTitle: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `empty-title` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'Field', - anchor: 'field', - signature: 'Field: (props: FieldProps) => JSX.Element', + name: 'ResizableHandle', + anchor: 'resizable-handle', + signature: + 'ResizableHandle: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Groups a form control with its hint/error text, marking `data-invalid` when `invalid` is set.', + 'Styling-only separator slot; it does not implement resizing, pointer dragging, or keyboard controls.', }, { - name: 'FieldContent', - anchor: 'field-content', - signature: 'FieldContent: (props: CatalogComponentProps) => JSX.Element', + name: 'ResizablePanel', + anchor: 'resizable-panel', + signature: + 'ResizablePanel: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `field-content` part of the shadcn-compatible catalog primitives.', + 'Styling-only `resizable-panel` slot; it does not implement resizing or manage panel dimensions.', }, { - name: 'FieldDescription', - anchor: 'field-description', + name: 'ResizablePanelGroup', + anchor: 'resizable-panel-group', signature: - 'FieldDescription: (props: CatalogComponentProps) => JSX.Element', + 'ResizablePanelGroup: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `field-description` part of the shadcn-compatible catalog primitives.', + 'Styling-only container for the `resizable-panel-group` catalog slot. It does not implement resizing.\nConsumers own pointer, keyboard, sizing, and ARIA state until a behavior primitive exists in `@askrjs/ui`.', }, + ], + symbols105: [ { - name: 'FieldError', - anchor: 'field-error', - signature: 'FieldError: (props: FieldErrorProps) => JSX.Element', + name: 'ScrollArea', + anchor: 'scroll-area', + signature: + 'ScrollArea: { (props: ScrollAreaProps): JSX.Element; (props: ScrollAreaAsChildProps): JSX.Element; }', typeOnly: true, - summary: - 'Renders validation error text for a {@link Field}, exposed with `role="alert"`.', + summary: 'Renders a part of `scroll-area`.', }, { - name: 'FieldErrorProps', - anchor: 'field-error-props', + name: 'ScrollAreaAsChildProps', + anchor: 'scroll-area-as-child-props', signature: - 'FieldErrorProps: ParagraphProps & {\n children?: unknown;\n ref?: Ref<HTMLParagraphElement>;\n}', + 'ScrollAreaAsChildProps: ScrollAreaOwnProps & {\n asChild: true;\n children: JSX.Element;\n}', typeOnly: true, - summary: 'Props for the {@link FieldError } component.', + summary: + 'Props for the `asChild` (polymorphic) rendering of Scroll Area.', members: [ { - name: 'children', - summary: '', - signature: 'children?: unknown;', - }, - { - name: 'ref', + name: 'asChild', summary: '', - signature: 'ref?: Ref<HTMLParagraphElement>;', + signature: 'asChild: true;', }, - ], - }, - { - name: 'FieldGroup', - anchor: 'field-group', - signature: 'FieldGroup: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `field-group` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'FieldHint', - anchor: 'field-hint', - signature: 'FieldHint: (props: FieldHintProps) => JSX.Element', - typeOnly: true, - summary: 'Renders supporting hint text for a {@link Field}.', - }, - { - name: 'FieldHintProps', - anchor: 'field-hint-props', - signature: - 'FieldHintProps: ParagraphProps & {\n children?: unknown;\n ref?: Ref<HTMLParagraphElement>;\n}', - typeOnly: true, - summary: 'Props for the {@link FieldHint } component.', - members: [ { name: 'children', summary: '', - signature: 'children?: unknown;', + signature: 'children: JSX.Element;', }, { - name: 'ref', + name: 'id', summary: '', - signature: 'ref?: Ref<HTMLParagraphElement>;', + signature: 'id?: string | undefined;', }, ], }, { - name: 'FieldLabel', - anchor: 'field-label', - signature: 'FieldLabel: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `field-label` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'FieldLegend', - anchor: 'field-legend', - signature: 'FieldLegend: (props: CatalogComponentProps) => JSX.Element', + name: 'ScrollAreaCorner', + anchor: 'scroll-area-corner', + signature: + 'ScrollAreaCorner: (props: ScrollAreaCornerProps) => JSX.Element', typeOnly: true, - summary: - 'Renders the `field-legend` part of the shadcn-compatible catalog primitives.', + summary: 'Renders the `scroll-area-corner` part of `scroll-area`.', }, - { - name: 'FieldProps', - anchor: 'field-props', - signature: - 'FieldProps: DivProps & {\n children?: unknown;\n invalid?: boolean;\n ref?: Ref<HTMLDivElement>;\n}', + { + name: 'ScrollAreaCornerProps', + anchor: 'scroll-area-corner-props', + signature: "ScrollAreaCornerProps: BoxProps<'div', HTMLDivElement>", typeOnly: true, - summary: 'Props for the {@link Field } component.', + summary: 'Props for Scroll Area Corner.', members: [ { - name: 'children', + name: 'asChild', summary: '', - signature: 'children?: unknown;', + signature: 'asChild?: false | undefined;', }, { - name: 'invalid', + name: 'children', summary: '', - signature: 'invalid?: boolean | undefined;', + signature: 'children?: unknown;', }, { name: 'ref', @@ -36355,52 +45561,13 @@ export const apiSymbolSets: Readonly< ], }, { - name: 'FieldSeparator', - anchor: 'field-separator', + name: 'ScrollAreaOwnProps', + anchor: 'scroll-area-own-props', signature: - 'FieldSeparator: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `field-separator` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'FieldSet', - anchor: 'field-set', - signature: 'FieldSet: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `field-set` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'FieldTitle', - anchor: 'field-title', - signature: 'FieldTitle: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `field-title` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'Footer', - anchor: 'footer', - signature: 'Footer: (props: FooterProps) => JSX.Element', + 'ScrollAreaOwnProps: {\n children?: unknown;\n id?: string;\n}', typeOnly: true, summary: - 'Renders a `<footer>`-element {@link Block } with a muted background and top border.', - }, - { - name: 'FooterContent', - anchor: 'footer-content', - signature: 'FooterContent: (props: FooterContentProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the main content wrapper of a {@link Footer}.', - }, - { - name: 'FooterContentProps', - anchor: 'footer-content-props', - signature: - 'FooterContentProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', - typeOnly: true, - summary: 'Props for the {@link FooterContent } component.', + 'Own props for Scroll Area, before merging with native element attributes.', members: [ { name: 'children', @@ -36408,27 +45575,18 @@ export const apiSymbolSets: Readonly< signature: 'children?: unknown;', }, { - name: 'ref', + name: 'id', summary: '', - signature: 'ref?: Ref<HTMLDivElement>;', + signature: 'id?: string | undefined;', }, ], }, { - name: 'FooterDescription', - anchor: 'footer-description', - signature: - 'FooterDescription: (props: FooterDescriptionProps) => JSX.Element', - typeOnly: true, - summary: 'Renders supporting description text within a {@link Footer}.', - }, - { - name: 'FooterDescriptionProps', - anchor: 'footer-description-props', - signature: - 'FooterDescriptionProps: ParagraphProps & {\n children?: unknown;\n ref?: Ref<HTMLParagraphElement>;\n}', + name: 'ScrollAreaProps', + anchor: 'scroll-area-props', + signature: 'ScrollAreaProps: ScrollAreaOwnProps', typeOnly: true, - summary: 'Props for the {@link FooterDescription } component.', + summary: 'Props for Scroll Area.', members: [ { name: 'children', @@ -36436,54 +45594,71 @@ export const apiSymbolSets: Readonly< signature: 'children?: unknown;', }, { - name: 'ref', + name: 'id', summary: '', - signature: 'ref?: Ref<HTMLParagraphElement>;', + signature: 'id?: string | undefined;', }, ], }, { - name: 'FooterLink', - anchor: 'footer-link', - signature: 'FooterLink: (props: FooterLinkProps) => JSX.Element', + name: 'ScrollAreaScrollbar', + anchor: 'scroll-area-scrollbar', + signature: + 'ScrollAreaScrollbar: (props: ScrollAreaScrollbarProps) => JSX.Element', typeOnly: true, - summary: 'Renders a single link within a {@link Footer}.', + summary: + 'Renders the `scroll-area-scrollbar` part of `scroll-area` with `role="scrollbar"`.', }, { - name: 'FooterLinkProps', - anchor: 'footer-link-props', + name: 'ScrollAreaScrollbarProps', + anchor: 'scroll-area-scrollbar-props', signature: - 'FooterLinkProps: AnchorProps & {\n children?: unknown;\n ref?: Ref<HTMLAnchorElement>;\n}', + "ScrollAreaScrollbarProps: BoxProps<'div', HTMLDivElement> & {\n orientation?: 'vertical' | 'horizontal';\n}", typeOnly: true, - summary: 'Props for the {@link FooterLink } component.', + summary: 'Props for Scroll Area Scrollbar.', members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, { name: 'children', summary: '', signature: 'children?: unknown;', }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: "vertical" | "horizontal" | undefined;', + }, { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLAnchorElement>;', + signature: 'ref?: Ref<HTMLDivElement>;', }, ], }, { - name: 'FooterLinks', - anchor: 'footer-links', - signature: 'FooterLinks: (props: FooterLinksProps) => JSX.Element', + name: 'ScrollAreaThumb', + anchor: 'scroll-area-thumb', + signature: + 'ScrollAreaThumb: (props: ScrollAreaThumbProps) => JSX.Element', typeOnly: true, - summary: 'Renders a `<nav>` wrapper for a group of {@link FooterLink}s.', + summary: 'Renders the `scroll-area-thumb` part of `scroll-area`.', }, { - name: 'FooterLinksProps', - anchor: 'footer-links-props', - signature: - 'FooterLinksProps: NavProps & {\n children?: unknown;\n ref?: Ref<HTMLElement>;\n}', + name: 'ScrollAreaThumbProps', + anchor: 'scroll-area-thumb-props', + signature: "ScrollAreaThumbProps: BoxProps<'div', HTMLDivElement>", typeOnly: true, - summary: 'Props for the {@link FooterLinks } component.', + summary: 'Props for Scroll Area Thumb.', members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, { name: 'children', summary: '', @@ -36492,59 +45667,55 @@ export const apiSymbolSets: Readonly< { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLElement>;', + signature: 'ref?: Ref<HTMLDivElement>;', }, ], }, { - name: 'FooterProps', - anchor: 'footer-props', - signature: 'FooterProps: Omit<BlockElementProps<"footer">, "as">', - typeOnly: true, - summary: 'Props for the {@link Footer } component.', - }, - { - name: 'FooterSection', - anchor: 'footer-section', - signature: 'FooterSection: (props: FooterSectionProps) => JSX.Element', + name: 'ScrollAreaViewport', + anchor: 'scroll-area-viewport', + signature: + 'ScrollAreaViewport: { (props: ScrollAreaViewportProps): JSX.Element; (props: ScrollAreaViewportAsChildProps): JSX.Element; }', typeOnly: true, - summary: 'Renders a grouped section within a {@link Footer}.', + summary: 'Renders a part of `scroll-area`.', }, { - name: 'FooterSectionProps', - anchor: 'footer-section-props', - signature: - 'FooterSectionProps: DivProps & {\n children?: unknown;\n ref?: Ref<HTMLDivElement>;\n}', + name: 'ScrollAreaViewportAsChildProps', + anchor: 'scroll-area-viewport-as-child-props', + signature: 'ScrollAreaViewportAsChildProps: BoxAsChildProps', typeOnly: true, - summary: 'Props for the {@link FooterSection } component.', + summary: + 'Props for the `asChild` (polymorphic) rendering of Scroll Area Viewport.', members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, { name: 'children', summary: '', - signature: 'children?: unknown;', + signature: 'children: JSXElement;', }, { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLDivElement>;', + signature: 'ref?: Ref<Element>;', }, ], }, { - name: 'FooterTitle', - anchor: 'footer-title', - signature: 'FooterTitle: (props: FooterTitleProps) => JSX.Element', - typeOnly: true, - summary: 'Renders a section title (`<h2>`) within a {@link Footer}.', - }, - { - name: 'FooterTitleProps', - anchor: 'footer-title-props', - signature: - 'FooterTitleProps: HeadingProps & {\n children?: unknown;\n ref?: Ref<HTMLHeadingElement>;\n}', + name: 'ScrollAreaViewportProps', + anchor: 'scroll-area-viewport-props', + signature: "ScrollAreaViewportProps: BoxProps<'div', HTMLDivElement>", typeOnly: true, - summary: 'Props for the {@link FooterTitle } component.', + summary: 'Props for Scroll Area Viewport.', members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, { name: 'children', summary: '', @@ -36553,270 +45724,323 @@ export const apiSymbolSets: Readonly< { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLHeadingElement>;', + signature: 'ref?: Ref<HTMLDivElement>;', }, ], }, + ], + symbols106: [ { - name: 'Form', - anchor: 'form', - signature: - 'Form: { (props: FormProps): JSX.Element; (props: FormAsChildProps): JSX.Element; }', + name: 'Section', + anchor: 'section', + signature: 'Section: (props: SectionProps) => JSX.Element', typeOnly: true, summary: - 'Renders a part of `form`.\n\nSupports polymorphic rendering via `asChild`.', + 'Renders a `<section>`-element {@link Block } with vertical spacing between children and page padding.', }, { - name: 'Grid', - anchor: 'grid', - signature: - 'Grid: <TElement extends GridElement = "div">(props: GridProps<TElement>) => JSX.Element', + name: 'SectionProps', + anchor: 'section-props', + signature: 'SectionProps: Omit<BlockElementProps<"section">, "as">', typeOnly: true, - summary: - 'CSS grid layout primitive: turns `columns`/`gap`/`align` (each optionally responsive) into generated grid-template styles, rendering as `<div>` by default.', + summary: 'Props for the {@link Section } component.', }, + ], + symbols107: [ { - name: 'GridAlign', - anchor: 'grid-align', - signature: 'GridAlign: "start" | "center" | "end" | "stretch"', + name: 'Select', + anchor: 'select', + signature: 'Select: (props: SelectProps) => JSX.Element', typeOnly: true, - summary: '`align-items` value applied to a {@link Grid }.', + summary: 'Renders a part of `select`.', }, { - name: 'GridColumns', - anchor: 'grid-columns', - signature: 'GridColumns: number | string', + name: 'SelectContent', + anchor: 'select-content', + signature: + 'SelectContent: { (props: SelectContentProps): JSX.Element | null; (props: SelectContentAsChildProps): JSX.Element | null; }', typeOnly: true, summary: - 'Column definition for {@link Grid }: a track count or a raw `grid-template-columns` string.', - }, - { - name: 'GridElement', - anchor: 'grid-element', - signature: 'GridElement: "div" | "section" | "ul"', - typeOnly: true, - summary: 'Element tags {@link Grid } can render as via its `as` prop.', + 'Renders a part of `select` with `role="listbox"`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'GridProps', - anchor: 'grid-props', + name: 'SelectContentAsChildProps', + anchor: 'select-content-as-child-props', signature: - 'GridProps: GridIntrinsicProps<TElement> & {\n as?: TElement;\n columns?: ResponsiveValue<GridColumns>;\n gap?: ResponsiveValue<BlockSpace>;\n align?: ResponsiveValue<GridAlign>;\n children?: unknown;\n ref?: Ref<HTMLElement>;\n}', + 'SelectContentAsChildProps: BoxAsChildProps & SelectContentOwnProps', typeOnly: true, summary: - 'Props for the {@link Grid } component, specialized for a given {@link GridElement} `TElement`.', + 'Props for the `asChild` (polymorphic) rendering of Select Content.', members: [ { name: 'align', summary: '', - signature: 'align?: ResponsiveValue<GridAlign> | undefined;', + signature: 'align?: OverlayAlign | undefined;', }, { - name: 'as', + name: 'asChild', summary: '', - signature: 'as?: TElement | undefined;', + signature: 'asChild: true;', }, { name: 'children', summary: '', - signature: 'children?: unknown;', + signature: 'children: JSXElement;', }, { - name: 'columns', + name: 'forceMount', summary: '', - signature: 'columns?: ResponsiveValue<GridColumns> | undefined;', + signature: 'forceMount?: boolean | undefined;', }, { - name: 'gap', + name: 'ref', summary: '', - signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'ref?: Ref<Element>;', }, { - name: 'ref', + name: 'side', summary: '', - signature: 'ref?: Ref<HTMLElement>;', + signature: 'side?: OverlaySide | undefined;', + }, + { + name: 'sideOffset', + summary: '', + signature: 'sideOffset?: number | undefined;', }, ], }, { - name: 'Header', - anchor: 'header', - signature: 'Header: (props: HeaderProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders a `<header>`-element {@link Block } with a surface background and bottom border, optionally sticky-positioned via `position`/`sticky`.', - }, - { - name: 'HeaderProps', - anchor: 'header-props', + name: 'SelectContentOwnProps', + anchor: 'select-content-own-props', signature: - 'HeaderProps: Omit<BlockElementProps<"header">, "as" | "sticky"> & {\n position?: "sticky" | "static";\n sticky?: boolean;\n}', + 'SelectContentOwnProps: {\n forceMount?: boolean;\n side?: OverlaySide;\n align?: OverlayAlign;\n sideOffset?: number;\n}', typeOnly: true, - summary: 'Props for the {@link Header } component.', + summary: + 'Own props for Select Content, before merging with native element attributes.', members: [ { - name: 'position', + name: 'align', summary: '', - signature: 'position?: "sticky" | "static" | undefined;', + signature: 'align?: OverlayAlign | undefined;', }, { - name: 'sticky', + name: 'forceMount', summary: '', - signature: 'sticky?: boolean | undefined;', + signature: 'forceMount?: boolean | undefined;', + }, + { + name: 'side', + summary: '', + signature: 'side?: OverlaySide | undefined;', + }, + { + name: 'sideOffset', + summary: '', + signature: 'sideOffset?: number | undefined;', }, ], }, { - name: 'Heading', - anchor: 'heading', - signature: 'Heading: ({ level, ...props }: HeadingProps) => JSX.Element', - typeOnly: true, - summary: - 'Native semantic heading whose visual size is independent from its explicit document level.', - }, - { - name: 'HeadingLevel', - anchor: 'heading-level', - signature: 'HeadingLevel: 1 | 2 | 3 | 4 | 5 | 6', - typeOnly: true, - }, - { - name: 'HeadingProps', - anchor: 'heading-props', + name: 'SelectContentProps', + anchor: 'select-content-props', signature: - 'HeadingProps: NativeHeadingProps & {\n level: HeadingLevel;\n size?: HeadingSize;\n tone?: TextTone;\n weight?: TextWeight;\n font?: TextFont;\n numeric?: TextNumeric;\n wrap?: TextWrap;\n truncate?: boolean;\n children?: unknown;\n ref?: Ref<HTMLHeadingElement>;\n}', + "SelectContentProps: BoxProps<'div', HTMLDivElement> & SelectContentOwnProps", typeOnly: true, - summary: - 'Strongly typed semantic heading props with visual treatment independent from document level.', + summary: 'Props for Select Content.', members: [ { - name: 'children', + name: 'align', summary: '', - signature: 'children?: unknown;', + signature: 'align?: OverlayAlign | undefined;', }, { - name: 'font', + name: 'asChild', summary: '', - signature: 'font?: TextFont | undefined;', + signature: 'asChild?: false | undefined;', }, { - name: 'level', + name: 'children', summary: '', - signature: 'level: HeadingLevel;', + signature: 'children?: unknown;', }, { - name: 'numeric', + name: 'forceMount', summary: '', - signature: 'numeric?: TextNumeric | undefined;', + signature: 'forceMount?: boolean | undefined;', }, { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLHeadingElement>;', + signature: 'ref?: Ref<HTMLDivElement>;', }, { - name: 'size', + name: 'side', summary: '', - signature: 'size?: HeadingSize | undefined;', + signature: 'side?: OverlaySide | undefined;', }, { - name: 'tone', + name: 'sideOffset', summary: '', - signature: 'tone?: TextTone | undefined;', + signature: 'sideOffset?: number | undefined;', }, + ], + }, + { + name: 'SelectGroup', + anchor: 'select-group', + signature: + 'SelectGroup: { (props: SelectGroupProps): JSX.Element; (props: SelectGroupAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `select-group` part of `select` with `role="group"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SelectGroupAsChildProps', + anchor: 'select-group-as-child-props', + signature: 'SelectGroupAsChildProps: BoxAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Select Group.', + members: [ { - name: 'truncate', + name: 'asChild', summary: '', - signature: 'truncate?: boolean | undefined;', + signature: 'asChild: true;', }, { - name: 'weight', + name: 'children', summary: '', - signature: 'weight?: TextWeight | undefined;', + signature: 'children: JSXElement;', }, { - name: 'wrap', + name: 'ref', summary: '', - signature: 'wrap?: TextWrap | undefined;', + signature: 'ref?: Ref<Element>;', }, ], }, { - name: 'HeadingSize', - anchor: 'heading-size', - signature: 'HeadingSize: "sm" | "md" | "lg" | "xl" | "2xl" | "3xl"', - typeOnly: true, - }, - { - name: 'HoverCard', - anchor: 'hover-card', - signature: - 'HoverCard: (props: HoverCardProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + name: 'SelectGroupProps', + anchor: 'select-group-props', + signature: "SelectGroupProps: BoxProps<'div', HTMLDivElement>", typeOnly: true, - summary: 'Renders a part of `hover-card`.', + summary: 'Props for Select Group.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], }, { - name: 'HoverCardContent', - anchor: 'hover-card-content', + name: 'SelectItem', + anchor: 'select-item', signature: - 'HoverCardContent: { (props: HoverCardContentProps): JSX.Element | null; (props: HoverCardContentAsChildProps): JSX.Element | null; }', + 'SelectItem: { (props: SelectItemProps): JSX.Element | null; (props: SelectItemAsChildProps): JSX.Element | null; }', typeOnly: true, summary: - 'Renders the `hover-card-content` part of `hover-card` with `role="dialog"`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'HoverCardPortal', - anchor: 'hover-card-portal', - signature: - 'HoverCardPortal: (props: HoverCardPortalProps) => JSX.Element | null', - typeOnly: true, - summary: 'Renders a part of `hover-card`.', + 'Renders a part of `select`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'HoverCardTrigger', - anchor: 'hover-card-trigger', + name: 'SelectItemAsChildProps', + anchor: 'select-item-as-child-props', signature: - 'HoverCardTrigger: { (props: HoverCardTriggerProps): JSX.Element; (props: HoverCardTriggerAsChildProps): JSX.Element; }', + "SelectItemAsChildProps: Omit<ButtonLikeAsChildProps, 'onPress'> & SelectItemOwnProps", typeOnly: true, summary: - 'Renders the `hover-card-trigger` part of `hover-card`.\n\nSupports polymorphic rendering via `asChild`.', + 'Props for the `asChild` (polymorphic) rendering of Select Item.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'textValue', + summary: '', + signature: 'textValue?: string | undefined;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value: string;', + }, + ], }, { - name: 'Input', - anchor: 'input', + name: 'SelectItemOwnProps', + anchor: 'select-item-own-props', signature: - 'Input: { (props: InputInputProps): JSX.Element; (props: InputAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `input` part of `input`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'InputGroup', - anchor: 'input-group', - signature: 'InputGroup: (props: InputGroupProps) => JSX.Element', + 'SelectItemOwnProps: {\n children?: unknown;\n disabled?: boolean;\n textValue?: string;\n value: string;\n}', typeOnly: true, summary: - 'Groups related inputs/addons together, optionally visually attached, with a horizontal or vertical orientation and `role="group"` by default.', - }, - { - name: 'InputGroupOrientation', - anchor: 'input-group-orientation', - signature: 'InputGroupOrientation: "horizontal" | "vertical"', - typeOnly: true, - summary: 'Layout direction of an {@link InputGroup }.', + 'Own props for Select Item, before merging with native element attributes.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'textValue', + summary: '', + signature: 'textValue?: string | undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value: string;', + }, + ], }, { - name: 'InputGroupProps', - anchor: 'input-group-props', + name: 'SelectItemProps', + anchor: 'select-item-props', signature: - 'InputGroupProps: DivProps & {\n children?: unknown;\n attached?: boolean;\n orientation?: InputGroupOrientation;\n ref?: Ref<HTMLDivElement>;\n}', + "SelectItemProps: Omit<ButtonLikeProps<'button', HTMLButtonElement>, 'onPress'> & SelectItemOwnProps", typeOnly: true, - summary: 'Props for the {@link InputGroup } component.', + summary: 'Props for Select Item.', members: [ { - name: 'attached', + name: 'asChild', summary: '', - signature: 'attached?: boolean | undefined;', + signature: 'asChild?: false | undefined;', }, { name: 'children', @@ -36824,34 +46048,43 @@ export const apiSymbolSets: Readonly< signature: 'children?: unknown;', }, { - name: 'orientation', + name: 'disabled', summary: '', - signature: 'orientation?: InputGroupOrientation | undefined;', + signature: 'disabled?: boolean | undefined;', }, { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLDivElement>;', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + { + name: 'textValue', + summary: '', + signature: 'textValue?: string | undefined;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', }, ], }, { - name: 'InputGroupText', - anchor: 'input-group-text', + name: 'SelectItemText', + anchor: 'select-item-text', signature: - 'InputGroupText: { (props: InputGroupTextProps): JSX.Element; (props: InputGroupTextAsChildProps): JSX.Element; }', + 'SelectItemText: { (props: SelectItemTextProps): JSX.Element; (props: SelectItemTextAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'Renders static text/label content within an {@link InputGroup}.', + 'SelectItemText marks the item text node so Select can resolve labels and\nstyle the text slot directly.\nRenders the `select-item-text` part of `select`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'InputGroupTextAsChildProps', - anchor: 'input-group-text-as-child-props', - signature: - 'InputGroupTextAsChildProps: SpanProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + name: 'SelectItemTextAsChildProps', + anchor: 'select-item-text-as-child-props', + signature: 'SelectItemTextAsChildProps: BoxAsChildProps', typeOnly: true, summary: - 'Props for {@link InputGroupText } rendered with `asChild`, merging its attributes onto a single child element.', + 'Props for the `asChild` (polymorphic) rendering of Select Item Text.', members: [ { name: 'asChild', @@ -36866,18 +46099,16 @@ export const apiSymbolSets: Readonly< { name: 'ref', summary: '', - signature: 'ref?: Ref<unknown>;', + signature: 'ref?: Ref<Element>;', }, ], }, { - name: 'InputGroupTextProps', - anchor: 'input-group-text-props', - signature: - 'InputGroupTextProps: SpanProps & {\n asChild?: false;\n children?: unknown;\n ref?: Ref<HTMLSpanElement>;\n}', + name: 'SelectItemTextProps', + anchor: 'select-item-text-props', + signature: "SelectItemTextProps: BoxProps<'span', HTMLSpanElement>", typeOnly: true, - summary: - 'Props for {@link InputGroupText } rendered as its default `<span>` element.', + summary: 'Props for Select Item Text.', members: [ { name: 'asChild', @@ -36897,696 +46128,498 @@ export const apiSymbolSets: Readonly< ], }, { - name: 'InputOTP', - anchor: 'input-otp', - signature: 'InputOTP: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Styling-only OTP anatomy; it does not render an input or own value, focus, paste, or validation behavior.', - }, - { - name: 'InputOTPGroup', - anchor: 'input-otpgroup', - signature: 'InputOTPGroup: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `input-otp-group` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'InputOTPSeparator', - anchor: 'input-otpseparator', - signature: - 'InputOTPSeparator: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the visual separator between InputOTP groups (defaults to `"-"`).', - }, - { - name: 'InputOTPSlot', - anchor: 'input-otpslot', - signature: 'InputOTPSlot: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `input-otp-slot` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'Item', - anchor: 'item', - signature: - 'Item: (props: CatalogComponentProps & { active?: boolean; size?: "default" | "sm" | "xs"; variant?: "default" | "outline" | "muted"; }) => JSX.Element', - typeOnly: true, - summary: - 'Renders a generic list item part, exposing `active`/`size`/`variant` as data attributes.', - }, - { - name: 'ItemActions', - anchor: 'item-actions', - signature: 'ItemActions: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `item-actions` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'ItemContent', - anchor: 'item-content', - signature: 'ItemContent: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `item-content` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'ItemDescription', - anchor: 'item-description', - signature: - 'ItemDescription: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `item-description` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'ItemFooter', - anchor: 'item-footer', - signature: 'ItemFooter: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `item-footer` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'ItemGroup', - anchor: 'item-group', - signature: 'ItemGroup: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `item-group` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'ItemHeader', - anchor: 'item-header', - signature: 'ItemHeader: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `item-header` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'ItemMedia', - anchor: 'item-media', - signature: 'ItemMedia: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `item-media` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'ItemTitle', - anchor: 'item-title', - signature: 'ItemTitle: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `item-title` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'Kbd', - anchor: 'kbd', - signature: 'Kbd: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `kbd` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'Label', - anchor: 'label', - signature: - 'Label: { (props: LabelLabelProps): JSXElement; (props: LabelAsChildProps): JSXElement; }', - typeOnly: true, - summary: - 'Renders the `label` part of `label`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'Main', - anchor: 'main', - signature: 'Main: (props: MainProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders a `<main>`-element {@link Block } that grows to fill available space.', - }, - { - name: 'MainProps', - anchor: 'main-props', - signature: 'MainProps: Omit<BlockElementProps<"main">, "as">', - typeOnly: true, - summary: 'Props for the {@link Main } component.', - }, - { - name: 'Menubar', - anchor: 'menubar', - signature: 'Menubar: (props: MenubarProps) => JSX.Element', - typeOnly: true, - summary: 'Renders a part of `menubar`.', - }, - { - name: 'MenubarContent', - anchor: 'menubar-content', - signature: - 'MenubarContent: { (props: MenubarContentProps): JSX.Element | null; (props: MenubarContentAsChildProps): JSX.Element | null; }', - typeOnly: true, - summary: 'Renders a part of `menubar`.', - }, - { - name: 'MenubarGroup', - anchor: 'menubar-group', - signature: - 'MenubarGroup: (props: MenubarGroupProps | MenubarGroupAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', - typeOnly: true, - summary: - 'Renders the `menubar-group` part of `menubar` with `role="group"`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'MenubarItem', - anchor: 'menubar-item', - signature: - 'MenubarItem: { (props: MenubarItemProps): JSX.Element | null; (props: MenubarItemAsChildProps): JSX.Element | null; }', - typeOnly: true, - summary: - 'Renders a part of `menubar`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'MenubarLabel', - anchor: 'menubar-label', - signature: - 'MenubarLabel: (props: MenubarLabelProps | MenubarLabelAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', - typeOnly: true, - summary: - 'Renders the `menubar-label` part of `menubar`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'MenubarMenu', - anchor: 'menubar-menu', - signature: 'MenubarMenu: (props: MenubarMenuProps) => JSX.Element', - typeOnly: true, - summary: 'Renders a part of `menubar`.', - }, - { - name: 'MenubarPortal', - anchor: 'menubar-portal', - signature: - 'MenubarPortal: (props: MenubarPortalProps) => JSX.Element | null', - typeOnly: true, - summary: 'Renders a part of `menubar`.', - }, - { - name: 'MenubarSeparator', - anchor: 'menubar-separator', - signature: - 'MenubarSeparator: (props: MenubarSeparatorProps | MenubarSeparatorAsChildProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', - typeOnly: true, - summary: - 'Renders the `menubar-separator` part of `menubar` with `role="separator"`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'MenubarSub', - anchor: 'menubar-sub', - signature: 'MenubarSub: (props: MenubarSubProps) => JSX.Element', - typeOnly: true, - summary: 'Renders a part of `menubar`.', - }, - { - name: 'MenubarSubContent', - anchor: 'menubar-sub-content', - signature: - 'MenubarSubContent: { (props: MenubarSubContentProps): JSX.Element | null; (props: MenubarSubContentAsChildProps): JSX.Element | null; }', - typeOnly: true, - summary: 'Renders a part of `menubar`.', - }, - { - name: 'MenubarSubTrigger', - anchor: 'menubar-sub-trigger', - signature: - 'MenubarSubTrigger: { (props: MenubarSubTriggerProps): JSX.Element | null; (props: MenubarSubTriggerAsChildProps): JSX.Element | null; }', - typeOnly: true, - summary: - 'Renders a part of `menubar`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'MenubarTrigger', - anchor: 'menubar-trigger', + name: 'SelectLabel', + anchor: 'select-label', signature: - 'MenubarTrigger: { (props: MenubarTriggerProps): JSX.Element | null; (props: MenubarTriggerAsChildProps): JSX.Element | null; }', + 'SelectLabel: { (props: SelectLabelProps): JSX.Element | null; (props: SelectLabelAsChildProps): JSX.Element | null; }', typeOnly: true, summary: - 'Renders a part of `menubar`.\n\nSupports polymorphic rendering via `asChild`.', + 'Renders the `select-label` part of `select`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'MetaStrip', - anchor: 'meta-strip', - signature: 'MetaStrip: (props: MetaStripProps) => JSX.Element', + name: 'SelectLabelAsChildProps', + anchor: 'select-label-as-child-props', + signature: 'SelectLabelAsChildProps: BoxAsChildProps', typeOnly: true, summary: - 'Semantic compact key/value facts with consistent inline or stacked wrapping.', - }, - { - name: 'MetaStripDensity', - anchor: 'meta-strip-density', - signature: 'MetaStripDensity: "inline" | "stacked"', - typeOnly: true, - }, - { - name: 'MetaStripItem', - anchor: 'meta-strip-item', - signature: - 'MetaStripItem: {\n label: string;\n value: string | number;\n caption?: string;\n font?: "body" | "mono";\n numeric?: "normal" | "tabular";\n}', - typeOnly: true, - }, - { - name: 'MetaStripProps', - anchor: 'meta-strip-props', - signature: - 'MetaStripProps: Omit<JSX.IntrinsicElements["dl"], "children" | "ref"> & {\n items: readonly MetaStripItem[];\n density?: MetaStripDensity;\n ref?: Ref<HTMLDListElement>;\n}', - typeOnly: true, + 'Props for the `asChild` (polymorphic) rendering of Select Label.', members: [ { - name: 'density', + name: 'asChild', summary: '', - signature: 'density?: MetaStripDensity | undefined;', + signature: 'asChild: true;', }, { - name: 'items', + name: 'children', summary: '', - signature: 'items: readonly MetaStripItem[];', + signature: 'children: JSXElement;', }, { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLDListElement>;', + signature: 'ref?: Ref<Element>;', }, ], }, { - name: 'NativeSelect', - anchor: 'native-select', - signature: - 'NativeSelect: (props: CatalogComponentProps<HTMLSelectElement>) => JSX.Element', - typeOnly: true, - summary: 'Renders a styled native `<select>` element.', - }, - { - name: 'Nav', - anchor: 'nav', - signature: 'Navbar: (props: NavbarProps) => JSX.Element', - typeOnly: true, - summary: - 'Horizontal navigation bar. Below `collapseAt`/`breakpoint`, non-brand\nchildren are grouped behind a collapsible toggle so brand content stays\nvisible while the rest collapses on small screens.', - }, - { - name: 'Navbar', - anchor: 'navbar', - signature: 'Navbar: (props: NavbarProps) => JSX.Element', - typeOnly: true, - summary: - 'Horizontal navigation bar. Below `collapseAt`/`breakpoint`, non-brand\nchildren are grouped behind a collapsible toggle so brand content stays\nvisible while the rest collapses on small screens.', - }, - { - name: 'NavbarCollapseBreakpoint', - anchor: 'navbar-collapse-breakpoint', - signature: 'NavbarCollapseBreakpoint: "sm" | "md" | "lg" | "xl"', - typeOnly: true, - summary: - 'Breakpoint at which a {@link Navbar } collapses non-brand content behind a toggle.', - }, - { - name: 'NavbarProps', - anchor: 'navbar-props', - signature: - 'NavbarProps: Omit<BlockElementProps<"nav">, "as" | "direction" | "align"> & {\n breakpoint?: NavbarCollapseBreakpoint | false;\n collapseAt?: NavbarCollapseBreakpoint | false;\n collapseLabel?: string;\n collapseIcon?: unknown;\n}', + name: 'SelectLabelProps', + anchor: 'select-label-props', + signature: "SelectLabelProps: BoxProps<'div', HTMLDivElement>", typeOnly: true, - summary: 'Props for the {@link Navbar } component.', + summary: 'Props for Select Label.', members: [ { - name: 'breakpoint', - summary: '', - signature: - 'breakpoint?: false | NavbarCollapseBreakpoint | undefined;', - }, - { - name: 'collapseAt', + name: 'asChild', summary: '', - signature: - 'collapseAt?: false | NavbarCollapseBreakpoint | undefined;', + signature: 'asChild?: false | undefined;', }, { - name: 'collapseIcon', + name: 'children', summary: '', - signature: 'collapseIcon?: unknown;', + signature: 'children?: unknown;', }, { - name: 'collapseLabel', + name: 'ref', summary: '', - signature: 'collapseLabel?: string | undefined;', + signature: 'ref?: Ref<HTMLDivElement>;', }, ], }, { - name: 'NavBrand', - anchor: 'nav-brand', - signature: 'NavBrand: (props: NavBrandProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the brand/logo slot of a {@link Navbar}; excluded from the collapsible section.', - }, - { - name: 'NavBrandProps', - anchor: 'nav-brand-props', + name: 'SelectOwnProps', + anchor: 'select-own-props', signature: - 'NavBrandProps: BlockDivProps | BlockElementProps<"a"> | BlockAsChildProps', + 'SelectOwnProps: {\n /** Supports literal, nested, array-mapped, and `For`-rendered descendants. */\n children?: unknown;\n id?: string;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n name?: string;\n disabled?: boolean;\n}', typeOnly: true, - summary: 'Props for the {@link NavBrand } component.', + summary: + 'Own props for Select, before merging with native element attributes.', members: [ { - name: 'align', - summary: '', - signature: 'align?: ResponsiveValue<BlockAlign> | undefined;', - }, - { - name: 'asChild', - summary: '', - signature: 'asChild?: boolean | undefined;', + name: 'children', + summary: + 'Supports literal, nested, array-mapped, and `For`-rendered descendants.', + signature: 'children?: unknown;', }, { - name: 'background', + name: 'defaultOpen', summary: '', - signature: - 'background?: ResponsiveValue<BlockBackground> | undefined;', + signature: 'defaultOpen?: boolean | undefined;', }, { - name: 'border', + name: 'defaultValue', summary: '', - signature: 'border?: ResponsiveValue<boolean> | undefined;', + signature: 'defaultValue?: string | undefined;', }, { - name: 'borderBottom', + name: 'disabled', summary: '', - signature: 'borderBottom?: ResponsiveValue<boolean> | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'borderRight', + name: 'id', summary: '', - signature: 'borderRight?: ResponsiveValue<boolean> | undefined;', + signature: 'id?: string | undefined;', }, { - name: 'borderTop', + name: 'name', summary: '', - signature: 'borderTop?: ResponsiveValue<boolean> | undefined;', + signature: 'name?: string | undefined;', }, { - name: 'center', + name: 'onOpenChange', summary: '', - signature: 'center?: ResponsiveValue<boolean> | undefined;', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', }, { - name: 'children', + name: 'onValueChange', summary: '', - signature: 'children?: unknown;', + signature: 'onValueChange?: ((value: string) => void) | undefined;', }, { - name: 'direction', + name: 'open', summary: '', - signature: 'direction?: ResponsiveValue<BlockDirection> | undefined;', + signature: 'open?: boolean | undefined;', }, { - name: 'gap', + name: 'value', summary: '', - signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'value?: string | undefined;', }, + ], + }, + { + name: 'SelectPortal', + anchor: 'select-portal', + signature: + 'SelectPortal: (props: SelectPortalProps) => JSX.Element | null', + typeOnly: true, + summary: 'Renders a part of `select`.', + }, + { + name: 'SelectPortalProps', + anchor: 'select-portal-props', + signature: 'SelectPortalProps: {\n children?: unknown;\n}', + typeOnly: true, + summary: 'Props for Select Portal.', + members: [ { - name: 'grow', + name: 'children', summary: '', - signature: 'grow?: ResponsiveValue<number | boolean> | undefined;', + signature: 'children?: unknown;', }, + ], + }, + { + name: 'SelectProps', + anchor: 'select-props', + signature: 'SelectProps: SelectOwnProps', + typeOnly: true, + summary: 'Props for Select.', + members: [ { - name: 'height', - summary: '', - signature: 'height?: ResponsiveValue<BlockSize> | undefined;', + name: 'children', + summary: + 'Supports literal, nested, array-mapped, and `For`-rendered descendants.', + signature: 'children?: unknown;', }, { - name: 'hide', + name: 'defaultOpen', summary: '', - signature: 'hide?: ResponsiveValue<boolean> | undefined;', + signature: 'defaultOpen?: boolean | undefined;', }, { - name: 'justify', + name: 'defaultValue', summary: '', - signature: 'justify?: ResponsiveValue<BlockJustify> | undefined;', + signature: 'defaultValue?: string | undefined;', }, { - name: 'margin', + name: 'disabled', summary: '', - signature: 'margin?: ResponsiveValue<BlockMargin> | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'marginX', + name: 'id', summary: '', - signature: 'marginX?: ResponsiveValue<BlockMargin> | undefined;', + signature: 'id?: string | undefined;', }, { - name: 'marginY', + name: 'name', summary: '', - signature: 'marginY?: ResponsiveValue<BlockMargin> | undefined;', + signature: 'name?: string | undefined;', }, { - name: 'maxHeight', + name: 'onOpenChange', summary: '', - signature: 'maxHeight?: ResponsiveValue<BlockSize> | undefined;', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', }, { - name: 'maxWidth', + name: 'onValueChange', summary: '', - signature: 'maxWidth?: ResponsiveValue<BlockSize> | undefined;', + signature: 'onValueChange?: ((value: string) => void) | undefined;', }, { - name: 'minHeight', + name: 'open', summary: '', - signature: 'minHeight?: ResponsiveValue<BlockSize> | undefined;', + signature: 'open?: boolean | undefined;', }, { - name: 'minWidth', + name: 'value', summary: '', - signature: 'minWidth?: ResponsiveValue<BlockSize> | undefined;', + signature: 'value?: string | undefined;', }, + ], + }, + { + name: 'SelectSeparator', + anchor: 'select-separator', + signature: + 'SelectSeparator: { (props: SelectSeparatorProps): JSX.Element | null; (props: SelectSeparatorAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `select-separator` part of `select` with `role="separator"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SelectSeparatorAsChildProps', + anchor: 'select-separator-as-child-props', + signature: 'SelectSeparatorAsChildProps: BoxAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Select Separator.', + members: [ { - name: 'padding', + name: 'asChild', summary: '', - signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'asChild: true;', }, { - name: 'paddingX', + name: 'children', summary: '', - signature: 'paddingX?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'children: JSXElement;', }, { - name: 'paddingY', + name: 'ref', summary: '', - signature: 'paddingY?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'ref?: Ref<Element>;', }, + ], + }, + { + name: 'SelectSeparatorProps', + anchor: 'select-separator-props', + signature: "SelectSeparatorProps: BoxProps<'div', HTMLDivElement>", + typeOnly: true, + summary: 'Props for Select Separator.', + members: [ { - name: 'radius', + name: 'asChild', summary: '', - signature: 'radius?: ResponsiveValue<BlockRadius> | undefined;', + signature: 'asChild?: false | undefined;', }, { - name: 'ref', + name: 'children', summary: '', - signature: 'ref?: Ref<unknown>;', + signature: 'children?: unknown;', }, { - name: 'rowFrom', + name: 'ref', summary: '', - signature: 'rowFrom?: BlockRowFrom | undefined;', + signature: 'ref?: Ref<HTMLDivElement>;', }, + ], + }, + { + name: 'SelectTrigger', + anchor: 'select-trigger', + signature: + 'SelectTrigger: { (props: SelectTriggerProps): JSX.Element | null; (props: SelectTriggerAsChildProps): JSX.Element | null; }', + typeOnly: true, + summary: + 'Renders the `select-trigger` part of `select`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SelectTriggerAsChildProps', + anchor: 'select-trigger-as-child-props', + signature: + 'SelectTriggerAsChildProps: ButtonLikeAsChildProps & SelectTriggerOwnProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Select Trigger.', + members: [ { - name: 'shadow', + name: 'asChild', summary: '', - signature: 'shadow?: ResponsiveValue<BlockShadow> | undefined;', + signature: 'asChild: true;', }, { - name: 'shrink', + name: 'children', summary: '', - signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + signature: 'children: JSXElement;', }, { - name: 'sticky', + name: 'disabled', summary: '', - signature: 'sticky?: boolean | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'top', + name: 'onPress', summary: '', - signature: 'top?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', }, { - name: 'width', + name: 'ref', summary: '', - signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + signature: 'ref?: Ref<Element>;', }, { - name: 'wrap', + name: 'size', summary: '', - signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + signature: 'size?: SelectTriggerSize | undefined;', }, { - name: 'zIndex', + name: 'type', summary: '', - signature: 'zIndex?: ResponsiveValue<BlockZIndex> | undefined;', + signature: 'type?: undefined;', }, ], }, { - name: 'NavDropdown', - anchor: 'nav-dropdown', - signature: 'NavDropdown: (props: NavDropdownProps) => JSX.Element', + name: 'SelectTriggerOwnProps', + anchor: 'select-trigger-own-props', + signature: 'SelectTriggerOwnProps: {\n size?: SelectTriggerSize;\n}', typeOnly: true, summary: - 'Renders a dropdown menu triggered from within a {@link Navbar}.', + 'Own props for Select Trigger, before merging with native element attributes.', + members: [ + { + name: 'size', + summary: '', + signature: 'size?: SelectTriggerSize | undefined;', + }, + ], }, { - name: 'NavDropdownProps', - anchor: 'nav-dropdown-props', + name: 'SelectTriggerProps', + anchor: 'select-trigger-props', signature: - 'NavDropdownProps: Omit<DropdownProps, "children"> & Pick<DropdownContentOwnProps, "align" | "side" | "sideOffset"> & {\n label: unknown;\n children?: unknown;\n}', + "SelectTriggerProps: ButtonLikeProps<'button', HTMLButtonElement> & SelectTriggerOwnProps", typeOnly: true, - summary: 'Props for the {@link NavDropdown } component.', + summary: 'Props for Select Trigger.', members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, { name: 'children', summary: '', signature: 'children?: unknown;', }, { - name: 'label', + name: 'disabled', summary: '', - signature: 'label: unknown;', + signature: 'disabled?: boolean | undefined;', }, - ], - }, - { - name: 'NavGroup', - anchor: 'nav-group', - signature: 'NavGroup: (props: NavGroupProps) => JSX.Element', - typeOnly: true, - summary: 'Groups related {@link Navbar} items under an optional label.', - }, - { - name: 'NavGroupProps', - anchor: 'nav-group-props', - signature: - 'NavGroupProps: Omit<BlockDivProps, "title"> & {\n label?: unknown;\n title?: unknown;\n}', - typeOnly: true, - summary: 'Props for the {@link NavGroup } component.', - members: [ { - name: 'label', + name: 'onPress', summary: '', - signature: 'label?: unknown;', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', }, { - name: 'title', + name: 'ref', summary: '', - signature: 'title?: unknown;', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + { + name: 'size', + summary: '', + signature: 'size?: SelectTriggerSize | undefined;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', }, ], }, { - name: 'NavigationMenu', - anchor: 'navigation-menu', - signature: - 'NavigationMenu: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Styling-only navigation-menu anatomy; it does not own disclosure, roving focus, or keyboard behavior.', - }, - { - name: 'NavigationMenuContent', - anchor: 'navigation-menu-content', - signature: - 'NavigationMenuContent: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `navigation-menu-content` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'NavigationMenuIndicator', - anchor: 'navigation-menu-indicator', - signature: - 'NavigationMenuIndicator: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `navigation-menu-indicator` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'NavigationMenuItem', - anchor: 'navigation-menu-item', - signature: - 'NavigationMenuItem: (props: CatalogComponentProps) => JSX.Element', + name: 'SelectTriggerSize', + anchor: 'select-trigger-size', + signature: "SelectTriggerSize: 'sm' | 'md' | 'lg'", typeOnly: true, - summary: - 'Renders the `navigation-menu-item` part of the shadcn-compatible catalog primitives.', + summary: 'Select Trigger Size.', }, { - name: 'NavigationMenuLink', - anchor: 'navigation-menu-link', + name: 'SelectValue', + anchor: 'select-value', signature: - 'NavigationMenuLink: (props: CatalogComponentProps) => JSX.Element', + 'SelectValue: { (props: SelectValueProps): JSX.Element | null; (props: SelectValueAsChildProps): JSX.Element | null; }', typeOnly: true, summary: - 'Renders the `navigation-menu-link` part of the shadcn-compatible catalog primitives.', + 'Renders the `select-value` part of `select`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'NavigationMenuList', - anchor: 'navigation-menu-list', + name: 'SelectValueAsChildProps', + anchor: 'select-value-as-child-props', signature: - 'NavigationMenuList: (props: CatalogComponentProps) => JSX.Element', + 'SelectValueAsChildProps: BoxAsChildProps & SelectValueOwnProps', typeOnly: true, summary: - 'Renders the `navigation-menu-list` part of the shadcn-compatible catalog primitives.', + 'Props for the `asChild` (polymorphic) rendering of Select Value.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'placeholder', + summary: '', + signature: 'placeholder?: string | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + ], }, { - name: 'NavigationMenuTrigger', - anchor: 'navigation-menu-trigger', + name: 'SelectValueOwnProps', + anchor: 'select-value-own-props', signature: - 'NavigationMenuTrigger: (props: CatalogComponentProps<HTMLButtonElement>) => JSX.Element', + 'SelectValueOwnProps: {\n placeholder?: string;\n children?: unknown;\n}', typeOnly: true, summary: - 'Renders the `navigation-menu-content` part of the shadcn-compatible catalog primitives.', + 'Own props for Select Value, before merging with native element attributes.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'placeholder', + summary: '', + signature: 'placeholder?: string | undefined;', + }, + ], }, { - name: 'NavigationMenuViewport', - anchor: 'navigation-menu-viewport', + name: 'SelectValueProps', + anchor: 'select-value-props', signature: - 'NavigationMenuViewport: (props: CatalogComponentProps) => JSX.Element', + "SelectValueProps: BoxProps<'span', HTMLSpanElement> & SelectValueOwnProps", typeOnly: true, - summary: - 'Renders the `navigation-menu-viewport` part of the shadcn-compatible catalog primitives.', + summary: 'Props for Select Value.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'placeholder', + summary: '', + signature: 'placeholder?: string | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLSpanElement>;', + }, + ], }, + ], + symbols108: [ { - name: 'NavItem', - anchor: 'nav-item', + name: 'Separator', + anchor: 'separator', signature: - 'NavItem: { (props: NavItemProps): JSX.Element; (props: NavItemAsChildProps): JSX.Element; }', + 'Separator: { (props: SeparatorNativeProps): JSX.Element; (props: SeparatorAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'A generic navigation item, rendered as an `<a>` (or, with `asChild`, merged onto a child), highlighted when `active`.', + 'Visual divider, defaulting to horizontal `role="separator"`; pass\n`decorative` to drop the semantic role, or `asChild` to merge onto a\nsingle child element.', }, { - name: 'NavItemAsChildProps', - anchor: 'nav-item-as-child-props', + name: 'SeparatorAsChildProps', + anchor: 'separator-as-child-props', signature: - 'NavItemAsChildProps: Omit<JSX.IntrinsicElements["a"], "children" | "ref"> & NavItemOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + 'SeparatorAsChildProps: SeparatorOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', typeOnly: true, summary: - 'Props for {@link NavItem } rendered with `asChild`, merging onto a single child element.', + 'Props for {@link Separator } rendered with `asChild`, merging its attributes onto a single child element.', members: [ - { - name: 'active', - summary: '', - signature: 'active?: boolean | undefined;', - }, { name: 'asChild', summary: '', @@ -37597,6 +46630,16 @@ export const apiSymbolSets: Readonly< summary: '', signature: 'children: JSXElement;', }, + { + name: 'decorative', + summary: '', + signature: 'decorative?: boolean | undefined;', + }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: "vertical" | "horizontal" | undefined;', + }, { name: 'ref', summary: '', @@ -37605,19 +46648,14 @@ export const apiSymbolSets: Readonly< ], }, { - name: 'NavItemProps', - anchor: 'nav-item-props', + name: 'SeparatorNativeProps', + anchor: 'separator-native-props', signature: - 'NavItemProps: Omit<JSX.IntrinsicElements["a"], "children" | "ref"> & NavItemOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLAnchorElement>;\n}', + 'SeparatorNativeProps: Omit<JSX.IntrinsicElements["div"], "children" | "ref"> & SeparatorOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLDivElement>;\n}', typeOnly: true, summary: - 'Props for {@link NavItem } rendered as its default `<a>` element.', + 'Props for {@link Separator } rendered as its default `<div>` element.', members: [ - { - name: 'active', - summary: '', - signature: 'active?: boolean | undefined;', - }, { name: 'asChild', summary: '', @@ -37628,577 +46666,658 @@ export const apiSymbolSets: Readonly< summary: '', signature: 'children?: unknown;', }, + { + name: 'decorative', + summary: '', + signature: 'decorative?: boolean | undefined;', + }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: "vertical" | "horizontal" | undefined;', + }, { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLAnchorElement>;', + signature: 'ref?: Ref<HTMLDivElement>;', }, ], }, { - name: 'NavLink', - anchor: 'nav-link', - signature: 'NavLink: (props: NavLinkProps) => JSX.Element', - typeOnly: true, - summary: - 'A router-aware navigation link that highlights itself when its route matches the current location.', - }, - { - name: 'NavLinkProps', - anchor: 'nav-link-props', - signature: 'NavLinkProps: LinkProps & NavLinkOwnProps', + name: 'SeparatorOwnProps', + anchor: 'separator-own-props', + signature: + 'SeparatorOwnProps: {\n decorative?: boolean;\n orientation?: "horizontal" | "vertical";\n children?: unknown;\n}', typeOnly: true, - summary: 'Props for the {@link NavLink } component.', + summary: 'Props shared by both {@link Separator } call signatures.', members: [ { - name: 'active', + name: 'children', summary: '', - signature: 'active?: boolean | undefined;', + signature: 'children?: unknown;', }, { - name: 'match', + name: 'decorative', summary: '', - signature: 'match?: NavLinkMatch | undefined;', + signature: 'decorative?: boolean | undefined;', + }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: "vertical" | "horizontal" | undefined;', }, ], }, { - name: 'Page', - anchor: 'page', - signature: 'Page: (props: PageProps) => JSX.Element', - typeOnly: true, - summary: - 'Top-level page wrapper: a growing `<main>` containing a {@link Container } with vertical page padding and content spacing.', - }, - { - name: 'PageHeader', - anchor: 'page-header', - signature: 'PageHeader: (props: PageHeaderProps) => JSX.Element', - typeOnly: true, - summary: - 'Page-level header with a title, optional description, and an actions row that wraps to a new line on small screens.', - }, - { - name: 'PageHeaderProps', - anchor: 'page-header-props', - signature: - 'PageHeaderProps: Omit<BlockDivProps, "direction" | "rowFrom"> & {\n title: unknown;\n description?: unknown;\n actions?: unknown;\n direction?: never;\n rowFrom?: never;\n}', + name: 'SeparatorProps', + anchor: 'separator-props', + signature: 'SeparatorProps: SeparatorNativeProps | SeparatorAsChildProps', typeOnly: true, - summary: 'Props for the {@link PageHeader } component.', + summary: 'Union of all prop shapes accepted by {@link Separator }.', members: [ { - name: 'actions', + name: 'asChild', summary: '', - signature: 'actions?: unknown;', + signature: 'asChild?: boolean | undefined;', }, { - name: 'description', + name: 'children', summary: '', - signature: 'description?: unknown;', + signature: 'children?: unknown;', }, { - name: 'direction', + name: 'decorative', summary: '', - signature: 'direction?: undefined;', + signature: 'decorative?: boolean | undefined;', }, { - name: 'rowFrom', + name: 'orientation', summary: '', - signature: 'rowFrom?: undefined;', + signature: 'orientation?: "vertical" | "horizontal" | undefined;', }, { - name: 'title', + name: 'ref', summary: '', - signature: 'title: unknown;', + signature: + 'ref?: ((value: unknown) => void) | { current: unknown; } | ((value: HTMLDivElement | null) => void) | { current: HTMLDivElement | null; } | null | undefined;', }, ], }, + ], + symbols109: [ { - name: 'PageProps', - anchor: 'page-props', - signature: 'PageProps: MainProps', + name: 'Sheet', + anchor: 'sheet', + signature: 'Dialog: (props: DialogProps) => JSX.Element', typeOnly: true, - summary: 'Props for the {@link Page } component.', + summary: 'Coordinates the Dialog trigger, portal, overlay, and content.', + tags: { + example: [ + '```tsx\n<Dialog>\n <DialogTrigger>Open dialog</DialogTrigger>\n <DialogPortal>\n <DialogOverlay />\n <DialogContent>Confirm action</DialogContent>\n </DialogPortal>\n</Dialog>\n```', + ], + }, }, { - name: 'Pagination', - anchor: 'pagination', - signature: 'Pagination: (props: CatalogComponentProps) => JSX.Element', + name: 'SheetClose', + anchor: 'sheet-close', + signature: + 'DialogClose: { (props: DialogCloseProps): JSX.Element; (props: DialogCloseAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'Renders the `pagination` part of the shadcn-compatible catalog primitives.', + 'Renders the `dialog-close` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'PaginationContent', - anchor: 'pagination-content', + name: 'SheetContent', + anchor: 'sheet-content', signature: - 'PaginationContent: (props: CatalogComponentProps) => JSX.Element', + 'SheetContent: (props: CatalogComponentProps & { side?: "top" | "right" | "bottom" | "left"; }) => JSX.Element', typeOnly: true, summary: - 'Renders the `pagination-content` part of the shadcn-compatible catalog primitives.', + 'Sheet variant of the dialog content part; defaults to sliding in from the right.', }, { - name: 'PaginationEllipsis', - anchor: 'pagination-ellipsis', + name: 'SheetDescription', + anchor: 'sheet-description', signature: - 'PaginationEllipsis: (props: CatalogComponentProps) => JSX.Element', + 'SheetDescription: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, - summary: - 'Renders a non-interactive ellipsis marker between pagination links.', + summary: 'Sheet variant of the dialog description part.', }, { - name: 'PaginationItem', - anchor: 'pagination-item', - signature: - 'PaginationItem: (props: CatalogComponentProps) => JSX.Element', + name: 'SheetFooter', + anchor: 'sheet-footer', + signature: 'SheetFooter: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `pagination-item` part of the shadcn-compatible catalog primitives.', + 'Renders the `sheet-footer` part of the shadcn-compatible catalog primitives.', }, { - name: 'PaginationLink', - anchor: 'pagination-link', - signature: - 'PaginationLink: (props: CatalogComponentProps & { active?: boolean; }) => JSX.Element', + name: 'SheetHeader', + anchor: 'sheet-header', + signature: 'SheetHeader: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Renders a pagination page link, marking it `aria-current="page"` when `active`.', + 'Renders the `sheet-header` part of the shadcn-compatible catalog primitives.', }, { - name: 'PaginationNext', - anchor: 'pagination-next', + name: 'SheetOverlay', + anchor: 'sheet-overlay', signature: - 'PaginationNext: (props: CatalogComponentProps) => JSX.Element', + 'DialogOverlay: { (props: DialogOverlayProps): JSX.Element | null; (props: DialogOverlayAsChildProps): JSX.Element | null; }', typeOnly: true, - summary: 'Pagination link that moves to the next page.', + summary: + 'Renders the `dialog-overlay` part of `dialog`.\n\nWith `@askrjs/themes/default`, the overlay is fully styled out of the box\nwith the shared backdrop token, blur, stacking, and fade animation. Standard\nDialog and AlertDialog usage requires no additional overlay CSS; customize\nthe theme tokens instead of applying a competing background class.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'PaginationPrevious', - anchor: 'pagination-previous', + name: 'SheetPortal', + anchor: 'sheet-portal', signature: - 'PaginationPrevious: (props: CatalogComponentProps) => JSX.Element', + 'DialogPortal: (props: DialogPortalProps) => JSX.Element | null', typeOnly: true, - summary: 'Pagination link that moves to the previous page.', + summary: 'Renders a part of `dialog`.', }, { - name: 'Pill', - anchor: 'pill', - signature: 'Pill: (props: PillProps) => JSX.Element', + name: 'SheetTitle', + anchor: 'sheet-title', + signature: 'SheetTitle: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, - summary: - 'A router-aware link styled as a pill, auto-marked active by matching the current route, with an active background highlight.', + summary: 'Sheet variant of the dialog title part.', }, { - name: 'PillProps', - anchor: 'pill-props', - signature: 'PillProps: LinkProps & NavLinkOwnProps', + name: 'SheetTrigger', + anchor: 'sheet-trigger', + signature: + 'DialogTrigger: { (props: DialogTriggerProps): JSX.Element; (props: DialogTriggerAsChildProps): JSX.Element; }', typeOnly: true, - summary: 'Props for the {@link Pill } component.', - members: [ - { - name: 'active', - summary: '', - signature: 'active?: boolean | undefined;', - }, - { - name: 'match', - summary: '', - signature: 'match?: NavLinkMatch | undefined;', - }, - ], + summary: + 'Renders the `dialog-trigger` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', }, + ], + symbols110: [ { - name: 'Pills', - anchor: 'pills', - signature: - 'Pills: { (props: PillsProps): JSX.Element; (props: PillsAsChildProps): JSX.Element; }', + name: 'Sidebar', + anchor: 'sidebar', + signature: 'Sidebar: (props: SidebarProps) => JSX.Element', typeOnly: true, summary: - 'Renders a `<nav>` wrapper (or, with `asChild`, merges onto a child) for a set of {@link Pill} links.', + 'Root `<aside>` sidebar layout with configurable width, side, collapse behavior, and visual variant, exposed as data attributes for CSS.', }, { - name: 'PillsAsChildProps', - anchor: 'pills-as-child-props', + name: 'SidebarButtonProps', + anchor: 'sidebar-button-props', signature: - 'PillsAsChildProps: Omit<JSX.IntrinsicElements["nav"], "children" | "ref"> & PillsOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + 'SidebarButtonProps: JSX.IntrinsicElements["button"] & {\n active?: boolean;\n asChild?: boolean;\n size?: "default" | "sm" | "lg";\n tooltip?: string;\n tooltipSide?: SidebarTooltipSide;\n variant?: "default" | "outline";\n}', typeOnly: true, summary: - 'Props for {@link Pills } rendered with `asChild`, merging onto a single child element.', + 'Props shared by the interactive {@link Sidebar } button parts (menu button, action, trigger).', members: [ { - name: 'asChild', + name: 'active', summary: '', - signature: 'asChild: true;', + signature: 'active?: boolean | undefined;', }, { - name: 'children', + name: 'asChild', summary: '', - signature: 'children: JSXElement;', + signature: 'asChild?: boolean | undefined;', }, { - name: 'ref', + name: 'size', summary: '', - signature: 'ref?: Ref<unknown>;', + signature: 'size?: "default" | "sm" | "lg" | undefined;', }, - ], - }, - { - name: 'PillsProps', - anchor: 'pills-props', - signature: - 'PillsProps: Omit<JSX.IntrinsicElements["nav"], "children" | "ref"> & PillsOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLElement>;\n}', - typeOnly: true, - summary: - 'Props for {@link Pills } rendered as its default `<nav>` element.', - members: [ { - name: 'asChild', + name: 'tooltip', summary: '', - signature: 'asChild?: false | undefined;', + signature: 'tooltip?: string | undefined;', }, { - name: 'children', + name: 'tooltipSide', summary: '', - signature: 'children?: unknown;', + signature: 'tooltipSide?: SidebarTooltipSide | undefined;', }, { - name: 'ref', + name: 'variant', summary: '', - signature: 'ref?: Ref<HTMLElement>;', + signature: 'variant?: "default" | "outline" | undefined;', }, ], }, { - name: 'Popover', - anchor: 'popover', - signature: - 'Popover: (props: PopoverProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', - typeOnly: true, - summary: 'Renders a part of `popover`.', - }, - { - name: 'PopoverClose', - anchor: 'popover-close', - signature: - 'PopoverClose: { (props: PopoverCloseProps): JSX.Element; (props: PopoverCloseAsChildProps): JSX.Element; }', + name: 'SidebarCollapsible', + anchor: 'sidebar-collapsible', + signature: 'SidebarCollapsible: "offcanvas" | "icon" | "none"', typeOnly: true, summary: - 'Renders the `popover-close` part of `popover`.\n\nSupports polymorphic rendering via `asChild`.', + 'How a {@link Sidebar } collapses: fully off-canvas, down to icons only, or not at all.', }, { - name: 'PopoverContent', - anchor: 'popover-content', - signature: - 'PopoverContent: { (props: PopoverContentProps): JSX.Element | null; (props: PopoverContentAsChildProps): JSX.Element | null; }', + name: 'SidebarContent', + anchor: 'sidebar-content', + signature: 'SidebarContent: (props: SidebarPartProps) => JSX.Element', typeOnly: true, - summary: - 'Renders the `popover-content` part of `popover` with `role="dialog"`.\n\nSupports polymorphic rendering via `asChild`.', + summary: 'Renders the scrollable content region of a {@link Sidebar}.', }, { - name: 'PopoverContentWidth', - anchor: 'popover-content-width', - signature: "PopoverContentWidth: 'sm' | 'md' | 'lg'", + name: 'SidebarFooter', + anchor: 'sidebar-footer', + signature: 'SidebarFooter: (props: SidebarPartProps) => JSX.Element', typeOnly: true, - summary: 'Popover Content Width.', + summary: 'Renders the footer region of a {@link Sidebar}.', }, { - name: 'PopoverPortal', - anchor: 'popover-portal', - signature: - 'PopoverPortal: (props: PopoverPortalProps) => JSX.Element | null', + name: 'SidebarGroup', + anchor: 'sidebar-group', + signature: 'SidebarGroup: (props: SidebarPartProps) => JSX.Element', typeOnly: true, - summary: 'Renders a part of `popover`.', + summary: 'Groups related {@link SidebarMenu} items together.', }, { - name: 'PopoverTrigger', - anchor: 'popover-trigger', + name: 'SidebarGroupContent', + anchor: 'sidebar-group-content', signature: - 'PopoverTrigger: { (props: PopoverTriggerProps): JSX.Element; (props: PopoverTriggerAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `popover-trigger` part of `popover`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'Progress', - anchor: 'progress', - signature: 'Progress: (props: ProgressProps) => JSX.Element', + 'SidebarGroupContent: (props: SidebarPartProps) => JSX.Element', typeOnly: true, - summary: - 'Renders the `progress` part of `progress` with `role="progressbar"`.', + summary: 'Renders the content region of a {@link SidebarGroup}.', }, { - name: 'ProgressCircle', - anchor: 'progress-circle', - signature: 'ProgressCircle: (props: ProgressCircleProps) => JSX.Element', + name: 'SidebarGroupLabel', + anchor: 'sidebar-group-label', + signature: 'SidebarGroupLabel: (props: SidebarPartProps) => JSX.Element', typeOnly: true, - summary: - 'Headless circular progress indicator root.\n\nNormalizes value/max, computes percentage, exposes `--ak-progress-percentage`\nas a dynamically injected CSS custom property, and provides progress state\nto `ProgressCircleIndicator` via context.', + summary: 'Renders the label for a {@link SidebarGroup}.', }, { - name: 'ProgressCircleIndicator', - anchor: 'progress-circle-indicator', - signature: - 'ProgressCircleIndicator: { (props: ProgressCircleIndicatorProps): JSX.Element; (props: ProgressCircleIndicatorAsChildProps): JSX.Element; }', + name: 'SidebarHeader', + anchor: 'sidebar-header', + signature: 'SidebarHeader: (props: SidebarPartProps) => JSX.Element', typeOnly: true, - summary: - 'Visual indicator for `ProgressCircle`, rendering the fill/arc element.\nMust be used within a `ProgressCircle`; reads progress state from context\nand exposes it as `data-state`/`data-value`/`data-max`/`data-percentage`.', + summary: 'Renders the header region of a {@link Sidebar}.', }, { - name: 'ProgressIndicator', - anchor: 'progress-indicator', - signature: - 'ProgressIndicator: { (props: ProgressIndicatorProps): JSX.Element; (props: ProgressIndicatorAsChildProps): JSX.Element; }', + name: 'SidebarInset', + anchor: 'sidebar-inset', + signature: 'SidebarInset: (props: SidebarPartProps) => JSX.Element', typeOnly: true, - summary: - 'Renders the `progress-indicator` part of `progress`.\n\nSupports polymorphic rendering via `asChild`.', + summary: 'Renders the `<main>` content area beside the {@link Sidebar}.', }, { - name: 'RadioGroup', - anchor: 'radio-group', - signature: - 'RadioGroup: (props: RadioGroupProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', + name: 'SidebarMenu', + anchor: 'sidebar-menu', + signature: 'SidebarMenu: (props: SidebarPartProps) => JSX.Element', typeOnly: true, - summary: 'Renders a part of `radio-group`.', + summary: 'Renders a `<ul>` list of {@link SidebarMenuItem}s.', }, { - name: 'RadioGroupItem', - anchor: 'radio-group-item', + name: 'SidebarMenuAction', + anchor: 'sidebar-menu-action', signature: - 'RadioGroupItem: { (props: RadioGroupItemProps): JSX.Element; (props: RadioGroupItemAsChildProps): JSX.Element; }', + 'SidebarMenuAction: (props: SidebarButtonProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `radio-group-item` part of `radio-group` with `role="radio"`.\n\nSupports polymorphic rendering via `asChild`.', + 'Renders a secondary action button attached to a {@link SidebarMenuItem}, with an optional tooltip.', }, { - name: 'ResizableHandle', - anchor: 'resizable-handle', - signature: - 'ResizableHandle: (props: CatalogComponentProps) => JSX.Element', + name: 'SidebarMenuBadge', + anchor: 'sidebar-menu-badge', + signature: 'SidebarMenuBadge: (props: SidebarPartProps) => JSX.Element', typeOnly: true, - summary: - 'Styling-only separator slot; it does not implement resizing, pointer dragging, or keyboard controls.', + summary: 'Renders a status badge attached to a {@link SidebarMenuItem}.', }, { - name: 'ResizablePanel', - anchor: 'resizable-panel', + name: 'SidebarMenuButton', + anchor: 'sidebar-menu-button', signature: - 'ResizablePanel: (props: CatalogComponentProps) => JSX.Element', + 'SidebarMenuButton: (props: SidebarButtonProps) => JSX.Element', typeOnly: true, summary: - 'Styling-only `resizable-panel` slot; it does not implement resizing or manage panel dimensions.', + 'Clickable menu button within a {@link SidebarMenuItem}; supports `active`/`size`/`variant` state and an optional tooltip.', }, { - name: 'ResizablePanelGroup', - anchor: 'resizable-panel-group', - signature: - 'ResizablePanelGroup: (props: CatalogComponentProps) => JSX.Element', + name: 'SidebarMenuItem', + anchor: 'sidebar-menu-item', + signature: 'SidebarMenuItem: (props: SidebarPartProps) => JSX.Element', typeOnly: true, - summary: - 'Styling-only container for the `resizable-panel-group` catalog slot. It does not implement resizing.\nConsumers own pointer, keyboard, sizing, and ARIA state until a behavior primitive exists in `@askrjs/ui`.', + summary: 'Renders a single `<li>` entry within a {@link SidebarMenu}.', }, { - name: 'ScrollArea', - anchor: 'scroll-area', + name: 'SidebarPartProps', + anchor: 'sidebar-part-props', signature: - 'ScrollArea: { (props: ScrollAreaProps): JSX.Element; (props: ScrollAreaAsChildProps): JSX.Element; }', + 'SidebarPartProps: JSX.IntrinsicElements["div"] & {\n as?: keyof JSX.IntrinsicElements;\n asChild?: boolean;\n}', typeOnly: true, - summary: 'Renders a part of `scroll-area`.', + summary: + 'Props shared by the generic {@link Sidebar } structural parts (content, header, footer, group, etc.).', + members: [ + { + name: 'as', + summary: '', + signature: 'as?: keyof JSX.IntrinsicElements | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, + ], }, { - name: 'ScrollAreaCorner', - anchor: 'scroll-area-corner', + name: 'SidebarProps', + anchor: 'sidebar-props', signature: - 'ScrollAreaCorner: (props: ScrollAreaCornerProps) => JSX.Element', + 'SidebarProps: Omit<BlockElementProps<"aside">, "as" | "width" | "shrink"> & {\n collapsible?: SidebarCollapsible;\n side?: SidebarSide;\n variant?: SidebarVariant;\n width?: BlockElementProps<"aside">["width"];\n shrink?: BlockElementProps<"aside">["shrink"];\n}', typeOnly: true, - summary: 'Renders the `scroll-area-corner` part of `scroll-area`.', + summary: 'Props for the {@link Sidebar } component.', + members: [ + { + name: 'collapsible', + summary: '', + signature: 'collapsible?: SidebarCollapsible | undefined;', + }, + { + name: 'shrink', + summary: '', + signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + }, + { + name: 'side', + summary: '', + signature: 'side?: SidebarSide | undefined;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: SidebarVariant | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + }, + ], }, { - name: 'ScrollAreaScrollbar', - anchor: 'scroll-area-scrollbar', - signature: - 'ScrollAreaScrollbar: (props: ScrollAreaScrollbarProps) => JSX.Element', + name: 'SidebarRail', + anchor: 'sidebar-rail', + signature: 'SidebarRail: (props: SidebarButtonProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `scroll-area-scrollbar` part of `scroll-area` with `role="scrollbar"`.', - }, - { - name: 'ScrollAreaThumb', - anchor: 'scroll-area-thumb', - signature: - 'ScrollAreaThumb: (props: ScrollAreaThumbProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the `scroll-area-thumb` part of `scroll-area`.', + "Renders a draggable/clickable rail along the sidebar's edge for resizing or toggling it.", }, { - name: 'ScrollAreaViewport', - anchor: 'scroll-area-viewport', - signature: - 'ScrollAreaViewport: { (props: ScrollAreaViewportProps): JSX.Element; (props: ScrollAreaViewportAsChildProps): JSX.Element; }', + name: 'SidebarRailProps', + anchor: 'sidebar-rail-props', + signature: 'SidebarRailProps: SidebarButtonProps', typeOnly: true, - summary: 'Renders a part of `scroll-area`.', + summary: 'Props for the {@link SidebarRail } component.', + members: [ + { + name: 'active', + summary: '', + signature: 'active?: boolean | undefined;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, + { + name: 'size', + summary: '', + signature: 'size?: "default" | "sm" | "lg" | undefined;', + }, + { + name: 'tooltip', + summary: '', + signature: 'tooltip?: string | undefined;', + }, + { + name: 'tooltipSide', + summary: '', + signature: 'tooltipSide?: SidebarTooltipSide | undefined;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: "default" | "outline" | undefined;', + }, + ], }, { - name: 'Section', - anchor: 'section', - signature: 'Section: (props: SectionProps) => JSX.Element', + name: 'SidebarScope', + anchor: 'sidebar-scope', + signature: 'SidebarScope: (props: SidebarPartProps) => JSX.Element', typeOnly: true, summary: - 'Renders a `<section>`-element {@link Block } with vertical spacing between children and page padding.', - }, - { - name: 'SectionProps', - anchor: 'section-props', - signature: 'SectionProps: Omit<BlockElementProps<"section">, "as">', - typeOnly: true, - summary: 'Props for the {@link Section } component.', + "Scoping wrapper that establishes the sidebar's CSS/context boundary.", }, { - name: 'Select', - anchor: 'select', - signature: 'Select: (props: SelectProps) => JSX.Element', + name: 'SidebarSide', + anchor: 'sidebar-side', + signature: 'SidebarSide: "left" | "right"', typeOnly: true, - summary: 'Renders a part of `select`.', + summary: 'Which edge of the viewport a {@link Sidebar } is docked to.', }, { - name: 'SelectContent', - anchor: 'select-content', - signature: - 'SelectContent: { (props: SelectContentProps): JSX.Element | null; (props: SelectContentAsChildProps): JSX.Element | null; }', + name: 'SidebarTooltipSide', + anchor: 'sidebar-tooltip-side', + signature: 'SidebarTooltipSide: "top" | "bottom" | "left" | "right"', typeOnly: true, - summary: - 'Renders a part of `select` with `role="listbox"`.\n\nSupports polymorphic rendering via `asChild`.', + summary: "Side a sidebar button's tooltip is positioned on.", }, { - name: 'SelectGroup', - anchor: 'select-group', - signature: - 'SelectGroup: { (props: SelectGroupProps): JSX.Element; (props: SelectGroupAsChildProps): JSX.Element; }', + name: 'SidebarTrigger', + anchor: 'sidebar-trigger', + signature: 'SidebarTrigger: (props: SidebarButtonProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `select-group` part of `select` with `role="group"`.\n\nSupports polymorphic rendering via `asChild`.', + "Icon button that toggles the {@link Sidebar}'s open/collapsed state, with an optional tooltip.", }, { - name: 'SelectItem', - anchor: 'select-item', - signature: - 'SelectItem: { (props: SelectItemProps): JSX.Element | null; (props: SelectItemAsChildProps): JSX.Element | null; }', + name: 'SidebarVariant', + anchor: 'sidebar-variant', + signature: 'SidebarVariant: "sidebar" | "floating" | "inset"', typeOnly: true, - summary: - 'Renders a part of `select`.\n\nSupports polymorphic rendering via `asChild`.', + summary: 'Visual style of a {@link Sidebar }.', }, + ], + symbols111: [ { - name: 'SelectItemText', - anchor: 'select-item-text', + name: 'Skeleton', + anchor: 'skeleton', signature: - 'SelectItemText: { (props: SelectItemTextProps): JSX.Element; (props: SelectItemTextAsChildProps): JSX.Element; }', + 'Skeleton: { (props: SkeletonProps): JSX.Element; (props: SkeletonAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'SelectItemText marks the item text node so Select can resolve labels and\nstyle the text slot directly.\nRenders the `select-item-text` part of `select`.\n\nSupports polymorphic rendering via `asChild`.', + 'Loading placeholder block with configurable `width`/`height`, hidden from assistive tech via `aria-hidden`, rendered as a `<div>` or merged onto a child via `asChild`.', }, { - name: 'SelectLabel', - anchor: 'select-label', + name: 'SkeletonAsChildProps', + anchor: 'skeleton-as-child-props', signature: - 'SelectLabel: { (props: SelectLabelProps): JSX.Element | null; (props: SelectLabelAsChildProps): JSX.Element | null; }', + 'SkeletonAsChildProps: SkeletonOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', typeOnly: true, summary: - 'Renders the `select-label` part of `select`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'SelectPortal', - anchor: 'select-portal', - signature: - 'SelectPortal: (props: SelectPortalProps) => JSX.Element | null', - typeOnly: true, - summary: 'Renders a part of `select`.', + 'Props for {@link Skeleton } rendered with `asChild`, merging its attributes onto a single child element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'height', + summary: '', + signature: 'height?: string | number | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<unknown>;', + }, + { + name: 'width', + summary: '', + signature: 'width?: string | number | undefined;', + }, + ], }, { - name: 'SelectSeparator', - anchor: 'select-separator', + name: 'SkeletonOwnProps', + anchor: 'skeleton-own-props', signature: - 'SelectSeparator: { (props: SelectSeparatorProps): JSX.Element | null; (props: SelectSeparatorAsChildProps): JSX.Element | null; }', + 'SkeletonOwnProps: {\n children?: unknown;\n height?: string | number;\n width?: string | number;\n}', typeOnly: true, - summary: - 'Renders the `select-separator` part of `select` with `role="separator"`.\n\nSupports polymorphic rendering via `asChild`.', + summary: 'Props shared by both {@link Skeleton } call signatures.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'height', + summary: '', + signature: 'height?: string | number | undefined;', + }, + { + name: 'width', + summary: '', + signature: 'width?: string | number | undefined;', + }, + ], }, { - name: 'SelectTrigger', - anchor: 'select-trigger', + name: 'SkeletonProps', + anchor: 'skeleton-props', signature: - 'SelectTrigger: { (props: SelectTriggerProps): JSX.Element | null; (props: SelectTriggerAsChildProps): JSX.Element | null; }', + 'SkeletonProps: Omit<JSX.IntrinsicElements["div"], "children" | "ref"> & SkeletonOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLDivElement>;\n}', typeOnly: true, summary: - 'Renders the `select-trigger` part of `select`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'SelectTriggerSize', - anchor: 'select-trigger-size', - signature: "SelectTriggerSize: 'sm' | 'md' | 'lg'", - typeOnly: true, - summary: 'Select Trigger Size.', + 'Props for {@link Skeleton } rendered as its default `<div>` element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'height', + summary: '', + signature: 'height?: string | number | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + { + name: 'width', + summary: '', + signature: 'width?: string | number | undefined;', + }, + ], }, + ], + symbols112: [ { - name: 'SelectValue', - anchor: 'select-value', - signature: - 'SelectValue: { (props: SelectValueProps): JSX.Element | null; (props: SelectValueAsChildProps): JSX.Element | null; }', + name: 'Slider', + anchor: 'slider', + signature: 'Slider: (props: SliderProps) => JSX.Element', typeOnly: true, - summary: - 'Renders the `select-value` part of `select`.\n\nSupports polymorphic rendering via `asChild`.', + summary: 'Renders the `slider` part of `slider`.', }, { - name: 'Separator', - anchor: 'separator', - signature: - 'Separator: { (props: SeparatorNativeProps): JSX.Element; (props: SeparatorAsChildProps): JSX.Element; }', + name: 'SliderOrientation', + anchor: 'slider-orientation', + signature: "SliderOrientation: 'horizontal' | 'vertical'", typeOnly: true, - summary: - 'Visual divider, defaulting to horizontal `role="separator"`; pass\n`decorative` to drop the semantic role, or `asChild` to merge onto a\nsingle child element.', + summary: 'Slider Orientation.', }, { - name: 'SeparatorAsChildProps', - anchor: 'separator-as-child-props', + name: 'SliderOwnProps', + anchor: 'slider-own-props', signature: - 'SeparatorAsChildProps: SeparatorOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + 'SliderOwnProps: {\n /** Supports literal, nested, array-mapped, and `For`-rendered descendants. */\n children?: unknown;\n id?: string;\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n orientation?: SliderOrientation;\n disabled?: boolean;\n name?: string;\n}', typeOnly: true, summary: - 'Props for {@link Separator } rendered with `asChild`, merging its attributes onto a single child element.', + 'Own props for Slider, before merging with native element attributes.', members: [ { - name: 'asChild', + name: 'children', + summary: + 'Supports literal, nested, array-mapped, and `For`-rendered descendants.', + signature: 'children?: unknown;', + }, + { + name: 'defaultValue', summary: '', - signature: 'asChild: true;', + signature: 'defaultValue?: number | undefined;', }, { - name: 'children', + name: 'disabled', summary: '', - signature: 'children: JSXElement;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'decorative', + name: 'id', summary: '', - signature: 'decorative?: boolean | undefined;', + signature: 'id?: string | undefined;', + }, + { + name: 'max', + summary: '', + signature: 'max?: number | undefined;', + }, + { + name: 'min', + summary: '', + signature: 'min?: number | undefined;', + }, + { + name: 'name', + summary: '', + signature: 'name?: string | undefined;', + }, + { + name: 'onValueChange', + summary: '', + signature: 'onValueChange?: ((value: number) => void) | undefined;', }, { name: 'orientation', summary: '', - signature: 'orientation?: "vertical" | "horizontal" | undefined;', + signature: 'orientation?: SliderOrientation | undefined;', }, { - name: 'ref', + name: 'step', summary: '', - signature: 'ref?: Ref<unknown>;', + signature: 'step?: number | undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value?: number | undefined;', }, ], }, { - name: 'SeparatorNativeProps', - anchor: 'separator-native-props', + name: 'SliderProps', + anchor: 'slider-props', signature: - 'SeparatorNativeProps: Omit<JSX.IntrinsicElements["div"], "children" | "ref"> & SeparatorOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLDivElement>;\n}', + "SliderProps: BoxProps<'div', HTMLDivElement> & SliderOwnProps", typeOnly: true, - summary: - 'Props for {@link Separator } rendered as its default `<div>` element.', + summary: 'Props for Slider.', members: [ { name: 'asChild', @@ -38207,62 +47326,112 @@ export const apiSymbolSets: Readonly< }, { name: 'children', - summary: '', + summary: + 'Supports literal, nested, array-mapped, and `For`-rendered descendants.', signature: 'children?: unknown;', }, { - name: 'decorative', + name: 'defaultValue', summary: '', - signature: 'decorative?: boolean | undefined;', + signature: 'defaultValue?: number | undefined;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'max', + summary: '', + signature: 'max?: number | undefined;', + }, + { + name: 'min', + summary: '', + signature: 'min?: number | undefined;', + }, + { + name: 'name', + summary: '', + signature: 'name?: string | undefined;', + }, + { + name: 'onValueChange', + summary: '', + signature: 'onValueChange?: ((value: number) => void) | undefined;', }, { name: 'orientation', summary: '', - signature: 'orientation?: "vertical" | "horizontal" | undefined;', + signature: 'orientation?: SliderOrientation | undefined;', }, { name: 'ref', summary: '', signature: 'ref?: Ref<HTMLDivElement>;', }, + { + name: 'step', + summary: '', + signature: 'step?: number | undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value?: number | undefined;', + }, ], }, { - name: 'SeparatorOwnProps', - anchor: 'separator-own-props', + name: 'SliderRange', + anchor: 'slider-range', signature: - 'SeparatorOwnProps: {\n decorative?: boolean;\n orientation?: "horizontal" | "vertical";\n children?: unknown;\n}', + 'SliderRange: { (props: SliderRangeProps): JSX.Element; (props: SliderRangeAsChildProps): JSX.Element; }', typeOnly: true, - summary: 'Props shared by both {@link Separator } call signatures.', + summary: + 'Renders the `slider-range` part of `slider`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SliderRangeAsChildProps', + anchor: 'slider-range-as-child-props', + signature: 'SliderRangeAsChildProps: BoxAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Slider Range.', members: [ { - name: 'children', + name: 'asChild', summary: '', - signature: 'children?: unknown;', + signature: 'asChild: true;', }, { - name: 'decorative', + name: 'children', summary: '', - signature: 'decorative?: boolean | undefined;', + signature: 'children: JSXElement;', }, { - name: 'orientation', + name: 'ref', summary: '', - signature: 'orientation?: "vertical" | "horizontal" | undefined;', + signature: 'ref?: Ref<Element>;', }, ], }, { - name: 'SeparatorProps', - anchor: 'separator-props', - signature: 'SeparatorProps: SeparatorNativeProps | SeparatorAsChildProps', + name: 'SliderRangeProps', + anchor: 'slider-range-props', + signature: "SliderRangeProps: BoxProps<'div', HTMLDivElement>", typeOnly: true, - summary: 'Union of all prop shapes accepted by {@link Separator }.', + summary: 'Props for Slider Range.', members: [ { name: 'asChild', summary: '', - signature: 'asChild?: boolean | undefined;', + signature: 'asChild?: false | undefined;', }, { name: 'children', @@ -38270,479 +47439,579 @@ export const apiSymbolSets: Readonly< signature: 'children?: unknown;', }, { - name: 'decorative', + name: 'ref', summary: '', - signature: 'decorative?: boolean | undefined;', + signature: 'ref?: Ref<HTMLDivElement>;', }, + ], + }, + { + name: 'SliderThumb', + anchor: 'slider-thumb', + signature: + 'SliderThumb: { (props: SliderThumbProps): JSX.Element; (props: SliderThumbAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `slider-thumb` part of `slider` with `role="slider"`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'SliderThumbAsChildProps', + anchor: 'slider-thumb-as-child-props', + signature: 'SliderThumbAsChildProps: BoxAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Slider Thumb.', + members: [ { - name: 'orientation', + name: 'asChild', summary: '', - signature: 'orientation?: "vertical" | "horizontal" | undefined;', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', }, { name: 'ref', summary: '', - signature: - 'ref?: ((value: unknown) => void) | { current: unknown; } | ((value: HTMLDivElement | null) => void) | { current: HTMLDivElement | null; } | null | undefined;', + signature: 'ref?: Ref<Element>;', }, ], }, { - name: 'Sheet', - anchor: 'sheet', - signature: 'Dialog: (props: DialogProps) => JSX.Element', + name: 'SliderThumbProps', + anchor: 'slider-thumb-props', + signature: "SliderThumbProps: BoxProps<'div', HTMLDivElement>", typeOnly: true, - summary: 'Coordinates the Dialog trigger, portal, overlay, and content.', - tags: { - example: [ - '```tsx\n<Dialog>\n <DialogTrigger>Open dialog</DialogTrigger>\n <DialogPortal>\n <DialogOverlay />\n <DialogContent>Confirm action</DialogContent>\n </DialogPortal>\n</Dialog>\n```', - ], - }, + summary: 'Props for Slider Thumb.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], }, { - name: 'SheetClose', - anchor: 'sheet-close', + name: 'SliderTrack', + anchor: 'slider-track', signature: - 'DialogClose: { (props: DialogCloseProps): JSX.Element; (props: DialogCloseAsChildProps): JSX.Element; }', + 'SliderTrack: { (props: SliderTrackProps): JSX.Element; (props: SliderTrackAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'Renders the `dialog-close` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + 'Renders the `slider-track` part of `slider`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'SheetContent', - anchor: 'sheet-content', - signature: - 'SheetContent: (props: CatalogComponentProps & { side?: "top" | "right" | "bottom" | "left"; }) => JSX.Element', + name: 'SliderTrackAsChildProps', + anchor: 'slider-track-as-child-props', + signature: 'SliderTrackAsChildProps: BoxAsChildProps', typeOnly: true, summary: - 'Sheet variant of the dialog content part; defaults to sliding in from the right.', - }, - { - name: 'SheetDescription', - anchor: 'sheet-description', - signature: - 'SheetDescription: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: 'Sheet variant of the dialog description part.', + 'Props for the `asChild` (polymorphic) rendering of Slider Track.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + ], }, { - name: 'SheetFooter', - anchor: 'sheet-footer', - signature: 'SheetFooter: (props: CatalogComponentProps) => JSX.Element', + name: 'SliderTrackProps', + anchor: 'slider-track-props', + signature: "SliderTrackProps: BoxProps<'div', HTMLDivElement>", typeOnly: true, - summary: - 'Renders the `sheet-footer` part of the shadcn-compatible catalog primitives.', + summary: 'Props for Slider Track.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], }, + ], + symbols113: [ { - name: 'SheetHeader', - anchor: 'sheet-header', - signature: 'SheetHeader: (props: CatalogComponentProps) => JSX.Element', + name: 'Spinner', + anchor: 'spinner', + signature: 'Spinner: (props: SpinnerProps) => JSX.Element', typeOnly: true, summary: - 'Renders the `sheet-header` part of the shadcn-compatible catalog primitives.', + 'Indeterminate loading spinner built on `ProgressCircle`, with an accessible label (defaults to `"Loading"`) and a `size` modifier.', }, { - name: 'SheetOverlay', - anchor: 'sheet-overlay', + name: 'SpinnerOwnProps', + anchor: 'spinner-own-props', signature: - 'DialogOverlay: { (props: DialogOverlayProps): JSX.Element | null; (props: DialogOverlayAsChildProps): JSX.Element | null; }', + 'SpinnerOwnProps: Omit<ProgressCircleProps, "value" | "getValueLabel"> & {\n label?: string;\n size?: SpinnerSize;\n}', typeOnly: true, summary: - 'Renders the `dialog-overlay` part of `dialog`.\n\nWith `@askrjs/themes/default`, the overlay is fully styled out of the box\nwith the shared backdrop token, blur, stacking, and fade animation. Standard\nDialog and AlertDialog usage requires no additional overlay CSS; customize\nthe theme tokens instead of applying a competing background class.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'SheetPortal', - anchor: 'sheet-portal', - signature: - 'DialogPortal: (props: DialogPortalProps) => JSX.Element | null', - typeOnly: true, - summary: 'Renders a part of `dialog`.', + 'Props specific to {@link Spinner }, layered on top of `ProgressCircleProps`.', + members: [ + { + name: 'label', + summary: '', + signature: 'label?: string | undefined;', + }, + { + name: 'size', + summary: '', + signature: 'size?: SpinnerSize | undefined;', + }, + ], }, { - name: 'SheetTitle', - anchor: 'sheet-title', - signature: 'SheetTitle: (props: CatalogComponentProps) => JSX.Element', + name: 'SpinnerProps', + anchor: 'spinner-props', + signature: 'SpinnerProps: SpinnerOwnProps', typeOnly: true, - summary: 'Sheet variant of the dialog title part.', + summary: 'Props for the {@link Spinner } component.', + members: [ + { + name: 'label', + summary: '', + signature: 'label?: string | undefined;', + }, + { + name: 'size', + summary: '', + signature: 'size?: SpinnerSize | undefined;', + }, + ], }, { - name: 'SheetTrigger', - anchor: 'sheet-trigger', - signature: - 'DialogTrigger: { (props: DialogTriggerProps): JSX.Element; (props: DialogTriggerAsChildProps): JSX.Element; }', + name: 'SpinnerSize', + anchor: 'spinner-size', + signature: 'SpinnerSize: "sm" | "md" | "lg"', typeOnly: true, - summary: - 'Renders the `dialog-trigger` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', + summary: 'Size modifier for {@link Spinner }.', }, + ], + symbols114: [ { - name: 'Sidebar', - anchor: 'sidebar', - signature: 'Sidebar: (props: SidebarProps) => JSX.Element', + name: 'Stack', + anchor: 'stack', + signature: 'Stack: (props: StackProps) => JSX.Element', typeOnly: true, - summary: - 'Root `<aside>` sidebar layout with configurable width, side, collapse behavior, and visual variant, exposed as data attributes for CSS.', + summary: 'Vertical content flow with responsive, token-backed spacing.', }, { - name: 'SidebarButtonProps', - anchor: 'sidebar-button-props', + name: 'StackProps', + anchor: 'stack-props', signature: - 'SidebarButtonProps: JSX.IntrinsicElements["button"] & {\n active?: boolean;\n asChild?: boolean;\n size?: "default" | "sm" | "lg";\n tooltip?: string;\n tooltipSide?: SidebarTooltipSide;\n variant?: "default" | "outline";\n}', + 'StackProps: WithoutOwnedLayout<BlockProps, "direction" | "rowFrom" | "gap" | "padding" | "wrap"> & {\n direction?: never;\n gap?: ResponsiveValue<StackSpace>;\n p?: ResponsiveValue<StackSpace>;\n padding?: ResponsiveValue<StackSpace>;\n rowFrom?: never;\n wrap?: ResponsiveValue<StackWrap>;\n}', typeOnly: true, - summary: - 'Props shared by the interactive {@link Sidebar } button parts (menu button, action, trigger).', members: [ { - name: 'active', + name: 'align', + summary: '', + signature: 'align?: unknown;', + }, + { + name: 'asChild', + summary: '', + signature: 'asChild?: unknown;', + }, + { + name: 'background', + summary: '', + signature: 'background?: unknown;', + }, + { + name: 'border', + summary: '', + signature: 'border?: unknown;', + }, + { + name: 'borderBottom', + summary: '', + signature: 'borderBottom?: unknown;', + }, + { + name: 'borderRight', + summary: '', + signature: 'borderRight?: unknown;', + }, + { + name: 'borderTop', + summary: '', + signature: 'borderTop?: unknown;', + }, + { + name: 'center', + summary: '', + signature: 'center?: unknown;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'direction', + summary: '', + signature: 'direction?: undefined;', + }, + { + name: 'gap', + summary: '', + signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + }, + { + name: 'grow', + summary: '', + signature: 'grow?: unknown;', + }, + { + name: 'height', + summary: '', + signature: 'height?: unknown;', + }, + { + name: 'hide', + summary: '', + signature: 'hide?: unknown;', + }, + { + name: 'justify', + summary: '', + signature: 'justify?: unknown;', + }, + { + name: 'margin', + summary: '', + signature: 'margin?: unknown;', + }, + { + name: 'marginX', + summary: '', + signature: 'marginX?: unknown;', + }, + { + name: 'marginY', + summary: '', + signature: 'marginY?: unknown;', + }, + { + name: 'maxHeight', + summary: '', + signature: 'maxHeight?: unknown;', + }, + { + name: 'maxWidth', + summary: '', + signature: 'maxWidth?: unknown;', + }, + { + name: 'minHeight', summary: '', - signature: 'active?: boolean | undefined;', + signature: 'minHeight?: unknown;', }, { - name: 'asChild', + name: 'minWidth', summary: '', - signature: 'asChild?: boolean | undefined;', + signature: 'minWidth?: unknown;', }, { - name: 'size', + name: 'p', summary: '', - signature: 'size?: "default" | "sm" | "lg" | undefined;', + signature: 'p?: ResponsiveValue<BlockSpace> | undefined;', }, { - name: 'tooltip', + name: 'padding', summary: '', - signature: 'tooltip?: string | undefined;', + signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', }, { - name: 'tooltipSide', + name: 'paddingX', summary: '', - signature: 'tooltipSide?: SidebarTooltipSide | undefined;', + signature: 'paddingX?: unknown;', }, { - name: 'variant', + name: 'paddingY', summary: '', - signature: 'variant?: "default" | "outline" | undefined;', + signature: 'paddingY?: unknown;', }, - ], - }, - { - name: 'SidebarCollapsible', - anchor: 'sidebar-collapsible', - signature: 'SidebarCollapsible: "offcanvas" | "icon" | "none"', - typeOnly: true, - summary: - 'How a {@link Sidebar } collapses: fully off-canvas, down to icons only, or not at all.', - }, - { - name: 'SidebarContent', - anchor: 'sidebar-content', - signature: 'SidebarContent: (props: SidebarPartProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the scrollable content region of a {@link Sidebar}.', - }, - { - name: 'SidebarFooter', - anchor: 'sidebar-footer', - signature: 'SidebarFooter: (props: SidebarPartProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the footer region of a {@link Sidebar}.', - }, - { - name: 'SidebarGroup', - anchor: 'sidebar-group', - signature: 'SidebarGroup: (props: SidebarPartProps) => JSX.Element', - typeOnly: true, - summary: 'Groups related {@link SidebarMenu} items together.', - }, - { - name: 'SidebarGroupContent', - anchor: 'sidebar-group-content', - signature: - 'SidebarGroupContent: (props: SidebarPartProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the content region of a {@link SidebarGroup}.', - }, - { - name: 'SidebarGroupLabel', - anchor: 'sidebar-group-label', - signature: 'SidebarGroupLabel: (props: SidebarPartProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the label for a {@link SidebarGroup}.', - }, - { - name: 'SidebarHeader', - anchor: 'sidebar-header', - signature: 'SidebarHeader: (props: SidebarPartProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the header region of a {@link Sidebar}.', - }, - { - name: 'SidebarInset', - anchor: 'sidebar-inset', - signature: 'SidebarInset: (props: SidebarPartProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the `<main>` content area beside the {@link Sidebar}.', - }, - { - name: 'SidebarMenu', - anchor: 'sidebar-menu', - signature: 'SidebarMenu: (props: SidebarPartProps) => JSX.Element', - typeOnly: true, - summary: 'Renders a `<ul>` list of {@link SidebarMenuItem}s.', - }, - { - name: 'SidebarMenuAction', - anchor: 'sidebar-menu-action', - signature: - 'SidebarMenuAction: (props: SidebarButtonProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders a secondary action button attached to a {@link SidebarMenuItem}, with an optional tooltip.', - }, - { - name: 'SidebarMenuBadge', - anchor: 'sidebar-menu-badge', - signature: 'SidebarMenuBadge: (props: SidebarPartProps) => JSX.Element', - typeOnly: true, - summary: 'Renders a status badge attached to a {@link SidebarMenuItem}.', - }, - { - name: 'SidebarMenuButton', - anchor: 'sidebar-menu-button', - signature: - 'SidebarMenuButton: (props: SidebarButtonProps) => JSX.Element', - typeOnly: true, - summary: - 'Clickable menu button within a {@link SidebarMenuItem}; supports `active`/`size`/`variant` state and an optional tooltip.', - }, - { - name: 'SidebarMenuItem', - anchor: 'sidebar-menu-item', - signature: 'SidebarMenuItem: (props: SidebarPartProps) => JSX.Element', - typeOnly: true, - summary: 'Renders a single `<li>` entry within a {@link SidebarMenu}.', - }, - { - name: 'SidebarPartProps', - anchor: 'sidebar-part-props', - signature: - 'SidebarPartProps: JSX.IntrinsicElements["div"] & {\n as?: keyof JSX.IntrinsicElements;\n asChild?: boolean;\n}', - typeOnly: true, - summary: - 'Props shared by the generic {@link Sidebar } structural parts (content, header, footer, group, etc.).', - members: [ { - name: 'as', + name: 'radius', summary: '', - signature: 'as?: keyof JSX.IntrinsicElements | undefined;', + signature: 'radius?: unknown;', }, { - name: 'asChild', + name: 'ref', summary: '', - signature: 'asChild?: boolean | undefined;', + signature: 'ref?: unknown;', }, - ], - }, - { - name: 'SidebarProps', - anchor: 'sidebar-props', - signature: - 'SidebarProps: Omit<BlockElementProps<"aside">, "as" | "width" | "shrink"> & {\n collapsible?: SidebarCollapsible;\n side?: SidebarSide;\n variant?: SidebarVariant;\n width?: BlockElementProps<"aside">["width"];\n shrink?: BlockElementProps<"aside">["shrink"];\n}', - typeOnly: true, - summary: 'Props for the {@link Sidebar } component.', - members: [ { - name: 'collapsible', + name: 'rowFrom', summary: '', - signature: 'collapsible?: SidebarCollapsible | undefined;', + signature: 'rowFrom?: undefined;', + }, + { + name: 'shadow', + summary: '', + signature: 'shadow?: unknown;', }, { name: 'shrink', summary: '', - signature: 'shrink?: ResponsiveValue<number | boolean> | undefined;', + signature: 'shrink?: unknown;', }, { - name: 'side', + name: 'sticky', summary: '', - signature: 'side?: SidebarSide | undefined;', + signature: 'sticky?: unknown;', }, { - name: 'variant', + name: 'top', summary: '', - signature: 'variant?: SidebarVariant | undefined;', + signature: 'top?: unknown;', }, { name: 'width', summary: '', - signature: 'width?: ResponsiveValue<BlockSize> | undefined;', + signature: 'width?: unknown;', + }, + { + name: 'wrap', + summary: '', + signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + }, + { + name: 'zIndex', + summary: '', + signature: 'zIndex?: unknown;', }, ], }, + ], + symbols115: [ { - name: 'SidebarRail', - anchor: 'sidebar-rail', - signature: 'SidebarRail: (props: SidebarButtonProps) => JSX.Element', + name: 'Switch', + anchor: 'switch', + signature: + 'Switch: { (props: SwitchButtonProps): JSX.Element; (props: SwitchAsChildProps): JSX.Element; }', typeOnly: true, summary: - "Renders a draggable/clickable rail along the sidebar's edge for resizing or toggling it.", + 'Renders the `switch` part of `switch` with `role="switch"`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'SidebarRailProps', - anchor: 'sidebar-rail-props', - signature: 'SidebarRailProps: SidebarButtonProps', + name: 'SwitchAsChildProps', + anchor: 'switch-as-child-props', + signature: + 'SwitchAsChildProps: SwitchOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<Element>;\n type?: never;\n}', typeOnly: true, - summary: 'Props for the {@link SidebarRail } component.', + summary: 'Props for the `asChild` (polymorphic) rendering of Switch.', members: [ { - name: 'active', + name: 'asChild', summary: '', - signature: 'active?: boolean | undefined;', + signature: 'asChild: true;', }, { - name: 'asChild', + name: 'checked', summary: '', - signature: 'asChild?: boolean | undefined;', + signature: 'checked?: boolean | undefined;', }, { - name: 'size', + name: 'children', summary: '', - signature: 'size?: "default" | "sm" | "lg" | undefined;', + signature: 'children: JSXElement;', }, { - name: 'tooltip', + name: 'defaultChecked', summary: '', - signature: 'tooltip?: string | undefined;', + signature: 'defaultChecked?: boolean | undefined;', }, { - name: 'tooltipSide', + name: 'disabled', summary: '', - signature: 'tooltipSide?: SidebarTooltipSide | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'variant', + name: 'name', summary: '', - signature: 'variant?: "default" | "outline" | undefined;', + signature: 'name?: string | undefined;', + }, + { + name: 'onCheckedChange', + summary: '', + signature: + 'onCheckedChange?: ((checked: boolean) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'required', + summary: '', + signature: 'required?: boolean | undefined;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value?: string | undefined;', }, ], }, { - name: 'SidebarScope', - anchor: 'sidebar-scope', - signature: 'SidebarScope: (props: SidebarPartProps) => JSX.Element', - typeOnly: true, - summary: - "Scoping wrapper that establishes the sidebar's CSS/context boundary.", - }, - { - name: 'SidebarSide', - anchor: 'sidebar-side', - signature: 'SidebarSide: "left" | "right"', - typeOnly: true, - summary: 'Which edge of the viewport a {@link Sidebar } is docked to.', - }, - { - name: 'SidebarTooltipSide', - anchor: 'sidebar-tooltip-side', - signature: 'SidebarTooltipSide: "top" | "bottom" | "left" | "right"', - typeOnly: true, - summary: "Side a sidebar button's tooltip is positioned on.", - }, - { - name: 'SidebarTrigger', - anchor: 'sidebar-trigger', - signature: 'SidebarTrigger: (props: SidebarButtonProps) => JSX.Element', - typeOnly: true, - summary: - "Icon button that toggles the {@link Sidebar}'s open/collapsed state, with an optional tooltip.", - }, - { - name: 'SidebarVariant', - anchor: 'sidebar-variant', - signature: 'SidebarVariant: "sidebar" | "floating" | "inset"', - typeOnly: true, - summary: 'Visual style of a {@link Sidebar }.', - }, - { - name: 'Skeleton', - anchor: 'skeleton', - signature: - 'Skeleton: { (props: SkeletonProps): JSX.Element; (props: SkeletonAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Loading placeholder block with configurable `width`/`height`, hidden from assistive tech via `aria-hidden`, rendered as a `<div>` or merged onto a child via `asChild`.', - }, - { - name: 'SkeletonAsChildProps', - anchor: 'skeleton-as-child-props', + name: 'SwitchButtonProps', + anchor: 'switch-button-props', signature: - 'SkeletonAsChildProps: SkeletonOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + "SwitchButtonProps: Omit<JSX.IntrinsicElements['button'], 'children' | 'onClick' | 'type' | 'ref'> & SwitchOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLButtonElement>;\n type?: 'button' | 'submit' | 'reset';\n}", typeOnly: true, - summary: - 'Props for {@link Skeleton } rendered with `asChild`, merging its attributes onto a single child element.', + summary: 'Props for Switch Button.', members: [ { name: 'asChild', summary: '', - signature: 'asChild: true;', + signature: 'asChild?: false | undefined;', + }, + { + name: 'checked', + summary: '', + signature: 'checked?: boolean | undefined;', }, { name: 'children', summary: '', - signature: 'children: JSXElement;', + signature: 'children?: unknown;', }, { - name: 'height', + name: 'defaultChecked', summary: '', - signature: 'height?: string | number | undefined;', + signature: 'defaultChecked?: boolean | undefined;', + }, + { + name: 'onCheckedChange', + summary: '', + signature: + 'onCheckedChange?: ((checked: boolean) => void) | undefined;', }, { name: 'ref', summary: '', - signature: 'ref?: Ref<unknown>;', + signature: 'ref?: Ref<HTMLButtonElement>;', }, { - name: 'width', + name: 'required', summary: '', - signature: 'width?: string | number | undefined;', + signature: 'required?: boolean | undefined;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', }, ], }, { - name: 'SkeletonOwnProps', - anchor: 'skeleton-own-props', + name: 'SwitchOwnProps', + anchor: 'switch-own-props', signature: - 'SkeletonOwnProps: {\n children?: unknown;\n height?: string | number;\n width?: string | number;\n}', + 'SwitchOwnProps: {\n children?: unknown;\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n disabled?: boolean;\n required?: boolean;\n name?: string;\n value?: string;\n}', typeOnly: true, - summary: 'Props shared by both {@link Skeleton } call signatures.', + summary: + 'Own props for Switch, before merging with native element attributes.', members: [ + { + name: 'checked', + summary: '', + signature: 'checked?: boolean | undefined;', + }, { name: 'children', summary: '', signature: 'children?: unknown;', }, { - name: 'height', + name: 'defaultChecked', summary: '', - signature: 'height?: string | number | undefined;', + signature: 'defaultChecked?: boolean | undefined;', }, { - name: 'width', + name: 'disabled', summary: '', - signature: 'width?: string | number | undefined;', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'name', + summary: '', + signature: 'name?: string | undefined;', + }, + { + name: 'onCheckedChange', + summary: '', + signature: + 'onCheckedChange?: ((checked: boolean) => void) | undefined;', + }, + { + name: 'required', + summary: '', + signature: 'required?: boolean | undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value?: string | undefined;', }, ], }, { - name: 'SkeletonProps', - anchor: 'skeleton-props', - signature: - 'SkeletonProps: Omit<JSX.IntrinsicElements["div"], "children" | "ref"> & SkeletonOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLDivElement>;\n}', + name: 'SwitchProps', + anchor: 'switch-props', + signature: 'SwitchProps: SwitchButtonProps | SwitchAsChildProps', typeOnly: true, - summary: - 'Props for {@link Skeleton } rendered as its default `<div>` element.', + summary: 'Props for Switch.', members: [ { name: 'asChild', summary: '', - signature: 'asChild?: false | undefined;', + signature: 'asChild?: boolean | undefined;', + }, + { + name: 'checked', + summary: '', + signature: 'checked?: boolean | undefined;', }, { name: 'children', @@ -38750,172 +48019,174 @@ export const apiSymbolSets: Readonly< signature: 'children?: unknown;', }, { - name: 'height', + name: 'defaultChecked', summary: '', - signature: 'height?: string | number | undefined;', + signature: 'defaultChecked?: boolean | undefined;', + }, + { + name: 'onCheckedChange', + summary: '', + signature: + 'onCheckedChange?: ((checked: boolean) => void) | undefined;', }, { name: 'ref', summary: '', - signature: 'ref?: Ref<HTMLDivElement>;', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLButtonElement | null) => void) | { current: HTMLButtonElement | null; } | null | undefined;', }, { - name: 'width', + name: 'required', summary: '', - signature: 'width?: string | number | undefined;', + signature: 'required?: boolean | undefined;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', }, ], }, + ], + symbols116: [ { - name: 'Slider', - anchor: 'slider', - signature: 'Slider: (props: SliderProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the `slider` part of `slider`.', - }, - { - name: 'SliderRange', - anchor: 'slider-range', - signature: - 'SliderRange: { (props: SliderRangeProps): JSX.Element; (props: SliderRangeAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `slider-range` part of `slider`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'SliderThumb', - anchor: 'slider-thumb', - signature: - 'SliderThumb: { (props: SliderThumbProps): JSX.Element; (props: SliderThumbAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `slider-thumb` part of `slider` with `role="slider"`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'SliderTrack', - anchor: 'slider-track', + name: 'Table', + anchor: 'table', signature: - 'SliderTrack: { (props: SliderTrackProps): JSX.Element; (props: SliderTrackAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `slider-track` part of `slider`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'Sonner', - anchor: 'sonner', - signature: 'Sonner: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Alias of {@link Toaster} kept for shadcn/sonner API compatibility.', - }, - { - name: 'Spinner', - anchor: 'spinner', - signature: 'Spinner: (props: SpinnerProps) => JSX.Element', + 'Table: { (props: TableProps): JSX.Element; (props: TableAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'Indeterminate loading spinner built on `ProgressCircle`, with an accessible label (defaults to `"Loading"`) and a `size` modifier.', + 'Semantic table primitive family.\nRenders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'SpinnerOwnProps', - anchor: 'spinner-own-props', - signature: - 'SpinnerOwnProps: Omit<ProgressCircleProps, "value" | "getValueLabel"> & {\n label?: string;\n size?: SpinnerSize;\n}', + name: 'TableAsChildProps', + anchor: 'table-as-child-props', + signature: 'TableAsChildProps: TableAsChildBaseProps', typeOnly: true, - summary: - 'Props specific to {@link Spinner }, layered on top of `ProgressCircleProps`.', + summary: 'Props for the `asChild` (polymorphic) rendering of Table.', members: [ { - name: 'label', + name: 'asChild', summary: '', - signature: 'label?: string | undefined;', + signature: 'asChild: true;', }, { - name: 'size', + name: 'children', summary: '', - signature: 'size?: SpinnerSize | undefined;', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', }, ], }, { - name: 'SpinnerProps', - anchor: 'spinner-props', - signature: 'SpinnerProps: SpinnerOwnProps', + name: 'TableBody', + anchor: 'table-body', + signature: + 'TableBody: { (props: TableBodyProps): JSX.Element; (props: TableBodyAsChildProps): JSX.Element; }', typeOnly: true, - summary: 'Props for the {@link Spinner } component.', + summary: + 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TableBodyAsChildProps', + anchor: 'table-body-as-child-props', + signature: 'TableBodyAsChildProps: TableAsChildBaseProps', + typeOnly: true, + summary: 'Props for the `asChild` (polymorphic) rendering of Table Body.', members: [ { - name: 'label', + name: 'asChild', summary: '', - signature: 'label?: string | undefined;', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', }, { - name: 'size', + name: 'ref', summary: '', - signature: 'size?: SpinnerSize | undefined;', + signature: 'ref?: Ref<Element>;', }, ], }, { - name: 'SpinnerSize', - anchor: 'spinner-size', - signature: 'SpinnerSize: "sm" | "md" | "lg"', - typeOnly: true, - summary: 'Size modifier for {@link Spinner }.', - }, - { - name: 'Stack', - anchor: 'stack', - signature: 'Stack: (props: StackProps) => JSX.Element', - typeOnly: true, - summary: 'Vertical content flow with responsive, token-backed spacing.', - }, - { - name: 'StackProps', - anchor: 'stack-props', + name: 'TableBodyProps', + anchor: 'table-body-props', signature: - 'StackProps: WithoutOwnedLayout<BlockProps, "direction" | "rowFrom" | "gap" | "padding" | "wrap"> & {\n direction?: never;\n gap?: ResponsiveValue<StackSpace>;\n p?: ResponsiveValue<StackSpace>;\n padding?: ResponsiveValue<StackSpace>;\n rowFrom?: never;\n wrap?: ResponsiveValue<StackWrap>;\n}', + "TableBodyProps: TableNativeProps<'tbody', HTMLTableSectionElement> | TableBodyAsChildProps", typeOnly: true, + summary: 'Props for Table Body.', members: [ - { - name: 'align', - summary: '', - signature: 'align?: unknown;', - }, { name: 'asChild', summary: '', - signature: 'asChild?: unknown;', + signature: 'asChild?: boolean | undefined;', }, { - name: 'background', + name: 'children', summary: '', - signature: 'background?: unknown;', + signature: 'children?: unknown;', }, { - name: 'border', + name: 'ref', summary: '', - signature: 'border?: unknown;', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLTableSectionElement | null) => void) | { current: HTMLTableSectionElement | null; } | null | undefined;', }, + ], + }, + { + name: 'TableCaption', + anchor: 'table-caption', + signature: + 'TableCaption: { (props: TableCaptionProps): JSX.Element; (props: TableCaptionAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TableCaptionAsChildProps', + anchor: 'table-caption-as-child-props', + signature: 'TableCaptionAsChildProps: TableAsChildBaseProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Table Caption.', + members: [ { - name: 'borderBottom', + name: 'asChild', summary: '', - signature: 'borderBottom?: unknown;', + signature: 'asChild: true;', }, { - name: 'borderRight', + name: 'children', summary: '', - signature: 'borderRight?: unknown;', + signature: 'children: JSXElement;', }, { - name: 'borderTop', + name: 'ref', summary: '', - signature: 'borderTop?: unknown;', + signature: 'ref?: Ref<Element>;', }, + ], + }, + { + name: 'TableCaptionProps', + anchor: 'table-caption-props', + signature: + "TableCaptionProps: TableNativeProps<'caption', HTMLTableCaptionElement> | TableCaptionAsChildProps", + typeOnly: true, + summary: 'Props for Table Caption.', + members: [ { - name: 'center', + name: 'asChild', summary: '', - signature: 'center?: unknown;', + signature: 'asChild?: boolean | undefined;', }, { name: 'children', @@ -38923,251 +48194,276 @@ export const apiSymbolSets: Readonly< signature: 'children?: unknown;', }, { - name: 'direction', + name: 'ref', summary: '', - signature: 'direction?: undefined;', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLTableCaptionElement | null) => void) | { current: HTMLTableCaptionElement | null; } | null | undefined;', }, + ], + }, + { + name: 'TableCell', + anchor: 'table-cell', + signature: + 'TableCell: { (props: TableCellProps): JSX.Element; (props: TableCellAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TableCellAsChildProps', + anchor: 'table-cell-as-child-props', + signature: 'TableCellAsChildProps: TableAsChildBaseProps', + typeOnly: true, + summary: 'Props for the `asChild` (polymorphic) rendering of Table Cell.', + members: [ { - name: 'gap', + name: 'asChild', summary: '', - signature: 'gap?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'asChild: true;', }, { - name: 'grow', + name: 'children', summary: '', - signature: 'grow?: unknown;', + signature: 'children: JSXElement;', }, { - name: 'height', + name: 'ref', summary: '', - signature: 'height?: unknown;', + signature: 'ref?: Ref<Element>;', }, + ], + }, + { + name: 'TableCellProps', + anchor: 'table-cell-props', + signature: + "TableCellProps: TableNativeProps<'td', HTMLTableCellElement> | TableCellAsChildProps", + typeOnly: true, + summary: 'Props for Table Cell.', + members: [ { - name: 'hide', + name: 'asChild', summary: '', - signature: 'hide?: unknown;', + signature: 'asChild?: boolean | undefined;', }, { - name: 'justify', + name: 'children', summary: '', - signature: 'justify?: unknown;', + signature: 'children?: unknown;', }, { - name: 'margin', + name: 'ref', summary: '', - signature: 'margin?: unknown;', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLTableCellElement | null) => void) | { current: HTMLTableCellElement | null; } | null | undefined;', }, + ], + }, + { + name: 'TableFoot', + anchor: 'table-foot', + signature: + 'TableFoot: { (props: TableFootProps): JSX.Element; (props: TableFootAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TableFootAsChildProps', + anchor: 'table-foot-as-child-props', + signature: 'TableFootAsChildProps: TableAsChildBaseProps', + typeOnly: true, + summary: 'Props for the `asChild` (polymorphic) rendering of Table Foot.', + members: [ { - name: 'marginX', + name: 'asChild', summary: '', - signature: 'marginX?: unknown;', + signature: 'asChild: true;', }, { - name: 'marginY', + name: 'children', summary: '', - signature: 'marginY?: unknown;', + signature: 'children: JSXElement;', }, { - name: 'maxHeight', + name: 'ref', summary: '', - signature: 'maxHeight?: unknown;', + signature: 'ref?: Ref<Element>;', }, + ], + }, + { + name: 'TableFootProps', + anchor: 'table-foot-props', + signature: + "TableFootProps: TableNativeProps<'tfoot', HTMLTableSectionElement> | TableFootAsChildProps", + typeOnly: true, + summary: 'Props for Table Foot.', + members: [ { - name: 'maxWidth', + name: 'asChild', summary: '', - signature: 'maxWidth?: unknown;', + signature: 'asChild?: boolean | undefined;', }, { - name: 'minHeight', + name: 'children', summary: '', - signature: 'minHeight?: unknown;', + signature: 'children?: unknown;', }, { - name: 'minWidth', + name: 'ref', summary: '', - signature: 'minWidth?: unknown;', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLTableSectionElement | null) => void) | { current: HTMLTableSectionElement | null; } | null | undefined;', }, + ], + }, + { + name: 'TableHead', + anchor: 'table-head', + signature: + 'TableHead: { (props: TableHeadProps): JSX.Element; (props: TableHeadAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TableHeadAsChildProps', + anchor: 'table-head-as-child-props', + signature: 'TableHeadAsChildProps: TableAsChildBaseProps', + typeOnly: true, + summary: 'Props for the `asChild` (polymorphic) rendering of Table Head.', + members: [ { - name: 'p', + name: 'asChild', summary: '', - signature: 'p?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'asChild: true;', }, { - name: 'padding', + name: 'children', summary: '', - signature: 'padding?: ResponsiveValue<BlockSpace> | undefined;', + signature: 'children: JSXElement;', }, { - name: 'paddingX', + name: 'ref', summary: '', - signature: 'paddingX?: unknown;', + signature: 'ref?: Ref<Element>;', }, + ], + }, + { + name: 'TableHeaderCell', + anchor: 'table-header-cell', + signature: + 'TableHeaderCell: { (props: TableHeaderCellProps): JSX.Element; (props: TableHeaderCellAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TableHeaderCellAsChildProps', + anchor: 'table-header-cell-as-child-props', + signature: 'TableHeaderCellAsChildProps: TableAsChildBaseProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Table Header Cell.', + members: [ { - name: 'paddingY', + name: 'asChild', summary: '', - signature: 'paddingY?: unknown;', + signature: 'asChild: true;', }, { - name: 'radius', + name: 'children', summary: '', - signature: 'radius?: unknown;', + signature: 'children: JSXElement;', }, { name: 'ref', summary: '', - signature: 'ref?: unknown;', + signature: 'ref?: Ref<Element>;', }, + ], + }, + { + name: 'TableHeaderCellProps', + anchor: 'table-header-cell-props', + signature: + "TableHeaderCellProps: TableNativeProps<'th', HTMLTableCellElement> | TableHeaderCellAsChildProps", + typeOnly: true, + summary: 'Props for Table Header Cell.', + members: [ { - name: 'rowFrom', + name: 'asChild', summary: '', - signature: 'rowFrom?: undefined;', + signature: 'asChild?: boolean | undefined;', }, { - name: 'shadow', + name: 'children', summary: '', - signature: 'shadow?: unknown;', + signature: 'children?: unknown;', }, { - name: 'shrink', + name: 'ref', summary: '', - signature: 'shrink?: unknown;', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLTableCellElement | null) => void) | { current: HTMLTableCellElement | null; } | null | undefined;', }, + ], + }, + { + name: 'TableHeadProps', + anchor: 'table-head-props', + signature: + "TableHeadProps: TableNativeProps<'thead', HTMLTableSectionElement> | TableHeadAsChildProps", + typeOnly: true, + summary: 'Props for Table Head.', + members: [ { - name: 'sticky', + name: 'asChild', summary: '', - signature: 'sticky?: unknown;', + signature: 'asChild?: boolean | undefined;', }, { - name: 'top', + name: 'children', summary: '', - signature: 'top?: unknown;', + signature: 'children?: unknown;', }, { - name: 'width', + name: 'ref', summary: '', - signature: 'width?: unknown;', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLTableSectionElement | null) => void) | { current: HTMLTableSectionElement | null; } | null | undefined;', }, + ], + }, + { + name: 'TableProps', + anchor: 'table-props', + signature: + "TableProps: TableNativeProps<'table', HTMLTableElement> | TableAsChildBaseProps", + typeOnly: true, + summary: 'Props for Table.', + members: [ { - name: 'wrap', + name: 'asChild', summary: '', - signature: 'wrap?: ResponsiveValue<boolean> | undefined;', + signature: 'asChild?: boolean | undefined;', }, { - name: 'zIndex', + name: 'children', summary: '', - signature: 'zIndex?: unknown;', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLTableElement | null) => void) | { current: HTMLTableElement | null; } | null | undefined;', }, ], }, - { - name: 'Stat', - anchor: 'stat', - signature: 'Stat: (props: StatProps) => JSX.Element', - typeOnly: true, - summary: 'Container for a labeled statistic (label, value, description).', - }, - { - name: 'StatDescription', - anchor: 'stat-description', - signature: - 'StatDescription: (props: StatDescriptionProps) => JSX.Element', - typeOnly: true, - summary: 'Renders supporting description text for a {@link Stat}.', - }, - { - name: 'StatLabel', - anchor: 'stat-label', - signature: 'StatLabel: (props: StatLabelProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the label of a {@link Stat}.', - }, - { - name: 'StatValue', - anchor: 'stat-value', - signature: 'StatValue: (props: StatValueProps) => JSX.Element', - typeOnly: true, - summary: 'Renders the primary value of a {@link Stat}.', - }, - { - name: 'Switch', - anchor: 'switch', - signature: - 'Switch: { (props: SwitchButtonProps): JSX.Element; (props: SwitchAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `switch` part of `switch` with `role="switch"`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'Tab', - anchor: 'tab', - signature: 'Tab: (props: TabProps) => JSX.Element', - typeOnly: true, - summary: - 'A router-aware link styled as a tab, auto-marked active by matching the current route (see {@link NavLinkProps.match}).', - }, - { - name: 'Table', - anchor: 'table', - signature: - 'Table: { (props: TableProps): JSX.Element; (props: TableAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Semantic table primitive family.\nRenders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'TableBody', - anchor: 'table-body', - signature: - 'TableBody: { (props: TableBodyProps): JSX.Element; (props: TableBodyAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'TableCaption', - anchor: 'table-caption', - signature: - 'TableCaption: { (props: TableCaptionProps): JSX.Element; (props: TableCaptionAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'TableCell', - anchor: 'table-cell', - signature: - 'TableCell: { (props: TableCellProps): JSX.Element; (props: TableCellAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'TableFoot', - anchor: 'table-foot', - signature: - 'TableFoot: { (props: TableFootProps): JSX.Element; (props: TableFootAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'TableHead', - anchor: 'table-head', - signature: - 'TableHead: { (props: TableHeadProps): JSX.Element; (props: TableHeadAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'TableHeaderCell', - anchor: 'table-header-cell', - signature: - 'TableHeaderCell: { (props: TableHeaderCellProps): JSX.Element; (props: TableHeaderCellAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', - }, { name: 'TableRow', anchor: 'table-row', @@ -39178,59 +48474,91 @@ export const apiSymbolSets: Readonly< 'Renders a part of `table`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'TabProps', - anchor: 'tab-props', - signature: 'TabProps: LinkProps & NavLinkOwnProps', + name: 'TableRowAsChildProps', + anchor: 'table-row-as-child-props', + signature: 'TableRowAsChildProps: TableAsChildBaseProps', typeOnly: true, - summary: 'Props for the {@link Tab } component.', + summary: 'Props for the `asChild` (polymorphic) rendering of Table Row.', members: [ { - name: 'active', + name: 'asChild', summary: '', - signature: 'active?: boolean | undefined;', + signature: 'asChild: true;', }, { - name: 'match', + name: 'children', summary: '', - signature: 'match?: NavLinkMatch | undefined;', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', }, ], }, { - name: 'Tabs', - anchor: 'tabs', - signature: - 'Tabs: { (props: TabsProps): JSX.Element; (props: TabsAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders a `<nav>` wrapper (or, with `asChild`, merges onto a child) for a set of {@link Tab} links.', - }, - { - name: 'TabsAsChildProps', - anchor: 'tabs-as-child-props', + name: 'TableRowProps', + anchor: 'table-row-props', signature: - 'TabsAsChildProps: Omit<JSX.IntrinsicElements["nav"], "children" | "ref"> & TabsOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<unknown>;\n}', + "TableRowProps: TableNativeProps<'tr', HTMLTableRowElement> | TableRowAsChildProps", typeOnly: true, - summary: - 'Props for {@link Tabs } rendered with `asChild`, merging onto a single child element.', + summary: 'Props for Table Row.', members: [ { name: 'asChild', summary: '', - signature: 'asChild: true;', + signature: 'asChild?: boolean | undefined;', }, { name: 'children', summary: '', - signature: 'children: JSXElement;', + signature: 'children?: unknown;', }, { name: 'ref', summary: '', - signature: 'ref?: Ref<unknown>;', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLTableRowElement | null) => void) | { current: HTMLTableRowElement | null; } | null | undefined;', }, ], }, + ], + symbols117: [ + { + name: 'Pill', + anchor: 'pill', + signature: 'Pill: (props: PillProps) => JSX.Element', + typeOnly: true, + summary: + 'A router-aware link styled as a pill, auto-marked active by matching the current route, with an active background highlight.', + }, + { + name: 'Pills', + anchor: 'pills', + signature: + 'Pills: { (props: PillsProps): JSX.Element; (props: PillsAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a `<nav>` wrapper (or, with `asChild`, merges onto a child) for a set of {@link Pill} links.', + }, + { + name: 'Tab', + anchor: 'tab', + signature: 'Tab: (props: TabProps) => JSX.Element', + typeOnly: true, + summary: + 'A router-aware link styled as a tab, auto-marked active by matching the current route (see {@link NavLinkProps.match}).', + }, + { + name: 'Tabs', + anchor: 'tabs', + signature: + 'Tabs: { (props: TabsProps): JSX.Element; (props: TabsAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders a `<nav>` wrapper (or, with `asChild`, merges onto a child) for a set of {@link Tab} links.', + }, { name: 'TabsContent', anchor: 'tabs-content', @@ -39247,32 +48575,6 @@ export const apiSymbolSets: Readonly< summary: 'Styling-only tabs-list slot; it does not own tab selection, ARIA state, or keyboard behavior.', }, - { - name: 'TabsProps', - anchor: 'tabs-props', - signature: - 'TabsProps: Omit<JSX.IntrinsicElements["nav"], "children" | "ref"> & TabsOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLElement>;\n}', - typeOnly: true, - summary: - 'Props for {@link Tabs } rendered as its default `<nav>` element.', - members: [ - { - name: 'asChild', - summary: '', - signature: 'asChild?: false | undefined;', - }, - { - name: 'children', - summary: '', - signature: 'children?: unknown;', - }, - { - name: 'ref', - summary: '', - signature: 'ref?: Ref<HTMLElement>;', - }, - ], - }, { name: 'TabsTrigger', anchor: 'tabs-trigger', @@ -39282,6 +48584,8 @@ export const apiSymbolSets: Readonly< summary: 'Styling-only trigger button; it does not select or associate a tab panel.', }, + ], + symbols118: [ { name: 'Text', anchor: 'text', @@ -39291,15 +48595,6 @@ export const apiSymbolSets: Readonly< summary: 'Typography primitive: renders any {@link TextElement} (default `<p>`) and turns `size`/`tone`/`weight`/`font`/`numeric`/`wrap`/`truncate` into data attributes for CSS styling.', }, - { - name: 'Textarea', - anchor: 'textarea', - signature: - 'Textarea: { (props: TextareaElementProps): JSX.Element; (props: TextareaAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `textarea` part of `textarea`.\n\nSupports polymorphic rendering via `asChild`.', - }, { name: 'TextElement', anchor: 'text-element', @@ -39411,223 +48706,600 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'White-space wrapping behavior for {@link Text}.', }, + ], + symbols119: [ { - name: 'theme', - anchor: 'theme', - signature: 'theme: () => ThemeScopeValue', + name: 'Textarea', + anchor: 'textarea', + signature: + 'Textarea: { (props: TextareaElementProps): JSX.Element; (props: TextareaAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'Reads the current {@link ThemeScopeValue} from the nearest enclosing {@link ThemeScope}.', + 'Renders the `textarea` part of `textarea`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'ThemeName', - anchor: 'theme-name', + name: 'TextareaAsChildProps', + anchor: 'textarea-as-child-props', signature: - 'ThemeName: "light" | "dark" | "system" | CatThemeName | (string & {})', + 'TextareaAsChildProps: TextareaOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<Element>;\n}', + typeOnly: true, + summary: 'Props for the `asChild` (polymorphic) rendering of Textarea.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'tabIndex', + summary: '', + signature: 'tabIndex?: number | undefined;', + }, + ], + }, + { + name: 'TextareaElementProps', + anchor: 'textarea-element-props', + signature: + "TextareaElementProps: Omit<JSX.IntrinsicElements['textarea'], 'children' | 'ref'> & TextareaOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLTextAreaElement>;\n}", + typeOnly: true, + summary: 'Props for Textarea Element.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLTextAreaElement>;', + }, + ], + }, + { + name: 'TextareaOwnProps', + anchor: 'textarea-own-props', + signature: + 'TextareaOwnProps: {\n children?: unknown;\n disabled?: boolean;\n tabIndex?: number;\n}', typeOnly: true, summary: - 'Any theme identifier accepted by {@link ThemeScope}: `"light"`, `"dark"`, `"system"`, a {@link CatThemeName}, or a custom string.', + 'Own props for Textarea, before merging with native element attributes.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'tabIndex', + summary: '', + signature: 'tabIndex?: number | undefined;', + }, + ], }, { - name: 'ThemeOption', - anchor: 'theme-option', - signature: 'ThemeOption: {\n value: ThemeName;\n label: string;\n}', + name: 'TextareaProps', + anchor: 'textarea-props', + signature: 'TextareaProps: TextareaElementProps | TextareaAsChildProps', + typeOnly: true, + summary: 'Props for Textarea.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLTextAreaElement | null) => void) | { current: HTMLTextAreaElement | null; } | null | undefined;', + }, + ], + }, + ], + symbols120: [ + { + name: 'Toast', + anchor: 'toast', + signature: 'Toast: (props: ToastProps) => JSX.Element | null', typeOnly: true, summary: - 'A theme choice offered by {@link ThemePicker}/{@link ThemeToggle}: a `value` paired with a display `label`.', + 'Toast registers a notification entry with the host and returns no DOM on\nits own.', }, { - name: 'ThemePicker', - anchor: 'theme-picker', - signature: 'ThemePicker: (props: ThemePickerProps) => JSX.Element', + name: 'ToastAction', + anchor: 'toast-action', + signature: + 'ToastAction: { (props: ToastActionProps): JSX.Element; (props: ToastActionAsChildProps): JSX.Element; }', typeOnly: true, summary: - "A `<select>` bound to the current {@link theme}, listing `themes` (defaults to the enclosing scope's options).", + 'ToastAction closes the toast after handling a user-triggered action.\nRenders the `toast-action` part of `toast`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'ThemePickerProps', - anchor: 'theme-picker-props', + name: 'ToastActionAsChildProps', + anchor: 'toast-action-as-child-props', + signature: 'ToastActionAsChildProps: ButtonLikeAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Toast Action.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', + }, + ], + }, + { + name: 'ToastActionProps', + anchor: 'toast-action-props', signature: - 'ThemePickerProps: Omit<JSX.IntrinsicElements["select"], "children" | "value" | "defaultValue" | "onChange"> & {\n themes?: readonly ThemeOption[];\n label?: string;\n}', + "ToastActionProps: ButtonLikeProps<'button', HTMLButtonElement>", typeOnly: true, - summary: 'Props for the {@link ThemePicker} component.', + summary: 'Props for Toast Action.', members: [ { - name: 'label', + name: 'asChild', summary: '', - signature: 'label?: string | undefined;', + signature: 'asChild?: false | undefined;', }, { - name: 'themes', + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', + }, + ], + }, + { + name: 'ToastClose', + anchor: 'toast-close', + signature: + 'ToastClose: { (props: ToastCloseProps): JSX.Element; (props: ToastCloseAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'ToastClose is the dedicated dismiss control for a toast entry.\nRenders the `toast-close` part of `toast`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'ToastCloseAsChildProps', + anchor: 'toast-close-as-child-props', + signature: 'ToastCloseAsChildProps: ButtonLikeAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Toast Close.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', + }, + ], + }, + { + name: 'ToastCloseProps', + anchor: 'toast-close-props', + signature: + "ToastCloseProps: ButtonLikeProps<'button', HTMLButtonElement>", + typeOnly: true, + summary: 'Props for Toast Close.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', + }, + ], + }, + { + name: 'ToastDescription', + anchor: 'toast-description', + signature: + 'ToastDescription: { (props: ToastDescriptionProps): JSX.Element; (props: ToastDescriptionAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'ToastDescription marks the accessible description slot for a toast entry.\nRenders the `toast-description` part of `toast`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'ToastDescriptionAsChildProps', + anchor: 'toast-description-as-child-props', + signature: 'ToastDescriptionAsChildProps: BoxAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Toast Description.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + ], + }, + { + name: 'ToastDescriptionProps', + anchor: 'toast-description-props', + signature: "ToastDescriptionProps: BoxProps<'div', HTMLDivElement>", + typeOnly: true, + summary: 'Props for Toast Description.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'ToastHost', + anchor: 'toast-host', + signature: 'ToastHost: (props: ToastHostProps) => JSX.Element', + typeOnly: true, + summary: + 'ToastHost owns the registry of active toast entries and the default\ndisplay duration for the family.', + }, + { + name: 'ToastHostOwnProps', + anchor: 'toast-host-own-props', + signature: + 'ToastHostOwnProps: {\n children?: unknown;\n id?: string;\n duration?: number;\n}', + typeOnly: true, + summary: + 'Props for the host that owns toast timing defaults and the registry.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'duration', + summary: '', + signature: 'duration?: number | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + ], + }, + { + name: 'ToastHostProps', + anchor: 'toast-host-props', + signature: + "ToastHostProps: BoxProps<'div', HTMLDivElement> & ToastHostOwnProps", + typeOnly: true, + summary: 'Props for Toast Host.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'duration', + summary: '', + signature: 'duration?: number | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], + }, + { + name: 'ToastOwnProps', + anchor: 'toast-own-props', + signature: + 'ToastOwnProps: {\n children?: unknown;\n id?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n duration?: number;\n variant?: ToastVariant;\n}', + typeOnly: true, + summary: 'Props for a toast registration entry declared through Toast.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'defaultOpen', + summary: '', + signature: 'defaultOpen?: boolean | undefined;', + }, + { + name: 'duration', + summary: '', + signature: 'duration?: number | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'onOpenChange', + summary: '', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', + }, + { + name: 'open', + summary: '', + signature: 'open?: boolean | undefined;', + }, + { + name: 'variant', summary: '', - signature: 'themes?: readonly ThemeOption[] | undefined;', + signature: 'variant?: ToastVariant | undefined;', }, ], }, { - name: 'ThemeScope', - anchor: 'theme-scope', - signature: 'ThemeScope: (props: ThemeScopeProps) => JSX.Element', - typeOnly: true, - summary: - 'Establishes a theme boundary: tracks the active theme (persisted to\n`localStorage` under `storageKey` and synced across tabs/scopes), resolves\nthe OS `"system"` preference, and reflects the choice onto the DOM via\n`data-theme`/`data-theme-choice` attributes. Nested scopes cooperate\nthrough a shared coordinator so the deepest explicitly-set scope wins.', - }, - { - name: 'ThemeScopeProps', - anchor: 'theme-scope-props', - signature: - 'ThemeScopeProps: {\n children?: unknown;\n defaultTheme?: ThemeName;\n themes?: readonly ThemeOption[];\n storageKey?: string;\n}', + name: 'ToastProps', + anchor: 'toast-props', + signature: "ToastProps: BoxProps<'div', HTMLDivElement> & ToastOwnProps", typeOnly: true, - summary: 'Props for the {@link ThemeScope} component.', + summary: 'Props for Toast.', members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, { name: 'children', summary: '', signature: 'children?: unknown;', }, { - name: 'defaultTheme', + name: 'defaultOpen', summary: '', - signature: 'defaultTheme?: ThemeName | undefined;', + signature: 'defaultOpen?: boolean | undefined;', }, { - name: 'storageKey', + name: 'duration', summary: '', - signature: 'storageKey?: string | undefined;', + signature: 'duration?: number | undefined;', }, { - name: 'themes', + name: 'id', summary: '', - signature: 'themes?: readonly ThemeOption[] | undefined;', + signature: 'id?: string | undefined;', + }, + { + name: 'onOpenChange', + summary: '', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', + }, + { + name: 'open', + summary: '', + signature: 'open?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + { + name: 'variant', + summary: '', + signature: 'variant?: ToastVariant | undefined;', }, ], }, { - name: 'ThemeScopeValue', - anchor: 'theme-scope-value', + name: 'ToastTitle', + anchor: 'toast-title', signature: - 'ThemeScopeValue: {\n theme: () => ThemeName;\n resolvedSystemTheme: () => "light" | "dark";\n setTheme: (theme: ThemeName) => void;\n themes: readonly ThemeOption[];\n storageKey: string;\n}', + 'ToastTitle: { (props: ToastTitleProps): JSX.Element; (props: ToastTitleAsChildProps): JSX.Element; }', typeOnly: true, summary: - 'Value read from {@link theme}: the active theme, its resolved system value, a setter, and the available theme options.', + 'ToastTitle marks the accessible title slot for a toast entry.\nRenders the `toast-title` part of `toast`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'ThemeToggle', - anchor: 'theme-toggle', - signature: 'ThemeToggle: (props: ThemeToggleProps) => JSX.Element', + name: 'ToastTitleAsChildProps', + anchor: 'toast-title-as-child-props', + signature: 'ToastTitleAsChildProps: BoxAsChildProps', typeOnly: true, summary: - 'A button that cycles through `themes` (defaults to `["light", "dark"]`) on\npress. Supports icon props per theme, or a function-as-children render\nprop receiving {@link ThemeToggleRenderContext}.', - }, - { - name: 'ThemeToggleProps', - anchor: 'theme-toggle-props', - signature: - 'ThemeToggleProps: Omit<ButtonNativeProps, "children" | "onPress"> & {\n children?: unknown | ((context: ThemeToggleRenderContext) => unknown);\n lightIcon?: unknown;\n darkIcon?: unknown;\n systemIcon?: unknown;\n themes?: readonly ThemeName[];\n onPress?: (event: PressEvent) => void;\n}', - typeOnly: true, - summary: 'Props for the {@link ThemeToggle} component.', + 'Props for the `asChild` (polymorphic) rendering of Toast Title.', members: [ { - name: 'children', + name: 'asChild', summary: '', - signature: 'children?: unknown;', + signature: 'asChild: true;', }, { - name: 'darkIcon', + name: 'children', summary: '', - signature: 'darkIcon?: unknown;', + signature: 'children: JSXElement;', }, { - name: 'lightIcon', + name: 'ref', summary: '', - signature: 'lightIcon?: unknown;', + signature: 'ref?: Ref<Element>;', }, + ], + }, + { + name: 'ToastTitleProps', + anchor: 'toast-title-props', + signature: "ToastTitleProps: BoxProps<'div', HTMLDivElement>", + typeOnly: true, + summary: 'Props for Toast Title.', + members: [ { - name: 'onPress', + name: 'asChild', summary: '', - signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + signature: 'asChild?: false | undefined;', }, { - name: 'systemIcon', + name: 'children', summary: '', - signature: 'systemIcon?: unknown;', + signature: 'children?: unknown;', }, { - name: 'themes', + name: 'ref', summary: '', - signature: 'themes?: readonly ThemeName[] | undefined;', + signature: 'ref?: Ref<HTMLDivElement>;', }, ], }, - { - name: 'ThemeToggleRenderContext', - anchor: 'theme-toggle-render-context', - signature: - 'ThemeToggleRenderContext: {\n theme: ThemeName;\n nextTheme: ThemeName;\n}', - typeOnly: true, - summary: - 'Render context passed to a function-as-children {@link ThemeToggleProps.children}.', - }, - { - name: 'Toast', - anchor: 'toast', - signature: 'Toast: (props: ToastProps) => JSX.Element | null', - typeOnly: true, - summary: - 'Toast registers a notification entry with the host and returns no DOM on\nits own.', - }, - { - name: 'ToastAction', - anchor: 'toast-action', - signature: - 'ToastAction: { (props: ToastActionProps): JSX.Element; (props: ToastActionAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'ToastAction closes the toast after handling a user-triggered action.\nRenders the `toast-action` part of `toast`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'ToastClose', - anchor: 'toast-close', - signature: - 'ToastClose: { (props: ToastCloseProps): JSX.Element; (props: ToastCloseAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'ToastClose is the dedicated dismiss control for a toast entry.\nRenders the `toast-close` part of `toast`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'ToastDescription', - anchor: 'toast-description', - signature: - 'ToastDescription: { (props: ToastDescriptionProps): JSX.Element; (props: ToastDescriptionAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'ToastDescription marks the accessible description slot for a toast entry.\nRenders the `toast-description` part of `toast`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'Toaster', - anchor: 'toaster', - signature: 'Toaster: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `sonner` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'ToastHost', - anchor: 'toast-host', - signature: 'ToastHost: (props: ToastHostProps) => JSX.Element', - typeOnly: true, - summary: - 'ToastHost owns the registry of active toast entries and the default\ndisplay duration for the family.', - }, - { - name: 'ToastTitle', - anchor: 'toast-title', - signature: - 'ToastTitle: { (props: ToastTitleProps): JSX.Element; (props: ToastTitleAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'ToastTitle marks the accessible title slot for a toast entry.\nRenders the `toast-title` part of `toast`.\n\nSupports polymorphic rendering via `asChild`.', - }, { name: 'ToastViewport', anchor: 'toast-viewport', @@ -39638,20 +49310,56 @@ export const apiSymbolSets: Readonly< 'ToastViewport renders the live toast stack and the notification region.\nRenders the `toast-viewport` part of `toast` with `role="region"`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'Toggle', - anchor: 'toggle', - signature: - 'Toggle: { (props: ToggleButtonProps): JSX.Element; (props: ToggleAsChildProps): JSX.Element; }', + name: 'ToastViewportAsChildProps', + anchor: 'toast-viewport-as-child-props', + signature: 'ToastViewportAsChildProps: BoxAsChildProps', typeOnly: true, summary: - 'Headless Toggle component\n\n## Responsibilities\n- Compose pressable foundation for interaction behavior\n- Apply aria-pressed for toggle state signaling\n- Enforce type="button" default to prevent accidental form submission\n- Forward props and refs to native button or child element\n\n## Non-Responsibilities (delegated to pressable foundation)\n- Keyboard event handling (Enter/Space)\n- Pointer event handling\n- Disabled state enforcement\n- Role attribute application (for non-native elements)\n\n## Invariants\n- MUST NOT contain any event handler logic\n- MUST NOT check disabled or pressed props directly\n- MUST use pressable() for ALL interaction behavior\n- MUST use mergeProps() for ALL prop composition\n- pressed state is CONTROLLED (consumer manages state)\nRenders the `toggle` part of `toggle`.\n\nSupports polymorphic rendering via `asChild`.', - tags: { - example: [ - 'Native toggle button\n```tsx\nconst pressed = state(false);\n<Toggle pressed={pressed()} onPress={() => pressed.set(!pressed())}>\nMute\n</Toggle>\n```', - 'Polymorphic rendering (asChild)\n```tsx\n<Toggle asChild pressed={muted} onPress={toggleMute}>\n<span>🔇</span>\n</Toggle>\n```', - ], - }, + 'Props for the `asChild` (polymorphic) rendering of Toast Viewport.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild: true;', + }, + { + name: 'children', + summary: '', + signature: 'children: JSXElement;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + ], + }, + { + name: 'ToastViewportProps', + anchor: 'toast-viewport-props', + signature: "ToastViewportProps: BoxProps<'div', HTMLDivElement>", + typeOnly: true, + summary: 'Props for Toast Viewport.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], }, + ], + symbols121: [ { name: 'ToggleGroup', anchor: 'toggle-group', @@ -39670,420 +49378,546 @@ export const apiSymbolSets: Readonly< 'Renders a part of `toggle-group`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'Toolbar', - anchor: 'toolbar', - signature: 'Toolbar: (props: ToolbarProps) => JSX.Element', - typeOnly: true, - summary: - 'Titled toolbar row with an actions area, wrapping to a new line on small screens.', - }, - { - name: 'ToolbarProps', - anchor: 'toolbar-props', + name: 'ToggleGroupItemAsChildProps', + anchor: 'toggle-group-item-as-child-props', signature: - 'ToolbarProps: Omit<BlockDivProps, "direction" | "rowFrom"> & {\n title: unknown;\n actions?: unknown;\n direction?: never;\n rowFrom?: never;\n}', + 'ToggleGroupItemAsChildProps: ButtonLikeAsChildProps & ToggleGroupItemOwnProps', typeOnly: true, - summary: 'Props for the {@link Toolbar } component.', + summary: + 'Props for the `asChild` (polymorphic) rendering of Toggle Group Item.', members: [ { - name: 'actions', + name: 'asChild', summary: '', - signature: 'actions?: unknown;', + signature: 'asChild: true;', }, { - name: 'direction', + name: 'children', summary: '', - signature: 'direction?: undefined;', + signature: 'children: JSXElement;', }, { - name: 'rowFrom', + name: 'disabled', summary: '', - signature: 'rowFrom?: undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'title', + name: 'onPress', summary: '', - signature: 'title: unknown;', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value: string;', }, ], }, { - name: 'Tooltip', - anchor: 'tooltip', - signature: - 'Tooltip: (props: TooltipProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', - typeOnly: true, - summary: 'Renders a part of `tooltip`.', - }, - { - name: 'TooltipContent', - anchor: 'tooltip-content', - signature: - 'TooltipContent: { (props: TooltipContentProps): JSX.Element | null; (props: TooltipContentAsChildProps): JSX.Element | null; }', - typeOnly: true, - summary: - 'Renders the `tooltip-content` part of `tooltip` with `role="tooltip"`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'TooltipPortal', - anchor: 'tooltip-portal', - signature: - 'TooltipPortal: (props: TooltipPortalProps) => JSX.Element | null', - typeOnly: true, - summary: 'Renders a part of `tooltip`.', - }, - { - name: 'TooltipTrigger', - anchor: 'tooltip-trigger', - signature: - 'TooltipTrigger: { (props: TooltipTriggerProps): JSX.Element; (props: TooltipTriggerAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders the `tooltip-trigger` part of `tooltip`.\n\nSupports polymorphic rendering via `asChild`.', - }, - { - name: 'Typography', - anchor: 'typography', - signature: 'Typography: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `typography` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'TypographyBlockquote', - anchor: 'typography-blockquote', - signature: - 'TypographyBlockquote: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `typography-blockquote` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'TypographyH1', - anchor: 'typography-h1', - signature: 'TypographyH1: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `typography-h1` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'TypographyH2', - anchor: 'typography-h2', - signature: 'TypographyH2: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `typography-h2` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'TypographyH3', - anchor: 'typography-h3', - signature: 'TypographyH3: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `typography-h3` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'TypographyH4', - anchor: 'typography-h4', - signature: 'TypographyH4: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `typography-h4` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'TypographyLead', - anchor: 'typography-lead', - signature: - 'TypographyLead: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `typography-lead` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'TypographyList', - anchor: 'typography-list', + name: 'ToggleGroupItemOwnProps', + anchor: 'toggle-group-item-own-props', signature: - 'TypographyList: (props: CatalogComponentProps) => JSX.Element', + 'ToggleGroupItemOwnProps: {\n value: string;\n disabled?: boolean;\n children?: unknown;\n}', typeOnly: true, summary: - 'Renders the `typography-list` part of the shadcn-compatible catalog primitives.', + 'Own props for Toggle Group Item, before merging with native element attributes.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'value', + summary: '', + signature: 'value: string;', + }, + ], }, { - name: 'TypographyMuted', - anchor: 'typography-muted', + name: 'ToggleGroupItemProps', + anchor: 'toggle-group-item-props', signature: - 'TypographyMuted: (props: CatalogComponentProps) => JSX.Element', - typeOnly: true, - summary: - 'Renders the `typography-muted` part of the shadcn-compatible catalog primitives.', - }, - { - name: 'TypographyP', - anchor: 'typography-p', - signature: 'TypographyP: (props: CatalogComponentProps) => JSX.Element', + "ToggleGroupItemProps: ButtonLikeProps<'button', HTMLButtonElement> & ToggleGroupItemOwnProps", typeOnly: true, - summary: - 'Renders the `typography-p` part of the shadcn-compatible catalog primitives.', + summary: 'Props for Toggle Group Item.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', + }, + ], }, { - name: 'VirtualList', - anchor: 'virtual-list', + name: 'ToggleGroupMultipleProps', + anchor: 'toggle-group-multiple-props', signature: - 'VirtualList: { <Item>(props: VirtualListProps<Item>): JSX.Element; <Item>(props: VirtualListAsChildProps<Item>): JSX.Element; }', + "ToggleGroupMultipleProps: BoxProps<'div', HTMLDivElement> & ToggleGroupSharedOwnProps & {\n type: 'multiple';\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n}", typeOnly: true, - summary: - 'Renders a part of `virtual-list`.\n\nSupports polymorphic rendering via `asChild`.', + summary: 'Props for Toggle Group Multiple.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: + 'Supports literal, nested, array-mapped, and `For`-rendered descendants.', + signature: 'children?: unknown;', + }, + { + name: 'defaultValue', + summary: '', + signature: 'defaultValue?: string[] | undefined;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'loop', + summary: '', + signature: 'loop?: boolean | undefined;', + }, + { + name: 'onValueChange', + summary: '', + signature: 'onValueChange?: ((value: string[]) => void) | undefined;', + }, + { + name: 'orientation', + summary: '', + signature: 'orientation?: ToggleGroupOrientation | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type: "multiple";', + }, + { + name: 'value', + summary: '', + signature: 'value?: string[] | undefined;', + }, + ], }, { - name: 'VirtualListApi', - anchor: 'virtual-list-api', - signature: - 'VirtualListApi: {\n scrollToIndex: (index: number, alignment?: VirtualScrollAlignment) => void;\n scrollToTop: () => void;\n scrollToBottom: () => void;\n getState: () => VirtualListState;\n getVisibleRange: () => VirtualRange;\n getItemCount: () => number;\n getScrollTop: () => number;\n isAtTop: () => boolean;\n isAtBottom: () => boolean;\n isFollowingBottom: () => boolean;\n getPendingUnseenCount: () => number;\n setFollowBottom: (followBottom: boolean) => void;\n}', + name: 'ToggleGroupOrientation', + anchor: 'toggle-group-orientation', + signature: "ToggleGroupOrientation: 'horizontal' | 'vertical'", typeOnly: true, - summary: 'Virtual List Api.', + summary: 'Toggle Group Orientation.', }, { - name: 'VirtualListAsChildProps', - anchor: 'virtual-list-as-child-props', + name: 'ToggleGroupProps', + anchor: 'toggle-group-props', signature: - "VirtualListAsChildProps: Omit<VirtualListRootProps, 'children'> & {\n items: readonly Item[];\n rowHeight: number;\n /** Optional keyed row sizing. When omitted, VirtualList retains its fixed-height arithmetic path. */\n getRowHeight?: (item: Item, index: number) => number;\n overscan?: VirtualOverscan;\n getKey: (item: Item, index: number) => string | number;\n rowComponent: VirtualListRowComponent<Item>;\n followBottom?: boolean | {\n threshold?: number;\n };\n onScroll?: (event: Event) => void;\n viewport?: VirtualListViewport;\n apiRef?: Ref<VirtualListApi<Item> | null>;\n ref?: Ref<HTMLElement>;\n asChild: true;\n children: JSXElement;\n}", + 'ToggleGroupProps: ToggleGroupSingleProps | ToggleGroupMultipleProps', typeOnly: true, - summary: - 'Props for the `asChild` (polymorphic) rendering of Virtual List.', + summary: 'Props for Toggle Group.', members: [ - { - name: 'apiRef', - summary: '', - signature: 'apiRef?: Ref<VirtualListApi<Item> | null>;', - }, { name: 'asChild', summary: '', - signature: 'asChild: true;', + signature: 'asChild?: false | undefined;', }, { name: 'children', - summary: '', - signature: 'children: JSXElement;', + summary: + 'Supports literal, nested, array-mapped, and `For`-rendered descendants.', + signature: 'children?: unknown;', }, { - name: 'followBottom', + name: 'defaultValue', summary: '', - signature: - 'followBottom?: boolean | { threshold?: number; } | undefined;', + signature: 'defaultValue?: string | string[] | undefined;', }, { - name: 'getKey', + name: 'disabled', summary: '', - signature: 'getKey: (item: Item, index: number) => string | number;', - }, - { - name: 'getRowHeight', - summary: - 'Optional keyed row sizing. When omitted, VirtualList retains its fixed-height arithmetic path.', - signature: - 'getRowHeight?: ((item: Item, index: number) => number) | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'items', + name: 'id', summary: '', - signature: 'items: readonly Item[];', + signature: 'id?: string | undefined;', }, { - name: 'onScroll', + name: 'loop', summary: '', - signature: 'onScroll?: ((event: Event) => void) | undefined;', + signature: 'loop?: boolean | undefined;', }, { - name: 'overscan', + name: 'onValueChange', summary: '', - signature: 'overscan?: VirtualOverscan | undefined;', + signature: + 'onValueChange?: ((value: string[]) => void) | ((value: string) => void) | undefined;', }, { - name: 'ref', + name: 'orientation', summary: '', - signature: 'ref?: Ref<HTMLElement>;', + signature: 'orientation?: ToggleGroupOrientation | undefined;', }, { - name: 'rowComponent', + name: 'ref', summary: '', - signature: 'rowComponent: VirtualListRowComponent<Item>;', + signature: 'ref?: Ref<HTMLDivElement>;', }, { - name: 'rowHeight', + name: 'type', summary: '', - signature: 'rowHeight: number;', + signature: 'type?: "single" | "multiple" | undefined;', }, { - name: 'viewport', + name: 'value', summary: '', - signature: 'viewport?: "lg" | undefined;', + signature: 'value?: string | string[] | undefined;', }, ], }, { - name: 'VirtualListProps', - anchor: 'virtual-list-props', + name: 'ToggleGroupSingleProps', + anchor: 'toggle-group-single-props', signature: - 'VirtualListProps: VirtualListRootProps & {\n items: readonly Item[];\n rowHeight: number;\n /** Optional keyed row sizing. When omitted, VirtualList retains its fixed-height arithmetic path. */\n getRowHeight?: (item: Item, index: number) => number;\n overscan?: VirtualOverscan;\n getKey: (item: Item, index: number) => string | number;\n rowComponent: VirtualListRowComponent<Item>;\n followBottom?: boolean | {\n threshold?: number;\n };\n onScroll?: (event: Event) => void;\n viewport?: VirtualListViewport;\n apiRef?: Ref<VirtualListApi<Item> | null>;\n ref?: Ref<HTMLElement>;\n asChild?: false;\n}', + "ToggleGroupSingleProps: BoxProps<'div', HTMLDivElement> & ToggleGroupSharedOwnProps & {\n type?: 'single';\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n}", typeOnly: true, - summary: 'Props for Virtual List.', + summary: 'Props for Toggle Group Single.', members: [ - { - name: 'apiRef', - summary: '', - signature: 'apiRef?: Ref<VirtualListApi<Item> | null>;', - }, { name: 'asChild', summary: '', signature: 'asChild?: false | undefined;', }, { - name: 'followBottom', - summary: '', - signature: - 'followBottom?: boolean | { threshold?: number; } | undefined;', + name: 'children', + summary: + 'Supports literal, nested, array-mapped, and `For`-rendered descendants.', + signature: 'children?: unknown;', }, { - name: 'getKey', + name: 'defaultValue', summary: '', - signature: 'getKey: (item: Item, index: number) => string | number;', + signature: 'defaultValue?: string | undefined;', }, { - name: 'getRowHeight', - summary: - 'Optional keyed row sizing. When omitted, VirtualList retains its fixed-height arithmetic path.', - signature: - 'getRowHeight?: ((item: Item, index: number) => number) | undefined;', + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', }, { - name: 'items', + name: 'id', summary: '', - signature: 'items: readonly Item[];', + signature: 'id?: string | undefined;', }, { - name: 'onScroll', + name: 'loop', summary: '', - signature: 'onScroll?: ((event: Event) => void) | undefined;', + signature: 'loop?: boolean | undefined;', }, { - name: 'overscan', + name: 'onValueChange', summary: '', - signature: 'overscan?: VirtualOverscan | undefined;', + signature: 'onValueChange?: ((value: string) => void) | undefined;', }, { - name: 'ref', + name: 'orientation', summary: '', - signature: 'ref?: Ref<HTMLElement>;', + signature: 'orientation?: ToggleGroupOrientation | undefined;', }, { - name: 'rowComponent', + name: 'ref', summary: '', - signature: 'rowComponent: VirtualListRowComponent<Item>;', + signature: 'ref?: Ref<HTMLDivElement>;', }, { - name: 'rowHeight', + name: 'type', summary: '', - signature: 'rowHeight: number;', + signature: 'type?: "single" | undefined;', }, { - name: 'viewport', + name: 'value', summary: '', - signature: 'viewport?: "lg" | undefined;', + signature: 'value?: string | undefined;', }, ], }, + ], + symbols122: [ { - name: 'VirtualListRowComponent', - anchor: 'virtual-list-row-component', + name: 'PressEvent', + anchor: 'press-event', signature: - 'VirtualListRowComponent: (props: VirtualListRowComponentProps<Item>) => VirtualListRowElement | null', + 'PressEvent: {\n preventDefault?: () => void;\n stopPropagation?: () => void;\n defaultPrevented?: boolean;\n}', typeOnly: true, - summary: 'Virtual List Row Component.', + summary: + "Press event passed to onPress handler\n\nCompatible with the pressable foundation's PressEvent type.", }, { - name: 'VirtualListRowComponentProps', - anchor: 'virtual-list-row-component-props', + name: 'Toggle', + anchor: 'toggle', signature: - 'VirtualListRowComponentProps: {\n item: Item;\n index: number;\n rowKey: string;\n isVisible: boolean;\n}', + 'Toggle: { (props: ToggleButtonProps): JSX.Element; (props: ToggleAsChildProps): JSX.Element; }', typeOnly: true, - summary: 'Props for Virtual List Row Component.', + summary: + 'Headless Toggle component\n\n## Responsibilities\n- Compose pressable foundation for interaction behavior\n- Apply aria-pressed for toggle state signaling\n- Enforce type="button" default to prevent accidental form submission\n- Forward props and refs to native button or child element\n\n## Non-Responsibilities (delegated to pressable foundation)\n- Keyboard event handling (Enter/Space)\n- Pointer event handling\n- Disabled state enforcement\n- Role attribute application (for non-native elements)\n\n## Invariants\n- MUST NOT contain any event handler logic\n- MUST NOT check disabled or pressed props directly\n- MUST use pressable() for ALL interaction behavior\n- MUST use mergeProps() for ALL prop composition\n- pressed state is CONTROLLED (consumer manages state)\nRenders the `toggle` part of `toggle`.\n\nSupports polymorphic rendering via `asChild`.', + tags: { + example: [ + 'Native toggle button\n```tsx\nconst pressed = state(false);\n<Toggle pressed={pressed()} onPress={() => pressed.set(!pressed())}>\nMute\n</Toggle>\n```', + 'Polymorphic rendering (asChild)\n```tsx\n<Toggle asChild pressed={muted} onPress={toggleMute}>\n<span>🔇</span>\n</Toggle>\n```', + ], + }, + }, + { + name: 'ToggleAsChildProps', + anchor: 'toggle-as-child-props', + signature: + 'ToggleAsChildProps: ToggleOwnProps & {\n asChild: true;\n children: JSXElement;\n ref?: Ref<Element>;\n type?: never;\n}', + typeOnly: true, + summary: 'Props when rendering via asChild', members: [ { - name: 'index', + name: 'asChild', summary: '', - signature: 'index: number;', + signature: 'asChild: true;', }, { - name: 'isVisible', + name: 'children', summary: '', - signature: 'isVisible: boolean;', + signature: 'children: JSXElement;', }, { - name: 'item', + name: 'disabled', summary: '', - signature: 'item: Item;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'rowKey', + name: 'onPress', summary: '', - signature: 'rowKey: string;', + signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + }, + { + name: 'pressed', + summary: '', + signature: 'pressed?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<Element>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: undefined;', }, ], }, { - name: 'VirtualListRowElement', - anchor: 'virtual-list-row-element', - signature: 'VirtualListRowElement: JSXElement | JSX.Element', + name: 'ToggleButtonProps', + anchor: 'toggle-button-props', + signature: + "ToggleButtonProps: Omit<JSX.IntrinsicElements['button'], 'children' | 'onClick' | 'disabled' | 'type' | 'ref'> & ToggleOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLButtonElement>;\n type?: 'button' | 'submit' | 'reset';\n}", typeOnly: true, - summary: 'Virtual List Row Element.', + summary: 'Props when rendering as a native <button> element', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + }, + { + name: 'pressed', + summary: '', + signature: 'pressed?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', + }, + ], }, { - name: 'VirtualListState', - anchor: 'virtual-list-state', + name: 'ToggleOwnProps', + anchor: 'toggle-own-props', signature: - 'VirtualListState: {\n count: number;\n scrollTop: number;\n viewportHeight: number;\n totalHeight: number;\n visibleRange: VirtualRange;\n isAtTop: boolean;\n isAtBottom: boolean;\n followBottom: boolean;\n pendingUnseenCount: number;\n}', + 'ToggleOwnProps: {\n children?: unknown;\n onPress?: (e: PressEvent) => void;\n pressed?: boolean;\n disabled?: boolean;\n}', typeOnly: true, - summary: 'Virtual List State.', + summary: 'Props shared by all Toggle variants', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + }, + { + name: 'pressed', + summary: '', + signature: 'pressed?: boolean | undefined;', + }, + ], }, { - name: 'VirtualListViewport', - anchor: 'virtual-list-viewport', - signature: "VirtualListViewport: 'lg'", + name: 'ToggleProps', + anchor: 'toggle-props', + signature: 'ToggleProps: ToggleButtonProps | ToggleAsChildProps', typeOnly: true, - summary: 'Virtual List Viewport.', + summary: 'Discriminated union of Toggle prop types', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: boolean | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'onPress', + summary: '', + signature: 'onPress?: ((e: PressEvent) => void) | undefined;', + }, + { + name: 'pressed', + summary: '', + signature: 'pressed?: boolean | undefined;', + }, + { + name: 'ref', + summary: '', + signature: + 'ref?: ((value: Element | null) => void) | { current: Element | null; } | ((value: HTMLButtonElement | null) => void) | { current: HTMLButtonElement | null; } | null | undefined;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', + }, + ], }, + ], + symbols123: [ { - name: 'VirtualTable', - anchor: 'virtual-table', + name: 'Tooltip', + anchor: 'tooltip', signature: - 'VirtualTable: { <Row>(props: VirtualTableProps<Row>): JSX.Element; <Row>(props: VirtualTableAsChildProps<Row>): JSX.Element; }', + 'Tooltip: (props: TooltipProps) => import("@askrjs/askr/jsx-runtime").JSX.Element', typeOnly: true, - summary: - 'Renders a part of `virtual-table`.\n\nSupports polymorphic rendering via `asChild`.', + summary: 'Renders a part of `tooltip`.', }, { - name: 'VirtualTableApi', - anchor: 'virtual-table-api', + name: 'TooltipContent', + anchor: 'tooltip-content', signature: - 'VirtualTableApi: {\n scrollToIndex: (index: number, alignment?: VirtualScrollAlignment) => void;\n scrollToTop: () => void;\n scrollToBottom: () => void;\n getState: () => VirtualTableState;\n getVisibleRange: () => VirtualRange;\n getRowCount: () => number;\n getScrollTop: () => number;\n isAtTop: () => boolean;\n isAtBottom: () => boolean;\n getSelectedRowKey: () => string | null;\n getSelectedRowIndex: () => number;\n selectRowByKey: (rowKey: string) => void;\n selectRowByIndex: (index: number) => void;\n clearSelection: () => void;\n}', + 'TooltipContent: { (props: TooltipContentProps): JSX.Element | null; (props: TooltipContentAsChildProps): JSX.Element | null; }', typeOnly: true, - summary: 'Virtual Table Api.', + summary: + 'Renders the `tooltip-content` part of `tooltip` with `role="tooltip"`.\n\nSupports polymorphic rendering via `asChild`.', }, { - name: 'VirtualTableAsChildProps', - anchor: 'virtual-table-as-child-props', + name: 'TooltipContentAsChildProps', + anchor: 'tooltip-content-as-child-props', signature: - "VirtualTableAsChildProps: Omit<VirtualTableRootProps, 'children'> & {\n rows: readonly Row[];\n rowHeight: number;\n headerHeight: number;\n overscan?: VirtualOverscan;\n getKey: (row: Row, index: number) => string | number;\n columns: readonly VirtualTableColumn<Row>[];\n selectedRowKey?: string | null;\n defaultSelectedRowKey?: string | null;\n onSelectedRowKeyChange?: (next: string | null) => void;\n onRowClick?: (row: Row, rowIndex: number, rowKey: string, event: MouseEvent) => void;\n onScroll?: (event: Event) => void;\n viewport?: VirtualTableViewport;\n tableWidth?: VirtualTableWidth;\n apiRef?: Ref<VirtualTableApi<Row> | null>;\n ref?: Ref<HTMLElement>;\n asChild: true;\n children: JSXElement;\n}", + 'TooltipContentAsChildProps: BoxAsChildProps & TooltipContentOwnProps', typeOnly: true, summary: - 'Props for the `asChild` (polymorphic) rendering of Virtual Table.', + 'Props for the `asChild` (polymorphic) rendering of Tooltip Content.', members: [ { - name: 'apiRef', + name: 'align', summary: '', - signature: 'apiRef?: Ref<VirtualTableApi<Row> | null>;', + signature: 'align?: OverlayAlign | undefined;', }, { name: 'asChild', @@ -40096,470 +49930,382 @@ export const apiSymbolSets: Readonly< signature: 'children: JSXElement;', }, { - name: 'columns', + name: 'forceMount', summary: '', - signature: 'columns: readonly VirtualTableColumn<Row>[];', + signature: 'forceMount?: boolean | undefined;', }, { - name: 'defaultSelectedRowKey', + name: 'ref', summary: '', - signature: 'defaultSelectedRowKey?: string | null | undefined;', + signature: 'ref?: Ref<Element>;', }, { - name: 'getKey', + name: 'side', summary: '', - signature: 'getKey: (row: Row, index: number) => string | number;', + signature: 'side?: OverlaySide | undefined;', }, { - name: 'headerHeight', + name: 'sideOffset', summary: '', - signature: 'headerHeight: number;', + signature: 'sideOffset?: number | undefined;', + }, + ], + }, + { + name: 'TooltipContentOwnProps', + anchor: 'tooltip-content-own-props', + signature: + 'TooltipContentOwnProps: {\n forceMount?: boolean;\n side?: OverlaySide;\n align?: OverlayAlign;\n sideOffset?: number;\n}', + typeOnly: true, + summary: + 'Own props for Tooltip Content, before merging with native element attributes.', + members: [ + { + name: 'align', + summary: '', + signature: 'align?: OverlayAlign | undefined;', }, { - name: 'onRowClick', + name: 'forceMount', summary: '', - signature: - 'onRowClick?: ((row: Row, rowIndex: number, rowKey: string, event: MouseEvent) => void) | undefined;', + signature: 'forceMount?: boolean | undefined;', }, { - name: 'onScroll', + name: 'side', summary: '', - signature: 'onScroll?: ((event: Event) => void) | undefined;', + signature: 'side?: OverlaySide | undefined;', }, { - name: 'onSelectedRowKeyChange', + name: 'sideOffset', summary: '', - signature: - 'onSelectedRowKeyChange?: ((next: string | null) => void) | undefined;', + signature: 'sideOffset?: number | undefined;', }, + ], + }, + { + name: 'TooltipContentProps', + anchor: 'tooltip-content-props', + signature: + "TooltipContentProps: BoxProps<'div', HTMLDivElement> & TooltipContentOwnProps", + typeOnly: true, + summary: 'Props for Tooltip Content.', + members: [ { - name: 'overscan', + name: 'align', summary: '', - signature: 'overscan?: VirtualOverscan | undefined;', + signature: 'align?: OverlayAlign | undefined;', }, { - name: 'ref', + name: 'asChild', summary: '', - signature: 'ref?: Ref<HTMLElement>;', + signature: 'asChild?: false | undefined;', }, { - name: 'rowHeight', + name: 'children', summary: '', - signature: 'rowHeight: number;', + signature: 'children?: unknown;', }, { - name: 'rows', + name: 'forceMount', summary: '', - signature: 'rows: readonly Row[];', + signature: 'forceMount?: boolean | undefined;', }, { - name: 'selectedRowKey', + name: 'ref', summary: '', - signature: 'selectedRowKey?: string | null | undefined;', + signature: 'ref?: Ref<HTMLDivElement>;', }, { - name: 'tableWidth', + name: 'side', summary: '', - signature: 'tableWidth?: "compact" | undefined;', + signature: 'side?: OverlaySide | undefined;', }, { - name: 'viewport', + name: 'sideOffset', summary: '', - signature: 'viewport?: "lg" | undefined;', + signature: 'sideOffset?: number | undefined;', }, ], }, { - name: 'VirtualTableCellComponent', - anchor: 'virtual-table-cell-component', - signature: - 'VirtualTableCellComponent: (props: VirtualTableCellComponentProps<Row>) => VirtualTableCellElement | null', - typeOnly: true, - summary: 'Virtual Table Cell Component.', - }, - { - name: 'VirtualTableCellComponentProps', - anchor: 'virtual-table-cell-component-props', + name: 'TooltipOwnProps', + anchor: 'tooltip-own-props', signature: - 'VirtualTableCellComponentProps: {\n row: Row;\n rowIndex: number;\n rowKey: string;\n column: VirtualTableColumn<Row>;\n selected: boolean;\n}', + 'TooltipOwnProps: {\n children?: unknown;\n id?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}', typeOnly: true, - summary: 'Props for Virtual Table Cell Component.', + summary: + 'Own props for Tooltip, before merging with native element attributes.', members: [ { - name: 'column', + name: 'children', summary: '', - signature: 'column: VirtualTableColumn<Row>;', + signature: 'children?: unknown;', }, { - name: 'row', + name: 'defaultOpen', summary: '', - signature: 'row: Row;', + signature: 'defaultOpen?: boolean | undefined;', }, { - name: 'rowIndex', + name: 'id', summary: '', - signature: 'rowIndex: number;', + signature: 'id?: string | undefined;', }, { - name: 'rowKey', + name: 'onOpenChange', summary: '', - signature: 'rowKey: string;', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', }, { - name: 'selected', + name: 'open', summary: '', - signature: 'selected: boolean;', + signature: 'open?: boolean | undefined;', }, ], }, { - name: 'VirtualTableCellElement', - anchor: 'virtual-table-cell-element', - signature: 'VirtualTableCellElement: JSXElement | JSX.Element', + name: 'TooltipPortal', + anchor: 'tooltip-portal', + signature: + 'TooltipPortal: (props: TooltipPortalProps) => JSX.Element | null', typeOnly: true, - summary: 'Virtual Table Cell Element.', + summary: 'Renders a part of `tooltip`.', }, { - name: 'VirtualTableColumn', - anchor: 'virtual-table-column', - signature: - 'VirtualTableColumn: {\n id: string;\n header: JSXElement | string;\n width?: number | string;\n cellComponent: VirtualTableCellComponent<Row>;\n}', + name: 'TooltipPortalProps', + anchor: 'tooltip-portal-props', + signature: 'TooltipPortalProps: {\n children?: unknown;\n}', typeOnly: true, - summary: 'Virtual Table Column.', + summary: 'Props for Tooltip Portal.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + ], }, - { - name: 'VirtualTableProps', - anchor: 'virtual-table-props', - signature: - 'VirtualTableProps: VirtualTableRootProps & {\n rows: readonly Row[];\n rowHeight: number;\n headerHeight: number;\n overscan?: VirtualOverscan;\n getKey: (row: Row, index: number) => string | number;\n columns: readonly VirtualTableColumn<Row>[];\n selectedRowKey?: string | null;\n defaultSelectedRowKey?: string | null;\n onSelectedRowKeyChange?: (next: string | null) => void;\n onRowClick?: (row: Row, rowIndex: number, rowKey: string, event: MouseEvent) => void;\n onScroll?: (event: Event) => void;\n viewport?: VirtualTableViewport;\n tableWidth?: VirtualTableWidth;\n apiRef?: Ref<VirtualTableApi<Row> | null>;\n ref?: Ref<HTMLElement>;\n asChild?: false;\n}', + { + name: 'TooltipProps', + anchor: 'tooltip-props', + signature: 'TooltipProps: TooltipOwnProps', typeOnly: true, - summary: 'Props for Virtual Table.', + summary: 'Props for Tooltip.', members: [ { - name: 'apiRef', + name: 'children', summary: '', - signature: 'apiRef?: Ref<VirtualTableApi<Row> | null>;', + signature: 'children?: unknown;', }, { - name: 'asChild', + name: 'defaultOpen', summary: '', - signature: 'asChild?: false | undefined;', + signature: 'defaultOpen?: boolean | undefined;', }, { - name: 'columns', + name: 'id', summary: '', - signature: 'columns: readonly VirtualTableColumn<Row>[];', + signature: 'id?: string | undefined;', }, { - name: 'defaultSelectedRowKey', + name: 'onOpenChange', summary: '', - signature: 'defaultSelectedRowKey?: string | null | undefined;', + signature: 'onOpenChange?: ((open: boolean) => void) | undefined;', }, { - name: 'getKey', + name: 'open', summary: '', - signature: 'getKey: (row: Row, index: number) => string | number;', + signature: 'open?: boolean | undefined;', }, + ], + }, + { + name: 'TooltipTrigger', + anchor: 'tooltip-trigger', + signature: + 'TooltipTrigger: { (props: TooltipTriggerProps): JSX.Element; (props: TooltipTriggerAsChildProps): JSX.Element; }', + typeOnly: true, + summary: + 'Renders the `tooltip-trigger` part of `tooltip`.\n\nSupports polymorphic rendering via `asChild`.', + }, + { + name: 'TooltipTriggerAsChildProps', + anchor: 'tooltip-trigger-as-child-props', + signature: 'TooltipTriggerAsChildProps: ButtonLikeAsChildProps', + typeOnly: true, + summary: + 'Props for the `asChild` (polymorphic) rendering of Tooltip Trigger.', + members: [ { - name: 'headerHeight', + name: 'asChild', summary: '', - signature: 'headerHeight: number;', + signature: 'asChild: true;', }, { - name: 'onRowClick', + name: 'children', summary: '', - signature: - 'onRowClick?: ((row: Row, rowIndex: number, rowKey: string, event: MouseEvent) => void) | undefined;', + signature: 'children: JSXElement;', }, { - name: 'onScroll', + name: 'disabled', summary: '', - signature: 'onScroll?: ((event: Event) => void) | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'onSelectedRowKeyChange', + name: 'onPress', summary: '', - signature: - 'onSelectedRowKeyChange?: ((next: string | null) => void) | undefined;', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', }, { - name: 'overscan', + name: 'ref', summary: '', - signature: 'overscan?: VirtualOverscan | undefined;', + signature: 'ref?: Ref<Element>;', }, { - name: 'ref', + name: 'type', summary: '', - signature: 'ref?: Ref<HTMLElement>;', + signature: 'type?: undefined;', }, + ], + }, + { + name: 'TooltipTriggerProps', + anchor: 'tooltip-trigger-props', + signature: + "TooltipTriggerProps: ButtonLikeProps<'button', HTMLButtonElement>", + typeOnly: true, + summary: 'Props for Tooltip Trigger.', + members: [ { - name: 'rowHeight', + name: 'asChild', summary: '', - signature: 'rowHeight: number;', + signature: 'asChild?: false | undefined;', }, { - name: 'rows', + name: 'children', summary: '', - signature: 'rows: readonly Row[];', + signature: 'children?: unknown;', }, { - name: 'selectedRowKey', + name: 'disabled', summary: '', - signature: 'selectedRowKey?: string | null | undefined;', + signature: 'disabled?: boolean | undefined;', }, { - name: 'tableWidth', + name: 'onPress', summary: '', - signature: 'tableWidth?: "compact" | undefined;', + signature: 'onPress?: ((event: PressEvent) => void) | undefined;', }, { - name: 'viewport', + name: 'ref', summary: '', - signature: 'viewport?: "lg" | undefined;', + signature: 'ref?: Ref<HTMLButtonElement>;', + }, + { + name: 'type', + summary: '', + signature: 'type?: "button" | "submit" | "reset" | undefined;', }, ], }, - { - name: 'VirtualTableState', - anchor: 'virtual-table-state', - signature: - 'VirtualTableState: {\n count: number;\n rowHeight: number;\n headerHeight: number;\n scrollTop: number;\n viewportHeight: number;\n totalHeight: number;\n visibleRange: VirtualRange;\n isAtTop: boolean;\n isAtBottom: boolean;\n selectedRowKey: string | null;\n selectedRowIndex: number;\n}', - typeOnly: true, - summary: 'Virtual Table State.', - }, - { - name: 'VirtualTableViewport', - anchor: 'virtual-table-viewport', - signature: "VirtualTableViewport: 'lg'", - typeOnly: true, - summary: 'Virtual Table Viewport.', - }, - { - name: 'VirtualTableWidth', - anchor: 'virtual-table-width', - signature: "VirtualTableWidth: 'compact'", - typeOnly: true, - summary: 'Virtual Table Width.', - }, - { - name: 'VisuallyHidden', - anchor: 'visually-hidden', - signature: - 'VisuallyHidden: { (props: VisuallyHiddenSpanProps): JSX.Element; (props: VisuallyHiddenAsChildProps): JSX.Element; }', - typeOnly: true, - summary: - 'Renders a part of `visually-hidden`.\n\nSupports polymorphic rendering via `asChild`.', - }, ], - symbols52: [ - { - name: 'CAT_THEME_NAMES', - anchor: 'cat-theme-names', - signature: - 'CAT_THEME_NAMES: readonly ["tabby", "ginger", "tuxedo", "calico", "torty"]', - typeOnly: true, - summary: 'Names of the built-in "cat" theme presets.', - }, + symbols124: [ { - name: 'CAT_THEME_OPTIONS', - anchor: 'cat-theme-options', - signature: 'CAT_THEME_OPTIONS: readonly ThemeOption[]', + name: 'Typography', + anchor: 'typography', + signature: 'Typography: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Theme options for the built-in "cat" theme presets, keyed to {@link CAT_THEME_NAMES}.', - }, - { - name: 'CatThemeName', - anchor: 'cat-theme-name', - signature: 'CatThemeName: (typeof CAT_THEME_NAMES)[number]', - typeOnly: true, - summary: 'A built-in "cat" theme name, one of {@link CAT_THEME_NAMES}.', + 'Renders the `typography` part of the shadcn-compatible catalog primitives.', }, { - name: 'DEFAULT_THEME_OPTIONS', - anchor: 'default-theme-options', - signature: 'DEFAULT_THEME_OPTIONS: readonly ThemeOption[]', + name: 'TypographyBlockquote', + anchor: 'typography-blockquote', + signature: + 'TypographyBlockquote: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Default light/dark/system theme options used by {@link ThemeScope} and {@link ThemePicker}.', + 'Renders the `typography-blockquote` part of the shadcn-compatible catalog primitives.', }, { - name: 'theme', - anchor: 'theme', - signature: 'theme: () => ThemeScopeValue', + name: 'TypographyH1', + anchor: 'typography-h1', + signature: 'TypographyH1: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Reads the current {@link ThemeScopeValue} from the nearest enclosing {@link ThemeScope}.', + 'Renders the `typography-h1` part of the shadcn-compatible catalog primitives.', }, { - name: 'ThemeName', - anchor: 'theme-name', - signature: - 'ThemeName: "light" | "dark" | "system" | CatThemeName | (string & {})', + name: 'TypographyH2', + anchor: 'typography-h2', + signature: 'TypographyH2: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Any theme identifier accepted by {@link ThemeScope}: `"light"`, `"dark"`, `"system"`, a {@link CatThemeName}, or a custom string.', + 'Renders the `typography-h2` part of the shadcn-compatible catalog primitives.', }, { - name: 'ThemeOption', - anchor: 'theme-option', - signature: 'ThemeOption: {\n value: ThemeName;\n label: string;\n}', + name: 'TypographyH3', + anchor: 'typography-h3', + signature: 'TypographyH3: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'A theme choice offered by {@link ThemePicker}/{@link ThemeToggle}: a `value` paired with a display `label`.', + 'Renders the `typography-h3` part of the shadcn-compatible catalog primitives.', }, { - name: 'ThemePicker', - anchor: 'theme-picker', - signature: 'ThemePicker: (props: ThemePickerProps) => JSX.Element', + name: 'TypographyH4', + anchor: 'typography-h4', + signature: 'TypographyH4: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - "A `<select>` bound to the current {@link theme}, listing `themes` (defaults to the enclosing scope's options).", + 'Renders the `typography-h4` part of the shadcn-compatible catalog primitives.', }, { - name: 'ThemePickerProps', - anchor: 'theme-picker-props', + name: 'TypographyLead', + anchor: 'typography-lead', signature: - 'ThemePickerProps: Omit<JSX.IntrinsicElements["select"], "children" | "value" | "defaultValue" | "onChange"> & {\n themes?: readonly ThemeOption[];\n label?: string;\n}', - typeOnly: true, - summary: 'Props for the {@link ThemePicker} component.', - members: [ - { - name: 'label', - summary: '', - signature: 'label?: string | undefined;', - }, - { - name: 'themes', - summary: '', - signature: 'themes?: readonly ThemeOption[] | undefined;', - }, - ], - }, - { - name: 'ThemeScope', - anchor: 'theme-scope', - signature: 'ThemeScope: (props: ThemeScopeProps) => JSX.Element', + 'TypographyLead: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Establishes a theme boundary: tracks the active theme (persisted to\n`localStorage` under `storageKey` and synced across tabs/scopes), resolves\nthe OS `"system"` preference, and reflects the choice onto the DOM via\n`data-theme`/`data-theme-choice` attributes. Nested scopes cooperate\nthrough a shared coordinator so the deepest explicitly-set scope wins.', - }, - { - name: 'ThemeScopeProps', - anchor: 'theme-scope-props', - signature: - 'ThemeScopeProps: {\n children?: unknown;\n defaultTheme?: ThemeName;\n themes?: readonly ThemeOption[];\n storageKey?: string;\n}', - typeOnly: true, - summary: 'Props for the {@link ThemeScope} component.', - members: [ - { - name: 'children', - summary: '', - signature: 'children?: unknown;', - }, - { - name: 'defaultTheme', - summary: '', - signature: 'defaultTheme?: ThemeName | undefined;', - }, - { - name: 'storageKey', - summary: '', - signature: 'storageKey?: string | undefined;', - }, - { - name: 'themes', - summary: '', - signature: 'themes?: readonly ThemeOption[] | undefined;', - }, - ], + 'Renders the `typography-lead` part of the shadcn-compatible catalog primitives.', }, { - name: 'ThemeScopeValue', - anchor: 'theme-scope-value', + name: 'TypographyList', + anchor: 'typography-list', signature: - 'ThemeScopeValue: {\n theme: () => ThemeName;\n resolvedSystemTheme: () => "light" | "dark";\n setTheme: (theme: ThemeName) => void;\n themes: readonly ThemeOption[];\n storageKey: string;\n}', - typeOnly: true, - summary: - 'Value read from {@link theme}: the active theme, its resolved system value, a setter, and the available theme options.', - }, - { - name: 'ThemeToggle', - anchor: 'theme-toggle', - signature: 'ThemeToggle: (props: ThemeToggleProps) => JSX.Element', + 'TypographyList: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'A button that cycles through `themes` (defaults to `["light", "dark"]`) on\npress. Supports icon props per theme, or a function-as-children render\nprop receiving {@link ThemeToggleRenderContext}.', + 'Renders the `typography-list` part of the shadcn-compatible catalog primitives.', }, { - name: 'ThemeToggleProps', - anchor: 'theme-toggle-props', + name: 'TypographyMuted', + anchor: 'typography-muted', signature: - 'ThemeToggleProps: Omit<ButtonNativeProps, "children" | "onPress"> & {\n children?: unknown | ((context: ThemeToggleRenderContext) => unknown);\n lightIcon?: unknown;\n darkIcon?: unknown;\n systemIcon?: unknown;\n themes?: readonly ThemeName[];\n onPress?: (event: PressEvent) => void;\n}', + 'TypographyMuted: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, - summary: 'Props for the {@link ThemeToggle} component.', - members: [ - { - name: 'children', - summary: '', - signature: 'children?: unknown;', - }, - { - name: 'darkIcon', - summary: '', - signature: 'darkIcon?: unknown;', - }, - { - name: 'lightIcon', - summary: '', - signature: 'lightIcon?: unknown;', - }, - { - name: 'onPress', - summary: '', - signature: 'onPress?: ((event: PressEvent) => void) | undefined;', - }, - { - name: 'systemIcon', - summary: '', - signature: 'systemIcon?: unknown;', - }, - { - name: 'themes', - summary: '', - signature: 'themes?: readonly ThemeName[] | undefined;', - }, - ], + summary: + 'Renders the `typography-muted` part of the shadcn-compatible catalog primitives.', }, { - name: 'ThemeToggleRenderContext', - anchor: 'theme-toggle-render-context', - signature: - 'ThemeToggleRenderContext: {\n theme: ThemeName;\n nextTheme: ThemeName;\n}', + name: 'TypographyP', + anchor: 'typography-p', + signature: 'TypographyP: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, summary: - 'Render context passed to a function-as-children {@link ThemeToggleProps.children}.', + 'Renders the `typography-p` part of the shadcn-compatible catalog primitives.', }, ], - symbols53: [ + symbols125: [ { - name: 'DocumentRenderArgsLike', - anchor: 'document-render-args-like', - signature: - 'DocumentRenderArgsLike: {\n appHtml: string;\n context: {\n cspNonce?: string;\n styles?: readonly {\n id: string;\n cssText: string;\n }[];\n };\n}', + name: 'Toaster', + anchor: 'toaster', + signature: 'Toaster: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, - }, - { - name: 'withThemeStyles', - anchor: 'with-theme-styles', - signature: - 'withThemeStyles: <TArgs extends DocumentRenderArgsLike>(documentRenderer: (args: TArgs) => string) => (args: TArgs) => string', - typeOnly: false, summary: - 'Wrap an Askr SSR/SSG document renderer so generated theme rules used by the\nrendered app are available before hydration.', + 'Presentational Toaster host retaining the `sonner` styling slot.', }, ], - symbols54: [ + symbols126: [ { name: 'Accordion', anchor: 'accordion', @@ -40567,21 +50313,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `accordion`.', }, - { - name: 'ACCORDION_A11Y_CONTRACT', - anchor: 'accordion-a11-y-contract', - signature: - 'ACCORDION_A11Y_CONTRACT: { readonly TRIGGER_ROLE: "button"; readonly EXPANDED_ATTRIBUTE: "aria-expanded"; readonly CONTROLS_ATTRIBUTE: "aria-controls"; readonly PANEL_ROLE: "region"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly orientation: "data-orientation"; }; }', - typeOnly: true, - summary: 'WAI-ARIA accordion/disclosure contract.', - }, - { - name: 'AccordionA11yContract', - anchor: 'accordion-a11y-contract', - signature: 'AccordionA11yContract: typeof ACCORDION_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Accordion A11y Contract object.', - }, { name: 'AccordionContent', anchor: 'accordion-content', @@ -41088,14 +50819,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'ALERT_DIALOG_A11Y_CONTRACT', - anchor: 'alert-dialog-a11-y-contract', - signature: - 'ALERT_DIALOG_A11Y_CONTRACT: { readonly CONTENT_ROLE: "alertdialog"; readonly LABELLED_BY_ATTRIBUTE: "aria-labelledby"; readonly DESCRIBED_BY_ATTRIBUTE: "aria-describedby"; readonly ACTION_REQUIREMENTS: { readonly hasPrimaryAction: true; readonly hasCancelAction: true; }; }', - typeOnly: true, - summary: 'Alert dialog accessibility contract.', - }, { name: 'AlertDialog', anchor: 'alert-dialog', @@ -41104,13 +50827,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `alert-dialog`.', }, - { - name: 'AlertDialogA11yContract', - anchor: 'alert-dialog-a11y-contract', - signature: 'AlertDialogA11yContract: typeof ALERT_DIALOG_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Alert Dialog A11y Contract object.', - }, { name: 'AlertDialogAction', anchor: 'alert-dialog-action', @@ -41873,21 +51589,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders the `avatar` part of `avatar`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'AVATAR_A11Y_CONTRACT', - anchor: 'avatar-a11-y-contract', - signature: - 'AVATAR_A11Y_CONTRACT: { readonly ROOT: { readonly slot: "data-slot"; readonly marker: "data-avatar"; }; readonly IMAGE: { readonly slot: "data-slot"; readonly marker: "data-avatar-image"; readonly requiresAlt: true; }; readonly FALLBACK: { readonly slot: "data-slot"; readonly marker: "data-avatar-fallback"; readonly visibleBeforeImageLoad: true; }; }', - typeOnly: true, - summary: 'Accessibility contract for Avatar primitives.', - }, - { - name: 'AvatarA11yContract', - anchor: 'avatar-a11y-contract', - signature: 'AvatarA11yContract: typeof AVATAR_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Avatar A11y Contract object.', - }, { name: 'AvatarAsChildProps', anchor: 'avatar-as-child-props', @@ -42130,22 +51831,6 @@ export const apiSymbolSets: Readonly< ], }, }, - { - name: 'BUTTON_A11Y_CONTRACT', - anchor: 'button-a11-y-contract', - signature: - 'BUTTON_A11Y_CONTRACT: { readonly KEYBOARD_ACTIVATION: readonly ["Enter", "Space"]; readonly ROLE: "button"; readonly DISABLED_ATTRIBUTES: { readonly native: "disabled"; readonly asChild: "aria-disabled"; }; readonly DATA_ATTRIBUTES: { readonly disabled: "data-disabled"; }; readonly FOCUS_RULES: { readonly enabled: "focusable"; readonly disabled: "not-focusable"; }; }', - typeOnly: true, - summary: - 'Accessibility contract for Button component\n\nFollowing WAI-ARIA Button Pattern:\nhttps://www.w3.org/WAI/ARIA/apg/patterns/button/\n\n## Role\n- Native <button>: implicit role="button"\n- asChild: preserves child role (e.g., role="button" on <div>)\n\n## States\n- disabled (native): uses `disabled` attribute\n- disabled (asChild): uses `aria-disabled="true"` + `tabindex="-1"`\n\n## Keyboard\n- Space: Activates button (handled by pressable foundation)\n- Enter: Activates button (handled by pressable foundation)\n- Disabled buttons do not respond to interaction\n\n## Focus\n- Native buttons: focusable by default\n- asChild elements: receive tabindex if not naturally focusable\n- Disabled: removed from tab order (tabindex="-1" or native disabled)\n\n## Screen Reader\n- Announces role as "button"\n- Announces disabled state\n- Announces accessible name from text content or aria-label\n\n## Implementation Notes\n- All interaction behavior is delegated to `pressable` foundation\n- Button component does NOT implement keyboard handling directly\n- Button component does NOT check disabled prop directly\n- All ARIA attributes are applied by foundation, not component', - }, - { - name: 'ButtonA11yContract', - anchor: 'button-a11y-contract', - signature: 'ButtonA11yContract: typeof BUTTON_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type-safe accessibility contract', - }, { name: 'ButtonAsChildElement', anchor: 'button-as-child-element', @@ -42397,22 +52082,6 @@ export const apiSymbolSets: Readonly< ], }, }, - { - name: 'CHECKBOX_A11Y_CONTRACT', - anchor: 'checkbox-a11-y-contract', - signature: - 'CHECKBOX_A11Y_CONTRACT: { readonly ROLE: "checkbox"; readonly KEYBOARD_ACTIVATION: readonly ["Space"]; readonly CHECKED_ATTRIBUTE: "aria-checked"; readonly INDETERMINATE_VALUE: "mixed"; readonly DISABLED_ATTRIBUTES: { readonly nativeInput: { readonly disabled: true; }; readonly nonNative: { readonly "aria-disabled": "true"; readonly tabIndex: -1; }; }; readonly DATA_ATTRIBUTES: { readonly state: "data-state"; readonly disabled: "data-disabled"; }; readonly FOCUS_RULES: { readonly enabled: "tabIndex >= 0"; readonly disabled: "tabIndex = -1"; readonly visualIndicator: "required"; }; }', - typeOnly: true, - summary: - "WAI-ARIA Checkbox Pattern\n\nSpecification: https://www.w3.org/WAI/ARIA/apg/patterns/checkbox/\n\nA checkbox is an input mechanism that allows users to select one or more items\nfrom a set. Unlike toggle buttons, checkboxes visually represent a checked state\nwith aria-checked (not aria-pressed).\n\n## Required ARIA\n- aria-checked: 'true' | 'false' | 'mixed' (indicates checkbox state)\n- role: 'checkbox' (when not native input)\n\n## Keyboard Support\n- Space: Activates checkbox\n- Enter: Does not activate checkbox\n\n## Focus Management\n- Checkbox is focusable when not disabled\n- Visual focus indicator required\n\n## Disabled State\n- aria-disabled when disabled=true (for non-native)\n- disabled attribute when native input\n- Removed from tab order\n- Visual disabled styling (consumer responsibility)\n\n## Indeterminate State\n- `asChild`: aria-checked='mixed'\n- native input: current host path omits aria-checked and keeps data-state='indeterminate'\n- Typically used for \"select all\" checkboxes when partial selection", - }, - { - name: 'CheckboxA11yContract', - anchor: 'checkbox-a11y-contract', - signature: 'CheckboxA11yContract: typeof CHECKBOX_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Checkbox A11y Contract object.', - }, { name: 'CheckboxAsChildProps', anchor: 'checkbox-as-child-props', @@ -42685,15 +52354,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `collapsible`.', }, - { - name: 'COLLAPSIBLE_A11Y_CONTRACT', - anchor: 'collapsible-a11-y-contract', - signature: - 'COLLAPSIBLE_A11Y_CONTRACT: { readonly TRIGGER_ROLE: "button"; readonly KEYBOARD_ACTIVATION: readonly ["Enter", "Space"]; readonly EXPANDED_ATTRIBUTE: "aria-expanded"; readonly CONTROLS_ATTRIBUTE: "aria-controls"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; }; readonly CONTENT_REQUIREMENTS: { readonly idAttribute: "required"; readonly defaultPresence: "unmounted when closed"; }; readonly FOCUS_RULES: { readonly afterActivation: "focus remains on trigger"; readonly contentFocusable: false; }; }', - typeOnly: true, - summary: - 'WAI-ARIA Disclosure Pattern (Collapsible)\n\nSpecification: https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/\n\nA disclosure (collapsible) shows and hides a region of content via a button.\nThe button indicates the visibility state of the content region.\n\n## Required ARIA\n- Trigger: role="button" (native or explicit)\n- Trigger: aria-expanded="true" | "false"\n- Trigger: aria-controls={contentId}\n- Content: id attribute for aria-controls reference\n\n## Keyboard Support\n- Enter: Toggles content visibility (on trigger)\n- Space: Toggles content visibility (on trigger)\n\n## Focus Management\n- Trigger is focusable when not disabled\n- Focus remains on trigger after activation\n- Content is not focusable by default\n\n## Disabled State\n- Trigger cannot be activated when disabled\n- Visual disabled styling (consumer responsibility)\n\n## Presence\n- Content unmounts when closed (default)\n- Can force mount for animation/transition control', - }, { name: 'CollapsibleContent', anchor: 'collapsible-content', @@ -42866,7 +52526,7 @@ export const apiSymbolSets: Readonly< signature: 'DebouncedInput: (props: DebouncedInputProps) => JSX.Element', typeOnly: true, summary: - 'DebouncedInput is a convenience wrapper around Input that emits a settled\nvalue for search and filter surfaces.\n\nThe debounced emitter is created once per mount and replaced only when\n`debounceMs` changes. A pending value is re-timed with the new delay (or\nemitted at once when the delay drops to zero), is delivered to the latest\n`onDebouncedInput`, is dropped when `onDebouncedInput` is removed, and is\ncancelled on unmount.', + 'DebouncedInput is a convenience wrapper around Input that emits a settled\nvalue for search and filter surfaces.\n\nOne component-owned timer is re-timed when `debounceMs` changes (or emits\nat once when the delay drops to zero). A pending value is delivered to the latest\n`onDebouncedInput`, is dropped when `onDebouncedInput` is removed, and is\ncancelled on unmount.', }, { name: 'DebouncedInputProps', @@ -42926,21 +52586,6 @@ export const apiSymbolSets: Readonly< ], }, }, - { - name: 'DIALOG_A11Y_CONTRACT', - anchor: 'dialog-a11-y-contract', - signature: - 'DIALOG_A11Y_CONTRACT: { readonly CONTENT_ROLE: "dialog"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; }; readonly MODAL_ATTRIBUTE: "aria-modal"; readonly LABELLED_BY_ATTRIBUTE: "aria-labelledby"; readonly DESCRIBED_BY_ATTRIBUTE: "aria-describedby"; readonly TRIGGER_ATTRIBUTES: { readonly expanded: "aria-expanded"; readonly controls: "aria-controls"; }; }', - typeOnly: true, - summary: 'Dialog accessibility contract.', - }, - { - name: 'DialogA11yContract', - anchor: 'dialog-a11y-contract', - signature: 'DialogA11yContract: typeof DIALOG_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Dialog A11y Contract object.', - }, { name: 'DialogClose', anchor: 'dialog-close', @@ -43613,14 +53258,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'DISMISSABLE_LAYER_A11Y_CONTRACT', - anchor: 'dismissable-layer-a11-y-contract', - signature: - 'DISMISSABLE_LAYER_A11Y_CONTRACT: { readonly DISMISS_EVENTS: readonly ["escape-key", "outside-pointer"]; readonly INTERACTION_POLICY: "background-dismissable"; }', - typeOnly: true, - summary: 'Dismissable layer accessibility contract.', - }, { name: 'DismissableLayer', anchor: 'dismissable-layer', @@ -43630,14 +53267,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders a part of `dismissable-layer`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'DismissableLayerA11yContract', - anchor: 'dismissable-layer-a11y-contract', - signature: - 'DismissableLayerA11yContract: typeof DISMISSABLE_LAYER_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Dismissable Layer A11y Contract object.', - }, { name: 'DismissableLayerAsChildProps', anchor: 'dismissable-layer-as-child-props', @@ -43698,148 +53327,133 @@ export const apiSymbolSets: Readonly< { name: 'ref', summary: '', - signature: 'ref?: Ref<Element>;', - }, - ], - }, - { - name: 'DismissableLayerOwnProps', - anchor: 'dismissable-layer-own-props', - signature: - 'DismissableLayerOwnProps: {\n children?: unknown;\n id?: string;\n disabled?: boolean;\n disableOutsidePointerEvents?: boolean;\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n onPointerDownOutside?: (event: PointerEvent) => void;\n onInteractOutside?: (event: Event) => void;\n onDismiss?: () => void;\n}', - typeOnly: true, - summary: - 'Own props for Dismissable Layer, before merging with native element attributes.', - members: [ - { - name: 'children', - summary: '', - signature: 'children?: unknown;', - }, - { - name: 'disabled', - summary: '', - signature: 'disabled?: boolean | undefined;', - }, - { - name: 'disableOutsidePointerEvents', - summary: '', - signature: 'disableOutsidePointerEvents?: boolean | undefined;', - }, - { - name: 'id', - summary: '', - signature: 'id?: string | undefined;', - }, - { - name: 'onDismiss', - summary: '', - signature: 'onDismiss?: (() => void) | undefined;', - }, - { - name: 'onEscapeKeyDown', - summary: '', - signature: - 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', - }, - { - name: 'onInteractOutside', - summary: '', - signature: - 'onInteractOutside?: ((event: Event) => void) | undefined;', - }, - { - name: 'onPointerDownOutside', - summary: '', - signature: - 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', - }, - ], - }, - { - name: 'DismissableLayerProps', - anchor: 'dismissable-layer-props', - signature: - "DismissableLayerProps: Omit<JSX.IntrinsicElements['div'], 'children' | 'ref'> & DismissableLayerOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLDivElement>;\n}", - typeOnly: true, - summary: 'Props for Dismissable Layer.', - members: [ - { - name: 'asChild', - summary: '', - signature: 'asChild?: false | undefined;', - }, - { - name: 'children', - summary: '', - signature: 'children?: unknown;', - }, - { - name: 'disabled', - summary: '', - signature: 'disabled?: boolean | undefined;', - }, - { - name: 'disableOutsidePointerEvents', - summary: '', - signature: 'disableOutsidePointerEvents?: boolean | undefined;', - }, - { - name: 'id', - summary: '', - signature: 'id?: string | undefined;', - }, - { - name: 'onDismiss', - summary: '', - signature: 'onDismiss?: (() => void) | undefined;', - }, - { - name: 'onEscapeKeyDown', - summary: '', - signature: - 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', - }, - { - name: 'onInteractOutside', - summary: '', - signature: - 'onInteractOutside?: ((event: Event) => void) | undefined;', - }, - { - name: 'onPointerDownOutside', - summary: '', - signature: - 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', - }, - { - name: 'ref', - summary: '', - signature: 'ref?: Ref<HTMLDivElement>;', + signature: 'ref?: Ref<Element>;', }, ], }, { - name: 'Dropdown', - anchor: 'dropdown', - signature: 'Dropdown: (props: DropdownProps) => JSX.Element', + name: 'DismissableLayerOwnProps', + anchor: 'dismissable-layer-own-props', + signature: + 'DismissableLayerOwnProps: {\n children?: unknown;\n id?: string;\n disabled?: boolean;\n disableOutsidePointerEvents?: boolean;\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n onPointerDownOutside?: (event: PointerEvent) => void;\n onInteractOutside?: (event: Event) => void;\n onDismiss?: () => void;\n}', typeOnly: true, - summary: 'Renders a part of `dropdown`.', + summary: + 'Own props for Dismissable Layer, before merging with native element attributes.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'disableOutsidePointerEvents', + summary: '', + signature: 'disableOutsidePointerEvents?: boolean | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'onDismiss', + summary: '', + signature: 'onDismiss?: (() => void) | undefined;', + }, + { + name: 'onEscapeKeyDown', + summary: '', + signature: + 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', + }, + { + name: 'onInteractOutside', + summary: '', + signature: + 'onInteractOutside?: ((event: Event) => void) | undefined;', + }, + { + name: 'onPointerDownOutside', + summary: '', + signature: + 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', + }, + ], }, { - name: 'DROPDOWN_A11Y_CONTRACT', - anchor: 'dropdown-a11-y-contract', + name: 'DismissableLayerProps', + anchor: 'dismissable-layer-props', signature: - 'DROPDOWN_A11Y_CONTRACT: { readonly CONTENT_ROLE: "menu"; readonly ITEM_ROLE: "menuitem"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly side: "data-side"; readonly align: "data-align"; }; readonly TRIGGER_ATTRIBUTES: { readonly expanded: "aria-expanded"; readonly controls: "aria-controls"; readonly hasPopup: "aria-haspopup"; }; }', + "DismissableLayerProps: Omit<JSX.IntrinsicElements['div'], 'children' | 'ref'> & DismissableLayerOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLDivElement>;\n}", typeOnly: true, - summary: 'Dropdown accessibility contract.', + summary: 'Props for Dismissable Layer.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'disableOutsidePointerEvents', + summary: '', + signature: 'disableOutsidePointerEvents?: boolean | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'onDismiss', + summary: '', + signature: 'onDismiss?: (() => void) | undefined;', + }, + { + name: 'onEscapeKeyDown', + summary: '', + signature: + 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', + }, + { + name: 'onInteractOutside', + summary: '', + signature: + 'onInteractOutside?: ((event: Event) => void) | undefined;', + }, + { + name: 'onPointerDownOutside', + summary: '', + signature: + 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], }, { - name: 'DropdownA11yContract', - anchor: 'dropdown-a11y-contract', - signature: 'DropdownA11yContract: typeof DROPDOWN_A11Y_CONTRACT', + name: 'Dropdown', + anchor: 'dropdown', + signature: 'Dropdown: (props: DropdownProps) => JSX.Element', typeOnly: true, - summary: 'Type of the Dropdown A11y Contract object.', + summary: 'Renders a part of `dropdown`.', }, { name: 'DropdownContent', @@ -44546,14 +54160,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Dropdown Trigger Variant.', }, - { - name: 'FOCUS_SCOPE_A11Y_CONTRACT', - anchor: 'focus-scope-a11-y-contract', - signature: - 'FOCUS_SCOPE_A11Y_CONTRACT: { readonly FEATURES: { readonly trapped: true; readonly loop: true; readonly autoFocus: true; readonly restoreFocus: true; }; }', - typeOnly: true, - summary: 'Focus scope accessibility contract.', - }, { name: 'FocusScope', anchor: 'focus-scope', @@ -44563,13 +54169,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders a part of `focus-scope`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'FocusScopeA11yContract', - anchor: 'focus-scope-a11y-contract', - signature: 'FocusScopeA11yContract: typeof FOCUS_SCOPE_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Focus Scope A11y Contract object.', - }, { name: 'FocusScopeAsChildProps', anchor: 'focus-scope-as-child-props', @@ -45172,21 +54771,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders the `input` part of `input`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'INPUT_A11Y_CONTRACT', - anchor: 'input-a11-y-contract', - signature: - 'INPUT_A11Y_CONTRACT: { readonly HOST_ELEMENT: "input"; readonly DISABLED_ATTRIBUTES: { readonly native: "disabled"; readonly asChild: "disabled"; }; readonly DATA_ATTRIBUTES: { readonly disabled: "data-disabled"; }; readonly FOCUS_RULES: { readonly defaultTabIndex: 0; readonly disabledTabIndex: -1; }; readonly LABELING: { readonly supportsLabelElement: true; readonly supportsAriaLabel: true; readonly supportsAriaLabelledBy: true; }; }', - typeOnly: true, - summary: 'Native input semantics wrapped by askr-ui Input.', - }, - { - name: 'InputA11yContract', - anchor: 'input-a11y-contract', - signature: 'InputA11yContract: typeof INPUT_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Input A11y Contract object.', - }, { name: 'InputAsChildProps', anchor: 'input-as-child-props', @@ -45315,21 +54899,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders the `label` part of `label`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'LABEL_A11Y_CONTRACT', - anchor: 'label-a11-y-contract', - signature: - 'LABEL_A11Y_CONTRACT: { readonly ELEMENT: "label"; readonly ASSOCIATION_ATTRIBUTE: "for"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; }; readonly NAME_SOURCE_PRIORITY: readonly ["aria-label", "textContent"]; readonly AS_CHILD: { readonly forwardsProps: true; readonly preservesChildElement: true; }; }', - typeOnly: true, - summary: 'Native label semantics for askr-ui Label.', - }, - { - name: 'LabelA11yContract', - anchor: 'label-a11y-contract', - signature: 'LabelA11yContract: typeof LABEL_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Label A11y Contract object.', - }, { name: 'LabelAsChildProps', anchor: 'label-as-child-props', @@ -45432,21 +55001,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `menu`.', }, - { - name: 'MENU_A11Y_CONTRACT', - anchor: 'menu-a11-y-contract', - signature: - 'MENU_A11Y_CONTRACT: { readonly CONTENT_ROLE: "menu"; readonly ITEM_ROLE: "menuitem"; readonly ORIENTATION_ATTRIBUTE: "aria-orientation"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly disabled: "data-disabled"; readonly orientation: "data-orientation"; }; }', - typeOnly: true, - summary: 'Menu accessibility contract.', - }, - { - name: 'MenuA11yContract', - anchor: 'menu-a11y-contract', - signature: 'MenuA11yContract: typeof MENU_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Menu A11y Contract object.', - }, { name: 'Menubar', anchor: 'menubar', @@ -45454,21 +55008,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `menubar`.', }, - { - name: 'MENUBAR_A11Y_CONTRACT', - anchor: 'menubar-a11-y-contract', - signature: - 'MENUBAR_A11Y_CONTRACT: { readonly ROOT_ROLE: "menubar"; readonly CONTENT_ROLE: "menu"; readonly ITEM_ROLE: "menuitem"; readonly EXPANDED_ATTRIBUTE: "aria-expanded"; readonly HAS_POPUP_ATTRIBUTE: "aria-haspopup"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly side: "data-side"; readonly align: "data-align"; }; }', - typeOnly: true, - summary: 'WAI-ARIA menubar contract.', - }, - { - name: 'MenubarA11yContract', - anchor: 'menubar-a11y-contract', - signature: 'MenubarA11yContract: typeof MENUBAR_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Menubar A11y Contract object.', - }, { name: 'MenubarContent', anchor: 'menubar-content', @@ -46839,21 +56378,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `popover`.', }, - { - name: 'POPOVER_A11Y_CONTRACT', - anchor: 'popover-a11-y-contract', - signature: - 'POPOVER_A11Y_CONTRACT: { readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly side: "data-side"; readonly align: "data-align"; }; readonly TRIGGER_ATTRIBUTES: { readonly popup: "aria-haspopup"; readonly expanded: "aria-expanded"; readonly controls: "aria-controls"; }; readonly CONTENT_ATTRIBUTES: { readonly role: "dialog"; readonly labelledBy: "aria-labelledby"; readonly tabIndex: -1; }; readonly DEFAULT_LABELING: { readonly source: "trigger-id"; readonly override: "aria-label or aria-labelledby"; }; readonly FOCUS_RULES: { readonly trapScope: true; readonly restoreFocusOnClose: true; readonly dismissableLayer: true; }; }', - typeOnly: true, - summary: 'WAI-ARIA dialog-style popover contract.', - }, - { - name: 'PopoverA11yContract', - anchor: 'popover-a11y-contract', - signature: 'PopoverA11yContract: typeof POPOVER_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Popover A11y Contract object.', - }, { name: 'PopoverClose', anchor: 'popover-close', @@ -47294,29 +56818,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders the `progress` part of `progress` with `role="progressbar"`.', }, - { - name: 'PROGRESS_A11Y_CONTRACT', - anchor: 'progress-a11-y-contract', - signature: - 'PROGRESS_A11Y_CONTRACT: { readonly ROLE: "progressbar"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly percentage: "data-percentage"; }; readonly VALUE_NOW_ATTRIBUTE: "aria-valuenow"; readonly VALUE_MIN_ATTRIBUTE: "aria-valuemin"; readonly VALUE_MAX_ATTRIBUTE: "aria-valuemax"; readonly INDICATOR_MARKER: "data-progress-indicator"; readonly INDICATOR_PERCENTAGE_ATTRIBUTE: "data-percentage"; }', - typeOnly: true, - summary: 'WAI-ARIA progressbar contract for linear progress.', - }, - { - name: 'PROGRESS_CIRCLE_A11Y_CONTRACT', - anchor: 'progress-circle-a11-y-contract', - signature: - 'PROGRESS_CIRCLE_A11Y_CONTRACT: { readonly ROLE: "progressbar"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly percentage: "data-percentage"; }; readonly VALUE_NOW_ATTRIBUTE: "aria-valuenow"; readonly VALUE_MIN_ATTRIBUTE: "aria-valuemin"; readonly VALUE_MAX_ATTRIBUTE: "aria-valuemax"; readonly INDICATOR_MARKER: "data-progress-circle-indicator"; }', - typeOnly: true, - summary: 'WAI-ARIA progressbar contract for circular progress.', - }, - { - name: 'ProgressA11yContract', - anchor: 'progress-a11y-contract', - signature: 'ProgressA11yContract: typeof PROGRESS_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Progress A11y Contract object.', - }, { name: 'ProgressCircle', anchor: 'progress-circle', @@ -47325,14 +56826,6 @@ export const apiSymbolSets: Readonly< summary: 'Headless circular progress indicator root.\n\nNormalizes value/max, computes percentage, exposes `--ak-progress-percentage`\nas a dynamically injected CSS custom property, and provides progress state\nto `ProgressCircleIndicator` via context.', }, - { - name: 'ProgressCircleA11yContract', - anchor: 'progress-circle-a11y-contract', - signature: - 'ProgressCircleA11yContract: typeof PROGRESS_CIRCLE_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Progress Circle A11y Contract object.', - }, { name: 'ProgressCircleIndicator', anchor: 'progress-circle-indicator', @@ -47618,15 +57111,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'RADIO_GROUP_A11Y_CONTRACT', - anchor: 'radio-group-a11-y-contract', - signature: - 'RADIO_GROUP_A11Y_CONTRACT: { readonly GROUP_ROLE: "radiogroup"; readonly ITEM_ROLE: "radio"; readonly CHECKED_ATTRIBUTE: "aria-checked"; readonly ORIENTATION_ATTRIBUTE: "aria-orientation"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly orientation: "data-orientation"; }; readonly KEYBOARD_NAVIGATION: readonly ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"]; readonly ROVING_FOCUS: { readonly activeItemTabIndex: 0; readonly inactiveItemTabIndex: -1; }; readonly FORM_INTEGRATION: { readonly hiddenInputType: "hidden"; }; }', - typeOnly: true, - summary: - 'WAI-ARIA Radio Group Pattern\n\nSpecification: https://www.w3.org/WAI/ARIA/apg/patterns/radio/', - }, { name: 'RadioGroup', anchor: 'radio-group', @@ -47635,13 +57119,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `radio-group`.', }, - { - name: 'RadioGroupA11yContract', - anchor: 'radio-group-a11y-contract', - signature: 'RadioGroupA11yContract: typeof RADIO_GROUP_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Radio Group A11y Contract object.', - }, { name: 'RadioGroupItem', anchor: 'radio-group-item', @@ -48092,21 +57569,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `select`.', }, - { - name: 'SELECT_A11Y_CONTRACT', - anchor: 'select-a11-y-contract', - signature: - 'SELECT_A11Y_CONTRACT: { readonly TRIGGER_ROLE: "button"; readonly CONTENT_ROLE: "listbox"; readonly ITEM_ROLE: "option"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly side: "data-side"; readonly align: "data-align"; }; readonly TRIGGER_ATTRIBUTES: { readonly expanded: "aria-expanded"; readonly controls: "aria-controls"; readonly hasPopup: "aria-haspopup"; }; readonly ITEM_SELECTION_ATTRIBUTE: "aria-selected"; }', - typeOnly: true, - summary: 'Select accessibility contract.', - }, - { - name: 'SelectA11yContract', - anchor: 'select-a11y-contract', - signature: 'SelectA11yContract: typeof SELECT_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Select A11y Contract object.', - }, { name: 'SelectContent', anchor: 'select-content', @@ -48960,21 +58422,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders the `slider` part of `slider`.', }, - { - name: 'SLIDER_A11Y_CONTRACT', - anchor: 'slider-a11-y-contract', - signature: - 'SLIDER_A11Y_CONTRACT: { readonly THUMB_ROLE: "slider"; readonly VALUE_NOW_ATTRIBUTE: "aria-valuenow"; readonly VALUE_MIN_ATTRIBUTE: "aria-valuemin"; readonly VALUE_MAX_ATTRIBUTE: "aria-valuemax"; readonly ORIENTATION_ATTRIBUTE: "aria-orientation"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly disabled: "data-disabled"; readonly orientation: "data-orientation"; }; }', - typeOnly: true, - summary: 'Slider accessibility contract.', - }, - { - name: 'SliderA11yContract', - anchor: 'slider-a11y-contract', - signature: 'SliderA11yContract: typeof SLIDER_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Slider A11y Contract object.', - }, { name: 'SliderOrientation', anchor: 'slider-orientation', @@ -49308,22 +58755,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders the `switch` part of `switch` with `role="switch"`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'SWITCH_A11Y_CONTRACT', - anchor: 'switch-a11-y-contract', - signature: - 'SWITCH_A11Y_CONTRACT: { readonly ROLE: "switch"; readonly CHECKED_ATTRIBUTE: "aria-checked"; readonly KEYBOARD_ACTIVATION: readonly ["Space"]; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; }; readonly DISABLED_ATTRIBUTES: { readonly nativeButton: { readonly disabled: true; readonly "aria-disabled": "true"; }; readonly nonNative: { readonly "aria-disabled": "true"; readonly tabIndex: -1; }; }; readonly FORM_INTEGRATION: { readonly host: "button"; readonly hiddenInputType: "checkbox"; readonly hiddenInputValue: "on"; }; }', - typeOnly: true, - summary: - 'WAI-ARIA Switch Pattern\n\nSpecification: https://www.w3.org/WAI/ARIA/apg/patterns/switch/', - }, - { - name: 'SwitchA11yContract', - anchor: 'switch-a11y-contract', - signature: 'SwitchA11yContract: typeof SWITCH_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Switch A11y Contract object.', - }, { name: 'SwitchAsChildProps', anchor: 'switch-as-child-props', @@ -50027,21 +59458,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders the `textarea` part of `textarea`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'TEXTAREA_A11Y_CONTRACT', - anchor: 'textarea-a11-y-contract', - signature: - 'TEXTAREA_A11Y_CONTRACT: { readonly HOST_ELEMENT: "textarea"; readonly DISABLED_ATTRIBUTES: { readonly native: "disabled"; readonly asChild: "disabled"; }; readonly DATA_ATTRIBUTES: { readonly disabled: "data-disabled"; }; readonly FOCUS_RULES: { readonly defaultTabIndex: 0; readonly disabledTabIndex: -1; }; readonly LABELING: { readonly supportsLabelElement: true; readonly supportsAriaLabel: true; readonly supportsAriaLabelledBy: true; }; }', - typeOnly: true, - summary: 'Native textarea semantics wrapped by askr-ui Textarea.', - }, - { - name: 'TextareaA11yContract', - anchor: 'textarea-a11y-contract', - signature: 'TextareaA11yContract: typeof TEXTAREA_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Textarea A11y Contract object.', - }, { name: 'TextareaAsChildProps', anchor: 'textarea-as-child-props', @@ -50161,21 +59577,6 @@ export const apiSymbolSets: Readonly< summary: 'Toast registers a notification entry with the host and returns no DOM on\nits own.', }, - { - name: 'TOAST_A11Y_CONTRACT', - anchor: 'toast-a11-y-contract', - signature: - 'TOAST_A11Y_CONTRACT: { readonly ROOT_ROLE: "status"; readonly LIVE_REGION_ATTRIBUTE: "aria-live"; readonly LIVE_REGION_VALUE: "polite"; readonly VIEWPORT_LABEL: "Notifications"; readonly AUTO_DISMISS_PAUSE: "pointer-or-focus"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; }; }', - typeOnly: true, - summary: 'Toast accessibility contract.', - }, - { - name: 'ToastA11yContract', - anchor: 'toast-a11y-contract', - signature: 'ToastA11yContract: typeof TOAST_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Toast A11y Contract object.', - }, { name: 'ToastAction', anchor: 'toast-action', @@ -50711,30 +60112,6 @@ export const apiSymbolSets: Readonly< ], }, }, - { - name: 'TOGGLE_A11Y_CONTRACT', - anchor: 'toggle-a11-y-contract', - signature: - 'TOGGLE_A11Y_CONTRACT: { readonly ROLE: "button"; readonly KEYBOARD_ACTIVATION: readonly ["Enter", "Space"]; readonly PRESSED_ATTRIBUTE: "aria-pressed"; readonly DISABLED_ATTRIBUTES: { readonly nativeButton: { readonly disabled: true; readonly "aria-disabled": "true"; }; readonly nonNative: { readonly "aria-disabled": "true"; readonly tabIndex: -1; }; }; readonly DATA_ATTRIBUTES: { readonly state: "data-state"; readonly disabled: "data-disabled"; }; readonly FOCUS_RULES: { readonly enabled: "tabIndex >= 0"; readonly disabled: "tabIndex = -1"; readonly visualIndicator: "required"; }; }', - typeOnly: true, - summary: - "WAI-ARIA Toggle Button Pattern\n\nSpecification: https://www.w3.org/WAI/ARIA/apg/patterns/button/\n\nA toggle button is a two-state button that can be either on or off.\nUses aria-pressed to communicate toggle state to assistive technology.\n\n## Required ARIA\n- aria-pressed: 'true' | 'false' (indicates toggle state)\n- role: 'button' (when not native button)\n\n## Keyboard Support\n- Enter: Activates toggle (on native button and non-button elements)\n- Space: Activates toggle\n\n## Focus Management\n- Toggle is focusable when not disabled\n- Visual focus indicator required\n\n## Disabled State\n- aria-disabled when disabled=true\n- Removed from tab order\n- Visual disabled styling (consumer responsibility)", - }, - { - name: 'TOGGLE_GROUP_A11Y_CONTRACT', - anchor: 'toggle-group-a11-y-contract', - signature: - 'TOGGLE_GROUP_A11Y_CONTRACT: { readonly GROUP_ROLE: "group"; readonly ITEM_ROLE: "button"; readonly PRESSED_ATTRIBUTE: "aria-pressed"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly orientation: "data-orientation"; }; }', - typeOnly: true, - summary: 'Accessibility contract for toggle groups.', - }, - { - name: 'ToggleA11yContract', - anchor: 'toggle-a11y-contract', - signature: 'ToggleA11yContract: typeof TOGGLE_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Toggle A11y Contract object.', - }, { name: 'ToggleAsChildProps', anchor: 'toggle-as-child-props', @@ -50833,13 +60210,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `toggle-group`.', }, - { - name: 'ToggleGroupA11yContract', - anchor: 'toggle-group-a11y-contract', - signature: 'ToggleGroupA11yContract: typeof TOGGLE_GROUP_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Toggle Group A11y Contract object.', - }, { name: 'ToggleGroupItem', anchor: 'toggle-group-item', @@ -51250,21 +60620,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `tooltip`.', }, - { - name: 'TOOLTIP_A11Y_CONTRACT', - anchor: 'tooltip-a11-y-contract', - signature: - 'TOOLTIP_A11Y_CONTRACT: { readonly CONTENT_ROLE: "tooltip"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly side: "data-side"; readonly align: "data-align"; }; readonly TRIGGER_ATTRIBUTE: "aria-describedby"; readonly OPEN_STATE_ATTRIBUTE: "data-state"; }', - typeOnly: true, - summary: 'Tooltip accessibility contract.', - }, - { - name: 'TooltipA11yContract', - anchor: 'tooltip-a11y-contract', - signature: 'TooltipA11yContract: typeof TOOLTIP_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Tooltip A11y Contract object.', - }, { name: 'TooltipContent', anchor: 'tooltip-content', @@ -52093,14 +61448,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Virtual Table Width.', }, - { - name: 'VISUALLY_HIDDEN_A11Y_CONTRACT', - anchor: 'visually-hidden-a11-y-contract', - signature: - 'VISUALLY_HIDDEN_A11Y_CONTRACT: { readonly STRATEGY: "visually-hidden-but-screen-reader-visible"; readonly HOST_ELEMENT: "span"; }', - typeOnly: true, - summary: 'Visually hidden content accessibility contract.', - }, { name: 'VisuallyHidden', anchor: 'visually-hidden', @@ -52110,14 +61457,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders a part of `visually-hidden`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'VisuallyHiddenA11yContract', - anchor: 'visually-hidden-a11y-contract', - signature: - 'VisuallyHiddenA11yContract: typeof VISUALLY_HIDDEN_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Visually Hidden A11y Contract object.', - }, { name: 'VisuallyHiddenAsChildProps', anchor: 'visually-hidden-as-child-props', @@ -52211,7 +61550,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols55: [ + symbols127: [ { name: 'Avatar', anchor: 'avatar', @@ -52221,21 +61560,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders the `avatar` part of `avatar`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'AVATAR_A11Y_CONTRACT', - anchor: 'avatar-a11-y-contract', - signature: - 'AVATAR_A11Y_CONTRACT: { readonly ROOT: { readonly slot: "data-slot"; readonly marker: "data-avatar"; }; readonly IMAGE: { readonly slot: "data-slot"; readonly marker: "data-avatar-image"; readonly requiresAlt: true; }; readonly FALLBACK: { readonly slot: "data-slot"; readonly marker: "data-avatar-fallback"; readonly visibleBeforeImageLoad: true; }; }', - typeOnly: true, - summary: 'Accessibility contract for Avatar primitives.', - }, - { - name: 'AvatarA11yContract', - anchor: 'avatar-a11y-contract', - signature: 'AvatarA11yContract: typeof AVATAR_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Avatar A11y Contract object.', - }, { name: 'AvatarAsChildProps', anchor: 'avatar-as-child-props', @@ -52463,7 +61787,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols56: [ + symbols128: [ { name: 'Button', anchor: 'button', @@ -52480,22 +61804,6 @@ export const apiSymbolSets: Readonly< ], }, }, - { - name: 'BUTTON_A11Y_CONTRACT', - anchor: 'button-a11-y-contract', - signature: - 'BUTTON_A11Y_CONTRACT: { readonly KEYBOARD_ACTIVATION: readonly ["Enter", "Space"]; readonly ROLE: "button"; readonly DISABLED_ATTRIBUTES: { readonly native: "disabled"; readonly asChild: "aria-disabled"; }; readonly DATA_ATTRIBUTES: { readonly disabled: "data-disabled"; }; readonly FOCUS_RULES: { readonly enabled: "focusable"; readonly disabled: "not-focusable"; }; }', - typeOnly: true, - summary: - 'Accessibility contract for Button component\n\nFollowing WAI-ARIA Button Pattern:\nhttps://www.w3.org/WAI/ARIA/apg/patterns/button/\n\n## Role\n- Native <button>: implicit role="button"\n- asChild: preserves child role (e.g., role="button" on <div>)\n\n## States\n- disabled (native): uses `disabled` attribute\n- disabled (asChild): uses `aria-disabled="true"` + `tabindex="-1"`\n\n## Keyboard\n- Space: Activates button (handled by pressable foundation)\n- Enter: Activates button (handled by pressable foundation)\n- Disabled buttons do not respond to interaction\n\n## Focus\n- Native buttons: focusable by default\n- asChild elements: receive tabindex if not naturally focusable\n- Disabled: removed from tab order (tabindex="-1" or native disabled)\n\n## Screen Reader\n- Announces role as "button"\n- Announces disabled state\n- Announces accessible name from text content or aria-label\n\n## Implementation Notes\n- All interaction behavior is delegated to `pressable` foundation\n- Button component does NOT implement keyboard handling directly\n- Button component does NOT check disabled prop directly\n- All ARIA attributes are applied by foundation, not component', - }, - { - name: 'ButtonA11yContract', - anchor: 'button-a11y-contract', - signature: 'ButtonA11yContract: typeof BUTTON_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type-safe accessibility contract', - }, { name: 'ButtonAsChildElement', anchor: 'button-as-child-element', @@ -52732,7 +62040,7 @@ export const apiSymbolSets: Readonly< summary: 'Button Width.', }, ], - symbols57: [ + symbols129: [ { name: 'Checkbox', anchor: 'checkbox', @@ -52749,22 +62057,6 @@ export const apiSymbolSets: Readonly< ], }, }, - { - name: 'CHECKBOX_A11Y_CONTRACT', - anchor: 'checkbox-a11-y-contract', - signature: - 'CHECKBOX_A11Y_CONTRACT: { readonly ROLE: "checkbox"; readonly KEYBOARD_ACTIVATION: readonly ["Space"]; readonly CHECKED_ATTRIBUTE: "aria-checked"; readonly INDETERMINATE_VALUE: "mixed"; readonly DISABLED_ATTRIBUTES: { readonly nativeInput: { readonly disabled: true; }; readonly nonNative: { readonly "aria-disabled": "true"; readonly tabIndex: -1; }; }; readonly DATA_ATTRIBUTES: { readonly state: "data-state"; readonly disabled: "data-disabled"; }; readonly FOCUS_RULES: { readonly enabled: "tabIndex >= 0"; readonly disabled: "tabIndex = -1"; readonly visualIndicator: "required"; }; }', - typeOnly: true, - summary: - "WAI-ARIA Checkbox Pattern\n\nSpecification: https://www.w3.org/WAI/ARIA/apg/patterns/checkbox/\n\nA checkbox is an input mechanism that allows users to select one or more items\nfrom a set. Unlike toggle buttons, checkboxes visually represent a checked state\nwith aria-checked (not aria-pressed).\n\n## Required ARIA\n- aria-checked: 'true' | 'false' | 'mixed' (indicates checkbox state)\n- role: 'checkbox' (when not native input)\n\n## Keyboard Support\n- Space: Activates checkbox\n- Enter: Does not activate checkbox\n\n## Focus Management\n- Checkbox is focusable when not disabled\n- Visual focus indicator required\n\n## Disabled State\n- aria-disabled when disabled=true (for non-native)\n- disabled attribute when native input\n- Removed from tab order\n- Visual disabled styling (consumer responsibility)\n\n## Indeterminate State\n- `asChild`: aria-checked='mixed'\n- native input: current host path omits aria-checked and keeps data-state='indeterminate'\n- Typically used for \"select all\" checkboxes when partial selection", - }, - { - name: 'CheckboxA11yContract', - anchor: 'checkbox-a11y-contract', - signature: 'CheckboxA11yContract: typeof CHECKBOX_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Checkbox A11y Contract object.', - }, { name: 'CheckboxAsChildProps', anchor: 'checkbox-as-child-props', @@ -53031,14 +62323,14 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols58: [ + symbols130: [ { name: 'DebouncedInput', anchor: 'debounced-input', signature: 'DebouncedInput: (props: DebouncedInputProps) => JSX.Element', typeOnly: true, summary: - 'DebouncedInput is a convenience wrapper around Input that emits a settled\nvalue for search and filter surfaces.\n\nThe debounced emitter is created once per mount and replaced only when\n`debounceMs` changes. A pending value is re-timed with the new delay (or\nemitted at once when the delay drops to zero), is delivered to the latest\n`onDebouncedInput`, is dropped when `onDebouncedInput` is removed, and is\ncancelled on unmount.', + 'DebouncedInput is a convenience wrapper around Input that emits a settled\nvalue for search and filter surfaces.\n\nOne component-owned timer is re-timed when `debounceMs` changes (or emits\nat once when the delay drops to zero). A pending value is delivered to the latest\n`onDebouncedInput`, is dropped when `onDebouncedInput` is removed, and is\ncancelled on unmount.', }, { name: 'DebouncedInputProps', @@ -53095,21 +62387,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders the `input` part of `input`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'INPUT_A11Y_CONTRACT', - anchor: 'input-a11-y-contract', - signature: - 'INPUT_A11Y_CONTRACT: { readonly HOST_ELEMENT: "input"; readonly DISABLED_ATTRIBUTES: { readonly native: "disabled"; readonly asChild: "disabled"; }; readonly DATA_ATTRIBUTES: { readonly disabled: "data-disabled"; }; readonly FOCUS_RULES: { readonly defaultTabIndex: 0; readonly disabledTabIndex: -1; }; readonly LABELING: { readonly supportsLabelElement: true; readonly supportsAriaLabel: true; readonly supportsAriaLabelledBy: true; }; }', - typeOnly: true, - summary: 'Native input semantics wrapped by askr-ui Input.', - }, - { - name: 'InputA11yContract', - anchor: 'input-a11y-contract', - signature: 'InputA11yContract: typeof INPUT_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Input A11y Contract object.', - }, { name: 'InputAsChildProps', anchor: 'input-as-child-props', @@ -53230,7 +62507,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols59: [ + symbols131: [ { name: 'Form', anchor: 'form', @@ -53291,7 +62568,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols60: [ + symbols132: [ { name: 'Label', anchor: 'label', @@ -53301,21 +62578,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders the `label` part of `label`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'LABEL_A11Y_CONTRACT', - anchor: 'label-a11-y-contract', - signature: - 'LABEL_A11Y_CONTRACT: { readonly ELEMENT: "label"; readonly ASSOCIATION_ATTRIBUTE: "for"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; }; readonly NAME_SOURCE_PRIORITY: readonly ["aria-label", "textContent"]; readonly AS_CHILD: { readonly forwardsProps: true; readonly preservesChildElement: true; }; }', - typeOnly: true, - summary: 'Native label semantics for askr-ui Label.', - }, - { - name: 'LabelA11yContract', - anchor: 'label-a11y-contract', - signature: 'LabelA11yContract: typeof LABEL_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Label A11y Contract object.', - }, { name: 'LabelAsChildProps', anchor: 'label-as-child-props', @@ -53412,7 +62674,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols61: [ + symbols133: [ { name: 'Progress', anchor: 'progress', @@ -53421,21 +62683,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders the `progress` part of `progress` with `role="progressbar"`.', }, - { - name: 'PROGRESS_A11Y_CONTRACT', - anchor: 'progress-a11-y-contract', - signature: - 'PROGRESS_A11Y_CONTRACT: { readonly ROLE: "progressbar"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly percentage: "data-percentage"; }; readonly VALUE_NOW_ATTRIBUTE: "aria-valuenow"; readonly VALUE_MIN_ATTRIBUTE: "aria-valuemin"; readonly VALUE_MAX_ATTRIBUTE: "aria-valuemax"; readonly INDICATOR_MARKER: "data-progress-indicator"; readonly INDICATOR_PERCENTAGE_ATTRIBUTE: "data-percentage"; }', - typeOnly: true, - summary: 'WAI-ARIA progressbar contract for linear progress.', - }, - { - name: 'ProgressA11yContract', - anchor: 'progress-a11y-contract', - signature: 'ProgressA11yContract: typeof PROGRESS_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Progress A11y Contract object.', - }, { name: 'ProgressIndicator', anchor: 'progress-indicator', @@ -53578,15 +62825,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols62: [ - { - name: 'PROGRESS_CIRCLE_A11Y_CONTRACT', - anchor: 'progress-circle-a11-y-contract', - signature: - 'PROGRESS_CIRCLE_A11Y_CONTRACT: { readonly ROLE: "progressbar"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly percentage: "data-percentage"; }; readonly VALUE_NOW_ATTRIBUTE: "aria-valuenow"; readonly VALUE_MIN_ATTRIBUTE: "aria-valuemin"; readonly VALUE_MAX_ATTRIBUTE: "aria-valuemax"; readonly INDICATOR_MARKER: "data-progress-circle-indicator"; }', - typeOnly: true, - summary: 'WAI-ARIA progressbar contract for circular progress.', - }, + symbols134: [ { name: 'ProgressCircle', anchor: 'progress-circle', @@ -53595,14 +62834,6 @@ export const apiSymbolSets: Readonly< summary: 'Headless circular progress indicator root.\n\nNormalizes value/max, computes percentage, exposes `--ak-progress-percentage`\nas a dynamically injected CSS custom property, and provides progress state\nto `ProgressCircleIndicator` via context.', }, - { - name: 'ProgressCircleA11yContract', - anchor: 'progress-circle-a11y-contract', - signature: - 'ProgressCircleA11yContract: typeof PROGRESS_CIRCLE_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Progress Circle A11y Contract object.', - }, { name: 'ProgressCircleIndicator', anchor: 'progress-circle-indicator', @@ -53748,16 +62979,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols63: [ - { - name: 'RADIO_GROUP_A11Y_CONTRACT', - anchor: 'radio-group-a11-y-contract', - signature: - 'RADIO_GROUP_A11Y_CONTRACT: { readonly GROUP_ROLE: "radiogroup"; readonly ITEM_ROLE: "radio"; readonly CHECKED_ATTRIBUTE: "aria-checked"; readonly ORIENTATION_ATTRIBUTE: "aria-orientation"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly orientation: "data-orientation"; }; readonly KEYBOARD_NAVIGATION: readonly ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"]; readonly ROVING_FOCUS: { readonly activeItemTabIndex: 0; readonly inactiveItemTabIndex: -1; }; readonly FORM_INTEGRATION: { readonly hiddenInputType: "hidden"; }; }', - typeOnly: true, - summary: - 'WAI-ARIA Radio Group Pattern\n\nSpecification: https://www.w3.org/WAI/ARIA/apg/patterns/radio/', - }, + symbols135: [ { name: 'RadioGroup', anchor: 'radio-group', @@ -53766,13 +62988,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `radio-group`.', }, - { - name: 'RadioGroupA11yContract', - anchor: 'radio-group-a11y-contract', - signature: 'RadioGroupA11yContract: typeof RADIO_GROUP_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Radio Group A11y Contract object.', - }, { name: 'RadioGroupItem', anchor: 'radio-group-item', @@ -53983,7 +63198,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols64: [ + symbols136: [ { name: 'Select', anchor: 'select', @@ -53991,21 +63206,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `select`.', }, - { - name: 'SELECT_A11Y_CONTRACT', - anchor: 'select-a11-y-contract', - signature: - 'SELECT_A11Y_CONTRACT: { readonly TRIGGER_ROLE: "button"; readonly CONTENT_ROLE: "listbox"; readonly ITEM_ROLE: "option"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly side: "data-side"; readonly align: "data-align"; }; readonly TRIGGER_ATTRIBUTES: { readonly expanded: "aria-expanded"; readonly controls: "aria-controls"; readonly hasPopup: "aria-haspopup"; }; readonly ITEM_SELECTION_ATTRIBUTE: "aria-selected"; }', - typeOnly: true, - summary: 'Select accessibility contract.', - }, - { - name: 'SelectA11yContract', - anchor: 'select-a11y-contract', - signature: 'SelectA11yContract: typeof SELECT_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Select A11y Contract object.', - }, { name: 'SelectContent', anchor: 'select-content', @@ -54853,7 +64053,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols65: [ + symbols137: [ { name: 'Slider', anchor: 'slider', @@ -54861,21 +64061,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders the `slider` part of `slider`.', }, - { - name: 'SLIDER_A11Y_CONTRACT', - anchor: 'slider-a11-y-contract', - signature: - 'SLIDER_A11Y_CONTRACT: { readonly THUMB_ROLE: "slider"; readonly VALUE_NOW_ATTRIBUTE: "aria-valuenow"; readonly VALUE_MIN_ATTRIBUTE: "aria-valuemin"; readonly VALUE_MAX_ATTRIBUTE: "aria-valuemax"; readonly ORIENTATION_ATTRIBUTE: "aria-orientation"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly disabled: "data-disabled"; readonly orientation: "data-orientation"; }; }', - typeOnly: true, - summary: 'Slider accessibility contract.', - }, - { - name: 'SliderA11yContract', - anchor: 'slider-a11y-contract', - signature: 'SliderA11yContract: typeof SLIDER_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Slider A11y Contract object.', - }, { name: 'SliderOrientation', anchor: 'slider-orientation', @@ -55201,7 +64386,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols66: [ + symbols138: [ { name: 'Switch', anchor: 'switch', @@ -55211,22 +64396,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders the `switch` part of `switch` with `role="switch"`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'SWITCH_A11Y_CONTRACT', - anchor: 'switch-a11-y-contract', - signature: - 'SWITCH_A11Y_CONTRACT: { readonly ROLE: "switch"; readonly CHECKED_ATTRIBUTE: "aria-checked"; readonly KEYBOARD_ACTIVATION: readonly ["Space"]; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; }; readonly DISABLED_ATTRIBUTES: { readonly nativeButton: { readonly disabled: true; readonly "aria-disabled": "true"; }; readonly nonNative: { readonly "aria-disabled": "true"; readonly tabIndex: -1; }; }; readonly FORM_INTEGRATION: { readonly host: "button"; readonly hiddenInputType: "checkbox"; readonly hiddenInputValue: "on"; }; }', - typeOnly: true, - summary: - 'WAI-ARIA Switch Pattern\n\nSpecification: https://www.w3.org/WAI/ARIA/apg/patterns/switch/', - }, - { - name: 'SwitchA11yContract', - anchor: 'switch-a11y-contract', - signature: 'SwitchA11yContract: typeof SWITCH_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Switch A11y Contract object.', - }, { name: 'SwitchAsChildProps', anchor: 'switch-as-child-props', @@ -55448,7 +64617,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols67: [ + symbols139: [ { name: 'Table', anchor: 'table', @@ -55924,7 +65093,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols68: [ + symbols140: [ { name: 'VirtualList', anchor: 'virtual-list', @@ -56155,7 +65324,7 @@ export const apiSymbolSets: Readonly< summary: 'Virtual List Viewport.', }, ], - symbols69: [ + symbols141: [ { name: 'VirtualTable', anchor: 'virtual-table', @@ -56444,7 +65613,7 @@ export const apiSymbolSets: Readonly< summary: 'Virtual Table Width.', }, ], - symbols70: [ + symbols142: [ { name: 'Textarea', anchor: 'textarea', @@ -56454,21 +65623,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders the `textarea` part of `textarea`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'TEXTAREA_A11Y_CONTRACT', - anchor: 'textarea-a11-y-contract', - signature: - 'TEXTAREA_A11Y_CONTRACT: { readonly HOST_ELEMENT: "textarea"; readonly DISABLED_ATTRIBUTES: { readonly native: "disabled"; readonly asChild: "disabled"; }; readonly DATA_ATTRIBUTES: { readonly disabled: "data-disabled"; }; readonly FOCUS_RULES: { readonly defaultTabIndex: 0; readonly disabledTabIndex: -1; }; readonly LABELING: { readonly supportsLabelElement: true; readonly supportsAriaLabel: true; readonly supportsAriaLabelledBy: true; }; }', - typeOnly: true, - summary: 'Native textarea semantics wrapped by askr-ui Textarea.', - }, - { - name: 'TextareaA11yContract', - anchor: 'textarea-a11y-contract', - signature: 'TextareaA11yContract: typeof TEXTAREA_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Textarea A11y Contract object.', - }, { name: 'TextareaAsChildProps', anchor: 'textarea-as-child-props', @@ -56581,7 +65735,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols71: [ + symbols143: [ { name: 'PressEvent', anchor: 'press-event', @@ -56606,22 +65760,6 @@ export const apiSymbolSets: Readonly< ], }, }, - { - name: 'TOGGLE_A11Y_CONTRACT', - anchor: 'toggle-a11-y-contract', - signature: - 'TOGGLE_A11Y_CONTRACT: { readonly ROLE: "button"; readonly KEYBOARD_ACTIVATION: readonly ["Enter", "Space"]; readonly PRESSED_ATTRIBUTE: "aria-pressed"; readonly DISABLED_ATTRIBUTES: { readonly nativeButton: { readonly disabled: true; readonly "aria-disabled": "true"; }; readonly nonNative: { readonly "aria-disabled": "true"; readonly tabIndex: -1; }; }; readonly DATA_ATTRIBUTES: { readonly state: "data-state"; readonly disabled: "data-disabled"; }; readonly FOCUS_RULES: { readonly enabled: "tabIndex >= 0"; readonly disabled: "tabIndex = -1"; readonly visualIndicator: "required"; }; }', - typeOnly: true, - summary: - "WAI-ARIA Toggle Button Pattern\n\nSpecification: https://www.w3.org/WAI/ARIA/apg/patterns/button/\n\nA toggle button is a two-state button that can be either on or off.\nUses aria-pressed to communicate toggle state to assistive technology.\n\n## Required ARIA\n- aria-pressed: 'true' | 'false' (indicates toggle state)\n- role: 'button' (when not native button)\n\n## Keyboard Support\n- Enter: Activates toggle (on native button and non-button elements)\n- Space: Activates toggle\n\n## Focus Management\n- Toggle is focusable when not disabled\n- Visual focus indicator required\n\n## Disabled State\n- aria-disabled when disabled=true\n- Removed from tab order\n- Visual disabled styling (consumer responsibility)", - }, - { - name: 'ToggleA11yContract', - anchor: 'toggle-a11y-contract', - signature: 'ToggleA11yContract: typeof TOGGLE_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Toggle A11y Contract object.', - }, { name: 'ToggleAsChildProps', anchor: 'toggle-as-child-props', @@ -56788,15 +65926,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols72: [ - { - name: 'TOGGLE_GROUP_A11Y_CONTRACT', - anchor: 'toggle-group-a11-y-contract', - signature: - 'TOGGLE_GROUP_A11Y_CONTRACT: { readonly GROUP_ROLE: "group"; readonly ITEM_ROLE: "button"; readonly PRESSED_ATTRIBUTE: "aria-pressed"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly orientation: "data-orientation"; }; }', - typeOnly: true, - summary: 'Accessibility contract for toggle groups.', - }, + symbols144: [ { name: 'ToggleGroup', anchor: 'toggle-group', @@ -56805,13 +65935,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `toggle-group`.', }, - { - name: 'ToggleGroupA11yContract', - anchor: 'toggle-group-a11y-contract', - signature: 'ToggleGroupA11yContract: typeof TOGGLE_GROUP_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Toggle Group A11y Contract object.', - }, { name: 'ToggleGroupItem', anchor: 'toggle-group-item', @@ -57140,15 +66263,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols73: [ - { - name: 'VISUALLY_HIDDEN_A11Y_CONTRACT', - anchor: 'visually-hidden-a11-y-contract', - signature: - 'VISUALLY_HIDDEN_A11Y_CONTRACT: { readonly STRATEGY: "visually-hidden-but-screen-reader-visible"; readonly HOST_ELEMENT: "span"; }', - typeOnly: true, - summary: 'Visually hidden content accessibility contract.', - }, + symbols145: [ { name: 'VisuallyHidden', anchor: 'visually-hidden', @@ -57158,14 +66273,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders a part of `visually-hidden`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'VisuallyHiddenA11yContract', - anchor: 'visually-hidden-a11y-contract', - signature: - 'VisuallyHiddenA11yContract: typeof VISUALLY_HIDDEN_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Visually Hidden A11y Contract object.', - }, { name: 'VisuallyHiddenAsChildProps', anchor: 'visually-hidden-as-child-props', @@ -57259,7 +66366,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols74: [ + symbols146: [ { name: 'Accordion', anchor: 'accordion', @@ -57267,21 +66374,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `accordion`.', }, - { - name: 'ACCORDION_A11Y_CONTRACT', - anchor: 'accordion-a11-y-contract', - signature: - 'ACCORDION_A11Y_CONTRACT: { readonly TRIGGER_ROLE: "button"; readonly EXPANDED_ATTRIBUTE: "aria-expanded"; readonly CONTROLS_ATTRIBUTE: "aria-controls"; readonly PANEL_ROLE: "region"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly orientation: "data-orientation"; }; }', - typeOnly: true, - summary: 'WAI-ARIA accordion/disclosure contract.', - }, - { - name: 'AccordionA11yContract', - anchor: 'accordion-a11y-contract', - signature: 'AccordionA11yContract: typeof ACCORDION_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Accordion A11y Contract object.', - }, { name: 'AccordionContent', anchor: 'accordion-content', @@ -57789,15 +66881,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols75: [ - { - name: 'ALERT_DIALOG_A11Y_CONTRACT', - anchor: 'alert-dialog-a11-y-contract', - signature: - 'ALERT_DIALOG_A11Y_CONTRACT: { readonly CONTENT_ROLE: "alertdialog"; readonly LABELLED_BY_ATTRIBUTE: "aria-labelledby"; readonly DESCRIBED_BY_ATTRIBUTE: "aria-describedby"; readonly ACTION_REQUIREMENTS: { readonly hasPrimaryAction: true; readonly hasCancelAction: true; }; }', - typeOnly: true, - summary: 'Alert dialog accessibility contract.', - }, + symbols147: [ { name: 'AlertDialog', anchor: 'alert-dialog', @@ -57806,13 +66890,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `alert-dialog`.', }, - { - name: 'AlertDialogA11yContract', - anchor: 'alert-dialog-a11y-contract', - signature: 'AlertDialogA11yContract: typeof ALERT_DIALOG_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Alert Dialog A11y Contract object.', - }, { name: 'AlertDialogAction', anchor: 'alert-dialog-action', @@ -58567,7 +67644,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols76: [ + symbols148: [ { name: 'Collapsible', anchor: 'collapsible', @@ -58575,15 +67652,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `collapsible`.', }, - { - name: 'COLLAPSIBLE_A11Y_CONTRACT', - anchor: 'collapsible-a11-y-contract', - signature: - 'COLLAPSIBLE_A11Y_CONTRACT: { readonly TRIGGER_ROLE: "button"; readonly KEYBOARD_ACTIVATION: readonly ["Enter", "Space"]; readonly EXPANDED_ATTRIBUTE: "aria-expanded"; readonly CONTROLS_ATTRIBUTE: "aria-controls"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; }; readonly CONTENT_REQUIREMENTS: { readonly idAttribute: "required"; readonly defaultPresence: "unmounted when closed"; }; readonly FOCUS_RULES: { readonly afterActivation: "focus remains on trigger"; readonly contentFocusable: false; }; }', - typeOnly: true, - summary: - 'WAI-ARIA Disclosure Pattern (Collapsible)\n\nSpecification: https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/\n\nA disclosure (collapsible) shows and hides a region of content via a button.\nThe button indicates the visibility state of the content region.\n\n## Required ARIA\n- Trigger: role="button" (native or explicit)\n- Trigger: aria-expanded="true" | "false"\n- Trigger: aria-controls={contentId}\n- Content: id attribute for aria-controls reference\n\n## Keyboard Support\n- Enter: Toggles content visibility (on trigger)\n- Space: Toggles content visibility (on trigger)\n\n## Focus Management\n- Trigger is focusable when not disabled\n- Focus remains on trigger after activation\n- Content is not focusable by default\n\n## Disabled State\n- Trigger cannot be activated when disabled\n- Visual disabled styling (consumer responsibility)\n\n## Presence\n- Content unmounts when closed (default)\n- Can force mount for animation/transition control', - }, { name: 'CollapsibleContent', anchor: 'collapsible-content', @@ -58751,7 +67819,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols77: [ + symbols149: [ { name: 'Dialog', anchor: 'dialog', @@ -58764,21 +67832,6 @@ export const apiSymbolSets: Readonly< ], }, }, - { - name: 'DIALOG_A11Y_CONTRACT', - anchor: 'dialog-a11-y-contract', - signature: - 'DIALOG_A11Y_CONTRACT: { readonly CONTENT_ROLE: "dialog"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; }; readonly MODAL_ATTRIBUTE: "aria-modal"; readonly LABELLED_BY_ATTRIBUTE: "aria-labelledby"; readonly DESCRIBED_BY_ATTRIBUTE: "aria-describedby"; readonly TRIGGER_ATTRIBUTES: { readonly expanded: "aria-expanded"; readonly controls: "aria-controls"; }; }', - typeOnly: true, - summary: 'Dialog accessibility contract.', - }, - { - name: 'DialogA11yContract', - anchor: 'dialog-a11y-contract', - signature: 'DialogA11yContract: typeof DIALOG_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Dialog A11y Contract object.', - }, { name: 'DialogClose', anchor: 'dialog-close', @@ -59452,15 +68505,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols78: [ - { - name: 'DISMISSABLE_LAYER_A11Y_CONTRACT', - anchor: 'dismissable-layer-a11-y-contract', - signature: - 'DISMISSABLE_LAYER_A11Y_CONTRACT: { readonly DISMISS_EVENTS: readonly ["escape-key", "outside-pointer"]; readonly INTERACTION_POLICY: "background-dismissable"; }', - typeOnly: true, - summary: 'Dismissable layer accessibility contract.', - }, + symbols150: [ { name: 'DismissableLayer', anchor: 'dismissable-layer', @@ -59470,14 +68515,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders a part of `dismissable-layer`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'DismissableLayerA11yContract', - anchor: 'dismissable-layer-a11y-contract', - signature: - 'DismissableLayerA11yContract: typeof DISMISSABLE_LAYER_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Dismissable Layer A11y Contract object.', - }, { name: 'DismissableLayerAsChildProps', anchor: 'dismissable-layer-as-child-props', @@ -59538,150 +68575,135 @@ export const apiSymbolSets: Readonly< { name: 'ref', summary: '', - signature: 'ref?: Ref<Element>;', - }, - ], - }, - { - name: 'DismissableLayerOwnProps', - anchor: 'dismissable-layer-own-props', - signature: - 'DismissableLayerOwnProps: {\n children?: unknown;\n id?: string;\n disabled?: boolean;\n disableOutsidePointerEvents?: boolean;\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n onPointerDownOutside?: (event: PointerEvent) => void;\n onInteractOutside?: (event: Event) => void;\n onDismiss?: () => void;\n}', - typeOnly: true, - summary: - 'Own props for Dismissable Layer, before merging with native element attributes.', - members: [ - { - name: 'children', - summary: '', - signature: 'children?: unknown;', - }, - { - name: 'disabled', - summary: '', - signature: 'disabled?: boolean | undefined;', - }, - { - name: 'disableOutsidePointerEvents', - summary: '', - signature: 'disableOutsidePointerEvents?: boolean | undefined;', - }, - { - name: 'id', - summary: '', - signature: 'id?: string | undefined;', - }, - { - name: 'onDismiss', - summary: '', - signature: 'onDismiss?: (() => void) | undefined;', - }, - { - name: 'onEscapeKeyDown', - summary: '', - signature: - 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', - }, - { - name: 'onInteractOutside', - summary: '', - signature: - 'onInteractOutside?: ((event: Event) => void) | undefined;', - }, - { - name: 'onPointerDownOutside', - summary: '', - signature: - 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', - }, - ], - }, - { - name: 'DismissableLayerProps', - anchor: 'dismissable-layer-props', - signature: - "DismissableLayerProps: Omit<JSX.IntrinsicElements['div'], 'children' | 'ref'> & DismissableLayerOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLDivElement>;\n}", - typeOnly: true, - summary: 'Props for Dismissable Layer.', - members: [ - { - name: 'asChild', - summary: '', - signature: 'asChild?: false | undefined;', - }, - { - name: 'children', - summary: '', - signature: 'children?: unknown;', - }, - { - name: 'disabled', - summary: '', - signature: 'disabled?: boolean | undefined;', - }, - { - name: 'disableOutsidePointerEvents', - summary: '', - signature: 'disableOutsidePointerEvents?: boolean | undefined;', - }, - { - name: 'id', - summary: '', - signature: 'id?: string | undefined;', - }, - { - name: 'onDismiss', - summary: '', - signature: 'onDismiss?: (() => void) | undefined;', - }, - { - name: 'onEscapeKeyDown', - summary: '', - signature: - 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', - }, - { - name: 'onInteractOutside', - summary: '', - signature: - 'onInteractOutside?: ((event: Event) => void) | undefined;', - }, - { - name: 'onPointerDownOutside', - summary: '', - signature: - 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', - }, - { - name: 'ref', - summary: '', - signature: 'ref?: Ref<HTMLDivElement>;', + signature: 'ref?: Ref<Element>;', }, ], }, - ], - symbols79: [ { - name: 'Dropdown', - anchor: 'dropdown', - signature: 'Dropdown: (props: DropdownProps) => JSX.Element', + name: 'DismissableLayerOwnProps', + anchor: 'dismissable-layer-own-props', + signature: + 'DismissableLayerOwnProps: {\n children?: unknown;\n id?: string;\n disabled?: boolean;\n disableOutsidePointerEvents?: boolean;\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n onPointerDownOutside?: (event: PointerEvent) => void;\n onInteractOutside?: (event: Event) => void;\n onDismiss?: () => void;\n}', typeOnly: true, - summary: 'Renders a part of `dropdown`.', + summary: + 'Own props for Dismissable Layer, before merging with native element attributes.', + members: [ + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'disableOutsidePointerEvents', + summary: '', + signature: 'disableOutsidePointerEvents?: boolean | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'onDismiss', + summary: '', + signature: 'onDismiss?: (() => void) | undefined;', + }, + { + name: 'onEscapeKeyDown', + summary: '', + signature: + 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', + }, + { + name: 'onInteractOutside', + summary: '', + signature: + 'onInteractOutside?: ((event: Event) => void) | undefined;', + }, + { + name: 'onPointerDownOutside', + summary: '', + signature: + 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', + }, + ], }, { - name: 'DROPDOWN_A11Y_CONTRACT', - anchor: 'dropdown-a11-y-contract', + name: 'DismissableLayerProps', + anchor: 'dismissable-layer-props', signature: - 'DROPDOWN_A11Y_CONTRACT: { readonly CONTENT_ROLE: "menu"; readonly ITEM_ROLE: "menuitem"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly side: "data-side"; readonly align: "data-align"; }; readonly TRIGGER_ATTRIBUTES: { readonly expanded: "aria-expanded"; readonly controls: "aria-controls"; readonly hasPopup: "aria-haspopup"; }; }', + "DismissableLayerProps: Omit<JSX.IntrinsicElements['div'], 'children' | 'ref'> & DismissableLayerOwnProps & {\n asChild?: false;\n ref?: Ref<HTMLDivElement>;\n}", typeOnly: true, - summary: 'Dropdown accessibility contract.', + summary: 'Props for Dismissable Layer.', + members: [ + { + name: 'asChild', + summary: '', + signature: 'asChild?: false | undefined;', + }, + { + name: 'children', + summary: '', + signature: 'children?: unknown;', + }, + { + name: 'disabled', + summary: '', + signature: 'disabled?: boolean | undefined;', + }, + { + name: 'disableOutsidePointerEvents', + summary: '', + signature: 'disableOutsidePointerEvents?: boolean | undefined;', + }, + { + name: 'id', + summary: '', + signature: 'id?: string | undefined;', + }, + { + name: 'onDismiss', + summary: '', + signature: 'onDismiss?: (() => void) | undefined;', + }, + { + name: 'onEscapeKeyDown', + summary: '', + signature: + 'onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;', + }, + { + name: 'onInteractOutside', + summary: '', + signature: + 'onInteractOutside?: ((event: Event) => void) | undefined;', + }, + { + name: 'onPointerDownOutside', + summary: '', + signature: + 'onPointerDownOutside?: ((event: PointerEvent) => void) | undefined;', + }, + { + name: 'ref', + summary: '', + signature: 'ref?: Ref<HTMLDivElement>;', + }, + ], }, + ], + symbols151: [ { - name: 'DropdownA11yContract', - anchor: 'dropdown-a11y-contract', - signature: 'DropdownA11yContract: typeof DROPDOWN_A11Y_CONTRACT', + name: 'Dropdown', + anchor: 'dropdown', + signature: 'Dropdown: (props: DropdownProps) => JSX.Element', typeOnly: true, - summary: 'Type of the Dropdown A11y Contract object.', + summary: 'Renders a part of `dropdown`.', }, { name: 'DropdownContent', @@ -60389,15 +69411,7 @@ export const apiSymbolSets: Readonly< summary: 'Dropdown Trigger Variant.', }, ], - symbols80: [ - { - name: 'FOCUS_SCOPE_A11Y_CONTRACT', - anchor: 'focus-scope-a11-y-contract', - signature: - 'FOCUS_SCOPE_A11Y_CONTRACT: { readonly FEATURES: { readonly trapped: true; readonly loop: true; readonly autoFocus: true; readonly restoreFocus: true; }; }', - typeOnly: true, - summary: 'Focus scope accessibility contract.', - }, + symbols152: [ { name: 'FocusScope', anchor: 'focus-scope', @@ -60407,13 +69421,6 @@ export const apiSymbolSets: Readonly< summary: 'Renders a part of `focus-scope`.\n\nSupports polymorphic rendering via `asChild`.', }, - { - name: 'FocusScopeA11yContract', - anchor: 'focus-scope-a11y-contract', - signature: 'FocusScopeA11yContract: typeof FOCUS_SCOPE_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Focus Scope A11y Contract object.', - }, { name: 'FocusScopeAsChildProps', anchor: 'focus-scope-as-child-props', @@ -60590,7 +69597,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols81: [ + symbols153: [ { name: 'HoverCard', anchor: 'hover-card', @@ -60951,7 +69958,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols82: [ + symbols154: [ { name: 'Menu', anchor: 'menu', @@ -60959,21 +69966,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `menu`.', }, - { - name: 'MENU_A11Y_CONTRACT', - anchor: 'menu-a11-y-contract', - signature: - 'MENU_A11Y_CONTRACT: { readonly CONTENT_ROLE: "menu"; readonly ITEM_ROLE: "menuitem"; readonly ORIENTATION_ATTRIBUTE: "aria-orientation"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly disabled: "data-disabled"; readonly orientation: "data-orientation"; }; }', - typeOnly: true, - summary: 'Menu accessibility contract.', - }, - { - name: 'MenuA11yContract', - anchor: 'menu-a11y-contract', - signature: 'MenuA11yContract: typeof MENU_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Menu A11y Contract object.', - }, { name: 'MenuContent', anchor: 'menu-content', @@ -61468,7 +70460,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols83: [ + symbols155: [ { name: 'Menubar', anchor: 'menubar', @@ -61476,21 +70468,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `menubar`.', }, - { - name: 'MENUBAR_A11Y_CONTRACT', - anchor: 'menubar-a11-y-contract', - signature: - 'MENUBAR_A11Y_CONTRACT: { readonly ROOT_ROLE: "menubar"; readonly CONTENT_ROLE: "menu"; readonly ITEM_ROLE: "menuitem"; readonly EXPANDED_ATTRIBUTE: "aria-expanded"; readonly HAS_POPUP_ATTRIBUTE: "aria-haspopup"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly side: "data-side"; readonly align: "data-align"; }; }', - typeOnly: true, - summary: 'WAI-ARIA menubar contract.', - }, - { - name: 'MenubarA11yContract', - anchor: 'menubar-a11y-contract', - signature: 'MenubarA11yContract: typeof MENUBAR_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Menubar A11y Contract object.', - }, { name: 'MenubarContent', anchor: 'menubar-content', @@ -62341,7 +71318,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols84: [ + symbols156: [ { name: 'OverlayHost', anchor: 'overlay-host', @@ -62363,7 +71340,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols85: [ + symbols157: [ { name: 'Popover', anchor: 'popover', @@ -62372,21 +71349,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `popover`.', }, - { - name: 'POPOVER_A11Y_CONTRACT', - anchor: 'popover-a11-y-contract', - signature: - 'POPOVER_A11Y_CONTRACT: { readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly side: "data-side"; readonly align: "data-align"; }; readonly TRIGGER_ATTRIBUTES: { readonly popup: "aria-haspopup"; readonly expanded: "aria-expanded"; readonly controls: "aria-controls"; }; readonly CONTENT_ATTRIBUTES: { readonly role: "dialog"; readonly labelledBy: "aria-labelledby"; readonly tabIndex: -1; }; readonly DEFAULT_LABELING: { readonly source: "trigger-id"; readonly override: "aria-label or aria-labelledby"; }; readonly FOCUS_RULES: { readonly trapScope: true; readonly restoreFocusOnClose: true; readonly dismissableLayer: true; }; }', - typeOnly: true, - summary: 'WAI-ARIA dialog-style popover contract.', - }, - { - name: 'PopoverA11yContract', - anchor: 'popover-a11y-contract', - signature: 'PopoverA11yContract: typeof POPOVER_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Popover A11y Contract object.', - }, { name: 'PopoverClose', anchor: 'popover-close', @@ -62811,7 +71773,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols86: [ + symbols158: [ { name: 'ScrollArea', anchor: 'scroll-area', @@ -63047,7 +72009,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols87: [ + symbols159: [ { name: 'Toast', anchor: 'toast', @@ -63056,21 +72018,6 @@ export const apiSymbolSets: Readonly< summary: 'Toast registers a notification entry with the host and returns no DOM on\nits own.', }, - { - name: 'TOAST_A11Y_CONTRACT', - anchor: 'toast-a11-y-contract', - signature: - 'TOAST_A11Y_CONTRACT: { readonly ROOT_ROLE: "status"; readonly LIVE_REGION_ATTRIBUTE: "aria-live"; readonly LIVE_REGION_VALUE: "polite"; readonly VIEWPORT_LABEL: "Notifications"; readonly AUTO_DISMISS_PAUSE: "pointer-or-focus"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; }; }', - typeOnly: true, - summary: 'Toast accessibility contract.', - }, - { - name: 'ToastA11yContract', - anchor: 'toast-a11y-contract', - signature: 'ToastA11yContract: typeof TOAST_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Toast A11y Contract object.', - }, { name: 'ToastAction', anchor: 'toast-action', @@ -63592,7 +72539,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols88: [ + symbols160: [ { name: 'Tooltip', anchor: 'tooltip', @@ -63601,21 +72548,6 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Renders a part of `tooltip`.', }, - { - name: 'TOOLTIP_A11Y_CONTRACT', - anchor: 'tooltip-a11-y-contract', - signature: - 'TOOLTIP_A11Y_CONTRACT: { readonly CONTENT_ROLE: "tooltip"; readonly DATA_ATTRIBUTES: { readonly slot: "data-slot"; readonly state: "data-state"; readonly disabled: "data-disabled"; readonly side: "data-side"; readonly align: "data-align"; }; readonly TRIGGER_ATTRIBUTE: "aria-describedby"; readonly OPEN_STATE_ATTRIBUTE: "data-state"; }', - typeOnly: true, - summary: 'Tooltip accessibility contract.', - }, - { - name: 'TooltipA11yContract', - anchor: 'tooltip-a11y-contract', - signature: 'TooltipA11yContract: typeof TOOLTIP_A11Y_CONTRACT', - typeOnly: true, - summary: 'Type of the Tooltip A11y Contract object.', - }, { name: 'TooltipContent', anchor: 'tooltip-content', @@ -63929,7 +72861,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols89: [ + symbols161: [ { name: 'askr', anchor: 'askr', @@ -63945,24 +72877,9 @@ export const apiSymbolSets: Readonly< ], }, }, - { - name: 'askrVitePlugin', - anchor: 'askr-vite-plugin', - signature: - 'askrVitePlugin: (options?: AskrVitePluginOptions) => AskrVitePlugin', - typeOnly: false, - summary: - 'Create the Askr Vite plugin, which transforms Askr JSX/TSX with oxc, wires\nup dependency pre-bundling and aliasing for `@askrjs/askr`, and optionally\nruns the responsive image pipeline and template optimizer.\nJSX transform failures are reported through the active Vite/Rollup plugin\ncontext with the source file and original transform detail.', - tags: { - param: ['options Plugin configuration; all fields are optional.'], - returns: [ - 'A Vite-compatible plugin object exposing the `askr:vite` name.', - ], - }, - }, { name: 'AskrVitePlugin', - anchor: 'askr-vite-plugin-2', + anchor: 'askr-vite-plugin', signature: 'AskrVitePlugin: any', typeOnly: true, summary: @@ -63994,11 +72911,6 @@ export const apiSymbolSets: Readonly< 'Hoist repeated JSX class/style literals using parsed compiled output. Defaults to `false`.', signature: 'optimizeTemplates?: boolean;', }, - { - name: 'ssrPrecompile', - summary: '', - signature: 'ssrPrecompile?: boolean;', - }, { name: 'images', summary: 'Opt into declared responsive image transforms.', @@ -64031,31 +72943,7 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols90: [ - { - name: 'ASKR_APP_MARKER', - anchor: 'askr-app-marker', - signature: 'ASKR_APP_MARKER: "<!--askr-app-->"', - typeOnly: false, - summary: - 'Placeholder marker in `index.html` replaced with the rendered app fragment.', - }, - { - name: 'ASKR_HEAD_MARKER', - anchor: 'askr-head-marker', - signature: 'ASKR_HEAD_MARKER: "<!--askr-head-->"', - typeOnly: false, - summary: - 'Placeholder marker in `index.html` replaced with rendered `<head>` content.', - }, - { - name: 'ASKR_SERVER_MODULE_ID', - anchor: 'askr-server-module-id', - signature: 'ASKR_SERVER_MODULE_ID: "virtual:askr-server"', - typeOnly: false, - summary: - 'Virtual module id that resolves to the generated server document app.', - }, + symbols162: [ { name: 'AskrDocumentOptions', anchor: 'askr-document-options', @@ -64077,7 +72965,7 @@ export const apiSymbolSets: Readonly< signature: 'askrServer: (options: AskrServerOptions) => AskrServerPlugin', typeOnly: false, summary: - "Create the Vite plugin that serves Askr's server-rendered document during\ndevelopment and generates the {@link ASKR_SERVER_MODULE_ID} virtual module\nthat composes the built server app with the HTML document.", + "Create the Vite plugin that serves Askr's server-rendered document during\ndevelopment and generates the {@link ASKR_SERVER_MODULE_ID } virtual module\nthat composes the built server app with the HTML document.", tags: { param: ['options Server entry and document configuration.'], returns: [ @@ -64126,34 +73014,6 @@ export const apiSymbolSets: Readonly< }, ], }, - { - name: 'composeAskrDocumentResponse', - anchor: 'compose-askr-document-response', - signature: - 'composeAskrDocumentResponse: (response: Response, transformedDocument: string, options?: AskrDocumentOptions) => Promise<Response>', - typeOnly: false, - summary: - "Compose an Askr fragment response into the full `transformedDocument` HTML,\nstreaming the fragment's body between the document prefix and suffix.\nNon-fragment responses are returned unchanged.", - tags: { - param: [ - 'response The upstream response, expected to be an Askr fragment.', - 'transformedDocument The `index.html` document with app/head markers.', - 'options Optional telemetry hook wrapping the compose work.', - ], - returns: [ - 'The composed full-document `Response`, or `response` unchanged.', - ], - }, - }, - { - name: 'composeAskrHead', - anchor: 'compose-askr-head', - signature: - 'composeAskrHead: (document: string, head: string, lang?: string, dir?: string) => string', - typeOnly: false, - summary: - "Replace the {@link ASKR_HEAD_MARKER} in `document` with normalized `head`\nmarkup, and patch the `<html>` tag's `lang`/`dir` attributes when given.", - }, { name: 'createDocumentApp', anchor: 'create-document-app', @@ -64161,30 +73021,10 @@ export const apiSymbolSets: Readonly< 'createDocumentApp: (app: ServerApp, transformedDocument: string, options?: AskrDocumentOptions) => ServerApp', typeOnly: false, summary: - 'Wrap `app` so every response is composed into `transformedDocument` via\n{@link composeAskrDocumentResponse}.', - }, - { - name: 'insertAskrFragment', - anchor: 'insert-askr-fragment', - signature: - 'insertAskrFragment: (document: string, fragment: string) => string', - typeOnly: false, - summary: - 'Replace the single {@link ASKR_APP_MARKER} in `document` with `fragment`.', - tags: { - throws: ['If `document` does not contain exactly one app marker.'], - }, - }, - { - name: 'isAskrFragment', - anchor: 'is-askr-fragment', - signature: 'isAskrFragment: (response: Response) => boolean', - typeOnly: false, - summary: - 'Whether `response` carries the `askr-fragment=1` content-type marker.', + 'Wrap `app` so every response is composed into `transformedDocument` via\n{@link composeAskrDocumentResponse }.', }, ], - symbols91: [ + symbols163: [ { name: 'image', anchor: 'image', @@ -64261,30 +73101,6 @@ export const apiSymbolSets: Readonly< summary: 'Output image formats the pipeline can emit; `"source"` keeps the original format.', }, - { - name: 'ImagePipelineOptions', - anchor: 'image-pipeline-options', - signature: 'ImagePipelineOptions: any', - typeOnly: true, - summary: 'Plugin-level defaults applied to every `image()` declaration.', - members: [ - { - name: 'widths', - summary: '', - signature: 'widths?: readonly number[];', - }, - { - name: 'formats', - summary: '', - signature: 'formats?: readonly ImageOutputFormat[];', - }, - { - name: 'quality', - summary: '', - signature: 'quality?: ImageQualityOptions;', - }, - ], - }, { name: 'ImageProps', anchor: 'image-props', diff --git a/src/pages/docs/cli-snapshot.ts b/src/pages/docs/cli-snapshot.ts index 2d20e6f..f863926 100644 --- a/src/pages/docs/cli-snapshot.ts +++ b/src/pages/docs/cli-snapshot.ts @@ -1,6 +1,6 @@ // Generated from @askrjs/cli --help. Do not edit. export const cliSnapshot = { - version: '0.4.0', + version: '0.5.0', commands: [ 'add', 'analyze', @@ -21,5 +21,5 @@ export const cliSnapshot = { templates: ['startkit', 'spa', 'ssr', 'ssg', 'full-stack'], help: 'askr - Unified CLI for the Askr platform\n\nUsage:\n askr <command> [args]\n\nCommands:\n add Generate pages or declared actions into an Askr project\n analyze Analyze Askr correctness and performance\n check Run the complete project validation path\n create Create a new Askr app from a template or product prompt\n database Generate, validate, and migrate project databases\n docs Check or snapshot consumer-visible API documentation\n doctor Diagnose environment and Askr project health\n generate Generate an @askrjs/fetch client from OpenAPI\n openapi Generate or check an OpenAPI YAML artifact\n skills Install or sync Askr agent skills\n ssg Run static-site generation\n outdated List available dependency updates\n repair Apply safe fixes and identify remaining semantic work\n update Apply safe dependency updates\n upgrade Apply latest peer-compatible dependency upgrades\n\nOptions:\n --help, -h Show help\n --version, -v Print CLI version\n\nExamples:\n askr create startkit my-app\n askr create --prompt "Agent workflow console with approvals"\n askr add page audit-log\n askr add action approve-request --route /requests/{id}\n askr analyze --check\n askr doctor\n askr repair\n askr check\n askr database validate\n askr skills install\n askr openapi --check\n askr skills review foundation --cwd ./candidate-app\n askr ssg --config ./ssg.config.ts --output ./dist/static\n askr outdated\n askr update\n askr upgrade', createHelp: - 'askr create - Project scaffolding for Askr\n\nUsage:\n askr create [template] <name> [--dir <path>] [--prompt <text>] [--no-install] [--no-skills]\n askr create --prompt <text> [name] [--no-install] [--no-skills]\n\nTemplates:\n startkit, spa, ssr, ssg, full-stack\n\nOptions:\n --prompt <text> Score prompt keywords to select a template and emit a builder blueprint\n An explicit positional template takes precedence; the prompt can still name the app\n --dir <path> Explicit output directory (defaults to ./<name>)\n --no-install Skip dependency installation\n --no-skills Skip bundled Askr skill installation into skills/\n --help, -h Show help\n\nExamples:\n askr create startkit my-app\n askr create full-stack my-app\n askr create startkit acme-dashboard\n askr create --prompt "Agent workflow console with approvals and analytics"', + 'askr create - Project scaffolding for Askr\n\nUsage:\n askr create [template] <name> [--dir <path>] [--prompt <text>] [--no-install] [--no-skills]\n askr create --prompt <text> [name] [--no-install] [--no-skills]\n\nTemplates:\n startkit, spa, ssr, ssg, full-stack\n\nOptions:\n --prompt <text> Score prompt keywords to select a template and emit a builder blueprint\n An explicit positional template takes precedence; the prompt can still name the app\n --dir <path> Explicit output directory (defaults to ./<name>)\n --no-install Skip dependency installation\n --no-skills Skip bundled Askr skill installation into skills/\n --auth <name> Configure auth0, microsoft, google, or apple using the same planner as add auth\n --origin <url> Exact HTTPS application origin; required with --auth, repeat for environments\n --help, -h Show help\n\nExamples:\n askr create startkit my-app\n askr create full-stack my-app\n askr create startkit acme-dashboard\n askr create --prompt "Agent workflow console with approvals and analytics"', } as const; diff --git a/src/pages/docs/usage-guide.ts b/src/pages/docs/usage-guide.ts index 8e6181f..3880ae5 100644 --- a/src/pages/docs/usage-guide.ts +++ b/src/pages/docs/usage-guide.ts @@ -1331,7 +1331,7 @@ git diff -- skills`, /Vite Integration and Document Ownership/, 'Install the Askr Vite plugin once and keep the HTML document owned by the selected SPA, SSR, or SSG entry instead of generating competing shells.', `import { askr } from '@askrjs/vite'; -import { defineConfig } from 'vite'; +import { defineConfig } from 'vite-plus'; export default defineConfig({ plugins: [askr()], diff --git a/tests/accessibility-contract.test.tsx b/tests/accessibility-contract.test.tsx index 5b578f8..d9df64d 100644 --- a/tests/accessibility-contract.test.tsx +++ b/tests/accessibility-contract.test.tsx @@ -1,5 +1,5 @@ import { renderToStringSync } from '@askrjs/askr/ssr'; -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'vite-plus/test'; import { DocsSearch } from '../src/pages/docs/search'; import { SiteFooter } from '../src/pages/site-footer'; diff --git a/tests/docs-catalog.test.ts b/tests/docs-catalog.test.ts index fa10ad9..aa7476a 100644 --- a/tests/docs-catalog.test.ts +++ b/tests/docs-catalog.test.ts @@ -1,5 +1,5 @@ import { readFileSync } from 'node:fs'; -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'vite-plus/test'; import { apiManifest } from '../src/pages/docs/api-manifest'; import { apiSymbolSets } from '../src/pages/docs/api-snapshot'; import { diff --git a/tests/generated-output-contract.test.ts b/tests/generated-output-contract.test.ts index 031176b..c141b77 100644 --- a/tests/generated-output-contract.test.ts +++ b/tests/generated-output-contract.test.ts @@ -1,6 +1,6 @@ import { existsSync, readFileSync, readdirSync } from 'node:fs'; import { resolve } from 'node:path'; -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'vite-plus/test'; import { docsCatalog } from '../src/pages/docs/catalog'; import { docsMarkdownPath, diff --git a/tests/llm-docs.test.ts b/tests/llm-docs.test.ts index 6adf6af..2e98bdb 100644 --- a/tests/llm-docs.test.ts +++ b/tests/llm-docs.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'vite-plus/test'; import { apiManifest } from '../src/pages/docs/api-manifest'; import { apiSymbolSets } from '../src/pages/docs/api-snapshot'; import { docsCatalog } from '../src/pages/docs/catalog'; diff --git a/tests/package-snapshot-contract.test.ts b/tests/package-snapshot-contract.test.ts index ae77642..b6a013e 100644 --- a/tests/package-snapshot-contract.test.ts +++ b/tests/package-snapshot-contract.test.ts @@ -2,7 +2,7 @@ import { spawnSync } from 'node:child_process'; import { existsSync, readFileSync, writeFileSync } from 'node:fs'; import { resolve } from 'node:path'; import ts from 'typescript'; -import { beforeAll, describe, expect, it } from 'vitest'; +import { beforeAll, describe, expect, it } from 'vite-plus/test'; import { apiManifest } from '../src/pages/docs/api-manifest'; import { apiSymbolSets } from '../src/pages/docs/api-snapshot'; import { cliSnapshot } from '../src/pages/docs/cli-snapshot'; @@ -65,14 +65,6 @@ interface MutableContract { const updatePackageSnapshot = process.env.UPDATE_PACKAGE_SNAPSHOT === '1'; -const removedRouterSymbols = new Set([ - 'registerRoutes', - 'getManifest', - 'getRoutes', - 'clearRoutes', - 'RegisterRoutesOptions', -]); - function exportedTypesTarget(value: unknown): string | undefined { if (typeof value === 'string' || !value || typeof value !== 'object') { return undefined; @@ -324,32 +316,15 @@ function deriveInstalledContract(): MutableContract { const symbols = moduleSymbol ? checker .getExportsOfModule(moduleSymbol) - .filter( - (symbol) => - symbol.name !== 'default' && - !( - entrypoint.packageName === '@askrjs/askr' && - entrypoint.subpath === './router' && - removedRouterSymbols.has(symbol.name) - ) - ) + .filter((symbol) => symbol.name !== 'default') .map((symbol) => { const baseAnchor = anchorFor(symbol.name) || 'export'; const count = usedAnchors.get(baseAnchor) ?? 0; usedAnchors.set(baseAnchor, count + 1); - const signature = signatureFor(symbol); - const isRouterEntrypoint = - entrypoint.packageName === '@askrjs/askr' && - entrypoint.subpath === './router'; return { name: symbol.name, anchor: count === 0 ? baseAnchor : `${baseAnchor}-${count + 1}`, - signature: isRouterEntrypoint - ? signature.replaceAll( - 'RegisterRoutesOptions', - 'RouteRegistryOptions' - ) - : signature, + signature: signatureFor(symbol), typeOnly: !symbol.valueDeclaration, ...documentationFor(symbol), }; diff --git a/tests/route-analytics.test.ts b/tests/route-analytics.test.ts index 9c6fbfb..65667be 100644 --- a/tests/route-analytics.test.ts +++ b/tests/route-analytics.test.ts @@ -1,5 +1,5 @@ import type { RouteSnapshot } from '@askrjs/askr/router'; -import { describe, expect, it, vi } from 'vitest'; +import { describe, expect, it, vi } from 'vite-plus/test'; import { createPageViewPayload, emitPageView, diff --git a/tests/static-output-contract.test.ts b/tests/static-output-contract.test.ts index c0df165..61b472e 100644 --- a/tests/static-output-contract.test.ts +++ b/tests/static-output-contract.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from 'vitest'; +import { describe, expect, it } from 'vite-plus/test'; function generatedStyleRegistryErrors(html: string, route: string): string[] { const generatedStyleClasses = new Set( diff --git a/vite.config.ts b/vite.config.ts index 3fa2883..2f47d61 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,6 +1,6 @@ import type { PluginOption, UserConfig } from 'vite-plus'; import { askr } from '@askrjs/vite'; -import { configDefaults } from 'vitest/config'; +import { configDefaults } from 'vite-plus'; function askrPlugin(): PluginOption { return askr() as unknown as PluginOption; From 4d2e5aacf05bff6bce813ffcefcc6228c8afc94a Mon Sep 17 00:00:00 2001 From: Jeff Repanich <jrepanich@gmail.com> Date: Mon, 12 Oct 2026 22:38:29 -0400 Subject: [PATCH 2/3] ci: run required checks on develop pull requests --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2ec8792..0efa052 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,7 +2,7 @@ name: CI on: pull_request: - branches: [main] + branches: [develop, main] workflow_dispatch: permissions: From 6abc257928121dfb6512665365e989225a3d0eeb Mon Sep 17 00:00:00 2001 From: Jeff Repanich <jrepanich@gmail.com> Date: Fri, 23 Oct 2026 09:49:09 -0400 Subject: [PATCH 3/3] fix: refresh Askr 0.5.0 lockfile integrity --- package-lock.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2707971..f7d2f70 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,7 +44,7 @@ "node_modules/@askrjs/askr": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@askrjs/askr/-/askr-0.5.0.tgz", - "integrity": "sha512-VaMVh23Qj/pik7j1y57t0JzKpKhYq8zO+0UmVfzleDVNme73pI/C0iNOYtJuaYYaAV5+fsSCUpvX7TPgeCuYSA==", + "integrity": "sha512-UaMytwNNi+ZPW51G033odDTAqZ02I/mmHrh424YY3lRk3DxdRRWkpMJCDvwOIGXeG4XbvLhB6PyRADmAfu5rog==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" @@ -65,7 +65,7 @@ "node_modules/@askrjs/auth": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@askrjs/auth/-/auth-0.5.0.tgz", - "integrity": "sha512-2quLsDz8mH/6eyKSdcKLJcJQFPcNU2P5H8lS56/IzMzPOt3eihO17e1W5DDnVNMYbNaGVc5FJwWj9Snz0++ygw==", + "integrity": "sha512-yfHMNt2koSIP50w9WeaFTzOYvcJcqJKMx4Gb2nDSS4FqNc2i/cpqu2YqrAXFTmOw+yY8brNl60xHf7s6fuwYgg==", "devOptional": true, "license": "Apache-2.0", "dependencies": { @@ -92,7 +92,7 @@ "node_modules/@askrjs/cli": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@askrjs/cli/-/cli-0.5.0.tgz", - "integrity": "sha512-gn+I+ejpvQ3qI0QbQW4EEEzOawXEBL5+ww7vCx6PDLt0bGBfkufiZ2e5ZYj1+vr60KV0EcvHaRyDKtUB8JFNkg==", + "integrity": "sha512-7UUX1Nk4ua9eZSL+YF+IQ4eR3JsWYvHvKAMpoQj/M4mKDM6dK+Sb0DSzn3ox5SyquCmmg/swexYxpumnDwzsSA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -182,7 +182,7 @@ "node_modules/@askrjs/node": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@askrjs/node/-/node-0.5.0.tgz", - "integrity": "sha512-HnsI+53V/JPWiEuPk954VTLhHHf+jK0in8Mvq2FKu+fBsaUhJENRiray8BC9LMex5Lvt+czX1XvAF/f4RdBpag==", + "integrity": "sha512-5j+lLlMjC13Py8soE7J226DjPTW38HI0xVGKAgsKi/somlGiMzo6AuQnMqbxk9WebZwN6modHlzgwlww25Fpwg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -210,7 +210,7 @@ "node_modules/@askrjs/schema": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@askrjs/schema/-/schema-0.5.0.tgz", - "integrity": "sha512-JMciK1KmJJ7Jy/GY+ph3ibFf/75qFA1HXMuC0tI/QMxnqpVTbIY694AXk9KDODrY1qm8WaF9ktpjKlY7ciENgA==", + "integrity": "sha512-YSCBym9d92iM2JdageO9agmzAOrZj5K/uS8XE/hbq7F79no9BiSOf2ZyVAmccMZ59TfpeY85ZTIlMo0jIhsVFA==", "devOptional": true, "license": "Apache-2.0", "engines": { @@ -242,7 +242,7 @@ "node_modules/@askrjs/testing": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@askrjs/testing/-/testing-0.5.0.tgz", - "integrity": "sha512-GR3kKzfmcExylK+jWfIc8fAHK6kqtUDfzP60uNM86HSk0Pc+FFZ+a/ZUULhmqIdv/cZdI29XUejEUQSMY8Ojqg==", + "integrity": "sha512-dwaYIQNezj9XxWFt3XavwvzlLYuYbX2Smhy8LkUS/Tzgvs+UGeajBBCnvNOl5GCy9kTTEDQm0vNQoZjaHs0eSA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -255,7 +255,7 @@ "node_modules/@askrjs/themes": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@askrjs/themes/-/themes-0.5.0.tgz", - "integrity": "sha512-qqR1q8cdl0w8ayXRh45WvEmCgk3WPAcOCeNcOGPm9ymCY7iO5aNjrwxz/hJ9fdrAB1vAGb3FQF5K/uddciZphw==", + "integrity": "sha512-uxHT4n+ts3JWG3kfoQgVjLrcrxUVDal47+67KHKRrWVfhKDorIm4Ah3u1594xdnjTx4hI3nBASdKcS9LmLfGOQ==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" @@ -268,7 +268,7 @@ "node_modules/@askrjs/ui": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@askrjs/ui/-/ui-0.5.0.tgz", - "integrity": "sha512-Q3yvvcah8rp9iWEq7H0uQHU4to4uLx9lT5B8GpXz43qh2i9UVtxjrpJ5rdPWfNiIPCYEkqjDnhpT3JOlMnMOsg==", + "integrity": "sha512-Wzg5YShgKyYohoaxQwnJS6Jrva3lR8tLy92S4QIB0zZvFyltaTgbBGP8GPDJYb/2qrr6NZmuXrZRk82BPBB1qg==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" @@ -280,7 +280,7 @@ "node_modules/@askrjs/vite": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@askrjs/vite/-/vite-0.5.0.tgz", - "integrity": "sha512-7V7rS+oF8so2O0Kjr3CQUKtYUJIogP5taogHJTu9kqFrjfuBNpI9aMZkQcS1FwsQnJ9hHOVK1OE0JyDmZ6A92g==", + "integrity": "sha512-OufgXhHO9a4/IkN3KXBMnvTs8iEfUT0CMFE8v3fyRTtRahzEXU0FoFiRIEWDrmuSmGOXYTs8U7p1gLwxu9pVBQ==", "dev": true, "license": "Apache-2.0", "dependencies": {