From 545cd493dab467c6ed51b4be92b49046d36c9f57 Mon Sep 17 00:00:00 2001 From: Thomas Allmer Date: Sat, 30 Jul 2022 16:37:08 +0200 Subject: [PATCH] feat: add example for @rocket/launch --- config/rocket.config.js | 23 +- examples/50-landing-theme-spark/package.json | 2 +- examples/51-docs-theme-launch/.gitignore | 22 ++ .../.vscode/settings.json | 8 + examples/51-docs-theme-launch/README.md | 44 +++ .../config/rocket.config.js | 7 + examples/51-docs-theme-launch/package.json | 24 ++ .../10--getting-started.rocket.md | 48 +++ .../10--first-category/index.rocket.js | 44 +++ .../site/pages/10--docs/index.rocket.md | 54 +++ .../pages/40--blog/001--first/index.rocket.md | 53 +++ .../40--blog/002--second/index.rocket.md | 53 +++ .../site/pages/40--blog/002--second/intro.png | Bin 0 -> 58822 bytes .../site/pages/40--blog/index.rocket.js | 65 ++++ .../site/pages/40--blog/recursive.data.js | 6 + .../site/pages/404.html.rocket.js | 11 + .../site/pages/index.rocket.js | 129 ++++++++ .../pages/pageTreeData.rocketGenerated.json | 311 ++++++++++++++++++ .../site/pages/recursive.data.js | 158 +++++++++ .../site/pages/simulator.rocket.js | 13 + .../site/public/android-chrome-192x192.png | Bin 0 -> 22062 bytes .../site/public/android-chrome-512x512.png | Bin 0 -> 70325 bytes .../site/public/apple-touch-icon.png | Bin 0 -> 10521 bytes .../site/public/favicon.ico | Bin 0 -> 15086 bytes .../51-docs-theme-launch/site/public/icon.svg | 12 + .../site/public/site.webmanifest | 19 ++ .../site/src/assets}/home-background.svg | 0 .../rocket-logo-dark-with-text-below.svg | 8 + .../src/assets/rocket-logo-dark-with-text.svg | 7 + .../site/src/assets/rocket-logo-dark.svg | 7 + .../rocket-logo-light-with-text-below.svg | 14 + .../assets/rocket-logo-light-with-text.svg | 13 + .../site/src/assets/rocket-logo-light.svg | 12 + .../site/src/data/authors.js | 6 + .../site/src/layouts/layoutData.js | 71 ++++ examples/51-docs-theme-launch/tsconfig.json | 7 + package.json | 4 +- packages/blog/CHANGELOG.md | 76 ----- packages/blog/README.md | 5 - packages/blog/index.js | 1 - packages/blog/package.json | 43 --- packages/blog/preset/_assets/rocket-blog.css | 62 ---- .../_layoutBlogDetails/content/10-title.njk | 6 - .../_layoutBlogDetails/content/20-content.njk | 1 - .../_layoutBlogDetails/content/30-footer.njk | 1 - .../_layoutBlogDetails/sidebar/10-logo.njk | 1 - .../content/20-content.njk | 1 - .../content/30-articles.njk | 1 - .../_joiningBlocks/head/add-blog-css.njk | 9 - .../preset/_includes/layout-blog-details.njk | 11 - .../preset/_includes/layout-blog-overview.njk | 5 - .../partials/_layoutBlogDetails/content.njk | 5 - .../partials/_layoutBlogDetails/sidebar.njk | 7 - .../partials/_layoutBlogOverview/content.njk | 5 - .../partials/_shared/blog-content-footer.njk | 6 - packages/blog/preset/rocketBlog.js | 52 --- packages/create/src/choices.json | 7 +- packages/engine/src/index.js | 1 + packages/engine/types/layout.d.ts | 2 + packages/launch/src/blog/LaunchBlogDetails.js | 2 +- .../launch/src/blog/LaunchBlogOverview.js | 20 +- packages/launch/src/blog/LaunchBlogPreview.js | 2 +- .../20--basics/40--components.rocket.md | 5 +- .../20--basics/80--hydration.rocket.md | 3 +- .../30--guides/20--social-media.rocket.md | 4 +- site/pages/10--docs/index.rocket.md | 2 +- .../20--presets/30--spark/20--demo.rocket.js | 2 +- site/pages/20--presets/index.rocket.md | 2 +- site/pages/30--tools/index.rocket.md | 2 +- .../003--open-graph-images/index.rocket.md | 4 +- site/pages/40--blog/index.rocket.js | 2 +- site/pages/40--blog/recursive.data.js | 2 +- site/pages/__shared/footerMenu.js | 49 --- site/pages/__shared/pageTree.js | 4 - site/pages/__shared/search.js | 10 - site/pages/index.rocket.js | 6 +- site/pages/opengraph.rocket.js | 2 +- site/pages/pageTreeData.rocketGenerated.json | 108 +++--- site/pages/recursive.data.js | 9 +- site/pages/sitemap.xml.rocket.js | 2 +- 80 files changed, 1337 insertions(+), 468 deletions(-) create mode 100644 examples/51-docs-theme-launch/.gitignore create mode 100644 examples/51-docs-theme-launch/.vscode/settings.json create mode 100644 examples/51-docs-theme-launch/README.md create mode 100644 examples/51-docs-theme-launch/config/rocket.config.js create mode 100644 examples/51-docs-theme-launch/package.json create mode 100644 examples/51-docs-theme-launch/site/pages/10--docs/10--first-category/10--getting-started.rocket.md create mode 100644 examples/51-docs-theme-launch/site/pages/10--docs/10--first-category/index.rocket.js create mode 100644 examples/51-docs-theme-launch/site/pages/10--docs/index.rocket.md create mode 100644 examples/51-docs-theme-launch/site/pages/40--blog/001--first/index.rocket.md create mode 100644 examples/51-docs-theme-launch/site/pages/40--blog/002--second/index.rocket.md create mode 100644 examples/51-docs-theme-launch/site/pages/40--blog/002--second/intro.png create mode 100644 examples/51-docs-theme-launch/site/pages/40--blog/index.rocket.js create mode 100644 examples/51-docs-theme-launch/site/pages/40--blog/recursive.data.js create mode 100644 examples/51-docs-theme-launch/site/pages/404.html.rocket.js create mode 100644 examples/51-docs-theme-launch/site/pages/index.rocket.js create mode 100644 examples/51-docs-theme-launch/site/pages/pageTreeData.rocketGenerated.json create mode 100644 examples/51-docs-theme-launch/site/pages/recursive.data.js create mode 100644 examples/51-docs-theme-launch/site/pages/simulator.rocket.js create mode 100644 examples/51-docs-theme-launch/site/public/android-chrome-192x192.png create mode 100644 examples/51-docs-theme-launch/site/public/android-chrome-512x512.png create mode 100644 examples/51-docs-theme-launch/site/public/apple-touch-icon.png create mode 100644 examples/51-docs-theme-launch/site/public/favicon.ico create mode 100644 examples/51-docs-theme-launch/site/public/icon.svg create mode 100644 examples/51-docs-theme-launch/site/public/site.webmanifest rename {site/public => examples/51-docs-theme-launch/site/src/assets}/home-background.svg (100%) create mode 100644 examples/51-docs-theme-launch/site/src/assets/rocket-logo-dark-with-text-below.svg create mode 100644 examples/51-docs-theme-launch/site/src/assets/rocket-logo-dark-with-text.svg create mode 100644 examples/51-docs-theme-launch/site/src/assets/rocket-logo-dark.svg create mode 100644 examples/51-docs-theme-launch/site/src/assets/rocket-logo-light-with-text-below.svg create mode 100644 examples/51-docs-theme-launch/site/src/assets/rocket-logo-light-with-text.svg create mode 100644 examples/51-docs-theme-launch/site/src/assets/rocket-logo-light.svg create mode 100644 examples/51-docs-theme-launch/site/src/data/authors.js create mode 100644 examples/51-docs-theme-launch/site/src/layouts/layoutData.js create mode 100644 examples/51-docs-theme-launch/tsconfig.json delete mode 100644 packages/blog/CHANGELOG.md delete mode 100644 packages/blog/README.md delete mode 100644 packages/blog/index.js delete mode 100644 packages/blog/package.json delete mode 100644 packages/blog/preset/_assets/rocket-blog.css delete mode 100644 packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/content/10-title.njk delete mode 100644 packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/content/20-content.njk delete mode 100644 packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/content/30-footer.njk delete mode 100644 packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/sidebar/10-logo.njk delete mode 100644 packages/blog/preset/_includes/_joiningBlocks/_layoutBlogOverview/content/20-content.njk delete mode 100644 packages/blog/preset/_includes/_joiningBlocks/_layoutBlogOverview/content/30-articles.njk delete mode 100644 packages/blog/preset/_includes/_joiningBlocks/head/add-blog-css.njk delete mode 100644 packages/blog/preset/_includes/layout-blog-details.njk delete mode 100644 packages/blog/preset/_includes/layout-blog-overview.njk delete mode 100644 packages/blog/preset/_includes/partials/_layoutBlogDetails/content.njk delete mode 100644 packages/blog/preset/_includes/partials/_layoutBlogDetails/sidebar.njk delete mode 100644 packages/blog/preset/_includes/partials/_layoutBlogOverview/content.njk delete mode 100644 packages/blog/preset/_includes/partials/_shared/blog-content-footer.njk delete mode 100644 packages/blog/preset/rocketBlog.js delete mode 100644 site/pages/__shared/footerMenu.js delete mode 100644 site/pages/__shared/pageTree.js delete mode 100644 site/pages/__shared/search.js diff --git a/config/rocket.config.js b/config/rocket.config.js index 26c9bd9..fe721e3 100644 --- a/config/rocket.config.js +++ b/config/rocket.config.js @@ -1,12 +1,6 @@ import { rocketLaunch } from '@rocket/launch'; import { rocketSpark } from '@rocket/spark'; -// import { rocketBlog } from '@rocket/blog'; import { presetRocketSearch } from '@rocket/search'; -// import { absoluteBaseUrlNetlify } from '@rocket/core/helpers'; -// import { adjustPluginOptions } from 'plugins-manager'; -// TODO: preset needs to be updated to use the new plugin manager -// import { codeTabs } from 'rocket-preset-code-tabs'; -// import { customElementsManifest } from 'rocket-preset-custom-elements-manifest'; /** * Extracts the current applicable absoluteBaseUrl from Netlify system variables @@ -45,22 +39,7 @@ export default /** @type {import('@rocket/cli/types/main').RocketCliOptions} */ // buildOpenGraphImages: false, - presets: [ - rocketLaunch(), - rocketSpark(), - presetRocketSearch(), - // rocketBlog(), - // codeTabs({ - // collections: { - // packageManagers: { - // npm: { label: 'NPM', iconHref: '/_merged_assets/_static/logos/npm.svg' }, - // yarn: { label: 'Yarn', iconHref: '/_merged_assets/_static/logos/yarn.svg' }, - // pnpm: { label: 'PNPM', iconHref: '/_merged_assets/_static/logos/pnpm.svg' }, - // }, - // }, - // }), - // customElementsManifest(), - ], + presets: [rocketLaunch(), rocketSpark(), presetRocketSearch()], // serviceWorkerName: 'sw.js', // pathPrefix: '/_site/', diff --git a/examples/50-landing-theme-spark/package.json b/examples/50-landing-theme-spark/package.json index 443c782..f9965ff 100644 --- a/examples/50-landing-theme-spark/package.json +++ b/examples/50-landing-theme-spark/package.json @@ -17,7 +17,7 @@ "@rocket/spark": "^0.1.0-alpha.1", "lit": "^2.2.5" }, - "@rocket/template-name": "Landing Page (Spark Theme)", + "@rocket/template-name": "Landing Page (@rocket/spark Theme)", "imports": { "#components/*": "./site/src/components/*" } diff --git a/examples/51-docs-theme-launch/.gitignore b/examples/51-docs-theme-launch/.gitignore new file mode 100644 index 0000000..b97b632 --- /dev/null +++ b/examples/51-docs-theme-launch/.gitignore @@ -0,0 +1,22 @@ +# dependencies +node_modules/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# environment variables +.env +.env.production + +# macOS-specific files +.DS_Store + +# Rocket ignore files +*-mdjs-generated.js +*-converted-html.js +*-converted-md.js +*-converted-md-source.js +_site +_site-dev diff --git a/examples/51-docs-theme-launch/.vscode/settings.json b/examples/51-docs-theme-launch/.vscode/settings.json new file mode 100644 index 0000000..8871087 --- /dev/null +++ b/examples/51-docs-theme-launch/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "files.exclude": { + "**/*-mdjs-generated.js": true, + }, + "search.exclude": { + "**/*-mdjs-generated.js": true, + } +} diff --git a/examples/51-docs-theme-launch/README.md b/examples/51-docs-theme-launch/README.md new file mode 100644 index 0000000..7c293b1 --- /dev/null +++ b/examples/51-docs-theme-launch/README.md @@ -0,0 +1,44 @@ +# Rocket Starter Kit: Documentation Theme Launch + +``` +npx @rocket/create@latest --template 51-docs-theme-launch +``` + +> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun! + +## 🚀 Project Structure + +Inside of your Rocket project, you'll see the following folders and files: + +``` +. +├── config +│ └── rocket.config.js +├── site +│ ├── pages +│ │ └── index.rocket.html +│ └── public +│ └── favicon.ico +└── package.json +``` + +Rocket looks for `.rocket.md` or `.rocket.js` or `.rocket.html` files in the `site/pages` directory. Each page is exposed as a route based on its file name. + +There's nothing special about `site/src/components/`, but that's where we like to put our web components. + +Any static assets, that is not referenced via HTML but you still want to be on the web server we can place in the `site/public/` directory. + +## 🧞 Commands + +All commands are run from the root of the project, from a terminal: + +| Command | Action | +| :---------------- | :------------------------------------------- | +| `npm install` | Installs dependencies | +| `npm run start` | Starts local dev server at `localhost:8000` | +| `npm run build` | Build your production site to `./_site/` | +| `npm run preview` | Preview your build locally, before deploying | + +## 👀 Want to learn more? + +Feel free to check [our documentation](https://rocket.modern-web.dev) or jump into our [Discord server](https://rocket.modern-web.dev/chat). diff --git a/examples/51-docs-theme-launch/config/rocket.config.js b/examples/51-docs-theme-launch/config/rocket.config.js new file mode 100644 index 0000000..57cb33d --- /dev/null +++ b/examples/51-docs-theme-launch/config/rocket.config.js @@ -0,0 +1,7 @@ +import { rocketLaunch } from '@rocket/launch'; +import { presetRocketSearch } from '@rocket/search'; + +export default /** @type {import('@rocket/cli').RocketCliOptions} */ ({ + absoluteBaseUrl: 'http://localhost:8080', + presets: [rocketLaunch(), presetRocketSearch()], +}); diff --git a/examples/51-docs-theme-launch/package.json b/examples/51-docs-theme-launch/package.json new file mode 100644 index 0000000..b3b5144 --- /dev/null +++ b/examples/51-docs-theme-launch/package.json @@ -0,0 +1,24 @@ +{ + "name": "rocket-docs-theme-launch", + "version": "0.0.1", + "private": true, + "description": "A documentation page based on the @rocket/launch theme", + "type": "module", + "scripts": { + "build": "rocket build", + "dev": "npm start", + "preview": "rocket preview", + "start": "NODE_DEBUG=engine:rendering rocket start --open" + }, + "devDependencies": { + "@rocket/cli": "^0.20.0-alpha.17", + "@rocket/engine": "^0.1.0-alpha.23", + "@rocket/launch": "^0.20.0-alpha.7", + "@rocket/search": "^0.6.0-alpha.0", + "lit": "^2.2.5" + }, + "@rocket/template-name": "Documentation Website (@rocket/launch Theme)", + "imports": { + "#src/*": "./site/src/*" + } +} diff --git a/examples/51-docs-theme-launch/site/pages/10--docs/10--first-category/10--getting-started.rocket.md b/examples/51-docs-theme-launch/site/pages/10--docs/10--first-category/10--getting-started.rocket.md new file mode 100644 index 0000000..163631a --- /dev/null +++ b/examples/51-docs-theme-launch/site/pages/10--docs/10--first-category/10--getting-started.rocket.md @@ -0,0 +1,48 @@ +```js server +/* START - Rocket auto generated - do not touch */ +export const sourceRelativeFilePath = '10--docs/10--first-category/10--getting-started.rocket.md'; +import { + html, + layout, + setupUnifiedPlugins, + components, + openGraphLayout, +} from '../../recursive.data.js'; +export { html, layout, setupUnifiedPlugins, components, openGraphLayout }; +export async function registerCustomElements() { + // server-only components + customElements.define( + 'rocket-social-link', + await import('@rocket/components/social-link.js').then(m => m.RocketSocialLink), + ); + customElements.define( + 'rocket-header', + await import('@rocket/components/header.js').then(m => m.RocketHeader), + ); + customElements.define( + 'content-area', + await import('@rocket/components/content-area.js').then(m => m.ContentArea), + ); + customElements.define( + 'main-docs', + await import('@rocket/components/main-docs.js').then(m => m.MainDocs), + ); + // hydrate-able components + customElements.define( + 'rocket-search', + await import('@rocket/search/search.js').then(m => m.RocketSearch), + ); + customElements.define( + 'rocket-drawer', + await import('@rocket/components/drawer.js').then(m => m.RocketDrawer), + ); +} +export const needsLoader = true; +/* END - Rocket auto generated - do not touch */ + +export const subTitle = 'Create your first Rocket site'; +``` + +# Getting started + +Add your own content here diff --git a/examples/51-docs-theme-launch/site/pages/10--docs/10--first-category/index.rocket.js b/examples/51-docs-theme-launch/site/pages/10--docs/10--first-category/index.rocket.js new file mode 100644 index 0000000..2c3b181 --- /dev/null +++ b/examples/51-docs-theme-launch/site/pages/10--docs/10--first-category/index.rocket.js @@ -0,0 +1,44 @@ +/* START - Rocket auto generated - do not touch */ +export const sourceRelativeFilePath = '10--docs/10--first-category/index.rocket.js'; +import { + html, + layout, + setupUnifiedPlugins, + components, + openGraphLayout, +} from '../../recursive.data.js'; +export { html, layout, setupUnifiedPlugins, components, openGraphLayout }; +export async function registerCustomElements() { + // server-only components + customElements.define( + 'rocket-social-link', + await import('@rocket/components/social-link.js').then(m => m.RocketSocialLink), + ); + customElements.define( + 'rocket-header', + await import('@rocket/components/header.js').then(m => m.RocketHeader), + ); + customElements.define( + 'content-area', + await import('@rocket/components/content-area.js').then(m => m.ContentArea), + ); + customElements.define( + 'main-docs', + await import('@rocket/components/main-docs.js').then(m => m.MainDocs), + ); + // hydrate-able components + customElements.define( + 'rocket-search', + await import('@rocket/search/search.js').then(m => m.RocketSearch), + ); + customElements.define( + 'rocket-drawer', + await import('@rocket/components/drawer.js').then(m => m.RocketDrawer), + ); +} +export const needsLoader = true; +/* END - Rocket auto generated - do not touch */ + +export const menuNoLink = true; + +export default () => html`

