diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 77428a5ce6..8539b6fc4b 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -1,4 +1,4 @@ -name: I’m having trouble with the Eleventy documentation +name: I’m having trouble with the Build Awesome (Eleventy) documentation description: Have a problem? It might be a bug! Create a report to help us improve. body: - type: markdown diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index a97bb7719e..c59bb15126 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,13 +1,13 @@ contact_links: - - name: I’m having trouble with Eleventy! - url: https://github.com/11ty/eleventy/issues/new/choose + - name: I’m having trouble with Build Awesome or Eleventy + url: https://github.com/11ty/buildawesome/issues/new/choose about: If you have a question or suggestion regarding Eleventy (not the docs), head over to the `eleventy` repo! - - name: I built something with Eleventy and want to add it to 11ty.dev! - url: https://github.com/11ty/11ty-community/issues/new/choose + - name: I built something with Build Awesome or Eleventy and want to add it to build.awesome.me or 11ty.dev! + url: https://github.com/11ty/docs/issues/new/choose about: Sites to add to your authors page or to the Eleventy Leaderboards are now added on the `11ty/11ty-community` repository. - name: I have a feature request for the docs url: https://github.com/11ty/docs/discussions/categories/documentation-queue - about: Enhancement or new Features for the documentation. e.g. “I wish the Eleventy docs did this.” Suggest an idea! (Please search existing discussions first!) + about: Enhancement or new Features for the documentation. e.g. “I wish the docs did this.” Suggest an idea! (Please search existing discussions first!) - name: Discord Community url: https://discord.gg/GBkBy9u about: Ask the community on Discord diff --git a/README.md b/README.md index 67352a8c00..f19f2947f2 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,11 @@ -

eleventy Logo

+

Build Awesome (white balloon on a green background) Logo

