@knitli/docs-components 1.1.10 → 1.1.12
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/dist/assets/logos/index.d.ts.map +1 -1
- package/dist/assets/styles/variables.css +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/templates/AstroConfigTemplate.d.mts +3 -0
- package/dist/templates/AstroConfigTemplate.d.mts.map +1 -0
- package/dist/templates/AstroConfigTemplate.mjs +305 -0
- package/package.json +5 -5
- package/scripts/copy-dist-assets.mjs +4 -1
- package/src/assets/favicon/index.ts +1 -1
- package/src/assets/logos/index.ts +8 -2
- package/src/assets/styles/variables.css +2 -2
- package/src/components/Footer.astro +41 -44
- package/src/components/PageFrame.astro +4 -10
- package/src/index.ts +2 -3
- package/src/templates/AstroConfigTemplate.mjs +324 -0
- package/CHANGELOG.md +0 -67
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/assets/logos/index.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,UAAU,QAAqC,CAAC;AAC7D,eAAO,MAAM,iBAAiB,QAAwC,CAAC;AACvE,eAAO,MAAM,gBAAgB,QAA6C,CAAC;AAC3E,eAAO,MAAM,iBAAiB,QAA4C,CAAC;AAC3E,eAAO,MAAM,iBAAiB,QAA4C,CAAC;AAC3E,eAAO,MAAM,cAAc,QAAyC,CAAC;AACrE,eAAO,MAAM,YAAY,QAAoC,CAAC;AAC9D,eAAO,MAAM,YAAY,QAAoC,CAAC;AAC9D,eAAO,MAAM,aAAa,QAAqC,CAAC;AAChE,eAAO,MAAM,YAAY,QAAoC,CAAC;AAC9D,eAAO,MAAM,YAAY,QAAoC,CAAC;AAC9D,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/assets/logos/index.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,UAAU,QAAqC,CAAC;AAC7D,eAAO,MAAM,iBAAiB,QAAwC,CAAC;AACvE,eAAO,MAAM,gBAAgB,QAA6C,CAAC;AAC3E,eAAO,MAAM,iBAAiB,QAA4C,CAAC;AAC3E,eAAO,MAAM,iBAAiB,QAA4C,CAAC;AAC3E,eAAO,MAAM,cAAc,QAAyC,CAAC;AACrE,eAAO,MAAM,YAAY,QAAoC,CAAC;AAC9D,eAAO,MAAM,YAAY,QAAoC,CAAC;AAC9D,eAAO,MAAM,aAAa,QAAqC,CAAC;AAChE,eAAO,MAAM,YAAY,QAAoC,CAAC;AAC9D,eAAO,MAAM,YAAY,QAAoC,CAAC;AAC9D,eAAO,MAAM,cAAc,QAG1B,CAAC;AACF,eAAO,MAAM,eAAe,QAG3B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC"}
|
|
@@ -89,8 +89,8 @@
|
|
|
89
89
|
/* === FONT FAMILIES === */
|
|
90
90
|
/* Knitli Brand Fonts - Warm, Editorial */
|
|
91
91
|
--font-knitli-display:
|
|
92
|
-
"Playfair Display", Didot, "Palatino Linotype", "Noto Serif",
|
|
93
|
-
serif;
|
|
92
|
+
"Playfair Display", Didot, "Palatino Linotype", "Noto Serif",
|
|
93
|
+
"DejaVu Serif", serif;
|
|
94
94
|
--font-knitli-body:
|
|
95
95
|
"Crimson Pro", Baskerville, Cambria, "Palatino Linotype", "Noto Serif",
|
|
96
96
|
"DejaVu Serif", serif;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,cAAc,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,cAAc,kBAAkB,CAAC;AAuBjC,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;CAmBtB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AAQF,wBAGE"}
|
package/dist/index.js
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
// Main exports for @knitli/docs-components package
|
|
7
7
|
// Export type definitions
|
|
8
8
|
export * from "./types/index.js";
|
|
9
|
-
import { codeweaverPrimary, codeweaverReverse, headlineLogoDark, headlineLogoLight, knitliLogo, knitliWordmark, recocoLogoLg, recocoLogoXs, recocoLogoMed, recocoLogoSm, recocoLogoXl, threadLogoDark, threadLogoLight, } from "./assets/logos/index.js";
|
|
10
9
|
import { faviconIco, faviconSvg } from "./assets/favicon/index.js";
|
|
10
|
+
import { codeweaverPrimary, codeweaverReverse, headlineLogoDark, headlineLogoLight, knitliLogo, knitliWordmark, recocoLogoLg, recocoLogoMed, recocoLogoSm, recocoLogoXl, recocoLogoXs, threadLogoDark, threadLogoLight, } from "./assets/logos/index.js";
|
|
11
11
|
import { codeweaverTheme, variables } from "./assets/styles/index.js";
|
|
12
12
|
import { docsStyle } from "./styles/index.js";
|
|
13
13
|
export const DocsAssets = {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AstroConfigTemplate.d.mts","sourceRoot":"","sources":["../../src/templates/AstroConfigTemplate.mjs"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 Knitli Inc.
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
// @ts-check
|
|
5
|
+
// import cloudflare from "@astrojs/cloudflare";
|
|
6
|
+
// import mdx from "@astrojs/mdx";
|
|
7
|
+
// import sitemap from "@astrojs/sitemap";
|
|
8
|
+
import starlight from "@astrojs/starlight";
|
|
9
|
+
// import favicons from "astro-favicons";
|
|
10
|
+
import { DocsAssets } from "@knitli/docs-components";
|
|
11
|
+
import { defineConfig, fontProviders } from "astro/config";
|
|
12
|
+
import { searchForWorkspaceRoot } from "vite";
|
|
13
|
+
// import starlightHeadingBadges from "starlight-heading-badges";
|
|
14
|
+
// import starlightContextualMenu from "starlight-contextual-menu";
|
|
15
|
+
// import starlightTags from "starlight-tags";
|
|
16
|
+
// import starlightLlmsText from "starlight-llms-txt";
|
|
17
|
+
const { headlineLogoDark, headlineLogoLight, variables, docsStyle, faviconIco, faviconSvg, } = DocsAssets;
|
|
18
|
+
const appName = "APP_NAME";
|
|
19
|
+
const description = "DESCRIPTION";
|
|
20
|
+
const shikiCfg = {
|
|
21
|
+
themes: ["catppuccin-latte", "catppuccin-mocha"],
|
|
22
|
+
bundledLangs: [
|
|
23
|
+
"ansi",
|
|
24
|
+
"rust",
|
|
25
|
+
"astro",
|
|
26
|
+
"yaml",
|
|
27
|
+
"bash",
|
|
28
|
+
"python",
|
|
29
|
+
"json",
|
|
30
|
+
"toml",
|
|
31
|
+
"typescript",
|
|
32
|
+
"markdown",
|
|
33
|
+
],
|
|
34
|
+
langAlias: {
|
|
35
|
+
sh: "bash",
|
|
36
|
+
js: "typescript",
|
|
37
|
+
py: "python",
|
|
38
|
+
rs: "rust",
|
|
39
|
+
md: "markdown",
|
|
40
|
+
yml: "yaml",
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
// https://astro.build/config
|
|
44
|
+
export default defineConfig({
|
|
45
|
+
site: "https://docs.knitli.com",
|
|
46
|
+
base: `/${appName.toLowerCase()}/`,
|
|
47
|
+
/*
|
|
48
|
+
adapter: cloudflare({
|
|
49
|
+
experimental: {
|
|
50
|
+
headersAndRedirectsDevModeSupport: true,
|
|
51
|
+
},
|
|
52
|
+
configPath: "./wrangler.jsonc",
|
|
53
|
+
imageService: "compile",
|
|
54
|
+
}),
|
|
55
|
+
*/
|
|
56
|
+
favicon: faviconIco,
|
|
57
|
+
// Image optimization
|
|
58
|
+
image: {
|
|
59
|
+
service: {
|
|
60
|
+
entrypoint: "astro/assets/services/sharp",
|
|
61
|
+
},
|
|
62
|
+
responsiveStyles: true,
|
|
63
|
+
layout: "constrained",
|
|
64
|
+
domains: [
|
|
65
|
+
"github.com",
|
|
66
|
+
"raw.githubusercontent.com",
|
|
67
|
+
"docs.knitli.com",
|
|
68
|
+
"knitli.com",
|
|
69
|
+
"avatars.githubusercontent.com",
|
|
70
|
+
"ui-avatars.com",
|
|
71
|
+
`${appName.toLowerCase()}.knitli.com`,
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
fonts: [
|
|
75
|
+
{
|
|
76
|
+
provider: fontProviders.google,
|
|
77
|
+
name: "DM Mono",
|
|
78
|
+
cssVariable: "--font-sans",
|
|
79
|
+
weights: [400, 500, 700],
|
|
80
|
+
styles: ["normal", "italic"],
|
|
81
|
+
subsets: ["latin"],
|
|
82
|
+
formats: ["woff2"],
|
|
83
|
+
fallbacks: [
|
|
84
|
+
"Roboto Mono",
|
|
85
|
+
"Menlo",
|
|
86
|
+
"Consolas",
|
|
87
|
+
"DejaVu Sans Mono",
|
|
88
|
+
"monospace",
|
|
89
|
+
],
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
provider: fontProviders.google,
|
|
93
|
+
name: "JetBrains Mono",
|
|
94
|
+
cssVariable: "--font-mono",
|
|
95
|
+
weights: [400, 500, 700],
|
|
96
|
+
styles: ["normal", "italic"],
|
|
97
|
+
subsets: ["latin"],
|
|
98
|
+
formats: ["woff2"],
|
|
99
|
+
fallbacks: [
|
|
100
|
+
"DM Mono",
|
|
101
|
+
"Roboto Mono",
|
|
102
|
+
"Menlo",
|
|
103
|
+
"Consolas",
|
|
104
|
+
"DejaVu Sans Mono",
|
|
105
|
+
"monospace",
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
headingIdCompat: true,
|
|
110
|
+
preserveScriptOrder: true,
|
|
111
|
+
// Build optimizations
|
|
112
|
+
build: {
|
|
113
|
+
inlineStylesheets: "auto",
|
|
114
|
+
assets: "_astro",
|
|
115
|
+
},
|
|
116
|
+
markdown: {
|
|
117
|
+
shikiConfig: {
|
|
118
|
+
...Object.fromEntries(Object.entries(shikiCfg).map(([key, value]) => key === "themes"
|
|
119
|
+
? [
|
|
120
|
+
key,
|
|
121
|
+
{
|
|
122
|
+
light: "catppuccin-latte",
|
|
123
|
+
dark: "catppuccin-mocha",
|
|
124
|
+
},
|
|
125
|
+
]
|
|
126
|
+
: [key, value])),
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
trailingSlash: "always",
|
|
130
|
+
// Vite configuration for better bundling
|
|
131
|
+
vite: {
|
|
132
|
+
server: {
|
|
133
|
+
fs: {
|
|
134
|
+
allow: [searchForWorkspaceRoot(process.cwd())],
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
assetsInclude: [
|
|
138
|
+
"src/*.webp",
|
|
139
|
+
"src/*.png",
|
|
140
|
+
"src/*.jpg",
|
|
141
|
+
"src/*.jpeg",
|
|
142
|
+
"src/*.svg",
|
|
143
|
+
"src/*.avif",
|
|
144
|
+
],
|
|
145
|
+
build: {
|
|
146
|
+
cssCodeSplit: true,
|
|
147
|
+
cssMinify: "lightningcss",
|
|
148
|
+
rolldownOptions: {
|
|
149
|
+
output: {
|
|
150
|
+
experimental: {
|
|
151
|
+
nativeMagicString: true,
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
treeshake: "smallest",
|
|
155
|
+
optimization: {
|
|
156
|
+
inlineConst: "smart",
|
|
157
|
+
},
|
|
158
|
+
ssr: false,
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
css: {
|
|
162
|
+
lightningcss: {},
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
prefetch: {
|
|
166
|
+
defaultStrategy: "viewport",
|
|
167
|
+
},
|
|
168
|
+
experimental: {
|
|
169
|
+
chromeDevtoolsWorkspace: true,
|
|
170
|
+
clientPrerender: true,
|
|
171
|
+
contentIntellisense: true,
|
|
172
|
+
svgo: {
|
|
173
|
+
plugins: [
|
|
174
|
+
{
|
|
175
|
+
name: "preset-default",
|
|
176
|
+
params: {
|
|
177
|
+
overrides: {
|
|
178
|
+
removeMetadata: false,
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
],
|
|
183
|
+
},
|
|
184
|
+
rustCompiler: true,
|
|
185
|
+
},
|
|
186
|
+
// Static site generation for Cloudflare
|
|
187
|
+
output: "static",
|
|
188
|
+
integrations: [
|
|
189
|
+
starlight({
|
|
190
|
+
title: `${appName} Docs`,
|
|
191
|
+
description: description,
|
|
192
|
+
logo: {
|
|
193
|
+
dark: headlineLogoDark,
|
|
194
|
+
light: headlineLogoLight,
|
|
195
|
+
alt: "knitli logo",
|
|
196
|
+
replacesTitle: true,
|
|
197
|
+
},
|
|
198
|
+
editLink: {
|
|
199
|
+
baseUrl: `https://github.com/knitli/${appName.toLowerCase()}/edit/main/docs-site/src`,
|
|
200
|
+
},
|
|
201
|
+
expressiveCode: {
|
|
202
|
+
useStarlightDarkModeSwitch: true,
|
|
203
|
+
themes: ["catppuccin-latte", "catppuccin-mocha"],
|
|
204
|
+
removeUnusedThemes: true,
|
|
205
|
+
shiki: {
|
|
206
|
+
...Object.fromEntries(Object.entries(shikiCfg).filter(([key]) => key !== "themes")),
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
plugins: [
|
|
210
|
+
/*
|
|
211
|
+
astroD2({ skipGeneration: true }),
|
|
212
|
+
starlightLinksValidator(),
|
|
213
|
+
|
|
214
|
+
starlightScrollToTop(),
|
|
215
|
+
starlightChangelogs(),
|
|
216
|
+
starlightIconsPlugin(),
|
|
217
|
+
starlightPageActions({ baseUrl: `https://docs.knitli.com/${appName.toLowerCase()}` }),
|
|
218
|
+
starlightIconsIntegration(),
|
|
219
|
+
starlightIconsPlugin(),
|
|
220
|
+
starlightHeadingBadges(), starlightContextualMenu({
|
|
221
|
+
actions: ["copy", "view", "claude", "chatgpt"], share: true,
|
|
222
|
+
}),
|
|
223
|
+
// We need to configure starlight-tags with a tags.yml.
|
|
224
|
+
//starlightTags(),
|
|
225
|
+
starlightLlmsText({
|
|
226
|
+
projectName: appName,
|
|
227
|
+
description: `${appName} is a pure-Rust fork of the popular data processing and ETL framework, [CocoIndex](https://cocoindex.io). ${appName} features a highly modular architecture, with all sources, targets, and functions (i.e. transforms) implemented as feature-gated plugins. This allows users to easily customize and extend the framework to fit their specific data processing needs, while keeping the core lightweight and efficient.
|
|
228
|
+
Like CocoIndex, ${appName} is fast, efficient, and works on data incrementally. Both libraries are built using a *dataflow architecture*, allowing you to easily define complex data processing pipelines with multiple sources, targets, and transforms in only a few lines of code. CocoIndex is built in Rust, but its entire API is only in Python, and does not allow for choosing integrations. ${appName} exposes a robust Rust API that allows you to choose exactly which sources, targets, and transforms you want to use.
|
|
229
|
+
`,
|
|
230
|
+
promote: ["getting-started*", "architecture*", "file-processing*", "transient-flow*"],
|
|
231
|
+
demote: ["contributing*", "changelog*"],
|
|
232
|
+
minify: {
|
|
233
|
+
whitespace: true,
|
|
234
|
+
note: true,
|
|
235
|
+
details: true,
|
|
236
|
+
}
|
|
237
|
+
})
|
|
238
|
+
*/
|
|
239
|
+
],
|
|
240
|
+
social: [
|
|
241
|
+
{
|
|
242
|
+
icon: "github",
|
|
243
|
+
label: "GitHub",
|
|
244
|
+
href: `https://github.com/knitli/${appName.toLowerCase()}`,
|
|
245
|
+
},
|
|
246
|
+
],
|
|
247
|
+
components: {
|
|
248
|
+
Footer: "@knitli/docs-components/Footer.astro",
|
|
249
|
+
PageFrame: "@knitli/docs-components/PageFrame.astro",
|
|
250
|
+
},
|
|
251
|
+
customCss: [variables, docsStyle, "./src/styles/custom.css"],
|
|
252
|
+
head: [
|
|
253
|
+
{
|
|
254
|
+
tag: "meta",
|
|
255
|
+
attrs: {
|
|
256
|
+
property: "og:image",
|
|
257
|
+
content: `https://docs.knitli.com/${appName.toLowerCase()}/og-image.png`,
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
tag: "meta",
|
|
262
|
+
attrs: {
|
|
263
|
+
property: "twitter:card",
|
|
264
|
+
content: "summary_large_image",
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
],
|
|
268
|
+
sidebar: [
|
|
269
|
+
{
|
|
270
|
+
label: "Guides",
|
|
271
|
+
autogenerate: { directory: "guides" },
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
label: "Examples",
|
|
275
|
+
autogenerate: { directory: "examples" },
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
label: "Reference",
|
|
279
|
+
autogenerate: { directory: "reference" },
|
|
280
|
+
},
|
|
281
|
+
],
|
|
282
|
+
}),
|
|
283
|
+
/*
|
|
284
|
+
mdx(),
|
|
285
|
+
favicons({
|
|
286
|
+
name: `${appName} Docs by Knitli`,
|
|
287
|
+
short_name: `${appName} Docs`,
|
|
288
|
+
input: {
|
|
289
|
+
favicons: [faviconSvg],
|
|
290
|
+
},
|
|
291
|
+
}),
|
|
292
|
+
sitemap({
|
|
293
|
+
filter: (page) => !/\^\/(?!cdn-cgi\/)/.test(page),
|
|
294
|
+
changefreq: "weekly",
|
|
295
|
+
priority: 0.4,
|
|
296
|
+
lastmod: new Date(),
|
|
297
|
+
namespaces: {
|
|
298
|
+
image: false,
|
|
299
|
+
video: false,
|
|
300
|
+
},
|
|
301
|
+
}),
|
|
302
|
+
|
|
303
|
+
*/
|
|
304
|
+
],
|
|
305
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knitli/docs-components",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.12",
|
|
4
4
|
"description": "Shared branded components for Knitli documentation sites",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"knitli",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"CHANGELOG.md"
|
|
41
41
|
],
|
|
42
42
|
"scripts": {
|
|
43
|
-
"build": "bunx tsc && bun run
|
|
43
|
+
"build": "bunx tsc && bun run copy-assets",
|
|
44
44
|
"copy-assets": "bun run scripts/copy-assets.mjs",
|
|
45
45
|
"prepublishOnly": "bun run copy-assets && bun run build",
|
|
46
46
|
"publish": "npm publish --access public || node --input-type=commonjs -e \"const v=require('./package.json').version;const r=require('child_process').spawnSync('npm',['view','@knitli/docs-components@'+v,'version'],{stdio:'ignore'});if(r.status===0){console.log('Version '+v+' already published, skipping')}else{process.exit(1)}\"",
|
|
@@ -52,15 +52,15 @@
|
|
|
52
52
|
"@knitli/shared-layouts": "workspace:*",
|
|
53
53
|
"@knitli/tsconfig": "*",
|
|
54
54
|
"@types/node": "catalog:types",
|
|
55
|
+
"@types/react": "catalog:types",
|
|
55
56
|
"astro": "catalog:astro-core",
|
|
56
57
|
"auto-changelog": "^2.4.0",
|
|
57
58
|
"bun": "catalog:dev-common",
|
|
58
59
|
"lightningcss": "catalog:optimization",
|
|
59
60
|
"svgo": "catalog:optimization",
|
|
60
61
|
"typescript": "catalog:dev-common",
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"vite": "catalog:dev-common"
|
|
62
|
+
"vite": "catalog:dev-common",
|
|
63
|
+
"vitest": "catalog:dev-common"
|
|
64
64
|
},
|
|
65
65
|
"peerDependencies": {
|
|
66
66
|
"@astrojs/starlight": "catalog:astro-core",
|
|
@@ -9,7 +9,10 @@ const pkgRoot = resolve(__dirname, "..");
|
|
|
9
9
|
|
|
10
10
|
const copies = [
|
|
11
11
|
{ src: `${pkgRoot}/src/assets/logos`, dest: `${pkgRoot}/dist/assets/logos` },
|
|
12
|
-
{
|
|
12
|
+
{
|
|
13
|
+
src: `${pkgRoot}/src/assets/favicon`,
|
|
14
|
+
dest: `${pkgRoot}/dist/assets/favicon`,
|
|
15
|
+
},
|
|
13
16
|
{
|
|
14
17
|
src: `${pkgRoot}/src/assets/styles`,
|
|
15
18
|
dest: `${pkgRoot}/dist/assets/styles`,
|
|
@@ -20,8 +20,14 @@ export const recocoLogoLg = join(__dirname, "recoco-lg.webp");
|
|
|
20
20
|
export const recocoLogoMed = join(__dirname, "recoco-med.webp");
|
|
21
21
|
export const recocoLogoSm = join(__dirname, "recoco-sm.webp");
|
|
22
22
|
export const recocoLogoXs = join(__dirname, "recoco-xs.webp");
|
|
23
|
-
export const threadLogoDark = join(
|
|
24
|
-
|
|
23
|
+
export const threadLogoDark = join(
|
|
24
|
+
__dirname,
|
|
25
|
+
"Thread_vector_mono_parchment.svg",
|
|
26
|
+
);
|
|
27
|
+
export const threadLogoLight = join(
|
|
28
|
+
__dirname,
|
|
29
|
+
"Thread_vector_mono_aubergine.svg",
|
|
30
|
+
);
|
|
25
31
|
|
|
26
32
|
export type LogoAssets = {
|
|
27
33
|
knitliLogo: string;
|
|
@@ -89,8 +89,8 @@
|
|
|
89
89
|
/* === FONT FAMILIES === */
|
|
90
90
|
/* Knitli Brand Fonts - Warm, Editorial */
|
|
91
91
|
--font-knitli-display:
|
|
92
|
-
"Playfair Display", Didot, "Palatino Linotype", "Noto Serif",
|
|
93
|
-
serif;
|
|
92
|
+
"Playfair Display", Didot, "Palatino Linotype", "Noto Serif",
|
|
93
|
+
"DejaVu Serif", serif;
|
|
94
94
|
--font-knitli-body:
|
|
95
95
|
"Crimson Pro", Baskerville, Cambria, "Palatino Linotype", "Noto Serif",
|
|
96
96
|
"DejaVu Serif", serif;
|
|
@@ -23,6 +23,12 @@ import { Icon } from "@astrojs/starlight/components";
|
|
|
23
23
|
|
|
24
24
|
const currentYear = new Date().getFullYear();
|
|
25
25
|
|
|
26
|
+
const product = (import.meta.env.PUBLIC_DOCS_PRODUCT ?? "") as
|
|
27
|
+
| "Recoco"
|
|
28
|
+
| "CodeWeaver"
|
|
29
|
+
| "Thread"
|
|
30
|
+
| "";
|
|
31
|
+
|
|
26
32
|
const shouldShowDocsHomeLink = Astro.url.pathname !== "/";
|
|
27
33
|
---
|
|
28
34
|
|
|
@@ -30,12 +36,11 @@ const shouldShowDocsHomeLink = Astro.url.pathname !== "/";
|
|
|
30
36
|
<!-- Starlight's native page-level footer: edit link, last updated, pagination, optional credits -->
|
|
31
37
|
<div class="sl-flex page-actions">
|
|
32
38
|
<div class="meta sl-flex">
|
|
33
|
-
<EditLink/>
|
|
34
|
-
<LastUpdated/>
|
|
39
|
+
<EditLink />
|
|
40
|
+
<LastUpdated />
|
|
35
41
|
</div>
|
|
36
|
-
<Pagination/>
|
|
37
|
-
{
|
|
38
|
-
config.credits && (
|
|
42
|
+
<Pagination />
|
|
43
|
+
{config.credits && (
|
|
39
44
|
<a class="kudos sl-flex" href="https://starlight.astro.build">
|
|
40
45
|
|
|
41
46
|
<Icon name="starlight" /> {
|
|
@@ -50,7 +55,7 @@ const shouldShowDocsHomeLink = Astro.url.pathname !== "/";
|
|
|
50
55
|
<div class="footer-content sl-flex">
|
|
51
56
|
<div class="footer-brand">
|
|
52
57
|
<p class="copyright">
|
|
53
|
-
© {currentYear}
|
|
58
|
+
© {currentYear}Knitli, Inc. All rights reserved.
|
|
54
59
|
</p>
|
|
55
60
|
<div class="social-links sl-flex">
|
|
56
61
|
<a
|
|
@@ -60,7 +65,7 @@ const shouldShowDocsHomeLink = Astro.url.pathname !== "/";
|
|
|
60
65
|
target="_blank"
|
|
61
66
|
rel="noopener noreferrer"
|
|
62
67
|
>
|
|
63
|
-
<Icon name="github" size="1.1rem"/>
|
|
68
|
+
<Icon name="github" size="1.1rem" />
|
|
64
69
|
</a>
|
|
65
70
|
<a
|
|
66
71
|
href="https://x.com/knitli_inc"
|
|
@@ -69,7 +74,7 @@ const shouldShowDocsHomeLink = Astro.url.pathname !== "/";
|
|
|
69
74
|
target="_blank"
|
|
70
75
|
rel="noopener noreferrer"
|
|
71
76
|
>
|
|
72
|
-
<Icon name="x.com" size="1.1rem"/>
|
|
77
|
+
<Icon name="x.com" size="1.1rem" />
|
|
73
78
|
</a>
|
|
74
79
|
<a
|
|
75
80
|
href="https://bsky.app/profile/knitli.com"
|
|
@@ -78,7 +83,7 @@ const shouldShowDocsHomeLink = Astro.url.pathname !== "/";
|
|
|
78
83
|
target="_blank"
|
|
79
84
|
rel="noopener noreferrer"
|
|
80
85
|
>
|
|
81
|
-
<Icon name="blueSky" size="1.1rem"/>
|
|
86
|
+
<Icon name="blueSky" size="1.1rem" />
|
|
82
87
|
</a>
|
|
83
88
|
<a
|
|
84
89
|
href="https://linkedin.com/company/knitli"
|
|
@@ -87,7 +92,7 @@ const shouldShowDocsHomeLink = Astro.url.pathname !== "/";
|
|
|
87
92
|
target="_blank"
|
|
88
93
|
rel="noopener noreferrer"
|
|
89
94
|
>
|
|
90
|
-
<Icon name="linkedin" size="1.1rem"/>
|
|
95
|
+
<Icon name="linkedin" size="1.1rem" />
|
|
91
96
|
</a>
|
|
92
97
|
</div>
|
|
93
98
|
</div>
|
|
@@ -95,12 +100,8 @@ const shouldShowDocsHomeLink = Astro.url.pathname !== "/";
|
|
|
95
100
|
<nav class="footer-nav" aria-label="Knitli">
|
|
96
101
|
<p class="nav-heading">Knitli</p>
|
|
97
102
|
<ul>
|
|
98
|
-
<li>
|
|
99
|
-
|
|
100
|
-
</li>
|
|
101
|
-
<li>
|
|
102
|
-
<a href="https://blog.knitli.com">Blog</a>
|
|
103
|
-
</li>
|
|
103
|
+
<li><a href="https://knitli.com">knitli.com</a></li>
|
|
104
|
+
<li><a href="https://blog.knitli.com">Blog</a></li>
|
|
104
105
|
</ul>
|
|
105
106
|
</nav>
|
|
106
107
|
|
|
@@ -109,22 +110,31 @@ const shouldShowDocsHomeLink = Astro.url.pathname !== "/";
|
|
|
109
110
|
<ul>
|
|
110
111
|
{shouldShowDocsHomeLink && <li><a href="https://docs.knitli.com">Developer Docs</a></li>}
|
|
111
112
|
<li>
|
|
112
|
-
|
|
113
|
+
{product === "Recoco" ? (
|
|
114
|
+
<span class="link-current">Recoco</span>
|
|
115
|
+
) : (
|
|
116
|
+
<a href="https://docs.knitli.com/recoco/">Recoco</a>
|
|
117
|
+
)}
|
|
113
118
|
</li>
|
|
114
119
|
<li>
|
|
115
|
-
|
|
116
|
-
CodeWeaver
|
|
117
|
-
|
|
118
|
-
|
|
120
|
+
{product === "CodeWeaver" ? (
|
|
121
|
+
<span class="link-current">CodeWeaver</span>
|
|
122
|
+
) : (
|
|
123
|
+
<a href="https://docs.knitli.com/codeweaver/">CodeWeaver</a>
|
|
124
|
+
)}
|
|
119
125
|
</li>
|
|
120
126
|
<li>
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
127
|
+
{product === "Thread" ? (
|
|
128
|
+
<span class="link-current">Thread</span>
|
|
129
|
+
) : (
|
|
130
|
+
<a
|
|
131
|
+
href="https://docs.rs/thread"
|
|
132
|
+
target="_blank"
|
|
133
|
+
rel="noopener noreferrer"
|
|
134
|
+
>
|
|
135
|
+
Thread ↗
|
|
136
|
+
</a>
|
|
137
|
+
)}
|
|
128
138
|
</li>
|
|
129
139
|
</ul>
|
|
130
140
|
</nav>
|
|
@@ -253,23 +263,10 @@ const shouldShowDocsHomeLink = Astro.url.pathname !== "/";
|
|
|
253
263
|
color: var(--sl-color-accent-high);
|
|
254
264
|
}
|
|
255
265
|
|
|
256
|
-
.link-
|
|
266
|
+
.link-current {
|
|
257
267
|
font-size: var(--sl-text-sm);
|
|
258
|
-
color: var(--sl-color-
|
|
259
|
-
|
|
260
|
-
align-items: center;
|
|
261
|
-
gap: 0.4rem;
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
.soon-badge {
|
|
265
|
-
font-size: var(--sl-text-xs);
|
|
266
|
-
padding: 0.1em 0.4em;
|
|
267
|
-
border-radius: 3px;
|
|
268
|
-
background: var(--sl-color-accent-low);
|
|
269
|
-
color: var(--sl-color-accent-high);
|
|
270
|
-
font-weight: 600;
|
|
271
|
-
letter-spacing: 0.05em;
|
|
272
|
-
text-transform: uppercase;
|
|
268
|
+
color: var(--sl-color-white);
|
|
269
|
+
font-weight: 500;
|
|
273
270
|
}
|
|
274
271
|
}
|
|
275
272
|
|
|
@@ -52,12 +52,9 @@ const currentPath = Astro.url.pathname
|
|
|
52
52
|
</div>
|
|
53
53
|
</nav>
|
|
54
54
|
|
|
55
|
-
<header class="header">
|
|
56
|
-
<slot name="header"/>
|
|
57
|
-
</header>
|
|
55
|
+
<header class="header"><slot name="header" /></header>
|
|
58
56
|
|
|
59
|
-
{
|
|
60
|
-
hasSidebar && (
|
|
57
|
+
{hasSidebar && (
|
|
61
58
|
<nav class="sidebar print:hidden" aria-label={Astro.locals.t('sidebarNav.accessibleLabel')}>
|
|
62
59
|
<MobileMenuToggle />
|
|
63
60
|
<div id="starlight__sidebar" class="sidebar-pane">
|
|
@@ -66,12 +63,9 @@ const currentPath = Astro.url.pathname
|
|
|
66
63
|
</div>
|
|
67
64
|
</div>
|
|
68
65
|
</nav>
|
|
69
|
-
)
|
|
70
|
-
}
|
|
66
|
+
)}
|
|
71
67
|
|
|
72
|
-
<div class="main-frame">
|
|
73
|
-
<slot/>
|
|
74
|
-
</div>
|
|
68
|
+
<div class="main-frame"><slot /></div>
|
|
75
69
|
</div>
|
|
76
70
|
|
|
77
71
|
<style>
|
package/src/index.ts
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
// Export type definitions
|
|
9
9
|
export * from "./types/index.js";
|
|
10
10
|
|
|
11
|
+
import { faviconIco, faviconSvg } from "./assets/favicon/index.js";
|
|
11
12
|
import {
|
|
12
13
|
codeweaverPrimary,
|
|
13
14
|
codeweaverReverse,
|
|
@@ -16,16 +17,14 @@ import {
|
|
|
16
17
|
knitliLogo,
|
|
17
18
|
knitliWordmark,
|
|
18
19
|
recocoLogoLg,
|
|
19
|
-
recocoLogoXs,
|
|
20
20
|
recocoLogoMed,
|
|
21
21
|
recocoLogoSm,
|
|
22
22
|
recocoLogoXl,
|
|
23
|
+
recocoLogoXs,
|
|
23
24
|
threadLogoDark,
|
|
24
25
|
threadLogoLight,
|
|
25
26
|
} from "./assets/logos/index.js";
|
|
26
27
|
|
|
27
|
-
import { faviconIco, faviconSvg } from "./assets/favicon/index.js";
|
|
28
|
-
|
|
29
28
|
import { codeweaverTheme, variables } from "./assets/styles/index.js";
|
|
30
29
|
|
|
31
30
|
import { docsStyle } from "./styles/index.js";
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 Knitli Inc.
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
5
|
+
// @ts-check
|
|
6
|
+
|
|
7
|
+
// import cloudflare from "@astrojs/cloudflare";
|
|
8
|
+
// import mdx from "@astrojs/mdx";
|
|
9
|
+
// import sitemap from "@astrojs/sitemap";
|
|
10
|
+
import starlight from "@astrojs/starlight";
|
|
11
|
+
// import favicons from "astro-favicons";
|
|
12
|
+
import { DocsAssets } from "@knitli/docs-components";
|
|
13
|
+
import { defineConfig, fontProviders } from "astro/config";
|
|
14
|
+
import { searchForWorkspaceRoot } from "vite";
|
|
15
|
+
|
|
16
|
+
// import starlightHeadingBadges from "starlight-heading-badges";
|
|
17
|
+
// import starlightContextualMenu from "starlight-contextual-menu";
|
|
18
|
+
// import starlightTags from "starlight-tags";
|
|
19
|
+
// import starlightLlmsText from "starlight-llms-txt";
|
|
20
|
+
|
|
21
|
+
const {
|
|
22
|
+
headlineLogoDark,
|
|
23
|
+
headlineLogoLight,
|
|
24
|
+
variables,
|
|
25
|
+
docsStyle,
|
|
26
|
+
faviconIco,
|
|
27
|
+
faviconSvg,
|
|
28
|
+
} = DocsAssets;
|
|
29
|
+
|
|
30
|
+
const appName = "APP_NAME";
|
|
31
|
+
const description = "DESCRIPTION";
|
|
32
|
+
|
|
33
|
+
const shikiCfg = {
|
|
34
|
+
themes: ["catppuccin-latte", "catppuccin-mocha"],
|
|
35
|
+
bundledLangs: [
|
|
36
|
+
"ansi",
|
|
37
|
+
"rust",
|
|
38
|
+
"astro",
|
|
39
|
+
"yaml",
|
|
40
|
+
"bash",
|
|
41
|
+
"python",
|
|
42
|
+
"json",
|
|
43
|
+
"toml",
|
|
44
|
+
"typescript",
|
|
45
|
+
"markdown",
|
|
46
|
+
],
|
|
47
|
+
langAlias: {
|
|
48
|
+
sh: "bash",
|
|
49
|
+
js: "typescript",
|
|
50
|
+
py: "python",
|
|
51
|
+
rs: "rust",
|
|
52
|
+
md: "markdown",
|
|
53
|
+
yml: "yaml",
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// https://astro.build/config
|
|
58
|
+
export default defineConfig({
|
|
59
|
+
site: "https://docs.knitli.com",
|
|
60
|
+
base: `/${appName.toLowerCase()}/`,
|
|
61
|
+
/*
|
|
62
|
+
adapter: cloudflare({
|
|
63
|
+
experimental: {
|
|
64
|
+
headersAndRedirectsDevModeSupport: true,
|
|
65
|
+
},
|
|
66
|
+
configPath: "./wrangler.jsonc",
|
|
67
|
+
imageService: "compile",
|
|
68
|
+
}),
|
|
69
|
+
*/
|
|
70
|
+
favicon: faviconIco,
|
|
71
|
+
// Image optimization
|
|
72
|
+
image: {
|
|
73
|
+
service: {
|
|
74
|
+
entrypoint: "astro/assets/services/sharp",
|
|
75
|
+
},
|
|
76
|
+
responsiveStyles: true,
|
|
77
|
+
layout: "constrained",
|
|
78
|
+
domains: [
|
|
79
|
+
"github.com",
|
|
80
|
+
"raw.githubusercontent.com",
|
|
81
|
+
"docs.knitli.com",
|
|
82
|
+
"knitli.com",
|
|
83
|
+
"avatars.githubusercontent.com",
|
|
84
|
+
"ui-avatars.com",
|
|
85
|
+
`${appName.toLowerCase()}.knitli.com`,
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
fonts: [
|
|
89
|
+
{
|
|
90
|
+
provider: fontProviders.google,
|
|
91
|
+
name: "DM Mono",
|
|
92
|
+
cssVariable: "--font-sans",
|
|
93
|
+
weights: [400, 500, 700],
|
|
94
|
+
styles: ["normal", "italic"],
|
|
95
|
+
subsets: ["latin"],
|
|
96
|
+
formats: ["woff2"],
|
|
97
|
+
fallbacks: [
|
|
98
|
+
"Roboto Mono",
|
|
99
|
+
"Menlo",
|
|
100
|
+
"Consolas",
|
|
101
|
+
"DejaVu Sans Mono",
|
|
102
|
+
"monospace",
|
|
103
|
+
],
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
provider: fontProviders.google,
|
|
107
|
+
name: "JetBrains Mono",
|
|
108
|
+
cssVariable: "--font-mono",
|
|
109
|
+
weights: [400, 500, 700],
|
|
110
|
+
styles: ["normal", "italic"],
|
|
111
|
+
subsets: ["latin"],
|
|
112
|
+
formats: ["woff2"],
|
|
113
|
+
fallbacks: [
|
|
114
|
+
"DM Mono",
|
|
115
|
+
"Roboto Mono",
|
|
116
|
+
"Menlo",
|
|
117
|
+
"Consolas",
|
|
118
|
+
"DejaVu Sans Mono",
|
|
119
|
+
"monospace",
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
// Build optimizations
|
|
124
|
+
build: {
|
|
125
|
+
inlineStylesheets: "auto",
|
|
126
|
+
assets: "_astro",
|
|
127
|
+
},
|
|
128
|
+
markdown: {
|
|
129
|
+
shikiConfig: {
|
|
130
|
+
...Object.fromEntries(
|
|
131
|
+
Object.entries(shikiCfg).map(([key, value]) =>
|
|
132
|
+
key === "themes"
|
|
133
|
+
? [
|
|
134
|
+
key,
|
|
135
|
+
{
|
|
136
|
+
light: "catppuccin-latte",
|
|
137
|
+
dark: "catppuccin-mocha",
|
|
138
|
+
},
|
|
139
|
+
]
|
|
140
|
+
: [key, value],
|
|
141
|
+
),
|
|
142
|
+
),
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
trailingSlash: "always",
|
|
146
|
+
// Vite configuration for better bundling
|
|
147
|
+
vite: {
|
|
148
|
+
server: {
|
|
149
|
+
fs: {
|
|
150
|
+
allow: [searchForWorkspaceRoot(process.cwd())],
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
assetsInclude: [
|
|
154
|
+
"src/*.webp",
|
|
155
|
+
"src/*.png",
|
|
156
|
+
"src/*.jpg",
|
|
157
|
+
"src/*.jpeg",
|
|
158
|
+
"src/*.svg",
|
|
159
|
+
"src/*.avif",
|
|
160
|
+
],
|
|
161
|
+
build: {
|
|
162
|
+
cssCodeSplit: true,
|
|
163
|
+
cssMinify: "lightningcss",
|
|
164
|
+
rollupOptions: {
|
|
165
|
+
output: {
|
|
166
|
+
experimental: {
|
|
167
|
+
nativeMagicString: true,
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
treeshake: "smallest",
|
|
171
|
+
optimization: {
|
|
172
|
+
inlineConst: "smart",
|
|
173
|
+
},
|
|
174
|
+
ssr: false,
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
css: {
|
|
178
|
+
lightningcss: {},
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
prefetch: {
|
|
182
|
+
defaultStrategy: "viewport",
|
|
183
|
+
},
|
|
184
|
+
experimental: {
|
|
185
|
+
chromeDevtoolsWorkspace: true,
|
|
186
|
+
clientPrerender: true,
|
|
187
|
+
contentIntellisense: true,
|
|
188
|
+
svgo: {
|
|
189
|
+
plugins: [
|
|
190
|
+
{
|
|
191
|
+
name: "preset-default",
|
|
192
|
+
params: {
|
|
193
|
+
overrides: {
|
|
194
|
+
removeMetadata: false,
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
],
|
|
199
|
+
},
|
|
200
|
+
rustCompiler: true,
|
|
201
|
+
},
|
|
202
|
+
|
|
203
|
+
// Static site generation for Cloudflare
|
|
204
|
+
output: "static",
|
|
205
|
+
integrations: [
|
|
206
|
+
starlight({
|
|
207
|
+
title: `${appName} Docs`,
|
|
208
|
+
description: description,
|
|
209
|
+
logo: {
|
|
210
|
+
dark: headlineLogoDark,
|
|
211
|
+
light: headlineLogoLight,
|
|
212
|
+
alt: "knitli logo",
|
|
213
|
+
replacesTitle: true,
|
|
214
|
+
},
|
|
215
|
+
editLink: {
|
|
216
|
+
baseUrl: `https://github.com/knitli/${appName.toLowerCase()}/edit/main/docs-site/src`,
|
|
217
|
+
},
|
|
218
|
+
expressiveCode: {
|
|
219
|
+
useStarlightDarkModeSwitch: true,
|
|
220
|
+
themes: ["catppuccin-latte", "catppuccin-mocha"],
|
|
221
|
+
removeUnusedThemes: true,
|
|
222
|
+
shiki: {
|
|
223
|
+
...Object.fromEntries(
|
|
224
|
+
Object.entries(shikiCfg).filter(([key]) => key !== "themes"),
|
|
225
|
+
),
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
plugins: [
|
|
229
|
+
/*
|
|
230
|
+
astroD2({ skipGeneration: true }),
|
|
231
|
+
starlightLinksValidator(),
|
|
232
|
+
|
|
233
|
+
starlightScrollToTop(),
|
|
234
|
+
starlightChangelogs(),
|
|
235
|
+
starlightIconsPlugin(),
|
|
236
|
+
starlightPageActions({ baseUrl: `https://docs.knitli.com/${appName.toLowerCase()}` }),
|
|
237
|
+
starlightIconsIntegration(),
|
|
238
|
+
starlightIconsPlugin(),
|
|
239
|
+
starlightHeadingBadges(), starlightContextualMenu({
|
|
240
|
+
actions: ["copy", "view", "claude", "chatgpt"], share: true,
|
|
241
|
+
}),
|
|
242
|
+
// We need to configure starlight-tags with a tags.yml.
|
|
243
|
+
//starlightTags(),
|
|
244
|
+
starlightLlmsText({
|
|
245
|
+
projectName: appName,
|
|
246
|
+
description: `${appName} is a pure-Rust fork of the popular data processing and ETL framework, [CocoIndex](https://cocoindex.io). ${appName} features a highly modular architecture, with all sources, targets, and functions (i.e. transforms) implemented as feature-gated plugins. This allows users to easily customize and extend the framework to fit their specific data processing needs, while keeping the core lightweight and efficient.
|
|
247
|
+
Like CocoIndex, ${appName} is fast, efficient, and works on data incrementally. Both libraries are built using a *dataflow architecture*, allowing you to easily define complex data processing pipelines with multiple sources, targets, and transforms in only a few lines of code. CocoIndex is built in Rust, but its entire API is only in Python, and does not allow for choosing integrations. ${appName} exposes a robust Rust API that allows you to choose exactly which sources, targets, and transforms you want to use.
|
|
248
|
+
`,
|
|
249
|
+
promote: ["getting-started*", "architecture*", "file-processing*", "transient-flow*"],
|
|
250
|
+
demote: ["contributing*", "changelog*"],
|
|
251
|
+
minify: {
|
|
252
|
+
whitespace: true,
|
|
253
|
+
note: true,
|
|
254
|
+
details: true,
|
|
255
|
+
}
|
|
256
|
+
})
|
|
257
|
+
*/
|
|
258
|
+
],
|
|
259
|
+
social: [
|
|
260
|
+
{
|
|
261
|
+
icon: "github",
|
|
262
|
+
label: "GitHub",
|
|
263
|
+
href: `https://github.com/knitli/${appName.toLowerCase()}`,
|
|
264
|
+
},
|
|
265
|
+
],
|
|
266
|
+
components: {
|
|
267
|
+
Footer: "@knitli/docs-components/Footer.astro",
|
|
268
|
+
PageFrame: "@knitli/docs-components/PageFrame.astro",
|
|
269
|
+
},
|
|
270
|
+
customCss: [variables, docsStyle, "./src/styles/custom.css"],
|
|
271
|
+
head: [
|
|
272
|
+
{
|
|
273
|
+
tag: "meta",
|
|
274
|
+
attrs: {
|
|
275
|
+
property: "og:image",
|
|
276
|
+
content: `https://docs.knitli.com/${appName.toLowerCase()}/og-image.png`,
|
|
277
|
+
},
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
tag: "meta",
|
|
281
|
+
attrs: {
|
|
282
|
+
property: "twitter:card",
|
|
283
|
+
content: "summary_large_image",
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
],
|
|
287
|
+
sidebar: [
|
|
288
|
+
{
|
|
289
|
+
label: "Guides",
|
|
290
|
+
autogenerate: { directory: "guides" },
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
label: "Examples",
|
|
294
|
+
autogenerate: { directory: "examples" },
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
label: "Reference",
|
|
298
|
+
autogenerate: { directory: "reference" },
|
|
299
|
+
},
|
|
300
|
+
],
|
|
301
|
+
}),
|
|
302
|
+
/*
|
|
303
|
+
mdx(),
|
|
304
|
+
favicons({
|
|
305
|
+
name: `${appName} Docs by Knitli`,
|
|
306
|
+
short_name: `${appName} Docs`,
|
|
307
|
+
input: {
|
|
308
|
+
favicons: [faviconSvg],
|
|
309
|
+
},
|
|
310
|
+
}),
|
|
311
|
+
sitemap({
|
|
312
|
+
filter: (page) => !/\^\/(?!cdn-cgi\/)/.test(page),
|
|
313
|
+
changefreq: "weekly",
|
|
314
|
+
priority: 0.4,
|
|
315
|
+
lastmod: new Date(),
|
|
316
|
+
namespaces: {
|
|
317
|
+
image: false,
|
|
318
|
+
video: false,
|
|
319
|
+
},
|
|
320
|
+
}),
|
|
321
|
+
|
|
322
|
+
*/
|
|
323
|
+
],
|
|
324
|
+
});
|
package/CHANGELOG.md
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
### Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
|
4
|
-
|
|
5
|
-
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
6
|
-
|
|
7
|
-
#### 1.1.10
|
|
8
|
-
|
|
9
|
-
- fix: URL in footer
|
|
10
|
-
|
|
11
|
-
#### 1.1.9
|
|
12
|
-
|
|
13
|
-
- feat: Replace recoco logo images with new, sharper version.
|
|
14
|
-
|
|
15
|
-
#### 1.1.8
|
|
16
|
-
|
|
17
|
-
- fix: build asset propagation issue
|
|
18
|
-
|
|
19
|
-
#### 1.1.7
|
|
20
|
-
|
|
21
|
-
- fix: Another path resolution issue
|
|
22
|
-
|
|
23
|
-
#### 1.1.6
|
|
24
|
-
|
|
25
|
-
- fix: typo in Footer component
|
|
26
|
-
|
|
27
|
-
#### 1.1.5
|
|
28
|
-
|
|
29
|
-
- fix: path resolution issue on imported assets
|
|
30
|
-
|
|
31
|
-
#### 1.1.4
|
|
32
|
-
|
|
33
|
-
- fix: minor discovery issue
|
|
34
|
-
|
|
35
|
-
#### 1.1.3
|
|
36
|
-
|
|
37
|
-
- chore: Updated Recoco references to use consistent casing.
|
|
38
|
-
- feat: Bundled knitli shared assets.
|
|
39
|
-
- feat: Add custom.css.
|
|
40
|
-
|
|
41
|
-
#### 1.1.2
|
|
42
|
-
|
|
43
|
-
- fix: Move dependencies to dev dependencies to avoid npm install issues
|
|
44
|
-
|
|
45
|
-
#### 1.1.1
|
|
46
|
-
|
|
47
|
-
> 2026-02-19
|
|
48
|
-
|
|
49
|
-
- feat: Add `PageFrame.astro` — Starlight `PageFrame` override with fixed cross-site subnav bar (breadcrumb left, Knitli Home + Blog links right)
|
|
50
|
-
- feat: Add `Footer.astro` — Starlight `Footer` override that preserves native page-level footer (edit link, last updated, pagination, credits) and appends Knitli brand footer below
|
|
51
|
-
- feat: Update `DocsBreadcrumb.astro` — migrate styles to Starlight CSS variables, add `inline` variant for embedding in subnav bars, fix segment href generation, update Documentation link to point to `https://docs.knitli.com`
|
|
52
|
-
- feat: `PageFrame` reads `PUBLIC_DOCS_PRODUCT` env var to conditionally render breadcrumb; derives content path from `BASE_URL` for correct segment stripping across sub-path and standalone deployments
|
|
53
|
-
- feat: `PageFrame` uses `var(--sl-subnav-height, 2rem)` CSS fallback — no manual variable definition required in consuming sites
|
|
54
|
-
- fix: Subnav links correctly right-aligned when no breadcrumb is present (`margin-inline-start: auto`)
|
|
55
|
-
- chore: Remove `DocsHeader.astro` and `DocsFooter.astro` (replaced by `PageFrame.astro` and `Footer.astro`); stubs remain with hard errors to guide migration
|
|
56
|
-
- chore: Update `package.json` exports — add `PageFrame.astro`, `Footer.astro`; remove `DocsHeader.astro`, `DocsFooter.astro`; add `@astrojs/starlight >=0.30.0` peer dependency
|
|
57
|
-
|
|
58
|
-
#### 1.1.0
|
|
59
|
-
|
|
60
|
-
> 2026-02-19
|
|
61
|
-
|
|
62
|
-
- chore: Bump version
|
|
63
|
-
|
|
64
|
-
#### 1.0.4
|
|
65
|
-
|
|
66
|
-
- chore: Updated licensing and README to clarify difference between Knitli brand assets (proprietary) and the rest of the project (MIT OR Apache-2.0).
|
|
67
|
-
- chore: Updated configuration and tsconfig
|