Merge pull request #514 from markdumay/dart

Add support for Dart Sass
This commit is contained in:
Mark Dumay
2023-09-06 08:08:56 +02:00
committed by GitHub
16 changed files with 182 additions and 11 deletions

View File

@@ -3,5 +3,6 @@ assets/scss/components/_syntax-dark.scss
assets/scss/components/_syntax-light.scss
assets/scss/vendor
assets/scss/theme/fonts.scss
assets/scss/app-dart.scss
assets/scss/app.scss
node_modules

56
assets/scss/app-dart.scss Normal file
View File

@@ -0,0 +1,56 @@
@use "sass:meta";
// Define template variables
@use "hugo:vars" as h; // note: modified for dart-sass
// Include default variable overrides
@import "common/variables-dart.scss"; // note: modified for dart-sass
@import "common/icons.scss";
// Import Bootstrap configuration (mounted by core Bootstrap module)
@import "bootstrap-dart.scss"; // note: modified for dart-sass
// Include dark mode overrides
@import "common/variables-dark.scss";
// Import Hinode theme styles
@import "components/alert.scss";
@import "components/blockquote.scss";
@import "components/breadcrumb.scss";
@import "components/buttons.scss";
@import "components/card.scss";
@import "components/carousel.scss";
@import "components/clipboard.scss";
@import "components/command.scss";
@import "components/comments.scss";
@import "components/feature.scss";
@import "components/footer.scss";
@import "components/navbar.scss";
@import "components/img.scss";
@import "components/pagination.scss";
@import "components/persona.scss";
@import "components/popover.scss";
@import "components/sidebar.scss";
@import "components/syntax-dart.scss"; // note: modified for dart-sass
@import "components/table.scss";
@import "components/timeline.scss";
@import "components/toc.scss";
@import "components/vimeo.scss";
@import "common/animation.scss";
@import "common/styles.scss";
@import "layouts/reboot.scss";
@import "layouts/type.scss";
@import "common/export.scss";
@import "helpers/colored-links.scss";
@import "helpers/display.scss";
// note: modified for dart-sass
@if h.$import-fonts {
@include meta.load-css(theme/fonts);
}
// Import theme placeholder
@import "theme/theme.scss";
// Import Bootstrap utilities API (mounted by core Bootstrap module)
@import "modules/bootstrap/utilities/api";

View File

@@ -0,0 +1,41 @@
// Bootstrap variables overrides for theme
$enable-negative-margins: true;
$enable-important-utilities: true !default;
// Remove the border from the focused navigation toggler
$navbar-toggler-focus-width: 0 !default;
$font-family-sans-serif: h.$theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
$headings-font-weight: 600 !default;
$font-weight-lighter: lighter !default;
$font-weight-light: 200 !default;
$font-weight-normal: 300 !default;
$font-weight-bold: 600 !default;
$font-weight-bolder: bolder !default;
strong {
font-weight: 600 if($enable-important-utilities, !important, null);
}
$navbar-offset: h.$navbar-offset;
$primary: h.$primary;
$secondary: h.$secondary;
$success: h.$success;
$info: h.$info;
$warning: h.$warning;
$danger: h.$danger;
$light: h.$light;
$dark: h.$dark;
$black: #000 !default;
$btn-toggle-color: $black !default;
$carousel-dark-indicator-active-bg: #fff !default;
$carousel-dark-caption-color: #fff !default;
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
$primary-text-emphasis-dark: mix(white, h.$primary, h.$dark-mode-tint) !default;
$secondary-text-emphasis-dark: mix(white, h.$secondary, h.$dark-mode-tint) !default;
$link-color-dark: mix(white, h.$primary, h.$dark-mode-tint) !default;
$primary-bg-subtle-dark: mix(black, h.$primary, h.$dark-mode-shade) !default;
$primary-border-subtle-dark: mix(black, h.$primary, calc(h.$dark-mode-shade / 2)) !default;

View File