-# 11ty.dev 🕚⚡️🎈🐀 +# build.awesome.me 🕚⚡️🎈🐀 -- https://www.11ty.dev/ +- https://build.awesome.me/ (v4) +- https://www.11ty.dev/ (v3 and prior) -The website and documentation for the [Eleventy static site generator](https://github.com/11ty/eleventy/). +The website and documentation for the [Build Awesome (Eleventy/11ty) site generator](https://github.com/11ty/buildawesome/). ## Running Locally diff --git a/config/activity.js b/config/activity.js index 8b866cff8a..031c503c19 100644 --- a/config/activity.js +++ b/config/activity.js @@ -15,7 +15,7 @@ export default async function () { feed.addSource( "atom", "Quick Tips", - "https://www.11ty.dev/docs/quicktips/feed.xml" + "https://build.awesome.me/docs/quicktips/feed.xml" ); feed.addSource("fediverse", "Mastodon", "@eleventy@fosstodon.org"); feed.addSource("fediverse", "Mastodon", "@11ty@neighborhood.11ty.dev"); diff --git a/config/addedin.js b/config/addedin.js index 3dd1dbcc12..b1198cefed 100644 --- a/config/addedin.js +++ b/config/addedin.js @@ -1,4 +1,6 @@ import semver from "semver"; +export { rcompare } from "semver"; + import versions from "../src/_data/versions.js"; const newestPublishedVersion = versions @@ -33,7 +35,7 @@ function isPreReleaseOf(version, releasedVersion) { } // coerce -canary to -beta or if stable version is released, strips -canary and -beta -function coerceVersion(version) { +export function coerceVersion(version) { if (!isCoreRelease(version)) { return version; } @@ -66,7 +68,7 @@ function coerceVersion(version) { return versionText; } -function addedIn(version, tag, extraClass) { +export function addedIn(version, tag, extraClass) { let beforeText = "Added in "; if (isCoreRelease(version)) { // Skip super old version notes @@ -100,8 +102,6 @@ function addedIn(version, tag, extraClass) { )}`; } -function greaterThan(first, second) { +export function greaterThan(first, second) { return semver.gt(first, second); } - -export { addedIn, coerceVersion, greaterThan }; diff --git a/config/ba-balloon.png b/config/ba-balloon.png new file mode 100644 index 0000000000..e4ce2d572d Binary files /dev/null and b/config/ba-balloon.png differ diff --git a/config/feedPlugin.js b/config/feedPlugin.js index 588223902e..08a2405f1a 100644 --- a/config/feedPlugin.js +++ b/config/feedPlugin.js @@ -1,7 +1,17 @@ import { feedPlugin } from "@11ty/eleventy-plugin-rss"; -export default function(eleventyConfig) { - eleventyConfig.addCollection("docsFeed", function (collection) { +const FEED_BASE = "https://build.awesome.me/"; + +const METADATA_OPTIONS = { + language: "en", + base: FEED_BASE, + author: { + name: "Zach Leatherman" + } +} + +export default function($config) { + $config.addCollection("docsFeed", function (collection) { return collection.getFilteredByGlob("src/docs/**/*.md").filter(entry => { // remove permalink: false templates return !!entry.url; @@ -11,7 +21,7 @@ export default function(eleventyConfig) { }); // Documentation Feed - eleventyConfig.addPlugin(feedPlugin, { + $config.addPlugin(feedPlugin, { type: "atom", outputPath: "/docs/feed.xml", collection: { @@ -19,18 +29,14 @@ export default function(eleventyConfig) { limit: 10, }, metadata: { - language: "en", - title: "Eleventy Documentation", - subtitle: "Updates to the Eleventy Documentation, sorted by recent git commits.", - base: "https://www.11ty.dev/", - author: { - name: "Zach Leatherman" - } + title: "Build Awesome Documentation", + subtitle: "Updates to the Build Awesome Documentation, sorted by recent git commits.", + ...METADATA_OPTIONS, } }); // Quick Tips Feed - eleventyConfig.addPlugin(feedPlugin, { + $config.addPlugin(feedPlugin, { type: "atom", outputPath: "/docs/quicktips/feed.xml", collection: { @@ -38,18 +44,14 @@ export default function(eleventyConfig) { limit: 0, }, metadata: { - language: "en", - title: "Eleventy Quick Tips", - subtitle: "All of the official Eleventy Quick Tips, in feed form.", - base: "https://www.11ty.dev/", - author: { - name: "Zach Leatherman" - } + title: "Build Awesome Quick Tips", + subtitle: "All of the official Build Awesome Quick Tips, in feed form.", + ...METADATA_OPTIONS, } }); // Blog Feed - eleventyConfig.addPlugin(feedPlugin, { + $config.addPlugin(feedPlugin, { type: "atom", outputPath: "/blog/feed.xml", collection: { @@ -57,13 +59,9 @@ export default function(eleventyConfig) { limit: 10, }, metadata: { - language: "en", - title: "Eleventy Blog", - subtitle: "News and updates about the Eleventy static site generator project.", - base: "https://www.11ty.dev/", - author: { - name: "Zach Leatherman" - } + title: "Build Awesome Blog", + subtitle: "News and updates about the Build Awesome site generator project.", + ...METADATA_OPTIONS, } }); } diff --git a/config/imagePlugin.js b/config/imagePlugin.js index 572d2837d5..4eaba6c4fb 100644 --- a/config/imagePlugin.js +++ b/config/imagePlugin.js @@ -76,12 +76,12 @@ function isRecentPost(date) { return (Date.now() - date.getTime()) < ONE_DAY*14; } -export default function(eleventyConfig) { - eleventyConfig.addFilter("productionUrl", productionUrl); +export default function($config) { + $config.addFilter("productionUrl", productionUrl); // Resize and transform an image format, return URL to that image // Supports Font Awesome icons via protocol handler (e.g. `fas:font-awesome-flag`) - eleventyConfig.addFilter("getOpengraphImageUrl", async function({ url, date }, screenshotCacheBustParam) { + $config.addFilter("getOpengraphImageUrl", async function({ url, date }, screenshotCacheBustParam) { // skip optimization of recent posts that have a cache buster (we don’t want to screenshot pages that aren’t deployed yet) if(isRecentPost(date) && screenshotCacheBustParam) { return getScreenshotUrl(url, screenshotCacheBustParam); @@ -99,12 +99,12 @@ export default function(eleventyConfig) { return productionUrl(formatStats.url); }); - eleventyConfig.addPlugin(eleventyImageTransformPlugin, imageOptions); + $config.addPlugin(eleventyImageTransformPlugin, imageOptions); if(IS_COPY_CACHE_FOLDER) { // We aren’t using passthrough file copy here because it globs too early to catch files created during the build - eleventyConfig.on("eleventy.after", () => { - fs.cpSync(".cache/@11ty/img/", path.join(eleventyConfig.directories.output, "img/built/"), { recursive: true }); + $config.on("eleventy.after", () => { + fs.cpSync(".cache/@11ty/img/", path.join($config.directories.output, "img/built/"), { recursive: true }); }); } }; diff --git a/config/markdownPlugin.js b/config/markdownPlugin.js index ae704852ec..8a36950340 100644 --- a/config/markdownPlugin.js +++ b/config/markdownPlugin.js @@ -17,15 +17,15 @@ function removeExtraText(s) { return newStr; } -export default function (eleventyConfig) { - eleventyConfig.addPlugin(IdAttributePlugin, { +export default function ($config) { + $config.addPlugin(IdAttributePlugin, { // custom slugify function, otherwise we use Eleventy’s built-in `slugify` filter. slugify: markdownItSlugify, selector: "h1,h2,h3,h4,h5,h6", // default }); let mdIt; - eleventyConfig.amendLibrary("md", (mdLib) => { + $config.amendLibrary("md", (mdLib) => { mdIt = mdLib; mdLib.use(markdownItToc, { includeLevel: [2, 3], @@ -50,18 +50,23 @@ export default function (eleventyConfig) { return mdIt.renderInline(content); }); - eleventyConfig.addPairedShortcode("markdown", renderMarkdownInline); - eleventyConfig.addFilter("markdown", renderMarkdownInline); + $config.addPairedShortcode("markdown", renderMarkdownInline); + $config.addFilter("markdown", renderMarkdownInline); // WebC migration: callout.webc - eleventyConfig.addPairedShortcode( + $config.addPairedShortcode( "callout", function (content, level = "", format = "html", customLabel = "") { - if (format === "md") { - content = mdIt.renderInline(content); - } else if (format === "md-block") { + if(content.includes("](") && !content.includes(" diff --git a/config/minification.js b/config/minification.js index c7cf6ff9a5..9115b418c1 100644 --- a/config/minification.js +++ b/config/minification.js @@ -23,8 +23,8 @@ export async function minifyJavaScript(code) { return minify(code).then(result => result.code); } -export default function (eleventyConfig) { - eleventyConfig.addFilter("jsmin", async function(code) { +export default function ($config) { + $config.addFilter("jsmin", async function(code) { if (process.env.ELEVENTY_RUN_MODE === "build") { return minifyJavaScript(code); } @@ -32,7 +32,7 @@ export default function (eleventyConfig) { return `/* [11ty/docs] minification skipped during dev mode */\n${code}`; }); - eleventyConfig.addFilter("cssmin", function (inputCode) { + $config.addFilter("cssmin", function (inputCode) { if (process.env.ELEVENTY_RUN_MODE === "build") { let { code } = transform({ // filename: undefined, diff --git a/config/sidebarPlugin.js b/config/sidebarPlugin.js index 06d095f016..5c242a4627 100644 --- a/config/sidebarPlugin.js +++ b/config/sidebarPlugin.js @@ -24,14 +24,14 @@ const navBreadcrumbsFn = memoize(function(key) { return navigation.findBreadcrumbs(this.ctx.collections.all, key, {includeSelf: true}) }); -export default function(eleventyConfig) { +export default function($config) { - eleventyConfig.on("eleventy.after", () => { + $config.on("eleventy.after", () => { memoizeClear(navFn); memoizeClear(navFilteredFn); memoizeClear(navBreadcrumbsFn); }) - eleventyConfig.addFilter("nav", navFn); - eleventyConfig.addFilter("navFiltered", navFilteredFn); - eleventyConfig.addFilter("navBreadcrumbs", navBreadcrumbsFn); + $config.addFilter("nav", navFn); + $config.addFilter("navFiltered", navFilteredFn); + $config.addFilter("navBreadcrumbs", navBreadcrumbsFn); }; diff --git a/config/syntaxHighlightPlugin.js b/config/syntaxHighlightPlugin.js index 4a40d1585b..3a87d51e1f 100644 --- a/config/syntaxHighlightPlugin.js +++ b/config/syntaxHighlightPlugin.js @@ -32,9 +32,7 @@ function highlightCode(code, language, attrs = {}, options = {}) { attrs.id ??= `highlighted-source-${options.highlightCounter}`; // When more Web Awesome components are in place, remove this `import` and re-enable Web Awesome script/link in base.njk - let preamble = `${copyButtonEnabled ? ` - -` : ""}`; + let preamble = `${copyButtonEnabled ? `` : ""}`; if(inputPath?.endsWith(".md")) { let ticks = rawMarkdown ? QUADRUPLE_TICK : TRIPLE_TICK; @@ -52,20 +50,20 @@ ${ticks}\n\n${closeTag}`; return `${openTag}${preamble}${syntaxHighlightFunction(code, language, lineHighlights, o)}${closeTag}`; } -export default function(eleventyConfig) { +export default function($config) { let highlightCounter = 0; - eleventyConfig.on("eleventy.before", () => { + $config.on("eleventy.before", () => { highlightCounter = 0; }); - eleventyConfig.addPairedShortcode("highlight", function(code, language) { + $config.addPairedShortcode("highlight", function(code, language) { return highlightCode(code, language, undefined, { highlightCounter: ++highlightCounter, inputPath: this.page.inputPath, }); }); - eleventyConfig.addFilter("highlight", function(code, language, attrs = {}, options = {}) { + $config.addFilter("highlight", function(code, language, attrs = {}, options = {}) { let o = Object.assign({}, options); o.highlightCounter = ++highlightCounter; o.inputPath = this.page.inputPath; @@ -74,7 +72,7 @@ export default function(eleventyConfig) { }); // This wires up Markdown’s triple-tick syntax - eleventyConfig.amendLibrary("md", (mdLib) => { + $config.amendLibrary("md", (mdLib) => { let o = Object.assign({}, HIGHLIGHT_OPTIONS); o.trim = false; mdLib.set({ diff --git a/eleventy.config.js b/eleventy.config.js index de95a0bec0..1aa23f33e4 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -19,7 +19,7 @@ import fontAwesomePlugin from "@11ty/font-awesome"; import { getImageColors } from "@11ty/image-color"; import imagePlugin from "./config/imagePlugin.js"; -import { addedIn, coerceVersion, greaterThan } from "./config/addedin.js"; +import { addedIn, coerceVersion, greaterThan, rcompare as compareVersion } from "./config/addedin.js"; import minificationLocalPlugin, { minifyJavaScriptFile } from "./config/minification.js"; import { bundle, bundleModulePath } from "./config/bundleJavaScript.js"; import cleanName from "./config/cleanAuthorName.js"; @@ -222,48 +222,48 @@ function findBy(data, path, value) { }); } -export default async function (eleventyConfig) { - eleventyConfig.setServerPassthroughCopyBehavior("passthrough"); +export default async function ($config) { + $config.setServerPassthroughCopyBehavior("passthrough"); if (process.env.NODE_ENV === "production") { // Skip on production - eleventyConfig.ignores.add("src/admin.md"); + $config.ignores.add("src/admin.md"); } else { // Skip on local dev - eleventyConfig.ignores.add("src/api/*"); - eleventyConfig.ignores.add("src/authors/author-pages.md"); - eleventyConfig.ignores.add("src/firehose.11ty.js"); - eleventyConfig.ignores.add("src/firehose-feed.11ty.js"); + $config.ignores.add("src/api/*"); + $config.ignores.add("src/authors/author-pages.md"); + $config.ignores.add("src/firehose.11ty.js"); + $config.ignores.add("src/firehose-feed.11ty.js"); } - eleventyConfig.setServerOptions({ + $config.setServerOptions({ showVersion: false, domDiff: false, }); /* Plugins */ - eleventyConfig.addPlugin(syntaxHighlightPlugin); + $config.addPlugin(syntaxHighlightPlugin); - eleventyConfig.addPlugin(fontAwesomePlugin, { + $config.addPlugin(fontAwesomePlugin, { defaultAttributes: { class: "fa11ty-icon" } }); - eleventyConfig.addPlugin(imagePlugin); - eleventyConfig.addPlugin(markdownPlugin); + $config.addPlugin(imagePlugin); + $config.addPlugin(markdownPlugin); - eleventyConfig.addPlugin(minificationLocalPlugin); - eleventyConfig.addPlugin(RenderPlugin); + $config.addPlugin(minificationLocalPlugin); + $config.addPlugin(RenderPlugin); - eleventyConfig.htmlTransformer.posthtmlProcessOptions.closingSingleTag = "slash"; - // eleventyConfig.addPlugin(PreserveClosingTagsPlugin, { + $config.htmlTransformer.posthtmlProcessOptions.closingSingleTag = "slash"; + // $config.addPlugin(PreserveClosingTagsPlugin, { // tags: ["meta"] // }); - eleventyConfig.addPlugin(InputPathToUrlTransformPlugin); + $config.addPlugin(InputPathToUrlTransformPlugin); - eleventyConfig.addPlugin(eleventyWebcPlugin, { + $config.addPlugin(eleventyWebcPlugin, { components: [ "./src/_includes/components/*.webc", // "npm:@11ty/is-land/*.webc", @@ -274,15 +274,15 @@ export default async function (eleventyConfig) { // Feeds (only in production) if (process.env.NODE_ENV === "production") { - feedPlugin(eleventyConfig); + feedPlugin($config); } /* End plugins */ - eleventyConfig.addPlugin(navigationPlugin); - eleventyConfig.addPlugin(sidebarPlugin); + $config.addPlugin(navigationPlugin); + $config.addPlugin(sidebarPlugin); - eleventyConfig.addShortcode("getColorsForUrl", async (url) => { + $config.addShortcode("getColorsForUrl", async (url) => { if(process.env.ELEVENTY_RUN_MODE !== "build") { return []; } @@ -299,28 +299,28 @@ export default async function (eleventyConfig) { }) }); - eleventyConfig.addFilter("modulo", function (num, div) { + $config.addFilter("modulo", function (num, div) { return num % div; }); - eleventyConfig.addFilter("throwErrorWhenMissing", function (arg, msg) { + $config.addFilter("throwErrorWhenMissing", function (arg, msg) { if(arg) { return; } throw new Error(msg + ` (via throwErrorWhenMissing filter on ${this.page.url})`); }); - eleventyConfig.addFilter("coerceVersion", coerceVersion); - eleventyConfig.addNunjucksGlobal("semverGreaterThan", greaterThan); - eleventyConfig.addShortcode("addedin", addedIn); + $config.addFilter("coerceVersion", coerceVersion); + $config.addNunjucksGlobal("semverGreaterThan", greaterThan); + $config.addShortcode("addedin", addedIn); - eleventyConfig.addShortcode( + $config.addShortcode( "generatoravatar", shortcodes.getGeneratorImageHtml ); - eleventyConfig.addShortcode("hostavatar", shortcodes.getHostingImageHtml); - eleventyConfig.addShortcode("indieavatar", shortcodes.getIndieAvatarHtml); + $config.addShortcode("hostavatar", shortcodes.getHostingImageHtml); + $config.addShortcode("indieavatar", shortcodes.getIndieAvatarHtml); - eleventyConfig.addShortcode("indieweblink", function (content, url, iconUrl) { + $config.addShortcode("indieweblink", function (content, url, iconUrl) { if (!url) { return content; } @@ -329,14 +329,14 @@ export default async function (eleventyConfig) { return `${imgHtml}${content}`; }); - eleventyConfig.addShortcode("emoji", function (emoji, alt = "") { + $config.addShortcode("emoji", function (emoji, alt = "") { return ( `` + (alt ? `${alt}` : "") ); }); - eleventyConfig.addFilter("canonicalTwitterUrl", (url) => { + $config.addFilter("canonicalTwitterUrl", (url) => { try { return tweetbackTransform(url); } catch (e) { @@ -345,14 +345,14 @@ export default async function (eleventyConfig) { }); let ref = 0; - eleventyConfig.on("eleventy.before", () => { + $config.on("eleventy.before", () => { ref = 0; }); - eleventyConfig.addShortcode("uid", () => { + $config.addShortcode("uid", () => { return `id-${++ref}`; }); - eleventyConfig.addFilter("esmToCjs", memoize((sourceCode) => { + $config.addFilter("esmToCjs", memoize((sourceCode) => { try { let it = new ImportTransformer(sourceCode); let outputCode = it.transformToRequire(); @@ -365,39 +365,37 @@ export default async function (eleventyConfig) { } })); - eleventyConfig.addShortcode("communityavatar", shortcodes.communityAvatar); - eleventyConfig.addShortcode( + $config.addShortcode("communityavatar", shortcodes.communityAvatar); + $config.addShortcode( "opencollectiveavatar", shortcodes.getOpenCollectiveAvatarHtml ); - eleventyConfig.addShortcode( + $config.addShortcode( "getScreenshotHtml", shortcodes.getScreenshotHtml ); - eleventyConfig.addShortcode( + $config.addShortcode( "codetitle", function (title, heading = "Filename") { return `
${heading} ${title}
`; } ); - eleventyConfig.addPairedShortcode("minilink", function (text, href) { + $config.addPairedShortcode("minilink", function (text, href) { return `${text}`; }); // WebC migration: TODO remove this after full conversion - eleventyConfig.addPassthroughCopy({ + $config.addPassthroughCopy({ "src/js/*.js": "js/", + "src/css/type/*": "css/fonts/", // cera round pro "src/_includes/components/throbber.js": "js/throbber.js", "src/_includes/components/throbber.css": "css/throbber.css", - "src/css/fonts/BenchNine-Bold-kern-latin.woff2": "css/fonts/benchnine-bold.woff2", - "src/css/fonts/RobotoMono-Regular-kern-latin.woff2": "css/fonts/robotomono-regular.woff2", - "src/css/fonts/RobotoMono-Regular-kern-latinext.woff2": "css/fonts/robotomono-regular-ext.woff2", "src/opensearch.xml": "opensearch.xml", }); - eleventyConfig.addPassthroughCopy({ + $config.addPassthroughCopy({ [resolveModule("@11ty/logo/assets/logo-bg.svg")]: "img/logo-github.svg", // [resolveModule("@11ty/logo/assets/open-graph.jpg")]: "img/open-graph.jpg", [resolveModule("@11ty/logo/img/logo-784x1093.png")]: "img/logo.png", @@ -416,32 +414,30 @@ export default async function (eleventyConfig) { // Eleventy Editor // Minification only happens in production - await minifyJavaScriptFile(resolveModule("@11ty/client"), path.join(eleventyConfig.directories.output, "js/eleventy.core.browser.js")); - await minifyJavaScriptFile(resolveModule("@11ty/client/md"), path.join(eleventyConfig.directories.output, "js/eleventy.engine-md.browser.js")); - await minifyJavaScriptFile(resolveModule("@11ty/client/liquid"), path.join(eleventyConfig.directories.output, "js/eleventy.engine-liquid.browser.js")); - await bundleModulePath("@awesome.me/webawesome/dist/components/copy-button/copy-button.js", path.join(eleventyConfig.directories.output, "js/wa-copy-button.js")); - - eleventyConfig.addPassthroughCopy("src/img"); - eleventyConfig.addPassthroughCopy("src/blog/*.png"); - eleventyConfig.addPassthroughCopy("src/blog/pretty-atom-feed-v3.xsl"); - eleventyConfig.addPassthroughCopy("src/favicon.ico"); - eleventyConfig.addPassthroughCopy({ + await minifyJavaScriptFile(resolveModule("@11ty/client"), path.join($config.directories.output, "js/eleventy.core.browser.js")); + await minifyJavaScriptFile(resolveModule("@11ty/client/md"), path.join($config.directories.output, "js/eleventy.engine-md.browser.js")); + await minifyJavaScriptFile(resolveModule("@11ty/client/liquid"), path.join($config.directories.output, "js/eleventy.engine-liquid.browser.js")); + await bundleModulePath("@awesome.me/webawesome/dist/components/copy-button/copy-button.js", path.join($config.directories.output, "js/wa-copy-button.js")); + + $config.addPassthroughCopy("src/img"); + $config.addPassthroughCopy("src/favicon.ico"); + $config.addPassthroughCopy({ "./node_modules/@awesome.me/webawesome/dist-cdn/": "/static/web-awesome/", }); - eleventyConfig.addFilter("matchbannerlink", (links, text) => { + $config.addFilter("matchbannerlink", (links, text) => { return links.find((entry) => entry.label.indexOf(text) !== -1); }); - eleventyConfig.addFilter("lighthouseGoodDataCheck", function (data) { + $config.addFilter("lighthouseGoodDataCheck", function (data) { return !!data && !("error" in data); }); - eleventyConfig.addFilter("lighthousePerfectScore", function (data) { + $config.addFilter("lighthousePerfectScore", function (data) { return !!data && !("error" in data) && data.lighthouse.total === 400; }); - eleventyConfig.addFilter("cardScreenshotHtml", async function (site) { + $config.addFilter("cardScreenshotHtml", async function (site) { let url = site.demo || site.url; if(!url) { return `
`; @@ -452,7 +448,7 @@ export default async function (eleventyConfig) { return `
${await shortcodes.getScreenshotHtml(site.fileSlug, url, null, site.screenshotSize, site.screenshotAspectRatio)}
`; }); - eleventyConfig.addFilter("speedlifyHash", function (site) { + $config.addFilter("speedlifyHash", function (site) { if (!site || !site.url) { // console.log( "speedlifyHash: Missing url for", site.name ); return; @@ -461,29 +457,29 @@ export default async function (eleventyConfig) { return shortHash(site.url); }); - eleventyConfig.addFilter("toJSON", function (obj) { + $config.addFilter("toJSON", function (obj) { return JSON.stringify(obj); }); - eleventyConfig.addFilter("toSearchEntry", function (str) { + $config.addFilter("toSearchEntry", function (str) { return str .replace(/]*>#<\/a\>/g, "") .replace(/[\t]{2,}/g, "\t") // change \t\t\t\t\t\t to \t .replace(/[\n]{2,}/g, "\n"); // change \n\n\n\n\n to \n }); - eleventyConfig.addFilter("humanReadableNum", function (num) { + $config.addFilter("humanReadableNum", function (num) { if (num || num === 0) { return HumanReadable.toHumanString(num); } return ""; }); - eleventyConfig.addFilter("commaNumber", function (num) { + $config.addFilter("commaNumber", function (num) { return commaNumber(num); }); - eleventyConfig.addFilter("displayPrice", function (num) { + $config.addFilter("displayPrice", function (num) { return new Intl.NumberFormat("en-US", { style: "currency", currency: "USD", @@ -491,9 +487,9 @@ export default async function (eleventyConfig) { }).format(num); }); - eleventyConfig.addFilter("displayUrl", displayUrl); + $config.addFilter("displayUrl", displayUrl); - eleventyConfig.addShortcode( + $config.addShortcode( "templatelangs", function (languages, page, whitelist, anchor, isinline) { let parentTag = isinline ? "span" : "ul"; @@ -516,10 +512,10 @@ export default async function (eleventyConfig) { ); // WebC migration: eleventy-version.webc - eleventyConfig.addShortcode( + $config.addShortcode( "latestVersion", function (versions, config, prefix = "v") { - for (let version of versions) { + for (let version of versions.sort((v1, v2) => compareVersion(v1.tag, v2.tag))) { if (version.channel && version.channel !== "latest") { continue; } @@ -546,7 +542,7 @@ export default async function (eleventyConfig) { } // Thanks to https://stackoverflow.com/questions/6274339/how-can-i-shuffle-an-array - eleventyConfig.addFilter("shuffle", (arr = [], sliceNum = undefined) => { + $config.addFilter("shuffle", (arr = [], sliceNum = undefined) => { if (Array.isArray(arr)) { if (!sliceNum) { return randomizeArray(arr); @@ -576,7 +572,7 @@ export default async function (eleventyConfig) { } // Thanks to https://stackoverflow.com/questions/6274339/how-can-i-shuffle-an-array - eleventyConfig.addFilter("randompick", (arr) => { + $config.addFilter("randompick", (arr) => { if (Array.isArray(arr)) { return getRandomArrayEntry(arr); } @@ -585,7 +581,7 @@ export default async function (eleventyConfig) { return arr[randkey]; }); - eleventyConfig.addFilter("getsize", (arr) => { + $config.addFilter("getsize", (arr) => { if (Array.isArray(arr)) { return arr.length; } @@ -593,7 +589,7 @@ export default async function (eleventyConfig) { return Object.keys(arr).length; }); - eleventyConfig.addShortcode("addToSampleSites", function () { + $config.addShortcode("addToSampleSites", function () { return `Want to add your site to this list?`; }); @@ -608,20 +604,20 @@ export default async function (eleventyConfig) { return avatarHtml + testimonial.name; } - eleventyConfig.addShortcode("testimonialNameHtml", testimonialNameHtml); + $config.addShortcode("testimonialNameHtml", testimonialNameHtml); - eleventyConfig.addShortcode("testimonial", function (testimonial) { + $config.addShortcode("testimonial", function (testimonial) { let nameHtml = testimonialNameHtml(testimonial); return `

