From 37b75817667fb214a97e890ad8fdbb28dc9a2dda Mon Sep 17 00:00:00 2001 From: Isabella Brookes Date: Thu, 27 Jun 2024 00:35:04 +0200 Subject: [PATCH 1/8] chore: introduce npm for prettier and precommit hooks --- .husky/.gitignore | 1 + .husky/pre-commit | 4 + .prettierrc | 3 +- Gemfile | 2 +- README.md | 35 +-- _config.yml | 31 +-- _events/mozfest-house-amsterdam.md | 5 +- _i18n/en.yml | 11 +- _i18n/nl.yml | 12 +- _includes/blog.html | 74 +++---- _includes/event-card.html | 45 ++-- _includes/events.html | 20 +- _includes/head.html | 27 ++- _includes/header.html | 6 +- _includes/links.html | 125 +++++------ _includes/main.js | 249 +++++++++++++--------- _includes/main.scss | 45 ++-- _includes/normalize.css | 14 +- _includes/youtube.html | 8 +- _layouts/blog.html | 44 ++-- _layouts/default.html | 13 +- _layouts/default_without_footer.html | 10 +- _layouts/event.html | 18 +- _layouts/page.html | 5 +- _layouts/translated.html | 25 ++- _sass/_header.scss | 14 +- _sass/elements/_universal-selector.scss | 2 +- _sass/layouts/_nominating-candidates.scss | 9 +- _sass/structures/_event.scss | 2 - _sass/structures/_lists.scss | 1 - _sass/structures/_main.scss | 2 +- _sass/structures/_tables.scss | 21 +- _sass/util/_helper.scss | 2 +- _sass/util/_layout.scss | 12 +- about.md | 3 +- admin/config.yml | 52 +++-- admin/index.html | 33 +-- assets/css/preview-styles.scss | 16 +- blog.md | 1 + change.md | 2 +- events.json | 12 -- events.md | 2 +- events.yml | 12 -- generic-welcome.md | 2 +- index.md | 1 + join.md | 4 +- package-lock.json | 112 ++++++++++ package.json | 23 ++ press_mentions.md | 37 ++-- subscribe-redirect.md | 10 +- themes.md | 7 +- 51 files changed, 730 insertions(+), 496 deletions(-) create mode 100644 .husky/.gitignore create mode 100755 .husky/pre-commit delete mode 100644 events.json delete mode 100644 events.yml create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 0000000..31354ec --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..36af219 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx lint-staged diff --git a/.prettierrc b/.prettierrc index 9e74d98..69bafdc 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,3 +1,4 @@ { - "singleQuote": true, + "plugins": ["@shopify/prettier-plugin-liquid"], + "singleQuote": true } diff --git a/Gemfile b/Gemfile index e502da7..6dab89d 100644 --- a/Gemfile +++ b/Gemfile @@ -34,4 +34,4 @@ end gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] gem "webrick", "~> 1.7" -gem 'jekyll-sass-converter', '~> 2.1.0' \ No newline at end of file +gem 'jekyll-sass-converter', '~> 2.1.0' diff --git a/README.md b/README.md index 2f55483..580e271 100644 --- a/README.md +++ b/README.md @@ -9,16 +9,18 @@ This repository is responsible for most content visible on the website [techwerk We use Docker to have a reproducible development environment. Before proceeding, install [Docker Compose](https://docs.docker.com/compose/install/) on your system. +1. Install prettier and precommit hooks: `npm install` 1. Start the application with the command: `docker-compose up` -2. Access the application in a browser at `localhost:4000` -3. Execute other commands in the Docker container: `docker-compose run --rm --service-ports jekyll bash` +1. Access the application in a browser at `localhost:4000` +1. Execute other commands in the Docker container: `docker-compose run --rm --service-ports jekyll bash` ### Without Docker +1. Install prettier and precommit hooks: `npm install` 1. Install dependencies: `bundle install` -2. Start a local server: `bundle exec jekyll serve` -3. Verify all internal links are valid: `bundle exec rake` -4. (Optional) to reproduce Netlify functions run `npx decap-server`; then you can access `/admin` or other Netlify services +1. Start a local server: `bundle exec jekyll serve` +1. Verify all internal links are valid: `bundle exec rake` +1. (Optional) to reproduce Netlify functions run `npx decap-server`; then you can access `/admin` or other Netlify services Open a browser to localhost:4000 @@ -39,30 +41,33 @@ Inside [`_data/press.yml`](_data/press.yml) file, add a media entry, with date f I18n (internationalization) is made available with the [jekyll-multiple-languages-plugin](https://github.com/kurtsson/jekyll-multiple-languages-plugin/). When a page has a translated version available, a link will show up on the top right if you use the [default_translate](_layouts/default_translate.html) layout. English is the default language, while other languages have their two letter ISO code prefixed, for example [TechWorkersCoalition.org/ru](https://TechWorkersCoalition.org/ru) for Russian. ### Localise date -Normally displaying a date is done using native liquid templates `{{ page.date | date: '%-d %B %Y' }}`, but for localisation, we need to pass it a language which can be done using our custom [_plugins/i18n_filter.rb](_plugins/i18n_filter.rb), and translation keys. We would replace our liquid template with the following: + +Normally displaying a date is done using native liquid templates `{{ page.date | date: '%-d %B %Y' }}`, but for localisation, we need to pass it a language which can be done using our custom [\_plugins/i18n_filter.rb](_plugins/i18n_filter.rb), and translation keys. We would replace our liquid template with the following: `{{ page.date | localize: site.lang, '%-d %B %Y' }}` ### Adding new language + 1. Add new language key to [en.yml](_i18n/en.yml) 2. Add two letter iso code in [config](_config.yml). The order here determines the order shown on the page. English must be first. 3. Inside the [i18n](_i18n) directory create a - - `LANGUAGE.yml` with the language key and value in its own language, for example `es: EspaΓ±ol` -Note, only the default [en.yml](_i18n/en.yml) must contain the names of each language. The other language yaml files contain just their own language key. To include only certain languages, specify the exact language keys you want. For example `languages: ["en", 'ja']` +- `LANGUAGE.yml` with the language key and value in its own language, for example `es: EspaΓ±ol` +Note, only the default [en.yml](_i18n/en.yml) must contain the names of each language. The other language yaml files contain just their own language key. To include only certain languages, specify the exact language keys you want. For example `languages: ["en", 'ja']` ### API feeds Currently [techworkerscoalition.org](https://techworkerscoalition.org) uses Berlin press and events either from GitHub or directly from our exposed APIs e.g [/events.json](https://techwerkers.nl/events.json). You can find other uses cases [here](https://github.com/techworkersco/twc-site/blob/master/_config.yml#L32) - ### Supported Pages -* Landing Page [index.yml](index.md) -* Join Page [join.md](join.md) -* Events [events.md](events.md) -* Press mentions [press_mentions.md](press_mentions.md) + +- Landing Page [index.yml](index.md) +- Join Page [join.md](join.md) +- Events [events.md](events.md) +- Press mentions [press_mentions.md](press_mentions.md) ### Supported Languages -* English -* Nederlands \ No newline at end of file + +- English +- Nederlands diff --git a/_config.yml b/_config.yml index 6fec99c..6ecde7a 100644 --- a/_config.yml +++ b/_config.yml @@ -16,12 +16,9 @@ title: Tech Werkers NL email: contact@techwerkers.nl description: Tech Workers Coalition Netherlands is where tech workers come together to build collective power in our workplaces. -url: "https://techwerkers.nl" -baseurl: "" -timezone: "Europe/Amsterdam" - -sass: - style: compressed +url: 'https://techwerkers.nl' +baseurl: '' +timezone: 'Europe/Amsterdam' # Build settings feed: @@ -52,10 +49,11 @@ social: sass: style: compressed + exclude: - .jekyll-cache/ -languages: ["en", "nl"] -exclude_from_localizations: ["assets", "admin", "vendor"] +languages: ['en', 'nl'] +exclude_from_localizations: ['assets', 'admin', 'vendor'] header_themes: - url: /about text: about @@ -70,19 +68,22 @@ collections: events: output: true permalink: events/:title + pages: + output: true + permalink: /:path defaults: - scope: - path: "" + path: '' values: image: /assets/img/beat_the_boss.jpg - scope: - type: "events" - path: "" + type: 'events' + path: '' values: - layout: "event" + layout: 'event' - scope: - type: "blog" - path: "" + type: 'blog' + path: '' values: - layout: "blog" + layout: 'blog' diff --git a/_events/mozfest-house-amsterdam.md b/_events/mozfest-house-amsterdam.md index d61094b..fd165e3 100644 --- a/_events/mozfest-house-amsterdam.md +++ b/_events/mozfest-house-amsterdam.md @@ -1,9 +1,10 @@ --- -title: "MozFest House: Amsterdam" +title: 'MozFest House: Amsterdam' date: 2024-06-12 09:00 locations: - Online hide_form: false -image: "" +image: '' --- + Find our table stand for some Zines and to meet tech workers! diff --git a/_i18n/en.yml b/_i18n/en.yml index 1df2c83..3e168d1 100644 --- a/_i18n/en.yml +++ b/_i18n/en.yml @@ -22,9 +22,8 @@ home: more: Find more blog posts other_chapters: title: Other chapters - more: | + more: |

Find other chapters of Tech Workers Coalition this overview.

- connect: info: Get involved! @@ -55,10 +54,10 @@ press: en: time: formats: - default: "%A, %d %b %Y %H:%M" + default: '%A, %d %b %Y %H:%M' date: formats: - default: "%-d %B %Y" + default: '%-d %B %Y' order: - :day - :month @@ -84,7 +83,7 @@ en: - Sept - Oct - Nov - - Dec + - Dec day_names: - Sunday - Monday @@ -106,4 +105,4 @@ en: - September - October - November - - December + - December diff --git a/_i18n/nl.yml b/_i18n/nl.yml index 69bb2b2..3494bf9 100644 --- a/_i18n/nl.yml +++ b/_i18n/nl.yml @@ -22,7 +22,7 @@ home: more: Alle blogs other_chapters: title: Andere groepen - more: | + more: |

Ontdek andere groepen binnen de Techwerkerscoalitie in dit overzicht.

connect: @@ -33,7 +33,7 @@ connect: public_link: Sociale media link public_link_placeholder: LinkedIn, Xitter, Mastodon, etc. company: Werkgever - how_did_hear: Wat zou jou helpen je doelen te bereiken? + how_did_hear: Wat zou jou helpen je doelen te bereiken? subscribe: Doe mee global: @@ -53,12 +53,12 @@ press: nl: time: formats: - default: "%A, %-d %B %Y %H:%M" - long: "%-d %B %Y %H:%M" - short: "%d %b %H:%M" + default: '%A, %-d %B %Y %H:%M' + long: '%-d %B %Y %H:%M' + short: '%d %b %H:%M' date: formats: - default: "%-d %B %Y" + default: '%-d %B %Y' order: - :day - :month diff --git a/_includes/blog.html b/_includes/blog.html index 1504056..f060114 100644 --- a/_includes/blog.html +++ b/_includes/blog.html @@ -1,45 +1,47 @@ {% unless page.permalink == "/blog" %} - {% t home.blog.more %} +{% t home.blog.more %} {% endunless %} diff --git a/_includes/event-card.html b/_includes/event-card.html index c2a3987..9e5dca2 100644 --- a/_includes/event-card.html +++ b/_includes/event-card.html @@ -1,36 +1,39 @@
  • - - {{ event.date | date: "%d" }} + + + {{ event.date | date: "%d" }} +
    - - {% if include.limit %} + + {% if include.limit %}

    {{ event.title }}

    - {% else %} + {% else %}

    {{ event.title }}

    - {% endif %} + {% endif %}
    -
  • \ No newline at end of file + diff --git a/_includes/events.html b/_includes/events.html index 024284e..6a3dfdd 100644 --- a/_includes/events.html +++ b/_includes/events.html @@ -1,21 +1,15 @@ {% unless page.permalink == "/events" %} - {% t home.events.more %} +{% t home.events.more %} {% endunless %} diff --git a/_includes/head.html b/_includes/head.html index f699da5..86e2e9d 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -1,9 +1,15 @@ - - - - {% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %} - + + + + + {% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape + }}{% endif %} + + - - - + + + {% seo %} diff --git a/_includes/header.html b/_includes/header.html index 66777a3..b9882e0 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -10,7 +10,11 @@

    {{ site.title }}

    diff --git a/_includes/links.html b/_includes/links.html index 7977975..ab5885c 100644 --- a/_includes/links.html +++ b/_includes/links.html @@ -1,64 +1,69 @@ {% unless page.hide_form %} - {% endunless %} diff --git a/_includes/main.js b/_includes/main.js index 003648d..a0f6aa6 100644 --- a/_includes/main.js +++ b/_includes/main.js @@ -1,117 +1,122 @@ var element = document.getElementById('nav'); var trigger = document.getElementById('navBtn'); -trigger.addEventListener('click', function(e) { - e.preventDefault(); - element.classList.toggle('hide'); +trigger.addEventListener('click', function (e) { + e.preventDefault(); + element.classList.toggle('hide'); }); let exampleEmployeeCount = Math.floor(Math.random() * (1000 - 25 + 1)) + 25; -function onLoad(){ +function onLoad() { if (document.getElementById('candidate_table')) { - let employee_count = localStorage.getItem('election.employee_count') + let employee_count = localStorage.getItem('election.employee_count'); document.getElementById('employee_count').value = employee_count; - document.getElementById('candidate_count').value = localStorage.getItem('election.candidate_count'); - document.getElementById('list_name').value = localStorage.getItem('election.list_name'); - document.getElementById('list_owners').value = localStorage.getItem('election.list_owners'); - - if (employee_count){ + document.getElementById('candidate_count').value = localStorage.getItem( + 'election.candidate_count', + ); + document.getElementById('list_name').value = + localStorage.getItem('election.list_name'); + document.getElementById('list_owners').value = localStorage.getItem( + 'election.list_owners', + ); + + if (employee_count) { handleTemplateGeneratorFormSubmit(); } } } function handleTemplateGeneratorFormSubmit() { - persistForm() - signaturesTable() - candidateTable() + persistForm(); + signaturesTable(); + candidateTable(); } function handleTemplateGeneratorExampleFormSubmit() { exampleEmployeeCount = Math.floor(Math.random() * (1000 - 25 + 1)) + 25; - signaturesTable(true) - candidateTable(true) + signaturesTable(true); + candidateTable(true); } function persistValue(id) { const value = document.getElementById(id).value; - window.localStorage.setItem("election." + id, value || '') + window.localStorage.setItem('election.' + id, value || ''); } function persistForm() { - persistValue('employee_count') - persistValue('candidate_count') - persistValue('list_owners') - persistValue('list_name') + persistValue('employee_count'); + persistValue('candidate_count'); + persistValue('list_owners'); + persistValue('list_name'); } function listOwners() { // currently no option to directly enter candidate names, but when that happens this can be generated from that - return localStorage.getItem('election.list_owners') || '' + return localStorage.getItem('election.list_owners') || ''; } function listName() { // if a list name is not provided, the first two names on list suffice - return (localStorage.getItem('election.list_name') || listOwners()) || '' + return localStorage.getItem('election.list_name') || listOwners() || ''; } -function employeeCount(isExample){ - return isExample ? exampleEmployeeCount : parseInt(localStorage.getItem('election.employee_count')) +function employeeCount(isExample) { + return isExample + ? exampleEmployeeCount + : parseInt(localStorage.getItem('election.employee_count')); } function candidateTable(isExample) { - const tableBody = document.querySelector("#candidates_id"); - const caption = document.querySelector("#candidate_table > caption"); + const tableBody = document.querySelector('#candidates_id'); + const caption = document.querySelector('#candidate_table > caption'); let list_owners = localStorage.getItem('election.list_owners') || ''; - let caption_text = `${worksCouncil(isExample)} coworkers will represent you and your ${employeeCount(isExample) - 1 } co-workers in your future Works Council. + let caption_text = `${worksCouncil(isExample)} coworkers will represent you and your ${employeeCount(isExample) - 1} co-workers in your future Works Council. Candidate list proposal: ${listName()} ideally has ${candidates(isExample)} candidates. ${supporters(isExample)} supporting signature(s) are also necessary, once all the candidates for ${listName()} list are finalized. - ` + `; - let tableData = "" + let tableData = ''; if (!isExample) { for (let i = 0; i < candidates(); i++) { - tableData += - ` + tableData += ` ${i == 0 ? candidate1() : ''} - ` + `; } } else { for (let i = 0; i < candidates(isExample); i++) { - genders = ["male", "female", "diverse", "non-binary"]; - tableData += - ` + genders = ['male', 'female', 'diverse', 'non-binary']; + tableData += ` ${randomItem(firstNames)} ${randomItem(lastNames)} ${randomDate()} ${randomItem(genders)} ${randomItem(jobTitles)} - ${randomItem(["πŸ˜…", "πŸ™ˆ", "✊", "πŸ‘Ύ"])} - ` - } + ${randomItem(['πŸ˜…', 'πŸ™ˆ', '✊', 'πŸ‘Ύ'])} + `; + } } tableBody.innerHTML = tableData; - caption.innerHTML = caption_text + caption.innerHTML = caption_text; } -function candidate1(){ - if (listOwners()){ - return listOwners().split(",")[0] - } else { - return '' - } +function candidate1() { + if (listOwners()) { + return listOwners().split(',')[0]; + } else { + return ''; + } } -function randomItem(items){ - return items[Math.floor(Math.random()* items.length)] +function randomItem(items) { + return items[Math.floor(Math.random() * items.length)]; } function getRandomInt(max) { @@ -119,99 +124,100 @@ function getRandomInt(max) { } function randomDate() { - let start = new Date('1970-01-01') - let end = new Date('2004-12-31') + let start = new Date('1970-01-01'); + let end = new Date('2004-12-31'); - return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime())).toLocaleDateString(); + return new Date( + start.getTime() + Math.random() * (end.getTime() - start.getTime()), + ).toLocaleDateString(); } function signaturesTable(isExample) { - const tableSignatureBody = document.querySelector("#signatures_id"); - const tableCandidateSignatureBody = document.querySelector("#signatures_candidate_id"); - const caption = document.querySelector("#signature_candidate_table > caption"); + const tableSignatureBody = document.querySelector('#signatures_id'); + const tableCandidateSignatureBody = document.querySelector( + '#signatures_candidate_id', + ); + const caption = document.querySelector( + '#signature_candidate_table > caption', + ); let caption_text = ` The list named Solidarity needs at least ${supporters(isExample)} supporting signatures - for the following candidates of the Solidarity list nomination.` + for the following candidates of the Solidarity list nomination.`; if (!isExample) { caption_text = `The list named ${listName()} needs at least ${supporters()} supporting signatures - for the following candidates of the ${listName()} list nomination.` + for the following candidates of the ${listName()} list nomination.`; } - let candidateData = "" + let candidateData = ''; if (!isExample) { for (let i = 0; i < candidates(); i++) { - candidateData += - ` - #${i+1} - ${ i == 0 ? candidate1() : '' } + candidateData += ` + #${i + 1} + ${i == 0 ? candidate1() : ''} - ` - } + `; + } } else { - for (let i = 0; i < candidates(isExample); i++) { - genders = ["male", "female", "diverse", "non-binary"]; - candidateData += - ` - #${i+1} + for (let i = 0; i < candidates(isExample); i++) { + genders = ['male', 'female', 'diverse', 'non-binary']; + candidateData += ` + #${i + 1} ${randomItem(firstNames)} ${randomItem(lastNames)} ${randomDate()} ${randomItem(genders)} ${randomItem(jobTitles)} - ` + `; } } - let tableData = "" + let tableData = ''; if (!isExample) { for (let i = 0; i < supporters(); i++) { - let bgColor = i + 1 < supporters() ? "#FFCCCB" : "#66FF99" - let text = "#FFCCCB" == bgColor ? "Almost" : "Congrats!" - tableData += - ` + let bgColor = i + 1 < supporters() ? '#FFCCCB' : '#66FF99'; + let text = '#FFCCCB' == bgColor ? 'Almost' : 'Congrats!'; + tableData += ` ${text} - ` + `; } - tableData += extraSupporterRows() + tableData += extraSupporterRows(); } else { for (let i = 0; i < supporters(isExample); i++) { - let bgColor = i + 1 < supporters(isExample) ? "#FFCCCB" : "#66FF99" - let text = "#FFCCCB" == bgColor ? "Almost" : "Congrats!" - tableData += - ` + let bgColor = i + 1 < supporters(isExample) ? '#FFCCCB' : '#66FF99'; + let text = '#FFCCCB' == bgColor ? 'Almost' : 'Congrats!'; + tableData += ` ${randomItem(firstNames)} ${randomItem(lastNames)} - ${randomItem(["πŸ˜…", "πŸŽ‰", "✊", "πŸ‘Ύ", "πŸš€", "🦾", "πŸ’Ύ"])} + ${randomItem(['πŸ˜…', 'πŸŽ‰', '✊', 'πŸ‘Ύ', 'πŸš€', '🦾', 'πŸ’Ύ'])} ${text} - ` + `; } } tableSignatureBody.innerHTML = tableData; tableCandidateSignatureBody.innerHTML = candidateData; - caption.innerHTML = caption_text + caption.innerHTML = caption_text; } function extraSupporterRows() { // when no signatures are required, extras are not either if (supporters() < 2) { - return '' + return ''; } else { - rowsHTML = - ` + rowsHTML = ` Optional extra signatures - `.repeat(Math.min(supporters(), 5)) - return rowsHTML + `.repeat(Math.min(supporters(), 5)); + return rowsHTML; } } @@ -234,40 +240,71 @@ const employeeThreshholds = { 5001: 29, 6001: 31, 7001: 33, - 9001: 35 -} - -const lastNames = ["Schmidt", "Miller", "Xi", "Patel", "Ortez", "Goldman", "Shevchenko", "Melnyk", "Popova"] -const firstNames = ["Chris", "Sam", "Hannah", "Raj", "Aditi", "Thomas", "Marie", "Mahmoud"]; -const jobTitles = ["Venture capitalist", "Customer support", "Working student", "Warehouse picker", "IT support", "QA engineer", "Delivery rider", "Marketing manager", "Software engineer"] + 9001: 35, +}; + +const lastNames = [ + 'Schmidt', + 'Miller', + 'Xi', + 'Patel', + 'Ortez', + 'Goldman', + 'Shevchenko', + 'Melnyk', + 'Popova', +]; +const firstNames = [ + 'Chris', + 'Sam', + 'Hannah', + 'Raj', + 'Aditi', + 'Thomas', + 'Marie', + 'Mahmoud', +]; +const jobTitles = [ + 'Venture capitalist', + 'Customer support', + 'Working student', + 'Warehouse picker', + 'IT support', + 'QA engineer', + 'Delivery rider', + 'Marketing manager', + 'Software engineer', +]; function worksCouncil(isExample) { - let employees = employeeCount(isExample) - for (const limit in employeeThreshholds) { - if (employees < limit) { - return employeeThreshholds[limit]; + let employees = employeeCount(isExample); + for (const limit in employeeThreshholds) { + if (employees < limit) { + return employeeThreshholds[limit]; } } // if the lookup table doesn't furnish a provided limit - return Math.ceil((employees - 9000)/3000)*2 + 35 + return Math.ceil((employees - 9000) / 3000) * 2 + 35; } function candidates(isExample) { if (isExample) { - return 2 * worksCouncil(isExample) + return 2 * worksCouncil(isExample); } // if unknown, double works council size is recommended - return parseInt(localStorage.getItem('election.candidate_count')) || 2 * worksCouncil() + return ( + parseInt(localStorage.getItem('election.candidate_count')) || + 2 * worksCouncil() + ); } function supporters(isExample) { - let employees = employeeCount(isExample) + let employees = employeeCount(isExample); if (employees < 21) { - return 0 - } else if (employees < 101 ) { - return 2 - } else - return Math.min(Math.ceil(employees * 1.0 / 20), 50) + return 0; + } else if (employees < 101) { + return 2; + } else return Math.min(Math.ceil((employees * 1.0) / 20), 50); } onLoad(); diff --git a/_includes/main.scss b/_includes/main.scss index 7fc673e..f977763 100644 --- a/_includes/main.scss +++ b/_includes/main.scss @@ -1,28 +1,28 @@ -@import "variables"; +@import 'variables'; -@import "elements/universal-selector"; -@import "elements/a"; -@import "elements/typography"; -@import "structures/lists"; -@import "structures/tables"; +@import 'elements/universal-selector'; +@import 'elements/a'; +@import 'elements/typography'; +@import 'structures/lists'; +@import 'structures/tables'; -@import "structures/main"; -@import "structures/event"; +@import 'structures/main'; +@import 'structures/event'; -@import "header"; +@import 'header'; -@import "layouts/home"; +@import 'layouts/home'; -@import "layouts/nominating-candidates"; +@import 'layouts/nominating-candidates'; -@import "util/helper"; -@import "util/layout"; +@import 'util/helper'; +@import 'util/layout'; /* layout */ body { background-color: $white; color: $black; - font-family: "Avenir", sans-serif; + font-family: 'Avenir', sans-serif; font-size: 102.5%; letter-spacing: normal; margin: 0; @@ -60,13 +60,12 @@ input { } &:invalid:required { - background: #FFCCCB; + background: #ffcccb; } &:focus { outline: none; } - } input.input-text { @@ -75,10 +74,9 @@ input.input-text { border-color: $grey; border-style: solid; border-width: 1px; - } -input[type="submit"] { +input[type='submit'] { margin-top: 20px; font-weight: 500; background-color: #212121; @@ -118,11 +116,10 @@ ul { border-radius: 8px; padding: 10px; margin-bottom: 5px; - + width: 80%; margin-right: auto; - a { text-decoration: none; } @@ -135,15 +132,16 @@ ul { .control { margin-bottom: 5px; - text-align :center; + text-align: center; - input, label { + input, + label { display: block; width: 90%; display: block; margin-right: auto; margin-left: auto; - padding: 1% + padding: 1%; } } @@ -183,7 +181,6 @@ img { color: $white; } - .subscribe-button { border-color: transparent; background-color: #212121; diff --git a/_includes/normalize.css b/_includes/normalize.css index 05ad4f4..4bc4023 100644 --- a/_includes/normalize.css +++ b/_includes/normalize.css @@ -330,8 +330,8 @@ input { * 2. Remove excess padding in IE 8/9/10. */ -input[type="checkbox"], -input[type="radio"] { +input[type='checkbox'], +input[type='radio'] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } @@ -342,8 +342,8 @@ input[type="radio"] { * decrement button to change from `default` to `text`. */ -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { +input[type='number']::-webkit-inner-spin-button, +input[type='number']::-webkit-outer-spin-button { height: auto; } @@ -353,7 +353,7 @@ input[type="number"]::-webkit-outer-spin-button { * (include `-moz` to future-proof). */ -input[type="search"] { +input[type='search'] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ @@ -366,8 +366,8 @@ input[type="search"] { * padding (and `textfield` appearance). */ -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { +input[type='search']::-webkit-search-cancel-button, +input[type='search']::-webkit-search-decoration { -webkit-appearance: none; } diff --git a/_includes/youtube.html b/_includes/youtube.html index 34996aa..205cc84 100644 --- a/_includes/youtube.html +++ b/_includes/youtube.html @@ -1 +1,7 @@ - + diff --git a/_layouts/blog.html b/_layouts/blog.html index 45bff22..f761dd7 100644 --- a/_layouts/blog.html +++ b/_layouts/blog.html @@ -8,29 +8,27 @@
    {% t 'home.blog.more_articles' %}

    {{ page.title | escape }}

    - {% assign author = site.data.authors[page.author] | default: site.data.authors['techworkersber'] %} -
    - {% if author.picture %} - {{author.name}} - {% endif %} -
    -
    {{ author.name }}
    - -
    - {% if page.translator %} - And translated by {{ page.translator }} - {% endif %} -
    + {% assign author = site.data.authors[page.author] | default: + site.data.authors['techworkersber'] %} +
    + {% if author.picture %} + {{author.name}} + {% endif %} +
    +
    {{ author.name }}
    + +
    + {% if page.translator %} + And translated by {{ page.translator }} + {% endif %} +
    {{ content }} diff --git a/_layouts/default.html b/_layouts/default.html index 90d42cb..07ff360 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -1,13 +1,12 @@ - - - + + {% include head.html %} {% include header.html %} -
    - {{ content }} -
    - +
    {{ content }}
    + diff --git a/_layouts/default_without_footer.html b/_layouts/default_without_footer.html index cf7c854..942d3bb 100644 --- a/_layouts/default_without_footer.html +++ b/_layouts/default_without_footer.html @@ -1,17 +1,13 @@ - - - + + {% include head.html %}
    {% include header.html %}
    -
    - {{ content }} -
    +
    {{ content }}
    -
    diff --git a/_layouts/event.html b/_layouts/event.html index bd5401e..58e9dda 100644 --- a/_layouts/event.html +++ b/_layouts/event.html @@ -1,21 +1,27 @@ --- layout: default --- - + +
    {%t home.events.more %}

    {{ page.title | escape }}

    -

    - {{ page.date | date: '%R %A, %d %B %Y' }} -

    +

    {{ page.date | date: '%R %A, %d %B %Y' }}

    {{ content }}

    {% translate global.code_of_conduct.title %}

    {% translate global.code_of_conduct.summary %} -

    {% translate connect.info %}

    - {% include links.html %} +

    {% translate connect.info %}

    + {% include links.html %}
    diff --git a/_layouts/page.html b/_layouts/page.html index ba25a6a..05cc955 100644 --- a/_layouts/page.html +++ b/_layouts/page.html @@ -1,6 +1,5 @@ --- layout: default --- -
    - {{ content }} -
    + +
    {{ content }}
    diff --git a/_layouts/translated.html b/_layouts/translated.html index fdc38e8..ff25c83 100644 --- a/_layouts/translated.html +++ b/_layouts/translated.html @@ -1,17 +1,16 @@ --- layout: default --- + {% if page.namespace %} -
    - {% assign languages = page.languages | default: site.languages %} - {% for lang in languages %} - {% if languages.size == 1 %} - {% elsif site.lang == lang %} - {% t langs.{{ lang }} %} - {% else %} - {% t langs.{{ lang }} %} - {% endif %} - {% endfor %} -
    -{% endif %} -{{ content }} +
    + {% assign languages = page.languages | default: site.languages %} {% for lang + in languages %} {% if languages.size == 1 %} {% elsif site.lang == lang %} + {% t langs.{{ lang }} %} + {% else %} + {% t langs.{{ lang }} %} + {% endif %} {% endfor %} +
    +{% endif %} {{ content }} diff --git a/_sass/_header.scss b/_sass/_header.scss index a3f8128..e73e41c 100644 --- a/_sass/_header.scss +++ b/_sass/_header.scss @@ -20,7 +20,7 @@ header { .logo { background-color: none; - background-image: url("/assets/css/images/logo.svg"); + background-image: url('/assets/css/images/logo.svg'); background-size: contain; float: left; font-size: 1.75em; @@ -59,12 +59,11 @@ header { display: inline-flex; margin-right: 1em; - @include mobile { font-size: 1em; li { - &:not(:last-child(-n+2)) { + &:not(:last-child(-n + 2)) { display: none; } } @@ -73,11 +72,14 @@ header { a { text-decoration: none; - &:link, &:visited, &:active { + &:link, + &:visited, + &:active { color: $black; } - &:hover, &:focus { + &:hover, + &:focus { color: $red; } } @@ -108,7 +110,7 @@ header { text-transform: uppercase; text-decoration: none; font-size: 24px; - color: #E6141B; + color: #e6141b; @media screen and (max-width: 915px) { display: none; diff --git a/_sass/elements/_universal-selector.scss b/_sass/elements/_universal-selector.scss index f5c699c..e3c2a90 100644 --- a/_sass/elements/_universal-selector.scss +++ b/_sass/elements/_universal-selector.scss @@ -13,4 +13,4 @@ &::before { box-sizing: border-box; } -} \ No newline at end of file +} diff --git a/_sass/layouts/_nominating-candidates.scss b/_sass/layouts/_nominating-candidates.scss index 622f99e..8859e66 100644 --- a/_sass/layouts/_nominating-candidates.scss +++ b/_sass/layouts/_nominating-candidates.scss @@ -1,9 +1,12 @@ @media print { main { - max-width: 100% + max-width: 100%; } - .header, p, .social-links, #candidate_table > caption { - display: none; + .header, + p, + .social-links, + #candidate_table > caption { + display: none; } } diff --git a/_sass/structures/_event.scss b/_sass/structures/_event.scss index c067e4b..35eb040 100644 --- a/_sass/structures/_event.scss +++ b/_sass/structures/_event.scss @@ -5,8 +5,6 @@ grid-template-columns: 2rem 1fr; grid-gap: 0.5rem; } - - } .event-card__info-column { diff --git a/_sass/structures/_lists.scss b/_sass/structures/_lists.scss index 70f7711..436b006 100644 --- a/_sass/structures/_lists.scss +++ b/_sass/structures/_lists.scss @@ -1,4 +1,3 @@ - ul { // this styling is incorrectly scoped it seems padding-left: 0; diff --git a/_sass/structures/_main.scss b/_sass/structures/_main.scss index 174e32a..aea68b4 100644 --- a/_sass/structures/_main.scss +++ b/_sass/structures/_main.scss @@ -8,4 +8,4 @@ main { section.intro-section { margin-top: 15px; -} \ No newline at end of file +} diff --git a/_sass/structures/_tables.scss b/_sass/structures/_tables.scss index 980eaf0..6caef4b 100644 --- a/_sass/structures/_tables.scss +++ b/_sass/structures/_tables.scss @@ -3,7 +3,9 @@ table { width: 100%; } -table td, table th, caption { +table td, +table th, +caption { border: 1px solid #ddd; padding: 8px; } @@ -11,17 +13,24 @@ table td, table th, caption { table tr { height: 32px; - &:hover {background-color: #ddd;} - &:nth-child(even){background-color: #f2f2f2;} + &:hover { + background-color: #ddd; + } + &:nth-child(even) { + background-color: #f2f2f2; + } } .page-break { break-after: page; } // show table header on every page in printer mode across browsers -thead { display: table-header-group; } +thead { + display: table-header-group; +} -table th, caption { +table th, +caption { padding-top: 12px; padding-bottom: 12px; text-align: left; @@ -29,7 +38,7 @@ table th, caption { } table th { - background-color: #04AA6D; + background-color: #04aa6d; } caption { diff --git a/_sass/util/_helper.scss b/_sass/util/_helper.scss index 9ac0c96..078b206 100644 --- a/_sass/util/_helper.scss +++ b/_sass/util/_helper.scss @@ -2,4 +2,4 @@ width: var(--circle-size, 3rem); height: var(--circle-size, 3rem); border-radius: 50%; -} \ No newline at end of file +} diff --git a/_sass/util/_layout.scss b/_sass/util/_layout.scss index 84ac0f1..8e79a88 100644 --- a/_sass/util/_layout.scss +++ b/_sass/util/_layout.scss @@ -2,7 +2,7 @@ display: flex; &.-space-large { - --stack-spacing: 2rem + --stack-spacing: 2rem; } &.-horizontal { @@ -22,11 +22,11 @@ } } -[id]::before { - display: block; - content: " "; +[id]::before { + display: block; + content: ' '; margin-top: -73px; // height of nav bar - height: 73px; - visibility: hidden; + height: 73px; + visibility: hidden; pointer-events: none; } diff --git a/about.md b/about.md index f05fba4..d8e0288 100644 --- a/about.md +++ b/about.md @@ -3,8 +3,9 @@ layout: translated permalink: /about permalink_nl: /over_ons namespace: about -languages: ["en", "nl"] +languages: ['en', 'nl'] --- + # {% t home.about_us %} {% translate home.summary %} diff --git a/admin/config.yml b/admin/config.yml index b7343bd..2bf3ce0 100644 --- a/admin/config.yml +++ b/admin/config.yml @@ -7,19 +7,47 @@ backend: - admin - editor -media_folder: "assets/img" +media_folder: 'assets/img' collections: - - name: "event" # Used in routes, e.g., /admin/collections/blog - label: "Event" # Used in the UI - folder: "_events" # The path to the folder where the documents are stored + - name: 'event' # Used in routes, e.g., /admin/collections/blog + label: 'Event' # Used in the UI + folder: '_events' # The path to the folder where the documents are stored create: true # Allow users to create new documents in this collection fields: # The fields for each document, usually in front matter - - {label: "Title", name: "title", widget: "string"} - - {label: "Date", name: "date", widget: "datetime", format: "YYYY-MM-DD HH:mm" } - - {label: "Locations", name: "locations", widget: "select", multiple: true, default: ["The Netherlands"], min: 1, options: ["The Netherlands", "Global", "Online"]} - - {label: "hide signup form", name: "hide_form", widget: "boolean", default: false} - - {label: "Canonical url", name: "canonical_url", widget: "string", required: false} - - {label: "Tags", name: "tags", widget: "list"} - - {label: "Body", name: "body", widget: "markdown"} - - {label: "Optional image for SEO", name: "image", widget: "image", required: false} + - { label: 'Title', name: 'title', widget: 'string' } + - { + label: 'Date', + name: 'date', + widget: 'datetime', + format: 'YYYY-MM-DD HH:mm', + } + - { + label: 'Locations', + name: 'locations', + widget: 'select', + multiple: true, + default: ['The Netherlands'], + min: 1, + options: ['The Netherlands', 'Global', 'Online'], + } + - { + label: 'hide signup form', + name: 'hide_form', + widget: 'boolean', + default: false, + } + - { + label: 'Canonical url', + name: 'canonical_url', + widget: 'string', + required: false, + } + - { label: 'Tags', name: 'tags', widget: 'list' } + - { label: 'Body', name: 'body', widget: 'markdown' } + - { + label: 'Optional image for SEO', + name: 'image', + widget: 'image', + required: false, + } diff --git a/admin/index.html b/admin/index.html index aaef52f..2ecaa8a 100644 --- a/admin/index.html +++ b/admin/index.html @@ -1,23 +1,26 @@ - - - - Content Manager - - - - - - + + + - -
    - +
    + diff --git a/assets/css/preview-styles.scss b/assets/css/preview-styles.scss index b38df3b..39e66ad 100644 --- a/assets/css/preview-styles.scss +++ b/assets/css/preview-styles.scss @@ -1,13 +1,13 @@ --- --- -@import "variables"; +@import 'variables'; -@import "elements/universal-selector"; -@import "elements/a"; -@import "elements/typography"; -@import "structures/lists"; -@import "structures/tables"; +@import 'elements/universal-selector'; +@import 'elements/a'; +@import 'elements/typography'; +@import 'structures/lists'; +@import 'structures/tables'; -@import "structures/main"; -@import "structures/event"; +@import 'structures/main'; +@import 'structures/event'; diff --git a/blog.md b/blog.md index 7646639..d7f949d 100644 --- a/blog.md +++ b/blog.md @@ -2,6 +2,7 @@ layout: page permalink: /blog --- +

    Blog

    Read the {{site.blog.size}} published blog posts here {% include blog.html %} diff --git a/change.md b/change.md index cfceb28..f43cc99 100644 --- a/change.md +++ b/change.md @@ -2,7 +2,7 @@ layout: translated permalink: /change namespace: change -languages: ["en"] +languages: ['en'] --- diff --git a/events.json b/events.json deleted file mode 100644 index 7da5650..0000000 --- a/events.json +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: null ---- -[{% for event in site.events %} -{"date":{{ event.date | date: "%s"}}, -"chapter":"The Netherlands", -"title":"{{ event.title}}", -"tags":{{event.tags | jsonify}}, -"timeszones":["Europe/Amsterdam"], -"image":"{{ site.url }}{{event.image}}", -"url":"{{ site.url }}{{event.url}}"}{% unless forloop.last %},{% endunless %} -{% endfor %}] diff --git a/events.md b/events.md index f198e11..514be21 100644 --- a/events.md +++ b/events.md @@ -2,7 +2,7 @@ layout: page permalink: /events permalink_nl: /activiteiten -languages: ["en", "nl"] +languages: ['en', 'nl'] --- # {% t home.events.title %} diff --git a/events.yml b/events.yml deleted file mode 100644 index 769abfb..0000000 --- a/events.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: null ---- -{% for event in site.events %} -- title: "{{event.title}}" - date: {{event.date}} - locations: ["The Netherlands"] - tags: {{event.tags}} - timeszones: [Europe/Amsterdam] - image: {{site.url}}{{event.image}} - url: {{site.url}}{{event.url}} -{% endfor %} diff --git a/generic-welcome.md b/generic-welcome.md index b49cb90..c35b884 100644 --- a/generic-welcome.md +++ b/generic-welcome.md @@ -8,4 +8,4 @@ hide_form: true Our volunteer team has received your information and will send you further information very soon. -If you have any further questions, you can contact us at join@techwerkers.nl +If you have any further questions, you can contact us at join@techwerkers.nl diff --git a/index.md b/index.md index 404f4eb..4cfdb47 100644 --- a/index.md +++ b/index.md @@ -15,6 +15,7 @@ permalink: / {% if site.blog.count > 0%} +

    {% t home.blog.title %}

    {% include blog.html limit=3 %} diff --git a/join.md b/join.md index b450cfe..2ce51f0 100644 --- a/join.md +++ b/join.md @@ -2,8 +2,10 @@ layout: translated permalink: /join namespace: join -languages: ["en", "nl"] +languages: ['en', 'nl'] --- + # {% t connect.info %} + {% t connect.description %} {% include links.html %} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..1585d8d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,112 @@ +{ + "name": "twc-site-nl", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "twc-site-nl", + "devDependencies": { + "@shopify/prettier-plugin-liquid": "^1.5.0", + "husky": "^9.0.11", + "prettier": "^3.3.2" + } + }, + "node_modules/@shopify/liquid-html-parser": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@shopify/liquid-html-parser/-/liquid-html-parser-2.0.3.tgz", + "integrity": "sha512-aIkZ5TJWG7/ztd1sZm5XNpBNTG3B+Q0gv3WN/QahmNQzm2wmKYSHiRLOA8JALAnOGTmH0uqOJ7jzdqoATcZSxw==", + "dev": true, + "dependencies": { + "line-column": "^1.0.2", + "ohm-js": "^16.3.0" + } + }, + "node_modules/@shopify/prettier-plugin-liquid": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@shopify/prettier-plugin-liquid/-/prettier-plugin-liquid-1.5.0.tgz", + "integrity": "sha512-CuWjUnBCvq/RTmubEa5RfwW2oP2gYfTXaJ39t4apAYm//1v5Ftvv1bbhEnoEZwCjPshaAJLhSzP9dvCel4cebw==", + "dev": true, + "dependencies": { + "@shopify/liquid-html-parser": "^2.0.3", + "html-styles": "^1.0.0" + }, + "peerDependencies": { + "prettier": "^2.0.0 || ^3.0.0" + } + }, + "node_modules/html-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/html-styles/-/html-styles-1.0.0.tgz", + "integrity": "sha512-cDl5dcj73oI4Hy0DSUNh54CAwslNLJRCCoO+RNkVo+sBrjA/0+7E/xzvj3zH/GxbbBLGJhE0hBe1eg+0FINC6w==", + "dev": true + }, + "node_modules/husky": { + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz", + "integrity": "sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.mjs" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/line-column": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/line-column/-/line-column-1.0.2.tgz", + "integrity": "sha512-Ktrjk5noGYlHsVnYWh62FLVs4hTb8A3e+vucNZMgPeAOITdshMSgv4cCZQeRDjm7+goqmo6+liZwTXo+U3sVww==", + "dev": true, + "dependencies": { + "isarray": "^1.0.0", + "isobject": "^2.0.0" + } + }, + "node_modules/ohm-js": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/ohm-js/-/ohm-js-16.6.0.tgz", + "integrity": "sha512-X9P4koSGa7swgVQ0gt71UCYtkAQGOjciJPJAz74kDxWt8nXbH5HrDOQG6qBDH7SR40ktNv4x61BwpTDE9q4lRA==", + "dev": true, + "engines": { + "node": ">=0.12.1" + } + }, + "node_modules/prettier": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", + "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4b51e4a --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "twc-site-nl", + "description": "This repository is responsible for most content visible on the website [techwerkers.nl](https://techwerkers.nl). The site is made with a static site generator called [Jekyll](https://jekyllrb.com/) in a language called Ruby.", + "scripts": { + "prepare": "husky install" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/techworkersco/twc-site-nl.git" + }, + "bugs": { + "url": "https://github.com/techworkersco/twc-site-nl/issues" + }, + "homepage": "https://github.com/techworkersco/twc-site-nl#readme", + "devDependencies": { + "@shopify/prettier-plugin-liquid": "^1.5.0", + "husky": "^9.0.11", + "prettier": "^3.3.2" + }, + "lint-staged": { + "*.{js,css,md}": "prettier . --write" + } +} diff --git a/press_mentions.md b/press_mentions.md index 98270c2..bc72ebe 100644 --- a/press_mentions.md +++ b/press_mentions.md @@ -1,9 +1,10 @@ --- -languages: ["en", "nl"] +languages: ['en', 'nl'] layout: translated namespace: press_mentions permalink: /press --- + # {% t press.mentions %} {% t press.inquiry %}: press@techwerkers.nl @@ -13,25 +14,27 @@ permalink: /press style="--stack-spacing: 1.5rem" role="list"> - {% for post in site.data.press %} -
  • -
    - +
    +Newspaper -
    -
    - {{post.media}} β€” - -
    -

    - {{ post.title }} -

    -
    -
    -
  • - {% endfor %} +
    +{{post.media}} β€” + +
    +

    +{{ post.title }} +

    +
    + + +{% endfor %} + diff --git a/subscribe-redirect.md b/subscribe-redirect.md index 2543be6..7d241ea 100644 --- a/subscribe-redirect.md +++ b/subscribe-redirect.md @@ -6,15 +6,15 @@ hide_form: true # πŸŽ‰ Congratulations -Congratulations on joining The Netherlands Tech Workers Coalition! Over one thousand tech workers have signed up because they believe in collective action and the ability to change the tech industry! +Congratulations on joining The Netherlands Tech Workers Coalition! Over one thousand tech workers have signed up because they believe in collective action and the ability to change the tech industry! -Our volunteer team has received your information and will send you further information if you completed the form. +Our volunteer team has received your information and will send you further information if you completed the form. 1. You will automnatically be subscribed to our ActionNetwork newsletter (The Netherlands, Europe, and Global TWC updates) -2. You will receive an invite to our Slack, where you can meet tech workers from other TWC chapters 🌍 +2. You will receive an invite to our Slack, where you can meet tech workers from other TWC chapters 🌍 -In the meantime, join one of our [upcoming events](/events)! If you have any further questions, you can contact us at join@techwerkers.nl +In the meantime, join one of our [upcoming events](/events)! If you have any further questions, you can contact us at join@techwerkers.nl ## Social media links -{%include links.html %} +{%include links.html %} diff --git a/themes.md b/themes.md index 0478e49..9062c54 100644 --- a/themes.md +++ b/themes.md @@ -1,10 +1,12 @@ --- -languages: ["en", "nl"] +languages: ['en', 'nl'] layout: translated namespace: directory permalink: /directory --- + # Directory +