First Category

`; diff --git a/examples/51-docs-theme-launch/site/pages/10--docs/index.rocket.md b/examples/51-docs-theme-launch/site/pages/10--docs/index.rocket.md new file mode 100644 index 0000000..062867e --- /dev/null +++ b/examples/51-docs-theme-launch/site/pages/10--docs/index.rocket.md @@ -0,0 +1,54 @@ +```js server +/* START - Rocket auto generated - do not touch */ +export const sourceRelativeFilePath = '10--docs/index.rocket.md'; +import { + html, + layout, + setupUnifiedPlugins, + components, + openGraphLayout, +} from '../recursive.data.js'; +export { html, layout, setupUnifiedPlugins, components, openGraphLayout }; +export async function registerCustomElements() { + // server-only components + customElements.define( + 'rocket-social-link', + await import('@rocket/components/social-link.js').then(m => m.RocketSocialLink), + ); + customElements.define( + 'rocket-header', + await import('@rocket/components/header.js').then(m => m.RocketHeader), + ); + customElements.define( + 'content-area', + await import('@rocket/components/content-area.js').then(m => m.ContentArea), + ); + customElements.define( + 'main-docs', + await import('@rocket/components/main-docs.js').then(m => m.MainDocs), + ); + // hydrate-able components + customElements.define( + 'rocket-search', + await import('@rocket/search/search.js').then(m => m.RocketSearch), + ); + customElements.define( + 'rocket-drawer', + await import('@rocket/components/drawer.js').then(m => m.RocketDrawer), + ); +} +export const needsLoader = true; +/* END - Rocket auto generated - do not touch */ + +import { pageTree } from '#src/layouts/layoutData.js'; +import { ChildListMenu } from '@rocket/engine'; + +export const menuLinkText = 'Docs'; +export const subTitle = 'From zero to hero'; +``` + +# Documentation + +Rocket helps you generate static pages from Markdown files while giving you the flexibility to sprinkle in some JavaScript where needed. + +
${pageTree.renderMenu(new ChildListMenu(), sourceRelativeFilePath)}
diff --git a/examples/51-docs-theme-launch/site/pages/40--blog/001--first/index.rocket.md b/examples/51-docs-theme-launch/site/pages/40--blog/001--first/index.rocket.md new file mode 100644 index 0000000..58ab176 --- /dev/null +++ b/examples/51-docs-theme-launch/site/pages/40--blog/001--first/index.rocket.md @@ -0,0 +1,53 @@ +```js server +/* START - Rocket auto generated - do not touch */ +export const sourceRelativeFilePath = '40--blog/001--first/index.rocket.md'; +import { html, setupUnifiedPlugins, components, openGraphLayout } from '../../recursive.data.js'; +import { layout } from '../recursive.data.js'; +export { html, layout, setupUnifiedPlugins, components, openGraphLayout }; +export async function registerCustomElements() { + // server-only components + customElements.define( + 'rocket-social-link', + await import('@rocket/components/social-link.js').then(m => m.RocketSocialLink), + ); + customElements.define( + 'rocket-header', + await import('@rocket/components/header.js').then(m => m.RocketHeader), + ); + customElements.define( + 'content-area', + await import('@rocket/components/content-area.js').then(m => m.ContentArea), + ); + customElements.define( + 'launch-blog-details', + await import('@rocket/launch/blog-details.js').then(m => m.LaunchBlogDetails), + ); + customElements.define( + 'main-content', + await import('@rocket/components/main-content.js').then(m => m.MainContent), + ); + // hydrate-able components + customElements.define( + 'rocket-search', + await import('@rocket/search/search.js').then(m => m.RocketSearch), + ); + customElements.define( + 'rocket-drawer', + await import('@rocket/components/drawer.js').then(m => m.RocketDrawer), + ); +} +export const needsLoader = true; +/* END - Rocket auto generated - do not touch */ +import { thomas } from '../../../src/data/authors.js'; + +export const description = + 'A tool that checks the validity of all your HTML links of your whole website.'; +export const publishDate = new Date('2021-05-09'); + +export const tags = ['html', 'javascript', 'webdev', 'node']; +// cover_image: https://dev-to-uploads.s3.amazonaws.com/i/an9z6f4hdll2jlne43u3.jpg + +export const authors = [thomas]; +``` + +# First diff --git a/examples/51-docs-theme-launch/site/pages/40--blog/002--second/index.rocket.md b/examples/51-docs-theme-launch/site/pages/40--blog/002--second/index.rocket.md new file mode 100644 index 0000000..019d713 --- /dev/null +++ b/examples/51-docs-theme-launch/site/pages/40--blog/002--second/index.rocket.md @@ -0,0 +1,53 @@ +```js server +/* START - Rocket auto generated - do not touch */ +export const sourceRelativeFilePath = '40--blog/002--second/index.rocket.md'; +import { html, setupUnifiedPlugins, components, openGraphLayout } from '../../recursive.data.js'; +import { layout } from '../recursive.data.js'; +export { html, layout, setupUnifiedPlugins, components, openGraphLayout }; +export async function registerCustomElements() { + // server-only components + customElements.define( + 'rocket-social-link', + await import('@rocket/components/social-link.js').then(m => m.RocketSocialLink), + ); + customElements.define( + 'rocket-header', + await import('@rocket/components/header.js').then(m => m.RocketHeader), + ); + customElements.define( + 'content-area', + await import('@rocket/components/content-area.js').then(m => m.ContentArea), + ); + customElements.define( + 'launch-blog-details', + await import('@rocket/launch/blog-details.js').then(m => m.LaunchBlogDetails), + ); + customElements.define( + 'main-content', + await import('@rocket/components/main-content.js').then(m => m.MainContent), + ); + // hydrate-able components + customElements.define( + 'rocket-search', + await import('@rocket/search/search.js').then(m => m.RocketSearch), + ); + customElements.define( + 'rocket-drawer', + await import('@rocket/components/drawer.js').then(m => m.RocketDrawer), + ); +} +export const needsLoader = true; +/* END - Rocket auto generated - do not touch */ +import { thomas } from '../../../src/data/authors.js'; + +export const description = + 'Let us take a look at Rocket which is sort of a nuxt/next equivalent but instead of vue/react it works best with web standards like custom elements, ES modules, template literals...'; +export const publishDate = new Date('2022-03-23'); + +export const tags = ['rocket', 'javascript', 'node', 'SSG']; +export const authors = [thomas]; +``` + +# Second + +![some image](./intro.png) diff --git a/examples/51-docs-theme-launch/site/pages/40--blog/002--second/intro.png b/examples/51-docs-theme-launch/site/pages/40--blog/002--second/intro.png new file mode 100644 index 0000000000000000000000000000000000000000..e7610a9d597474bf10aa5900020a8469c9bc4f2e GIT binary patch literal 58822 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 m.RocketSocialLink), + ); + customElements.define( + 'rocket-header', + await import('@rocket/components/header.js').then(m => m.RocketHeader), + ); + customElements.define( + 'content-area', + await import('@rocket/components/content-area.js').then(m => m.ContentArea), + ); + customElements.define( + 'launch-blog-preview', + await import('@rocket/launch/blog-preview.js').then(m => m.LaunchBlogPreview), + ); + customElements.define( + 'launch-blog-overview', + await import('@rocket/launch/blog-overview.js').then(m => m.LaunchBlogOverview), + ); + customElements.define( + 'main-content', + await import('@rocket/components/main-content.js').then(m => m.MainContent), + ); + // hydrate-able components + customElements.define( + 'rocket-search', + await import('@rocket/search/search.js').then(m => m.RocketSearch), + ); + customElements.define( + 'rocket-drawer', + await import('@rocket/components/drawer.js').then(m => m.RocketDrawer), + ); +} +export const needsLoader = true; +/* END - Rocket auto generated - do not touch */ + +import { LayoutMain } from '@rocket/launch'; +import { layoutData } from '#src/layouts/layoutData.js'; + +export const menuLinkText = 'Blog'; +export const layout = new LayoutMain({ + ...layoutData, +}); + +export default () => html` + +

Rocket Blog

+

+ Discover articles from the core team and contributors about Rocket, tips and tricks included! +

+ + + +
+`; diff --git a/examples/51-docs-theme-launch/site/pages/40--blog/recursive.data.js b/examples/51-docs-theme-launch/site/pages/40--blog/recursive.data.js new file mode 100644 index 0000000..2cd0f79 --- /dev/null +++ b/examples/51-docs-theme-launch/site/pages/40--blog/recursive.data.js @@ -0,0 +1,6 @@ +import { LayoutBlogPost } from '@rocket/launch'; +import { layoutData } from '#src/layouts/layoutData.js'; + +export const layout = new LayoutBlogPost({ + ...layoutData, +}); diff --git a/examples/51-docs-theme-launch/site/pages/404.html.rocket.js b/examples/51-docs-theme-launch/site/pages/404.html.rocket.js new file mode 100644 index 0000000..4f88070 --- /dev/null +++ b/examples/51-docs-theme-launch/site/pages/404.html.rocket.js @@ -0,0 +1,11 @@ +/* START - Rocket auto generated - do not touch */ +export const sourceRelativeFilePath = '404.html.rocket.js'; +import { html, setupUnifiedPlugins, components, openGraphLayout } from './recursive.data.js'; +export { html, setupUnifiedPlugins, components, openGraphLayout }; +/* END - Rocket auto generated - do not touch */ + +import { Layout404 } from '@rocket/launch'; + +export const layout = new Layout404(); + +export default () => ''; diff --git a/examples/51-docs-theme-launch/site/pages/index.rocket.js b/examples/51-docs-theme-launch/site/pages/index.rocket.js new file mode 100644 index 0000000..4b9807a --- /dev/null +++ b/examples/51-docs-theme-launch/site/pages/index.rocket.js @@ -0,0 +1,129 @@ +/* START - Rocket auto generated - do not touch */ +export const sourceRelativeFilePath = 'index.rocket.js'; +import { html, setupUnifiedPlugins, components, openGraphLayout } from './recursive.data.js'; +export { html, setupUnifiedPlugins, components, openGraphLayout }; +export async function registerCustomElements() { + // server-only components + customElements.define( + 'rocket-social-link', + await import('@rocket/components/social-link.js').then(m => m.RocketSocialLink), + ); + customElements.define( + 'rocket-header', + await import('@rocket/components/header.js').then(m => m.RocketHeader), + ); + customElements.define( + 'content-area', + await import('@rocket/components/content-area.js').then(m => m.ContentArea), + ); + customElements.define( + 'launch-home', + await import('@rocket/launch/home.js').then(m => m.LaunchHome), + ); + // hydrate-able components + customElements.define( + 'rocket-search', + await import('@rocket/search/search.js').then(m => m.RocketSearch), + ); + customElements.define( + 'rocket-drawer', + await import('@rocket/components/drawer.js').then(m => m.RocketDrawer), + ); +} +export const needsLoader = true; +/* END - Rocket auto generated - do not touch */ + +import { LayoutHome } from '@rocket/launch'; +import { layoutData } from '#src/layouts/layoutData.js'; + +export const description = + 'Rocket enables everyone to code a website. Use an existing theme or create your own. Be fast by server rendering web components with little to no JavaScript.'; +export const subTitle = 'Everyone can code a website'; + +export const layout = new LayoutHome({ + ...layoutData, + titleWrapperFn: () => 'Welcome to Rocket', + background: '/home-background.svg', +}); + +const reasons = [ + { + header: 'Small', + text: 'No overblown tools or frontend frameworks, add JavaScript and/or Web Components only on pages where needed.', + }, + { + header: '0 JavaScript by default', + text: 'Server side rendered Web Components means NO JavaScript by default.', + }, + { + header: 'Zero Configuration', + text: 'Automatic code splitting, filesystem based routing, and JavaScript in Markdown.', + }, + { + header: 'Meta Framework', + text: html`Build on top of giants like Modern Web, + Lit, and + Rollup + .`, + }, + { + header: 'Theme Support', + text: 'You have the content - we have the themes - or you build your own', + }, + { + header: 'Always fast while developing', + text: 'While developing only pages you visit get rendered - so even with 1000 pages it will start up fast. Additionally assets are not moved but only referenced.', + }, + { + header: 'Fast for users', + text: 'An optimized rollup configuration means that the page will load faster for users, even if you have a slow connection.', + }, + { + header: 'Batteries included', + text: 'Comes with page navigation, 404 page, social media sharing, ...', + }, + { + header: 'Do less work', + text: 'Rocket does exactly the amount of work it needs to show you the content you want. No more waiting for the server to render pages or copy assets.', + }, +]; + +export default () => html` + + +

+ + + + + Rocket + +

+

Everyone can code a website.

+ Getting Started + Browse Themes +

Why Rocket?

+ + + + +
+
+`; diff --git a/examples/51-docs-theme-launch/site/pages/pageTreeData.rocketGenerated.json b/examples/51-docs-theme-launch/site/pages/pageTreeData.rocketGenerated.json new file mode 100644 index 0000000..d54f9c7 --- /dev/null +++ b/examples/51-docs-theme-launch/site/pages/pageTreeData.rocketGenerated.json @@ -0,0 +1,311 @@ +{ + "title": "Welcome to Rocket", + "h1": "\n \n ", + "name": "\n \n ", + "menuLinkText": "\n \n ", + "url": "/", + "outputRelativeFilePath": "index.html", + "sourceRelativeFilePath": "index.rocket.js", + "level": 0, + "components": { + "block-columns": "@rocket/components/block-columns.js::BlockColumns", + "testimonial-small": "@rocket/components/testimonial-small.js::TestimonialSmall", + "feature-small": "@rocket/components/feature-small.js::FeatureSmall", + "the-block": "@rocket/components/the-block.js::TheBlock", + "inline-notification": "@rocket/components/inline-notification.js::InlineNotification", + "permanent-notification": "@rocket/components/permanent-notification.js::PermanentNotification", + "card-icon": "@rocket/components/card-icon.js::CardIcon", + "server-icon": "@rocket/components/server-icon.js::ServerIcon", + "opengraph-overview": "@rocket/components/open-graph-overview.js::OpenGraphOverview", + "rocket-drawer": "@rocket/components/drawer.js::RocketDrawer", + "rocket-header": "@rocket/components/header.js::RocketHeader", + "main-docs": "@rocket/components/main-docs.js::MainDocs", + "main-content": "@rocket/components/main-content.js::MainContent", + "rocket-social-link": "@rocket/components/social-link.js::RocketSocialLink", + "content-area": "@rocket/components/content-area.js::ContentArea", + "rocket-search": "@rocket/search/search.js::RocketSearch", + "launch-home": "@rocket/launch/home.js::LaunchHome", + "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", + "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", + "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", + "my-counter": "#src/components/MyCounter.js::MyCounter" + }, + "description": "Rocket enables everyone to code a website. Use an existing theme or create your own. Be fast by server rendering web components with little to no JavaScript.", + "needsLoader": true, + "subTitle": "Everyone can code a website", + "children": [ + { + "title": "Documentation | Rocket", + "h1": "Documentation", + "headlinesWithId": [ + { + "text": "Documentation", + "id": "documentation", + "level": 1 + } + ], + "name": "Documentation", + "menuLinkText": "Docs", + "url": "/docs/", + "outputRelativeFilePath": "docs/index.html", + "sourceRelativeFilePath": "10--docs/index.rocket.md", + "level": 1, + "components": { + "block-columns": "@rocket/components/block-columns.js::BlockColumns", + "testimonial-small": "@rocket/components/testimonial-small.js::TestimonialSmall", + "feature-small": "@rocket/components/feature-small.js::FeatureSmall", + "the-block": "@rocket/components/the-block.js::TheBlock", + "inline-notification": "@rocket/components/inline-notification.js::InlineNotification", + "permanent-notification": "@rocket/components/permanent-notification.js::PermanentNotification", + "card-icon": "@rocket/components/card-icon.js::CardIcon", + "server-icon": "@rocket/components/server-icon.js::ServerIcon", + "opengraph-overview": "@rocket/components/open-graph-overview.js::OpenGraphOverview", + "rocket-drawer": "@rocket/components/drawer.js::RocketDrawer", + "rocket-header": "@rocket/components/header.js::RocketHeader", + "main-docs": "@rocket/components/main-docs.js::MainDocs", + "main-content": "@rocket/components/main-content.js::MainContent", + "rocket-social-link": "@rocket/components/social-link.js::RocketSocialLink", + "content-area": "@rocket/components/content-area.js::ContentArea", + "rocket-search": "@rocket/search/search.js::RocketSearch", + "launch-home": "@rocket/launch/home.js::LaunchHome", + "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", + "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", + "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", + "my-counter": "#src/components/MyCounter.js::MyCounter" + }, + "needsLoader": true, + "subTitle": "From zero to hero", + "children": [ + { + "title": "First Category | Rocket", + "h1": "First Category", + "name": "First Category", + "menuLinkText": "First Category", + "url": "/docs/first-category/", + "outputRelativeFilePath": "docs/first-category/index.html", + "sourceRelativeFilePath": "10--docs/10--first-category/index.rocket.js", + "level": 2, + "components": { + "block-columns": "@rocket/components/block-columns.js::BlockColumns", + "testimonial-small": "@rocket/components/testimonial-small.js::TestimonialSmall", + "feature-small": "@rocket/components/feature-small.js::FeatureSmall", + "the-block": "@rocket/components/the-block.js::TheBlock", + "inline-notification": "@rocket/components/inline-notification.js::InlineNotification", + "permanent-notification": "@rocket/components/permanent-notification.js::PermanentNotification", + "card-icon": "@rocket/components/card-icon.js::CardIcon", + "server-icon": "@rocket/components/server-icon.js::ServerIcon", + "opengraph-overview": "@rocket/components/open-graph-overview.js::OpenGraphOverview", + "rocket-drawer": "@rocket/components/drawer.js::RocketDrawer", + "rocket-header": "@rocket/components/header.js::RocketHeader", + "main-docs": "@rocket/components/main-docs.js::MainDocs", + "main-content": "@rocket/components/main-content.js::MainContent", + "rocket-social-link": "@rocket/components/social-link.js::RocketSocialLink", + "content-area": "@rocket/components/content-area.js::ContentArea", + "rocket-search": "@rocket/search/search.js::RocketSearch", + "launch-home": "@rocket/launch/home.js::LaunchHome", + "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", + "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", + "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", + "my-counter": "#src/components/MyCounter.js::MyCounter" + }, + "menuNoLink": true, + "needsLoader": true, + "children": [ + { + "title": "Getting started | Rocket", + "h1": "Getting started", + "headlinesWithId": [ + { + "text": "Getting started", + "id": "getting-started", + "level": 1 + } + ], + "name": "Getting started", + "menuLinkText": "Getting started", + "url": "/docs/first-category/getting-started/", + "outputRelativeFilePath": "docs/first-category/getting-started/index.html", + "sourceRelativeFilePath": "10--docs/10--first-category/10--getting-started.rocket.md", + "level": 3, + "components": { + "block-columns": "@rocket/components/block-columns.js::BlockColumns", + "testimonial-small": "@rocket/components/testimonial-small.js::TestimonialSmall", + "feature-small": "@rocket/components/feature-small.js::FeatureSmall", + "the-block": "@rocket/components/the-block.js::TheBlock", + "inline-notification": "@rocket/components/inline-notification.js::InlineNotification", + "permanent-notification": "@rocket/components/permanent-notification.js::PermanentNotification", + "card-icon": "@rocket/components/card-icon.js::CardIcon", + "server-icon": "@rocket/components/server-icon.js::ServerIcon", + "opengraph-overview": "@rocket/components/open-graph-overview.js::OpenGraphOverview", + "rocket-drawer": "@rocket/components/drawer.js::RocketDrawer", + "rocket-header": "@rocket/components/header.js::RocketHeader", + "main-docs": "@rocket/components/main-docs.js::MainDocs", + "main-content": "@rocket/components/main-content.js::MainContent", + "rocket-social-link": "@rocket/components/social-link.js::RocketSocialLink", + "content-area": "@rocket/components/content-area.js::ContentArea", + "rocket-search": "@rocket/search/search.js::RocketSearch", + "launch-home": "@rocket/launch/home.js::LaunchHome", + "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", + "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", + "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", + "my-counter": "#src/components/MyCounter.js::MyCounter" + }, + "needsLoader": true, + "subTitle": "Create your first Rocket site" + } + ] + } + ] + }, + { + "title": "Rocket Blog | Rocket", + "h1": "Rocket Blog", + "name": "Rocket Blog", + "menuLinkText": "Blog", + "url": "/blog/", + "outputRelativeFilePath": "blog/index.html", + "sourceRelativeFilePath": "40--blog/index.rocket.js", + "level": 1, + "components": { + "block-columns": "@rocket/components/block-columns.js::BlockColumns", + "testimonial-small": "@rocket/components/testimonial-small.js::TestimonialSmall", + "feature-small": "@rocket/components/feature-small.js::FeatureSmall", + "the-block": "@rocket/components/the-block.js::TheBlock", + "inline-notification": "@rocket/components/inline-notification.js::InlineNotification", + "permanent-notification": "@rocket/components/permanent-notification.js::PermanentNotification", + "card-icon": "@rocket/components/card-icon.js::CardIcon", + "server-icon": "@rocket/components/server-icon.js::ServerIcon", + "opengraph-overview": "@rocket/components/open-graph-overview.js::OpenGraphOverview", + "rocket-drawer": "@rocket/components/drawer.js::RocketDrawer", + "rocket-header": "@rocket/components/header.js::RocketHeader", + "main-docs": "@rocket/components/main-docs.js::MainDocs", + "main-content": "@rocket/components/main-content.js::MainContent", + "rocket-social-link": "@rocket/components/social-link.js::RocketSocialLink", + "content-area": "@rocket/components/content-area.js::ContentArea", + "rocket-search": "@rocket/search/search.js::RocketSearch", + "launch-home": "@rocket/launch/home.js::LaunchHome", + "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", + "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", + "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", + "my-counter": "#src/components/MyCounter.js::MyCounter" + }, + "needsLoader": true, + "children": [ + { + "title": "First | Rocket", + "h1": "First", + "headlinesWithId": [ + { + "text": "First", + "id": "first", + "level": 1 + } + ], + "name": "First", + "menuLinkText": "First", + "url": "/blog/first/", + "outputRelativeFilePath": "blog/first/index.html", + "sourceRelativeFilePath": "40--blog/001--first/index.rocket.md", + "level": 2, + "authors": [ + { + "firstName": "Thomas", + "lastName": "Allmer", + "twitter": "daKmoR", + "image": "https://pbs.twimg.com/profile_images/1070490946847105025/UBK4xPzU_400x400.jpg" + } + ], + "components": { + "block-columns": "@rocket/components/block-columns.js::BlockColumns", + "testimonial-small": "@rocket/components/testimonial-small.js::TestimonialSmall", + "feature-small": "@rocket/components/feature-small.js::FeatureSmall", + "the-block": "@rocket/components/the-block.js::TheBlock", + "inline-notification": "@rocket/components/inline-notification.js::InlineNotification", + "permanent-notification": "@rocket/components/permanent-notification.js::PermanentNotification", + "card-icon": "@rocket/components/card-icon.js::CardIcon", + "server-icon": "@rocket/components/server-icon.js::ServerIcon", + "opengraph-overview": "@rocket/components/open-graph-overview.js::OpenGraphOverview", + "rocket-drawer": "@rocket/components/drawer.js::RocketDrawer", + "rocket-header": "@rocket/components/header.js::RocketHeader", + "main-docs": "@rocket/components/main-docs.js::MainDocs", + "main-content": "@rocket/components/main-content.js::MainContent", + "rocket-social-link": "@rocket/components/social-link.js::RocketSocialLink", + "content-area": "@rocket/components/content-area.js::ContentArea", + "rocket-search": "@rocket/search/search.js::RocketSearch", + "launch-home": "@rocket/launch/home.js::LaunchHome", + "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", + "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", + "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", + "my-counter": "#src/components/MyCounter.js::MyCounter" + }, + "description": "A tool that checks the validity of all your HTML links of your whole website.", + "needsLoader": true, + "publishDate": "2021-05-09T00:00:00.000Z", + "tags": [ + "html", + "javascript", + "webdev", + "node" + ] + }, + { + "title": "Second | Rocket", + "h1": "Second", + "headlinesWithId": [ + { + "text": "Second", + "id": "second", + "level": 1 + } + ], + "name": "Second", + "menuLinkText": "Second", + "url": "/blog/second/", + "outputRelativeFilePath": "blog/second/index.html", + "sourceRelativeFilePath": "40--blog/002--second/index.rocket.md", + "level": 2, + "authors": [ + { + "firstName": "Thomas", + "lastName": "Allmer", + "twitter": "daKmoR", + "image": "https://pbs.twimg.com/profile_images/1070490946847105025/UBK4xPzU_400x400.jpg" + } + ], + "components": { + "block-columns": "@rocket/components/block-columns.js::BlockColumns", + "testimonial-small": "@rocket/components/testimonial-small.js::TestimonialSmall", + "feature-small": "@rocket/components/feature-small.js::FeatureSmall", + "the-block": "@rocket/components/the-block.js::TheBlock", + "inline-notification": "@rocket/components/inline-notification.js::InlineNotification", + "permanent-notification": "@rocket/components/permanent-notification.js::PermanentNotification", + "card-icon": "@rocket/components/card-icon.js::CardIcon", + "server-icon": "@rocket/components/server-icon.js::ServerIcon", + "opengraph-overview": "@rocket/components/open-graph-overview.js::OpenGraphOverview", + "rocket-drawer": "@rocket/components/drawer.js::RocketDrawer", + "rocket-header": "@rocket/components/header.js::RocketHeader", + "main-docs": "@rocket/components/main-docs.js::MainDocs", + "main-content": "@rocket/components/main-content.js::MainContent", + "rocket-social-link": "@rocket/components/social-link.js::RocketSocialLink", + "content-area": "@rocket/components/content-area.js::ContentArea", + "rocket-search": "@rocket/search/search.js::RocketSearch", + "launch-home": "@rocket/launch/home.js::LaunchHome", + "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", + "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", + "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", + "my-counter": "#src/components/MyCounter.js::MyCounter" + }, + "description": "Let us take a look at Rocket which is sort of a nuxt/next equivalent but instead of vue/react it works best with web standards like custom elements, ES modules, template literals...", + "needsLoader": true, + "publishDate": "2022-03-23T00:00:00.000Z", + "tags": [ + "rocket", + "javascript", + "node", + "SSG" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/examples/51-docs-theme-launch/site/pages/recursive.data.js b/examples/51-docs-theme-launch/site/pages/recursive.data.js new file mode 100644 index 0000000..93276b1 --- /dev/null +++ b/examples/51-docs-theme-launch/site/pages/recursive.data.js @@ -0,0 +1,158 @@ +import { LayoutSidebar } from '@rocket/launch'; +import { adjustPluginOptions } from 'plugins-manager'; +import { mdjsSetupCode } from '@mdjs/core'; +import { html } from 'lit'; +import { rocketComponents } from '@rocket/components/components.js'; +import { searchComponents } from '@rocket/search/components.js'; +import htmlHeading from 'rehype-autolink-headings'; +import { launchComponents } from '@rocket/launch/components.js'; +import { layoutData, pageTree } from '#src/layouts/layoutData.js'; + +export { html }; + +export const layout = new LayoutSidebar({ + ...layoutData, + description: + 'Rocket enables everyone to code a website. Use an existing theme or create your own. Be fast by server rendering web components with little to no JavaScript.', +}); + +export const setupUnifiedPlugins = [ + adjustPluginOptions(mdjsSetupCode, { + simulationSettings: { + simulatorUrl: '/simulator/', + }, + }), + // this adds an octicon to the headlines + adjustPluginOptions(htmlHeading, { + properties: { + className: ['anchor'], + }, + content: [ + { + type: 'element', + tagName: 'svg', + properties: { + className: ['octicon', 'octicon-link'], + viewBox: '0 0 16 16', + ariaHidden: 'true', + width: 16, + height: 16, + }, + children: [ + { + type: 'element', + tagName: 'path', + properties: { + fillRule: 'evenodd', + d: 'M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z', + }, + }, + ], + }, + ], + }), +]; + +export const components = { + ...rocketComponents, + ...searchComponents, + ...launchComponents, + 'my-counter': '#src/components/MyCounter.js::MyCounter', +}; + +export const openGraphLayout = data => html` + + + + + + + + +

${pageTree.getPage(data.sourceRelativeFilePath)?.model?.name}

+

${data.subTitle || ''}

+
+ powered by + +
+
+ +
+ + +`; diff --git a/examples/51-docs-theme-launch/site/pages/simulator.rocket.js b/examples/51-docs-theme-launch/site/pages/simulator.rocket.js new file mode 100644 index 0000000..9baf2f3 --- /dev/null +++ b/examples/51-docs-theme-launch/site/pages/simulator.rocket.js @@ -0,0 +1,13 @@ +/* START - Rocket auto generated - do not touch */ +export const sourceRelativeFilePath = 'simulator.rocket.js'; +import { html, setupUnifiedPlugins, components, openGraphLayout } from './recursive.data.js'; +export { html, setupUnifiedPlugins, components, openGraphLayout }; +/* END - Rocket auto generated - do not touch */ + +export const menuExclude = true; + +import { LayoutSimulator } from '@mdjs/mdjs-preview/server'; + +export const layout = new LayoutSimulator(); + +export default () => ''; diff --git a/examples/51-docs-theme-launch/site/public/android-chrome-192x192.png b/examples/51-docs-theme-launch/site/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..e1b2816f4e757b73ac2c6f517454629f69fd6397 GIT binary patch literal 22062 zcmYIPRa6{Zw`|-Ug1fuB6C}914X(l6AxLny5G=TRkl^kbf(8ig?l%8?_vNlxJ-xd7 z;YgoTdv{gsXf+i%G-M)V007YBKS^sq&b|K~i13hqjde!^$O+a)QdtrJ8WK@n&EO!{ z6c(Q}lmWnx4gf;J0pJ;OE94LWJUIa17z6-9Spb0V^1VY{1o8mhTv1LM0RQ(Z=qgKv z+(Gb=SC&E8he1NbK%h+MX#fDN8F^_*EuYo1E^im=qjdVm?pq{`qyq0Ds#unRM&ree z^2NVgHOZtEyc&ws{Gvsi!q)uzJg!*Y4X&*ZGsdT9*1xuU6p^7Uc%}d_Lv@OX8N8qlU3bc-mf;OO1Uj7SkUxz;~0fV zS%58pO_!v@8Bo0>4nTP8wA`{`L*HchI)Mrz@tuh3pAFdsT zJIWarl%vB@91i;tU_1Jz4u^o zoIcnRn)Gk-3X?-6;g{znG8cP_u^Wrk3W@;867l93WC+i3 zM=Y#YQCFSon&vx_pp~`r>}E-bpX$Jc7=~cov%+X01(4pde8l?Kw{dsAa5fi}W4xk@ z!a_DlT;GZmQce(ojs3ErGTW^R5+;dW&3d3_ik%I;z>^yWo z6nCX+k|y5Qp`o@6is8GACSIeShbI;`*JVKZ(JW=E{}pMbOZ4yKvD{6!6=ag9Q9HUo zdy=c(O7(RFy;8@9M-L>sq2Qy?^rDZfSL{zRdsrF6%EE#sQX!x)o_GrFflu0;8oXgV zXw-N(#b(g$!9WNm1v1vR(vVWjLc$mh9vK26tjJPCWlE`wJ0l!ud)X3amZ6B?K!?h! zh=+sMSb#$EsuH9Ve@{w%iUQA2be;y}7k+(Q>DwD9TP-sE4Cyl`F4CWC6RkL0{gOtz z2o*Xjy5!Nu2HTA2ktRnfHqMIT!QusEYAalY3@ro57UBux82*Y0gaH6$7y~TsN3(Aw zNUR)0^o>LZ+dO?k%;wFguXbkAIs#qHrG&?~Y*CV_0N0;@}fvxm`p%7opedzzx5FNp7?NmD(g?M|^$V z?;jmjAxyt>p)X&EQ{(f6J70au*l*B6=bnEGu}OtkY73E0HJ(hknwbf0XXPgdWMtw< z(J*ooN-6LqRr95cbB4SdFrp5Sg!K`a5M~T_nra!5ZYWu_ivL~RoA7|m)rif}4P=RL z&kbP9Do_%c=nV8+xiJmqT=x^BWYg4f;37Hh6Tya9S_(CM$Fz2? zZkLPFU0-nLbTytUXL0<*Rdg^AgTzyxSk-{S)Aa4d{>xR2S1lTXjhNB*Vms2~1|PP*xN-Box&abOffCyoPI(JYbT{6>RWE*Ft)rNaQi zQWw6P3X6ezllLFV1qD7Me(o=+0MSHgylx+MIPA`cd3$i38YS~G!4Rh?2J@21Zk=E( zmR}e|pk>hp)56zJ2yzTFXA|}%Ao=Y4+t*$Kam@MtVCD0nNIHH%wlDZ&LZ_rA^nE|i z-=gv#IMA-zjwD9+ONVt>2M8ceFOxndcaCofI={SbHT=6me;sP4t!_}bbEEFMz5U~2 z9D;;eEEB_&4jM0sD82Q1byQ2qvhgmK_Lr zOfQUBuo0#X-rrvoR!0Y{qJgC1!SInk#!DMHXhz-b`vz)m^I{G{r@hX9ZfZON-1S2A zS9M>Kn5~MkwP~8-LCt8B%%LCwX#f-QHU#HB2)oG1?P|4(FVJ&*E7F<4!NJ8STj>dQ ztv)*9FC)q<&?B8csO8}IpF;E>2l$@5=LV>srH5{ID^_M6cuU`tid^MN+_8a_(Z&-9 z_)a)0^Ba9f70yHoWdSU&qq3nq7DvWsS#6ee6h5^+8%?>F(_vdA54X0^5XZLz{qf5I0RQof(q6OF_Z=Bs~q<_`}>jG$Yy+P`;U4v0>end z3tF60LYS;x=aTEMQ90PGrep?>l2wL&VN%6E(i9Ywd@L6OukOZ%6HBS4@uZLoR0rT6 zJ#$UP$14PN3J}Uo=A9#;s^3i*Rojg&^OLbAm9`++-bbthHHYeh_q^G5n9$!8Gg~PH zjCj;Ce;62xX2*&L2UECk;%%~Bq|BFau$%Hyj?`oemuTaW9SCHwB+U8fYHjd@a`SC& z>-Nzu^heJ8`I&1loXfAHoYYR#slaajYS_=4fiXqs zdavXTNw3soLl0^yXr;M<*|3CbSIGXH?nX9wFNp%`dQeY7mB6VIY5F6 z5D4EHKYr6C5m_NW4K!U1)aZCxc4Sd`w2 zVHoBChCQ7qw>Xdqng_hgzId#Y$sLb?r7FYJn0)peB4eC!KE1Ktp?i5%GBy>BqQ&<; zTp2TMF041jmZ4$bK>r+{i7(=r)Ciyb ziYXBeO3U$+t zjG2f4eI-4cqrfZ3on1gN2Bo7diaLyrY=Mr|9|D(AO{ZFN)bNl%8hCB(y(HpTE;pPG z(#;0xUK_LaIvXXBqU*SW`*IglNgO}DGina^kWV!#I;-+_-d_7$YUq^U)I&Yf=qU#N zsyCj%jCcbcnaaN*d&)AMTD5Tzb}(Y2!57WJbo*=<2&bNZplMHEkAWBwHK)>B+s)|N zE@)yR6&Jto-@_lMai*uCLl&Gp>0P4j(Lc`QhGYa9-acZUm8H|_NS9yc$`7{s%}q6V z{8rPazwhB$B@MSBVQG+j`ihC!_{P`>g3h4WjU<6#V2S6IDT-5Xq$Rc%ZYMe=fJt-p zyau*LPhL&MG3yb6X$GcyI96X{`AdoFa5R9Hi>+nU1qi>>~C z2~8TmR_+`~0=W1QcUY_(1oMN4Gc=kZEXm1c)Kr{vb4HEk%A4HNbS6>KwB6GhSeB$) z#)7X$bY@unTf(^g+}D0ocgtJ+o>i*Qr;51sl;v}l?Qqu9*1rGk3)(Dwf!-#+taFB@ zw-eqLWVEqTQ~_hfCzq3_g^;NYvZ3>5FJpqirE^+_S!(sg>%}c0-gIj+6xui+6L}wu zegdE8vwO$&!E07MFBNLZR1z+JheE}estzVH&dnFYReEJq#!7s8Ad(%Q;$2z;yOr!L zRmlgD@`X6__)U?K86R(A(+V^F7UaSQ7*3xXE16KIr#)|3*f$T9OU3$_$FDlOyR2rH z?D1x^LnvU0WH^&70GT<4Je$kE2SU_fO@^tr!;*&5r`NW)u=w4BlKq*cQdAJme03B* zBCz%P9R1{<*fI!CnZhezqLL}%!pHAohlKnQX2$GyT7a_(q>-RW!J=Z9H zf_T3~W#xRw7-@1(>!t^;Z-0`(Cdz}>tl0oi-#?4!2CY5>YXpQy>-b-$208>cecJ^e zFe`3oGguk0ip%i^{uC~R)*rfuH2(OzFulmzL-w6jZinwCktSWCQ+VNWoqK6@LxYnG zdb9j~xk7}TehZ&U3}b4lmGoPFaBu#npl_LbIJlHfRZ;4yN+FEJjHobAoVGxL|9g_0 zn%F~$MQrk3_+`FMYQXQyrXN8FEzJn_!vLSGGt?{n+K*feQX?=kLKRw8aE|)n;Yn(| zxW7~JU7%Eq78&WQpHg)CxO-K|Ci`Pao7`PSNZppxg37V|Iz zOvyB=CYI^MC^ban7cs;TbfLXEabG{LJ+M#J#RYF1P|eTmFbvCU2A~wRG7J`u(LRX> zTRvfQg}G%uwGu|4_wbOtW}0r=J|Xhmz6m&%i^^Ua5_XUyY~6&h#L^GbqkGp?2lb_o ziS*kV5T7Mmc_O^6kES!;U9k7LZpRjI^*%|o z$+?>Xf)9&ynYY3qKhS@T3H-TL?P*^LAamPFJiz#SV!`9(jFes`WhGoRQVqN=SnPbv zWv()Hv*OAx=0xxR5Ms(+nWV5lC^!P}NQDS=WI+J{LCj-f>+t*O-1}k){>Zo5u&E#w z*3(df3JL43{0Nc9;EUbYKm_Qc3$?GfC7V{-OwY&Cm!?7PO;6OzYTnf}J?fjAH;-3m zY7rXj!vds`$-TN=eoTf;ZqLcMC0P-N)B5?{i6ou|0bLPC96W%l>cApr(Yp8`t#jgE z@BNlYKQJ9Ej^)NCQE^!nEn3eCUtYgLyRm|IF1SecMxDVHcbj}tr$7XSKIi-UQ~fkhO?k|B8&TwizpeGlHzoX=??v22MZqVkG~Euc zJwah-8Z~k7;Xl1f<9bJKAIKzKU3h*f4@e^(vY9?R^!Nw-dw(UldJ?oib&uxDHqw$_ z(+-`SXsdnx`d`9bQK0x-eKnCq;psDU)2~|B+*7${lxuxyDE}TXbvx$0w6rMbIt+1;R0TGZ#meKv<-c>Rl>_ zD3?#@Xcw|_O2E}6UV<+Cz=fdehofx~6D}Or&KuQC;k=p3G<3fmx}_TAptW%?p5g6W zYJL?mJ%jf^8@?Azs`MAU->99uLNnHgnrSI6Le$SC#H1;ig)yH$GP~Uz`cJnfHG zz68%OH2)==&4_Hu#p``^K`|juEbt*aH4fIWY!TbZTuOPp%QvzE`|=FP7T~`6ZF?X+ zK5$;1F|D}*6eM~EPQtum@7lpsPp}pmo|V~;e%WbL)zC!BHrpz4N5UFvj7<@|&~jjYqJyaFhK_LjH5NS56)?l^03HQl~W?dL1W zktnJWty#qFcc%B6a`6LOyLdwn(TbVmL0jXCV1l^ecgv=&I@+_Jq7+R^BIho26d3F9 zQARB`v4vj`q#a(@z9>iYjZT&1HOhaXT(N1o?=952|SLe9P|>%J*3qSc$}ao6A#U(nw!`Nh9iDNvFN#Y~-aPyM^yNyNn?L+Y;~RVi0+;H7TR1;} z(TnVqpD!Fptvi<(~jkh5&5gbVB4`tz%!-!#y> z)J%kSVSkyUbLF3-7hHYy!NAkoAoK?Ba?*Rp?&eZZ5V093 zE&vaz*Voa{daL0E|2=B|(=B`47Q52^hrlCYN#Q_xCS@BblNoGBT-wx)JST##w!=U; zoZ`>>M#^kQg)^uu`4L3b(Au05B?#}?ed#-rWv^e~1EnO0^*zD+i_u%23~c)5=+4XD zlAo>kej+!h@(kx8)ENa{o=(ky7gJS&YiTxr4r_5+{QPiGZ)P8DHDH!#gU81-W(7rY zQ06h-o!(B3Vwy`oDT&E6lQG7+JT+68Q_5|dM z7|^i71hn_QXIC%eE5V1&*&2Ri**F@v4C5Jg)P8^#HpfURU*lEAF zc&5RS!7)jwTUoo)Ep=Z%ra=W4c5XoeL#XiZ@cVrFw1@$tq*aqNX1{Bcg;i<$(XplB z+7xe{4XI{Y2?rFww0kw%G^LCRaMUUdFSInS2D-Rj`EU>kkJ=gxBUU0NGrSZq!Ma^x zkQ))B3Z%Wr<#KcsX=7_{mJ^iO4 zTq6m7zT@YoOMB;wi1GTMgH43$9b-GW|@fV6xq0i!c`2eGBN?mosUf69*r?fJ6=cohDyL2i0=mK>;Lq8 z9uAWaAYFq7!YOrS1k-}ap+XpTf0Gv-7jZ{51Qh2vU`>J9%mq{lsBzz2T(;t~_e&qf z+m%|YkW1jq%ql4B5&!(^V#_2KGSixvTb{T%h zUO>^T$Nq6>9)1RNDC06vgLhbS8?ZC(aNBzX^_7#sIuZh*|1jVYOk>)NarVv~ge{PL zMfe*@GQ;QdCOWWKh|dM#fC?0p?uM0eA5WZ2$+Nu4z_Se{fbSmmwz{FQ)zk^D{>HZ{ z5N+(mE{)kLFD+|siS7%zq}?y|s%KG8#l;XXPG()u4{z5aIj=2#m319kLCiLu^}n7- zd~wE2g$@ZtTzr>0XctrS+6bB5T)5NZ-a`KUp!U$EP6Po zaf*54QphLaHj=fN^v_z1I#<1aQoG^C@DDLXD(Gs2PMXb39^Kn2N@z_(1DL>Ps?&ha zY)rDKsh_Lz|5V+wH?8ObU>MyxQ5P4xBRR)fGSw-0^Oa>6?*l_3nd~l+VG%p`!?yOF zcx?=JYVN~0kdj<{VvDyChHn>j3z??D7XHDP_$JWb3b`KDH?q4IMHq?a*G^{-PPUEm zdjnJ%k|;N?FM0gct=?R#(6n0p03Rnf0&mOG(DAE{TZgl3;lV~WdH^U3WVl%NC)JRd z31>r%!{_3cSb!?He>+i6yT;&Pvw9HKcb(tnTMm6;GfAud#8EZyWD_MWKHcsT#<3f4aCLe4p=ON787(^+1(2gs%uUk4yQ$>TtnW|3~ zFjYruyn)u&VJc$m_j;c9ri2v%dfkkC9-d=t2rJbBkJX=bVcvf^t&0eAh=ZwBw14sY zzuR|75m0&-He7MZj@nKVIe+WQUVs(3G&D={h4 zALN8B^_n~r6D~Sp6hl$G&2kD@W3xvd|-(IIY7;}WThAG3f3L*4Zc@YBwGjZ|x0$kiL{NI0&tsi?< zCV#`8kliOHrYjI|8do^hWmU@ydbSJPV6K5D1U`-APPKp`z)Mp0Kfr2u_eLUHCSbBU!)TQo4WqUUBM1<+!T^Jfr!5eX z3qpVeHAR@VR;uC&_1rxEzWukOxgfrcXXR3MK|gR)g_Y?~s?cSd(QnBOJ#=Z@)XW>k ziUO>BUE|e6TdoAzH)3C!DxgS_oD%By(C-8u-Nyu}9^Ih4PcUX9X$xb=C3F&*C@ow*0qOTN<(0=+ei-R}?eEjXNeyNlzm7IA zYQhFJlC-il#c|5~{`vZ%Gg^uy0kVDlO%)&lCD}y!5 zjM~MP1b2Qpa1Df%QUsgVu-VFSO$-+Le6cO71QAQx+~YFp=fzrtr=2D69((;YLgXWQ z0WvKP8>;|1hCqwOz>3vZvq-AxJc(z9Wyi0fcAC}4cw4sao$)p;PC$rlMwge>+%MRn zwbd7yXTzswIKTzgqM`I9G720ooca{*E9I5KA+`Urc3&lWjSlA~OR@|qq*6T%wfy;3 zy2`f?mv)AiH+P9)yz_^4eIfgOakDKK4xB;dY17S#i5l|1qmon6btT zzB>M6$SMjB^CAokV9kT}nNMj|q_mh~Qn|S$LBdWXOVDx6F<;L&oCX-39vN)eYvV9D z6K(ftc>#T_M5_Fh&V%u%){hgIkHDLmBv_Wi4wGchtvE>2BWfXxy z`ezNaIw0ZsvhW#I2AW7Rx}yH0Zg8BO=*wHpdM?#2Uq`|NE8AO%_Eg^AHpW~5Z8VSC zn!CQ?`!03!#c-w-AGE8srCb%=mK}Q;u7SakwY3eH7netS$B)8>5;{Cg+~hcNg$i-) zzAZ&7w7vyl%xR6;->KjcJBrzmvD9@chLW`(NN~UO6g$X?mW%Vr1fa+|Lx4TB@F=?n z0vQXxI$LxiFex1k83Oq7>z#&RbC~Y6{-s#66TkpQoBi8n>KU!yH!-jMYL#1BR6<&w zo3f=Desv-HLX_Y%UM9^cc^_E^#~W*6RCj%I1OQi&;AR)McjuqGD+gmXSw5;@ky_=u zW0kCbO@#)VvpdhKhm*&tDoKimb=6XN3)8NAi3(X>t}yJ7v6=$Sl1^5ElstYyCZ62V z`0+=c;eP8Gv?LV&JX;5UxuS9f#+;x1bH(ubwa}Vo2O0(y)94_^ZF^UnoLa9sV%7)v@R-Q5-cE{Dw z`@p*VPi2yLa=_L!G5^KXW>v#>_DZ^LGE$!3F{5Q6JW<~aOvo}3ax00Ekzd&Ga!dMu zxdzdNZLp?U7HnEZ=Vqn*UwAK85$4}(7qE1_&2{qRMapt z@S#f?d4R^r%d@+dLy072piPkp&~X=wbwQ(sDF+Hz28U>6J|5Xm({mW~QkO$J&cRCn zfSBYJwe(=M!VD{YIM46G%^nRgXHA|z9@YWdi8A_PI$X0tEb8aumeYT^MXr~8i}Y-u zyKvheg6M>>)nm24Pu!5d4B#Tvw9;!qo(HxzWVjXmMO3;tIbONxJy!6NqX=@MPnz+< z)04kWu2vX~_QMNjv3dPZ}nq7z?D$KWGk;(ec7wzw+%2@+%0|Tml zT-j0H*JAc1$a^zijIt+1y*Jv9K7XZuzj#2$=&YJ=M)z8yA%r=?STmwfJk>Wj@7&p6 zet3-@#4l&^>OLE$X>hb``}N`(&%`6nsR%whN7JXhF8{}q`DwyqnV!KoU8Q$^`3MJZ z$+6jTh$U$n&=F2V1d>MW#Q+MVXnk1!OPJpCWAKOgj+$GegO3o*BZ^Ds_dBUDj7^5s z7xVM+x)p`J0iIC@{1N=P7F2C{RL?e@<81&*aX+%7M_kybfuez5XI{MkAt`ynj; zLb>H<+(*~w3;wHg-5&rrzGp>=qH}x&{Eq||L&6k4ASiEw>u@xg(`kwVLHvQ zBzOmTLk3F;i%HMgTDX@3{AoU!qD0}w6?fbfTTt7I{~RM@42rIw|7OVc>)u(L*py`} zeF0QRMpC5(fDCoA%R|2$LSE2`3=04(%0{qibl=Pd)KK3^o1h$lM3#*;qOO|cPdBr- zlNi1-f@&u(%yPUs5gtDTWX>ECq`}RUc|O~Rlc#sZ3`Q}+Bt@KM?t)V{Na>~8u&_vt zRDSbE@TyFI&!&r`2CF?%v=_;wE34X!j!ZaY7;!$=)YU!*qNuUFIn2NO`_HKudElJA zK$4loK^ek)hb{4ygQ`lfKIy4~s@0_!iHbeJ9W2>Xcu+bb60p%5OT@dGvrAf|{Dd|FDcGrl1dKe!LF@pfgku7fBZ_6Z1(1?&MTC>4G!_SY z&)i#zV1K=FSoibllU2fx=HZXAv4LF^%$sGL_fDR}4p3R78WHz#h*Cba?MG7$>!q0u zwL*21 zF5AU^+15(`97j*mtu;=qkdmXT4UvWs0N;+KKV$(d{ZfV>09e8qvfOj6t{YE7B95p}<_!1(RRyRw~S znGtO&>aw+@p6LJ=Q_^EKu}10=g}=vcgJ&?TT`EUZIy;}Lrvo?7K?M|GLF;KS<_@5^ zf=hK3D}jKUT3Q%@C7zSNzJ7N8SEFBlzS0Kc=s0GP-Cx{cGA%3JoG#c&m06P-I#^1P zh4t6rPi%Z+dQHEXc6~>j27DL@D%v{Ol3-J>&&y(zm1cPImBmepHxivT{MZ4gettfN>L|H?zB53}BRc)4L$*>)I z+_pa6#tWT~00g-N6$aW`-@68LJ;|tOWAuM`y<5~Umfs-yJE4*YF(s{lE^|@d0x$Yy zsnM7RS_|G!HAn~`i_q<{j$k4jX`T!DvtS})&}QzK$j{8-&!Q_Z z5SW4hL)WtR<;oLiheq##VXdk*U&bJ^*Vd7jF&SC*D16YmAPq`E2QdFO(?4yfVcw4z za*c%Cgvm^UL3kGcXySYZFb$}aBY!!^1#uF@ijLX0SI+w@dzJ+KUg)BLMV7IG5H$JZ z=SSVJC0lg}i)A2FA%S?vhaezdg45s_3N_ghjTq8}U*5|JVcnsC^{upc`&hw%Q2393 z=DPk<)eMZDKSt5~Z8crYb<)@@@PLImf33P;^H2!{E zP(I!^&fvjAyD&_^w}vNCmeLkG6pl#?Xv{L6gvtqR-4Qc|h!eyjoD&m1X+ZXjv31mH z^dEDb6B)e9C{C>K=A->m{!LMl$3|IoEQXBtpR_9X1N~c(6NR_(xh}^&5y2` z97zykZ*W9};K*X+l2eDs)Bv*&L09K-k=j#-N;rUSvy4~IwymZI$5ab2%bVzM8hGAR zlJj{41_71WU!@YD zs`)xuN)Fi6$2L+7)!x$Yp?Jb}?`V49t=yKOP6-Pb?l_BP-9^51)&JWr213w=x8I{` zjltFyBJaCi+ZPXEV*8bt`slE1T|uwQGdSq3gyUa=`R{_NDAU6i+5~9zj-nu9b0)Ub zC{H9d9Y>V}qJl2e^<3BmsdiCJ*b@AQ55hC?32(EhVpB@hvypQo8nZkby=*7Fc8OXpxawJ!Y%*UTM@uI1&yDrpxQEqDZ*&R_|B_K4 z{)>o=OxzF%I$dcSXn-Z&T7pc}IJ&>p?QyF!q4~n`STmQ_)2b|!>`Hr2cc*QK~|CAH6#o2fRvu zFk}|5(0b~w!c8-Hc+hSCe$g|$tNY0l7XPfH9^I#E-1&NBNcakgln{+u>R8GBM%Wph z^iBKQfv(xdgU!S(8v*zmH1u}!!Y13u+?+%tGlqo$1A1oo*}zu_x?z~M`#C?Xu9`Z2 zc!i~`)<~=7P?9yzZl0{SizuZ{FU3>Zn_t1C#4R$*SkwyD)IzAML|4(4kzMeS9<5!& zZ%tt;R!gm1cBdqqqtG^OC9mPs z(vl?srM}OV1#l^&r^6sKGO18FphvXh8YoT;!%Ps$oj4(Ta9chzNfacx;+ZL-%}D2z zB9i=cAO+jLt->RNI8jkaG1@qhI{g@S<#RJTIZ0@vQ>nM$PH!F5QzZq_Gv$O=P5ll= z|LNj>L+^|Ho!BR$_VNayTRwtXhTRU-c$h@V+~Or&qn@$xK9O6r z4fhk@rmwTGm;+cjvX60Rk?Etnokk>!IFbDA56bwx>JF%um4p z$p5wCBdW~!hXI98lh^+_+W44k4LK!3s|gA~E{Kf*B&a65aY;Wol&C0?nNP@OCZ#@t zyf`uSqGQd&C@fD&>P(lHWi}imPL{a%YBTKO#vt=RX`;@g{Z{F}`dOP{!gX$<3nA~9 zPyGW-m>O`&dy-Pa&HPagocqR90600s@GOsi(o)IXb_Gtk>Dry#%AR{PHR}<1wUntJLk_ ztK#H!3*L-$(083Gqp{&U!4IGE3AzMb`GRo-!1^;VvlH6PAEFlbzxY}VF}$_B+BmtG zH3$;K=C7YbsXMGP`iD?ZIG9|FuE`~c{35xWk!WaefDe{O`WW&I^bBz*x=r}M9;K$g zf)!o=4NEDZhTb8o>A*2fGCJN`q<}uIPSj(;RdOq+KZq>@UF{K-i$ix%+pqp)Kr^+w z`vYW5oYNMq`LbQ*QnLMs6)5rX2b)4(yHDi{?T`T4s%Tl~eVO?Q{4stERP>RI>ER>9 zvbLlvk_jpT)$L_XS!#vG_3EGo>zcv5j^2t^4OE7A2xgnu&?tbX8nRasB7L^IyMmy- zR7*^f!T^cFqf=>ziJS{E!B@A)oj)L$M=xy>1=K!2=pOku&dja@m7hZiF-A|Q1D_&u zyE=DCXA)OxbzN8RBoO$>k;3v%rc%q%aizi087CpE| z$Y;mK!rNNn^UKB}0~0cFj-d{*Q3jKQXy~Sh3@GItm#V*Sc-NSxu?|ZS7?mFN<@~;H z4l-_D@;cRFOqLDqf-iYXk8y+RCA;0TN6bcXD13lNH$K3IqpiCk&6{e=h!8R9b+p^TrwOIQ{;&(K zG`fW2oqw~|q^1v-1eqU-M#{eTIg~*Y{@<=fR(7Z(5x@Vl2O|omXmIqYBag#7 z(>~>wM67%6q^=_qf5-T5Wdju7#V0AJ?$QRk2^)XEL4}AfkO|V)8z{Du&kPOzSNVl>L(%Uc6vbWqE{FXHQP1zR z`DF&)TB$y7%Dd>cxU{Og{5@~|N1Eb!&W;388kcKFuP<<~5q40Tt}WKByC>IH=ggU4 z<_fLj?XU|NrKIz-)wI8wyKwV8Nv0XqG_7aSI$4$zQ}HwCY~H!{iGgpK)T}-4F4J{O z&dKZ#w?-3>pVyI0dh5R*^6$eIoObo4`soLLeF#)K^wkFVDZWCQF;~bQCzi-@T<+!Xyiv)15_%V!8|Mv)_^i z1Qj>k5aGgXR+_H`xw@|=w>Q&WfOrr7l|E8?WG|CLjAs#Wo5F+Z*jjSYz(d9$Ee5arX+=gF$bfiZr{6)&+I2 z`wxF{hdQXO*E?&z#V}`N)ncXZe%M?fC3C4?wR=M`krcdvltzg6)Y1QjX-8m!lCb8) z%nE)QoaJT~+l*KEvXW@oj9?ilAMfGW{n($aDXxF@R7z2H64fgf+`92)l?k0(!5zZh zVO?qYpK6lCzj=vkagOJiUUp?CWfANa_ZaiWHo7-h+&w8j8=KjEF;YrCxf+--MHJdo z4eP7jC0vITlAMpgPANy^QU(HylB1BpxucDRkK|7A6$;4@*DWejgj4LhuzVN)4UWAL z3=AfXX=>dDu|CC;V5*A0@dyULznZ8j%5Z%GQ?(#mFF#s>SEDsQ&t0UW1m-11F9rFP zyy-T|$`tru46b*TR!c0$Y0bEe(iZ=jUh z;7o!7h$vbdtR##c_`t8xb&nFI`#JMn+G|*w*PEfN_yv#8B~$}+==>wEzsQ8zf}UM8 zw@+}PC;p0N(49j(ggP+;9inXEFj_rv1d^E@K&$`(F<)jG#+ByJ|9BXDpC zeAvSo$xjp}@r&Riz1`0>Zi;mmuN2Yw1_dK{bO8WMHt;&<0vjK|V#-)^=On3S2T?Od zpMxc-KV`n}H?l=s9w@jsr2>uB5T8tcA!wT{l4+CWBPbfYkvH1f?dtXnmGI|NkjoM3 zh>WRd(CJXl+2=Y3T-uARw+jKRaF@ZO@0omoCfytGUnw>F}C~a^;K^w*=oIqbW!Bu58clqHLLA}gu|rNnr;hJ z#V!V{0WHiV?vgc|#rLqR4OT;4n7LTYJ_a)pxJvC$wdtM{udH@ljiFwF0kq9A*$Q z(t1iyd}S;%Zu%muOF4u2{FjZDBX)j)Mv>hIBo3)DjOQ1z$8zvi9mEv0R@iV#fCW^~ zdtkd^sC(}bc8RpYKB8G_#iCSV0AKS7jo!cOswJ$wsr@OxU0Xn7XBm#LVz3VR>{+*B z2hU)zpU^V6Mnp0{R`WecD*VV?+Imrp5)3Yw5 zvQUk)F(!2N4^ul1bBL7-&J3twEx)@;!yzXnbyPgH{}b0tuQ;4f)%*wD#+#}3e=w;YH}7nS((3i9$h?MLrlYV zE~7uQLsArIH?!;mf`m@>Ld-7>Gh8=MMbD+LDpI~BB&ELp4N@1=Swy;)G_S0bqRS2Q z5kareg0|F$mqMfnPfCowX1;^wJd7Id4dsiHJ0fUu^(-NuA?!8C!oLB*BOc6Ui6OC0=BiuQIvVR-{h=pGbY&LY6E)j!!nwB&4HI zFLVFEhn>Iz({^9r~^^G z#^DQ45dv$u-Fm00Xrs|m6s*dqr&loOXMg|Rg*7qC`r;!3|E+XiMaya*SJg^*`myeH z>wGwt9`pr?%kOp8vHnV=qUezl0Mbh#q3nW3kKbjvb$(Oof_*nwf(>{0DPHp?|LoGb z+mRl#i7DO3O62i$(P{?P@qcxkS5y=0*TyIGj#8u}QVxhpkt*O3QIM)qLk%T_4gsYX z2}+Sb5Tq$p={0l(G=Ku3hAM<2#c=3IZ_@G~FTacLV%A*D+H23uJG0ii_x?Q(%9fR; z!gX}havE6TMlt{;AOiOMCMFC3-U*3i*h9rN20-4S`2l)-MjGTK~J zfjKCqwcV)q&79?zg$Mc)^nkVo#{=nX<%_ddM64d}MtOi?;8EPBm!=jrdkj(j_fmr4~|f{esq?55}vt3$p55FkYkzYazY*QXturmSQvIvUQ*U(?8bt z(|ygxOU6>E?uGhIs_y>!8t$pkLwQX|o_?KBNwPF(?v>NtVQogfh|A~LIT%x&Gm#O2 z06pIPL5s&jjJ?~heO>H#Uhpp1Api4pdilCff!C)g@2MvB!nr!aKbTQ4_cU1JJRl&7 zoaJ0$^D7b%g!#1|^f!Eh(p{%#tnmx+ig5!;pu2c*EJRb>uO9=-j#}q4TdU{wZtyOm ztSb%0f%z9ilX7im_i5ezad;#uwf`Ln&E z$h3j)mRvj)&{isGOE@aOhRG}VgO9%P)Y=9Q>!QQCLKY) z#GxuLQcYdp@vTi$nugddf6s!9$OpOi!UYGi?!Xm8C4djhc`U2#LF9f7eSLf5Q7+o- z%L5A5p%eF=-G_p&L!YPHb8iR#^a%el5&j{`MTt0*T&qn0$Yu2uY8JRb5?GC zW|NS=bxV<|XqJ!r7=R4(vd4NV(foLn%N99#M9XqFeX;Qp2Va1u7w+5+fC7J)k_GwC zF~RtG`0UEte-Y{Z_1s+1M;5x>@L&x*^B*SHSBHmztn7-Ag(SO?ts6q_{b_QzUsygD9QPV@3hQU;e&zbq%bc z-ffh|_6*XYNpd+)z*4DEoGK7^Gv*eF?#HlAgv&{Qg26sNOiTK{saEPdub= z4K8p~Z06;!C0i9c=eqeL!n+1mYz%f6?lq0scD3ZWk?+iPJaX$S>xHdn9byz!5 zU9)33HhvRI-l*Sx!=)OoCg8JDqqLivv-w6wvy=5^6_Y{zC+n;3?%BpJmeI^ln3w_U zpVu_f5by>&RN{14So3vd#&J`o!%l{$kTY=Z{PiX2^kQ;#%lCA2?xV+AaP-K}{y}U5 z`4|La_;vTL`SYIv3i`3~6A-6bebm2Pjr&iNF9nxOQ3YUz-1HBktTHl76FxcNm-i^U z_Dq`$E>rw>`3Lp_@3`Qm%Wa{zBisE5h7HE`!96RX<6mbr^$kzF@(s646f*GVae9!cVu z6&@PYqe@daR!R7CN!4u8tJp;7e9YYLb7I+&J-bF+buib<-8(ocls0cJER~l_i=DPe zdHBhIywu(9nkG!G!Ik%#AbF1!e?nkr<##=w4sfE7i(3EhUAH+K+wM_61jQ~ADVm1y z2ypoBMeKI5IyI0W>{XVbCt=B*EXde_xwQes(9`}6R+X^#NW*TGEs^5A&*aeq&Oy9b z`+Z(BIdcm_1~JfOt^}!bO|U#=s%_)E_Q60iYnlAVsH=6LvqQ5Q8wgG2CKHCdqNq9A z=C*P?c57o*8QCed`&_~=Q*s^QJj^0=1S9h!lhtyRthuLNJ!#K|fAgj`xmo(T zL;h|G)hAgFpMQNEE@q8?54S$6&OmT3SLk-$%i1HKEEA_^`z3wl$^08-wkZ{O)w@@} zG*Dau0BJtwpB}YJk|8f-bJVtHwa5y}=|h%*GT&ga zZ-aBz&*vKJR|GQS&^Iixu&*r2@G)w*R#MOiL{ZV5Tjrtb2sg3^p0+r#J(jactj~%m z^$;N21Yh~&m^^B~xWM&Ns^Kn%LyYaKt-l^{gzEsRGXVG)GA>h%yIa8XxA zYzCfW!1m3cO8s|gngy}htFLLoUXBR#R4;cCZMbH08ROqzn;ayyR7NGh!RU=@KGhgL zy#x~qA&`Zq`$(lZYtojZJ35&(kibQ}yNM|A5qo8sNPm1%-jwJAIRm9+MT1u@PAtDD z?TP9ou{l#ggp%Zy4yGIzs$ki4urZmD_b}R)n$kxzzV(wjG&0E7tGJkhqotPiB?E~o zfVx>}2cI#9yp#Q2T_S5~zjeKJl<#;I5@2@V*FUp?-lixDSmHKnZ;?9#U?A<`VSfrF8 ztYA0mcYOW5sn(N+ajK`Lc+0f~?TpM&_vT+pRq?b{y}X5#Hngo5lkW(oP)=;X18Ry1 zJBoZXJpPixOT*9fuUAzWJbWvZ_y|kijhcOHC~;$s(>hws*RQxE6bM!XlqtHGCBXm8 z|Kmq{8eQfVPh!m^lZAH3c`CT9HUh`iF-i-kXGw)IA$&%yTXqd_yUX}2)75Q^DUq+W zWpa1i+Qd4B+4(`Qw|Rq9S-EhlDjp~jutzb^uUBc^-r~*_t4qsO@AYPZGeT8|ru{2F zyHdGeU3Dpe8SW?hPr0F-pKwD%+ux!>u>5Gui!gsdpzqxvpJRZKg1f z)HGSp`q7%dMa@mQ7JuXA<&8yNUu02-woU~jMs``R@Z=){S|vMqi<$ofqsyfj+K=J$ zFDQ>=UcoHL@-=E2&GnR$oN1v6%ncnaOI)dsT+t~%mb<8~uV3H9(>}j|!ZMjyiV-TQ zSD{nBD_E!eg^yDEVK=6Hlu9(Wez|qiISQ;eHT3BALQ@VA-A3YGX#5$A&RXd{JQe}x z3Sm8aMp(B%jbH@pHoth5vF$IS27|#z{cFthD1+VhFm6|bNmEy`Ugo}=eEVZ-*lx>3 zFKE6XL0Ih!^$Vz**=+W#4acFb+8z17Ea$C{)#-GXFRpw~k^_18!;wfVT0vD386<($nM@z>vkI=Qx^|%X=7U=I(}IrnDEhbgJpQC9 z^fH0?53jVec%-sN;B@@F(qsESUGf6q?5}%xlZA#c(OeV;cZD7uFe>*nW6ISeVD0gutg($OfU4|$SoX(& zx#TrO*_1Q1)MT=r;P+-3Z}o^KH{D#3sWTdBv7O%3GBej3Fpw?i=T)0X z44x40W!;hAd?fL?%RxxE^v8*=QR6e8Z>JX_brG@VX$I~1r9#6+S)?NG!CBa~1B^)k z(}!eCdeMJmH|?d2A`dHNehx%a*CwrxVOF@a_q=Vp6p_t@^&)S@JT640RcYCT4}wes zck4r*ITd@Lydk0m|KAKV%i{fr;b<51aX)cPMps*X9{Eb13Pa zSFDcR+`)WV^OFYierB>Ouz9DghikgUzv^TrUAIaUd);1PQA$?iF# zE_+E@?=PhiGVh!o%(~KPRhc2rXL=p}HR%P2C{lWqC{ddhPm1k?VRQnDmDrh@3s`bX z_U~ADqMYkrL<F+a5q2+c*G7*gv&l8Q z*&j5s7fTbfKIA)wc*&vOGmMz0Afk;;b9e65@qhNOIcggmxVka+>L*)3K+IjRy9V~w zzt?J2YD)_AN}AlvA1W>AcO1Q4>1b-1Y{EbZlyE}~E_WD3l6d-+l~etE%I5!*k4ZM3 zVKLi_tr(Y(X?zd&=F?kHj28Bk7ru`chNZ;yNME`pGzNz7!b5NONafA zMjX3&`pQyTczFT_4+3x6tnq#G;7Y9$OdkxS9 z)+fEC2h{0Mx^%r|+))Y`v@UN$j^RpbV48)s!EW51tdE}xDP9U66^~B3oQ2o666n?{ zMRMvP#D62N&#!}bf-bGzyD1khKX>Walj|F{x=-QIK71}y??o$Yu&$bZpJYCI5(hUR za-&@;b8b$r8pPf5>Jjkne!*3IqG`tHEq{1herM=)qXbog+KPp`Is}3S>@*Ui=}UO; zzeO8r4VTmx7?sv*bS1MTzjkaqwnXb;|B2cUMklkg<)?c+EIL)%`oI@~RI31xW91uZ zR4tFKBzJtu6Ti_Z;=eH_-k90Uqx0EAlhVx7@J%F(;HNo0l-jg!9+zaiDx%XA(HQ3V zC?B7wb;+eE?%nyRlTwMP(8tvJ&kR>g48rRuaHg?`RxHOVGcbr^H=Q7k{cf*!mS8mI z!^AzW!#yiceIA=cr>knifc=o}?xp=#=4azyWnHA!5M}`zEDJ{)q|(C%AFEqo6;J^6 zR%!{~82E2^_0z0oSCgy00EFXs4b^)e)T`<%3J>DPORELOw%U|C)8u)anQm z=cXz8mQJ58)y*LLASoWZa==fTFfs5d`2Oj>0AAIJqi*ZSwgqe6Y1#c6!iZGq_#TEf&tKA6LVi9`v4*DXGkYk4}_3!kT*ie z)!P>i0D)NxyG(RGW)c#;Px|_G7L5Q(5k@IEBfAK@UNQ$IyU;_Fe7hs1NS%pL-^7pZ kj{Xk*4%$AH_6J=lV2$gt@2-YIDwqP$(R}<6t6}%@f9a%TZvX%Q literal 0 HcmV?d00001 diff --git a/examples/51-docs-theme-launch/site/public/android-chrome-512x512.png b/examples/51-docs-theme-launch/site/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..90ee36e6586e1203f44ae5e5079812946c738425 GIT binary patch literal 70325 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 J_uNBx{{R8bsbT;C literal 0 HcmV?d00001 diff --git a/examples/51-docs-theme-launch/site/public/apple-touch-icon.png b/examples/51-docs-theme-launch/site/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e38aa24353ee87d8daf593fa3db19cf346c76f39 GIT binary patch literal 10521 zcmbt)Ra6{Lu=ldKEsJYd7I%l>?h@SH-Q8V-Lm&_&xI4k!f&~c{2oPL@I|R7k%HjY( zV>0?bGep=kg@v5DG63LD3jl;h0sv32SD}XhfEPOeaBK`|9k@w+IQLqqaLO1dN0J=_jDRE8T)zcuKK(fWfJASU;&s7dq z_kfD$Z`^1Xcr@5a)s#q{?C?y)9 zv^!oZ-v61z2coAqfU#A{9*8cWn^gTVVaWgpVthnDJPH713|I`1!K^{j#ca?w{nlR< zrUrctx$zJf9T%7CkAd!o*|J4-QCP;vy_bHXI16isJfNVcfw#qgDF6zxU=SR!7?LV# z0*)>w{mobI;?4~2PhV?gYB5_rePx7;BG0z)#<=`-jX<>x-H%d5e*DtkR{*R9A4PvA zd|(&L6qu|KGXp3i9@`J_VJoMLiIOi^joDwVKRa&!f+D*?QM^)Y2z|X%&H<5Kp;-He z>lFxI3`DeF{gCu+!p$fvYGWOHW2kqW6TRHQga{#A{B0=?=nr3@XFpbNQpkyT4jpat zQLV1$IN`bREwX4VK9NxmLw#e(zEqrRT%01arntn(0Q6>88!UM<3(%JIDw=i;D2{}Q zJa)f+CN%tA@eJ?o5>dhRXFC>943vb|&W-+59@ZO-!O&n4O(unqN`Cy9()kDZPcYd0 zF;h-pp;Xr!XLTAlImJ=fnFQw!#*P%II1xVf#|n3f;LSa{{fwvyC`ggbB>GTk&x!0yGX8jbXEVjc;SbpKE*p9=mPZ7Oa@VbszO0b zBkb6HHY1`6L5o0@NURWEJLoe60}Ka7A%h8+-4z=D4Bd~mg-DU%d5JB+abUTMQ-}z@ zvsh4dr_}I)W=ymE(kpQt7w34tvaJ403U%6L|c)M(ql|m#9b&3>avJ5$IZ8DyW3J*ok3@MKUN)iL*Rr zkP;bN{A;$paZ&zle~fI0ff>TQC39X3O|!TOmV$=AholS;oov`}^S4SJ%kC;tm^Qe` zuC)}BywjK5N>jnU+fF#HDz;0(DtG5oxkrQYTVs8>kBeCpak3X_6iM^&nuSkHw06h% z;tcv-#yuERIPKYjt10m~uC%jfD!_U#r9$x`EG6Qf^1?sn+dzb2njU$pk)M9LUbMO@ z^txYgQUR&P?!n^gkk9~G0spu%oD;T@9GATyw)7D96ma?3o9a9l*j|N}+SW<;8&P#H zXjH~B;}Kuiv9F!o*C#cIg`ZbqissZz({zuR?^1zVY0QG~N(mI-S+R#`A3{|bU06SK z>|%b4GrO1|ZGwiwcLAYz7F_576$KTqPXme(v|$=b#G{}5eUwR6C!KBUS{`%-0pAIO zf(qz(-`hFa3X(cZBh}V|2{se_6@(tXRJ>pwzXG;5!m29(rP!LKUu&gmF=4t{DdvSr z|KsZ{d@)iqqIOJ;fQk7*3=GOaUm|-#6dZ?Ca~k{^mW%*TPmLcwLVF1KF8-Dzy$|DK z{~#eLZ0q!u6)~!peR)DCB?2Mo@A>R29d6BVMd;5*r574g;X**7#LBS<1+CC`x_rVS zj`+w&Rb7;rC^_9&nXnx=fNr#!gXWHX1`Q2AF3<8Vg@{Cqw)*uo>Vj`ACY@nIYqP2z zJ!z0%O!$s(0o%qwf|s|<@888vP8?mr8z-AWc5tHCyHs6#;s%70*@^(>Y zPiZjsRUi&s{o2FRcF#3{lCjYpo7Wf=J!)b1j(8)85{eh^Heb<9;%e&?Zi)s>;@-rLH(_sd>Z2fb!xYIfb)dt3wvzr zz3<@j9kR&V+S}v)MQ_mMhVkYjRYAOqJ-cY69761q!Pr3TUO3rs)M5YpPQJ zaa>M3*;ooG82kJV!RPEI=%1VEyv`y_qU0>QK$W3}yTe9R$?`$wqB|i{I_G+Zudvd5OvAagY@Bb`9=( zu$kXNo*V>-qWt?Ycovhb=TlfHUbZo=lvMZ4^P&S<{wvzw`nbNqv##d+2i$`xd%IKD zb8TDTiD<&g=}WWl1TjGvAVG#p3%l^D#3UV8{!;3>UCkr`9C zr$zu-275)t7u;^rtZ2Djw7GdFZe%*dr7k~oJ?DjVY4>1nG|TQ9duqyUBRg<|P=*kb z`1I3*Fl`;an)xj`O*ExMm>ZkDrEiM5{_hGqypP(ldg4-zNucH9_lDKlvN<_ON}1!( zKifqO`pB>Ge#yo(`T8a@LkJZDT$A;a{>XBhhqFwx&*O87WtCGm2BY*`=H6Y;i6Q)N zjht(17(ed`i<}Ag{U{hGCO{weh_A2-!62cL!;@J)hL1s6X8W#=UnT3`C9-lXaKU)6 zGyJzt&f1l=?fJCr+1Qt(+Xf3fUhNpaiCm>Q5s!B0!%IqhOz4OU68bUKjr*z0QT~&a zyJ~}x?bDy))ao1s>tnX>xk!wWL%p|zTI8)(>H9ze0IW@*M`Y5 zm#yco@79Q~j!x_9RMAyoO@*m4EgO{|0f5l7bSzxSiFv5X%3gEom|cxOeKeee+C z!}3$d8UtQ!$FIX~uZacTZ6n!Ib}Hm5}9>RqU6FaZz@TQx3k zLd-rlY}zH>T#?RuBY!Y38dZ8Fwr6UdZ_1?*M+toOJJHg)7kZ7{ytLjh<&^u0g)zWQ{#xyU_uh~5U3+dgA$g=w) zPndE6W^RI<+Le`884&}jL!<4e3eiK0JGM5P{5tTq2L2!uV`OZ!>1SIu87a~$t4Zum zuf{{Z;N0EanJmPk?~*OP6avVb9FaCMsII9av5j988^RjzA_e}ChiryR{B}t2(x%-i z%AO`0MvT1Ef``iID3o1Z4fede|)RcF(DntKy8tcN{pU6BB~|$R0Krl)H7`P zuFUV=00dOj4@K`4GqX;!?EcCa7qb%bxN$;S=7pKvhO;7In-BK)jE9sOqGj-VYSuTanuSWy~hXU>p+FX*kAtiFub~{IBjUTK%Zt;UDN&H%b=T4?HU6&cIl* zWPBO8pJX$rtEyIPJfj$*S5#zC>@^cO)qE>2@D_c|>OUw*7OGa1d{k8-s?TPJ4v;FR zyRCJ2ZdR74pm7xLu$29EIP$wIulGm+(>><|R}*S8M>eJZbXIU44)7N^@1A`8cfFnM z7Kw2D^wcQ}sq1**y?wZ(;J3$&$OLKFv>T=%a+xN>R@fRM=N$p z4Eb*Ai3x@EnjMX`Q2cU91&F7+b7q>SOUl0^uP>B6@U57i@Ev-!K8w%HwYDaGak&k7 z*xLL^*@v%LUG3aG;5#u+Jkf8I1d(#8(~2d6$5U$~M?7Ydji zI6twNOdmH9bXAMGCEeyW&!Dvq0c`8G+tXuLv9sj<0ALf&+**KrWKj?j|6RKz( zQM%cZ=&Pb~;Bs~q)WA9-T-k^J68`wazam5~k@*c4;)TACrj}0$nNVibR@^O#7;C zr`MT*?Xw|xfl@shAH~qCarKvimAY5_Xfoc1P?anpy+7l}L$;Eb(0Sl%)JFO1Dx~Oh zAseba_t?bt(}XS0cKVfVnG$cX@>Lvy{(%@8q+86PN~1FssObOxGBu2+)H672*M*Mq zzG`tj`Nix)yrX64qZ#I?g?c%pvB=%F+mIHpxVYc%O|4AS?CB&0YP zGf=}M`|UXtQ?av$`kaH7;jz#}OlT7^UbTIbWl>~*Ix`~jWd$sx_XW#meEO8>!m3k&Ypn3B`*<5Gp<%!!xX_Z`nd%9F53acM*`hCiz?J6vc8qKiIyVH~8TR^p5t^xJG z_&UZv4wETE%kqNQHHIqP4=sgP_~DPGy~9>Cvlzq0e*W6#)|^r;r6a-j>vQ`N@-gxX z4zkYshIM1kaErB2okp5TI)v z8=^q#`l0+K|5?JIt+bcrUGPQs`A%}&j5OAD<;%I0NA0~Ex?5`Y%spx78YK=7X~{JU-+gA`g6261$d2yD{oqHd6;H}JO|d3jd?+xNKB7ri5j_>)2B}cEDoR8WSzmZQ_>Rk1 zctnGpNy~55gbQPy< zO+--D6E}_6%hbMe>Kl`7YO7 zhTNojKY0!@(48cU8f)oH=CD+#15?2ukEGtQF!(UGUKGbC=G7(IQKeuhoFBuZS9_E5 z@8f7AC6F1pA_Z{+sa=N=N0d5n#^3_+c(nMZcNgmIBU_y&yDO>W1iiw+AmlbjROgj& z1sVrV4jHOq?FfpCLh$)DY8U`4Ut0=9lO9P9F0q@s)5EX+aE4DC+P;I&uuB1QH%4B4 zc{=&e&-SpKqS2bOrzznjdwihd!!5Z1| zC=L!k`go0;de^mOc?kIR6;P&LoUOa9C~WL;6dwYJ%KlwV-dtN&v!>afP*lAy8V>`E z0n)#TAwUT}`glh6tzoZr@^lBNbob<4`yRStHV@Q)s+WkOwlu<-KPt~M@~=$jy2MkX z+BRl1mXtBY%SLX)#$H~0_p5#GzThpg%?V;iz{WH-FipdhR$*^n74qmI9hWOpTr$^; zLOl8m>`Y98( z^ePo~3e_nFnFKSzM&nS=mDXE`$R^p5@8)=C``Gtn%d`wu18x5~X}bhT?@;E3B2QTc zF63%aeR@f<*n=TK@6Oj(AJ`VY$#li!@0ccH%m%`%Nb6_(+pU1AX)LHsl-DZpG{}^a zXu_y&smHk3Bl`NeY_IEGPndP}Dr=G}Qf7>hs?N?FL1&E>$7~)3(D+?-0uEl05{^2a z(kH!=%Sewd;re=ak+;B_Ql5`_?@lI=9e95`_eh7B*8vmK`JEc{!C6e&IQ%vJiRRuk zN$Ae23(pTG;RQjN>rQf_qi5SdMy*A!W&J*{B&92AG0t+#DCjd6a+LzTm3^hJPuum% zfgxL8TA_ccG~UGaAp72Ah%QX~I1%-e5K;k#X;Kx8)p8bP8QGFXz~15Sv%}W|Dx#-; zyN$C;wc8PE^Fz9Zh6=2FeaEAu?uC)$Vc>G#Z6TEk24puqEov4f8ZjYMH_PbHs=oEh zk8KCf`F@!`@{^cpyrWCo<{~FwT7SD}=rVT@=fa`Pl`Q7A@TMB~tB)0O!%<#f6GrF&U`2%m=5ZFUfD0O<^SXGCq36lYhp*VDc>nX8G zf_mHkXm3OGmBB_)9_WYm+tFTN=f(|dt-cQbS=o|!i+mGz&rZ!ioT@c8vn8VCHRAoo z$?41W&UD|4a!GkqAieJ1(9JEE!+DnukF((_rZo!MH_5><8Y9eDPMf6O#A@-rnq^qsMOG}yS*yGFFgG3mg-W%!!kKh+C@s44}qNmY8rP!*&;(@@?C%s5t6h3J zELWPCzgJs@H@pMJP0QYTQ8b2j{9^rN6r^>OTnC7j@3D*x3t4}1OJra8wYQcf1FT|n@C%358do{3=wufgJvzSjKbcNyyYl;s!iX=>OKtgbamQ52KNQj0?l zv9Ui*q$#qR-9(=Soa1KWFua%hfwi8yvgor>SnytDNlJq_++Q?0wJxj%RGn2q_&ulE zYNYKz&dAb|X!7x3QOLJX-P$DPZ(t%?)L!@XalY>wdq}W27uA|%4}|8S-yf)JE$>{{ zcfya;6Yvg}P~jk4Fp5k-!&X+zWEbdpNfLy?>#FDd&`1=|m&uT;ohByMEUG9OZ}B8d zFp-?yyeS}@uuw+#FsNfiHw|ra(I=wEl2N8{$>YA zfToUI8MPEbCJ&1q=T^N+PT%7XVADrBWPaXopZkmI1QLgt?-*$u;~zkjVPvFYe1?Uw z+n$G7tM_#AozHBxW#sSAQe!a7ZK!HJaO84?bU&6}jgs0!0;JNN`E$u&8Np*;F7aQU zM~2K$@a5=qbL(z8Vk5;%JzBB^4)h3;$ky$~>kCvfXGgV;yzunioax z&ne0blH%ag3RQw84hy2Owu03^M2!YE4R;dU%G2FJ**2g9 z>)52U4n%n5NTYj{q!}cHpGS;!eRWraePaXIO5t0xC#DHC48yXOxA-W@6%T3xgx`Y% z1&g7@H-@of1@RrYlBYL|FM;<@!K8S_a~UrW6IFuF7FM%p8Y<{Di~6ehf(&B95cQeP zEgdZySaC)@&p%CkI_%;-o#Kis!ixtVVRAsgomY2Ap3Ql+6cF%LUC;e;WUn8Wv7hdkJ#x$U#g*D$e0_H4EmCW;13U=pq#nhaveLrMg;cSaw|x^ zVg<7f|D)l`q^g$6{FWO+UcJ0>uAh1=$#&k!fnk{&)#gn0U`L|0S z*XkN`dWCF15yo++K*ygn{;}TZ&LvP^RlNo6D<5WZz9u}S4pw&n1^eFQ-k7-5?k`tQX-h9tVK|cdzaU$|RjiKnI$t5scr`kh@M!&?>oQ&6 z7FGT$Qz!1hf9km2?YHvDGPG2kXVv~hj+?S)YfX$(2cei`RAuE?VF*pCElwGZplK9x}G`A zKzKlC@N2h(h&2_foU%&9bKg*1@hNleg)o0S^*9$nAuqRb*eDaM9$PW_%%%F6v#~v- z-n5vuxq1tP+^!Ia)^IKYLpuw5_Y42{toIDwPj^+4OW{EpgQU2$GO|w4k6e9+O-f*Q7$CXNuyMHb(wp!XWJi0VZu7CXVGdcnVdnjfDGqA8Z_*7(JD z{_8VQ&%pK53DrqOp?P&r-yZQv#}zRA_Y#xjH zABo4>j2hMQodJP+f~PQ=w`1(hDZwKjb|Z83;<1wT$2nW|(Ow+y^+}~JRLonzS9&Ix z&!Tgf?RtIvnYu}@S?%R+Z&gJcIA4~$iMc+5*dlTL%l73+|D4Dk_Q%aQr-44s_Fra&|~Jng}&Mv|NGn!;wWr$cZw#=hO&^+oOXA6fb53z6GHE z)?8eQ*HQe$`{mK#&%^+q93nq2S{H;QzgSi@KiiutbDy%S_wVkeM9@Z=RCW_q`EC<$&#FQ@E}@G%FDTRB-AuX%2m7Xm@J<9N zwa_El4TtM=*;birL5$IoPPW0rVz|-c0$;{yX*t(1+r7|jFdHq1hZ4=`TqEtT4=gv- z&xbmx0(VNU2yoyoRA7lFi$7*OX|h7}!chdu-uc+RnNaMLUxnQwzzQ~V^vjw>Q%%!;dG0*8XeCI zmRC0>x2?_hipD!b$A4IS1_ z767B8xzVt2W)kxy2^)9Q6c-W`o038ivV)$Zf|4UVuE8!qEmU6Pq@7+Wk!D8%C>y^L zrj1^iVWgvajM;Ya?k`_oKB8G|vm?VAU4+bRdI5BgaBC_x5|)F{&S!>`QG{cwL5)Ar z+>T*dksq!4Ji8^BlpV;EF^wx~WladHVlL{+bWqI#^Nqf;hg%_Ovkw0B`&v8w4*a=f`7=LOZ zc9Pfn_(9mueMKcC%};+=No|QhCk2*gpw$y zF2Q|Uy>h5md%t@M$ZTi74OXgUi*Wgqf;z;GeZn?6F_M;sF&Q5?L&h2EAy7PyYh%FH zJsUW^;)k7p01^_6lw=xcw2Lh$s6ud<9#}!P$pI_%C7V$>RCf@L`^0hCTA}8+LFGbI2vlhV+%VhMP~tH#JRs2`-&* zx`0C^d$?0O=&Q7ONf{oj0ZkCFe>;#I|2q|-Z#CE`1A-EuyZjNk5~$MLTQ+p!yIshY zmoP*T>Kc1xy>%jSS14jPUkR*v1ZCu=+`q`#lR4~e`ukG`;6$$I^*yhrDYA`=r*OkM zEXduR%j&TDn>}KmGs|!$RYs3XP4hFOSKi?sb1q=L((WPuf&~1jaU8YzKuS-J3WHx5ih*!F5>`Ng{k(C({bqYmAm@1WEXc z8jCDkSy!c0Nfac+H?c(L(;B_jfZ%FDHxM8NO!eFaK0+)d&Y;zVb^ai0!zbXRoYpsD zQUfk2hQ(t6ghlNTbLZGQ@nP{f<5)h5eIP5h>AVz8h0@o0$)I;cbVY7BhbLl2ytE5S zmwaVo1BbWqO`OxGoGeEAkCP@CO{rYA`EV1U_?ytaY;)H5=P>keFd`HLM8-qjMt%kJ zQIN|4#Ke$@Xd3iYNyKd=y@+iY#SNlz>}NH@I}z|Yf!xMc=$zUY)55Xz|Moxw=kwFq z=|!qkw=>{Cya)CR>`f|oW@vD~S)Lgjem{Mf7JM;W>stYdE3*~GB-wX7{`fK0(e9s` zk%9DS#jz#-7xEyw4d*ISgXqZ$YwV-(l-BjMH1o6)uyD764FFDdPEHnfE*5rvO?Ey3 z4jut^9wv5n0d{tepc%#gXM&T9rJc3k|9=9I!si|~LC0TH*Hhihhr-p}#oEr%io(;+ z)r!K-)zbn1@Xg)1!a#A;rl+4!nVgc}QwP9Pp|e_`<5J-&rsKimQb>hz4_U%fHEU8# p{#qCto*E__MxG3n`>MbSI3~pQyprJg1ls~2Fa1HPPQo<&e*hwEza#(v literal 0 HcmV?d00001 diff --git a/examples/51-docs-theme-launch/site/public/favicon.ico b/examples/51-docs-theme-launch/site/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..61990dd50eef8820b5b06f6386c99619810f16ed GIT binary patch literal 15086 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 + + + + + + + + + + + diff --git a/examples/51-docs-theme-launch/site/public/site.webmanifest b/examples/51-docs-theme-launch/site/public/site.webmanifest new file mode 100644 index 0000000..11d4a25 --- /dev/null +++ b/examples/51-docs-theme-launch/site/public/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "Rocket", + "short_name": "Rocket", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/site/public/home-background.svg b/examples/51-docs-theme-launch/site/src/assets/home-background.svg similarity index 100% rename from site/public/home-background.svg rename to examples/51-docs-theme-launch/site/src/assets/home-background.svg diff --git a/examples/51-docs-theme-launch/site/src/assets/rocket-logo-dark-with-text-below.svg b/examples/51-docs-theme-launch/site/src/assets/rocket-logo-dark-with-text-below.svg new file mode 100644 index 0000000..e390263 --- /dev/null +++ b/examples/51-docs-theme-launch/site/src/assets/rocket-logo-dark-with-text-below.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/examples/51-docs-theme-launch/site/src/assets/rocket-logo-dark-with-text.svg b/examples/51-docs-theme-launch/site/src/assets/rocket-logo-dark-with-text.svg new file mode 100644 index 0000000..b6a99e8 --- /dev/null +++ b/examples/51-docs-theme-launch/site/src/assets/rocket-logo-dark-with-text.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/examples/51-docs-theme-launch/site/src/assets/rocket-logo-dark.svg b/examples/51-docs-theme-launch/site/src/assets/rocket-logo-dark.svg new file mode 100644 index 0000000..43977c2 --- /dev/null +++ b/examples/51-docs-theme-launch/site/src/assets/rocket-logo-dark.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/examples/51-docs-theme-launch/site/src/assets/rocket-logo-light-with-text-below.svg b/examples/51-docs-theme-launch/site/src/assets/rocket-logo-light-with-text-below.svg new file mode 100644 index 0000000..362734e --- /dev/null +++ b/examples/51-docs-theme-launch/site/src/assets/rocket-logo-light-with-text-below.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/examples/51-docs-theme-launch/site/src/assets/rocket-logo-light-with-text.svg b/examples/51-docs-theme-launch/site/src/assets/rocket-logo-light-with-text.svg new file mode 100644 index 0000000..6810ba0 --- /dev/null +++ b/examples/51-docs-theme-launch/site/src/assets/rocket-logo-light-with-text.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/examples/51-docs-theme-launch/site/src/assets/rocket-logo-light.svg b/examples/51-docs-theme-launch/site/src/assets/rocket-logo-light.svg new file mode 100644 index 0000000..b9fe39d --- /dev/null +++ b/examples/51-docs-theme-launch/site/src/assets/rocket-logo-light.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/examples/51-docs-theme-launch/site/src/data/authors.js b/examples/51-docs-theme-launch/site/src/data/authors.js new file mode 100644 index 0000000..6671625 --- /dev/null +++ b/examples/51-docs-theme-launch/site/src/data/authors.js @@ -0,0 +1,6 @@ +export const thomas = { + firstName: 'Thomas', + lastName: 'Allmer', + twitter: 'daKmoR', + image: 'https://pbs.twimg.com/profile_images/1070490946847105025/UBK4xPzU_400x400.jpg', +}; diff --git a/examples/51-docs-theme-launch/site/src/layouts/layoutData.js b/examples/51-docs-theme-launch/site/src/layouts/layoutData.js new file mode 100644 index 0000000..02b73cd --- /dev/null +++ b/examples/51-docs-theme-launch/site/src/layouts/layoutData.js @@ -0,0 +1,71 @@ +import { html } from 'lit'; + +import { PageTree } from '@rocket/engine'; + +export const pageTree = new PageTree(); +await pageTree.restore(new URL('../../pages/pageTreeData.rocketGenerated.json', import.meta.url)); + +const search = html` + +`; + +export const layoutData = { + pageTree, + // head__42: html` `, + header__40: search, + drawer__30: search, + footerMenu: [ + { + name: 'Discover', + children: [ + { + text: 'Blog', + href: '/blog/', + }, + { + text: 'Help and Feedback', + href: 'https://github.com/modernweb-dev/rocket/issues', + }, + ], + }, + { + name: 'Follow', + children: [ + { + text: 'GitHub', + href: 'https://github.com/modernweb-dev/rocket', + }, + { + text: 'Twitter', + href: 'https://twitter.com/modern_web_dev', + }, + { + text: 'Slack', + href: 'https://join.slack.com/t/lit-and-friends/shared_invite/zt-llwznvsy-LZwT13R66gOgnrg12PUGqw', + }, + { + text: 'Discord', + href: 'https://discord.gg/sTdpM2rkKJ', + }, + ], + }, + { + name: 'Support', + children: [ + { + text: 'Sponsor', + href: 'https://opencollective.com/modern-web', + }, + { + text: 'Contribute', + href: 'https://github.com/modernweb-dev/rocket/blob/main/CONTRIBUTING.md', + }, + ], + }, + ], +}; diff --git a/examples/51-docs-theme-launch/tsconfig.json b/examples/51-docs-theme-launch/tsconfig.json new file mode 100644 index 0000000..9037a1e --- /dev/null +++ b/examples/51-docs-theme-launch/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "moduleResolution": "node", + "allowJs": true, + "checkJs": false, + } +} diff --git a/package.json b/package.json index 9a736f9..c1ff385 100644 --- a/package.json +++ b/package.json @@ -126,9 +126,7 @@ } }, "imports": { - "#pageTree": "./site/pages/__shared/pageTree.js", - "#assets/*": "./site/src/assets/*", - "#components/*": "./site/src/components/*.js" + "#src/*": "./site/src/*" }, "lint-staged": { "*.js": [ diff --git a/packages/blog/CHANGELOG.md b/packages/blog/CHANGELOG.md deleted file mode 100644 index c8251fe..0000000 --- a/packages/blog/CHANGELOG.md +++ /dev/null @@ -1,76 +0,0 @@ -# @rocket/blog - -## 0.4.0 - -### Minor Changes - -- 70bb7a1: BREAKING CHANGE: Update to latest plugins manager to get type safe options - - There is no longer a name string as a key for a plugin. It is identified by it's function/class. You will need to adjust your code if you are adding or adjusting plugins. - - ```diff - - addPlugin({ name: 'my-plugin', plugin: myPlugin, options: { myFlag: true }, location: 'top' }); - + addPlugin(myPlugin, { myFlag: true }, { location: 'top' }); - - adjustPluginOptions('my-plugin', { myFlag: true }); - + adjustPluginOptions(myPlugin, { myFlag: true }); - ``` - - For more details please see the [Changelog](https://github.com/modernweb-dev/rocket/blob/main/packages/plugins-manager/CHANGELOG.md#030) of the plugins-manager package. - -### Patch Changes - -- Updated dependencies [70bb7a1] -- Updated dependencies [70bb7a1] -- Updated dependencies [70bb7a1] -- Updated dependencies [70bb7a1] -- Updated dependencies [70bb7a1] -- Updated dependencies [70bb7a1] - - plugins-manager@0.3.0 - -## 0.3.3 - -### Patch Changes - -- e1089c5: add title to blog page - -## 0.3.2 - -### Patch Changes - -- 00f4a91: alignment + spacings for article grids - -## 0.3.1 - -### Patch Changes - -- a5661b8: Updates dependencies - -## 0.3.0 - -### Minor Changes - -- 8bdc326: Adopt to new layout system - - BREAKING CHANGE: - - - Renamed `blog` to `layout-blog-overview` - - Renamed `post` to `layout-blog-details` - -## 0.2.0 - -### Minor Changes - -- 4858271: Adjust templates for change in `@rocket/eleventy-plugin-mdjs-unified` as it now returns html directly instead of an object with html, js, stories - -## 0.1.1 - -### Patch Changes - -- Updated dependencies [a8c7173] - - plugins-manager@0.2.0 - -## 0.1.0 - -### Minor Changes - -- 1971f5d: Initial Release diff --git a/packages/blog/README.md b/packages/blog/README.md deleted file mode 100644 index bf6080c..0000000 --- a/packages/blog/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Blog Preset for Rocket - -Add blog posts to your Rocket site. - -For docs please see our homepage [https://rocket.modern-web.dev/docs/presets/blog/](https://rocket.modern-web.dev/docs/presets/blog/). diff --git a/packages/blog/index.js b/packages/blog/index.js deleted file mode 100644 index 5580799..0000000 --- a/packages/blog/index.js +++ /dev/null @@ -1 +0,0 @@ -export { rocketBlog } from './preset/rocketBlog.js'; diff --git a/packages/blog/package.json b/packages/blog/package.json deleted file mode 100644 index d6f59e5..0000000 --- a/packages/blog/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "@rocket/blog", - "version": "0.4.0", - "publishConfig": { - "access": "public" - }, - "description": "Blog for Rocket", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/modernweb-dev/rocket.git", - "directory": "packages/blog" - }, - "author": "Modern Web (https://modern-web.dev/)", - "homepage": "https://rocket.modern-web.dev/docs/presets/blog/", - "main": "index.js", - "type": "module", - "exports": { - ".": "./index.js", - "./preset/": "./preset/" - }, - "scripts": { - "dev": "web-dev-server --node-resolve --root-dir ../../ --open packages/drawer/ --watch", - "rocket:build": "node src/build/cli.js -c demo/docs", - "rocket:start": "node src/start/cli.js -c demo/docs --root-dir ../../ --open packages/cli/demo/docs/README.md", - "start": "npm run rocket:start", - "test": "mocha test-node/**/*.test.js test-node/*.test.js", - "test:watch": "mocha test-node/**/*.test.js test-node/*.test.js --watch" - }, - "files": [ - "*.js", - "preset" - ], - "keywords": [ - "storybook", - "demo", - "demo-states", - "testing" - ], - "dependencies": { - "plugins-manager": "^0.3.0" - } -} diff --git a/packages/blog/preset/_assets/rocket-blog.css b/packages/blog/preset/_assets/rocket-blog.css deleted file mode 100644 index 4189045..0000000 --- a/packages/blog/preset/_assets/rocket-blog.css +++ /dev/null @@ -1,62 +0,0 @@ -/** BLOG OVERVIEW **************************************************************************/ - -body[layout='layout-blog-details'] rocket-navigation > ul > li.current::before { - display: none; -} - -body[layout='layout-blog-details'] #sidebar-nav li.anchor a:hover::before { - display: none; -} - -.articles { - display: flex; - justify-content: center; - align-items: center; - padding-top: 40px; - - /* css flexbox gap workaround https://coryrylan.com/blog/css-gap-space-with-flexbox */ - --gap: 60px; - display: inline-flex; - flex-wrap: wrap; - margin: calc(-1 * var(--gap)) 0 0 calc(-1 * var(--gap)); - width: calc(100% + var(--gap)); - - align-items: flex-start; -} - -.articles article { - flex: 0 1 360px; - margin: var(--gap) 0 0 var(--gap); - box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); - transition: 0.3s; -} - -.articles article h2 { - margin: 0; - border: none; - padding-top: 1rem; -} - -.articles article .thumbnail { - display: block; - height: 200px; -} - -.articles article .read { - display: block; - text-align: right; -} - -.articles article .content { - padding: 10px; -} - -.articles article:hover { - box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2); -} - -@media screen and (min-width: 1024px) { - body[layout='layout-blog-details'] #sidebar { - display: block; - } -} diff --git a/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/content/10-title.njk b/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/content/10-title.njk deleted file mode 100644 index 9e11a87..0000000 --- a/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/content/10-title.njk +++ /dev/null @@ -1,6 +0,0 @@ -{% if title %} -

{{title}}

-{% endif %} -{% if cover_image %} - -{% endif %} diff --git a/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/content/20-content.njk b/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/content/20-content.njk deleted file mode 100644 index f8ed737..0000000 --- a/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/content/20-content.njk +++ /dev/null @@ -1 +0,0 @@ -{{ content | safe }} diff --git a/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/content/30-footer.njk b/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/content/30-footer.njk deleted file mode 100644 index c92cc59..0000000 --- a/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/content/30-footer.njk +++ /dev/null @@ -1 +0,0 @@ -{% include 'partials/_shared/blog-content-footer.njk' %} diff --git a/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/sidebar/10-logo.njk b/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/sidebar/10-logo.njk deleted file mode 100644 index 2441355..0000000 --- a/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogDetails/sidebar/10-logo.njk +++ /dev/null @@ -1 +0,0 @@ -{% include 'partials/_shared/logoLink.njk' %} diff --git a/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogOverview/content/20-content.njk b/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogOverview/content/20-content.njk deleted file mode 100644 index f8ed737..0000000 --- a/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogOverview/content/20-content.njk +++ /dev/null @@ -1 +0,0 @@ -{{ content | safe }} diff --git a/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogOverview/content/30-articles.njk b/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogOverview/content/30-articles.njk deleted file mode 100644 index b3126c6..0000000 --- a/packages/blog/preset/_includes/_joiningBlocks/_layoutBlogOverview/content/30-articles.njk +++ /dev/null @@ -1 +0,0 @@ - diff --git a/packages/blog/preset/_includes/_joiningBlocks/head/add-blog-css.njk b/packages/blog/preset/_includes/_joiningBlocks/head/add-blog-css.njk deleted file mode 100644 index 9135c53..0000000 --- a/packages/blog/preset/_includes/_joiningBlocks/head/add-blog-css.njk +++ /dev/null @@ -1,9 +0,0 @@ - -{%- if layout == 'layout-blog-overview' -%} - -{%- endif -%} diff --git a/packages/blog/preset/_includes/layout-blog-details.njk b/packages/blog/preset/_includes/layout-blog-details.njk deleted file mode 100644 index b081347..0000000 --- a/packages/blog/preset/_includes/layout-blog-details.njk +++ /dev/null @@ -1,11 +0,0 @@ -{% extends 'layout-sidebar.njk' %} - -{% block sidebar %} - {% include 'partials/_layoutBlogDetails/sidebar.njk' %} -{% endblock sidebar %} - -{% block content %} -
- {% include 'partials/_layoutBlogDetails/content.njk' %} -
-{% endblock content %} diff --git a/packages/blog/preset/_includes/layout-blog-overview.njk b/packages/blog/preset/_includes/layout-blog-overview.njk deleted file mode 100644 index 96237fc..0000000 --- a/packages/blog/preset/_includes/layout-blog-overview.njk +++ /dev/null @@ -1,5 +0,0 @@ -{% extends 'layout-home.njk' %} - -{% block content %} - {% include 'partials/_layoutBlogOverview/content.njk' %} -{% endblock content %} diff --git a/packages/blog/preset/_includes/partials/_layoutBlogDetails/content.njk b/packages/blog/preset/_includes/partials/_layoutBlogDetails/content.njk deleted file mode 100644 index 2ddc5cf..0000000 --- a/packages/blog/preset/_includes/partials/_layoutBlogDetails/content.njk +++ /dev/null @@ -1,5 +0,0 @@ -
- {% for blockName, blockPath in _joiningBlocks._layoutBlogDetails.content %} - {% include blockPath %} - {% endfor %} -
diff --git a/packages/blog/preset/_includes/partials/_layoutBlogDetails/sidebar.njk b/packages/blog/preset/_includes/partials/_layoutBlogDetails/sidebar.njk deleted file mode 100644 index e55ce66..0000000 --- a/packages/blog/preset/_includes/partials/_layoutBlogDetails/sidebar.njk +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/packages/blog/preset/_includes/partials/_layoutBlogOverview/content.njk b/packages/blog/preset/_includes/partials/_layoutBlogOverview/content.njk deleted file mode 100644 index 7c9a8c8..0000000 --- a/packages/blog/preset/_includes/partials/_layoutBlogOverview/content.njk +++ /dev/null @@ -1,5 +0,0 @@ -
- {% for blockName, blockPath in _joiningBlocks._layoutBlogOverview.content %} - {% include blockPath %} - {% endfor %} -
diff --git a/packages/blog/preset/_includes/partials/_shared/blog-content-footer.njk b/packages/blog/preset/_includes/partials/_shared/blog-content-footer.njk deleted file mode 100644 index 3b395fc..0000000 --- a/packages/blog/preset/_includes/partials/_shared/blog-content-footer.njk +++ /dev/null @@ -1,6 +0,0 @@ -
diff --git a/packages/blog/preset/rocketBlog.js b/packages/blog/preset/rocketBlog.js deleted file mode 100644 index 342eddc..0000000 --- a/packages/blog/preset/rocketBlog.js +++ /dev/null @@ -1,52 +0,0 @@ -import path from 'path'; -import { fileURLToPath } from 'url'; -// import { addPlugin } from 'plugins-manager'; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); -// const SECTION = 'blog'; -// const POST_COLLECTION = 'posts'; - -export function rocketBlog() { - // const isHiddenCollection = item => ['-', '_'].includes(item.charAt(0)); - // const isVisibleCollection = item => !isHiddenCollection(item); - // const isNotPostCollection = collection => collection !== postCollection; - - // const eleventyPluginRocketBlog = { - // configFunction: eleventyConfig => { - // eleventyConfig.addCollection('posts', collection => { - // /* - // // It's not working beacuse it's a paginated collection. - // const headerDocs = eleventyConfig.collections.header(collection); - // headerDocs.filter(page => page.data.section === section).forEach(page => { - // page.data.layout = 'blog'; - // }); - // */ - // if (section === postCollection) { - // throw new Error("Rocket blog: section and postCollection couldn't be equal"); - // } - // if (!eleventyConfig.collections[section]) { - // const collectionKeys = Object.keys(eleventyConfig.collections); - // const availableCollections = collectionKeys - // .filter(isVisibleCollection) - // .filter(isNotPostCollection); - // throw new Error( - // `Rocket blog: Collection '${section}' not found. Aviable colections: ${availableCollections.join( - // ', ', - // )}`, - // ); - // } - - // const posts = eleventyConfig.collections[section](collection); - // posts.forEach(page => { - // page.data.layout = 'layout-blog-details'; - // }); - // return posts; - // }); - // }, - // }; - - return { - path: path.resolve(__dirname), - // setupEleventyPlugins: [addPlugin({ name: 'rocket-blog', plugin: eleventyPluginRocketBlog })], - }; -} diff --git a/packages/create/src/choices.json b/packages/create/src/choices.json index e25b6f9..6239bcb 100644 --- a/packages/create/src/choices.json +++ b/packages/create/src/choices.json @@ -20,10 +20,15 @@ "value": "04-sanity-minimal-starter" }, { - "title": "Landing Page (Spark Theme)", + "title": "Landing Page (@rocket/spark Theme)", "description": "A landing page based on the spark theme", "value": "50-landing-theme-spark" }, + { + "title": "Documentation Website (@rocket/launch Theme)", + "description": "A documentation page based on the @rocket/launch theme", + "value": "51-docs-theme-launch" + }, { "title": "Custom (community built)", "description": "Use a community built template by providing a git url", diff --git a/packages/engine/src/index.js b/packages/engine/src/index.js index 25ccb53..0dc9d99 100644 --- a/packages/engine/src/index.js +++ b/packages/engine/src/index.js @@ -39,3 +39,4 @@ export { ChildListMenu } from './web-menu/menus/ChildListMenu.js'; /** @typedef {import('../types/layout.js').TemplateValue} TemplateValue */ /** @typedef {import('../types/layout.js').LayoutValue} LayoutValue */ /** @typedef {import('../types/main.js').MetaPluginOfEngine} MetaPluginOfEngine */ +/** @typedef {import('../types/menu.js').NodeOfPage} NodeOfPage */ diff --git a/packages/engine/types/layout.d.ts b/packages/engine/types/layout.d.ts index 40f2a5d..64d8963 100644 --- a/packages/engine/types/layout.d.ts +++ b/packages/engine/types/layout.d.ts @@ -1,5 +1,6 @@ import { ClassInfo } from 'lit/directives/class-map.js'; import { TemplateResult, nothing } from 'lit'; +import { PageTree } from '../src/index.js'; export type TemplateValue = | TemplateResult @@ -18,6 +19,7 @@ export interface LayoutOptions { bodyClasses: ClassInfo; bodyLayout: string; dsdPending: boolean; + pageTree?: PageTree; [key: TemplateValueKey<'head'>]: TemplateValue; [key: TemplateValueKey<'header'>]: TemplateValue; [key: TemplateValueKey<'top'>]: TemplateValue; diff --git a/packages/launch/src/blog/LaunchBlogDetails.js b/packages/launch/src/blog/LaunchBlogDetails.js index 4ed63e6..1a9b3e7 100644 --- a/packages/launch/src/blog/LaunchBlogDetails.js +++ b/packages/launch/src/blog/LaunchBlogDetails.js @@ -7,7 +7,7 @@ export class LaunchBlogDetails extends LitElement { constructor() { super(); - /** @type {{ firstName: string; lastName: string; twitter: string; image: string; } | undefined} */ + /** @type {{ firstName: string; lastName: string; twitter: string; image: string; publishDate: Date; authors: [{ firstName: string; lastName: string; twitter: string; }], tags: string[] } | undefined} */ this.data = undefined; this.dateFormatter = new Intl.DateTimeFormat('en-US', { year: 'numeric', diff --git a/packages/launch/src/blog/LaunchBlogOverview.js b/packages/launch/src/blog/LaunchBlogOverview.js index 3513be6..5fe923e 100644 --- a/packages/launch/src/blog/LaunchBlogOverview.js +++ b/packages/launch/src/blog/LaunchBlogOverview.js @@ -1,6 +1,9 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ import { LitElement, html, nothing } from 'lit'; import { LaunchBlogPreview } from './LaunchBlogPreview.js'; +/** @typedef {import('@rocket/engine').NodeOfPage} NodeOfPage */ + /** * @param {{ model: { publishDate: Date }}} a * @param {{ model: { publishDate: Date }}} b @@ -17,8 +20,11 @@ function sortByPublishDate(a, b) { } class BlogMenu { + /** @type {NodeOfPage | undefined} */ + currentNode = undefined; + /** - * @returns {TemplateResult | nothing} + * @returns {import('lit').TemplateResult | nothing} */ render() { if (!this.currentNode || !this.currentNode.children) { @@ -27,6 +33,7 @@ class BlogMenu { return html`
${this.currentNode.children + // @ts-ignore .sort(sortByPublishDate) .map( /** @param {NodeOfPage} child */ child => html` @@ -38,12 +45,21 @@ class BlogMenu { } } +// we do this for the sake of SSR - as there is no way yet to define them as sub-components (should be possible in the future via scoped registry) if (customElements.get('launch-blog-preview') === undefined) { customElements.define('launch-blog-preview', LaunchBlogPreview); } export class LaunchBlogOverview extends LitElement { + /** @type {import('@rocket/engine').PageTree | undefined} */ + pageTree = undefined; + + sourceRelativeFilePath = ''; + render() { - return html` ${this.pageTree.renderMenu(new BlogMenu(), this.sourceRelativeFilePath)} `; + if (!this.pageTree) { + return nothing; + } + return html`${this.pageTree.renderMenu(new BlogMenu(), this.sourceRelativeFilePath)}`; } } diff --git a/packages/launch/src/blog/LaunchBlogPreview.js b/packages/launch/src/blog/LaunchBlogPreview.js index 62251fa..2f6ebef 100644 --- a/packages/launch/src/blog/LaunchBlogPreview.js +++ b/packages/launch/src/blog/LaunchBlogPreview.js @@ -7,7 +7,7 @@ export class LaunchBlogPreview extends LitElement { constructor() { super(); - /** @type {{ publishDate: string; title: string; description: string; url: string; } | undefined} */ + /** @type {{ publishDate: Date; title: string; description: string; url: string; name: string; } | undefined} */ this.post = undefined; this.dateFormatter = new Intl.DateTimeFormat('en-US', { year: 'numeric', diff --git a/site/pages/10--docs/20--basics/40--components.rocket.md b/site/pages/10--docs/20--basics/40--components.rocket.md index 5420157..c40e622 100644 --- a/site/pages/10--docs/20--basics/40--components.rocket.md +++ b/site/pages/10--docs/20--basics/40--components.rocket.md @@ -233,7 +233,10 @@ export async function registerCustomElements() { // prettier-ignore customElements.define('inline-notification', await import('@rocket/components/components/InlineNotification').then(m => m.InlineNotification)); // hydrate-able components - customElements.define('my-counter', await import('#components/MyCounter').then(m => m.MyCounter)); + customElements.define( + 'my-counter', + await import('#src/components/MyCounter.js').then(m => m.MyCounter), + ); // client-only components // 'rocket-search': () => import('@rocket/search/web').then(m => m.RocketSearch), } diff --git a/site/pages/10--docs/20--basics/80--hydration.rocket.md b/site/pages/10--docs/20--basics/80--hydration.rocket.md index a70479a..a700f9f 100644 --- a/site/pages/10--docs/20--basics/80--hydration.rocket.md +++ b/site/pages/10--docs/20--basics/80--hydration.rocket.md @@ -21,7 +21,8 @@ export async function registerCustomElements() { customElements.define('rocket-search', await import('@rocket/search/search.js').then(m => m.RocketSearch)); // prettier-ignore customElements.define('rocket-drawer', await import('@rocket/components/drawer.js').then(m => m.RocketDrawer)); - customElements.define('my-counter', await import('#components/MyCounter').then(m => m.MyCounter)); + // prettier-ignore + customElements.define('my-counter', await import('#src/components/MyCounter.js').then(m => m.MyCounter)); } export const needsLoader = true; /* END - Rocket auto generated - do not touch */ diff --git a/site/pages/10--docs/30--guides/20--social-media.rocket.md b/site/pages/10--docs/30--guides/20--social-media.rocket.md index ef0f01f..ceab0da 100644 --- a/site/pages/10--docs/30--guides/20--social-media.rocket.md +++ b/site/pages/10--docs/30--guides/20--social-media.rocket.md @@ -258,7 +258,7 @@ To enable we create a file 👉 `opengraph.rocket.js` ```js -import { pageTree } from '#pageTree'; +import { pageTree } from '#src/layouts/layoutData.js'; export const menuExclude = true; @@ -315,7 +315,7 @@ export const layout = data => html` There is quite some much in there so let's go though the code. ```js -import { pageTree } from '#pageTree'; +import { pageTree } from '#src/layouts/layoutData.js'; ``` This imports an existing PageTree if you do not have one yet [you can create one](../20--basics/70--navigation.rocket.md). diff --git a/site/pages/10--docs/index.rocket.md b/site/pages/10--docs/index.rocket.md index 410e439..27db002 100644 --- a/site/pages/10--docs/index.rocket.md +++ b/site/pages/10--docs/index.rocket.md @@ -23,7 +23,7 @@ export async function registerCustomElements() { export const needsLoader = true; /* END - Rocket auto generated - do not touch */ -import { pageTree } from '../__shared/pageTree.js'; +import { pageTree } from '#src/layouts/layoutData.js'; import { ChildListMenu } from '@rocket/engine'; export const menuLinkText = 'Docs'; diff --git a/site/pages/20--presets/30--spark/20--demo.rocket.js b/site/pages/20--presets/30--spark/20--demo.rocket.js index b457dde..3e0c147 100644 --- a/site/pages/20--presets/30--spark/20--demo.rocket.js +++ b/site/pages/20--presets/30--spark/20--demo.rocket.js @@ -28,7 +28,7 @@ export const menuLinkText = 'Demo'; export const title = 'Rocket Landing Page Template (Theme Spark)'; import { LayoutHome } from '@rocket/spark'; -import { pageTree } from '#pageTree'; +import { pageTree } from '#src/layouts/layoutData.js'; export const layout = new LayoutHome({ pageTree, diff --git a/site/pages/20--presets/index.rocket.md b/site/pages/20--presets/index.rocket.md index 8d372d6..09dac89 100644 --- a/site/pages/20--presets/index.rocket.md +++ b/site/pages/20--presets/index.rocket.md @@ -23,7 +23,7 @@ export async function registerCustomElements() { export const needsLoader = true; /* END - Rocket auto generated - do not touch */ -import { pageTree } from '../__shared/pageTree.js'; +import { pageTree } from '#src/layouts/layoutData.js'; import { ChildListMenu } from '@rocket/engine'; ``` diff --git a/site/pages/30--tools/index.rocket.md b/site/pages/30--tools/index.rocket.md index 7b1fd79..521d4b2 100644 --- a/site/pages/30--tools/index.rocket.md +++ b/site/pages/30--tools/index.rocket.md @@ -23,7 +23,7 @@ export async function registerCustomElements() { export const needsLoader = true; /* END - Rocket auto generated - do not touch */ -import { pageTree } from '../__shared/pageTree.js'; +import { pageTree } from '#src/layouts/layoutData.js'; import { ChildListMenu } from '@rocket/engine'; ``` diff --git a/site/pages/40--blog/003--open-graph-images/index.rocket.md b/site/pages/40--blog/003--open-graph-images/index.rocket.md index 93d4a9e..ae3c08e 100644 --- a/site/pages/40--blog/003--open-graph-images/index.rocket.md +++ b/site/pages/40--blog/003--open-graph-images/index.rocket.md @@ -227,9 +227,9 @@ export const openGraphLayout = data => html` - +
- +

${data.subTitle || ''}

diff --git a/site/pages/40--blog/index.rocket.js b/site/pages/40--blog/index.rocket.js index 5cb5daa..b9a206c 100644 --- a/site/pages/40--blog/index.rocket.js +++ b/site/pages/40--blog/index.rocket.js @@ -26,7 +26,7 @@ export const needsLoader = true; /* END - Rocket auto generated - do not touch */ import { LayoutMain } from '@rocket/launch'; -import { layoutData } from '../../src/layouts/layoutData.js'; +import { layoutData } from '#src/layouts/layoutData.js'; export const menuLinkText = 'Blog'; export const layout = new LayoutMain({ diff --git a/site/pages/40--blog/recursive.data.js b/site/pages/40--blog/recursive.data.js index e4c29c5..2cd0f79 100644 --- a/site/pages/40--blog/recursive.data.js +++ b/site/pages/40--blog/recursive.data.js @@ -1,5 +1,5 @@ import { LayoutBlogPost } from '@rocket/launch'; -import { layoutData } from '../../src/layouts/layoutData.js'; +import { layoutData } from '#src/layouts/layoutData.js'; export const layout = new LayoutBlogPost({ ...layoutData, diff --git a/site/pages/__shared/footerMenu.js b/site/pages/__shared/footerMenu.js deleted file mode 100644 index 6cf0db6..0000000 --- a/site/pages/__shared/footerMenu.js +++ /dev/null @@ -1,49 +0,0 @@ -export const footerMenu = [ - { - name: 'Discover', - children: [ - { - text: 'Blog', - href: '/blog/', - }, - { - text: 'Help and Feedback', - href: 'https://github.com/modernweb-dev/rocket/issues', - }, - ], - }, - { - name: 'Follow', - children: [ - { - text: 'GitHub', - href: 'https://github.com/modernweb-dev/rocket', - }, - { - text: 'Twitter', - href: 'https://twitter.com/modern_web_dev', - }, - { - text: 'Slack', - href: 'https://join.slack.com/t/lit-and-friends/shared_invite/zt-llwznvsy-LZwT13R66gOgnrg12PUGqw', - }, - { - text: 'Discord', - href: 'https://discord.gg/sTdpM2rkKJ', - }, - ], - }, - { - name: 'Support', - children: [ - { - text: 'Sponsor', - href: 'https://opencollective.com/modern-web', - }, - { - text: 'Contribute', - href: 'https://github.com/modernweb-dev/rocket/blob/main/CONTRIBUTING.md', - }, - ], - }, -]; diff --git a/site/pages/__shared/pageTree.js b/site/pages/__shared/pageTree.js deleted file mode 100644 index 0db2fff..0000000 --- a/site/pages/__shared/pageTree.js +++ /dev/null @@ -1,4 +0,0 @@ -import { PageTree } from '@rocket/engine'; - -export const pageTree = new PageTree(); -await pageTree.restore(new URL('../pageTreeData.rocketGenerated.json', import.meta.url)); diff --git a/site/pages/__shared/search.js b/site/pages/__shared/search.js deleted file mode 100644 index 34fab45..0000000 --- a/site/pages/__shared/search.js +++ /dev/null @@ -1,10 +0,0 @@ -import { html } from 'lit'; - -export const search = html` - -`; diff --git a/site/pages/index.rocket.js b/site/pages/index.rocket.js index a90705a..50af36c 100644 --- a/site/pages/index.rocket.js +++ b/site/pages/index.rocket.js @@ -25,7 +25,7 @@ export const needsLoader = true; /* END - Rocket auto generated - do not touch */ import { LayoutHome } from '@rocket/launch'; -import { layoutData } from '../src/layouts/layoutData.js'; +import { layoutData } from '#src/layouts/layoutData.js'; export const description = 'Rocket enables everyone to code a website. Use an existing theme or create your own. Be fast by server rendering web components with little to no JavaScript.'; @@ -189,9 +189,9 @@ export const openGraphLayout = data => html` - +
- +

${data.subTitle || ''}

diff --git a/site/pages/opengraph.rocket.js b/site/pages/opengraph.rocket.js index 549c4e2..12df88d 100644 --- a/site/pages/opengraph.rocket.js +++ b/site/pages/opengraph.rocket.js @@ -11,7 +11,7 @@ export async function registerCustomElements() { } /* END - Rocket auto generated - do not touch */ -import { pageTree } from '#pageTree'; +import { pageTree } from '#src/layouts/layoutData.js'; export const menuExclude = true; diff --git a/site/pages/pageTreeData.rocketGenerated.json b/site/pages/pageTreeData.rocketGenerated.json index b32d37a..fdf5ffb 100644 --- a/site/pages/pageTreeData.rocketGenerated.json +++ b/site/pages/pageTreeData.rocketGenerated.json @@ -28,7 +28,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "description": "Rocket enables everyone to code a website. Use an existing theme or create your own. Be fast by server rendering web components with little to no JavaScript.", "needsLoader": true, @@ -71,7 +71,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true, "subTitle": "From zero to hero", @@ -106,7 +106,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "menuNoLink": true, "needsLoader": true, @@ -188,7 +188,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true, "subTitle": "Create your first Rocket site" @@ -245,7 +245,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -311,7 +311,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true } @@ -347,7 +347,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "menuNoLink": true, "needsLoader": true, @@ -394,7 +394,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "description": "Learn how to structure a project with Rocket.", "needsLoader": true @@ -471,7 +471,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "description": "An intro to Rocket pages, which is the actual website content.", "needsLoader": true @@ -523,7 +523,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -589,7 +589,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -640,7 +640,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -691,7 +691,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -777,7 +777,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -848,7 +848,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -929,7 +929,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -1005,7 +1005,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true } @@ -1041,7 +1041,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "menuNoLink": true, "needsLoader": true, @@ -1113,7 +1113,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "description": "It is important that links to your website stand out from the rest of the content on social media. Design an open graph template image directly in the browser and let Rocket handle the rest.", "needsLoader": true, @@ -1206,7 +1206,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -1252,7 +1252,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -1303,7 +1303,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -1344,7 +1344,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -1425,7 +1425,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -1471,7 +1471,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "description": "Enable a unique and consistent experience via Web Fonts. With the right loading strategy there will be no layout shift.", "needsLoader": true, @@ -1519,7 +1519,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -1560,7 +1560,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true } @@ -1605,7 +1605,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true, "children": [ @@ -1639,7 +1639,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "menuNoLink": true, "needsLoader": true, @@ -1681,7 +1681,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -1722,7 +1722,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -1768,7 +1768,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true } @@ -1804,7 +1804,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "menuNoLink": true, "needsLoader": true, @@ -1856,7 +1856,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -1912,7 +1912,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true } @@ -1948,7 +1948,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "menuNoLink": true, "needsLoader": true, @@ -1990,7 +1990,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -2024,7 +2024,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter", + "my-counter": "#src/components/MyCounter.js::MyCounter", "block-blue": "@rocket/spark/block-blue.js::BlockBlue", "block-features": "@rocket/spark/block-features.js::BlockFeatures" } @@ -2075,7 +2075,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true, "children": [ @@ -2109,7 +2109,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "menuNoLink": true, "needsLoader": true, @@ -2216,7 +2216,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true } @@ -2252,7 +2252,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "menuNoLink": true, "needsLoader": true, @@ -2354,7 +2354,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -2425,7 +2425,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true }, @@ -2466,7 +2466,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true } @@ -2502,7 +2502,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "menuNoLink": true, "needsLoader": true, @@ -2569,7 +2569,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true } @@ -2605,7 +2605,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "menuNoLink": true, "needsLoader": true, @@ -2677,7 +2677,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true } @@ -2715,7 +2715,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "needsLoader": true, "children": [ @@ -2834,7 +2834,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "description": "A tool that checks the validity of all your HTML links of your whole website.", "needsLoader": true, @@ -2891,7 +2891,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "description": "Let us take a look at Rocket which is sort of a nuxt/next equivalent but instead of vue/react it works best with web standards like custom elements, ES modules, template literals...", "needsLoader": true, @@ -2948,7 +2948,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "description": "When you want to share a link to your website on social media it is important to include an Open Graph image. This means that a nice preview image will be shown which will make the link more attractive to click on.", "needsLoader": true, @@ -3005,7 +3005,7 @@ "launch-blog-overview": "@rocket/launch/blog-overview.js::LaunchBlogOverview", "launch-blog-preview": "@rocket/launch/blog-preview.js::LaunchBlogPreview", "launch-blog-details": "@rocket/launch/blog-details.js::LaunchBlogDetails", - "my-counter": "#components/MyCounter::MyCounter" + "my-counter": "#src/components/MyCounter.js::MyCounter" }, "description": "Rocket improves the way it handles web components which means that it can maintain a list of available tag names and which means it can automatically injects imports as needed. Ultimately this enables progressive hydration of your web components.", "needsLoader": true, diff --git a/site/pages/recursive.data.js b/site/pages/recursive.data.js index 90417e2..57483a2 100644 --- a/site/pages/recursive.data.js +++ b/site/pages/recursive.data.js @@ -1,13 +1,12 @@ import { LayoutSidebar } from '@rocket/launch'; import { adjustPluginOptions } from 'plugins-manager'; import { mdjsSetupCode } from '@mdjs/core'; -import { pageTree } from './__shared/pageTree.js'; import { html } from 'lit'; import { rocketComponents } from '@rocket/components/components.js'; import { searchComponents } from '@rocket/search/components.js'; import htmlHeading from 'rehype-autolink-headings'; import { launchComponents } from '@rocket/launch/components.js'; -import { layoutData } from '../src/layouts/layoutData.js'; +import { layoutData, pageTree } from '#src/layouts/layoutData.js'; export { html }; @@ -67,7 +66,7 @@ export const components = { ...rocketComponents, ...searchComponents, ...launchComponents, - 'my-counter': '#components/MyCounter::MyCounter', + 'my-counter': '#src/components/MyCounter.js::MyCounter', }; export const openGraphLayout = data => html` @@ -158,10 +157,10 @@ export const openGraphLayout = data => html`

${data.subTitle || ''}

powered by - +
- +
diff --git a/site/pages/sitemap.xml.rocket.js b/site/pages/sitemap.xml.rocket.js index 8839a43..1c84221 100644 --- a/site/pages/sitemap.xml.rocket.js +++ b/site/pages/sitemap.xml.rocket.js @@ -6,7 +6,7 @@ export { html, setupUnifiedPlugins, components, openGraphLayout }; import { LayoutSitemap } from '@rocket/engine'; -import { pageTree } from './__shared/pageTree.js'; +import { pageTree } from '#src/layouts/layoutData.js'; import rocketConfig from '../../config/rocket.config.js'; export const layout = new LayoutSitemap({