♻️ synced branch to dev and fixed conflicts
|
@ -3,7 +3,8 @@
|
|||
<a target="_blank" href="https://www.buymeacoffee.com/nunocoracao"><img class="nozoom" src="https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=nunocoracao&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff" /></a>
|
||||
<a target="_blank" href="http://tee.pub/lic/qwSlWVBL5zc"><img class="nozoom" src="https://img.buymeacoffee.com/button-api/?text=Merch Store &emoji=💎&slug=nunocoracao&button_colour=5F7FFF&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00" /></a>
|
||||
|
||||
[](https://github.com/nunocoracao/blowfish/actions/workflows/pages.yml)
|
||||
[](https://github.com/nunocoracao/blowfish/actions/workflows/firebase-production.yml)
|
||||
[](https://github.com/nunocoracao/blowfish/actions/workflows/pages.yml)
|
||||
[](https://github.com/gohugoio/hugo/releases/tag/v0.87.0)
|
||||
[](https://github.com/nunocoracao/blowfish/blob/main/LICENSE)
|
||||
[](https://themes.gohugo.io/themes/blowfish/)
|
||||
|
|
|
@ -885,14 +885,21 @@ select {
|
|||
color: var(--tw-prose-code);
|
||||
font-weight: 600;
|
||||
font-size: 0.875em;
|
||||
background-color: rgba(var(--color-neutral-50), 1);
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
.prose :where(code):not(:where([class~="not-prose"] *))::before {
|
||||
content: "`";
|
||||
display: none;
|
||||
}
|
||||
|
||||
.prose :where(code):not(:where([class~="not-prose"] *))::after {
|
||||
content: "`";
|
||||
display: none;
|
||||
}
|
||||
|
||||
.prose :where(a code):not(:where([class~="not-prose"] *)) {
|
||||
|
@ -1160,6 +1167,14 @@ select {
|
|||
border-radius: 0.12rem;
|
||||
}
|
||||
|
||||
.prose :where(p):not(:where([class~="not-prose"] *))::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.prose :where(p):not(:where([class~="not-prose"] *))::after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.sr-only {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
|
@ -1306,10 +1321,6 @@ select {
|
|||
margin-bottom: 3rem;
|
||||
}
|
||||
|
||||
.mb-16 {
|
||||
margin-bottom: 4rem;
|
||||
}
|
||||
|
||||
.mt-5 {
|
||||
margin-top: 1.25rem;
|
||||
}
|
||||
|
@ -1374,6 +1385,10 @@ select {
|
|||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.mb-16 {
|
||||
margin-bottom: 4rem;
|
||||
}
|
||||
|
||||
.-mb-1 {
|
||||
margin-bottom: -0.25rem;
|
||||
}
|
||||
|
@ -1458,14 +1473,14 @@ select {
|
|||
height: 100vh;
|
||||
}
|
||||
|
||||
.h-12 {
|
||||
height: 3rem;
|
||||
}
|
||||
|
||||
.h-24 {
|
||||
height: 6rem;
|
||||
}
|
||||
|
||||
.h-12 {
|
||||
height: 3rem;
|
||||
}
|
||||
|
||||
.h-8 {
|
||||
height: 2rem;
|
||||
}
|
||||
|
@ -1474,14 +1489,6 @@ select {
|
|||
height: 100%;
|
||||
}
|
||||
|
||||
.h-\[120px\] {
|
||||
height: 120px;
|
||||
}
|
||||
|
||||
.h-\[100px\] {
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
.h-\[150px\] {
|
||||
height: 150px;
|
||||
}
|
||||
|
@ -1518,10 +1525,6 @@ select {
|
|||
min-height: 148px;
|
||||
}
|
||||
|
||||
.w-12 {
|
||||
width: 3rem;
|
||||
}
|
||||
|
||||
.w-full {
|
||||
width: 100%;
|
||||
}
|
||||
|
@ -1534,6 +1537,10 @@ select {
|
|||
width: 6rem;
|
||||
}
|
||||
|
||||
.w-12 {
|
||||
width: 3rem;
|
||||
}
|
||||
|
||||
.w-8 {
|
||||
width: 2rem;
|
||||
}
|
||||
|
@ -1582,6 +1589,11 @@ select {
|
|||
max-width: 48rem;
|
||||
}
|
||||
|
||||
.max-w-fit {
|
||||
max-width: -moz-fit-content;
|
||||
max-width: fit-content;
|
||||
}
|
||||
|
||||
.max-w-\[5rem\] {
|
||||
max-width: 5rem;
|
||||
}
|
||||
|
@ -2040,11 +2052,6 @@ select {
|
|||
line-height: 1.25rem;
|
||||
}
|
||||
|
||||
.text-xl {
|
||||
font-size: 1.25rem;
|
||||
line-height: 1.75rem;
|
||||
}
|
||||
|
||||
.text-base {
|
||||
font-size: 1rem;
|
||||
line-height: 1.5rem;
|
||||
|
@ -2064,6 +2071,11 @@ select {
|
|||
font-size: 0.6rem;
|
||||
}
|
||||
|
||||
.text-xl {
|
||||
font-size: 1.25rem;
|
||||
line-height: 1.75rem;
|
||||
}
|
||||
|
||||
.font-extrabold {
|
||||
font-weight: 800;
|
||||
}
|
||||
|
@ -2119,16 +2131,16 @@ select {
|
|||
color: rgba(var(--color-primary-600), var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.text-neutral-700 {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(var(--color-neutral-700), var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.text-neutral-500 {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(var(--color-neutral-500), var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.text-neutral-700 {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(var(--color-neutral-700), var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.text-neutral-800 {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(var(--color-neutral-800), var(--tw-text-opacity));
|
||||
|
@ -2190,14 +2202,14 @@ select {
|
|||
opacity: 0;
|
||||
}
|
||||
|
||||
.opacity-30 {
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
.opacity-70 {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.opacity-30 {
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
.mix-blend-normal {
|
||||
mix-blend-mode: normal;
|
||||
}
|
||||
|
@ -3029,11 +3041,6 @@ body:has(#menu-controller:checked) {
|
|||
background-color: rgba(var(--color-primary-500), var(--tw-bg-opacity)) !important;
|
||||
}
|
||||
|
||||
.hover\:text-primary-600:hover {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(var(--color-primary-600), var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.hover\:text-primary-700:hover {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(var(--color-primary-700), var(--tw-text-opacity));
|
||||
|
@ -3049,6 +3056,11 @@ body:has(#menu-controller:checked) {
|
|||
color: rgba(var(--color-neutral), var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.hover\:text-primary-600:hover {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(var(--color-primary-600), var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.hover\:text-primary-400:hover {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(var(--color-primary-400), var(--tw-text-opacity));
|
||||
|
@ -3259,15 +3271,15 @@ body:has(#menu-controller:checked) {
|
|||
background-color: rgba(var(--color-neutral-600), var(--tw-bg-opacity));
|
||||
}
|
||||
|
||||
.dark .dark\:bg-neutral-800\/50 {
|
||||
background-color: rgba(var(--color-neutral-800), 0.5);
|
||||
}
|
||||
|
||||
.dark .dark\:bg-primary-400 {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgba(var(--color-primary-400), var(--tw-bg-opacity));
|
||||
}
|
||||
|
||||
.dark .dark\:bg-neutral-800\/50 {
|
||||
background-color: rgba(var(--color-neutral-800), 0.5);
|
||||
}
|
||||
|
||||
.dark .dark\:bg-neutral-900\/50 {
|
||||
background-color: rgba(var(--color-neutral-900), 0.5);
|
||||
}
|
||||
|
@ -3339,6 +3351,10 @@ body:has(#menu-controller:checked) {
|
|||
background-color: rgba(var(--color-secondary-400), 1);
|
||||
}
|
||||
|
||||
.dark .dark\:prose-invert :where(code):not(:where([class~="not-prose"] *)) {
|
||||
background-color: rgba(var(--color-neutral-700), 1);
|
||||
}
|
||||
|
||||
.dark .dark\:text-neutral-500 {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(var(--color-neutral-500), var(--tw-text-opacity));
|
||||
|
|
|
@ -419,7 +419,6 @@ body:has(#menu-controller:checked) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
.medium-zoom-image--opened {
|
||||
z-index: 100;
|
||||
}
|
6
assets/lib/chart/chart.min.js
vendored
|
@ -81,6 +81,7 @@ enableCodeCopy = true
|
|||
groupByYear = true
|
||||
cardView = false
|
||||
cardViewScreenWidth = false
|
||||
constrainItemsWidth = false
|
||||
|
||||
[sitemap]
|
||||
excludedKinds = []
|
||||
|
|
|
@ -15,6 +15,29 @@
|
|||
pageRef = "docs"
|
||||
weight = 10
|
||||
|
||||
[[main]]
|
||||
name = "Parent"
|
||||
pageRef = "samples"
|
||||
weight = 20
|
||||
|
||||
[[main]]
|
||||
name = "test1"
|
||||
parent = "Parent"
|
||||
pageRef = "samples"
|
||||
weight = 20
|
||||
|
||||
[[main]]
|
||||
name = "test2"
|
||||
parent = "Parent"
|
||||
pageRef = "samples"
|
||||
weight = 20
|
||||
|
||||
[[main]]
|
||||
name = "test3"
|
||||
parent = "Parent"
|
||||
pageRef = "samples"
|
||||
weight = 20
|
||||
|
||||
[[main]]
|
||||
name = "Samples"
|
||||
pageRef = "samples"
|
||||
|
|
|
@ -76,10 +76,11 @@ defaultBackgroundImage = "/img/iceland.jpg"
|
|||
showViews = true
|
||||
showLikes = true
|
||||
showTableOfContents = true
|
||||
showCards = true
|
||||
showCards = false
|
||||
groupByYear = false
|
||||
cardView = true
|
||||
cardViewScreenWidth = false
|
||||
constrainItemsWidth = false
|
||||
|
||||
[sitemap]
|
||||
excludedKinds = ["taxonomy","term"]
|
||||
|
@ -94,7 +95,6 @@ defaultBackgroundImage = "/img/iceland.jpg"
|
|||
showTableOfContents = true
|
||||
cardView = false
|
||||
|
||||
|
||||
[term]
|
||||
showHero = true
|
||||
heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
|
||||
|
|
|
@ -3,12 +3,6 @@ title: "Welcome to Blowfish! :tada:"
|
|||
description: "This is a demo of the Blowfish theme for Hugo."
|
||||
---
|
||||
|
||||
<!--center style="display:flex;align-items:center;flex-wrap:wrap;justify-content:space-evenly;">
|
||||
<a target="_blank" href="https://www.buymeacoffee.com/nunocoracao"><img class="nozoom" src="https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=nunocoracao&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff" /></a>
|
||||
|
||||
<a target="_blank" href="http://tee.pub/lic/qwSlWVBL5zc"><img class="nozoom" src="https://img.buymeacoffee.com/button-api/?text=Merch Store &emoji=💎&slug=nunocoracao&button_colour=5F7FFF&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00" /></a>
|
||||
</center-->
|
||||
|
||||
This is a demo site built entirely using Blowfish. It also contains a complete set of [theme documentation]({{< ref "docs" >}}). Blowfish is flexible and is great for both static page-based content (like this demo) or a traditional blog with a feed of recent posts.
|
||||
|
||||
<div class="flex px-4 py-2 mb-8 text-base rounded-md bg-primary-100 dark:bg-primary-900">
|
||||
|
|
|
@ -55,6 +55,11 @@ Blowfish ships with a number of colour schemes out of the box. To change the bas
|
|||
|
||||
In addition to the default schemes, you can also create your own and re-style the entire website to your liking. Schemes are created by by placing a `<scheme-name>.css` file in the `assets/css/schemes/` folder. Once the file is created, simply refer to it by name in the theme configuration.
|
||||
|
||||
{{< alert "github">}}
|
||||
**Note:** generating these files manually can be hard, I've built a `nodejs` terminal tool to help with that, [Fugu](https://github.com/nunocoracao/fugu). In a nutshell, you pass the main three `hex` values of your color pallette and the program will output a css file that can be imported directly into Blowfish.
|
||||
{{< /alert >}}
|
||||
|
||||
|
||||
Blowfish defines a three-colour palette that is used throughout the theme. The three colours are defined as `neutral`, `primary` and `secondary` variants, each containing ten shades of colour.
|
||||
|
||||
Due to the way Tailwind CSS 3.0 calculates colour values with opacity, the colours specified in the scheme need to [conform to a particular format](https://github.com/adamwathan/tailwind-css-variable-text-opacity-demo) by providing the red, green and blue colour values.
|
||||
|
|
|
@ -147,12 +147,12 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||
### Header
|
||||
|
||||
| Name | Default | Description |
|
||||
| -------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| --------------- | --------- | --------------------------------------------------------------------------------- |
|
||||
| `header.layout` | `"basic"` | Defines the header for the entire site, supported values are `basic` and `fixed`. |
|
||||
### Footer
|
||||
|
||||
| Name | Default | Description |
|
||||
| -------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `footer.showMenu` | `true` | Show/hide the footer menu, which can be configured in the `[[footer]]` section of the `config/_default/menus.en.toml` file. |
|
||||
| `footer.showCopyright` | `true` | Whether or not to show the copyright string in the site footer. Note that the string itself can be customised using the `copyright` parameter in the [languages configuration](#language-and-i18n). |
|
||||
| `footer.showThemeAttribution` | `true` | Whether or not to show the "powered by" theme attribution in the site footer. If you choose to disable this message, please consider attributing the theme somewhere else on your site (for example, on your about page). |
|
||||
|
@ -161,7 +161,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||
### Homepage
|
||||
|
||||
| Name | Default | Description |
|
||||
| -------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `homepage.layout` | `"profile"` | The layout of the homepage. Valid values are `page`, `profile`, `hero`, `card`, `background`, or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/home/custom.html` file. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. |
|
||||
| `homepage.homepageImage` | _Not set_ | Image to be used in `hero` and `card` layouts. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details. |
|
||||
| `homepage.showRecent` | `false` | Whether or not to display the recent articles list on the homepage. |
|
||||
|
@ -174,7 +174,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||
### Article
|
||||
|
||||
| Name | Default | Description |
|
||||
| -------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ------------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `article.showDate` | `true` | Whether or not article dates are displayed. |
|
||||
| `article.showViews` | `false` | Whether or not article views are displayed. This requires firebase integrations to be enabled, look below. |
|
||||
| `article.showLikes` | `false` | Whether or not article likes are displayed. This requires firebase integrations to be enabled, look below. |
|
||||
|
@ -204,7 +204,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||
### List
|
||||
|
||||
| Name | Default | Description |
|
||||
| -------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ---------------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `list.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each list page. |
|
||||
| `list.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
||||
| `list.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the header on list pages. |
|
||||
|
@ -218,16 +218,18 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||
| `list.groupByYear` | `true` | Whether or not articles are grouped by year on list pages. |
|
||||
| `list.cardView` | `false` | Display lists as a gallery of cards. |
|
||||
| `list.cardViewScreenWidth` | `false` | Enhance the width of card galleries in lists to take the full width available. |
|
||||
| `list.constrainItemsWidth` | `false` | Limit item width to `prose` to increase readability. Useful when no feature images are available. |
|
||||
|
||||
### Sitemap
|
||||
|
||||
| Name | Default | Description |
|
||||
| -------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ----------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `sitemap.excludedKinds` | `["taxonomy", "term"]` | Kinds of content that should be excluded from the generated `/sitemap.xml` file. Refer to the [Hugo docs](https://gohugo.io/templates/section-templates/#page-kinds) for acceptable values. |
|
||||
|
||||
### Taxonomy
|
||||
|
||||
| Name | Default | Description |
|
||||
| -------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ------------------------------ | --------- | ---------------------------------------------------------------------------------------------------------- |
|
||||
| `taxonomy.showTermCount` | `true` | Whether or not the number of articles within a taxonomy term is displayed on the taxonomy listing. |
|
||||
| `taxonomy.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each taxonomy page. |
|
||||
| `taxonomy.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
||||
|
@ -239,7 +241,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||
### Term
|
||||
|
||||
| Name | Default | Description |
|
||||
| -------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| -------------------------- | --------- | ---------------------------------------------------------------------------------------------------------- |
|
||||
| `term.showHero` | `false` | Whether the thumbnail image will be shown as a hero image within each term page. |
|
||||
| `term.heroStyle` | _Not set_ | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
||||
| `term.showBreadcrumbs` | `false` | Whether or not breadcrumbs are displayed in the term header. |
|
||||
|
@ -252,7 +254,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||
### Firebase
|
||||
|
||||
| Name | Default | Description |
|
||||
| -------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ---------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `firebase.apiKey` | _Not set_ | Firebase apiKey, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||
| `firebase.authDomain` | _Not set_ | Firebase authDomain, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||
| `firebase.projectId` | _Not set_ | Firebase projectId, required to integrate against Firebase. Check [this page]({{< ref "firebase-views" >}}) for a guide on how to integrate Firebase into Blowfish. |
|
||||
|
@ -264,14 +266,14 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||
### Fathom Analytics
|
||||
|
||||
| Name | Default | Description |
|
||||
| -------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ------------------------ | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `fathomAnalytics.site` | _Not set_ | The site code generated by Fathom Analytics for the website. Refer to the [Analytics docs]({{< ref "partials#analytics" >}}) for more details. |
|
||||
| `fathomAnalytics.domain` | _Not set_ | If using a custom domain with Fathom Analytics, provide it here to serve `script.js` from the custom domain. |
|
||||
|
||||
### BuyMeACoffee
|
||||
|
||||
| Name | Default | Description |
|
||||
| -------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ----------------------------------- | --------- | --------------------------------------------------------------------------- |
|
||||
| `buymeacoffee.identifier` | _Not set_ | The identifier to the target buymeacoffee account. |
|
||||
| `buymeacoffee.globalWidget` | _Not set_ | Activate the global buymeacoffee widget. |
|
||||
| `buymeacoffee.globalWidgetMessage` | _Not set_ | Message what will be displayed the first time a new user lands on the site. |
|
||||
|
@ -280,7 +282,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||
### Verifications
|
||||
|
||||
| Name | Default | Description |
|
||||
| -------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ------------------------ | --------- | --------------------------------------------------------------------------------------- |
|
||||
| `verification.google` | _Not set_ | The site verification string provided by Google to be included in the site metadata. |
|
||||
| `verification.bing` | _Not set_ | The site verification string provided by Bing to be included in the site metadata. |
|
||||
| `verification.pinterest` | _Not set_ | The site verification string provided by Pinterest to be included in the site metadata. |
|
||||
|
|
|
@ -29,7 +29,7 @@ Front matter parameter default values are inherited from the theme's [base confi
|
|||
| `authors` | _Not set_ | Array of values for authors, if set it overrides `showAuthor` settings for page or site. Used on the multiple authors feature, check [this page]({{< ref "multi-author" >}}) for more details on how to configure that feature. |
|
||||
| `showAuthorsBadges` | `article.showAuthorsBadges` | Whether the `authors` taxonomies are are displayed in the article or list header. This requires the setup of `multiple authors` and the `authors` taxonomy. Check [this page]({{< ref "multi-author" >}}) for more details on how to configure that feature. |
|
||||
| `showHero` | `article.showHero` | Whether the thumbnail image will be shown as a hero image within the article page. |
|
||||
| `heroStyle` | `article.heroStyle` | Style to display the hero image, valid options are: `basic`, `big`, `background`. |
|
||||
| `heroStyle` | `article.heroStyle` | Style to display the hero image, valid options are: `basic`, `big`, `background`, `thumbAndBackground`. |
|
||||
| `showBreadcrumbs` | `article.showBreadcrumbs` or `list.showBreadcrumbs` | Whether the breadcrumbs are displayed in the article or list header. |
|
||||
| `showDate` | `article.showDate` | Whether or not the article date is displayed. The date is set using the `date` parameter. |
|
||||
| `showDateUpdated` | `article.showDateUpdated` | Whether or not the date the article was updated is displayed. The date is set using the `lastmod` parameter. |
|
||||
|
|
|
@ -114,8 +114,9 @@ Once you've copied the files, your config folder should look like this:
|
|||
```shell
|
||||
config/_default/
|
||||
├─ config.toml
|
||||
├─ languages.en.toml
|
||||
├─ markup.toml
|
||||
├─ menus.toml
|
||||
├─ menus.en.toml
|
||||
├─ module.toml # if you installed using Hugo Modules
|
||||
└─ params.toml
|
||||
```
|
||||
|
|
|
@ -18,6 +18,12 @@ Real websites that are built with Blowfish.
|
|||
{{< /lead >}}
|
||||
|
||||
|
||||
{{< alert >}}
|
||||
|
||||
**Blowfish user?** To add your site to this list, [submit a pull request](https://github.com/nunocoracao/blowfish/blob/main/exampleSite/content/users/index.md).
|
||||
|
||||
{{</ alert >}}
|
||||
|
||||
| Website | Details |
|
||||
| --------------------------------------------------------------------- | ---------------------------- |
|
||||
| [nunocoracao.com](https://nunocoracao.com) | Personal site - Theme author |
|
||||
|
|
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 43 KiB |
|
@ -1,8 +1,8 @@
|
|||
article:
|
||||
anchor_label: "Anchor"
|
||||
anchor_label: "Âncora"
|
||||
date: "{{ .Date }}"
|
||||
# date_updated: "Updated: {{ .Date }}"
|
||||
draft: "Draft"
|
||||
date_updated: "Atualizado em: {{ .Date }}"
|
||||
draft: "Rascunho"
|
||||
edit_title: "Editar Conteúdo"
|
||||
reading_time:
|
||||
one: "{{ .Count }} minuto"
|
||||
|
@ -15,16 +15,16 @@ article:
|
|||
views:
|
||||
one: "{{ .Count }} visualização"
|
||||
other: "{{ .Count }} visualizaçōes"
|
||||
part_of_series: "This article is part of a series."
|
||||
part: "Part"
|
||||
this_article: "This Article"
|
||||
part_of_series: "Este artigo faz parte de uma série de artigos."
|
||||
part: "Parte"
|
||||
this_article: "Esse Artigo"
|
||||
|
||||
author:
|
||||
byline_title: "Autor"
|
||||
|
||||
# code:
|
||||
# copy: "Copy"
|
||||
# copied: "Copied"
|
||||
code:
|
||||
copy: "Copiar"
|
||||
copied: "Copiado"
|
||||
|
||||
error:
|
||||
404_title: "Página não econtrada :confused:"
|
||||
|
@ -38,16 +38,16 @@ footer:
|
|||
|
||||
list:
|
||||
externalurl_title: "Link para site externo"
|
||||
no_articles: "Não tem artigos para lista aqui ainda."
|
||||
no_articles: "Não tem artigos para listar aqui ainda."
|
||||
|
||||
# nav:
|
||||
# scroll_to_top_title: "Scroll to top"
|
||||
# skip_to_main: "Skip to main content"
|
||||
nav:
|
||||
scroll_to_top_title: "Ir para o topo"
|
||||
skip_to_main: "Ir para o conteúdo principal"
|
||||
|
||||
# search:
|
||||
# open_button_title: "Search (/)"
|
||||
# close_button_title: "Close (Esc)"
|
||||
# input_placeholder: "Search"
|
||||
search:
|
||||
open_button_title: "Pesquisar (/)"
|
||||
close_button_title: "Fechar (Esc)"
|
||||
input_placeholder: "Pesquisar"
|
||||
|
||||
sharing:
|
||||
email: "Enviar por email"
|
||||
|
|
|
@ -26,13 +26,7 @@
|
|||
<main id="main-content" class="grow">
|
||||
{{ block "main" . }}{{ end }}
|
||||
{{ if and (.Site.Params.footer.showScrollToTop | default true) (gt .WordCount 1) }}
|
||||
<div class="pointer-events-none absolute top-[100vh] bottom-0 w-12 ltr:right-0 rtl:left-0">
|
||||
<a href="#the-top"
|
||||
class="pointer-events-auto sticky top-[calc(100vh-5.5rem)] flex h-12 w-12 mb-16 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 backdrop-blur hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
||||
aria-label="{{ i18n " nav.scroll_to_top_title" }}" title="{{ i18n " nav.scroll_to_top_title" }}">
|
||||
↑
|
||||
</a>
|
||||
</div>
|
||||
{{- partial "scroll-to-top.html" . -}}
|
||||
{{ end }}
|
||||
</main>
|
||||
{{- partial "footer.html" . -}}
|
||||
|
|
|
@ -3,13 +3,15 @@
|
|||
|
||||
<article>
|
||||
{{ if .Params.showHero | default (.Site.Params.article.showHero | default false) }}
|
||||
{{ $heroStyle := print "partials/hero/" .Site.Params.article.heroStyle ".html" }}
|
||||
{{ $heroStyle := .Params.heroStyle }}
|
||||
{{ if not $heroStyle }}{{ $heroStyle = .Site.Params.article.heroStyle }}{{ end }}
|
||||
{{ $heroStyle := print "partials/hero/" $heroStyle ".html" }}
|
||||
{{ if templates.Exists $heroStyle }}
|
||||
{{ partial $heroStyle . }}
|
||||
{{ else }}
|
||||
{{ partial "partials/hero/basic.html" . }}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
{{ end }}
|
||||
|
||||
<header id="single_header" class="mt-5 max-w-prose">
|
||||
{{ if .Params.showBreadcrumbs | default (.Site.Params.article.showBreadcrumbs | default false) }}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
||||
{{ with .Params.externalUrl }}
|
||||
<a href="{{ . }}" target="_blank" rel="external" class="min-w-full">
|
||||
{{ else }}
|
||||
|
@ -13,9 +14,15 @@
|
|||
{{- $featured := $images.GetMatch "*feature*" -}}
|
||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
||||
{{- with $featured -}}
|
||||
{{ if $disableImageOptimization }}
|
||||
{{ with . }}
|
||||
<div class="w-full thumbnail_card nozoom" style="background-image:url({{ .RelPermalink }});"></div>
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ with .Fill "600x600" }}
|
||||
<div class="w-full thumbnail_card nozoom" style="background-image:url({{ .RelPermalink }});"></div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{- else -}}
|
||||
{{- with $.Site.Params.images }}
|
||||
<meta property="og:image" content="{{ index . 0 | absURL }}" />{{ end -}}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
{{ $constrainItemsWidth := .Page.Site.Params.list.constrainItemsWidth | default false }}
|
||||
|
||||
{{ $articleClasses := "flex flex-wrap article" }}
|
||||
{{ if .Site.Params.list.showCards }}
|
||||
{{ $articleClasses = delimit (slice $articleClasses "border border-neutral-200 dark:border-neutral-700 border-2 rounded-md backdrop-blur") " " }}
|
||||
|
@ -12,6 +14,8 @@
|
|||
{{ $articleImageClasses = delimit (slice $articleImageClasses "thumbnailshadow md:mr-7") " " }}
|
||||
{{ end }}
|
||||
|
||||
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
||||
|
||||
{{ $articleInnerClasses := "" }}
|
||||
{{ if .Site.Params.list.showCards }}
|
||||
{{ $articleInnerClasses = delimit (slice $articleInnerClasses "p-4") " " }}
|
||||
|
@ -19,6 +23,11 @@
|
|||
{{ $articleInnerClasses = delimit (slice $articleInnerClasses "mt-3 md:mt-0") " " }}
|
||||
{{ end }}
|
||||
|
||||
{{ if $constrainItemsWidth }}
|
||||
{{ $articleClasses = delimit (slice $articleClasses "max-w-prose") " " }}
|
||||
{{ end }}
|
||||
|
||||
|
||||
{{ with .Params.externalUrl }}
|
||||
<a class="{{ $articleClasses }}" href="{{ . }}" target="_blank" rel="external">
|
||||
{{ else }}
|
||||
|
@ -32,9 +41,15 @@
|
|||
{{- $featured := $images.GetMatch "*feature*" -}}
|
||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
||||
{{- with $featured -}}
|
||||
{{ if $disableImageOptimization }}
|
||||
{{ with . }}
|
||||
<div class="{{ $articleImageClasses }}" style="background-image:url({{ .RelPermalink }});"></div>
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ with .Fill "600x400" }}
|
||||
<div class="{{ $articleImageClasses }}" style="background-image:url({{ .RelPermalink }});"></div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{- else -}}
|
||||
{{- with $.Site.Params.images }}
|
||||
<meta property="og:image" content="{{ index . 0 | absURL }}" />{{ end -}}
|
||||
|
@ -72,7 +87,7 @@
|
|||
{{ partial "article-meta/basic.html" . }}
|
||||
</div>
|
||||
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
|
||||
<div class="py-1 prose dark:prose-invert">
|
||||
<div class="py-1 max-w-fit prose dark:prose-invert">
|
||||
{{ .Summary | emojify }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<div style="padding-left:0;padding-right:0"
|
||||
class="site-header flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3">
|
||||
<div style="padding-left:0;padding-right:0;padding-top:2px;padding-bottom:3px"
|
||||
class="flex items-center justify-between px-4 py-6 sm:px-6 md:justify-start space-x-3">
|
||||
{{ if .Site.Params.Logo -}}
|
||||
{{ $logo := resources.Get .Site.Params.Logo }}
|
||||
{{ if $logo }}
|
||||
|
@ -91,12 +91,12 @@
|
|||
<div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400">
|
||||
{{ partial "icon.html" "bars" }}
|
||||
</div>
|
||||
<div id="menu-wrapper" style="padding-top:25px;"
|
||||
<div id="menu-wrapper" style="padding-top:5px;"
|
||||
class="fixed inset-0 z-30 invisible w-screen h-screen m-auto overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50">
|
||||
<ul
|
||||
class="flex movedown flex-col w-full px-6 py-6 mx-auto overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl sm:px-14 md:px-24 lg:px-32 sm:py-10 sm:pt-10">
|
||||
<li class="mb-1">
|
||||
<span class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400">{{ partial
|
||||
<span class="cursor-pointer inline-block align-text-bottom hover:text-primary-600 dark:hover:text-primary-400">{{ partial
|
||||
"icon.html"
|
||||
"xmark" }}</span>
|
||||
</li>
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
||||
|
||||
{{- $images := .Resources.ByType "image" -}}
|
||||
{{- $featured := $images.GetMatch "*background*" -}}
|
||||
{{- if not $featured }}{{ $featured = $images.GetMatch "*feature*" }}{{ end -}}
|
||||
|
@ -13,16 +15,25 @@
|
|||
(and ($.Site.Params.list.layoutBackgroundHeaderSpace | default true) ($isParentList))
|
||||
) }}
|
||||
{{- with $featured -}}
|
||||
{{ with .Resize "1200x" }}
|
||||
{{ if $shouldAddHeaderSpace | default true}}
|
||||
<div id="hero" class="h-[150px] md:h-[200px]"></div>
|
||||
{{ end }}
|
||||
<div class="fixed inset-x-0 top-0 h-[800px] single_hero_background nozoom"
|
||||
{{ if $disableImageOptimization }}
|
||||
{{ with . }}
|
||||
<div class="fixed inset-x-0 top-0 h-[800px] single_hero_background nozoom"
|
||||
style="background-image:url({{ .RelPermalink }});">
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ with .Resize "1200x" }}
|
||||
<div class="fixed inset-x-0 top-0 h-[800px] single_hero_background nozoom"
|
||||
style="background-image:url({{ .RelPermalink }});">
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<div class="absolute inset-0 bg-gradient-to-t from-neutral dark:from-neutral-800 to-transparent mix-blend-normal">
|
||||
</div>
|
||||
<div
|
||||
class="absolute inset-0 opacity-30 dark:opacity-60 bg-gradient-to-t from-neutral dark:from-neutral-800 to-neutral dark:to-neutral-800 mix-blend-normal">
|
||||
class="absolute inset-0 opacity-70 bg-gradient-to-t from-neutral dark:from-neutral-800 to-neutral dark:to-neutral-800 mix-blend-normal">
|
||||
</div>
|
||||
</div>
|
||||
{{ if $shouldBlur | default false }}
|
||||
|
@ -35,5 +46,4 @@
|
|||
});
|
||||
</script>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
|
|
|
@ -1,8 +1,16 @@
|
|||
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
||||
|
||||
{{- $images := .Resources.ByType "image" -}}
|
||||
{{- $featured := $images.GetMatch "*feature*" -}}
|
||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
||||
{{- with $featured -}}
|
||||
{{ if $disableImageOptimization }}
|
||||
{{ with . }}
|
||||
<div class="w-full h-36 md:h-56 lg:h-72 single_hero_basic nozoom" style="background-image:url({{ .RelPermalink }});"></div>
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ with .Resize "1200x" }}
|
||||
<div class="w-full h-36 md:h-56 lg:h-72 single_hero_basic nozoom" style="background-image:url({{ .RelPermalink }});"></div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{- end -}}
|
|
@ -1,8 +1,16 @@
|
|||
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
||||
|
||||
{{- $images := .Resources.ByType "image" -}}
|
||||
{{- $featured := $images.GetMatch "*feature*" -}}
|
||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
||||
{{- with $featured -}}
|
||||
{{ if $disableImageOptimization }}
|
||||
{{ with . }}
|
||||
<img class="w-full rounded-lg single_hero_round nozoom" src="{{ .RelPermalink }}">
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ with .Resize "1200x" }}
|
||||
<img class="w-full rounded-lg single_hero_round nozoom" src="{{ .RelPermalink }}">
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{- end -}}
|
|
@ -1,3 +1,5 @@
|
|||
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
||||
|
||||
{{- $images := .Resources.ByType "image" -}}
|
||||
{{- $background := $images.GetMatch "*background*" -}}
|
||||
{{- if not $background }}{{ with .Site.Params.defaultBackgroundImage }}{{ $background = resources.Get . }}{{ end }}{{ end -}}
|
||||
|
@ -14,12 +16,30 @@
|
|||
) }}
|
||||
|
||||
{{- with $featured -}}
|
||||
{{ if $disableImageOptimization }}
|
||||
{{ with . }}
|
||||
<div class="w-full rounded-md h-36 md:h-56 lg:h-72 single_hero_basic nozoom" style="background-image:url({{ .RelPermalink }});"></div>
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ with .Resize "1200x" }}
|
||||
<div class="w-full rounded-md h-36 md:h-56 lg:h-72 single_hero_basic nozoom" style="background-image:url({{ .RelPermalink }});"></div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
|
||||
{{- with $background -}}
|
||||
|
||||
{{ if $disableImageOptimization }}
|
||||
{{ with . }}
|
||||
<div class="fixed inset-x-0 top-0 h-[800px] single_hero_background nozoom"
|
||||
style="background-image:url({{ .RelPermalink }});">
|
||||
<div class="absolute inset-0 bg-gradient-to-t from-neutral dark:from-neutral-800 to-transparent mix-blend-normal">
|
||||
</div>
|
||||
<div
|
||||
class="absolute inset-0 opacity-30 dark:opacity-60 bg-gradient-to-t from-neutral dark:from-neutral-800 to-neutral dark:to-neutral-800 mix-blend-normal">
|
||||
</div>
|
||||
</div>{{ end }}
|
||||
{{ else }}
|
||||
{{ with .Resize "1200x" }}
|
||||
<div class="fixed inset-x-0 top-0 h-[800px] single_hero_background nozoom"
|
||||
style="background-image:url({{ .RelPermalink }});">
|
||||
|
@ -28,8 +48,9 @@
|
|||
<div
|
||||
class="absolute inset-0 opacity-30 dark:opacity-60 bg-gradient-to-t from-neutral dark:from-neutral-800 to-neutral dark:to-neutral-800 mix-blend-normal">
|
||||
</div>
|
||||
</div>
|
||||
</div>{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{- end -}}
|
||||
|
||||
{{ if $shouldBlur | default false }}
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
<section class="prose text-neutral-200">{{ .Content | emojify }}</section>
|
||||
<section class="prose dark:prose-invert">{{ .Content | emojify }}</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
7
layouts/partials/scroll-to-top.html
Normal file
|
@ -0,0 +1,7 @@
|
|||
<div class="pointer-events-none absolute top-[100vh] bottom-0 w-12 ltr:right-0 rtl:left-0">
|
||||
<a href="#the-top"
|
||||
class="pointer-events-auto sticky top-[calc(100vh-5.5rem)] flex h-12 w-12 mb-16 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 backdrop-blur hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
||||
aria-label="{{ i18n "nav.scroll_to_top_title" }}" title="{{ i18n "nav.scroll_to_top_title" }}">
|
||||
↑
|
||||
</a>
|
||||
</div>
|
|
@ -2,6 +2,8 @@
|
|||
<div
|
||||
class="border border-neutral-200 dark:border-neutral-700 border-2 rounded overflow-hidden shadow-2xl relative backdrop-blur">
|
||||
|
||||
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
|
||||
|
||||
{{- with site.Params.images -}}
|
||||
{{- range first 6 . }}
|
||||
<meta property="og:image" content="{{ . | absURL }}" />{{ end -}}
|
||||
|
@ -10,8 +12,14 @@
|
|||
{{- $featured := $images.GetMatch "*feature*" -}}
|
||||
{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
|
||||
{{- with $featured -}}
|
||||
{{ if $disableImageOptimization }}
|
||||
{{ with . }}
|
||||
<div class="w-full thumbnail_card nozoom" style="background-image:url({{ .RelPermalink }});"></div>
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ with .Fill "600x600" }}
|
||||
<div class="w-full thumbnail_card_term nozoom" style="background-image:url({{ .RelPermalink }});"></div>
|
||||
<div class="w-full thumbnail_card nozoom" style="background-image:url({{ .RelPermalink }});"></div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{- else -}}
|
||||
{{- with site.Params.images }}
|
||||
|
|
|
@ -1,41 +1,45 @@
|
|||
{{/* Mermaid */}}
|
||||
{{ if .Page.HasShortcode "mermaid" }}
|
||||
{{ $mermaidLib := resources.Get "lib/mermaid/mermaid.min.js" }}
|
||||
{{ $mermaidConfig := resources.Get "js/mermaid.js" }}
|
||||
{{ $mermaidConfig := $mermaidConfig | resources.Minify }}
|
||||
{{ $mermaidJS := slice $mermaidLib $mermaidConfig | resources.Concat "js/mermaid.bundle.js" | resources.Fingerprint "sha512" }}
|
||||
<script defer type="text/javascript" src="{{ $mermaidJS.RelPermalink }}" integrity="{{ $mermaidJS.Data.Integrity }}"></script>
|
||||
{{ $mermaidLib := resources.Get "lib/mermaid/mermaid.min.js" }}
|
||||
{{ $mermaidConfig := resources.Get "js/mermaid.js" }}
|
||||
{{ $mermaidConfig := $mermaidConfig | resources.Minify }}
|
||||
{{ $mermaidJS := slice $mermaidLib $mermaidConfig | resources.Concat "js/mermaid.bundle.js" | resources.Fingerprint
|
||||
"sha512" }}
|
||||
<script defer type="text/javascript" src="{{ $mermaidJS.RelPermalink }}"
|
||||
integrity="{{ $mermaidJS.Data.Integrity }}"></script>
|
||||
{{ end }}
|
||||
|
||||
{{/* Chart */}}
|
||||
{{ if .Page.HasShortcode "chart" }}
|
||||
{{ $chartLib := resources.Get "lib/chart/chart.min.js" }}
|
||||
{{ $chartConfig := resources.Get "js/chart.js" }}
|
||||
{{ $chartConfig := $chartConfig | resources.Minify }}
|
||||
{{ $chartJS := slice $chartLib $chartConfig | resources.Concat "js/chart.bundle.js" | resources.Fingerprint "sha512" }}
|
||||
<script defer type="text/javascript" src="{{ $chartJS.RelPermalink }}" integrity="{{ $chartJS.Data.Integrity }}"></script>
|
||||
{{ $chartLib := resources.Get "lib/chart/chart.min.js" }}
|
||||
{{ $chartConfig := resources.Get "js/chart.js" }}
|
||||
{{ $chartConfig := $chartConfig | resources.Minify }}
|
||||
{{ $chartJS := slice $chartLib $chartConfig | resources.Concat "js/chart.bundle.js" | resources.Fingerprint "sha512" }}
|
||||
<script defer type="text/javascript" src="{{ $chartJS.RelPermalink }}"
|
||||
integrity="{{ $chartJS.Data.Integrity }}"></script>
|
||||
{{ end }}
|
||||
|
||||
{{/* Katex */}}
|
||||
{{ if .Page.HasShortcode "katex" }}
|
||||
{{ $katexCSS := resources.Get "lib/katex/katex.min.css" }}
|
||||
{{ $katexCSS := $katexCSS | resources.Fingerprint "sha512" }}
|
||||
<link
|
||||
type="text/css" rel="stylesheet"
|
||||
href="{{ $katexCSS.RelPermalink }}"
|
||||
integrity="{{ $katexCSS.Data.Integrity }}"
|
||||
/>
|
||||
{{ $katexJS := resources.Get "lib/katex/katex.min.js" }}
|
||||
{{ $katexJS := $katexJS | resources.Fingerprint "sha512" }}
|
||||
<script defer src="{{ $katexJS.RelPermalink }}" integrity="{{ $katexJS.Data.Integrity }}"></script>
|
||||
{{ $katexRenderJS := resources.Get "lib/katex/auto-render.min.js" }}
|
||||
{{ $katexRenderJS := $katexRenderJS | resources.Fingerprint "sha512" }}
|
||||
<script defer src="{{ $katexRenderJS.RelPermalink }}" integrity="{{ $katexRenderJS.Data.Integrity }}" onload="renderMathInElement(document.body);"></script>
|
||||
{{ $katexFonts := resources.Match "lib/katex/fonts/*" }}
|
||||
{{ range $katexFonts }}
|
||||
<!-- {{ .RelPermalink }} -->
|
||||
{{ end }}
|
||||
{{/* TypeIt */}}
|
||||
{{ if .Page.HasShortcode "typeit" }}
|
||||
{{ $typeitLib := resources.Get "lib/typeit/typeit.umd.js" }}
|
||||
<script defer type="text/javascript" src="{{ $typeitLib.RelPermalink }}" integrity="{{ $typeitLib.Data.Integrity }}"></script>
|
||||
{{ end }}
|
||||
{{ $katexCSS := resources.Get "lib/katex/katex.min.css" }}
|
||||
{{ $katexCSS := $katexCSS | resources.Fingerprint "sha512" }}
|
||||
<link type="text/css" rel="stylesheet" href="{{ $katexCSS.RelPermalink }}" integrity="{{ $katexCSS.Data.Integrity }}" />
|
||||
{{ $katexJS := resources.Get "lib/katex/katex.min.js" }}
|
||||
{{ $katexJS := $katexJS | resources.Fingerprint "sha512" }}
|
||||
<script defer src="{{ $katexJS.RelPermalink }}" integrity="{{ $katexJS.Data.Integrity }}"></script>
|
||||
{{ $katexRenderJS := resources.Get "lib/katex/auto-render.min.js" }}
|
||||
{{ $katexRenderJS := $katexRenderJS | resources.Fingerprint "sha512" }}
|
||||
<script defer src="{{ $katexRenderJS.RelPermalink }}" integrity="{{ $katexRenderJS.Data.Integrity }}"
|
||||
onload="renderMathInElement(document.body);"></script>
|
||||
{{ $katexFonts := resources.Match "lib/katex/fonts/*" }}
|
||||
{{ range $katexFonts }}
|
||||
<!-- {{ .RelPermalink }} -->
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{/* TypeIt */}}
|
||||
{{ if .Page.HasShortcode "typeit" }}
|
||||
{{ $typeitLib := resources.Get "lib/typeit/typeit.umd.js" }}
|
||||
<script defer src="{{ $typeitLib.RelPermalink }}" integrity="{{ $typeitLib.Data.Integrity }}"
|
||||
onload="renderTypeItElements();"></script>
|
||||
{{ end }}
|
|
@ -1,3 +1,3 @@
|
|||
<div class="lead !mb-9 text-xl">
|
||||
<div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl">
|
||||
{{ .Inner | markdownify }}
|
||||
</div>
|
||||
|
|
18
package-lock.json
generated
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "hugo-blowfish-theme",
|
||||
"version": "2.21.0",
|
||||
"version": "2.23.1",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "hugo-blowfish-theme",
|
||||
"version": "2.21.0",
|
||||
"version": "2.23.1",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
@ -17,7 +17,7 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/typography": "^0.5.8",
|
||||
"chart.js": "^4.1.1",
|
||||
"chart.js": "^4.1.2",
|
||||
"fuse.js": "^6.6.2",
|
||||
"katex": "^0.16.4",
|
||||
"mermaid": "^9.3.0",
|
||||
|
@ -213,9 +213,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/chart.js": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.1.1.tgz",
|
||||
"integrity": "sha512-P0pCosNXp+LR8zO/QTkZKT6Hb7p0DPFtypEeVOf+6x06hX13NIb75R0DXUA4Ksx/+48chDQKtCCmRCviQRTqsA==",
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.1.2.tgz",
|
||||
"integrity": "sha512-9L1w6WLPq6ztiWVVOYtDtpo0CUsBKDWPrUEdwChAyzczaikqeSwNKEv3QpJ7EO4ICcLSi6UDVhgvcnUhRJidRA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@kurkle/color": "^0.3.0"
|
||||
|
@ -1815,9 +1815,9 @@
|
|||
"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="
|
||||
},
|
||||
"chart.js": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.1.1.tgz",
|
||||
"integrity": "sha512-P0pCosNXp+LR8zO/QTkZKT6Hb7p0DPFtypEeVOf+6x06hX13NIb75R0DXUA4Ksx/+48chDQKtCCmRCviQRTqsA==",
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.1.2.tgz",
|
||||
"integrity": "sha512-9L1w6WLPq6ztiWVVOYtDtpo0CUsBKDWPrUEdwChAyzczaikqeSwNKEv3QpJ7EO4ICcLSi6UDVhgvcnUhRJidRA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@kurkle/color": "^0.3.0"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "hugo-blowfish-theme",
|
||||
"version": "2.22.2",
|
||||
"version": "2.24.0",
|
||||
"description": "Blowfish theme for Hugo",
|
||||
"scripts": {
|
||||
"fullinstall": "npm run preinstall && npm install && npm run postinstall",
|
||||
|
@ -35,7 +35,7 @@
|
|||
"homepage": "https://github.com/nunocoracao/blowfish#readme",
|
||||
"devDependencies": {
|
||||
"@tailwindcss/typography": "^0.5.8",
|
||||
"chart.js": "^4.1.1",
|
||||
"chart.js": "^4.1.2",
|
||||
"fuse.js": "^6.6.2",
|
||||
"katex": "^0.16.4",
|
||||
"mermaid": "^9.3.0",
|
||||
|
|
|
@ -117,6 +117,25 @@ module.exports = {
|
|||
padding: "0.1rem 0.2rem",
|
||||
borderRadius: "0.12rem",
|
||||
},
|
||||
code:{
|
||||
backgroundColor: theme("colors.neutral.50 / 1"),
|
||||
paddingTop: "3px",
|
||||
paddingBottom: "3px",
|
||||
paddingLeft: "5px",
|
||||
paddingRight: "5px",
|
||||
},
|
||||
'code::before': {
|
||||
display: 'none'
|
||||
},
|
||||
'code::after': {
|
||||
display: 'none'
|
||||
},
|
||||
'p::before': {
|
||||
display: 'none'
|
||||
},
|
||||
'p::after': {
|
||||
display: 'none'
|
||||
},
|
||||
},
|
||||
},
|
||||
invert: {
|
||||
|
@ -131,6 +150,9 @@ module.exports = {
|
|||
mark: {
|
||||
backgroundColor: theme("colors.secondary.400 / 1"),
|
||||
},
|
||||
code:{
|
||||
backgroundColor: theme("colors.neutral.700 / 1"),
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
|
|