Compare commits
43 Commits
pre-theme-
...
production
Author | SHA1 | Date |
---|---|---|
Jez Cope | cc479378ef | |
Jez Cope | bc09db66b2 | |
Jez Cope | 6db97a1957 | |
Jez Cope | f7dc0749fb | |
Jez Cope | f9f1939aaf | |
Jez Cope | 1ef9e9ba70 | |
Jez Cope | ed2604b466 | |
Jez Cope | 89911b0c74 | |
Jez Cope | e0c3e8fe82 | |
Jez Cope | 8e032fb89d | |
Jez Cope | 193cbf8f30 | |
Jez Cope | 769a815104 | |
Jez Cope | 40419cf801 | |
Jez Cope | 8ef51cb9de | |
Jez Cope | 72dc0ac56a | |
Jez Cope | 5830d2c6e2 | |
Jez Cope | 1dba4581e8 | |
Jez Cope | ff711a80e4 | |
Jez Cope | 6169653e0a | |
Jez Cope | e5ca41b07e | |
Jez Cope | 2d8fadb968 | |
Jez Cope | e075969731 | |
Jez Cope | 6d5821d60e | |
Jez Cope | 04faa08a1b | |
Jez Cope | fc93b217b3 | |
Jez Cope | 0f2716d4a6 | |
Jez Cope | d939b0b276 | |
Jez Cope | f98bd316d4 | |
Jez Cope | a250b03255 | |
Jez Cope | f11d7a5970 | |
Jez Cope | ac2d5e789c | |
Jez Cope | 4bbf073ae5 | |
Jez Cope | 434e9c84c9 | |
Jez Cope | ff7c015d70 | |
Jez Cope | c5e84d6387 | |
Jez Cope | a7be6d1b37 | |
Jez Cope | 1ef1c82b87 | |
Jez Cope | 972b9ef6be | |
Jez Cope | b5bf256c9b | |
Jez Cope | ab7f933714 | |
Jez Cope | f71bb12247 | |
Jez Cope | dc5ffba014 | |
Jez Cope | 8995ecbb1f |
|
@ -6,7 +6,6 @@ output.diff
|
|||
.doit.db
|
||||
state_data.json
|
||||
.ropeproject
|
||||
node_modules
|
||||
/drafts/
|
||||
deploy.yaml
|
||||
/resources/
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
public
|
||||
tmp
|
||||
.output
|
||||
output.diff
|
||||
.cache
|
||||
.doit.db
|
||||
state_data.json
|
||||
.ropeproject
|
||||
drafts
|
||||
deploy.yaml
|
||||
resources
|
||||
.direnv
|
||||
.envrc
|
||||
result
|
|
@ -31,21 +31,15 @@ params:
|
|||
pingback: https://webmention.io/erambler.co.uk/xmlrpc
|
||||
cactus: erambler.co.uk
|
||||
|
||||
netlify:
|
||||
name: erambler
|
||||
id: 0599621e-c4b4-4341-8e42-6f8b9c1d33cc
|
||||
|
||||
social:
|
||||
- kind: keyoxide
|
||||
info: 'D9DA3E47E8BD377DA317B3D09E42CE071C4559D1'
|
||||
- kind: keybase
|
||||
info: 'jezcope'
|
||||
- kind: mastodon
|
||||
info: ['petrichor', 'scholar.social']
|
||||
info: ['petrichor', 'digipres.club']
|
||||
- kind: matrix
|
||||
info: '@jez:petrichor.me'
|
||||
- kind: twitter
|
||||
info: 'jezcope'
|
||||
- kind: github
|
||||
info: 'jezcope'
|
||||
- kind: gitlab
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
#+title: Request for input: the missing narrative of libraries in research software engineering
|
||||
#+date: <2021-09-23 Thu>
|
||||
#+tags[]: RSE Librarianship
|
||||
#+slug: missing-narrative-libraries-rse
|
||||
|
||||
Last week I received an email from a friend inviting me to submit a video to a panel [[https://septembrse.github.io/#/event/L1001]['Missing narratives around diversity and inclusion in Research Software Engineering' hosted as part of SeptembRSE 2021]], the goals of which are:
|
||||
|
||||
1) help create inclusive communities in RSE by centring on intersectional voices
|
||||
2) increase awareness of power imbalances that negatively impact multiple marginalised groups in research
|
||||
3) provide a call-to-action for diversity and inclusion
|
||||
|
||||
# #+begin_quote
|
||||
# I am writing to invite your contribution to a panel [[https://septembrse.github.io/#/event/L1001]['Missing narratives around diversity and inclusion in Research Software Engineering' hosted as part of SeptembRSE 2021]]. I would like to request you to make an audio/video submission (3-5 minutes) covering: (1) A brief introduction to who you are, (2) what missing narrative you want to highlight, and (3) some thoughts on what you, and others, might be able to do to make that happen.
|
||||
|
||||
# […]
|
||||
|
||||
# *Goal:* This panel aims to facilitate discussions to (1) help create inclusive communities in RSE by centring on intersectional voices, (2) increase awareness of power imbalances that negatively impact multiple marginalised groups in research, and (3) provide a call-to-action for diversity and inclusion. We will bring together experts who lead different efforts for improving diversity, equity and inclusion in academia, for example, training, recruitment, policy, data-led research, activism and so on.
|
||||
# #+end_quote
|
||||
|
||||
/Obviously/ I'm always flattered to be asked my opinion, but I wasn't sure what a straight, cisgender, middle-class white man could offer to an event on diversity, so I had a chat with one of the organisers. We agreed that issues of race, gender, sexuality, disability and many more would be well covered by other speakers, and that I would focus on another narrative also frequently missing in discussions of Research Software Engineering (RSE): *librarians*.
|
||||
|
||||
Librarians are a diverse bunch, but we generally have some or more of the following skills, highly valuable to RSE: information management, metadata, digital preservation, teaching/training, communicating across disciplinary boundaries.
|
||||
|
||||
Now, I have my own views on this, but this is *not my narrative alone*, so I would be very grateful for your perspective, dear reader.
|
||||
|
||||
Some things that I've thought of so far:
|
||||
|
||||
- Librarianship is still perceived as a feminine profession, with all the expectations of quiet uncomplaining service that go along with that; this was neatly captured by the wonderful [[https://twitter.com/Fobettarh][Fobazi Ettarh (@Fobettarh)]] in the concept of [[https://fobaziettarh.com/2017/05/30/vocational-awe/][Vocational Awe]] (see also [[http://www.inthelibrarywiththeleadpipe.org/2018/vocational-awe/][Vocational Awe and Librarianship: The Lies We Tell Ourselves – In the Library with the Lead Pipe]])
|
||||
- Because of that, we're often used only to provide transactional services, but that makes very limited use of our professional knowledge and experience: we're much more effective as collaborators
|
||||
- Librarianship itself is subject to many of the privileges and oppressions you might expect: while more gender-balanced (for example) than many professions, there are way too few librarians of colour, and it gets maler and whiter the closer you get to senior leadership
|
||||
- Some university libraries have gone down the route of employing RSEs themselves. I know that St Andrews did at one point but I'm not sure if that's still the case
|
||||
- The British Library certainly /does/ employ RSEs, as well as collaborating with RSEs in the [[https://www.turing.ac.uk/][Alan Turing Institute]], for projects like [[https://livingwithmachines.ac.uk/][Living With Machines]] (though we're hardly typical in having active research projects within the Library compared with most academic libraries)
|
||||
- Some (many) dedicated RSE groups are actually really good at collaborating with library colleagues: I was always treated as a peer and collaborator by the RSE team at Sheffield, for example
|
||||
|
||||
|
||||
*Please let me know what other perspectives on this I'm missing*, I don't want this to just be based on my own biased view. You can chime in via the usual methods: the comments below, via [[https://twitter.com/jezcope][Twitter]] or [[https://scholar.social/@petrichor][Mastodon]], via [[https://matrix.to/#/@jez:petrichor.me][Matrix]] or by email if you know it. I'll put the video somewhere public when it's done, and try to credit anyone who contributes either in the video or in a followup post.
|
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
title: Twitter archive
|
||||
slug: twitter-archive
|
||||
date: 2023-07-10T19:02:14+01:00
|
||||
type: note
|
||||
tags:
|
||||
- Social Media
|
||||
- Twitter
|
||||
---
|
||||
|
||||
Just a quick note to say
|
||||
that since I've deleted my Twitter account,
|
||||
I've set up a [static archive of all my tweets](/twitter-archive/).
|
||||
Yes, even those embarrassing first ones.
|
||||
|
||||
This was made possible by Darius Kazemi:
|
||||
<https://tinysubversions.com/twitter-archive/make-your-own/>
|
||||
|
||||
You can still
|
||||
[find me on Mastodon as @petrichor:digipres.club](https://digipres.club/@petrichor)
|
||||
or via any of the other links at the bottom of the page.
|
|
@ -0,0 +1,100 @@
|
|||
#+title: Projects
|
||||
#+linktitle: projects
|
||||
#+menu: main
|
||||
#+type: page
|
||||
|
||||
I'm trying to move away from relying on any one [[https://en.wikipedia.org/wiki/Forge_(software)][forge]] (e.g. GitHub, GitLab, etc.) for project hosting, so here's a rundown of some of the little open source projects I have scattered around the web right now.
|
||||
|
||||
Some of them have their own issue trackers --- feel free to tell me about bugs or make pull requests there --- but you can also send me bugs, comments or patches at [[mailto:projects@erambler.co.uk][projects@erambler.co.uk]].
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
* Active
|
||||
:PROPERTIES:
|
||||
:ID: ae2de630-b353-4fa3-8139-a6cbb2709442
|
||||
:END:
|
||||
|
||||
Projects that can be considered current: I may or may not have made any significant changes to them recently, but I certainly use them and I would love it if you did too!
|
||||
|
||||
** mxadm
|
||||
|
||||
A simple CLI interface to basic Matrix room admin tasks.
|
||||
|
||||
+ Source: [[https://tildegit.org/petrichor/mxadm]]
|
||||
+ Rust crate: [[https://lib.rs/crates/mxadm][mxadm on lib.rs]]; [[https://crates.io/crates/mxadm][mxadm on crates.io]]
|
||||
|
||||
** Template iPython magics 🎩
|
||||
|
||||
This package provides simple IPython magics to render cells as templates in a variety of different templating languages. It currently supports [[https://www.makotemplates.org/][Mako]] and [[https://jinja.palletsprojects.com/][Jinja2]].
|
||||
|
||||
- Source: [[https://gitlab.com/jezcope/template-ipython-magic]]
|
||||
- Python package: [[https://pypi.org/project/template-ipython-magic/][template-ipython-magic on PyPI]]
|
||||
|
||||
** remarkable-scripts
|
||||
|
||||
A small collection of useful scripts for users of [[https://remarkable.com/][reMarkable paper tablets]].
|
||||
|
||||
- Source: [[https://tildegit.org/petrichor/remarkable-scripts]]
|
||||
|
||||
# ** theme-bl-remark
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
* Dormant or nascent
|
||||
|
||||
Projects that I've started and done some work on, often to the point of a working prototype, or that are just ideas so far, and that I intend to develop further at some point.
|
||||
|
||||
** pyrefine
|
||||
|
||||
Execute OpenRefine JSON scripts without OpenRefine (or Java).
|
||||
|
||||
- Source: [[https://github.com/jezcope/pyrefine]]
|
||||
|
||||
** csvy-python
|
||||
|
||||
Read CSVY (https://csvy.org/) data packages from Python.
|
||||
|
||||
- Source: [[https://github.com/jezcope/csvy-python]]
|
||||
|
||||
** nix-gently
|
||||
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
* Experiments & toys
|
||||
|
||||
Things that were done to try something out, or to do a very simple job that I no longer need.
|
||||
|
||||
- doi2oa
|
||||
- altmedals2012
|
||||
- runkeeper-data
|
||||
- Shipton Mill queue checker
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
* Educational examples
|
||||
|
||||
Things that simply exist to demonstrate for others how a thing can be done.
|
||||
|
||||
- binder-nix-flakes :: Demo of using the [[https://nixos.wiki/wiki/Flakes]["flakes"]] feature of [[https://nixos.org/][NixOS and it's cross-platform package manager, nix]], to specify the dependencies for a [[https://mybinder.org/][Binder]] of Jupyter notebooks. [[https://tildegit.org/petrichor/binder-nix-flakes]]
|
||||
- zenodo-example-py :: Demo of accessing the [[https://developers.zenodo.org/][Zenodo REST API]] from Python to fetch records. [[https://gitlab.com/jezcope/zenodo-example-py]]
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
* Abandoned
|
||||
|
||||
Stuff that I started and used for a while, but which no longer serve any purpose for me. Feel free to learn from these or [[https://en.wikipedia.org/wiki/Fork_(software_development)][fork]] them as the basis for something of your own
|
||||
|
||||
- sagadoc :: A really simple tool to generate documents from data, code and templates. Heavily inspired by [[https://orgmode.org/][Org mode for Emacs]]. I mostly use org-mode or [[https://jupyter.org/][Jupyter Notebooks]] for this these days. [[https://github.com/jezcope/sagadoc]]
|
||||
- dropbox-conflicts-el :: An [[https://www.gnu.org/software/emacs/][emacs]] package to detect conflicted copies of files in your Dropbox on open. [[https://github.com/jezcope/dropbox-conflicts-el]]
|
||||
|
||||
# - beamer-uob
|
||||
# - theme-sidmouth-nikola
|
||||
# - theme-sidmouth-hugo
|
||||
# - Org.tmbundle
|
||||
# - nikola-series
|
||||
# - chrome-scroll-back
|
||||
# - sakaiws-ruby
|
||||
# - OmniSync
|
||||
# - minty
|
|
@ -4,10 +4,10 @@ date: 2020-10-21 14:00:04 UTC+01:00
|
|||
slug: talks
|
||||
type: text
|
||||
data: data/talks.yaml
|
||||
menu:
|
||||
main:
|
||||
name: talks
|
||||
weight: 50
|
||||
# menu:
|
||||
# main:
|
||||
# name: talks
|
||||
# weight: 50
|
||||
---
|
||||
|
||||
Here is a selection of talks that I've given.
|
||||
|
|
27
flake.lock
27
flake.lock
|
@ -2,11 +2,11 @@
|
|||
"nodes": {
|
||||
"flake-utils": {
|
||||
"locked": {
|
||||
"lastModified": 1623875721,
|
||||
"narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=",
|
||||
"lastModified": 1631561581,
|
||||
"narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "f7e004a55b120c02ecb6219596820fcd32ca8772",
|
||||
"rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -17,11 +17,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1624992828,
|
||||
"narHash": "sha256-whhfrjqOa1BUQAQu4J0QSRUG+iZbTeJpnsl52kLPBfc=",
|
||||
"lastModified": 1632768365,
|
||||
"narHash": "sha256-dewSDOFvHS9mGXBOB8E4nciQ2QavKpsNRXMSnCKJOxE=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "520da1d00f26d2f4d31eb3cd3c5dc8b3a1e998c6",
|
||||
"rev": "75b5e5ee2642c28687592c24420d2085c1238f4c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -33,7 +33,20 @@
|
|||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
"nixpkgs": "nixpkgs",
|
||||
"twitter-archive": "twitter-archive"
|
||||
}
|
||||
},
|
||||
"twitter-archive": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"narHash": "sha256-XOaTvEWedFtofiTODpzzXyq60NZ8DsS4Tp2bLijIELE=",
|
||||
"type": "tarball",
|
||||
"url": "https://codeberg.org/api/v1/repos/jezcope/twitter-archive/archive/main.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://codeberg.org/api/v1/repos/jezcope/twitter-archive/archive/main.tar.gz"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
52
flake.nix
52
flake.nix
|
@ -1,15 +1,49 @@
|
|||
{
|
||||
description = "A very basic flake";
|
||||
description = "Content and server config for erambler.co.uk";
|
||||
|
||||
inputs.nixpkgs.url = "github:NixOS/nixpkgs";
|
||||
inputs.flake-utils.url = "github:numtide/flake-utils";
|
||||
inputs.twitter-archive = {
|
||||
url =
|
||||
"https://codeberg.org/api/v1/repos/jezcope/twitter-archive/archive/main.tar.gz";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils }:
|
||||
flake-utils.lib.eachDefaultSystem
|
||||
(system:
|
||||
let pkgs = nixpkgs.legacyPackages.${system}; in
|
||||
{
|
||||
devShell = import ./shell.nix { inherit pkgs; };
|
||||
}
|
||||
);
|
||||
outputs = { self, nixpkgs, flake-utils, twitter-archive }:
|
||||
{
|
||||
overlay = self: super:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${super.system};
|
||||
buildIosevka = pkgs.callPackage ./nix/iosevka.nix;
|
||||
in rec {
|
||||
iosevka = buildIosevka { set = "mnemosyne"; };
|
||||
iosevka-aile = buildIosevka { set = "aile-mnemosyne"; };
|
||||
iosevka-etoile = buildIosevka { set = "etoile-mnemosyne"; };
|
||||
|
||||
fonts = pkgs.symlinkJoin {
|
||||
name = "mnemosyne-fonts";
|
||||
paths = [ iosevka iosevka-aile iosevka-etoile ];
|
||||
};
|
||||
|
||||
erambler =
|
||||
pkgs.callPackage ./nix/build.nix { inherit fonts twitter-archive; };
|
||||
|
||||
inherit twitter-archive;
|
||||
};
|
||||
|
||||
nixosModule = import ./nix/server.nix { inherit self; };
|
||||
} // flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
overlays = [ self.overlay ];
|
||||
};
|
||||
in {
|
||||
packages = {
|
||||
inherit (pkgs) erambler iosevka iosevka-aile iosevka-etoile fonts;
|
||||
default = pkgs.erambler;
|
||||
};
|
||||
|
||||
devShell = pkgs.callPackage ./nix/shell.nix { };
|
||||
});
|
||||
}
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
{ pkgs, fonts, lndir, twitter-archive, ... }:
|
||||
|
||||
with pkgs;
|
||||
stdenv.mkDerivation {
|
||||
name = "erambler-html";
|
||||
src = ../.;
|
||||
nativeBuildInputs = [ hugo fonts twitter-archive ];
|
||||
buildPhase = "hugo";
|
||||
installPhase = ''
|
||||
mkdir $out
|
||||
cp -R public/* public/.well-known "$out"
|
||||
mkdir -p "$out/font"
|
||||
${lndir}/bin/lndir -silent ${fonts} "$out/font"
|
||||
ln -s ${twitter-archive} "$out/twitter-archive"
|
||||
'';
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
{ stdenv, lib, nodejs, nodePackages, remarshal, ttfautohint-nox
|
||||
, privateBuildPlan ? builtins.readFile ./private-build-plans.toml
|
||||
, extraParameters ? null, set ? null }:
|
||||
|
||||
assert (privateBuildPlan != null) -> set != null;
|
||||
assert (extraParameters != null) -> set != null;
|
||||
|
||||
let
|
||||
# We don't know the attribute name for the Iosevka package as it
|
||||
# changes not when our update script is run (which in turn updates
|
||||
# node-packages.json, but when node-packages/generate.sh is run
|
||||
# (which updates node-packages.nix).
|
||||
#
|
||||
# Doing it this way ensures that the package can always be built,
|
||||
# although possibly an older version than ioseva-bin.
|
||||
nodeIosevka =
|
||||
(lib.findSingle (drv: drv ? packageName && drv.packageName == "iosevka")
|
||||
(throw "no 'iosevka' package found in nodePackages")
|
||||
(throw "multiple 'iosevka' packages found in nodePackages")
|
||||
(lib.attrValues nodePackages)).override (drv: { dontNpmInstall = true; });
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = if set != null then "iosevka-${set}" else "iosevka";
|
||||
inherit (nodeIosevka) version src;
|
||||
|
||||
nativeBuildInputs = [ nodejs nodeIosevka remarshal ttfautohint-nox ];
|
||||
|
||||
buildPlan = if builtins.isAttrs privateBuildPlan then
|
||||
builtins.toJSON { buildPlans.${pname} = privateBuildPlan; }
|
||||
else
|
||||
privateBuildPlan;
|
||||
|
||||
inherit extraParameters;
|
||||
passAsFile = [ "buildPlan" "extraParameters" ];
|
||||
|
||||
configurePhase = ''
|
||||
runHook preConfigure
|
||||
${lib.optionalString (builtins.isAttrs privateBuildPlan) ''
|
||||
remarshal -i "$buildPlanPath" -o private-build-plans.toml -if json -of toml
|
||||
''}
|
||||
${lib.optionalString (builtins.isString privateBuildPlan) ''
|
||||
cp "$buildPlanPath" private-build-plans.toml
|
||||
''}
|
||||
${lib.optionalString (extraParameters != null) ''
|
||||
echo -e "\n" >> params/parameters.toml
|
||||
cat "$extraParametersPath" >> params/parameters.toml
|
||||
''}
|
||||
ln -s ${nodeIosevka}/lib/node_modules/iosevka/node_modules .
|
||||
runHook postConfigure
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
npm run build --no-update-notifier -- --jCmd=$NIX_BUILD_CORES contents::$pname >/dev/null
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -d "$out/ttf"
|
||||
install -d "$out/woff2"
|
||||
install "dist/$pname/ttf"/* "$out/ttf"
|
||||
install "dist/$pname/woff2"/* "$out/woff2"
|
||||
install "dist/$pname/$pname.css" "$out"
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
passthru = { updateScript = ./update-default.sh; };
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://be5invis.github.io/Iosevka";
|
||||
downloadPage = "https://github.com/be5invis/Iosevka/releases";
|
||||
description = ''
|
||||
Slender monospace sans-serif and slab-serif typeface inspired by Pragmata
|
||||
Pro, M+ and PF DIN Mono, designed to be the ideal font for programming.
|
||||
'';
|
||||
license = licenses.ofl;
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [
|
||||
cstrahan
|
||||
jfrankenau
|
||||
ttuegel
|
||||
babariviere
|
||||
rileyinman
|
||||
AluisioASG
|
||||
];
|
||||
};
|
||||
}
|
|
@ -0,0 +1,178 @@
|
|||
[buildPlans.iosevka-mnemosyne]
|
||||
family = "Iosevka"
|
||||
spacing = "fixed"
|
||||
serifs = "sans"
|
||||
no-cv-ss = true
|
||||
|
||||
[buildPlans.iosevka-mnemosyne.weights.regular]
|
||||
shape = 400
|
||||
menu = 400
|
||||
css = 400
|
||||
|
||||
[buildPlans.iosevka-mnemosyne.weights.bold]
|
||||
shape = 700
|
||||
menu = 700
|
||||
css = 700
|
||||
|
||||
[buildPlans.iosevka-mnemosyne.slopes.upright]
|
||||
angle = 0
|
||||
shape = "upright"
|
||||
menu = "upright"
|
||||
css = "normal"
|
||||
|
||||
[buildPlans.iosevka-mnemosyne.slopes.italic]
|
||||
angle = 9.4
|
||||
shape = "italic"
|
||||
menu = "italic"
|
||||
css = "italic"
|
||||
|
||||
[buildPlans.iosevka-aile-mnemosyne]
|
||||
family = "Iosevka Aile"
|
||||
desc = "Sans-serif"
|
||||
spacing = "quasi-proportional"
|
||||
snapshotFamily = 'iosevka-aile'
|
||||
snapshotFeature = '"NWID" off'
|
||||
export-glyph-names = true
|
||||
|
||||
[buildPlans.iosevka-aile-mnemosyne.variants.design]
|
||||
capital-i = "serifless"
|
||||
capital-j = "serifless"
|
||||
capital-k = "straight-serifless"
|
||||
capital-m = "flat-bottom"
|
||||
capital-w = "straight-flat-top"
|
||||
a = "double-storey-serifless"
|
||||
d = "toothed-serifless"
|
||||
e = "flat-crossbar"
|
||||
f = "flat-hook"
|
||||
g = "single-storey-serifless"
|
||||
i = "serifless"
|
||||
j = "flat-hook-serifless"
|
||||
k = "straight-serifless"
|
||||
l = "serifless"
|
||||
r = "compact"
|
||||
t = "flat-hook"
|
||||
u = "toothed"
|
||||
w = "straight-flat-top"
|
||||
y = "straight"
|
||||
long-s = "flat-hook"
|
||||
eszet = "longs-s-lig"
|
||||
lower-iota = "flat-tailed"
|
||||
lower-lambda = "straight-turn"
|
||||
cyrl-ef = "serifless"
|
||||
cyrl-capital-ka = "symmetric-connected-serifless"
|
||||
cyrl-ka = "symmetric-connected-serifless"
|
||||
cyrl-capital-u = "straight"
|
||||
at = "fourfold"
|
||||
percent = "rings-continuous-slash"
|
||||
|
||||
# Letterform control for U+1D670 ... U+1D6A3
|
||||
[buildPlans.iosevka-aile-mnemosyne.derivingVariants.mathtt.design]
|
||||
capital-i = "serifed"
|
||||
capital-j = "serifless"
|
||||
capital-k = "straight-serifless"
|
||||
capital-m = "flat-bottom"
|
||||
capital-w = "straight-flat-top"
|
||||
a = "double-storey-serifless"
|
||||
d = "toothed-serifless"
|
||||
e = "flat-crossbar"
|
||||
f = "flat-hook"
|
||||
g = "single-storey-serifless"
|
||||
i = "serifed"
|
||||
j = "flat-hook-serifed"
|
||||
k = "straight-serifless"
|
||||
l = "serifed"
|
||||
r = "compact"
|
||||
t = "flat-hook"
|
||||
u = "toothed"
|
||||
w = "straight-flat-top"
|
||||
y = "straight"
|
||||
long-s = "flat-hook"
|
||||
eszet = "longs-s-lig"
|
||||
lower-iota = "flat-tailed"
|
||||
lower-lambda = "straight-turn"
|
||||
cyrl-ef = "serifless"
|
||||
cyrl-capital-ka = "symmetric-connected-serifless"
|
||||
cyrl-ka = "symmetric-connected-serifless"
|
||||
cyrl-capital-u = "straight"
|
||||
at = "fourfold"
|
||||
percent = "rings-continuous-slash"
|
||||
|
||||
[buildPlans.iosevka-aile-mnemosyne.widths.normal]
|
||||
shape = 600
|
||||
menu = 5
|
||||
css = "normal"
|
||||
|
||||
[buildPlans.iosevka-aile-mnemosyne.weights.regular]
|
||||
shape = 400
|
||||
menu = 400
|
||||
css = 400
|
||||
|
||||
[buildPlans.iosevka-aile-mnemosyne.weights.bold]
|
||||
shape = 700
|
||||
menu = 700
|
||||
css = 700
|
||||
|
||||
[buildPlans.iosevka-aile-mnemosyne.slopes.upright]
|
||||
angle = 0
|
||||
shape = "upright"
|
||||
menu = "upright"
|
||||
css = "normal"
|
||||
|
||||
[buildPlans.iosevka-aile-mnemosyne.slopes.italic]
|
||||
angle = 9.4
|
||||
shape = "italic"
|
||||
menu = "italic"
|
||||
css = "italic"
|
||||
|
||||
[buildPlans.iosevka-mnemosyne.widths.normal]
|
||||
shape = 500
|
||||
menu = 5
|
||||
css = "normal"
|
||||
|
||||
|
||||
[buildPlans.iosevka-etoile-mnemosyne]
|
||||
family = "Iosevka Etoile"
|
||||
desc = "Slab-serif"
|
||||
spacing = "quasi-proportional"
|
||||
serifs = 'slab'
|
||||
snapshotFamily = 'iosevka-etoile'
|
||||
snapshotFeature = '"NWID" off'
|
||||
export-glyph-names = true
|
||||
|
||||
[buildPlans.iosevka-etoile-mnemosyne.variants.design]
|
||||
at = 'fourfold'
|
||||
capital-w = 'straight-flat-top'
|
||||
f = "flat-hook-serifed"
|
||||
j = 'flat-hook-serifed'
|
||||
t = "flat-hook"
|
||||
w = 'straight-flat-top'
|
||||
|
||||
[buildPlans.iosevka-etoile-mnemosyne.variants.italic]
|
||||
f = "flat-hook-tailed"
|
||||
|
||||
[buildPlans.iosevka-etoile-mnemosyne.widths.normal]
|
||||
shape = 600
|
||||
menu = 5
|
||||
css = "normal"
|
||||
|
||||
[buildPlans.iosevka-etoile-mnemosyne.weights.regular]
|
||||
shape = 400
|
||||
menu = 400
|
||||
css = 400
|
||||
|
||||
[buildPlans.iosevka-etoile-mnemosyne.weights.bold]
|
||||
shape = 700
|
||||
menu = 700
|
||||
css = 700
|
||||
|
||||
[buildPlans.iosevka-etoile-mnemosyne.slopes.upright]
|
||||
angle = 0
|
||||
shape = "upright"
|
||||
menu = "upright"
|
||||
css = "normal"
|
||||
|
||||
[buildPlans.iosevka-etoile-mnemosyne.slopes.italic]
|
||||
angle = 9.4
|
||||
shape = "italic"
|
||||
menu = "italic"
|
||||
css = "italic"
|
|
@ -0,0 +1,29 @@
|
|||
{ self }:
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
|
||||
virtualHosts."erambler.co.uk" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
|
||||
root = self.packages.${pkgs.system}.erambler;
|
||||
extraConfig = ''
|
||||
rewrite ^/.well-known/(host-meta|webfinger).* https://fed.brid.gy$request_uri redirect;
|
||||
'';
|
||||
locations = {
|
||||
"~ ^/(feed|rss)(\\.xml|/)".return = "301 /index.xml";
|
||||
"~ ^/tags/([a-zA-Z-]+)\\.xml".return = "301 /tags/$1/index.xml";
|
||||
"~ ^/20(0\\d|1[0-5])/\\d\\d/\\d//d/(.*)".return = "301 /blog/$2";
|
||||
|
||||
"/index.xml".extraConfig = ''
|
||||
add_header Link '<https://erambler.co.uk/rss.xml>; rel="self"';
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{ pkgs ? import <nixpkgs> { } }:
|
||||
|
||||
with pkgs;
|
||||
mkShell {
|
||||
buildInputs = [
|
||||
(python38.withPackages
|
||||
(py: with py; [ python invoke rich requests ruamel_yaml sh ]))
|
||||
yarn
|
||||
hugo
|
||||
simple-http-server
|
||||
];
|
||||
}
|
31
shell.nix
31
shell.nix
|
@ -1,31 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
python = pkgs.python38;
|
||||
my_yaspin = python.pkgs.buildPythonPackage rec {
|
||||
pname = "yaspin";
|
||||
version = "1.3.0";
|
||||
src = python.pkgs.fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 =
|
||||
"cc37d35cc7f796dada6c37430b49e471ffa05d0686e6f8de36f83978b732df54";
|
||||
};
|
||||
doCheck = false;
|
||||
meta = {
|
||||
homepage = "https://github.com/pavdmyt/yaspin";
|
||||
description = "Yet Another Terminal Spinner for Python";
|
||||
};
|
||||
};
|
||||
pythonWithPackages = python.withPackages (py: [
|
||||
py.python
|
||||
|
||||
# For locally-run tasks
|
||||
py.invoke
|
||||
py.rich
|
||||
py.requests
|
||||
py.ruamel_yaml
|
||||
my_yaspin
|
||||
]);
|
||||
in pkgs.mkShell {
|
||||
buildInputs = with pkgs; [ pythonWithPackages yarn hugo ];
|
||||
}
|
Binary file not shown.
|
@ -1 +1,7 @@
|
|||
Sitemap: http://erambler.co.uk/sitemap.xml
|
||||
|
||||
User-agent: TurnitinBot
|
||||
Disallow: /
|
||||
|
||||
User-agent: *
|
||||
Disallow: /contact/
|
||||
|
|
86
tasks.py
86
tasks.py
|
@ -1,75 +1,27 @@
|
|||
from invoke import task
|
||||
from yaspin import yaspin
|
||||
import requests as rq
|
||||
from pathlib import Path
|
||||
from ruamel.yaml import YAML
|
||||
import sh
|
||||
|
||||
yaml = YAML()
|
||||
|
||||
CONFIG = yaml.load(Path("deploy.yaml"))
|
||||
DEPLOY_DIR = Path(__file__).parent / "public"
|
||||
REMOTE_DIR = "jemisin.petrichor.me:/srv/www/erambler.co.uk/"
|
||||
|
||||
|
||||
@task
|
||||
def deploy(c, clean=False):
|
||||
with yaspin().yellow as s:
|
||||
if clean:
|
||||
s.text = "clean and rebuild"
|
||||
c.run(f"rm --recursive --force {CONFIG['deploy-dir']}", hide=True)
|
||||
c.run("nikola build", hide=True)
|
||||
s.ok("[done]")
|
||||
if clean:
|
||||
print("clean and rebuild...")
|
||||
sh.rm(DEPLOY_DIR, recursive=True, force=True)
|
||||
sh.hugo()
|
||||
print("done")
|
||||
|
||||
s.text = "add to IPFS"
|
||||
s.start()
|
||||
result = c.run(
|
||||
f"ipfs add --recursive --hidden --quieter {CONFIG['deploy-dir']}",
|
||||
hide=True,
|
||||
)
|
||||
new_hash = result.stdout.rstrip()
|
||||
s.ok("[done]")
|
||||
s.write(f"- published at {new_hash}")
|
||||
|
||||
pinata(c, new_hash, "erambler")
|
||||
update_dnslink(c, f"/ipfs/{new_hash}")
|
||||
|
||||
|
||||
@task
|
||||
def pinata(c, new_hash, name):
|
||||
with yaspin(text="pin at pinata").yellow as s:
|
||||
result = rq.post(
|
||||
"https://api.pinata.cloud/pinning/pinByHash",
|
||||
headers={"Authorization": f'Bearer {CONFIG["pinata-key"]}'},
|
||||
json={
|
||||
"pinataMetadata": {"name": name},
|
||||
"hashToPin": new_hash,
|
||||
},
|
||||
)
|
||||
result.raise_for_status()
|
||||
s.ok("[done]")
|
||||
details = result.json()
|
||||
s.write(f'- pin status: {details["status"]}')
|
||||
|
||||
|
||||
@task
|
||||
def update_dnslink(c, ipfs_path):
|
||||
with yaspin(text="update dnslink record").yellow as s:
|
||||
cf_config = CONFIG["cloudflare"]
|
||||
token = cf_config["token"]
|
||||
zone_id = cf_config["zone_id"]
|
||||
record_id = cf_config["record_id"]
|
||||
|
||||
result = rq.put(
|
||||
f"https://api.cloudflare.com/client/v4/zones/{zone_id}/dns_records/{record_id}",
|
||||
headers={"Authorization": f"Bearer {token}"},
|
||||
json={
|
||||
"type": "TXT",
|
||||
"name": "_dnslink.erambler.co.uk",
|
||||
"content": f"dnslink={ipfs_path}",
|
||||
"ttl": 1,
|
||||
},
|
||||
)
|
||||
result.raise_for_status()
|
||||
details = result.json()
|
||||
if details["success"]:
|
||||
s.ok("[done]")
|
||||
else:
|
||||
s.fail()
|
||||
print("push via rsync...")
|
||||
sh.rsync(
|
||||
f"{DEPLOY_DIR}/",
|
||||
REMOTE_DIR,
|
||||
checksum=True,
|
||||
archive=True,
|
||||
verbose=True,
|
||||
delete=True,
|
||||
_fg=True,
|
||||
)
|
||||
print("done")
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2021 Jez Cope
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -0,0 +1,33 @@
|
|||
# Mnemosyne: a minimal Hugo theme
|
||||
|
||||
This is the theme that I use for [my blog, eRambler](https://erambler.co.uk).
|
||||
|
||||
## Installation
|
||||
|
||||
In your Hugo site `themes` directory, run:
|
||||
|
||||
```
|
||||
git clone https://tildegit.org/petrichor/theme-mnemosyne-hugo.git
|
||||
```
|
||||
|
||||
Next, open `config.toml` in the base of the Hugo site and ensure the theme option is set to `mnemosyne`.
|
||||
|
||||
```
|
||||
theme = "mnemosyne"
|
||||
```
|
||||
|
||||
For more information read the official [quick start guide](https://gohugo.io/getting-started/quick-start/) of Hugo.
|
||||
|
||||
## Contributing
|
||||
|
||||
I don't really have time to test & accept contributions, but feel free to fork this theme and do your own thing with it.
|
||||
|
||||
## License
|
||||
|
||||
This theme is released under the [MIT license](https://tildegit.org/petrichor/theme-mnemosyne-hugo/src/branch/main/LICENSE).
|
||||
|
||||
## Acknowledgements
|
||||
|
||||
This theme is based on: [Blank][], a starter [Hugo](https://gohugo.io/) theme for developers. Use it to make your own theme.
|
||||
|
||||
[Blank]: https://themes.gohugo.io/theme/blank/
|
|
@ -0,0 +1,4 @@
|
|||
+++
|
||||
title = "{{ replace .Name "-" " " | title }}"
|
||||
date = {{ .Date }}
|
||||
+++
|
|
@ -0,0 +1,342 @@
|
|||
/* webmention.js
|
||||
|
||||
Simple thing for embedding webmentions from webmention.io into a page, client-side.
|
||||
|
||||
(c)2018-2020 fluffy (http://beesbuzz.biz)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
GitHub repo (for latest released versions, issue tracking, etc.):
|
||||
|
||||
https://github.com/PlaidWeb/webmention.js
|
||||
|
||||
Basic usage:
|
||||
|
||||
<script src="/path/to/webmention.js" data-param="val" ... async />
|
||||
<div id="webmentions"></div>
|
||||
|
||||
Allowed parameters:
|
||||
|
||||
page-url:
|
||||
|
||||
The base URL to use for this page. Defaults to window.location
|
||||
|
||||
add-urls:
|
||||
|
||||
Additional URLs to check, separated by |s
|
||||
|
||||
id:
|
||||
|
||||
The HTML ID for the object to fill in with the webmention data.
|
||||
Defaults to "webmentions"
|
||||
|
||||
wordcount:
|
||||
|
||||
The maximum number of words to render in reply mentions.
|
||||
|
||||
max-webmentions:
|
||||
|
||||
The maximum number of mentions to retrieve. Defaults to 30.
|
||||
|
||||
prevent-spoofing:
|
||||
|
||||
By default, Webmentions render using the mf2 'url' element, which plays
|
||||
nicely with webmention bridges (such as brid.gy and telegraph)
|
||||
but allows certain spoofing attacks. If you would like to prevent
|
||||
spoofing, set this to a non-empty string (e.g. "true").
|
||||
|
||||
sort-by:
|
||||
|
||||
What to order the responses by; defaults to 'published'. See
|
||||
https://github.com/aaronpk/webmention.io#api
|
||||
|
||||
sort-dir:
|
||||
|
||||
The order to sort the responses by; defaults to 'up' (i.e. oldest
|
||||
first). See https://github.com/aaronpk/webmention.io#api
|
||||
|
||||
comments-are-reactions:
|
||||
|
||||
If set to a non-empty string (e.g. "true"), will display comment-type responses
|
||||
(replies/mentions/etc.) as being part of the reactions
|
||||
(favorites/bookmarks/etc.) instead of in a separate comment list.
|
||||
|
||||
A more detailed example:
|
||||
|
||||
<script src="/path/to/webmention.min.js"
|
||||
data-id="webmentionContainer"
|
||||
data-wordcount="30"
|
||||
data-prevent-spoofing="true"
|
||||
data-comments-are-reactions="true"
|
||||
/>
|
||||
|
||||
*/
|
||||
|
||||
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
function getCfg(key, dfl) {
|
||||
return document.currentScript.getAttribute("data-" + key) || dfl;
|
||||
}
|
||||
|
||||
var refurl = getCfg('page-url',
|
||||
window.location.href.replace(/#.*$/, ''));
|
||||
var addurls = getCfg('add-urls', undefined);
|
||||
var containerID = getCfg('id', "webmentions");
|
||||
var textMaxWords = getCfg('wordcount');
|
||||
var maxWebmentions = getCfg('max-webmentions', 30);
|
||||
var mentionSource = getCfg('prevent-spoofing') ? 'wm-source' : 'url';
|
||||
var sortBy = getCfg('sort-by', 'published');
|
||||
var sortDir = getCfg('sort-dir', 'up');
|
||||
var commentsAreReactions = getCfg('comments-are-reactions');
|
||||
|
||||
var reactTitle = {
|
||||
'in-reply-to': 'replied',
|
||||
'like-of': 'liked',
|
||||
'repost-of': 'reposted',
|
||||
'bookmark-of': 'bookmarked',
|
||||
'mention-of': 'mentioned',
|
||||
'rsvp': 'RSVPed',
|
||||
'follow-of': 'followed'
|
||||
};
|
||||
|
||||
var reactEmoji = {
|
||||
'in-reply-to': '💬',
|
||||
'like-of': '❤️',
|
||||
'repost-of': '🔄',
|
||||
'bookmark-of': '⭐️',
|
||||
'mention-of': '💬',
|
||||
'rsvp': '📅',
|
||||
'follow-of': '🐜'
|
||||
};
|
||||
|
||||
var rsvpEmoji = {
|
||||
'yes': '✅',
|
||||
'no': '❌',
|
||||
'interested': '💡',
|
||||
'maybe': '💭'
|
||||
};
|
||||
|
||||
function entities(text) {
|
||||
return text.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"');
|
||||
}
|
||||
|
||||
function reactImage(r, isComment) {
|
||||
var who = entities((r.author && r.author.name)
|
||||
? r.author.name
|
||||
: r.url.split('/')[2]);
|
||||
var response = reactTitle[r['wm-property']] || 'reacted';
|
||||
if (!isComment && r.content && r.content.text) {
|
||||
response += ": " + extractComment(r);
|
||||
}
|
||||
var html = '<a class="reaction" rel="nofollow ugc" title="' + who + ' ' +
|
||||
response + '" href="' + r[mentionSource] + '">';
|
||||
if (r.author && r.author.photo) {
|
||||
html += '<img src="' + entities(r.author.photo) +
|
||||
'" loading="lazy" decoding="async" alt="' + who + '">';
|
||||
}
|
||||
html += (reactEmoji[r['wm-property']] || '💥');
|
||||
if (r.rsvp && rsvpEmoji[r.rsvp]) {
|
||||
html += '<sub>' + rsvpEmoji[r.rsvp] + '</sub>';
|
||||
}
|
||||
html += '</a>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
// strip the protocol off a URL
|
||||
function stripurl(url) {
|
||||
return url.substr(url.indexOf('//'));
|
||||
}
|
||||
|
||||
// Deduplicate multiple mentions from the same source URL
|
||||
function dedupe(mentions) {
|
||||
var filtered = [];
|
||||
var seen = {};
|
||||
|
||||
mentions.forEach(function(r) {
|
||||
// Strip off the protocol (i.e. treat http and https the same)
|
||||
var source = stripurl(r.url);
|
||||
if (!seen[source]) {
|
||||
filtered.push(r);
|
||||
seen[source] = true;
|
||||
}
|
||||
});
|
||||
|
||||
return filtered;
|
||||
}
|
||||
|
||||
function extractComment(c) {
|
||||
var text = entities(c.content.text);
|
||||
|
||||
if (textMaxWords) {
|
||||
var words = text.replace(/\s+/g,' ')
|
||||
.split(' ', textMaxWords + 1);
|
||||
if (words.length > textMaxWords) {
|
||||
words[textMaxWords - 1] += '…';
|
||||
words = words.slice(0, textMaxWords);
|
||||
text = words.join(' ');
|
||||
}
|
||||
}
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
function formatComments(comments) {
|
||||
var html = '<h2>' + comments.length + ' Response' +
|
||||
(comments.length > 1 ? 's' : '') +
|
||||
'</h2><ul class="comments">';
|
||||
comments.forEach(function(c) {
|
||||
html += '<li>';
|
||||
|
||||
html += reactImage(c, true);
|
||||
|
||||
html += ' <a class="source" rel="nofollow ugc" href="' +
|
||||
c[mentionSource] + '">';
|
||||
if (c.author && c.author.name) {
|
||||
html += entities(c.author.name);
|
||||
} else {
|
||||
html += entities(c.url.split('/')[2]);
|
||||
}
|
||||
html += '</a>: ';
|
||||
|
||||
var linkclass;
|
||||
var linktext;
|
||||
if (c.name) {
|
||||
linkclass = "name";
|
||||
linktext = c.name;
|
||||
} else if (c.content && c.content.text) {
|
||||
linkclass = "text";
|
||||
linktext = extractComment(c);
|
||||
} else {
|
||||
linkclass = "name";
|
||||
linktext = "(mention)";
|
||||
}
|
||||
|
||||
html += '<span class="' + linkclass + '">' + linktext + '</span>';
|
||||
|
||||
html += '</li>';
|
||||
});
|
||||
html += '</ul>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function formatReactions(reacts) {
|
||||
var html = '<h2>' + reacts.length + ' Reaction' +
|
||||
(reacts.length > 1 ? 's' : '') +
|
||||
'</h2><ul class="reacts">';
|
||||
|
||||
reacts.forEach(function(r) {
|
||||
html += reactImage(r);
|
||||
});
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function getData(url, callback) {
|
||||
if (window.fetch) {
|
||||
window.fetch(url).then(function(response) {
|
||||
if (response.status >= 200 && response.status < 300) {
|
||||
return Promise.resolve(response);
|
||||
} else {
|
||||
return Promise.reject(new Error(response.statusText));
|
||||
}
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
}).then(callback).catch(function(error) {
|
||||
console.error("Request failed", error);
|
||||
});
|
||||
} else {
|
||||
var oReq = new XMLHttpRequest();
|
||||
oReq.onload = function(data) {
|
||||
callback(JSON.parse(data));
|
||||
};
|
||||
oReq.onerror = function(error) {
|
||||
console.error("Request failed", error);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener("load", function () {
|
||||
var container = document.getElementById(containerID);
|
||||
if (!container) {
|
||||
// no container, so do nothing
|
||||
return;
|
||||
}
|
||||
|
||||
var pages = [stripurl(refurl)];
|
||||
if (!!addurls) {
|
||||
addurls.split('|').forEach(function (url) {
|
||||
pages.push(stripurl(url));
|
||||
})
|
||||
}
|
||||
|
||||
var apiURL = 'https://webmention.io/api/mentions.jf2?per-page=' +
|
||||
maxWebmentions + '&sort-by=' + sortBy + '&sort-dir=' + sortDir;
|
||||
|
||||
pages.forEach(function (path) {
|
||||
apiURL += '&target[]=' + encodeURIComponent('http:' + path) +
|
||||
'&target[]=' + encodeURIComponent('https:' + path);
|
||||
});
|
||||
|
||||
getData(apiURL, function(json) {
|
||||
var html = '';
|
||||
|
||||
var comments = [];
|
||||
var collects = [];
|
||||
if (commentsAreReactions) {
|
||||
comments = collects;
|
||||
}
|
||||
|
||||
var mapping = {
|
||||
"in-reply-to": comments,
|
||||
"like-of": collects,
|
||||
"repost-of": collects,
|
||||
"bookmark-of": collects,
|
||||
"mention-of": comments,
|
||||
"rsvp": comments
|
||||
};
|
||||
|
||||
json.children.forEach(function(c) {
|
||||
var store = mapping[c['wm-property']];
|
||||
if (store) {
|
||||
store.push(c);
|
||||
}
|
||||
});
|
||||
|
||||
// format the comment-type things
|
||||
if (comments.length > 0 && comments !== collects) {
|
||||
html += formatComments(dedupe(comments));
|
||||
}
|
||||
|
||||
// format the other reactions
|
||||
if (collects.length > 0) {
|
||||
html += formatReactions(dedupe(collects));
|
||||
}
|
||||
|
||||
container.innerHTML = html;
|
||||
});
|
||||
});
|
||||
|
||||
}());
|
|
@ -0,0 +1,82 @@
|
|||
/* Background */ .chroma { color: #93a1a1; background-color: #002b36 }
|
||||
/* Other */ .chroma .x { color: #cb4b16 }
|
||||
/* Error */ .chroma .err { }
|
||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; }
|
||||
/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc }
|
||||
/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #495050 }
|
||||
/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #495050 }
|
||||
/* Keyword */ .chroma .k { color: #719e07 }
|
||||
/* KeywordConstant */ .chroma .kc { color: #cb4b16 }
|
||||
/* KeywordDeclaration */ .chroma .kd { color: #268bd2 }
|
||||
/* KeywordNamespace */ .chroma .kn { color: #719e07 }
|
||||
/* KeywordPseudo */ .chroma .kp { color: #719e07 }
|
||||
/* KeywordReserved */ .chroma .kr { color: #268bd2 }
|
||||
/* KeywordType */ .chroma .kt { color: #dc322f }
|
||||
/* Name */ .chroma .n { }
|
||||
/* NameAttribute */ .chroma .na { }
|
||||
/* NameBuiltin */ .chroma .nb { color: #b58900 }
|
||||
/* NameBuiltinPseudo */ .chroma .bp { color: #268bd2 }
|
||||
/* NameClass */ .chroma .nc { color: #268bd2 }
|
||||
/* NameConstant */ .chroma .no { color: #cb4b16 }
|
||||
/* NameDecorator */ .chroma .nd { color: #268bd2 }
|
||||
/* NameEntity */ .chroma .ni { color: #cb4b16 }
|
||||
/* NameException */ .chroma .ne { color: #cb4b16 }
|
||||
/* NameFunction */ .chroma .nf { color: #268bd2 }
|
||||
/* NameFunctionMagic */ .chroma .fm { }
|
||||
/* NameLabel */ .chroma .nl { }
|
||||
/* NameNamespace */ .chroma .nn { }
|
||||
/* NameOther */ .chroma .nx { }
|
||||
/* NameProperty */ .chroma .py { }
|
||||
/* NameTag */ .chroma .nt { color: #268bd2 }
|
||||
/* NameVariable */ .chroma .nv { color: #268bd2 }
|
||||
/* NameVariableClass */ .chroma .vc { }
|
||||
/* NameVariableGlobal */ .chroma .vg { }
|
||||
/* NameVariableInstance */ .chroma .vi { }
|
||||
/* NameVariableMagic */ .chroma .vm { }
|
||||
/* Literal */ .chroma .l { }
|
||||
/* LiteralDate */ .chroma .ld { }
|
||||
/* LiteralString */ .chroma .s { color: #2aa198 }
|
||||
/* LiteralStringAffix */ .chroma .sa { color: #2aa198 }
|
||||
/* LiteralStringBacktick */ .chroma .sb { color: #586e75 }
|
||||
/* LiteralStringChar */ .chroma .sc { color: #2aa198 }
|
||||
/* LiteralStringDelimiter */ .chroma .dl { color: #2aa198 }
|
||||
/* LiteralStringDoc */ .chroma .sd { }
|
||||
/* LiteralStringDouble */ .chroma .s2 { color: #2aa198 }
|
||||
/* LiteralStringEscape */ .chroma .se { color: #cb4b16 }
|
||||
/* LiteralStringHeredoc */ .chroma .sh { }
|
||||
/* LiteralStringInterpol */ .chroma .si { color: #2aa198 }
|
||||
/* LiteralStringOther */ .chroma .sx { color: #2aa198 }
|
||||
/* LiteralStringRegex */ .chroma .sr { color: #dc322f }
|
||||
/* LiteralStringSingle */ .chroma .s1 { color: #2aa198 }
|
||||
/* LiteralStringSymbol */ .chroma .ss { color: #2aa198 }
|
||||
/* LiteralNumber */ .chroma .m { color: #2aa198 }
|
||||
/* LiteralNumberBin */ .chroma .mb { color: #2aa198 }
|
||||
/* LiteralNumberFloat */ .chroma .mf { color: #2aa198 }
|
||||
/* LiteralNumberHex */ .chroma .mh { color: #2aa198 }
|
||||
/* LiteralNumberInteger */ .chroma .mi { color: #2aa198 }
|
||||
/* LiteralNumberIntegerLong */ .chroma .il { color: #2aa198 }
|
||||
/* LiteralNumberOct */ .chroma .mo { color: #2aa198 }
|
||||
/* Operator */ .chroma .o { color: #719e07 }
|
||||
/* OperatorWord */ .chroma .ow { color: #719e07 }
|
||||
/* Punctuation */ .chroma .p { }
|
||||
/* Comment */ .chroma .c { color: #586e75 }
|
||||
/* CommentHashbang */ .chroma .ch { color: #586e75 }
|
||||
/* CommentMultiline */ .chroma .cm { color: #586e75 }
|
||||
/* CommentSingle */ .chroma .c1 { color: #586e75 }
|
||||
/* CommentSpecial */ .chroma .cs { color: #719e07 }
|
||||
/* CommentPreproc */ .chroma .cp { color: #719e07 }
|
||||
/* CommentPreprocFile */ .chroma .cpf { color: #719e07 }
|
||||
/* Generic */ .chroma .g { }
|
||||
/* GenericDeleted */ .chroma .gd { color: #dc322f }
|
||||
/* GenericEmph */ .chroma .ge { font-style: italic }
|
||||
/* GenericError */ .chroma .gr { color: #dc322f; font-weight: bold }
|
||||
/* GenericHeading */ .chroma .gh { color: #cb4b16 }
|
||||
/* GenericInserted */ .chroma .gi { color: #719e07 }
|
||||
/* GenericOutput */ .chroma .go { }
|
||||
/* GenericPrompt */ .chroma .gp { }
|
||||
/* GenericStrong */ .chroma .gs { font-weight: bold }
|
||||
/* GenericSubheading */ .chroma .gu { color: #268bd2 }
|
||||
/* GenericTraceback */ .chroma .gt { }
|
||||
/* GenericUnderline */ .chroma .gl { }
|
||||
/* TextWhitespace */ .chroma .w { }
|
|
@ -0,0 +1,3 @@
|
|||
$main-font-family: 'Iosevka Etoile', sans-serif;
|
||||
|
||||
$header-font-family: 'Iosevka Aile', sans-serif;
|
|
@ -0,0 +1,216 @@
|
|||
@charset "utf-8"
|
||||
|
||||
@import url('../font/iosevka-aile-mnemosyne.css')
|
||||
@import url('../font/iosevka-etoile-mnemosyne.css')
|
||||
@import url('../font/iosevka-mnemosyne.css')
|
||||
|
||||
@function make-light($c)
|
||||
@return scale-color($c, $lightness: 30%, $saturation: -25%)
|
||||
|
||||
@function make-lighter($c)
|
||||
@return scale-color($c, $lightness: 60%, $saturation: -50%)
|
||||
|
||||
$family-sans-serif: "Iosevka Aile Web", sans-serif
|
||||
$family-serif: "Iosevka Etoile Web", serif
|
||||
$family-monospace: "Iosevka Web", monospace
|
||||
|
||||
$turquoise: #236863
|
||||
$blue: #2D4471
|
||||
$brown: #552500
|
||||
$turquoise-light: make-light($turquoise)
|
||||
$turquoise-lighter: make-lighter($turquoise)
|
||||
$blue-light: make-light($blue)
|
||||
$blue-lighter: make-lighter($blue)
|
||||
$brown-light: make-light($brown)
|
||||
$brown-lighter: make-lighter($brown)
|
||||
|
||||
$family-primary: $family-serif
|
||||
|
||||
$link: $turquoise
|
||||
|
||||
|
||||
@import '../../node_modules/bulma/bulma.sass'
|
||||
|
||||
@import '_code.scss'
|
||||
|
||||
body
|
||||
font-size: 16px
|
||||
|
||||
h1, h2, h3, h4, h5, h6
|
||||
font-family: $family-sans-serif
|
||||
color: $brown
|
||||
|
||||
&:before
|
||||
color: $brown-lighter
|
||||
|
||||
a
|
||||
color: inherit
|
||||
|
||||
h1
|
||||
font-size: $size-large
|
||||
|
||||
&:before
|
||||
content: "# "
|
||||
|
||||
h2, .content h2
|
||||
font-size: $size-medium
|
||||
margin: 2em 0 1em;
|
||||
|
||||
&:before
|
||||
content: "## "
|
||||
|
||||
h3, .content h3
|
||||
margin: 2em 0 1em;
|
||||
|
||||
&:before
|
||||
content: "### "
|
||||
|
||||
h3, h4, h5, h6, .content h3, .content h4, .content h5, .content h6
|
||||
font-size: $body-font-size
|
||||
|
||||
h5, h6, .content h5, .content h6
|
||||
font-style: italic
|
||||
|
||||
h6, .content h6
|
||||
font-weight: normal
|
||||
|
||||
.content
|
||||
strong:before, strong:after
|
||||
content: "*"
|
||||
|
||||
em:before, em:after
|
||||
content: "_"
|
||||
|
||||
a
|
||||
text-decoration: underline
|
||||
|
||||
ul
|
||||
margin-left: 2ex
|
||||
|
||||
*::marker
|
||||
font-weight: bold
|
||||
|
||||
list-style-type: "* "
|
||||
ul
|
||||
list-style-type: "+ "
|
||||
ul
|
||||
list-style-type: "- "
|
||||
|
||||
+mobile
|
||||
&.taxonomy-list.tags-list
|
||||
column-count: 2
|
||||
+tablet-only
|
||||
&.taxonomy-list.tags-list
|
||||
column-count: 3
|
||||
+desktop
|
||||
&.taxonomy-list.tags-list
|
||||
column-count: 4
|
||||
|
||||
dt
|
||||
font-weight: bold
|
||||
font-style: italic
|
||||
dd
|
||||
margin-left: 2ex
|
||||
|
||||
.summary
|
||||
@extend .hero
|
||||
@extend .my-5
|
||||
@extend .px-3
|
||||
@extend .py-5
|
||||
|
||||
.link-summary
|
||||
@extend .has-background-link-light
|
||||
|
||||
.note-summary
|
||||
@extend .has-background-info-light
|
||||
|
||||
.single, .list
|
||||
@extend .my-5
|
||||
@extend .px-3
|
||||
@extend .py-5
|
||||
|
||||
.site-title
|
||||
@extend h1
|
||||
|
||||
padding-left: 0
|
||||
|
||||
&:before
|
||||
content: none
|
||||
|
||||
.site-description
|
||||
background-color: $white-ter
|
||||
|
||||
#webmentions
|
||||
.comments
|
||||
max-height: 20em
|
||||
overflow-x: hidden
|
||||
overflow-y: scroll
|
||||
font-size: 80%
|
||||
|
||||
li
|
||||
.text
|
||||
color: #555
|
||||
font-style: italic
|
||||
text-decoration: none
|
||||
|
||||
.name
|
||||
color: #111
|
||||
|
||||
h2
|
||||
font-size: medium
|
||||
margin: 0
|
||||
padding: 0.5em
|
||||
|
||||
&:first-child
|
||||
border-top-left-radius: 0.5em
|
||||
border-top-right-radius: 0.5em
|
||||
|
||||
.reacts img
|
||||
margin: 3px -1ex 1px 0
|
||||
vertical-align: baseline
|
||||
|
||||
ul
|
||||
list-style-type: none
|
||||
margin: 0
|
||||
padding: 4px
|
||||
|
||||
li
|
||||
text-indent: -3em
|
||||
padding-left: 3em
|
||||
padding-bottom: 0.5em
|
||||
|
||||
a.reaction
|
||||
position: relative
|
||||
|
||||
margin-right: 0
|
||||
margin-right: 1ex
|
||||
|
||||
text-decoration: none
|
||||
text-shadow: 0px 0px 3px white
|
||||
|
||||
img
|
||||
max-height: 2em
|
||||
margin-right: -1ex
|
||||
border-radius: 3px
|
||||
|
||||
sub
|
||||
font-size: 50%
|
||||
|
||||
.reacts a.reaction
|
||||
display: inline-block
|
||||
|
||||
ul
|
||||
@extend .menu-list
|
||||
|
||||
.cactus-container
|
||||
.cactus-editor
|
||||
margin-bottom: 1em
|
||||
.cactus-comment
|
||||
padding-bottom: 1em
|
||||
.cactus-comment-avatar
|
||||
flex-shrink: 0
|
||||
.cactus-message-text
|
||||
@extend .content
|
||||
|
||||
#current
|
||||
font-weight: bold
|
Binary file not shown.
After Width: | Height: | Size: 94 KiB |
Binary file not shown.
After Width: | Height: | Size: 136 KiB |
Binary file not shown.
After Width: | Height: | Size: 136 KiB |
|
@ -0,0 +1,26 @@
|
|||
{{ define "main" }}
|
||||
<section class="hero is-warning is-medium">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<main class="column is-8 is-offset-2">
|
||||
<p class="title">
|
||||
Page not found
|
||||
</p>
|
||||
<div class="content">
|
||||
<p>
|
||||
You could:
|
||||
</p>
|
||||
<ul>
|
||||
<li><a href="{{ "/" | relURL }}">Go back to the home page</a></li>
|
||||
<li><a href="{{ "/tags/" | relURL }}">Take a look at the list of tags</a></li>
|
||||
<li><a href="https://duckduckgo.com">Try searching for what you're looking for</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
{{ end }}
|
|
@ -0,0 +1,32 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="{{ .Site.LanguageCode | default "en-us" }}">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>{{ .Title }}</title>
|
||||
{{ .Scratch.Set "desc" slice }}
|
||||
{{ with .Site.Params.description }}{{ $.Scratch.Add "desc" (slice .) }}{{ end }}
|
||||
{{ with .Site.Params.topics }}{{ $.Scratch.Add "desc" (slice (delimit . " & ")) }}{{ end }}
|
||||
{{ if gt (len (.Scratch.Get "desc")) 0 }}
|
||||
<meta name="description" content="{{ delimit (.Scratch.Get "desc") " " }}">
|
||||
{{ end }}
|
||||
{{ with .Site.Params.author }}<meta name="author" content="{{ . }}">{{ end }}
|
||||
{{ $style := resources.Get "style/main.sass" | resources.ToCSS }}
|
||||
<link rel="stylesheet" href="{{ $style.RelPermalink }}">
|
||||
|
||||
{{ with .Site.Params.comments.webmention }}<link rel="webmention" href="{{ . }}" />{{ end }}
|
||||
{{ with .Site.Params.comments.pingback }}<link rel="pingback" href="{{ . }}" />{{ end }}
|
||||
|
||||
{{ if .Site.Params.comments.cactus }}<link rel="stylesheet" href="https://latest.cactus.chat/style.css" type="text/css">{{ end }}
|
||||
{{ with .OutputFormats.Get "RSS" -}}
|
||||
{{ printf `<link rel="%s" type="%s" href="%s" title="%s">` .Rel .MediaType.Type .RelPermalink $.Site.Title | safeHTML }}
|
||||
{{- end }}
|
||||
</head>
|
||||
<body>
|
||||
{{ partial "header" . }}
|
||||
{{ block "main" . }}{{ end }}
|
||||
{{ partial "footer" . }}
|
||||
{{ partial "scripts" . }}
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,7 @@
|
|||
{{ partial "status" . }}
|
||||
<div class="page-date">
|
||||
<strong>Date:</strong>
|
||||
<time>{{ .Date.Format .Site.Params.DateFormat }}</time>
|
||||
</div>
|
||||
{{ partial "series.html" .Params.series }}
|
||||
{{ partial "tags.html" .Params.tags }}
|
|
@ -0,0 +1,4 @@
|
|||
{{ .Summary }}
|
||||
{{ if .Truncated }}
|
||||
<a href="{{ .RelPermalink }}">Read more...</a>
|
||||
{{ end }}
|
|
@ -0,0 +1 @@
|
|||
[{{ .Type | upper }}] {{ .Title }}
|
|
@ -0,0 +1,6 @@
|
|||
<li>
|
||||
{{ .Date.Format .Site.Params.DateFormat }}:
|
||||
<a href="{{ .RelPermalink }}">
|
||||
{{ .Title }}
|
||||
</a>
|
||||
</li>
|
|
@ -0,0 +1,25 @@
|
|||
{{ define "main" }}
|
||||
<main class="list">
|
||||
<div class="container">
|
||||
{{ if or .Title .Content }}
|
||||
<div class="columns">
|
||||
<div class="column is-8 is-offset-2">
|
||||
{{ with .Title }}<h1 class="mb-5">{{ . }}</h1>{{ end }}
|
||||
{{ with .Content }}<div class="content">{{ . }}<hr /></div>{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
<div class="columns mb-6">
|
||||
<div class="column is-8 is-offset-2 content">
|
||||
<ul class="list {{ .Kind }}-list{{ with .Data.Plural }} {{.}}-list{{ end }}">
|
||||
{{ $sort_field := "Date" }}
|
||||
{{ if eq .Kind "taxonomy" }}{{ $sort_field = "Title" }}{{ end }}
|
||||
{{ range sort .Pages $sort_field "asc" }}
|
||||
{{ .Render "li" }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
{{ end }}
|
|
@ -0,0 +1,24 @@
|
|||
{{ define "main" }}
|
||||
<main class="single">
|
||||
<article class="container">
|
||||
<div class="columns">
|
||||
<div class="column is-8 is-offset-2">
|
||||
<h1>{{ .Render "frag/title" }}</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div class="columns">
|
||||
<div class="column is-2">
|
||||
{{ .Render "frag/metadata" }}
|
||||
</div>
|
||||
<div class="column is-8">
|
||||
{{ partial "series-items" . }}
|
||||
{{ partial "toc" . }}
|
||||
<div class="content">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ partial "comments" . }}
|
||||
</article>
|
||||
</main>
|
||||
{{ end }}
|
|
@ -0,0 +1,20 @@
|
|||
<article class="summary {{ .Type }}-summary">
|
||||
<div class="container">
|
||||
{{ if ne .Type "note" }}
|
||||
<div class="columns">
|
||||
<div class="column is-8 is-offset-2">
|
||||
<h2><a href="{{ with .Params.link }}{{.}}{{ else }}{{ .RelPermalink }}{{ end }}">
|
||||
{{ .Render "frag/title" }}</a></h2>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
<div class="columns">
|
||||
<div class="column is-2">
|
||||
{{ .Render "frag/metadata" }}
|
||||
</div>
|
||||
<div class="column is-8 content">
|
||||
{{ .Render "frag/summary-content" }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
|
@ -0,0 +1,28 @@
|
|||
{{ define "main" }}
|
||||
<section class="hero px-3 site-description">
|
||||
<div class="hero-body">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<div class="column is-8 is-offset-2">
|
||||
{{ with .Site.Params.Description }}{{.}}{{ end }}
|
||||
{{ with .Site.Params.Topics }}
|
||||
{{ $last := sub (len .) 1 }}
|
||||
{{ range $i, $x := . }}
|
||||
<a href="/tags/{{ $x | urlize }}/">{{ $x }}</a>
|
||||
{{ if lt $i $last }}<span class="ampersand">&</span>{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<main class="mt-6">
|
||||
{{ $paginator := .Paginate (where .Site.RegularPages "Type" "in" .Site.Params.mainSections) }}
|
||||
{{ range $paginator.Pages }}
|
||||
{{ .Render "summary" }}
|
||||
{{ end }}
|
||||
{{ partial "pagination" . }}
|
||||
</main>
|
||||
{{ end }}
|
|
@ -0,0 +1,4 @@
|
|||
{{ .Content }}
|
||||
<p>
|
||||
<a href="{{ .Params.link }}">>>></a>
|
||||
</p>
|
|
@ -0,0 +1 @@
|
|||
{{ .Content }}
|
|
@ -0,0 +1,2 @@
|
|||
{{ partial "status" . }}
|
||||
{{ partial "tags" .Params.tags }}
|
|
@ -0,0 +1 @@
|
|||
{{ .Title }}
|
|
@ -0,0 +1,13 @@
|
|||
<div class="container">
|
||||
<div class="columns">
|
||||
<div class="column is-8 is-offset-2">
|
||||
{{ partial "comments/webmention" . }}
|
||||
{{ partial "comments/cactus" . }}
|
||||
{{ with .Site.DisqusShortname }}
|
||||
<div>
|
||||
{{ template "_internal/disqus.html" . }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,10 @@
|
|||
{{ if .Site.Params.comments.cactus }}
|
||||
<hr />
|
||||
<div class="content">
|
||||
<h2>Comments</h2>
|
||||
</div>
|
||||
<div id="cactus-comments"></div>
|
||||
<p>
|
||||
<em>Powered by <a href="https://cactus.chat/">Cactus Comments 🌵</a></em>
|
||||
</p>
|
||||
{{ end }}
|
|
@ -0,0 +1,17 @@
|
|||
{{ if .Site.Params.comments.webmention }}
|
||||
<hr />
|
||||
<div class="content">
|
||||
<h2>Webmentions</h2>
|
||||
<p>
|
||||
You can respond to this post, <a href="{{ .Permalink }}">"{{ .Title }}"</a>, by:
|
||||
liking, boosting or replying to a tweet or <a href="https://joinmastodon.org/">toot</a> that mentions it; or
|
||||
sending a <a href="https://indieweb.org/Webmention">webmention</a> from your own site to <code>{{ .Permalink }}</code>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="webmentions">
|
||||
Comments & reactions haven't loaded yet. You might have JavaScript disabled but that's cool 😎.
|
||||
</div>
|
||||
|
||||
{{ end }}
|
|
@ -0,0 +1,26 @@
|
|||
<div class="footer">
|
||||
<div class="container">
|
||||
<div class="columns">
|
||||
<footer class="column is-8 is-offset-2 has-text-centered">
|
||||
{{ partial "social" . }}
|
||||
<p>
|
||||
© {{ now.Year }}
|
||||
<a href="{{ .Site.BaseURL }}">{{ .Site.Params.Author }}</a>
|
||||
| Built by: <a href="https://gohugo.com/">Hugo</a>
|
||||
| Theme: <a href="https://tildegit.org/petrichor/theme-mnemosyne-hugo">Mnemosyne</a>
|
||||
</p>
|
||||
{{ with .Site.Params.netlify }}
|
||||
<p class="mt-4">
|
||||
<a href="https://app.netlify.com/sites/{{.name}}/deploys">
|
||||
Build status: <img src="https://api.netlify.com/api/v1/badges/{{.id}}/deploy-status">
|
||||
</a>
|
||||
</p>
|
||||
{{ end }}
|
||||
{{ with .Site.Copyright | safeHTML }}
|
||||
<hr />
|
||||
<p>{{.}}</p>
|
||||
{{ end }}
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,29 @@
|
|||
<div class="container p-3">
|
||||
<div class="columns">
|
||||
<div class="column is-8 is-offset-2">
|
||||
<nav class="navbar" role="navigation" aria-label="main navigation">
|
||||
<div class="navbar-brand">
|
||||
{{- if .IsHome -}}<h1 class="site-title navbar-item">{{- else -}}<div class="site-title navbar-item">{{- end -}}
|
||||
<a href="{{ .Site.BaseURL }}">{{ .Site.Title }}</a>
|
||||
{{- if .IsHome -}}</h1>{{- else -}}</div>{{- end -}}
|
||||
|
||||
<a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false" data-target="nav-menu">
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
{{ with .Site.Menus.main }}
|
||||
<div class="navbar-menu" id="nav-menu">
|
||||
<div class="navbar-end">
|
||||
{{ range . }}
|
||||
<a class="navbar-item" href="{{ .URL | relURL }}">{{ .Name }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,11 @@
|
|||
<footer class="columns mb-3">
|
||||
<div class="column is-8 is-offset-2 has-text-centered">
|
||||
{{ if .Paginator.HasPrev }}
|
||||
<a href="{{ .Paginator.Prev.URL }}">Previous Page</a>
|
||||
{{ end }}
|
||||
{{ .Paginator.PageNumber }} of {{ .Paginator.TotalPages }}
|
||||
{{ if .Paginator.HasNext }}
|
||||
<a href="{{ .Paginator.Next.URL }}">Next Page</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</footer>
|
|
@ -0,0 +1,19 @@
|
|||
<script type="text/javascript" src="/js/navbar.js"></script>
|
||||
|
||||
{{ if .File }}
|
||||
{{ $page_id := .File.BaseFileName }}
|
||||
{{ if .Site.Params.comments.webmention }}
|
||||
{{ $webmention_js := resources.Get "js/webmention.js" | minify }}
|
||||
<script src="{{ $webmention_js.RelPermalink }}"
|
||||
data-page-url="{{ .Permalink }}"
|
||||
async></script>
|
||||
{{ end }}
|
||||
{{ with .Site.Params.comments.cactus }}
|
||||
<script type="text/javascript" src="https://latest.cactus.chat/cactus.js"
|
||||
data-default-homeserver-url="https://matrix.cactus.chat:8448"
|
||||
data-server-name="cactus.chat"
|
||||
data-site-name="{{ . }}"
|
||||
data-node="#cactus-comments"
|
||||
data-comment-section-id="{{ $page_id }}"></script>
|
||||
{{ end }}
|
||||
{{ end }}
|
|
@ -0,0 +1,27 @@
|
|||
{{ $page := . }}
|
||||
{{ with .Params.series }}
|
||||
{{ $series := (site.GetPage "/series").GetPage . }}
|
||||
<div class="card mb-5">
|
||||
<header class="card-header has-background-primary has-text-white">
|
||||
<p class="card-header-title has-text-white">
|
||||
Series
|
||||
</p>
|
||||
</header>
|
||||
<div class="card-content content is-size-7">
|
||||
{{ with $series.Params.on }}
|
||||
<p>This post is part of <a href="{{ $series.RelPermalink }}">a series on {{.}}</a>.</p>
|
||||
{{ else }}
|
||||
<p>This post is part of the series <a href="{{ $series.RelPermalink }}" class="has-text-white">{{ $series.Title }}</a></p>
|
||||
{{ end }}
|
||||
<ul>
|
||||
{{ range $series.Pages }}
|
||||
<li>
|
||||
{{ if ne . $page }}<a href="{{ .RelPermalink }}">{{ else }}<span id="current">> {{ end }}
|
||||
{{ .Title }}
|
||||
{{ if ne . $page }}</a>{{ else }} <</span>{{ end }}
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
|
@ -0,0 +1,7 @@
|
|||
{{ with . }}
|
||||
{{ $series := (site.GetPage "/series").GetPage . }}
|
||||
<div>
|
||||
<strong>Series:</strong>
|
||||
<a href="{{ $series.RelPermalink }}">{{ $series.Title }}</a>
|
||||
</div>
|
||||
{{ end }}
|
|
@ -0,0 +1,14 @@
|
|||
<aside>
|
||||
<div>
|
||||
<div>
|
||||
<h3>LATEST POSTS</h3>
|
||||
</div>
|
||||
<div>
|
||||
<ul>
|
||||
{{ range first 5 (where .Site.RegularPages "Type" "in" .Site.Params.mainSections) }}
|
||||
<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
|
@ -0,0 +1,34 @@
|
|||
{{ with .Site.Params.Social }}
|
||||
<p>
|
||||
me elsewhere ::
|
||||
{{ $last := sub (len .) 1 }}
|
||||
{{ range $i, $x := . }}
|
||||
{{ $url := $x.info }}
|
||||
{{ $text := $x.kind }}
|
||||
{{ if eq $x.kind "github" }}
|
||||
{{ $url = printf "https://github.com/%s" $x.info }}
|
||||
{{ else if eq $x.kind "gitlab" }}
|
||||
{{ $url = printf "https://gitlab.com/%s" $x.info }}
|
||||
{{ else if eq $x.kind "linkedin" }}
|
||||
{{ $url = printf "https://linkedin.com/in/%s" $x.info }}
|
||||
{{ else if eq $x.kind "twitter" }}
|
||||
{{ $url = printf "https://twitter.com/%s" $x.info }}
|
||||
{{ else if eq $x.kind "mastodon" }}
|
||||
{{ $url = printf "https://%s/@%s" (index $x.info 1) (index $x.info 0) }}
|
||||
{{ else if eq $x.kind "orcid" }}
|
||||
{{ $url = printf "https://orcid.org/%s" $x.info }}
|
||||
{{ else if eq $x.kind "keybase" }}
|
||||
{{ $url = printf "https://keybase.io/%s" $x.info }}
|
||||
{{ else if eq $x.kind "keyoxide" }}
|
||||
{{ $url = printf "https://keyoxide.org/%s" $x.info }}
|
||||
{{ else if eq $x.kind "matrix" }}
|
||||
{{ $url = printf "https://matrix.to/#/%s" $x.info }}
|
||||
{{ else if eq $x.kind "pypi" }}
|
||||
{{ $url = printf "https://pypi.org/user/%s" $x.info }}
|
||||
{{ end }}
|
||||
<a href="{{$url}}" rel="me">{{$text}}</a>
|
||||
{{ if ne $i $last }}|{{ end }}
|
||||
{{ end }}
|
||||
</p>
|
||||
<hr />
|
||||
{{ end }}
|
|
@ -0,0 +1 @@
|
|||
{{ if .Params.draft }}<div><strong>Status:</strong> DRAFT ✏️</div>{{ end }}
|
|
@ -0,0 +1,8 @@
|
|||
{{ if . }}
|
||||
<div class="page-tags">
|
||||
<strong>Tags:</strong>
|
||||
{{ range . }}
|
||||
<a href="{{ "/tags/" | relLangURL }}{{ . | urlize }}">[{{ . }}]</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
|
@ -0,0 +1,10 @@
|
|||
{{ if .Params.ShowTOC }}
|
||||
<div class="card mb-5">
|
||||
<div class="card-header has-background-light">
|
||||
<p class="card-header-title">Contents</p>
|
||||
</div>
|
||||
<div class="card-content content is-size-7">
|
||||
{{ .TableOfContents }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
|
@ -0,0 +1 @@
|
|||
{{ .Title }}
|
|
@ -0,0 +1,4 @@
|
|||
<li>
|
||||
<a href="{{ .RelPermalink }}">{{ .Title }} ({{ .Data.series | len }} posts)</a>
|
||||
{{- with .Params.summary }}: {{.}}{{ end }}
|
||||
</li>
|
|
@ -0,0 +1,10 @@
|
|||
<div class="card mb-5">
|
||||
<header class="card-header{{ with .Get 1 }} has-background-{{.}} has-text-white{{ end }}">
|
||||
<p class="card-header-title">
|
||||
{{ .Get 0 | title }}
|
||||
</p>
|
||||
</header>
|
||||
<div class="card-content content">
|
||||
{{ .Inner | markdownify }}
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,5 @@
|
|||
<li>
|
||||
<a href="{{ .RelPermalink }}">
|
||||
{{ .Title }}
|
||||
</a>
|
||||
</li>
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"systemParams": "linux-x64-83",
|
||||
"modulesFolders": [
|
||||
"node_modules"
|
||||
],
|
||||
"flags": [],
|
||||
"linkedModules": [],
|
||||
"topLevelPatterns": [
|
||||
"bulma@^0.9.2"
|
||||
],
|
||||
"lockfileEntries": {
|
||||
"bulma@^0.9.2": "https://registry.yarnpkg.com/bulma/-/bulma-0.9.3.tgz#ddccb7436ebe3e21bf47afe01d3c43a296b70243"
|
||||
},
|
||||
"files": [],
|
||||
"artifacts": {}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2020 Jeremy Thomas
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
|
@ -0,0 +1,134 @@
|
|||
# [Bulma](https://bulma.io)
|
||||
|
||||
Bulma is a **modern CSS framework** based on [Flexbox](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes).
|
||||
|
||||
![Github](https://img.shields.io/github/v/release/jgthms/bulma?logo=Bulma)
|
||||
[![npm](https://img.shields.io/npm/v/bulma.svg)][npm-link]
|
||||
[![npm](https://img.shields.io/npm/dm/bulma.svg)][npm-link]
|
||||
[![](https://data.jsdelivr.com/v1/package/npm/bulma/badge)](https://www.jsdelivr.com/package/npm/bulma)
|
||||
[![Awesome][awesome-badge]][awesome-link]
|
||||
[![Join the chat at https://gitter.im/jgthms/bulma](https://badges.gitter.im/jgthms/bulma.svg)](https://gitter.im/jgthms/bulma)
|
||||
[![Build Status](https://travis-ci.org/jgthms/bulma.svg?branch=master)](https://travis-ci.org/jgthms/bulma)
|
||||
|
||||
<a href="https://bulma.io"><img src="https://raw.githubusercontent.com/jgthms/bulma/master/docs/images/bulma-banner.png" alt="Bulma: a Flexbox CSS framework" style="max-width:100%;" width="600"></a>
|
||||
|
||||
## Quick install
|
||||
|
||||
Bulma is constantly in development! Try it out now:
|
||||
|
||||
### NPM
|
||||
|
||||
```sh
|
||||
npm install bulma
|
||||
```
|
||||
|
||||
**or**
|
||||
|
||||
### Yarn
|
||||
|
||||
```sh
|
||||
yarn add bulma
|
||||
```
|
||||
|
||||
### Bower
|
||||
|
||||
```sh
|
||||
bower install bulma
|
||||
```
|
||||
|
||||
### Import
|
||||
After installation, you can import the CSS file into your project using this snippet:
|
||||
|
||||
```sh
|
||||
@import 'bulma/css/bulma.css'
|
||||
```
|
||||
|
||||
### CDN
|
||||
|
||||
[https://www.jsdelivr.com/package/npm/bulma](https://www.jsdelivr.com/package/npm/bulma)
|
||||
|
||||
Feel free to raise an issue or submit a pull request.
|
||||
|
||||
## CSS only
|
||||
|
||||
Bulma is a **CSS** framework. As such, the sole output is a single CSS file: [bulma.css](https://github.com/jgthms/bulma/blob/master/css/bulma.css)
|
||||
|
||||
You can either use that file, "out of the box", or download the Sass source files to customize the [variables](https://bulma.io/documentation/overview/variables/).
|
||||
|
||||
There is **no** JavaScript included. People generally want to use their own JS implementation (and usually already have one). Bulma can be considered "environment agnostic": it's just the style layer on top of the logic.
|
||||
|
||||
## Browser Support
|
||||
|
||||
Bulma uses [autoprefixer](https://github.com/postcss/autoprefixer) to make (most) Flexbox features compatible with earlier browser versions. According to [Can I use](https://caniuse.com/#feat=flexbox), Bulma is compatible with **recent** versions of:
|
||||
|
||||
* Chrome
|
||||
* Edge
|
||||
* Firefox
|
||||
* Opera
|
||||
* Safari
|
||||
|
||||
Internet Explorer (10+) is only partially supported.
|
||||
|
||||
## Documentation
|
||||
|
||||
The documentation resides in the [docs](docs) directory, and is built with the Ruby-based [Jekyll](https://jekyllrb.com/) tool.
|
||||
|
||||
Browse the [online documentation here.](https://bulma.io/documentation/overview/start/)
|
||||
|
||||
## Related projects
|
||||
|
||||
| Project | Description |
|
||||
|--------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------|
|
||||
| [Bulma with Attribute Modules](https://github.com/j5bot/bulma-attribute-selectors) | Adds support for attribute-based selectors |
|
||||
| [Bulma with Rails](https://github.com/joshuajansen/bulma-rails) | Integrates Bulma with the rails asset pipeline |
|
||||
| [BulmaRazor](https://github.com/loogn/bulmarazor) | A lightweight component library based on Bulma and Blazor. |
|
||||
| [Vue Admin (dead)](https://github.com/vue-bulma/vue-admin) | Vue Admin framework powered by Bulma |
|
||||
| [Bulmaswatch](https://github.com/jenil/bulmaswatch) | Free themes for Bulma |
|
||||
| [Goldfish (read-only)](https://github.com/Caiyeon/goldfish) | Vault UI with Bulma, Golang, and Vue Admin |
|
||||
| [ember-bulma](https://github.com/open-tux/ember-bulma) | Ember addon providing a collection of UI components for Bulma |
|
||||
| [Bloomer](https://bloomer.js.org) | A set of React components for Bulma |
|
||||
| [React-bulma](https://github.com/kulakowka/react-bulma) | React.js components for Bulma |
|
||||
| [Buefy](https://buefy.org/) | Lightweight UI components for Vue.js based on Bulma |
|
||||
| [vue-bulma-components](https://github.com/vouill/vue-bulma-components) | Bulma components for Vue.js with straightforward syntax |
|
||||
| [BulmaJS](https://github.com/VizuaaLOG/BulmaJS) | Javascript integration for Bulma. Written in ES6 with a data-* API |
|
||||
| [Bulma-modal-fx](https://github.com/postare/bulma-modal-fx) | A set of modal window effects with CSS transitions and animations for Bulma |
|
||||
| [Bulma Stylus](https://github.com/groenroos/bulma-stylus) | Up-to-date 1:1 translation to Stylus
|
||||
| [Bulma.styl (read-only)](https://github.com/log1x/bulma.styl) | 1:1 Stylus translation of Bulma 0.6.11 |
|
||||
| [elm-bulma](https://github.com/surprisetalk/elm-bulma) | Bulma + Elm |
|
||||
| [elm-bulma-classes](https://github.com/ahstro/elm-bulma-classes) | Bulma classes prepared for usage with Elm |
|
||||
| [Bulma Customizer](https://bulma-customizer.bstash.io/) | Bulma Customizer – Create your own **bespoke** Bulma build |
|
||||
| [Fulma](https://fulma.github.io/Fulma/) | Wrapper around Bulma for [fable-react](https://github.com/fable-compiler/fable-react) |
|
||||
| [Laravel Enso](https://github.com/laravel-enso/enso) | SPA Admin Panel built with Bulma, VueJS and Laravel |
|
||||
| [Django Bulma](https://github.com/timonweb/django-bulma) | Integrates Bulma with Django |
|
||||
| [Bulma Templates](https://github.com/dansup/bulma-templates) | Free Templates for Bulma |
|
||||
| [React Bulma Components](https://github.com/couds/react-bulma-components) | Another React wrap on React for Bulma.io |
|
||||
| [purescript-bulma](https://github.com/sectore/purescript-bulma) | PureScript bindings for Bulma |
|
||||
| [Vue Datatable](https://github.com/laravel-enso/vuedatatable) | Bulma themed datatable based on Vue, Laravel & JSON templates |
|
||||
| [bulma-fluent](https://mubaidr.github.io/bulma-fluent/) | Fluent Design Theme for Bulma inspired by Microsoft’s Fluent Design System |
|
||||
| [csskrt-csskrt](https://github.com/4d11/csskrt-csskrt) | Automatically add Bulma classes to HTML files |
|
||||
| [bulma-pagination-react](https://github.com/hipstersmoothie/bulma-pagination-react) | Bulma pagination as a react component |
|
||||
| [bulma-helpers](https://github.com/jmaczan/bulma-helpers) | Functional / Atomic CSS classes for Bulma |
|
||||
| [bulma-swatch-hook](https://github.com/hipstersmoothie/bulma-swatch-hook) | Bulma swatches as a react hook and a component |
|
||||
| [BulmaWP (read-only)](https://github.com/tomhrtly/BulmaWP) | Starter WordPress theme for Bulma |
|
||||
| [Ralma](https://github.com/aldi/ralma) | Stateless Ractive.js Components for Bulma |
|
||||
| [Django Simple Bulma](https://github.com/python-discord/django-simple-bulma) | Lightweight integration of Bulma and Bulma-Extensions for your Django app |
|
||||
| [rbx](https://dfee.github.io/rbx) | Comprehensive React UI Framework written in TypeScript |
|
||||
| [Awesome Bulma Templates](https://github.com/aldi/awesome-bulma-templates) | Free real-world Templates built with Bulma |
|
||||
| [Trunx](http://g14n.info/trunx) | Super Saiyan React components, son of awesome Bulma, implemented in TypeScript |
|
||||
| [@aybolit/bulma](https://github.com/web-padawan/aybolit/tree/master/packages/bulma) | Web Components library inspired by Bulma and Bulma-extensions |
|
||||
| [Drulma](https://www.drupal.org/project/drulma) | Drupal theme for Bulma. |
|
||||
| [Bulrush](https://github.com/textbook/bulrush) | A Bulma-based Python Pelican blog theme |
|
||||
| [Bulma Variable Export](https://github.com/service-paradis/bulma-variables-export) | Access Bulma Variables in Javascript/Typescript in project using Webpack |
|
||||
| [Bulmil](https://github.com/gomah/bulmil) | An agnostic UI components library based on Web Components, made with Bulma & Stencil. |
|
||||
| [Svelte Bulma Components](https://github.com/elcobvg/svelte-bulma-components) | Library of UI components to be used in [Svelte.js](https://svelte.technology/) or standalone. |
|
||||
| [Bulma Nunjucks Starterkit](https://github.com/benninkcorien/nunjucks-starter-kit) | Starterkit for Nunjucks with Bulma. |
|
||||
| [Bulma-Social](https://github.com/aldi/bulma-social) | Social Buttons and Colors for Bulma |
|
||||
| [Divjoy](https://divjoy.com/?kit=bulma) | React codebase generator with Bulma templates |
|
||||
|
||||
## Copyright and license ![Github](https://img.shields.io/github/license/jgthms/bulma?logo=Github)
|
||||
|
||||
Code copyright 2021 Jeremy Thomas. Code released under [the MIT license](https://github.com/jgthms/bulma/blob/master/LICENSE).
|
||||
|
||||
[npm-link]: https://www.npmjs.com/package/bulma
|
||||
[awesome-link]: https://github.com/awesome-css-group/awesome-css
|
||||
[awesome-badge]: https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg
|
|
@ -0,0 +1,10 @@
|
|||
@charset "utf-8"
|
||||
/*! bulma.io v0.9.3 | MIT License | github.com/jgthms/bulma */
|
||||
@import "sass/utilities/_all"
|
||||
@import "sass/base/_all"
|
||||
@import "sass/elements/_all"
|
||||
@import "sass/form/_all"
|
||||
@import "sass/components/_all"
|
||||
@import "sass/grid/_all"
|
||||
@import "sass/helpers/_all"
|
||||
@import "sass/layout/_all"
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,56 @@
|
|||
{
|
||||
"name": "bulma",
|
||||
"version": "0.9.3",
|
||||
"homepage": "https://bulma.io",
|
||||
"author": {
|
||||
"name": "Jeremy Thomas",
|
||||
"email": "bbxdesign@gmail.com",
|
||||
"url": "https://jgthms.com"
|
||||
},
|
||||
"description": "Modern CSS framework based on Flexbox",
|
||||
"main": "bulma.sass",
|
||||
"unpkg": "css/bulma.css",
|
||||
"style": "bulma/css/bulma.min.css",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/jgthms/bulma.git"
|
||||
},
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"css",
|
||||
"sass",
|
||||
"flexbox",
|
||||
"responsive",
|
||||
"framework"
|
||||
],
|
||||
"bugs": {
|
||||
"url": "https://github.com/jgthms/bulma/issues"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^9.8.6",
|
||||
"clean-css-cli": "^4.3.0",
|
||||
"node-sass": "^4.14.1",
|
||||
"postcss-cli": "^7.1.2",
|
||||
"rimraf": "^3.0.2"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "npm run build-sass && npm run build-autoprefix && npm run build-cleancss",
|
||||
"build-autoprefix": "postcss --use autoprefixer --map false --output css/bulma.css css/bulma.css",
|
||||
"build-cleancss": "cleancss -o css/bulma.min.css css/bulma.css",
|
||||
"build-sass": "node-sass --output-style expanded --source-map true bulma.sass css/bulma.css",
|
||||
"clean": "rimraf css",
|
||||
"rtl": "npm run rtl-sass && npm run rtl-autoprefix && npm run rtl-cleancss",
|
||||
"rtl-sass": "node-sass --output-style expanded --source-map true bulma-rtl.sass css/bulma-rtl.css",
|
||||
"rtl-autoprefix": "postcss --use autoprefixer --map false --output css/bulma-rtl.css css/bulma-rtl.css",
|
||||
"rtl-cleancss": "cleancss -o css/bulma-rtl.min.css css/bulma-rtl.css",
|
||||
"deploy": "npm run clean && npm run build && npm run rtl",
|
||||
"start": "npm run build-sass -- --watch"
|
||||
},
|
||||
"files": [
|
||||
"css",
|
||||
"sass",
|
||||
"bulma.sass",
|
||||
"LICENSE",
|
||||
"README.md"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
/* Bulma Base */
|
||||
@charset "utf-8"
|
||||
|
||||
@import "minireset"
|
||||
@import "generic"
|
||||
@import "animations"
|
|
@ -0,0 +1,5 @@
|
|||
@keyframes spinAround
|
||||
from
|
||||
transform: rotate(0deg)
|
||||
to
|
||||
transform: rotate(359deg)
|
|
@ -0,0 +1,145 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$body-background-color: $scheme-main !default
|
||||
$body-size: 16px !default
|
||||
$body-min-width: 300px !default
|
||||
$body-rendering: optimizeLegibility !default
|
||||
$body-family: $family-primary !default
|
||||
$body-overflow-x: hidden !default
|
||||
$body-overflow-y: scroll !default
|
||||
|
||||
$body-color: $text !default
|
||||
$body-font-size: 1em !default
|
||||
$body-weight: $weight-normal !default
|
||||
$body-line-height: 1.5 !default
|
||||
|
||||
$code-family: $family-code !default
|
||||
$code-padding: 0.25em 0.5em 0.25em !default
|
||||
$code-weight: normal !default
|
||||
$code-size: 0.875em !default
|
||||
|
||||
$small-font-size: 0.875em !default
|
||||
|
||||
$hr-background-color: $background !default
|
||||
$hr-height: 2px !default
|
||||
$hr-margin: 1.5rem 0 !default
|
||||
|
||||
$strong-color: $text-strong !default
|
||||
$strong-weight: $weight-bold !default
|
||||
|
||||
$pre-font-size: 0.875em !default
|
||||
$pre-padding: 1.25rem 1.5rem !default
|
||||
$pre-code-font-size: 1em !default
|
||||
|
||||
html
|
||||
background-color: $body-background-color
|
||||
font-size: $body-size
|
||||
-moz-osx-font-smoothing: grayscale
|
||||
-webkit-font-smoothing: antialiased
|
||||
min-width: $body-min-width
|
||||
overflow-x: $body-overflow-x
|
||||
overflow-y: $body-overflow-y
|
||||
text-rendering: $body-rendering
|
||||
text-size-adjust: 100%
|
||||
|
||||
article,
|
||||
aside,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
section
|
||||
display: block
|
||||
|
||||
body,
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea
|
||||
font-family: $body-family
|
||||
|
||||
code,
|
||||
pre
|
||||
-moz-osx-font-smoothing: auto
|
||||
-webkit-font-smoothing: auto
|
||||
font-family: $code-family
|
||||
|
||||
body
|
||||
color: $body-color
|
||||
font-size: $body-font-size
|
||||
font-weight: $body-weight
|
||||
line-height: $body-line-height
|
||||
|
||||
// Inline
|
||||
|
||||
a
|
||||
color: $link
|
||||
cursor: pointer
|
||||
text-decoration: none
|
||||
strong
|
||||
color: currentColor
|
||||
&:hover
|
||||
color: $link-hover
|
||||
|
||||
code
|
||||
background-color: $code-background
|
||||
color: $code
|
||||
font-size: $code-size
|
||||
font-weight: $code-weight
|
||||
padding: $code-padding
|
||||
|
||||
hr
|
||||
background-color: $hr-background-color
|
||||
border: none
|
||||
display: block
|
||||
height: $hr-height
|
||||
margin: $hr-margin
|
||||
|
||||
img
|
||||
height: auto
|
||||
max-width: 100%
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"]
|
||||
vertical-align: baseline
|
||||
|
||||
small
|
||||
font-size: $small-font-size
|
||||
|
||||
span
|
||||
font-style: inherit
|
||||
font-weight: inherit
|
||||
|
||||
strong
|
||||
color: $strong-color
|
||||
font-weight: $strong-weight
|
||||
|
||||
// Block
|
||||
|
||||
fieldset
|
||||
border: none
|
||||
|
||||
pre
|
||||
+overflow-touch
|
||||
background-color: $pre-background
|
||||
color: $pre
|
||||
font-size: $pre-font-size
|
||||
overflow-x: auto
|
||||
padding: $pre-padding
|
||||
white-space: pre
|
||||
word-wrap: normal
|
||||
code
|
||||
background-color: transparent
|
||||
color: currentColor
|
||||
font-size: $pre-code-font-size
|
||||
padding: 0
|
||||
|
||||
table
|
||||
td,
|
||||
th
|
||||
vertical-align: top
|
||||
&:not([align])
|
||||
text-align: inherit
|
||||
th
|
||||
color: $text-strong
|
|
@ -0,0 +1 @@
|
|||
@warn "The helpers.sass file is DEPRECATED. It has moved into its own /helpers folder. Please import sass/helpers/_all instead."
|
|
@ -0,0 +1,79 @@
|
|||
/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */
|
||||
// Blocks
|
||||
html,
|
||||
body,
|
||||
p,
|
||||
ol,
|
||||
ul,
|
||||
li,
|
||||
dl,
|
||||
dt,
|
||||
dd,
|
||||
blockquote,
|
||||
figure,
|
||||
fieldset,
|
||||
legend,
|
||||
textarea,
|
||||
pre,
|
||||
iframe,
|
||||
hr,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6
|
||||
margin: 0
|
||||
padding: 0
|
||||
|
||||
// Headings
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6
|
||||
font-size: 100%
|
||||
font-weight: normal
|
||||
|
||||
// List
|
||||
ul
|
||||
list-style: none
|
||||
|
||||
// Form
|
||||
button,
|
||||
input,
|
||||
select,
|
||||
textarea
|
||||
margin: 0
|
||||
|
||||
// Box sizing
|
||||
html
|
||||
box-sizing: border-box
|
||||
|
||||
*
|
||||
&,
|
||||
&::before,
|
||||
&::after
|
||||
box-sizing: inherit
|
||||
|
||||
// Media
|
||||
img,
|
||||
video
|
||||
height: auto
|
||||
max-width: 100%
|
||||
|
||||
// Iframe
|
||||
iframe
|
||||
border: 0
|
||||
|
||||
// Table
|
||||
table
|
||||
border-collapse: collapse
|
||||
border-spacing: 0
|
||||
|
||||
td,
|
||||
th
|
||||
padding: 0
|
||||
&:not([align])
|
||||
text-align: inherit
|
|
@ -0,0 +1,15 @@
|
|||
/* Bulma Components */
|
||||
@charset "utf-8"
|
||||
|
||||
@import "breadcrumb"
|
||||
@import "card"
|
||||
@import "dropdown"
|
||||
@import "level"
|
||||
@import "media"
|
||||
@import "menu"
|
||||
@import "message"
|
||||
@import "modal"
|
||||
@import "navbar"
|
||||
@import "pagination"
|
||||
@import "panel"
|
||||
@import "tabs"
|
77
themes/mnemosyne/node_modules/bulma/sass/components/breadcrumb.sass
generated
vendored
Normal file
77
themes/mnemosyne/node_modules/bulma/sass/components/breadcrumb.sass
generated
vendored
Normal file
|
@ -0,0 +1,77 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$breadcrumb-item-color: $link !default
|
||||
$breadcrumb-item-hover-color: $link-hover !default
|
||||
$breadcrumb-item-active-color: $text-strong !default
|
||||
|
||||
$breadcrumb-item-padding-vertical: 0 !default
|
||||
$breadcrumb-item-padding-horizontal: 0.75em !default
|
||||
|
||||
$breadcrumb-item-separator-color: $border-hover !default
|
||||
|
||||
.breadcrumb
|
||||
@extend %block
|
||||
@extend %unselectable
|
||||
font-size: $size-normal
|
||||
white-space: nowrap
|
||||
a
|
||||
align-items: center
|
||||
color: $breadcrumb-item-color
|
||||
display: flex
|
||||
justify-content: center
|
||||
padding: $breadcrumb-item-padding-vertical $breadcrumb-item-padding-horizontal
|
||||
&:hover
|
||||
color: $breadcrumb-item-hover-color
|
||||
li
|
||||
align-items: center
|
||||
display: flex
|
||||
&:first-child a
|
||||
+ltr-property("padding", 0, false)
|
||||
&.is-active
|
||||
a
|
||||
color: $breadcrumb-item-active-color
|
||||
cursor: default
|
||||
pointer-events: none
|
||||
& + li::before
|
||||
color: $breadcrumb-item-separator-color
|
||||
content: "\0002f"
|
||||
ul,
|
||||
ol
|
||||
align-items: flex-start
|
||||
display: flex
|
||||
flex-wrap: wrap
|
||||
justify-content: flex-start
|
||||
.icon
|
||||
&:first-child
|
||||
+ltr-property("margin", 0.5em)
|
||||
&:last-child
|
||||
+ltr-property("margin", 0.5em, false)
|
||||
// Alignment
|
||||
&.is-centered
|
||||
ol,
|
||||
ul
|
||||
justify-content: center
|
||||
&.is-right
|
||||
ol,
|
||||
ul
|
||||
justify-content: flex-end
|
||||
// Sizes
|
||||
&.is-small
|
||||
font-size: $size-small
|
||||
&.is-medium
|
||||
font-size: $size-medium
|
||||
&.is-large
|
||||
font-size: $size-large
|
||||
// Styles
|
||||
&.has-arrow-separator
|
||||
li + li::before
|
||||
content: "\02192"
|
||||
&.has-bullet-separator
|
||||
li + li::before
|
||||
content: "\02022"
|
||||
&.has-dot-separator
|
||||
li + li::before
|
||||
content: "\000b7"
|
||||
&.has-succeeds-separator
|
||||
li + li::before
|
||||
content: "\0227B"
|
|
@ -0,0 +1,103 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$card-color: $text !default
|
||||
$card-background-color: $scheme-main !default
|
||||
$card-shadow: $shadow !default
|
||||
$card-radius: 0.25rem !default
|
||||
|
||||
$card-header-background-color: transparent !default
|
||||
$card-header-color: $text-strong !default
|
||||
$card-header-padding: 0.75rem 1rem !default
|
||||
$card-header-shadow: 0 0.125em 0.25em rgba($scheme-invert, 0.1) !default
|
||||
$card-header-weight: $weight-bold !default
|
||||
|
||||
$card-content-background-color: transparent !default
|
||||
$card-content-padding: 1.5rem !default
|
||||
|
||||
$card-footer-background-color: transparent !default
|
||||
$card-footer-border-top: 1px solid $border-light !default
|
||||
$card-footer-padding: 0.75rem !default
|
||||
|
||||
$card-media-margin: $block-spacing !default
|
||||
|
||||
.card
|
||||
background-color: $card-background-color
|
||||
border-radius: $card-radius
|
||||
box-shadow: $card-shadow
|
||||
color: $card-color
|
||||
max-width: 100%
|
||||
position: relative
|
||||
|
||||
%card-item
|
||||
&:first-child
|
||||
border-top-left-radius: $card-radius
|
||||
border-top-right-radius: $card-radius
|
||||
&:last-child
|
||||
border-bottom-left-radius: $card-radius
|
||||
border-bottom-right-radius: $card-radius
|
||||
|
||||
.card-header
|
||||
@extend %card-item
|
||||
background-color: $card-header-background-color
|
||||
align-items: stretch
|
||||
box-shadow: $card-header-shadow
|
||||
display: flex
|
||||
|
||||
.card-header-title
|
||||
align-items: center
|
||||
color: $card-header-color
|
||||
display: flex
|
||||
flex-grow: 1
|
||||
font-weight: $card-header-weight
|
||||
padding: $card-header-padding
|
||||
&.is-centered
|
||||
justify-content: center
|
||||
|
||||
.card-header-icon
|
||||
+reset
|
||||
align-items: center
|
||||
cursor: pointer
|
||||
display: flex
|
||||
justify-content: center
|
||||
padding: $card-header-padding
|
||||
|
||||
.card-image
|
||||
display: block
|
||||
position: relative
|
||||
&:first-child
|
||||
img
|
||||
border-top-left-radius: $card-radius
|
||||
border-top-right-radius: $card-radius
|
||||
&:last-child
|
||||
img
|
||||
border-bottom-left-radius: $card-radius
|
||||
border-bottom-right-radius: $card-radius
|
||||
|
||||
.card-content
|
||||
@extend %card-item
|
||||
background-color: $card-content-background-color
|
||||
padding: $card-content-padding
|
||||
|
||||
.card-footer
|
||||
@extend %card-item
|
||||
background-color: $card-footer-background-color
|
||||
border-top: $card-footer-border-top
|
||||
align-items: stretch
|
||||
display: flex
|
||||
|
||||
.card-footer-item
|
||||
align-items: center
|
||||
display: flex
|
||||
flex-basis: 0
|
||||
flex-grow: 1
|
||||
flex-shrink: 0
|
||||
justify-content: center
|
||||
padding: $card-footer-padding
|
||||
&:not(:last-child)
|
||||
+ltr-property("border", $card-footer-border-top)
|
||||
|
||||
// Combinations
|
||||
|
||||
.card
|
||||
.media:not(:last-child)
|
||||
margin-bottom: $card-media-margin
|
|
@ -0,0 +1,83 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$dropdown-menu-min-width: 12rem !default
|
||||
|
||||
$dropdown-content-background-color: $scheme-main !default
|
||||
$dropdown-content-arrow: $link !default
|
||||
$dropdown-content-offset: 4px !default
|
||||
$dropdown-content-padding-bottom: 0.5rem !default
|
||||
$dropdown-content-padding-top: 0.5rem !default
|
||||
$dropdown-content-radius: $radius !default
|
||||
$dropdown-content-shadow: $shadow !default
|
||||
$dropdown-content-z: 20 !default
|
||||
|
||||
$dropdown-item-color: $text !default
|
||||
$dropdown-item-hover-color: $scheme-invert !default
|
||||
$dropdown-item-hover-background-color: $background !default
|
||||
$dropdown-item-active-color: $link-invert !default
|
||||
$dropdown-item-active-background-color: $link !default
|
||||
|
||||
$dropdown-divider-background-color: $border-light !default
|
||||
|
||||
.dropdown
|
||||
display: inline-flex
|
||||
position: relative
|
||||
vertical-align: top
|
||||
&.is-active,
|
||||
&.is-hoverable:hover
|
||||
.dropdown-menu
|
||||
display: block
|
||||
&.is-right
|
||||
.dropdown-menu
|
||||
left: auto
|
||||
right: 0
|
||||
&.is-up
|
||||
.dropdown-menu
|
||||
bottom: 100%
|
||||
padding-bottom: $dropdown-content-offset
|
||||
padding-top: initial
|
||||
top: auto
|
||||
|
||||
.dropdown-menu
|
||||
display: none
|
||||
+ltr-position(0, false)
|
||||
min-width: $dropdown-menu-min-width
|
||||
padding-top: $dropdown-content-offset
|
||||
position: absolute
|
||||
top: 100%
|
||||
z-index: $dropdown-content-z
|
||||
|
||||
.dropdown-content
|
||||
background-color: $dropdown-content-background-color
|
||||
border-radius: $dropdown-content-radius
|
||||
box-shadow: $dropdown-content-shadow
|
||||
padding-bottom: $dropdown-content-padding-bottom
|
||||
padding-top: $dropdown-content-padding-top
|
||||
|
||||
.dropdown-item
|
||||
color: $dropdown-item-color
|
||||
display: block
|
||||
font-size: 0.875rem
|
||||
line-height: 1.5
|
||||
padding: 0.375rem 1rem
|
||||
position: relative
|
||||
|
||||
a.dropdown-item,
|
||||
button.dropdown-item
|
||||
+ltr-property("padding", 3rem)
|
||||
text-align: inherit
|
||||
white-space: nowrap
|
||||
width: 100%
|
||||
&:hover
|
||||
background-color: $dropdown-item-hover-background-color
|
||||
color: $dropdown-item-hover-color
|
||||
&.is-active
|
||||
background-color: $dropdown-item-active-background-color
|
||||
color: $dropdown-item-active-color
|
||||
|
||||
.dropdown-divider
|
||||
background-color: $dropdown-divider-background-color
|
||||
border: none
|
||||
display: block
|
||||
height: 1px
|
||||
margin: 0.5rem 0
|
|
@ -0,0 +1,79 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$level-item-spacing: ($block-spacing * 0.5) !default
|
||||
|
||||
.level
|
||||
@extend %block
|
||||
align-items: center
|
||||
justify-content: space-between
|
||||
code
|
||||
border-radius: $radius
|
||||
img
|
||||
display: inline-block
|
||||
vertical-align: top
|
||||
// Modifiers
|
||||
&.is-mobile
|
||||
display: flex
|
||||
.level-left,
|
||||
.level-right
|
||||
display: flex
|
||||
.level-left + .level-right
|
||||
margin-top: 0
|
||||
.level-item
|
||||
&:not(:last-child)
|
||||
margin-bottom: 0
|
||||
+ltr-property("margin", $level-item-spacing)
|
||||
&:not(.is-narrow)
|
||||
flex-grow: 1
|
||||
// Responsiveness
|
||||
+tablet
|
||||
display: flex
|
||||
& > .level-item
|
||||
&:not(.is-narrow)
|
||||
flex-grow: 1
|
||||
|
||||
.level-item
|
||||
align-items: center
|
||||
display: flex
|
||||
flex-basis: auto
|
||||
flex-grow: 0
|
||||
flex-shrink: 0
|
||||
justify-content: center
|
||||
.title,
|
||||
.subtitle
|
||||
margin-bottom: 0
|
||||
// Responsiveness
|
||||
+mobile
|
||||
&:not(:last-child)
|
||||
margin-bottom: $level-item-spacing
|
||||
|
||||
.level-left,
|
||||
.level-right
|
||||
flex-basis: auto
|
||||
flex-grow: 0
|
||||
flex-shrink: 0
|
||||
.level-item
|
||||
// Modifiers
|
||||
&.is-flexible
|
||||
flex-grow: 1
|
||||
// Responsiveness
|
||||
+tablet
|
||||
&:not(:last-child)
|
||||
+ltr-property("margin", $level-item-spacing)
|
||||
|
||||
.level-left
|
||||
align-items: center
|
||||
justify-content: flex-start
|
||||
// Responsiveness
|
||||
+mobile
|
||||
& + .level-right
|
||||
margin-top: 1.5rem
|
||||
+tablet
|
||||
display: flex
|
||||
|
||||
.level-right
|
||||
align-items: center
|
||||
justify-content: flex-end
|
||||
// Responsiveness
|
||||
+tablet
|
||||
display: flex
|
|
@ -0,0 +1,59 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$media-border-color: bulmaRgba($border, 0.5) !default
|
||||
$media-border-size: 1px !default
|
||||
$media-spacing: 1rem !default
|
||||
$media-spacing-large: 1.5rem !default
|
||||
$media-content-spacing: 0.75rem !default
|
||||
$media-level-1-spacing: 0.75rem !default
|
||||
$media-level-1-content-spacing: 0.5rem !default
|
||||
$media-level-2-spacing: 0.5rem !default
|
||||
|
||||
.media
|
||||
align-items: flex-start
|
||||
display: flex
|
||||
text-align: inherit
|
||||
.content:not(:last-child)
|
||||
margin-bottom: $media-content-spacing
|
||||
.media
|
||||
border-top: $media-border-size solid $media-border-color
|
||||
display: flex
|
||||
padding-top: $media-level-1-spacing
|
||||
.content:not(:last-child),
|
||||
.control:not(:last-child)
|
||||
margin-bottom: $media-level-1-content-spacing
|
||||
.media
|
||||
padding-top: $media-level-2-spacing
|
||||
& + .media
|
||||
margin-top: $media-level-2-spacing
|
||||
& + .media
|
||||
border-top: $media-border-size solid $media-border-color
|
||||
margin-top: $media-spacing
|
||||
padding-top: $media-spacing
|
||||
// Sizes
|
||||
&.is-large
|
||||
& + .media
|
||||
margin-top: $media-spacing-large
|
||||
padding-top: $media-spacing-large
|
||||
|
||||
.media-left,
|
||||
.media-right
|
||||
flex-basis: auto
|
||||
flex-grow: 0
|
||||
flex-shrink: 0
|
||||
|
||||
.media-left
|
||||
+ltr-property("margin", $media-spacing)
|
||||
|
||||
.media-right
|
||||
+ltr-property("margin", $media-spacing, false)
|
||||
|
||||
.media-content
|
||||
flex-basis: auto
|
||||
flex-grow: 1
|
||||
flex-shrink: 1
|
||||
text-align: inherit
|
||||
|
||||
+mobile
|
||||
.media-content
|
||||
overflow-x: auto
|
|
@ -0,0 +1,59 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$menu-item-color: $text !default
|
||||
$menu-item-radius: $radius-small !default
|
||||
$menu-item-hover-color: $text-strong !default
|
||||
$menu-item-hover-background-color: $background !default
|
||||
$menu-item-active-color: $link-invert !default
|
||||
$menu-item-active-background-color: $link !default
|
||||
|
||||
$menu-list-border-left: 1px solid $border !default
|
||||
$menu-list-line-height: 1.25 !default
|
||||
$menu-list-link-padding: 0.5em 0.75em !default
|
||||
$menu-nested-list-margin: 0.75em !default
|
||||
$menu-nested-list-padding-left: 0.75em !default
|
||||
|
||||
$menu-label-color: $text-light !default
|
||||
$menu-label-font-size: 0.75em !default
|
||||
$menu-label-letter-spacing: 0.1em !default
|
||||
$menu-label-spacing: 1em !default
|
||||
|
||||
.menu
|
||||
font-size: $size-normal
|
||||
// Sizes
|
||||
&.is-small
|
||||
font-size: $size-small
|
||||
&.is-medium
|
||||
font-size: $size-medium
|
||||
&.is-large
|
||||
font-size: $size-large
|
||||
|
||||
.menu-list
|
||||
line-height: $menu-list-line-height
|
||||
a
|
||||
border-radius: $menu-item-radius
|
||||
color: $menu-item-color
|
||||
display: block
|
||||
padding: $menu-list-link-padding
|
||||
&:hover
|
||||
background-color: $menu-item-hover-background-color
|
||||
color: $menu-item-hover-color
|
||||
// Modifiers
|
||||
&.is-active
|
||||
background-color: $menu-item-active-background-color
|
||||
color: $menu-item-active-color
|
||||
li
|
||||
ul
|
||||
+ltr-property("border", $menu-list-border-left, false)
|
||||
margin: $menu-nested-list-margin
|
||||
+ltr-property("padding", $menu-nested-list-padding-left, false)
|
||||
|
||||
.menu-label
|
||||
color: $menu-label-color
|
||||
font-size: $menu-label-font-size
|
||||
letter-spacing: $menu-label-letter-spacing
|
||||
text-transform: uppercase
|
||||
&:not(:first-child)
|
||||
margin-top: $menu-label-spacing
|
||||
&:not(:last-child)
|
||||
margin-bottom: $menu-label-spacing
|
|
@ -0,0 +1,101 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$message-background-color: $background !default
|
||||
$message-radius: $radius !default
|
||||
|
||||
$message-header-background-color: $text !default
|
||||
$message-header-color: $text-invert !default
|
||||
$message-header-weight: $weight-bold !default
|
||||
$message-header-padding: 0.75em 1em !default
|
||||
$message-header-radius: $radius !default
|
||||
|
||||
$message-body-border-color: $border !default
|
||||
$message-body-border-width: 0 0 0 4px !default
|
||||
$message-body-color: $text !default
|
||||
$message-body-padding: 1.25em 1.5em !default
|
||||
$message-body-radius: $radius !default
|
||||
|
||||
$message-body-pre-background-color: $scheme-main !default
|
||||
$message-body-pre-code-background-color: transparent !default
|
||||
|
||||
$message-header-body-border-width: 0 !default
|
||||
$message-colors: $colors !default
|
||||
|
||||
.message
|
||||
@extend %block
|
||||
background-color: $message-background-color
|
||||
border-radius: $message-radius
|
||||
font-size: $size-normal
|
||||
strong
|
||||
color: currentColor
|
||||
a:not(.button):not(.tag):not(.dropdown-item)
|
||||
color: currentColor
|
||||
text-decoration: underline
|
||||
// Sizes
|
||||
&.is-small
|
||||
font-size: $size-small
|
||||
&.is-medium
|
||||
font-size: $size-medium
|
||||
&.is-large
|
||||
font-size: $size-large
|
||||
// Colors
|
||||
@each $name, $components in $message-colors
|
||||
$color: nth($components, 1)
|
||||
$color-invert: nth($components, 2)
|
||||
$color-light: null
|
||||
$color-dark: null
|
||||
|
||||
@if length($components) >= 3
|
||||
$color-light: nth($components, 3)
|
||||
@if length($components) >= 4
|
||||
$color-dark: nth($components, 4)
|
||||
@else
|
||||
$color-luminance: colorLuminance($color)
|
||||
$darken-percentage: $color-luminance * 70%
|
||||
$desaturate-percentage: $color-luminance * 30%
|
||||
$color-dark: desaturate(darken($color, $darken-percentage), $desaturate-percentage)
|
||||
@else
|
||||
$color-lightning: max((100% - lightness($color)) - 2%, 0%)
|
||||
$color-light: lighten($color, $color-lightning)
|
||||
|
||||
&.is-#{$name}
|
||||
background-color: $color-light
|
||||
.message-header
|
||||
background-color: $color
|
||||
color: $color-invert
|
||||
.message-body
|
||||
border-color: $color
|
||||
color: $color-dark
|
||||
|
||||
.message-header
|
||||
align-items: center
|
||||
background-color: $message-header-background-color
|
||||
border-radius: $message-header-radius $message-header-radius 0 0
|
||||
color: $message-header-color
|
||||
display: flex
|
||||
font-weight: $message-header-weight
|
||||
justify-content: space-between
|
||||
line-height: 1.25
|
||||
padding: $message-header-padding
|
||||
position: relative
|
||||
.delete
|
||||
flex-grow: 0
|
||||
flex-shrink: 0
|
||||
+ltr-property("margin", 0.75em, false)
|
||||
& + .message-body
|
||||
border-width: $message-header-body-border-width
|
||||
border-top-left-radius: 0
|
||||
border-top-right-radius: 0
|
||||
|
||||
.message-body
|
||||
border-color: $message-body-border-color
|
||||
border-radius: $message-body-radius
|
||||
border-style: solid
|
||||
border-width: $message-body-border-width
|
||||
color: $message-body-color
|
||||
padding: $message-body-padding
|
||||
code,
|
||||
pre
|
||||
background-color: $message-body-pre-background-color
|
||||
pre code
|
||||
background-color: $message-body-pre-code-background-color
|
|
@ -0,0 +1,117 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$modal-z: 40 !default
|
||||
|
||||
$modal-background-background-color: bulmaRgba($scheme-invert, 0.86) !default
|
||||
|
||||
$modal-content-width: 640px !default
|
||||
$modal-content-margin-mobile: 20px !default
|
||||
$modal-content-spacing-mobile: 160px !default
|
||||
$modal-content-spacing-tablet: 40px !default
|
||||
|
||||
$modal-close-dimensions: 40px !default
|
||||
$modal-close-right: 20px !default
|
||||
$modal-close-top: 20px !default
|
||||
|
||||
$modal-card-spacing: 40px !default
|
||||
|
||||
$modal-card-head-background-color: $background !default
|
||||
$modal-card-head-border-bottom: 1px solid $border !default
|
||||
$modal-card-head-padding: 20px !default
|
||||
$modal-card-head-radius: $radius-large !default
|
||||
|
||||
$modal-card-title-color: $text-strong !default
|
||||
$modal-card-title-line-height: 1 !default
|
||||
$modal-card-title-size: $size-4 !default
|
||||
|
||||
$modal-card-foot-radius: $radius-large !default
|
||||
$modal-card-foot-border-top: 1px solid $border !default
|
||||
|
||||
$modal-card-body-background-color: $scheme-main !default
|
||||
$modal-card-body-padding: 20px !default
|
||||
|
||||
$modal-breakpoint: $tablet !default
|
||||
|
||||
.modal
|
||||
@extend %overlay
|
||||
align-items: center
|
||||
display: none
|
||||
flex-direction: column
|
||||
justify-content: center
|
||||
overflow: hidden
|
||||
position: fixed
|
||||
z-index: $modal-z
|
||||
// Modifiers
|
||||
&.is-active
|
||||
display: flex
|
||||
|
||||
.modal-background
|
||||
@extend %overlay
|
||||
background-color: $modal-background-background-color
|
||||
|
||||
.modal-content,
|
||||
.modal-card
|
||||
margin: 0 $modal-content-margin-mobile
|
||||
max-height: calc(100vh - #{$modal-content-spacing-mobile})
|
||||
overflow: auto
|
||||
position: relative
|
||||
width: 100%
|
||||
// Responsiveness
|
||||
+from($modal-breakpoint)
|
||||
margin: 0 auto
|
||||
max-height: calc(100vh - #{$modal-content-spacing-tablet})
|
||||
width: $modal-content-width
|
||||
|
||||
.modal-close
|
||||
@extend %delete
|
||||
background: none
|
||||
height: $modal-close-dimensions
|
||||
position: fixed
|
||||
+ltr-position($modal-close-right)
|
||||
top: $modal-close-top
|
||||
width: $modal-close-dimensions
|
||||
|
||||
.modal-card
|
||||
display: flex
|
||||
flex-direction: column
|
||||
max-height: calc(100vh - #{$modal-card-spacing})
|
||||
overflow: hidden
|
||||
-ms-overflow-y: visible
|
||||
|
||||
.modal-card-head,
|
||||
.modal-card-foot
|
||||
align-items: center
|
||||
background-color: $modal-card-head-background-color
|
||||
display: flex
|
||||
flex-shrink: 0
|
||||
justify-content: flex-start
|
||||
padding: $modal-card-head-padding
|
||||
position: relative
|
||||
|
||||
.modal-card-head
|
||||
border-bottom: $modal-card-head-border-bottom
|
||||
border-top-left-radius: $modal-card-head-radius
|
||||
border-top-right-radius: $modal-card-head-radius
|
||||
|
||||
.modal-card-title
|
||||
color: $modal-card-title-color
|
||||
flex-grow: 1
|
||||
flex-shrink: 0
|
||||
font-size: $modal-card-title-size
|
||||
line-height: $modal-card-title-line-height
|
||||
|
||||
.modal-card-foot
|
||||
border-bottom-left-radius: $modal-card-foot-radius
|
||||
border-bottom-right-radius: $modal-card-foot-radius
|
||||
border-top: $modal-card-foot-border-top
|
||||
.button
|
||||
&:not(:last-child)
|
||||
+ltr-property("margin", 0.5em)
|
||||
|
||||
.modal-card-body
|
||||
+overflow-touch
|
||||
background-color: $modal-card-body-background-color
|
||||
flex-grow: 1
|
||||
flex-shrink: 1
|
||||
overflow: auto
|
||||
padding: $modal-card-body-padding
|
|
@ -0,0 +1,446 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$navbar-background-color: $scheme-main !default
|
||||
$navbar-box-shadow-size: 0 2px 0 0 !default
|
||||
$navbar-box-shadow-color: $background !default
|
||||
$navbar-height: 3.25rem !default
|
||||
$navbar-padding-vertical: 1rem !default
|
||||
$navbar-padding-horizontal: 2rem !default
|
||||
$navbar-z: 30 !default
|
||||
$navbar-fixed-z: 30 !default
|
||||
|
||||
$navbar-item-color: $text !default
|
||||
$navbar-item-hover-color: $link !default
|
||||
$navbar-item-hover-background-color: $scheme-main-bis !default
|
||||
$navbar-item-active-color: $scheme-invert !default
|
||||
$navbar-item-active-background-color: transparent !default
|
||||
$navbar-item-img-max-height: 1.75rem !default
|
||||
|
||||
$navbar-burger-color: $navbar-item-color !default
|
||||
|
||||
$navbar-tab-hover-background-color: transparent !default
|
||||
$navbar-tab-hover-border-bottom-color: $link !default
|
||||
$navbar-tab-active-color: $link !default
|
||||
$navbar-tab-active-background-color: transparent !default
|
||||
$navbar-tab-active-border-bottom-color: $link !default
|
||||
$navbar-tab-active-border-bottom-style: solid !default
|
||||
$navbar-tab-active-border-bottom-width: 3px !default
|
||||
|
||||
$navbar-dropdown-background-color: $scheme-main !default
|
||||
$navbar-dropdown-border-top: 2px solid $border !default
|
||||
$navbar-dropdown-offset: -4px !default
|
||||
$navbar-dropdown-arrow: $link !default
|
||||
$navbar-dropdown-radius: $radius-large !default
|
||||
$navbar-dropdown-z: 20 !default
|
||||
|
||||
$navbar-dropdown-boxed-radius: $radius-large !default
|
||||
$navbar-dropdown-boxed-shadow: 0 8px 8px bulmaRgba($scheme-invert, 0.1), 0 0 0 1px bulmaRgba($scheme-invert, 0.1) !default
|
||||
|
||||
$navbar-dropdown-item-hover-color: $scheme-invert !default
|
||||
$navbar-dropdown-item-hover-background-color: $background !default
|
||||
$navbar-dropdown-item-active-color: $link !default
|
||||
$navbar-dropdown-item-active-background-color: $background !default
|
||||
|
||||
$navbar-divider-background-color: $background !default
|
||||
$navbar-divider-height: 2px !default
|
||||
|
||||
$navbar-bottom-box-shadow-size: 0 -2px 0 0 !default
|
||||
|
||||
$navbar-breakpoint: $desktop !default
|
||||
|
||||
$navbar-colors: $colors !default
|
||||
|
||||
=navbar-fixed
|
||||
left: 0
|
||||
position: fixed
|
||||
right: 0
|
||||
z-index: $navbar-fixed-z
|
||||
|
||||
.navbar
|
||||
background-color: $navbar-background-color
|
||||
min-height: $navbar-height
|
||||
position: relative
|
||||
z-index: $navbar-z
|
||||
@each $name, $pair in $navbar-colors
|
||||
$color: nth($pair, 1)
|
||||
$color-invert: nth($pair, 2)
|
||||
&.is-#{$name}
|
||||
background-color: $color
|
||||
color: $color-invert
|
||||
.navbar-brand
|
||||
& > .navbar-item,
|
||||
.navbar-link
|
||||
color: $color-invert
|
||||
& > a.navbar-item,
|
||||
.navbar-link
|
||||
&:focus,
|
||||
&:hover,
|
||||
&.is-active
|
||||
background-color: bulmaDarken($color, 5%)
|
||||
color: $color-invert
|
||||
.navbar-link
|
||||
&::after
|
||||
border-color: $color-invert
|
||||
.navbar-burger
|
||||
color: $color-invert
|
||||
+from($navbar-breakpoint)
|
||||
.navbar-start,
|
||||
.navbar-end
|
||||
& > .navbar-item,
|
||||
.navbar-link
|
||||
color: $color-invert
|
||||
& > a.navbar-item,
|
||||
.navbar-link
|
||||
&:focus,
|
||||
&:hover,
|
||||
&.is-active
|
||||
background-color: bulmaDarken($color, 5%)
|
||||
color: $color-invert
|
||||
.navbar-link
|
||||
&::after
|
||||
border-color: $color-invert
|
||||
.navbar-item.has-dropdown:focus .navbar-link,
|
||||
.navbar-item.has-dropdown:hover .navbar-link,
|
||||
.navbar-item.has-dropdown.is-active .navbar-link
|
||||
background-color: bulmaDarken($color, 5%)
|
||||
color: $color-invert
|
||||
.navbar-dropdown
|
||||
a.navbar-item
|
||||
&.is-active
|
||||
background-color: $color
|
||||
color: $color-invert
|
||||
& > .container
|
||||
align-items: stretch
|
||||
display: flex
|
||||
min-height: $navbar-height
|
||||
width: 100%
|
||||
&.has-shadow
|
||||
box-shadow: $navbar-box-shadow-size $navbar-box-shadow-color
|
||||
&.is-fixed-bottom,
|
||||
&.is-fixed-top
|
||||
+navbar-fixed
|
||||
&.is-fixed-bottom
|
||||
bottom: 0
|
||||
&.has-shadow
|
||||
box-shadow: $navbar-bottom-box-shadow-size $navbar-box-shadow-color
|
||||
&.is-fixed-top
|
||||
top: 0
|
||||
|
||||
html,
|
||||
body
|
||||
&.has-navbar-fixed-top
|
||||
padding-top: $navbar-height
|
||||
&.has-navbar-fixed-bottom
|
||||
padding-bottom: $navbar-height
|
||||
|
||||
.navbar-brand,
|
||||
.navbar-tabs
|
||||
align-items: stretch
|
||||
display: flex
|
||||
flex-shrink: 0
|
||||
min-height: $navbar-height
|
||||
|
||||
.navbar-brand
|
||||
a.navbar-item
|
||||
&:focus,
|
||||
&:hover
|
||||
background-color: transparent
|
||||
|
||||
.navbar-tabs
|
||||
+overflow-touch
|
||||
max-width: 100vw
|
||||
overflow-x: auto
|
||||
overflow-y: hidden
|
||||
|
||||
.navbar-burger
|
||||
@extend %reset
|
||||
color: $navbar-burger-color
|
||||
+hamburger($navbar-height)
|
||||
+ltr-property("margin", auto, false)
|
||||
|
||||
.navbar-menu
|
||||
display: none
|
||||
|
||||
.navbar-item,
|
||||
.navbar-link
|
||||
color: $navbar-item-color
|
||||
display: block
|
||||
line-height: 1.5
|
||||
padding: 0.5rem 0.75rem
|
||||
position: relative
|
||||
.icon
|
||||
&:only-child
|
||||
margin-left: -0.25rem
|
||||
margin-right: -0.25rem
|
||||
|
||||
a.navbar-item,
|
||||
.navbar-link
|
||||
cursor: pointer
|
||||
&:focus,
|
||||
&:focus-within,
|
||||
&:hover,
|
||||
&.is-active
|
||||
background-color: $navbar-item-hover-background-color
|
||||
color: $navbar-item-hover-color
|
||||
|
||||
.navbar-item
|
||||
flex-grow: 0
|
||||
flex-shrink: 0
|
||||
img
|
||||
max-height: $navbar-item-img-max-height
|
||||
&.has-dropdown
|
||||
padding: 0
|
||||
&.is-expanded
|
||||
flex-grow: 1
|
||||
flex-shrink: 1
|
||||
&.is-tab
|
||||
border-bottom: 1px solid transparent
|
||||
min-height: $navbar-height
|
||||
padding-bottom: calc(0.5rem - 1px)
|
||||
&:focus,
|
||||
&:hover
|
||||
background-color: $navbar-tab-hover-background-color
|
||||
border-bottom-color: $navbar-tab-hover-border-bottom-color
|
||||
&.is-active
|
||||
background-color: $navbar-tab-active-background-color
|
||||
border-bottom-color: $navbar-tab-active-border-bottom-color
|
||||
border-bottom-style: $navbar-tab-active-border-bottom-style
|
||||
border-bottom-width: $navbar-tab-active-border-bottom-width
|
||||
color: $navbar-tab-active-color
|
||||
padding-bottom: calc(0.5rem - #{$navbar-tab-active-border-bottom-width})
|
||||
|
||||
.navbar-content
|
||||
flex-grow: 1
|
||||
flex-shrink: 1
|
||||
|
||||
.navbar-link:not(.is-arrowless)
|
||||
+ltr-property("padding", 2.5em)
|
||||
&::after
|
||||
@extend %arrow
|
||||
border-color: $navbar-dropdown-arrow
|
||||
margin-top: -0.375em
|
||||
+ltr-position(1.125em)
|
||||
|
||||
.navbar-dropdown
|
||||
font-size: 0.875rem
|
||||
padding-bottom: 0.5rem
|
||||
padding-top: 0.5rem
|
||||
.navbar-item
|
||||
padding-left: 1.5rem
|
||||
padding-right: 1.5rem
|
||||
|
||||
.navbar-divider
|
||||
background-color: $navbar-divider-background-color
|
||||
border: none
|
||||
display: none
|
||||
height: $navbar-divider-height
|
||||
margin: 0.5rem 0
|
||||
|
||||
+until($navbar-breakpoint)
|
||||
.navbar > .container
|
||||
display: block
|
||||
.navbar-brand,
|
||||
.navbar-tabs
|
||||
.navbar-item
|
||||
align-items: center
|
||||
display: flex
|
||||
.navbar-link
|
||||
&::after
|
||||
display: none
|
||||
.navbar-menu
|
||||
background-color: $navbar-background-color
|
||||
box-shadow: 0 8px 16px bulmaRgba($scheme-invert, 0.1)
|
||||
padding: 0.5rem 0
|
||||
&.is-active
|
||||
display: block
|
||||
// Fixed navbar
|
||||
.navbar
|
||||
&.is-fixed-bottom-touch,
|
||||
&.is-fixed-top-touch
|
||||
+navbar-fixed
|
||||
&.is-fixed-bottom-touch
|
||||
bottom: 0
|
||||
&.has-shadow
|
||||
box-shadow: 0 -2px 3px bulmaRgba($scheme-invert, 0.1)
|
||||
&.is-fixed-top-touch
|
||||
top: 0
|
||||
&.is-fixed-top,
|
||||
&.is-fixed-top-touch
|
||||
.navbar-menu
|
||||
+overflow-touch
|
||||
max-height: calc(100vh - #{$navbar-height})
|
||||
overflow: auto
|
||||
html,
|
||||
body
|
||||
&.has-navbar-fixed-top-touch
|
||||
padding-top: $navbar-height
|
||||
&.has-navbar-fixed-bottom-touch
|
||||
padding-bottom: $navbar-height
|
||||
|
||||
+from($navbar-breakpoint)
|
||||
.navbar,
|
||||
.navbar-menu,
|
||||
.navbar-start,
|
||||
.navbar-end
|
||||
align-items: stretch
|
||||
display: flex
|
||||
.navbar
|
||||
min-height: $navbar-height
|
||||
&.is-spaced
|
||||
padding: $navbar-padding-vertical $navbar-padding-horizontal
|
||||
.navbar-start,
|
||||
.navbar-end
|
||||
align-items: center
|
||||
a.navbar-item,
|
||||
.navbar-link
|
||||
border-radius: $radius
|
||||
&.is-transparent
|
||||
a.navbar-item,
|
||||
.navbar-link
|
||||
&:focus,
|
||||
&:hover,
|
||||
&.is-active
|
||||
background-color: transparent !important
|
||||
.navbar-item.has-dropdown
|
||||
&.is-active,
|
||||
&.is-hoverable:focus,
|
||||
&.is-hoverable:focus-within,
|
||||
&.is-hoverable:hover
|
||||
.navbar-link
|
||||
background-color: transparent !important
|
||||
.navbar-dropdown
|
||||
a.navbar-item
|
||||
&:focus,
|
||||
&:hover
|
||||
background-color: $navbar-dropdown-item-hover-background-color
|
||||
color: $navbar-dropdown-item-hover-color
|
||||
&.is-active
|
||||
background-color: $navbar-dropdown-item-active-background-color
|
||||
color: $navbar-dropdown-item-active-color
|
||||
.navbar-burger
|
||||
display: none
|
||||
.navbar-item,
|
||||
.navbar-link
|
||||
align-items: center
|
||||
display: flex
|
||||
.navbar-item
|
||||
&.has-dropdown
|
||||
align-items: stretch
|
||||
&.has-dropdown-up
|
||||
.navbar-link::after
|
||||
transform: rotate(135deg) translate(0.25em, -0.25em)
|
||||
.navbar-dropdown
|
||||
border-bottom: $navbar-dropdown-border-top
|
||||
border-radius: $navbar-dropdown-radius $navbar-dropdown-radius 0 0
|
||||
border-top: none
|
||||
bottom: 100%
|
||||
box-shadow: 0 -8px 8px bulmaRgba($scheme-invert, 0.1)
|
||||
top: auto
|
||||
&.is-active,
|
||||
&.is-hoverable:focus,
|
||||
&.is-hoverable:focus-within,
|
||||
&.is-hoverable:hover
|
||||
.navbar-dropdown
|
||||
display: block
|
||||
.navbar.is-spaced &,
|
||||
&.is-boxed
|
||||
opacity: 1
|
||||
pointer-events: auto
|
||||
transform: translateY(0)
|
||||
.navbar-menu
|
||||
flex-grow: 1
|
||||
flex-shrink: 0
|
||||
.navbar-start
|
||||
justify-content: flex-start
|
||||
+ltr-property("margin", auto)
|
||||
.navbar-end
|
||||
justify-content: flex-end
|
||||
+ltr-property("margin", auto, false)
|
||||
.navbar-dropdown
|
||||
background-color: $navbar-dropdown-background-color
|
||||
border-bottom-left-radius: $navbar-dropdown-radius
|
||||
border-bottom-right-radius: $navbar-dropdown-radius
|
||||
border-top: $navbar-dropdown-border-top
|
||||
box-shadow: 0 8px 8px bulmaRgba($scheme-invert, 0.1)
|
||||
display: none
|
||||
font-size: 0.875rem
|
||||
+ltr-position(0, false)
|
||||
min-width: 100%
|
||||
position: absolute
|
||||
top: 100%
|
||||
z-index: $navbar-dropdown-z
|
||||
.navbar-item
|
||||
padding: 0.375rem 1rem
|
||||
white-space: nowrap
|
||||
a.navbar-item
|
||||
+ltr-property("padding", 3rem)
|
||||
&:focus,
|
||||
&:hover
|
||||
background-color: $navbar-dropdown-item-hover-background-color
|
||||
color: $navbar-dropdown-item-hover-color
|
||||
&.is-active
|
||||
background-color: $navbar-dropdown-item-active-background-color
|
||||
color: $navbar-dropdown-item-active-color
|
||||
.navbar.is-spaced &,
|
||||
&.is-boxed
|
||||
border-radius: $navbar-dropdown-boxed-radius
|
||||
border-top: none
|
||||
box-shadow: $navbar-dropdown-boxed-shadow
|
||||
display: block
|
||||
opacity: 0
|
||||
pointer-events: none
|
||||
top: calc(100% + (#{$navbar-dropdown-offset}))
|
||||
transform: translateY(-5px)
|
||||
transition-duration: $speed
|
||||
transition-property: opacity, transform
|
||||
&.is-right
|
||||
left: auto
|
||||
right: 0
|
||||
.navbar-divider
|
||||
display: block
|
||||
.navbar > .container,
|
||||
.container > .navbar
|
||||
.navbar-brand
|
||||
+ltr-property("margin", -.75rem, false)
|
||||
.navbar-menu
|
||||
+ltr-property("margin", -.75rem)
|
||||
// Fixed navbar
|
||||
.navbar
|
||||
&.is-fixed-bottom-desktop,
|
||||
&.is-fixed-top-desktop
|
||||
+navbar-fixed
|
||||
&.is-fixed-bottom-desktop
|
||||
bottom: 0
|
||||
&.has-shadow
|
||||
box-shadow: 0 -2px 3px bulmaRgba($scheme-invert, 0.1)
|
||||
&.is-fixed-top-desktop
|
||||
top: 0
|
||||
html,
|
||||
body
|
||||
&.has-navbar-fixed-top-desktop
|
||||
padding-top: $navbar-height
|
||||
&.has-navbar-fixed-bottom-desktop
|
||||
padding-bottom: $navbar-height
|
||||
&.has-spaced-navbar-fixed-top
|
||||
padding-top: $navbar-height + ($navbar-padding-vertical * 2)
|
||||
&.has-spaced-navbar-fixed-bottom
|
||||
padding-bottom: $navbar-height + ($navbar-padding-vertical * 2)
|
||||
// Hover/Active states
|
||||
a.navbar-item,
|
||||
.navbar-link
|
||||
&.is-active
|
||||
color: $navbar-item-active-color
|
||||
&.is-active:not(:focus):not(:hover)
|
||||
background-color: $navbar-item-active-background-color
|
||||
.navbar-item.has-dropdown
|
||||
&:focus,
|
||||
&:hover,
|
||||
&.is-active
|
||||
.navbar-link
|
||||
background-color: $navbar-item-hover-background-color
|
||||
|
||||
// Combination
|
||||
|
||||
.hero
|
||||
&.is-fullheight-with-navbar
|
||||
min-height: calc(100vh - #{$navbar-height})
|
166
themes/mnemosyne/node_modules/bulma/sass/components/pagination.sass
generated
vendored
Normal file
166
themes/mnemosyne/node_modules/bulma/sass/components/pagination.sass
generated
vendored
Normal file
|
@ -0,0 +1,166 @@
|
|||
@import "../utilities/controls"
|
||||
@import "../utilities/mixins"
|
||||
|
||||
$pagination-color: $text-strong !default
|
||||
$pagination-border-color: $border !default
|
||||
$pagination-margin: -0.25rem !default
|
||||
$pagination-min-width: $control-height !default
|
||||
|
||||
$pagination-item-font-size: 1em !default
|
||||
$pagination-item-margin: 0.25rem !default
|
||||
$pagination-item-padding-left: 0.5em !default
|
||||
$pagination-item-padding-right: 0.5em !default
|
||||
|
||||
$pagination-nav-padding-left: 0.75em !default
|
||||
$pagination-nav-padding-right: 0.75em !default
|
||||
|
||||
$pagination-hover-color: $link-hover !default
|
||||
$pagination-hover-border-color: $link-hover-border !default
|
||||
|
||||
$pagination-focus-color: $link-focus !default
|
||||
$pagination-focus-border-color: $link-focus-border !default
|
||||
|
||||
$pagination-active-color: $link-active !default
|
||||
$pagination-active-border-color: $link-active-border !default
|
||||
|
||||
$pagination-disabled-color: $text-light !default
|
||||
$pagination-disabled-background-color: $border !default
|
||||
$pagination-disabled-border-color: $border !default
|
||||
|
||||
$pagination-current-color: $link-invert !default
|
||||
$pagination-current-background-color: $link !default
|
||||
$pagination-current-border-color: $link !default
|
||||
|
||||
$pagination-ellipsis-color: $grey-light !default
|
||||
|
||||
$pagination-shadow-inset: inset 0 1px 2px rgba($scheme-invert, 0.2) !default
|
||||
|
||||
.pagination
|
||||
@extend %block
|
||||
font-size: $size-normal
|
||||
margin: $pagination-margin
|
||||
// Sizes
|
||||
&.is-small
|
||||
font-size: $size-small
|
||||
&.is-medium
|
||||
font-size: $size-medium
|
||||
&.is-large
|
||||
font-size: $size-large
|
||||
&.is-rounded
|
||||
.pagination-previous,
|
||||
.pagination-next
|
||||
padding-left: 1em
|
||||
padding-right: 1em
|
||||
border-radius: $radius-rounded
|
||||
.pagination-link
|
||||
border-radius: $radius-rounded
|
||||
|
||||
.pagination,
|
||||
.pagination-list
|
||||
align-items: center
|
||||
display: flex
|
||||
justify-content: center
|
||||
text-align: center
|
||||
|
||||
.pagination-previous,
|
||||
.pagination-next,
|
||||
.pagination-link,
|
||||
.pagination-ellipsis
|
||||
@extend %control
|
||||
@extend %unselectable
|
||||
font-size: $pagination-item-font-size
|
||||
justify-content: center
|
||||
margin: $pagination-item-margin
|
||||
padding-left: $pagination-item-padding-left
|
||||
padding-right: $pagination-item-padding-right
|
||||
text-align: center
|
||||
|
||||
.pagination-previous,
|
||||
.pagination-next,
|
||||
.pagination-link
|
||||
border-color: $pagination-border-color
|
||||
color: $pagination-color
|
||||
min-width: $pagination-min-width
|
||||
&:hover
|
||||
border-color: $pagination-hover-border-color
|
||||
color: $pagination-hover-color
|
||||
&:focus
|
||||
border-color: $pagination-focus-border-color
|
||||
&:active
|
||||
box-shadow: $pagination-shadow-inset
|
||||
&[disabled]
|
||||
background-color: $pagination-disabled-background-color
|
||||
border-color: $pagination-disabled-border-color
|
||||
box-shadow: none
|
||||
color: $pagination-disabled-color
|
||||
opacity: 0.5
|
||||
|
||||
.pagination-previous,
|
||||
.pagination-next
|
||||
padding-left: $pagination-nav-padding-left
|
||||
padding-right: $pagination-nav-padding-right
|
||||
white-space: nowrap
|
||||
|
||||
.pagination-link
|
||||
&.is-current
|
||||
background-color: $pagination-current-background-color
|
||||
border-color: $pagination-current-border-color
|
||||
color: $pagination-current-color
|
||||
|
||||
.pagination-ellipsis
|
||||
color: $pagination-ellipsis-color
|
||||
pointer-events: none
|
||||
|
||||
.pagination-list
|
||||
flex-wrap: wrap
|
||||
li
|
||||
list-style: none
|
||||
|
||||
+mobile
|
||||
.pagination
|
||||
flex-wrap: wrap
|
||||
.pagination-previous,
|
||||
.pagination-next
|
||||
flex-grow: 1
|
||||
flex-shrink: 1
|
||||
.pagination-list
|
||||
li
|
||||
flex-grow: 1
|
||||
flex-shrink: 1
|
||||
|
||||
+tablet
|
||||
.pagination-list
|
||||
flex-grow: 1
|
||||
flex-shrink: 1
|
||||
justify-content: flex-start
|
||||
order: 1
|
||||
.pagination-previous,
|
||||
.pagination-next,
|
||||
.pagination-link,
|
||||
.pagination-ellipsis
|
||||
margin-bottom: 0
|
||||
margin-top: 0
|
||||
.pagination-previous
|
||||
order: 2
|
||||
.pagination-next
|
||||
order: 3
|
||||
.pagination
|
||||
justify-content: space-between
|
||||
margin-bottom: 0
|
||||
margin-top: 0
|
||||
&.is-centered
|
||||
.pagination-previous
|
||||
order: 1
|
||||
.pagination-list
|
||||
justify-content: center
|
||||
order: 2
|
||||
.pagination-next
|
||||
order: 3
|
||||
&.is-right
|
||||
.pagination-previous
|
||||
order: 1
|
||||
.pagination-next
|
||||
order: 2
|
||||
.pagination-list
|
||||
justify-content: flex-end
|
||||
order: 3
|
|
@ -0,0 +1,121 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$panel-margin: $block-spacing !default
|
||||
$panel-item-border: 1px solid $border-light !default
|
||||
$panel-radius: $radius-large !default
|
||||
$panel-shadow: $shadow !default
|
||||
|
||||
$panel-heading-background-color: $border-light !default
|
||||
$panel-heading-color: $text-strong !default
|
||||
$panel-heading-line-height: 1.25 !default
|
||||
$panel-heading-padding: 0.75em 1em !default
|
||||
$panel-heading-radius: $radius !default
|
||||
$panel-heading-size: 1.25em !default
|
||||
$panel-heading-weight: $weight-bold !default
|
||||
|
||||
$panel-tabs-font-size: 0.875em !default
|
||||
$panel-tab-border-bottom: 1px solid $border !default
|
||||
$panel-tab-active-border-bottom-color: $link-active-border !default
|
||||
$panel-tab-active-color: $link-active !default
|
||||
|
||||
$panel-list-item-color: $text !default
|
||||
$panel-list-item-hover-color: $link !default
|
||||
|
||||
$panel-block-color: $text-strong !default
|
||||
$panel-block-hover-background-color: $background !default
|
||||
$panel-block-active-border-left-color: $link !default
|
||||
$panel-block-active-color: $link-active !default
|
||||
$panel-block-active-icon-color: $link !default
|
||||
|
||||
$panel-icon-color: $text-light !default
|
||||
$panel-colors: $colors !default
|
||||
|
||||
.panel
|
||||
border-radius: $panel-radius
|
||||
box-shadow: $panel-shadow
|
||||
font-size: $size-normal
|
||||
&:not(:last-child)
|
||||
margin-bottom: $panel-margin
|
||||
// Colors
|
||||
@each $name, $components in $panel-colors
|
||||
$color: nth($components, 1)
|
||||
$color-invert: nth($components, 2)
|
||||
&.is-#{$name}
|
||||
.panel-heading
|
||||
background-color: $color
|
||||
color: $color-invert
|
||||
.panel-tabs a.is-active
|
||||
border-bottom-color: $color
|
||||
.panel-block.is-active .panel-icon
|
||||
color: $color
|
||||
|
||||
.panel-tabs,
|
||||
.panel-block
|
||||
&:not(:last-child)
|
||||
border-bottom: $panel-item-border
|
||||
|
||||
.panel-heading
|
||||
background-color: $panel-heading-background-color
|
||||
border-radius: $panel-radius $panel-radius 0 0
|
||||
color: $panel-heading-color
|
||||
font-size: $panel-heading-size
|
||||
font-weight: $panel-heading-weight
|
||||
line-height: $panel-heading-line-height
|
||||
padding: $panel-heading-padding
|
||||
|
||||
.panel-tabs
|
||||
align-items: flex-end
|
||||
display: flex
|
||||
font-size: $panel-tabs-font-size
|
||||
justify-content: center
|
||||
a
|
||||
border-bottom: $panel-tab-border-bottom
|
||||
margin-bottom: -1px
|
||||
padding: 0.5em
|
||||
// Modifiers
|
||||
&.is-active
|
||||
border-bottom-color: $panel-tab-active-border-bottom-color
|
||||
color: $panel-tab-active-color
|
||||
|
||||
.panel-list
|
||||
a
|
||||
color: $panel-list-item-color
|
||||
&:hover
|
||||
color: $panel-list-item-hover-color
|
||||
|
||||
.panel-block
|
||||
align-items: center
|
||||
color: $panel-block-color
|
||||
display: flex
|
||||
justify-content: flex-start
|
||||
padding: 0.5em 0.75em
|
||||
input[type="checkbox"]
|
||||
+ltr-property("margin", 0.75em)
|
||||
& > .control
|
||||
flex-grow: 1
|
||||
flex-shrink: 1
|
||||
width: 100%
|
||||
&.is-wrapped
|
||||
flex-wrap: wrap
|
||||
&.is-active
|
||||
border-left-color: $panel-block-active-border-left-color
|
||||
color: $panel-block-active-color
|
||||
.panel-icon
|
||||
color: $panel-block-active-icon-color
|
||||
&:last-child
|
||||
border-bottom-left-radius: $panel-radius
|
||||
border-bottom-right-radius: $panel-radius
|
||||
|
||||
a.panel-block,
|
||||
label.panel-block
|
||||
cursor: pointer
|
||||
&:hover
|
||||
background-color: $panel-block-hover-background-color
|
||||
|
||||
.panel-icon
|
||||
+fa(14px, 1em)
|
||||
color: $panel-icon-color
|
||||
+ltr-property("margin", 0.75em)
|
||||
.fa
|
||||
font-size: inherit
|
||||
line-height: inherit
|
|
@ -0,0 +1,176 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$tabs-border-bottom-color: $border !default
|
||||
$tabs-border-bottom-style: solid !default
|
||||
$tabs-border-bottom-width: 1px !default
|
||||
$tabs-link-color: $text !default
|
||||
$tabs-link-hover-border-bottom-color: $text-strong !default
|
||||
$tabs-link-hover-color: $text-strong !default
|
||||
$tabs-link-active-border-bottom-color: $link !default
|
||||
$tabs-link-active-color: $link !default
|
||||
$tabs-link-padding: 0.5em 1em !default
|
||||
|
||||
$tabs-boxed-link-radius: $radius !default
|
||||
$tabs-boxed-link-hover-background-color: $background !default
|
||||
$tabs-boxed-link-hover-border-bottom-color: $border !default
|
||||
|
||||
$tabs-boxed-link-active-background-color: $scheme-main !default
|
||||
$tabs-boxed-link-active-border-color: $border !default
|
||||
$tabs-boxed-link-active-border-bottom-color: transparent !default
|
||||
|
||||
$tabs-toggle-link-border-color: $border !default
|
||||
$tabs-toggle-link-border-style: solid !default
|
||||
$tabs-toggle-link-border-width: 1px !default
|
||||
$tabs-toggle-link-hover-background-color: $background !default
|
||||
$tabs-toggle-link-hover-border-color: $border-hover !default
|
||||
$tabs-toggle-link-radius: $radius !default
|
||||
$tabs-toggle-link-active-background-color: $link !default
|
||||
$tabs-toggle-link-active-border-color: $link !default
|
||||
$tabs-toggle-link-active-color: $link-invert !default
|
||||
|
||||
.tabs
|
||||
@extend %block
|
||||
+overflow-touch
|
||||
@extend %unselectable
|
||||
align-items: stretch
|
||||
display: flex
|
||||
font-size: $size-normal
|
||||
justify-content: space-between
|
||||
overflow: hidden
|
||||
overflow-x: auto
|
||||
white-space: nowrap
|
||||
a
|
||||
align-items: center
|
||||
border-bottom-color: $tabs-border-bottom-color
|
||||
border-bottom-style: $tabs-border-bottom-style
|
||||
border-bottom-width: $tabs-border-bottom-width
|
||||
color: $tabs-link-color
|
||||
display: flex
|
||||
justify-content: center
|
||||
margin-bottom: -#{$tabs-border-bottom-width}
|
||||
padding: $tabs-link-padding
|
||||
vertical-align: top
|
||||
&:hover
|
||||
border-bottom-color: $tabs-link-hover-border-bottom-color
|
||||
color: $tabs-link-hover-color
|
||||
li
|
||||
display: block
|
||||
&.is-active
|
||||
a
|
||||
border-bottom-color: $tabs-link-active-border-bottom-color
|
||||
color: $tabs-link-active-color
|
||||
ul
|
||||
align-items: center
|
||||
border-bottom-color: $tabs-border-bottom-color
|
||||
border-bottom-style: $tabs-border-bottom-style
|
||||
border-bottom-width: $tabs-border-bottom-width
|
||||
display: flex
|
||||
flex-grow: 1
|
||||
flex-shrink: 0
|
||||
justify-content: flex-start
|
||||
&.is-left
|
||||
padding-right: 0.75em
|
||||
&.is-center
|
||||
flex: none
|
||||
justify-content: center
|
||||
padding-left: 0.75em
|
||||
padding-right: 0.75em
|
||||
&.is-right
|
||||
justify-content: flex-end
|
||||
padding-left: 0.75em
|
||||
.icon
|
||||
&:first-child
|
||||
+ltr-property("margin", 0.5em)
|
||||
&:last-child
|
||||
+ltr-property("margin", 0.5em, false)
|
||||
// Alignment
|
||||
&.is-centered
|
||||
ul
|
||||
justify-content: center
|
||||
&.is-right
|
||||
ul
|
||||
justify-content: flex-end
|
||||
// Styles
|
||||
&.is-boxed
|
||||
a
|
||||
border: 1px solid transparent
|
||||
+ltr
|
||||
border-radius: $tabs-boxed-link-radius $tabs-boxed-link-radius 0 0
|
||||
+rtl
|
||||
border-radius: 0 0 $tabs-boxed-link-radius $tabs-boxed-link-radius
|
||||
&:hover
|
||||
background-color: $tabs-boxed-link-hover-background-color
|
||||
border-bottom-color: $tabs-boxed-link-hover-border-bottom-color
|
||||
li
|
||||
&.is-active
|
||||
a
|
||||
background-color: $tabs-boxed-link-active-background-color
|
||||
border-color: $tabs-boxed-link-active-border-color
|
||||
border-bottom-color: $tabs-boxed-link-active-border-bottom-color !important
|
||||
&.is-fullwidth
|
||||
li
|
||||
flex-grow: 1
|
||||
flex-shrink: 0
|
||||
&.is-toggle
|
||||
a
|
||||
border-color: $tabs-toggle-link-border-color
|
||||
border-style: $tabs-toggle-link-border-style
|
||||
border-width: $tabs-toggle-link-border-width
|
||||
margin-bottom: 0
|
||||
position: relative
|
||||
&:hover
|
||||
background-color: $tabs-toggle-link-hover-background-color
|
||||
border-color: $tabs-toggle-link-hover-border-color
|
||||
z-index: 2
|
||||
li
|
||||
& + li
|
||||
+ltr-property("margin", -#{$tabs-toggle-link-border-width}, false)
|
||||
&:first-child a
|
||||
+ltr
|
||||
border-top-left-radius: $tabs-toggle-link-radius
|
||||
border-bottom-left-radius: $tabs-toggle-link-radius
|
||||
+rtl
|
||||
border-top-right-radius: $tabs-toggle-link-radius
|
||||
border-bottom-right-radius: $tabs-toggle-link-radius
|
||||
&:last-child a
|
||||
+ltr
|
||||
border-top-right-radius: $tabs-toggle-link-radius
|
||||
border-bottom-right-radius: $tabs-toggle-link-radius
|
||||
+rtl
|
||||
border-top-left-radius: $tabs-toggle-link-radius
|
||||
border-bottom-left-radius: $tabs-toggle-link-radius
|
||||
&.is-active
|
||||
a
|
||||
background-color: $tabs-toggle-link-active-background-color
|
||||
border-color: $tabs-toggle-link-active-border-color
|
||||
color: $tabs-toggle-link-active-color
|
||||
z-index: 1
|
||||
ul
|
||||
border-bottom: none
|
||||
&.is-toggle-rounded
|
||||
li
|
||||
&:first-child a
|
||||
+ltr
|
||||
border-bottom-left-radius: $radius-rounded
|
||||
border-top-left-radius: $radius-rounded
|
||||
padding-left: 1.25em
|
||||
+rtl
|
||||
border-bottom-right-radius: $radius-rounded
|
||||
border-top-right-radius: $radius-rounded
|
||||
padding-right: 1.25em
|
||||
&:last-child a
|
||||
+ltr
|
||||
border-bottom-right-radius: $radius-rounded
|
||||
border-top-right-radius: $radius-rounded
|
||||
padding-right: 1.25em
|
||||
+rtl
|
||||
border-bottom-left-radius: $radius-rounded
|
||||
border-top-left-radius: $radius-rounded
|
||||
padding-left: 1.25em
|
||||
// Sizes
|
||||
&.is-small
|
||||
font-size: $size-small
|
||||
&.is-medium
|
||||
font-size: $size-medium
|
||||
&.is-large
|
||||
font-size: $size-large
|
|
@ -0,0 +1,16 @@
|
|||
/* Bulma Elements */
|
||||
@charset "utf-8"
|
||||
|
||||
@import "box"
|
||||
@import "button"
|
||||
@import "container"
|
||||
@import "content"
|
||||
@import "icon"
|
||||
@import "image"
|
||||
@import "notification"
|
||||
@import "progress"
|
||||
@import "table"
|
||||
@import "tag"
|
||||
@import "title"
|
||||
|
||||
@import "other"
|
|
@ -0,0 +1,26 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$box-color: $text !default
|
||||
$box-background-color: $scheme-main !default
|
||||
$box-radius: $radius-large !default
|
||||
$box-shadow: $shadow !default
|
||||
$box-padding: 1.25rem !default
|
||||
|
||||
$box-link-hover-shadow: 0 0.5em 1em -0.125em rgba($scheme-invert, 0.1), 0 0 0 1px $link !default
|
||||
$box-link-active-shadow: inset 0 1px 2px rgba($scheme-invert, 0.2), 0 0 0 1px $link !default
|
||||
|
||||
.box
|
||||
@extend %block
|
||||
background-color: $box-background-color
|
||||
border-radius: $box-radius
|
||||
box-shadow: $box-shadow
|
||||
color: $box-color
|
||||
display: block
|
||||
padding: $box-padding
|
||||
|
||||
a.box
|
||||
&:hover,
|
||||
&:focus
|
||||
box-shadow: $box-link-hover-shadow
|
||||
&:active
|
||||
box-shadow: $box-link-active-shadow
|
|
@ -0,0 +1,345 @@
|
|||
@import "../utilities/controls"
|
||||
@import "../utilities/mixins"
|
||||
|
||||
$button-color: $text-strong !default
|
||||
$button-background-color: $scheme-main !default
|
||||
$button-family: false !default
|
||||
|
||||
$button-border-color: $border !default
|
||||
$button-border-width: $control-border-width !default
|
||||
|
||||
$button-padding-vertical: calc(0.5em - #{$button-border-width}) !default
|
||||
$button-padding-horizontal: 1em !default
|
||||
|
||||
$button-hover-color: $link-hover !default
|
||||
$button-hover-border-color: $link-hover-border !default
|
||||
|
||||
$button-focus-color: $link-focus !default
|
||||
$button-focus-border-color: $link-focus-border !default
|
||||
$button-focus-box-shadow-size: 0 0 0 0.125em !default
|
||||
$button-focus-box-shadow-color: bulmaRgba($link, 0.25) !default
|
||||
|
||||
$button-active-color: $link-active !default
|
||||
$button-active-border-color: $link-active-border !default
|
||||
|
||||
$button-text-color: $text !default
|
||||
$button-text-decoration: underline !default
|
||||
$button-text-hover-background-color: $background !default
|
||||
$button-text-hover-color: $text-strong !default
|
||||
|
||||
$button-ghost-background: none !default
|
||||
$button-ghost-border-color: transparent !default
|
||||
$button-ghost-color: $link !default
|
||||
$button-ghost-decoration: none !default
|
||||
$button-ghost-hover-color: $link !default
|
||||
$button-ghost-hover-decoration: underline !default
|
||||
|
||||
$button-disabled-background-color: $scheme-main !default
|
||||
$button-disabled-border-color: $border !default
|
||||
$button-disabled-shadow: none !default
|
||||
$button-disabled-opacity: 0.5 !default
|
||||
|
||||
$button-static-color: $text-light !default
|
||||
$button-static-background-color: $scheme-main-ter !default
|
||||
$button-static-border-color: $border !default
|
||||
|
||||
$button-colors: $colors !default
|
||||
|
||||
// The button sizes use mixins so they can be used at different breakpoints
|
||||
=button-small
|
||||
&:not(.is-rounded)
|
||||
border-radius: $radius-small
|
||||
font-size: $size-small
|
||||
=button-normal
|
||||
font-size: $size-normal
|
||||
=button-medium
|
||||
font-size: $size-medium
|
||||
=button-large
|
||||
font-size: $size-large
|
||||
|
||||
.button
|
||||
@extend %control
|
||||
@extend %unselectable
|
||||
background-color: $button-background-color
|
||||
border-color: $button-border-color
|
||||
border-width: $button-border-width
|
||||
color: $button-color
|
||||
cursor: pointer
|
||||
@if $button-family
|
||||
font-family: $button-family
|
||||
justify-content: center
|
||||
padding-bottom: $button-padding-vertical
|
||||
padding-left: $button-padding-horizontal
|
||||
padding-right: $button-padding-horizontal
|
||||
padding-top: $button-padding-vertical
|
||||
text-align: center
|
||||
white-space: nowrap
|
||||
strong
|
||||
color: inherit
|
||||
.icon
|
||||
&,
|
||||
&.is-small,
|
||||
&.is-medium,
|
||||
&.is-large
|
||||
height: 1.5em
|
||||
width: 1.5em
|
||||
&:first-child:not(:last-child)
|
||||
+ltr-property("margin", calc(#{-0.5 * $button-padding-horizontal} - #{$button-border-width}), false)
|
||||
+ltr-property("margin", $button-padding-horizontal * 0.25)
|
||||
&:last-child:not(:first-child)
|
||||
+ltr-property("margin", $button-padding-horizontal * 0.25, false)
|
||||
+ltr-property("margin", calc(#{-0.5 * $button-padding-horizontal} - #{$button-border-width}))
|
||||
&:first-child:last-child
|
||||
margin-left: calc(#{-0.5 * $button-padding-horizontal} - #{$button-border-width})
|
||||
margin-right: calc(#{-0.5 * $button-padding-horizontal} - #{$button-border-width})
|
||||
// States
|
||||
&:hover,
|
||||
&.is-hovered
|
||||
border-color: $button-hover-border-color
|
||||
color: $button-hover-color
|
||||
&:focus,
|
||||
&.is-focused
|
||||
border-color: $button-focus-border-color
|
||||
color: $button-focus-color
|
||||
&:not(:active)
|
||||
box-shadow: $button-focus-box-shadow-size $button-focus-box-shadow-color
|
||||
&:active,
|
||||
&.is-active
|
||||
border-color: $button-active-border-color
|
||||
color: $button-active-color
|
||||
// Colors
|
||||
&.is-text
|
||||
background-color: transparent
|
||||
border-color: transparent
|
||||
color: $button-text-color
|
||||
text-decoration: $button-text-decoration
|
||||
&:hover,
|
||||
&.is-hovered,
|
||||
&:focus,
|
||||
&.is-focused
|
||||
background-color: $button-text-hover-background-color
|
||||
color: $button-text-hover-color
|
||||
&:active,
|
||||
&.is-active
|
||||
background-color: bulmaDarken($button-text-hover-background-color, 5%)
|
||||
color: $button-text-hover-color
|
||||
&[disabled],
|
||||
fieldset[disabled] &
|
||||
background-color: transparent
|
||||
border-color: transparent
|
||||
box-shadow: none
|
||||
&.is-ghost
|
||||
background: $button-ghost-background
|
||||
border-color: $button-ghost-border-color
|
||||
color: $button-ghost-color
|
||||
text-decoration: $button-ghost-decoration
|
||||
&:hover,
|
||||
&.is-hovered
|
||||
color: $button-ghost-hover-color
|
||||
text-decoration: $button-ghost-hover-decoration
|
||||
@each $name, $pair in $button-colors
|
||||
$color: nth($pair, 1)
|
||||
$color-invert: nth($pair, 2)
|
||||
&.is-#{$name}
|
||||
background-color: $color
|
||||
border-color: transparent
|
||||
color: $color-invert
|
||||
&:hover,
|
||||
&.is-hovered
|
||||
background-color: bulmaDarken($color, 2.5%)
|
||||
border-color: transparent
|
||||
color: $color-invert
|
||||
&:focus,
|
||||
&.is-focused
|
||||
border-color: transparent
|
||||
color: $color-invert
|
||||
&:not(:active)
|
||||
box-shadow: $button-focus-box-shadow-size bulmaRgba($color, 0.25)
|
||||
&:active,
|
||||
&.is-active
|
||||
background-color: bulmaDarken($color, 5%)
|
||||
border-color: transparent
|
||||
color: $color-invert
|
||||
&[disabled],
|
||||
fieldset[disabled] &
|
||||
background-color: $color
|
||||
border-color: transparent
|
||||
box-shadow: none
|
||||
&.is-inverted
|
||||
background-color: $color-invert
|
||||
color: $color
|
||||
&:hover,
|
||||
&.is-hovered
|
||||
background-color: bulmaDarken($color-invert, 5%)
|
||||
&[disabled],
|
||||
fieldset[disabled] &
|
||||
background-color: $color-invert
|
||||
border-color: transparent
|
||||
box-shadow: none
|
||||
color: $color
|
||||
&.is-loading
|
||||
&::after
|
||||
border-color: transparent transparent $color-invert $color-invert !important
|
||||
&.is-outlined
|
||||
background-color: transparent
|
||||
border-color: $color
|
||||
color: $color
|
||||
&:hover,
|
||||
&.is-hovered,
|
||||
&:focus,
|
||||
&.is-focused
|
||||
background-color: $color
|
||||
border-color: $color
|
||||
color: $color-invert
|
||||
&.is-loading
|
||||
&::after
|
||||
border-color: transparent transparent $color $color !important
|
||||
&:hover,
|
||||
&.is-hovered,
|
||||
&:focus,
|
||||
&.is-focused
|
||||
&::after
|
||||
border-color: transparent transparent $color-invert $color-invert !important
|
||||
&[disabled],
|
||||
fieldset[disabled] &
|
||||
background-color: transparent
|
||||
border-color: $color
|
||||
box-shadow: none
|
||||
color: $color
|
||||
&.is-inverted.is-outlined
|
||||
background-color: transparent
|
||||
border-color: $color-invert
|
||||
color: $color-invert
|
||||
&:hover,
|
||||
&.is-hovered,
|
||||
&:focus,
|
||||
&.is-focused
|
||||
background-color: $color-invert
|
||||
color: $color
|
||||
&.is-loading
|
||||
&:hover,
|
||||
&.is-hovered,
|
||||
&:focus,
|
||||
&.is-focused
|
||||
&::after
|
||||
border-color: transparent transparent $color $color !important
|
||||
&[disabled],
|
||||
fieldset[disabled] &
|
||||
background-color: transparent
|
||||
border-color: $color-invert
|
||||
box-shadow: none
|
||||
color: $color-invert
|
||||
// If light and dark colors are provided
|
||||
@if length($pair) >= 4
|
||||
$color-light: nth($pair, 3)
|
||||
$color-dark: nth($pair, 4)
|
||||
&.is-light
|
||||
background-color: $color-light
|
||||
color: $color-dark
|
||||
&:hover,
|
||||
&.is-hovered
|
||||
background-color: bulmaDarken($color-light, 2.5%)
|
||||
border-color: transparent
|
||||
color: $color-dark
|
||||
&:active,
|
||||
&.is-active
|
||||
background-color: bulmaDarken($color-light, 5%)
|
||||
border-color: transparent
|
||||
color: $color-dark
|
||||
// Sizes
|
||||
&.is-small
|
||||
+button-small
|
||||
&.is-normal
|
||||
+button-normal
|
||||
&.is-medium
|
||||
+button-medium
|
||||
&.is-large
|
||||
+button-large
|
||||
// Modifiers
|
||||
&[disabled],
|
||||
fieldset[disabled] &
|
||||
background-color: $button-disabled-background-color
|
||||
border-color: $button-disabled-border-color
|
||||
box-shadow: $button-disabled-shadow
|
||||
opacity: $button-disabled-opacity
|
||||
&.is-fullwidth
|
||||
display: flex
|
||||
width: 100%
|
||||
&.is-loading
|
||||
color: transparent !important
|
||||
pointer-events: none
|
||||
&::after
|
||||
@extend %loader
|
||||
+center(1em)
|
||||
position: absolute !important
|
||||
&.is-static
|
||||
background-color: $button-static-background-color
|
||||
border-color: $button-static-border-color
|
||||
color: $button-static-color
|
||||
box-shadow: none
|
||||
pointer-events: none
|
||||
&.is-rounded
|
||||
border-radius: $radius-rounded
|
||||
padding-left: calc(#{$button-padding-horizontal} + 0.25em)
|
||||
padding-right: calc(#{$button-padding-horizontal} + 0.25em)
|
||||
|
||||
.buttons
|
||||
align-items: center
|
||||
display: flex
|
||||
flex-wrap: wrap
|
||||
justify-content: flex-start
|
||||
.button
|
||||
margin-bottom: 0.5rem
|
||||
&:not(:last-child):not(.is-fullwidth)
|
||||
+ltr-property("margin", 0.5rem)
|
||||
&:last-child
|
||||
margin-bottom: -0.5rem
|
||||
&:not(:last-child)
|
||||
margin-bottom: 1rem
|
||||
// Sizes
|
||||
&.are-small
|
||||
.button:not(.is-normal):not(.is-medium):not(.is-large)
|
||||
+button-small
|
||||
&.are-medium
|
||||
.button:not(.is-small):not(.is-normal):not(.is-large)
|
||||
+button-medium
|
||||
&.are-large
|
||||
.button:not(.is-small):not(.is-normal):not(.is-medium)
|
||||
+button-large
|
||||
&.has-addons
|
||||
.button
|
||||
&:not(:first-child)
|
||||
border-bottom-left-radius: 0
|
||||
border-top-left-radius: 0
|
||||
&:not(:last-child)
|
||||
border-bottom-right-radius: 0
|
||||
border-top-right-radius: 0
|
||||
+ltr-property("margin", -1px)
|
||||
&:last-child
|
||||
+ltr-property("margin", 0)
|
||||
&:hover,
|
||||
&.is-hovered
|
||||
z-index: 2
|
||||
&:focus,
|
||||
&.is-focused,
|
||||
&:active,
|
||||
&.is-active,
|
||||
&.is-selected
|
||||
z-index: 3
|
||||
&:hover
|
||||
z-index: 4
|
||||
&.is-expanded
|
||||
flex-grow: 1
|
||||
flex-shrink: 1
|
||||
&.is-centered
|
||||
justify-content: center
|
||||
&:not(.has-addons)
|
||||
.button:not(.is-fullwidth)
|
||||
margin-left: 0.25rem
|
||||
margin-right: 0.25rem
|
||||
&.is-right
|
||||
justify-content: flex-end
|
||||
&:not(.has-addons)
|
||||
.button:not(.is-fullwidth)
|
||||
margin-left: 0.25rem
|
||||
margin-right: 0.25rem
|
|
@ -0,0 +1,29 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$container-offset: (2 * $gap) !default
|
||||
$container-max-width: $fullhd !default
|
||||
|
||||
.container
|
||||
flex-grow: 1
|
||||
margin: 0 auto
|
||||
position: relative
|
||||
width: auto
|
||||
&.is-fluid
|
||||
max-width: none !important
|
||||
padding-left: $gap
|
||||
padding-right: $gap
|
||||
width: 100%
|
||||
+desktop
|
||||
max-width: $desktop - $container-offset
|
||||
+until-widescreen
|
||||
&.is-widescreen:not(.is-max-desktop)
|
||||
max-width: min($widescreen, $container-max-width) - $container-offset
|
||||
+until-fullhd
|
||||
&.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen)
|
||||
max-width: min($fullhd, $container-max-width) - $container-offset
|
||||
+widescreen
|
||||
&:not(.is-max-desktop)
|
||||
max-width: min($widescreen, $container-max-width) - $container-offset
|
||||
+fullhd
|
||||
&:not(.is-max-desktop):not(.is-max-widescreen)
|
||||
max-width: min($fullhd, $container-max-width) - $container-offset
|
|
@ -0,0 +1,159 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$content-heading-color: $text-strong !default
|
||||
$content-heading-weight: $weight-semibold !default
|
||||
$content-heading-line-height: 1.125 !default
|
||||
|
||||
$content-blockquote-background-color: $background !default
|
||||
$content-blockquote-border-left: 5px solid $border !default
|
||||
$content-blockquote-padding: 1.25em 1.5em !default
|
||||
|
||||
$content-pre-padding: 1.25em 1.5em !default
|
||||
|
||||
$content-table-cell-border: 1px solid $border !default
|
||||
$content-table-cell-border-width: 0 0 1px !default
|
||||
$content-table-cell-padding: 0.5em 0.75em !default
|
||||
$content-table-cell-heading-color: $text-strong !default
|
||||
$content-table-head-cell-border-width: 0 0 2px !default
|
||||
$content-table-head-cell-color: $text-strong !default
|
||||
$content-table-foot-cell-border-width: 2px 0 0 !default
|
||||
$content-table-foot-cell-color: $text-strong !default
|
||||
|
||||
.content
|
||||
@extend %block
|
||||
// Inline
|
||||
li + li
|
||||
margin-top: 0.25em
|
||||
// Block
|
||||
p,
|
||||
dl,
|
||||
ol,
|
||||
ul,
|
||||
blockquote,
|
||||
pre,
|
||||
table
|
||||
&:not(:last-child)
|
||||
margin-bottom: 1em
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6
|
||||
color: $content-heading-color
|
||||
font-weight: $content-heading-weight
|
||||
line-height: $content-heading-line-height
|
||||
h1
|
||||
font-size: 2em
|
||||
margin-bottom: 0.5em
|
||||
&:not(:first-child)
|
||||
margin-top: 1em
|
||||
h2
|
||||
font-size: 1.75em
|
||||
margin-bottom: 0.5714em
|
||||
&:not(:first-child)
|
||||
margin-top: 1.1428em
|
||||
h3
|
||||
font-size: 1.5em
|
||||
margin-bottom: 0.6666em
|
||||
&:not(:first-child)
|
||||
margin-top: 1.3333em
|
||||
h4
|
||||
font-size: 1.25em
|
||||
margin-bottom: 0.8em
|
||||
h5
|
||||
font-size: 1.125em
|
||||
margin-bottom: 0.8888em
|
||||
h6
|
||||
font-size: 1em
|
||||
margin-bottom: 1em
|
||||
blockquote
|
||||
background-color: $content-blockquote-background-color
|
||||
+ltr-property("border", $content-blockquote-border-left, false)
|
||||
padding: $content-blockquote-padding
|
||||
ol
|
||||
list-style-position: outside
|
||||
+ltr-property("margin", 2em, false)
|
||||
margin-top: 1em
|
||||
&:not([type])
|
||||
list-style-type: decimal
|
||||
&.is-lower-alpha
|
||||
list-style-type: lower-alpha
|
||||
&.is-lower-roman
|
||||
list-style-type: lower-roman
|
||||
&.is-upper-alpha
|
||||
list-style-type: upper-alpha
|
||||
&.is-upper-roman
|
||||
list-style-type: upper-roman
|
||||
ul
|
||||
list-style: disc outside
|
||||
+ltr-property("margin", 2em, false)
|
||||
margin-top: 1em
|
||||
ul
|
||||
list-style-type: circle
|
||||
margin-top: 0.5em
|
||||
ul
|
||||
list-style-type: square
|
||||
dd
|
||||
+ltr-property("margin", 2em, false)
|
||||
figure
|
||||
margin-left: 2em
|
||||
margin-right: 2em
|
||||
text-align: center
|
||||
&:not(:first-child)
|
||||
margin-top: 2em
|
||||
&:not(:last-child)
|
||||
margin-bottom: 2em
|
||||
img
|
||||
display: inline-block
|
||||
figcaption
|
||||
font-style: italic
|
||||
pre
|
||||
+overflow-touch
|
||||
overflow-x: auto
|
||||
padding: $content-pre-padding
|
||||
white-space: pre
|
||||
word-wrap: normal
|
||||
sup,
|
||||
sub
|
||||
font-size: 75%
|
||||
table
|
||||
width: 100%
|
||||
td,
|
||||
th
|
||||
border: $content-table-cell-border
|
||||
border-width: $content-table-cell-border-width
|
||||
padding: $content-table-cell-padding
|
||||
vertical-align: top
|
||||
th
|
||||
color: $content-table-cell-heading-color
|
||||
&:not([align])
|
||||
text-align: inherit
|
||||
thead
|
||||
td,
|
||||
th
|
||||
border-width: $content-table-head-cell-border-width
|
||||
color: $content-table-head-cell-color
|
||||
tfoot
|
||||
td,
|
||||
th
|
||||
border-width: $content-table-foot-cell-border-width
|
||||
color: $content-table-foot-cell-color
|
||||
tbody
|
||||
tr
|
||||
&:last-child
|
||||
td,
|
||||
th
|
||||
border-bottom-width: 0
|
||||
.tabs
|
||||
li + li
|
||||
margin-top: 0
|
||||
// Sizes
|
||||
&.is-small
|
||||
font-size: $size-small
|
||||
&.is-normal
|
||||
font-size: $size-normal
|
||||
&.is-medium
|
||||
font-size: $size-medium
|
||||
&.is-large
|
||||
font-size: $size-large
|
|
@ -0,0 +1 @@
|
|||
@warn "The form.sass file is DEPRECATED. It has moved into its own /form folder. Please import sass/form/_all instead."
|
|
@ -0,0 +1,46 @@
|
|||
$icon-dimensions: 1.5rem !default
|
||||
$icon-dimensions-small: 1rem !default
|
||||
$icon-dimensions-medium: 2rem !default
|
||||
$icon-dimensions-large: 3rem !default
|
||||
$icon-text-spacing: 0.25em !default
|
||||
|
||||
.icon
|
||||
align-items: center
|
||||
display: inline-flex
|
||||
justify-content: center
|
||||
height: $icon-dimensions
|
||||
width: $icon-dimensions
|
||||
// Sizes
|
||||
&.is-small
|
||||
height: $icon-dimensions-small
|
||||
width: $icon-dimensions-small
|
||||
&.is-medium
|
||||
height: $icon-dimensions-medium
|
||||
width: $icon-dimensions-medium
|
||||
&.is-large
|
||||
height: $icon-dimensions-large
|
||||
width: $icon-dimensions-large
|
||||
|
||||
.icon-text
|
||||
align-items: flex-start
|
||||
color: inherit
|
||||
display: inline-flex
|
||||
flex-wrap: wrap
|
||||
line-height: $icon-dimensions
|
||||
vertical-align: top
|
||||
.icon
|
||||
flex-grow: 0
|
||||
flex-shrink: 0
|
||||
&:not(:last-child)
|
||||
+ltr
|
||||
margin-right: $icon-text-spacing
|
||||
+rtl
|
||||
margin-left: $icon-text-spacing
|
||||
&:not(:first-child)
|
||||
+ltr
|
||||
margin-left: $icon-text-spacing
|
||||
+rtl
|
||||
margin-right: $icon-text-spacing
|
||||
|
||||
div.icon-text
|
||||
display: flex
|
|
@ -0,0 +1,73 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$dimensions: 16 24 32 48 64 96 128 !default
|
||||
|
||||
.image
|
||||
display: block
|
||||
position: relative
|
||||
img
|
||||
display: block
|
||||
height: auto
|
||||
width: 100%
|
||||
&.is-rounded
|
||||
border-radius: $radius-rounded
|
||||
&.is-fullwidth
|
||||
width: 100%
|
||||
// Ratio
|
||||
&.is-square,
|
||||
&.is-1by1,
|
||||
&.is-5by4,
|
||||
&.is-4by3,
|
||||
&.is-3by2,
|
||||
&.is-5by3,
|
||||
&.is-16by9,
|
||||
&.is-2by1,
|
||||
&.is-3by1,
|
||||
&.is-4by5,
|
||||
&.is-3by4,
|
||||
&.is-2by3,
|
||||
&.is-3by5,
|
||||
&.is-9by16,
|
||||
&.is-1by2,
|
||||
&.is-1by3
|
||||
img,
|
||||
.has-ratio
|
||||
@extend %overlay
|
||||
height: 100%
|
||||
width: 100%
|
||||
&.is-square,
|
||||
&.is-1by1
|
||||
padding-top: 100%
|
||||
&.is-5by4
|
||||
padding-top: 80%
|
||||
&.is-4by3
|
||||
padding-top: 75%
|
||||
&.is-3by2
|
||||
padding-top: 66.6666%
|
||||
&.is-5by3
|
||||
padding-top: 60%
|
||||
&.is-16by9
|
||||
padding-top: 56.25%
|
||||
&.is-2by1
|
||||
padding-top: 50%
|
||||
&.is-3by1
|
||||
padding-top: 33.3333%
|
||||
&.is-4by5
|
||||
padding-top: 125%
|
||||
&.is-3by4
|
||||
padding-top: 133.3333%
|
||||
&.is-2by3
|
||||
padding-top: 150%
|
||||
&.is-3by5
|
||||
padding-top: 166.6666%
|
||||
&.is-9by16
|
||||
padding-top: 177.7777%
|
||||
&.is-1by2
|
||||
padding-top: 200%
|
||||
&.is-1by3
|
||||
padding-top: 300%
|
||||
// Sizes
|
||||
@each $dimension in $dimensions
|
||||
&.is-#{$dimension}x#{$dimension}
|
||||
height: $dimension * 1px
|
||||
width: $dimension * 1px
|
52
themes/mnemosyne/node_modules/bulma/sass/elements/notification.sass
generated
vendored
Normal file
52
themes/mnemosyne/node_modules/bulma/sass/elements/notification.sass
generated
vendored
Normal file
|
@ -0,0 +1,52 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
$notification-background-color: $background !default
|
||||
$notification-code-background-color: $scheme-main !default
|
||||
$notification-radius: $radius !default
|
||||
$notification-padding: 1.25rem 2.5rem 1.25rem 1.5rem !default
|
||||
$notification-padding-ltr: 1.25rem 2.5rem 1.25rem 1.5rem !default
|
||||
$notification-padding-rtl: 1.25rem 1.5rem 1.25rem 2.5rem !default
|
||||
|
||||
$notification-colors: $colors !default
|
||||
|
||||
.notification
|
||||
@extend %block
|
||||
background-color: $notification-background-color
|
||||
border-radius: $notification-radius
|
||||
position: relative
|
||||
+ltr
|
||||
padding: $notification-padding-ltr
|
||||
+rtl
|
||||
padding: $notification-padding-rtl
|
||||
a:not(.button):not(.dropdown-item)
|
||||
color: currentColor
|
||||
text-decoration: underline
|
||||
strong
|
||||
color: currentColor
|
||||
code,
|
||||
pre
|
||||
background: $notification-code-background-color
|
||||
pre code
|
||||
background: transparent
|
||||
& > .delete
|
||||
+ltr-position(0.5rem)
|
||||
position: absolute
|
||||
top: 0.5rem
|
||||
.title,
|
||||
.subtitle,
|
||||
.content
|
||||
color: currentColor
|
||||
// Colors
|
||||
@each $name, $pair in $notification-colors
|
||||
$color: nth($pair, 1)
|
||||
$color-invert: nth($pair, 2)
|
||||
&.is-#{$name}
|
||||
background-color: $color
|
||||
color: $color-invert
|
||||
// If light and dark colors are provided
|
||||
@if length($pair) >= 4
|
||||
$color-light: nth($pair, 3)
|
||||
$color-dark: nth($pair, 4)
|
||||
&.is-light
|
||||
background-color: $color-light
|
||||
color: $color-dark
|
|
@ -0,0 +1,31 @@
|
|||
@import "../utilities/mixins"
|
||||
|
||||
.block
|
||||
@extend %block
|
||||
|
||||
.delete
|
||||
@extend %delete
|
||||
|
||||
.heading
|
||||
display: block
|
||||
font-size: 11px
|
||||
letter-spacing: 1px
|
||||
margin-bottom: 5px
|
||||
text-transform: uppercase
|
||||
|
||||
.loader
|
||||
@extend %loader
|
||||
|
||||
.number
|
||||
align-items: center
|
||||
background-color: $background
|
||||
border-radius: $radius-rounded
|
||||
display: inline-flex
|
||||
font-size: $size-medium
|
||||
height: 2em
|
||||
justify-content: center
|
||||
margin-right: 1.5rem
|
||||
min-width: 2.5em
|
||||
padding: 0.25rem 0.5rem
|
||||
text-align: center
|
||||
vertical-align: top
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue