create-riebeckite 0.0.26 → 0.0.28
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/src/index.js +2047 -2041
- package/dist/src/scaffold/content-pages.d.ts +1 -1
- package/dist/src/scaffold/deployment.d.ts +1 -1
- package/dist/src/scaffold/index.js +2161 -2155
- package/dist/src/scaffold/readme.d.ts +3 -0
- package/dist/src/scaffold/readme_demos.d.ts +27 -0
- package/dist/src/scaffold/template-loader.d.ts +1 -1
- package/dist/src/scaffold/template_options.d.ts +13 -0
- package/dist/src/scaffold/template_types.d.ts +17 -0
- package/dist/src/scaffold/templates.d.ts +5 -52
- package/dist/src/scaffold/utilities.d.ts +1 -1
- package/dist/src/scaffold/version.d.ts +1 -1
- package/dist/src/scaffold/wrangler-defaults.d.ts +0 -4
- package/package.json +2 -2
- package/templates/scaffold/deployment/github-actions/deploy.yml +25 -4
- package/templates/scaffold/presets/empty/app/style.css +1 -11
- package/templates/scaffold/presets/minimal/app/style.css +0 -11
- package/templates/scaffold/presets/showcase/app/components/site-header.tsx +6 -5
- package/templates/scaffold/presets/showcase/app/style.css +20 -91
- package/templates/scaffold/presets/starter/app/components/site-header.tsx +6 -5
- package/templates/scaffold/presets/starter/app/style.css +20 -91
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ScaffoldPreset } from "./presets.js";
|
|
2
|
+
export type ReadmeDemo = {
|
|
3
|
+
readonly title: {
|
|
4
|
+
readonly en: string;
|
|
5
|
+
readonly ja: string;
|
|
6
|
+
};
|
|
7
|
+
readonly intro: {
|
|
8
|
+
readonly en: string;
|
|
9
|
+
readonly ja: string;
|
|
10
|
+
};
|
|
11
|
+
readonly markdown: string;
|
|
12
|
+
};
|
|
13
|
+
export declare const README_DEMOS: Readonly<Record<string, ReadmeDemo>>;
|
|
14
|
+
/**
|
|
15
|
+
* English-only content pages keep a `.en` suffix unless `en` is the default
|
|
16
|
+
* language. `examples` is intentionally absent: it is localized like the
|
|
17
|
+
* tour pages, with English as the fallback for untranslated languages.
|
|
18
|
+
*/
|
|
19
|
+
export declare const ENGLISH_ONLY_PAGES: Set<string>;
|
|
20
|
+
export declare function fence(language: string, body: string): string;
|
|
21
|
+
export declare function hasPlugin(preset: ScaffoldPreset, packageName: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* A demo key is either `@scope/package` or `@scope/package/topic`. Recover the
|
|
24
|
+
* package name: the first two `/`-separated segments form the scoped name.
|
|
25
|
+
*/
|
|
26
|
+
export declare function demoPackage(key: string): string;
|
|
27
|
+
export declare const README_DEMO_ORDER: string[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SiteTemplateFile } from "./
|
|
1
|
+
import type { SiteTemplateFile } from "./template_types.js";
|
|
2
2
|
export declare function resolveTemplateRoot(): string;
|
|
3
3
|
export declare function readTemplate(relativePath: string): Uint8Array;
|
|
4
4
|
export declare function copyTemplateTree(relativeDirectory: string, replacements?: Readonly<Record<string, string>>, include?: (relativePath: string) => boolean): SiteTemplateFile[];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ScaffoldOptionContext, ScaffoldOptions, ScaffoldPreset } from "./presets.js";
|
|
2
|
+
import type { SiteTemplateVariables } from "./template_types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Resolve a plugin's options literal for the preset's depth, or `null` when
|
|
5
|
+
* the plugin takes no options at that depth (and should be called bare).
|
|
6
|
+
*/
|
|
7
|
+
export declare function renderOptions(options: ScaffoldOptions | undefined, context: ScaffoldOptionContext): string | null;
|
|
8
|
+
export declare function pluginExpression(plugin: ScaffoldPreset["plugins"][number], preset: ScaffoldPreset, variables: SiteTemplateVariables): string;
|
|
9
|
+
/**
|
|
10
|
+
* The options object literal used for a plugin at this preset's depth, or
|
|
11
|
+
* `null` when it takes no options at that depth.
|
|
12
|
+
*/
|
|
13
|
+
export declare function readmePluginOptions(variables: SiteTemplateVariables, preset: ScaffoldPreset, plugin: ScaffoldPreset["plugins"][number]): string | null;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ScaffoldUtilityName } from "./utilities.js";
|
|
2
|
+
export type SiteTemplateVariables = {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
readonly title: string;
|
|
5
|
+
readonly description: string;
|
|
6
|
+
readonly baseUrl: string;
|
|
7
|
+
readonly locale: string;
|
|
8
|
+
readonly externalContent?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type SiteTemplateOptions = {
|
|
11
|
+
readonly cloudflareWorkers?: boolean;
|
|
12
|
+
readonly utilities?: readonly ScaffoldUtilityName[];
|
|
13
|
+
};
|
|
14
|
+
export type SiteTemplateFile = {
|
|
15
|
+
readonly path: string;
|
|
16
|
+
readonly content: string | Uint8Array;
|
|
17
|
+
};
|
|
@@ -1,55 +1,8 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import {
|
|
3
|
-
export type SiteTemplateVariables
|
|
4
|
-
readonly name: string;
|
|
5
|
-
readonly title: string;
|
|
6
|
-
readonly description: string;
|
|
7
|
-
readonly baseUrl: string;
|
|
8
|
-
readonly locale: string;
|
|
9
|
-
readonly externalContent?: boolean;
|
|
10
|
-
};
|
|
11
|
-
export type SiteTemplateOptions = {
|
|
12
|
-
readonly cloudflareWorkers?: boolean;
|
|
13
|
-
readonly utilities?: readonly ScaffoldUtilityName[];
|
|
14
|
-
};
|
|
15
|
-
export type SiteTemplateFile = {
|
|
16
|
-
readonly path: string;
|
|
17
|
-
readonly content: string | Uint8Array;
|
|
18
|
-
};
|
|
1
|
+
import { type ScaffoldPreset } from "./presets.js";
|
|
2
|
+
import type { SiteTemplateFile, SiteTemplateOptions, SiteTemplateVariables } from "./template_types.js";
|
|
3
|
+
export type { SiteTemplateFile, SiteTemplateOptions, SiteTemplateVariables, } from "./template_types.js";
|
|
19
4
|
export declare function siteTemplateFiles(preset: ScaffoldPreset, variables: SiteTemplateVariables, options?: SiteTemplateOptions): readonly SiteTemplateFile[];
|
|
20
5
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
6
|
+
* `starter` includes practical configuration and `showcase` renders the full
|
|
7
|
+
* option surface. Lightweight presets deliberately keep depth 0.
|
|
23
8
|
*/
|
|
24
|
-
export declare function renderOptions(options: ScaffoldOptions | undefined, context: ScaffoldOptionContext): string | null;
|
|
25
|
-
export type ReadmeDemo = {
|
|
26
|
-
readonly title: {
|
|
27
|
-
readonly en: string;
|
|
28
|
-
readonly ja: string;
|
|
29
|
-
};
|
|
30
|
-
readonly intro: {
|
|
31
|
-
readonly en: string;
|
|
32
|
-
readonly ja: string;
|
|
33
|
-
};
|
|
34
|
-
readonly markdown: string;
|
|
35
|
-
};
|
|
36
|
-
export declare const README_DEMOS: Readonly<Record<string, ReadmeDemo>>;
|
|
37
|
-
/**
|
|
38
|
-
* English-only content pages keep a `.en` suffix unless `en` is the default
|
|
39
|
-
* language. `examples` is intentionally absent: it is localized like the
|
|
40
|
-
* tour pages, with English as the fallback for untranslated languages.
|
|
41
|
-
*/
|
|
42
|
-
export declare const ENGLISH_ONLY_PAGES: Set<string>;
|
|
43
|
-
export declare function fence(language: string, body: string): string;
|
|
44
|
-
export declare function hasPlugin(preset: ScaffoldPreset, packageName: string): boolean;
|
|
45
|
-
/**
|
|
46
|
-
* A demo key is either `@scope/package` or `@scope/package/topic`. Recover the
|
|
47
|
-
* package name: the first two `/`-separated segments form the scoped name.
|
|
48
|
-
*/
|
|
49
|
-
export declare function demoPackage(key: string): string;
|
|
50
|
-
/**
|
|
51
|
-
* The options object literal used for a plugin at this preset's depth, or
|
|
52
|
-
* `null` when it takes no options at that depth.
|
|
53
|
-
*/
|
|
54
|
-
export declare function readmePluginOptions(variables: SiteTemplateVariables, preset: ScaffoldPreset, plugin: ScaffoldPreset["plugins"][number]): string | null;
|
|
55
|
-
export declare const README_DEMO_ORDER: string[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SiteTemplateFile } from "./
|
|
1
|
+
import type { SiteTemplateFile } from "./template_types.js";
|
|
2
2
|
export declare const SCAFFOLD_UTILITY_NAMES: readonly ["gitignore", "editorconfig", "gitattributes", "biome", "npmrc", "vscode"];
|
|
3
3
|
export type ScaffoldUtilityName = (typeof SCAFFOLD_UTILITY_NAMES)[number];
|
|
4
4
|
export type ScaffoldUtilitySummary = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const RIEBECKITE_VERSION = "^0.0.
|
|
1
|
+
export declare const RIEBECKITE_VERSION = "^0.0.28";
|
|
@@ -13,8 +13,6 @@ export declare const CLOUDFLARE_WORKERS_DEFAULTS: {
|
|
|
13
13
|
readonly directory: "./dist";
|
|
14
14
|
};
|
|
15
15
|
};
|
|
16
|
-
/** Type for the wrangler config object */
|
|
17
|
-
export type CloudflareWorkersDefaults = typeof CLOUDFLARE_WORKERS_DEFAULTS;
|
|
18
16
|
export declare const WRANGLER_VERSION = "^4.83.0";
|
|
19
17
|
export declare const DEFAULT_WORKER_NAME = "riebeckite-site";
|
|
20
18
|
export declare const WORKER_NAME_MAX_LENGTH = 63;
|
|
@@ -40,7 +38,5 @@ export declare const LOCKFILE_NAME: "package-lock.json";
|
|
|
40
38
|
export declare const GITIGNORE_REQUIRED: readonly ["node_modules/", "dist/", ".riebeckite/", "app/.riebeckite/", ".wrangler/", ".dev.vars"];
|
|
41
39
|
/** Files that must NOT be in .gitignore */
|
|
42
40
|
export declare const GITIGNORE_FORBIDDEN: readonly ["package-lock.json"];
|
|
43
|
-
/** Starter preset content pages (base names without language suffixes) */
|
|
44
|
-
export declare const STARTER_CONTENT_PAGES: readonly ["index", "guide", "examples", "notes/planning", "notes/writing"];
|
|
45
41
|
/** Starter preset languages */
|
|
46
42
|
export declare const STARTER_LANGUAGES: readonly ["en", "ja", "zh-CN", "es", "de", "fr", "ko"];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-riebeckite",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.28",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/src/index.js",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"esbuild": "^0.28.2",
|
|
42
|
-
"@riebeckite/test": "0.0.
|
|
42
|
+
"@riebeckite/test": "0.0.28"
|
|
43
43
|
},
|
|
44
44
|
"repository": {
|
|
45
45
|
"type": "git",
|
|
@@ -11,6 +11,9 @@ concurrency:
|
|
|
11
11
|
group: riebeckite-deploy
|
|
12
12
|
cancel-in-progress: true
|
|
13
13
|
|
|
14
|
+
env:
|
|
15
|
+
NODE_VERSION: "22"
|
|
16
|
+
|
|
14
17
|
jobs:
|
|
15
18
|
deploy:
|
|
16
19
|
runs-on: ubuntu-latest
|
|
@@ -23,7 +26,7 @@ jobs:
|
|
|
23
26
|
- name: Set up Node.js
|
|
24
27
|
uses: actions/setup-node@v4
|
|
25
28
|
with:
|
|
26
|
-
node-version:
|
|
29
|
+
node-version: ${{ env.NODE_VERSION }}
|
|
27
30
|
cache: npm
|
|
28
31
|
|
|
29
32
|
- name: Install dependencies
|
|
@@ -31,14 +34,27 @@ jobs:
|
|
|
31
34
|
|
|
32
35
|
- name: Restore Riebeckite build state
|
|
33
36
|
uses: actions/cache@v4
|
|
37
|
+
continue-on-error: true
|
|
34
38
|
with:
|
|
35
39
|
path: |
|
|
36
40
|
.riebeckite/cache
|
|
37
41
|
.riebeckite/build/content-state.json
|
|
38
|
-
|
|
42
|
+
.riebeckite/ssg-output-cache.json
|
|
43
|
+
.riebeckite/ssg-output-cache.entries
|
|
44
|
+
.riebeckite/ssg-output-cache.fast-path.json
|
|
45
|
+
key: riebeckite-build-v2-${{ runner.os }}-node${{ env.NODE_VERSION }}-${{ hashFiles('package-lock.json') }}-${{ hashFiles('riebeckite.config.ts') }}-${{ github.run_id }}-${{ github.run_attempt }}
|
|
39
46
|
restore-keys: |
|
|
40
|
-
riebeckite-build-
|
|
41
|
-
riebeckite-
|
|
47
|
+
riebeckite-build-v2-${{ runner.os }}-node${{ env.NODE_VERSION }}-${{ hashFiles('package-lock.json') }}-${{ hashFiles('riebeckite.config.ts') }}-
|
|
48
|
+
riebeckite-build-v2-${{ runner.os }}-node${{ env.NODE_VERSION }}-${{ hashFiles('package-lock.json') }}-
|
|
49
|
+
|
|
50
|
+
- name: Report restored Riebeckite cache
|
|
51
|
+
shell: bash
|
|
52
|
+
run: |
|
|
53
|
+
if [ -d .riebeckite ]; then
|
|
54
|
+
echo "Restored Riebeckite cache: $(du -sb .riebeckite | cut -f1) bytes"
|
|
55
|
+
else
|
|
56
|
+
echo "Restored Riebeckite cache: 0 bytes (cold build)"
|
|
57
|
+
fi
|
|
42
58
|
|
|
43
59
|
- name: Validate configuration and plugins
|
|
44
60
|
run: npm exec riebeckite check
|
|
@@ -46,6 +62,11 @@ jobs:
|
|
|
46
62
|
- name: Build the site
|
|
47
63
|
run: npm exec riebeckite build
|
|
48
64
|
|
|
65
|
+
- name: Report Riebeckite cache to save
|
|
66
|
+
shell: bash
|
|
67
|
+
run: |
|
|
68
|
+
echo "Riebeckite cache to save: $(du -sb .riebeckite | cut -f1) bytes"
|
|
69
|
+
|
|
49
70
|
- name: Deploy the built assets
|
|
50
71
|
uses: cloudflare/wrangler-action@v3
|
|
51
72
|
with:
|
|
@@ -2,17 +2,6 @@
|
|
|
2
2
|
@import "./.riebeckite/plugin-styles.css";
|
|
3
3
|
@import "./.riebeckite/theme-styles.css";
|
|
4
4
|
|
|
5
|
-
*,
|
|
6
|
-
*::before,
|
|
7
|
-
*::after {
|
|
8
|
-
box-sizing: border-box;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
body {
|
|
12
|
-
margin: 0;
|
|
13
|
-
font-family: system-ui, sans-serif;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
5
|
.riebeckite-page {
|
|
17
6
|
display: flex;
|
|
18
7
|
min-height: 100vh;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SiteNav } from "@riebeckite/plugin-navigation";
|
|
1
|
+
import { MobileSiteNav, SiteNav } from "@riebeckite/plugin-navigation";
|
|
2
2
|
import { ColorModeToggle } from "@riebeckite/plugin-color-mode";
|
|
3
3
|
import { useSiteContext } from "@riebeckite/ui";
|
|
4
4
|
|
|
@@ -17,11 +17,12 @@ export function SiteHeader() {
|
|
|
17
17
|
/>
|
|
18
18
|
{site?.config.site.title}
|
|
19
19
|
</a>
|
|
20
|
-
<
|
|
21
|
-
<details class="rb-nav__mobile">
|
|
22
|
-
<summary class="rb-nav__toggle">Menu</summary>
|
|
20
|
+
<div class="site-header__primary-navigation">
|
|
23
21
|
<SiteNav placement="primary" omitHome />
|
|
24
|
-
</
|
|
22
|
+
</div>
|
|
23
|
+
<div class="site-header__mobile-navigation">
|
|
24
|
+
<MobileSiteNav placement="primary" omitHome />
|
|
25
|
+
</div>
|
|
25
26
|
<ColorModeToggle />
|
|
26
27
|
</header>
|
|
27
28
|
);
|
|
@@ -2,17 +2,6 @@
|
|
|
2
2
|
@import "./.riebeckite/plugin-styles.css";
|
|
3
3
|
@import "./.riebeckite/theme-styles.css";
|
|
4
4
|
|
|
5
|
-
*,
|
|
6
|
-
*::before,
|
|
7
|
-
*::after {
|
|
8
|
-
box-sizing: border-box;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
body {
|
|
12
|
-
margin: 0;
|
|
13
|
-
font-family: system-ui, sans-serif;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
5
|
.riebeckite-page {
|
|
17
6
|
--site-toc-sticky-top: var(--rb-space-3, 1.5rem);
|
|
18
7
|
display: flex;
|
|
@@ -43,7 +32,7 @@ body {
|
|
|
43
32
|
}
|
|
44
33
|
|
|
45
34
|
.site-header,
|
|
46
|
-
.
|
|
35
|
+
.site-footer {
|
|
47
36
|
width: min(100% - 2rem, var(--rb-layout-page-max, 80rem));
|
|
48
37
|
}
|
|
49
38
|
|
|
@@ -57,51 +46,17 @@ body {
|
|
|
57
46
|
text-decoration: none;
|
|
58
47
|
}
|
|
59
48
|
|
|
60
|
-
.
|
|
61
|
-
color: var(--rb-color-ink);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.rb-nav > .rb-nav__list {
|
|
65
|
-
display: flex;
|
|
66
|
-
align-items: center;
|
|
67
|
-
gap: var(--rb-space-3, 1.5rem);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
.rb-nav__link {
|
|
71
|
-
color: inherit;
|
|
72
|
-
text-decoration: none;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
.rb-nav__link:hover,
|
|
76
|
-
.rb-nav__link:focus-visible,
|
|
77
|
-
.rb-nav__link--active {
|
|
78
|
-
color: var(--rb-color-accent);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
.rb-nav__link:focus-visible,
|
|
82
|
-
.rb-nav__toggle:focus-visible {
|
|
83
|
-
outline: 2px solid var(--rb-color-accent);
|
|
84
|
-
outline-offset: 2px;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.rb-nav__children {
|
|
88
|
-
padding: var(--rb-space-2, 1rem);
|
|
89
|
-
background: var(--rb-color-surface);
|
|
90
|
-
border: 1px solid var(--rb-color-border);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
.rb-nav__mobile {
|
|
49
|
+
.site-header__mobile-navigation {
|
|
94
50
|
display: none;
|
|
95
51
|
}
|
|
96
52
|
|
|
97
|
-
.
|
|
53
|
+
.site-footer {
|
|
98
54
|
margin-top: 1rem;
|
|
99
55
|
border-top: 1px solid var(--rb-color-border);
|
|
100
56
|
}
|
|
101
57
|
|
|
102
58
|
@media (min-width: 30.001rem) and (max-width: 48rem) {
|
|
103
|
-
.
|
|
104
|
-
.rb-nav > .rb-nav__list {
|
|
59
|
+
.site-header {
|
|
105
60
|
flex-wrap: wrap;
|
|
106
61
|
}
|
|
107
62
|
}
|
|
@@ -111,51 +66,17 @@ body {
|
|
|
111
66
|
padding-block: var(--rb-space-3, 1.5rem);
|
|
112
67
|
}
|
|
113
68
|
|
|
114
|
-
.
|
|
69
|
+
.site-header {
|
|
115
70
|
flex-wrap: wrap;
|
|
116
71
|
}
|
|
117
72
|
|
|
118
|
-
.
|
|
73
|
+
.site-header__primary-navigation {
|
|
119
74
|
display: none;
|
|
120
75
|
}
|
|
121
76
|
|
|
122
|
-
.
|
|
123
|
-
position: relative;
|
|
77
|
+
.site-header__mobile-navigation {
|
|
124
78
|
display: block;
|
|
125
79
|
}
|
|
126
|
-
|
|
127
|
-
.rb-nav__mobile > .rb-nav {
|
|
128
|
-
position: absolute;
|
|
129
|
-
z-index: 10;
|
|
130
|
-
top: calc(100% + var(--rb-space-2, 1rem));
|
|
131
|
-
right: 0;
|
|
132
|
-
min-width: 12rem;
|
|
133
|
-
padding: var(--rb-space-3, 1.5rem);
|
|
134
|
-
background: var(--rb-color-surface);
|
|
135
|
-
border: 1px solid var(--rb-color-border);
|
|
136
|
-
box-shadow: 0 4px 12px
|
|
137
|
-
color-mix(in oklab, var(--rb-color-ink) 14%, transparent);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
.rb-nav__mobile .rb-nav__list,
|
|
141
|
-
.rb-nav__mobile .rb-nav__children {
|
|
142
|
-
display: flex;
|
|
143
|
-
flex-direction: column;
|
|
144
|
-
align-items: flex-start;
|
|
145
|
-
gap: var(--rb-space-2, 1rem);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
.rb-nav__mobile .rb-nav__list {
|
|
149
|
-
padding: 0;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
.rb-nav__mobile .rb-nav__children {
|
|
153
|
-
position: static;
|
|
154
|
-
margin-top: var(--rb-space-2, 1rem);
|
|
155
|
-
padding: 0;
|
|
156
|
-
background: transparent;
|
|
157
|
-
border: 0;
|
|
158
|
-
}
|
|
159
80
|
}
|
|
160
81
|
|
|
161
82
|
.site-header__logo {
|
|
@@ -174,29 +95,37 @@ body {
|
|
|
174
95
|
margin: 0 auto;
|
|
175
96
|
}
|
|
176
97
|
|
|
177
|
-
.rb-article-body
|
|
178
|
-
.site-article__footer {
|
|
98
|
+
.rb-article-body {
|
|
179
99
|
min-width: 0;
|
|
180
100
|
padding-inline: var(--rb-space-2, 1rem);
|
|
181
101
|
}
|
|
182
102
|
|
|
103
|
+
.site-article__footer {
|
|
104
|
+
min-width: 0;
|
|
105
|
+
}
|
|
106
|
+
|
|
183
107
|
.site-article__aside {
|
|
184
108
|
display: none;
|
|
185
109
|
}
|
|
186
110
|
|
|
187
|
-
@media (min-width:
|
|
111
|
+
@media (min-width: 80rem) {
|
|
188
112
|
.site-article__layout {
|
|
189
113
|
display: grid;
|
|
190
114
|
width: 100%;
|
|
191
|
-
grid-template-columns: minmax(0, var(--rb-layout-article-max, 48rem)) minmax(0,
|
|
192
|
-
gap: var(--rb-layout-gap, 2rem);
|
|
115
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, var(--rb-layout-article-max, 48rem)) minmax(0, 1fr);
|
|
193
116
|
align-items: start;
|
|
194
117
|
}
|
|
195
118
|
|
|
119
|
+
.site-article__layout > .rb-article-body {
|
|
120
|
+
grid-column: 2;
|
|
121
|
+
}
|
|
122
|
+
|
|
196
123
|
.site-article__aside {
|
|
197
124
|
display: block;
|
|
198
125
|
min-width: 0;
|
|
199
126
|
align-self: stretch;
|
|
127
|
+
grid-column: 3;
|
|
128
|
+
padding-inline-start: var(--rb-layout-gap, 2rem);
|
|
200
129
|
}
|
|
201
130
|
|
|
202
131
|
.site-article__aside > .rr-table-of-contents--desktop {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SiteNav } from "@riebeckite/plugin-navigation";
|
|
1
|
+
import { MobileSiteNav, SiteNav } from "@riebeckite/plugin-navigation";
|
|
2
2
|
import { ColorModeToggle } from "@riebeckite/plugin-color-mode";
|
|
3
3
|
import { useSiteContext } from "@riebeckite/ui";
|
|
4
4
|
|
|
@@ -17,11 +17,12 @@ export function SiteHeader() {
|
|
|
17
17
|
/>
|
|
18
18
|
{site?.config.site.title}
|
|
19
19
|
</a>
|
|
20
|
-
<
|
|
21
|
-
<details class="rb-nav__mobile">
|
|
22
|
-
<summary class="rb-nav__toggle">Menu</summary>
|
|
20
|
+
<div class="site-header__primary-navigation">
|
|
23
21
|
<SiteNav placement="primary" omitHome />
|
|
24
|
-
</
|
|
22
|
+
</div>
|
|
23
|
+
<div class="site-header__mobile-navigation">
|
|
24
|
+
<MobileSiteNav placement="primary" omitHome />
|
|
25
|
+
</div>
|
|
25
26
|
<ColorModeToggle />
|
|
26
27
|
</header>
|
|
27
28
|
);
|
|
@@ -2,17 +2,6 @@
|
|
|
2
2
|
@import "./.riebeckite/plugin-styles.css";
|
|
3
3
|
@import "./.riebeckite/theme-styles.css";
|
|
4
4
|
|
|
5
|
-
*,
|
|
6
|
-
*::before,
|
|
7
|
-
*::after {
|
|
8
|
-
box-sizing: border-box;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
body {
|
|
12
|
-
margin: 0;
|
|
13
|
-
font-family: system-ui, sans-serif;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
5
|
.riebeckite-page {
|
|
17
6
|
--site-toc-sticky-top: var(--rb-space-3, 1.5rem);
|
|
18
7
|
display: flex;
|
|
@@ -43,7 +32,7 @@ body {
|
|
|
43
32
|
}
|
|
44
33
|
|
|
45
34
|
.site-header,
|
|
46
|
-
.
|
|
35
|
+
.site-footer {
|
|
47
36
|
width: min(100% - 2rem, var(--rb-layout-page-max, 80rem));
|
|
48
37
|
}
|
|
49
38
|
|
|
@@ -57,51 +46,17 @@ body {
|
|
|
57
46
|
text-decoration: none;
|
|
58
47
|
}
|
|
59
48
|
|
|
60
|
-
.
|
|
61
|
-
color: var(--rb-color-ink);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.rb-nav > .rb-nav__list {
|
|
65
|
-
display: flex;
|
|
66
|
-
align-items: center;
|
|
67
|
-
gap: var(--rb-space-3, 1.5rem);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
.rb-nav__link {
|
|
71
|
-
color: inherit;
|
|
72
|
-
text-decoration: none;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
.rb-nav__link:hover,
|
|
76
|
-
.rb-nav__link:focus-visible,
|
|
77
|
-
.rb-nav__link--active {
|
|
78
|
-
color: var(--rb-color-accent);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
.rb-nav__link:focus-visible,
|
|
82
|
-
.rb-nav__toggle:focus-visible {
|
|
83
|
-
outline: 2px solid var(--rb-color-accent);
|
|
84
|
-
outline-offset: 2px;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.rb-nav__children {
|
|
88
|
-
padding: var(--rb-space-2, 1rem);
|
|
89
|
-
background: var(--rb-color-surface);
|
|
90
|
-
border: 1px solid var(--rb-color-border);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
.rb-nav__mobile {
|
|
49
|
+
.site-header__mobile-navigation {
|
|
94
50
|
display: none;
|
|
95
51
|
}
|
|
96
52
|
|
|
97
|
-
.
|
|
53
|
+
.site-footer {
|
|
98
54
|
margin-top: 1rem;
|
|
99
55
|
border-top: 1px solid var(--rb-color-border);
|
|
100
56
|
}
|
|
101
57
|
|
|
102
58
|
@media (min-width: 30.001rem) and (max-width: 48rem) {
|
|
103
|
-
.
|
|
104
|
-
.rb-nav > .rb-nav__list {
|
|
59
|
+
.site-header {
|
|
105
60
|
flex-wrap: wrap;
|
|
106
61
|
}
|
|
107
62
|
}
|
|
@@ -111,51 +66,17 @@ body {
|
|
|
111
66
|
padding-block: var(--rb-space-3, 1.5rem);
|
|
112
67
|
}
|
|
113
68
|
|
|
114
|
-
.
|
|
69
|
+
.site-header {
|
|
115
70
|
flex-wrap: wrap;
|
|
116
71
|
}
|
|
117
72
|
|
|
118
|
-
.
|
|
73
|
+
.site-header__primary-navigation {
|
|
119
74
|
display: none;
|
|
120
75
|
}
|
|
121
76
|
|
|
122
|
-
.
|
|
123
|
-
position: relative;
|
|
77
|
+
.site-header__mobile-navigation {
|
|
124
78
|
display: block;
|
|
125
79
|
}
|
|
126
|
-
|
|
127
|
-
.rb-nav__mobile > .rb-nav {
|
|
128
|
-
position: absolute;
|
|
129
|
-
z-index: 10;
|
|
130
|
-
top: calc(100% + var(--rb-space-2, 1rem));
|
|
131
|
-
right: 0;
|
|
132
|
-
min-width: 12rem;
|
|
133
|
-
padding: var(--rb-space-3, 1.5rem);
|
|
134
|
-
background: var(--rb-color-surface);
|
|
135
|
-
border: 1px solid var(--rb-color-border);
|
|
136
|
-
box-shadow: 0 4px 12px
|
|
137
|
-
color-mix(in oklab, var(--rb-color-ink) 14%, transparent);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
.rb-nav__mobile .rb-nav__list,
|
|
141
|
-
.rb-nav__mobile .rb-nav__children {
|
|
142
|
-
display: flex;
|
|
143
|
-
flex-direction: column;
|
|
144
|
-
align-items: flex-start;
|
|
145
|
-
gap: var(--rb-space-2, 1rem);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
.rb-nav__mobile .rb-nav__list {
|
|
149
|
-
padding: 0;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
.rb-nav__mobile .rb-nav__children {
|
|
153
|
-
position: static;
|
|
154
|
-
margin-top: var(--rb-space-2, 1rem);
|
|
155
|
-
padding: 0;
|
|
156
|
-
background: transparent;
|
|
157
|
-
border: 0;
|
|
158
|
-
}
|
|
159
80
|
}
|
|
160
81
|
|
|
161
82
|
.site-header__logo {
|
|
@@ -174,29 +95,37 @@ body {
|
|
|
174
95
|
margin: 0 auto;
|
|
175
96
|
}
|
|
176
97
|
|
|
177
|
-
.rb-article-body
|
|
178
|
-
.site-article__footer {
|
|
98
|
+
.rb-article-body {
|
|
179
99
|
min-width: 0;
|
|
180
100
|
padding-inline: var(--rb-space-2, 1rem);
|
|
181
101
|
}
|
|
182
102
|
|
|
103
|
+
.site-article__footer {
|
|
104
|
+
min-width: 0;
|
|
105
|
+
}
|
|
106
|
+
|
|
183
107
|
.site-article__aside {
|
|
184
108
|
display: none;
|
|
185
109
|
}
|
|
186
110
|
|
|
187
|
-
@media (min-width:
|
|
111
|
+
@media (min-width: 80rem) {
|
|
188
112
|
.site-article__layout {
|
|
189
113
|
display: grid;
|
|
190
114
|
width: 100%;
|
|
191
|
-
grid-template-columns: minmax(0, var(--rb-layout-article-max, 48rem)) minmax(0,
|
|
192
|
-
gap: var(--rb-layout-gap, 2rem);
|
|
115
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, var(--rb-layout-article-max, 48rem)) minmax(0, 1fr);
|
|
193
116
|
align-items: start;
|
|
194
117
|
}
|
|
195
118
|
|
|
119
|
+
.site-article__layout > .rb-article-body {
|
|
120
|
+
grid-column: 2;
|
|
121
|
+
}
|
|
122
|
+
|
|
196
123
|
.site-article__aside {
|
|
197
124
|
display: block;
|
|
198
125
|
min-width: 0;
|
|
199
126
|
align-self: stretch;
|
|
127
|
+
grid-column: 3;
|
|
128
|
+
padding-inline-start: var(--rb-layout-gap, 2rem);
|
|
200
129
|
}
|
|
201
130
|
|
|
202
131
|
.site-article__aside > .rr-table-of-contents--desktop {
|