@lickle/docs 0.0.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/esm/_lib/fs/index.js +20 -0
- package/dist/esm/_lib/fs/index.js.map +1 -0
- package/dist/esm/_lib/fs/watch.js +30 -0
- package/dist/esm/_lib/fs/watch.js.map +1 -0
- package/dist/esm/_lib/index.js +9 -0
- package/dist/esm/_lib/index.js.map +1 -0
- package/dist/esm/_lib/jiti/index.js +16 -0
- package/dist/esm/_lib/jiti/index.js.map +1 -0
- package/dist/esm/_lib/path/index.js +42 -0
- package/dist/esm/_lib/path/index.js.map +1 -0
- package/dist/esm/_lib/pkg/index.js +128 -0
- package/dist/esm/_lib/pkg/index.js.map +1 -0
- package/dist/esm/_lib/repo/index.js +100 -0
- package/dist/esm/_lib/repo/index.js.map +1 -0
- package/dist/esm/_lib/slug/index.js +23 -0
- package/dist/esm/_lib/slug/index.js.map +1 -0
- package/dist/esm/_lib/t.js +2 -0
- package/dist/esm/_lib/t.js.map +1 -0
- package/dist/esm/_lib/tsconfig/index.js +12 -0
- package/dist/esm/_lib/tsconfig/index.js.map +1 -0
- package/dist/esm/_lib/util/index.js +54 -0
- package/dist/esm/_lib/util/index.js.map +1 -0
- package/dist/esm/cli/cmd/dev.js +74 -0
- package/dist/esm/cli/cmd/dev.js.map +1 -0
- package/dist/esm/cli/cmd/index.js +4 -0
- package/dist/esm/cli/cmd/index.js.map +1 -0
- package/dist/esm/cli/cmd/init.js +74 -0
- package/dist/esm/cli/cmd/init.js.map +1 -0
- package/dist/esm/cli/cmd/json.js +28 -0
- package/dist/esm/cli/cmd/json.js.map +1 -0
- package/dist/esm/cli/env.js +5 -0
- package/dist/esm/cli/env.js.map +1 -0
- package/dist/esm/cli/index.js +13 -0
- package/dist/esm/cli/index.js.map +1 -0
- package/dist/esm/cli/vite/client/index.jsx +20 -0
- package/dist/esm/cli/vite/client/index.jsx.map +1 -0
- package/dist/esm/cli/vite/index.js +100 -0
- package/dist/esm/cli/vite/index.js.map +1 -0
- package/dist/esm/cli.js +5 -0
- package/dist/esm/cli.js.map +1 -0
- package/dist/esm/config/defaults.js +32 -0
- package/dist/esm/config/defaults.js.map +1 -0
- package/dist/esm/config/file.js +48 -0
- package/dist/esm/config/file.js.map +1 -0
- package/dist/esm/config/index.js +7 -0
- package/dist/esm/config/index.js.map +1 -0
- package/dist/esm/config/load.js +79 -0
- package/dist/esm/config/load.js.map +1 -0
- package/dist/esm/config/types.js +2 -0
- package/dist/esm/config/types.js.map +1 -0
- package/dist/esm/core/index.js +3 -0
- package/dist/esm/core/index.js.map +1 -0
- package/dist/esm/core/project/debug.js +26 -0
- package/dist/esm/core/project/debug.js.map +1 -0
- package/dist/esm/core/project/index.js +39 -0
- package/dist/esm/core/project/index.js.map +1 -0
- package/dist/esm/core/project/naming.js +39 -0
- package/dist/esm/core/project/naming.js.map +1 -0
- package/dist/esm/core/project/routing.js +173 -0
- package/dist/esm/core/project/routing.js.map +1 -0
- package/dist/esm/core/project/types.js +4 -0
- package/dist/esm/core/project/types.js.map +1 -0
- package/dist/esm/core/reflect/index.js +10 -0
- package/dist/esm/core/reflect/index.js.map +1 -0
- package/dist/esm/core/reflect/indexed.js +195 -0
- package/dist/esm/core/reflect/indexed.js.map +1 -0
- package/dist/esm/core/reflect/resolve.js +157 -0
- package/dist/esm/core/reflect/resolve.js.map +1 -0
- package/dist/esm/core/reflect/scan.js +787 -0
- package/dist/esm/core/reflect/scan.js.map +1 -0
- package/dist/esm/core/reflect/state.js +29 -0
- package/dist/esm/core/reflect/state.js.map +1 -0
- package/dist/esm/core/reflect/types.js +16 -0
- package/dist/esm/core/reflect/types.js.map +1 -0
- package/dist/esm/core/reflect/walk.js +106 -0
- package/dist/esm/core/reflect/walk.js.map +1 -0
- package/dist/esm/solidjs/index.js +2 -0
- package/dist/esm/solidjs/index.js.map +1 -0
- package/dist/esm/solidjs/jsx-runtime.js +2 -0
- package/dist/esm/solidjs/jsx-runtime.js.map +1 -0
- package/dist/esm/ui/App.jsx +71 -0
- package/dist/esm/ui/App.jsx.map +1 -0
- package/dist/esm/ui/components/Breadcrumb.jsx +45 -0
- package/dist/esm/ui/components/Breadcrumb.jsx.map +1 -0
- package/dist/esm/ui/components/Code/index.jsx +89 -0
- package/dist/esm/ui/components/Code/index.jsx.map +1 -0
- package/dist/esm/ui/components/Comment.jsx +176 -0
- package/dist/esm/ui/components/Comment.jsx.map +1 -0
- package/dist/esm/ui/components/Declaration.jsx +147 -0
- package/dist/esm/ui/components/Declaration.jsx.map +1 -0
- package/dist/esm/ui/components/Header.jsx +66 -0
- package/dist/esm/ui/components/Header.jsx.map +1 -0
- package/dist/esm/ui/components/Layout.jsx +44 -0
- package/dist/esm/ui/components/Layout.jsx.map +1 -0
- package/dist/esm/ui/components/Link.jsx +34 -0
- package/dist/esm/ui/components/Link.jsx.map +1 -0
- package/dist/esm/ui/components/LivePreview/Example.jsx +76 -0
- package/dist/esm/ui/components/LivePreview/Example.jsx.map +1 -0
- package/dist/esm/ui/components/LivePreview/Sandbox.jsx +25 -0
- package/dist/esm/ui/components/LivePreview/Sandbox.jsx.map +1 -0
- package/dist/esm/ui/components/LivePreview/index.js +4 -0
- package/dist/esm/ui/components/LivePreview/index.js.map +1 -0
- package/dist/esm/ui/components/LivePreview/transform.js +16 -0
- package/dist/esm/ui/components/LivePreview/transform.js.map +1 -0
- package/dist/esm/ui/components/Markdown.jsx +14 -0
- package/dist/esm/ui/components/Markdown.jsx.map +1 -0
- package/dist/esm/ui/components/Page.jsx +121 -0
- package/dist/esm/ui/components/Page.jsx.map +1 -0
- package/dist/esm/ui/components/References.jsx +32 -0
- package/dist/esm/ui/components/References.jsx.map +1 -0
- package/dist/esm/ui/components/SearchPalette.jsx +178 -0
- package/dist/esm/ui/components/SearchPalette.jsx.map +1 -0
- package/dist/esm/ui/components/Sidebar.jsx +63 -0
- package/dist/esm/ui/components/Sidebar.jsx.map +1 -0
- package/dist/esm/ui/components/Syntax.jsx +10 -0
- package/dist/esm/ui/components/Syntax.jsx.map +1 -0
- package/dist/esm/ui/components/ThemeToggle.jsx +25 -0
- package/dist/esm/ui/components/ThemeToggle.jsx.map +1 -0
- package/dist/esm/ui/components/Type.jsx +444 -0
- package/dist/esm/ui/components/Type.jsx.map +1 -0
- package/dist/esm/ui/components/index.js +16 -0
- package/dist/esm/ui/components/index.js.map +1 -0
- package/dist/esm/ui/context/components.jsx +30 -0
- package/dist/esm/ui/context/components.jsx.map +1 -0
- package/dist/esm/ui/context/global.js +15 -0
- package/dist/esm/ui/context/global.js.map +1 -0
- package/dist/esm/ui/context/index.js +5 -0
- package/dist/esm/ui/context/index.js.map +1 -0
- package/dist/esm/ui/context/markup/index.jsx +25 -0
- package/dist/esm/ui/context/markup/index.jsx.map +1 -0
- package/dist/esm/ui/context/markup/markdown.js +34 -0
- package/dist/esm/ui/context/markup/markdown.js.map +1 -0
- package/dist/esm/ui/context/markup/shiki.js +58 -0
- package/dist/esm/ui/context/markup/shiki.js.map +1 -0
- package/dist/esm/ui/context/markup/util.js +22 -0
- package/dist/esm/ui/context/markup/util.js.map +1 -0
- package/dist/esm/ui/context/project/index.jsx +27 -0
- package/dist/esm/ui/context/project/index.jsx.map +1 -0
- package/dist/esm/ui/context/project/indexed.js +47 -0
- package/dist/esm/ui/context/project/indexed.js.map +1 -0
- package/dist/esm/ui/context/project/types.js +2 -0
- package/dist/esm/ui/context/project/types.js.map +1 -0
- package/dist/esm/ui/context/theme.jsx +36 -0
- package/dist/esm/ui/context/theme.jsx.map +1 -0
- package/dist/esm/ui/hooks/index.js +94 -0
- package/dist/esm/ui/hooks/index.js.map +1 -0
- package/dist/esm/ui/index.js +5 -0
- package/dist/esm/ui/index.js.map +1 -0
- package/dist/esm/ui/renderer.jsx +21 -0
- package/dist/esm/ui/renderer.jsx.map +1 -0
- package/dist/esm/ui/util/comment.js +14 -0
- package/dist/esm/ui/util/comment.js.map +1 -0
- package/dist/esm/ui/util/kind.js +85 -0
- package/dist/esm/ui/util/kind.js.map +1 -0
- package/dist/esm/ui/util/markdown.js +66 -0
- package/dist/esm/ui/util/markdown.js.map +1 -0
- package/dist/esm/ui/util/search.js +75 -0
- package/dist/esm/ui/util/search.js.map +1 -0
- package/dist/ts/_lib/fs/index.d.ts +6 -0
- package/dist/ts/_lib/fs/index.d.ts.map +1 -0
- package/dist/ts/_lib/fs/watch.d.ts +14 -0
- package/dist/ts/_lib/fs/watch.d.ts.map +1 -0
- package/dist/ts/_lib/index.d.ts +10 -0
- package/dist/ts/_lib/index.d.ts.map +1 -0
- package/dist/ts/_lib/jiti/index.d.ts +2 -0
- package/dist/ts/_lib/jiti/index.d.ts.map +1 -0
- package/dist/ts/_lib/path/index.d.ts +12 -0
- package/dist/ts/_lib/path/index.d.ts.map +1 -0
- package/dist/ts/_lib/pkg/index.d.ts +28 -0
- package/dist/ts/_lib/pkg/index.d.ts.map +1 -0
- package/dist/ts/_lib/repo/index.d.ts +30 -0
- package/dist/ts/_lib/repo/index.d.ts.map +1 -0
- package/dist/ts/_lib/slug/index.d.ts +4 -0
- package/dist/ts/_lib/slug/index.d.ts.map +1 -0
- package/dist/ts/_lib/t.d.ts +11 -0
- package/dist/ts/_lib/t.d.ts.map +1 -0
- package/dist/ts/_lib/tsconfig/index.d.ts +8 -0
- package/dist/ts/_lib/tsconfig/index.d.ts.map +1 -0
- package/dist/ts/_lib/util/index.d.ts +9 -0
- package/dist/ts/_lib/util/index.d.ts.map +1 -0
- package/dist/ts/cli/cmd/dev.d.ts +27 -0
- package/dist/ts/cli/cmd/dev.d.ts.map +1 -0
- package/dist/ts/cli/cmd/index.d.ts +4 -0
- package/dist/ts/cli/cmd/index.d.ts.map +1 -0
- package/dist/ts/cli/cmd/init.d.ts +14 -0
- package/dist/ts/cli/cmd/init.d.ts.map +1 -0
- package/dist/ts/cli/cmd/json.d.ts +12 -0
- package/dist/ts/cli/cmd/json.d.ts.map +1 -0
- package/dist/ts/cli/env.d.ts +2 -0
- package/dist/ts/cli/env.d.ts.map +1 -0
- package/dist/ts/cli/index.d.ts +78 -0
- package/dist/ts/cli/index.d.ts.map +1 -0
- package/dist/ts/cli/vite/client/index.d.ts +10 -0
- package/dist/ts/cli/vite/client/index.d.ts.map +1 -0
- package/dist/ts/cli/vite/index.d.ts +12 -0
- package/dist/ts/cli/vite/index.d.ts.map +1 -0
- package/dist/ts/cli.d.ts +3 -0
- package/dist/ts/cli.d.ts.map +1 -0
- package/dist/ts/config/defaults.d.ts +10 -0
- package/dist/ts/config/defaults.d.ts.map +1 -0
- package/dist/ts/config/file.d.ts +3 -0
- package/dist/ts/config/file.d.ts.map +1 -0
- package/dist/ts/config/index.d.ts +6 -0
- package/dist/ts/config/index.d.ts.map +1 -0
- package/dist/ts/config/load.d.ts +36 -0
- package/dist/ts/config/load.d.ts.map +1 -0
- package/dist/ts/config/types.d.ts +56 -0
- package/dist/ts/config/types.d.ts.map +1 -0
- package/dist/ts/core/index.d.ts +3 -0
- package/dist/ts/core/index.d.ts.map +1 -0
- package/dist/ts/core/project/debug.d.ts +3 -0
- package/dist/ts/core/project/debug.d.ts.map +1 -0
- package/dist/ts/core/project/index.d.ts +17 -0
- package/dist/ts/core/project/index.d.ts.map +1 -0
- package/dist/ts/core/project/naming.d.ts +23 -0
- package/dist/ts/core/project/naming.d.ts.map +1 -0
- package/dist/ts/core/project/routing.d.ts +61 -0
- package/dist/ts/core/project/routing.d.ts.map +1 -0
- package/dist/ts/core/project/types.d.ts +56 -0
- package/dist/ts/core/project/types.d.ts.map +1 -0
- package/dist/ts/core/reflect/index.d.ts +22 -0
- package/dist/ts/core/reflect/index.d.ts.map +1 -0
- package/dist/ts/core/reflect/indexed.d.ts +83 -0
- package/dist/ts/core/reflect/indexed.d.ts.map +1 -0
- package/dist/ts/core/reflect/resolve.d.ts +3 -0
- package/dist/ts/core/reflect/resolve.d.ts.map +1 -0
- package/dist/ts/core/reflect/scan.d.ts +218 -0
- package/dist/ts/core/reflect/scan.d.ts.map +1 -0
- package/dist/ts/core/reflect/state.d.ts +44 -0
- package/dist/ts/core/reflect/state.d.ts.map +1 -0
- package/dist/ts/core/reflect/types.d.ts +289 -0
- package/dist/ts/core/reflect/types.d.ts.map +1 -0
- package/dist/ts/core/reflect/walk.d.ts +28 -0
- package/dist/ts/core/reflect/walk.d.ts.map +1 -0
- package/dist/ts/solidjs/index.d.ts +2 -0
- package/dist/ts/solidjs/index.d.ts.map +1 -0
- package/dist/ts/solidjs/jsx-runtime.d.ts +2 -0
- package/dist/ts/solidjs/jsx-runtime.d.ts.map +1 -0
- package/dist/ts/ui/App.d.ts +17 -0
- package/dist/ts/ui/App.d.ts.map +1 -0
- package/dist/ts/ui/components/Breadcrumb.d.ts +4 -0
- package/dist/ts/ui/components/Breadcrumb.d.ts.map +1 -0
- package/dist/ts/ui/components/Code/index.d.ts +17 -0
- package/dist/ts/ui/components/Code/index.d.ts.map +1 -0
- package/dist/ts/ui/components/Comment.d.ts +49 -0
- package/dist/ts/ui/components/Comment.d.ts.map +1 -0
- package/dist/ts/ui/components/Declaration.d.ts +122 -0
- package/dist/ts/ui/components/Declaration.d.ts.map +1 -0
- package/dist/ts/ui/components/Header.d.ts +5 -0
- package/dist/ts/ui/components/Header.d.ts.map +1 -0
- package/dist/ts/ui/components/Layout.d.ts +5 -0
- package/dist/ts/ui/components/Layout.d.ts.map +1 -0
- package/dist/ts/ui/components/Link.d.ts +15 -0
- package/dist/ts/ui/components/Link.d.ts.map +1 -0
- package/dist/ts/ui/components/LivePreview/Example.d.ts +16 -0
- package/dist/ts/ui/components/LivePreview/Example.d.ts.map +1 -0
- package/dist/ts/ui/components/LivePreview/Sandbox.d.ts +20 -0
- package/dist/ts/ui/components/LivePreview/Sandbox.d.ts.map +1 -0
- package/dist/ts/ui/components/LivePreview/index.d.ts +4 -0
- package/dist/ts/ui/components/LivePreview/index.d.ts.map +1 -0
- package/dist/ts/ui/components/LivePreview/transform.d.ts +19 -0
- package/dist/ts/ui/components/LivePreview/transform.d.ts.map +1 -0
- package/dist/ts/ui/components/Markdown.d.ts +11 -0
- package/dist/ts/ui/components/Markdown.d.ts.map +1 -0
- package/dist/ts/ui/components/Page.d.ts +21 -0
- package/dist/ts/ui/components/Page.d.ts.map +1 -0
- package/dist/ts/ui/components/References.d.ts +2 -0
- package/dist/ts/ui/components/References.d.ts.map +1 -0
- package/dist/ts/ui/components/SearchPalette.d.ts +5 -0
- package/dist/ts/ui/components/SearchPalette.d.ts.map +1 -0
- package/dist/ts/ui/components/Sidebar.d.ts +5 -0
- package/dist/ts/ui/components/Sidebar.d.ts.map +1 -0
- package/dist/ts/ui/components/Syntax.d.ts +15 -0
- package/dist/ts/ui/components/Syntax.d.ts.map +1 -0
- package/dist/ts/ui/components/ThemeToggle.d.ts +2 -0
- package/dist/ts/ui/components/ThemeToggle.d.ts.map +1 -0
- package/dist/ts/ui/components/Type.d.ts +82 -0
- package/dist/ts/ui/components/Type.d.ts.map +1 -0
- package/dist/ts/ui/components/index.d.ts +15 -0
- package/dist/ts/ui/components/index.d.ts.map +1 -0
- package/dist/ts/ui/context/components.d.ts +124 -0
- package/dist/ts/ui/context/components.d.ts.map +1 -0
- package/dist/ts/ui/context/global.d.ts +210 -0
- package/dist/ts/ui/context/global.d.ts.map +1 -0
- package/dist/ts/ui/context/index.d.ts +5 -0
- package/dist/ts/ui/context/index.d.ts.map +1 -0
- package/dist/ts/ui/context/markup/index.d.ts +20 -0
- package/dist/ts/ui/context/markup/index.d.ts.map +1 -0
- package/dist/ts/ui/context/markup/markdown.d.ts +4 -0
- package/dist/ts/ui/context/markup/markdown.d.ts.map +1 -0
- package/dist/ts/ui/context/markup/shiki.d.ts +17 -0
- package/dist/ts/ui/context/markup/shiki.d.ts.map +1 -0
- package/dist/ts/ui/context/markup/util.d.ts +11 -0
- package/dist/ts/ui/context/markup/util.d.ts.map +1 -0
- package/dist/ts/ui/context/project/index.d.ts +25 -0
- package/dist/ts/ui/context/project/index.d.ts.map +1 -0
- package/dist/ts/ui/context/project/indexed.d.ts +4 -0
- package/dist/ts/ui/context/project/indexed.d.ts.map +1 -0
- package/dist/ts/ui/context/project/types.d.ts +13 -0
- package/dist/ts/ui/context/project/types.d.ts.map +1 -0
- package/dist/ts/ui/context/theme.d.ts +12 -0
- package/dist/ts/ui/context/theme.d.ts.map +1 -0
- package/dist/ts/ui/hooks/index.d.ts +29 -0
- package/dist/ts/ui/hooks/index.d.ts.map +1 -0
- package/dist/ts/ui/index.d.ts +5 -0
- package/dist/ts/ui/index.d.ts.map +1 -0
- package/dist/ts/ui/renderer.d.ts +200 -0
- package/dist/ts/ui/renderer.d.ts.map +1 -0
- package/dist/ts/ui/util/comment.d.ts +4 -0
- package/dist/ts/ui/util/comment.d.ts.map +1 -0
- package/dist/ts/ui/util/kind.d.ts +15 -0
- package/dist/ts/ui/util/kind.d.ts.map +1 -0
- package/dist/ts/ui/util/markdown.d.ts +8 -0
- package/dist/ts/ui/util/markdown.d.ts.map +1 -0
- package/dist/ts/ui/util/search.d.ts +20 -0
- package/dist/ts/ui/util/search.d.ts.map +1 -0
- package/package.json +89 -0
- package/src/_lib/fs/index.ts +23 -0
- package/src/_lib/fs/watch.ts +40 -0
- package/src/_lib/index.ts +9 -0
- package/src/_lib/jiti/index.ts +18 -0
- package/src/_lib/path/index.ts +44 -0
- package/src/_lib/pkg/index.ts +165 -0
- package/src/_lib/repo/index.ts +138 -0
- package/src/_lib/slug/index.ts +26 -0
- package/src/_lib/t.ts +17 -0
- package/src/_lib/tsconfig/index.ts +20 -0
- package/src/_lib/util/index.ts +53 -0
- package/src/cli/cmd/dev.ts +86 -0
- package/src/cli/cmd/index.ts +3 -0
- package/src/cli/cmd/init.ts +80 -0
- package/src/cli/cmd/json.ts +28 -0
- package/src/cli/env.ts +6 -0
- package/src/cli/index.ts +14 -0
- package/src/cli/vite/client/index.html +27 -0
- package/src/cli/vite/client/index.tsx +30 -0
- package/src/cli/vite/client/public/apple-touch-icon.png +0 -0
- package/src/cli/vite/client/public/favicon-96x96.png +0 -0
- package/src/cli/vite/client/public/favicon.ico +0 -0
- package/src/cli/vite/client/public/favicon.svg +1 -0
- package/src/cli/vite/client/public/site.webmanifest +21 -0
- package/src/cli/vite/client/public/web-app-manifest-192x192.png +0 -0
- package/src/cli/vite/client/public/web-app-manifest-512x512.png +0 -0
- package/src/cli/vite/index.ts +115 -0
- package/src/cli.ts +6 -0
- package/src/config/defaults.ts +36 -0
- package/src/config/file.ts +53 -0
- package/src/config/index.ts +11 -0
- package/src/config/load.ts +95 -0
- package/src/config/types.ts +59 -0
- package/src/core/index.ts +2 -0
- package/src/core/project/debug.ts +30 -0
- package/src/core/project/index.ts +58 -0
- package/src/core/project/naming.ts +49 -0
- package/src/core/project/routing.ts +234 -0
- package/src/core/project/types.ts +47 -0
- package/src/core/reflect/index.ts +18 -0
- package/src/core/reflect/indexed.ts +242 -0
- package/src/core/reflect/resolve.ts +159 -0
- package/src/core/reflect/scan.ts +816 -0
- package/src/core/reflect/state.ts +75 -0
- package/src/core/reflect/types.ts +164 -0
- package/src/core/reflect/walk.ts +121 -0
- package/src/solidjs/index.ts +1 -0
- package/src/solidjs/jsx-runtime.ts +1 -0
- package/src/ui/App.tsx +115 -0
- package/src/ui/components/Breadcrumb.tsx +53 -0
- package/src/ui/components/Code/index.tsx +112 -0
- package/src/ui/components/Comment.tsx +221 -0
- package/src/ui/components/Declaration.tsx +210 -0
- package/src/ui/components/Header.tsx +99 -0
- package/src/ui/components/Layout.tsx +62 -0
- package/src/ui/components/Link.tsx +43 -0
- package/src/ui/components/LivePreview/Example.tsx +104 -0
- package/src/ui/components/LivePreview/Sandbox.tsx +36 -0
- package/src/ui/components/LivePreview/index.ts +3 -0
- package/src/ui/components/LivePreview/transform.ts +28 -0
- package/src/ui/components/Markdown.tsx +16 -0
- package/src/ui/components/Page.tsx +162 -0
- package/src/ui/components/References.tsx +34 -0
- package/src/ui/components/SearchPalette.tsx +266 -0
- package/src/ui/components/Sidebar.tsx +107 -0
- package/src/ui/components/Syntax.tsx +10 -0
- package/src/ui/components/ThemeToggle.tsx +50 -0
- package/src/ui/components/Type.tsx +583 -0
- package/src/ui/components/index.ts +15 -0
- package/src/ui/context/components.tsx +103 -0
- package/src/ui/context/global.ts +33 -0
- package/src/ui/context/index.ts +4 -0
- package/src/ui/context/markup/index.tsx +39 -0
- package/src/ui/context/markup/markdown.ts +37 -0
- package/src/ui/context/markup/shiki.ts +72 -0
- package/src/ui/context/markup/util.ts +20 -0
- package/src/ui/context/project/index.tsx +47 -0
- package/src/ui/context/project/indexed.ts +52 -0
- package/src/ui/context/project/types.ts +14 -0
- package/src/ui/context/theme.tsx +45 -0
- package/src/ui/hooks/index.ts +116 -0
- package/src/ui/index.ts +4 -0
- package/src/ui/renderer.tsx +31 -0
- package/src/ui/util/comment.ts +12 -0
- package/src/ui/util/kind.ts +120 -0
- package/src/ui/util/markdown.ts +74 -0
- package/src/ui/util/search.ts +84 -0
- package/theme.css +301 -0
- package/tsconfig.client.json +12 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { onMount, onCleanup } from 'solid-js';
|
|
2
|
+
/** Plain child `div` — no isolation. */
|
|
3
|
+
const inline = (root) => {
|
|
4
|
+
const target = document.createElement('div');
|
|
5
|
+
root.appendChild(target);
|
|
6
|
+
return { target, dispose: () => target.remove(), reset: () => target.replaceChildren() };
|
|
7
|
+
};
|
|
8
|
+
// Shadow DOM / iframe strategies can be added here later (iframe will need an
|
|
9
|
+
// async/ready variant since its document isn't available synchronously).
|
|
10
|
+
const strategies = { inline };
|
|
11
|
+
/**
|
|
12
|
+
* A contained render location. Resolves a target element via the chosen
|
|
13
|
+
* isolation strategy and hands it back through `ref` once mounted.
|
|
14
|
+
*/
|
|
15
|
+
export const Sandbox = (props) => {
|
|
16
|
+
let root;
|
|
17
|
+
onMount(() => {
|
|
18
|
+
const strategy = strategies[props.isolate ?? 'inline'] ?? inline;
|
|
19
|
+
const { target, dispose } = strategy(root);
|
|
20
|
+
props.ref?.(target);
|
|
21
|
+
onCleanup(dispose);
|
|
22
|
+
});
|
|
23
|
+
return <div ref={root} class={props.class}/>;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=Sandbox.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sandbox.jsx","sourceRoot":"","sources":["../../../../../src/ui/components/LivePreview/Sandbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAW7C,wCAAwC;AACxC,MAAM,MAAM,GAAsB,CAAC,IAAI,EAAE,EAAE;IACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC5C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IACxB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,CAAA;AAC1F,CAAC,CAAA;AAED,8EAA8E;AAC9E,yEAAyE;AACzE,MAAM,UAAU,GAA8C,EAAE,MAAM,EAAE,CAAA;AAExE;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAwF,EAAE,EAAE;IAClH,IAAI,IAAqB,CAAA;IACzB,OAAO,CAAC,GAAG,EAAE;QACX,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,MAAM,CAAA;QAChE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC1C,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;QACnB,SAAS,CAAC,OAAO,CAAC,CAAA;IACpB,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAG,CAAA;AAC/C,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ui/components/LivePreview/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { transform as sucraseTransform } from 'sucrase';
|
|
2
|
+
/**
|
|
3
|
+
* Transform a TS/JSX snippet into runnable JS. Framework-agnostic: point
|
|
4
|
+
* `jsxPragma` / `jsxFragmentPragma` at whatever runtime you inject when
|
|
5
|
+
* executing the result.
|
|
6
|
+
*/
|
|
7
|
+
export const transform = (src, options = {}) => {
|
|
8
|
+
const code = sucraseTransform(src, {
|
|
9
|
+
transforms: options.transforms ?? ['typescript', 'jsx'],
|
|
10
|
+
jsxPragma: options.jsxPragma,
|
|
11
|
+
jsxFragmentPragma: options.jsxFragmentPragma,
|
|
12
|
+
production: options.production ?? true,
|
|
13
|
+
}).code;
|
|
14
|
+
return code;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../../src/ui/components/LivePreview/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAkB,MAAM,SAAS,CAAA;AAcvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,UAA0B,EAAE,EAAU,EAAE;IAC7E,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE;QACjC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;QACvD,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;KACvC,CAAC,CAAC,IAAI,CAAA;IACP,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createMemo, Show } from 'solid-js';
|
|
2
|
+
import cn from '@lickle/cn';
|
|
3
|
+
import { useMarkup } from "../context/index.js";
|
|
4
|
+
export const Markdown = (props) => {
|
|
5
|
+
const markup = useMarkup();
|
|
6
|
+
const html = createMemo(() => markup.marked()?.parse(props.source, { async: false }));
|
|
7
|
+
return <Show when={html()}>{(h) => <div class={cn('markdown', props.class)} innerHTML={h()}/>}</Show>;
|
|
8
|
+
};
|
|
9
|
+
Markdown.Inline = (props) => {
|
|
10
|
+
const markup = useMarkup();
|
|
11
|
+
const html = createMemo(() => markup.marked()?.parse(props.source ?? '', { async: false }));
|
|
12
|
+
return <Show when={html()}>{(h) => <div class={cn('markdown-tight', props.class)} innerHTML={h()}/>}</Show>;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=Markdown.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Markdown.jsx","sourceRoot":"","sources":["../../../../src/ui/components/Markdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAyC,EAAE,EAAE;IACpE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACrF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,IAAI,CAAC,CAAA;AACxG,CAAC,CAAA;AAED,QAAQ,CAAC,MAAM,GAAG,CAAC,KAA0C,EAAE,EAAE;IAC/D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IAC3F,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,IAAI,CAAC,CAAA;AAC9G,CAAC,CAAA"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { For, Show, createMemo } from 'solid-js';
|
|
2
|
+
import { A } from '@solidjs/router';
|
|
3
|
+
import { createSlot, useProject } from "../context/index.js";
|
|
4
|
+
import { useReferences } from "../hooks/index.js";
|
|
5
|
+
import { labelOf, pluralLabel, groupOrder } from "../util/kind.js";
|
|
6
|
+
import { commentSummaryText } from "../util/comment.js";
|
|
7
|
+
import { Declaration } from "./Declaration.jsx";
|
|
8
|
+
import { Breadcrumb } from "./Breadcrumb.jsx";
|
|
9
|
+
import { Markdown } from "./Markdown.jsx";
|
|
10
|
+
import { Type } from "./Type.jsx";
|
|
11
|
+
export const Page = createSlot('page', (props) => (<article>
|
|
12
|
+
<PageHeader {...props}/>
|
|
13
|
+
<Declaration decl={props.decl}/>
|
|
14
|
+
<Children route={props.route}/>
|
|
15
|
+
<References id={props.decl.id}/>
|
|
16
|
+
</article>));
|
|
17
|
+
/** Renders a markdown page — its `content` parsed inline. */
|
|
18
|
+
export const MarkdownPage = createSlot('page.markdown', (props) => (<article>
|
|
19
|
+
<Markdown source={props.route.page.content}/>
|
|
20
|
+
</article>));
|
|
21
|
+
export const PageHeader = createSlot('page.header', (props) => (<header class="mb-5">
|
|
22
|
+
<Breadcrumb id={props.decl.id}/>
|
|
23
|
+
<div class="flex items-baseline gap-3 flex-wrap">
|
|
24
|
+
<h1 class="text-2xl font-semibold tracking-tight font-mono">{props.route.label}</h1>
|
|
25
|
+
<Type.KindLabel kind={props.decl.kind}/>
|
|
26
|
+
<Show when={props.decl.comment?.tags?.some((t) => t.tag === '@deprecated')}>
|
|
27
|
+
<span class="text-xs uppercase tracking-wider text-mute">· deprecated</span>
|
|
28
|
+
</Show>
|
|
29
|
+
</div>
|
|
30
|
+
<Source sources={props.decl.sources}/>
|
|
31
|
+
</header>));
|
|
32
|
+
/** Stock source-location renderer. Replaceable via `slots.source`. */
|
|
33
|
+
export const Source = createSlot('page.source', (props) => {
|
|
34
|
+
const project = useProject();
|
|
35
|
+
return (<Show when={props.sources?.[0]}>
|
|
36
|
+
{(s) => {
|
|
37
|
+
const link = project().sourceLink(s());
|
|
38
|
+
const text = `${s().file}:${s().line}`;
|
|
39
|
+
if (link) {
|
|
40
|
+
return (<a href={link} class="text-xs text-mute mt-2 font-mono">
|
|
41
|
+
{text}
|
|
42
|
+
</a>);
|
|
43
|
+
}
|
|
44
|
+
return <div class="text-xs text-mute mt-2 font-mono">{text}</div>;
|
|
45
|
+
}}
|
|
46
|
+
</Show>);
|
|
47
|
+
});
|
|
48
|
+
/** Child pages of a module / namespace, grouped by kind and linked from the route tree. */
|
|
49
|
+
const Children = (props) => {
|
|
50
|
+
const project = useProject();
|
|
51
|
+
const groups = createMemo(() => groupChildren(project(), props.route.children));
|
|
52
|
+
return (<For each={groups()}>
|
|
53
|
+
{(group) => (<section class="mt-8">
|
|
54
|
+
<h2 class="text-sm font-semibold mb-3 pb-1.5 border-b border-line capitalize">{group.title}</h2>
|
|
55
|
+
<ul class="space-y-3">
|
|
56
|
+
<For each={group.items}>{(row) => <ChildRowView row={row}/>}</For>
|
|
57
|
+
</ul>
|
|
58
|
+
</section>)}
|
|
59
|
+
</For>);
|
|
60
|
+
};
|
|
61
|
+
const ChildRowView = (props) => (<li>
|
|
62
|
+
<div class="flex items-baseline gap-2.5 min-w-0">
|
|
63
|
+
<Type.KindBadge kind={props.row.kind} class="w-3.5 shrink-0"/>
|
|
64
|
+
<A href={`/${props.row.route.slug}`} class="font-mono font-semibold text-sm hover:opacity-70">
|
|
65
|
+
{props.row.route.label}
|
|
66
|
+
</A>
|
|
67
|
+
<Show when={props.row.decl}>{(d) => <Signature decl={d()}/>}</Show>
|
|
68
|
+
</div>
|
|
69
|
+
<Show when={props.row.summary}>
|
|
70
|
+
<p class="text-sm text-mute mt-1 pl-6 line-clamp-2">{props.row.summary}</p>
|
|
71
|
+
</Show>
|
|
72
|
+
</li>);
|
|
73
|
+
/** A terse inline type cue next to a member name (function params / variable type). */
|
|
74
|
+
const Signature = (props) => {
|
|
75
|
+
const d = props.decl;
|
|
76
|
+
if (d.kind === 'function' && d.signatures[0])
|
|
77
|
+
return (<span class="font-mono text-sm text-mute min-w-0 truncate">
|
|
78
|
+
<Type.SignatureExpr sig={d.signatures[0]}/>
|
|
79
|
+
</span>);
|
|
80
|
+
if (d.kind === 'variable')
|
|
81
|
+
return (<span class="font-mono text-sm text-mute min-w-0 truncate">
|
|
82
|
+
: <Type type={d.type}/>
|
|
83
|
+
</span>);
|
|
84
|
+
return null;
|
|
85
|
+
};
|
|
86
|
+
/** Bucket child routes by declaration kind, ordered by the canonical group order. */
|
|
87
|
+
const groupChildren = (project, children) => {
|
|
88
|
+
const buckets = new Map();
|
|
89
|
+
for (const route of children) {
|
|
90
|
+
const decl = project.byId(route.page.id);
|
|
91
|
+
const kind = decl?.kind ?? 'module';
|
|
92
|
+
const title = pluralLabel(kind);
|
|
93
|
+
const arr = buckets.get(title) ?? [];
|
|
94
|
+
arr.push({ route, decl, kind, summary: commentSummaryText(decl?.comment) });
|
|
95
|
+
buckets.set(title, arr);
|
|
96
|
+
}
|
|
97
|
+
return [...buckets.entries()]
|
|
98
|
+
.sort(([a], [b]) => groupOrder(a) - groupOrder(b) || a.localeCompare(b))
|
|
99
|
+
.map(([title, items]) => ({ title, items: items.sort((a, b) => a.route.label.localeCompare(b.route.label)) }));
|
|
100
|
+
};
|
|
101
|
+
export const References = createSlot('page.references', (props) => {
|
|
102
|
+
const rows = useReferences(() => props.id);
|
|
103
|
+
return (<Show when={rows().length}>
|
|
104
|
+
<section class="mt-10 lk-references">
|
|
105
|
+
<h2 class="font-semibold text-xl mb-4 pb-2 border-b border-line">Used in</h2>
|
|
106
|
+
<ul class="grid grid-cols-[max-content_1fr] gap-x-4 gap-y-1.5 items-baseline">
|
|
107
|
+
<For each={rows()}>{(r) => <ReferenceRowView row={r}/>}</For>
|
|
108
|
+
</ul>
|
|
109
|
+
</section>
|
|
110
|
+
</Show>);
|
|
111
|
+
});
|
|
112
|
+
const ReferenceRowView = (props) => (<li class="contents">
|
|
113
|
+
<span class="text-xs uppercase tracking-wider text-mute">{labelOf(props.row.decl.kind)}</span>
|
|
114
|
+
<A href={`/${props.row.slug}`} class="font-mono hover:opacity-70 min-w-0 wrap-break-word">
|
|
115
|
+
<Show when={props.row.module}>
|
|
116
|
+
<span class="text-mute">{props.row.module}.</span>
|
|
117
|
+
</Show>
|
|
118
|
+
<span class="font-medium">{props.row.name}</span>
|
|
119
|
+
</A>
|
|
120
|
+
</li>);
|
|
121
|
+
//# sourceMappingURL=Page.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Page.jsx","sourceRoot":"","sources":["../../../../src/ui/components/Page.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// import { For, Show } from 'solid-js'
|
|
2
|
+
// import { A } from '@solidjs/router'
|
|
3
|
+
export {};
|
|
4
|
+
// import { useReferences, type ReferenceRow } from '../hooks/index.ts'
|
|
5
|
+
// import { createSlot } from '../theme/slots/slot.tsx'
|
|
6
|
+
// import { labelOf } from '../util/kind.ts'
|
|
7
|
+
// export const References = createSlot('references', (props: { id: number }) => {
|
|
8
|
+
// const rows = useReferences(() => props.id)
|
|
9
|
+
// return (
|
|
10
|
+
// <Show when={rows().length}>
|
|
11
|
+
// <section class="mt-10 lk-references">
|
|
12
|
+
// <h2 class="font-semibold text-xl mb-4 pb-2 border-b border-line">Used in</h2>
|
|
13
|
+
// <ul>
|
|
14
|
+
// <For each={rows()}>{(r) => <ReferenceRowView row={r} />}</For>
|
|
15
|
+
// </ul>
|
|
16
|
+
// </section>
|
|
17
|
+
// </Show>
|
|
18
|
+
// )
|
|
19
|
+
// })
|
|
20
|
+
// const ReferenceRowView = (props: { row: ReferenceRow }) => (
|
|
21
|
+
// <li>
|
|
22
|
+
// <span class="kind">{labelOf(props.row.decl.kind)}</span>
|
|
23
|
+
// <A href={`/r/${props.row.slug}`} class="symbol font-mono hover:opacity-70">
|
|
24
|
+
// <Show when={props.row.module}>
|
|
25
|
+
// <span class="text-mute">{props.row.module}.</span>
|
|
26
|
+
// </Show>
|
|
27
|
+
// <span class="font-medium">{props.row.name}</span>
|
|
28
|
+
// </A>
|
|
29
|
+
// <span class="summary">{props.row.summary}</span>
|
|
30
|
+
// </li>
|
|
31
|
+
// )
|
|
32
|
+
//# sourceMappingURL=References.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"References.jsx","sourceRoot":"","sources":["../../../../src/ui/components/References.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;;AAEtC,uEAAuE;AACvE,uDAAuD;AACvD,4CAA4C;AAE5C,kFAAkF;AAClF,+CAA+C;AAE/C,aAAa;AACb,kCAAkC;AAClC,8CAA8C;AAC9C,wFAAwF;AACxF,eAAe;AACf,2EAA2E;AAC3E,gBAAgB;AAChB,mBAAmB;AACnB,cAAc;AACd,MAAM;AACN,KAAK;AAEL,+DAA+D;AAC/D,SAAS;AACT,+DAA+D;AAC/D,kFAAkF;AAClF,uCAAuC;AACvC,6DAA6D;AAC7D,gBAAgB;AAChB,0DAA0D;AAC1D,WAAW;AACX,uDAAuD;AACvD,UAAU;AACV,IAAI"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { For, Show, createEffect, createMemo, createResource, createSignal, on, onCleanup } from 'solid-js';
|
|
2
|
+
import { useNavigate } from '@solidjs/router';
|
|
3
|
+
import { useProject } from "../context/index.js";
|
|
4
|
+
import {} from "../util/search.js";
|
|
5
|
+
import { useSearch } from "../hooks/index.js";
|
|
6
|
+
import {} from "../util/kind.js";
|
|
7
|
+
import { Type } from "./Type.jsx";
|
|
8
|
+
const DEBOUNCE_MS = 80;
|
|
9
|
+
const DEFAULT_LIMIT = 12;
|
|
10
|
+
export const SearchPalette = (props) => {
|
|
11
|
+
const navigate = useNavigate();
|
|
12
|
+
const search = useSearch();
|
|
13
|
+
const project = useProject();
|
|
14
|
+
const [engine] = createResource(props.open, async (isOpen) => (isOpen ? await search() : undefined));
|
|
15
|
+
const [term, setTerm] = createSignal('');
|
|
16
|
+
const [debounced, setDebounced] = createSignal('');
|
|
17
|
+
const [highlight, setHighlight] = createSignal(0);
|
|
18
|
+
let inputRef;
|
|
19
|
+
createEffect(() => {
|
|
20
|
+
const t = term();
|
|
21
|
+
const timer = setTimeout(() => setDebounced(t), DEBOUNCE_MS);
|
|
22
|
+
onCleanup(() => clearTimeout(timer));
|
|
23
|
+
});
|
|
24
|
+
createEffect(on(props.open, (isOpen) => {
|
|
25
|
+
if (!isOpen)
|
|
26
|
+
return;
|
|
27
|
+
setTerm('');
|
|
28
|
+
setDebounced('');
|
|
29
|
+
setHighlight(0);
|
|
30
|
+
queueMicrotask(() => inputRef?.focus());
|
|
31
|
+
}));
|
|
32
|
+
const [hits] = createResource(() => [engine(), debounced()], async ([e, t]) => (e ? await e.query(t) : []));
|
|
33
|
+
// Before the user types, suggest the first module's entries so the palette
|
|
34
|
+
// opens with something to browse instead of an empty box.
|
|
35
|
+
const firstModule = createMemo(() => project().routes.find((r) => r.sidebar && r.page.kind !== 'markdown'));
|
|
36
|
+
const suggestions = createMemo(() => {
|
|
37
|
+
const mod = firstModule();
|
|
38
|
+
return mod ? childHits(project(), mod).slice(0, DEFAULT_LIMIT) : [];
|
|
39
|
+
});
|
|
40
|
+
const hasTerm = () => debounced().trim().length > 0;
|
|
41
|
+
const list = createMemo(() => (hasTerm() ? (hits() ?? []) : suggestions()));
|
|
42
|
+
createEffect(on(list, (l) => {
|
|
43
|
+
if (highlight() >= l.length)
|
|
44
|
+
setHighlight(0);
|
|
45
|
+
}));
|
|
46
|
+
const choose = (hit) => {
|
|
47
|
+
navigate(`/${hit.slug}`);
|
|
48
|
+
props.onClose();
|
|
49
|
+
};
|
|
50
|
+
const onKeyDown = (e) => {
|
|
51
|
+
const l = list();
|
|
52
|
+
if (e.key === 'ArrowDown') {
|
|
53
|
+
e.preventDefault();
|
|
54
|
+
if (l.length)
|
|
55
|
+
setHighlight((i) => (i + 1) % l.length);
|
|
56
|
+
}
|
|
57
|
+
else if (e.key === 'ArrowUp') {
|
|
58
|
+
e.preventDefault();
|
|
59
|
+
if (l.length)
|
|
60
|
+
setHighlight((i) => (i - 1 + l.length) % l.length);
|
|
61
|
+
}
|
|
62
|
+
else if (e.key === 'Enter') {
|
|
63
|
+
e.preventDefault();
|
|
64
|
+
const hit = l[highlight()];
|
|
65
|
+
if (hit)
|
|
66
|
+
choose(hit);
|
|
67
|
+
}
|
|
68
|
+
else if (e.key === 'Escape') {
|
|
69
|
+
e.preventDefault();
|
|
70
|
+
props.onClose();
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
return (<Show when={props.open()}>
|
|
74
|
+
<div class="fixed inset-0 z-50 bg-black/40 backdrop-blur-sm flex items-start justify-center p-4" onClick={() => props.onClose()} role="presentation">
|
|
75
|
+
<div class="w-full max-w-xl mt-[12vh] bg-bg border border-line rounded-xl shadow-2xl overflow-hidden flex flex-col max-h-[70vh]" onClick={(e) => e.stopPropagation()} role="dialog" aria-label="Search">
|
|
76
|
+
<div class="flex items-center gap-3 px-4 py-3.5 border-b border-line">
|
|
77
|
+
<SearchGlyph class="text-mute shrink-0"/>
|
|
78
|
+
<input ref={inputRef} type="text" value={term()} onInput={(e) => setTerm(e.currentTarget.value)} onKeyDown={onKeyDown} placeholder="Search functions, types, classes…" class="flex-1 bg-transparent outline-none text-[0.95rem] placeholder:text-mute" autocomplete="off" spellcheck={false}/>
|
|
79
|
+
<Kbd>esc</Kbd>
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<Show when={list().length} fallback={<EmptyState loading={engine.loading} term={debounced()}/>}>
|
|
83
|
+
<Show when={!hasTerm() && firstModule()}>
|
|
84
|
+
{(mod) => (<p class="px-5 pt-3 pb-1 text-[0.7rem] uppercase tracking-wider font-semibold text-mute">
|
|
85
|
+
{mod().label}
|
|
86
|
+
</p>)}
|
|
87
|
+
</Show>
|
|
88
|
+
<ul class="flex-1 overflow-y-auto p-2" role="listbox">
|
|
89
|
+
<For each={list()}>
|
|
90
|
+
{(hit, i) => (<li role="option" aria-selected={i() === highlight()} class="group flex items-center gap-3 px-3 py-2 rounded-lg cursor-pointer scroll-mt-2" classList={{ 'bg-hover': i() === highlight() }} onMouseEnter={() => setHighlight(i())} onClick={() => choose(hit)}>
|
|
91
|
+
<span class="flex items-center justify-center w-6 h-6 rounded-md border border-line bg-hover/50 shrink-0" classList={{ 'border-accent/40': i() === highlight() }}>
|
|
92
|
+
<Type.KindBadge kind={hit.kind} class="w-3.5"/>
|
|
93
|
+
</span>
|
|
94
|
+
<span class="font-mono font-semibold text-sm shrink-0">{hit.name}</span>
|
|
95
|
+
<Show when={hit.qualified && hit.qualified !== hit.name}>
|
|
96
|
+
<span class="font-mono text-xs text-mute truncate">{hit.qualified}</span>
|
|
97
|
+
</Show>
|
|
98
|
+
<Show when={hit.file}>
|
|
99
|
+
<span class="font-mono text-[0.7rem] text-mute truncate ml-auto pl-3 opacity-70">{hit.file}</span>
|
|
100
|
+
</Show>
|
|
101
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="shrink-0 text-mute transition-opacity" classList={{ 'opacity-0': i() !== highlight(), 'opacity-100': i() === highlight() }} aria-hidden="true">
|
|
102
|
+
<path d="M5 12h14M13 6l6 6-6 6" stroke-linecap="round" stroke-linejoin="round"/>
|
|
103
|
+
</svg>
|
|
104
|
+
</li>)}
|
|
105
|
+
</For>
|
|
106
|
+
</ul>
|
|
107
|
+
</Show>
|
|
108
|
+
|
|
109
|
+
<div class="flex items-center gap-4 px-4 py-2 border-t border-line text-[0.7rem] text-mute">
|
|
110
|
+
<span class="flex items-center gap-1.5">
|
|
111
|
+
<Kbd>↑</Kbd>
|
|
112
|
+
<Kbd>↓</Kbd>
|
|
113
|
+
<span>navigate</span>
|
|
114
|
+
</span>
|
|
115
|
+
<span class="flex items-center gap-1.5">
|
|
116
|
+
<Kbd>↵</Kbd>
|
|
117
|
+
<span>open</span>
|
|
118
|
+
</span>
|
|
119
|
+
<Show when={list().length}>
|
|
120
|
+
<span class="ml-auto tabular-nums">
|
|
121
|
+
{list().length} result{list().length === 1 ? '' : 's'}
|
|
122
|
+
</span>
|
|
123
|
+
</Show>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
</Show>);
|
|
128
|
+
};
|
|
129
|
+
/** Map a route's direct children into search-hit rows for the default listing. */
|
|
130
|
+
const childHits = (project, route) => {
|
|
131
|
+
const out = [];
|
|
132
|
+
for (const child of route.children) {
|
|
133
|
+
if (child.page.kind === 'markdown')
|
|
134
|
+
continue;
|
|
135
|
+
const decl = project.byId(child.page.id);
|
|
136
|
+
out.push({
|
|
137
|
+
name: child.label,
|
|
138
|
+
qualified: child.page.qualified,
|
|
139
|
+
kind: (decl?.kind ?? 'module'),
|
|
140
|
+
slug: child.slug,
|
|
141
|
+
file: decl?.sources?.[0]?.file ?? '',
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
return out;
|
|
145
|
+
};
|
|
146
|
+
const EmptyState = (props) => (<div class="flex-1 flex flex-col items-center justify-center text-center gap-3 px-6 py-16">
|
|
147
|
+
<Show when={!props.loading} fallback={<>
|
|
148
|
+
<Spinner />
|
|
149
|
+
<p class="text-sm text-mute">Building search index…</p>
|
|
150
|
+
</>}>
|
|
151
|
+
<div class="flex items-center justify-center w-12 h-12 rounded-full bg-hover text-mute">
|
|
152
|
+
<SearchGlyph size={22}/>
|
|
153
|
+
</div>
|
|
154
|
+
<Show when={props.term} fallback={<>
|
|
155
|
+
<p class="text-sm font-medium text-fg">Search the API</p>
|
|
156
|
+
<p class="text-xs text-mute max-w-xs leading-relaxed">
|
|
157
|
+
Jump to any function, type, class or interface by name.
|
|
158
|
+
</p>
|
|
159
|
+
</>}>
|
|
160
|
+
<p class="text-sm font-medium text-fg">
|
|
161
|
+
No matches for <span class="font-mono">“{props.term}”</span>
|
|
162
|
+
</p>
|
|
163
|
+
<p class="text-xs text-mute">Try a shorter or different term.</p>
|
|
164
|
+
</Show>
|
|
165
|
+
</Show>
|
|
166
|
+
</div>);
|
|
167
|
+
const Kbd = (props) => (<kbd class="font-mono text-[0.65rem] text-mute bg-hover border border-line rounded px-1.5 py-0.5 leading-none">
|
|
168
|
+
{props.children}
|
|
169
|
+
</kbd>);
|
|
170
|
+
const SearchGlyph = (props) => (<svg width={props.size ?? 16} height={props.size ?? 16} viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class={props.class} aria-hidden="true">
|
|
171
|
+
<circle cx="11" cy="11" r="7"/>
|
|
172
|
+
<path d="m20 20-3.5-3.5" stroke-linecap="round"/>
|
|
173
|
+
</svg>);
|
|
174
|
+
const Spinner = () => (<svg width="24" height="24" viewBox="0 0 24 24" fill="none" class="animate-spin text-mute" aria-hidden="true">
|
|
175
|
+
<circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="2" class="opacity-25"/>
|
|
176
|
+
<path d="M21 12a9 9 0 0 0-9-9" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
|
177
|
+
</svg>);
|
|
178
|
+
//# sourceMappingURL=SearchPalette.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchPalette.jsx","sourceRoot":"","sources":["../../../../src/ui/components/SearchPalette.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC3G,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,EAAE,UAAU,EAAc,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAkB,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAa,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEjC,MAAM,WAAW,GAAG,EAAE,CAAA;AACtB,MAAM,aAAa,GAAG,EAAE,CAAA;AAExB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAmD,EAAE,EAAE;IACnF,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAE5B,MAAM,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IAEpG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAA;IACxC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAA;IAClD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;IACjD,IAAI,QAA2B,CAAA;IAE/B,YAAY,CAAC,GAAG,EAAE;QAChB,MAAM,CAAC,GAAG,IAAI,EAAE,CAAA;QAChB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;QAC5D,SAAS,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,YAAY,CACV,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;QACxB,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,OAAO,CAAC,EAAE,CAAC,CAAA;QACX,YAAY,CAAC,EAAE,CAAC,CAAA;QAChB,YAAY,CAAC,CAAC,CAAC,CAAA;QACf,cAAc,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;IACzC,CAAC,CAAC,CACH,CAAA;IAED,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAC3B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAU,EACtC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAC9C,CAAA;IAED,2EAA2E;IAC3E,0DAA0D;IAC1D,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAA;IAC3G,MAAM,WAAW,GAAG,UAAU,CAAc,GAAG,EAAE;QAC/C,MAAM,GAAG,GAAG,WAAW,EAAE,CAAA;QACzB,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACrE,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAA;IACnD,MAAM,IAAI,GAAG,UAAU,CAAc,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IAExF,YAAY,CACV,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;QACb,IAAI,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM;YAAE,YAAY,CAAC,CAAC,CAAC,CAAA;IAC9C,CAAC,CAAC,CACH,CAAA;IAED,MAAM,MAAM,GAAG,CAAC,GAAc,EAAE,EAAE;QAChC,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;QACxB,KAAK,CAAC,OAAO,EAAE,CAAA;IACjB,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,CAAC,CAAgB,EAAE,EAAE;QACrC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAA;QAChB,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAC1B,CAAC,CAAC,cAAc,EAAE,CAAA;YAClB,IAAI,CAAC,CAAC,MAAM;gBAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;QACvD,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC/B,CAAC,CAAC,cAAc,EAAE,CAAA;YAClB,IAAI,CAAC,CAAC,MAAM;gBAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;QAClE,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YAC7B,CAAC,CAAC,cAAc,EAAE,CAAA;YAClB,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;YAC1B,IAAI,GAAG;gBAAE,MAAM,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC9B,CAAC,CAAC,cAAc,EAAE,CAAA;YAClB,KAAK,CAAC,OAAO,EAAE,CAAA;QACjB,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CACvB;MAAA,CAAC,GAAG,CACF,KAAK,CAAC,qFAAqF,CAC3F,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAC/B,IAAI,CAAC,cAAc,CAEnB;QAAA,CAAC,GAAG,CACF,KAAK,CAAC,qHAAqH,CAC3H,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CACpC,IAAI,CAAC,QAAQ,CACb,UAAU,CAAC,QAAQ,CAEnB;UAAA,CAAC,GAAG,CAAC,KAAK,CAAC,0DAA0D,CACnE;YAAA,CAAC,WAAW,CAAC,KAAK,CAAC,oBAAoB,EACvC;YAAA,CAAC,KAAK,CACJ,GAAG,CAAC,CAAC,QAAQ,CAAC,CACd,IAAI,CAAC,MAAM,CACX,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CACd,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAC/C,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,WAAW,CAAC,mCAAmC,CAC/C,KAAK,CAAC,yEAAyE,CAC/E,YAAY,CAAC,KAAK,CAClB,UAAU,CAAC,CAAC,KAAK,CAAC,EAEpB;YAAA,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CACf;UAAA,EAAE,GAAG,CAEL;;UAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,EAAG,CAAC,CAC9F;YAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,CACtC;cAAA,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACR,CAAC,CAAC,CAAC,KAAK,CAAC,+EAA+E,CACtF;kBAAA,CAAC,GAAG,EAAE,CAAC,KAAK,CACd;gBAAA,EAAE,CAAC,CAAC,CACL,CACH;YAAA,EAAE,IAAI,CACN;YAAA,CAAC,EAAE,CAAC,KAAK,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,CACnD;cAAA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAChB;gBAAA,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACX,CAAC,EAAE,CACD,IAAI,CAAC,QAAQ,CACb,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC,CACnC,KAAK,CAAC,+EAA+E,CACrF,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,SAAS,EAAE,EAAE,CAAC,CAC/C,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CACtC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAE3B;oBAAA,CAAC,IAAI,CACH,KAAK,CAAC,6FAA6F,CACnG,SAAS,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,KAAK,SAAS,EAAE,EAAE,CAAC,CAEvD;sBAAA,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,EAC/C;oBAAA,EAAE,IAAI,CACN;oBAAA,CAAC,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CACvE;oBAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,IAAI,CAAC,CACtD;sBAAA,CAAC,IAAI,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAC1E;oBAAA,EAAE,IAAI,CACN;oBAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CACnB;sBAAA,CAAC,IAAI,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CACnG;oBAAA,EAAE,IAAI,CACN;oBAAA,CAAC,GAAG,CACF,KAAK,CAAC,IAAI,CACV,MAAM,CAAC,IAAI,CACX,OAAO,CAAC,WAAW,CACnB,IAAI,CAAC,MAAM,CACX,MAAM,CAAC,cAAc,CACrB,YAAY,CAAC,GAAG,CAChB,KAAK,CAAC,uCAAuC,CAC7C,SAAS,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,SAAS,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,SAAS,EAAE,EAAE,CAAC,CACpF,WAAW,CAAC,MAAM,CAElB;sBAAA,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAChF;oBAAA,EAAE,GAAG,CACP;kBAAA,EAAE,EAAE,CAAC,CACN,CACH;cAAA,EAAE,GAAG,CACP;YAAA,EAAE,EAAE,CACN;UAAA,EAAE,IAAI,CAEN;;UAAA,CAAC,GAAG,CAAC,KAAK,CAAC,gFAAgF,CACzF;YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,CACrC;cAAA,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CACX;cAAA,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CACX;cAAA,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CACtB;YAAA,EAAE,IAAI,CACN;YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,CACrC;cAAA,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CACX;cAAA,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAClB;YAAA,EAAE,IAAI,CACN;YAAA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CACxB;cAAA,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAChC;gBAAA,CAAC,IAAI,EAAE,CAAC,MAAM,CAAE,OAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CACvD;cAAA,EAAE,IAAI,CACR;YAAA,EAAE,IAAI,CACR;UAAA,EAAE,GAAG,CACP;QAAA,EAAE,GAAG,CACP;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,IAAI,CAAC,CACR,CAAA;AACH,CAAC,CAAA;AAED,kFAAkF;AAClF,MAAM,SAAS,GAAG,CAAC,OAAsB,EAAE,KAAsB,EAAe,EAAE;IAChF,MAAM,GAAG,GAAgB,EAAE,CAAA;IAC3B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU;YAAE,SAAQ;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACxC,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,KAAK,CAAC,KAAK;YACjB,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS;YAC/B,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,QAAQ,CAAS;YACtC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE;SACrC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,KAAyC,EAAE,EAAE,CAAC,CAChE,CAAC,GAAG,CAAC,KAAK,CAAC,+EAA+E,CACxF;IAAA,CAAC,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CACrB,QAAQ,CAAC,CACP,EACE;UAAA,CAAC,OAAO,CAAC,AAAD,EACR;UAAA,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,CAAC,CACxD;QAAA,GACF,CAAC,CAED;MAAA,CAAC,GAAG,CAAC,KAAK,CAAC,4EAA4E,CACrF;QAAA,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EACxB;MAAA,EAAE,GAAG,CACL;MAAA,CAAC,IAAI,CACH,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CACjB,QAAQ,CAAC,CACP,EACE;YAAA,CAAC,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC,cAAc,EAAE,CAAC,CACxD;YAAA,CAAC,CAAC,CAAC,KAAK,CAAC,4CAA4C,CACnD;;YACF,EAAE,CAAC,CACL;UAAA,GACF,CAAC,CAED;QAAA,CAAC,CAAC,CAAC,KAAK,CAAC,6BAA6B,CACpC;yBAAe,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAC7D;QAAA,EAAE,CAAC,CACH;QAAA,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,gCAAgC,EAAE,CAAC,CAClE;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,IAAI,CACR;EAAA,EAAE,GAAG,CAAC,CACP,CAAA;AAED,MAAM,GAAG,GAAG,CAAC,KAAwB,EAAE,EAAE,CAAC,CACxC,CAAC,GAAG,CAAC,KAAK,CAAC,mGAAmG,CAC5G;IAAA,CAAC,KAAK,CAAC,QAAQ,CACjB;EAAA,EAAE,GAAG,CAAC,CACP,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,KAAwC,EAAE,EAAE,CAAC,CAChE,CAAC,GAAG,CACF,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CACxB,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CACzB,OAAO,CAAC,WAAW,CACnB,IAAI,CAAC,MAAM,CACX,MAAM,CAAC,cAAc,CACrB,YAAY,CAAC,KAAK,CAClB,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CACnB,WAAW,CAAC,MAAM,CAElB;IAAA,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAC7B;IAAA,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC,OAAO,EACjD;EAAA,EAAE,GAAG,CAAC,CACP,CAAA;AAED,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,CACpB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,WAAW,CAAC,MAAM,CAC3G;IAAA,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EACvF;IAAA,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,EAC9F;EAAA,EAAE,GAAG,CAAC,CACP,CAAA"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { For, Show, createMemo, createSignal } from 'solid-js';
|
|
2
|
+
import { A, useLocation } from '@solidjs/router';
|
|
3
|
+
import { createSlot, useProject } from "../context/index.js";
|
|
4
|
+
import { Type } from "./Type.jsx";
|
|
5
|
+
export const Sidebar = createSlot('sidebar', (props) => {
|
|
6
|
+
const project = useProject();
|
|
7
|
+
const routes = createMemo(() => project().routes.filter((r) => r.sidebar));
|
|
8
|
+
return (<aside class={`text-[0.8125rem] ${props.class ?? ''}`}>
|
|
9
|
+
<nav class="pt-5 pb-10 px-2.5 space-y-0.5">
|
|
10
|
+
<NavList nodes={routes()} depth={0} onNavigate={props.onNavigate}/>
|
|
11
|
+
</nav>
|
|
12
|
+
</aside>);
|
|
13
|
+
});
|
|
14
|
+
/** A list of sibling routes, with a `group` header inserted whenever it changes. */
|
|
15
|
+
const NavList = (props) => (<For each={props.nodes}>
|
|
16
|
+
{(node, i) => (<>
|
|
17
|
+
<Show when={node.group && node.group !== props.nodes[i() - 1]?.group}>
|
|
18
|
+
<GroupHeader label={node.group} depth={props.depth}/>
|
|
19
|
+
</Show>
|
|
20
|
+
<NavNode node={node} depth={props.depth} onNavigate={props.onNavigate}/>
|
|
21
|
+
</>)}
|
|
22
|
+
</For>);
|
|
23
|
+
const GroupHeader = (props) => (<div class="pt-4 pb-1 px-2 text-[0.7rem] uppercase tracking-wider font-semibold text-mute first:pt-1" style={{ 'padding-left': indent(props.depth) }}>
|
|
24
|
+
{props.label}
|
|
25
|
+
</div>);
|
|
26
|
+
const NavNode = (props) => {
|
|
27
|
+
const loc = useLocation();
|
|
28
|
+
const kids = createMemo(() => props.node.children.filter((c) => c.sidebar));
|
|
29
|
+
const hasChildren = () => kids().length > 0;
|
|
30
|
+
const isActive = () => loc.pathname === `/${props.node.slug}`;
|
|
31
|
+
const [open, setOpen] = createSignal(false);
|
|
32
|
+
return (<div>
|
|
33
|
+
<div class="flex items-center" style={{ 'padding-left': indent(props.depth) }}>
|
|
34
|
+
<Show when={hasChildren()} fallback={<span class="w-5 shrink-0"/>}>
|
|
35
|
+
<button type="button" aria-label={open() ? 'Collapse' : 'Expand'} aria-expanded={open()} onClick={() => setOpen((v) => !v)} class="p-1 rounded-md text-mute hover:bg-hover hover:text-fg transition-colors cursor-pointer">
|
|
36
|
+
<Chevron open={open()}/>
|
|
37
|
+
</button>
|
|
38
|
+
</Show>
|
|
39
|
+
<A href={`/${props.node.slug}`} class="flex-1 flex items-center gap-2 rounded-md px-1.5 py-1 text-mute hover:bg-hover hover:text-fg transition-colors min-w-0" classList={{ '!text-fg !bg-hover font-medium': isActive() }} onClick={() => props.onNavigate?.()}>
|
|
40
|
+
<KindCue node={props.node}/>
|
|
41
|
+
<span class="font-mono truncate">{props.node.label}</span>
|
|
42
|
+
</A>
|
|
43
|
+
</div>
|
|
44
|
+
<Show when={hasChildren() && open()}>
|
|
45
|
+
<NavList nodes={kids()} depth={props.depth + 1} onNavigate={props.onNavigate}/>
|
|
46
|
+
</Show>
|
|
47
|
+
</div>);
|
|
48
|
+
};
|
|
49
|
+
const indent = (depth) => `${depth * 0.75}rem`;
|
|
50
|
+
const KindCue = (props) => {
|
|
51
|
+
const project = useProject();
|
|
52
|
+
const kind = () => {
|
|
53
|
+
const page = props.node.page;
|
|
54
|
+
if (page.kind === 'markdown')
|
|
55
|
+
return undefined;
|
|
56
|
+
return project().byId(page.id)?.kind;
|
|
57
|
+
};
|
|
58
|
+
return <Show when={kind()}>{(k) => <Type.KindBadge kind={k()} class="text-[0.7rem]! w-3.5 shrink-0"/>}</Show>;
|
|
59
|
+
};
|
|
60
|
+
const Chevron = (props) => (<svg width="10" height="10" viewBox="0 0 12 12" class={`shrink-0 text-mute transition-transform ${props.open ? 'rotate-90' : ''}`} aria-hidden="true">
|
|
61
|
+
<path d="M4 2.5 7.5 6 4 9.5" stroke="currentColor" stroke-width="1.5" fill="none" stroke-linecap="round"/>
|
|
62
|
+
</svg>);
|
|
63
|
+
//# sourceMappingURL=Sidebar.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidebar.jsx","sourceRoot":"","sources":["../../../../src/ui/components/Sidebar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export var Syntax;
|
|
2
|
+
(function (Syntax) {
|
|
3
|
+
/** Muted punctuation — brackets, commas, `=`, etc. */
|
|
4
|
+
Syntax.Punct = (p) => <span class="text-mute">{p.children}</span>;
|
|
5
|
+
/** Accent keyword — `const`, `type`, `extends`, intrinsics. */
|
|
6
|
+
Syntax.Kw = (p) => <span class="text-accent">{p.children}</span>;
|
|
7
|
+
/** Default-styled identifier. */
|
|
8
|
+
Syntax.Name = (p) => <span>{p.children}</span>;
|
|
9
|
+
})(Syntax || (Syntax = {}));
|
|
10
|
+
//# sourceMappingURL=Syntax.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Syntax.jsx","sourceRoot":"","sources":["../../../../src/ui/components/Syntax.tsx"],"names":[],"mappings":"AAAA,MAAM,KAAW,MAAM,CAStB;AATD,WAAiB,MAAM;IACrB,sDAAsD;IACzC,YAAK,GAAG,CAAC,CAAuB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;IAE7F,+DAA+D;IAClD,SAAE,GAAG,CAAC,CAAuB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;IAE5F,iCAAiC;IACpB,WAAI,GAAG,CAAC,CAAuB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;AAC5E,CAAC,EATgB,MAAM,KAAN,MAAM,QAStB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useTheme } from "../context/theme.jsx";
|
|
2
|
+
import { For } from 'solid-js';
|
|
3
|
+
const ICONS = {
|
|
4
|
+
light: 'M12 4V2M12 22v-2M4 12H2m20 0h-2M5.6 5.6 4.2 4.2m15.6 15.6-1.4-1.4M5.6 18.4 4.2 19.8M19.8 4.2l-1.4 1.4M12 7a5 5 0 1 0 0 10 5 5 0 0 0 0-10Z',
|
|
5
|
+
dark: 'M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79Z',
|
|
6
|
+
system: 'M3 6h18v10H3z M8 20h8 M12 16v4',
|
|
7
|
+
};
|
|
8
|
+
const LABELS = { light: 'Light', dark: 'Dark', system: 'System' };
|
|
9
|
+
export const ThemeToggle = () => {
|
|
10
|
+
const { mode, setMode } = useTheme();
|
|
11
|
+
const order = ['system', 'light', 'dark'];
|
|
12
|
+
return (<div role="radiogroup" aria-label="Theme" class="inline-flex items-center gap-0.5">
|
|
13
|
+
|
|
14
|
+
<For each={order}>
|
|
15
|
+
{(m) => (<button type="button" role="radio" aria-checked={mode() === m} title={LABELS[m]} onClick={() => setMode(m)} class="px-2 py-1 rounded-[5px] transition-colors duration-150 text-mute hover:text-fg cursor-pointer" classList={{
|
|
16
|
+
'bg-hover text-fg': mode() === m,
|
|
17
|
+
}}>
|
|
18
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
|
19
|
+
<path d={ICONS[m]}/>
|
|
20
|
+
</svg>
|
|
21
|
+
</button>)}
|
|
22
|
+
</For>
|
|
23
|
+
</div>);
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=ThemeToggle.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeToggle.jsx","sourceRoot":"","sources":["../../../../src/ui/components/ThemeToggle.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,sBAAsB,CAAA;AAC/D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9B,MAAM,KAAK,GAA8B;IACvC,KAAK,EACH,2IAA2I;IAC7I,IAAI,EAAE,iDAAiD;IACvD,MAAM,EAAE,gCAAgC;CACzC,CAAA;AAED,MAAM,MAAM,GAA8B,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AAE5F,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAA;IACpC,MAAM,KAAK,GAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAEtD,OAAO,CACL,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAEhF;;MAAA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CACf;QAAA,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACN,CAAC,MAAM,CACL,IAAI,CAAC,QAAQ,CACb,IAAI,CAAC,OAAO,CACZ,YAAY,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAC3B,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACjB,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAC1B,KAAK,CAAC,+FAA+F,CACrG,SAAS,CAAC,CAAC;gBACT,kBAAkB,EAAE,IAAI,EAAE,KAAK,CAAC;aACjC,CAAC,CAEF;YAAA,CAAC,GAAG,CACF,KAAK,CAAC,IAAI,CACV,MAAM,CAAC,IAAI,CACX,OAAO,CAAC,WAAW,CACnB,IAAI,CAAC,MAAM,CACX,MAAM,CAAC,cAAc,CACrB,YAAY,CAAC,KAAK,CAClB,cAAc,CAAC,OAAO,CACtB,eAAe,CAAC,OAAO,CAEvB;cAAA,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACpB;YAAA,EAAE,GAAG,CACP;UAAA,EAAE,MAAM,CAAC,CACV,CACH;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAA;AACH,CAAC,CAAA"}
|