${ !testimonial.indirect ? `“` : `` }${testimonial.text}${!testimonial.indirect ? `” —${shortcodes.link(testimonial.source, nameHtml)}` : ``}

`; }); - eleventyConfig.addFilter("filterBusinessPeople", function (authors) { + $config.addFilter("filterBusinessPeople", function (authors) { return Object.values(authors).filter((entry) => !!entry.business_url); }); - eleventyConfig.addFilter("isBusinessPerson", function (supporter) { + $config.addFilter("isBusinessPerson", function (supporter) { return ( supporter && supporter.isMonthly && @@ -630,7 +626,7 @@ export default async function (eleventyConfig) { ); }); - eleventyConfig.addFilter( + $config.addFilter( "isSupporter", function ( supporters, @@ -658,11 +654,11 @@ export default async function (eleventyConfig) { } ); - eleventyConfig.addFilter("toISO", (dateObj) => { + $config.addFilter("toISO", (dateObj) => { return dateObj.toISOString(); }); - eleventyConfig.addFilter("newsDate", (dateObj, format = "yyyy LLLL dd") => { + $config.addFilter("newsDate", (dateObj, format = "yyyy LLLL dd") => { if (typeof dateObj === "string") { return DateTime.fromISO(dateObj).toFormat(format); } else if (typeof dateObj === "number") { @@ -671,7 +667,7 @@ export default async function (eleventyConfig) { return DateTime.fromJSDate(dateObj).toFormat(format); }); - eleventyConfig.addFilter("objectFilterNot", (obj, compareKey) => { + $config.addFilter("objectFilterNot", (obj, compareKey) => { let newObj = {}; for (let j in obj) { if (!obj[j][compareKey]) { @@ -681,7 +677,7 @@ export default async function (eleventyConfig) { return newObj; }); - eleventyConfig.addFilter("rankSortByNumericKey", (arr, ...keys) => { + $config.addFilter("rankSortByNumericKey", (arr, ...keys) => { return arr .filter((entry) => true) .sort((a, b) => { @@ -695,7 +691,7 @@ export default async function (eleventyConfig) { }); }); - eleventyConfig.addFilter( + $config.addFilter( "calc", (sites, type, key, greaterThanOrEqualTo = 1) => { let sum = 0; @@ -736,9 +732,9 @@ export default async function (eleventyConfig) { } ); - eleventyConfig.addFilter("findBy", findBy); + $config.addFilter("findBy", findBy); - eleventyConfig.addFilter("findSiteDataByUrl", (url, sites) => { + $config.addFilter("findSiteDataByUrl", (url, sites) => { let sitesArr = sites; if (!Array.isArray(sitesArr)) { sitesArr = Object.values(sites); @@ -760,34 +756,34 @@ export default async function (eleventyConfig) { } }); - eleventyConfig.addFilter("repeat", (number, str) => { + $config.addFilter("repeat", (number, str) => { if (number > 0) { return str + new Array(number).join(str); } return ""; }); - eleventyConfig.addFilter("values", (obj) => { + $config.addFilter("values", (obj) => { return Object.values(obj); }); - eleventyConfig.addFilter("sortAuthors", (authors) => { + $config.addFilter("sortAuthors", (authors) => { return Object.values(authors).filter(author => !author.name.startsWith("twitter:")).sort((a, b) => { return b.sites.length - a.sites.length; }); }); - eleventyConfig.addFilter("cleanAuthorName", cleanName); + $config.addFilter("cleanAuthorName", cleanName); - eleventyConfig.addFilter("head", (arr, num) => { + $config.addFilter("head", (arr, num) => { return num ? arr.slice(0, num) : arr; }); - eleventyConfig.addFilter("headafter", (arr, num) => { + $config.addFilter("headafter", (arr, num) => { return num ? arr.slice(num) : arr; }); - eleventyConfig.addFilter("filterSupportersActive", (supporters) => { + $config.addFilter("filterSupportersActive", (supporters) => { // workaround a bug in the open collective API const ALLOWED_SLUGS = [ "superluxuryreps" @@ -799,7 +795,7 @@ export default async function (eleventyConfig) { }); // Sort an object that has `order` props in values. Return an array - eleventyConfig.addFilter("sortObjectByOrder", (obj) => { + $config.addFilter("sortObjectByOrder", (obj) => { let arr = []; for (let key in obj) { arr.push(obj[key]); @@ -810,12 +806,12 @@ export default async function (eleventyConfig) { }); // Case insensitive check an object for a key - eleventyConfig.addFilter("has", objectHas); + $config.addFilter("has", objectHas); - let slugify = eleventyConfig.getFilter("slugify"); + let slugify = $config.getFilter("slugify"); // Case insensitive check an object for a key - eleventyConfig.addShortcode("authorLink", (authors, name) => { + $config.addShortcode("authorLink", (authors, name) => { let html = []; if (name) { @@ -837,7 +833,7 @@ export default async function (eleventyConfig) { return html.join(""); }); - eleventyConfig.addFilter( + $config.addFilter( "convertCommunityLinkToSiteCard", function ({ url, author, title }) { /* @@ -865,7 +861,7 @@ to: } ); - eleventyConfig.addShortcode( + $config.addShortcode( "youtubeEmbed", function (slug, label, startTime) { if (label) { @@ -902,15 +898,7 @@ to: } ); - eleventyConfig.addFilter("injectAvatars", function (content) { - return content - .split("Eleventy") - .join( - shortcodes.getIndieAvatarHtml("https://www.11ty.dev/") + "Eleventy" - ); - }); - - eleventyConfig.addFilter("packageManagerCodeTransform", (content, type) => { + $config.addFilter("packageManagerCodeTransform", (content, type) => { if(type === "yarn") { return content.replaceAll("npx @11ty/", "yarn exec "); } else if(type === "pnpm") { @@ -919,7 +907,7 @@ to: return content; }); - eleventyConfig.addFilter("opencollectiveTier", (supporters = [], tier = undefined) => { + $config.addFilter("opencollectiveTier", (supporters = [], tier = undefined) => { return supporters.filter(s => s.isMonthly && (!tier || s?.tier?.slug == tier)); }); @@ -930,7 +918,7 @@ to: * * Floor for minutes/hours, Round for days and weeks */ - eleventyConfig.addFilter("timeDiff", dateStr => { + $config.addFilter("timeDiff", dateStr => { let diff = (Date.now() - Date.parse(dateStr)) / 1000; let day_diff = Math.round(diff / 86400); @@ -952,7 +940,7 @@ to: return result; }) - eleventyConfig.addFilter("normalizeVersion", (version = "") => { + $config.addFilter("normalizeVersion", (version = "") => { if(version.startsWith("v")) { return version.slice(1); } @@ -961,7 +949,7 @@ to: // Remove after https://github.com/11ty/eleventy/issues/3668 const TIME_ZONE = "America/Chicago"; - eleventyConfig.addDateParsing(function(dateValue) { + $config.addDateParsing(function(dateValue) { let localDate; if(dateValue instanceof Date) { // override YAML dates localDate = DateTime.fromJSDate(dateValue, { zone: "utc" }).setZone(TIME_ZONE, { keepLocalTime: true }); diff --git a/package-lock.json b/package-lock.json index a07735c5dd..d079d3874f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { - "name": "@11ty/website", - "version": "2.0.0", + "name": "@11ty/docs", + "version": "4.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@11ty/website", - "version": "2.0.0", + "name": "@11ty/docs", + "version": "4.0.0", "license": "MIT", "dependencies": { "@11ty/client": "4.0.0-alpha.10", diff --git a/package.json b/package.json index edae3388b0..0d35095c75 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { - "name": "@11ty/website", - "version": "2.0.0", + "name": "@11ty/docs", + "version": "4.0.0", "private": true, - "description": "The website at 11ty.dev", + "description": "The docs website for Build Awesome at build.awesome.me", "type": "module", "engines": { "node": ">=22.15" @@ -11,7 +11,7 @@ "check-links": "npx check-html-links _site", "build": "npx @11ty/eleventy --quiet && npm run create-search-index", "build-production": "npm run get-new-data && NODE_ENV=production npx @11ty/eleventy && npm run create-search-index", - "start": "npx @11ty/eleventy --serve --quiet --port=8091 --incremental", + "start": "npx @11ty/eleventy --serve --quiet --port=8091", "start-production": "NODE_ENV=production npx @11ty/eleventy --serve --quiet --port=8091", "create-search-index": "npx pagefind --site \"_site\" --glob \"{docs,blog}/**/*.html\"", "get-new-data": "rm -rf ./src/_data/builtwith/ && npx degit github:11ty/11ty-community/built-with-eleventy src/_data/builtwith/", diff --git a/src/404.md b/src/404.md index d8fb48295d..e940d4b3f8 100644 --- a/src/404.md +++ b/src/404.md @@ -8,12 +8,12 @@ eleventyExcludeFromCollections: true We couldn’t find the content you were looking for. -- Confused about what Eleventy is? Check out the [Project Overview](/docs/). -- Want to [Get Started using Eleventy?](/docs/). +- Confused about what Build Awesome is? Check out the [project overview](/). +- Want to [Get Started using Build Awesome?](/docs/). ## Testimonials -Listen to what these happy developers are saying about Eleventy: +Listen to what these happy developers are saying about Build Awesome:
diff --git a/src/_data/community/api-opengraph-zachleat.js b/src/_data/community/api-opengraph-zachleat.js index 25197ba364..991d15c34d 100644 --- a/src/_data/community/api-opengraph-zachleat.js +++ b/src/_data/community/api-opengraph-zachleat.js @@ -1,6 +1,6 @@ export default { url: "https://www.zachleat.com/web/api-opengraph-image/", author: "zachleat", - title: "Recycling Open Graph Images for display on my Web Site", + title: "Recycling Open Graph Images for display on my Website", key: "api-services-opengraph", }; diff --git a/src/_data/config.js b/src/_data/config.js index 4785e789b5..29c4111da6 100644 --- a/src/_data/config.js +++ b/src/_data/config.js @@ -1,11 +1,10 @@ export default { outdated: false, - prerelease: false, + prerelease: true, githubEdit: "https://github.com/11ty/docs/tree/main/", now: new Date(), env: process.env.NODE_ENV, - origin: "https://www.11ty.dev", // important: no trailing slash on URL + origin: "https://build.awesome.me", // important: no trailing slash on URL kickstarterUrl: "https://www.kickstarter.com/projects/fontawesome/build-awesome-pro?ref=43ttgb", - kickstarterLaunchDate: (new Date("2026-04-28T15:00:00Z")).toISOString(), kickstarterCloseDate: (new Date("2026-05-28T21:00:00Z")).toISOString(), }; diff --git a/src/_data/github.js b/src/_data/github.js index 1cefe3db3b..e889adebdc 100644 --- a/src/_data/github.js +++ b/src/_data/github.js @@ -7,7 +7,7 @@ export default async function () { try { // https://developer.github.com/v3/repos/#get let json = await Fetch( - "https://api.github.com/repos/11ty/eleventy", + "https://api.github.com/repos/11ty/buildawesome", { type: "json", duration: CACHE_DURATION, diff --git a/src/_data/githubReleases.js b/src/_data/githubReleases.js index fbc44b5a42..92d1dc964c 100644 --- a/src/_data/githubReleases.js +++ b/src/_data/githubReleases.js @@ -35,8 +35,8 @@ async function getPagedGitHubData(url, pageIndex = 1) { export default async function () { try { // https://developer.github.com/v3/repos/#get - let releasesJson = await getPagedGitHubData("https://api.github.com/repos/11ty/eleventy/releases"); - let tagsJson = await getPagedGitHubData("https://api.github.com/repos/11ty/eleventy/tags"); + let releasesJson = await getPagedGitHubData("https://api.github.com/repos/11ty/buildawesome/releases"); + let tagsJson = await getPagedGitHubData("https://api.github.com/repos/11ty/buildawesome/tags"); let releases = releasesJson.filter(entry => { // no drafts diff --git a/src/_data/starters/eleventy-base-blog.json b/src/_data/starters/eleventy-base-blog.json index febdcf6bd0..3ff40d2941 100644 --- a/src/_data/starters/eleventy-base-blog.json +++ b/src/_data/starters/eleventy-base-blog.json @@ -1,7 +1,7 @@ { "url": "https://github.com/11ty/eleventy-base-blog", "name": "eleventy-base-blog", - "description": "How to build a blog web site with Eleventy.", + "description": "How to build a blog website with Eleventy.", "author": "eleven_ty", "demo": "https://demo-base-blog.11ty.dev/", "official": true, diff --git a/src/_data/starters/eleventy-netlify-boilerplate.json b/src/_data/starters/eleventy-netlify-boilerplate.json index 49fd19c901..103506df80 100644 --- a/src/_data/starters/eleventy-netlify-boilerplate.json +++ b/src/_data/starters/eleventy-netlify-boilerplate.json @@ -1,7 +1,7 @@ { "url": "https://github.com/danurbanowicz/eleventy-netlify-boilerplate", "name": "eleventy-netlify-boilerplate", - "description": "A template for building a simple blog web site with Eleventy and deploying it to Netlify. Includes Netlify CMS and Netlify Forms.", + "description": "A template for building a simple blog website with Eleventy and deploying it to Netlify. Includes Netlify CMS and Netlify Forms.", "author": "DanUrbanowicz", "demo": "https://eleventy-netlify-boilerplate.netlify.app/" } \ No newline at end of file diff --git a/src/_includes/components/announcement.css b/src/_includes/components/announcement.css index 86af3cdc57..bd29cd8c35 100644 --- a/src/_includes/components/announcement.css +++ b/src/_includes/components/announcement.css @@ -4,7 +4,7 @@ justify-content: center; width: 100%; color: #fff; - font-weight: 600; + font-weight: 700; padding: 0.25em 1em; gap: .5em; } @@ -15,141 +15,17 @@ font-size: clamp(1em, 2vw, 1.25em); } } -.announcement, -.announcement-btn { - --btn-bg: #183153; - --btn-color: #f0f1f3; - --btn-shadow-color: #0f1f36; - display: flex; - justify-content: center; - font-weight: 600; -} .announcement { - flex-wrap: wrap; -} -@media (prefers-color-scheme: dark) { - .announcement, - .announcement-btn { - --btn-bg: #007150; - --btn-color: #f0f1f3; - --btn-shadow-color: #165b46; - } -} -.announcement-btn, -.announcement > a, -.announcement > span { display: flex; - align-items: center; justify-content: center; - text-align: center; + font-weight: 700; flex-wrap: wrap; - gap: .5em; - padding: .5em 2em; - text-decoration: none; - border-radius: .5em; - margin: .25em .25em .5em .25em; - border: .125rem solid var(--btn-shadow-color); -} -.announcement > a, -.announcement > a:visited, -.announcement > a:any-link { - background-color: var(--btn-bg); - color: var(--btn-color); - box-shadow: 0 .375rem 0 var(--btn-shadow-color); -} -.announcement-btn, -.announcement-btn:visited, -.announcement-btn[href], -.announcement > a, -.announcement > a:visited, -.announcement > a:any-link { - background-color: var(--btn-bg); - color: var(--btn-color); - box-shadow: 0 .375rem 0 var(--btn-shadow-color); -} -@media (max-width: 31.1875em) { /* 499px */ - .announcement > a > span > b { - display: none; - } -} -.announcement-btn:hover, -.announcement a:hover { - text-decoration: underline; -} -.announcement a:after { - display: none; -} -.announcement-btn { - line-height: 1.6; - margin-block: 2em; - max-width: 28em; - margin-inline: auto; - text-align: center; - white-space: normal; } .products .announcement svg { min-width: 1em; } -/* External link opt-out */ -.announcement-btn:after { - display: none; -} -.announcement-btn svg { - min-width: 1.5em; - height: auto; -} -.elv-footer-wrap .announcement { - background-color: color-mix(in oklab, var(--background-color), var(--btn-bg) 85%); -} -.announcement .announcement-tag { - font-size: .75em; - text-transform: uppercase; - padding: .25em .75em; - border-radius: .25em; - background-color: rgba(0,0,0,.4); -} - -/* Progress bar */ -.announcement:has(.announcement-progress) a[href] { - position: relative; -} -.announcement:has(.announcement-progress) a[href] > :not(.announcement-progress) { - position: relative; - z-index: 1; -} -.announcement-progress { - --fundraise-accent-color: var(--brand-ba); - --fundraise-bg: rgba(255,255,255,.4); - display: block; - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - accent-color: var(--fundraise-accent-color); - width: 100%; - height: 100%; - border-radius: .4em; - overflow: hidden; - appearance: none; - pointer-events: none; - background-color: transparent; - border-width: 0; -} -@media (prefers-color-scheme: dark) { - .announcement-progress { - --fundraise-accent-color: #183153; - --fundraise-bg: rgba(0,0,0,.2); - } -} -.announcement-progress::-webkit-progress-value { - background: var(--fundraise-accent-color); -} -.announcement-progress::-moz-progress-bar { - background: var(--fundraise-accent-color); -} -.announcement-progress::-webkit-progress-bar { - background-color: transparent; +.elv-footer-wrap .announcement { + background-color: color-mix(in oklab, var(--background-color), #183153 85%); } diff --git a/src/_includes/components/announcement.njk b/src/_includes/components/announcement.njk index f9d92ecc16..1428d51a47 100644 --- a/src/_includes/components/announcement.njk +++ b/src/_includes/components/announcement.njk @@ -1,8 +1,7 @@ \ No newline at end of file diff --git a/src/_includes/components/ba-balloon.svg b/src/_includes/components/ba-balloon.svg deleted file mode 100644 index d3f65e8f5e..0000000000 --- a/src/_includes/components/ba-balloon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/_includes/components/build-awesome-hero.njk b/src/_includes/components/build-awesome-hero.njk new file mode 100644 index 0000000000..8fb0d84cb4 --- /dev/null +++ b/src/_includes/components/build-awesome-hero.njk @@ -0,0 +1,254 @@ +
+ +
+
+ Zero runtime. Zero worries. +

Go build something
awesome.

+

A simpler website generator. Point it at your Markdown and launch a fast, resilient static website — skip a runtime and skip the downtime!

+ +
    +
  • Stable
  • +
  • Lightweight
  • +
  • Live Reload
  • +
  • Markdown-friendly
  • +
+
+ +
+
+
+
+ + ~/my-awesome-site + +
+
+
+
+
+
+
+ http://localhost:8080/
+
+
My Awesome SiteBlog
+
First blog post
+

Hello world — this page was just built from index.md in a hundredth of a second. Edit and save to see it live-reload.

+ # posts +
+
+
+
+
+ +
\ No newline at end of file diff --git a/src/_includes/components/build-comparison.webc b/src/_includes/components/build-comparison.webc index f3be7f55b5..86494feec6 100644 --- a/src/_includes/components/build-comparison.webc +++ b/src/_includes/components/build-comparison.webc @@ -15,6 +15,7 @@ } :host td { border-color: transparent; + vertical-align: middle; } :host tr:first-child td { border-top: none; @@ -40,7 +41,7 @@ - Eleventy + Build Awesome 1.93s diff --git a/src/_includes/components/buttons.css b/src/_includes/components/buttons.css new file mode 100644 index 0000000000..e3768a1006 --- /dev/null +++ b/src/_includes/components/buttons.css @@ -0,0 +1,62 @@ +/* Brand buttons */ +.btn-brand, +.btn-brand:any-link { + --btn-bg: #183153; + --btn-color: #f0f1f3; + --btn-shadow-color: #0f1f36; + --btn-shadow-size: .375rem; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + flex-wrap: wrap; + gap: .25em .5em; + padding: .75em 2em; + margin-block-end: var(--btn-shadow-size); + text-decoration: none; + border-radius: .5em; + border: .125rem solid var(--btn-shadow-color); + font-weight: 700; + transition: transform .3s, box-shadow .2s; + background-color: var(--btn-bg); + color: var(--btn-color); + box-shadow: 0 var(--btn-shadow-size) 0 var(--btn-shadow-color); + + @media (prefers-color-scheme: dark) { + --btn-bg: #007150; + --btn-color: #f0f1f3; + --btn-shadow-color: #165b46; + } + + /* External link icon */ + &:after { + display: none; + } + + &:not(.--disabled):active { + transform: translateY(var(--btn-shadow-size)); + box-shadow: none; + } + + &.--ghost { + background-color: transparent; + color: inherit; + + @media (prefers-color-scheme: dark) { + --btn-shadow-color: var(--shadow-color); + } + } + + &.--disabled { + cursor: not-allowed; + opacity: .7; + } +} + +.btn-tag { + font-size: .75em; + text-transform: uppercase; + padding: .25em .75em; + border-radius: .25em; + background-color: rgba(0,0,0,.4); +} diff --git a/src/_includes/components/callout.css b/src/_includes/components/callout.css index 6640a24635..439dd8c3be 100644 --- a/src/_includes/components/callout.css +++ b/src/_includes/components/callout.css @@ -9,14 +9,28 @@ --callout-label-skew: 11deg; line-height: 1.5; - margin-inline: -1rem; + margin-inline: 0; margin-block: 1em; background-color: var(--callout-secondary); border: 1.5px solid var(--callout-primary); } +header .elv-callout { + margin: 0; + border-radius: 0; + box-shadow: 0 3px 0 0 rgba(0, 0, 0, 0.08); + + .elv-callout-c { + text-align: center; + text-wrap: balance; + max-width: calc(var(--layout-max) + 2rem); + margin-inline: auto; + } +} +main .elv-callout { + margin-inline: -1rem; +} details .elv-callout { - margin-left: 0; - margin-right: 0; + margin-inline: 0; } /* #2col */ @@ -32,8 +46,7 @@ details .elv-callout { --callout-secondary: hsl(var(--callout-hue), 100%, 12%); --callout-primarytext: hsl(var(--callout-hue), 100%, 100%); } - .elv-callout, - .elv-callout a { + .elv-callout { color: var(--callout-primarytext); } } @@ -66,7 +79,7 @@ table .elv-callout { .elv-callout-label { align-self: flex-start; font-size: 0.9375em; /* 15px /16 */ - font-weight: 600; + font-weight: 700; } .elv-callout-label, .elv-callout-skew:before, @@ -84,7 +97,7 @@ table .elv-callout { left: 0; top: 0; font-size: 0.8125em; /* 13px /16 */ - font-weight: 800; + font-weight: 700; } .elv-callout-label { background-color: var(--callout-primary); @@ -93,13 +106,11 @@ table .elv-callout { .elv-callout code { background-color: var(--callout-code, var(--callout-primary)); } -.elv-callout a, -.elv-callout :visited { - color: var(--callout-primarytext); +.elv-callout p { + max-width: none; } .elv-callout pre { - margin-top: 1em; - margin-bottom: 1em; + margin-block: 1em; } .elv-callout-label:first-child:last-child { @@ -167,30 +178,6 @@ table .elv-callout { margin-bottom: 0; } -/* Sticky callout is for legacy docs versions */ -body > .elv-callout-sticky .elv-callout-label { - display: none; -} -body > .elv-callout-sticky .elv-callout { - margin: 0; - border-left: 0; - border-right: 0; - border-radius: 0; - margin-bottom: 1em; -} -body > .elv-callout-sticky .elv-callout-c { - text-align: center; - text-wrap: balance; -} -@media (min-height: 43.75em) { /* 700px */ - body > .elv-callout-sticky { - position: sticky; - top: 0; - z-index: 12; - box-shadow: 0 3px 0 0 rgba(0, 0, 0, 0.08); - } -} - /* in left nav */ .elv-toc .elv-callout { margin-block-start: 0; @@ -200,6 +187,7 @@ body > .elv-callout-sticky .elv-callout-c { } .elv-toc .elv-callout-label { margin-inline-end: 0; + font-weight: 500; } /* #2col */ @@ -252,6 +240,10 @@ body > .elv-callout-sticky .elv-callout-c { .elv-callout-warn { --callout-hue: 60; } +/* Brand */ +.elv-callout-brand { + --callout-hue: 162; +} .elv-callout-skew--demo { --callout-hue: 270; } diff --git a/src/_includes/components/callout.webc b/src/_includes/components/callout.webc deleted file mode 100644 index 8bc898601c..0000000000 --- a/src/_includes/components/callout.webc +++ /dev/null @@ -1,26 +0,0 @@ - - - -
- - -
- -
- - -
-
\ No newline at end of file diff --git a/src/_includes/components/code-copy.css b/src/_includes/components/code-copy.css index f6e4bec257..9205b19de5 100644 --- a/src/_includes/components/code-copy.css +++ b/src/_includes/components/code-copy.css @@ -2,12 +2,14 @@ :is(syntax-highlight, .syntax-highlight):has(wa-copy-button) { position: relative; - wa-copy-button { + wa-copy-button { position: absolute; right: 0; bottom: 0; - margin: .25em; + padding: .25em 0; + margin: 0; color: #fff; + height: 2.5em; /* SAFARI WEEEEE */ &::part(button) { transition: 300ms all; @@ -16,6 +18,7 @@ border-radius: .25em; cursor: copy; } + &:is(:hover, :focus)::part(button) { opacity: 1; background-color: rgba(0,0,0,1); diff --git a/src/_includes/components/code.css b/src/_includes/components/code.css index d1061195f1..f4982984a6 100644 --- a/src/_includes/components/code.css +++ b/src/_includes/components/code.css @@ -6,8 +6,7 @@ pre { line-height: 1.5; overflow-x: auto; - font-family: Roboto Mono, Consolas, Monaco, Andale Mono, Ubuntu Mono, - monospace; + font-family: Menlo,Monaco,Consolas,Courier New,monospace; -moz-tab-size: 2; -o-tab-size: 2; @@ -25,14 +24,15 @@ pre { } :is(.syntax-highlight, syntax-highlight) { - margin-inline: -1rem; -} -:is(.syntax-highlight, syntax-highlight) pre { - margin-inline: 0; + margin: 0 -1rem; + + pre { + margin: 0 0; + } } .fl > * > pre { - margin-top: 0; + margin-block-start: 0; } pre code { border-radius: 0; @@ -43,12 +43,12 @@ pre > code { font-family: inherit; } pre + pre[class*="language-"] { - margin-top: 1em; + margin-block-start: 1em; } pre + .note { font-size: 0.6666666666667em; /* 16px /24 */ - margin-top: -2.875em; /* 46px /16 */ - margin-bottom: 2.5em; /* 40px /16 */ + margin-block-start: -2.875em; /* 46px /16 */ + margin-block-end: 2.5em; /* 40px /16 */ text-align: right; } @media (prefers-color-scheme: dark) { diff --git a/src/_includes/components/code.webc b/src/_includes/components/code.webc deleted file mode 100644 index 84eb5da016..0000000000 --- a/src/_includes/components/code.webc +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/_includes/components/codetitle.css b/src/_includes/components/codetitle.css index ec3daa0bb2..964a8afc11 100644 --- a/src/_includes/components/codetitle.css +++ b/src/_includes/components/codetitle.css @@ -39,13 +39,13 @@ } .codetitle + pre, .codetitle + .minilink + pre { - margin-top: 0; + margin-block-start: 0; } .codetitle + div:has(> is-land) { clear: both; } .codetitle + div:has(> is-land) :is(eleventy-editor, pre) { - margin-top: 0; + margin-block-start: 0; } .codetitle + .minilink { float: right; @@ -62,12 +62,12 @@ } .codetitle-left + .minilink { float: left; - margin-left: 1em; - margin-right: 0; + margin-inline-start: 1em; + margin-inline-end: 0; position: relative; bottom: -2px; } .codetitle-left + .codetitle-left { clear: none; - margin-left: 2em; + margin-inline-start: 2em; } diff --git a/src/_includes/components/docs-toc.njk b/src/_includes/components/docs-toc.njk index 099252d3b5..b1c18ce84e 100644 --- a/src/_includes/components/docs-toc.njk +++ b/src/_includes/components/docs-toc.njk @@ -1,4 +1,8 @@
+{# {%- set proCtaTitle %}Build Awesome Pro{% endset %} +{%- callout "box", "html", proCtaTitle %} +{%- endcallout %} #} + {%- set calloutTitle %}Blog{% endset %} {%- for post in collections.sidebarHighlight %} {%- callout "", "html", calloutTitle %} @@ -9,16 +13,18 @@ {%- set versionsTitle = "Versions" %} {%- callout "box", "html", versionsTitle -%}
-
Stable
-
{{ npmVersions.latest }}{# {{ githubReleases[ npmVersions.latest | normalizeVersion ].date | timeDiff }} #}
- {%- if semverGreaterThan(npmVersions.beta, npmVersions.latest) %} -
Beta
-
{{ npmVersions.beta }}{# {{ githubReleases[ npmVersions.beta | normalizeVersion ].date | timeDiff }} #}
- {%- endif %} {%- if semverGreaterThan(npmVersions.canary, npmVersions.latest) and semverGreaterThan(npmVersions.canary, npmVersions.beta) %}
Canary
{{ npmVersions.canary }}{# {{ githubReleases[ npmVersions.canary | normalizeVersion ].date | timeDiff }} #}
{%- endif %} + {%- if semverGreaterThan(npmVersions.beta, npmVersions.latest) %} +
Beta
+
{{ npmVersions.beta }}{# {{ githubReleases[ npmVersions.beta | normalizeVersion ].date | timeDiff }} #}
+ {%- endif %} +
Stable
+
{{ npmVersions.latest }}{# {{ githubReleases[ npmVersions.latest | normalizeVersion ].date | timeDiff }} #}
+
Pro
+
Coming Soon
{%- endcallout %} diff --git a/src/_includes/components/editor.css b/src/_includes/components/editor.css index 382c4f436f..1389b9587a 100644 --- a/src/_includes/components/editor.css +++ b/src/_includes/components/editor.css @@ -45,7 +45,7 @@ is-land--eleventy-editor pre:before { content: "Run"; top: 0; right: -1rem; - font-weight: 600; + font-weight: 700; line-height: 1; padding: .75rem; background-color: var(--edit-bg); diff --git a/src/_includes/components/eleventy-shell-syntax.js b/src/_includes/components/eleventy-shell-syntax.js index c94246d665..00770651d6 100644 --- a/src/_includes/components/eleventy-shell-syntax.js +++ b/src/_includes/components/eleventy-shell-syntax.js @@ -3,7 +3,7 @@ const css = String.raw; // Properly highlights Eleventy syntax in a terminal window class EleventyShell { static selector = "code.language-11ty-output"; - static PREFIX = "[11ty] "; + static PREFIX = "[buildawesome] "; static cssAdded = false; static register(root) { diff --git a/src/_includes/components/external-links.css b/src/_includes/components/external-links.css index f9e6d46349..98de082504 100644 --- a/src/_includes/components/external-links.css +++ b/src/_includes/components/external-links.css @@ -1,8 +1,8 @@ /* External links */ -a[href^="https://"]:not([href^="https://11ty.dev"], [href^="https://www.11ty.dev"], .minilink, .elv-externalexempt) { +a[href^="https://"]:not([href^="https://build.awesome.me"], [href^="https://build.awesome.me"], .minilink, .elv-externalexempt) { text-decoration-color: var(--external-link-underline); } -a[href^="https://"]:not([href^="https://11ty.dev"], [href^="https://www.11ty.dev"], .minilink, .elv-externalexempt):after { +a[href^="https://"]:not([href^="https://build.awesome.me"], [href^="https://build.awesome.me"], .minilink, .elv-externalexempt):after { content: " ↗"; font-family: system-ui, sans-serif; font-style: normal; @@ -14,12 +14,12 @@ a[href^="https://"]:not([href^="https://11ty.dev"], [href^="https://www.11ty.dev letter-spacing: -0.08333333333333em; /* -1px /12 */ } /* Contains Font Awesome icon */ -a[href^="https://"]:not([href^="https://11ty.dev"], [href^="https://www.11ty.dev"], .minilink, .elv-externalexempt):has(.fa11ty-icon):after { +a[href^="https://"]:not([href^="https://build.awesome.me"], [href^="https://build.awesome.me"], .minilink, .elv-externalexempt):has(.fa11ty-icon):after { content: ""; } /* External link hovers */ -a[href^="https://"]:not([href^="https://11ty.dev"], [href^="https://www.11ty.dev"], .minilink, .elv-externalexempt):hover:after { +a[href^="https://"]:not([href^="https://build.awesome.me"], [href^="https://build.awesome.me"], .minilink, .elv-externalexempt):hover:after { color: inherit; } diff --git a/src/_includes/components/flex-luthor/flex-luthor.css b/src/_includes/components/flex-luthor/flex-luthor.css index acdec20702..edb2cd82fa 100644 --- a/src/_includes/components/flex-luthor/flex-luthor.css +++ b/src/_includes/components/flex-luthor/flex-luthor.css @@ -26,7 +26,7 @@ .fl-nowrap > *, .fl-cell-wrap { /* or for an individual cell */ - flex-basis: auto; + flex-basis: var(--fl-basis, auto); } /* Flex layout inline */ @@ -40,6 +40,12 @@ .fl-spaced-out { justify-content: space-between; } +.fl--balance { + justify-content: center; +} +.fl--balance > * { + flex-basis: min-content; +} /* Debug */ .fl-debug > * { diff --git a/src/_includes/components/fonts.css b/src/_includes/components/fonts.css index 3b98193014..c58f003ec0 100644 --- a/src/_includes/components/fonts.css +++ b/src/_includes/components/fonts.css @@ -1,23 +1,44 @@ +/* Via blog-fontawesome project */ @font-face { - font-family: BenchNine; - src: url("/css/fonts/benchnine-bold.woff2") format("woff2"); - font-weight: 700; + font-family: Cera Round Pro; + font-weight: 400; + src: url("/css/fonts/cera-round-pro-regular.woff2") format("woff2"); font-display: swap; - unicode-range: U+20-7E,U+D6,U+D8,U+E9,U+F4,U+F6,U+F8,U+15A,U+200B,U+2014,U+2019,U+2026; + unicode-range: U+20-7E,U+A0-137,U+139-148,U+14A-17E,U+18F,U+192,U+1D4,U+1FC-1FF,U+218-21B,U+237,U+259,U+2C6,U+2DA,U+2DC,U+1E80-1E85,U+1E9E,U+1EF2,U+1EF3,U+2009,U+2013-2015,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032,U+2033,U+2039,U+203A,U+2044,U+2074,U+20A4,U+20A7,U+20AC,U+20AE,U+20B4,U+20B8-20BA,U+20BD,U+20BF,U+2113,U+2122,U+2191,U+2193,U+2212; } - -/* latin */ @font-face { - font-family: Roboto Mono; - src: url("/css/fonts/robotomono-regular.woff2") format('woff2'); + font-family: Cera Round Pro; + font-weight: 500; + src: url("/css/fonts/cera-round-pro-medium-subset.woff2") format("woff2"); font-display: swap; - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; + unicode-range: U+A,U+20,U+2E,U+30-39,U+41-5A,U+61-79,U+2013,U+2019; } -/* latin-ext */ @font-face { - font-family: Roboto Mono; + font-family: Cera Round Pro; + font-weight: 500; + src: url("/css/fonts/cera-round-pro-medium.woff2") format("woff2"); + font-display: swap; + unicode-range: U+20-7E,U+A0-137,U+139-148,U+14A-17E,U+18F,U+192,U+1D4,U+1FC-1FF,U+218-21B,U+237,U+259,U+2C6,U+2DA,U+2DC,U+1E80-1E85,U+1E9E,U+1EF2,U+1EF3,U+2009,U+2013-2015,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032,U+2033,U+2039,U+203A,U+2044,U+2074,U+20A4,U+20A7,U+20AC,U+20AE,U+20B4,U+20B8-20BA,U+20BD,U+20BF,U+2113,U+2122,U+2191,U+2193,U+2212; +} +@font-face { + font-family: Cera Round Pro; + font-weight: 700; + src: url("/css/fonts/cera-round-pro-bold.woff2") format("woff2"); font-display: swap; - src: url("/css/fonts/robotomono-regular-ext.woff2") format('woff2'); - unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; + unicode-range: U+20-7E,U+A0-137,U+139-148,U+14A-17E,U+18F,U+192,U+1D4,U+1FC-1FF,U+218-21B,U+237,U+259,U+2C6,U+2DA,U+2DC,U+1E80-1E85,U+1E9E,U+1EF2,U+1EF3,U+2009,U+2013-2015,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032,U+2033,U+2039,U+203A,U+2044,U+2074,U+20A4,U+20A7,U+20AC,U+20AE,U+20B4,U+20B8-20BA,U+20BD,U+20BF,U+2113,U+2122,U+2191,U+2193,U+2212; } +@font-face { + font-family: Livory; + font-weight: 900; /* to avoid faux bold */ + src: url("/css/fonts/livory-regular.woff2") format("woff2"); + font-display: swap; + unicode-range: U+20-7E,U+A0-FF,U+131,U+152,U+153,U+2C6,U+2DA,U+2DC,U+2013,U+2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039,U+203A,U+2044,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215; +} +/* @font-face { + font-family: Cera Round Pro; + font-weight: 900; + src: url("/css/fonts/cera-round-pro-black.woff2") format("woff2"); + font-display: swap; + unicode-range: U+20-7E,U+A0-137,U+139-148,U+14A-17E,U+18F,U+192,U+1D4,U+1FC-1FF,U+218-21B,U+237,U+259,U+2C6,U+2DA,U+2DC,U+1E80-1E85,U+1E9E,U+1EF2,U+1EF3,U+2009,U+2013-2015,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2032,U+2033,U+2039,U+203A,U+2044,U+2074,U+20A4,U+20A7,U+20AC,U+20AE,U+20B4,U+20B8-20BA,U+20BD,U+20BF,U+2113,U+2122,U+2191,U+2193,U+2212; +} */ diff --git a/src/_includes/components/forms.css b/src/_includes/components/forms.css index 4a27fbf60f..2a18735996 100644 --- a/src/_includes/components/forms.css +++ b/src/_includes/components/forms.css @@ -69,7 +69,7 @@ input[type="checkbox"] { } @media (min-width: 20em) { .btn-primary { - font-size: 6vw; + font-size: 5vw; } .btn-primary-sm, .btn-primary-standard { @@ -97,7 +97,7 @@ input[type="checkbox"] { @media (min-width: 87.5em) { /* 1400px */ .btn-primary { - font-size: 5.25em; /* 84px /16 */ + font-size: 4em; } } .btn-primary-nogrow { diff --git a/src/_includes/components/giant-docs-button.webc b/src/_includes/components/giant-docs-button.webc index ff7d9a2ad5..b57c1e5d4c 100644 --- a/src/_includes/components/giant-docs-button.webc +++ b/src/_includes/components/giant-docs-button.webc @@ -24,17 +24,6 @@ a.btn-primary:hover { transform: none; } } -/* #2col × 950px */ -@media (min-width: 41.4375em) and (min-height: 59.375em) { - :host-context(html:not(:has(:focus-visible))) { - display: block; - position: sticky; - top: 10px; - left: 0; - right: 0; - z-index: 10; - } -} -Documentation \ No newline at end of file +Documentation \ No newline at end of file diff --git a/src/_includes/components/grid-layout.css b/src/_includes/components/grid-layout.css index 5e25053b23..3ee901fcd7 100644 --- a/src/_includes/components/grid-layout.css +++ b/src/_includes/components/grid-layout.css @@ -3,10 +3,7 @@ --lo-grid-repeat: auto-fit; display: grid; margin: 0; - grid-template-columns: repeat( - var(--lo-grid-repeat), - minmax(var(--lo-c-minwidth), 1fr) - ); + grid-template-columns: repeat(var(--lo-grid-repeat), minmax(min(var(--lo-c-minwidth), 100%), 1fr)); grid-row-gap: var(--fl-gap-v, 0); grid-column-gap: var(--fl-gap-h, 0); } @@ -16,3 +13,12 @@ .lo-grid > * { margin: 0; } +.lo-grid:where(ul, ol) { + margin: 0; + padding: 0; + list-style: ""; + + & > * { + padding: 0; + } +} diff --git a/src/_includes/components/header.css b/src/_includes/components/header.css index 83bbfd6d6c..86bbc5d422 100644 --- a/src/_includes/components/header.css +++ b/src/_includes/components/header.css @@ -20,21 +20,17 @@ } .elv-header { position: relative; - z-index: 1; + z-index: 2; } .elv-hed, .elv-nav-header { width: 100%; margin: 0 auto; } -/* #2col */ -@media (min-width: 41.4375em) { - .elv-header-default .elv-nav-header { - margin-block-end: 3.5rem; - } -} .elv-nav-menu { - padding: 1rem; + display: flex; + align-items: center; + padding: .75rem 1rem; margin-inline: auto; } @media (min-width: 58.125em) { /* 930px */ @@ -48,26 +44,6 @@ .elv-nav-menu { max-width: calc(var(--layout-max)); } -.elv-nav-menu-logo { - display: block; - width: 2em; - height: 2em; - max-height: 2em; - background-color: #222; - text-align: center; - border-radius: 0.15em; - padding: 0 0.25em; -} -.elv-nav-menu-logo svg { - width: 100%; - height: 100%; - color: #fff; - margin: 0; -} -/* Full width logo */ -.elv-header-default .elv-nav-header { - max-width: none; -} /* Sticky, #2col × 600px */ @media (min-width: 41.4375em) and (min-height: 43.75em) { @@ -77,12 +53,12 @@ top: 0; z-index: 2; } - :root:has(.elv-header.elv-header-docs, :target) { - scroll-padding-top: 3.75em; /* 60px /16 */ + :root:has(.elv-header.elv-header-docs):has(:target) { + scroll-padding-top: 9.375em; /* 150px /16 */ } /* Leave extra room for tabs links */ - :root:has(.elv-header.elv-header-docs, [role="tabpanel"]:target) { - scroll-padding-top: 6em; + :root:has(.elv-header.elv-header-docs):has([role="tabpanel"]:target) { + scroll-padding-top: 11.25em; /* 180px /16 */ } } @@ -101,7 +77,6 @@ --search-text: #fff; } } - .elv-nav-menu form { color: var(--search-text); } @@ -218,11 +193,6 @@ a[href].elv-hero-11ty:visited { color: #fff; background-color: #222; } -.elv-header-default .elv-hero { - display: flex; - justify-content: center; - padding-inline-end: 8rem; -} .elv-header-docs .elv-hero { float: left; margin-right: 0.5em; @@ -256,16 +226,6 @@ main h1.elv-hed { border: none; } -/* fix: big header link fighting with versions overlay */ -.elv-header-default .elv-menu { - position: relative; - z-index: 1; -} -.elv-header-default .elv-nav-header { - position: relative; - z-index: 0; -} - .elv-mascot-image { position: absolute; bottom: 0; @@ -275,12 +235,20 @@ main h1.elv-hed { filter: drop-shadow(3px 3px #0006); } -.elv-header-version { +.elv-header-version, +.elv-header-pro { padding: .25em .75em; border-radius: .25em; -} -@media (prefers-color-scheme: dark) { - .elv-header-version { + background-color: #efefef; + + @media (prefers-color-scheme: dark) { background-color: #1a1a1a; } } +.elv-header-pro { + background-color: #e3fdf5; + + @media (prefers-color-scheme: dark) { + background-color: #003d2b; + } +} diff --git a/src/_includes/components/inline-code.css b/src/_includes/components/inline-code.css index 8f4ba3148b..0250adf723 100644 --- a/src/_includes/components/inline-code.css +++ b/src/_includes/components/inline-code.css @@ -1,6 +1,5 @@ code { - font-family: Roboto Mono, Consolas, Monaco, Andale Mono, Ubuntu Mono, - monospace; + font-family: Menlo,Monaco,Consolas,Courier New,monospace; -ms-word-break: break-all; word-break: break-word; -webkit-hyphens: manual; @@ -11,6 +10,9 @@ code { padding-right: 4px; border-radius: 0.15em; } +table code { + word-break: normal; +} pre[class*="language-"] code { background-color: inherit; } diff --git a/src/_includes/components/lists.css b/src/_includes/components/lists.css index c6bb246600..57e1e00cef 100644 --- a/src/_includes/components/lists.css +++ b/src/_includes/components/lists.css @@ -34,9 +34,14 @@ background-color: #222; color: #fff; font-weight: inherit; + + @media (prefers-color-scheme: dark) { + background-color: #ccc; + color: #222; + } } .inlinelist > li:is(:has([aria-selected="true"]), .active) :is(:link, :visited) { - color: #fff; + color: inherit; } .inlinelist > li code { background-color: transparent; @@ -129,7 +134,6 @@ a.rainbow-active:is(:hover, :focus) { } .buzzword:is(:hover, :focus):after { - font-family: system-ui, sans-serif; content: "Buzzword alert!!!"; position: absolute; left: 0; @@ -183,7 +187,7 @@ main :is(h2, h3, p) a.buzzword { border-radius: 50%; width: 1.75em; height: 1.75em; - font-weight: 600; + font-weight: 700; } @media (prefers-color-scheme: dark) { .numberflag { @@ -191,11 +195,10 @@ main :is(h2, h3, p) a.buzzword { color: #222; } } -h1 .numberflag, -h2 .numberflag, -h3 .numberflag, -h4 .numberflag, -h5 .numberflag { +:is(h1, h2, h3, h4, h5):has(.numberflag) { + padding-block-end: 0; +} +:is(h1, h2, h3, h4, h5) .numberflag { width: 1.4em; height: 1.4em; } @@ -229,8 +232,7 @@ h2 .numberflag:after { font-size: 0.6666666666667em; /* 12px /18 */ } :where(.inlinelist-sm) > li { - font-family: system-ui, sans-serif; - font-weight: 600; + font-weight: 700; } /* Disabled list item */ diff --git a/src/_includes/components/logo-cloud.webc b/src/_includes/components/logo-cloud.webc index 66e26c3809..49a51faf20 100644 --- a/src/_includes/components/logo-cloud.webc +++ b/src/_includes/components/logo-cloud.webc @@ -6,6 +6,7 @@
  • Google
  • Microsoft
  • Mozilla
  • +
  • GitHub
  • Font Awesome
  • Apache
  • freeCodeCamp
  • diff --git a/src/_includes/components/minilink.css b/src/_includes/components/minilink.css index a0fb92b19f..9c99f4d284 100644 --- a/src/_includes/components/minilink.css +++ b/src/_includes/components/minilink.css @@ -1,26 +1,29 @@ /* Mini link */ .minilink { - display: inline-block; - padding: 0.125em 0.375em; + display: inline-flex; + align-items: center; + gap: .25em; + padding: 0.125em 0.625em; /* 10px /16 */ text-transform: uppercase; - font-size: 0.875rem; /* 14px /16 */ + font-size: 0.7222222222222em; /* 13px /18 */ text-decoration: none; background-color: #ddd; - border-radius: 0.1875em; /* 3px /16 */ + border-radius: 1em; /* 16px /16 */ font-weight: 500; - margin: 0 0.4285714285714em 0.07142857142857em 0; /* 0 6px 1px 0 /14 */ - line-height: 1.285714285714; /* 18px /14 */ - font-family: system-ui, sans-serif; -} -@media (prefers-color-scheme: dark) { - .minilink.minilink { - background-color: #222; + margin: 0 0.4285714285714em; /* 0 6px /14 */ + vertical-align: baseline; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3); + + &:first-child { + margin-inline-start: 0; + } + + @media (prefers-color-scheme: dark) { + background-color: #333; color: #fff; + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.3); } } -table .minilink { - margin-top: 6px; -} .minilink[href] { box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.5); } @@ -68,12 +71,6 @@ h4 .minilink { .minilink-addedin { text-transform: none; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3); -} -@media (prefers-color-scheme: dark) { - .minilink-addedin { - box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.3); - } } .minilink-addedin:not(:first-child) { margin-left: 0.5em; @@ -81,9 +78,8 @@ h4 .minilink { .minilink-addedin.minilink-inline { margin: 0 4px; background-color: #fff; -} -@media (prefers-color-scheme: dark) { - .minilink-addedin.minilink-inline { + + @media (prefers-color-scheme: dark) { background-color: #000; } } @@ -109,12 +105,11 @@ h4 .minilink { /* Build cost */ .minilink-buildcost { - --internal-shadow-hsl: 0deg 0% 75%; font-weight: 700; text-transform: uppercase; - /* via https://www.joshwcomeau.com/shadow-palette/ */ - box-shadow: 0px 0.3px 0.5px hsl(var(--internal-shadow-hsl) / 0), - 0.1px 4.3px 6.5px hsl(var(--internal-shadow-hsl) / 0.14); +} +.minilink-buildcost code { + margin-right: .25em; } .minilink-buildcost code:before { content: "🧰"; @@ -134,15 +129,6 @@ a[href]:focus .minilink-buildcost { .minilink-github > :first-child { color: #eac54f; } -/* GitHub star count, home page variant (dark theme) */ -.elv-header-default .minilink-github { - background-color: #222; - color: #fff; -} -.elv-header-default .minilink[href]:hover, -.elv-header-default .minilink[href]:focus { - background-color: #444; -} @media (prefers-color-scheme: dark) { .minilink-github.minilink-github { background-color: #222; diff --git a/src/_includes/components/navigation.css b/src/_includes/components/navigation.css index 838b88970a..f04ebedb10 100644 --- a/src/_includes/components/navigation.css +++ b/src/_includes/components/navigation.css @@ -9,7 +9,13 @@ } .elv-nav-menu a { - font-weight: 600; + font-weight: 700; + display: flex; + align-items: center; + gap: 0 .125em; +} +.elv-nav-menu a small { + font-weight: 500; } /* Spacer and social links */ diff --git a/src/_includes/components/page-supporters.css b/src/_includes/components/page-supporters.css index 4e259f5287..92ec7562fd 100644 --- a/src/_includes/components/page-supporters.css +++ b/src/_includes/components/page-supporters.css @@ -18,7 +18,7 @@ .supporters-link { display: inline-block; white-space: nowrap; - font-weight: 600; + font-weight: 700; } .supporters-facepile .fl { /*position: relative; @@ -75,6 +75,6 @@ padding-right: 1em; } .supporters-facepile .supporters-active .supporters-tier:after { - font-weight: 600; + font-weight: 700; content: "—THANK YOU! 🎉"; } diff --git a/src/_includes/components/possum-home.css b/src/_includes/components/possum-home.css deleted file mode 100644 index 03c627522b..0000000000 --- a/src/_includes/components/possum-home.css +++ /dev/null @@ -1,31 +0,0 @@ -/* #2col */ -@media (min-width: 41.4375em) { - .elv-header-default:has(.elv-possum) { - overflow: hidden; - } - .elv-header-default .elv-possum { - --possum-top: 20%; - pointer-events: none; - width: auto; - height: calc((50vh - 2rem) / 1.6); - top: var(--possum-top); - left: 1vw; - right: auto; - animation-duration: 180s; - animation-name: balloonFloat; - } -} - -@media (prefers-reduced-motion: reduce) { - .elv-header-default .elv-possum { - animation-duration: 0s; - } -} -@keyframes balloonFloat { - from { - transform: translate(-7vw, var(--possum-top)); - } - to { - transform: translate(100vw, -52%); - } -} diff --git a/src/_includes/components/possum.webc b/src/_includes/components/possum.webc deleted file mode 100644 index 7bed5a856e..0000000000 --- a/src/_includes/components/possum.webc +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/src/_includes/components/product-tabs.css b/src/_includes/components/product-tabs.css index 6e26ae10fe..9a5690dc41 100644 --- a/src/_includes/components/product-tabs.css +++ b/src/_includes/components/product-tabs.css @@ -1,12 +1,12 @@ .products { --products-spacing: 1em; - background-color: rgb(240 241 243); -} -@media (prefers-color-scheme: dark) { - .products { - background-color: #222; + background: #f0f1f3; + + @media (prefers-color-scheme: dark) { + background: #222; } } + .products-max { display: flex; flex-wrap: wrap; diff --git a/src/_includes/components/product-tabs.njk b/src/_includes/components/product-tabs.njk index e826b595c3..9b97b1f1e0 100644 --- a/src/_includes/components/product-tabs.njk +++ b/src/_includes/components/product-tabs.njk @@ -2,7 +2,7 @@ {# {% include "components/announcement.njk" %} #}
    - {% include "components/ba-balloon.svg" %}{% include "components/ba-wordmark.svg" %}Build Awesome + {% include "components/ba-wordmark.svg" %}Build Awesome Font Awesome Web Awesome diff --git a/src/_includes/components/quick-start.webc b/src/_includes/components/quick-start.webc index 1501613f55..00391133ec 100644 --- a/src/_includes/components/quick-start.webc +++ b/src/_includes/components/quick-start.webc @@ -1,39 +1,10 @@ -

    Quick Start

    +

    Quick Start

    -

    Eleventy requires a way to run JavaScript on your computer and we recommend Node.js (version or newer). You can check whether or not you have Node.js installed by running node --version in a Terminal. (Well, wait—what is a Terminal?) If node is not found or it reports a version number below , you will need to install Node.js before moving on.

    +

    Build Awesome requires a way to run JavaScript on your computer and we recommend Node.js (version or newer). You can check whether or not you have Node.js installed by running node --version in a Terminal. (Well, wait—what is a Terminal?) If node is not found or it reports a version number below , you will need to install Node.js before moving on.

    -

    Now we’ll create an index.md Markdown file. You can do this in the text editor of your choice or by running one of these commands in your terminal:

    +

    Next create an index.md Markdown file. You can do this in the text editor of your choice (Notepad.exe, TextEdit, Nova, Visual Studio Code, or others).

    - - -
    - -echo '# Heading' > index.md - -
    -
    - -echo '# Heading' | out-file -encoding utf8 'index.md' - -

    If the out-file command is not available in your Windows Terminal window (it’s PowerShell specific), use the Cross Platform method.

    - -
    -
    - -echo '# Heading' | npx @11ty/create index.md - -

    Learn more about @11ty/create (requires Node.js 18 or newer).

    -
    -
    - -

    Run Eleventy using npx, an npm-provided command that is bundled with Node.js.

    +

    Now run Build Awesome using npx, an npm-provided command that is bundled with Node.js.

    @@ -43,49 +14,38 @@ echo '# Heading' | npx @11ty/create index.md
    -npx @11ty/eleventy --serve +npx @awesome.me/buildawesome --serve
    -pnpm dlx @11ty/eleventy --serve +pnpm dlx @awesome.me/buildawesome --serve

    pnpm is an optional alternative to npm that needs to be installed separately.

    -yarn dlx @11ty/eleventy --serve +yarn dlx @awesome.me/buildawesome --serve

    Yarn is an optional alternative to npm that needs to be installed separately.

    -

    Eleventy compiles any files in the current directory matching valid file extensions (md is one of many) to the _site output folder. It might look like this:

    +

    Build Awesome compiles any files in the current directory matching valid file extensions (md is one of many) to the _site output folder. It might look like this:

    -

    The --serve option also starts a local development server. Open up http://localhost:8080/ in your favorite web browser to view your web site.

    -

    If you’d like to experiment further with different template syntax, edit the following sample index.md file in your browser. Front Matter, Liquid and Markdown are in use.

    - - - - ---- -title: Heading ---- -# {{ title }} - - - +

    The --serve option also starts a local development server. Open up http://localhost:8080/ in your favorite web browser to view your website.

    +

    If you’d like to experiment further with different template syntax, try out the playground below.

    • Read our full Get Started guide on the docs.
    • diff --git a/src/_includes/components/quicktips.css b/src/_includes/components/quicktips.css index 8599214fd8..257207e9bc 100644 --- a/src/_includes/components/quicktips.css +++ b/src/_includes/components/quicktips.css @@ -12,7 +12,7 @@ } .quicktipstoc .active { - font-weight: 600; + font-weight: 700; } .quicktipstoc h3 { margin-top: 0; diff --git a/src/_includes/components/site-entry.css b/src/_includes/components/site-entry.css index 624b545448..846dc4617d 100644 --- a/src/_includes/components/site-entry.css +++ b/src/_includes/components/site-entry.css @@ -210,7 +210,7 @@ justify-content: center; border-radius: 1.4em 0 0.4em 0; background: rgba(255, 255, 255, 0.9); - font-weight: 600; + font-weight: 700; padding: 4px; } .sites-site-vert .sites-site-lighthouse .speedlify-score { diff --git a/src/_includes/components/subhed.css b/src/_includes/components/subhed.css index 315caa0a92..572c40f954 100644 --- a/src/_includes/components/subhed.css +++ b/src/_includes/components/subhed.css @@ -1,9 +1,9 @@ .subhed { - font-family: system-ui, sans-serif; - font-size: 0.9375em; /* 15px /16 */ + font-family: Cera Round Pro, system-ui, sans-serif; + font-size: 1em; line-height: 1; text-transform: uppercase; - letter-spacing: 1px; + letter-spacing: 0.125em; /* 2px /16 */ margin: 0; color: #666; text-align: center; diff --git a/src/_includes/components/syntax-highlight.webc b/src/_includes/components/syntax-highlight.webc index 1c2e049f11..a02f3ef98f 100644 --- a/src/_includes/components/syntax-highlight.webc +++ b/src/_includes/components/syntax-highlight.webc @@ -1,18 +1,14 @@ - - - -