@@ -22,8 +22,8 @@ strong {
$black: #000 !default;
$btn-toggle-color: $black !default;
$carousel-dark-indicator-active-bg: #ffffff !default;
$carousel-dark-caption-color: #ffffff !default;
$carousel-dark-indicator-active-bg: #fff !default;
$carousel-dark-caption-color: #fff !default;
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
// scss-docs-start color-mode

View File

@@ -0,0 +1,49 @@
// stylelint-disable annotation-no-unknown
@import "syntax-light";
.bg,
.chroma,
.chroma .err {
// set to transparent background to avoid rendering issues with example shortcode
background-color: transparent if($enable-important-utilities, !important, null);
}
.chroma {
display: flex;
}
.chroma code {
flex: 1;
}
.syntax-highlight {
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
overflow-x: auto;
}
@if $enable-dark-mode {
[data-bs-theme="dark"] {
@include meta.load-css(syntax-dark);
.bg,
.chroma,
.chroma .err {
// set to transparent background to avoid rendering issues with example shortcode
background-color: transparent if($enable-important-utilities, !important, null);
}
.syntax-highlight {
background-color: var(--bs-tertiary-bg) if($enable-important-utilities, !important, null);
overflow-x: auto;
}
.bg,
.chroma,
.chroma .ge,
.chroma .gl,
.chroma .gs {
color: #c9d1d9 if($enable-important-utilities, !important, null);
}
}
}
// stylelint-enable annotation-no-unknown

View File

@@ -9,6 +9,8 @@
[main.externalLinks]
cue = false
tab = false
[main.build]
transpiler = "libsass"
# toml-docs-end main
# toml-docs-start modules

View File

@@ -5,8 +5,8 @@ paginate = 9
enableGitInfo = true
# additional settings
googleAnalytics = "G-T85PPZ36GN"
baseURL = "https://demo.gethinode.com/"
# googleAnalytics = "G-T85PPZ36GN"
baseURL = "https://dart.gethinode.com/"
canonifyURLs = false
enableEmoji = true
enableRobotsTXT = true

View File

@@ -7,6 +7,8 @@
[main.externalLinks]
cue = true
tab = true
[main.build]
transpiler = "dartsass"
[modules]
core = ["bootstrap", "flexsearch", "fontawesome"]

View File

@@ -1,5 +1,9 @@
github.com/gethinode/mod-bootstrap v1.1.1 h1:Tx4M5hGVOFrEaxnUONDAm6N9xuRi5UphKlT7F26HujU=
github.com/gethinode/mod-bootstrap v1.1.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-bootstrap v1.2.0 h1:JkTcImU3qpi25WgKvUxUYiMoiXtrxrG+Wf/utRB5UbU=
github.com/gethinode/mod-bootstrap v1.2.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-bootstrap v1.2.1 h1:z54dgsbhShhlri+X77Z+yLrg0wz/f8C8ojA/wnlhsJc=
github.com/gethinode/mod-bootstrap v1.2.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-flexsearch v1.2.0 h1:SSMpWzK9SMbi9QRYfil9PJZLLWWLHWzlTc69UxtSWAA=
github.com/gethinode/mod-flexsearch v1.2.0/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.3.0 h1:RbfEDw219Y1rOVp9lHmy5ePdF9lyPalDu2J5oVeejrU=

2
go.mod
View File

@@ -3,7 +3,7 @@ module github.com/gethinode/hinode
go 1.19
require (
github.com/gethinode/mod-bootstrap v1.1.1 // indirect
github.com/gethinode/mod-bootstrap v1.2.1 // indirect
github.com/gethinode/mod-flexsearch v1.4.0 // indirect
github.com/gethinode/mod-fontawesome v1.3.1 // indirect
github.com/gethinode/mod-katex v1.0.2 // indirect

4
go.sum
View File

@@ -4,6 +4,10 @@ github.com/gethinode/mod-bootstrap v1.1.0 h1:BbalsW8kmFhv+J+dcc41TGcjIlM/p69AB0h
github.com/gethinode/mod-bootstrap v1.1.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-bootstrap v1.1.1 h1:Tx4M5hGVOFrEaxnUONDAm6N9xuRi5UphKlT7F26HujU=
github.com/gethinode/mod-bootstrap v1.1.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-bootstrap v1.2.0 h1:JkTcImU3qpi25WgKvUxUYiMoiXtrxrG+Wf/utRB5UbU=
github.com/gethinode/mod-bootstrap v1.2.0/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-bootstrap v1.2.1 h1:z54dgsbhShhlri+X77Z+yLrg0wz/f8C8ojA/wnlhsJc=
github.com/gethinode/mod-bootstrap v1.2.1/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8=
github.com/gethinode/mod-flexsearch v1.0.1 h1:FJkRsUzSnQTXl3MWCigT4E6vfff870UWTnkGqaDGIhA=
github.com/gethinode/mod-flexsearch v1.0.1/go.mod h1:TXbGbWsvmhBdsTzRt887mcpFfr4ORpzG3+h/l4W3YM4=
github.com/gethinode/mod-flexsearch v1.1.0 h1:7BCMyQDlYlskNXuazt8Jg/jg9WREexu2xVkYqThkAX4=

View File

@@ -3,7 +3,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
{{ hugo.Generator}}
{{ partial "head/stylesheet.html" -}}
{{ partialCached "head/stylesheet-core.html" . -}}
{{- $modules := site.Params.modules.optional | intersect .Page.Params.modules -}}
{{- range $index, $mod := $modules -}}
{{- $source := printf "scss/%s.scss" $mod -}}

View File

@@ -0,0 +1,3 @@
{{/* Wrapper for the stylesheet partial with default arguments. */}}
{{/* Added to avoid interference with the argument of partialCached. */}}
{{ partial "head/stylesheet.html" -}}

View File

@@ -1,5 +1,14 @@
{{- $transpiler := site.Params.main.build.transpiler | default "libsass" -}}
{{- $supportedTranspilers := slice "libsass" "dartsass" -}}
{{- if not (in $supportedTranspilers $transpiler) -}}
{{- errorf "partial [head/stylesheet.html] - Invalid value for param 'transpiler': %s" $transpiler -}}
{{- end -}}
{{- $absoluteURL := site.Params.main.canonifyAssetsURLs | default false -}}
{{- $source := .source | default "scss/app.scss" -}}
{{- $source := .source }}
{{- if not $source -}}
{{- if eq $transpiler "dartsass" }}{{ $source = "scss/app-dart.scss" }}{{ else }}{{ $source = "scss/app.scss" }}{{ end -}}
{{- end -}}
{{- $target := .target | default "css/main.css" -}}
{{- $page := .page -}}
{{- $core := .core | default true -}}
@@ -36,7 +45,7 @@
"dark-mode-tint" (default "0%" site.Params.style.darkModeTint)
-}}
{{- $options := (dict "transpiler" "libsass" "targetPath" $target "enableSourceMap" (not hugo.IsProduction) "vars" $vars) -}}
{{- $options := (dict "transpiler" $transpiler "targetPath" $target "enableSourceMap" (not hugo.IsProduction) "vars" $vars) -}}
{{- $bundle := partial "utilities/bundle" (dict "match" $source "filename" (printf "scss/bundle-%d.scss" now.UnixNano) "modules" $modules "basepath" "scss" "debugging" site.Params.debugging.showSCSS) -}}
{{- $css := $bundle | resources.ExecuteAsTemplate $target . | toCSS $options -}}

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "@gethinode/hinode",
"version": "0.19.0",
"version": "0.20.0-alpha",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@gethinode/hinode",
"version": "0.19.0",
"version": "0.20.0-alpha",
"license": "MIT",
"devDependencies": {
"@fullhuman/postcss-purgecss": "^5.0.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@gethinode/hinode",
"version": "0.19.0",
"version": "0.20.0-alpha",
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
"keywords": [
"hugo",