{
	"name": "@fuzdev/fuz_ui",
	"repo_name": "fuz_ui",
	"repo_url": "https://github.com/fuzdev/fuz_ui",
	"owner_name": "fuzdev",
	"homepage_url": "https://ui.fuz.dev/",
	"logo_url": "https://ui.fuz.dev/logo.svg",
	"logo_alt": "a friendly brown spider facing you",
	"npm_url": "https://www.npmjs.com/package/@fuzdev/fuz_ui",
	"changelog_url": "https://github.com/fuzdev/fuz_ui/blob/main/CHANGELOG.md",
	"published": true,
	"package_json": {
		"name": "@fuzdev/fuz_ui",
		"version": "0.191.4",
		"description": "Svelte UI library",
		"tagline": "friendly user zystem",
		"glyph": "🧶",
		"logo": "logo.svg",
		"logo_alt": "a friendly brown spider facing you",
		"license": "MIT",
		"homepage": "https://ui.fuz.dev/",
		"author": {
			"name": "Ryan Atkinson",
			"email": "mail@ryanatkn.com",
			"url": "https://www.ryanatkn.com/"
		},
		"repository": {
			"type": "git",
			"url": "git+https://github.com/fuzdev/fuz_ui.git"
		},
		"bugs": "https://github.com/fuzdev/fuz_ui/issues",
		"funding": "https://www.ryanatkn.com/funding",
		"scripts": {
			"start": "gro dev",
			"dev": "gro dev",
			"build": "gro build",
			"check": "gro check",
			"test": "gro test",
			"fixtures:update": "gro src/test/fixtures/update",
			"preview": "vite preview",
			"deploy": "gro deploy",
			"benchmark": "gro run src/benchmarks/mdz.benchmark.ts",
			"benchmark:save": "gro run src/benchmarks/mdz.benchmark.ts --save"
		},
		"type": "module",
		"engines": {
			"node": ">=22.15"
		},
		"peerDependencies": {
			"@fuzdev/fuz_code": ">=0.45.1",
			"@fuzdev/fuz_css": ">=0.53.0",
			"@fuzdev/fuz_util": ">=0.52.0",
			"@fuzdev/gro": ">=0.195.0",
			"@jridgewell/trace-mapping": "^0.3",
			"@sveltejs/kit": "^2.47.3",
			"@types/estree": "^1",
			"esm-env": "^1",
			"svelte": "^5",
			"svelte2tsx": "^0.7.45",
			"vite": ">=6",
			"zod": "^4.1.12"
		},
		"peerDependenciesMeta": {
			"@fuzdev/fuz_code": {
				"optional": true
			},
			"@fuzdev/fuz_util": {
				"optional": true
			},
			"@fuzdev/gro": {
				"optional": true
			},
			"@jridgewell/trace-mapping": {
				"optional": true
			},
			"@types/estree": {
				"optional": true
			},
			"esm-env": {
				"optional": true
			},
			"svelte2tsx": {
				"optional": true
			},
			"vite": {
				"optional": true
			},
			"zod": {
				"optional": true
			}
		},
		"devDependencies": {
			"@changesets/changelog-git": "^0.2.1",
			"@fuzdev/fuz_code": "^0.45.1",
			"@fuzdev/fuz_css": "^0.58.0",
			"@fuzdev/fuz_util": "^0.55.0",
			"@fuzdev/gro": "^0.197.2",
			"@jridgewell/trace-mapping": "^0.3.31",
			"@ryanatkn/eslint-config": "^0.10.1",
			"@sveltejs/acorn-typescript": "^1.0.9",
			"@sveltejs/adapter-static": "^3.0.10",
			"@sveltejs/kit": "^2.55.0",
			"@sveltejs/package": "^2.5.7",
			"@sveltejs/vite-plugin-svelte": "^6.2.4",
			"@types/estree": "^1.0.8",
			"@types/node": "^24.10.1",
			"@webref/css": "^8.2.0",
			"eslint": "^9.39.1",
			"eslint-plugin-svelte": "^3.13.1",
			"esm-env": "^1.2.2",
			"jsdom": "^27.2.0",
			"magic-string": "^0.30.21",
			"prettier": "^3.7.4",
			"prettier-plugin-svelte": "^3.5.1",
			"svelte": "^5.55.0",
			"svelte-check": "^4.4.5",
			"svelte2tsx": "^0.7.52",
			"tslib": "^2.8.1",
			"typescript": "^5.9.3",
			"typescript-eslint": "^8.48.1",
			"vite": "^7.3.1",
			"vitest": "^4.0.15",
			"zimmerframe": "^1.1.4",
			"zod": "^4.3.6"
		},
		"prettier": {
			"plugins": [
				"prettier-plugin-svelte"
			],
			"useTabs": true,
			"printWidth": 100,
			"singleQuote": true,
			"bracketSpacing": false,
			"overrides": [
				{
					"files": "package.json",
					"options": {
						"useTabs": false
					}
				}
			]
		},
		"sideEffects": [
			"**/*.css"
		],
		"files": [
			"dist",
			"src/lib/**/*.ts",
			"!src/lib/**/*.test.*",
			"!dist/**/*.test.*"
		],
		"exports": {
			"./package.json": "./package.json",
			"./*.js": {
				"types": "./dist/*.d.ts",
				"default": "./dist/*.js"
			},
			"./*.ts": {
				"types": "./dist/*.d.ts",
				"default": "./dist/*.js"
			},
			"./*.svelte": {
				"types": "./dist/*.svelte.d.ts",
				"svelte": "./dist/*.svelte",
				"default": "./dist/*.svelte"
			}
		}
	},
	"source_json": {
		"name": "@fuzdev/fuz_ui",
		"version": "0.191.4",
		"modules": [
			{
				"path": "Alert.svelte",
				"declarations": [
					{
						"name": "Alert",
						"kind": "component",
						"doc_comment": "",
						"see_also": [
							"{@link https://www.w3.org/WAI/ARIA/apg/patterns/alert/}"
						],
						"props": [
							{
								"name": "status",
								"type": "AlertStatus",
								"optional": true
							},
							{
								"name": "color",
								"type": "string",
								"optional": true
							},
							{
								"name": "onclick",
								"type": "(() => void) | undefined",
								"optional": true
							},
							{
								"name": "disabled",
								"type": "boolean",
								"optional": true
							},
							{
								"name": "icon",
								"type": "string | Snippet<[icon: string]> | null | undefined",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet"
							}
						],
						"source_line": 1
					}
				],
				"module_comment": "@see {@link https://www.w3.org/WAI/ARIA/apg/patterns/alert/}",
				"dependencies": [
					"alert.ts"
				]
			},
			{
				"path": "alert.ts",
				"declarations": [
					{
						"name": "AlertStatus",
						"kind": "type",
						"source_line": 3,
						"type_signature": "AlertStatus"
					},
					{
						"name": "AlertStatusOptions",
						"kind": "type",
						"source_line": 5,
						"type_signature": "AlertStatusOptions",
						"properties": [
							{
								"name": "color",
								"kind": "variable",
								"type_signature": "string"
							},
							{
								"name": "icon",
								"kind": "variable",
								"type_signature": "string | null"
							}
						]
					},
					{
						"name": "alert_status_options",
						"kind": "variable",
						"source_line": 10,
						"type_signature": "Record<AlertStatus, AlertStatusOptions>"
					}
				],
				"dependents": [
					"Alert.svelte"
				]
			},
			{
				"path": "analysis_context.ts",
				"declarations": [
					{
						"name": "DiagnosticSeverity",
						"kind": "type",
						"doc_comment": "Diagnostic severity levels.\n\n- `error`: Analysis failed, declaration may be incomplete or missing data\n- `warning`: Partial success, something seems off but analysis continued",
						"source_line": 66,
						"type_signature": "DiagnosticSeverity"
					},
					{
						"name": "DiagnosticKind",
						"kind": "type",
						"doc_comment": "Discriminant for diagnostic types.",
						"source_line": 71,
						"type_signature": "DiagnosticKind"
					},
					{
						"name": "BaseDiagnostic",
						"kind": "type",
						"doc_comment": "Base diagnostic fields shared by all diagnostic types.",
						"source_line": 81,
						"type_signature": "BaseDiagnostic",
						"properties": [
							{
								"name": "kind",
								"kind": "variable",
								"type_signature": "DiagnosticKind"
							},
							{
								"name": "file",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "File path relative to project root (display with './' prefix)."
							},
							{
								"name": "line",
								"kind": "variable",
								"type_signature": "number | null",
								"doc_comment": "Line number (1-based), or null if location unavailable."
							},
							{
								"name": "column",
								"kind": "variable",
								"type_signature": "number | null",
								"doc_comment": "Column number (1-based), or null if location unavailable."
							},
							{
								"name": "message",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Human-readable description of the issue."
							},
							{
								"name": "severity",
								"kind": "variable",
								"type_signature": "DiagnosticSeverity"
							}
						]
					},
					{
						"name": "TypeExtractionDiagnostic",
						"kind": "type",
						"doc_comment": "Type extraction failed (e.g., complex or recursive types).",
						"source_line": 97,
						"type_signature": "TypeExtractionDiagnostic",
						"extends": [
							"BaseDiagnostic"
						],
						"properties": [
							{
								"name": "kind",
								"kind": "variable",
								"type_signature": "'type_extraction_failed'"
							},
							{
								"name": "symbol_name",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Name of the symbol whose type couldn't be extracted."
							}
						]
					},
					{
						"name": "SignatureAnalysisDiagnostic",
						"kind": "type",
						"doc_comment": "Function/method signature analysis failed.",
						"source_line": 106,
						"type_signature": "SignatureAnalysisDiagnostic",
						"extends": [
							"BaseDiagnostic"
						],
						"properties": [
							{
								"name": "kind",
								"kind": "variable",
								"type_signature": "'signature_analysis_failed'"
							},
							{
								"name": "function_name",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Name of the function or method."
							}
						]
					},
					{
						"name": "ClassMemberDiagnostic",
						"kind": "type",
						"doc_comment": "Class member analysis failed.",
						"source_line": 115,
						"type_signature": "ClassMemberDiagnostic",
						"extends": [
							"BaseDiagnostic"
						],
						"properties": [
							{
								"name": "kind",
								"kind": "variable",
								"type_signature": "'class_member_failed'"
							},
							{
								"name": "class_name",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Name of the class."
							},
							{
								"name": "member_name",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Name of the member that failed."
							}
						]
					},
					{
						"name": "SveltePropDiagnostic",
						"kind": "type",
						"doc_comment": "Svelte prop type resolution failed.",
						"source_line": 126,
						"type_signature": "SveltePropDiagnostic",
						"extends": [
							"BaseDiagnostic"
						],
						"properties": [
							{
								"name": "kind",
								"kind": "variable",
								"type_signature": "'svelte_prop_failed'"
							},
							{
								"name": "component_name",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Name of the component."
							},
							{
								"name": "prop_name",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Name of the prop."
							}
						]
					},
					{
						"name": "ModuleSkippedDiagnostic",
						"kind": "type",
						"doc_comment": "Module was skipped during analysis.\nCould be due to missing source file in program or no analyzer available.",
						"source_line": 138,
						"type_signature": "ModuleSkippedDiagnostic",
						"extends": [
							"BaseDiagnostic"
						],
						"properties": [
							{
								"name": "kind",
								"kind": "variable",
								"type_signature": "'module_skipped'"
							},
							{
								"name": "reason",
								"kind": "variable",
								"type_signature": "'not_in_program' | 'no_analyzer'",
								"doc_comment": "Reason the module was skipped."
							}
						]
					},
					{
						"name": "Diagnostic",
						"kind": "type",
						"doc_comment": "Union of all diagnostic types.",
						"source_line": 147,
						"type_signature": "Diagnostic"
					},
					{
						"name": "AnalysisContext",
						"kind": "class",
						"doc_comment": "Context for collecting diagnostics during source analysis.\n\nThread an instance through analysis functions to collect errors and warnings\nwithout halting analysis. After analysis completes, check `has_errors()` and\nreport collected diagnostics.",
						"examples": [
							"```ts\nconst ctx = new AnalysisContext();\nts_analyze_module_exports(source_file, checker, options, ctx);\nif (ctx.has_errors()) {\n  console.error('Analysis completed with errors:');\n  for (const d of ctx.errors()) {\n    console.error(format_diagnostic(d));\n  }\n}\n```"
						],
						"source_line": 173,
						"members": [
							{
								"name": "diagnostics",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"type_signature": "Array<Diagnostic>"
							},
							{
								"name": "add",
								"kind": "function",
								"doc_comment": "Add a `Diagnostic` to the collection.",
								"type_signature": "(diagnostic: Diagnostic): void",
								"return_type": "void",
								"parameters": [
									{
										"name": "diagnostic",
										"type": "Diagnostic"
									}
								]
							},
							{
								"name": "has_errors",
								"kind": "function",
								"doc_comment": "Check if any errors were collected.",
								"type_signature": "(): boolean",
								"return_type": "boolean",
								"parameters": []
							},
							{
								"name": "has_warnings",
								"kind": "function",
								"doc_comment": "Check if any warnings were collected.",
								"type_signature": "(): boolean",
								"return_type": "boolean",
								"parameters": []
							},
							{
								"name": "errors",
								"kind": "function",
								"doc_comment": "Get all error diagnostics.",
								"type_signature": "(): Diagnostic[]",
								"return_type": "Diagnostic[]",
								"parameters": []
							},
							{
								"name": "warnings",
								"kind": "function",
								"doc_comment": "Get all warning diagnostics.",
								"type_signature": "(): Diagnostic[]",
								"return_type": "Diagnostic[]",
								"parameters": []
							},
							{
								"name": "by_kind",
								"kind": "function",
								"doc_comment": "Get diagnostics of a specific `DiagnosticKind`.",
								"type_signature": "<K extends DiagnosticKind>(kind: K): (Extract<TypeExtractionDiagnostic, { kind: K; }> | Extract<SignatureAnalysisDiagnostic, { ...; }> | Extract<...> | Extract<...> | Extract<...>)[]",
								"return_type": "(Extract<TypeExtractionDiagnostic, { kind: K; }> | Extract<SignatureAnalysisDiagnostic, { kind: K; }> | Extract<...> | Extract<...> | Extract<...>)[]",
								"parameters": [
									{
										"name": "kind",
										"type": "K"
									}
								]
							}
						]
					},
					{
						"name": "FormatDiagnosticOptions",
						"kind": "type",
						"doc_comment": "Options for formatting diagnostics.",
						"source_line": 222,
						"type_signature": "FormatDiagnosticOptions",
						"properties": [
							{
								"name": "prefix",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Prefix for file path (default: './')."
							},
							{
								"name": "strip_base",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Base path to strip from absolute file paths (e.g., process.cwd())."
							}
						]
					},
					{
						"name": "format_diagnostic",
						"kind": "function",
						"doc_comment": "Format a diagnostic for display.",
						"source_line": 236,
						"type_signature": "(diagnostic: Diagnostic, options?: FormatDiagnosticOptions | undefined): string",
						"return_type": "string",
						"return_description": "formatted string like './file.ts:10:5: error: message'",
						"parameters": [
							{
								"name": "diagnostic",
								"type": "Diagnostic",
								"description": "the diagnostic to format"
							},
							{
								"name": "options",
								"type": "FormatDiagnosticOptions | undefined",
								"optional": true,
								"description": "formatting options"
							}
						]
					}
				],
				"module_comment": "Diagnostic collection for source analysis.\n\nProvides structured error/warning collection during TypeScript and Svelte\nanalysis, replacing silent catch blocks with actionable diagnostics.\n\n## Error Handling Contract\n\nAnalysis functions follow a two-tier error model:\n\n**Accumulated (non-fatal)** - Collected in `AnalysisContext`, analysis continues:\n- Type resolution failures (complex generics, circular refs)\n- Missing or unparseable JSDoc\n- Individual member/prop extraction failures\n- The return value is still valid but may have partial data\n\n**Thrown (fatal)** - Analysis cannot continue for this file:\n- File not found or unreadable\n- Syntax errors preventing parsing\n- svelte2tsx transformation failures\n- Svelte version incompatibility\n\n## Usage Pattern\n\n```ts\nconst ctx = new AnalysisContext();\nconst results = files.map(f => {\n  try {\n    return library_analyze_module(f, program, options, ctx);\n  } catch (e) {\n    // Fatal error - log and skip this file\n    console.error(`Failed to analyze ${f.id}: ${e}`);\n    return null;\n  }\n});\n\n// Results are valid even with accumulated errors\n// Check ctx for diagnostics to display to user\nif (ctx.has_errors()) {\n  for (const err of ctx.errors()) {\n    console.error(format_diagnostic(err));\n  }\n}\n```\n\n@example\n```ts\nconst ctx = new AnalysisContext();\n// ... analysis functions add diagnostics via ctx.add(...)\nif (ctx.has_errors()) {\n  for (const err of ctx.errors()) {\n    console.error(`${err.file}:${err.line}: ${err.message}`);\n  }\n}\n```",
				"dependents": [
					"library_generate.ts"
				]
			},
			{
				"path": "api_search.svelte.ts",
				"declarations": [
					{
						"name": "DeclarationSearchState",
						"kind": "type",
						"source_line": 5,
						"type_signature": "DeclarationSearchState",
						"properties": [
							{
								"name": "query",
								"kind": "variable",
								"type_signature": "string"
							},
							{
								"name": "all",
								"kind": "variable",
								"type_signature": "Array<Declaration>"
							},
							{
								"name": "filtered",
								"kind": "variable",
								"type_signature": "Array<Declaration>"
							}
						]
					},
					{
						"name": "ApiSearchState",
						"kind": "type",
						"source_line": 11,
						"type_signature": "ApiSearchState",
						"properties": [
							{
								"name": "query",
								"kind": "variable",
								"type_signature": "string"
							},
							{
								"name": "modules",
								"kind": "variable",
								"type_signature": "{\n\t\tall: Array<Module>;\n\t\tfiltered: Array<Module>;\n\t}"
							},
							{
								"name": "declarations",
								"kind": "variable",
								"type_signature": "{\n\t\tall: Array<Declaration>;\n\t\tfiltered: Array<Declaration>;\n\t}"
							}
						]
					},
					{
						"name": "create_api_search",
						"kind": "function",
						"doc_comment": "Creates unified search state for the API index page (modules and declarations).",
						"source_line": 26,
						"type_signature": "(library: Library): ApiSearchState",
						"return_type": "ApiSearchState",
						"parameters": [
							{
								"name": "library",
								"type": "Library"
							}
						]
					},
					{
						"name": "create_module_declaration_search",
						"kind": "function",
						"doc_comment": "Creates search state for module-specific declaration lists.",
						"source_line": 77,
						"type_signature": "(declarations: Declaration[]): DeclarationSearchState",
						"return_type": "DeclarationSearchState",
						"parameters": [
							{
								"name": "declarations",
								"type": "Declaration[]"
							}
						]
					}
				],
				"dependents": [
					"ApiIndex.svelte",
					"ApiModule.svelte"
				]
			},
			{
				"path": "ApiDeclarationList.svelte",
				"declarations": [
					{
						"name": "ApiDeclarationList",
						"kind": "component",
						"props": [
							{
								"name": "declarations",
								"type": "Array<Declaration>"
							},
							{
								"name": "search_query",
								"type": "string",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"DeclarationDetail.svelte",
					"TomeSection.svelte",
					"TomeSectionHeader.svelte"
				],
				"dependents": [
					"ApiIndex.svelte",
					"ApiModule.svelte"
				]
			},
			{
				"path": "ApiIndex.svelte",
				"declarations": [
					{
						"name": "ApiIndex",
						"kind": "component",
						"props": [
							{
								"name": "library",
								"type": "Library",
								"optional": true,
								"description": "The library instance to render API docs for.\nDefaults to getting from library_context."
							},
							{
								"name": "tome",
								"type": "Tome",
								"optional": true,
								"description": "The tome for the API docs page.\nDefaults to looking up the 'api' tome."
							},
							{
								"name": "minimal",
								"type": "boolean",
								"optional": true,
								"description": "Whether to show minimal content (just a link to full API docs).\nUsed when the API index is shown on a parent docs page."
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"ApiDeclarationList.svelte",
					"ApiModulesList.svelte",
					"DocsSearch.svelte",
					"TomeContent.svelte",
					"TomeLink.svelte",
					"api_search.svelte.ts",
					"library.svelte.ts",
					"tome.ts"
				]
			},
			{
				"path": "ApiModule.svelte",
				"declarations": [
					{
						"name": "ApiModule",
						"kind": "component",
						"props": [
							{
								"name": "module_path",
								"type": "string | Array<string>",
								"description": "The module path parameter from the route (e.g., \"lib/Button.svelte\")."
							},
							{
								"name": "library",
								"type": "Library",
								"optional": true,
								"description": "The library instance to render API docs for.\nDefaults to getting from library_context."
							},
							{
								"name": "tome",
								"type": "Tome",
								"optional": true,
								"description": "The tome for the API docs page.\nDefaults to looking up the 'api' tome."
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"ApiDeclarationList.svelte",
					"DocsSearch.svelte",
					"Mdz.svelte",
					"ModuleLink.svelte",
					"TomeContent.svelte",
					"TomeSection.svelte",
					"TomeSectionHeader.svelte",
					"api_search.svelte.ts",
					"library.svelte.ts",
					"tome.ts"
				]
			},
			{
				"path": "ApiModulesList.svelte",
				"declarations": [
					{
						"name": "ApiModulesList",
						"kind": "component",
						"props": [
							{
								"name": "modules",
								"type": "Array<Module>",
								"description": "The modules to display."
							},
							{
								"name": "search_query",
								"type": "string",
								"optional": true,
								"description": "The current search query for highlighting."
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"ModuleLink.svelte",
					"TomeSection.svelte",
					"TomeSectionHeader.svelte"
				],
				"dependents": [
					"ApiIndex.svelte"
				]
			},
			{
				"path": "autofocus.svelte.ts",
				"declarations": [
					{
						"name": "autofocus",
						"kind": "function",
						"doc_comment": "Creates an attachment that focuses the element on mount.\nUse this instead of the HTML `autofocus` attribute for elements\nthat mount dynamically from reactive conditionals like `{#if}`.",
						"source_line": 15,
						"type_signature": "(options?: FocusOptions | undefined): Attachment<HTMLElement | SVGElement>",
						"return_type": "Attachment<HTMLElement | SVGElement>",
						"parameters": [
							{
								"name": "options",
								"type": "FocusOptions | undefined",
								"optional": true,
								"description": "focus options forwarded to `element.focus()`; defaults to `{focusVisible: true}` to show focus indicators on programmatic focus"
							}
						]
					}
				],
				"module_comment": "Svelte 5 attachment that focuses an element on mount."
			},
			{
				"path": "Breadcrumb.svelte",
				"declarations": [
					{
						"name": "Breadcrumb",
						"kind": "component",
						"props": [
							{
								"name": "path",
								"type": "string | undefined",
								"optional": true,
								"description": "Prefixed with a slash and relative to the base path."
							},
							{
								"name": "selected_path",
								"type": "string | null | undefined",
								"optional": true,
								"description": "Prefixed with a slash and relative to the base path.\n`null` means none and `undefined` is detected from the current url."
							},
							{
								"name": "base_path",
								"type": "string",
								"optional": true,
								"description": "Sets a custom base path of `path` and `selected_path`.\nDefaults to `base` from `$app/paths`."
							},
							{
								"name": "separator",
								"type": "Snippet",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependents": [
					"Docs.svelte",
					"DocsPrimaryNav.svelte"
				]
			},
			{
				"path": "Card.svelte",
				"declarations": [
					{
						"name": "Card",
						"kind": "component",
						"props": [
							{
								"name": "tag",
								"type": "string | undefined",
								"optional": true
							},
							{
								"name": "align",
								"type": "'left' | 'right' | 'above' | 'below'",
								"optional": true
							},
							{
								"name": "icon",
								"type": "string | Snippet",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet"
							}
						],
						"source_line": 1
					}
				]
			},
			{
				"path": "ColorSchemeInput.svelte",
				"declarations": [
					{
						"name": "ColorSchemeInput",
						"kind": "component",
						"props": [
							{
								"name": "value",
								"type": "{color_scheme: ColorScheme}",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"theme_state.svelte.ts"
				]
			},
			{
				"path": "constants.ts",
				"declarations": [
					{
						"name": "MAIN_HEADER_MARGIN_TOP",
						"kind": "variable",
						"source_line": 3,
						"type_signature": "\"calc(60px + var(--space_lg))\""
					}
				]
			},
			{
				"path": "context_helpers.ts",
				"declarations": [
					{
						"name": "create_context",
						"kind": "function",
						"doc_comment": "Wraps Svelte's `setContext` and `getContext` for better ergonomics.\nWhen no value is set in the context,\n`get` throws an error and `get_maybe` returns `undefined`.\nIf a `fallback` is provided, the `value` argument to `set` is optional\nand `get_maybe` is omitted from the type.",
						"source_line": 18,
						"type_signature": "<T>(fallback: () => T): { get: () => T; set: (value?: T | undefined) => T; }",
						"return_type": "{ get: () => T; set: (value?: T | undefined) => T; }",
						"parameters": [
							{
								"name": "fallback",
								"type": "() => T"
							}
						],
						"generic_params": [
							{
								"name": "T"
							}
						]
					}
				],
				"dependents": [
					"TomeSection.svelte",
					"contextmenu_state.svelte.ts",
					"docs_helpers.svelte.ts",
					"library.svelte.ts",
					"mdz_components.ts",
					"style_variable_helpers.svelte.ts",
					"theme_state.svelte.ts",
					"tome.ts"
				]
			},
			{
				"path": "contextmenu_helpers.ts",
				"declarations": [
					{
						"name": "CONTEXTMENU_DEFAULT_OPEN_OFFSET_X",
						"kind": "variable",
						"source_line": 6,
						"type_signature": "-2"
					},
					{
						"name": "CONTEXTMENU_DEFAULT_OPEN_OFFSET_Y",
						"kind": "variable",
						"source_line": 7,
						"type_signature": "-2"
					},
					{
						"name": "CONTEXTMENU_DEFAULT_BYPASS_WINDOW",
						"kind": "variable",
						"source_line": 8,
						"type_signature": "750"
					},
					{
						"name": "CONTEXTMENU_DEFAULT_BYPASS_MOVE_TOLERANCE",
						"kind": "variable",
						"source_line": 9,
						"type_signature": "11"
					},
					{
						"name": "CONTEXTMENU_DEFAULT_LONGPRESS_DURATION",
						"kind": "variable",
						"source_line": 10,
						"type_signature": "633"
					},
					{
						"name": "CONTEXTMENU_DEFAULT_LONGPRESS_MOVE_TOLERANCE",
						"kind": "variable",
						"source_line": 11,
						"type_signature": "21"
					},
					{
						"name": "contextmenu_is_valid_target",
						"kind": "function",
						"doc_comment": "Returns true if valid and narrows the type to HTMLElement | SVGElement.",
						"source_line": 16,
						"type_signature": "(target: EventTarget | null, shiftKey: boolean): target is HTMLElement | SVGElement",
						"return_type": "boolean",
						"parameters": [
							{
								"name": "target",
								"type": "EventTarget | null"
							},
							{
								"name": "shiftKey",
								"type": "boolean"
							}
						]
					},
					{
						"name": "contextmenu_create_keyboard_handlers",
						"kind": "function",
						"source_line": 27,
						"type_signature": "(contextmenu: ContextmenuState): Map<string, () => void>",
						"return_type": "Map<string, () => void>",
						"parameters": [
							{
								"name": "contextmenu",
								"type": "ContextmenuState"
							}
						]
					},
					{
						"name": "contextmenu_create_keydown_handler",
						"kind": "function",
						"source_line": 42,
						"type_signature": "(keyboard_handlers: Map<string, () => void>): (e: KeyboardEvent) => void",
						"return_type": "(e: KeyboardEvent) => void",
						"parameters": [
							{
								"name": "keyboard_handlers",
								"type": "Map<string, () => void>"
							}
						]
					},
					{
						"name": "contextmenu_calculate_constrained_x",
						"kind": "function",
						"source_line": 51,
						"type_signature": "(menu_x: number, menu_width: number, layout_width: number): number",
						"return_type": "number",
						"parameters": [
							{
								"name": "menu_x",
								"type": "number"
							},
							{
								"name": "menu_width",
								"type": "number"
							},
							{
								"name": "layout_width",
								"type": "number"
							}
						]
					},
					{
						"name": "contextmenu_calculate_constrained_y",
						"kind": "function",
						"source_line": 57,
						"type_signature": "(menu_y: number, menu_height: number, layout_height: number): number",
						"return_type": "number",
						"parameters": [
							{
								"name": "menu_y",
								"type": "number"
							},
							{
								"name": "menu_height",
								"type": "number"
							},
							{
								"name": "layout_height",
								"type": "number"
							}
						]
					}
				],
				"dependents": [
					"ContextmenuRoot.svelte",
					"ContextmenuRootForSafariCompatibility.svelte"
				]
			},
			{
				"path": "contextmenu_state.svelte.ts",
				"declarations": [
					{
						"name": "ContextmenuParams",
						"kind": "type",
						"source_line": 13,
						"type_signature": "ContextmenuParams"
					},
					{
						"name": "ContextmenuActivateResult",
						"kind": "type",
						"source_line": 20,
						"type_signature": "ContextmenuActivateResult"
					},
					{
						"name": "ItemState",
						"kind": "type",
						"source_line": 25,
						"type_signature": "ItemState"
					},
					{
						"name": "EntryState",
						"kind": "class",
						"source_line": 27,
						"members": [
							{
								"name": "is_menu",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "menu",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"type_signature": "SubmenuState | RootMenuState"
							},
							{
								"name": "run",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"type_signature": "() => ContextmenuRun"
							},
							{
								"name": "disabled",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"type_signature": "() => boolean"
							},
							{
								"name": "selected",
								"kind": "variable",
								"type_signature": "boolean"
							},
							{
								"name": "pending",
								"kind": "variable",
								"type_signature": "boolean"
							},
							{
								"name": "error_message",
								"kind": "variable",
								"type_signature": "string | null"
							},
							{
								"name": "promise",
								"kind": "variable",
								"type_signature": "Promise<ContextmenuActivateResult> | null"
							},
							{
								"name": "constructor",
								"kind": "constructor",
								"type_signature": "(menu: SubmenuState | RootMenuState, run: () => ContextmenuRun, disabled?: () => boolean): EntryState",
								"parameters": [
									{
										"name": "menu",
										"type": "SubmenuState | RootMenuState"
									},
									{
										"name": "run",
										"type": "() => ContextmenuRun"
									},
									{
										"name": "disabled",
										"type": "() => boolean",
										"default_value": "() => false"
									}
								]
							}
						]
					},
					{
						"name": "SubmenuState",
						"kind": "class",
						"source_line": 50,
						"members": [
							{
								"name": "is_menu",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "menu",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"type_signature": "SubmenuState | RootMenuState"
							},
							{
								"name": "depth",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"type_signature": "number"
							},
							{
								"name": "selected",
								"kind": "variable",
								"type_signature": "boolean"
							},
							{
								"name": "items",
								"kind": "variable",
								"type_signature": "ReadonlyArray<ItemState>"
							},
							{
								"name": "constructor",
								"kind": "constructor",
								"type_signature": "(menu: SubmenuState | RootMenuState, depth: number): SubmenuState",
								"parameters": [
									{
										"name": "menu",
										"type": "SubmenuState | RootMenuState"
									},
									{
										"name": "depth",
										"type": "number"
									}
								]
							}
						]
					},
					{
						"name": "RootMenuState",
						"kind": "class",
						"source_line": 64,
						"members": [
							{
								"name": "is_menu",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "menu",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "depth",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "items",
								"kind": "variable",
								"type_signature": "ReadonlyArray<ItemState>"
							}
						]
					},
					{
						"name": "ContextmenuRun",
						"kind": "type",
						"source_line": 72,
						"type_signature": "ContextmenuRun"
					},
					{
						"name": "ContextmenuStateOptions",
						"kind": "type",
						"source_line": 74,
						"type_signature": "ContextmenuStateOptions",
						"properties": [
							{
								"name": "layout",
								"kind": "variable",
								"type_signature": "Dimensions"
							}
						]
					},
					{
						"name": "ContextmenuState",
						"kind": "class",
						"doc_comment": "Creates a contextmenu store.\nSee usage with `ContextmenuRoot.svelte` and `Contextmenu.svelte`.",
						"see_also": [
							"{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/contextmenu_event}"
						],
						"source_line": 84,
						"members": [
							{
								"name": "layout",
								"kind": "variable",
								"type_signature": "Dimensions"
							},
							{
								"name": "has_custom_layout",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"doc_comment": "If an initial layout is provided, control is deferred externally.\nOtherwise the layout syncs to the page dimensions.",
								"type_signature": "boolean"
							},
							{
								"name": "opened",
								"kind": "variable",
								"type_signature": "boolean"
							},
							{
								"name": "x",
								"kind": "variable",
								"type_signature": "number"
							},
							{
								"name": "y",
								"kind": "variable",
								"type_signature": "number"
							},
							{
								"name": "params",
								"kind": "variable",
								"type_signature": "ReadonlyArray<ContextmenuParams>"
							},
							{
								"name": "error",
								"kind": "variable",
								"type_signature": "string | undefined"
							},
							{
								"name": "root_menu",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"type_signature": "RootMenuState"
							},
							{
								"name": "selections",
								"kind": "variable",
								"type_signature": "ReadonlyArray<ItemState>"
							},
							{
								"name": "can_collapse",
								"kind": "variable"
							},
							{
								"name": "can_expand",
								"kind": "variable"
							},
							{
								"name": "can_select_next",
								"kind": "variable"
							},
							{
								"name": "can_select_previous",
								"kind": "variable"
							},
							{
								"name": "can_activate",
								"kind": "variable"
							},
							{
								"name": "constructor",
								"kind": "constructor",
								"type_signature": "(options?: ContextmenuStateOptions): ContextmenuState",
								"parameters": [
									{
										"name": "options",
										"type": "ContextmenuStateOptions",
										"default_value": "EMPTY_OBJECT"
									}
								]
							},
							{
								"name": "open",
								"kind": "function",
								"type_signature": "(params: ContextmenuParams[], x: number, y: number): void",
								"return_type": "void",
								"parameters": [
									{
										"name": "params",
										"type": "ContextmenuParams[]"
									},
									{
										"name": "x",
										"type": "number"
									},
									{
										"name": "y",
										"type": "number"
									}
								]
							},
							{
								"name": "close",
								"kind": "function",
								"type_signature": "(): void",
								"return_type": "void",
								"parameters": []
							},
							{
								"name": "reset_items",
								"kind": "function",
								"type_signature": "(items: readonly ItemState[]): void",
								"return_type": "void",
								"parameters": [
									{
										"name": "items",
										"type": "readonly ItemState[]"
									}
								]
							},
							{
								"name": "activate",
								"kind": "function",
								"type_signature": "(item: ItemState): boolean | Promise<ContextmenuActivateResult>",
								"return_type": "boolean | Promise<ContextmenuActivateResult>",
								"parameters": [
									{
										"name": "item",
										"type": "ItemState"
									}
								]
							},
							{
								"name": "activate_selected",
								"kind": "function",
								"type_signature": "(): boolean | void | Promise<ContextmenuActivateResult>",
								"return_type": "boolean | void | Promise<ContextmenuActivateResult>",
								"parameters": []
							},
							{
								"name": "select",
								"kind": "function",
								"doc_comment": "Activates the selected entry, or if none, selects the first.",
								"type_signature": "(item: ItemState): void",
								"return_type": "void",
								"parameters": [
									{
										"name": "item",
										"type": "ItemState"
									}
								]
							},
							{
								"name": "collapse_selected",
								"kind": "function",
								"type_signature": "(): void",
								"return_type": "void",
								"parameters": []
							},
							{
								"name": "expand_selected",
								"kind": "function",
								"type_signature": "(): void",
								"return_type": "void",
								"parameters": []
							},
							{
								"name": "select_next",
								"kind": "function",
								"type_signature": "(): void",
								"return_type": "void",
								"parameters": []
							},
							{
								"name": "select_previous",
								"kind": "function",
								"type_signature": "(): void",
								"return_type": "void",
								"parameters": []
							},
							{
								"name": "select_first",
								"kind": "function",
								"type_signature": "(): void",
								"return_type": "void",
								"parameters": []
							},
							{
								"name": "select_last",
								"kind": "function",
								"type_signature": "(): void",
								"return_type": "void",
								"parameters": []
							},
							{
								"name": "add_entry",
								"kind": "function",
								"doc_comment": "Used by `ContextmenuEntry.svelte` and custom entry components.",
								"type_signature": "(run: () => ContextmenuRun, disabled?: () => boolean): EntryState",
								"return_type": "EntryState",
								"parameters": [
									{
										"name": "run",
										"type": "() => ContextmenuRun"
									},
									{
										"name": "disabled",
										"type": "() => boolean",
										"default_value": "() => false"
									}
								]
							},
							{
								"name": "add_submenu",
								"kind": "function",
								"doc_comment": "",
								"type_signature": "(): SubmenuState",
								"return_type": "SubmenuState",
								"parameters": []
							}
						]
					},
					{
						"name": "contextmenu_attachment",
						"kind": "function",
						"doc_comment": "Creates an attachment that sets up contextmenu behavior on an element.",
						"source_line": 349,
						"type_signature": "<T extends ContextmenuParams, U extends T | Array<T>>(params: U | null | undefined): Attachment<HTMLElement | SVGElement>",
						"return_type": "Attachment<HTMLElement | SVGElement>",
						"parameters": [
							{
								"name": "params",
								"type": "U | null | undefined",
								"description": "contextmenu parameters or nullish to disable"
							}
						]
					},
					{
						"name": "ContextmenuOpenOptions",
						"kind": "type",
						"source_line": 373,
						"type_signature": "ContextmenuOpenOptions",
						"properties": [
							{
								"name": "link_enabled",
								"kind": "variable",
								"type_signature": "boolean"
							},
							{
								"name": "text_enabled",
								"kind": "variable",
								"type_signature": "boolean"
							},
							{
								"name": "separator_enabled",
								"kind": "variable",
								"type_signature": "boolean"
							},
							{
								"name": "vibrate",
								"kind": "variable",
								"type_signature": "boolean"
							}
						]
					},
					{
						"name": "contextmenu_open",
						"kind": "function",
						"doc_comment": "Opens the contextmenu, if appropriate,\nquerying the menu items from the DOM starting at the event target.",
						"source_line": 390,
						"type_signature": "(target: HTMLElement | SVGElement, x: number, y: number, contextmenu: ContextmenuState, options?: ContextmenuOpenOptions | undefined): boolean",
						"return_type": "boolean",
						"return_description": "a boolean indicating if the menu was opened or not",
						"parameters": [
							{
								"name": "target",
								"type": "HTMLElement | SVGElement",
								"description": "the leaf element from which to open the contextmenu"
							},
							{
								"name": "x",
								"type": "number",
								"description": "the page X coordinate at which to open the contextmenu, typically the mouse `pageX`"
							},
							{
								"name": "y",
								"type": "number",
								"description": "the page Y coordinate at which to open the contextmenu, typically the mouse `pageY`"
							},
							{
								"name": "contextmenu",
								"type": "ContextmenuState",
								"description": "the contextmenu store"
							},
							{
								"name": "options",
								"type": "ContextmenuOpenOptions | undefined",
								"optional": true,
								"description": "optional configuration for filtering entries and haptic feedback"
							}
						]
					},
					{
						"name": "contextmenu_context",
						"kind": "variable",
						"source_line": 477,
						"type_signature": "{ get: (error_message?: string | undefined) => () => ContextmenuState; get_maybe: () => (() => ContextmenuState) | undefined; set: (value: () => ContextmenuState) => () => ContextmenuState; }"
					},
					{
						"name": "contextmenu_submenu_context",
						"kind": "variable",
						"source_line": 479,
						"type_signature": "{ get: (error_message?: string | undefined) => SubmenuState; get_maybe: () => SubmenuState | undefined; set: (value: SubmenuState) => SubmenuState; }"
					},
					{
						"name": "contextmenu_dimensions_context",
						"kind": "variable",
						"source_line": 481,
						"type_signature": "{ get: () => Dimensions; set: (value?: Dimensions | undefined) => Dimensions; }"
					},
					{
						"name": "contextmenu_check_global_root",
						"kind": "function",
						"doc_comment": "Registers a contextmenu root and warns if multiple non-scoped roots are detected.\nOnly active in development mode. Automatically handles cleanup on unmount.",
						"source_line": 492,
						"type_signature": "(get_scoped: () => boolean): void",
						"return_type": "void",
						"parameters": [
							{
								"name": "get_scoped",
								"type": "() => boolean",
								"description": "getter function that returns the current scoped value"
							}
						]
					}
				],
				"dependencies": [
					"context_helpers.ts",
					"dimensions.svelte.ts",
					"library_helpers.ts"
				],
				"dependents": [
					"Contextmenu.svelte",
					"ContextmenuEntry.svelte",
					"ContextmenuLinkEntry.svelte",
					"ContextmenuRoot.svelte",
					"ContextmenuRootForSafariCompatibility.svelte",
					"ContextmenuSubmenu.svelte",
					"DeclarationLink.svelte",
					"ModuleLink.svelte"
				]
			},
			{
				"path": "Contextmenu.svelte",
				"declarations": [
					{
						"name": "Contextmenu",
						"kind": "component",
						"source_line": 1
					}
				],
				"dependencies": [
					"contextmenu_state.svelte.ts"
				]
			},
			{
				"path": "ContextmenuEntry.svelte",
				"declarations": [
					{
						"name": "ContextmenuEntry",
						"kind": "component",
						"props": [
							{
								"name": "run",
								"type": "ContextmenuRun"
							},
							{
								"name": "icon",
								"type": "string | Snippet",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet"
							},
							{
								"name": "disabled",
								"type": "boolean",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"PendingAnimation.svelte",
					"contextmenu_state.svelte.ts"
				],
				"dependents": [
					"ContextmenuTextEntry.svelte"
				]
			},
			{
				"path": "ContextmenuLinkEntry.svelte",
				"declarations": [
					{
						"name": "ContextmenuLinkEntry",
						"kind": "component",
						"props": [
							{
								"name": "href",
								"type": "string"
							},
							{
								"name": "icon",
								"type": "string | Snippet",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet",
								"optional": true
							},
							{
								"name": "disabled",
								"type": "boolean",
								"optional": true
							},
							{
								"name": "external_rel",
								"type": "string",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"contextmenu_state.svelte.ts"
				],
				"dependents": [
					"ContextmenuRoot.svelte",
					"ContextmenuRootForSafariCompatibility.svelte"
				]
			},
			{
				"path": "ContextmenuRoot.svelte",
				"declarations": [
					{
						"name": "ContextmenuRoot",
						"kind": "component",
						"doc_comment": "Touch event handler for tap-then-longpress bypass detection.\n\nThis allows users to access the native context menu by performing a tap\nfollowed by a longpress/rightclick within a specified time window.\nThe bypass gesture is useful for accessing browser features like text selection\nor the native context menu when the Fuz contextmenu would normally override it.\n\nNote: preventDefault is not called as we're only observing touch patterns,\nnot intercepting them. The actual bypass happens in on_window_contextmenu.",
						"props": [
							{
								"name": "contextmenu",
								"type": "ContextmenuState",
								"optional": true
							},
							{
								"name": "open_offset_x",
								"type": "number",
								"optional": true,
								"description": "The number of pixels to offset from the pointer X position when opened.\nUseful to ensure the first menu item is immediately under the pointer."
							},
							{
								"name": "open_offset_y",
								"type": "number",
								"optional": true,
								"description": "The number of pixels to offset from the pointer Y position when opened.\nUseful to ensure the first menu item is immediately under the pointer."
							},
							{
								"name": "bypass_with_tap_then_longpress",
								"type": "boolean",
								"optional": true,
								"description": "Whether to detect tap-then-longpress to bypass the Fuz contextmenu.\nThis allows access to the system contextmenu by tapping once then rightclicking/long-pressing.\nSetting to `false` disables the gesture."
							},
							{
								"name": "bypass_window",
								"type": "number",
								"optional": true,
								"description": "The number of milliseconds between taps to detect a gesture that bypasses the Fuz contextmenu.\nUsed only when `bypass_with_tap_then_longpress` is true.\nIf the duration is too long, it'll detect more false positives and interrupt normal usage,\nbut too short and some people will have difficulty performing the gesture."
							},
							{
								"name": "bypass_move_tolerance",
								"type": "number",
								"optional": true,
								"description": "The number of pixels the pointer can be moved between taps to detect a tap-then-longpress.\nUsed only when `bypass_with_tap_then_longpress` is true."
							},
							{
								"name": "scoped",
								"type": "boolean",
								"optional": true,
								"description": "If `true`, wraps `children` with a div and listens to events on it instead of the window."
							},
							{
								"name": "link_entry",
								"type": "Snippet<[ComponentProps<typeof ContextmenuLinkEntry>]> | null",
								"optional": true,
								"description": "Snippet for rendering link entries.\nSet to `null` to disable automatic link detection.\nDefaults to `link_entry_default` which renders `ContextmenuLinkEntry`."
							},
							{
								"name": "text_entry",
								"type": "Snippet<[ComponentProps<typeof ContextmenuTextEntry>]> | null",
								"optional": true,
								"description": "Snippet for rendering copy text entries.\nSet to `null` to disable automatic copy text detection.\nDefaults to `text_entry_default` which renders `ContextmenuTextEntry`."
							},
							{
								"name": "separator_entry",
								"type": "Snippet<[ComponentProps<typeof ContextmenuSeparator>]> | null",
								"optional": true,
								"description": "Snippet for rendering separator entries.\nSet to `null` to disable automatic separator rendering.\nDefaults to `separator_entry_default` which renders `ContextmenuSeparator`."
							},
							{
								"name": "children",
								"type": "Snippet"
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"ContextmenuLinkEntry.svelte",
					"ContextmenuSeparator.svelte",
					"ContextmenuTextEntry.svelte",
					"contextmenu_helpers.ts",
					"contextmenu_state.svelte.ts"
				]
			},
			{
				"path": "ContextmenuRootForSafariCompatibility.svelte",
				"declarations": [
					{
						"name": "ContextmenuRootForSafariCompatibility",
						"kind": "component",
						"doc_comment": "Blocks the next click event. Set to true when a longpress completes to prevent\niOS's synthesized click from activating the first menu item.",
						"props": [
							{
								"name": "contextmenu",
								"type": "ContextmenuState",
								"optional": true
							},
							{
								"name": "longpress_move_tolerance",
								"type": "number",
								"optional": true,
								"description": "The number of pixels the pointer can be moved without canceling `longpress`."
							},
							{
								"name": "longpress_duration",
								"type": "number",
								"optional": true,
								"description": "The number of milliseconds after a touch starts before opening the Fuz contextmenu."
							},
							{
								"name": "bypass_with_tap_then_longpress",
								"type": "boolean",
								"optional": true,
								"description": "Whether to detect tap-then-longpress to bypass the Fuz contextmenu.\nThis allows access to the system contextmenu by tapping once then long-pressing.\nSetting to `false` disables the gesture."
							},
							{
								"name": "bypass_window",
								"type": "number",
								"optional": true,
								"description": "The number of milliseconds between taps to detect a gesture that bypasses the Fuz contextmenu.\nUsed only when `bypass_with_tap_then_longpress` is true.\nIf the duration is too long, it'll detect more false positives and interrupt normal usage,\nbut too short and some people will have difficulty performing the gesture."
							},
							{
								"name": "bypass_move_tolerance",
								"type": "number",
								"optional": true,
								"description": "The number of pixels the pointer can be moved between taps to detect a tap-then-longpress.\nUsed only when `bypass_with_tap_then_longpress` is true."
							},
							{
								"name": "open_offset_x",
								"type": "number",
								"optional": true,
								"description": "The number of pixels to offset from the pointer X position when opened.\nUseful to ensure the first menu item is immediately under the pointer."
							},
							{
								"name": "open_offset_y",
								"type": "number",
								"optional": true,
								"description": "The number of pixels to offset from the pointer Y position when opened.\nUseful to ensure the first menu item is immediately under the pointer."
							},
							{
								"name": "scoped",
								"type": "boolean",
								"optional": true,
								"description": "If `true`, wraps `children` with a div and listens to events on it instead of the window."
							},
							{
								"name": "link_entry",
								"type": "Snippet<[ComponentProps<typeof ContextmenuLinkEntry>]> | null",
								"optional": true,
								"description": "Snippet for rendering link entries.\nSet to `null` to disable automatic link detection.\nDefaults to `link_entry_default` which renders `ContextmenuLinkEntry`."
							},
							{
								"name": "text_entry",
								"type": "Snippet<[ComponentProps<typeof ContextmenuTextEntry>]> | null",
								"optional": true,
								"description": "Snippet for rendering copy text entries.\nSet to `null` to disable automatic copy text detection.\nDefaults to `text_entry_default` which renders `ContextmenuTextEntry`."
							},
							{
								"name": "separator_entry",
								"type": "Snippet<[ComponentProps<typeof ContextmenuSeparator>]> | null",
								"optional": true,
								"description": "Snippet for rendering separator entries.\nSet to `null` to disable automatic separator rendering.\nDefaults to `separator_entry_default` which renders `ContextmenuSeparator`."
							},
							{
								"name": "children",
								"type": "Snippet"
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"ContextmenuLinkEntry.svelte",
					"ContextmenuSeparator.svelte",
					"ContextmenuTextEntry.svelte",
					"contextmenu_helpers.ts",
					"contextmenu_state.svelte.ts"
				]
			},
			{
				"path": "ContextmenuSeparator.svelte",
				"declarations": [
					{
						"name": "ContextmenuSeparator",
						"kind": "component",
						"source_line": 1
					}
				],
				"dependents": [
					"ContextmenuRoot.svelte",
					"ContextmenuRootForSafariCompatibility.svelte"
				]
			},
			{
				"path": "ContextmenuSubmenu.svelte",
				"declarations": [
					{
						"name": "ContextmenuSubmenu",
						"kind": "component",
						"props": [
							{
								"name": "icon",
								"type": "Snippet",
								"optional": true
							},
							{
								"name": "menu",
								"type": "Snippet"
							},
							{
								"name": "children",
								"type": "Snippet"
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"contextmenu_state.svelte.ts"
				]
			},
			{
				"path": "ContextmenuTextEntry.svelte",
				"declarations": [
					{
						"name": "ContextmenuTextEntry",
						"kind": "component",
						"props": [
							{
								"name": "run",
								"type": "ContextmenuRun"
							},
							{
								"name": "content",
								"type": "string"
							},
							{
								"name": "icon",
								"type": "string"
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"ContextmenuEntry.svelte"
				],
				"dependents": [
					"ContextmenuRoot.svelte",
					"ContextmenuRootForSafariCompatibility.svelte"
				]
			},
			{
				"path": "CopyToClipboard.svelte",
				"declarations": [
					{
						"name": "CopyToClipboard",
						"kind": "component",
						"props": [
							{
								"name": "text",
								"type": "string | null"
							},
							{
								"name": "copied_display_duration",
								"type": "number",
								"optional": true
							},
							{
								"name": "allow_copying_empty_string",
								"type": "boolean",
								"optional": true
							},
							{
								"name": "icon_button",
								"type": "boolean",
								"optional": true,
								"description": "Defaults to `true`, ignored if `children` is provided."
							},
							{
								"name": "oncopy",
								"type": "(text: string | null, e: MouseEvent) => void",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet<[copied: boolean, failed: boolean]>",
								"optional": true
							}
						],
						"source_line": 1
					}
				]
			},
			{
				"path": "csp_of_fuzdev.ts",
				"declarations": [
					{
						"name": "csp_trusted_sources_of_fuzdev",
						"kind": "variable",
						"doc_comment": "Trusted sources owned by fuz.dev.",
						"source_line": 6,
						"type_signature": "CspSourceSpec[]"
					}
				]
			},
			{
				"path": "csp.ts",
				"declarations": [
					{
						"name": "create_csp_directives",
						"kind": "function",
						"doc_comment": "This is designed for compatibility with SvelteKit\nand maps to the `KitConfig` `directives` option.\nThe goal is to provide an ergonomic, modern, and safe API\nfor Content Security Policy (CSP) creation\nthat's simple to write and audit, and isn't error-prone.\n\nThings like validation and rendering to a string\nare out of scope and left to SvelteKit.",
						"source_line": 60,
						"type_signature": "(options?: CreateCspDirectivesOptions): CspDirectives",
						"return_type": "CspDirectives",
						"parameters": [
							{
								"name": "options",
								"type": "CreateCspDirectivesOptions",
								"default_value": "{}"
							}
						]
					},
					{
						"name": "CreateCspDirectivesOptions",
						"kind": "type",
						"source_line": 5,
						"type_signature": "CreateCspDirectivesOptions",
						"properties": [
							{
								"name": "directives",
								"kind": "variable",
								"type_signature": "{\n\t\t[K in CspDirective]?:\n\t\t\t| CspDirectiveValue<K> // Static value replacement\n\t\t\t| null // Removes the directive\n\t\t\t// Transform function returning one of the previous types\n\t\t\t| ((value: CspDirectiveValue<K>) => CspDirectiveValue<K> | null);\n\t}",
								"doc_comment": "Override or transform specific directives.\nReturning `null` or `undefined` from a transform function will remove the directive."
							},
							{
								"name": "trusted_sources",
								"kind": "variable",
								"type_signature": "Array<CspSourceSpec>",
								"doc_comment": "Sources to include based on their trust levels."
							},
							{
								"name": "value_defaults",
								"kind": "variable",
								"type_signature": "Partial<typeof csp_directive_value_defaults>",
								"doc_comment": "Override default values for specific directives,\nmerging with `value_defaults_base` (or replacing if that directive is null in the base)."
							},
							{
								"name": "value_defaults_base",
								"kind": "variable",
								"type_signature": "Partial<typeof csp_directive_value_defaults> | null",
								"doc_comment": "Base values for directive defaults.\nSet to `null` or `{}` to start with no defaults.\nDefaults to `csp_directive_value_defaults`."
							},
							{
								"name": "required_trust_defaults",
								"kind": "variable",
								"type_signature": "Partial<typeof csp_directive_required_trust_defaults>",
								"doc_comment": "Override trust requirements for specific directives,\nmerging with `required_trust_defaults_base` (or replacing if that directive is null in the base)."
							},
							{
								"name": "required_trust_defaults_base",
								"kind": "variable",
								"type_signature": "Partial<typeof csp_directive_required_trust_defaults> | null",
								"doc_comment": "Base values for directive trust requirements.\nSet to `null` or `{}` to start with no trust requirements.\nDefaults to `csp_directive_required_trust_defaults`."
							}
						]
					},
					{
						"name": "CspDirective",
						"kind": "type",
						"source_line": 175,
						"type_signature": "keyof CspDirectives"
					},
					{
						"name": "parse_csp_directive",
						"kind": "function",
						"source_line": 177,
						"type_signature": "(directive: unknown): keyof CspDirectives | null",
						"return_type": "keyof CspDirectives | null",
						"parameters": [
							{
								"name": "directive",
								"type": "unknown"
							}
						]
					},
					{
						"name": "CspDirectiveValue",
						"kind": "type",
						"source_line": 182,
						"type_signature": "CspDirectiveValue<T>",
						"generic_params": [
							{
								"name": "T",
								"constraint": "CspDirective"
							}
						]
					},
					{
						"name": "csp_trust_levels",
						"kind": "variable",
						"source_line": 184,
						"type_signature": "readonly [\"low\", \"medium\", \"high\"]"
					},
					{
						"name": "csp_trust_level_value",
						"kind": "variable",
						"doc_comment": "Numeric values for CSP trust levels. See `csp_trust_levels`.\nLower is less trusted.\nIncludes `undefined` in the type for safety.",
						"source_line": 191,
						"type_signature": "Record<\"low\" | \"medium\" | \"high\", number | undefined>"
					},
					{
						"name": "CspTrustLevel",
						"kind": "type",
						"doc_comment": "Trust levels for CSP sources.\n\nWith the base defaults, trust levels roughly correspond to:\n\n- `low` – Passive resources only (no script execution, no styling or UI control).\n\t\tExamples: `img-src`, `font-src`.\n- `medium` – Content that may affect layout, styling, or embed external browsing contexts,\n   but cannot directly run code in the page's JS execution environment or\n\t\tperform other high-risk actions. Examples: `style-src`, `frame-src`, `frame-ancestors`.\n- `high` – Sources that can execute code in the page's context or open powerful network\n   channels. Examples: `script-src`, `connect-src`, `child-src`.\n- `null` – No trust. This is used for directives that don't support sources.",
						"source_line": 212,
						"type_signature": "\"low\" | \"medium\" | \"high\""
					},
					{
						"name": "parse_csp_trust_level",
						"kind": "function",
						"doc_comment": "Validates and extracts a CSP trust level from an unknown value.",
						"source_line": 217,
						"type_signature": "(trust: unknown): \"low\" | \"medium\" | \"high\" | null",
						"return_type": "\"low\" | \"medium\" | \"high\" | null",
						"parameters": [
							{
								"name": "trust",
								"type": "unknown"
							}
						]
					},
					{
						"name": "CspSourceSpec",
						"kind": "type",
						"source_line": 220,
						"type_signature": "CspSourceSpec",
						"properties": [
							{
								"name": "source",
								"kind": "variable",
								"type_signature": "CspSource"
							},
							{
								"name": "trust",
								"kind": "variable",
								"type_signature": "CspTrustLevel"
							},
							{
								"name": "directives",
								"kind": "variable",
								"type_signature": "Array<CspDirective>"
							}
						]
					},
					{
						"name": "CspDirectiveSpec",
						"kind": "type",
						"source_line": 226,
						"type_signature": "CspDirectiveSpec",
						"properties": [
							{
								"name": "name",
								"kind": "variable",
								"type_signature": "CspDirective"
							},
							{
								"name": "fallback",
								"kind": "variable",
								"type_signature": "Array<CspDirective> | null"
							},
							{
								"name": "fallback_of",
								"kind": "variable",
								"type_signature": "Array<CspDirective> | null"
							}
						]
					},
					{
						"name": "is_csp_trusted",
						"kind": "function",
						"doc_comment": "Determines if a granted trust level is sufficient to satisfy a required trust level.\n\nTrust levels have the following hierarchy:\n- 'high' sources can be used in high, medium, and low trust directives (highest privilege)\n- 'medium' sources can be used in medium and low trust directives\n- 'low' sources can only be used in low trust directives (lowest privilege)",
						"source_line": 240,
						"type_signature": "(required_trust: \"low\" | \"medium\" | \"high\" | null | undefined, granted_trust: \"low\" | \"medium\" | \"high\" | null | undefined): boolean",
						"return_type": "boolean",
						"parameters": [
							{
								"name": "required_trust",
								"type": "\"low\" | \"medium\" | \"high\" | null | undefined"
							},
							{
								"name": "granted_trust",
								"type": "\"low\" | \"medium\" | \"high\" | null | undefined"
							}
						]
					},
					{
						"name": "COLOR_SCHEME_SCRIPT_HASH",
						"kind": "variable",
						"source_line": 263,
						"type_signature": "\"sha256-QOxqn7EUzb3ydF9SALJoJGWSvywW9R0AfTDSenB83Z8=\""
					},
					{
						"name": "csp_directive_value_defaults",
						"kind": "variable",
						"doc_comment": "The base CSP directive defaults.\nPrioritizes safety but loosens around media and styles, relying on defense-in-depth.\nCustomizable via `CreateCspDirectivesOptions`.",
						"source_line": 270,
						"type_signature": "Record<keyof CspDirectives, boolean | (CspSource | CspActionSource)[] | CspSources | CspFrameSource[] | string[] | \"script\"[] | (\"allow-downloads-without-user-activation\" | ... 11 more ... | \"allow-top-navigation-by-user-activation\")[] | null>"
					},
					{
						"name": "csp_directive_required_trust_defaults",
						"kind": "variable",
						"doc_comment": "Sources that meet this trust requirement are included for it by default.\nIf null, no trusted sources are added to the directive automatically.\nDirectives that don't support sources or default to `['none']` are null.\n\nFeedback is welcome, please see the issues - https://github.com/fuzdev/fuz_ui/issues",
						"source_line": 307,
						"type_signature": "Record<keyof CspDirectives, \"low\" | \"medium\" | \"high\" | null>"
					},
					{
						"name": "csp_directive_specs",
						"kind": "variable",
						"doc_comment": "Static data descriptors for the CSP directives.\nFuz excludes deprecated directives, so those are intentionally omitted,\nbut any newer missing directives are bugs.\n\nCould be co-located but is currently here to keep that module smaller.",
						"see_also": [
							"{@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy}"
						],
						"source_line": 343,
						"type_signature": "CspDirectiveSpec[]"
					},
					{
						"name": "csp_directive_spec_by_name",
						"kind": "variable",
						"source_line": 481,
						"type_signature": "Map<keyof CspDirectives, CspDirectiveSpec>"
					},
					{
						"name": "CspActionSource",
						"kind": "type",
						"source_line": 513,
						"type_signature": "CspActionSource"
					},
					{
						"name": "CspBaseSource",
						"kind": "type",
						"source_line": 514,
						"type_signature": "CspBaseSource"
					},
					{
						"name": "CspCryptoSource",
						"kind": "type",
						"source_line": 521,
						"type_signature": "`nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`"
					},
					{
						"name": "CspFrameSource",
						"kind": "type",
						"source_line": 522,
						"type_signature": "CspFrameSource"
					},
					{
						"name": "CspHostNameScheme",
						"kind": "type",
						"source_line": 523,
						"type_signature": "CspHostNameScheme"
					},
					{
						"name": "CspHostSource",
						"kind": "type",
						"source_line": 524,
						"type_signature": "`${string}.${string}` | \"localhost\" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | \"localhost:*\" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}`..."
					},
					{
						"name": "CspHostProtocolSchemes",
						"kind": "type",
						"source_line": 525,
						"type_signature": "CspHostProtocolSchemes"
					},
					{
						"name": "CspPortScheme",
						"kind": "type",
						"source_line": 526,
						"type_signature": "CspPortScheme"
					},
					{
						"name": "CspSchemeSource",
						"kind": "type",
						"source_line": 527,
						"type_signature": "CspSchemeSource"
					},
					{
						"name": "CspSource",
						"kind": "type",
						"source_line": 534,
						"type_signature": "CspSource"
					},
					{
						"name": "CspSources",
						"kind": "type",
						"source_line": 535,
						"type_signature": "CspSources"
					},
					{
						"name": "CspDirectives",
						"kind": "type",
						"source_line": 537,
						"type_signature": "CspDirectives",
						"properties": [
							{
								"name": "sandbox",
								"kind": "variable",
								"type_signature": "Array<\n\t\t| 'allow-downloads-without-user-activation'\n\t\t| 'allow-forms'\n\t\t| 'allow-modals'\n\t\t| 'allow-orientation-lock'\n\t\t| 'allow-pointer-lock'\n\t\t| 'allow-popups'\n\t\t| 'allow-popups-to-escape-sandbox'\n\t\t| 'allow-presentation'\n\t\t| 'allow-same-origin'\n\t\t| 'allow-scripts'\n\t\t| 'allow-storage-access-by-user-activation'\n\t\t| 'allow-top-navigation'\n\t\t| 'allow-top-navigation-by-user-activation'\n\t>"
							}
						]
					}
				]
			},
			{
				"path": "declaration_contextmenu.ts",
				"declarations": [
					{
						"name": "create_declaration_contextmenu",
						"kind": "function",
						"source_line": 6,
						"type_signature": "(declaration: Declaration): ContextmenuParams[]",
						"return_type": "ContextmenuParams[]",
						"parameters": [
							{
								"name": "declaration",
								"type": "Declaration"
							}
						]
					}
				],
				"dependents": [
					"DeclarationLink.svelte"
				]
			},
			{
				"path": "declaration.svelte.ts",
				"declarations": [
					{
						"name": "Declaration",
						"kind": "class",
						"doc_comment": "Rich runtime representation of an exported declaration.",
						"source_line": 15,
						"members": [
							{
								"name": "module",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"type_signature": "Module"
							},
							{
								"name": "declaration_json",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"type_signature": "DeclarationJson"
							},
							{
								"name": "library",
								"kind": "variable"
							},
							{
								"name": "module_path",
								"kind": "variable",
								"doc_comment": "Module path where this declaration is defined."
							},
							{
								"name": "name",
								"kind": "variable"
							},
							{
								"name": "kind",
								"kind": "variable"
							},
							{
								"name": "url_github",
								"kind": "variable",
								"doc_comment": "GitHub source URL with line number."
							},
							{
								"name": "url_api",
								"kind": "variable",
								"doc_comment": "API documentation URL."
							},
							{
								"name": "import_statement",
								"kind": "variable",
								"doc_comment": "Generated TypeScript import statement."
							},
							{
								"name": "url_api_full",
								"kind": "variable",
								"doc_comment": "Public documentation link (if homepage_url is available)."
							},
							{
								"name": "display_name",
								"kind": "variable",
								"doc_comment": "Display name with generic parameters."
							},
							{
								"name": "type_signature",
								"kind": "variable"
							},
							{
								"name": "doc_comment",
								"kind": "variable"
							},
							{
								"name": "deprecated_message",
								"kind": "variable"
							},
							{
								"name": "parameters",
								"kind": "variable"
							},
							{
								"name": "props",
								"kind": "variable"
							},
							{
								"name": "return_type",
								"kind": "variable"
							},
							{
								"name": "return_description",
								"kind": "variable"
							},
							{
								"name": "generic_params",
								"kind": "variable"
							},
							{
								"name": "extends",
								"kind": "variable"
							},
							{
								"name": "implements",
								"kind": "variable"
							},
							{
								"name": "throws",
								"kind": "variable"
							},
							{
								"name": "since",
								"kind": "variable"
							},
							{
								"name": "examples",
								"kind": "variable"
							},
							{
								"name": "see_also",
								"kind": "variable"
							},
							{
								"name": "members",
								"kind": "variable",
								"type_signature": "Array<DeclarationJson> | undefined"
							},
							{
								"name": "properties",
								"kind": "variable",
								"type_signature": "Array<DeclarationJson> | undefined"
							},
							{
								"name": "has_examples",
								"kind": "variable"
							},
							{
								"name": "is_deprecated",
								"kind": "variable"
							},
							{
								"name": "has_documentation",
								"kind": "variable"
							},
							{
								"name": "has_parameters",
								"kind": "variable"
							},
							{
								"name": "has_props",
								"kind": "variable"
							},
							{
								"name": "has_generics",
								"kind": "variable"
							},
							{
								"name": "constructor",
								"kind": "constructor",
								"type_signature": "(module: Module, declaration_json: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; doc_comment?: string | undefined; ... 19 more ...; alias_of?: { ...; } | undefined; }): Declaration",
								"parameters": [
									{
										"name": "module",
										"type": "Module"
									},
									{
										"name": "declaration_json",
										"type": "{ [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; doc_comment?: string | undefined; type_signature?: string | undefined; ... 18 more ...; alias_of?: { ...; } | undefined; }"
									}
								]
							}
						]
					}
				],
				"dependencies": [
					"package_helpers.ts"
				],
				"dependents": [
					"library.svelte.ts",
					"module.svelte.ts"
				]
			},
			{
				"path": "DeclarationDetail.svelte",
				"declarations": [
					{
						"name": "DeclarationDetail",
						"kind": "component",
						"props": [
							{
								"name": "declaration",
								"type": "Declaration"
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"Mdz.svelte",
					"ModuleLink.svelte",
					"TypeLink.svelte",
					"tsdoc_mdz.ts"
				],
				"dependents": [
					"ApiDeclarationList.svelte"
				]
			},
			{
				"path": "DeclarationLink.svelte",
				"declarations": [
					{
						"name": "DeclarationLink",
						"kind": "component",
						"props": [
							{
								"name": "name",
								"type": "string"
							},
							{
								"name": "hash",
								"type": "string",
								"optional": true,
								"description": "URL fragment to append, with or without the `#`."
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"contextmenu_state.svelte.ts",
					"declaration_contextmenu.ts",
					"library.svelte.ts"
				],
				"dependents": [
					"DocsLink.svelte",
					"DocsTertiaryNav.svelte",
					"LibraryDetail.svelte",
					"TypeLink.svelte"
				]
			},
			{
				"path": "Details.svelte",
				"declarations": [
					{
						"name": "Details",
						"kind": "component",
						"doc_comment": "Like `details` but renders children lazily by default.",
						"props": [
							{
								"name": "open",
								"type": "boolean",
								"optional": true,
								"bindable": true
							},
							{
								"name": "eager",
								"type": "boolean",
								"optional": true,
								"description": "Children are lazily rendered by default,\nenabling transitions and improving performance, sometimes significantly.\nPass `true` to render children eagerly to gain\n`ctrl+f` functionality while trading away the benefits.\nConsider a `<details>` element instead of making this component eager."
							},
							{
								"name": "summary",
								"type": "string | Snippet"
							},
							{
								"name": "summary_attrs",
								"type": "SvelteHTMLElements['summary']",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet"
							}
						],
						"source_line": 1
					}
				],
				"module_comment": "Like `details` but renders children lazily by default."
			},
			{
				"path": "Dialog.svelte",
				"declarations": [
					{
						"name": "Dialog",
						"kind": "component",
						"props": [
							{
								"name": "container",
								"type": "HTMLElement",
								"optional": true
							},
							{
								"name": "layout",
								"type": "DialogLayout",
								"optional": true,
								"description": ""
							},
							{
								"name": "index",
								"type": "number",
								"optional": true,
								"description": "index 0 is under 1 is under 2 etc -- the topmost dialog is the last in the array"
							},
							{
								"name": "active",
								"type": "boolean",
								"optional": true,
								"description": ""
							},
							{
								"name": "content_selector",
								"type": "string | null",
								"optional": true,
								"description": "If provided, prevents clicks that would close the dialog\nfrom bubbling past any elements matching this selector."
							},
							{
								"name": "onclose",
								"type": "() => void",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet<[close: (e?: Event) => void]>"
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"Teleport.svelte"
				],
				"dependents": [
					"Dialogs.svelte",
					"Docs.svelte"
				]
			},
			{
				"path": "dialog.ts",
				"declarations": [
					{
						"name": "to_dialog_params",
						"kind": "function",
						"doc_comment": "This helper function is needed to construct `DialogParams` with type safety.\nIt uses TypeScript's inferred generics for functions,\nwhich do not work for plain objects as of v5.0.4.\n* `ContextmenuParams` uses a similar strategy.",
						"source_line": 11,
						"type_signature": "<T extends Component<any>>(Component: T, props: ComponentProps<T>, dialog_props?: Partial<Record<string, any>> | undefined): DialogParams<T>",
						"return_type": "DialogParams<T>",
						"parameters": [
							{
								"name": "Component",
								"type": "T"
							},
							{
								"name": "props",
								"type": "ComponentProps<T>"
							},
							{
								"name": "dialog_props",
								"type": "Partial<Record<string, any>> | undefined",
								"optional": true
							}
						]
					},
					{
						"name": "DialogParams",
						"kind": "type",
						"doc_comment": "This pattern is based on:\nhttps://github.com/ivanhofer/sveltekit-typescript-showcase/blob/main/src/01-props/09-svelte-component/Component.svelte\nThe main limitation is that the generic cannot be inferred automatically,\nso we use `to_dialog_params` to construct instances in most cases.\nDefinining `DialogParams` with no concrete `T` lacks typechecking for `props`.",
						"source_line": 28,
						"type_signature": "DialogParams<T>",
						"generic_params": [
							{
								"name": "T",
								"constraint": "Component<any>",
								"default_type": "Component<any>"
							}
						],
						"properties": [
							{
								"name": "Component",
								"kind": "variable",
								"type_signature": "T"
							},
							{
								"name": "props",
								"kind": "variable",
								"type_signature": "ComponentProps<T>"
							},
							{
								"name": "dialog_props",
								"kind": "variable",
								"type_signature": "Partial<ComponentProps<typeof Dialog>> | undefined"
							}
						]
					},
					{
						"name": "DialogLayout",
						"kind": "type",
						"source_line": 34,
						"type_signature": "DialogLayout"
					},
					{
						"name": "dialog_layouts",
						"kind": "variable",
						"source_line": 35,
						"type_signature": "DialogLayout[]"
					}
				]
			},
			{
				"path": "Dialogs.svelte",
				"declarations": [
					{
						"name": "Dialogs",
						"kind": "component",
						"props": [
							{
								"name": "dialogs",
								"type": "Array<DialogParams>"
							},
							{
								"name": "onclose",
								"type": "() => void",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet<[dialog: DialogParams]>",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"Dialog.svelte"
				]
			},
			{
				"path": "dimensions.svelte.ts",
				"declarations": [
					{
						"name": "Dimensions",
						"kind": "class",
						"source_line": 1,
						"members": [
							{
								"name": "width",
								"kind": "variable",
								"type_signature": "number"
							},
							{
								"name": "height",
								"kind": "variable",
								"type_signature": "number"
							}
						]
					}
				],
				"dependents": [
					"contextmenu_state.svelte.ts"
				]
			},
			{
				"path": "docs_helpers.svelte.ts",
				"declarations": [
					{
						"name": "docs_slugify",
						"kind": "function",
						"doc_comment": "Convert a string to a URL-safe fragment identifier, preserving case.\nUnlike `slugify` from `@fuzdev/fuz_util/path.js` which lowercases,\nthis keeps the original casing so API declarations like `AsyncStatus`\nand `async_status` produce distinct fragment IDs.\nUsed by the `Tome` documentation system for heading and section anchors.",
						"source_line": 16,
						"type_signature": "(str: string): string",
						"return_type": "string",
						"return_description": "a URL-safe fragment identifier with case preserved",
						"parameters": [
							{
								"name": "str",
								"type": "string",
								"description": "the string to convert to a fragment"
							}
						]
					},
					{
						"name": "DOCS_PATH_DEFAULT",
						"kind": "variable",
						"source_line": 30,
						"type_signature": "\"/docs\""
					},
					{
						"name": "DOCS_PATH",
						"kind": "variable",
						"source_line": 31,
						"type_signature": "\"/docs\" | \"/\" | \"/about\" | \"/docs/Alert\" | \"/docs/Breadcrumb\" | \"/docs/Breadcrumb/a\" | \"/docs/Breadcrumb/a/b\" | \"/docs/Breadcrumb/a/b/c\" | \"/docs/Breadcrumb/a/b/c/d\" | \"/docs/Card\" | ... 63 more ... | `/${string}${`/docs/api/${string}` & {}}`"
					},
					{
						"name": "DOCS_API_PATH",
						"kind": "variable",
						"source_line": 32,
						"type_signature": "string"
					},
					{
						"name": "to_docs_path_info",
						"kind": "function",
						"source_line": 34,
						"type_signature": "(path_slug: string, pathname: string, root_path?: string): { path: string; path_is_selected: boolean; path_segment: string | undefined; }",
						"return_type": "{ path: string; path_is_selected: boolean; path_segment: string | undefined; }",
						"parameters": [
							{
								"name": "path_slug",
								"type": "string"
							},
							{
								"name": "pathname",
								"type": "string"
							},
							{
								"name": "root_path",
								"type": "string",
								"default_value": "DOCS_PATH_DEFAULT"
							}
						]
					},
					{
						"name": "docs_links_context",
						"kind": "variable",
						"source_line": 45,
						"type_signature": "{ get: (error_message?: string | undefined) => DocsLinks; get_maybe: () => DocsLinks | undefined; set: (value: DocsLinks) => DocsLinks; }"
					},
					{
						"name": "DocsLinkTag",
						"kind": "type",
						"source_line": 47,
						"type_signature": "DocsLinkTag"
					},
					{
						"name": "DocsLinkInfo",
						"kind": "type",
						"source_line": 49,
						"type_signature": "DocsLinkInfo",
						"properties": [
							{
								"name": "id",
								"kind": "variable",
								"type_signature": "string"
							},
							{
								"name": "text",
								"kind": "variable",
								"type_signature": "string"
							},
							{
								"name": "fragment",
								"kind": "variable",
								"type_signature": "string"
							},
							{
								"name": "tag",
								"kind": "variable",
								"type_signature": "DocsLinkTag | undefined"
							},
							{
								"name": "depth",
								"kind": "variable",
								"type_signature": "number"
							},
							{
								"name": "order",
								"kind": "variable",
								"type_signature": "number"
							},
							{
								"name": "parent_id",
								"kind": "variable",
								"type_signature": "string | undefined"
							}
						]
					},
					{
						"name": "DocsLinks",
						"kind": "class",
						"source_line": 59,
						"members": [
							{
								"name": "root_path",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"type_signature": "string"
							},
							{
								"name": "links",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"type_signature": "SvelteMap<string, DocsLinkInfo>"
							},
							{
								"name": "docs_links",
								"kind": "variable"
							},
							{
								"name": "fragments_onscreen",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"type_signature": "SvelteSet<string>"
							},
							{
								"name": "constructor",
								"kind": "constructor",
								"type_signature": "(root_path?: string): DocsLinks",
								"parameters": [
									{
										"name": "root_path",
										"type": "string",
										"default_value": "DOCS_PATH_DEFAULT"
									}
								]
							},
							{
								"name": "add",
								"kind": "function",
								"type_signature": "(fragment: string, text: string, pathname: string, tag?: DocsLinkTag | undefined, depth?: number, parent_id?: string | undefined, explicit_id?: string | undefined): string",
								"return_type": "string",
								"parameters": [
									{
										"name": "fragment",
										"type": "string"
									},
									{
										"name": "text",
										"type": "string"
									},
									{
										"name": "pathname",
										"type": "string"
									},
									{
										"name": "tag",
										"type": "DocsLinkTag | undefined",
										"optional": true
									},
									{
										"name": "depth",
										"type": "number",
										"default_value": "1"
									},
									{
										"name": "parent_id",
										"type": "string | undefined",
										"optional": true
									},
									{
										"name": "explicit_id",
										"type": "string | undefined",
										"optional": true
									}
								]
							},
							{
								"name": "remove",
								"kind": "function",
								"type_signature": "(id: string): void",
								"return_type": "void",
								"parameters": [
									{
										"name": "id",
										"type": "string"
									}
								]
							},
							{
								"name": "generate_section_id",
								"kind": "function",
								"doc_comment": "Generate a unique section ID for the current page render.\nThis counter is instance-scoped, ensuring SSR/client consistency.",
								"type_signature": "(): string",
								"return_type": "string",
								"parameters": []
							}
						]
					}
				],
				"dependencies": [
					"context_helpers.ts"
				],
				"dependents": [
					"Docs.svelte",
					"DocsPageLinks.svelte",
					"DocsTertiaryNav.svelte",
					"TomeContent.svelte",
					"TomeHeader.svelte",
					"TomeLink.svelte",
					"TomeSection.svelte",
					"TomeSectionHeader.svelte",
					"library_helpers.ts",
					"tome.ts"
				]
			},
			{
				"path": "Docs.svelte",
				"declarations": [
					{
						"name": "Docs",
						"kind": "component",
						"props": [
							{
								"name": "tomes",
								"type": "Array<Tome>"
							},
							{
								"name": "library",
								"type": "Library"
							},
							{
								"name": "breadcrumb_children",
								"type": "Snippet<[is_primary_nav: boolean]>",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet"
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"Breadcrumb.svelte",
					"Dialog.svelte",
					"DocsFooter.svelte",
					"DocsPrimaryNav.svelte",
					"DocsSecondaryNav.svelte",
					"DocsTertiaryNav.svelte",
					"docs_helpers.svelte.ts",
					"tome.ts"
				]
			},
			{
				"path": "DocsContent.svelte",
				"declarations": [
					{
						"name": "DocsContent",
						"kind": "component",
						"props": [
							{
								"name": "tomes",
								"type": "Array<Tome>"
							},
							{
								"name": "library",
								"type": "Library"
							},
							{
								"name": "repo_name",
								"type": "Snippet<[repo_name: string]>",
								"optional": true
							},
							{
								"name": "content",
								"type": "Snippet",
								"optional": true
							},
							{
								"name": "header",
								"type": "Snippet",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"LibrarySummary.svelte"
				]
			},
			{
				"path": "DocsFooter.svelte",
				"declarations": [
					{
						"name": "DocsFooter",
						"kind": "component",
						"props": [
							{
								"name": "library",
								"type": "Library"
							},
							{
								"name": "root_url",
								"type": "Url | null",
								"optional": true
							},
							{
								"name": "logo",
								"type": "Snippet",
								"optional": true
							},
							{
								"name": "logo_header",
								"type": "Snippet",
								"optional": true
							},
							{
								"name": "logo_footer",
								"type": "Snippet",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"Svg.svelte",
					"logos.ts"
				],
				"dependents": [
					"Docs.svelte"
				]
			},
			{
				"path": "DocsLink.svelte",
				"declarations": [
					{
						"name": "DocsLink",
						"kind": "component",
						"props": [
							{
								"name": "reference",
								"type": "string"
							},
							{
								"name": "hash",
								"type": "string",
								"optional": true,
								"description": "URL fragment to append, with or without the `#`."
							},
							{
								"name": "display_text",
								"type": "string | null",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet<[Declaration | undefined, Module | undefined]>",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"DeclarationLink.svelte",
					"ModuleLink.svelte",
					"library.svelte.ts"
				],
				"dependents": [
					"MdzNodeView.svelte"
				]
			},
			{
				"path": "DocsList.svelte",
				"declarations": [
					{
						"name": "DocsList",
						"kind": "component",
						"props": [
							{
								"name": "expand_width",
								"type": "boolean",
								"optional": true
							},
							{
								"name": "margin",
								"type": "boolean",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet"
							}
						],
						"source_line": 1
					}
				],
				"dependents": [
					"DocsMenu.svelte",
					"DocsPageLinks.svelte"
				]
			},
			{
				"path": "DocsMenu.svelte",
				"declarations": [
					{
						"name": "DocsMenu",
						"kind": "component",
						"props": [
							{
								"name": "tomes",
								"type": "Array<Tome>"
							},
							{
								"name": "children",
								"type": "Snippet<[category: string]>",
								"optional": true
							},
							{
								"name": "expand_width",
								"type": "boolean",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"DocsList.svelte",
					"DocsMenuHeader.svelte",
					"tome.ts"
				],
				"dependents": [
					"DocsSecondaryNav.svelte"
				]
			},
			{
				"path": "DocsMenuHeader.svelte",
				"declarations": [
					{
						"name": "DocsMenuHeader",
						"kind": "component",
						"props": [
							{
								"name": "children",
								"type": "Snippet"
							}
						],
						"source_line": 1
					}
				],
				"dependents": [
					"DocsMenu.svelte"
				]
			},
			{
				"path": "DocsPageLinks.svelte",
				"declarations": [
					{
						"name": "DocsPageLinks",
						"kind": "component",
						"props": [
							{
								"name": "sidebar",
								"type": "boolean",
								"optional": true
							},
							{
								"name": "expand_width",
								"type": "boolean",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"DocsList.svelte",
					"docs_helpers.svelte.ts"
				],
				"dependents": [
					"DocsTertiaryNav.svelte"
				]
			},
			{
				"path": "DocsPrimaryNav.svelte",
				"declarations": [
					{
						"name": "DocsPrimaryNav",
						"kind": "component",
						"props": [
							{
								"name": "library",
								"type": "Library"
							},
							{
								"name": "breadcrumb_children",
								"type": "Snippet<[is_primary_nav: boolean]>",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"Breadcrumb.svelte"
				],
				"dependents": [
					"Docs.svelte"
				]
			},
			{
				"path": "DocsSearch.svelte",
				"declarations": [
					{
						"name": "DocsSearch",
						"kind": "component",
						"props": [
							{
								"name": "placeholder",
								"type": "string",
								"optional": true
							},
							{
								"name": "module_count",
								"type": "number",
								"optional": true,
								"description": "Total number of modules."
							},
							{
								"name": "declaration_count",
								"type": "number",
								"optional": true,
								"description": "Total number of declarations."
							},
							{
								"name": "filtered_module_count",
								"type": "number",
								"optional": true,
								"description": "Number of modules after filtering."
							},
							{
								"name": "filtered_declaration_count",
								"type": "number",
								"optional": true,
								"description": "Number of declarations after filtering."
							},
							{
								"name": "search_query",
								"type": "string",
								"bindable": true
							}
						],
						"source_line": 1
					}
				],
				"dependents": [
					"ApiIndex.svelte",
					"ApiModule.svelte"
				]
			},
			{
				"path": "DocsSecondaryNav.svelte",
				"declarations": [
					{
						"name": "DocsSecondaryNav",
						"kind": "component",
						"props": [
							{
								"name": "tomes",
								"type": "Array<Tome>"
							},
							{
								"name": "sidebar",
								"type": "boolean",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"DocsMenu.svelte",
					"tome.ts"
				],
				"dependents": [
					"Docs.svelte"
				]
			},
			{
				"path": "DocsTertiaryNav.svelte",
				"declarations": [
					{
						"name": "DocsTertiaryNav",
						"kind": "component",
						"props": [
							{
								"name": "tomes",
								"type": "Array<Tome>"
							},
							{
								"name": "tomes_by_name",
								"type": "Map<string, Tome>"
							},
							{
								"name": "sidebar",
								"type": "boolean",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"DeclarationLink.svelte",
					"DocsPageLinks.svelte",
					"ModuleLink.svelte",
					"TomeLink.svelte",
					"docs_helpers.svelte.ts",
					"library.svelte.ts",
					"tome.ts"
				],
				"dependents": [
					"Docs.svelte"
				]
			},
			{
				"path": "EcosystemLinks.svelte",
				"declarations": [
					{
						"name": "EcosystemLinks",
						"kind": "component",
						"props": [
							{
								"name": "selected",
								"type": "'fuz.dev'",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependents": [
					"EcosystemLinksPanel.svelte"
				]
			},
			{
				"path": "EcosystemLinksPanel.svelte",
				"declarations": [
					{
						"name": "EcosystemLinksPanel",
						"kind": "component",
						"props": [
							{
								"name": "children",
								"type": "Snippet",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"EcosystemLinks.svelte",
					"ProjectLinks.svelte"
				]
			},
			{
				"path": "GithubLink.svelte",
				"declarations": [
					{
						"name": "GithubLink",
						"kind": "component",
						"props": [
							{
								"name": "path",
								"type": "string",
								"optional": true,
								"description": "GitHub path - can be a full URL or a relative path like `owner/repo` or `owner/repo/blob/main/file.ts`"
							},
							{
								"name": "hash",
								"type": "string",
								"optional": true,
								"description": "URL fragment to append, with or without the `#`."
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"Svg.svelte",
					"logos.ts"
				]
			},
			{
				"path": "Glyph.svelte",
				"declarations": [
					{
						"name": "Glyph",
						"kind": "component",
						"props": [
							{
								"name": "glyph",
								"type": "string"
							},
							{
								"name": "size",
								"type": "string | undefined",
								"optional": true
							}
						],
						"source_line": 1
					}
				]
			},
			{
				"path": "Hashlink.svelte",
				"declarations": [
					{
						"name": "Hashlink",
						"kind": "component",
						"props": [
							{
								"name": "fragment",
								"type": "string"
							}
						],
						"source_line": 1
					}
				],
				"dependents": [
					"TomeHeader.svelte",
					"TomeSectionHeader.svelte"
				]
			},
			{
				"path": "helpers.ts",
				"declarations": [
					{
						"name": "render_value_to_string",
						"kind": "function",
						"source_line": 1,
						"type_signature": "(value: unknown): string",
						"return_type": "string",
						"parameters": [
							{
								"name": "value",
								"type": "unknown"
							}
						]
					}
				]
			},
			{
				"path": "HueInput.svelte",
				"declarations": [
					{
						"name": "HueInput",
						"kind": "component",
						"props": [
							{
								"name": "value",
								"type": "Hue",
								"optional": true,
								"bindable": true
							},
							{
								"name": "children",
								"type": "Snippet",
								"optional": true
							}
						],
						"source_line": 1
					}
				]
			},
			{
				"path": "ImgOrSvg.svelte",
				"declarations": [
					{
						"name": "ImgOrSvg",
						"kind": "component",
						"props": [
							{
								"name": "src",
								"type": "string"
							},
							{
								"name": "label",
								"type": "string",
								"optional": true
							},
							{
								"name": "size",
								"type": "string",
								"optional": true,
								"description": "Sets both the `width` and `height` of the svg. Overridden by the `width` and `height` props."
							},
							{
								"name": "width",
								"type": "string",
								"optional": true,
								"description": "Sets the `width` of the svg. Overrides `size`."
							},
							{
								"name": "height",
								"type": "string",
								"optional": true,
								"description": "Sets the `height` of the svg. Overrides `size`."
							},
							{
								"name": "svg_attrs",
								"type": "SvelteHTMLElements['svg']",
								"optional": true
							},
							{
								"name": "img_attrs",
								"type": "SvelteHTMLElements['img']",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependents": [
					"LibraryDetail.svelte",
					"LibrarySummary.svelte"
				]
			},
			{
				"path": "intersect.svelte.ts",
				"declarations": [
					{
						"name": "IntersectParams",
						"kind": "type",
						"source_line": 4,
						"type_signature": "IntersectParams",
						"properties": [
							{
								"name": "onintersect",
								"kind": "variable",
								"type_signature": "OnIntersect",
								"doc_comment": "Called when the element enters or leaves the viewport until disconnected."
							},
							{
								"name": "ondisconnect",
								"kind": "variable",
								"type_signature": "OnDisconnect",
								"doc_comment": "Called when the attachment's observer is disconnected,\neither by the user calling disconnect or the attachment being destroyed."
							},
							{
								"name": "count",
								"kind": "variable",
								"type_signature": "number",
								"doc_comment": "A value of `1` disconnects after `el` enters and leaves the viewport one time,\nsimilar to 'once' for an event.\n`0` disables and `undefined` or a negative number like `-1` never disconnects."
							},
							{
								"name": "options",
								"kind": "variable",
								"type_signature": "IntersectionObserverInit",
								"doc_comment": "Same as the `options` param to\n[`IntersectionObserver`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver#options)"
							}
						]
					},
					{
						"name": "IntersectParamsOrCallback",
						"kind": "type",
						"source_line": 27,
						"type_signature": "IntersectParamsOrCallback"
					},
					{
						"name": "intersect",
						"kind": "function",
						"doc_comment": "Creates an attachment that observes element viewport intersection.\nUses the lazy function pattern to optimize reactivity:\ncallbacks can update without recreating the observer, preserving state.",
						"source_line": 35,
						"type_signature": "(get_params: () => IntersectParamsOrCallback | null | undefined): Attachment<HTMLElement | SVGElement>",
						"return_type": "Attachment<HTMLElement | SVGElement>",
						"parameters": [
							{
								"name": "get_params",
								"type": "() => IntersectParamsOrCallback | null | undefined",
								"description": "function that returns callback, params object, or nullish to disable"
							}
						]
					},
					{
						"name": "OnIntersect",
						"kind": "type",
						"source_line": 134,
						"type_signature": "OnIntersect"
					},
					{
						"name": "IntersectState",
						"kind": "type",
						"source_line": 136,
						"type_signature": "IntersectState",
						"properties": [
							{
								"name": "intersecting",
								"kind": "variable",
								"type_signature": "boolean"
							},
							{
								"name": "intersections",
								"kind": "variable",
								"type_signature": "number"
							},
							{
								"name": "el",
								"kind": "variable",
								"type_signature": "HTMLElement | SVGElement"
							},
							{
								"name": "observer",
								"kind": "variable",
								"type_signature": "IntersectionObserver"
							},
							{
								"name": "disconnect",
								"kind": "variable",
								"type_signature": "() => void"
							}
						]
					},
					{
						"name": "OnDisconnect",
						"kind": "type",
						"source_line": 145,
						"type_signature": "OnDisconnect"
					},
					{
						"name": "DisconnectState",
						"kind": "type",
						"source_line": 147,
						"type_signature": "DisconnectState",
						"properties": [
							{
								"name": "intersecting",
								"kind": "variable",
								"type_signature": "boolean"
							},
							{
								"name": "intersections",
								"kind": "variable",
								"type_signature": "number"
							},
							{
								"name": "el",
								"kind": "variable",
								"type_signature": "HTMLElement | SVGElement"
							},
							{
								"name": "observer",
								"kind": "variable",
								"type_signature": "IntersectionObserver"
							}
						]
					}
				],
				"dependents": [
					"TomeContent.svelte",
					"TomeSection.svelte"
				]
			},
			{
				"path": "library_analysis.ts",
				"declarations": [
					{
						"name": "DeclarationAnalysis",
						"kind": "type",
						"doc_comment": "Result of analyzing a single declaration.\nUsed by both TypeScript and Svelte analyzers for uniform handling.",
						"source_line": 63,
						"type_signature": "DeclarationAnalysis",
						"properties": [
							{
								"name": "declaration",
								"kind": "variable",
								"type_signature": "DeclarationJson",
								"doc_comment": "The analyzed declaration metadata."
							},
							{
								"name": "nodocs",
								"kind": "variable",
								"type_signature": "boolean",
								"doc_comment": "Whether the declaration is marked `@nodocs` (should be excluded from documentation)."
							}
						]
					},
					{
						"name": "ReExportInfo",
						"kind": "type",
						"doc_comment": "Information about a same-name re-export.\nUsed for post-processing to build `also_exported_from` arrays.",
						"source_line": 74,
						"type_signature": "ReExportInfo",
						"properties": [
							{
								"name": "name",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Name of the re-exported declaration."
							},
							{
								"name": "original_module",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Module path (relative to src/lib) where the declaration is originally declared."
							}
						]
					},
					{
						"name": "ModuleAnalysis",
						"kind": "type",
						"doc_comment": "Result of analyzing a module (TypeScript or Svelte).\nBoth analyzers return this same structure for uniform handling.",
						"source_line": 85,
						"type_signature": "ModuleAnalysis",
						"properties": [
							{
								"name": "path",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Module path relative to source root."
							},
							{
								"name": "module_comment",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Module-level documentation comment."
							},
							{
								"name": "declarations",
								"kind": "variable",
								"type_signature": "Array<DeclarationAnalysis>",
								"doc_comment": "All declarations with nodocs flags - consumer filters based on policy."
							},
							{
								"name": "dependencies",
								"kind": "variable",
								"type_signature": "Array<string>",
								"doc_comment": "Dependencies (other source modules this module imports). Empty if none."
							},
							{
								"name": "dependents",
								"kind": "variable",
								"type_signature": "Array<string>",
								"doc_comment": "Dependents (other source modules that import this module). Empty if none."
							},
							{
								"name": "star_exports",
								"kind": "variable",
								"type_signature": "Array<string>",
								"doc_comment": "Star exports (`export * from './module'`). Empty for Svelte components."
							},
							{
								"name": "re_exports",
								"kind": "variable",
								"type_signature": "Array<ReExportInfo>",
								"doc_comment": "Re-exports discovered during analysis. Empty for Svelte components."
							}
						]
					},
					{
						"name": "library_analyze_module",
						"kind": "function",
						"doc_comment": "Analyze a source file and extract module metadata.\n\nUnified entry point that dispatches to the appropriate analyzer based on file type:\n- TypeScript/JS files → `ts_analyze_module`\n- Svelte components → `svelte_analyze_module`\n\nReturns raw analysis data including `nodocs` flags on declarations.\nConsumer is responsible for filtering based on their policy.\n\nThis function can be called incrementally - consumers may cache results and\nonly re-analyze changed files. The TypeScript program should include all files\nfor accurate type resolution, but only changed files need re-analysis.",
						"source_line": 123,
						"type_signature": "(source_file: SourceFileInfo, program: Program, options: ModuleSourceOptions, ctx: AnalysisContext, log?: Logger | undefined): ModuleAnalysis | undefined",
						"return_type": "ModuleAnalysis | undefined",
						"return_description": "module metadata and re-exports, or undefined if source file not found in program",
						"parameters": [
							{
								"name": "source_file",
								"type": "SourceFileInfo",
								"description": "the source file info with content and optional dependency data"
							},
							{
								"name": "program",
								"type": "Program",
								"description": "TypeScript program (used for type checking and source file lookup)"
							},
							{
								"name": "options",
								"type": "ModuleSourceOptions",
								"description": "module source options for path extraction"
							},
							{
								"name": "ctx",
								"type": "AnalysisContext",
								"description": "analysis context for collecting diagnostics"
							},
							{
								"name": "log",
								"type": "Logger | undefined",
								"optional": true,
								"description": "optional logger for warnings"
							}
						]
					}
				],
				"module_comment": "Library source analysis - unified entry point and shared types.\n\nProvides a single function for analyzing TypeScript and Svelte source files,\ndispatching to the appropriate domain-specific analyzer.\n\nThis module also exports shared types used by both analyzers:\n- `DeclarationAnalysis` - A declaration with its nodocs flag\n- `ReExportInfo` - Information about a same-name re-export\n- `ModuleAnalysis` - Result of analyzing a module (unified structure)\n\n@example\n```ts\nimport {library_analyze_module} from '@fuzdev/fuz_ui/library_analysis.js';\nimport {ts_create_program} from '@fuzdev/fuz_ui/ts_helpers.js';\nimport {module_create_source_options} from '@fuzdev/fuz_ui/module_helpers.js';\nimport {AnalysisContext} from '@fuzdev/fuz_ui/analysis_context.js';\n\nconst {program} = ts_create_program({root: './my-project'});\nconst ctx = new AnalysisContext();\nconst options = module_create_source_options('/my-project');\n\nconst result = library_analyze_module(\n  {id: '/my-project/src/lib/file.ts', content: '...'},\n  program,\n  options,\n  ctx,\n);\n\nif (result) {\n  // Filter out @nodocs declarations\n  const declarations = result.declarations\n    .filter(d => !d.nodocs)\n    .map(d => d.declaration);\n  console.log('Declarations:', declarations);\n}\n```\n\n@see `ts_helpers.ts` for TypeScript-specific analysis\n@see `svelte_helpers.ts` for Svelte component analysis\n@see `module_helpers.ts` for path utilities and `SourceFileInfo`",
				"dependencies": [
					"module_helpers.ts",
					"svelte_helpers.ts",
					"ts_helpers.ts"
				],
				"dependents": [
					"library_generate.ts"
				]
			},
			{
				"path": "library_gen.ts",
				"declarations": [
					{
						"name": "LibraryGenOptions",
						"kind": "type",
						"doc_comment": "Options for Gro library generation.",
						"source_line": 33,
						"type_signature": "LibraryGenOptions",
						"properties": [
							{
								"name": "source",
								"kind": "variable",
								"type_signature": "ModuleSourceOptions | Partial<ModuleSourcePartial>",
								"doc_comment": "Module source options for filtering and path extraction.\n\nCan provide full `ModuleSourceOptions` or partial options that will be\nmerged with defaults. The `project_root` is automatically set to\n`process.cwd()` if not provided."
							},
							{
								"name": "on_duplicates",
								"kind": "variable",
								"type_signature": "OnDuplicatesCallback",
								"doc_comment": "Callback invoked when duplicate declaration names are found.\n\nConsumers decide how to handle duplicates: throw, warn, or ignore.\nUse `library_throw_on_duplicates` for strict flat namespace enforcement."
							}
						]
					},
					{
						"name": "source_file_from_disknode",
						"kind": "function",
						"doc_comment": "Convert Gro's `Disknode` to the build-tool agnostic `SourceFileInfo` interface.\n\nUse this when you want to analyze files using Gro's filer directly.",
						"throws": [
							{
								"type": "Error",
								"description": "if disknode has no content (should be loaded by Gro filer)"
							}
						],
						"source_line": 73,
						"type_signature": "(disknode: Disknode): SourceFileInfo",
						"return_type": "SourceFileInfo",
						"parameters": [
							{
								"name": "disknode",
								"type": "Disknode"
							}
						]
					},
					{
						"name": "library_collect_source_files_from_disknodes",
						"kind": "function",
						"doc_comment": "Collect source files from Gro disknodes, filtering BEFORE conversion to `SourceFileInfo`.\n\nThis avoids errors from files outside source directories (like test fixtures that may\nhave malformed paths or missing content). The filtering uses `module_is_source` which\nchecks `source_paths` to only include files in configured source directories.",
						"source_line": 98,
						"type_signature": "(disknodes: Iterable<Disknode>, options: ModuleSourceOptions, log?: { info: (...args: unknown[]) => void; warn: (...args: unknown[]) => void; } | undefined): SourceFileInfo[]",
						"return_type": "SourceFileInfo[]",
						"parameters": [
							{
								"name": "disknodes",
								"type": "Iterable<Disknode>",
								"description": "iterator of Gro disknodes from filer"
							},
							{
								"name": "options",
								"type": "ModuleSourceOptions",
								"description": "module source options for filtering"
							},
							{
								"name": "log",
								"type": "{ info: (...args: unknown[]) => void; warn: (...args: unknown[]) => void; } | undefined",
								"optional": true,
								"description": "optional logger for status messages"
							}
						]
					},
					{
						"name": "library_gen",
						"kind": "function",
						"doc_comment": "Creates a `Gen` object for generating library metadata with full TypeScript analysis.\n\nThis is the Gro-specific entry point. It handles:\n- Reading files from Gro's filer\n- Loading `package.json` via Gro utilities\n- Returning output in Gro's `Gen` format\n\nFor build-tool agnostic usage, use `library_generate` directly.\n\nUsage in a `.gen.ts` file:\n\n```ts\nimport {library_gen} from '@fuzdev/fuz_ui/library_gen.js';\n\nexport const gen = library_gen();\n```",
						"source_line": 153,
						"type_signature": "(options?: LibraryGenOptions | undefined): Gen",
						"return_type": "Gen",
						"parameters": [
							{
								"name": "options",
								"type": "LibraryGenOptions | undefined",
								"optional": true,
								"description": "optional generation options"
							}
						]
					}
				],
				"module_comment": "Gro-specific library metadata generation.\n\nThis module provides Gro integration for library generation. It wraps the generic\n`library_generate` function with Gro's `Gen` interface and provides adapters for\nconverting Gro's `Disknode` to the build-tool agnostic `SourceFileInfo`.\n\nFor build-tool agnostic usage, see `library_generate.ts`.\n\n@see `library_generate.ts` for the generic generation entry point\n@see `library_pipeline.ts` for pipeline helpers\n@see `library_output.ts` for output file generation",
				"dependencies": [
					"library_generate.ts",
					"module_helpers.ts"
				]
			},
			{
				"path": "library_generate.ts",
				"declarations": [
					{
						"name": "OnDuplicatesCallback",
						"kind": "type",
						"doc_comment": "Callback for handling duplicate declaration names.",
						"source_line": 49,
						"type_signature": "OnDuplicatesCallback"
					},
					{
						"name": "library_throw_on_duplicates",
						"kind": "function",
						"doc_comment": "Strict duplicate handler that throws on any duplicate declaration names.\n\nUse this callback with `library_generate({ on_duplicates: library_throw_on_duplicates })`\nto enforce a flat namespace where all declaration names must be unique.",
						"throws": [
							{
								"type": "Error",
								"description": "if any duplicate declaration names are found"
							}
						],
						"source_line": 62,
						"type_signature": "(duplicates: Map<string, DuplicateInfo[]>, log: { error: (...args: unknown[]) => void; }): void",
						"return_type": "void",
						"parameters": [
							{
								"name": "duplicates",
								"type": "Map<string, DuplicateInfo[]>"
							},
							{
								"name": "log",
								"type": "{ error: (...args: unknown[]) => void; }"
							}
						]
					},
					{
						"name": "LibraryGenerateInput",
						"kind": "type",
						"doc_comment": "Input for library metadata generation.",
						"source_line": 82,
						"type_signature": "LibraryGenerateInput",
						"properties": [
							{
								"name": "source_files",
								"kind": "variable",
								"type_signature": "Array<SourceFileInfo>",
								"doc_comment": "Source files to analyze (must have content loaded)."
							},
							{
								"name": "package_json",
								"kind": "variable",
								"type_signature": "PackageJson",
								"doc_comment": "Package metadata (name, version)."
							},
							{
								"name": "source_options",
								"kind": "variable",
								"type_signature": "ModuleSourceOptions",
								"doc_comment": "Module source options for path extraction."
							},
							{
								"name": "program",
								"kind": "variable",
								"type_signature": "ts.Program",
								"doc_comment": "Optional TypeScript program. If not provided, one will be created.\nPass an existing program to reuse across multiple calls."
							},
							{
								"name": "on_duplicates",
								"kind": "variable",
								"type_signature": "OnDuplicatesCallback",
								"doc_comment": "Optional callback for handling duplicate declaration names."
							},
							{
								"name": "log",
								"kind": "variable",
								"type_signature": "Logger",
								"doc_comment": "Optional logger for status and diagnostic messages."
							}
						]
					},
					{
						"name": "LibraryGenerateResult",
						"kind": "type",
						"doc_comment": "Result of library metadata generation.",
						"source_line": 101,
						"type_signature": "LibraryGenerateResult",
						"properties": [
							{
								"name": "source_json",
								"kind": "variable",
								"type_signature": "SourceJson",
								"doc_comment": "The generated source metadata."
							},
							{
								"name": "json_content",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "JSON file content string."
							},
							{
								"name": "ts_content",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "TypeScript wrapper file content string."
							}
						]
					},
					{
						"name": "library_generate",
						"kind": "function",
						"doc_comment": "Generate library metadata from source files.\n\nThis is the main entry point for library generation. It analyzes source files,\nextracts metadata, and produces both structured data and file contents.",
						"examples": [
							"```ts\nconst result = library_generate({\n  source_files,\n  package_json: {name: '@my/lib', version: '1.0.0'},\n  source_options: module_create_source_options(process.cwd()),\n});\n\nawait writeFile('library.json', result.json_content);\nawait writeFile('library.ts', result.ts_content);\n```"
						],
						"source_line": 128,
						"type_signature": "(input: LibraryGenerateInput): LibraryGenerateResult",
						"return_type": "LibraryGenerateResult",
						"parameters": [
							{
								"name": "input",
								"type": "LibraryGenerateInput"
							}
						]
					}
				],
				"module_comment": "Generic library metadata generation.\n\nThis module provides build-tool agnostic library generation. It takes source files\nand package metadata, analyzes them, and produces structured metadata with:\n- JSDoc/TSDoc comments with full tag support\n- Full type signatures\n- Source code locations\n- Parameter information with descriptions and defaults\n- Return value documentation\n- Usage examples\n- Dependency graphs\n- Svelte component props\n\nFor Gro integration, see `library_gen.ts` which wraps this with Gro's `Gen` interface.\n\n@see `@fuzdev/fuz_util/source_json.js` for type definitions\n@see `library_analysis.ts` for the unified analysis entry point\n@see `library_pipeline.ts` for pipeline helpers\n@see `library_output.ts` for JSON/TS file generation",
				"dependencies": [
					"analysis_context.ts",
					"library_analysis.ts",
					"library_output.ts",
					"library_pipeline.ts",
					"ts_helpers.ts"
				],
				"dependents": [
					"library_gen.ts"
				]
			},
			{
				"path": "library_helpers.ts",
				"declarations": [
					{
						"name": "url_api_declaration",
						"kind": "function",
						"doc_comment": "Build project-relative API documentation URL with hash anchor.",
						"source_line": 23,
						"type_signature": "(declaration_name: string): string",
						"return_type": "string",
						"return_description": "URL path like '/docs/api#declaration_name'",
						"parameters": [
							{
								"name": "declaration_name",
								"type": "string",
								"description": "name of the declaration to link to"
							}
						]
					},
					{
						"name": "url_api_declaration_full",
						"kind": "function",
						"doc_comment": "Build full API documentation URL with domain and hash anchor.",
						"source_line": 33,
						"type_signature": "(homepage: string, declaration_name: string): string",
						"return_type": "string",
						"return_description": "full URL like 'https://example.com/docs/api#declaration_name'",
						"parameters": [
							{
								"name": "homepage",
								"type": "string",
								"description": "package homepage URL"
							},
							{
								"name": "declaration_name",
								"type": "string",
								"description": "name of the declaration to link to"
							}
						]
					},
					{
						"name": "url_api_module",
						"kind": "function",
						"doc_comment": "Build project-relative module documentation URL.",
						"source_line": 42,
						"type_signature": "(module_path: string): string",
						"return_type": "string",
						"return_description": "URL path like '/docs/api/helpers.ts'",
						"parameters": [
							{
								"name": "module_path",
								"type": "string",
								"description": "module path (e.g., 'helpers.ts')"
							}
						]
					},
					{
						"name": "url_package_logo",
						"kind": "function",
						"doc_comment": "Build package logo URL with favicon.png fallback.",
						"source_line": 51,
						"type_signature": "(homepage_url: string | null, logo_path?: string | undefined): string | null",
						"return_type": "string | null",
						"return_description": "full URL to the logo, or null if no homepage",
						"parameters": [
							{
								"name": "homepage_url",
								"type": "string | null",
								"description": "package homepage URL, or null"
							},
							{
								"name": "logo_path",
								"type": "string | undefined",
								"optional": true,
								"description": "optional custom logo path (defaults to 'favicon.png')"
							}
						]
					},
					{
						"name": "url_to_root_relative",
						"kind": "function",
						"doc_comment": "Convert a full URL to root-relative format by removing the origin.\n\nUses SvelteKit's page state for the current origin by default.",
						"examples": [
							"```ts\n// Assuming page.url.origin is 'https://example.com'\nurl_to_root_relative('https://example.com/docs/api')\n// => '/docs/api'\n```"
						],
						"source_line": 76,
						"type_signature": "(url: string, origin?: string): string",
						"return_type": "string",
						"return_description": "root-relative URL starting with '/'",
						"parameters": [
							{
								"name": "url",
								"type": "string",
								"description": "full URL to convert"
							},
							{
								"name": "origin",
								"type": "string",
								"description": "origin to strip (defaults to current page origin)",
								"default_value": "page.url.origin"
							}
						]
					}
				],
				"module_comment": "Library documentation URL helpers.\n\nRuntime UI helpers for building URLs in the library documentation system.\nThese depend on fuz_ui's documentation paths and SvelteKit's runtime state.\n\nFor generic package/repository URL helpers, see `package_helpers.ts`.",
				"dependencies": [
					"docs_helpers.svelte.ts"
				],
				"dependents": [
					"contextmenu_state.svelte.ts"
				]
			},
			{
				"path": "library_output.ts",
				"declarations": [
					{
						"name": "LibraryOutputResult",
						"kind": "type",
						"doc_comment": "Result of generating library output files.\nContains both the JSON data and the TypeScript wrapper file.",
						"source_line": 21,
						"type_signature": "LibraryOutputResult",
						"properties": [
							{
								"name": "json_content",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "JSON content for `library.json`."
							},
							{
								"name": "ts_content",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "TypeScript wrapper content for `library.ts`."
							}
						]
					},
					{
						"name": "library_generate_output",
						"kind": "function",
						"doc_comment": "Generate the `library.json` and `library.ts` file contents.\nParses at generation time so runtime only needs the pre-computed result.\n\nReturns JSON + .ts wrapper because:\n- JSON is natively importable by Node.js and Vite without TypeScript loaders\n- Works in CI environments that don't have TS compilation\n- The .ts wrapper validates with zod and exports with proper types\n  (JSON imports get widened types like `string` instead of literal unions)",
						"source_line": 38,
						"type_signature": "(package_json: { [x: string]: unknown; name: string; version: string; private?: boolean | undefined; description?: string | undefined; tagline?: string | undefined; glyph?: string | undefined; logo?: string | undefined; ... 23 more ...; exports?: string | ... 2 more ... | undefined; }, source_json: { ...; }): LibraryOutputResult",
						"return_type": "LibraryOutputResult",
						"parameters": [
							{
								"name": "package_json",
								"type": "{ [x: string]: unknown; name: string; version: string; private?: boolean | undefined; description?: string | undefined; tagline?: string | undefined; glyph?: string | undefined; logo?: string | undefined; ... 23 more ...; exports?: string | ... 2 more ... | undefined; }"
							},
							{
								"name": "source_json",
								"type": "{ [x: string]: unknown; name: string; version: string; modules?: { [x: string]: unknown; path: string; declarations?: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; ... 20 more ...; alias_of?: { ...; } | undefined; }[] | undefine..."
							}
						]
					}
				],
				"module_comment": "Library output generation.\n\nGenerates the `library.json` and `library.ts` files from analyzed metadata.\n\n@see `library_generate.ts` for the main generation entry point\n@see `library_pipeline.ts` for pipeline orchestration functions\n@see `library_gen.ts` for Gro-specific integration",
				"dependents": [
					"library_generate.ts"
				]
			},
			{
				"path": "library_pipeline.ts",
				"declarations": [
					{
						"name": "DuplicateInfo",
						"kind": "type",
						"doc_comment": "A duplicate declaration with its full metadata and module path.",
						"source_line": 37,
						"type_signature": "DuplicateInfo",
						"properties": [
							{
								"name": "declaration",
								"kind": "variable",
								"type_signature": "DeclarationJson",
								"doc_comment": "The full declaration metadata."
							},
							{
								"name": "module",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Module path where this declaration is defined."
							}
						]
					},
					{
						"name": "library_find_duplicates",
						"kind": "function",
						"doc_comment": "Find duplicate declaration names across modules.\n\nReturns a Map of declaration names to their full metadata (only includes duplicates).\nCallers can decide how to handle duplicates (throw, warn, ignore).",
						"examples": [
							"```ts\nconst duplicates = library_find_duplicates(source_json);\nif (duplicates.size > 0) {\n  for (const [name, occurrences] of duplicates) {\n    console.error(`\"${name}\" found in:`);\n    for (const {declaration, module} of occurrences) {\n      console.error(`  - ${module}:${declaration.source_line} (${declaration.kind})`);\n    }\n  }\n  throw new Error(`Found ${duplicates.size} duplicate declaration names`);\n}\n```"
						],
						"source_line": 64,
						"type_signature": "(source_json: { [x: string]: unknown; name: string; version: string; modules?: { [x: string]: unknown; path: string; declarations?: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; ... 20 more ...; alias_of?: { ...; } | undefined; }[] | undefined; module_comment?: string | undefined; dependencies?: string[] | undefined; dependents?: string[] | undefined; star_exports?: string[] | undefined; }[] | undefined; }): Map<...>",
						"return_type": "Map<string, DuplicateInfo[]>",
						"parameters": [
							{
								"name": "source_json",
								"type": "{ [x: string]: unknown; name: string; version: string; modules?: { [x: string]: unknown; path: string; declarations?: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; ... 20 more ...; alias_of?: { ...; } | undefined; }[] | undefine..."
							}
						]
					},
					{
						"name": "library_sort_modules",
						"kind": "function",
						"doc_comment": "Sort modules alphabetically by path for deterministic output and cleaner diffs.",
						"source_line": 97,
						"type_signature": "(modules: { [x: string]: unknown; path: string; declarations?: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; doc_comment?: string | undefined; ... 19 more ...; alias_of?: { ...; } | undefined; }[] | undefined; module_comment?: string | undefined; dependencies?: string[] | undefined; dependents?: string[] | undefined; star_exports?: string[] | undefined; }[]): { ...; }[]",
						"return_type": "{ [x: string]: unknown; path: string; declarations?: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; doc_comment?: string | undefined; ... 19 more ...; alias_of?: { ...; } | undefined; }[] | undefined; module_comment?: string | un...",
						"parameters": [
							{
								"name": "modules",
								"type": "{ [x: string]: unknown; path: string; declarations?: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; doc_comment?: string | undefined; ... 19 more ...; alias_of?: { ...; } | undefined; }[] | undefined; module_comment?: string | un..."
							}
						]
					},
					{
						"name": "CollectedReExport",
						"kind": "type",
						"doc_comment": "A collected re-export with its source module context.\n\nUsed during the two-phase re-export resolution:\n1. Phase 1: Collect re-exports from each module during analysis\n2. Phase 2: Group by original module and merge into `also_exported_from`",
						"source_line": 108,
						"type_signature": "CollectedReExport",
						"properties": [
							{
								"name": "re_exporting_module",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "The module that re-exports the declaration."
							},
							{
								"name": "re_export",
								"kind": "variable",
								"type_signature": "ReExportInfo",
								"doc_comment": "The re-export info (name and original module)."
							}
						]
					},
					{
						"name": "library_merge_re_exports",
						"kind": "function",
						"doc_comment": "Build `also_exported_from` arrays from collected re-export data.\n\nThis function resolves the two-phase re-export problem:\n\n**Problem**: When module A re-exports from module B, we discover this while\nanalyzing A, but need to update B's declarations. However, B may already be\nprocessed or may be processed later.\n\n**Solution**: Collect all re-exports in phase 1, then merge them in phase 2\nafter all modules are analyzed.",
						"examples": [
							"```ts\n// helpers.ts exports: foo, bar\n// index.ts does: export {foo, bar} from './helpers.js'\n//\n// After processing:\n// - helpers.ts foo declaration gets: also_exported_from: ['index.ts']\n// - helpers.ts bar declaration gets: also_exported_from: ['index.ts']\n```"
						],
						"source_line": 141,
						"type_signature": "(source_json: { [x: string]: unknown; name: string; version: string; modules?: { [x: string]: unknown; path: string; declarations?: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; ... 20 more ...; alias_of?: { ...; } | undefined; }[] | undefined; module_comment?: string | undefined; dependencies?: string[] | undefined; dependents?: string[] | undefined; star_exports?: string[] | undefined; }[] | undefined; }, collected_re_exports: CollectedReExport[]): void",
						"return_type": "void",
						"parameters": [
							{
								"name": "source_json",
								"type": "{ [x: string]: unknown; name: string; version: string; modules?: { [x: string]: unknown; path: string; declarations?: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; ... 20 more ...; alias_of?: { ...; } | undefined; }[] | undefine...",
								"description": "the source JSON with all modules (will be mutated)"
							},
							{
								"name": "collected_re_exports",
								"type": "CollectedReExport[]",
								"description": "array of re-exports collected during phase 1"
							}
						]
					},
					{
						"name": "library_collect_source_files",
						"kind": "function",
						"doc_comment": "Collect and filter source files.\n\nReturns source files for TypeScript/JS files and Svelte components, excluding test files.\nReturns an empty array with a warning if no source files are found.\n\nFile types are determined by `options.get_analyzer`. By default, `.ts`, `.js`, and `.svelte`\nfiles are supported. Customize `get_analyzer` to support additional file types like `.svx`.",
						"source_line": 191,
						"type_signature": "(files: Iterable<SourceFileInfo>, options: ModuleSourceOptions, log?: Logger | undefined): SourceFileInfo[]",
						"return_type": "SourceFileInfo[]",
						"parameters": [
							{
								"name": "files",
								"type": "Iterable<SourceFileInfo>",
								"description": "iterable of source file info (from Gro filer, file system, or other source)"
							},
							{
								"name": "options",
								"type": "ModuleSourceOptions",
								"description": "module source options for filtering"
							},
							{
								"name": "log",
								"type": "Logger | undefined",
								"optional": true,
								"description": "optional logger for status messages"
							}
						]
					}
				],
				"module_comment": "Library metadata generation pipeline.\n\nThese functions handle collection, validation, and transformation of library metadata\nduring the generation pipeline.\n\nPipeline stages:\n1. **Collection** - `library_collect_source_files` gathers and filters source files\n2. **Analysis** - `library_analyze_module` (in `library_analysis.ts`) extracts metadata\n3. **Validation** - `library_find_duplicates` checks flat namespace constraints\n4. **Transformation** - `library_merge_re_exports` resolves re-export relationships\n5. **Output** - `library_sort_modules` prepares deterministic output\n\n@see `library_generate.ts` for the main generation entry point\n@see `library_analysis.ts` for module-level analysis\n@see `library_output.ts` for output file generation (JSON/TS wrapper)\n@see `library_gen.ts` for Gro-specific integration",
				"dependencies": [
					"module_helpers.ts"
				],
				"dependents": [
					"library_generate.ts"
				]
			},
			{
				"path": "library.svelte.ts",
				"declarations": [
					{
						"name": "parse_library_url_prefix",
						"kind": "function",
						"doc_comment": "Normalizes a URL prefix: ensures leading `/`, strips trailing `/`, returns `''` for falsy and non-string values.",
						"source_line": 11,
						"type_signature": "(value: unknown): string",
						"return_type": "string",
						"parameters": [
							{
								"name": "value",
								"type": "unknown"
							}
						]
					},
					{
						"name": "Library",
						"kind": "class",
						"doc_comment": "Rich runtime representation of a library.\n\nWraps `LibraryJson` with computed properties and provides the root\nof the API documentation hierarchy: `Library` → `Module` → `Declaration`.",
						"see_also": [
							"`module.svelte.ts` for `Module` class",
							"`declaration.svelte.ts` for `Declaration` class"
						],
						"source_line": 25,
						"members": [
							{
								"name": "library_json",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"type_signature": "LibraryJson"
							},
							{
								"name": "url_prefix",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"doc_comment": "URL path prefix for multi-package documentation sites.\nPrepended to `/docs/api/` paths in `Module.url_api` and `Declaration.url_api`.\nDefault `''` preserves single-package behavior.",
								"type_signature": "string"
							},
							{
								"name": "package_json",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "source_json",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "name",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "repo_name",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "repo_url",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "owner_name",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "homepage_url",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "logo_url",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "logo_alt",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "npm_url",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "changelog_url",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "published",
								"kind": "variable",
								"modifiers": [
									"readonly"
								]
							},
							{
								"name": "org_url",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"doc_comment": "Organization URL (e.g., 'https://github.com/ryanatkn')."
							},
							{
								"name": "modules",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"doc_comment": "All modules as rich `Module` instances."
							},
							{
								"name": "modules_sorted",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"doc_comment": "All modules sorted alphabetically by path."
							},
							{
								"name": "declarations",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"doc_comment": "All declarations across all modules as a flat array."
							},
							{
								"name": "module_by_path",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"doc_comment": "Module lookup map by path. Provides O(1) lookup."
							},
							{
								"name": "declaration_by_name",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"doc_comment": "Declaration lookup map by name. Provides O(1) lookup."
							},
							{
								"name": "constructor",
								"kind": "constructor",
								"type_signature": "(library_json: LibraryJson, url_prefix?: string): Library",
								"parameters": [
									{
										"name": "library_json",
										"type": "LibraryJson"
									},
									{
										"name": "url_prefix",
										"type": "string",
										"default_value": "''"
									}
								]
							},
							{
								"name": "lookup_directory_modules",
								"kind": "function",
								"doc_comment": "Look up modules within a directory prefix.\nReturns modules whose paths start with `path + \"/\"`, or `null` if none match.",
								"type_signature": "(path: string): Module[] | null",
								"return_type": "Module[] | null",
								"parameters": [
									{
										"name": "path",
										"type": "string"
									}
								]
							},
							{
								"name": "search_declarations",
								"kind": "function",
								"doc_comment": "Search declarations by query string with multi-term AND logic.",
								"type_signature": "(query: string): Declaration[]",
								"return_type": "Declaration[]",
								"parameters": [
									{
										"name": "query",
										"type": "string"
									}
								]
							}
						]
					},
					{
						"name": "library_context",
						"kind": "variable",
						"source_line": 119,
						"type_signature": "{ get: (error_message?: string | undefined) => Library; get_maybe: () => Library | undefined; set: (value: Library) => Library; }"
					}
				],
				"dependencies": [
					"context_helpers.ts",
					"declaration.svelte.ts",
					"module.svelte.ts"
				],
				"dependents": [
					"ApiIndex.svelte",
					"ApiModule.svelte",
					"DeclarationLink.svelte",
					"DocsLink.svelte",
					"DocsTertiaryNav.svelte",
					"ModuleLink.svelte",
					"TypeLink.svelte"
				]
			},
			{
				"path": "LibraryDetail.svelte",
				"declarations": [
					{
						"name": "LibraryDetail",
						"kind": "component",
						"props": [
							{
								"name": "library",
								"type": "Library"
							},
							{
								"name": "repo_name",
								"type": "Snippet<[repo_name: string]>",
								"optional": true
							},
							{
								"name": "description",
								"type": "Snippet<[description: string]>",
								"optional": true
							},
							{
								"name": "tagline",
								"type": "Snippet<[description: string]>",
								"optional": true
							},
							{
								"name": "npm_url",
								"type": "Snippet<[npm_url: string]>",
								"optional": true
							},
							{
								"name": "homepage_url",
								"type": "Snippet<[homepage_url: string]>",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet<[library: Library]>",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"DeclarationLink.svelte",
					"ImgOrSvg.svelte",
					"ModuleLink.svelte",
					"module_helpers.ts",
					"package_helpers.ts"
				]
			},
			{
				"path": "LibrarySummary.svelte",
				"declarations": [
					{
						"name": "LibrarySummary",
						"kind": "component",
						"props": [
							{
								"name": "library",
								"type": "Library"
							},
							{
								"name": "repo_name",
								"type": "Snippet<[repo_name: string]>",
								"optional": true
							},
							{
								"name": "logo",
								"type": "Snippet<[logo_url: string, logo_alt: string]>",
								"optional": true
							},
							{
								"name": "tagline",
								"type": "Snippet<[tagline: string, glyph?: string]>",
								"optional": true
							},
							{
								"name": "description",
								"type": "Snippet<[description: string, glyph?: string]>",
								"optional": true
							},
							{
								"name": "npm_url",
								"type": "Snippet<[npm_url: string]>",
								"optional": true
							},
							{
								"name": "homepage_url",
								"type": "Snippet<[homepage_url: string]>",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"ImgOrSvg.svelte"
				],
				"dependents": [
					"DocsContent.svelte"
				]
			},
			{
				"path": "logos.ts",
				"declarations": [
					{
						"name": "logo_gro",
						"kind": "variable",
						"source_line": 22,
						"type_signature": "SvgData"
					},
					{
						"name": "logo_fuz",
						"kind": "variable",
						"source_line": 56,
						"type_signature": "SvgData"
					},
					{
						"name": "logo_fuz_app",
						"kind": "variable",
						"source_line": 66,
						"type_signature": "SvgData"
					},
					{
						"name": "logo_fuz_css",
						"kind": "variable",
						"source_line": 72,
						"type_signature": "SvgData"
					},
					{
						"name": "logo_fuz_ui",
						"kind": "variable",
						"source_line": 79,
						"type_signature": "SvgData"
					},
					{
						"name": "logo_fuz_code",
						"kind": "variable",
						"source_line": 85,
						"type_signature": "SvgData"
					},
					{
						"name": "logo_fuz_blog",
						"kind": "variable",
						"source_line": 91,
						"type_signature": "SvgData"
					},
					{
						"name": "logo_fuz_mastodon",
						"kind": "variable",
						"source_line": 97,
						"type_signature": "SvgData"
					},
					{
						"name": "logo_fuz_gitops",
						"kind": "variable",
						"source_line": 103,
						"type_signature": "SvgData"
					},
					{
						"name": "logo_fuz_docs",
						"kind": "variable",
						"source_line": 109,
						"type_signature": "SvgData"
					},
					{
						"name": "logo_fuz_template",
						"kind": "variable",
						"source_line": 115,
						"type_signature": "SvgData"
					},
					{
						"name": "logo_fuz_util",
						"kind": "variable",
						"source_line": 125,
						"type_signature": "SvgData"
					},
					{
						"name": "logo_github",
						"kind": "variable",
						"source_line": 151,
						"type_signature": "SvgData"
					},
					{
						"name": "logo_mdn",
						"kind": "variable",
						"source_line": 164,
						"type_signature": "SvgData"
					}
				],
				"dependents": [
					"DocsFooter.svelte",
					"GithubLink.svelte",
					"MdnLink.svelte",
					"ProjectLinks.svelte",
					"Spiders.svelte"
				]
			},
			{
				"path": "MdnLink.svelte",
				"declarations": [
					{
						"name": "MdnLink",
						"kind": "component",
						"props": [
							{
								"name": "path",
								"type": "string"
							},
							{
								"name": "hash",
								"type": "string",
								"optional": true,
								"description": "URL fragment to append, with or without the `#`."
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"Svg.svelte",
					"logos.ts"
				]
			},
			{
				"path": "mdz_components.ts",
				"declarations": [
					{
						"name": "MdzComponents",
						"kind": "type",
						"doc_comment": "Component registry for custom Svelte components that can be used in mdz content.\n\nFor example, registering 'Alert' allows using `<Alert>...</Alert>` in mdz content.\n\nThe Map values are the Svelte component constructors.",
						"source_line": 12,
						"type_signature": "MdzComponents"
					},
					{
						"name": "MdzElements",
						"kind": "type",
						"doc_comment": "Element registry for HTML elements that can be used in mdz content.\n\nFor example, registering 'div' allows using `<div>...</div>` in mdz content.\n\nThe Map values are boolean placeholders for future configuration options.",
						"source_line": 21,
						"type_signature": "MdzElements"
					},
					{
						"name": "mdz_components_context",
						"kind": "variable",
						"doc_comment": "Context for providing custom mdz components.\nMust be set by the application using mdz.",
						"source_line": 27,
						"type_signature": "{ get: (error_message?: string | undefined) => MdzComponents; get_maybe: () => MdzComponents | undefined; set: (value: MdzComponents) => MdzComponents; }"
					},
					{
						"name": "mdz_elements_context",
						"kind": "variable",
						"doc_comment": "Context for providing allowed HTML elements.\nMust be set by the application using mdz.\nBy default, no HTML elements are allowed.",
						"source_line": 34,
						"type_signature": "{ get: (error_message?: string | undefined) => MdzElements; get_maybe: () => MdzElements | undefined; set: (value: MdzElements) => MdzElements; }"
					},
					{
						"name": "mdz_base_context",
						"kind": "variable",
						"doc_comment": "Context for providing a base path getter for resolving relative links in mdz content.\nSet to a getter (e.g., `() => base`) so changes to the base prop are reflected\nwithout needing an effect. When the getter returns a path like `'/docs/mdz/'`,\nrelative paths like `./grammar` resolve to `/docs/mdz/grammar` before rendering.\nWhen not set, relative paths use raw hrefs (browser resolves them).",
						"source_line": 43,
						"type_signature": "{ get: (error_message?: string | undefined) => () => string | undefined; get_maybe: () => (() => string | undefined) | undefined; set: (value: () => string | undefined) => () => string | undefined; }"
					}
				],
				"dependencies": [
					"context_helpers.ts"
				],
				"dependents": [
					"Mdz.svelte",
					"MdzNodeView.svelte"
				]
			},
			{
				"path": "mdz_helpers.ts",
				"declarations": [
					{
						"name": "BACKTICK",
						"kind": "variable",
						"source_line": 14,
						"type_signature": "96"
					},
					{
						"name": "ASTERISK",
						"kind": "variable",
						"source_line": 15,
						"type_signature": "42"
					},
					{
						"name": "UNDERSCORE",
						"kind": "variable",
						"source_line": 16,
						"type_signature": "95"
					},
					{
						"name": "TILDE",
						"kind": "variable",
						"source_line": 17,
						"type_signature": "126"
					},
					{
						"name": "NEWLINE",
						"kind": "variable",
						"source_line": 18,
						"type_signature": "10"
					},
					{
						"name": "HYPHEN",
						"kind": "variable",
						"source_line": 19,
						"type_signature": "45"
					},
					{
						"name": "HASH",
						"kind": "variable",
						"source_line": 20,
						"type_signature": "35"
					},
					{
						"name": "SPACE",
						"kind": "variable",
						"source_line": 21,
						"type_signature": "32"
					},
					{
						"name": "TAB",
						"kind": "variable",
						"source_line": 22,
						"type_signature": "9"
					},
					{
						"name": "LEFT_ANGLE",
						"kind": "variable",
						"source_line": 23,
						"type_signature": "60"
					},
					{
						"name": "RIGHT_ANGLE",
						"kind": "variable",
						"source_line": 24,
						"type_signature": "62"
					},
					{
						"name": "SLASH",
						"kind": "variable",
						"source_line": 25,
						"type_signature": "47"
					},
					{
						"name": "LEFT_BRACKET",
						"kind": "variable",
						"source_line": 26,
						"type_signature": "91"
					},
					{
						"name": "RIGHT_BRACKET",
						"kind": "variable",
						"source_line": 27,
						"type_signature": "93"
					},
					{
						"name": "LEFT_PAREN",
						"kind": "variable",
						"source_line": 28,
						"type_signature": "40"
					},
					{
						"name": "RIGHT_PAREN",
						"kind": "variable",
						"source_line": 29,
						"type_signature": "41"
					},
					{
						"name": "COLON",
						"kind": "variable",
						"source_line": 30,
						"type_signature": "58"
					},
					{
						"name": "PERIOD",
						"kind": "variable",
						"source_line": 31,
						"type_signature": "46"
					},
					{
						"name": "COMMA",
						"kind": "variable",
						"source_line": 32,
						"type_signature": "44"
					},
					{
						"name": "SEMICOLON",
						"kind": "variable",
						"source_line": 33,
						"type_signature": "59"
					},
					{
						"name": "EXCLAMATION",
						"kind": "variable",
						"source_line": 34,
						"type_signature": "33"
					},
					{
						"name": "QUESTION",
						"kind": "variable",
						"source_line": 35,
						"type_signature": "63"
					},
					{
						"name": "DOLLAR",
						"kind": "variable",
						"source_line": 37,
						"type_signature": "36"
					},
					{
						"name": "PERCENT",
						"kind": "variable",
						"source_line": 38,
						"type_signature": "37"
					},
					{
						"name": "AMPERSAND",
						"kind": "variable",
						"source_line": 39,
						"type_signature": "38"
					},
					{
						"name": "APOSTROPHE",
						"kind": "variable",
						"source_line": 40,
						"type_signature": "39"
					},
					{
						"name": "PLUS",
						"kind": "variable",
						"source_line": 41,
						"type_signature": "43"
					},
					{
						"name": "EQUALS",
						"kind": "variable",
						"source_line": 42,
						"type_signature": "61"
					},
					{
						"name": "AT",
						"kind": "variable",
						"source_line": 43,
						"type_signature": "64"
					},
					{
						"name": "A_UPPER",
						"kind": "variable",
						"source_line": 45,
						"type_signature": "65"
					},
					{
						"name": "Z_UPPER",
						"kind": "variable",
						"source_line": 46,
						"type_signature": "90"
					},
					{
						"name": "A_LOWER",
						"kind": "variable",
						"source_line": 47,
						"type_signature": "97"
					},
					{
						"name": "Z_LOWER",
						"kind": "variable",
						"source_line": 48,
						"type_signature": "122"
					},
					{
						"name": "ZERO",
						"kind": "variable",
						"source_line": 49,
						"type_signature": "48"
					},
					{
						"name": "NINE",
						"kind": "variable",
						"source_line": 50,
						"type_signature": "57"
					},
					{
						"name": "HR_HYPHEN_COUNT",
						"kind": "variable",
						"source_line": 52,
						"type_signature": "3"
					},
					{
						"name": "MIN_CODEBLOCK_BACKTICKS",
						"kind": "variable",
						"source_line": 53,
						"type_signature": "3"
					},
					{
						"name": "MAX_HEADING_LEVEL",
						"kind": "variable",
						"source_line": 54,
						"type_signature": "6"
					},
					{
						"name": "HTTPS_PREFIX_LENGTH",
						"kind": "variable",
						"source_line": 55,
						"type_signature": "8"
					},
					{
						"name": "HTTP_PREFIX_LENGTH",
						"kind": "variable",
						"source_line": 56,
						"type_signature": "7"
					},
					{
						"name": "is_letter",
						"kind": "function",
						"doc_comment": "Check if character code is a letter (A-Z, a-z).",
						"source_line": 61,
						"type_signature": "(char_code: number): boolean",
						"return_type": "boolean",
						"parameters": [
							{
								"name": "char_code",
								"type": "number"
							}
						]
					},
					{
						"name": "is_tag_name_char",
						"kind": "function",
						"doc_comment": "Check if character code is valid for tag name (letter, number, hyphen, underscore).",
						"source_line": 67,
						"type_signature": "(char_code: number): boolean",
						"return_type": "boolean",
						"parameters": [
							{
								"name": "char_code",
								"type": "number"
							}
						]
					},
					{
						"name": "is_word_char",
						"kind": "function",
						"doc_comment": "Check if character is part of a word for word boundary detection.\nUsed to prevent intraword emphasis with `_` and `~` delimiters.\n\nFormatting delimiters (`*`, `_`, `~`) are NOT word characters - they're transparent.\nOnly alphanumeric characters (A-Z, a-z, 0-9) are considered word characters.\n\nThis prevents false positives with snake_case identifiers while allowing\nadjacent formatting like `**bold**_italic_`.",
						"source_line": 83,
						"type_signature": "(char_code: number): boolean",
						"return_type": "boolean",
						"parameters": [
							{
								"name": "char_code",
								"type": "number"
							}
						]
					},
					{
						"name": "is_valid_path_char",
						"kind": "function",
						"doc_comment": "Check if character code is valid in URI path per RFC 3986.\nValidates against the `pchar` production plus path/query/fragment separators.\n\nValid characters:\n- unreserved: A-Z a-z 0-9 - . _ ~\n- sub-delims: ! $ & ' ( ) * + , ; =\n- path allowed: : @\n- separators: / ? #\n- percent-encoding: %",
						"source_line": 103,
						"type_signature": "(char_code: number): boolean",
						"return_type": "boolean",
						"parameters": [
							{
								"name": "char_code",
								"type": "number"
							}
						]
					},
					{
						"name": "trim_trailing_punctuation",
						"kind": "function",
						"doc_comment": "Trim trailing punctuation from URL/path per RFC 3986 and GFM rules.\n- Trims simple trailing: .,;:!?]\n- Balanced logic for () only (valid in path components)\n- Invalid chars like [] {} are already stopped by whitelist, but ] trimmed as fallback\n\nOptimized to avoid O(n²) string slicing - tracks end index and slices once at the end.",
						"source_line": 137,
						"type_signature": "(url: string): string",
						"return_type": "string",
						"parameters": [
							{
								"name": "url",
								"type": "string"
							}
						]
					},
					{
						"name": "is_at_absolute_path",
						"kind": "function",
						"doc_comment": "Check if position in text is the start of an absolute path (starts with `/`).\nMust be preceded by whitespace or be at the start of the string.\nRejects `//` (comments/protocol-relative) and slash followed by whitespace.",
						"source_line": 193,
						"type_signature": "(text: string, index: number): boolean",
						"return_type": "boolean",
						"parameters": [
							{
								"name": "text",
								"type": "string"
							},
							{
								"name": "index",
								"type": "number"
							}
						]
					},
					{
						"name": "is_at_relative_path",
						"kind": "function",
						"doc_comment": "Check if position in text is the start of a relative path (`./` or `../`).\nMust be preceded by whitespace or be at the start of the string.\nRejects prefix followed by whitespace, slash, or end of string.",
						"source_line": 209,
						"type_signature": "(text: string, index: number): boolean",
						"return_type": "boolean",
						"parameters": [
							{
								"name": "text",
								"type": "string"
							},
							{
								"name": "index",
								"type": "number"
							}
						]
					},
					{
						"name": "mdz_text_content",
						"kind": "function",
						"doc_comment": "Extracts plain text content from an array of mdz nodes, recursing into children.",
						"source_line": 236,
						"type_signature": "(nodes: MdzNode[]): string",
						"return_type": "string",
						"parameters": [
							{
								"name": "nodes",
								"type": "MdzNode[]"
							}
						]
					},
					{
						"name": "mdz_heading_id",
						"kind": "function",
						"doc_comment": "Generates a lowercase slug id for a heading from its child nodes.\nFollows standard markdown conventions (GitHub, etc.) where heading IDs are lowercased.\nFor case-preserving IDs (e.g. API declarations), see `docs_slugify` in `docs_helpers.svelte.ts`.",
						"source_line": 246,
						"type_signature": "(nodes: MdzNode[]): string",
						"return_type": "string",
						"parameters": [
							{
								"name": "nodes",
								"type": "MdzNode[]"
							}
						]
					},
					{
						"name": "mdz_is_url",
						"kind": "function",
						"source_line": 255,
						"type_signature": "(s: string): boolean",
						"return_type": "boolean",
						"parameters": [
							{
								"name": "s",
								"type": "string"
							}
						]
					},
					{
						"name": "resolve_relative_path",
						"kind": "function",
						"doc_comment": "Resolves a relative path (`./` or `../`) against a base path.\nThe base is treated as a directory regardless of trailing slash\n(`'/docs/mdz'` and `'/docs/mdz/'` behave identically).\nHandles embedded `.` and `..` segments within the reference\n(e.g., `'./a/../b'` → navigates up then down).\nClamps at root — excess `..` segments stop at `/` rather than escaping.",
						"source_line": 269,
						"type_signature": "(reference: string, base: string): string",
						"return_type": "string",
						"return_description": "an absolute resolved path (e.g., `'/docs/mdz/grammar'`)",
						"parameters": [
							{
								"name": "reference",
								"type": "string",
								"description": "a relative path starting with `./` or `../`"
							},
							{
								"name": "base",
								"type": "string",
								"description": "An absolute base path (e.g., `'/docs/mdz/'`). Empty string is treated as root."
							}
						]
					},
					{
						"name": "extract_single_tag",
						"kind": "function",
						"source_line": 287,
						"type_signature": "(nodes: MdzNode[]): MdzElementNode | MdzComponentNode | null",
						"return_type": "MdzElementNode | MdzComponentNode | null",
						"parameters": [
							{
								"name": "nodes",
								"type": "MdzNode[]"
							}
						]
					}
				],
				"module_comment": "Shared constants and pure helper functions for mdz parsers.\n\nUsed by both the single-pass parser (`mdz.ts`) and the two-phase\nlexer+parser (`mdz_lexer.ts` + `mdz_token_parser.ts`).",
				"dependents": [
					"MdzNodeView.svelte",
					"mdz.ts",
					"mdz_lexer.ts",
					"mdz_to_svelte.ts",
					"mdz_token_parser.ts",
					"tsdoc_mdz.ts"
				]
			},
			{
				"path": "mdz_lexer.ts",
				"declarations": [
					{
						"name": "MdzTokenBase",
						"kind": "type",
						"source_line": 49,
						"type_signature": "MdzTokenBase",
						"properties": [
							{
								"name": "start",
								"kind": "variable",
								"type_signature": "number"
							},
							{
								"name": "end",
								"kind": "variable",
								"type_signature": "number"
							}
						]
					},
					{
						"name": "MdzToken",
						"kind": "type",
						"source_line": 54,
						"type_signature": "MdzToken"
					},
					{
						"name": "MdzTokenText",
						"kind": "type",
						"source_line": 76,
						"type_signature": "MdzTokenText",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'text'"
							},
							{
								"name": "content",
								"kind": "variable",
								"type_signature": "string"
							}
						]
					},
					{
						"name": "MdzTokenCode",
						"kind": "type",
						"source_line": 81,
						"type_signature": "MdzTokenCode",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'code'"
							},
							{
								"name": "content",
								"kind": "variable",
								"type_signature": "string"
							}
						]
					},
					{
						"name": "MdzTokenCodeblock",
						"kind": "type",
						"source_line": 86,
						"type_signature": "MdzTokenCodeblock",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'codeblock'"
							},
							{
								"name": "lang",
								"kind": "variable",
								"type_signature": "string | null"
							},
							{
								"name": "content",
								"kind": "variable",
								"type_signature": "string"
							}
						]
					},
					{
						"name": "MdzTokenBoldOpen",
						"kind": "type",
						"source_line": 92,
						"type_signature": "MdzTokenBoldOpen",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'bold_open'"
							}
						]
					},
					{
						"name": "MdzTokenBoldClose",
						"kind": "type",
						"source_line": 96,
						"type_signature": "MdzTokenBoldClose",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'bold_close'"
							}
						]
					},
					{
						"name": "MdzTokenItalicOpen",
						"kind": "type",
						"source_line": 100,
						"type_signature": "MdzTokenItalicOpen",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'italic_open'"
							}
						]
					},
					{
						"name": "MdzTokenItalicClose",
						"kind": "type",
						"source_line": 104,
						"type_signature": "MdzTokenItalicClose",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'italic_close'"
							}
						]
					},
					{
						"name": "MdzTokenStrikethroughOpen",
						"kind": "type",
						"source_line": 108,
						"type_signature": "MdzTokenStrikethroughOpen",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'strikethrough_open'"
							}
						]
					},
					{
						"name": "MdzTokenStrikethroughClose",
						"kind": "type",
						"source_line": 112,
						"type_signature": "MdzTokenStrikethroughClose",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'strikethrough_close'"
							}
						]
					},
					{
						"name": "MdzTokenLinkTextOpen",
						"kind": "type",
						"source_line": 116,
						"type_signature": "MdzTokenLinkTextOpen",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'link_text_open'"
							}
						]
					},
					{
						"name": "MdzTokenLinkTextClose",
						"kind": "type",
						"source_line": 120,
						"type_signature": "MdzTokenLinkTextClose",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'link_text_close'"
							}
						]
					},
					{
						"name": "MdzTokenLinkRef",
						"kind": "type",
						"source_line": 124,
						"type_signature": "MdzTokenLinkRef",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'link_ref'"
							},
							{
								"name": "reference",
								"kind": "variable",
								"type_signature": "string"
							},
							{
								"name": "link_type",
								"kind": "variable",
								"type_signature": "'external' | 'internal'"
							}
						]
					},
					{
						"name": "MdzTokenAutolink",
						"kind": "type",
						"source_line": 130,
						"type_signature": "MdzTokenAutolink",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'autolink'"
							},
							{
								"name": "reference",
								"kind": "variable",
								"type_signature": "string"
							},
							{
								"name": "link_type",
								"kind": "variable",
								"type_signature": "'external' | 'internal'"
							}
						]
					},
					{
						"name": "MdzTokenHeadingStart",
						"kind": "type",
						"source_line": 136,
						"type_signature": "MdzTokenHeadingStart",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'heading_start'"
							},
							{
								"name": "level",
								"kind": "variable",
								"type_signature": "1 | 2 | 3 | 4 | 5 | 6"
							}
						]
					},
					{
						"name": "MdzTokenHr",
						"kind": "type",
						"source_line": 141,
						"type_signature": "MdzTokenHr",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'hr'"
							}
						]
					},
					{
						"name": "MdzTokenTagOpen",
						"kind": "type",
						"source_line": 145,
						"type_signature": "MdzTokenTagOpen",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'tag_open'"
							},
							{
								"name": "name",
								"kind": "variable",
								"type_signature": "string"
							},
							{
								"name": "is_component",
								"kind": "variable",
								"type_signature": "boolean"
							}
						]
					},
					{
						"name": "MdzTokenTagSelfClose",
						"kind": "type",
						"source_line": 151,
						"type_signature": "MdzTokenTagSelfClose",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'tag_self_close'"
							},
							{
								"name": "name",
								"kind": "variable",
								"type_signature": "string"
							},
							{
								"name": "is_component",
								"kind": "variable",
								"type_signature": "boolean"
							}
						]
					},
					{
						"name": "MdzTokenTagClose",
						"kind": "type",
						"source_line": 157,
						"type_signature": "MdzTokenTagClose",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'tag_close'"
							},
							{
								"name": "name",
								"kind": "variable",
								"type_signature": "string"
							}
						]
					},
					{
						"name": "MdzTokenHeadingEnd",
						"kind": "type",
						"source_line": 162,
						"type_signature": "MdzTokenHeadingEnd",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'heading_end'"
							}
						]
					},
					{
						"name": "MdzTokenParagraphBreak",
						"kind": "type",
						"source_line": 166,
						"type_signature": "MdzTokenParagraphBreak",
						"extends": [
							"MdzTokenBase"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'paragraph_break'"
							}
						]
					},
					{
						"name": "MdzLexer",
						"kind": "class",
						"source_line": 174,
						"members": [
							{
								"name": "constructor",
								"kind": "constructor",
								"type_signature": "(text: string): MdzLexer",
								"parameters": [
									{
										"name": "text",
										"type": "string"
									}
								]
							},
							{
								"name": "tokenize",
								"kind": "function",
								"type_signature": "(): MdzToken[]",
								"return_type": "MdzToken[]",
								"parameters": []
							}
						]
					}
				],
				"module_comment": "mdz lexer — tokenizes input into a flat `MdzToken[]` stream.\n\nPhase 1 of the two-phase lexer+parser alternative to the single-pass parser\nin `mdz.ts`. Phase 2 is in `mdz_token_parser.ts`.",
				"dependencies": [
					"mdz_helpers.ts"
				],
				"dependents": [
					"mdz_token_parser.ts"
				]
			},
			{
				"path": "mdz_to_svelte.ts",
				"declarations": [
					{
						"name": "MdzToSvelteResult",
						"kind": "type",
						"doc_comment": "Result of converting `MdzNode` arrays to Svelte markup.",
						"source_line": 21,
						"type_signature": "MdzToSvelteResult",
						"properties": [
							{
								"name": "markup",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Generated Svelte markup string."
							},
							{
								"name": "imports",
								"kind": "variable",
								"type_signature": "Map<string, {path: string; kind: 'default' | 'named'}>",
								"doc_comment": "Required imports: `Map<local_name, {path, kind}>`."
							},
							{
								"name": "has_unconfigured_tags",
								"kind": "variable",
								"type_signature": "boolean",
								"doc_comment": "Whether content references unconfigured Component or Element tags."
							}
						]
					},
					{
						"name": "mdz_to_svelte",
						"kind": "function",
						"doc_comment": "Converts an array of `MdzNode` to a Svelte markup string.\n\nEach node type produces output matching what `MdzNodeView.svelte` renders at runtime.\nCollects required imports and flags unconfigured component/element references.",
						"source_line": 47,
						"type_signature": "(nodes: MdzNode[], components: Record<string, string>, elements: ReadonlySet<string>, base?: string | undefined): MdzToSvelteResult",
						"return_type": "MdzToSvelteResult",
						"parameters": [
							{
								"name": "nodes",
								"type": "MdzNode[]",
								"description": "parsed mdz nodes to render"
							},
							{
								"name": "components",
								"type": "Record<string, string>",
								"description": "Component name to import path mapping (e.g., `{Alert: '$lib/Alert.svelte'}`)\nIf content references a component not in this map, `has_unconfigured_tags` is set."
							},
							{
								"name": "elements",
								"type": "ReadonlySet<string>",
								"description": "Allowed HTML element names (e.g., `new Set(['aside', 'details'])`)\nIf content references an element not in this set, `has_unconfigured_tags` is set."
							},
							{
								"name": "base",
								"type": "string | undefined",
								"optional": true,
								"description": "Base path for resolving relative links (e.g., `'/docs/mdz/'`)\nWhen provided, relative references (`./`, `../`) are resolved to absolute paths\nand passed through `resolve()`. Trailing slash recommended."
							}
						]
					}
				],
				"module_comment": "Converts parsed `MdzNode` arrays to Svelte markup strings.\n\nUsed by the `svelte_preprocess_mdz` preprocessor to expand static `<Mdz content=\"...\">` usages\ninto pre-rendered Svelte markup at build time. The output for each node type matches what\n`MdzNodeView.svelte` renders at runtime, so precompiled and runtime rendering are identical.",
				"dependencies": [
					"mdz_helpers.ts"
				],
				"dependents": [
					"svelte_preprocess_mdz.ts"
				]
			},
			{
				"path": "mdz_token_parser.ts",
				"declarations": [
					{
						"name": "mdz_parse_lexer",
						"kind": "function",
						"doc_comment": "Parses text to an array of `MdzNode` using a two-phase lexer+parser approach.",
						"source_line": 39,
						"type_signature": "(text: string): MdzNode[]",
						"return_type": "MdzNode[]",
						"parameters": [
							{
								"name": "text",
								"type": "string"
							}
						]
					}
				],
				"module_comment": "mdz token parser — consumes a `MdzToken[]` stream to build the `MdzNode[]` AST.\n\nPhase 2 of the two-phase lexer+parser alternative to the single-pass parser\nin `mdz.ts`. Phase 1 (lexer) is in `mdz_lexer.ts`.",
				"dependencies": [
					"mdz_helpers.ts",
					"mdz_lexer.ts"
				]
			},
			{
				"path": "Mdz.svelte",
				"declarations": [
					{
						"name": "Mdz",
						"kind": "component",
						"props": [
							{
								"name": "content",
								"type": "string"
							},
							{
								"name": "inline",
								"type": "boolean",
								"optional": true
							},
							{
								"name": "nowrap",
								"type": "boolean",
								"optional": true
							},
							{
								"name": "base",
								"type": "string",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"MdzNodeView.svelte",
					"mdz.ts",
					"mdz_components.ts"
				],
				"dependents": [
					"ApiModule.svelte",
					"DeclarationDetail.svelte"
				]
			},
			{
				"path": "mdz.ts",
				"declarations": [
					{
						"name": "mdz_parse",
						"kind": "function",
						"doc_comment": "Parses text to an array of `MdzNode`.",
						"source_line": 74,
						"type_signature": "(text: string): MdzNode[]",
						"return_type": "MdzNode[]",
						"parameters": [
							{
								"name": "text",
								"type": "string"
							}
						]
					},
					{
						"name": "MdzNode",
						"kind": "type",
						"source_line": 76,
						"type_signature": "MdzNode"
					},
					{
						"name": "MdzBaseNode",
						"kind": "type",
						"source_line": 90,
						"type_signature": "MdzBaseNode",
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "string"
							},
							{
								"name": "start",
								"kind": "variable",
								"type_signature": "number"
							},
							{
								"name": "end",
								"kind": "variable",
								"type_signature": "number"
							}
						]
					},
					{
						"name": "MdzTextNode",
						"kind": "type",
						"source_line": 96,
						"type_signature": "MdzTextNode",
						"extends": [
							"MdzBaseNode"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'Text'"
							},
							{
								"name": "content",
								"kind": "variable",
								"type_signature": "string"
							}
						]
					},
					{
						"name": "MdzCodeNode",
						"kind": "type",
						"source_line": 101,
						"type_signature": "MdzCodeNode",
						"extends": [
							"MdzBaseNode"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'Code'"
							},
							{
								"name": "content",
								"kind": "variable",
								"type_signature": "string"
							}
						]
					},
					{
						"name": "MdzCodeblockNode",
						"kind": "type",
						"source_line": 106,
						"type_signature": "MdzCodeblockNode",
						"extends": [
							"MdzBaseNode"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'Codeblock'"
							},
							{
								"name": "lang",
								"kind": "variable",
								"type_signature": "string | null"
							},
							{
								"name": "content",
								"kind": "variable",
								"type_signature": "string"
							}
						]
					},
					{
						"name": "MdzBoldNode",
						"kind": "type",
						"source_line": 112,
						"type_signature": "MdzBoldNode",
						"extends": [
							"MdzBaseNode"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'Bold'"
							},
							{
								"name": "children",
								"kind": "variable",
								"type_signature": "Array<MdzNode>"
							}
						]
					},
					{
						"name": "MdzItalicNode",
						"kind": "type",
						"source_line": 117,
						"type_signature": "MdzItalicNode",
						"extends": [
							"MdzBaseNode"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'Italic'"
							},
							{
								"name": "children",
								"kind": "variable",
								"type_signature": "Array<MdzNode>"
							}
						]
					},
					{
						"name": "MdzStrikethroughNode",
						"kind": "type",
						"source_line": 122,
						"type_signature": "MdzStrikethroughNode",
						"extends": [
							"MdzBaseNode"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'Strikethrough'"
							},
							{
								"name": "children",
								"kind": "variable",
								"type_signature": "Array<MdzNode>"
							}
						]
					},
					{
						"name": "MdzLinkNode",
						"kind": "type",
						"source_line": 127,
						"type_signature": "MdzLinkNode",
						"extends": [
							"MdzBaseNode"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'Link'"
							},
							{
								"name": "reference",
								"kind": "variable",
								"type_signature": "string"
							},
							{
								"name": "children",
								"kind": "variable",
								"type_signature": "Array<MdzNode>"
							},
							{
								"name": "link_type",
								"kind": "variable",
								"type_signature": "'external' | 'internal'"
							}
						]
					},
					{
						"name": "MdzParagraphNode",
						"kind": "type",
						"source_line": 134,
						"type_signature": "MdzParagraphNode",
						"extends": [
							"MdzBaseNode"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'Paragraph'"
							},
							{
								"name": "children",
								"kind": "variable",
								"type_signature": "Array<MdzNode>"
							}
						]
					},
					{
						"name": "MdzHrNode",
						"kind": "type",
						"source_line": 139,
						"type_signature": "MdzHrNode",
						"extends": [
							"MdzBaseNode"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'Hr'"
							}
						]
					},
					{
						"name": "MdzHeadingNode",
						"kind": "type",
						"source_line": 143,
						"type_signature": "MdzHeadingNode",
						"extends": [
							"MdzBaseNode"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'Heading'"
							},
							{
								"name": "level",
								"kind": "variable",
								"type_signature": "1 | 2 | 3 | 4 | 5 | 6"
							},
							{
								"name": "id",
								"kind": "variable",
								"type_signature": "string"
							},
							{
								"name": "children",
								"kind": "variable",
								"type_signature": "Array<MdzNode>"
							}
						]
					},
					{
						"name": "MdzElementNode",
						"kind": "type",
						"source_line": 150,
						"type_signature": "MdzElementNode",
						"extends": [
							"MdzBaseNode"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'Element'"
							},
							{
								"name": "name",
								"kind": "variable",
								"type_signature": "string"
							},
							{
								"name": "children",
								"kind": "variable",
								"type_signature": "Array<MdzNode>"
							}
						]
					},
					{
						"name": "MdzComponentNode",
						"kind": "type",
						"source_line": 156,
						"type_signature": "MdzComponentNode",
						"extends": [
							"MdzBaseNode"
						],
						"properties": [
							{
								"name": "type",
								"kind": "variable",
								"type_signature": "'Component'"
							},
							{
								"name": "name",
								"kind": "variable",
								"type_signature": "string"
							},
							{
								"name": "children",
								"kind": "variable",
								"type_signature": "Array<MdzNode>"
							}
						]
					},
					{
						"name": "MdzParser",
						"kind": "class",
						"doc_comment": "Parser for mdz format.\nSingle-pass lexer/parser with text accumulation for efficiency.\nUsed by `mdz_parse`, which should be preferred for simple usage.",
						"source_line": 167,
						"members": [
							{
								"name": "constructor",
								"kind": "constructor",
								"type_signature": "(template: string): MdzParser",
								"parameters": [
									{
										"name": "template",
										"type": "string"
									}
								]
							},
							{
								"name": "parse",
								"kind": "function",
								"doc_comment": "Main parse method. Returns flat array of nodes,\nwith paragraph nodes wrapping content between double newlines.\n\nBlock elements (headings, HR, codeblocks) are detected at every column-0\nposition — they can interrupt paragraphs without requiring blank lines.",
								"type_signature": "(): MdzNode[]",
								"return_type": "MdzNode[]",
								"parameters": []
							}
						]
					}
				],
				"module_comment": "mdz - minimal markdown dialect for Fuz documentation.\n\nParses an enhanced markdown dialect with:\n- inline formatting: `code`, **bold**, _italic_, ~strikethrough~\n- auto-detected links: external URLs (`https://...`) and internal paths (`/path`)\n- markdown links: `[text](url)` with custom display text\n- inline code in backticks (creates `Code` nodes; auto-linking to identifiers/modules\n  is handled by the rendering layer via `MdzNodeView.svelte`)\n- paragraph breaks (double newline)\n- block elements: headings, horizontal rules, code blocks\n- HTML elements and Svelte components (opt-in via context)\n\nKey constraint: preserves ALL whitespace exactly as authored,\nand is rendered with white-space pre or pre-wrap.\n\n## Design philosophy\n\n- **False negatives over false positives**: When in doubt, treat as plain text.\n  Block elements can interrupt paragraphs without blank lines; inline formatting is strict.\n- **One way to do things**: Single unambiguous syntax per feature. No alternatives.\n- **Explicit over implicit**: Clear delimiters and column-0 requirements avoid ambiguity.\n- **Simple over complete**: Prefer simple parsing rules over complex edge case handling.\n\n## Status\n\nThis is an early proof of concept with missing features and edge cases.",
				"dependencies": [
					"mdz_helpers.ts"
				],
				"dependents": [
					"Mdz.svelte",
					"svelte_preprocess_mdz.ts"
				]
			},
			{
				"path": "MdzNodeView.svelte",
				"declarations": [
					{
						"name": "MdzNodeView",
						"kind": "component",
						"props": [
							{
								"name": "node",
								"type": "MdzNode"
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"DocsLink.svelte",
					"MdzNodeView.svelte",
					"mdz_components.ts",
					"mdz_helpers.ts"
				],
				"dependents": [
					"Mdz.svelte",
					"MdzNodeView.svelte"
				]
			},
			{
				"path": "MdzPrecompiled.svelte",
				"declarations": [
					{
						"name": "MdzPrecompiled",
						"kind": "component",
						"doc_comment": "Wrapper for precompiled mdz content. Used by `svelte_preprocess_mdz`.\nNot intended for direct use.",
						"props": [
							{
								"name": "inline",
								"type": "boolean",
								"optional": true
							},
							{
								"name": "nowrap",
								"type": "boolean",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet"
							}
						],
						"source_line": 1
					}
				],
				"module_comment": "Wrapper for precompiled mdz content. Used by `svelte_preprocess_mdz`.\nNot intended for direct use."
			},
			{
				"path": "module_contextmenu.ts",
				"declarations": [
					{
						"name": "create_module_contextmenu",
						"kind": "function",
						"source_line": 6,
						"type_signature": "(module: Module): ContextmenuParams[]",
						"return_type": "ContextmenuParams[]",
						"parameters": [
							{
								"name": "module",
								"type": "Module"
							}
						]
					}
				],
				"dependents": [
					"ModuleLink.svelte"
				]
			},
			{
				"path": "module_helpers.ts",
				"declarations": [
					{
						"name": "AnalyzerType",
						"kind": "type",
						"doc_comment": "Analyzer type for source files.\n\n- `'typescript'` - TypeScript/JS files analyzed via TypeScript Compiler API\n- `'svelte'` - Svelte components analyzed via svelte2tsx + TypeScript Compiler API",
						"source_line": 18,
						"type_signature": "AnalyzerType"
					},
					{
						"name": "SourceFileInfo",
						"kind": "type",
						"doc_comment": "File information for source analysis.\n\nCan be constructed from Gro's `Disknode` or from plain file system access.\nThis abstraction enables non-Gro usage while keeping Gro support via adapter.\n\nNote: `content` is required to keep analysis functions pure (no hidden I/O).\nCallers are responsible for reading file content before analysis.",
						"source_line": 29,
						"type_signature": "SourceFileInfo",
						"properties": [
							{
								"name": "id",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Absolute path to the file."
							},
							{
								"name": "content",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "File content (required - analysis functions don't read from disk)."
							},
							{
								"name": "dependencies",
								"kind": "variable",
								"type_signature": "ReadonlyArray<string>",
								"doc_comment": "Absolute file paths of modules this file imports (optional).\nOnly include resolved local imports, not node_modules.\nOrder should be declaration order in source for deterministic output."
							},
							{
								"name": "dependents",
								"kind": "variable",
								"type_signature": "ReadonlyArray<string>",
								"doc_comment": "Absolute file paths of modules that import this file (optional).\nOnly include resolved local imports, not node_modules."
							}
						]
					},
					{
						"name": "ModuleSourceOptions",
						"kind": "type",
						"doc_comment": "Configuration for module source detection and path extraction.\n\nUses proper path semantics with `project_root` as the base for all path operations.\nPaths are matched using `startsWith` rather than substring search, which correctly\nhandles nested directories without special heuristics.",
						"examples": [
							"```ts\nconst options = module_create_source_options(process.cwd(), {\n  source_paths: ['src/lib', 'src/routes'],\n  source_root: 'src',\n});\n```"
						],
						"source_line": 62,
						"type_signature": "ModuleSourceOptions",
						"properties": [
							{
								"name": "project_root",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Absolute path to the project root directory.\n\nAll `source_paths` are relative to this. Typically `process.cwd()` when\nrunning from the project root via Gro, Vite, or other build tools."
							},
							{
								"name": "source_paths",
								"kind": "variable",
								"type_signature": "Array<string>",
								"doc_comment": "Source directory paths to include, relative to `project_root`.\n\nPaths should not have leading or trailing slashes - they are added\ninternally for correct matching."
							},
							{
								"name": "source_root",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Source root for extracting relative module paths, relative to `project_root`.\n\nWhen omitted:\n- Single `source_path`: defaults to that path\n- Multiple `source_paths`: required (no auto-derivation)"
							},
							{
								"name": "exclude_patterns",
								"kind": "variable",
								"type_signature": "Array<RegExp>",
								"doc_comment": "Patterns to exclude (matched against full path)."
							},
							{
								"name": "get_analyzer",
								"kind": "variable",
								"type_signature": "(path: string) => AnalyzerType | null",
								"doc_comment": "Determine which analyzer to use for a file path.\n\nCalled for files in source directories. Return `'typescript'`, `'svelte'`,\nor `null` to skip the file. This is the single source of truth for which\nfiles are analyzable and how to analyze them."
							}
						]
					},
					{
						"name": "module_get_analyzer_default",
						"kind": "function",
						"doc_comment": "Default analyzer resolver based on file extension.\n\n- `.svelte` → `'svelte'`\n- `.ts`, `.js` → `'typescript'`\n- Other extensions → `null` (skip)",
						"source_line": 149,
						"type_signature": "(path: string): AnalyzerType | null",
						"return_type": "AnalyzerType | null",
						"parameters": [
							{
								"name": "path",
								"type": "string"
							}
						]
					},
					{
						"name": "ModuleSourcePartial",
						"kind": "type",
						"doc_comment": "Partial source options without `project_root`.\n\nUse with `module_create_source_options` to build complete options.",
						"source_line": 160,
						"type_signature": "ModuleSourcePartial"
					},
					{
						"name": "MODULE_SOURCE_PARTIAL",
						"kind": "variable",
						"doc_comment": "Default partial options for standard SvelteKit library structure.\n\nDoes not include `project_root` - use `module_create_source_options()` to create\ncomplete options with your project root.",
						"source_line": 168,
						"type_signature": "ModuleSourcePartial"
					},
					{
						"name": "module_create_source_options",
						"kind": "function",
						"doc_comment": "Create complete source options from project root and optional overrides.",
						"examples": [
							"```ts\n// Standard SvelteKit library\nconst options = module_create_source_options(process.cwd());\n```",
							"```ts\n// Multiple source directories\nconst options = module_create_source_options(process.cwd(), {\n  source_paths: ['src/lib', 'src/routes'],\n  source_root: 'src',\n});\n```",
							"```ts\n// Custom exclusions\nconst options = module_create_source_options(process.cwd(), {\n  exclude_patterns: [/\\.test\\.ts$/, /\\.internal\\.ts$/],\n});\n```"
						],
						"source_line": 203,
						"type_signature": "(project_root: string, overrides?: Partial<ModuleSourcePartial> | undefined): ModuleSourceOptions",
						"return_type": "ModuleSourceOptions",
						"parameters": [
							{
								"name": "project_root",
								"type": "string",
								"description": "absolute path to project root (typically `process.cwd()`)"
							},
							{
								"name": "overrides",
								"type": "Partial<ModuleSourcePartial> | undefined",
								"optional": true,
								"description": "optional overrides for default options"
							}
						]
					},
					{
						"name": "module_validate_source_options",
						"kind": "function",
						"doc_comment": "Validate `ModuleSourceOptions` format and consistency.\n\nChecks:\n1. `project_root` is an absolute path (starts with `/`)\n2. `source_paths` entries don't have leading/trailing slashes\n3. `source_root` (if provided) doesn't have leading/trailing slashes\n4. Multiple `source_paths` require explicit `source_root`\n5. `source_root` is a prefix of all `source_paths`",
						"examples": [
							"```ts\n// Valid - single source path (source_root auto-derived)\nmodule_validate_source_options({\n  project_root: '/home/user/project',\n  source_paths: ['src/lib'],\n  ...\n});\n```",
							"```ts\n// Valid - multiple source paths with explicit source_root\nmodule_validate_source_options({\n  project_root: '/home/user/project',\n  source_paths: ['src/lib', 'src/routes'],\n  source_root: 'src',\n  ...\n});\n```",
							"```ts\n// Invalid - multiple source paths without source_root\nmodule_validate_source_options({\n  project_root: '/home/user/project',\n  source_paths: ['src/lib', 'src/routes'],  // throws\n  ...\n});\n```"
						],
						"throws": [
							{
								"type": "Error",
								"description": "if validation fails"
							}
						],
						"source_line": 255,
						"type_signature": "(options: ModuleSourceOptions): void",
						"return_type": "void",
						"parameters": [
							{
								"name": "options",
								"type": "ModuleSourceOptions"
							}
						]
					},
					{
						"name": "module_get_source_root",
						"kind": "function",
						"doc_comment": "Get the effective source_root from options.\n\nReturns `source_root` if provided, otherwise returns `source_paths[0]` for single-path configs.",
						"throws": [
							{
								"type": "Error",
								"description": "if `source_root` is required but not provided (multiple `source_paths`)"
							}
						],
						"source_line": 333,
						"type_signature": "(options: ModuleSourceOptions): string",
						"return_type": "string",
						"parameters": [
							{
								"name": "options",
								"type": "ModuleSourceOptions"
							}
						]
					},
					{
						"name": "module_extract_path",
						"kind": "function",
						"doc_comment": "Extract module path relative to source root from absolute source ID.\n\nUses proper path semantics: strips `project_root/source_root/` prefix.",
						"examples": [
							"```ts\nconst options = module_create_source_options('/home/user/project');\nmodule_extract_path('/home/user/project/src/lib/foo.ts', options) // => 'foo.ts'\nmodule_extract_path('/home/user/project/src/lib/nested/bar.svelte', options) // => 'nested/bar.svelte'\n```",
							"```ts\nconst options = module_create_source_options('/home/user/project', {\n  source_paths: ['src/lib', 'src/routes'],\n  source_root: 'src',\n});\nmodule_extract_path('/home/user/project/src/lib/foo.ts', options) // => 'lib/foo.ts'\nmodule_extract_path('/home/user/project/src/routes/page.svelte', options) // => 'routes/page.svelte'\n```"
						],
						"source_line": 371,
						"type_signature": "(source_id: string, options: ModuleSourceOptions): string",
						"return_type": "string",
						"parameters": [
							{
								"name": "source_id",
								"type": "string",
								"description": "absolute path to the source file"
							},
							{
								"name": "options",
								"type": "ModuleSourceOptions",
								"description": "module source options for path extraction"
							}
						]
					},
					{
						"name": "module_get_component_name",
						"kind": "function",
						"doc_comment": "Extract component name from a Svelte module path.",
						"examples": [
							"```ts\nmodule_get_component_name('Alert.svelte') // => 'Alert'\nmodule_get_component_name('components/Button.svelte') // => 'Button'\n```"
						],
						"source_line": 392,
						"type_signature": "(module_path: string): string",
						"return_type": "string",
						"parameters": [
							{
								"name": "module_path",
								"type": "string"
							}
						]
					},
					{
						"name": "module_get_key",
						"kind": "function",
						"doc_comment": "Convert module path to module key format (with ./ prefix).",
						"examples": [
							"```ts\nmodule_get_key('foo.ts') // => './foo.ts'\n```"
						],
						"source_line": 403,
						"type_signature": "(module_path: string): string",
						"return_type": "string",
						"parameters": [
							{
								"name": "module_path",
								"type": "string"
							}
						]
					},
					{
						"name": "module_is_typescript",
						"kind": "function",
						"doc_comment": "Check if a path is a TypeScript or JS file.\n\nIncludes both `.ts` and `.js` files since JS files are valid in TS projects.\nExcludes `.d.ts` declaration files - use a custom `get_analyzer` to include them.",
						"source_line": 411,
						"type_signature": "(path: string): boolean",
						"return_type": "boolean",
						"parameters": [
							{
								"name": "path",
								"type": "string"
							}
						]
					},
					{
						"name": "module_is_svelte",
						"kind": "function",
						"source_line": 414,
						"type_signature": "(path: string): boolean",
						"return_type": "boolean",
						"parameters": [
							{
								"name": "path",
								"type": "string"
							}
						]
					},
					{
						"name": "module_is_css",
						"kind": "function",
						"source_line": 416,
						"type_signature": "(path: string): boolean",
						"return_type": "boolean",
						"parameters": [
							{
								"name": "path",
								"type": "string"
							}
						]
					},
					{
						"name": "module_is_json",
						"kind": "function",
						"source_line": 418,
						"type_signature": "(path: string): boolean",
						"return_type": "boolean",
						"parameters": [
							{
								"name": "path",
								"type": "string"
							}
						]
					},
					{
						"name": "module_is_test",
						"kind": "function",
						"source_line": 420,
						"type_signature": "(path: string): boolean",
						"return_type": "boolean",
						"parameters": [
							{
								"name": "path",
								"type": "string"
							}
						]
					},
					{
						"name": "module_is_source",
						"kind": "function",
						"doc_comment": "Check if a path is an analyzable source file.\n\nCombines all filtering: exclusion patterns, source directory paths,\nand analyzer availability. This is the single check for whether a\nfile should be included in library analysis.\n\nUses proper path semantics with `startsWith` matching against\n`project_root/source_path/`. No heuristics needed - nested directories\nare correctly excluded by the prefix check.",
						"examples": [
							"```ts\nconst options = module_create_source_options('/home/user/project');\nmodule_is_source('/home/user/project/src/lib/foo.ts', options) // => true\nmodule_is_source('/home/user/project/src/lib/foo.test.ts', options) // => false (excluded)\nmodule_is_source('/home/user/project/src/fixtures/mini/src/lib/bar.ts', options) // => false (wrong prefix)\n```"
						],
						"source_line": 445,
						"type_signature": "(path: string, options: ModuleSourceOptions): boolean",
						"return_type": "boolean",
						"return_description": "true if the path is an analyzable source file",
						"parameters": [
							{
								"name": "path",
								"type": "string",
								"description": "full absolute path to check"
							},
							{
								"name": "options",
								"type": "ModuleSourceOptions",
								"description": "module source options for filtering"
							}
						]
					},
					{
						"name": "module_extract_dependencies",
						"kind": "function",
						"doc_comment": "Extract dependencies and dependents for a module from source file info.\n\nFilters to only include source modules (excludes external packages, node_modules, tests).\nReturns sorted arrays of module paths (relative to source_root) for deterministic output.",
						"source_line": 471,
						"type_signature": "(source_file: SourceFileInfo, options: ModuleSourceOptions): { dependencies: string[]; dependents: string[]; }",
						"return_type": "{ dependencies: string[]; dependents: string[]; }",
						"parameters": [
							{
								"name": "source_file",
								"type": "SourceFileInfo",
								"description": "the source file info to extract dependencies from"
							},
							{
								"name": "options",
								"type": "ModuleSourceOptions",
								"description": "module source options for filtering and path extraction"
							}
						]
					}
				],
				"module_comment": "Module path and metadata helpers.\n\nProvides utilities for working with source module paths, file types,\nand import relationships in the package generation system.\n\nAll functions are prefixed with `module_` for clarity.",
				"dependents": [
					"LibraryDetail.svelte",
					"library_analysis.ts",
					"library_gen.ts",
					"library_pipeline.ts",
					"svelte_helpers.ts",
					"ts_helpers.ts"
				]
			},
			{
				"path": "module.svelte.ts",
				"declarations": [
					{
						"name": "Module",
						"kind": "class",
						"doc_comment": "Rich runtime representation of a module with computed properties.",
						"source_line": 10,
						"members": [
							{
								"name": "library",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"type_signature": "Library"
							},
							{
								"name": "module_json",
								"kind": "variable",
								"modifiers": [
									"readonly"
								],
								"type_signature": "ModuleJson"
							},
							{
								"name": "path",
								"kind": "variable",
								"doc_comment": "Canonical module path (e.g., 'Alert.ts', 'helpers/foo.ts')."
							},
							{
								"name": "path_import",
								"kind": "variable",
								"doc_comment": "Import-style path with ./ prefix."
							},
							{
								"name": "module_comment",
								"kind": "variable"
							},
							{
								"name": "declarations",
								"kind": "variable",
								"doc_comment": "Array of `Declaration` instances. Filters out default exports."
							},
							{
								"name": "url_api",
								"kind": "variable",
								"doc_comment": "API documentation URL for this module."
							},
							{
								"name": "url_github",
								"kind": "variable",
								"doc_comment": "GitHub source URL."
							},
							{
								"name": "has_declarations",
								"kind": "variable",
								"type_signature": "boolean"
							},
							{
								"name": "has_module_comment",
								"kind": "variable",
								"type_signature": "boolean"
							},
							{
								"name": "dependencies",
								"kind": "variable",
								"doc_comment": "Modules this imports (paths relative to src/lib)."
							},
							{
								"name": "dependents",
								"kind": "variable",
								"doc_comment": "Modules that import this (paths relative to src/lib)."
							},
							{
								"name": "constructor",
								"kind": "constructor",
								"type_signature": "(library: Library, module_json: { [x: string]: unknown; path: string; declarations?: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; ... 20 more ...; alias_of?: { ...; } | undefined; }[] | undefined; module_comment?: string | undefined; dependencies?: string[] | undefined; dependents?: string[] | undefined; star_exports?: string[] | undefined; }): Module",
								"parameters": [
									{
										"name": "library",
										"type": "Library"
									},
									{
										"name": "module_json",
										"type": "{ [x: string]: unknown; path: string; declarations?: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; doc_comment?: string | undefined; ... 19 more ...; alias_of?: { ...; } | undefined; }[] | undefined; module_comment?: string | un..."
									}
								]
							},
							{
								"name": "get_declaration_by_name",
								"kind": "function",
								"doc_comment": "Look up a declaration by name within this module.",
								"type_signature": "(name: string): Declaration | undefined",
								"return_type": "Declaration | undefined",
								"parameters": [
									{
										"name": "name",
										"type": "string"
									}
								]
							}
						]
					}
				],
				"dependencies": [
					"declaration.svelte.ts",
					"package_helpers.ts"
				],
				"dependents": [
					"library.svelte.ts"
				]
			},
			{
				"path": "ModuleLink.svelte",
				"declarations": [
					{
						"name": "ModuleLink",
						"kind": "component",
						"props": [
							{
								"name": "module_path",
								"type": "string"
							},
							{
								"name": "hash",
								"type": "string",
								"optional": true,
								"description": "URL fragment to append, with or without the `#`."
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"contextmenu_state.svelte.ts",
					"library.svelte.ts",
					"module_contextmenu.ts"
				],
				"dependents": [
					"ApiModule.svelte",
					"ApiModulesList.svelte",
					"DeclarationDetail.svelte",
					"DocsLink.svelte",
					"DocsTertiaryNav.svelte",
					"LibraryDetail.svelte"
				]
			},
			{
				"path": "package_helpers.ts",
				"declarations": [
					{
						"name": "url_github_file",
						"kind": "function",
						"doc_comment": "Build GitHub file URL for a repository.",
						"examples": [
							"```ts\nurl_github_file('https://github.com/foo/bar', 'src/index.ts')\n// => 'https://github.com/foo/bar/blob/main/src/index.ts'\n```",
							"```ts\nurl_github_file('https://github.com/foo/bar', './src/index.ts', 42)\n// => 'https://github.com/foo/bar/blob/main/src/index.ts#L42'\n```"
						],
						"source_line": 47,
						"type_signature": "(repo_url: string, file_path: string, line?: number | undefined): string",
						"return_type": "string",
						"return_description": "full GitHub URL to the file on the main branch",
						"parameters": [
							{
								"name": "repo_url",
								"type": "string",
								"description": "repository URL (e.g., 'https://github.com/owner/repo')"
							},
							{
								"name": "file_path",
								"type": "string",
								"description": "path to the file (leading './' is stripped)"
							},
							{
								"name": "line",
								"type": "number | undefined",
								"optional": true,
								"description": "optional line number for deep linking"
							}
						]
					},
					{
						"name": "url_github_org",
						"kind": "function",
						"doc_comment": "Build GitHub organization URL from repo URL and repo name.",
						"examples": [
							"```ts\nurl_github_org('https://github.com/fuzdev/fuz_ui', 'fuz_ui')\n// => 'https://github.com/fuzdev'\n```"
						],
						"source_line": 66,
						"type_signature": "(repo_url: string, repo_name: string): string | null",
						"return_type": "string | null",
						"return_description": "organization URL, or null if repo_url doesn't end with repo_name",
						"parameters": [
							{
								"name": "repo_url",
								"type": "string",
								"description": "repository URL (e.g., 'https://github.com/owner/repo')"
							},
							{
								"name": "repo_name",
								"type": "string",
								"description": "repository name to strip from the URL"
							}
						]
					},
					{
						"name": "repo_url_github_owner",
						"kind": "function",
						"doc_comment": "Extract GitHub owner/org name from repository URL.",
						"examples": [
							"```ts\nrepo_url_github_owner('https://github.com/fuzdev/fuz_ui')\n// => 'fuzdev'\n```",
							"```ts\nrepo_url_github_owner('https://gitlab.com/foo/bar')\n// => null (not a GitHub URL)\n```"
						],
						"source_line": 88,
						"type_signature": "(repo_url: string): string | null",
						"return_type": "string | null",
						"return_description": "owner name, or null if not a valid GitHub URL",
						"parameters": [
							{
								"name": "repo_url",
								"type": "string",
								"description": "repository URL (e.g., 'https://github.com/owner/repo')"
							}
						]
					},
					{
						"name": "url_npm_package",
						"kind": "function",
						"doc_comment": "Build npm package URL.",
						"examples": [
							"```ts\nurl_npm_package('@fuzdev/fuz_ui')\n// => 'https://www.npmjs.com/package/@fuzdev/fuz_ui'\n```"
						],
						"source_line": 107,
						"type_signature": "(package_name: string): string",
						"return_type": "string",
						"return_description": "full npm package page URL",
						"parameters": [
							{
								"name": "package_name",
								"type": "string",
								"description": "package name (can be scoped like '@org/package')"
							}
						]
					},
					{
						"name": "package_is_published",
						"kind": "function",
						"doc_comment": "Check if a package is published to npm.\n\nA package is considered published if:\n- It's not marked as private\n- It has exports defined\n- Its version is not the initial '0.0.1'",
						"source_line": 121,
						"type_signature": "(package_json: { [x: string]: unknown; name: string; version: string; private?: boolean | undefined; description?: string | undefined; tagline?: string | undefined; glyph?: string | undefined; logo?: string | undefined; ... 23 more ...; exports?: string | ... 2 more ... | undefined; }): boolean",
						"return_type": "boolean",
						"return_description": "`true` if the package appears to be published",
						"parameters": [
							{
								"name": "package_json",
								"type": "{ [x: string]: unknown; name: string; version: string; private?: boolean | undefined; description?: string | undefined; tagline?: string | undefined; glyph?: string | undefined; logo?: string | undefined; ... 23 more ...; exports?: string | ... 2 more ... | undefined; }",
								"description": "the `package.json` object to check"
							}
						]
					},
					{
						"name": "repo_name_parse",
						"kind": "function",
						"doc_comment": "Extract repository name without scope from package name.",
						"examples": [
							"```ts\nrepo_name_parse('@fuzdev/fuz_ui')\n// => 'fuz_ui'\n```",
							"```ts\nrepo_name_parse('lodash')\n// => 'lodash'\n```"
						],
						"throws": [
							{
								"type": "Error",
								"description": "if scoped package name is malformed"
							}
						],
						"source_line": 144,
						"type_signature": "(name: string): string",
						"return_type": "string",
						"return_description": "repository name without scope",
						"parameters": [
							{
								"name": "name",
								"type": "string",
								"description": "package name (can be scoped like '@org/package')"
							}
						]
					},
					{
						"name": "repo_url_parse",
						"kind": "function",
						"doc_comment": "Parse repository URL from `package.json` format.\n\nHandles both string format and object format with `url` property.\nStrips common prefixes ('git+') and suffixes ('.git', '/').",
						"examples": [
							"```ts\nrepo_url_parse('https://github.com/foo/bar')\n// => 'https://github.com/foo/bar'\n```",
							"```ts\nrepo_url_parse({url: 'git+https://github.com/foo/bar.git'})\n// => 'https://github.com/foo/bar'\n```",
							"```ts\nrepo_url_parse(undefined)\n// => null\n```"
						],
						"source_line": 182,
						"type_signature": "(repository: string | { [x: string]: unknown; type: string; url: string; directory?: string | undefined; } | undefined): string | null",
						"return_type": "string | null",
						"return_description": "clean repository URL, or null if not provided",
						"parameters": [
							{
								"name": "repository",
								"type": "string | { [x: string]: unknown; type: string; url: string; directory?: string | undefined; } | undefined",
								"description": "the repository field from `package.json`"
							}
						]
					},
					{
						"name": "url_well_known",
						"kind": "function",
						"doc_comment": "Build .well-known URL for package metadata files.",
						"examples": [
							"```ts\nurl_well_known('https://fuz.dev', 'package.json')\n// => 'https://fuz.dev/.well-known/package.json'\n```"
						],
						"source_line": 202,
						"type_signature": "(homepage_url: string, filename: string): string",
						"return_type": "string",
						"return_description": "full URL to the .well-known file",
						"parameters": [
							{
								"name": "homepage_url",
								"type": "string",
								"description": "package homepage URL"
							},
							{
								"name": "filename",
								"type": "string",
								"description": "filename in .well-known directory"
							}
						]
					}
				],
				"module_comment": "Package and repository URL helpers.\n\nGeneric utilities for building URLs and parsing package/repository metadata.\nThese functions have no framework dependencies and can be used at build-time or runtime.\n\nURL builders:\n- `url_github_file` - GitHub file permalink\n- `url_github_org` - GitHub organization page\n- `url_npm_package` - npm package page\n- `url_well_known` - .well-known metadata file\n\nParsers:\n- `repo_url_parse` - extract repo URL from `package.json` repository field\n- `repo_name_parse` - extract repo name from scoped package name\n- `repo_url_github_owner` - extract GitHub owner from repo URL\n\nPredicates:\n- `package_is_published` - check if package is published to npm",
				"dependents": [
					"LibraryDetail.svelte",
					"declaration.svelte.ts",
					"module.svelte.ts"
				]
			},
			{
				"path": "PasteFromClipboard.svelte",
				"declarations": [
					{
						"name": "PasteFromClipboard",
						"kind": "component",
						"props": [
							{
								"name": "onclipboardtext",
								"type": "(text: string) => void"
							},
							{
								"name": "onerror",
								"type": "(error: Error) => void",
								"optional": true
							}
						],
						"source_line": 1
					}
				]
			},
			{
				"path": "PendingAnimation.svelte",
				"declarations": [
					{
						"name": "PendingAnimation",
						"kind": "component",
						"props": [
							{
								"name": "inline",
								"type": "boolean",
								"optional": true
							},
							{
								"name": "running",
								"type": "boolean",
								"optional": true
							},
							{
								"name": "item_attrs",
								"type": "SvelteHTMLElements['span']",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet<[index: number]>",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependents": [
					"ContextmenuEntry.svelte",
					"PendingButton.svelte"
				]
			},
			{
				"path": "PendingButton.svelte",
				"declarations": [
					{
						"name": "PendingButton",
						"kind": "component",
						"props": [
							{
								"name": "pending",
								"type": "boolean"
							},
							{
								"name": "running",
								"type": "boolean",
								"optional": true
							},
							{
								"name": "animation",
								"type": "Snippet",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet"
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"PendingAnimation.svelte"
				]
			},
			{
				"path": "ProjectLinks.svelte",
				"declarations": [
					{
						"name": "ProjectLinks",
						"kind": "component",
						"source_line": 1
					}
				],
				"dependencies": [
					"Svg.svelte",
					"logos.ts"
				],
				"dependents": [
					"EcosystemLinksPanel.svelte"
				]
			},
			{
				"path": "Redirect.svelte",
				"declarations": [
					{
						"name": "Redirect",
						"kind": "component",
						"props": [
							{
								"name": "host",
								"type": "string",
								"optional": true,
								"description": "The target host to redirect to. Defaults to `''` (relative URL)."
							},
							{
								"name": "path",
								"type": "string",
								"optional": true,
								"description": "The target path to redirect to. Defaults to the current `location.pathname`."
							},
							{
								"name": "auto",
								"type": "boolean",
								"optional": true,
								"description": "Should the redirect happen automatically without user input? Defaults to `true`."
							},
							{
								"name": "children",
								"type": "Snippet<[url: string]>",
								"optional": true
							}
						],
						"source_line": 1
					}
				]
			},
			{
				"path": "rune_helpers.svelte.ts",
				"declarations": [
					{
						"name": "effect_with_count",
						"kind": "function",
						"doc_comment": "Runs `fn` in an `$effect`, passing `true` as the `skip` argument for the first `count` runs.\nCalls `fn` even when skipping so callers can read any dependent signals.",
						"source_line": 5,
						"type_signature": "(fn: (count: number) => void, initial?: number): void",
						"return_type": "void",
						"parameters": [
							{
								"name": "fn",
								"type": "(count: number) => void"
							},
							{
								"name": "initial",
								"type": "number",
								"default_value": "0"
							}
						]
					}
				],
				"dependents": [
					"ThemeRoot.svelte"
				]
			},
			{
				"path": "Spiders.svelte",
				"declarations": [
					{
						"name": "Spiders",
						"kind": "component",
						"props": [
							{
								"name": "spiders",
								"type": "Array<string>",
								"optional": true
							},
							{
								"name": "seed",
								"type": "unknown",
								"optional": true
							},
							{
								"name": "random",
								"type": "typeof Math.random",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"Svg.svelte",
					"logos.ts"
				]
			},
			{
				"path": "storage.ts",
				"declarations": [
					{
						"name": "save_to_storage",
						"kind": "function",
						"doc_comment": "Utility function to save a value to `localStorage`.",
						"source_line": 8,
						"type_signature": "(key: string, value: any, is_json?: boolean): void",
						"return_type": "void",
						"parameters": [
							{
								"name": "key",
								"type": "string"
							},
							{
								"name": "value",
								"type": "any"
							},
							{
								"name": "is_json",
								"type": "boolean",
								"default_value": "false"
							}
						]
					},
					{
						"name": "load_from_storage",
						"kind": "function",
						"doc_comment": "Utility function to load a value from `localStorage` with optional parsing",
						"source_line": 26,
						"type_signature": "<T>(key: string, is_json?: boolean, parse_fn?: ((value: unknown) => T | null) | undefined): T | null",
						"return_type": "T | null",
						"return_description": "the parsed value or null if not found or parsing fails",
						"parameters": [
							{
								"name": "key",
								"type": "string",
								"description": "the localStorage key"
							},
							{
								"name": "is_json",
								"type": "boolean",
								"description": "whether to parse the value as JSON",
								"default_value": "false"
							},
							{
								"name": "parse_fn",
								"type": "((value: unknown) => T | null) | undefined",
								"optional": true,
								"description": "optional custom parsing function to transform the value"
							}
						]
					}
				],
				"dependents": [
					"theme_state.svelte.ts"
				]
			},
			{
				"path": "style_variable_helpers.svelte.ts",
				"declarations": [
					{
						"name": "SelectedStyleVariable",
						"kind": "class",
						"source_line": 6,
						"members": [
							{
								"name": "value",
								"kind": "variable",
								"type_signature": "StyleVariable | null"
							},
							{
								"name": "constructor",
								"kind": "constructor",
								"type_signature": "(initial?: { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } | null): SelectedStyleVariable",
								"parameters": [
									{
										"name": "initial",
										"type": "{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } | null",
										"default_value": "null"
									}
								]
							}
						]
					},
					{
						"name": "selected_variable_context",
						"kind": "variable",
						"source_line": 14,
						"type_signature": "{ get: () => SelectedStyleVariable; set: (value?: SelectedStyleVariable | undefined) => SelectedStyleVariable; }"
					}
				],
				"dependencies": [
					"context_helpers.ts"
				],
				"dependents": [
					"StyleVariableButton.svelte"
				]
			},
			{
				"path": "StyleVariableButton.svelte",
				"declarations": [
					{
						"name": "StyleVariableButton",
						"kind": "component",
						"props": [
							{
								"name": "name",
								"type": "string"
							},
							{
								"name": "inline",
								"type": "boolean",
								"optional": true
							},
							{
								"name": "plain",
								"type": "boolean",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"style_variable_helpers.svelte.ts"
				]
			},
			{
				"path": "svelte_helpers.ts",
				"declarations": [
					{
						"name": "SvelteFileAnalysis",
						"kind": "type",
						"doc_comment": "Result of analyzing a Svelte file.",
						"source_line": 60,
						"type_signature": "SvelteFileAnalysis",
						"properties": [
							{
								"name": "declaration",
								"kind": "variable",
								"type_signature": "DeclarationJson",
								"doc_comment": "The component declaration metadata."
							},
							{
								"name": "module_comment",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Module-level documentation comment, if present."
							}
						]
					},
					{
						"name": "svelte_analyze_module",
						"kind": "function",
						"doc_comment": "Analyze a Svelte component file and extract module metadata.\n\nWraps `svelte_analyze_file` and adds dependency information\nfrom the source file info if available.\n\nThis is a high-level function suitable for building documentation or library metadata.\nFor lower-level analysis, use `svelte_analyze_file` directly.\n\nReturns raw analysis data matching `ModuleAnalysis` structure.\nConsumer decides filtering policy (Svelte components are never nodocs).",
						"source_line": 86,
						"type_signature": "(source_file: SourceFileInfo, module_path: string, checker: TypeChecker, options: ModuleSourceOptions, ctx: AnalysisContext): ModuleAnalysis",
						"return_type": "ModuleAnalysis",
						"return_description": "module analysis matching `ModuleAnalysis` structure",
						"parameters": [
							{
								"name": "source_file",
								"type": "SourceFileInfo",
								"description": "the source file info (from Gro filer, file system, or other source)"
							},
							{
								"name": "module_path",
								"type": "string",
								"description": "the module path (relative to source root)"
							},
							{
								"name": "checker",
								"type": "TypeChecker",
								"description": "TypeScript type checker"
							},
							{
								"name": "options",
								"type": "ModuleSourceOptions",
								"description": "module source options for path extraction"
							},
							{
								"name": "ctx",
								"type": "AnalysisContext",
								"description": "analysis context for collecting diagnostics"
							}
						]
					},
					{
						"name": "svelte_analyze_file",
						"kind": "function",
						"doc_comment": "Analyze a Svelte component file.\n\nThis is a high-level function that handles the complete workflow:\n1. Transform Svelte source to TypeScript via svelte2tsx\n2. Extract component metadata (props, documentation)\n3. Extract module-level documentation\n\nSuitable for use in documentation generators, build tools, and analysis.",
						"source_line": 127,
						"type_signature": "(source_file: SourceFileInfo, module_path: string, checker: TypeChecker, ctx: AnalysisContext): SvelteFileAnalysis",
						"return_type": "SvelteFileAnalysis",
						"return_description": "component declaration and optional module-level comment",
						"parameters": [
							{
								"name": "source_file",
								"type": "SourceFileInfo",
								"description": "source file info with path and content"
							},
							{
								"name": "module_path",
								"type": "string",
								"description": "module path relative to source root (e.g., 'Alert.svelte')"
							},
							{
								"name": "checker",
								"type": "TypeChecker",
								"description": "TypeScript type checker for type resolution"
							},
							{
								"name": "ctx",
								"type": "AnalysisContext",
								"description": "analysis context for collecting diagnostics"
							}
						]
					},
					{
						"name": "svelte_analyze_component",
						"kind": "function",
						"doc_comment": "Analyze a Svelte component from its svelte2tsx transformation.",
						"source_line": 190,
						"type_signature": "(ts_code: string, source_file: SourceFile, checker: TypeChecker, component_name: string, file_path: string, source_map: TraceMap | null, ctx: AnalysisContext): { ...; }",
						"return_type": "{ [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; doc_comment?: string | undefined; type_signature?: string | undefined; ... 18 more ...; alias_of?: { ...; } | undefined; }",
						"parameters": [
							{
								"name": "ts_code",
								"type": "string"
							},
							{
								"name": "source_file",
								"type": "SourceFile"
							},
							{
								"name": "checker",
								"type": "TypeChecker"
							},
							{
								"name": "component_name",
								"type": "string"
							},
							{
								"name": "file_path",
								"type": "string"
							},
							{
								"name": "source_map",
								"type": "TraceMap | null"
							},
							{
								"name": "ctx",
								"type": "AnalysisContext"
							}
						]
					},
					{
						"name": "svelte_extract_script_content",
						"kind": "function",
						"doc_comment": "Extract the content of the main `<script>` tag from Svelte source.\n\nMatches `<script>` or `<script lang=\"ts\">` but not `<script module>`.\nReturns undefined if no matching script tag is found.",
						"source_line": 248,
						"type_signature": "(svelte_source: string): string | undefined",
						"return_type": "string | undefined",
						"parameters": [
							{
								"name": "svelte_source",
								"type": "string"
							}
						]
					},
					{
						"name": "svelte_extract_module_comment",
						"kind": "function",
						"doc_comment": "Extract module-level comment from Svelte script content.\n\nRequires `@module` tag to identify module comments. The tag line is stripped\nfrom the output.",
						"source_line": 265,
						"type_signature": "(script_content: string): string | undefined",
						"return_type": "string | undefined",
						"return_description": "the cleaned module comment text, or undefined if none found",
						"parameters": [
							{
								"name": "script_content",
								"type": "string",
								"description": "the content of the `<script>` tag"
							}
						]
					}
				],
				"module_comment": "Svelte component analysis helpers.\n\nExtracts metadata from Svelte components using svelte2tsx transformations:\n\n- Component props with types and JSDoc\n- Component-level documentation\n- Type information\n\nWorkflow: Transform Svelte to TypeScript via svelte2tsx, parse the transformed\nTypeScript with the TS Compiler API, extract component-level JSDoc from original source.\n\n**Svelte 5 only**: The svelte2tsx output format changed significantly between versions.\nThis module requires Svelte 5+ and will throw a clear error if an older version is detected.\nThere is no Svelte 4 compatibility layer.\n\nAll functions are prefixed with `svelte_` for clarity.",
				"dependencies": [
					"module_helpers.ts",
					"ts_helpers.ts",
					"tsdoc_helpers.ts"
				],
				"dependents": [
					"library_analysis.ts"
				]
			},
			{
				"path": "svelte_preprocess_mdz.ts",
				"declarations": [
					{
						"name": "SveltePreprocessMdzOptions",
						"kind": "type",
						"doc_comment": "Options for `svelte_preprocess_mdz`.",
						"source_line": 52,
						"type_signature": "SveltePreprocessMdzOptions",
						"properties": [
							{
								"name": "exclude",
								"kind": "variable",
								"type_signature": "Array<string | RegExp>",
								"doc_comment": "File patterns to exclude."
							},
							{
								"name": "components",
								"kind": "variable",
								"type_signature": "Record<string, string>",
								"doc_comment": "Component import mapping for mdz content.\nKey: component name as used in mdz (e.g., 'Alert').\nValue: import path (e.g., '$lib/Alert.svelte').\n\nIf mdz content references a component not in this map,\nthat `Mdz` usage is skipped (left as runtime)."
							},
							{
								"name": "elements",
								"kind": "variable",
								"type_signature": "Array<string>",
								"doc_comment": "Allowed HTML elements in mdz content.\nIf mdz content references an element not in this list,\nthat `Mdz` usage is skipped (left as runtime)."
							},
							{
								"name": "component_imports",
								"kind": "variable",
								"type_signature": "Array<string>",
								"doc_comment": "Import sources that resolve to the `Mdz` component.\nUsed to verify that `Mdz` in templates refers to fuz_ui's `Mdz.svelte`."
							},
							{
								"name": "compiled_component_import",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Import path for the precompiled wrapper component."
							},
							{
								"name": "on_error",
								"kind": "variable",
								"type_signature": "'log' | 'throw'",
								"doc_comment": "How to handle errors during mdz parsing or rendering."
							}
						]
					},
					{
						"name": "svelte_preprocess_mdz",
						"kind": "function",
						"doc_comment": "Creates a Svelte preprocessor that compiles static `Mdz` content at build time.",
						"source_line": 104,
						"type_signature": "(options?: SveltePreprocessMdzOptions): PreprocessorGroup",
						"return_type": "PreprocessorGroup",
						"return_description": "a Svelte `PreprocessorGroup` for use in `svelte.config.js`",
						"parameters": [
							{
								"name": "options",
								"type": "SveltePreprocessMdzOptions",
								"description": "configuration for component/element resolution and file filtering",
								"default_value": "{}"
							}
						]
					}
				],
				"module_comment": "Svelte preprocessor that compiles static `Mdz` content to Svelte markup at build time.\n\nDetects `Mdz` components with static string `content` props, parses the mdz content,\nrenders each `MdzNode` to equivalent Svelte markup via `mdz_to_svelte`, and replaces\nthe `Mdz` with `MdzPrecompiled` containing pre-rendered children.\n\nAlso handles ternary chains (`content={a ? 'x' : b ? 'y' : 'z'}`) where all leaf\nvalues are statically resolvable strings, emitting `{#if a}markup_x{:else if b}markup_y{:else}markup_z{/if}`\nas children of a single `MdzPrecompiled`.\n\nTruly dynamic `content` props are left untouched.",
				"dependencies": [
					"mdz.ts",
					"mdz_to_svelte.ts"
				]
			},
			{
				"path": "Svg.svelte",
				"declarations": [
					{
						"name": "Svg",
						"kind": "component",
						"props": [
							{
								"name": "data",
								"type": "SvgData"
							},
							{
								"name": "fill",
								"type": "string | null",
								"optional": true,
								"description": "Overrides `data.fill`."
							},
							{
								"name": "size",
								"type": "string",
								"optional": true,
								"description": "Sets both the `width` and `height` of the svg. Overridden by the `width` and `height` props."
							},
							{
								"name": "width",
								"type": "string",
								"optional": true,
								"description": "Sets the `width` of the svg. Overrides `size`."
							},
							{
								"name": "height",
								"type": "string",
								"optional": true,
								"description": "Sets the `height` of the svg. Overrides `size`."
							},
							{
								"name": "label",
								"type": "string",
								"optional": true
							},
							{
								"name": "inline",
								"type": "boolean",
								"optional": true,
								"description": "Renders the SVG as an inline block with spacing appropriate for text. Defaults to `false`."
							},
							{
								"name": "shrink",
								"type": "boolean",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependents": [
					"DocsFooter.svelte",
					"GithubLink.svelte",
					"MdnLink.svelte",
					"ProjectLinks.svelte",
					"Spiders.svelte"
				]
			},
			{
				"path": "Teleport.svelte",
				"declarations": [
					{
						"name": "Teleport",
						"kind": "component",
						"props": [
							{
								"name": "to",
								"type": "HTMLElement | undefined | null",
								"optional": true,
								"description": "Defaults to `undefined` to lessen friction with SSR.\nWe may want to change this to optionally accept a string selector,\nbut that didn't seem to be the best API for the `Dialog`."
							},
							{
								"name": "onmove",
								"type": "(el: HTMLElement, to: HTMLElement) => void",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet"
							}
						],
						"source_line": 1
					}
				],
				"dependents": [
					"Dialog.svelte"
				]
			},
			{
				"path": "theme_state.svelte.ts",
				"declarations": [
					{
						"name": "ThemeStateJson",
						"kind": "type",
						"source_line": 8,
						"type_signature": "ThemeStateJson",
						"properties": [
							{
								"name": "theme",
								"kind": "variable",
								"type_signature": "Theme"
							},
							{
								"name": "color_scheme",
								"kind": "variable",
								"type_signature": "ColorScheme"
							}
						]
					},
					{
						"name": "ThemeStateOptions",
						"kind": "type",
						"source_line": 13,
						"type_signature": "Partial<ThemeStateJson>"
					},
					{
						"name": "ThemeState",
						"kind": "class",
						"source_line": 15,
						"members": [
							{
								"name": "theme",
								"kind": "variable",
								"type_signature": "Theme"
							},
							{
								"name": "color_scheme",
								"kind": "variable",
								"type_signature": "ColorScheme"
							},
							{
								"name": "constructor",
								"kind": "constructor",
								"type_signature": "(options?: Partial<ThemeStateJson> | undefined): ThemeState",
								"parameters": [
									{
										"name": "options",
										"type": "Partial<ThemeStateJson> | undefined",
										"optional": true
									}
								]
							},
							{
								"name": "toJSON",
								"kind": "function",
								"type_signature": "(): ThemeStateJson",
								"return_type": "ThemeStateJson",
								"parameters": []
							}
						]
					},
					{
						"name": "theme_state_context",
						"kind": "variable",
						"source_line": 36,
						"type_signature": "{ get: (error_message?: string | undefined) => () => ThemeState; get_maybe: () => (() => ThemeState) | undefined; set: (value: () => ThemeState) => () => ThemeState; }"
					},
					{
						"name": "sync_color_scheme",
						"kind": "function",
						"source_line": 38,
						"type_signature": "(color_scheme: ColorScheme | null): void",
						"return_type": "void",
						"parameters": [
							{
								"name": "color_scheme",
								"type": "ColorScheme | null"
							}
						]
					},
					{
						"name": "COLOR_SCHEME_STORAGE_KEY",
						"kind": "variable",
						"source_line": 47,
						"type_signature": "\"fuz:color-scheme\""
					},
					{
						"name": "THEME_STORAGE_KEY",
						"kind": "variable",
						"source_line": 48,
						"type_signature": "\"fuz:theme\""
					},
					{
						"name": "save_color_scheme",
						"kind": "function",
						"source_line": 50,
						"type_signature": "(color_scheme: ColorScheme | null, key?: string): void",
						"return_type": "void",
						"parameters": [
							{
								"name": "color_scheme",
								"type": "ColorScheme | null"
							},
							{
								"name": "key",
								"type": "string",
								"default_value": "COLOR_SCHEME_STORAGE_KEY"
							}
						]
					},
					{
						"name": "load_color_scheme",
						"kind": "function",
						"source_line": 57,
						"type_signature": "(fallback?: ColorScheme, key?: string): ColorScheme",
						"return_type": "ColorScheme",
						"parameters": [
							{
								"name": "fallback",
								"type": "ColorScheme",
								"default_value": "'auto'"
							},
							{
								"name": "key",
								"type": "string",
								"default_value": "COLOR_SCHEME_STORAGE_KEY"
							}
						]
					},
					{
						"name": "save_theme",
						"kind": "function",
						"source_line": 62,
						"type_signature": "(theme: Theme | null, key?: string): void",
						"return_type": "void",
						"parameters": [
							{
								"name": "theme",
								"type": "Theme | null"
							},
							{
								"name": "key",
								"type": "string",
								"default_value": "THEME_STORAGE_KEY"
							}
						]
					},
					{
						"name": "load_theme",
						"kind": "function",
						"source_line": 66,
						"type_signature": "(fallback?: Theme, key?: string): Theme",
						"return_type": "Theme",
						"parameters": [
							{
								"name": "fallback",
								"type": "Theme",
								"default_value": "default_themes[0]!"
							},
							{
								"name": "key",
								"type": "string",
								"default_value": "THEME_STORAGE_KEY"
							}
						]
					}
				],
				"dependencies": [
					"context_helpers.ts",
					"storage.ts"
				],
				"dependents": [
					"ColorSchemeInput.svelte",
					"ThemeInput.svelte",
					"ThemeRoot.svelte"
				]
			},
			{
				"path": "ThemeInput.svelte",
				"declarations": [
					{
						"name": "ThemeInput",
						"kind": "component",
						"props": [
							{
								"name": "selected_theme",
								"type": "{theme: Theme}",
								"optional": true
							},
							{
								"name": "themes",
								"type": "Array<Theme>",
								"optional": true
							},
							{
								"name": "enable_editing",
								"type": "boolean",
								"optional": true
							},
							{
								"name": "select",
								"type": "((theme: Theme) => void | boolean) | null",
								"optional": true
							},
							{
								"name": "onselect",
								"type": "(theme: Theme) => void",
								"optional": true
							},
							{
								"name": "onedit",
								"type": "(theme: Theme) => void",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"theme_state.svelte.ts"
				]
			},
			{
				"path": "ThemeRoot.svelte",
				"declarations": [
					{
						"name": "ThemeRoot",
						"kind": "component",
						"props": [
							{
								"name": "sync_color_scheme",
								"type": "typeof default_sync_color_scheme",
								"optional": true
							},
							{
								"name": "load_color_scheme",
								"type": "typeof default_load_color_scheme",
								"optional": true
							},
							{
								"name": "save_color_scheme",
								"type": "typeof default_save_color_scheme",
								"optional": true
							},
							{
								"name": "load_theme",
								"type": "typeof default_load_theme",
								"optional": true
							},
							{
								"name": "save_theme",
								"type": "typeof default_save_theme",
								"optional": true
							},
							{
								"name": "theme_fallback",
								"type": "Theme | undefined",
								"optional": true
							},
							{
								"name": "theme_state",
								"type": "ThemeState",
								"optional": true,
								"description": "A reactive class containing the selected theme and color scheme.\nDefaults to the first default theme."
							},
							{
								"name": "children",
								"type": "Snippet<\n\t\t\t[theme_state: ThemeState, style: string | null, theme_style_html: string | null]\n\t\t>"
							}
						],
						"source_line": 1
					}
				],
				"module_comment": "`ThemeRoot` adds global color scheme and theme support to the page.\nIt also sets in the Svelte context a reactive `theme_state` containing the theme and color scheme.",
				"dependencies": [
					"rune_helpers.svelte.ts",
					"theme_state.svelte.ts"
				]
			},
			{
				"path": "tome.ts",
				"declarations": [
					{
						"name": "Tome",
						"kind": "type",
						"source_line": 9,
						"type_signature": "ZodObject<{ name: ZodString; category: ZodString; Component: ZodCustom<Component<any, any, string>, Component<any, any, string>>; related_tomes: ZodArray<...>; related_modules: ZodArray<...>; related_declarations: ZodArray<...>; }, $strip>"
					},
					{
						"name": "to_tome_pathname",
						"kind": "function",
						"doc_comment": "",
						"source_line": 23,
						"type_signature": "(item: string | { name: string; category: string; Component: Component<any, any, string>; related_tomes: string[]; related_modules: string[]; related_declarations: string[]; }, docs_path?: string, hash?: string | undefined): string",
						"return_type": "string",
						"parameters": [
							{
								"name": "item",
								"type": "string | { name: string; category: string; Component: Component<any, any, string>; related_tomes: string[]; related_modules: string[]; related_declarations: string[]; }"
							},
							{
								"name": "docs_path",
								"type": "string",
								"default_value": "DOCS_PATH_DEFAULT"
							},
							{
								"name": "hash",
								"type": "string | undefined",
								"optional": true,
								"description": "URL fragment to append, with or without the `#`"
							}
						]
					},
					{
						"name": "tomes_context",
						"kind": "variable",
						"source_line": 33,
						"type_signature": "{ get: (error_message?: string | undefined) => () => Map<string, { name: string; category: string; Component: Component<any, any, string>; related_tomes: string[]; related_modules: string[]; related_declarations: string[]; }>; get_maybe: () => (() => Map<...>) | undefined; set: (value: () => Map<...>) => () => Map<...."
					},
					{
						"name": "get_tome_by_name",
						"kind": "function",
						"source_line": 35,
						"type_signature": "(name: string): { name: string; category: string; Component: Component<any, any, string>; related_tomes: string[]; related_modules: string[]; related_declarations: string[]; }",
						"return_type": "{ name: string; category: string; Component: Component<any, any, string>; related_tomes: string[]; related_modules: string[]; related_declarations: string[]; }",
						"parameters": [
							{
								"name": "name",
								"type": "string"
							}
						]
					},
					{
						"name": "tome_context",
						"kind": "variable",
						"source_line": 42,
						"type_signature": "{ get: (error_message?: string | undefined) => () => { name: string; category: string; Component: Component<any, any, string>; related_tomes: string[]; related_modules: string[]; related_declarations: string[]; }; get_maybe: () => (() => { ...; }) | undefined; set: (value: () => { ...; }) => () => { ...; }; }"
					}
				],
				"dependencies": [
					"context_helpers.ts",
					"docs_helpers.svelte.ts"
				],
				"dependents": [
					"ApiIndex.svelte",
					"ApiModule.svelte",
					"Docs.svelte",
					"DocsMenu.svelte",
					"DocsSecondaryNav.svelte",
					"DocsTertiaryNav.svelte",
					"TomeContent.svelte",
					"TomeHeader.svelte",
					"TomeLink.svelte"
				]
			},
			{
				"path": "TomeContent.svelte",
				"declarations": [
					{
						"name": "TomeContent",
						"kind": "component",
						"props": [
							{
								"name": "tome",
								"type": "Tome"
							},
							{
								"name": "docs_path",
								"type": "string",
								"optional": true
							},
							{
								"name": "header",
								"type": "Snippet",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet"
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"TomeHeader.svelte",
					"docs_helpers.svelte.ts",
					"intersect.svelte.ts",
					"tome.ts"
				],
				"dependents": [
					"ApiIndex.svelte",
					"ApiModule.svelte"
				]
			},
			{
				"path": "TomeHeader.svelte",
				"declarations": [
					{
						"name": "TomeHeader",
						"kind": "component",
						"source_line": 1
					}
				],
				"dependencies": [
					"Hashlink.svelte",
					"docs_helpers.svelte.ts",
					"tome.ts"
				],
				"dependents": [
					"TomeContent.svelte"
				]
			},
			{
				"path": "TomeLink.svelte",
				"declarations": [
					{
						"name": "TomeLink",
						"kind": "component",
						"props": [
							{
								"name": "name",
								"type": "string"
							},
							{
								"name": "docs_path",
								"type": "string",
								"optional": true
							},
							{
								"name": "hash",
								"type": "string",
								"optional": true,
								"description": "URL fragment to append, with or without the `#`."
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"docs_helpers.svelte.ts",
					"tome.ts"
				],
				"dependents": [
					"ApiIndex.svelte",
					"DocsTertiaryNav.svelte"
				]
			},
			{
				"path": "TomeSection.svelte",
				"declarations": [
					{
						"name": "TomeSection",
						"kind": "component",
						"props": [
							{
								"name": "children",
								"type": "Snippet"
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"context_helpers.ts",
					"docs_helpers.svelte.ts",
					"intersect.svelte.ts"
				],
				"dependents": [
					"ApiDeclarationList.svelte",
					"ApiModule.svelte",
					"ApiModulesList.svelte",
					"TomeSectionHeader.svelte"
				]
			},
			{
				"path": "TomeSectionHeader.svelte",
				"declarations": [
					{
						"name": "TomeSectionHeader",
						"kind": "component",
						"props": [
							{
								"name": "text",
								"type": "string"
							},
							{
								"name": "tag",
								"type": "DocsLinkTag",
								"optional": true
							},
							{
								"name": "children",
								"type": "Snippet",
								"optional": true
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"Hashlink.svelte",
					"TomeSection.svelte",
					"docs_helpers.svelte.ts"
				],
				"dependents": [
					"ApiDeclarationList.svelte",
					"ApiModule.svelte",
					"ApiModulesList.svelte"
				]
			},
			{
				"path": "ts_helpers.ts",
				"declarations": [
					{
						"name": "TsProgramOptions",
						"kind": "type",
						"doc_comment": "Options for creating a TypeScript program.",
						"source_line": 32,
						"type_signature": "TsProgramOptions",
						"properties": [
							{
								"name": "root",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Project root directory."
							},
							{
								"name": "tsconfig",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Path to `tsconfig.json` (relative to root)."
							},
							{
								"name": "compiler_options",
								"kind": "variable",
								"type_signature": "ts.CompilerOptions",
								"doc_comment": "Override compiler options."
							}
						]
					},
					{
						"name": "TsProgram",
						"kind": "type",
						"doc_comment": "Result of creating a TypeScript program.",
						"source_line": 44,
						"type_signature": "TsProgram",
						"properties": [
							{
								"name": "program",
								"kind": "variable",
								"type_signature": "ts.Program"
							},
							{
								"name": "checker",
								"kind": "variable",
								"type_signature": "ts.TypeChecker"
							}
						]
					},
					{
						"name": "ModuleExportsAnalysis",
						"kind": "type",
						"doc_comment": "Result of analyzing a module's exports.",
						"source_line": 52,
						"type_signature": "ModuleExportsAnalysis",
						"properties": [
							{
								"name": "module_comment",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Module-level documentation comment."
							},
							{
								"name": "declarations",
								"kind": "variable",
								"type_signature": "Array<DeclarationAnalysis>",
								"doc_comment": "All exported declarations with nodocs flags - consumer filters based on policy."
							},
							{
								"name": "re_exports",
								"kind": "variable",
								"type_signature": "Array<ReExportInfo>",
								"doc_comment": "Same-name re-exports (for building `also_exported_from` in post-processing)."
							},
							{
								"name": "star_exports",
								"kind": "variable",
								"type_signature": "Array<string>",
								"doc_comment": "Star exports (`export * from './module'`) - module paths that are fully re-exported."
							}
						]
					},
					{
						"name": "ts_create_program",
						"kind": "function",
						"doc_comment": "Create TypeScript program for analysis.",
						"throws": [
							{
								"type": "Error",
								"description": "if `tsconfig.json` is not found"
							}
						],
						"source_line": 71,
						"type_signature": "(options?: TsProgramOptions | undefined, log?: Logger | undefined): TsProgram",
						"return_type": "TsProgram",
						"return_description": "the program and type checker",
						"parameters": [
							{
								"name": "options",
								"type": "TsProgramOptions | undefined",
								"optional": true,
								"description": "configuration options for program creation"
							},
							{
								"name": "log",
								"type": "Logger | undefined",
								"optional": true,
								"description": "optional logger for info messages"
							}
						]
					},
					{
						"name": "ts_analyze_module",
						"kind": "function",
						"doc_comment": "Analyze a TypeScript file and extract module metadata.\n\nWraps `ts_analyze_module_exports` and adds dependency information\nfrom the source file info if available.\n\nThis is a high-level function suitable for building documentation or library metadata.\nFor lower-level analysis, use `ts_analyze_module_exports` directly.",
						"source_line": 111,
						"type_signature": "(source_file_info: SourceFileInfo, ts_source_file: SourceFile, module_path: string, checker: TypeChecker, options: ModuleSourceOptions, ctx: AnalysisContext): ModuleAnalysis",
						"return_type": "ModuleAnalysis",
						"return_description": "module metadata and re-export information",
						"parameters": [
							{
								"name": "source_file_info",
								"type": "SourceFileInfo",
								"description": "the source file info (from Gro filer, file system, or other source)"
							},
							{
								"name": "ts_source_file",
								"type": "SourceFile",
								"description": "TypeScript source file from the program"
							},
							{
								"name": "module_path",
								"type": "string",
								"description": "the module path (relative to source root)"
							},
							{
								"name": "checker",
								"type": "TypeChecker",
								"description": "TypeScript type checker"
							},
							{
								"name": "options",
								"type": "ModuleSourceOptions",
								"description": "module source options for path extraction"
							},
							{
								"name": "ctx",
								"type": "AnalysisContext",
								"description": "analysis context for collecting diagnostics"
							}
						]
					},
					{
						"name": "ts_analyze_module_exports",
						"kind": "function",
						"doc_comment": "Analyze all exports from a TypeScript source file.\n\nExtracts the module-level comment and all exported declarations with\ncomplete metadata. Handles re-exports by:\n- Same-name re-exports: tracked in `re_exports` for `also_exported_from` building\n- Renamed re-exports: included as new declarations with `alias_of` metadata\n- Star exports (`export * from`): tracked in `star_exports` for namespace-level info\n\nThis is a mid-level function (above `ts_extract_*`, below `library_gen`)\nsuitable for building documentation, API explorers, or analysis tools.\nFor standard SvelteKit library layouts, use `module_create_source_options(process.cwd())`.",
						"source_line": 160,
						"type_signature": "(source_file: SourceFile, checker: TypeChecker, options: ModuleSourceOptions, ctx: AnalysisContext): ModuleExportsAnalysis",
						"return_type": "ModuleExportsAnalysis",
						"return_description": "module comment, declarations, re-exports, and star exports",
						"parameters": [
							{
								"name": "source_file",
								"type": "SourceFile",
								"description": "the TypeScript source file to analyze"
							},
							{
								"name": "checker",
								"type": "TypeChecker",
								"description": "the TypeScript type checker"
							},
							{
								"name": "options",
								"type": "ModuleSourceOptions",
								"description": "module source options for path extraction in re-exports"
							},
							{
								"name": "ctx",
								"type": "AnalysisContext",
								"description": "analysis context for collecting diagnostics"
							}
						]
					},
					{
						"name": "ts_analyze_declaration",
						"kind": "function",
						"doc_comment": "Analyze a TypeScript symbol and extract rich metadata.\n\nThis is a high-level function that combines TSDoc parsing with TypeScript\ntype analysis to produce complete declaration metadata. Suitable for use\nin documentation generators, IDE integrations, and other tooling.",
						"source_line": 284,
						"type_signature": "(symbol: Symbol, source_file: SourceFile, checker: TypeChecker, ctx: AnalysisContext): DeclarationAnalysis",
						"return_type": "DeclarationAnalysis",
						"return_description": "complete declaration metadata including docs, types, and parameters, plus nodocs flag",
						"parameters": [
							{
								"name": "symbol",
								"type": "Symbol",
								"description": "the TypeScript symbol to analyze"
							},
							{
								"name": "source_file",
								"type": "SourceFile",
								"description": "the source file containing the symbol"
							},
							{
								"name": "checker",
								"type": "TypeChecker",
								"description": "the TypeScript type checker"
							},
							{
								"name": "ctx",
								"type": "AnalysisContext",
								"description": "optional analysis context for collecting diagnostics"
							}
						]
					},
					{
						"name": "ts_extract_module_comment",
						"kind": "function",
						"doc_comment": "Extract module-level comment.\n\nRequires `@module` tag to identify module comments. The tag line is stripped\nfrom the output. Supports optional module renaming: `@module custom-name`.",
						"see_also": [
							"{@link https://typedoc.org/documents/Tags._module.html}"
						],
						"source_line": 337,
						"type_signature": "(source_file: SourceFile): string | undefined",
						"return_type": "string | undefined",
						"parameters": [
							{
								"name": "source_file",
								"type": "SourceFile"
							}
						]
					},
					{
						"name": "ts_infer_declaration_kind",
						"kind": "function",
						"doc_comment": "Infer declaration kind from symbol and node.\n\nMaps TypeScript constructs to `DeclarationKind`:\n- Classes → `'class'`\n- Functions (declarations, expressions, arrows) → `'function'`\n- Interfaces, type aliases → `'type'`\n- Enums (regular and const) → `'type'`\n- Variables → `'variable'` (unless function-valued → `'function'`)",
						"source_line": 400,
						"type_signature": "(symbol: Symbol, node: Node): \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"",
						"return_type": "\"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"",
						"parameters": [
							{
								"name": "symbol",
								"type": "Symbol"
							},
							{
								"name": "node",
								"type": "Node"
							}
						]
					},
					{
						"name": "ts_extract_signature_parameters",
						"kind": "function",
						"doc_comment": "Extract parameters from a TypeScript signature with TSDoc descriptions and default values.\n\nShared helper for extracting parameter information from both standalone functions\nand class methods/constructors.",
						"source_line": 439,
						"type_signature": "(sig: Signature, checker: TypeChecker, tsdoc_params: Map<string, string> | undefined): { name: string; type: string; optional?: boolean | undefined; description?: string | undefined; default_value?: string | undefined; }[]",
						"return_type": "{ name: string; type: string; optional?: boolean | undefined; description?: string | undefined; default_value?: string | undefined; }[]",
						"return_description": "array of parameter info objects",
						"parameters": [
							{
								"name": "sig",
								"type": "Signature",
								"description": "the TypeScript signature to extract parameters from"
							},
							{
								"name": "checker",
								"type": "TypeChecker",
								"description": "TypeScript type checker for type resolution"
							},
							{
								"name": "tsdoc_params",
								"type": "Map<string, string> | undefined",
								"description": "map of parameter names to TSDoc descriptions (from tsdoc.params)"
							}
						]
					},
					{
						"name": "ts_extract_function_info",
						"kind": "function",
						"doc_comment": "Extract function/method information including parameters\nwith descriptions and default values.",
						"source_line": 491,
						"type_signature": "(node: Node, symbol: Symbol, checker: TypeChecker, declaration: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; ... 20 more ...; alias_of?: { ...; } | undefined; }, tsdoc: TsdocParsedComment | undefined, ctx: AnalysisContext): void",
						"return_type": "void",
						"parameters": [
							{
								"name": "node",
								"type": "Node"
							},
							{
								"name": "symbol",
								"type": "Symbol"
							},
							{
								"name": "checker",
								"type": "TypeChecker"
							},
							{
								"name": "declaration",
								"type": "{ [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; doc_comment?: string | undefined; type_signature?: string | undefined; ... 18 more ...; alias_of?: { ...; } | undefined; }"
							},
							{
								"name": "tsdoc",
								"type": "TsdocParsedComment | undefined"
							},
							{
								"name": "ctx",
								"type": "AnalysisContext"
							}
						]
					},
					{
						"name": "ts_extract_type_info",
						"kind": "function",
						"doc_comment": "Extract type/interface information with rich property metadata.",
						"source_line": 553,
						"type_signature": "(node: Node, _symbol: Symbol, checker: TypeChecker, declaration: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; ... 20 more ...; alias_of?: { ...; } | undefined; }, ctx: AnalysisContext): void",
						"return_type": "void",
						"parameters": [
							{
								"name": "node",
								"type": "Node"
							},
							{
								"name": "_symbol",
								"type": "Symbol"
							},
							{
								"name": "checker",
								"type": "TypeChecker"
							},
							{
								"name": "declaration",
								"type": "{ [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; doc_comment?: string | undefined; type_signature?: string | undefined; ... 18 more ...; alias_of?: { ...; } | undefined; }"
							},
							{
								"name": "ctx",
								"type": "AnalysisContext"
							}
						]
					},
					{
						"name": "ts_extract_class_info",
						"kind": "function",
						"doc_comment": "Extract class information with rich member metadata.",
						"source_line": 628,
						"type_signature": "(node: Node, _symbol: Symbol, checker: TypeChecker, declaration: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; ... 20 more ...; alias_of?: { ...; } | undefined; }, ctx: AnalysisContext): void",
						"return_type": "void",
						"parameters": [
							{
								"name": "node",
								"type": "Node"
							},
							{
								"name": "_symbol",
								"type": "Symbol"
							},
							{
								"name": "checker",
								"type": "TypeChecker"
							},
							{
								"name": "declaration",
								"type": "{ [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; doc_comment?: string | undefined; type_signature?: string | undefined; ... 18 more ...; alias_of?: { ...; } | undefined; }"
							},
							{
								"name": "ctx",
								"type": "AnalysisContext"
							}
						]
					},
					{
						"name": "ts_extract_variable_info",
						"kind": "function",
						"doc_comment": "Extract variable information.",
						"source_line": 779,
						"type_signature": "(node: Node, symbol: Symbol, checker: TypeChecker, declaration: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; ... 20 more ...; alias_of?: { ...; } | undefined; }, ctx: AnalysisContext): void",
						"return_type": "void",
						"parameters": [
							{
								"name": "node",
								"type": "Node"
							},
							{
								"name": "symbol",
								"type": "Symbol"
							},
							{
								"name": "checker",
								"type": "TypeChecker"
							},
							{
								"name": "declaration",
								"type": "{ [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; doc_comment?: string | undefined; type_signature?: string | undefined; ... 18 more ...; alias_of?: { ...; } | undefined; }"
							},
							{
								"name": "ctx",
								"type": "AnalysisContext"
							}
						]
					},
					{
						"name": "TsModifier",
						"kind": "type",
						"doc_comment": "TypeScript modifier keywords extracted from declarations.\n\nThese are the access modifiers and other keywords that can appear\non class members, interface properties, etc.",
						"source_line": 839,
						"type_signature": "TsModifier"
					}
				],
				"module_comment": "TypeScript compiler API helpers for extracting metadata from source code.\n\nAll functions are prefixed with `ts_` for clarity.",
				"dependencies": [
					"module_helpers.ts",
					"tsdoc_helpers.ts"
				],
				"dependents": [
					"library_analysis.ts",
					"library_generate.ts",
					"svelte_helpers.ts"
				]
			},
			{
				"path": "tsdoc_helpers.ts",
				"declarations": [
					{
						"name": "TsdocParsedComment",
						"kind": "type",
						"doc_comment": "Parsed JSDoc/TSDoc comment with structured metadata.",
						"source_line": 49,
						"type_signature": "TsdocParsedComment",
						"properties": [
							{
								"name": "text",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Comment text (excluding comment markers)"
							},
							{
								"name": "params",
								"kind": "variable",
								"type_signature": "Map<string, string>",
								"doc_comment": "Parameter descriptions mapped by parameter name"
							},
							{
								"name": "returns",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Return value description from `@returns`"
							},
							{
								"name": "throws",
								"kind": "variable",
								"type_signature": "Array<{type?: string; description: string}>",
								"doc_comment": "Thrown errors from `@throws`"
							},
							{
								"name": "examples",
								"kind": "variable",
								"type_signature": "Array<string>",
								"doc_comment": "Code examples from `@example`"
							},
							{
								"name": "deprecated_message",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Deprecation message from `@deprecated`"
							},
							{
								"name": "see_also",
								"kind": "variable",
								"type_signature": "Array<string>",
								"doc_comment": "Related references from `@see`"
							},
							{
								"name": "since",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Version information from `@since`"
							},
							{
								"name": "mutates",
								"kind": "variable",
								"type_signature": "Array<string>",
								"doc_comment": "Mutation documentation from `@mutates` (non-standard)"
							},
							{
								"name": "nodocs",
								"kind": "variable",
								"type_signature": "boolean",
								"doc_comment": "Whether to exclude from documentation. From `@nodocs` tag."
							}
						]
					},
					{
						"name": "tsdoc_parse",
						"kind": "function",
						"doc_comment": "Parse JSDoc comment from a TypeScript node.\n\nExtracts and parses all JSDoc tags including:\n\n- `@param` - parameter descriptions\n- `@returns` - return value description\n- `@throws` - error documentation\n- `@example` - code examples\n- `@deprecated` - deprecation warnings\n- `@see` - related references\n- `@since` - version information\n- `@mutates` - mutation documentation (non-standard)",
						"source_line": 89,
						"type_signature": "(node: Node, source_file: SourceFile): TsdocParsedComment | undefined",
						"return_type": "TsdocParsedComment | undefined",
						"parameters": [
							{
								"name": "node",
								"type": "Node",
								"description": "the TypeScript node to extract JSDoc from"
							},
							{
								"name": "source_file",
								"type": "SourceFile",
								"description": "source file (used for extracting full ` @see` tag text)"
							}
						]
					},
					{
						"name": "tsdoc_apply_to_declaration",
						"kind": "function",
						"doc_comment": "Apply parsed TSDoc metadata to a declaration.\n\nConsolidates the common pattern of assigning TSDoc fields to declarations,\nwith conditional assignment for array fields (only if non-empty).",
						"source_line": 193,
						"type_signature": "(declaration: { [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; doc_comment?: string | undefined; type_signature?: string | undefined; ... 18 more ...; alias_of?: { ...; } | undefined; }, tsdoc: TsdocParsedComment | undefined): void",
						"return_type": "void",
						"parameters": [
							{
								"name": "declaration",
								"type": "{ [x: string]: unknown; name: string; kind: \"function\" | \"json\" | \"type\" | \"variable\" | \"class\" | \"constructor\" | \"component\" | \"css\"; doc_comment?: string | undefined; type_signature?: string | undefined; ... 18 more ...; alias_of?: { ...; } | undefined; }",
								"description": "declaration object to update"
							},
							{
								"name": "tsdoc",
								"type": "TsdocParsedComment | undefined",
								"description": "parsed TSDoc comment (if available)"
							}
						]
					},
					{
						"name": "tsdoc_clean_comment",
						"kind": "function",
						"doc_comment": "Clean raw JSDoc comment text by removing comment markers and leading asterisks.\n\nTransforms `/** ... *\\/` style comments into clean text.",
						"source_line": 225,
						"type_signature": "(comment_text: string): string | undefined",
						"return_type": "string | undefined",
						"return_description": "cleaned comment text, or undefined if empty after cleaning",
						"parameters": [
							{
								"name": "comment_text",
								"type": "string",
								"description": "the raw comment text including `/**` and `*\\/` markers"
							}
						]
					}
				],
				"module_comment": "TSDoc/JSDoc parsing helpers using the TypeScript Compiler API.\n\nProvides `tsdoc_parse()` for extracting JSDoc/TSDoc from TypeScript nodes.\nPrimarily designed for build-time code generation but can be used at runtime.\n\n## Design\n\nPure extraction approach: extracts documentation as-is with minimal transformation,\npreserving source intent. Works around TypeScript Compiler API quirks where needed.\n\nSupports both regular TypeScript and Svelte components (via svelte2tsx output).\n\n## Tag support\n\nSupports a subset of standard TSDoc tags:\n`@param`, `@returns`, `@throws`, `@example`, `@deprecated`, `@see`, `@since`, `@nodocs`.\n\nThe `@nodocs` tag excludes exports from documentation and flat namespace validation.\nThe declaration is still exported and usable, just not documented.\n\nAlso supports `@mutates` (non-standard) for documenting mutations to parameters or external state.\nUse format: `@mutates paramName - description of mutation`.\n\nOnly `@returns` is supported (not `@return`).\n\nThe `@see` tag supports multiple formats: plain URLs (`https://...`), `{@link}` syntax, and module names.\nRelative/absolute path support in `@see` is TBD.\n\n## Behavioral notes\n\nDue to TS Compiler API limitations:\n- `@param` and `@mutates` descriptions have leading `- ` stripped for visual consistency\n  (TSDoc spec uses `@param name - description` but the separator is aesthetic)\n- `@throws` tags have `{Type}` stripped by TS API; fallback regex extracts first word as error type\n- TS API strips URL protocols from `@see` tag text; we use `getText()` to preserve original format including `{@link}` syntax\n\nAll functions are prefixed with `tsdoc_` for clarity.",
				"dependents": [
					"svelte_helpers.ts",
					"ts_helpers.ts"
				]
			},
			{
				"path": "tsdoc_mdz.ts",
				"declarations": [
					{
						"name": "tsdoc_see_to_mdz",
						"kind": "function",
						"doc_comment": "Convert raw TSDoc `@see` content to mdz format for rendering.\n\nHandles TSDoc link syntax:\n- `|text` → `[text](url)` (markdown link)\n- `://...` → `https://...` (bare URL, auto-linked by mdz)\n- `` → `` `identifier` `` (code formatting)\n- Bare URLs → returned as-is\n- Bare identifiers → wrapped in backticks\n- `identifier description text` → `` `identifier` description text `` (first token is the reference)",
						"examples": [
							"```ts\ntsdoc_see_to_mdz('://fuz.dev|API Docs')\n// → '[API Docs](https://fuz.dev)'\n\ntsdoc_see_to_mdz('')\n// → '`SomeType`'\n\ntsdoc_see_to_mdz('https://example.com')\n// → 'https://example.com'\n\ntsdoc_see_to_mdz('library_gen.ts for Gro-specific integration')\n// → '`library_gen.ts` for Gro-specific integration'\n```"
						],
						"source_line": 45,
						"type_signature": "(content: string): string",
						"return_type": "string",
						"return_description": "mdz-formatted string ready for `Mdz` component",
						"parameters": [
							{
								"name": "content",
								"type": "string",
								"description": "raw `@see` tag content in TSDoc format"
							}
						]
					}
				],
				"module_comment": "Bridge between TSDoc format and mdz for rendering.\n\nThis module converts raw TSDoc syntax (from the analysis library) to mdz format\n(Fuz's documentation rendering dialect). It lives in fuz_ui, not the extracted\nanalysis library, to keep that library format-agnostic.",
				"dependencies": [
					"mdz_helpers.ts"
				],
				"dependents": [
					"DeclarationDetail.svelte"
				]
			},
			{
				"path": "TypeLink.svelte",
				"declarations": [
					{
						"name": "TypeLink",
						"kind": "component",
						"props": [
							{
								"name": "type",
								"type": "string"
							},
							{
								"name": "hash",
								"type": "string",
								"optional": true,
								"description": "URL fragment to append, with or without the `#`."
							}
						],
						"source_line": 1
					}
				],
				"dependencies": [
					"DeclarationLink.svelte",
					"library.svelte.ts"
				],
				"dependents": [
					"DeclarationDetail.svelte"
				]
			},
			{
				"path": "vite_plugin_library_well_known.ts",
				"declarations": [
					{
						"name": "VitePluginLibraryWellKnownOptions",
						"kind": "type",
						"source_line": 7,
						"type_signature": "VitePluginLibraryWellKnownOptions",
						"properties": [
							{
								"name": "library_path",
								"kind": "variable",
								"type_signature": "string",
								"doc_comment": "Path to the `library.json` file (relative to `vite.config.ts`)."
							}
						]
					},
					{
						"name": "vite_plugin_library_well_known",
						"kind": "function",
						"doc_comment": "Vite plugin that publishes `package.json` and `library.json` to `.well-known/`.\n\nRequires a generated `library.json` file (created by `library_gen` from `gro gen`).\nThe plugin reads this JSON file and publishes its metadata to `.well-known/` for\nboth dev and production builds.\n\nNote: This plugin respects SvelteKit's `base` path configuration, so `.well-known/`\nwill be served at `{base}.well-known/` (e.g., `/my-app/.well-known/`). This deviates\nfrom RFC 8615 which specifies `.well-known` should be at the domain root. This tradeoff\nallows the plugin to work correctly when apps are deployed to non-root paths.\n\nNote: CORS headers are only set for the dev server. For production, configure\nCORS at the server level (nginx, Caddy, etc.) if cross-origin access is needed.",
						"examples": [
							"```ts\n// vite.config.ts\nimport {defineConfig} from 'vite';\nimport {sveltekit} from '@sveltejs/kit/vite';\nimport {vite_plugin_library_well_known} from '@fuzdev/fuz_ui/vite_plugin_library_well_known.js';\n\nexport default defineConfig({\n  plugins: [sveltekit(), vite_plugin_library_well_known()],\n});\n```"
						],
						"source_line": 54,
						"type_signature": "(options?: VitePluginLibraryWellKnownOptions): Plugin<any>",
						"return_type": "Plugin<any>",
						"parameters": [
							{
								"name": "options",
								"type": "VitePluginLibraryWellKnownOptions",
								"default_value": "{}"
							}
						]
					}
				]
			}
		]
	}
}
