diff --git a/assets/css/styles.css b/assets/css/styles.css index 4bd83c9..90c536a 100644 --- a/assets/css/styles.css +++ b/assets/css/styles.css @@ -2,6 +2,8 @@ @tailwind components; @tailwind utilities; +@import "typography.css"; + html { @apply text-base antialiased; diff --git a/assets/css/typography.css b/assets/css/typography.css new file mode 100644 index 0000000..e330e93 --- /dev/null +++ b/assets/css/typography.css @@ -0,0 +1,85 @@ +.content { + h1 { + @apply mt-2 text-4xl font-bold tracking-tight text-slate-900 dark:text-slate-100; + } + h2 { + @apply font-semibold tracking-tight text-slate-900 dark:text-slate-100 mt-10 border-b pb-1 text-3xl border-neutral-200/70 contrast-more:border-neutral-400 dark:border-primary-100/10 contrast-more:dark:border-neutral-400; + } + h3 { + @apply font-semibold tracking-tight text-slate-900 dark:text-slate-100 mt-8 text-2xl; + } + h4 { + @apply font-semibold tracking-tight text-slate-900 dark:text-slate-100 mt-8 text-xl; + } + h5 { + @apply font-semibold tracking-tight text-slate-900 dark:text-slate-100 mt-8 text-lg; + } + h6 { + @apply font-semibold tracking-tight text-slate-900 dark:text-slate-100 mt-8 text-base; + } + p { + @apply mt-6 leading-7 first:mt-0; + } + a { + @apply text-primary-600 underline decoration-from-font [text-underline-position:from-font]; + } + blockquote { + @apply mt-6 border-gray-300 italic text-gray-700 dark:border-gray-700 dark:text-gray-400 first:mt-0 ltr:border-l-2 ltr:pl-6 rtl:border-r-2 rtl:pr-6; + } + pre { + @apply bg-primary-700/5 mb-4 overflow-x-auto rounded-xl font-medium subpixel-antialiased dark:bg-primary-300/10 text-[.9em] contrast-more:border contrast-more:border-primary-900/20 contrast-more:contrast-150 contrast-more:dark:border-primary-100/40 py-4; + } + code { + @apply border-black border-opacity-[0.04] bg-opacity-[0.03] bg-black break-words rounded-md border py-0.5 px-[.25em] text-[.9em] dark:border-white/10 dark:bg-white/10; + } + table { + @apply block overflow-x-auto mt-6 p-0 first:mt-0; + + tr { + @apply m-0 border-t border-gray-300 p-0 dark:border-gray-600 even:bg-gray-100 even:dark:bg-gray-600/20; + } + th { + @apply m-0 border border-gray-300 px-4 py-2 font-semibold dark:border-gray-600; + } + td { + @apply m-0 border border-gray-300 px-4 py-2 dark:border-gray-600; + } + } + ol { + @apply mt-6 list-decimal first:mt-0 ltr:ml-6 rtl:mr-6; + li { + @apply my-2; + } + } + ul { + @apply mt-6 list-disc first:mt-0 ltr:ml-6 rtl:mr-6; + li { + @apply my-2; + } + } + +} + +.subheading-anchor { + @apply opacity-0 transition-opacity ltr:ml-1 rtl:mr-1; + + span:target + &, + :hover > &, + &:focus { + @apply opacity-100; + } + + span + &, + :hover > & { + @apply !no-underline; + } + + &:after { + @apply content-['#'] px-1; + @apply text-gray-300 dark:text-neutral-700; + span:target + & { + @apply text-gray-400; + @apply dark:text-neutral-500; + } + } +} diff --git a/data/icons.yaml b/data/icons.yaml index 747feef..43602cf 100644 --- a/data/icons.yaml +++ b/data/icons.yaml @@ -35,3 +35,8 @@ theme-dark: > + +breadcrumb-delimiter: > + + + diff --git a/layouts/_default/_markup/render-heading.html b/layouts/_default/_markup/render-heading.html new file mode 100644 index 0000000..392b21b --- /dev/null +++ b/layouts/_default/_markup/render-heading.html @@ -0,0 +1,7 @@ + + {{ .Text | safeHTML }} + {{ if gt .Level 1 }} + + + {{ end }} + diff --git a/layouts/partials/breadcrumb.html b/layouts/partials/breadcrumb.html new file mode 100644 index 0000000..e7a4e3c --- /dev/null +++ b/layouts/partials/breadcrumb.html @@ -0,0 +1,13 @@ +
+ {{ range .Ancestors.Reverse }} + {{ if not .IsHome }} +
+ {{ .LinkTitle }} +
+ {{ partial "utils/icon.html" (dict "context" . "name" "breadcrumb-delimiter" "attributes" "class=\"w-3.5 shrink-0\"") }} + {{ end }} + {{ end }} +
+ {{ .LinkTitle }} +
+
diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index e69de29..e63c0c6 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -0,0 +1,14 @@ + diff --git a/layouts/partials/sidebar.html b/layouts/partials/sidebar.html new file mode 100644 index 0000000..ce164b3 --- /dev/null +++ b/layouts/partials/sidebar.html @@ -0,0 +1,49 @@ + diff --git a/package-lock.json b/package-lock.json index 04a88e8..4be67e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,8 @@ "autoprefixer": "^10.4.14", "postcss": "^8.4.23", "postcss-cli": "^10.1.0", + "postcss-import": "^15.1.0", + "postcss-nested": "^6.0.1", "prettier": "^2.8.8", "prettier-plugin-go-template": "^0.0.13", "tailwindcss": "^3.3.2" @@ -430,9 +432,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.465", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.465.tgz", - "integrity": "sha512-XQcuHvEJRMU97UJ75e170mgcITZoz0lIyiaVjk6R+NMTJ8KBIvUHYd1779swgOppUlzxR+JsLpq59PumaXS1jQ==", + "version": "1.4.474", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.474.tgz", + "integrity": "sha512-GsFT9gtxkFMkpHf13UeN/RFbWdLQVs4DMxA1aQv4xdUAT2qyXEoAQ0hodl2sUvWmztOlicM1UYnNPcoMdzQB5A==", "dev": true }, "node_modules/emoji-regex": { @@ -451,9 +453,9 @@ } }, "node_modules/fast-glob": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", - "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -959,9 +961,9 @@ } }, "node_modules/postcss": { - "version": "8.4.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz", - "integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==", + "version": "8.4.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", + "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", "dev": true, "funding": [ { diff --git a/package.json b/package.json index a873625..f336052 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,8 @@ "autoprefixer": "^10.4.14", "postcss": "^8.4.23", "postcss-cli": "^10.1.0", + "postcss-import": "^15.1.0", + "postcss-nested": "^6.0.1", "prettier": "^2.8.8", "prettier-plugin-go-template": "^0.0.13", "tailwindcss": "^3.3.2" diff --git a/postcss.config.js b/postcss.config.js index 5382ffb..6cc68c7 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,8 +1,8 @@ let tailwindConfig = process.env.HUGO_FILE_TAILWIND_CONFIG_JS || './tailwind.config.js'; const tailwind = require('tailwindcss')(tailwindConfig); const autoprefixer = require('autoprefixer'); +const nested = require('postcss-nested') module.exports = { - // eslint-disable-next-line no-process-env - plugins: [tailwind, ...(process.env.HUGO_ENVIRONMENT === 'production' ? [autoprefixer] : [])], + plugins: [tailwind, nested, ...(process.env.HUGO_ENVIRONMENT === 'production' ? [autoprefixer] : [])], // add nesting to the plugins array };