Compare commits

..

351 Commits

Author SHA1 Message Date
github-actions[bot]
8b48fb9760 Version Packages 2022-08-20 20:25:47 +02:00
Thomas Allmer
39206a1738 feat(cli): start writes to _site-dev and only clears that folder 2022-08-20 20:23:22 +02:00
Thomas Allmer
cbfb0f91e2 feat(cli): add "rocket preview" command to verify a production build 2022-08-20 20:23:22 +02:00
github-actions[bot]
58692147e9 Version Packages 2022-08-19 19:19:37 +02:00
Thomas Allmer
8dedc56afa feat(cli): add start message with local and network url 2022-08-19 19:15:01 +02:00
Thomas Allmer
bcbfae332d chore: docs update public folder is in site/public 2022-08-18 21:27:46 +02:00
Thomas Allmer
0fae0037d8 chore: set default file path to site/pages in getting started 2022-08-18 20:39:48 +02:00
Thomas Allmer
390335da18 fix(engine): reparse html if pageTree requests a second pass 2022-08-17 16:51:54 +02:00
Thomas Allmer
6d2f469d26 chore: nice open graph text for tools 2022-08-16 11:37:33 +02:00
“Nirmal
94a6f54585 docs: correct path of examples link. 2022-08-16 09:07:35 +02:00
github-actions[bot]
ff8b4c5cd5 Version Packages 2022-08-15 23:04:55 +02:00
Thomas Allmer
5122ea8639 chore: add docs & tests for link-text for headlines 2022-08-15 23:02:29 +02:00
Thomas Allmer
3032ba9b82 feat(engine): menus now support special characters in markdown headings 2022-08-15 23:02:29 +02:00
Thomas Allmer
93503ed309 feat(engine): HTML in headings will be ignored for the menu 2022-08-15 23:02:29 +02:00
George Raptis
77646abbee Fix documentation link 2022-08-15 14:54:42 +02:00
github-actions[bot]
9ae3966fef Version Packages 2022-08-14 22:51:30 +02:00
Thomas Allmer
09a47b43dc fix(engine): prevent fatal error because of simultaneous write to file 2022-08-14 22:48:10 +02:00
Thomas Allmer
42d794bdfc chore: remove drawer pkg & fix contribution link in README.md 2022-08-13 21:40:50 +02:00
github-actions[bot]
b8a1b45953 Version Packages 2022-08-13 18:36:55 +02:00
Thomas Allmer
379f08ff47 feat(engine): remove global dom shim workaround 2022-08-13 18:31:20 +02:00
github-actions[bot]
50bb68ab7f Version Packages 2022-08-13 15:41:11 +02:00
Thomas Allmer
250ca87a9d chore: prepare for release of @mdjs/core v0.20.0 2022-08-13 15:36:47 +02:00
Thomas Allmer
6f88d8ef6f feat: use rehype-prism-plus; get rid of workaround for rehype-prism 2022-08-13 15:36:47 +02:00
jorenbroekema
35ed64dca1 feat(@mdjs/core): move to ESM 2022-08-13 15:36:47 +02:00
github-actions[bot]
2555a8698d Version Packages 2022-08-12 22:50:36 +02:00
Thomas Allmer
367529c211 fix(engine): make sure inputDir public folder wins over plugins public folders 2022-08-12 22:48:16 +02:00
github-actions[bot]
ce3298d218 Version Packages 2022-08-11 18:24:03 +02:00
Thomas Allmer
a22da493dd fix(building-rollup): apply user provided developmentMode 2022-08-11 18:18:52 +02:00
Thomas Allmer
7a8f165625 chore: refresh lock file 2022-08-11 18:18:52 +02:00
Thomas Allmer
c8081071f7 chore: in readme use us images from main branch 2022-08-11 16:53:18 +02:00
Thomas Allmer
ab2436162c fix(mdjs-preview): add server folder to the published npm package 2022-08-11 16:53:18 +02:00
github-actions[bot]
b563967319 Version Packages 2022-08-11 16:42:24 +02:00
Thomas Allmer
c84d51207f Merge pull request #309 from modernweb-dev/next
feat: introduce @rocket/engine and use it
2022-08-11 16:39:32 +02:00
Thomas Allmer
5226ab0150 chore: prepare releases & move to main 2022-08-11 16:06:52 +02:00
Thomas Allmer
f9c8a20d19 Merge branch 'main' into next 2022-08-10 18:52:25 +02:00
Thomas Allmer
e02da22db0 chore: release components, engine, launch, spark 2022-08-08 22:53:56 +02:00
Thomas Allmer
b50be310c0 feat: restructure components & spark 2022-08-08 22:53:48 +02:00
Thomas Allmer
6b33e20c73 chore: add info about deployment on Github 2022-07-31 11:00:46 +02:00
Thomas Allmer
93a3089c7e fix(create): use relative file pathes in deployment generator 2022-07-31 10:20:14 +02:00
Thomas Allmer
b0630b5bfc chore: release engine, launchh, create, components 2022-07-30 17:16:31 +02:00
Thomas Allmer
545cd493da feat: add example for @rocket/launch 2022-07-30 17:16:31 +02:00
Thomas Allmer
6c949ee80d feat: prepare @rocket/launch release 2022-07-30 17:16:31 +02:00
Thomas Allmer
09cca4c486 feat(engine): support simple array, object and dates in PageTree 2022-07-30 17:16:31 +02:00
Thomas Allmer
dbeafbb7f6 chore: release @rocket/engine@0.1.0-alpha.25 2022-06-23 14:09:11 +02:00
Thomas Allmer
445daf67e3 fix(engine): if a component has an error be sure to always show it 2022-06-23 14:09:11 +02:00
Thomas Allmer
f06ea2117b fix(engine): escaping a ${ in a code fence block should not lead to an error 2022-06-23 14:09:11 +02:00
Thomas Allmer
252e4ea60e fix(engine): support nested recursive.data.js in data cascade 2022-06-23 14:09:11 +02:00
Thomas Allmer
22be8d52a0 chore: failing test simple page exports to pageTree 2022-06-23 14:09:11 +02:00
Thomas Allmer
aeb5ad2e99 fix(engine): do not inject imports if exists in md 2022-06-23 14:09:11 +02:00
Matsu
2bc4282efa feat(create): Generating github action to deploy to github pages (#366) 2022-06-09 22:13:36 +02:00
Thomas Allmer
873e6f325d chore: publish alpha versions 2022-05-30 21:36:09 +02:00
Thomas Allmer
d879480c0c chore: align exports strategy 2022-05-30 21:36:09 +02:00
Thomas Allmer
f2bc47bb40 chore: apply progressive hydration to page 2022-05-30 21:36:09 +02:00
Thomas Allmer
59fa80119f chore: change URLs to use next in main README.md 2022-05-09 19:48:44 +02:00
yinon
8c76c2d9d5 docs: fix typo in guides index 2022-05-09 07:55:36 +03:00
Thomas Allmer
a74b8b370a chore: add tweet thread for hydration 2022-05-03 19:54:25 +02:00
Thomas Allmer
bbe83b9923 chore: release create 2022-04-26 23:24:44 +02:00
Thomas Allmer
409bb2f1e4 chore: add hydration starter to create 2022-04-26 23:24:44 +02:00
Thomas Allmer
0f77a8b9d7 chore: release packages 2022-04-26 17:49:11 +02:00
Thomas Allmer
0226d08de6 feat: add progressive hydration support 2022-04-26 17:49:11 +02:00
github-actions[bot]
cb49251158 Version Packages 2022-04-24 21:47:53 +02:00
Thomas Allmer
d33400e12e chore: add tweets about open graph 2022-04-24 21:43:50 +02:00
Thijs Louisse
b3194556c2 chore: change get renderFunction() in renderStory(html, container, opts) 2022-04-24 21:42:55 +02:00
Thijs Louisse
7732541df4 chore: fix lint error RocketDrawer 2022-04-24 21:42:55 +02:00
Thijs Louisse
72ed8d274a chore: add /.history to .gitignore 2022-04-24 21:42:55 +02:00
Thijs Louisse
f4d83fe958 feat(mdjs-preview): provide overridable renderFunction 2022-04-24 21:42:55 +02:00
Andrico
af55e855c8 fix(engine): support for emojis in links via updating of sax-wasm (#351) 2022-04-11 20:28:12 +02:00
Thomas Allmer
0f6a42edaa chore: show rendering info in sanity starter 2022-04-04 18:19:17 +02:00
Thomas Allmer
43df19f4a7 chore(create): release 0.0.6 2022-04-04 18:11:26 +02:00
Jaydan Urwin
894a2fe56d feat: add sanity-minimal-starter 2022-04-04 18:05:49 +02:00
Andrico
0cb5ca7153 fix broken links 2022-04-04 09:31:06 +02:00
Thomas Allmer
d220d35609 feat: add search to page 2022-04-02 22:27:46 +02:00
Thomas Allmer
2d9eec2b15 chore: nicer description for some pages 2022-03-30 09:05:57 +02:00
Thomas Allmer
1089007ba2 chore: initial tweets 2022-03-30 09:05:57 +02:00
Thomas Allmer
19f31854f9 chore: releases 2022-03-28 23:15:21 +02:00
Thomas Allmer
cb105c5f1e fix: optimize font handling via local font with preload and optional display 2022-03-28 23:15:21 +02:00
Thomas Allmer
1968e2365d fix(cli): use puppeteer pkg so it works out of the box on netlify 2022-03-28 23:15:21 +02:00
Thomas Allmer
d2a6698587 chore: add open graph images to website 2022-03-28 23:15:21 +02:00
Thomas Allmer
5fe1e47687 fix(engine): while processing assets ignore other protocols like vscode:// 2022-03-28 23:15:21 +02:00
Thomas Allmer
3eea6e2bf9 feat(engine): completely exclude pages from the pageTree 2022-03-28 23:15:21 +02:00
Thomas Allmer
bf8764583d feat: generate open graph images 2022-03-28 23:15:21 +02:00
github-actions[bot]
4ac62106a2 Version Packages 2022-03-28 15:10:10 +02:00
Thomas Allmer
c2c9ecd39a feat(rocket-search): update lion dependencies 2022-03-28 15:08:25 +02:00
Thomas Allmer
1d75d0b62f chore(engine): release 0.1.0-alpha.21 2022-03-24 10:36:31 +01:00
Thomas Allmer
607b94bf4d fix(engine): relative links to other rocket files 2022-03-24 10:36:31 +01:00
Thomas Allmer
927566f2a5 chore(cli): release 0.20.0-alpha.15 2022-03-22 21:48:21 +01:00
Thomas Allmer
0c696f544a feat(cli): add upgrade command 2022-03-21 22:25:29 +01:00
Thomas Allmer
ec81c40dce chore: add octicon icon to headlines 2022-03-21 13:58:04 +01:00
Thomas Allmer
825e331ef5 chore: release engine a.20, spark a.2, components a.2, create 0.0.5 2022-03-21 12:18:02 +01:00
Thomas Allmer
f63c20d440 chore: add spark example 2022-03-21 12:18:02 +01:00
Thomas Allmer
fcf98bf984 fix(engine): consider dynamic imports for the dependency tree 2022-03-21 12:18:02 +01:00
Thomas Allmer
1941eddc8d chore: enable logging for minimal example 2022-03-21 12:18:02 +01:00
Thomas Allmer
5c802cc4d3 chore: use components export in blog example 2022-03-18 12:08:15 +01:00
Jaydan Urwin
81f989a1c6 chore: started styles and css guide (#324) 2022-03-17 00:25:19 +01:00
Thomas Allmer
4b1919c02d feat: automatic handling of web component imports 2022-03-16 23:37:16 +01:00
Thomas Allmer
55c8b3fcc3 chore(engine): release 0.1.0-alpha.18 2022-03-11 16:47:38 +01:00
Thomas Allmer
e1a1cf6cf9 chore: ci install playwright 2022-03-11 00:15:56 +01:00
Thomas Allmer
9536efc46a chore: ci use node 14 and prepare playwright 2022-03-11 00:06:00 +01:00
Thomas Allmer
a73e2dfe19 chore: update/align dev dependencies & lint/format 2022-03-10 23:57:05 +01:00
Thomas Allmer
4d0da40087 chore: release engine alpha 17 & cli alpha 14 2022-03-10 23:32:49 +01:00
Thomas Allmer
b00d17b491 chore: update fixed dependencies 2022-03-10 21:52:06 +01:00
Thomas Allmer
130a544d43 fix(engine): save exported boolean values into the pageTree 2022-03-10 21:11:28 +01:00
Thomas Allmer
528f6da180 chore: more copy text 2022-03-10 00:56:05 +01:00
Thomas Allmer
fa41908d0e chore: support for FF/Safari by loading needed polyfills 2022-03-10 00:19:29 +01:00
Thomas Allmer
e17671c448 feat: engine 2022-03-09 18:11:27 +01:00
github-actions[bot]
c009801164 Version Packages 2022-03-08 14:41:55 +01:00
Thomas Allmer
60310ab3dd fix: improve performance by loading sax-wasm only once 2022-03-08 14:37:31 +01:00
github-actions[bot]
db03f69210 Version Packages 2022-03-07 19:27:03 +01:00
Thomas Allmer
e6c3d274cf feat(mdjs-core): support js client as an alias to js script 2022-03-07 19:19:24 +01:00
github-actions[bot]
f9014c15a6 Version Packages 2022-03-07 18:42:20 +01:00
Thomas Allmer
7e277cd88f feat(plugins-manager): support a wrapPlugin property for adding 2022-03-07 18:35:41 +01:00
Thomas Allmer
bc6106381c chore: lock file maintainance 2022-03-06 21:05:23 +01:00
dependabot[bot]
00bf3882f6 chore(deps-dev): bump node-fetch from 2.6.1 to 2.6.7
Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.1 to 2.6.7.
- [Release notes](https://github.com/node-fetch/node-fetch/releases)
- [Commits](https://github.com/node-fetch/node-fetch/compare/v2.6.1...v2.6.7)

---
updated-dependencies:
- dependency-name: node-fetch
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-06 20:51:33 +01:00
dependabot[bot]
543e297c5b chore(deps): bump pathval from 1.1.0 to 1.1.1
Bumps [pathval](https://github.com/chaijs/pathval) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/chaijs/pathval/releases)
- [Changelog](https://github.com/chaijs/pathval/blob/master/CHANGELOG.md)
- [Commits](https://github.com/chaijs/pathval/compare/v1.1.0...v1.1.1)

---
updated-dependencies:
- dependency-name: pathval
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-06 20:50:48 +01:00
dependabot[bot]
70b0ce8e1c chore(deps): bump simple-get from 3.1.0 to 3.1.1
Bumps [simple-get](https://github.com/feross/simple-get) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/feross/simple-get/releases)
- [Commits](https://github.com/feross/simple-get/compare/v3.1.0...v3.1.1)

---
updated-dependencies:
- dependency-name: simple-get
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-06 20:50:31 +01:00
github-actions[bot]
9f8785a885 Version Packages 2022-03-06 20:46:44 +01:00
Thomas Allmer
62637a829e chore: add changeset 2022-03-06 20:44:17 +01:00
Westbrook Johnson
81c4d7bf3c Use a more recently published prism converter for rehype 2022-03-06 20:44:17 +01:00
github-actions[bot]
08181194e2 Version Packages 2022-01-31 13:45:06 +01:00
Thomas Allmer
97cb38ccb8 fix(mdjs-core): add missing slash dependency 2022-01-31 13:43:36 +01:00
github-actions[bot]
26d3de1444 Version Packages 2022-01-30 11:48:03 +01:00
Thomas Allmer
1f141058c1 fix(drawer): add export map with /define side effect import 2022-01-30 11:45:47 +01:00
github-actions[bot]
08574c9b31 Version Packages 2022-01-05 09:34:58 +01:00
gvangeest
e81b77f236 fix(mdjs-preview): separate preview and viewer theme styling 2022-01-03 18:36:09 +01:00
qa46hx
456b8e78f0 fix(mdjs-preview): add css variable to border-color of viewer 2021-12-05 13:30:28 +01:00
github-actions[bot]
0d7ea015af Version Packages 2021-11-16 18:48:20 +01:00
Thomas Allmer
445b02872f fix: update to latest lit, @open-wc, @lion packages 2021-11-16 17:07:53 +01:00
Thomas Allmer
1a599db3ed chore: lock file maintainance 2021-11-16 08:05:37 +01:00
Thomas Allmer
6b6bed5391 chore: update remark-html 2021-11-16 08:05:37 +01:00
github-actions[bot]
30eb822151 Version Packages 2021-11-11 10:11:42 +01:00
Thomas Allmer
15a82c0e4d fix: improve mdjs preview iframe security 2021-11-11 10:05:51 +01:00
github-actions[bot]
0197bee621 Version Packages 2021-10-15 19:25:11 +02:00
Thomas Allmer
5c6b9c91eb feat(mdjs-preview): Move platform and sizes settings above preview 2021-10-15 12:33:30 +02:00
Thomas Allmer
6221e5f9ea feat: mdjs support for story-code blocks 2021-10-15 12:33:30 +02:00
Jorge del Casar
06741ed729 chore: update playwright 2021-10-11 19:23:33 +02:00
Thomas Allmer
23c164c822 chore: reduce test output noise 2021-10-03 22:06:22 +02:00
github-actions[bot]
c2a76c3f53 Version Packages 2021-10-03 17:15:38 +02:00
Thomas Allmer
70bb7a128e feat: update all packages to use new plugins-manager api 2021-10-03 17:10:18 +02:00
Thomas Allmer
3c342473d7 feat(plugin-manager): new type safe API
Co-authored-by: Benny Powers <web@bennypowers.com>
2021-10-03 17:10:18 +02:00
Thomas Allmer
9e0579ab19 chore: version linting considering valid semver 2021-09-13 15:22:52 +02:00
Thomas Allmer
de202da0a5 chore: reenable all tests 2021-09-13 15:22:52 +02:00
github-actions[bot]
509a8d9115 Version Packages 2021-09-13 13:33:26 +02:00
Mathieu Puech
42418f2c00 fix: disable service worker for local development 2021-09-13 13:29:05 +02:00
Benny Powers
cadd8588b0 fix(blog): conditionally apply blog overview styles 2021-09-13 12:36:51 +02:00
Benny Powers
aabe011427 Update 30-articles.njk 2021-09-13 12:36:51 +02:00
qa46hx
e1089c5701 fix(blog): add title to blog page 2021-09-13 12:36:38 +02:00
Benny Powers
9f10386eb2 fix: hide 404 page from sitemap.xml 2021-08-10 23:57:52 +02:00
qa46hx
0987a41620 fix(mdjs-viewer): fix styling mdjs-viewer 2021-08-10 23:55:09 +02:00
Thomas Allmer
7301a0f354 feat(cli): enable conditional eleventy config 2021-08-01 16:49:20 +02:00
Thomas Allmer
5ac6aa6693 fix(cli): set the encoding of the simulator to utf8 2021-07-27 21:03:51 +02:00
github-actions[bot]
9f1633cccc Version Packages 2021-07-27 12:54:55 +02:00
Thijs Louisse
00f4a91550 fix(blog): alignment + spacings for article grids 2021-07-27 12:51:30 +02:00
Jorge del Casar
eb62dd9fd5 fix: use semver to lint versions 2021-07-21 20:42:22 +02:00
github-actions[bot]
bb07267289 Version Packages 2021-07-21 16:36:44 +02:00
Thomas Allmer
738941afdd feat(cli): add rollup config function to rocket config 2021-07-21 15:57:31 +02:00
github-actions[bot]
ef086c7aa3 Version Packages 2021-07-19 19:32:13 +02:00
Thijs Louisse
3d22fbb72e fix: make markdown css not conflict with lion components 2021-07-19 16:23:52 +02:00
Jorge del Casar
adf0f1d88f fix(cli): use openEnd to insert responsive image 2021-07-19 15:23:00 +02:00
Benny Powers
4145031162 docs: update code-tabs 2021-07-18 14:57:10 +03:00
Benny Powers
ac58953527 docs: nicer dark mode 2021-07-15 09:34:36 +02:00
Benny Powers
7dc3e0f9b0 docs: dark mode 2021-07-15 09:34:36 +02:00
Benny Powers
305a657ff5 docs: generated manifests 2021-07-15 09:34:36 +02:00
Thomas Allmer
8585e2ad66 chore: add open in vs code to readme 2021-07-15 08:56:18 +02:00
github-actions[bot]
4585675b00 Version Packages 2021-07-13 19:45:32 +02:00
Jorge del Casar
39f4fa7050 chore: update dependencies 2021-07-13 19:24:26 +02:00
github-actions[bot]
ccdd4d077e Version Packages 2021-07-11 17:02:49 +03:00
Benny Powers
a5661b85c2 chore: update dependencies 2021-07-11 17:01:27 +03:00
github-actions[bot]
99b12c7c9e Version Packages 2021-07-11 16:03:49 +03:00
Benny Powers
61bb700c3e fix(plugins-manager): dist types 2021-07-11 16:00:10 +03:00
github-actions[bot]
aa93c2ad89 Version Packages 2021-07-11 14:57:17 +03:00
Benny Powers
8e9c0a3106 chore: prettier 2021-07-11 14:48:06 +03:00
Benny Powers
1c68a95c3c docs: generated READMEs 2021-07-11 14:48:06 +03:00
Benny Powers
c1876da2ff docs: improve guides 2021-07-11 14:48:06 +03:00
Thomas Allmer
3dde0ab096 chore: fix link on launch preset page 2021-07-11 14:48:06 +03:00
Benny Powers
09caa4bcef docs: improve guides 2021-07-11 14:48:06 +03:00
Benny Powers
ddc89e05bb fix(cli): fix setup array types 2021-07-11 14:48:06 +03:00
Benny Powers
7e70d8a327 fix(cli): improve types 2021-07-11 14:48:06 +03:00
Benny Powers
fc8b3a2944 feat(plugins-manager): further improve types 2021-07-11 14:48:06 +03:00
Benny Powers
ee20047305 fix(launch): add inline notification styles for noscript users 2021-07-11 14:48:06 +03:00
Benny Powers
48dcdd7d6d fix(search): hide search for noscript 2021-07-11 14:48:06 +03:00
Benny Powers
03e15051be docs: fix for noscript parser bug 2021-07-11 14:48:06 +03:00
Benny Powers
312d5bec81 docs: style code tabs and markdown tables 2021-07-11 14:48:06 +03:00
Benny Powers
e31e8be75b docs: improve docs for presets 2021-07-11 14:48:06 +03:00
Benny Powers
9978ea7eda fix: improve typings for plugins-manager 2021-07-11 14:48:06 +03:00
Benny Powers
d91e46b867 feat: bootstrap command
also adds code tabs and updates documentation
2021-07-11 14:48:06 +03:00
Benny Powers
174217180b chore: update deps 2021-07-11 14:48:06 +03:00
Konnor Rogers
f6aa1872c2 docs: tiny typo! 2021-07-08 10:24:11 +03:00
Abdón Rodríguez Davila
f5a6cbfb97 Fix inline-notification script import 2021-07-07 18:07:56 +03:00
github-actions[bot]
989758ce03 Version Packages 2021-07-07 15:33:15 +02:00
Thomas Allmer
fbcedde7a0 fix(mdjs-preview): use a scoped registry for the internal accordion element 2021-07-07 15:14:32 +02:00
github-actions[bot]
d72427d889 Version Packages 2021-07-06 12:34:03 +02:00
Jorge del Casar
b7d5cbacf3 fix(launch): remove footer extra comma
Close #197
2021-07-06 11:44:13 +02:00
Benny Powers
8d8c756607 Merge pull request #198 from danihuge/patch-5
Fix typos
2021-07-05 14:01:09 +03:00
Dani Garcia
3750c4e7a2 Fix typos 2021-07-05 12:59:25 +02:00
Benny Powers
5c3eda35a9 Merge pull request #191 from modernweb-dev/changeset-release/main
Version Packages
2021-07-04 22:57:22 +03:00
github-actions[bot]
6910d50bf5 Version Packages 2021-07-04 19:47:35 +00:00
Dani Garcia
a2dc8656db chore: improve wording in getting-started.md (#196) 2021-07-04 21:46:26 +02:00
Benny Powers
e778cd8a3c Update 30-collection-header.njk
fixes #189
2021-07-04 21:45:21 +02:00
Thomas Allmer
9e3c2f52d9 fix(launch): create help & feedback link only if site.helpUrl is defined 2021-07-04 18:21:19 +02:00
Thomas Allmer
579e8e72a2 fix(cli): Unordered joiningBlocks should generally end up at the end 2021-07-04 16:50:11 +02:00
Thomas Allmer
06ae8693b2 docs: add info that a server needs to handle the 404.html file 2021-07-04 16:50:07 +02:00
Thomas Allmer
cee2b7b04c fix(launch): fix font variables 2021-07-04 16:49:40 +02:00
Thomas Allmer
9625b94d39 fix(launch): remove footer urls that require user creation 2021-07-04 16:48:44 +02:00
Benny Powers
1f79d7a047 feat(launch): move font-family to variables 2021-07-04 12:00:31 +02:00
Benny Powers
bf99541951 fix(cli): copy all static assets on build 2021-07-04 12:00:14 +02:00
github-actions[bot]
8df9a3e9c3 Version Packages 2021-07-02 13:42:36 +02:00
Benny Powers
1b9559f2a5 feat(cli): add async before11ty hook (#183) 2021-07-02 11:58:54 +02:00
github-actions[bot]
8eede4b16b Version Packages 2021-06-30 15:24:07 +02:00
Thomas Allmer
2294ccf4a2 chore: only release patch versions 2021-06-30 15:20:51 +02:00
Benny Powers
3b1a0cf26a feat(cli): expose checkLinks options 2021-06-30 15:18:36 +02:00
Benny Powers
cf442215a9 feat: add slack invite 2021-06-30 15:02:33 +02:00
Thomas Allmer
41049f3908 chore: fix launch tests 2021-06-30 14:36:54 +02:00
Thomas Allmer
2b5c61d19c feat: no responsive images for svgs & option to define ignores 2021-06-30 14:36:54 +02:00
Jorge del Casar
f5d349e256 feat(launch): load used fonts from google fonts 2021-06-28 21:00:13 +02:00
Jorge del Casar
ce0b00e7a1 fix(cli): don't transform external images
Fix #141
2021-06-28 20:59:28 +02:00
github-actions[bot]
83286a99de Version Packages 2021-06-22 18:42:00 +02:00
Thijs Louisse
6cabdba5f6 feat(rocket): upgrade to lit2 2021-06-22 18:27:19 +02:00
github-actions[bot]
f5f2d69d0c Version Packages 2021-06-22 15:00:26 +02:00
Thomas Allmer
795a3613af fix(cli): service worker url respects pathPrefix 2021-06-22 14:57:52 +02:00
github-actions[bot]
bcf8f4fe83 Version Packages 2021-06-21 16:25:40 +02:00
Thomas Allmer
5330740cb3 fix(cli): replace images to be responsive from the bottom up 2021-06-21 16:20:48 +02:00
Thomas Allmer
2edd61beaa chore: remove image hashes from tests 2021-06-21 15:56:41 +02:00
github-actions[bot]
2a5fc08f35 Version Packages 2021-06-21 14:37:07 +02:00
Thomas Allmer
43a7ca10c3 fix(cli): responsive images need to respect pathPrefix 2021-06-21 14:35:51 +02:00
github-actions[bot]
da39fa72f3 Version Packages 2021-06-16 09:08:08 +02:00
Thomas Allmer
a0e8edfbb9 fix(check-html-links): ignore not http schema urls 2021-06-16 09:04:05 +02:00
Thomas Allmer
50434293bb fix(check-html-links): ignore tel links 2021-06-16 09:04:05 +02:00
Thomas Allmer
f08f92615b fix(check-html-links): add missing slash dependency 2021-06-16 09:04:05 +02:00
Thomas Allmer
1949b1e1cb fix(check-html-links): ignore html encoded mailto links 2021-06-16 09:04:05 +02:00
github-actions[bot]
340bf8e653 Version Packages 2021-06-11 17:56:06 +02:00
Thomas Allmer
eae200708d feat: update to mdjs version with lit 2 and render to light dom 2021-06-11 17:52:15 +02:00
github-actions[bot]
f707f636fa Version Packages 2021-06-11 13:15:48 +02:00
Thomas Allmer
814b5d29ad feat: render mdjs stories to light dom 2021-06-11 13:03:24 +02:00
Thomas Allmer
e1e96acceb feat: update mdjs to lit 2021-06-11 13:03:24 +02:00
github-actions[bot]
7543a129cf Version Packages 2021-06-08 22:28:18 +02:00
Thomas Allmer
60e85a17a7 fix: support picture tags with <source srset="..."> 2021-06-08 08:56:43 +02:00
github-actions[bot]
fd8f97859a Version Packages 2021-05-30 15:30:38 +02:00
Thomas Allmer
56fdb0cbd4 fix(plugins-manager): fix types for optional parameters 2021-05-30 15:27:44 +02:00
github-actions[bot]
e6d9c74510 Version Packages 2021-05-28 09:13:38 +02:00
Maarten Stolte
c338696482 chore: add changeset 2021-05-28 09:10:47 +02:00
Maarten Stolte
2ff4b4c542 chore: updated yarn.lock 2021-05-28 09:10:47 +02:00
Maarten Stolte
ba64b45ebf fix: update puppeteer to support M1 2021-05-28 09:10:47 +02:00
Maarten Stolte
e437e02cb9 fix(cli): Update eleventy-img to get M1 support 2021-05-28 09:10:47 +02:00
Thomas Allmer
ce9b12edd4 fix(mdjs-core): support importing via es module 2021-05-28 09:05:25 +02:00
github-actions[bot]
d034f799c0 Version Packages 2021-05-17 21:56:56 +02:00
Thomas Allmer
8bba4a88c8 feat: support for generating responsive images 2021-05-17 21:52:02 +02:00
github-actions[bot]
c7261aa2b0 Version Packages 2021-05-04 21:26:53 +02:00
Thomas Allmer
690075d335 chore: fix typo on service worker page 2021-05-04 07:19:47 +02:00
Thomas Allmer
2724f073fc feat: adopt a service worker flow with more control 2021-05-04 06:55:33 +02:00
github-actions[bot]
d08692c7f3 Version Packages 2021-04-29 12:35:04 +02:00
Thomas Allmer
2b7f1ee719 fix: support pathprefix in cli, launch, mdjs, search 2021-04-29 12:30:47 +02:00
github-actions[bot]
3802778be4 Version Packages 2021-04-29 08:30:57 +02:00
Thomas Allmer
26f4a1ebff chore: align versions 2021-04-29 00:35:26 +02:00
Thomas Allmer
81edf45fe2 fix: drastically reduce the amount of js files in build output 2021-04-29 00:35:26 +02:00
github-actions[bot]
c5a1d7e8d1 Version Packages 2021-04-24 17:12:15 +02:00
Thomas Allmer
74dd8d1bcc fix(mdjs-preview): autoheight will not grow bigger than the current size height 2021-04-24 17:05:20 +02:00
Thomas Allmer
72f631ac86 chore: add releases 2021-04-23 13:06:44 +02:00
Thomas Allmer
fafb99b0fa feat(mdjs-preview): add a copy code button 2021-04-23 13:06:44 +02:00
Thomas Allmer
f5769b9aa9 fix(mdjs-preview): improve customization capabilities 2021-04-23 13:06:44 +02:00
Konstantinos Norgias
12d9cc3b44 fix: configure simulator themes & platforms 2021-04-23 11:37:34 +02:00
Konstantinos Norgias
ef9b373aa1 style: add color theming with css custom props 2021-04-23 11:37:34 +02:00
Konstantinos Norgias
560234d663 fix: default no render empty themes and platforms 2021-04-23 11:37:34 +02:00
Konstantinos Norgias
024514e901 style: add simulator css vars 2021-04-23 11:37:34 +02:00
Mathieu Puech
66c2d781e6 fix: windows path issue when using rocket lint 2021-04-23 11:18:53 +02:00
github-actions[bot]
14721d1e0f Version Packages 2021-04-20 12:58:41 +02:00
Thomas Allmer
0f6709ac4b fix(mdjs-preview): initial setting should come from the element 2021-04-20 12:55:32 +02:00
Thomas Allmer
ed86ff2346 fix(cli): do not set data-localize-lang in the simulator iframe html tag 2021-04-20 12:55:32 +02:00
Mathieu Puech
c675820163 fix: windows path issue avoid filtering of index section of collections 2021-04-20 12:28:19 +02:00
Konstantinos Norgias
f4a0ab559f fix: add changeset & update drawer 2021-04-20 12:27:12 +02:00
Konstantinos Norgias
a8cdaebab1 fix(simulator): document shadowRoot n/a in iframe 2021-04-20 12:27:12 +02:00
github-actions[bot]
22393dd172 Version Packages 2021-04-20 06:50:18 +02:00
Thomas Allmer
a6fdb31f1e fix(mdjs-preview): do not restory empty values 2021-04-19 23:55:52 +02:00
Thomas Allmer
dd15d4fc65 chore: fix tests 2021-04-19 23:55:52 +02:00
Thomas Allmer
edb1abf82b feat(mdjs-preview): rework preview and add a simulation mode 2021-04-19 23:55:52 +02:00
Thomas Allmer
0b6411661e chore: update lion dependencies for drawer and search 2021-04-19 23:55:52 +02:00
Thomas Allmer
604a80e6cb feat(mdjs-story): force /define entrypoint 2021-04-19 23:55:52 +02:00
Thomas Allmer
fe6a929f1e feat(mdjs-core): keep the original code block and wrap it for preview story 2021-04-19 23:55:52 +02:00
Thomas Allmer
2267e728cf feat(eleventy-plugin-mdjs-unified): write mdjs javascript to file instead of inline 2021-04-19 23:55:52 +02:00
Thomas Allmer
abc8a02b72 fix(cli): supporting an absolute path for the rootDir 2021-04-19 23:55:52 +02:00
Thomas Allmer
2270887faf chore: format package.json 2021-04-19 23:55:52 +02:00
Thomas Allmer
bad4686506 feat(building-rollup): preserve export names & attributes on script tags, 2021-04-19 23:55:52 +02:00
Thomas Allmer
818caad7cb Create chilled-turkeys-help.md 2021-04-04 18:01:06 +02:00
Konstantinos Norgias
672b7e893e chore: generalize label & add alt when no img 2021-04-04 18:01:06 +02:00
Thomas Allmer
a8e66d84f4 feat(mdjs-core): extract mdjsSetupCode function which support a highlightCode fn 2021-04-04 18:00:26 +02:00
github-actions[bot]
e9090d64b9 Version Packages 2021-04-01 20:01:47 +02:00
Benny Powers
728a205b7b chore: add changeset 2021-04-01 19:44:43 +02:00
Benny Powers
67ba29d45a feat(navigation): add no-redirects attribute
By default, the sidebar nav redirects clicks on category headings to
their first child.

To disable those redirects, override
`_includes/_joiningBlocks/_layoutSidebar/sidebar/20-navigation.njk`
and add the `no-redirects` attribute to the `<rocket-navigation>`
element.
2021-04-01 19:44:43 +02:00
github-actions[bot]
758caffdf9 Version Packages 2021-03-25 07:14:15 +01:00
qa46hx
302227e8a9 feat(search): add variable for border-radius of SearchCombobox 2021-03-24 23:20:56 +01:00
Thomas Allmer
04a31220fb chore: align versions across the mono repo 2021-03-15 21:03:07 +01:00
Benny Powers
d44a23af0c Merge pull request #83 from modernweb-dev/changeset-release/main
Version Packages
2021-03-07 10:14:39 +02:00
github-actions[bot]
18a79589c2 Version Packages 2021-03-06 19:28:35 +00:00
Thomas Allmer
b7727b0e10 chore: add rocket nav upgrade to cli 2021-03-06 20:26:44 +01:00
Thomas Allmer
5edc40fed5 feat(cli): make sure each instance has its own eleventy config 2021-03-06 19:58:09 +01:00
Amin Yahyaabadi
be0d0b3ca1 fix: add missing main entry to the packages (#81)
This allows the tools to work properly. For example, eslint-plugin-import, TypeScript LSP hyperclick, and many other tools rely on main.
2021-03-06 19:10:49 +01:00
Thomas Allmer
ef8ebb0098 feat(eleventy-rocket-nav): support dynamically created content 2021-03-06 19:05:00 +01:00
djlauk
2fa61e1377 chore: tiny fixes to the README (#74) 2021-02-23 21:45:41 +01:00
Matsuuu
b23e37f38e feat(search): Precache search results to service worker 2021-02-23 21:44:53 +01:00
Matsuuu
cf45e32702 feat(search): Add ellipsis as prefix when truncating 2021-02-23 21:44:53 +01:00
Matsuuu
b5965c6c37 feat(search): Set cursor to pointer on result hover 2021-02-23 21:44:53 +01:00
Matsuuu
e39cc45d23 fix(search): Center search icon 2021-02-23 21:44:53 +01:00
Matsuuu
f0434cb12c feat(search): Add feedback when no results found 2021-02-23 21:44:53 +01:00
Matsuuu
c87caaed2d feat: Allow overlay query modification in Drawer (#73) 2021-02-23 21:31:12 +01:00
Thomas Allmer
04af7ecf53 chore: align dependency versions 2021-02-23 20:39:37 +01:00
github-actions[bot]
98d6aad12a Version Packages 2021-02-05 13:30:10 +01:00
Thomas Allmer
ee6b404aaa fix: mdjs element pass on shadowRoot to story function 2021-02-05 13:26:42 +01:00
Thomas Allmer
8ba8939c67 chore: use test-helper everywhere 2021-02-04 20:48:08 +01:00
Thomas Allmer
8e095b792e fix(cli): watching user preset files to trigger updates automatically 2021-02-04 19:56:56 +01:00
github-actions[bot]
b58ac27658 Version Packages 2021-02-04 09:51:19 +01:00
Thomas Allmer
f44a0f4fd4 fix(cli): rewrite dynamic imports with "`" 2021-02-04 09:45:35 +01:00
Thomas Allmer
750418bb51 fix: use class node api of check-html-links in rocket 2021-02-03 23:17:29 +01:00
Guillaume Grossetie
bc2698c1ba resolves #54 introduce a ignoreLinkPatterns option 2021-02-03 20:43:02 +01:00
Thomas Allmer
74f7ddf478 fix: create social media images only during build 2021-02-03 20:39:16 +01:00
github-actions[bot]
b5fa7ad9af Version Packages 2021-02-01 19:59:49 +01:00
Jorge del Casar
e3abdd956a chore: rename meta plugin to joiningBlocks 2021-02-01 13:20:02 +01:00
Thomas Allmer
8bdc326e38 chore: add changeset and docs 2021-02-01 13:20:02 +01:00
Thomas Allmer
806fcc0556 chore: go back to inline scripts for now 2021-02-01 13:20:02 +01:00
Thomas Allmer
e7d7945259 feat: default layout for index files with open menu button 2021-02-01 13:20:02 +01:00
Thomas Allmer
502347aa8d chore: remove previous/next link for now 2021-02-01 13:20:02 +01:00
Thomas Allmer
26b558c118 fix: mobile navigation 2021-02-01 13:20:02 +01:00
Thomas Allmer
8eec69f918 feat: big refactor to introduce _joiningBlocks 2021-02-01 13:20:02 +01:00
Thomas Allmer
078cff26fe fix(cli): template merge order by numbers, add tests, docs 2021-02-01 13:20:02 +01:00
Jorge del Casar
8896c0655b feat: dynamic partial includes 2021-02-01 13:20:02 +01:00
Stephen Wade
43ef209bad chore: Docs updates (#53)
* chore: fix Eleventy spelling
* chore: misc CONTRIBUTING.md updates
* chore: fix GitHub capitalization
* chore: fix HTML capitalization
* chore: fix JavaScript capitalization
* chore: misc README.md updates
* chore: update slack.md to match modernweb-dev/web
* chore: misc docs/about updates
* chore: misc docs/blog updates
* chore: misc docs/docs updates
* chore: fix mdjs capitalization
* chore: fix Markdown capitalization
* chore: fix Rocket capitalization
* chore: fix apostrophes
* chore: fix TypeScript capitalization
* chore: consistently capitalize headings
* chore: misc docs/guides updates
* chore: misc packages/building-rollup updates
* chore: misc packages/check-html-links updates
* chore: misc packages/cli updates
* chore: misc packages/plugins-manager updates
* chore: misc packages/search updates
* chore: fix tests
* chore: fix lints
2021-01-31 11:00:53 +01:00
github-actions[bot]
f2a4b80f1e Version Packages 2021-01-28 09:10:39 +01:00
Thomas Allmer
f343c5030a fix(check-html-links): read and parse with the same increased highWaterMark 2021-01-28 09:02:56 +01:00
Thomas Allmer
a7b0dbbce0 chore: add blog introducing check-html-links 2021-01-27 19:58:49 +01:00
Jorge del Casar
eeb51c830c chore: build packages on setup 2021-01-25 16:08:57 +01:00
github-actions[bot]
b968badf43 Version Packages 2021-01-21 19:54:12 +01:00
Thomas Allmer
c92769a145 fix(cli): processing of links/assets urls needs to be utf8 safe 2021-01-21 19:48:23 +01:00
Thomas Allmer
562e91fc43 fix(cli): make sure there is no <?xml in the logo code 2021-01-21 16:46:39 +01:00
github-actions[bot]
ffd06fcee9 Version Packages 2021-01-21 01:17:19 +01:00
Thomas Allmer
0eb507d7ef feat: add api for social media images 2021-01-21 01:12:22 +01:00
github-actions[bot]
45cd7206f1 Version Packages 2021-01-20 16:38:31 +01:00
Thomas Allmer
eb74110dd8 Create good-mice-act.md 2021-01-19 23:13:16 +01:00
Julien Lengrand-Lambert
517c7780ab feat: Add some extra info when running html-links
* Add number of files checked
* Add number of links checked
2021-01-19 23:13:16 +01:00
Thomas Allmer
e4852db673 chore: add docs on how to create your own preset 2021-01-19 12:45:31 +01:00
github-actions[bot]
c6c564ede2 Version Packages 2021-01-18 12:14:13 +01:00
Thomas Allmer
a498a5da44 fix(cli): *index.md should not be treated as folder index files 2021-01-18 12:11:46 +01:00
github-actions[bot]
eb6a23dc6a Version Packages 2021-01-17 19:40:29 +01:00
Thomas Allmer
23027bb684 chore: adjust launch release message 2021-01-17 19:20:50 +01:00
Thomas Allmer
cd22231806 chore: adjustments for the restructured CLI Plugin System 2021-01-17 19:09:27 +01:00
Thomas Allmer
b1f61c7759 feat(cli): restructure CLI plugin system - add rocket lint 2021-01-17 19:09:27 +01:00
Thomas Allmer
741f695106 feat: new package check-html-links 2021-01-17 19:09:27 +01:00
github-actions[bot]
156719f977 Version Packages 2021-01-13 14:21:53 +01:00
Thomas Allmer
295cfbdbd8 chore: better support for windows 2021-01-13 14:16:36 +01:00
Thomas Allmer
7dd6f4c64f fix(launch): default logo should not break social images 2021-01-13 14:16:36 +01:00
Thomas Allmer
b68923b608 fix(mdjs-core): use gfm to support markdown tables 2021-01-13 14:16:36 +01:00
Benny Powers
86c3a4b0e8 feat(launch): themability for inline-notification 2021-01-13 13:48:37 +01:00
Benny Powers
897892d6f9 chore: update dependencies
chore: patch typescript error in @lion/overlays

chore: changeset for deps
2021-01-13 13:40:25 +01:00
Benny Powers
7b2dc6430f fix(search): improve a11y
- a11y: add labels to buttons
- perf: makes all templates static
- fix: address typescript errors

chore: changeset for search
2021-01-13 13:40:25 +01:00
1665 changed files with 55527 additions and 14816 deletions

View File

@@ -1,4 +0,0 @@
node_modules/**
/docs/_assets
/docs/_includes
/docs/_data

View File

@@ -10,3 +10,16 @@ _site
_site-dev _site-dev
__output __output
__output-dev __output-dev
docs/_merged*
*-mdjs-generated.js
# sanity example has a separate backend that is unrelated to Rocket
# therefore it does not need to follow it code rules
/examples/04-sanity-minimal-starter/backend/
/packages/engine/test-node/fixtures/06-error-handling/01-page-error/docs/index.rocket.js
/packages/engine/test-node/fixtures/03b-format-markdown/c01-md-in-js-to-md-html/md-in-js.js
/packages/engine/test-node/fixtures/03b-format-markdown/04-keep-converted-files/index-converted-md.js
/packages/engine/test-node/fixtures/03c-format-html/02-client-js/docs/index-converted-html.js
/packages/engine/test-node/fixtures/03b-format-markdown/04-keep-converted-files/index-converted-md-source.js

View File

@@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
node-version: [14.x] node-version: [16.x]
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
@@ -32,7 +32,11 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: yarn --frozen-lockfile run: yarn --frozen-lockfile
- uses: microsoft/playwright-github-action@v1 - name: Install Playwright dependencies
run: npx playwright install-deps
- name: Install Playwright
run: npx playwright install
- name: Build Packages - name: Build Packages
run: yarn build:packages run: yarn build:packages

17
.gitignore vendored
View File

@@ -1,6 +1,7 @@
## editors ## editors
/.idea /.idea
/.vscode /.vscode
/.history
## system files ## system files
.DS_Store .DS_Store
@@ -27,10 +28,14 @@ dist-types
stats.html stats.html
*.tsbuildinfo *.tsbuildinfo
## Rocket ignore files (need to be the full relative path to the folders) # Rocket Search
docs/_merged_data/ rocket-search-index.json
docs/_merged_assets/
docs/_merged_includes/ ## Rocket ignore files
*-mdjs-generated.js
*-converted-md-source.js
*-converted-md.js
*-converted-html.js
_site _site
_site-dev _site-dev
@@ -40,3 +45,7 @@ _merged_assets
_merged_includes _merged_includes
__output __output
__output-dev __output-dev
docs_backup
## Local playground
examples/testing

2
.nvmrc
View File

@@ -1 +1 @@
v14 v16

7
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,7 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"dbaeumer.vscode-eslint"
]
}

34
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,34 @@
// A launch configuration that compiles the extension and then opens it inside a new window
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
{
"version": "0.2.0",
"configurations": [
{
"name": "Run Web Dev Server Extension",
"type": "extensionHost",
"request": "launch",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}/packages/vscode-rocket"
],
"outFiles": [
"${workspaceFolder}/packages/vscode-rocket/out/**/*.js"
],
"preLaunchTask": "Compile vscode-rocket"
},
{
"name": "Extension Tests",
"type": "extensionHost",
"request": "launch",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}",
"--extensionTestsPath=${workspaceFolder}/out/test/suite/index"
],
"outFiles": [
"${workspaceFolder}/out/test/**/*.js"
],
"preLaunchTask": "${defaultBuildTask}"
}
]
}

12
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,12 @@
{
"gitdoc.enabled": false,
"typescript.tsdk": "node_modules/typescript/lib",
"files.exclude": {
"**/*-mdjs-generated.js": false,
},
"search.exclude": {
"**/*-mdjs-generated.js": true,
"**/dist-types": true,
},
"editor.experimental.stickyScroll.enabled": true
}

29
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,29 @@
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
{
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "watch",
"problemMatcher": "$tsc-watch",
"isBackground": true,
"presentation": {
"reveal": "never"
},
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "Compile vscode-rocket",
"type": "npm",
"script": "compile",
"path": "packages/vscode-rocket/",
"group": "build",
"problemMatcher": [],
"detail": "tsc -p ./"
}
]
}

View File

@@ -4,37 +4,37 @@
> Please note that this project is released with a [Contributor Code of Conduct](./CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. > Please note that this project is released with a [Contributor Code of Conduct](./CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.
First, create a fork of the [modernweb-dev/rocket](https://github.com/modernweb-dev/rocket) repo by hitting the `fork` button on the GitHub page. First, create a fork of the [modernweb-dev/rocket](https://github.com/modernweb-dev/rocket) repository by hitting the `fork` button on the GitHub page.
Next, clone our repository onto your computer with this command (replacing YOUR_USERNAME with your actual GitHub username) Next, clone our repository onto your computer.
```sh ```shell
git clone git@github.com:modernweb-dev/rocket.git git clone git@github.com:modernweb-dev/rocket.git
``` ```
Once cloning is complete, change directory to the repo. Once cloning is complete, change directory to the repository.
```sh ```shell
cd rocket cd rocket
``` ```
Now add your fork as a remote Now add your fork as a remote (replacing YOUR_USERNAME with your GitHub username).
```sh ```shell
git remote add fork git@github.com:<YOUR_NAME>/rocket.git git remote add fork git@github.com:<YOUR_USERNAME>/rocket.git
``` ```
Create a new local branch Create a new local branch.
```sh ```shell
git checkout -b my-awesome-fix git checkout -b my-awesome-fix
``` ```
## Preparing Your Local Environment for Development ## Preparing Your Local Environment for Development
Now that you have cloned the repository, ensure you have [yarn](https://classic.yarnpkg.com/lang/en/) installed run the following commands to set up the development environment. Now that you have cloned the repository, ensure you have [yarn](https://classic.yarnpkg.com/lang/en/) installed, then run the following commands to set up the development environment.
```sh ```shell
yarn install yarn install
``` ```
@@ -42,25 +42,25 @@ This will download and install all packages needed.
## Making Your Changes ## Making Your Changes
Make your changes to the project. Commits are linted using precommit hooks, meaning that any code that raises linting error cannot be committed. In order to help avoid that, we recommend using an IDE or editor with an eslint plugin in order to streamline the development process. Plugins are available for all the popular editors. For more information see [ESLint Integrations](https://eslint.org/docs/user-guide/integrations) Make your changes to the project. Commits are linted using precommit hooks, meaning that any code that raises a linting error cannot be committed. In order to help avoid that, we recommend using an IDE or editor with an ESLint plugin in order to streamline the development process. Plugins are available for all the popular editors. For more information see [ESLint Integrations](https://eslint.org/docs/user-guide/integrations)
### Compiling the typescript code ### Compiling the TypeScript Code
If you're making cross-package changes, you need to compile the typescript code. We recommend executing `tsc:watch` from the root of the package and keeping that running while you make your changes. If you're making cross-package changes, you need to compile the TypeScript code. We recommend executing `tsc:watch` from the root of the package and keeping that running while you make your changes.
### Running tests ### Running Tests
To run the tests of a package, it's recommended to `cd` into the package directory and then using `yarn test` to run them. This way you're only running tests of that specific package. To run the tests of a package, it's recommended to `cd` into the package directory and then using `yarn test` to run them. This way you're only running tests of that specific package.
### Integration testing ### Integration Testing
To see how your changes integrate with everything together you can use the `test-runner` package. There are different commands in this package which you can execute to trigger different scenarios in the test runner. To see how your changes integrate with everything together you can use the `test-runner` package. There are different commands in this package which you can execute to trigger different scenarios in the test runner.
## Adding new packages ## Adding New Packages
For all projects the tsconfig/jsconfig configuration files are auto generated. You need to add an entry to the [./workspace-packages.ts](./workspace-packages.ts) to let it generate a config for you. After adding an entry, run `yarn update-package-configs` to generate the files for you. For all projects the tsconfig/jsconfig configuration files are auto generated. You need to add an entry to the [./workspace-packages.ts](./workspace-packages.ts) to let it generate a config for you. After adding an entry, run `yarn update-package-configs` to generate the files for you.
## Create a Changeset ## Creating a Changeset
If you made changes for which you want to trigger a release, you need to create a changeset. If you made changes for which you want to trigger a release, you need to create a changeset.
This documents your intent to release, and allows you to specify a message that will be put into the changelog(s) of the package(s). This documents your intent to release, and allows you to specify a message that will be put into the changelog(s) of the package(s).
@@ -69,7 +69,7 @@ This documents your intent to release, and allows you to specify a message that
Run Run
```sh ```shell
yarn changeset yarn changeset
``` ```
@@ -92,7 +92,7 @@ Exceptions:
Commit messages must follow the [conventional commit format](https://www.conventionalcommits.org/en/v1.0.0/) Commit messages must follow the [conventional commit format](https://www.conventionalcommits.org/en/v1.0.0/)
Modern-web uses package name as scope. So for example if you fix a _terrible bug_ in the package `@web/test-runner`, the commit message should look like this: Modern-web uses package name as scope. So for example if you fix a _terrible bug_ in the package `@web/test-runner`, the commit message should look like this:
```sh ```shell
fix(test-runner): fix terrible bug fix(test-runner): fix terrible bug
``` ```
@@ -100,7 +100,7 @@ fix(test-runner): fix terrible bug
Now it's time to push your branch that contains your committed changes to your fork. Now it's time to push your branch that contains your committed changes to your fork.
```sh ```shell
git push -u fork my-awesome-fix git push -u fork my-awesome-fix
``` ```

View File

@@ -1,11 +1,10 @@
> This project is in it's BETA phase > This project is in its BETA phase
<p align="center"> <p align="center">
<img <picture width="60%">
width="60%" <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/modernweb-dev/rocket/main/site/src/assets/rocket-logo-dark-with-text.svg">
src="./assets/logo.png" <img alt="Rocket Logo" src="https://raw.githubusercontent.com/modernweb-dev/rocket/main/site/src/assets/rocket-logo-light-with-text.svg">
alt="Rocket" </picture>
/>
</p> </p>
<p align="center"> <p align="center">
@@ -19,42 +18,57 @@
src="https://img.shields.io/badge/twitter-@modern_web_dev-1DA1F3?style=flat-square" src="https://img.shields.io/badge/twitter-@modern_web_dev-1DA1F3?style=flat-square"
alt="Follow @modern_web_dev on Twitter" alt="Follow @modern_web_dev on Twitter"
/></a> /></a>
<a href="https://open.vscode.dev/modernweb-dev/rocket"
><img
src="https://img.shields.io/static/v1?logo=visualstudiocode&label=&message=Open%20in%20Visual%20Studio%20Code&labelColor=2c2c32&color=007acc&logoColor=007acc"
alt="Open in VS Code"
/></a>
</p> </p>
<p align="center"> <p align="center">
<a href="https://rocket.modern-web.dev">Website</a> <a href="https://rocket.modern-web.dev">Website</a>
· ·
<a href="https://rocket.modern-web.dev/guides/">Guides</a>
·
<a href="https://rocket.modern-web.dev/docs/">Documentation</a> <a href="https://rocket.modern-web.dev/docs/">Documentation</a>
·
<a href="https://rocket.modern-web.dev/chat">Discord Community</a>
</p> </p>
<h1></h1> <h1></h1>
**The modern web setup for static sites with a sprinkle of JavaScript!** **The modern web setup for static sites with a sprinkle of JavaScript!**
- **Meta Framework:** Build on top of giants like <a href="https://www.11ty.dev/">eleventy</a>, <a href="https://rollupjs.org/">Rollup</a>, and <a href="https://www.modern-web.dev/">Modern Web</a>. - **Meta Framework:** Build on top of giants like <a href="https://lit.dev/">Lit</a>, <a href="https://rollupjs.org/">Rollup</a> and <a href="https://www.modern-web.dev/">Modern Web</a>.
- **Powerful Default Template:** Provide content and you are ready to go. - **Powerful Default Template:** Provide content and you are ready to go.
- **Small:** No overblown tools or frontend frameworks, add JavaScript and/or Web Components only on pages where needed.. - **Small:** No overblown tools or frontend frameworks, add JavaScript and/or Web Components only on pages where needed..
<p align="center"> <p align="center">
<a href="https://rocket.modern-web.dev/guides/"><strong>Explore the Rocket Guides&nbsp;&nbsp;▶</strong></a> <a href="https://rocket.modern-web.dev/docs/setup/getting-started/"><strong>Getting Started With Rocket&nbsp;&nbsp;▶</strong></a>
</p> </p>
## The goal for Rocket ## The Goal for Rocket
> Our goal is to provide developers with a meta framework for static websites with a spricle of JavaScript. > Our goal is to provide developers with a meta framework for static websites with a sprinkle of JavaScript.
Get a site up and running in no time and focus on the content. Get a site up and running in no time and focus on the content.
You can still tweak every details of every underlying tool that get's used. You can still tweak every detail of every underlying tool that gets used.
Rocket is part of the [Modern Web Family](https://twitter.com/modern_web_dev). Rocket is part of the [Modern Web Family](https://twitter.com/modern_web_dev).
<p align="center">
<a href="https://rocket.modern-web.dev/chat"><strong>Join our Discord Community&nbsp;&nbsp;▶</strong></a>
</p>
## Quick Start
```
npx @rocket/create@latest
```
## 🤝 Contributing ## 🤝 Contributing
We are always looking for contributors of all skill levels! If you're looking to ease your way into the project, try out a [good first issue](https://github.com/modernweb-dev/rocket/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). We are always looking for contributors of all skill levels! If you're looking to ease your way into the project, try out a [good first issue](https://github.com/modernweb-dev/rocket/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).
If you are interested in helping contribute to Modern Web, please take a look at our [Contributing Guide](https://github.com/modernweb-dev/rocket/blob/main/CONTRIBUTING.md). Also, feel free to drop into [slack](https://rocket.modern-web.dev/discover/slack/) and say hi. 👋 If you are interested in helping contribute to Modern Web, please take a look at our [Contributing Guide](https://github.com/modernweb-dev/rocket/blob/main/CONTRIBUTING.md). Also, feel free to drop into [discord](https://rocket.modern-web.dev/chat) and say hi. 👋
### Financial Contributors ### Financial Contributors

43
TODO.md Normal file
View File

@@ -0,0 +1,43 @@
## TODO
- 404 page background images are not being loaded
- sitemap.xml not deployed on netlify
## Features
- recursive rendering of lit / html / and markdown
- "import" markdown with frontmatter
- mdjs update to unified v10 AND go esm only (only cjs pkg we have now)
## Nice to have
- Add "menuExclude" => to actually exclude the menu item
## Bugs
- write to `_site-dev` instead of `_site` while using `rocket start`
- nested `recursive.data.js` do not overwrite the parent data
- support <!-- asdf --> in markdown
## Error Handling
- make error nice for parent page not found in index => auto generate page? 🤔
## Examples
- docs site, blog (simple), blog (complex), minimal
- add stackblitz/codesandbox examples => does not work because of `@parcel/watcher` https://github.com/parcel-bundler/watcher/issues/99
- Example: export variable and use it in rendering
- Example: fetch data from an api and display it
- Example: usage of image
## later
- support `@change` in markdown
- support "hey ${foo.map(f => `${f} + 1`)}"
- ENGINE: Rename "options.docsDir" to "options.inputDir"
## consider
- Replace magic "resolve:pkg/foo.css" with a directive `${resolve()}`?

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

47
config/rocket.config.js Normal file
View File

@@ -0,0 +1,47 @@
import { rocketLaunch } from '@rocket/launch';
import { rocketSpark } from '@rocket/spark';
import { presetRocketSearch } from '@rocket/search';
/**
* Extracts the current applicable absoluteBaseUrl from Netlify system variables
*
* @param {string} fallback
*/
export function absoluteBaseUrlNetlify(fallback) {
let absoluteBaseUrl = fallback;
switch (process.env.CONTEXT) {
case 'production':
absoluteBaseUrl = process.env.URL ?? '';
break;
case 'deploy-preview':
absoluteBaseUrl = process.env.DEPLOY_URL ?? '';
break;
case 'branch-deploy':
absoluteBaseUrl = process.env.DEPLOY_PRIME_URL ?? '';
break;
/* no default */
}
return absoluteBaseUrl;
}
export default /** @type {import('@rocket/cli/types/main').RocketCliOptions} */ ({
absoluteBaseUrl: absoluteBaseUrlNetlify('http://localhost:8080'),
longFileHeaderWidth: 100,
longFileHeaderComment: '// prettier-ignore',
// adjustDevServerOptions: (options) => ({
// ...options,
// nodeResolve: {
// ...options.nodeResolve,
// exportConditions: ['development'],
// },
// }),
// buildOpenGraphImages: false,
presets: [rocketLaunch(), rocketSpark(), presetRocketSearch()],
// serviceWorkerName: 'sw.js',
// pathPrefix: '/_site/',
// clearOutputDir: false,
});

View File

@@ -1,4 +0,0 @@
---
layout: 404.njk
permalink: 404.html
---

View File

@@ -1,9 +0,0 @@
<link
href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap"
rel="stylesheet"
/>
<link
href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap"
rel="stylesheet"
/>
<meta name="twitter:creator" content="@modern_web_dev" />

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -1,21 +0,0 @@
body[layout='home'] .markdown-body .call-to-action:nth-of-type(2) {
--primary-color: #222;
--primary-color-lighter: #333;
--primary-color-darker: #000;
}
@media screen and (min-width: 1024px) {
body[layout='home'][home-layout='background'] .page-background {
top: -210px;
right: -463px;
transform: rotate(45deg);
}
}
rocket-navigation {
font-family: 'Montserrat', sans-serif;
}
header {
font-family: 'Montserrat', sans-serif;
}

View File

@@ -1,29 +0,0 @@
{
"name": "Rocket",
"short_name": "rocket",
"theme_color": "#e63946",
"background_color": "#1d3557",
"display": "standalone",
"orientation": "portrait",
"Scope": "/",
"start_url": "/",
"icons": [
{
"src": "../_merged_assets/_static/icons/android-chrome-192x192.png",
"sizes": "128x128",
"type": "image/png"
},
{
"src": "../_merged_assets/_static/icons/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
},
{
"src": "../_merged_assets/_static/icons/maskable-icon.jpg",
"sizes": "1024x1024",
"type": "image/jpg",
"purpose": "any maskable"
}
],
"splash_pages": null
}

View File

@@ -1,45 +0,0 @@
[
{
"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": "/about/slack/"
}
]
},
{
"name": "Support",
"children": [
{
"text": "Sponsor",
"href": "/about/sponsor/"
},
{
"text": "Contribute",
"href": "https://github.com/modernweb-dev/rocket/blob/main/CONTRIBUTING.md"
}
]
}
]

View File

@@ -1,4 +0,0 @@
{
"homeLayout": "background",
"newsletter": false
}

View File

@@ -1,23 +0,0 @@
module.exports = async function () {
return {
dir: 'ltr',
lang: 'en',
name: 'Rocket',
description: 'Rocket is the way to build fast static websites with a sprinkle of javascript',
socialLinks: [
{
name: 'GitHub',
url: 'https://github.com/modernweb-dev/rocket',
},
],
gitSiteUrl: 'https://github.com/modernweb-dev/rocket',
gitBranch: 'main',
helpUrl: 'https://github.com/modernweb-dev/rocket/issues',
logoAlt: 'Rocket Logo',
iconColorMaskIcon: '#3f93ce',
iconColorMsapplicationTileColor: '#1d3557',
iconColorThemeColor: '#1d3557',
socialMediaImage: '/_assets/social-media-image.jpg',
// analytics: 'UA-131782693-2', // modern web key
};
};

View File

@@ -1,5 +0,0 @@
# Slack
You can also find us on the Polymer slack in the [#open-wc](https://slack.com/share/IUQNUPWUF/awabyN8iYH4dXX6aGpu16ES9/enQtOTc2Nzc2ODEyOTY3LWM5ZGExNGFiMmM4NDY2YWI2MzYwOGY5ZTNlZjk4OGU4NTFhMGJjNmVhNGI4MzVlNTMwNGRiNGIxNjc4MGJhNDg) channel.
You can join the Polymer slack by visiting https://www.polymer-project.org/slack-invite.

View File

@@ -1,9 +0,0 @@
---
title: Sponsor
eleventyNavigation:
key: Sponsor
---
We currently can only accept sponsoring in the form of services or contributions.
If you are interested in monetary sponsoring please [let as know as](mailto:hello@modern-web.dev).

View File

@@ -1,14 +0,0 @@
---
title: Rocket Blog
layout: blog
eleventyNavigation:
key: Blog
order: 30
pagination:
data: collections.blog
size: 10
reverse: true
alias: posts
---
Discover articles from the core team and contributors about Rocket, tips and tricks included!

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -1,16 +0,0 @@
---
title: Introducing rocket - effective static content with some javascript
published: true
description: Write Interactive Demos Using Markdown and JavaScript
tags: [markdown, javascript, webcomponents, demos]
cover_image: /blog/introducing-rocket/images/blog-header.jpg
socialMediaImage: /blog/introducing-rocket/images/social-media-image.jpg
---
Welcome to the next level of content creation.
## Here comes the navigation
Stuff
## Another anchor

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/mstile-150x150.png"/>
<TileColor>#1d3557</TileColor>
</tile>
</msapplication>
</browserconfig>

View File

@@ -1 +0,0 @@
# Configuration ||10

View File

@@ -1,85 +0,0 @@
# Configuration >> Overview ||10
The configuration file is `rocket.config.js` or `rocket.config.mjs`.
The config files consists of the following parts:
```js
import { rocketLaunch } from '@rocket/launch';
export default {
presets: [rocketLaunch()],
emptyOutputDir: true,
pathPrefix: 'subfolder-only-for-build',
};
```
Rocket is primarily build around plugins for each of it's systems.
New plugins can be added and all default plugins can be adjusted or even removed by using the following functions.
```js
export default {
// add remark/unified plugin to the markdown processing (e.g. enable special code blocks)
setupUnifiedPlugins: [],
// add a rollup plugins to the web dev server (will be wrapped with @web/dev-server-rollup) AND the rollup build (e.g. enable json importing)
setupDevAndBuildPlugins: [],
// add a plugin to the web dev server (will not be wrapped) (e.g. esbuild for typescript)
setupDevPlugins: [],
// add a plugin to the rollup build (e.g. optimization steps)
setupBuildPlugins: [],
// add a plugin to eleventy (e.g. a filter packs)
setupEleventyPlugins: [],
// add a plugin to the cli (e.g. a new command like "rocket my-command")
setupCliPlugins: [],
};
```
## Adding Rollup Plugins
For some projects you might want to enable non-standard behaviors like importing JSON files as JavaScript.
```js
import data from './data.json';
```
You can accomplish this with rollup and dev server plugins. Make sure to add both the dev-server plugin as well as the rollup plugin, so that the behaviors is the same during development as it is in the production build.
For these cases you can use `setupDevAndBuildPlugins`, which will automatically add the plugin for you to both rollup and dev-server:
```js
import json from '@rollup/plugin-json';
import { addPlugin } from 'plugins-manager';
/** @type {Partial<import("@rocket/cli").RocketCliOptions>} */
const config = {
setupDevAndBuildPlugins: [
addPlugin({ name: 'json', plugin: json, location: 'top', options: { my: 'settings' } }),
],
};
export default config;
```
This will add the rollup plugin `json` with the id `json` at the top of the plugin list of rollup and the dev server. It needs to be at the top so further plugins down the line can work with json imports.
For the Dev Server the plugins are automatically wrapped by `@web/dev-server-rollup`. Note that [not all rollup plugins](https://modern-web.dev/docs/dev-server/plugins/rollup/#compatibility-with-rollup-plugins) will work with the dev-server.
## Modifying Options of Plugins
All plugins which are either default or are added via a preset can still be adjusted by using `adjustPluginOptions`.
```js
import { adjustPluginOptions } from 'plugins-manager';
/** @type {Partial<import("@rocket/cli").RocketCliOptions>} */
const config = {
setupDevAndBuildPlugins: [adjustPluginOptions('json', { my: 'overwrite settings' })],
};
export default config;
```

View File

@@ -1 +0,0 @@
# Eleventy Plugins ||40

View File

@@ -1,94 +0,0 @@
# Eleventy Plugins >> Markdown JavaScript (Mdjs)
Use mdjs in your 11ty site.
## Setup
```
npm install @rocket/eleventy-plugin-mdjs
```
Create an 11ty config file `.eleventy.js`
```js
const pluginMdjs = require('@rocket/eleventy-plugin-mdjs');
module.exports = function (eleventyConfig) {
eleventyConfig.addPlugin(pluginMdjs);
};
```
## Configure a unified or remark plugin with mdjs
By providing a `setupUnifiedPlugins` function as an option to `eleventy-plugin-mdjs` you can set options for all unified/remark plugins.
We do use [plugins-manager](../plugins-manager/overview.md).
This example adds a CSS class to the `htmlHeading` plugin so heading links can be selected in CSS.
```js
const pluginMdjs = require('@rocket/eleventy-plugin-mdjs');
const { adjustPluginOptions } = require('plugins-manager');
module.exports = function (eleventyConfig) {
eleventyConfig.addPlugin(pluginMdjs, {
setupUnifiedPlugins: [
adjustPluginOptions('htmlHeading', {
properties: {
className: ['anchor'],
},
}),
],
});
};
```
## Add a unified or remark plugin
The order of plugins is important in unified as each plugin processes the content and passes on its result.
Some plugins do work with the markdown AST and some with the rehype (e.g. html) AST. In order to get access to the correct AST the plugin needs to be in a specific location in the processing order.
Examples on how to insert a plugin right after creating the markdown AST.
```js
const pluginMdjs = require('@rocket/eleventy-plugin-mdjs');
const { addPlugin } = require('plugins-manager');
const { myRemarkPlugin } = require('./my-remark-plugin.js');
module.exports = function (eleventyConfig) {
eleventyConfig.addPlugin(pluginMdjs, {
setupUnifiedPlugins: [
addPlugin({ name: 'my-remark-plugin', plugin: myRemarkPlugin, location: 'markdown' }),
],
});
};
```
Examples on how to insert a plugin right after creating the rehype AST.
```js
const pluginMdjs = require('@rocket/eleventy-plugin-mdjs');
const { addPlugin } = require('plugins-manager');
const { myRehypePlugin } = require('./my-rehype-plugin.js');
module.exports = function (eleventyConfig) {
eleventyConfig.addPlugin(pluginMdjs, {
setupUnifiedPlugins: [
addPlugin({ name: 'my-rehype-plugin', plugin: myRehypePlugin, location: 'remark2rehype' }),
],
});
};
```
You can also add both
```js
module.exports = function (eleventyConfig) {
eleventyConfig.addPlugin(pluginMdjs, {
setupUnifiedPlugins: [
addPlugin({ name: 'my-remark-plugin', plugin: myRemarkPlugin, location: 'markdown' }),
addPlugin({ name: 'my-rehype-plugin', plugin: myRehypePlugin, location: 'remark2rehype' }),
],
});
};
```

View File

@@ -1,12 +0,0 @@
---
title: Documentation
eleventyNavigation:
key: Docs
order: 20
---
Here you will find all the details for each of the packages/systems we offer.
You should check out:
- [@rocket/launch](./presets/launch.md) which is our default preset

View File

@@ -1 +0,0 @@
# Markdown JavaScript ||30

View File

@@ -1,237 +0,0 @@
# Markdown JavaScript >> Overview || 10
Markdown JavaScript (Mdjs) is a format that allows you to use JavaScript with Markdown, to create interactive demos. It does so by "annotating" JavaScript that should be executed in Markdown.
To annotate we use a code block with `js script`.
````md
```js script
// execute me
```
````
## Web Components
One very good use case for that can be web components.
HTML already works in markdown so all you need is to load a web components definition file.
You could even do so within the same markdown file.
````md
## This is my-card
Here's an example of the component:
```html preview-story
<my-card>
<h2>Hello world!</h2>
<button>Click me!</button>
</my-card>
```
````
You can even execute some JavaScript:
````md
## This is my-el
<my-el></my-el>
```js script
import { LitElement, html } from 'https://unpkg.com/lit-element?module';
class MyEl extends LitElement {
render() {
this.innerHTML = '<p style="color: red">I am alive</p>';
}
}
customElements.define('my-el', MyEl);
```
````
## Demo Support (Story)
mdjs comes with some additional helpers you can choose to import via
````md
```js script
import '@mdjs/mdjs-story/mdjs-story.js';
import '@mdjs/mdjs-preview/mdjs-preview.js';
```
````
once loaded you can use them like so.
````md
```js script
import '@mdjs/mdjs-story/mdjs-story.js';
import '@mdjs/mdjs-preview/mdjs-preview.js';
```
````
once loaded you can use them like so.
### story
The code snippet will actually get executed at that place and you will have a live demo
````md
```js story
export const JsStory = () => html` <demo-wc-card>JS Story</demo-wc-card> `;
```
````
````md
```html story
<demo-wc-card>HTML Story</demo-wc-card>
```
````
#### full code support
````md
```js story
export const JsStory = () => {
const calculateSomething = 12;
return html`
<demo-wc-card .header=${`Something: ${calculateSomething}`}>JS Story</demo-wc-card>
`;
};
```
````
### preview story
Will become a live demo wrapped in a container with a show code button.
````md
```js preview-story
export const JsPreviewStory = () => html` <demo-wc-card>JS Preview Story</demo-wc-card> `;
```
````
````md
```html preview-story
<demo-wc-card>HTML Preview Story</demo-wc-card>
```
````
Here is a live example from [demo-wc-card](https://www.npmjs.com/package/demo-wc-card).
```js script
import '@mdjs/mdjs-story/mdjs-story.js';
import '@mdjs/mdjs-preview/mdjs-preview.js';
import { html } from 'lit-html';
```
```js preview-story
import 'demo-wc-card/demo-wc-card.js';
export const header = () => {
return html` <demo-wc-card .header=${'my new header'}></demo-wc-card> `;
};
```
## Supported Systems
### es-dev-server
Preview your mdjs readme with live demos and auto reload.
- Add to your `package.json`:
```json
"scripts": {
"start": "es-dev-server",
}
```
- Create a `es-dev-server.config.js` in the root of your repo.
```js
const { mdjsTransformer } = require('@mdjs/core');
module.exports = {
nodeResolve: true,
open: 'README.md',
watch: true,
responseTransformers: [mdjsTransformer],
};
```
### Storybook
Please check out [@open-wc/demoing-storybook](https://open-wc.org/demoing/) for a fully integrated setup.
It includes [storybook-addon-markdown-docs](https://open-wc.org/demoing/storybook-addon-markdown-docs.html) which uses mdjs under the hood.
### Chrome Extension (currently only for Github)
See live demos directly inside github page, markdown files, issues, pull requests...
Please check out [mdjs-viewer](https://github.com/open-wc/mdjs-viewer).
## Build mdjs
### Basic
mdjs offers two more "basic" integrations
#### `mdjsDocPage`
Creates a full blown html page by passing in the markdown.
```js
const { mdjsDocPage } = require('@mdjs/core');
const page = await mdjsDocPage(markdownString);
/*
<html>
... // load styles/components for mdjs, start stories
<body>
<h1>Some Markdown</h1>
</body>
</html>
*/
```
#### `mdjsProcess`
Pass in multiple markdown documents and you get back all the jsCode and rendered html.
```js
const { mdjsProcess } = require('@mdjs/core');
const data = await mdjsProcess(markdownString);
console.log(data);
/*
{
jsCode: "
import '@mdjs/mdjs-story/mdjs-story.js';
...
",
html: '<h1>Markdown One</h1>',
}
*/
```
### Advanced
mdjs is build to be integrated within the [unifiedjs](https://unifiedjs.com/) system.
```js
const unified = require('unified');
const markdown = require('remark-parse');
const htmlStringify = require('remark-html');
const mdjsParse = require('@mdjs/core');
const parser = unified().use(markdown).use(mdjsParse).use(htmlStringify);
const result = await parser.process(body);
const { jsCode } = result.data;
console.log(result.contents);
// <h1>This is my-el></h1>
// <my-el></my-el>
console.log(jsCode);
// customElements.define('my-el', class extends HTMLElement {
// ...
```

View File

@@ -1,19 +0,0 @@
# Markdown JavaScript >> Preview ||20
You can showcase live running code by annotating a code block with `js preview-story`.
````md
```js preview-story
import { html } from 'lit-html';
export const foo = () => html` <p>my html</p> `;
```
````
will result in
```js preview-story
import { html } from 'lit-html';
export const foo = () => html` <p>my html</p> `;
```

View File

@@ -1,19 +0,0 @@
# Markdown JavaScript >> Story ||30
You can showcase live running code by annotating a code block with `js story`.
````md
```js story
import { html } from 'lit-html';
export const foo = () => html` <p>my html</p> `;
```
````
will result in
```js story
import { html } from 'lit-html';
export const foo = () => html` <p>my html</p> `;
```

View File

@@ -1,21 +0,0 @@
# Presets >> Blog ||30
Enable writing blog posts within your rocket site
## Installation
```bash
npm i @rocket/blog
```
## Usage
👉 `rocket.config.mjs`
```js
import { rocketBlog } from '@rocket/blog';
export default {
presets: [rocketBlog()],
};
```

View File

@@ -1,5 +0,0 @@
---
excludeFromSearch: true
---
# Presets ||20

View File

@@ -1,119 +0,0 @@
# Presets >> Launch ||10
Rocket comes with a preset you will love. Simple, Responsive and behaving like native it sure is going to be a hit among your users.
## Installation
```bash
npm i @rocket/launch
```
👉 `rocket.config.mjs`
```js
import { rocketLaunch } from '@rocket/launch';
export default {
presets: [rocketLaunch()],
};
```
## Data
Most data comes from `site.cjs`.
There is also a specific `rocketLaunch.json`.
The footer data comes from `footer.json`
## Inline Notification
Notification are web components that bring in some styles.
To use them in Markdown you need to write the html tag and have it separated by an empty line.
```js script
import '@rocket/launch/inline-notification/inline-notification.js';
```
First you need to import the script
````
```js script
import '@rocket/launch/inline-notification/inline-notification.js';
```
````
### Tip
<inline-notification type="tip">
I am a tip
</inline-notification>
**Usage**
```md
<inline-notification type="tip">
I am a tip
</inline-notification>
```
### Modify the title
To override the title you can provide a property success.
<inline-notification type="tip" title="success">
I am a success message
</inline-notification>
**Usage**
```md
<inline-notification type="tip" title="success">
I am a success message
</inline-notification>
```
### Warning
<inline-notification type="warning">
I am a warning
</inline-notification>
**Usage**
```md
<inline-notification type="warning">
I am a warning
</inline-notification>
```
### Danger
<inline-notification type="danger">
I am a dangerous message
</inline-notification>
**Usage**
```md
<inline-notification type="danger">
I am a dangerous message
</inline-notification>
```

View File

@@ -1,19 +0,0 @@
# Presets >> Search ||20
Add a search for all your static content.
## Installation
```bash
npm i @rocket/search
```
👉 `rocket.config.mjs`
```js
import { rocketSearch } from '@rocket/search';
export default {
presets: [rocketSearch()],
};
```

View File

@@ -1 +0,0 @@
# Tools ||50

View File

@@ -1,269 +0,0 @@
# Tools >> Plugins Manager ||10
The Plugins Manager replaces the specific registration/execution (with options) in a given plugin system by an intend to use a plugin (with these options).
This allows your users to adjust the options before actually applying the plugins.
## Problem
Many plugin systems require you to either execute a plugin function like in `rollup`.
```js
import json from '@rollup/plugin-json';
export default {
plugins: [json({ preferConst: true })],
};
```
or add it in a special way like in `eleventy`
```js
const pluginSyntaxHighlight = require('@11ty/eleventy-plugin-syntaxhighlight');
module.exports = function (eleventyConfig) {
eleventyConfig.addPlugin(pluginSyntaxHighlight, { templateFormats: ['md'] });
};
```
or `unified/remark`.
```js
var unified = require('unified');
var markdown = require('remark-parse');
var toc = require('remark-toc');
var processor = unified().use(markdown).use(toc, { maxDepth: 2 });
// ...
```
## Problem statement
> Executing or adding a plugin in a special way is a one time process. You can not transparently later change the options of the given plugin.
This means if you wish to define default plugins and allow your user to override all of the settings it's "impossible".
## Solution
The plugins manager let's you orchestrate a set of "meta plugins" which are defined by
- name
- plugin
- options
```js
import beep from '@rollup/plugin-beep';
import url from '@rollup/plugin-url';
let metaPlugins = [
{ name: 'beep', plugin: beep },
{ name: 'url', plugin: url, options: { limit: 10000 } },
];
```
This array can be modified by adding/removing or adjusting options.
```js
// raw add
metaPlugins.push({
// another plugin
});
// raw adjust
metaPlugins[1].options.limit = 20000;
```
And then you can convert it into the specific format that can be assigned to your system in question.
```js
// execute plugins for rollup
const plugins = metaPlugins.map(pluginObj => {
if (pluginObj.options) {
return pluginObj.plugin(pluginObj.options);
} else {
return pluginObj.plugin();
}
});
// rollup.config.js
export default {
plugins,
};
```
### Adding Helpers
Doing array manipulations is kinda error-prone so we offer encourage to use an array of setup function. Where as each setup function can either add a new plugin (with a unique name) or adjust an already existing plugin.
```js
import { addPlugin, adjustPluginOptions } from 'plugins-manager';
const systemSetupFunctions = [
addPlugin({ name: 'first', plugin: first }),
addPlugin({ name: 'second', plugin: second }),
];
const userSetupFunctions = [adjustPluginOptions('first', { my: 'options' })];
```
Arrays of functions can by merged like so
```js
const finalSetupFunctions = [...systemSetupFunctions, ...userSetupFunctions];
```
and then converted to the final output.
```js
import { metaPluginsToRollupPlugins } from 'plugins-manager';
const plugins = metaPluginsToRollupPlugins(finalSetupFunctions, metaPlugins);
```
## Adding a Plugin
This makes sure that
- the name is unique
- you can add at at `top`, `bottom` and `after/before` a given other plugin
By default it adds at the bottom.
```js
import json from '@rollup/plugin-json';
import { addPlugin } from 'plugins-manager';
const userSetupFunctions = [
addPlugin({ name: 'json', plugin: json, options: { preferConst: true } }),
];
```
Example usage:
```js
addPlugin({ name: 'json', plugin: json }); // Add at the bottom (default)
addPlugin({ name: 'json', plugin: json, location: 'top' }); // Add at the top/beginning of the array
addPlugin({ name: 'json', plugin: json, location: 'beep' }); // Add after (default) plugin 'beep'
addPlugin({ name: 'json', plugin: json, location: 'beep', how: 'before' }); // Add before plugin 'beep'
```
## Adjusting Plugin Options
Adjusting options means to either
- flatly merge objects (e.g. only the first level will be preserved)
- calling a function to do the merge yourself
- setting the raw value (if not an object or function)
```js
import { adjustPluginOptions } from 'plugins-manager';
const userSetupFunctions = [
adjustPluginOptions('json', { preferConst: false, anotherOption: 'format' }),
];
```
Example usage:
```js
// given
addPlugin({
name: 'json',
plugin: json,
options: {
other: {
nested: 'other.nested',
nested2: 'other.nested2',
},
main: true,
},
});
// merge objects flately
adjustPluginOptions('json', { other: { nested: '--overwritten--' } });
// resulting options = { other: { nested: '--overwritten--' }, main: true }
// NOTE: nested2 is removed
// merge via function
adjustPluginOptions('json', config => ({ other: { ...config.other, nested: '--overwritten--' } }));
// resulting options = { other: { nested: '--overwritten--', nested2: 'other.nested2' }, main: true }
// merge via function to override full options
adjustPluginOptions('json', config => ({ only: 'this' }));
// resulting options = { only: 'this' }
// setting a raw value
adjustPluginOptions('json', false);
// resulting options = false
```
## Converting metaPlugins to an actual plugin
To execute all setup function you can use this little helper
```js
const finalMetaPlugins = executeSetupFunctions(finalSetupFunctions, metaPlugins);
```
And then you can convert it into your format.
For Rollup you would execute the plugin with the options if there are any.
```js
const plugins = finalMetaPlugins.map(pluginObj => {
if (pluginObj.options) {
return pluginObj.plugin(pluginObj.options);
} else {
return pluginObj.plugin();
}
});
```
**Examples**
Rollup has a more specific helper that handles
- `config.setupPlugins`
Note: if you provide `config.plugins` then it will return that directly ignoring `setupPlugins`
```js
import { metaConfigToRollupConfig } from 'plugins-manager';
const finalConfig = metaConfigToRollupConfig(currentConfig, defaultMetaPlugins);
```
Web Dev Server has a more specific helper that handles
- `config.setupPlugins`
- `config.setupRollupPlugins`
Note: if you provide `config.plugins` then it will return that directly ignoring `setupPlugins` and `setupRollupPlugins`
```js
import { metaConfigToWebDevServerConfig } from 'plugins-manager';
import { fromRollup } from '@web/dev-server-rollup';
const finalConfig = metaConfigToWebDevServerConfig(currentConfig, defaultMetaPlugins, {
rollupWrapperFunction: fromRollup,
});
```
Eleventy
```js
module.exports = eleventyConfig => {
for (const pluginObj of metaPlugins) {
if (pluginObj.options) {
eleventyConfig.addPlugin(pluginObj.plugin, pluginObj.options);
} else {
eleventyConfig.addPlugin(pluginObj.plugin);
}
}
};
```
Unified/Remark
```js
const parser = unified();
for (const pluginObj of metaPlugins) {
parser.use(pluginObj.plugin, pluginObj.options);
}
```

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,38 +0,0 @@
# Configuration >> Getting Started ||10
The main config file is `rocket.config.js` or `rocket.config.mjs`.
It typically looks something like this
```js
import { rocketLaunch } from '@rocket/launch';
import { rocketBlog } from '@rocket/blog';
import { rocketSearch } from '@rocket/search';
import { absoluteBaseUrlNetlify } from '@rocket/core/helpers';
export default /** @type {Partial<import('@rocket/cli').RocketCliOptions>} */ ({
presets: [rocketLaunch(), rocketBlog(), rocketSearch()],
absoluteBaseUrl: absoluteBaseUrlNetlify('http://localhost:8080'),
});
```
The Plugins Manager helps you register and execute your plugins across the various Rocket components - rollup, dev-server, eleventy, and markdown. It replaces the specific registration/execution call in a given plugin system by an intent to use that plugin.
## Adding Remark/Unified Plugins
If you want to a plugin to the markdown processing you can use `setupUnifiedPlugins`.
```js
import emoji from 'remark-emoji';
import { addPlugin } from 'plugins-manager';
/** @type {Partial<import('@rocket/cli').RocketCliOptions>} */
const config = {
setupUnifiedPlugins: [addPlugin({ location: 'markdown', name: 'emoji', plugin: emoji })],
};
export default config;
```
For plugins that should handle the markdown <abbr title="Abstract Syntax Tree">AST</abbr> you should use `addPlugin({ location: 'markdown', name: 'my-plugin', plugin: MyPlugin})`. <br>
While for the rehype ast you should use `addPlugin({ location: 'remark2rehype', name: 'my-plugin', plugin: MyPlugin})`.

View File

@@ -1 +0,0 @@
# Configuration ||30

View File

@@ -1,85 +0,0 @@
# First Pages >> Adding Pages ||12
<inline-notification type="warning">
You can do this whole part of the tutorial in a couple minutes. It's almost _**too**_ fast.
It can help to examine each new page and menu carefully, to come to terms with the implicit navigation created by your addition of new content, at least the first couple of times.
</inline-notification>
## Add a section
In most cases you will have multiple sections in your website and each of those sections will come with it's own sidebar navigation.
To create a section you need to create a folder with an `index.md`.
```bash
mkdir docs/guides
```
👉 `docs/guides/index.md`
```md
# Guides
You can read all about...
```
Observe that this creates a section named "Guides" at the top menu bar, and a page with the same title.
<inline-notification type="tip">
Don't worry if this isn't how you would have styled or placed your menu bar or sidebar navigation, we'll get to customization of the default preset later in the tutorials.
</inline-notification>
> How many sections should I add?
It might be more practical to stay below 5 sections.
## Adding a category
Often each section will have multiple categories.
To create a category you need to create a folder with an `index.md`.
```bash
mkdir docs/guides/first-pages/
```
👉 `docs/guides/first-pages/index.md`
```md
# First Pages
```
## Adding a page to a category
👉 `docs/guides/first-pages/getting-started.md`
```md
# First Pages >> Getting Started
This is how you get started.
```
## Headings as anchor and menu items
_**Within**_ any page, you can still add links to your navigation!
Note that md text prefixed with one or two # signs also becomes and anchor in the page and a link in the sidebar navigation when the page is open.
```md
## Headings as anchor and menu items
_**Within**_ any page, you can still add links to your navigation!
```
```js script
import '@rocket/launch/inline-notification/inline-notification.js';
```
## Example as a reference
If implicit navigation, derived from content, is a bit too much to grasp in one sitting, feel free to examine the **docs** folder in [the rocket codebase behind the pages you are reading](https://github.com/modernweb-dev/rocket) for more examples.

View File

@@ -1,117 +0,0 @@
# First Pages >> Getting Started ||10
Rocket is has the following prerequisits:
- [Node 14+](https://nodejs.org/en/)
Make sure they are installed before proceeding.
## Setup
The fastest way to get started is by using an existing preset like the launch preset.
1. Start with an empty new folder
```
mkdir my-project
cd my-project
npm init -y
```
2. Install dependencies
```
npm install --save-dev @rocket/cli @rocket/launch
```
3. Add to your .gitignore
```
## Rocket ignore files (need to be the full relative path to the folders)
docs/_merged_data/
docs/_merged_assets/
docs/_merged_includes/
```
<inline-notification type="danger">
You may be tempted to skip the step above, because you're not ready to commit to git yet!
Rocket uses the .gitignore file to manage it's requirements. If you skip this step, rocket will fail to deploy!
</inline-notification>
4. Create a `rocket.config.mjs` (or `.js` if you have type: "module" in you package.json)
```js
import { rocketLaunch } from '@rocket/launch';
export default {
presets: [rocketLaunch()],
};
```
5. (optionally) Create a file `.eleventyignore` (this file will be needed once you start customizing presets)
```
node_modules/**
/docs/_assets
/docs/_includes
/docs/_data
```
<inline-notification type="warning" title="note">
All further pathes are relative to your project root (my-project in this case)
</inline-notification>
## Add your first page
👉 `docs/index.md`
```md
# Welcome to your Rocket site
Text here, like any markdown file.
```
This tutorial assumes you are familiar with Markdown, for page authoring.
Please note that the heading - text prefixed with `#` or `##` - is not optional for each page in this tutorial. Everything below that first line is optional Markdown text.
## Start up:
👉 `package.json`
Add `"start": "rocket start"` to your package.json
```json
"scripts": {
"start": "rocket start"
}
```
Now you can launch your site locally with
```bash
npm run start
```
## Taking Inventory Before Adding Pages:
We're about to add both content and navigation at the same time.
It can be helpful to take an inventory, before we start, to separate basic setup from the creation of content and navigation.
- We built the project with basic npm commands
- Added a couple required files manually
- Adjusted package.json
- **doc/index.md** to seed the content
- Launches with `npm start`
That's all it takes to get a new super-fast and powerful site, complete with a service worker, default styling, navigation, and ready to deploy as a plain old static files.
```js script
import '@rocket/launch/inline-notification/inline-notification.js';
```

View File

@@ -1 +0,0 @@
# First Pages ||10

View File

@@ -1,7 +0,0 @@
# First Pages >> Linking ||20
Standard markdown applies and you can link via
```md
[visible label](./path/to/other-file.md)
```

View File

@@ -1,49 +0,0 @@
# First Pages >> Managing sidebar ||30
The sidebar will show all the content of the current section.
## Nesting Pages
You nest by adding `>>` between parent and child.
## Sorting Pages
You can sort by adding `||xx` at the end.
e.g.
```
# Second || 20
# First || 10
```
Will be ordered as `First`, `Second`,
## How it works
Internally `# Foo >> Bar >> Baz ||20` get's converted to.
```
---
title: Bar: Baz
eleventyNavigation:
key: Foo >> Bar >> Baz
parent: Foo >> Bar
order: 20
---
```
You can also look at this live playground:
```js story
import { html } from 'lit-html';
export const headlineConverter = () => html`
<p>
<strong style="color: red;">TODO: </strong>I will become a web component that has an input and
out that live udpates
</p>
`;
```
How it then works is very similar to https://www.11ty.dev/docs/plugins/navigation/

View File

@@ -1,5 +0,0 @@
# First Pages >> Urls ||100
Urls will be represented by the folder structure...
You can use a frontmatter with permalink to override

View File

@@ -1,25 +0,0 @@
# First Pages >> Use JavaScript ||40
You can use `js script` to execute javascript (type = module)
````
```js script
console.log('foo');
```
````
This can be useful for importing web components and using them in markdown
````
```js script
import 'magic-reveal/magic-reveal.js';
<magic-reveal>
This text will get magically revealed. I can **still** use markdown as long as between the opening/closing tag there is an empty line.
</magic-reveal>
```
````
or you can use `js story`, `js preview-story`, ...

View File

@@ -1 +0,0 @@
# Go Live ||40

View File

@@ -1,51 +0,0 @@
# Go Live >> Overview ||10
A few things are usually needed before going live "for real".
## Add a not found page
When a user enters a url that does not exists then a "famous" 404 page not found error occures.
Many servers are configured to handle this automatically and to serve a 404.html page instead.
The [Rocket Lauch Preset](../../docs/presets/launch.md) ships a default 404 template you can use.
To enable it you need to creating a 404.md and use the 404 layout.
👉 `docs/404.md`
```
---
layout: 404.njk
permalink: 404.html
---
```
## Add a sitemap
A sitemap can be used to inform search engines or services about the pages your site has.
You can create one by adding this file
👉 `docs/sitemap.njk`
{% raw %}
```
---
layout: pure-content.njk
permalink: /sitemap.xml
eleventyExcludeFromCollections: true
---
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for page in collections.all %}
<url>
<loc>{{ rocketConfig.absoluteBaseUrl }}{{ page.url | url }}</loc>
<lastmod>{{ page.date.toISOString() }}</lastmod>
<changefreq>{{ page.data.changeFreq if page.data.changeFreq else "monthly" }}</changefreq>
</url>
{% endfor %}
</urlset>
```
{% endraw %}

View File

@@ -1,44 +0,0 @@
# Go Live >> Social Media ||20
Having a nice preview image for social media can be very helpful.
For that reason Rocket creates those automatically with the title, parent title, section and your logo.
It will look like this but with your logo
<img src="{{ socialMediaImage }}" width="1200" height="630" alt="Social Media Image of this page" style="border: 1px solid #000" />
There are multiple ways you can modify it.
## Setting it via frontMatter
You can create your own image and link it with something like this
```
---
socialMediaImage: path/to/my/image.png
---
```
## Providing your own text
Sometimes extracting the title + title of parent is not enough but you still want to use the "default image".
You can create an `11tydata.cjs` file next to your page. If your page is `docs/guides/overview.md` then you create a `docs/guides/overview.11tydata.cjs`.
In there you can use the default `createPageSocialImage` but provide your own values.
```js
const { createPageSocialImage } = require('@rocket/cli');
module.exports = async function () {
const socialMediaImage = await createPageSocialImage({
title: 'Learning Rocket',
subTitle: 'Have a website',
subTitle2: 'in 5 Minutes',
footer: 'Rocket Guides',
});
return {
socialMediaImage,
};
};
```

View File

@@ -1,13 +0,0 @@
const { createPageSocialImage } = require('@rocket/cli');
module.exports = async function () {
const socialMediaImage = await createPageSocialImage({
title: 'Learning Rocket',
subTitle: 'Have a website',
subTitle2: 'in 5 Minutes',
footer: 'Rocket Guides',
});
return {
socialMediaImage,
};
};

View File

@@ -1,8 +0,0 @@
---
title: Learning Rocket
eleventyNavigation:
key: Guides
order: 10
---
Rocket is a fundamentally straight forward way to generate static pages while still allowing to sprinkle in some JavaScript where needed.

View File

@@ -1,7 +0,0 @@
# Presets >> Create your own || 90
All loaded presets will be combined but you can override each file.
Take a look at `docs/_merged_includes` and override what you want to override by placing the same filename into `_includes`.
Also works for `_assets`, `_data` ...

View File

@@ -1,7 +0,0 @@
# Presets >> Getting Started ||10
Presets are ...
You can use a preset via the config...
You can load multiple presets.

View File

@@ -1 +0,0 @@
# Presets || 20

View File

@@ -1,7 +0,0 @@
# Presets >> Overriding ||20
All loaded presets will be combined but you can override each file.
Take a look at `docs/_merged_includes` and override what you want to override by placing the same filename into `_includes`.
Also works for `_assets`, `_data` ...

View File

@@ -1,3 +0,0 @@
# Presets >> Using templates ||30
Most presetse have specific entry files you can override...

View File

@@ -1,13 +0,0 @@
const { createPageSocialImage } = require('@rocket/cli');
module.exports = async function () {
const socialMediaImage = await createPageSocialImage({
title: 'Rocket',
subTitle: 'Static sites with',
subTitle2: 'a sprinkle of JavaScript.',
footer: 'A Modern Web Product',
});
return {
socialMediaImage,
};
};

View File

@@ -1,15 +0,0 @@
---
layout: pure-content.njk
permalink: /sitemap.xml
eleventyExcludeFromCollections: true
---
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for page in collections.all %}
<url>
<loc>{{ rocketConfig.absoluteBaseUrl }}{{ page.url | url }}</loc>
<lastmod>{{ page.date.toISOString() }}</lastmod>
<changefreq>{{ page.data.changeFreq if page.data.changeFreq else "monthly" }}</changefreq>
</url>
{% endfor %}
</urlset>

View File

@@ -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

View File

@@ -0,0 +1,8 @@
{
"files.exclude": {
"**/*-mdjs-generated.js": true,
},
"search.exclude": {
"**/*-mdjs-generated.js": true,
}
}

View File

@@ -0,0 +1,44 @@
# Rocket Starter Kit: Minimal
```
npx @rocket/create@latest --template 01-hydration-starter
```
> 🧑‍🚀 **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).

View File

@@ -0,0 +1,3 @@
export default /** @type {import('@rocket/cli').RocketCliOptions} */ ({
absoluteBaseUrl: 'http://localhost:8080',
});

View File

@@ -0,0 +1,23 @@
{
"name": "rocket-hydration-starter",
"version": "0.0.1",
"private": true,
"description": "Example on how to hydrate web components",
"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",
"@rocket/engine": "^0.2.0",
"@webcomponents/template-shadowroot": "^0.1.0",
"lit": "^2.3.0"
},
"@rocket/template-name": "Hydration Starter",
"imports": {
"#components/*": "./site/src/components/*"
}
}

View File

@@ -0,0 +1,34 @@
/* START - Rocket auto generated - do not touch */
export const sourceRelativeFilePath = 'index.rocket.js';
import { html, components, layout } from './recursive.data.js';
export { html, components, layout };
export async function registerCustomElements() {
// server-only components
customElements.define(
'hello-wave',
await import('#components/HelloWave.js').then(m => m.HelloWave),
);
// hydrate-able components
customElements.define(
'hello-typer',
await import('#components/HelloTyper.js').then(m => m.HelloTyper),
);
customElements.define(
'my-counter',
await import('#components/MyCounter.js').then(m => m.MyCounter),
);
}
export const needsLoader = true;
/* END - Rocket auto generated - do not touch */
export default () => html`
<h1>Hello World</h1>
<hello-wave></hello-wave>
<hello-typer loading="hydrate:onVisible"></hello-typer>
<details open>
<!-- put an open attribute on the details element to check hydration as you scroll down -->
<summary>👇</summary>
<p style="height: 120vh;">Emptiness of space</p>
</details>
<my-counter loading="hydrate:onVisible"></my-counter>
`;

View File

@@ -0,0 +1,15 @@
{
"h1": "Hello World",
"name": "Hello World",
"menuLinkText": "Hello World",
"url": "/",
"outputRelativeFilePath": "index.html",
"sourceRelativeFilePath": "index.rocket.js",
"level": 0,
"components": {
"hello-wave": "#components/HelloWave.js::HelloWave",
"hello-typer": "#components/HelloTyper.js::HelloTyper",
"my-counter": "#components/MyCounter.js::MyCounter"
},
"needsLoader": true
}

View File

@@ -0,0 +1,24 @@
import { html } from 'lit';
export { html };
export const components = {
'hello-wave': '#components/HelloWave.js::HelloWave',
'hello-typer': '#components/HelloTyper.js::HelloTyper',
'my-counter': '#components/MyCounter.js::MyCounter',
// 👆 we are using a private import defined in the package json that maps
// "#components/*": "./site/src/components/*"
// (see https://nodejs.org/api/packages.html#packages_imports)
};
export const layout = data => html`
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
</head>
<body>
${data.content()}
</body>
</html>
`;

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,12 @@
<svg width="105" height="101" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="m19.91 91.438 12.445-4.705-8.09-7.465-4.355 12.17Z" fill="#FCB736"/>
<path d="M53.778 41.196c-1.6-5.176 1.444-10.652 6.844-12.192 5.378-1.54 11.067 1.39 12.667 6.588a9.426 9.426 0 0 1 .277 4.512 9.595 9.595 0 0 1-1.86 4.151 10.076 10.076 0 0 1-3.6 2.902 10.485 10.485 0 0 1-4.573 1.033c-4.4 0-8.444-2.738-9.755-6.994ZM68.666 16.62c-9.066 2.952-19.088 8.085-27.022 16.042-6.4 6.416-11.311 12.47-15 17.71a28.068 28.068 0 0 0-3.889.32A23.592 23.592 0 0 0 18.6 51.72C9.533 54.928-.49 63.42.133 65.11c.6 1.69 6.467-1.433 11.467-1.818 2.91-.236 5.178.042 6.91.492-.577 1.154-1.066 2.138-1.421 2.93-.378.791-.645 1.369-.823 1.732l18.09 16.705c.733-.385 2.377-1.112 4.733-2.353.266.813.51 1.776.644 2.866.156 1.091.222 2.332.156 3.743-.2 4.813-3.2 10.588-1.423 11.101 1.778.514 10.178-9.475 13.134-18.33.91-2.695 1.133-5.433 1.066-7.786 5.29-3.785 11.356-8.726 17.756-15.164 7.933-7.957 12.844-17.796 15.533-26.65 2.356-7.765 2.978-14.738 2.4-19.037a22.605 22.605 0 0 0-2.155-.085c-4.511-.022-10.756.962-17.534 3.165Z" fill="url(#a)"/>
<path d="m12.4 89.535 15.911-6.545-9.777-9.026-6.134 15.57Z" fill="#D08A06"/>
<path d="m10.488 82.733 12.467-4.684-8.089-7.465-4.378 12.149ZM90.644 16.406c.044 2.823-.267 6.096-.912 9.54 7.712 10.544 10.889 24.083 7.578 37.623-5.778 23.591-29.178 38.756-53.622 35.612-.133.15-.267.278-.4.428 27.045 4.834 53.556-11.614 59.911-37.666 4.111-16.897-1.155-33.752-12.555-45.537ZM2.82 42.158C8.955 17.048 35.088 1.477 61.177 7.401c5 1.134 9.644 2.973 13.822 5.39 3.6-.791 7.067-1.262 10.067-1.347-5.822-4.492-12.756-7.828-20.511-9.582C36.665-4.47 8.733 12.172 2.177 39.014a47.973 47.973 0 0 0-.511 20.619c.111-.107.222-.193.333-.3-.8-5.56-.6-11.378.822-17.175Z" fill="#FCB736"/>
<defs>
<linearGradient id="a" x1="26.5" y1="57" x2="89" y2="13" gradientUnits="userSpaceOnUse">
<stop stop-color="#D21B1D"/>
<stop offset="1" stop-color="#C9181A"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -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"
}

View File

@@ -0,0 +1,54 @@
import { LitElement, html, css } from 'lit';
let i = 0;
const fullText = [...'to this wonderful world of progressive hydration 🤯'];
export class HelloTyper extends LitElement {
static properties = {
msg: { type: String },
counter: { type: Number },
};
constructor() {
super();
this.msg = ' ';
this.counter = 0;
}
updated(changedProperties) {
super.updated(changedProperties);
if (i < fullText.length) {
setTimeout(() => {
this.msg += fullText[i];
i += 1;
}, Math.floor(Math.random() * 50) + 40);
}
}
render() {
return html`
<p>🤔 Hello <span>${this.msg}</span>${'🤯'.repeat(this.counter)}</p>
<button @click=${this._inc}>+</button>
`;
}
_inc() {
if (i >= fullText.length) {
this.counter += 1;
}
}
static styles = [
css`
button {
font-size: 200%;
width: 64px;
height: 64px;
border: none;
border-radius: 10px;
background-color: seagreen;
color: white;
}
`,
];
}

View File

@@ -0,0 +1,13 @@
import { LitElement, html, css } from 'lit';
export class HelloWave extends LitElement {
render() {
return html`<h2>Hello 👋</h2>`;
}
static styles = css`
h2 {
color: #e03131;
}
`;
}

View File

@@ -0,0 +1,41 @@
import { LitElement, css, html } from 'lit';
export class MyCounter extends LitElement {
constructor() {
super();
this.counter = 0;
}
render() {
return html`
<button @click=${() => (this.counter -= 1)}>-</button>
<span>${this.counter}</span>
<button @click=${() => (this.counter += 1)}>+</button>
`;
}
static styles = css`
* {
font-size: 200%;
}
span {
width: 4rem;
display: inline-block;
text-align: center;
}
button {
width: 64px;
height: 64px;
border: none;
border-radius: 10px;
background-color: seagreen;
color: white;
}
`;
static properties = {
counter: { type: Number },
};
}

View File

@@ -0,0 +1,7 @@
{
"compilerOptions": {
"moduleResolution": "node",
"allowJs": true,
"checkJs": false,
}
}

22
examples/02-blog-starter/.gitignore vendored Normal file
View File

@@ -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

View File

@@ -0,0 +1,44 @@
# Rocket Starter Kit: Blog
```
npx @rocket/create@latest --template 02-blog-starter
```
> 🧑‍🚀 **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).

View File

@@ -0,0 +1,5 @@
export default /** @type {import('@rocket/cli').RocketCliOptions} */ ({
absoluteBaseUrl: 'http://localhost:8080',
longFileHeaderWidth: 100,
longFileHeaderComment: '// prettier-ignore',
});

View File

@@ -0,0 +1,24 @@
{
"name": "rocket-blog-starter",
"version": "0.0.1",
"private": true,
"description": "Get started with a new blog",
"type": "module",
"exports": {
".": "./src/index.js",
"./styles/*": "./site/src/styles/*",
"./components/*": "./site/src/components/*.js"
},
"scripts": {
"build": "rocket build",
"dev": "npm start",
"preview": "rocket preview",
"start": "NODE_DEBUG=engine:rendering rocket start --open"
},
"devDependencies": {
"@rocket/cli": "^0.20.0",
"@rocket/engine": "^0.2.0",
"lit": "^2.3.0"
},
"@rocket/template-name": "Blog Starter"
}

View File

@@ -0,0 +1,18 @@
```js server
/* START - Rocket auto generated - do not touch */
export const sourceRelativeFilePath = 'about.rocket.md';
import { html, layout, components } from './recursive.data.js';
export { html, layout, components };
export async function registerCustomElements() {
// server-only components
// prettier-ignore
customElements.define('blog-header', await import('rocket-blog-starter/components/BlogHeader').then(m => m.BlogHeader));
// prettier-ignore
customElements.define('site-footer', await import('rocket-blog-starter/components/SiteFooter').then(m => m.SiteFooter));
}
/* END - Rocket auto generated - do not touch */
```
# About
I love writing about things.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

@@ -0,0 +1,42 @@
```js server
/* START - Rocket auto generated - do not touch */
export const sourceRelativeFilePath = 'blog/hello-world.rocket.md';
import { html, components } from '../recursive.data.js';
import { layout } from './local.data.js';
export { html, layout, components };
export async function registerCustomElements() {
// server-only components
// prettier-ignore
customElements.define('blog-header', await import('rocket-blog-starter/components/BlogHeader').then(m => m.BlogHeader));
// prettier-ignore
customElements.define('blog-author', await import('rocket-blog-starter/components/BlogAuthor').then(m => m.BlogAuthor));
// prettier-ignore
customElements.define('blog-post', await import('rocket-blog-starter/components/BlogPost').then(m => m.BlogPost));
// prettier-ignore
customElements.define('site-footer', await import('rocket-blog-starter/components/SiteFooter').then(m => m.SiteFooter));
}
/* END - Rocket auto generated - do not touch */
export const title = 'Hello world!';
export const publishDate = '12 Sep 2021';
export const author = 'Thomas Allmer (@daKmoR)';
export const authorHref = 'https://twitter.com/daKmoR';
export const value = 128;
export const description = 'Just a Hello World Post!';
```
hey
This is so cool!
Do variables work ${value \* 2}?
<br>
---
<br>
There are multiple Co-Authors:
- <blog-author name="Another Author" href="https://twitter.com/daKmoR"></blog-author>

View File

@@ -0,0 +1,9 @@
/* START - Rocket auto generated - do not touch */
export const sourceRelativeFilePath = 'blog/index.rocket.js';
import { html, components } from '../recursive.data.js';
export { html, components };
/* END - Rocket auto generated - do not touch */
export const layout = false;
export default () => 'posts';

View File

@@ -0,0 +1,5 @@
// everything you export here will be automatically injected into all pages
import { LayoutBlogPost } from '../../src/layouts/LayoutBlogPost.js';
export const layout = new LayoutBlogPost();

View File

@@ -0,0 +1,36 @@
```js server
/* START - Rocket auto generated - do not touch */
export const sourceRelativeFilePath = 'blog/with-image.rocket.md';
import { html, components } from '../recursive.data.js';
import { layout } from './local.data.js';
export { html, layout, components };
export async function registerCustomElements() {
// server-only components
// prettier-ignore
customElements.define('blog-header', await import('rocket-blog-starter/components/BlogHeader').then(m => m.BlogHeader));
// prettier-ignore
customElements.define('blog-author', await import('rocket-blog-starter/components/BlogAuthor').then(m => m.BlogAuthor));
// prettier-ignore
customElements.define('blog-post', await import('rocket-blog-starter/components/BlogPost').then(m => m.BlogPost));
// prettier-ignore
customElements.define('site-footer', await import('rocket-blog-starter/components/SiteFooter').then(m => m.SiteFooter));
}
/* END - Rocket auto generated - do not touch */
export const title = 'With Image!';
export const publishDate = '13 Sep 2021';
export const author = 'Thomas Allmer (@daKmoR)';
export const authorHref = 'https://twitter.com/daKmoR';
export const value = 128;
export const description = 'Now with an image!';
export const heroImage = './assets/liftoff-flames.jpg';
export const alt = 'Liftoff Flames';
```
hey
<blog-author name="Another Author" href="https://twitter.com/daKmoR"></blog-author>
This is so cool!
Do variables work ${value \* 2}?

View File

@@ -0,0 +1,105 @@
/* START - Rocket auto generated - do not touch */
export const sourceRelativeFilePath = 'index.rocket.js';
import { html, components } from './recursive.data.js';
export { html, components };
export async function registerCustomElements() {
// server-only components
// prettier-ignore
customElements.define('blog-header', await import('rocket-blog-starter/components/BlogHeader').then(m => m.BlogHeader));
// prettier-ignore
customElements.define('blog-post-preview', await import('rocket-blog-starter/components/BlogPostPreview').then(m => m.BlogPostPreview));
// prettier-ignore
customElements.define('site-footer', await import('rocket-blog-starter/components/SiteFooter').then(m => m.SiteFooter));
}
/* END - Rocket auto generated - do not touch */
export const layout = false;
import { PageTree } from '@rocket/engine';
import { nothing } from 'lit';
import { baseHead } from '../src/parts/baseHead.js';
export const title = 'Example Blog';
export const description = 'The perfect starter for your perfect blog.';
export const permalink = 'https://example.com/';
export const pageTree = new PageTree();
await pageTree.restore(new URL('./pageTreeData.rocketGenerated.json', import.meta.url));
class BlogMenu {
/**
* @returns {TemplateResult | nothing}
*/
render() {
if (!this.currentNode || !this.currentNode.children) {
return nothing;
}
return html`
<div>
${this.currentNode.children.map(
/** @param {NodeOfPage} child */ child => html`
<blog-post-preview .post=${child.model}></blog-post-preview>
`,
)}
</div>
`;
}
}
export default () => html`
<html lang="en">
<head>
${baseHead({ title, description, permalink })}
<style>
header {
width: 100%;
height: 100%;
background-color: var(--theme-bg-offset);
display: flex;
align-items: center;
justify-content: center;
}
.content {
margin-top: 4rem;
margin-bottom: 8rem;
}
.content :global(main > * + *) {
margin-top: 1rem;
}
.intro {
padding-bottom: 4rem;
margin-bottom: 2rem;
border-bottom: 4px solid var(--theme-divider);
}
.intro > * {
margin: 0;
}
.latest {
font-size: 2.5rem;
font-weight: 700;
}
</style>
</head>
<body>
<blog-header></blog-header>
<div class="wrapper">
<main class="content">
<section class="intro">
<h1 class="latest">${title}</h1>
<p>${description}</p>
</section>
<section aria-label="Blog post list">
${pageTree.renderMenu(new BlogMenu(), 'blog/index.rocket.js')}
</section>
</main>
</div>
<site-footer></site-footer>
</body>
</html>
`;

View File

@@ -0,0 +1,110 @@
{
"title": "Example Blog",
"h1": "\n \n ",
"name": "Example Blog",
"menuLinkText": "\n \n ",
"url": "/",
"outputRelativeFilePath": "index.html",
"sourceRelativeFilePath": "index.rocket.js",
"level": 0,
"components": {
"blog-author": "rocket-blog-starter/components/BlogAuthor::BlogAuthor",
"blog-header": "rocket-blog-starter/components/BlogHeader::BlogHeader",
"blog-post": "rocket-blog-starter/components/BlogPost::BlogPost",
"blog-post-preview": "rocket-blog-starter/components/BlogPostPreview::BlogPostPreview",
"site-footer": "rocket-blog-starter/components/SiteFooter::SiteFooter"
},
"description": "The perfect starter for your perfect blog.",
"layout": false,
"permalink": "https://example.com/",
"children": [
{
"title": "",
"h1": "\n \n ",
"headlinesWithId": [
{
"text": "About",
"id": "about",
"level": 1
}
],
"name": "\n \n ",
"menuLinkText": "\n \n ",
"url": "/about/",
"outputRelativeFilePath": "about/index.html",
"sourceRelativeFilePath": "about.rocket.md",
"level": 1,
"components": {
"blog-author": "rocket-blog-starter/components/BlogAuthor::BlogAuthor",
"blog-header": "rocket-blog-starter/components/BlogHeader::BlogHeader",
"blog-post": "rocket-blog-starter/components/BlogPost::BlogPost",
"blog-post-preview": "rocket-blog-starter/components/BlogPostPreview::BlogPostPreview",
"site-footer": "rocket-blog-starter/components/SiteFooter::SiteFooter"
}
},
{
"name": "blog/index.rocket.js",
"menuLinkText": "blog/index.rocket.js",
"url": "/blog/",
"outputRelativeFilePath": "blog/index.html",
"sourceRelativeFilePath": "blog/index.rocket.js",
"level": 1,
"components": {
"blog-author": "rocket-blog-starter/components/BlogAuthor::BlogAuthor",
"blog-header": "rocket-blog-starter/components/BlogHeader::BlogHeader",
"blog-post": "rocket-blog-starter/components/BlogPost::BlogPost",
"blog-post-preview": "rocket-blog-starter/components/BlogPostPreview::BlogPostPreview",
"site-footer": "rocket-blog-starter/components/SiteFooter::SiteFooter"
},
"layout": false,
"children": [
{
"title": "Hello world!",
"h1": "\n \n ",
"name": "Hello world!",
"menuLinkText": "\n \n ",
"url": "/blog/hello-world/",
"outputRelativeFilePath": "blog/hello-world/index.html",
"sourceRelativeFilePath": "blog/hello-world.rocket.md",
"level": 2,
"author": "Thomas Allmer (@daKmoR)",
"authorHref": "https://twitter.com/daKmoR",
"components": {
"blog-author": "rocket-blog-starter/components/BlogAuthor::BlogAuthor",
"blog-header": "rocket-blog-starter/components/BlogHeader::BlogHeader",
"blog-post": "rocket-blog-starter/components/BlogPost::BlogPost",
"blog-post-preview": "rocket-blog-starter/components/BlogPostPreview::BlogPostPreview",
"site-footer": "rocket-blog-starter/components/SiteFooter::SiteFooter"
},
"description": "Just a Hello World Post!",
"publishDate": "12 Sep 2021",
"value": 128
},
{
"title": "With Image!",
"h1": "\n \n ",
"name": "With Image!",
"menuLinkText": "\n \n ",
"url": "/blog/with-image/",
"outputRelativeFilePath": "blog/with-image/index.html",
"sourceRelativeFilePath": "blog/with-image.rocket.md",
"level": 2,
"alt": "Liftoff Flames",
"author": "Thomas Allmer (@daKmoR)",
"authorHref": "https://twitter.com/daKmoR",
"components": {
"blog-author": "rocket-blog-starter/components/BlogAuthor::BlogAuthor",
"blog-header": "rocket-blog-starter/components/BlogHeader::BlogHeader",
"blog-post": "rocket-blog-starter/components/BlogPost::BlogPost",
"blog-post-preview": "rocket-blog-starter/components/BlogPostPreview::BlogPostPreview",
"site-footer": "rocket-blog-starter/components/SiteFooter::SiteFooter"
},
"description": "Now with an image!",
"heroImage": "./assets/liftoff-flames.jpg",
"publishDate": "13 Sep 2021",
"value": 128
}
]
}
]
}

View File

@@ -0,0 +1,15 @@
// everything you export here will be automatically injected into all pages
import { LayoutPage } from '../src/layouts/LayoutPage.js';
export { html } from 'lit';
export const layout = new LayoutPage();
export const components = {
'blog-author': 'rocket-blog-starter/components/BlogAuthor::BlogAuthor',
'blog-header': 'rocket-blog-starter/components/BlogHeader::BlogHeader',
'blog-post': 'rocket-blog-starter/components/BlogPost::BlogPost',
'blog-post-preview': 'rocket-blog-starter/components/BlogPostPreview::BlogPostPreview',
'site-footer': 'rocket-blog-starter/components/SiteFooter::SiteFooter',
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Some files were not shown because too many files have changed in this diff Show More