@knitli/docs-components 1.0.0

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/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+ - Initial package structure
12
+ - DocsHeader component with Knitli branding
13
+ - Copper Archive CSS theme
14
+ - Logo assets and usage guide
package/README.md ADDED
@@ -0,0 +1,210 @@
1
+ # @knitli/docs-components
2
+
3
+ Shared branded components for Knitli documentation sites. This package is **not licensed**, which means you cannot include its components in your project without Knitli's written authorization. For license inquiries, contact license_request@knitli.com
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @knitli/docs-components
9
+ # or
10
+ bun add @knitli/docs-components
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ### Quick Start with Starlight
16
+
17
+ ```javascript
18
+ // astro.config.mjs
19
+ import { defineConfig } from "astro/config";
20
+ import starlight from "@astrojs/starlight";
21
+
22
+ export default defineConfig({
23
+ integrations: [
24
+ starlight({
25
+ title: "Your Product Docs",
26
+ components: {
27
+ Header: "@knitli/docs-components/DocsHeader.astro",
28
+ },
29
+ customCss: ["@knitli/docs-components/styles/theme.css"],
30
+ }),
31
+ ],
32
+ });
33
+ ```
34
+
35
+ ### Components
36
+
37
+ #### DocsHeader.astro
38
+
39
+ Branded header with Knitli logo, product navigation, and breadcrumbs.
40
+
41
+ **Props:**
42
+
43
+ ```typescript
44
+ interface Props {
45
+ currentProduct?: "ReCoco" | "CodeWeaver" | "Thread"; // Current product being documented
46
+ currentPath?: string; // Current URL path
47
+ productUrl?: string; // URL to product docs home
48
+ showBreadcrumb?: boolean; // Show breadcrumb navigation (default: true)
49
+ variant?: "default" | "minimal"; // Visual variant (default: 'default')
50
+ }
51
+ ```
52
+
53
+ **Features:**
54
+
55
+ - Environment-aware URLs (dev vs production)
56
+ - Sticky positioning with copper accent line
57
+ - Responsive mobile menu
58
+ - Accessible navigation with ARIA labels
59
+ - Cross-site navigation to Main Site, Blog, GitHub
60
+
61
+ **Example:**
62
+
63
+ ```astro
64
+ ---
65
+ import DocsHeader from '@knitli/docs-components/DocsHeader.astro';
66
+ const { pathname } = Astro.url;
67
+ ---
68
+
69
+ <DocsHeader
70
+ currentProduct="ReCoco"
71
+ currentPath={pathname}
72
+ productUrl="/ReCoco"
73
+ showBreadcrumb={true}
74
+ />
75
+ ```
76
+
77
+ #### DocsFooter.astro
78
+
79
+ Simple footer with cross-site links and copyright notice.
80
+
81
+ **Props:**
82
+
83
+ ```typescript
84
+ interface Props {
85
+ variant?: "default" | "minimal"; // Visual variant (default: 'default')
86
+ }
87
+ ```
88
+
89
+ **Features:**
90
+
91
+ - Cross-site navigation links (default variant)
92
+ - Copyright notice with current year
93
+ - License information
94
+ - Minimal variant for compact layouts
95
+
96
+ **Example:**
97
+
98
+ ```astro
99
+ ---
100
+ import DocsFooter from '@knitli/docs-components/DocsFooter.astro';
101
+ ---
102
+
103
+ <DocsFooter variant="default" />
104
+ ```
105
+
106
+ #### DocsBreadcrumb.astro
107
+
108
+ Optional standalone breadcrumb component for product-specific navigation.
109
+
110
+ **Props:**
111
+
112
+ ```typescript
113
+ interface Props {
114
+ product?: "ReCoco" | "CodeWeaver" | "Thread"; // Product name
115
+ productUrl?: string; // URL to product docs home
116
+ path?: string; // Current path within product docs
117
+ variant?: "default" | "compact"; // Visual variant (default: 'default')
118
+ }
119
+ ```
120
+
121
+ **Features:**
122
+
123
+ - Automatic path segment parsing
124
+ - Semantic HTML with `<nav>` and `<ol>`
125
+ - ARIA current page indicator
126
+ - Responsive compact mode
127
+
128
+ **Example:**
129
+
130
+ ```astro
131
+ ---
132
+ import DocsBreadcrumb from '@knitli/docs-components/DocsBreadcrumb.astro';
133
+ ---
134
+
135
+ <DocsBreadcrumb
136
+ product="ReCoco"
137
+ productUrl="/ReCoco"
138
+ path="/getting-started/installation"
139
+ variant="default"
140
+ />
141
+ ```
142
+
143
+ ### Styles
144
+
145
+ - **`styles/theme.css`** - Complete Copper Archive theme with all visual elements
146
+ - **`styles/copper.css`** - Just the copper color scheme
147
+ - **`styles/variables.css`** - CSS custom properties only
148
+
149
+ ### Logos
150
+
151
+ Logo assets are available at `@knitli/docs-components/logos/`:
152
+
153
+ - `knitli-logo.svg` - Standard Knitli logo
154
+ - `knitli-logo-copper.svg` - Copper variant for docs theme
155
+
156
+ ### Environment Configuration
157
+
158
+ Components automatically adapt URLs based on environment.
159
+
160
+ **.env.development:**
161
+
162
+ ```bash
163
+ PUBLIC_MARKETING_URL=http://localhost:4321
164
+ PUBLIC_BLOG_URL=http://localhost:4322
165
+ PUBLIC_DOCS_URL=http://localhost:4323
166
+ ```
167
+
168
+ **Production (automatic):**
169
+
170
+ - Marketing: `https://knitli.com`
171
+ - Blog: `https://blog.knitli.com`
172
+ - Docs: `https://docs.knitli.com`
173
+
174
+ ### Customization
175
+
176
+ Override CSS variables in your custom.css:
177
+
178
+ ```css
179
+ :root {
180
+ --docs-copper: oklch(0.6 0.1 50); /* Custom copper shade */
181
+ --docs-slate: oklch(0.3 0.02 240); /* Darker slate */
182
+ --docs-parchment: oklch(0.96 0.015 70); /* Background color */
183
+ }
184
+ ```
185
+
186
+ ## Copper Archive Aesthetic
187
+
188
+ The Copper Archive theme bridges Knitli's warmth with technical documentation's utilitarian purpose. Key design elements:
189
+
190
+ - **Color**: Copper (`#b56c30`) as primary accent
191
+ - **Typography**: DM Mono (headings), IBM Plex Serif (body), JetBrains Mono (code)
192
+ - **Visual Elements**: Copper corner brackets, embossed shadows, paper grain texture
193
+
194
+ ## Development
195
+
196
+ ```bash
197
+ # Build package
198
+ bun run build
199
+
200
+ # Publish (requires npm login)
201
+ npm publish
202
+ ```
203
+
204
+ ## Changelog
205
+
206
+ See [CHANGELOG.md](./CHANGELOG.md)
207
+
208
+ ## License
209
+
210
+ MIT
@@ -0,0 +1,2 @@
1
+ export * from './types/index.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,cAAc,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ // SPDX-FileCopyrightText: 2025 Knitli Inc.
2
+ // SPDX-FileContributor: Adam Poulemanos <adam@knit.li>
3
+ //
4
+ // SPDX-License-Identifier: MIT OR Apache-2.0
5
+ //
6
+ // Main exports for @knitli/docs-components package
7
+ // Export type definitions
8
+ export * from './types/index.js';
9
+ // Components are exported via package.json exports field
10
+ // Import them directly:
11
+ // import DocsHeader from '@knitli/docs-components/DocsHeader.astro';
12
+ // import DocsFooter from '@knitli/docs-components/DocsFooter.astro';
13
+ // import DocsBreadcrumb from '@knitli/docs-components/DocsBreadcrumb.astro';
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Supported Knitli products for documentation
3
+ */
4
+ export type ProductName = 'ReCoco' | 'CodeWeaver' | 'Thread';
5
+ /**
6
+ * Site URLs configuration
7
+ */
8
+ export interface SiteUrls {
9
+ marketing: string;
10
+ blog: string;
11
+ docs: string;
12
+ }
13
+ /**
14
+ * Props for DocsHeader component
15
+ */
16
+ export interface DocsHeaderProps {
17
+ /**
18
+ * Current product being documented
19
+ */
20
+ currentProduct?: ProductName;
21
+ /**
22
+ * Current URL path
23
+ */
24
+ currentPath?: string;
25
+ /**
26
+ * URL to the product's documentation home
27
+ */
28
+ productUrl?: string;
29
+ /**
30
+ * Whether to show breadcrumb navigation
31
+ * @default true
32
+ */
33
+ showBreadcrumb?: boolean;
34
+ /**
35
+ * Visual variant of the header
36
+ * @default 'default'
37
+ */
38
+ variant?: 'default' | 'minimal';
39
+ }
40
+ /**
41
+ * Props for DocsFooter component
42
+ */
43
+ export interface DocsFooterProps {
44
+ /**
45
+ * Visual variant of the footer
46
+ * @default 'default'
47
+ */
48
+ variant?: 'default' | 'minimal';
49
+ }
50
+ /**
51
+ * Props for DocsBreadcrumb component
52
+ */
53
+ export interface DocsBreadcrumbProps {
54
+ /**
55
+ * Current product name
56
+ */
57
+ product?: ProductName;
58
+ /**
59
+ * URL to the product's documentation home
60
+ */
61
+ productUrl?: string;
62
+ /**
63
+ * Current path within the product docs
64
+ */
65
+ path?: string;
66
+ /**
67
+ * Visual variant of the breadcrumb
68
+ * @default 'default'
69
+ */
70
+ variant?: 'default' | 'compact';
71
+ }
72
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,cAAc,CAAC,EAAE,WAAW,CAAC;IAE7B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACjC"}
@@ -0,0 +1,7 @@
1
+ // SPDX-FileCopyrightText: 2025 Knitli Inc.
2
+ // SPDX-FileContributor: Adam Poulemanos <adam@knit.li>
3
+ //
4
+ // SPDX-License-Identifier: MIT OR Apache-2.0
5
+ //
6
+ // TypeScript type definitions for docs-components package
7
+ export {};
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "author": "Knitli Inc.",
3
+ "description": "Shared branded components for Knitli documentation sites",
4
+ "devDependencies": {
5
+ "@types/node": "^24.0.0",
6
+ "astro": "^5.17.0",
7
+ "auto-changelog": "^2.4.0",
8
+ "typescript": "^5.3.0"
9
+ },
10
+ "exports": {
11
+ ".": "./dist/index.js",
12
+ "./DocsBreadcrumb.astro": "./src/components/DocsBreadcrumb.astro",
13
+ "./DocsFooter.astro": "./src/components/DocsFooter.astro",
14
+ "./DocsHeader.astro": "./src/components/DocsHeader.astro",
15
+ "./logos/*": "./src/assets/logos/*",
16
+ "./styles/copper.css": "./src/styles/copper-archive.css",
17
+ "./styles/theme.css": "./src/styles/docs-theme.css",
18
+ "./styles/variables.css": "./src/styles/variables.css"
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "src",
23
+ "README.md",
24
+ "CHANGELOG.md"
25
+ ],
26
+ "homepage": "https://docs.knitli.com",
27
+ "keywords": [
28
+ "knitli",
29
+ "documentation",
30
+ "astro",
31
+ "components",
32
+ "starlight"
33
+ ],
34
+ "license": "LicenseRef-Not_Licensed",
35
+ "main": "./dist/index.js",
36
+ "name": "@knitli/docs-components",
37
+ "peerDependencies": {
38
+ "astro": "^5.0.0"
39
+ },
40
+ "repository": {
41
+ "directory": "packages/docs-components",
42
+ "type": "git",
43
+ "url": "git+https://github.com/knitli/knitli-site.git"
44
+ },
45
+ "scripts": {
46
+ "build": "tsc",
47
+ "prepublishOnly": "bun run build",
48
+ "version": "auto-changelog -p && git add CHANGELOG.md"
49
+ },
50
+ "type": "module",
51
+ "types": "./dist/index.d.ts",
52
+ "version": "1.0.0"
53
+ }
@@ -0,0 +1,180 @@
1
+ # Knitli Logo Usage Guidelines
2
+
3
+ This directory contains the official Knitli logo assets for use in documentation components.
4
+
5
+ ## Logo Variants
6
+
7
+ ### Standard Logo (`knitli-logo.svg`)
8
+ - **Colors**: Aubergine text (#1e061b) with rust knot accent (#ea5932)
9
+ - **Use cases**:
10
+ - General documentation headers
11
+ - Light backgrounds
12
+ - Standard brand representation
13
+ - Navigation elements
14
+
15
+ ### Copper Logo (`knitli-logo-copper.svg`)
16
+ - **Colors**: Full copper (#b56c30) for both text and knot
17
+ - **Use cases**:
18
+ - CodeWeaver/technical documentation theme
19
+ - Integration with docs aesthetic
20
+ - Technical content headers
21
+ - Engineering-focused materials
22
+
23
+ ## Size Recommendations
24
+
25
+ ### Minimum Dimensions
26
+ - **Minimum height**: 24px (for legibility)
27
+ - **Minimum width**: 81px (maintains aspect ratio)
28
+ - **Recommended base**: 32px height for standard UI elements
29
+
30
+ ### Common Sizes
31
+ ```css
32
+ /* Small (navigation, inline) */
33
+ height: 24px;
34
+ width: auto;
35
+
36
+ /* Medium (section headers) */
37
+ height: 32px;
38
+ width: auto;
39
+
40
+ /* Large (page headers) */
41
+ height: 48px;
42
+ width: auto;
43
+
44
+ /* Hero/landing */
45
+ height: 64px;
46
+ width: auto;
47
+ ```
48
+
49
+ ## Accessibility
50
+
51
+ ### Alt Text
52
+ Always include descriptive alt text for screen readers:
53
+
54
+ ```html
55
+ <!-- Standard implementation -->
56
+ <img src="knitli-logo.svg" alt="Knitli" />
57
+
58
+ <!-- With link (navigation) -->
59
+ <a href="https://knitli.com">
60
+ <img src="knitli-logo.svg" alt="Knitli home" />
61
+ </a>
62
+
63
+ <!-- Decorative only (rare) -->
64
+ <img src="knitli-logo.svg" alt="" role="presentation" />
65
+ ```
66
+
67
+ ### Link Navigation
68
+ When using the logo as a navigation element, always link to the main site:
69
+
70
+ ```html
71
+ <a href="https://knitli.com" aria-label="Return to Knitli homepage">
72
+ <img src="knitli-logo.svg" alt="Knitli" />
73
+ </a>
74
+ ```
75
+
76
+ ## Usage Examples
77
+
78
+ ### Astro Component
79
+ ```astro
80
+ ---
81
+ import knitliLogo from '../assets/logos/knitli-logo.svg';
82
+ import knitliLogoCopper from '../assets/logos/knitli-logo-copper.svg';
83
+ ---
84
+
85
+ <!-- Standard header -->
86
+ <header>
87
+ <a href="https://knitli.com">
88
+ <img src={knitliLogo.src} alt="Knitli" height="32" />
89
+ </a>
90
+ </header>
91
+
92
+ <!-- Docs theme header -->
93
+ <header class="docs-header">
94
+ <a href="https://knitli.com">
95
+ <img src={knitliLogoCopper.src} alt="Knitli" height="32" />
96
+ </a>
97
+ </header>
98
+ ```
99
+
100
+ ### HTML/CSS
101
+ ```html
102
+ <!-- Responsive with CSS sizing -->
103
+ <a href="https://knitli.com" class="logo-link">
104
+ <img src="./logos/knitli-logo.svg" alt="Knitli" class="logo" />
105
+ </a>
106
+
107
+ <style>
108
+ .logo {
109
+ height: 2rem; /* 32px */
110
+ width: auto;
111
+ display: block;
112
+ }
113
+
114
+ .logo-link {
115
+ display: inline-flex;
116
+ align-items: center;
117
+ text-decoration: none;
118
+ }
119
+
120
+ .logo-link:hover .logo,
121
+ .logo-link:focus .logo {
122
+ opacity: 0.85;
123
+ transition: opacity 0.2s ease;
124
+ }
125
+ </style>
126
+ ```
127
+
128
+ ### React/TypeScript
129
+ ```tsx
130
+ import knitliLogo from '../assets/logos/knitli-logo.svg';
131
+
132
+ export function Logo() {
133
+ return (
134
+ <a href="https://knitli.com" aria-label="Return to Knitli homepage">
135
+ <img
136
+ src={knitliLogo}
137
+ alt="Knitli"
138
+ style={{ height: '32px', width: 'auto' }}
139
+ />
140
+ </a>
141
+ );
142
+ }
143
+ ```
144
+
145
+ ## Technical Details
146
+
147
+ ### File Format
148
+ - **Format**: SVG (Scalable Vector Graphics)
149
+ - **Optimization**: Cleaned of unnecessary metadata and comments
150
+ - **Viewbox**: `0 0 425.64246 125`
151
+ - **Native aspect ratio**: ~3.4:1 (width:height)
152
+
153
+ ### Color Values
154
+ ```css
155
+ /* Standard Logo */
156
+ --logo-text: #1e061b; /* Aubergine */
157
+ --logo-knot: #ea5932; /* Rust */
158
+
159
+ /* Copper Logo */
160
+ --logo-copper: #b56c30; /* Copper */
161
+ ```
162
+
163
+ ### Inline Styling
164
+ Both logos use CSS classes (`.text`, `.knot`) for color application, allowing for potential theme customization if needed.
165
+
166
+ ## Best Practices
167
+
168
+ 1. **Always use vector format** - Never convert to raster unless absolutely necessary
169
+ 2. **Maintain aspect ratio** - Set either width OR height, let the other auto-scale
170
+ 3. **Respect minimum size** - Never display smaller than 24px height
171
+ 4. **Use semantic HTML** - Wrap in `<a>` tag when used for navigation
172
+ 5. **Provide context** - Use appropriate alt text for the use case
173
+ 6. **Consider contrast** - Ensure sufficient contrast with background colors
174
+ 7. **Test accessibility** - Verify screen reader announcements
175
+
176
+ ## Copyright
177
+
178
+ © 2025 Knitli Inc. All Rights Reserved.
179
+
180
+ Original design by Adam/Signcraft (DesignCrowd), owned by Knitli Inc.
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg id="knitli-logo-copper" viewBox="0 0 425.64246 125" width="425.64246" height="125" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="knitli-logo-copper-title">
3
+ <title id="knitli-logo-copper-title">Knitli</title>
4
+ <defs>
5
+ <style>
6
+ .text { fill: #b56c30; }
7
+ .knot { fill: #b56c30; }
8
+ </style>
9
+ </defs>
10
+ <g class="text" transform="matrix(0.87019392,0,0,0.87019392,-446.87779,5.0497)">
11
+ <path d="m 755.7988,56.199038 h 18.2535 l -0.72516,15.734735 h 0.24458 c 1.51469,-5.68544 4.14501,-9.89053 7.85664,-12.61525 3.7245,-2.71614 8.9122,-4.076356 15.55881,-4.076356 7.28166,0 13.02718,1.973815 17.22797,5.942896 4.2008,3.95622 6.30334,9.70173 6.30334,17.22797 v 37.103427 h -18.2535 V 82.497973 c 0,-2.71614 -0.49774,-4.98173 -1.49323,-6.78391 -1.00836,-1.80647 -2.46298,-3.14523 -4.3896,-4.02487 -1.91374,-0.87963 -4.23941,-1.31731 -6.95984,-1.31731 -3.2053,0 -5.97293,0.64364 -8.28573,1.92662 -2.32567,1.27869 -4.08494,3.17527 -5.28639,5.69832 -1.20145,2.52305 -1.79789,5.62966 -1.79789,9.31125 V 115.52075 H 755.7988 V 56.203329 Z"/>
12
+ <path d="m 877.6218,111.01102 c -3.91759,-3.6344 -5.88283,-8.94224 -5.88283,-15.910667 v -24.73276 h -8.76631 V 56.199038 h 8.76631 V 37.306197 h 18.2535 v 18.892841 h 18.96579 v 14.168555 h -18.96579 v 23.77589 c 0,2.08109 0.34327,3.70305 1.01694,4.86588 0.68226,1.154257 1.73782,1.973817 3.18385,2.462977 1.43746,0.48058 3.40269,0.71229 5.88283,0.71229 1.36022,0 2.82341,-0.0772 4.38959,-0.236 1.55331,-0.16734 2.85345,-0.36043 3.90043,-0.60502 v 13.80813 c -1.27869,0.32181 -2.98217,0.62647 -5.10188,0.90967 -2.12829,0.27462 -4.26945,0.42051 -6.43206,0.42051 -8.88217,0 -15.29278,-1.82793 -19.21037,-5.4709 z"/>
13
+ <path d="M 746.36311,115.51646 725.55653,89.131713 c 9.82616,-7.68501 16.26681,-19.51502 16.26681,-32.932675 H 723.587 c 0,13.078665 -10.64143,23.720105 -23.72868,23.720105 h -2.61745 V 30.0417 h -18.24492 v 85.47476 h 18.24492 V 98.164063 h 2.61745 c 3.23104,0 6.34624,-0.44626 9.36703,-1.14138 l 13.10871,18.493777 h 24.02047 z"/>
14
+ <path d="m 922.09271,30.0417 h 18.24491 v 85.47476 h -18.24491 z"/>
15
+ <g transform="matrix(0.42909019,0,0,0.42909019,470.15775,-1.6079935)">
16
+ <rect x="849.52002" y="134.72" width="42.540001" height="138.24001"/>
17
+ <path d="m 881.84,70.51 c -3.48,-1.28 -7.2,-1.93 -11.05,-1.93 -3.85,0 -7.57,0.65 -11.05,1.93 -8.82,3.22 -14.75,11.33 -14.75,20.18 0,8.85 5.93,16.95 14.76,20.18 3.5,1.28 7.21,1.92 11.04,1.92 3.83,0 7.55,-0.65 11.04,-1.92 8.82,-3.23 14.76,-11.34 14.76,-20.18 0,-8.84 -5.93,-16.96 -14.75,-20.18 z"/>
18
+ </g>
19
+ <g transform="matrix(0.42909019,0,0,0.42909019,470.15775,-1.6079935)">
20
+ <rect x="1133.5601" y="134.72" width="42.540001" height="138.24001"/>
21
+ <path d="m 1165.88,70.51 c -3.48,-1.28 -7.2,-1.93 -11.05,-1.93 -3.85,0 -7.57,0.65 -11.05,1.93 -8.82,3.22 -14.75,11.33 -14.75,20.18 0,8.85 5.93,16.95 14.76,20.18 3.5,1.28 7.21,1.92 11.04,1.92 3.83,0 7.55,-0.65 11.04,-1.92 8.82,-3.23 14.76,-11.34 14.76,-20.18 0,-8.84 -5.93,-16.96 -14.75,-20.18 z"/>
22
+ </g>
23
+ </g>
24
+ <path class="knot" d="m 112.681,56.603739 c -1.74264,-0.639671 -3.60049,-0.959506 -5.5148,-0.959506 -5.91696,0 -11.1519,2.909088 -14.58307,5.434847 -0.860732,-1.077093 -1.62504,-2.234144 -2.347025,-3.459394 -0.698465,-1.239361 -1.319318,-2.478722 -1.822592,-3.762767 3.903867,-1.709707 9.037687,-4.78812 11.998517,-9.912537 0.95951,-1.657969 1.60859,-3.426469 1.92607,-5.256114 0.80664,-4.618795 -1.21114,-9.199963 -5.04211,-11.415292 -3.82156,-2.20357 -8.804864,-1.665024 -12.403013,1.340486 -1.420446,1.187622 -2.62688,2.633936 -3.586384,4.29896 -2.956122,5.122066 -3.057249,11.102513 -2.586903,15.345031 -1.37106,0.209304 -2.770336,0.310428 -4.193136,0.308076 -1.422793,0 -2.822069,-0.09877 -4.193129,-0.308076 0.470345,-4.242518 0.369219,-10.225317 -2.586903,-15.345031 -0.961859,-1.665024 -2.165939,-3.111338 -3.586384,-4.29896 -3.598148,-3.00551 -8.581461,-3.544056 -12.403024,-1.340486 -3.830966,2.215329 -5.846392,6.798848 -5.042102,11.415292 0.317485,1.829645 0.968915,3.598145 1.926065,5.256114 2.960823,5.124417 8.094649,8.20283 11.998523,9.912537 -0.503271,1.284045 -1.124128,2.523406 -1.822589,3.762767 -0.721985,1.22525 -1.486297,2.382301 -2.34703,3.459394 -3.433523,-2.525759 -8.666121,-5.432495 -14.583067,-5.434847 -1.914312,0 -3.772176,0.319835 -5.514808,0.959506 -4.402437,1.610934 -7.363261,5.648853 -7.365616,10.072455 0,4.411843 2.960831,8.459168 7.363269,10.070101 1.737922,0.637318 3.593439,0.957156 5.517155,0.957156 5.912245,0 11.142487,-2.902034 14.583067,-5.432494 0.867788,1.081795 1.65327,2.243549 2.363489,3.478207 0.714928,1.232304 1.326375,2.495186 1.829646,3.786281 -3.910924,1.714414 -9.040048,4.792825 -11.99617,9.912541 -0.961857,1.665021 -1.613286,3.43117 -1.928418,5.256117 -0.80429,4.618794 1.220547,9.204657 5.039755,11.412937 3.83332,2.21062 8.809577,1.66502 12.407726,-1.34284 1.425146,-1.18997 2.631581,-2.63628 3.588737,-4.29661 2.956122,-5.126766 3.057242,-11.111917 2.584549,-15.347379 1.361649,-0.206954 2.74682,-0.28926 4.169613,-0.303373 1.4228,0.01414 2.80561,0.09642 4.169614,0.303373 -0.470345,4.235462 -0.371573,10.220613 2.584555,15.347379 0.95715,1.65797 2.163585,3.10664 3.588737,4.29661 3.595792,3.00552 8.574396,3.55111 12.407716,1.34284 3.81922,-2.20828 5.84405,-6.794143 5.03975,-11.412937 -0.31748,-1.824947 -0.96656,-3.591096 -1.92841,-5.256117 -2.95612,-5.119716 -8.08524,-8.198127 -11.996173,-9.912541 0.503274,-1.293449 1.117074,-2.553977 1.829651,-3.786281 0.710223,-1.234658 1.49805,-2.39406 2.363482,-3.478207 3.44057,2.53046 8.67083,5.432494 14.58307,5.432494 1.92372,0 3.77688,-0.319838 5.51716,-0.957156 4.40244,-1.613281 7.36092,-5.660609 7.36326,-10.070101 -0.003,-4.425954 -2.96318,-8.461521 -7.36561,-10.074807 z m -70.798794,12.95097 c -0.961852,0 -1.871976,-0.155213 -2.709192,-0.460939 -1.147638,-0.420959 -2.010724,-1.460423 -2.010724,-2.417576 0.005,-0.954802 0.865433,-1.99897 2.008376,-2.417578 0.841917,-0.305725 1.754389,-0.46329 2.71154,-0.46329 2.551629,0.0024 5.507752,1.041815 8.374505,2.878517 -2.87381,1.841402 -5.82523,2.880866 -8.374505,2.878515 z M 55.698618,39.864133 c -0.479755,-0.827808 -0.799588,-1.695596 -0.954803,-2.577495 -0.211656,-1.199382 0.263391,-2.466964 1.088849,-2.949068 0.83016,-0.479753 2.161237,-0.249284 3.099579,0.533841 0.684355,0.573823 1.274634,1.281693 1.754389,2.116557 1.274635,2.205922 1.850808,5.281983 1.693246,8.691991 -3.024323,-1.563901 -5.401924,-3.605202 -6.678913,-5.813474 z m 5.01153,56.544975 c -0.477401,0.830157 -1.070034,1.540379 -1.754389,2.116546 -0.933634,0.783131 -2.267065,1.006547 -3.097225,0.531498 -0.83016,-0.479753 -1.298156,-1.747341 -1.088855,-2.951421 0.155214,-0.879546 0.475054,-1.744986 0.957156,-2.577499 1.272287,-2.20827 3.649882,-4.244871 6.681261,-5.811117 0.157568,3.400594 -0.420958,6.481359 -1.695593,8.691993 z M 83.162103,71.675969 c -1.030052,1.7685 -1.89784,3.607551 -2.596308,5.503043 -1.98486,-0.341 -3.997939,-0.498563 -6.039241,-0.500917 -2.043651,0.0025 -4.056729,0.159917 -6.039235,0.500917 -0.696113,-1.895492 -1.563901,-3.734543 -2.596313,-5.503043 -1.015947,-1.777906 -2.175349,-3.447634 -3.468798,-4.999775 1.288747,-1.547437 2.429336,-3.212462 3.454692,-4.980962 1.020648,-1.770852 1.89079,-3.593442 2.586897,-5.481881 1.989562,0.343353 4.016753,0.512679 6.062757,0.503271 2.048359,0.0071 4.073196,-0.159918 6.062757,-0.503271 0.696113,1.888439 1.566256,3.711029 2.586905,5.481881 1.023001,1.7685 2.165944,3.433525 3.454691,4.980962 -1.293455,1.552141 -2.450503,3.221869 -3.468804,4.999775 z M 93.32863,93.528232 c 0.4821,0.832513 0.80194,1.697953 0.95715,2.577499 0.20931,1.20408 -0.25869,2.471668 -1.08885,2.951421 -0.83016,0.475049 -2.163583,0.251633 -3.097227,-0.531498 -0.686703,-0.576167 -1.279338,-1.286389 -1.754387,-2.116546 -1.272286,-2.210634 -1.85081,-5.291399 -1.695595,-8.691993 3.03138,1.568601 5.406619,3.605194 6.681259,5.811117 z M 86.67559,45.677607 c -0.157568,-3.410008 0.418605,-6.483717 1.693239,-8.691991 0.479753,-0.834864 1.07004,-1.542733 1.754394,-2.116556 0.938342,-0.783126 2.269417,-1.011243 3.099577,-0.533843 0.82546,0.482105 1.29816,1.747336 1.08885,2.949069 -0.15522,0.881898 -0.47505,1.749686 -0.95481,2.577495 -1.27699,2.208273 -3.65693,4.249574 -6.678901,5.813474 z m 23.2045,23.416163 c -0.83957,0.305726 -1.74733,0.460939 -2.70919,0.460939 -2.54927,0 -5.50069,-1.037112 -8.3745,-2.878515 2.86675,-1.8367 5.82523,-2.876166 8.3745,-2.878517 0.95716,0 1.86962,0.155214 2.71155,0.463291 1.14528,0.418608 2.00602,1.460424 2.00838,2.417577 0,0.957154 -0.8631,1.998969 -2.01074,2.417578 z"/>
25
+ </svg>
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg id="knitli-logo" viewBox="0 0 425.64246 125" width="425.64246" height="125" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="knitli-logo-title">
3
+ <title id="knitli-logo-title">Knitli</title>
4
+ <defs>
5
+ <style>
6
+ .text { fill: #1e061b; }
7
+ .knot { fill: #ea5932; }
8
+ </style>
9
+ </defs>
10
+ <g class="text" transform="matrix(0.87019392,0,0,0.87019392,-446.87779,5.0497)">
11
+ <path d="m 755.7988,56.199038 h 18.2535 l -0.72516,15.734735 h 0.24458 c 1.51469,-5.68544 4.14501,-9.89053 7.85664,-12.61525 3.7245,-2.71614 8.9122,-4.076356 15.55881,-4.076356 7.28166,0 13.02718,1.973815 17.22797,5.942896 4.2008,3.95622 6.30334,9.70173 6.30334,17.22797 v 37.103427 h -18.2535 V 82.497973 c 0,-2.71614 -0.49774,-4.98173 -1.49323,-6.78391 -1.00836,-1.80647 -2.46298,-3.14523 -4.3896,-4.02487 -1.91374,-0.87963 -4.23941,-1.31731 -6.95984,-1.31731 -3.2053,0 -5.97293,0.64364 -8.28573,1.92662 -2.32567,1.27869 -4.08494,3.17527 -5.28639,5.69832 -1.20145,2.52305 -1.79789,5.62966 -1.79789,9.31125 V 115.52075 H 755.7988 V 56.203329 Z"/>
12
+ <path d="m 877.6218,111.01102 c -3.91759,-3.6344 -5.88283,-8.94224 -5.88283,-15.910667 v -24.73276 h -8.76631 V 56.199038 h 8.76631 V 37.306197 h 18.2535 v 18.892841 h 18.96579 v 14.168555 h -18.96579 v 23.77589 c 0,2.08109 0.34327,3.70305 1.01694,4.86588 0.68226,1.154257 1.73782,1.973817 3.18385,2.462977 1.43746,0.48058 3.40269,0.71229 5.88283,0.71229 1.36022,0 2.82341,-0.0772 4.38959,-0.236 1.55331,-0.16734 2.85345,-0.36043 3.90043,-0.60502 v 13.80813 c -1.27869,0.32181 -2.98217,0.62647 -5.10188,0.90967 -2.12829,0.27462 -4.26945,0.42051 -6.43206,0.42051 -8.88217,0 -15.29278,-1.82793 -19.21037,-5.4709 z"/>
13
+ <path d="M 746.36311,115.51646 725.55653,89.131713 c 9.82616,-7.68501 16.26681,-19.51502 16.26681,-32.932675 H 723.587 c 0,13.078665 -10.64143,23.720105 -23.72868,23.720105 h -2.61745 V 30.0417 h -18.24492 v 85.47476 h 18.24492 V 98.164063 h 2.61745 c 3.23104,0 6.34624,-0.44626 9.36703,-1.14138 l 13.10871,18.493777 h 24.02047 z"/>
14
+ <path d="m 922.09271,30.0417 h 18.24491 v 85.47476 h -18.24491 z"/>
15
+ <g transform="matrix(0.42909019,0,0,0.42909019,470.15775,-1.6079935)">
16
+ <rect x="849.52002" y="134.72" width="42.540001" height="138.24001"/>
17
+ <path d="m 881.84,70.51 c -3.48,-1.28 -7.2,-1.93 -11.05,-1.93 -3.85,0 -7.57,0.65 -11.05,1.93 -8.82,3.22 -14.75,11.33 -14.75,20.18 0,8.85 5.93,16.95 14.76,20.18 3.5,1.28 7.21,1.92 11.04,1.92 3.83,0 7.55,-0.65 11.04,-1.92 8.82,-3.23 14.76,-11.34 14.76,-20.18 0,-8.84 -5.93,-16.96 -14.75,-20.18 z"/>
18
+ </g>
19
+ <g transform="matrix(0.42909019,0,0,0.42909019,470.15775,-1.6079935)">
20
+ <rect x="1133.5601" y="134.72" width="42.540001" height="138.24001"/>
21
+ <path d="m 1165.88,70.51 c -3.48,-1.28 -7.2,-1.93 -11.05,-1.93 -3.85,0 -7.57,0.65 -11.05,1.93 -8.82,3.22 -14.75,11.33 -14.75,20.18 0,8.85 5.93,16.95 14.76,20.18 3.5,1.28 7.21,1.92 11.04,1.92 3.83,0 7.55,-0.65 11.04,-1.92 8.82,-3.23 14.76,-11.34 14.76,-20.18 0,-8.84 -5.93,-16.96 -14.75,-20.18 z"/>
22
+ </g>
23
+ </g>
24
+ <path class="knot" d="m 112.681,56.603739 c -1.74264,-0.639671 -3.60049,-0.959506 -5.5148,-0.959506 -5.91696,0 -11.1519,2.909088 -14.58307,5.434847 -0.860732,-1.077093 -1.62504,-2.234144 -2.347025,-3.459394 -0.698465,-1.239361 -1.319318,-2.478722 -1.822592,-3.762767 3.903867,-1.709707 9.037687,-4.78812 11.998517,-9.912537 0.95951,-1.657969 1.60859,-3.426469 1.92607,-5.256114 0.80664,-4.618795 -1.21114,-9.199963 -5.04211,-11.415292 -3.82156,-2.20357 -8.804864,-1.665024 -12.403013,1.340486 -1.420446,1.187622 -2.62688,2.633936 -3.586384,4.29896 -2.956122,5.122066 -3.057249,11.102513 -2.586903,15.345031 -1.37106,0.209304 -2.770336,0.310428 -4.193136,0.308076 -1.422793,0 -2.822069,-0.09877 -4.193129,-0.308076 0.470345,-4.242518 0.369219,-10.225317 -2.586903,-15.345031 -0.961859,-1.665024 -2.165939,-3.111338 -3.586384,-4.29896 -3.598148,-3.00551 -8.581461,-3.544056 -12.403024,-1.340486 -3.830966,2.215329 -5.846392,6.798848 -5.042102,11.415292 0.317485,1.829645 0.968915,3.598145 1.926065,5.256114 2.960823,5.124417 8.094649,8.20283 11.998523,9.912537 -0.503271,1.284045 -1.124128,2.523406 -1.822589,3.762767 -0.721985,1.22525 -1.486297,2.382301 -2.34703,3.459394 -3.433523,-2.525759 -8.666121,-5.432495 -14.583067,-5.434847 -1.914312,0 -3.772176,0.319835 -5.514808,0.959506 -4.402437,1.610934 -7.363261,5.648853 -7.365616,10.072455 0,4.411843 2.960831,8.459168 7.363269,10.070101 1.737922,0.637318 3.593439,0.957156 5.517155,0.957156 5.912245,0 11.142487,-2.902034 14.583067,-5.432494 0.867788,1.081795 1.65327,2.243549 2.363489,3.478207 0.714928,1.232304 1.326375,2.495186 1.829646,3.786281 -3.910924,1.714414 -9.040048,4.792825 -11.99617,9.912541 -0.961857,1.665021 -1.613286,3.43117 -1.928418,5.256117 -0.80429,4.618794 1.220547,9.204657 5.039755,11.412937 3.83332,2.21062 8.809577,1.66502 12.407726,-1.34284 1.425146,-1.18997 2.631581,-2.63628 3.588737,-4.29661 2.956122,-5.126766 3.057242,-11.111917 2.584549,-15.347379 1.361649,-0.206954 2.74682,-0.28926 4.169613,-0.303373 1.4228,0.01414 2.80561,0.09642 4.169614,0.303373 -0.470345,4.235462 -0.371573,10.220613 2.584555,15.347379 0.95715,1.65797 2.163585,3.10664 3.588737,4.29661 3.595792,3.00552 8.574396,3.55111 12.407716,1.34284 3.81922,-2.20828 5.84405,-6.794143 5.03975,-11.412937 -0.31748,-1.824947 -0.96656,-3.591096 -1.92841,-5.256117 -2.95612,-5.119716 -8.08524,-8.198127 -11.996173,-9.912541 0.503274,-1.293449 1.117074,-2.553977 1.829651,-3.786281 0.710223,-1.234658 1.49805,-2.39406 2.363482,-3.478207 3.44057,2.53046 8.67083,5.432494 14.58307,5.432494 1.92372,0 3.77688,-0.319838 5.51716,-0.957156 4.40244,-1.613281 7.36092,-5.660609 7.36326,-10.070101 -0.003,-4.425954 -2.96318,-8.461521 -7.36561,-10.074807 z m -70.798794,12.95097 c -0.961852,0 -1.871976,-0.155213 -2.709192,-0.460939 -1.147638,-0.420959 -2.010724,-1.460423 -2.010724,-2.417576 0.005,-0.954802 0.865433,-1.99897 2.008376,-2.417578 0.841917,-0.305725 1.754389,-0.46329 2.71154,-0.46329 2.551629,0.0024 5.507752,1.041815 8.374505,2.878517 -2.87381,1.841402 -5.82523,2.880866 -8.374505,2.878515 z M 55.698618,39.864133 c -0.479755,-0.827808 -0.799588,-1.695596 -0.954803,-2.577495 -0.211656,-1.199382 0.263391,-2.466964 1.088849,-2.949068 0.83016,-0.479753 2.161237,-0.249284 3.099579,0.533841 0.684355,0.573823 1.274634,1.281693 1.754389,2.116557 1.274635,2.205922 1.850808,5.281983 1.693246,8.691991 -3.024323,-1.563901 -5.401924,-3.605202 -6.678913,-5.813474 z m 5.01153,56.544975 c -0.477401,0.830157 -1.070034,1.540379 -1.754389,2.116546 -0.933634,0.783131 -2.267065,1.006547 -3.097225,0.531498 -0.83016,-0.479753 -1.298156,-1.747341 -1.088855,-2.951421 0.155214,-0.879546 0.475054,-1.744986 0.957156,-2.577499 1.272287,-2.20827 3.649882,-4.244871 6.681261,-5.811117 0.157568,3.400594 -0.420958,6.481359 -1.695593,8.691993 z M 83.162103,71.675969 c -1.030052,1.7685 -1.89784,3.607551 -2.596308,5.503043 -1.98486,-0.341 -3.997939,-0.498563 -6.039241,-0.500917 -2.043651,0.0025 -4.056729,0.159917 -6.039235,0.500917 -0.696113,-1.895492 -1.563901,-3.734543 -2.596313,-5.503043 -1.015947,-1.777906 -2.175349,-3.447634 -3.468798,-4.999775 1.288747,-1.547437 2.429336,-3.212462 3.454692,-4.980962 1.020648,-1.770852 1.89079,-3.593442 2.586897,-5.481881 1.989562,0.343353 4.016753,0.512679 6.062757,0.503271 2.048359,0.0071 4.073196,-0.159918 6.062757,-0.503271 0.696113,1.888439 1.566256,3.711029 2.586905,5.481881 1.023001,1.7685 2.165944,3.433525 3.454691,4.980962 -1.293455,1.552141 -2.450503,3.221869 -3.468804,4.999775 z M 93.32863,93.528232 c 0.4821,0.832513 0.80194,1.697953 0.95715,2.577499 0.20931,1.20408 -0.25869,2.471668 -1.08885,2.951421 -0.83016,0.475049 -2.163583,0.251633 -3.097227,-0.531498 -0.686703,-0.576167 -1.279338,-1.286389 -1.754387,-2.116546 -1.272286,-2.210634 -1.85081,-5.291399 -1.695595,-8.691993 3.03138,1.568601 5.406619,3.605194 6.681259,5.811117 z M 86.67559,45.677607 c -0.157568,-3.410008 0.418605,-6.483717 1.693239,-8.691991 0.479753,-0.834864 1.07004,-1.542733 1.754394,-2.116556 0.938342,-0.783126 2.269417,-1.011243 3.099577,-0.533843 0.82546,0.482105 1.29816,1.747336 1.08885,2.949069 -0.15522,0.881898 -0.47505,1.749686 -0.95481,2.577495 -1.27699,2.208273 -3.65693,4.249574 -6.678901,5.813474 z m 23.2045,23.416163 c -0.83957,0.305726 -1.74733,0.460939 -2.70919,0.460939 -2.54927,0 -5.50069,-1.037112 -8.3745,-2.878515 2.86675,-1.8367 5.82523,-2.876166 8.3745,-2.878517 0.95716,0 1.86962,0.155214 2.71155,0.463291 1.14528,0.418608 2.00602,1.460424 2.00838,2.417577 0,0.957154 -0.8631,1.998969 -2.01074,2.417578 z"/>
25
+ </svg>