aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site
diff options
context:
space:
mode:
authorGravatar Xithrius <[email protected]>2024-02-03 00:50:43 -0800
committerGravatar GitHub <[email protected]>2024-02-03 00:50:43 -0800
commitad2410ef24e97742bc22f0d8775a0f37a5bf2db5 (patch)
treecce3c380e6b695d11dcb65ee65411f6f654e2be3 /pydis_site
parentMigrate mailing lists to their own API endpoints (diff)
parentMerge pull request #1220 from python-discord/dependabot/pip/ruff-0.2.0 (diff)
Merge branch 'main' into mailing-list-model
Diffstat (limited to 'pydis_site')
-rw-r--r--pydis_site/apps/api/serializers.py18
-rw-r--r--pydis_site/apps/api/viewsets/bot/infraction.py6
-rw-r--r--pydis_site/apps/api/viewsets/bot/nomination.py2
-rw-r--r--pydis_site/apps/content/resources/guides/pydis-guides/contributing.md8
-rw-r--r--pydis_site/apps/content/resources/guides/pydis-guides/how-to-contribute-a-page.md25
-rw-r--r--pydis_site/apps/content/resources/guides/python-guides/mutability.md8
-rw-r--r--pydis_site/apps/content/utils.py6
-rw-r--r--pydis_site/apps/resources/resources/adafruit.yaml3
-rw-r--r--pydis_site/apps/resources/resources/automate_the_boring_stuff_book.yaml2
-rw-r--r--pydis_site/apps/resources/resources/awesome_programming_discord.yaml2
-rw-r--r--pydis_site/apps/resources/resources/byte_of_python.yaml4
-rw-r--r--pydis_site/apps/resources/resources/code_combat.yaml2
-rw-r--r--pydis_site/apps/resources/resources/corey_schafer.yaml1
-rw-r--r--pydis_site/apps/resources/resources/data_science_from_scratch.yaml4
-rw-r--r--pydis_site/apps/resources/resources/effective_python.yaml4
-rw-r--r--pydis_site/apps/resources/resources/exercism.yaml2
-rw-r--r--pydis_site/apps/resources/resources/flask_web_development.yaml4
-rw-r--r--pydis_site/apps/resources/resources/fluent_python.yaml4
-rw-r--r--pydis_site/apps/resources/resources/hitchhikers_guide_to_python.yaml2
-rw-r--r--pydis_site/apps/resources/resources/kivy.yaml7
-rw-r--r--pydis_site/apps/resources/resources/microsoft.yaml1
-rw-r--r--pydis_site/apps/resources/resources/mission_python.yaml2
-rw-r--r--pydis_site/apps/resources/resources/neural_networks_from_scratch_in_python.yaml2
-rw-r--r--pydis_site/apps/resources/resources/pallets.yaml1
-rw-r--r--pydis_site/apps/resources/resources/panda3d.yaml3
-rw-r--r--pydis_site/apps/resources/resources/people_postgres_data.yaml1
-rw-r--r--pydis_site/apps/resources/resources/pyglet.yaml1
-rw-r--r--pydis_site/apps/resources/resources/python_cookbook.yaml4
-rw-r--r--pydis_site/apps/resources/resources/python_crash_course.yaml4
-rw-r--r--pydis_site/apps/resources/resources/python_graph_gallery.yaml2
-rw-r--r--pydis_site/apps/resources/resources/python_org.yaml1
-rw-r--r--pydis_site/apps/resources/resources/python_tricks.yaml2
-rw-r--r--pydis_site/apps/resources/resources/sentdex.yaml1
-rw-r--r--pydis_site/apps/resources/resources/simple_guide_to_git.yaml2
-rw-r--r--pydis_site/apps/resources/resources/software_design_by_example.yaml26
-rw-r--r--pydis_site/apps/resources/resources/think_python.yaml4
-rw-r--r--pydis_site/apps/resources/resources/two_scoops_of_django.yaml4
-rw-r--r--pydis_site/context_processors.py4
-rw-r--r--pydis_site/settings.py54
-rw-r--r--pydis_site/static/css/base/base.css31
-rw-r--r--pydis_site/static/css/base/themes.css69
-rw-r--r--pydis_site/static/css/collapsibles.css16
-rw-r--r--pydis_site/static/css/content/color.css4
-rw-r--r--pydis_site/static/css/content/page.css36
-rw-r--r--pydis_site/static/css/content/tag.css4
-rw-r--r--pydis_site/static/css/error_pages.css4
-rw-r--r--pydis_site/static/css/events/base.css24
-rw-r--r--pydis_site/static/css/home/index.css113
-rw-r--r--pydis_site/static/css/home/timeline.css31
-rw-r--r--pydis_site/static/css/resources/resources.css28
-rw-r--r--pydis_site/static/images/events/Replit.pngbin12114 -> 0 bytes
-rw-r--r--pydis_site/static/images/events/logos/DO_Logo_Vertical_Blue.png (renamed from pydis_site/static/images/events/DO_Logo_Vertical_Blue.png)bin7156 -> 7156 bytes
-rw-r--r--pydis_site/static/images/events/logos/Replit.pngbin0 -> 2692 bytes
-rw-r--r--pydis_site/static/images/events/logos/Tabnine.png (renamed from pydis_site/static/images/events/Tabnine.png)bin10534 -> 10534 bytes
-rw-r--r--pydis_site/static/images/events/logos_dark/DO_Logo_Vertical_White.pngbin0 -> 6928 bytes
-rw-r--r--pydis_site/static/images/events/logos_dark/Replit.pngbin0 -> 2732 bytes
-rw-r--r--pydis_site/static/images/events/logos_dark/django.pngbin0 -> 9332 bytes
-rw-r--r--pydis_site/static/images/resources/adafruit.pngbin0 -> 52184 bytes
-rw-r--r--pydis_site/static/images/resources/kivy.pngbin0 -> 54787 bytes
-rw-r--r--pydis_site/static/images/resources/panda3d.pngbin0 -> 57702 bytes
-rw-r--r--pydis_site/static/images/resources_dark/adafruit.pngbin0 -> 13434 bytes
-rw-r--r--pydis_site/static/images/resources_dark/coreyschafer.pngbin0 -> 17525 bytes
-rw-r--r--pydis_site/static/images/resources_dark/kivy.pngbin0 -> 50889 bytes
-rw-r--r--pydis_site/static/images/resources_dark/microsoft.pngbin0 -> 9521 bytes
-rw-r--r--pydis_site/static/images/resources_dark/pallets.pngbin0 -> 48189 bytes
-rw-r--r--pydis_site/static/images/resources_dark/panda3d.pngbin0 -> 49453 bytes
-rw-r--r--pydis_site/static/images/resources_dark/people_postgres_data.pngbin0 -> 44499 bytes
-rw-r--r--pydis_site/static/images/resources_dark/pyglet.pngbin0 -> 11866 bytes
-rw-r--r--pydis_site/static/images/resources_dark/python.pngbin0 -> 10603 bytes
-rw-r--r--pydis_site/static/images/resources_dark/sentdex.pngbin0 -> 19367 bytes
-rw-r--r--pydis_site/static/images/sponsors_dark/cloudflare.pngbin0 -> 7851 bytes
-rw-r--r--pydis_site/static/images/sponsors_dark/jetbrains.pngbin0 -> 125428 bytes
-rw-r--r--pydis_site/static/images/sponsors_dark/linode.pngbin0 -> 17219 bytes
-rw-r--r--pydis_site/static/images/sponsors_dark/netcup.pngbin0 -> 3130 bytes
-rw-r--r--pydis_site/static/images/sponsors_dark/netlify.pngbin0 -> 110151 bytes
-rw-r--r--pydis_site/static/images/sponsors_dark/notion.pngbin0 -> 51849 bytes
-rw-r--r--pydis_site/static/images/sponsors_dark/sentry.pngbin0 -> 18102 bytes
-rw-r--r--pydis_site/static/images/waves_dark/wave_black.svg77
-rw-r--r--pydis_site/static/images/waves_dark/wave_dark.svg73
-rw-r--r--pydis_site/static/images/waves_dark/wave_darker.svg73
-rw-r--r--pydis_site/static/js/base/themes.js94
-rw-r--r--pydis_site/templates/base/base.html2
-rw-r--r--pydis_site/templates/base/footer.html4
-rw-r--r--pydis_site/templates/base/navbar.html24
-rw-r--r--pydis_site/templates/content/listing.html4
-rw-r--r--pydis_site/templates/content/page.html2
-rw-r--r--pydis_site/templates/events/index.html8
-rw-r--r--pydis_site/templates/events/pages/code-jams/10/_index.html7
-rw-r--r--pydis_site/templates/events/pages/code-jams/8/_index.html24
-rw-r--r--pydis_site/templates/events/pages/code-jams/9/_index.html19
-rw-r--r--pydis_site/templates/events/sidebar/code-jams/6.html18
-rw-r--r--pydis_site/templates/events/sidebar/code-jams/7.html18
-rw-r--r--pydis_site/templates/events/sidebar/code-jams/8.html30
-rw-r--r--pydis_site/templates/events/sidebar/code-jams/9.html27
-rw-r--r--pydis_site/templates/events/sidebar/game-jams/2020.html6
-rw-r--r--pydis_site/templates/home/index.html54
-rw-r--r--pydis_site/templates/home/timeline.html412
-rw-r--r--pydis_site/templates/resources/resource_box.html2
-rw-r--r--pydis_site/templates/resources/resource_box_header.html29
-rw-r--r--pydis_site/templates/resources/resources.html12
100 files changed, 1200 insertions, 412 deletions
diff --git a/pydis_site/apps/api/serializers.py b/pydis_site/apps/api/serializers.py
index a2dc68f0..ea94214f 100644
--- a/pydis_site/apps/api/serializers.py
+++ b/pydis_site/apps/api/serializers.py
@@ -153,12 +153,9 @@ class MessageDeletionContextSerializer(ModelSerializer):
"""
messages = validated_data.pop('deletedmessage_set')
deletion_context = MessageDeletionContext.objects.create(**validated_data)
- for message in messages:
- DeletedMessage.objects.create(
- deletion_context=deletion_context,
- **message
- )
-
+ DeletedMessage.objects.bulk_create(
+ DeletedMessage(deletion_context=deletion_context, **message) for message in messages
+ )
return deletion_context
@@ -510,13 +507,8 @@ class ExpandedInfractionSerializer(InfractionSerializer):
"""Return the dictionary representation of this infraction."""
ret = super().to_representation(instance)
- user = User.objects.get(id=ret['user'])
- user_data = UserSerializer(user).data
- ret['user'] = user_data
-
- actor = User.objects.get(id=ret['actor'])
- actor_data = UserSerializer(actor).data
- ret['actor'] = actor_data
+ ret['user'] = UserSerializer(instance.user).data
+ ret['actor'] = UserSerializer(instance.actor).data
return ret
diff --git a/pydis_site/apps/api/viewsets/bot/infraction.py b/pydis_site/apps/api/viewsets/bot/infraction.py
index 09c05a74..8da82822 100644
--- a/pydis_site/apps/api/viewsets/bot/infraction.py
+++ b/pydis_site/apps/api/viewsets/bot/infraction.py
@@ -230,7 +230,11 @@ class InfractionViewSet(
})
additional_filters['type__in'] = [i.strip() for i in filter_types.split(",")]
- return self.queryset.filter(**additional_filters)
+ qs = self.queryset.filter(**additional_filters)
+ if self.serializer_class is ExpandedInfractionSerializer:
+ return qs.prefetch_related('actor', 'user')
+
+ return qs
@action(url_path='expanded', detail=False)
def list_expanded(self, *args, **kwargs) -> Response:
diff --git a/pydis_site/apps/api/viewsets/bot/nomination.py b/pydis_site/apps/api/viewsets/bot/nomination.py
index 953513e0..d083464c 100644
--- a/pydis_site/apps/api/viewsets/bot/nomination.py
+++ b/pydis_site/apps/api/viewsets/bot/nomination.py
@@ -170,7 +170,7 @@ class NominationViewSet(CreateModelMixin, RetrieveModelMixin, ListModelMixin, Ge
"""
serializer_class = NominationSerializer
- queryset = Nomination.objects.all()
+ queryset = Nomination.objects.all().prefetch_related('entries')
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filterset_fields = ('user__id', 'active')
frozen_on_create = ('ended_at', 'end_reason', 'active', 'inserted_at', 'reviewed')
diff --git a/pydis_site/apps/content/resources/guides/pydis-guides/contributing.md b/pydis_site/apps/content/resources/guides/pydis-guides/contributing.md
index b36c0afd..5dc6408c 100644
--- a/pydis_site/apps/content/resources/guides/pydis-guides/contributing.md
+++ b/pydis_site/apps/content/resources/guides/pydis-guides/contributing.md
@@ -9,8 +9,8 @@ Our projects on Python Discord are open source and [available on GitHub](https:/
<!-- Project cards -->
<div class="columns is-multiline is-centered is-3 is-variable">
<div class="column is-one-third-desktop is-half-tablet">
- <div class="card github-card">
- <div class="card-header">
+ <div class="card github-card has-background-white">
+ <div class="card-header has-background-white">
<div class="card-header-title is-centered">
<a class="is-size-5" href="https://github.com/python-discord/sir-lancebot">
<i class="fab fa-github"></i>&ensp;<strong >Sir Lancebot</strong>
@@ -22,11 +22,11 @@ Our projects on Python Discord are open source and [available on GitHub](https:/
Sir Lancebot has a collection of self-contained, for-fun features. If you're new to Discord bots or contributing, this is a great place to start!
</div>
</div>
- <div class="card-footer">
+ <div class="card-footer has-background-white">
<a href="https://github.com/python-discord/sir-lancebot/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc" class="card-footer-item"><i class="fas fa-exclamation-circle"></i>&ensp;Issues</a>
<a href="https://github.com/python-discord/sir-lancebot/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc" class="card-footer-item"><i class="fas fa-code-merge"></i>&ensp;PRs</a>
</div>
- <div class="card-footer">
+ <div class="card-footer has-background-white">
<a href="/pages/guides/pydis-guides/contributing/sir-lancebot" class="card-footer-item"><i class="fas fa-cogs"></i>&ensp;Setup and Configuration Guide</a>
</div>
</div>
diff --git a/pydis_site/apps/content/resources/guides/pydis-guides/how-to-contribute-a-page.md b/pydis_site/apps/content/resources/guides/pydis-guides/how-to-contribute-a-page.md
index 65a402fd..8470a6c1 100644
--- a/pydis_site/apps/content/resources/guides/pydis-guides/how-to-contribute-a-page.md
+++ b/pydis_site/apps/content/resources/guides/pydis-guides/how-to-contribute-a-page.md
@@ -85,6 +85,31 @@ Pages, which include guides, articles, and other static content,...
- **toc:** A number representing the smallest heading tag to show in the table of contents.
See: [Table of Contents](#table-of-contents)
+## Working with dark mode
+
+If your article includes images, you can apply a few classes for a better experience for readers using dark mode.
+
+### Add a white background to an image
+
+Use the `has-dark-mode-background` class to apply a white background to your image, so it can be read easily in dark mode.
+
+```md
+![image alt text](/path/to/my/image.png){: class="has-dark-mode-background" }
+```
+
+### Alternate images for each mode
+
+If you can provide two images, suited for each of the light and dark modes specifically, you can use the `light-image` and `dark-image` classes to have the correct image be used depending on the mode.
+
+```md
+![image alt text](/path/to/my/image_light.png){: class="light-image" }
+![image alt text](/path/to/my/image_dark.png){: class="dark-image" }
+```
+
+This way, when the reader is in light mode, only `image_light.png` is shown, and when the reader is in dark mode, only `image_dark.png` is shown.
+
+All images with `light-image` class are hidden in dark mode and all images with `dark-image` class are hidden in light mode.
+
## Extended Markdown
Apart from standard Markdown, certain additions are available:
diff --git a/pydis_site/apps/content/resources/guides/python-guides/mutability.md b/pydis_site/apps/content/resources/guides/python-guides/mutability.md
index 185dc87c..e180fd16 100644
--- a/pydis_site/apps/content/resources/guides/python-guides/mutability.md
+++ b/pydis_site/apps/content/resources/guides/python-guides/mutability.md
@@ -30,11 +30,11 @@ It just returns a new one.
Let's examine what's going on here.
At first, the variable `s` refers to some object, the string `'hello'`.
-![s refers to the string "hello"](/static/images/content/mutability/s_refers_hello.png)
+![s refers to the string "hello"](/static/images/content/mutability/s_refers_hello.png){: class="has-dark-mode-background" }
When you call `s.upper()`, a new string, which contains the characters `'HELLO'`, gets created.
-![s.upper creates "HELLO"](/static/images/content/mutability/s_upper_creates_HELLO.png)
+![s.upper creates "HELLO"](/static/images/content/mutability/s_upper_creates_HELLO.png){: class="has-dark-mode-background" }
This happens even if you just call `s.upper()` without any assignment, on its own line:
```python
@@ -44,12 +44,12 @@ In this case, a new object will be created and discarded right away.
Then the assignment part comes in: the name `s` gets disconnected from `'hello'`, and gets connected to `'HELLO'`.
-![s gets assigned to "HELLO"](/static/images/content/mutability/s_gets_assigned_to_HELLO.png)
+![s gets assigned to "HELLO"](/static/images/content/mutability/s_gets_assigned_to_HELLO.png){: class="has-dark-mode-background" }
Now we can say that `'HELLO'` is stored in the `s` variable.
Then, because no variables refer to the _object_ `'hello'`, it gets eaten by the garbage collector.
-!["hello" Gets Eaten](/static/images/content/mutability/hello_gets_eaten.png)
+!["hello" Gets Eaten](/static/images/content/mutability/hello_gets_eaten.png){: class="has-dark-mode-background" }
It means that the memory reserved for that object will be freed. If that didn't happen, the 'garbage' would accumulate over time and fill up all the RAM.
diff --git a/pydis_site/apps/content/utils.py b/pydis_site/apps/content/utils.py
index cfd73d67..5a146e10 100644
--- a/pydis_site/apps/content/utils.py
+++ b/pydis_site/apps/content/utils.py
@@ -107,7 +107,7 @@ def fetch_tags() -> list[Tag]:
for file in repo.getmembers():
if "/bot/resources/tags" in file.path:
included.append(file)
- repo.extractall(folder, included)
+ repo.extractall(folder, included) # noqa: S202
for tag_file in Path(folder).rglob("*.md"):
name = tag_file.name
@@ -206,9 +206,9 @@ def record_tags(tags: list[Tag]) -> None:
# pretend it's previous state is the current state
old_tag = new_tag
- if old_tag.sha == new_tag.sha and old_tag.last_commit is not None:
+ if old_tag.sha == new_tag.sha and old_tag.last_commit_id is not None:
# We still have an up-to-date commit entry
- new_tag.last_commit = old_tag.last_commit
+ new_tag.last_commit_id = old_tag.last_commit_id
new_tag.save()
diff --git a/pydis_site/apps/resources/resources/adafruit.yaml b/pydis_site/apps/resources/resources/adafruit.yaml
index c687f507..bedbf16a 100644
--- a/pydis_site/apps/resources/resources/adafruit.yaml
+++ b/pydis_site/apps/resources/resources/adafruit.yaml
@@ -4,7 +4,8 @@ description: Adafruit is an open-source electronics manufacturer
Their official community host regular show-and-tells,
provide help with your projects,
and the Adafruit devs do all the CircuitPython Development right out in the open.
-title_image: https://www.mouser.com/images/suppliers/logos/adafruit.png
+title_image: /static/images/resources/adafruit.png
+title_image_dark: /static/images/resources_dark/adafruit.png
title_url: https://adafruit.com/
urls:
- icon: branding/discord
diff --git a/pydis_site/apps/resources/resources/automate_the_boring_stuff_book.yaml b/pydis_site/apps/resources/resources/automate_the_boring_stuff_book.yaml
index 63f63193..f3b862d2 100644
--- a/pydis_site/apps/resources/resources/automate_the_boring_stuff_book.yaml
+++ b/pydis_site/apps/resources/resources/automate_the_boring_stuff_book.yaml
@@ -8,7 +8,7 @@ title_url: https://automatetheboringstuff.com/
urls:
- icon: branding/goodreads
url: https://www.goodreads.com/book/show/22514127-automate-the-boring-stuff-with-python
- color: black
+ color: dark
tags:
topics:
- general
diff --git a/pydis_site/apps/resources/resources/awesome_programming_discord.yaml b/pydis_site/apps/resources/resources/awesome_programming_discord.yaml
index 0ef7aefc..7079062b 100644
--- a/pydis_site/apps/resources/resources/awesome_programming_discord.yaml
+++ b/pydis_site/apps/resources/resources/awesome_programming_discord.yaml
@@ -3,7 +3,7 @@ description: We have listed our favourite communities,
An awesome list collating the best programming related Discord servers is available on GitHub
and has all sorts of topics from blockchain to virtual reality!
title_icon: branding/github
-title_icon_color: black
+title_icon_color: dark
title_url: https://github.com/mhxion/awesome-programming-discord
name: awesome-programming-discord
tags:
diff --git a/pydis_site/apps/resources/resources/byte_of_python.yaml b/pydis_site/apps/resources/resources/byte_of_python.yaml
index c2f6ab84..e4d44369 100644
--- a/pydis_site/apps/resources/resources/byte_of_python.yaml
+++ b/pydis_site/apps/resources/resources/byte_of_python.yaml
@@ -6,10 +6,10 @@ title_url: https://python.swaroopch.com/
urls:
- icon: regular/book
url: https://www.lulu.com/shop/swaroop-c-h/a-byte-of-python/paperback/product-21142968.html
- color: black
+ color: dark
- icon: branding/goodreads
url: https://www.goodreads.com/book/show/6762544-a-byte-of-python
- color: black
+ color: dark
tags:
topics:
- general
diff --git a/pydis_site/apps/resources/resources/code_combat.yaml b/pydis_site/apps/resources/resources/code_combat.yaml
index 84597c4d..0e308ddc 100644
--- a/pydis_site/apps/resources/resources/code_combat.yaml
+++ b/pydis_site/apps/resources/resources/code_combat.yaml
@@ -5,7 +5,7 @@ title_url: https://codecombat.com/
urls:
- icon: branding/github
url: https://github.com/codecombat/codecombat
- color: black
+ color: dark
tags:
topics:
- general
diff --git a/pydis_site/apps/resources/resources/corey_schafer.yaml b/pydis_site/apps/resources/resources/corey_schafer.yaml
index d66ea004..91abeb52 100644
--- a/pydis_site/apps/resources/resources/corey_schafer.yaml
+++ b/pydis_site/apps/resources/resources/corey_schafer.yaml
@@ -10,6 +10,7 @@ description: 'Corey has a number of exceptionally high quality tutorial series
Check out his channel for more video series!
'
title_image: https://i.imgur.com/KIfWw3b.png
+title_image_dark: /static/images/resources_dark/coreyschafer.png
title_url: https://www.youtube.com/channel/UCCezIgC97PvUuR4_gbFUs5g
urls:
- icon: solid/external-link-alt
diff --git a/pydis_site/apps/resources/resources/data_science_from_scratch.yaml b/pydis_site/apps/resources/resources/data_science_from_scratch.yaml
index 86955fdb..755e5867 100644
--- a/pydis_site/apps/resources/resources/data_science_from_scratch.yaml
+++ b/pydis_site/apps/resources/resources/data_science_from_scratch.yaml
@@ -7,10 +7,10 @@ title_url: https://www.oreilly.com/library/view/data-science-from/9781492041122/
urls:
- icon: branding/goodreads
url: https://www.goodreads.com/en/book/show/52059715-data-science-from-scratch
- color: black
+ color: dark
- icon: branding/github
url: https://github.com/joelgrus/data-science-from-scratch
- color: black
+ color: dark
tags:
topics:
- data science
diff --git a/pydis_site/apps/resources/resources/effective_python.yaml b/pydis_site/apps/resources/resources/effective_python.yaml
index b82fa0c3..2293ee84 100644
--- a/pydis_site/apps/resources/resources/effective_python.yaml
+++ b/pydis_site/apps/resources/resources/effective_python.yaml
@@ -5,10 +5,10 @@ title_url: https://effectivepython.com/
urls:
- icon: branding/goodreads
url: https://www.goodreads.com/book/show/48566725-effective-python
- color: black
+ color: dark
- icon: branding/github
url: https://github.com/bslatkin/effectivepython
- color: black
+ color: dark
tags:
topics:
- general
diff --git a/pydis_site/apps/resources/resources/exercism.yaml b/pydis_site/apps/resources/resources/exercism.yaml
index c623db2d..fba5bce4 100644
--- a/pydis_site/apps/resources/resources/exercism.yaml
+++ b/pydis_site/apps/resources/resources/exercism.yaml
@@ -7,7 +7,7 @@ title_url: https://exercism.org/
urls:
- icon: branding/github
url: https://github.com/exercism/python
- color: black
+ color: dark
tags:
topics:
- general
diff --git a/pydis_site/apps/resources/resources/flask_web_development.yaml b/pydis_site/apps/resources/resources/flask_web_development.yaml
index 6905b2b4..9263efdd 100644
--- a/pydis_site/apps/resources/resources/flask_web_development.yaml
+++ b/pydis_site/apps/resources/resources/flask_web_development.yaml
@@ -5,10 +5,10 @@ title_url: http://shop.oreilly.com/product/0636920031116.do
urls:
- icon: branding/goodreads
url: https://www.goodreads.com/book/show/18774655-flask-web-development
- color: black
+ color: dark
- icon: branding/github
url: https://github.com/miguelgrinberg/flasky
- color: black
+ color: dark
tags:
topics:
- web development
diff --git a/pydis_site/apps/resources/resources/fluent_python.yaml b/pydis_site/apps/resources/resources/fluent_python.yaml
index c22fd388..0d9466e1 100644
--- a/pydis_site/apps/resources/resources/fluent_python.yaml
+++ b/pydis_site/apps/resources/resources/fluent_python.yaml
@@ -5,10 +5,10 @@ title_url: https://www.oreilly.com/library/view/fluent-python/9781491946237/
urls:
- icon: branding/goodreads
url: https://www.goodreads.com/book/show/22800567-fluent-python
- color: black
+ color: dark
- icon: branding/github
url: https://github.com/fluentpython
- color: black
+ color: dark
tags:
topics:
- general
diff --git a/pydis_site/apps/resources/resources/hitchhikers_guide_to_python.yaml b/pydis_site/apps/resources/resources/hitchhikers_guide_to_python.yaml
index e48e5717..a96386d2 100644
--- a/pydis_site/apps/resources/resources/hitchhikers_guide_to_python.yaml
+++ b/pydis_site/apps/resources/resources/hitchhikers_guide_to_python.yaml
@@ -5,7 +5,7 @@ title_url: https://python-guide.org/
urls:
- icon: branding/goodreads
url: https://www.goodreads.com/book/show/28321007-the-hitchhiker-s-guide-to-python
- color: black
+ color: dark
tags:
topics:
- general
diff --git a/pydis_site/apps/resources/resources/kivy.yaml b/pydis_site/apps/resources/resources/kivy.yaml
index f49c33fb..742fa274 100644
--- a/pydis_site/apps/resources/resources/kivy.yaml
+++ b/pydis_site/apps/resources/resources/kivy.yaml
@@ -2,9 +2,8 @@ name: Kivy
description: The Kivy project, through the Kivy framework and its sister projects,
aims to provide all the tools to create desktop and mobile applications in Python.
Allowing rapid development of multitouch applications with custom and exciting user interfaces.
-icon_image: https://raw.githubusercontent.com/kivy/kivy-website/master/content/logos/kivy-logo-black-256.png
-icon_size: 50
-title_image: https://i.imgur.com/EVP3jZR.png
+title_image: /static/images/resources/kivy.png
+title_image_dark: /static/images/resources_dark/kivy.png
title_url: https://kivy.org/
urls:
- icon: branding/discord
@@ -12,7 +11,7 @@ urls:
color: blurple
- icon: branding/github
url: https://github.com/kivy
- color: black
+ color: dark
tags:
topics:
- user interface
diff --git a/pydis_site/apps/resources/resources/microsoft.yaml b/pydis_site/apps/resources/resources/microsoft.yaml
index 290283cc..8b31020c 100644
--- a/pydis_site/apps/resources/resources/microsoft.yaml
+++ b/pydis_site/apps/resources/resources/microsoft.yaml
@@ -2,6 +2,7 @@ name: Microsoft Python
description: Microsoft Python is a Discord server for discussing all things relating to using Python with Microsoft products,
they have channels for Azure, VS Code, IoT, Data Science and much more!
title_image: https://1000logos.net/wp-content/uploads/2017/04/Microsoft-Logo.png
+title_image_dark: /static/images/resources_dark/microsoft.png
title_url: https://www.microsoft.com/en-us/boards/pycon2020.aspx
urls:
- icon: branding/discord
diff --git a/pydis_site/apps/resources/resources/mission_python.yaml b/pydis_site/apps/resources/resources/mission_python.yaml
index 391a2983..ca686952 100644
--- a/pydis_site/apps/resources/resources/mission_python.yaml
+++ b/pydis_site/apps/resources/resources/mission_python.yaml
@@ -7,7 +7,7 @@ title_url: https://www.sean.co.uk/books/mission-python/index.shtm
urls:
- icon: branding/goodreads
url: https://www.goodreads.com/book/show/35545850-mission-python
- color: black
+ color: dark
tags:
topics:
- general
diff --git a/pydis_site/apps/resources/resources/neural_networks_from_scratch_in_python.yaml b/pydis_site/apps/resources/resources/neural_networks_from_scratch_in_python.yaml
index 26e88cb9..5e7ee63f 100644
--- a/pydis_site/apps/resources/resources/neural_networks_from_scratch_in_python.yaml
+++ b/pydis_site/apps/resources/resources/neural_networks_from_scratch_in_python.yaml
@@ -7,7 +7,7 @@ title_url: https://nnfs.io/
urls:
- icon: branding/goodreads
url: https://www.goodreads.com/book/show/55927899-neural-networks-from-scratch-in-python
- color: black
+ color: dark
tags:
topics:
- data science
diff --git a/pydis_site/apps/resources/resources/pallets.yaml b/pydis_site/apps/resources/resources/pallets.yaml
index a330b756..453c263f 100644
--- a/pydis_site/apps/resources/resources/pallets.yaml
+++ b/pydis_site/apps/resources/resources/pallets.yaml
@@ -3,6 +3,7 @@ description: The Pallets Projects develop Python libraries such as the Flask web
the Jinja templating library, and the Click command line toolkit. Join to discuss
and get help from the Pallets community.
title_image: https://i.imgur.com/sV9Ypdf.png
+title_image_dark: /static/images/resources_dark/pallets.png
title_url: https://www.palletsprojects.com/
urls:
- icon: branding/discord
diff --git a/pydis_site/apps/resources/resources/panda3d.yaml b/pydis_site/apps/resources/resources/panda3d.yaml
index 51861474..dd200519 100644
--- a/pydis_site/apps/resources/resources/panda3d.yaml
+++ b/pydis_site/apps/resources/resources/panda3d.yaml
@@ -1,7 +1,8 @@
name: Panda3D
description: Panda3D is a Python-focused 3-D framework for rapid development of games,
visualizations, and simulations, written in C++ with an emphasis on performance and flexibility.
-title_image: https://www.panda3d.org/wp-content/uploads/2019/01/panda3d_logo.png
+title_image: /static/images/resources/panda3d.png
+title_image_dark: /static/images/resources_dark/panda3d.png
title_url: https://www.panda3d.org/
position: 9
urls:
diff --git a/pydis_site/apps/resources/resources/people_postgres_data.yaml b/pydis_site/apps/resources/resources/people_postgres_data.yaml
index 212eed89..ce5ad4a8 100644
--- a/pydis_site/apps/resources/resources/people_postgres_data.yaml
+++ b/pydis_site/apps/resources/resources/people_postgres_data.yaml
@@ -5,6 +5,7 @@ description: People, Postgres, Data specializes in building users of Postgres
They take a holistic approach to their community inviting not only technical topics but Professional Development
and Life in general including movies, games, books and travel.
title_image: https://media.discordapp.net/attachments/748954447857844318/750519488268730377/people_postgres_data.png
+title_image_dark: /static/images/resources_dark/people_postgres_data.png
title_url: https://postgresconf.org/
urls:
- icon: branding/discord
diff --git a/pydis_site/apps/resources/resources/pyglet.yaml b/pydis_site/apps/resources/resources/pyglet.yaml
index bdfb84cf..73f99bde 100644
--- a/pydis_site/apps/resources/resources/pyglet.yaml
+++ b/pydis_site/apps/resources/resources/pyglet.yaml
@@ -5,6 +5,7 @@ description: Pyglet is a powerful,
loading images and videos, and playing sounds and music. All of this with a friendly Pythonic API,
that's simple to learn and doesn't get in your way.
title_image: https://i.imgur.com/LfQwXUe.png
+title_image_dark: /static/images/resources_dark/pyglet.png
title_url: http://pyglet.org/
urls:
- icon: branding/discord
diff --git a/pydis_site/apps/resources/resources/python_cookbook.yaml b/pydis_site/apps/resources/resources/python_cookbook.yaml
index bc05d743..751edf09 100644
--- a/pydis_site/apps/resources/resources/python_cookbook.yaml
+++ b/pydis_site/apps/resources/resources/python_cookbook.yaml
@@ -5,10 +5,10 @@ title_url: http://shop.oreilly.com/product/0636920027072.do
urls:
- icon: branding/goodreads
url: https://www.goodreads.com/book/show/17152735-python-cookbook
- color: black
+ color: dark
- icon: branding/github
url: https://github.com/dabeaz/python-cookbook
- color: black
+ color: dark
tags:
topics:
- general
diff --git a/pydis_site/apps/resources/resources/python_crash_course.yaml b/pydis_site/apps/resources/resources/python_crash_course.yaml
index d916075e..e8356491 100644
--- a/pydis_site/apps/resources/resources/python_crash_course.yaml
+++ b/pydis_site/apps/resources/resources/python_crash_course.yaml
@@ -11,10 +11,10 @@ title_url: https://nostarch.com/pythoncrashcourse2e
urls:
- icon: branding/goodreads
url: https://www.goodreads.com/book/show/23241059-python-crash-course
- color: black
+ color: dark
- icon: branding/github
url: https://ehmatthes.github.io/pcc/
- color: black
+ color: dark
tags:
topics:
- general
diff --git a/pydis_site/apps/resources/resources/python_graph_gallery.yaml b/pydis_site/apps/resources/resources/python_graph_gallery.yaml
index b8aaeb4d..59aebc12 100644
--- a/pydis_site/apps/resources/resources/python_graph_gallery.yaml
+++ b/pydis_site/apps/resources/resources/python_graph_gallery.yaml
@@ -4,7 +4,7 @@ title_url: https://www.python-graph-gallery.com/
urls:
- icon: branding/github
url: https://github.com/holtzy/The-Python-Graph-Gallery
- color: black
+ color: dark
tags:
topics:
- data science
diff --git a/pydis_site/apps/resources/resources/python_org.yaml b/pydis_site/apps/resources/resources/python_org.yaml
index ece954dd..e7a9e806 100644
--- a/pydis_site/apps/resources/resources/python_org.yaml
+++ b/pydis_site/apps/resources/resources/python_org.yaml
@@ -1,6 +1,7 @@
name: The Python Tutorial
description: The official Python tutorial by Python.org
title_image: https://www.python.org/static/community_logos/python-logo-master-v3-TM.png
+title_image_dark: /static/images/resources_dark/python.png
title_url: https://docs.python.org/3/tutorial/
tags:
topics:
diff --git a/pydis_site/apps/resources/resources/python_tricks.yaml b/pydis_site/apps/resources/resources/python_tricks.yaml
index aa1b2fcd..17c71107 100644
--- a/pydis_site/apps/resources/resources/python_tricks.yaml
+++ b/pydis_site/apps/resources/resources/python_tricks.yaml
@@ -6,7 +6,7 @@ title_url: https://realpython.com/products/python-tricks-book/
urls:
- icon: branding/goodreads
url: https://www.goodreads.com/book/show/36990732-python-tricks
- color: black
+ color: dark
tags:
topics:
- general
diff --git a/pydis_site/apps/resources/resources/sentdex.yaml b/pydis_site/apps/resources/resources/sentdex.yaml
index 7cb0a8a4..baf42163 100644
--- a/pydis_site/apps/resources/resources/sentdex.yaml
+++ b/pydis_site/apps/resources/resources/sentdex.yaml
@@ -10,6 +10,7 @@ description: 'An enormous amount of Python content for all skill levels
Check out his channel for more video series!
'
title_image: https://i.imgur.com/kJgWZIu.png
+title_image_dark: /static/images/resources_dark/sentdex.png
title_url: https://www.youtube.com/user/sentdex
urls:
- icon: solid/external-link-alt
diff --git a/pydis_site/apps/resources/resources/simple_guide_to_git.yaml b/pydis_site/apps/resources/resources/simple_guide_to_git.yaml
index 3bb46e6d..bf461b0a 100644
--- a/pydis_site/apps/resources/resources/simple_guide_to_git.yaml
+++ b/pydis_site/apps/resources/resources/simple_guide_to_git.yaml
@@ -2,7 +2,7 @@ description: A simple, no-nonsense guide to the basics of using Git.
name: A Simple Guide to Git
title_url: https://rogerdudler.github.io/git-guide/
title_icon: branding/github
-title_icon_color: black
+title_icon_color: dark
tags:
topics:
- tooling
diff --git a/pydis_site/apps/resources/resources/software_design_by_example.yaml b/pydis_site/apps/resources/resources/software_design_by_example.yaml
new file mode 100644
index 00000000..82d1c646
--- /dev/null
+++ b/pydis_site/apps/resources/resources/software_design_by_example.yaml
@@ -0,0 +1,26 @@
+name: Software Design by Example
+description: A tool-based introduction to Software Design with Python. This book teaches
+ design by explaining examples of small versions of familiar tools to show how
+ experienced software designers think. It introduces some fundamental ideas in computer
+ science that many self-taught programmers haven’t encountered.
+icon_image: https://third-bit.com/sdxpy/logo.svg
+icon_size: 50
+title_url: https://third-bit.com/sdxpy/
+urls:
+- icon: branding/goodreads
+ url: https://www.goodreads.com/book/show/199430059-software-design-by-example
+ color: dark
+- icon: branding/github
+ url: https://github.com/gvwilson/sdxpy
+ color: dark
+tags:
+ topics:
+ - general
+ - software design
+ payment_tiers:
+ - free
+ - paid
+ difficulty:
+ - intermediate
+ type:
+ - book
diff --git a/pydis_site/apps/resources/resources/think_python.yaml b/pydis_site/apps/resources/resources/think_python.yaml
index 7099afd8..f8b17761 100644
--- a/pydis_site/apps/resources/resources/think_python.yaml
+++ b/pydis_site/apps/resources/resources/think_python.yaml
@@ -8,10 +8,10 @@ title_url: https://greenteapress.com/wp/think-python-2e/
urls:
- icon: branding/goodreads
url: https://www.goodreads.com/book/show/14514306-think-python
- color: black
+ color: dark
- icon: branding/github
url: https://github.com/AllenDowney/ThinkPython2
- color: black
+ color: dark
tags:
topics:
- general
diff --git a/pydis_site/apps/resources/resources/two_scoops_of_django.yaml b/pydis_site/apps/resources/resources/two_scoops_of_django.yaml
index f372d35d..1ddb70e5 100644
--- a/pydis_site/apps/resources/resources/two_scoops_of_django.yaml
+++ b/pydis_site/apps/resources/resources/two_scoops_of_django.yaml
@@ -5,10 +5,10 @@ title_url: https://www.feldroy.com/books/two-scoops-of-django-3-x
urls:
- icon: branding/goodreads
url: https://www.goodreads.com/book/show/55822151-two-scoops-of-django-3-x
- color: black
+ color: dark
- icon: branding/github
url: https://github.com/twoscoops/two-scoops-of-django-2.0-code-examples
- color: black
+ color: dark
tags:
topics:
- web development
diff --git a/pydis_site/context_processors.py b/pydis_site/context_processors.py
index 0e8b4a94..35854454 100644
--- a/pydis_site/context_processors.py
+++ b/pydis_site/context_processors.py
@@ -1,7 +1,7 @@
from django.conf import settings
-from django.template import RequestContext
+from django.http import HttpRequest
-def git_sha_processor(_: RequestContext) -> dict:
+def git_sha_processor(_: HttpRequest) -> dict:
"""Expose the git SHA for this repo to all views."""
return {'git_sha': settings.GIT_SHA}
diff --git a/pydis_site/settings.py b/pydis_site/settings.py
index 5a6edfdf..a916ddb0 100644
--- a/pydis_site/settings.py
+++ b/pydis_site/settings.py
@@ -299,8 +299,8 @@ LOGGING = {
# Custom settings for django-simple-bulma
BULMA_SETTINGS = {
- "variables": { # If you update these colours, please update the notification.css file
- "primary": "#7289DA", # Discord blurple
+ "variables": {
+ "primary": "#7289DA", # PyDis blurple
"green": "#32ac66", # Colour picked after Discord discussion
"turquoise": "#7289DA", # Blurple, because Bulma uses this regardless of `primary` above
"blue": "#2482c1", # Colour picked after Discord discussion
@@ -315,6 +315,56 @@ BULMA_SETTINGS = {
"footer-padding": "1rem 1.5rem 1rem",
"tooltip-max-width": "30rem",
},
+ "dark_variables": {
+ "primary": "#5365A4", # A darker PyDis blurple
+ "warning": "#4B4636",
+ "warning-invert": "#FFFFFF",
+ "primary-dark": "#EFF1FB", # Bulma's primary-light
+ "primary-light": "#2B3660",
+ "success-dark": "#EFFAF5", # Bulma's success-light
+ "success-light": "#214133",
+ "danger-dark": "#FEECF0", # Bulma's danger-light
+ "danger-light": "#4C1822",
+ "info-dark": "#EFF5FB", # Bulma's info-light
+ "info-light": "#254056",
+
+ "body-background-color": "#252629",
+
+ "white": "#2C2F33",
+ "white-bis": "#23272A ",
+ "white-ter": "#36393F",
+ "light": "$white",
+
+ "black": "#F7F7F7",
+ "black-bis": "#F2F2F2",
+ "black-ter": "#E6E6E6",
+ "dark": "$black",
+
+ "grey-darker": "#303032",
+
+ "text": "#F4F4F4",
+ "text-light": "#F7F7F7",
+ "text-strong": "#FEFEFE",
+
+ "link": "#99B0FF", # A brighter PyDis blurple
+ "link-hover": "#FFFFFF",
+ "link-focus": "$link-hover",
+ "link-active": "$link-hover",
+
+ "code": "#FF7990", # Adjusted to 4.5 contrast ratio per WCAG Level AA
+ "code-background": "#464951", # A graduation lighter than the default for light theme
+
+ # Same as bulma, adjusted for dark mode
+ "shadow": "0 0.5em 1em -0.125em rgba(0, 0, 0, 0.3), 0 0px 0 1px rgba(0, 0, 0, 0.13)",
+ "border": "#4E4F51",
+ "border-light": "#313233",
+
+ # Use the same sizes
+ "dimensions": "16 24 32 48 64 96 128 256 512",
+ "navbar-height": "4.75rem",
+ "footer-padding": "1rem 1.5rem 1rem",
+ "tooltip-max-width": "30rem",
+ },
"extensions": [
"bulma-dropdown",
"bulma-navbar-burger",
diff --git a/pydis_site/static/css/base/base.css b/pydis_site/static/css/base/base.css
index 79a8a92d..cc8d13cb 100644
--- a/pydis_site/static/css/base/base.css
+++ b/pydis_site/static/css/base/base.css
@@ -23,6 +23,20 @@ main.site-content {
padding-right: 0.8em;
}
+[data-theme="dark"] .navbar.is-primary {
+ background-color: #3B4774;
+}
+
+/* No good way other than this for now, because the item hover background setting
+ * applies only for a navbar without is-primary.
+ */
+@media screen and (min-width: 1024px) {
+ [data-theme="dark"] .navbar.is-primary .navbar-end > a.navbar-item:hover,
+ [data-theme="dark"] .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link {
+ background-color: #455382;
+ }
+}
+
.navbar-item .navbar-link {
padding-left: 1.5em;
padding-right: 2.5em;
@@ -58,6 +72,10 @@ main.site-content {
overflow: hidden;
}
+[data-theme="dark"] #discord-btn a {
+ background-color: #58689cff;
+}
+
#discord-btn:hover a {
box-shadow: 0 1px 4px rgba(0,0,0,0.16), 0 1px 6px rgba(0,0,0,0.23);
/*transform: scale(1.03) translate3d(0,0,0);*/
@@ -167,3 +185,16 @@ button.is-size-navbar-menu, a.is-size-navbar-menu {
scroll-behavior: auto;
}
}
+
+[data-theme="dark"] .button.is-primary:hover, .button.is-primary.is-hovered,
+[data-theme="dark"] .button.is-link:hover, .button.is-link.is-hovered {
+ background-color: #6276BC;
+}
+
+[data-theme="dark"] .light-image {
+ display: none;
+}
+
+[data-theme="light"] .dark-image {
+ display: none;
+}
diff --git a/pydis_site/static/css/base/themes.css b/pydis_site/static/css/base/themes.css
new file mode 100644
index 00000000..d22c6c58
--- /dev/null
+++ b/pydis_site/static/css/base/themes.css
@@ -0,0 +1,69 @@
+/* Theme switch toggle */
+
+.switch {
+ position: relative;
+ height: 2em;
+ width: 4em;
+ cursor: pointer;
+}
+
+.switch-outer {
+ position: absolute;
+ height: 100%;
+ width: 100%;
+ border-radius: 2em;
+ transition: background-color 0.3s ease-out;
+}
+
+.switch.dark .switch-outer {
+ background-color: #22272E;
+ border: solid 1px #515151;
+}
+
+.switch.light .switch-outer {
+ background-color: #3f61d9;
+}
+
+.knob {
+ position: absolute;
+ padding-top: 20%;
+ height: 70%;
+ width: 37.5%;
+ border-radius: 10em;
+ transition: all 0.5s ease-out;
+}
+
+.knob.dark {
+ background-color: #586282;
+ margin: 7% auto auto 8%;
+}
+
+.knob.light {
+ background-color: white;
+ margin: 7% auto auto 56%;
+}
+
+.theme-icon {
+ position: absolute !important;
+ --ggs: 0.75;
+ transition: opacity 0.1s ease-out;
+}
+
+.theme-icon.light {
+ left: 10%;
+ top: 15%;
+ color: white;
+}
+
+.theme-icon.dark {
+ right: 10%;
+ top: 20%
+}
+
+.switch.dark .theme-icon.light {
+ opacity: 0;
+}
+
+.switch.light .theme-icon.dark {
+ opacity: 0;
+}
diff --git a/pydis_site/static/css/collapsibles.css b/pydis_site/static/css/collapsibles.css
index 1d73fa00..034bf2fa 100644
--- a/pydis_site/static/css/collapsibles.css
+++ b/pydis_site/static/css/collapsibles.css
@@ -1,11 +1,15 @@
.collapsible {
- cursor: pointer;
- width: 100%;
- border: none;
- outline: none;
+ cursor: pointer;
+ width: 100%;
+ border: none;
+ outline: none;
+}
+
+[data-theme="dark"] .collapsible {
+ background-color: #34353A;
}
.collapsible-content {
- transition: max-height 0.3s ease-out;
- overflow: hidden;
+ transition: max-height 0.3s ease-out;
+ overflow: hidden;
}
diff --git a/pydis_site/static/css/content/color.css b/pydis_site/static/css/content/color.css
index f4801c28..75de31f1 100644
--- a/pydis_site/static/css/content/color.css
+++ b/pydis_site/static/css/content/color.css
@@ -2,6 +2,10 @@
color: black;
}
+[data-theme="dark"] .content .fa-github {
+ color: white;
+}
+
.content .fa-github:hover {
color: #7289DA;
}
diff --git a/pydis_site/static/css/content/page.css b/pydis_site/static/css/content/page.css
index 239f2809..e80fdc13 100644
--- a/pydis_site/static/css/content/page.css
+++ b/pydis_site/static/css/content/page.css
@@ -10,6 +10,11 @@
#edit-on-github {
display: none;
}
+
+ .dropdown-menu {
+ left: unset;
+ right: 0;
+ }
}
i.has-icon-padding {
@@ -22,6 +27,14 @@ i.has-icon-padding {
flex-direction: column;
}
+[data-theme="dark"] .card-footer {
+ border-top: solid 1px #4E4F51;
+}
+
+[data-theme="dark"] .card-footer-item:not(:last-child) {
+ border-right: solid 1px #4E4F51;
+}
+
.card.github-card .card-content {
flex: 1;
}
@@ -96,3 +109,26 @@ ul.menu-list.toc {
li img {
margin-top: 0.5em;
}
+
+.dropdown-menu {
+ min-width: 15rem;
+}
+
+a.dropdown-item {
+ white-space: normal;
+ padding-right: 0;
+}
+
+[data-theme="dark"] .card.github-card {
+ border: solid 1px #4E4F51;
+}
+
+[data-theme="dark"] hr {
+ background-color: #4c515a;
+}
+
+[data-theme="dark"] .has-dark-mode-background {
+ background-color: #EDEDED;
+ border-radius: .1rem;
+ padding: .3rem;
+}
diff --git a/pydis_site/static/css/content/tag.css b/pydis_site/static/css/content/tag.css
index 79795f9e..b6c03ef3 100644
--- a/pydis_site/static/css/content/tag.css
+++ b/pydis_site/static/css/content/tag.css
@@ -4,6 +4,10 @@
color: #7289DA;
}
+[data-theme="dark"] .content a {
+ color: #99B0FF;
+}
+
.content a *:hover {
color: dimgray;
}
diff --git a/pydis_site/static/css/error_pages.css b/pydis_site/static/css/error_pages.css
index 042a53a0..5c6fb661 100644
--- a/pydis_site/static/css/error_pages.css
+++ b/pydis_site/static/css/error_pages.css
@@ -36,6 +36,10 @@ a {
color: #7289DA;
}
+[data-theme="dark"] a {
+ color: #99B0FF;
+}
+
ul {
margin-bottom: 0;
}
diff --git a/pydis_site/static/css/events/base.css b/pydis_site/static/css/events/base.css
index 9e244ed9..cd7ab5ae 100644
--- a/pydis_site/static/css/events/base.css
+++ b/pydis_site/static/css/events/base.css
@@ -12,9 +12,23 @@ pre {
}
.panel .panel-heading {
- /*
- * Remove whitespace between the panel heading and the first item in a panel,
- * since it makes the first panel item taller than the others.
- */
- margin-bottom: 0 !important
+ /*
+ * Remove whitespace between the panel heading and the first item in a panel,
+ * since it makes the first panel item taller than the others.
+ */
+ margin-bottom: 0 !important
+}
+
+.sponsor {
+ border-radius: .1rem;
+ padding: .3rem;
+}
+
+.sponsor img {
+ display: block;
+ margin: auto;
+}
+
+.box .sponsor {
+ margin-bottom: 1rem;
}
diff --git a/pydis_site/static/css/home/index.css b/pydis_site/static/css/home/index.css
index e117a35b..f21263db 100644
--- a/pydis_site/static/css/home/index.css
+++ b/pydis_site/static/css/home/index.css
@@ -23,6 +23,10 @@ h1 {
padding: 0;
}
+[data-theme="dark"] #wave-hero {
+ background-color: #3B4774;
+}
+
#wave-hero .container {
z-index: 4; /* keep hero contents above wave animations */
}
@@ -57,6 +61,16 @@ h1 {
transition: all 0.3s cubic-bezier(.25,.8,.25,1);
}
+[data-theme="dark"] #wave-hero-right img {
+ -webkit-filter: brightness(0.9);
+ filter: brightness(0.9);
+}
+
+[data-theme="dark"] #wave-hero-right img:hover {
+ -webkit-filter: none;
+ filter: none;
+}
+
#wave-hero-right img:hover {
box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22);
}
@@ -72,13 +86,24 @@ h1 {
transform: translate3d(0,0,0); /* Trigger 3D acceleration for smoother animation */
}
+[data-theme="dark"] #wave-hero .wave {
+ background: url(../../images/waves_dark/wave_dark.svg) repeat-x;
+}
+
#front-wave {
animation-duration: 60s;
animation-delay: -50s;
- opacity: 0.5;
height: 178px;
}
+[data-theme="light"] #front-wave {
+ opacity: 0.5;
+}
+
+[data-theme="dark"] #wave-hero #front-wave {
+ background: url(../../images/waves_dark/wave_darker.svg) repeat-x;
+}
+
#back-wave {
animation-duration: 65s;
height: 198px;
@@ -92,6 +117,10 @@ h1 {
z-index: 3;
}
+[data-theme="dark"] #bottom-wave {
+ background: url(../../images/waves_dark/wave_black.svg) repeat-x !important;
+}
+
@keyframes wave {
0% {
margin-left: 0;
@@ -153,10 +182,18 @@ h1 {
flex-direction: column;
}
+[data-theme="dark"] #projects .card {
+ border: #4E4F51 1px solid;
+}
+
#projects .card:hover {
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
}
+[data-theme="dark"] #projects .card:hover {
+ box-shadow: 0 3px 3px rgba(0, 0, 0, 0.7);
+}
+
#projects .card-header {
box-shadow: none;
font-size: 1.25rem;
@@ -173,10 +210,21 @@ h1 {
color: #7289DA;
}
+[data-theme="dark"] #projects .card-header-title {
+ /* Link color from settings.py */
+ color: #99B0FF;
+}
+
#projects .card:hover .card-header-title {
+ /* Bulma link-hover setting */
color: #363636;
}
+[data-theme="dark"] #projects .card:hover .card-header-title {
+ /* Bulma link-hover setting */
+ color: #FFFFFF;
+}
+
#projects .card-content {
padding-top: 8px;
padding-bottom: 1rem;
@@ -218,21 +266,64 @@ h1 {
text-align: center;
}
-#sponsors .columns {
- display: block;
- justify-content: center;
- margin: auto;
- max-width: 80%;
+#sponsors .container {
+ max-width: 70%;
}
#sponsors a {
- margin: auto;
- display: inline-block;
+ border-radius: .2rem;
+ margin-bottom: .8rem;
+ position: relative;
}
#sponsors img {
- width: auto;
- height: auto;
+ max-height: 4rem;
+}
+
+@media (min-width: 800px) {
+ #sponsors a.column.is-one-third:first-child {
+ margin-left: -.8rem;
+ margin-right: .8rem;
+ }
+
+ #sponsors a.column.is-one-third:last-child {
+ margin-left: .8rem;
+ margin-right: -.8rem;
+ }
+
+ #sponsors a.column.is-half {
+ width: calc(50% + .4rem);
+ }
- max-height: 5rem;
+ #sponsors a.column.is-half:first-child {
+ margin-left: -.8rem;
+ margin-right: .4rem;
+ }
+
+ #sponsors a.column.is-half:last-child {
+ margin-left: .4rem;
+ margin-right: -.8rem;
+ }
+
+ #sponsors a {
+ height: 5rem;
+ padding: .4rem;
+ }
+
+ #sponsors img {
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ margin: auto;
+ max-width: calc(100% - 0.8rem);
+ }
+
+}
+
+@media (max-width: 800px) {
+ #sponsors .columns {
+ margin-bottom: 1.5rem;
+ }
}
diff --git a/pydis_site/static/css/home/timeline.css b/pydis_site/static/css/home/timeline.css
index 0a4dfbb6..d42bbfc0 100644
--- a/pydis_site/static/css/home/timeline.css
+++ b/pydis_site/static/css/home/timeline.css
@@ -1,8 +1,3 @@
-body {
- background-color: hsl(0, 0%, 100%);
- background-color: var(--color-bg, white)
-}
-
h2 {
font-size: 2em;
}
@@ -3391,6 +3386,13 @@ mark {
--font-secondary: 'Open Sans', sans-serif
}
+[data-theme="dark"] {
+ --cd-color-2: hsl(0, 0%, 34%);
+ --cd-color-2-h: 0;
+ --cd-color-2-s: 0%;
+ --cd-color-2-l: 34%;
+}
+
@supports (--css: variables) {
@media (min-width: 64rem) {
:root {
@@ -3424,6 +3426,10 @@ mark {
background-color: hsl(var(--cd-color-2-h), var(--cd-color-2-s), calc(var(--cd-color-2-l)*1.05));
}
+[data-theme="dark"] .cd-timeline {
+ background-color: #2C2F33;
+}
+
.cd-timeline h2 {
font-weight: 700
}
@@ -3490,6 +3496,10 @@ mark {
box-shadow: 0 0 0 4px var(--color-white), inset 0 2px 0 rgba(0, 0, 0, 0.08), 0 3px 0 4px rgba(0, 0, 0, 0.05)
}
+[data-theme="dark"] .cd-timeline__img {
+ box-shadow: 0 0 0 4px var(--cd-color-2), inset 0 2px 0 rgba(0, 0, 0, 0.08), 0 3px 0 4px rgba(0, 0, 0, 0.05)
+}
+
.cd-timeline__img i {
font-size: 1.5em;
color: white;
@@ -3552,8 +3562,6 @@ mark {
position: relative;
margin-left: 1.25em;
margin-left: var(--space-md);
- background: hsl(0, 0%, 100%);
- background: var(--color-white);
border-radius: 0.25em;
border-radius: var(--radius-md);
padding: 1.25em;
@@ -3571,7 +3579,7 @@ mark {
height: 0;
border: 7px solid transparent;
border-right-color: hsl(0, 0%, 100%);
- border-right-color: var(--color-white)
+ border-right-color: var(--cd-color-2)
}
.cd-timeline__content h2 {
@@ -3599,15 +3607,10 @@ mark {
height: 0;
border: 7px solid transparent;
border-left-color: hsl(0, 0%, 100%);
- border-left-color: var(--color-white)
+ border-left-color: var(--cd-color-2)
}
}
-.cd-timeline__date {
- color: hsla(207, 10%, 55%, 0.7);
- color: hsla(var(--cd-color-3-h), var(--cd-color-3-s), var(--cd-color-3-l), 0.7)
-}
-
@media (min-width: 64rem) {
.cd-timeline__date {
position: absolute;
diff --git a/pydis_site/static/css/resources/resources.css b/pydis_site/static/css/resources/resources.css
index 96d06111..3bf5ade4 100644
--- a/pydis_site/static/css/resources/resources.css
+++ b/pydis_site/static/css/resources/resources.css
@@ -37,7 +37,7 @@ i.has-icon-padding {
display: none;
}
#tab-content p.is-active {
-display: block;
+ display: block;
}
/* Disable highlighting for all text in the filters. */
@@ -154,11 +154,15 @@ i.is-primary {
}
/* When hovering title anchors, just make the color a lighter primary, not black. */
-.resource-box a:hover {
+[data-theme="light"] .resource-box a:hover {
filter: brightness(120%);
color: #7289DA;
}
+[data-theme="dark"] .resource-box a:hover {
+ color: white;
+}
+
/* Set default display to inline-flex, for centering. */
span.filter-box-tag {
display: none;
@@ -195,22 +199,26 @@ button.delete {
}
/* Colors for delete button x's */
-button.delete.is-primary::before,
-button.delete.is-primary::after {
+[data-theme="light"] button.delete.is-primary::before,
+[data-theme="light"] button.delete.is-primary::after {
background-color: #2a45a2;
}
-button.delete.is-success::before,
-button.delete.is-success::after {
+[data-theme="light"] button.delete.is-success::before,
+[data-theme="light"] button.delete.is-success::after {
background-color: #2c9659;
}
-button.delete.is-danger::before,
-button.delete.is-danger::after {
+[data-theme="light"] button.delete.is-danger::before,
+[data-theme="light"] button.delete.is-danger::after {
background-color: #c32841;
}
-button.delete.is-info::before,
-button.delete.is-info::after {
+[data-theme="light"] button.delete.is-info::before,
+[data-theme="light"] button.delete.is-info::after {
background-color: #237fbd;
}
+[data-theme="dark"] button.delete::before,
+[data-theme="dark"] button.delete::after {
+ background-color: #FFFFFF;
+}
/* Give outlines to active tags */
span.filter-box-tag,
diff --git a/pydis_site/static/images/events/Replit.png b/pydis_site/static/images/events/Replit.png
deleted file mode 100644
index a8202641..00000000
--- a/pydis_site/static/images/events/Replit.png
+++ /dev/null
Binary files differ
diff --git a/pydis_site/static/images/events/DO_Logo_Vertical_Blue.png b/pydis_site/static/images/events/logos/DO_Logo_Vertical_Blue.png
index ad528652..ad528652 100644
--- a/pydis_site/static/images/events/DO_Logo_Vertical_Blue.png
+++ b/pydis_site/static/images/events/logos/DO_Logo_Vertical_Blue.png
Binary files differ
diff --git a/pydis_site/static/images/events/logos/Replit.png b/pydis_site/static/images/events/logos/Replit.png
new file mode 100644
index 00000000..08033134
--- /dev/null
+++ b/pydis_site/static/images/events/logos/Replit.png
Binary files differ
diff --git a/pydis_site/static/images/events/Tabnine.png b/pydis_site/static/images/events/logos/Tabnine.png
index eee42a5e..eee42a5e 100644
--- a/pydis_site/static/images/events/Tabnine.png
+++ b/pydis_site/static/images/events/logos/Tabnine.png
Binary files differ
diff --git a/pydis_site/static/images/events/logos_dark/DO_Logo_Vertical_White.png b/pydis_site/static/images/events/logos_dark/DO_Logo_Vertical_White.png
new file mode 100644
index 00000000..d71b0714
--- /dev/null
+++ b/pydis_site/static/images/events/logos_dark/DO_Logo_Vertical_White.png
Binary files differ
diff --git a/pydis_site/static/images/events/logos_dark/Replit.png b/pydis_site/static/images/events/logos_dark/Replit.png
new file mode 100644
index 00000000..c362df72
--- /dev/null
+++ b/pydis_site/static/images/events/logos_dark/Replit.png
Binary files differ
diff --git a/pydis_site/static/images/events/logos_dark/django.png b/pydis_site/static/images/events/logos_dark/django.png
new file mode 100644
index 00000000..3d0bf011
--- /dev/null
+++ b/pydis_site/static/images/events/logos_dark/django.png
Binary files differ
diff --git a/pydis_site/static/images/resources/adafruit.png b/pydis_site/static/images/resources/adafruit.png
new file mode 100644
index 00000000..652dbaeb
--- /dev/null
+++ b/pydis_site/static/images/resources/adafruit.png
Binary files differ
diff --git a/pydis_site/static/images/resources/kivy.png b/pydis_site/static/images/resources/kivy.png
new file mode 100644
index 00000000..025d0020
--- /dev/null
+++ b/pydis_site/static/images/resources/kivy.png
Binary files differ
diff --git a/pydis_site/static/images/resources/panda3d.png b/pydis_site/static/images/resources/panda3d.png
new file mode 100644
index 00000000..8a1296ed
--- /dev/null
+++ b/pydis_site/static/images/resources/panda3d.png
Binary files differ
diff --git a/pydis_site/static/images/resources_dark/adafruit.png b/pydis_site/static/images/resources_dark/adafruit.png
new file mode 100644
index 00000000..063f06ad
--- /dev/null
+++ b/pydis_site/static/images/resources_dark/adafruit.png
Binary files differ
diff --git a/pydis_site/static/images/resources_dark/coreyschafer.png b/pydis_site/static/images/resources_dark/coreyschafer.png
new file mode 100644
index 00000000..12ad14c9
--- /dev/null
+++ b/pydis_site/static/images/resources_dark/coreyschafer.png
Binary files differ
diff --git a/pydis_site/static/images/resources_dark/kivy.png b/pydis_site/static/images/resources_dark/kivy.png
new file mode 100644
index 00000000..ec124706
--- /dev/null
+++ b/pydis_site/static/images/resources_dark/kivy.png
Binary files differ
diff --git a/pydis_site/static/images/resources_dark/microsoft.png b/pydis_site/static/images/resources_dark/microsoft.png
new file mode 100644
index 00000000..75197bbf
--- /dev/null
+++ b/pydis_site/static/images/resources_dark/microsoft.png
Binary files differ
diff --git a/pydis_site/static/images/resources_dark/pallets.png b/pydis_site/static/images/resources_dark/pallets.png
new file mode 100644
index 00000000..e3ef3e05
--- /dev/null
+++ b/pydis_site/static/images/resources_dark/pallets.png
Binary files differ
diff --git a/pydis_site/static/images/resources_dark/panda3d.png b/pydis_site/static/images/resources_dark/panda3d.png
new file mode 100644
index 00000000..ed8878e3
--- /dev/null
+++ b/pydis_site/static/images/resources_dark/panda3d.png
Binary files differ
diff --git a/pydis_site/static/images/resources_dark/people_postgres_data.png b/pydis_site/static/images/resources_dark/people_postgres_data.png
new file mode 100644
index 00000000..8e207a62
--- /dev/null
+++ b/pydis_site/static/images/resources_dark/people_postgres_data.png
Binary files differ
diff --git a/pydis_site/static/images/resources_dark/pyglet.png b/pydis_site/static/images/resources_dark/pyglet.png
new file mode 100644
index 00000000..6e1a38ad
--- /dev/null
+++ b/pydis_site/static/images/resources_dark/pyglet.png
Binary files differ
diff --git a/pydis_site/static/images/resources_dark/python.png b/pydis_site/static/images/resources_dark/python.png
new file mode 100644
index 00000000..154cede4
--- /dev/null
+++ b/pydis_site/static/images/resources_dark/python.png
Binary files differ
diff --git a/pydis_site/static/images/resources_dark/sentdex.png b/pydis_site/static/images/resources_dark/sentdex.png
new file mode 100644
index 00000000..b264d82c
--- /dev/null
+++ b/pydis_site/static/images/resources_dark/sentdex.png
Binary files differ
diff --git a/pydis_site/static/images/sponsors_dark/cloudflare.png b/pydis_site/static/images/sponsors_dark/cloudflare.png
new file mode 100644
index 00000000..dd31a33a
--- /dev/null
+++ b/pydis_site/static/images/sponsors_dark/cloudflare.png
Binary files differ
diff --git a/pydis_site/static/images/sponsors_dark/jetbrains.png b/pydis_site/static/images/sponsors_dark/jetbrains.png
new file mode 100644
index 00000000..00726b33
--- /dev/null
+++ b/pydis_site/static/images/sponsors_dark/jetbrains.png
Binary files differ
diff --git a/pydis_site/static/images/sponsors_dark/linode.png b/pydis_site/static/images/sponsors_dark/linode.png
new file mode 100644
index 00000000..d2b7baa4
--- /dev/null
+++ b/pydis_site/static/images/sponsors_dark/linode.png
Binary files differ
diff --git a/pydis_site/static/images/sponsors_dark/netcup.png b/pydis_site/static/images/sponsors_dark/netcup.png
new file mode 100644
index 00000000..4921b495
--- /dev/null
+++ b/pydis_site/static/images/sponsors_dark/netcup.png
Binary files differ
diff --git a/pydis_site/static/images/sponsors_dark/netlify.png b/pydis_site/static/images/sponsors_dark/netlify.png
new file mode 100644
index 00000000..3738f3fb
--- /dev/null
+++ b/pydis_site/static/images/sponsors_dark/netlify.png
Binary files differ
diff --git a/pydis_site/static/images/sponsors_dark/notion.png b/pydis_site/static/images/sponsors_dark/notion.png
new file mode 100644
index 00000000..f386320e
--- /dev/null
+++ b/pydis_site/static/images/sponsors_dark/notion.png
Binary files differ
diff --git a/pydis_site/static/images/sponsors_dark/sentry.png b/pydis_site/static/images/sponsors_dark/sentry.png
new file mode 100644
index 00000000..029c9e6f
--- /dev/null
+++ b/pydis_site/static/images/sponsors_dark/sentry.png
Binary files differ
diff --git a/pydis_site/static/images/waves_dark/wave_black.svg b/pydis_site/static/images/waves_dark/wave_black.svg
new file mode 100644
index 00000000..716d0501
--- /dev/null
+++ b/pydis_site/static/images/waves_dark/wave_black.svg
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="1600"
+ height="28.745832"
+ version="1.1"
+ id="svg11"
+ sodipodi:docname="wavew.svg"
+ inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
+ <metadata
+ id="metadata15">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="2560"
+ inkscape:window-height="1409"
+ id="namedview13"
+ showgrid="false"
+ inkscape:zoom="1.44625"
+ inkscape:cx="884.40031"
+ inkscape:cy="-61.865141"
+ inkscape:window-x="4880"
+ inkscape:window-y="677"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg11"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+ <defs
+ id="defs7">
+ <linearGradient
+ id="a"
+ x1="0.5"
+ x2="0.5"
+ y1="-0.10958999"
+ y2="1">
+ <stop
+ stop-color="#57BBC1"
+ stop-opacity=".25"
+ offset="0%"
+ id="stop2" />
+ <stop
+ stop-color="#015871"
+ offset="100%"
+ id="stop4" />
+ </linearGradient>
+ </defs>
+ <path
+ fill="url(#a)"
+ fill-rule="evenodd"
+ d="M 1599.995,17.566918 C 1289,17.566918 1190.102,-0.03623696 789,5.6042811e-5 389,5.6042811e-5 289,17.566918 0,17.566918 v 11.178914 h 1600 c 0,0 -0.01,-6.968673 -0.01,-11.178914 z"
+ id="path9"
+ style="fill:#252629;fill-opacity:1;stroke-width:0.381026" />
+</svg>
diff --git a/pydis_site/static/images/waves_dark/wave_dark.svg b/pydis_site/static/images/waves_dark/wave_dark.svg
new file mode 100644
index 00000000..0ba3d146
--- /dev/null
+++ b/pydis_site/static/images/waves_dark/wave_dark.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="1600"
+ height="198"
+ version="1.1"
+ id="svg11"
+ sodipodi:docname="wave.svg"
+ inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
+ <metadata
+ id="metadata15">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="2560"
+ inkscape:window-height="1409"
+ id="namedview13"
+ showgrid="false"
+ inkscape:zoom="1.44625"
+ inkscape:cx="757.49384"
+ inkscape:cy="107.38903"
+ inkscape:window-x="4880"
+ inkscape:window-y="677"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg11" />
+ <defs
+ id="defs7">
+ <linearGradient
+ id="a"
+ x1="50%"
+ x2="50%"
+ y1="-10.959%"
+ y2="100%">
+ <stop
+ stop-color="#57BBC1"
+ stop-opacity=".25"
+ offset="0%"
+ id="stop2" />
+ <stop
+ stop-color="#015871"
+ offset="100%"
+ id="stop4" />
+ </linearGradient>
+ </defs>
+ <path
+ fill="url(#a)"
+ fill-rule="evenodd"
+ d="M.005 121C311 121 409.898-.25 811 0c400 0 500 121 789 121v77H0s.005-48 .005-77z"
+ transform="matrix(-1 0 0 1 1600 0)"
+ id="path9"
+ style="fill:#455289;fill-opacity:1" />
+</svg>
diff --git a/pydis_site/static/images/waves_dark/wave_darker.svg b/pydis_site/static/images/waves_dark/wave_darker.svg
new file mode 100644
index 00000000..3cff0510
--- /dev/null
+++ b/pydis_site/static/images/waves_dark/wave_darker.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="1600"
+ height="198"
+ version="1.1"
+ id="svg11"
+ sodipodi:docname="wave.svg"
+ inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
+ <metadata
+ id="metadata15">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="2560"
+ inkscape:window-height="1409"
+ id="namedview13"
+ showgrid="false"
+ inkscape:zoom="1.44625"
+ inkscape:cx="757.49384"
+ inkscape:cy="107.38903"
+ inkscape:window-x="4880"
+ inkscape:window-y="677"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg11" />
+ <defs
+ id="defs7">
+ <linearGradient
+ id="a"
+ x1="50%"
+ x2="50%"
+ y1="-10.959%"
+ y2="100%">
+ <stop
+ stop-color="#57BBC1"
+ stop-opacity=".25"
+ offset="0%"
+ id="stop2" />
+ <stop
+ stop-color="#015871"
+ offset="100%"
+ id="stop4" />
+ </linearGradient>
+ </defs>
+ <path
+ fill="url(#a)"
+ fill-rule="evenodd"
+ d="M.005 121C311 121 409.898-.25 811 0c400 0 500 121 789 121v77H0s.005-48 .005-77z"
+ transform="matrix(-1 0 0 1 1600 0)"
+ id="path9"
+ style="fill:#333c61;fill-opacity:1" />
+</svg>
diff --git a/pydis_site/static/js/base/themes.js b/pydis_site/static/js/base/themes.js
new file mode 100644
index 00000000..46dba7b9
--- /dev/null
+++ b/pydis_site/static/js/base/themes.js
@@ -0,0 +1,94 @@
+"use strict";
+
+const defaultTheme = "light";
+const stylesheet = document.getElementById("bulma-css");
+const htmlTag = document.querySelector("html");
+
+// We include the dark stylesheet in base template to include the rel="preload",
+// but remove the actual rel="stylesheet" element here because we won't need it.
+document.getElementById("bulma-css-dark").remove();
+
+// Get saved preference for the site in local storage, optionally accounting
+// for system preference used when a page loads.
+function getCurrentTheme(systemPrefers) {
+ const theme = localStorage.getItem("theme");
+
+ if (theme !== null && theme !== "")
+ return theme;
+
+ if (systemPrefers !== undefined)
+ return systemPrefers;
+
+ return defaultTheme;
+}
+
+// Disable & enable the correct CSS stylesheets based on chosen theme.
+function setStyleSheets(newTheme) {
+ switch (newTheme) {
+ case "light":
+ stylesheet.href = "/static/css/bulma.css";
+ break;
+ case "dark":
+ stylesheet.href = "/static/css/dark_bulma.css";
+ break;
+ }
+
+ htmlTag.setAttribute("data-theme", newTheme);
+}
+
+// Reflect chosen theme on the switch toggle.
+function toggleThemeSwitch(newTheme) {
+ const switchToggle = document.getElementById("theme-switch");
+ const knob = document.getElementById("theme-knob");
+
+ switch (newTheme) {
+ case "light":
+ knob.classList.remove("dark");
+ knob.classList.add("light");
+ setTimeout(function() {
+ switchToggle.classList.remove("dark");
+ switchToggle.classList.add("light");
+ }, 100);
+ break;
+ case "dark":
+ knob.classList.remove("light");
+ knob.classList.add("dark");
+ setTimeout(function() {
+ switchToggle.classList.remove("light");
+ switchToggle.classList.add("dark");
+ }, 100);
+ break;
+ }
+}
+
+let theme;
+const systemPrefersDark = window.matchMedia("(prefers-color-scheme: dark)");
+
+if (systemPrefersDark.matches)
+ theme = getCurrentTheme("dark");
+else
+ theme = getCurrentTheme();
+
+setStyleSheets(theme);
+
+// Executed when the page has finished loading.
+document.addEventListener("DOMContentLoaded", () => {
+ toggleThemeSwitch(theme);
+
+ systemPrefersDark.addEventListener("change", ({matches: isDark}) => {
+ const newTheme = isDark ? "dark" : "light";
+ // Let the new system preference take precedence over toggle preference
+ // on page reloads.
+ localStorage.removeItem("theme");
+ setStyleSheets(newTheme);
+ toggleThemeSwitch(newTheme);
+ })
+
+ const switchToggle = document.getElementById("theme-switch");
+ switchToggle.addEventListener("click", () => {
+ const newTheme = htmlTag.getAttribute("data-theme") === "light" ? "dark" : "light";
+ localStorage.setItem("theme", newTheme);
+ setStyleSheets(newTheme);
+ toggleThemeSwitch(newTheme);
+ });
+});
diff --git a/pydis_site/templates/base/base.html b/pydis_site/templates/base/base.html
index b7322f12..e497298a 100644
--- a/pydis_site/templates/base/base.html
+++ b/pydis_site/templates/base/base.html
@@ -24,6 +24,8 @@
<title>Python Discord | {% block title %}Website{% endblock %}</title>
{% bulma %}
+ {% bulma 'dark' include_js=False %}
+
{% font_awesome %}
<link rel="stylesheet" href="{% static "css/base/base.css" %}">
{% block head %}{% endblock %}
diff --git a/pydis_site/templates/base/footer.html b/pydis_site/templates/base/footer.html
index 0bc93578..9beb284f 100644
--- a/pydis_site/templates/base/footer.html
+++ b/pydis_site/templates/base/footer.html
@@ -1,5 +1,5 @@
-<footer class="footer has-background-dark has-text-light">
- <div class="content has-text-centered">
+<footer class="footer has-background-grey-darker">
+ <div class="content has-text-centered has-text-grey-lighter">
<p>
Powered by <a href="https://www.linode.com/?r=3bc18ce876ff43ea31f201b91e8e119c9753f085"><span id="linode-logo">Linode</span></a> and <a href="https://www.netcup.eu/"><span id="netcup-logo">netcup</span></a><br>Built with <a href="https://www.djangoproject.com/"><span id="django-logo">django</span></a> and <a href="https://bulma.io"><span id="bulma-logo">Bulma</span></a> <br/> &copy; {% now "Y" %} <span id="pydis-text">Python Discord</span>
</p>
diff --git a/pydis_site/templates/base/navbar.html b/pydis_site/templates/base/navbar.html
index 931693c8..2fcd8ad8 100644
--- a/pydis_site/templates/base/navbar.html
+++ b/pydis_site/templates/base/navbar.html
@@ -1,5 +1,11 @@
{% load static %}
+{% block head %}
+ <link rel="stylesheet" href="{% static "css/base/themes.css" %}">
+ <link href="https://css.gg/css?=|moon|sun" rel="stylesheet">
+ <script src="{% static "js/base/themes.js" %}"></script>
+{% endblock %}
+
<nav class="navbar is-primary" role="navigation" aria-label="main navigation">
<div class="navbar-brand">
@@ -39,7 +45,7 @@
{# YouTube #}
<a class="navbar-item" href="https://youtube.com/pythondiscord">
- <span class="icon is-size-4 is-medium"><i class="fab fa-youtube"></i></span>
+ <span class="icon is-size-4 is-medium is-dark"><i class="fab fa-youtube"></i></span>
<span>&nbsp;YouTube</span>
</a>
@@ -97,12 +103,22 @@
</div>
</div>
- {# Desktop Nav Discord #}
- <div id="discord-btn" class="buttons is-hidden-touch">
+ {# Theme toggle #}
+ <div class="navbar-item">
+ <div id="theme-switch" class="switch dark">
+ <div class="switch-outer"></div>
+ <div class="switch-inner"></div>
+ <i class="theme-icon light gg-sun"></i>
+ <div id="theme-knob" class="knob dark"></div>
+ <i class="theme-icon dark gg-moon"></i>
+ </div>
+ </div>
+
+ {# Desktop Nav Discord #}
+ <div id="discord-btn" class="buttons is-hidden-touch is-white">
<a href="https://discord.gg/python" class="button is-large is-primary">Discord</a>
</div>
</div>
-
</div>
</nav>
diff --git a/pydis_site/templates/content/listing.html b/pydis_site/templates/content/listing.html
index bbdd54b0..e2c27b17 100644
--- a/pydis_site/templates/content/listing.html
+++ b/pydis_site/templates/content/listing.html
@@ -18,7 +18,7 @@
{% block page_content %}
{# Nested Categories #}
{% for category, data in categories.items %}
- <div class="box" style="max-width: 800px;">
+ <div class="box has-background-white" style="max-width: 800px;">
<span class="icon is-size-4 is-medium">
<i class="{{ data.icon|default:"fas fa-folder" }} is-size-3 is-black has-icon-padding" aria-hidden="true"></i>
</span>
@@ -32,7 +32,7 @@
{# Single Pages #}
{% for page, data in pages.items %}
- <div class="box" style="max-width: 800px;">
+ <div class="box has-background-white" style="max-width: 800px;">
<span class="icon is-size-4 is-medium">
<i class="{{ data.icon|default:"fab fa-python" }} is-size-3 is-black has-icon-padding" aria-hidden="true"></i>
</span>
diff --git a/pydis_site/templates/content/page.html b/pydis_site/templates/content/page.html
index 679ecec6..0d7087dd 100644
--- a/pydis_site/templates/content/page.html
+++ b/pydis_site/templates/content/page.html
@@ -8,7 +8,7 @@
</div>
<div class="column">
{% if toc %}
- <div class="box">
+ <div class="box has-background-white-bis">
<p class="menu-label">Table of Contents</p>
<ul class="menu-list toc">
{{ toc|safe }}
diff --git a/pydis_site/templates/events/index.html b/pydis_site/templates/events/index.html
index 071feb35..4b1ae2bd 100644
--- a/pydis_site/templates/events/index.html
+++ b/pydis_site/templates/events/index.html
@@ -7,7 +7,7 @@
{% endblock %}
{% block event_content %}
- <div class="box">
+ <div class="box has-background-white">
<h2 class="title is-4"><a href="{% url "events:page" path="code-jams" %}">Code Jams</a></h2>
<p>Every year we hold a community-wide Summer Code Jam. For this event, members of our community are assigned to teams to collaborate and create something amazing using a technology we picked for them. One such technology that was picked for the Summer 2021 Code Jam was text user interfaces (TUIs), where teams could pick from a pre-approved list of frameworks.</p>
<p>To help fuel the creative process, we provide a specific theme, like <strong>Think Inside the Box</strong> or <strong>Early Internet</strong>. At the end of the Code Jam, the projects are judged by Python Discord server staff members and guest judges from the larger Python community. The judges will consider creativity, code quality, teamwork, and adherence to the theme.</p>
@@ -15,7 +15,7 @@
<iframe style="max-width: 100%;" width="560" height="315" src="https://www.youtube.com/embed/8fbZsGrqBzo" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
</div>
- <div class="box">
+ <div class="box has-background-white">
<h2 class="title is-4">PyWeek</h2>
<div class="columns is-3" style="--columnGap: 0.75rem;">
<div class="column">
@@ -41,7 +41,7 @@
</div>
</div>
- <div class="box">
+ <div class="box has-background-white">
<h2 class="title is-4">Advent of Code</h2>
<div class="columns is-3" style="--columnGap: 0.75rem;">
<div class="column">
@@ -69,7 +69,7 @@
</div>
</div>
- <div class="box">
+ <div class="box has-background-white">
<h2 class="title is-4">Game Jam</h2>
<div class="columns is-3" style="--columnGap: 0.75rem;">
<div class="column">
diff --git a/pydis_site/templates/events/pages/code-jams/10/_index.html b/pydis_site/templates/events/pages/code-jams/10/_index.html
index 388f0df0..372aa805 100644
--- a/pydis_site/templates/events/pages/code-jams/10/_index.html
+++ b/pydis_site/templates/events/pages/code-jams/10/_index.html
@@ -56,7 +56,7 @@
<h3 id="submissions"><a href="#submissions">Submissions</a></h3>
<p>
By the end of the jam, 17 teams made project submissions. Check them all out here:
- <div class="has-text-centered"><a class="button is-link" href="submissions">View Submissions</a></div>
+ <div class="has-text-centered"><a class="button is-primary" href="submissions">View Submissions</a></div>
</p>
<h3 id="important-dates"><a href="#important-dates">Important Dates</a></h3>
@@ -93,9 +93,12 @@
<div class="card mb-4">
<div class="card-content">
<div class="media">
- <div class="media-left" style="max-width:150px">
+ <div class="media-left sponsor light-image" style="max-width:150px">
<img src="{% static "images/sponsors/jetbrains.png" %}" alt="JetBrains">
</div>
+ <div class="media-left sponsor dark-image" style="max-width:150px">
+ <img src="{% static "images/sponsors_dark/jetbrains.png" %}" alt="JetBrains">
+ </div>
<div class="media-content">
<p class="subtitle has-link"><a href="https://www.jetbrains.com/" target="_blank" rel="noopener">JetBrains</a></p>
<p class="is-italic">
diff --git a/pydis_site/templates/events/pages/code-jams/8/_index.html b/pydis_site/templates/events/pages/code-jams/8/_index.html
index 74e0ad4a..2d197199 100644
--- a/pydis_site/templates/events/pages/code-jams/8/_index.html
+++ b/pydis_site/templates/events/pages/code-jams/8/_index.html
@@ -65,7 +65,7 @@
<h3 id="submissions"><a href="#submissions">Submissions</a></h3>
<p>
63 teams started out on July 9th 2021. By the end of the jam, 51 teams made project submissions. Check them all out here:
- <div class="has-text-centered"><a class="button is-link" href="submissions">View Submissions</a></div>
+ <div class="has-text-centered"><a class="button is-primary" href="submissions">View Submissions</a></div>
</p>
<h3 id="important-dates"><a href="#important-dates">Important Dates</a></h3>
@@ -91,7 +91,7 @@
The qualifier is a coding challenge that you are required to complete before registering for the code jam.
This is meant as a basic assessment of your skills to ensure you have enough Python knowledge to effectively contribute in a team environment.
</p>
- <p class="has-text-centered"><a class="button is-link" href="https://github.com/python-discord/cj8-qualifier" target="_blank" rel="noopener">View the Qualifier</a></p>
+ <p class="has-text-centered"><a class="button is-primary" href="https://github.com/python-discord/cj8-qualifier" target="_blank" rel="noopener">View the Qualifier</a></p>
<p>
Please note the requirements for the qualifier.
<ul>
@@ -108,11 +108,12 @@
to provide our prizes as well.
</p>
<!-- This is going to be the sponsor section -->
- <div class="card mb-4">
+ <div class="card mb-4 has-background-white">
<div class="card-content">
<div class="media">
- <div class="media-left" style="max-width:150px">
- <img src="{% static "images/events/DO_Logo_Vertical_Blue.png" %}" alt="Digital Ocean">
+ <div class="media-left sponsor" style="max-width:150px">
+ <img class="light-image" src="{% static "images/events/logos/DO_Logo_Vertical_Blue.png" %}" alt="Digital Ocean">
+ <img class="dark-image" src="{% static "images/events/logos_dark/DO_Logo_Vertical_White.png" %}" alt="Digital Ocean">
</div>
<div class="media-content">
<p class="subtitle has-link"><a href="https://www.digitalocean.com/" target="_blank" rel="noopener">DigitalOcean</a></p>
@@ -127,11 +128,12 @@
</div>
</div>
- <div class="card mb-4">
+ <div class="card mb-4 has-background-white">
<div class="card-content">
<div class="media">
- <div class="media-left" style="max-width:150px">
- <img src="{% static "images/sponsors/jetbrains.png" %}" alt="JetBrains">
+ <div class="media-left sponsor" style="max-width:150px">
+ <img class="light-image" src="{% static "images/sponsors/jetbrains.png" %}" alt="JetBrains">
+ <img class="dark-image" src="{% static "images/sponsors_dark/jetbrains.png" %}" alt="JetBrains">
</div>
<div class="media-content">
<p class="subtitle has-link"><a href="https://www.jetbrains.com/" target="_blank" rel="noopener">JetBrains</a></p>
@@ -146,11 +148,11 @@
</div>
</div>
</div>
- <div class="card mb">
+ <div class="card mb has-background-white">
<div class="card-content">
<div class="media">
- <div class="media-left" style="max-width:150px">
- <img src="{% static "images/events/Tabnine.png" %}" alt="Tabnine">
+ <div class="media-left sponsor" style="max-width:150px">
+ <img src="{% static "images/events/logos/Tabnine.png" %}" alt="Tabnine">
</div>
<div class="media-content">
<p class="subtitle has-link"><a href="https://www.tabnine.com/now?utm_source=discord&utm_medium=Ins&utm_campaign=PythonDis" target="_blank" rel="noopener">Tabnine</a></p>
diff --git a/pydis_site/templates/events/pages/code-jams/9/_index.html b/pydis_site/templates/events/pages/code-jams/9/_index.html
index 5c094b22..68e377c9 100644
--- a/pydis_site/templates/events/pages/code-jams/9/_index.html
+++ b/pydis_site/templates/events/pages/code-jams/9/_index.html
@@ -58,7 +58,7 @@
<h3 id="submissions"><a href="#submissions">Submissions</a></h3>
<p>
By the end of the jam, 20+ teams made project submissions. Check them all out here:
- <div class="has-text-centered"><a class="button is-link" href="submissions">View Submissions</a></div>
+ <div class="has-text-centered"><a class="button is-primary" href="submissions">View Submissions</a></div>
</p>
<h3 id="important-dates"><a href="#important-dates">Important Dates</a></h3>
@@ -77,7 +77,7 @@
The qualifier is a coding challenge that you are required to complete before registering for the code jam.
This is meant as a basic assessment of your skills to ensure you have enough Python knowledge to effectively contribute in a team environment.
</p>
- <p class="has-text-centered"><a class="button is-link" href="https://github.com/python-discord/code-jam-qualifier-9/" target="_blank" rel="noopener">View the Qualifier</a></p>
+ <p class="has-text-centered"><a class="button is-primary" href="https://github.com/python-discord/code-jam-qualifier-9/" target="_blank" rel="noopener">View the Qualifier</a></p>
<p>
Please note the requirements for the qualifier.
<ul>
@@ -104,8 +104,9 @@
<div class="card mb-4">
<div class="card-content">
<div class="media">
- <div class="media-left" style="max-width:150px">
- <img src="{% static "images/events/DO_Logo_Vertical_Blue.png" %}" alt="Digital Ocean">
+ <div class="media-left sponsor" style="max-width:150px">
+ <img class="light-image" src="{% static "images/events/logos/DO_Logo_Vertical_Blue.png" %}" alt="Digital Ocean">
+ <img class="dark-image" src="{% static "images/events/logos_dark/DO_Logo_Vertical_White.png" %}" alt="Digital Ocean">
</div>
<div class="media-content">
<p class="subtitle has-link"><a href="https://www.digitalocean.com/" target="_blank" rel="noopener">DigitalOcean</a></p>
@@ -123,8 +124,9 @@
<div class="card mb-4">
<div class="card-content">
<div class="media">
- <div class="media-left" style="max-width:150px">
- <img src="{% static "images/sponsors/jetbrains.png" %}" alt="JetBrains">
+ <div class="media-left sponsor" style="max-width:150px">
+ <img class="light-image" src="{% static "images/sponsors/jetbrains.png" %}" alt="JetBrains">
+ <img class="dark-image" src="{% static "images/sponsors_dark/jetbrains.png" %}" alt="JetBrains">
</div>
<div class="media-content">
<p class="subtitle has-link"><a href="https://www.jetbrains.com/" target="_blank" rel="noopener">JetBrains</a></p>
@@ -143,8 +145,9 @@
<div class="card mb">
<div class="card-content">
<div class="media">
- <div class="media-left" style="max-width:150px">
- <img src="{% static "images/events/Replit.png" %}" alt="Replit">
+ <div class="media-left sponsor" style="max-width:150px">
+ <img class="light-image" src="{% static "images/events/logos/Replit.png" %}" alt="Replit">
+ <img class="dark-image" src="{% static "images/events/logos_dark/Replit.png" %}" alt="Replit">
</div>
<div class="media-content">
<p class="subtitle has-link"><a href="https://www.replit.com" target="_blank" rel="noopener">Replit</a></p>
diff --git a/pydis_site/templates/events/sidebar/code-jams/6.html b/pydis_site/templates/events/sidebar/code-jams/6.html
index 95a1f247..d41986a5 100644
--- a/pydis_site/templates/events/sidebar/code-jams/6.html
+++ b/pydis_site/templates/events/sidebar/code-jams/6.html
@@ -1,6 +1,20 @@
<div class="box">
<img src="https://raw.githubusercontent.com/python-discord/branding/master/events/winer_code_jam_2020/code%20jam%206%20-%20website%20banner.png" alt="">
<p class="menu-label">Sponsors:</p>
- <p><a href="https://do.co/devmeetup" target="_new"><img src="https://d9hhrg4mnvzow.cloudfront.net/try.digitalocean.com/developer-cloud/3f06d1cb-do-logo-blue-svg.svg" style="width: 100%;" alt=""></a></p>
- <p><a href="https://jetbrains.com" target="_new"><img src="https://pythondiscord.com/static/images/sponsors/jetbrains.png" alt=""></a></p>
+ <p>
+ <div class="sponsor">
+ <a href="https://do.co/devmeetup" target="_new">
+ <img class="light-image" src="/static/images/events/logos/DO_Logo_Vertical_Blue.png" style="width: 100%;" alt="">
+ <img class="dark-image" src="/static/images/events/logos_dark/DO_Logo_Vertical_White.png" style="width: 100%;" alt="">
+ </a>
+ </div>
+ </p>
+ <p>
+ <div class="sponsor">
+ <a href="https://jetbrains.com" target="_new">
+ <img class="light-image" src="/static/images/sponsors/jetbrains.png" alt="Jetbrains">
+ <img class="dark-image" src="/static/images/sponsors_dark/jetbrains.png" alt="Jetbrains">
+ </a>
+ </div>
+ </p>
</div>
diff --git a/pydis_site/templates/events/sidebar/code-jams/7.html b/pydis_site/templates/events/sidebar/code-jams/7.html
index 4aefdbd9..89c90ea9 100644
--- a/pydis_site/templates/events/sidebar/code-jams/7.html
+++ b/pydis_site/templates/events/sidebar/code-jams/7.html
@@ -3,10 +3,16 @@
<div class="box">
<img src="https://raw.githubusercontent.com/python-discord/branding/master/jams/summer_code_jam_2020/summer%20cj%202020%20discord%20banner.png" alt="Summer Code Jam 2020">
<p class="menu-label">Sponsors</p>
- <a href="https://www.djangoproject.com/" target="_blank">
- <img src="https://static.djangoproject.com/img/logos/django-logo-positive.png" alt="Django">
- </a>
- <a href="https://jetbrains.com" target="_blank">
- <img src="{% static "images/sponsors/jetbrains.png" %}" alt="JetBrains">
- </a>
+ <div class="sponsor">
+ <a href="https://www.djangoproject.com/" target="_blank">
+ <img class="light-image" src="https://static.djangoproject.com/img/logos/django-logo-positive.png" alt="Django">
+ <img class="dark-image" src="/static/images/events/logos_dark/django.png" alt="Django">
+ </a>
+ </div>
+ <div class="sponsor">
+ <a href="https://jetbrains.com" target="_blank">
+ <img class="light-image" src="{% static "images/sponsors/jetbrains.png" %}" alt="JetBrains">
+ <img class="dark-image" src="{% static "images/sponsors_dark/jetbrains.png" %}" alt="JetBrains">
+ </a>
+ </div>
</div>
diff --git a/pydis_site/templates/events/sidebar/code-jams/8.html b/pydis_site/templates/events/sidebar/code-jams/8.html
index 36fad680..a72da760 100644
--- a/pydis_site/templates/events/sidebar/code-jams/8.html
+++ b/pydis_site/templates/events/sidebar/code-jams/8.html
@@ -1,5 +1,5 @@
{% load static %}
-<div class="panel">
+<div class="panel is-primary has-background-white">
<p class="panel-heading">Important Links</p>
<a class="panel-block has-text-link" href="{% url "events:page" path="code-jams/8/rules" %}">Rules</a>
<a class="panel-block has-text-link" href="{% url "events:page" path="code-jams/8/frameworks" %}">Approved Frameworks</a>
@@ -8,16 +8,24 @@
<a class="panel-block has-text-link" href="{% url "events:page" path="code-jams/code-style-guide" %}">The Code Style Guide</a>
</ul>
</div>
-<div class="box">
+<div class="box has-background-white">
<img src="{% static "images/events/summer_code_jam_2021/banner.png" %}" alt="Summer Code Jam 2021">
<h4 class="menu-label">Our Sponsors</h4>
- <a href="https://www.digitalocean.com/" target="_blank">
- <img src="{% static "images/events/DO_Logo_Vertical_Blue.png" %}" alt="Digital Ocean">
- </a>
- <a href="https://jetbrains.com" target="_blank">
- <img src="{% static "images/sponsors/jetbrains.png" %}" alt="JetBrains">
- </a>
- <a href="https://www.tabnine.com/now?utm_source=discord&utm_medium=Ins&utm_campaign=PythonDis" target="_blank">
- <img src="{% static "images/events/Tabnine.png" %}" alt="Tabnine">
- </a>
+ <div class="sponsor">
+ <a href="https://www.digitalocean.com/" target="_blank">
+ <img class="light-image" src="{% static "images/events/logos/DO_Logo_Vertical_Blue.png" %}" alt="Digital Ocean">
+ <img class="dark-image" src="{% static "images/events/logos_dark/DO_Logo_Vertical_White.png" %}" alt="Digital Ocean">
+ </a>
+ </div>
+ <div class="sponsor">
+ <a href="https://jetbrains.com" target="_blank">
+ <img class="light-image" src="{% static "images/sponsors/jetbrains.png" %}" alt="JetBrains">
+ <img class="dark-image" src="{% static "images/sponsors_dark/jetbrains.png" %}" alt="JetBrains">
+ </a>
+ </div>
+ <div class="sponsor">
+ <a href="https://www.tabnine.com/now?utm_source=discord&utm_medium=Ins&utm_campaign=PythonDis" target="_blank">
+ <img src="{% static "images/events/logos/Tabnine.png" %}" alt="Tabnine">
+ </a>
+ </div>
</div>
diff --git a/pydis_site/templates/events/sidebar/code-jams/9.html b/pydis_site/templates/events/sidebar/code-jams/9.html
index 2351973f..f69d388b 100644
--- a/pydis_site/templates/events/sidebar/code-jams/9.html
+++ b/pydis_site/templates/events/sidebar/code-jams/9.html
@@ -9,13 +9,22 @@
<div class="box">
<img src="{% static "images/events/summer_code_jam_2022/site_banner.png" %}" alt="Summer Code Jam 2022">
<h4 class="menu-label">Our Sponsors</h4>
- <a href="https://www.digitalocean.com/" target="_blank">
- <img src="{% static "images/events/DO_Logo_Vertical_Blue.png" %}" alt="Digital Ocean">
- </a>
- <a href="https://jetbrains.com" target="_blank">
- <img src="{% static "images/sponsors/jetbrains.png" %}" alt="JetBrains">
- </a>
- <a href="https://replit.com/" target="_blank">
- <img src="{% static "images/events/Replit.png" %}" alt="Replit">
- </a>
+ <div class="sponsor">
+ <a href="https://www.digitalocean.com/" target="_blank">
+ <img class="light-image" src="{% static "images/events/logos/DO_Logo_Vertical_Blue.png" %}" alt="Digital Ocean">
+ <img class="dark-image" src="{% static "images/events/logos_dark/DO_Logo_Vertical_White.png" %}" alt="Digital Ocean">
+ </a>
+ </div>
+ <div class="sponsor">
+ <a href="https://jetbrains.com" target="_blank">
+ <img class="light-image" src="{% static "images/sponsors/jetbrains.png" %}" alt="JetBrains">
+ <img class="dark-image" src="{% static "images/sponsors_dark/jetbrains.png" %}" alt="JetBrains">
+ </a>
+ </div>
+ <div class="sponsor">
+ <a href="https://replit.com/" target="_blank">
+ <img class="light-image" src="{% static "images/events/logos/Replit.png" %}" alt="Replit">
+ <img class="dark-image" src="{% static "images/events/logos_dark/Replit.png" %}" alt="Replit">
+ </a>
+ </div>
</div>
diff --git a/pydis_site/templates/events/sidebar/game-jams/2020.html b/pydis_site/templates/events/sidebar/game-jams/2020.html
index 30042d2b..445132e6 100644
--- a/pydis_site/templates/events/sidebar/game-jams/2020.html
+++ b/pydis_site/templates/events/sidebar/game-jams/2020.html
@@ -1,6 +1,10 @@
<div class="box">
<p class="menu-label">Partners</p>
- <p><a href="https://arcade.academy/" target="_new"><img src="https://i.imgur.com/CtY3Siv.png" style="width: 100%;" alt=""></a></p>
+ <p>
+ <div class="sponsor">
+ <a href="https://arcade.academy/" target="_new"><img src="https://i.imgur.com/CtY3Siv.png" style="width: 100%;" alt=""></a>
+ </div>
+ </p>
</div>
<div class="box">
diff --git a/pydis_site/templates/home/index.html b/pydis_site/templates/home/index.html
index d246190b..78ed862c 100644
--- a/pydis_site/templates/home/index.html
+++ b/pydis_site/templates/home/index.html
@@ -92,7 +92,7 @@
{# Showcase box #}
<section id="showcase" class="column is-half-desktop has-text-centered">
- <article class="box">
+ <article class="box has-background-white">
<header class="title">Interactive timeline</header>
@@ -138,9 +138,9 @@
<div class="column is-one-third-desktop is-half-tablet">
<a href="https://github.com/{{ repo.repo_name }}">
- <article class="card">
+ <article class="card has-background-white">
- <header class="card-header">
+ <header class="card-header is-white">
<span class="card-header-icon">
<span class="icon"><i class="fab fa-github"></i></span>
</span>
@@ -181,36 +181,48 @@
{% endif %}
<!-- Sponsors -->
- <section id="sponsors" class="hero is-light">
+ <section id="sponsors" class="hero has-background-white-ter">
<div class="hero-body">
<div class="container">
<h1 class="title is-6 has-text-grey">
Sponsors
</h1>
- <div class="columns is-mobile is-multiline">
- <a href="https://www.netcup.eu/" class="column is-narrow">
- <img src="{% static "images/sponsors/netcup.png" %}" alt="netcup" loading="lazy"/>
+ <div class="columns is-vcentered">
+ <a href="https://www.netcup.eu/" class="column is-one-third">
+ <img class="light-image" src="{% static "images/sponsors/netcup.png" %}" alt="netcup" loading="lazy"/>
+ <img class="dark-image" src="{% static "images/sponsors_dark/netcup.png" %}" alt="netcup" loading="lazy"/>
</a>
- <a href="https://www.linode.com/?r=3bc18ce876ff43ea31f201b91e8e119c9753f085" class="column is-narrow">
- <img src="{% static "images/sponsors/linode.png" %}" alt="Linode" loading="lazy"/>
+ <a href="https://www.linode.com/?r=3bc18ce876ff43ea31f201b91e8e119c9753f085" class="column is-one-third">
+ <img class="light-image" src="{% static "images/sponsors/linode.png" %}" alt="Linode" loading="lazy"/>
+ <img class="dark-image" src="{% static "images/sponsors_dark/linode.png" %}" alt="Linode" loading="lazy"/>
</a>
- <a href="https://jetbrains.com" class="column is-narrow">
- <img src="{% static "images/sponsors/jetbrains.png" %}" alt="JetBrains" loading="lazy"/>
+ <a href="https://jetbrains.com" class="column is-one-third">
+ <img class="light-image" src="{% static "images/sponsors/jetbrains.png" %}" alt="JetBrains" loading="lazy"/>
+ <img class="dark-image" src="{% static "images/sponsors_dark/jetbrains.png" %}" alt="JetBrains" loading="lazy"/>
</a>
- <a href="https://sentry.io" class="column is-narrow">
- <img src="{% static "images/sponsors/sentry.png" %}" alt="Sentry" loading="lazy"/>
+ </div>
+ <div class="columns is-vcentered">
+ <a href="https://sentry.io" class="column is-one-third">
+ <img class="light-image" src="{% static "images/sponsors/sentry.png" %}" alt="Sentry" loading="lazy"/>
+ <img class="dark-image" src="{% static "images/sponsors_dark/sentry.png" %}" alt="Sentry" loading="lazy"/>
</a>
- <a href="https://notion.so" class="column is-narrow">
- <img src="{% static "images/sponsors/notion.png" %}" alt="Notion" loading="lazy"/>
+ <a href="https://notion.so" class="column is-one-third">
+ <img class="light-image" src="{% static "images/sponsors/notion.png" %}" alt="Notion" loading="lazy"/>
+ <img class="dark-image" src="{% static "images/sponsors_dark/notion.png" %}" alt="Notion" loading="lazy"/>
</a>
- <a href="https://streamyard.com" class="column is-narrow">
- <img src="{% static "images/sponsors/streamyard.png" %}" alt="StreamYard" loading="lazy"/>
+ <a href="https://streamyard.com" class="column is-one-third">
+ <img class="light-image" src="{% static "images/sponsors/streamyard.png" %}" alt="StreamYard" loading="lazy"/>
+ <img class="dark-image" src="{% static "images/sponsors/streamyard.png" %}" alt="StreamYard" loading="lazy"/>
</a>
- <a href="https://www.netlify.com/" class="column is-narrow">
- <img src="{% static "images/sponsors/netlify.png" %}" alt="Netlify" loading="lazy"/>
+ </div>
+ <div class="columns is-vcentered">
+ <a href="https://www.netlify.com/" class="column is-half">
+ <img class="light-image" src="{% static "images/sponsors/netlify.png" %}" alt="Netlify" loading="lazy"/>
+ <img class="dark-image" src="{% static "images/sponsors_dark/netlify.png" %}" alt="Netlify" loading="lazy"/>
</a>
- <a href="https://www.cloudflare.com/" class="column is-narrow">
- <img src="{% static "images/sponsors/cloudflare.png" %}" alt="Cloudflare" loading="lazy"/>
+ <a href="https://www.cloudflare.com/" class="column is-half">
+ <img class="light-image" src="{% static "images/sponsors/cloudflare.png" %}" alt="Cloudflare" loading="lazy"/>
+ <img class="dark-image" src="{% static "images/sponsors_dark/cloudflare.png" %}" alt="Cloudflare" loading="lazy"/>
</a>
</div>
</div>
diff --git a/pydis_site/templates/home/timeline.html b/pydis_site/templates/home/timeline.html
index 7fc6f325..6c627033 100644
--- a/pydis_site/templates/home/timeline.html
+++ b/pydis_site/templates/home/timeline.html
@@ -18,9 +18,9 @@
<i class="fa fa-comments"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Switch to new paste service</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Switch to new paste service</h2>
+ <p class="color-contrast-medium has-text-dark">
We migrate over to <a href="https://github.com/supakeen/pinnwand">pinnwand</a>
as the service that powers our paste bin over at
<a href="https://paste.pythondiscord.com">https://paste.pythondiscord.com/</a>.
@@ -29,7 +29,7 @@
Python!
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Jul 11th, 2023</span>
+ <span class="cd-timeline__date has-text-grey">Jul 11th, 2023</span>
</div>
</div>
</div>
@@ -39,9 +39,9 @@
<img src="{% static "images/timeline/cd-icon-picture.svg" %}" alt="Picture">
</div>
- <div class="cd-timeline__content text-component">
- <h2>Retirement of Joe and Sebastiaan</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Retirement of Joe and Sebastiaan</h2>
+ <p class="color-contrast-medium has-text-dark">
Having been at the helm of Python Discord for over 5 and 3 years respectively, Joe and
Sebastiaan retire and step down. They gain the @Founders role and continue as advisors
to the @Directors, the new name of the original @Owners role.
@@ -49,7 +49,7 @@
At the same time, Mina and Zig join Leon as co-directors.
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Jan 30th, 2023</span>
+ <span class="cd-timeline__date has-text-grey">Jan 30th, 2023</span>
</div>
</div>
</div>
@@ -59,15 +59,15 @@
<i class="fa fa-comments"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Switch to forum-based help system</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Switch to forum-based help system</h2>
+ <p class="color-contrast-medium has-text-dark">
We migrate our help system to use a forum channel, retiring our home-grown rotating help
system after 3 years of service and nearly 500,000 help sessions. Forum channels offer
a better experience as members can create their own dedicated thread in a discoverable place.
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Nov 25th, 2022</span>
+ <span class="cd-timeline__date has-text-grey">Nov 25th, 2022</span>
</div>
</div>
</div>
@@ -77,9 +77,9 @@
<img src="{% static "images/timeline/cd-icon-picture.svg" %}" alt="Picture">
</div>
- <div class="cd-timeline__content text-component">
- <h2>Python 3.11 Release Stream</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Python 3.11 Release Stream</h2>
+ <p class="color-contrast-medium has-text-dark">
With the Python 3.10 Release Stream being such a success, we brought it back for the
release of Python 3.11. Hosted by Leon, and CPython 3.11 Release Manager, Pablo Galindo,
they were joined by other CPython Core Developers. Together, they discuss the specific
@@ -93,7 +93,7 @@
</div>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Oct 24th, 2022</span>
+ <span class="cd-timeline__date has-text-grey">Oct 24th, 2022</span>
</div>
</div>
</div>
@@ -103,9 +103,9 @@
<i class="fa fa-dice"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Summer Code Jam 2022 (CJ9)</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Summer Code Jam 2022 (CJ9)</h2>
+ <p class="color-contrast-medium has-text-dark">
We host the 9th Code Jam. This year, teams had to use <b>websockets</b> to create a
project based on the theme, <b>It's not a bug, it's a feature</b>. In all, 24 teams
submitted their projects. At the end, we held a livestream demoing the top 10 projects
@@ -119,7 +119,7 @@
</div>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">July 21st, 2022</span>
+ <span class="cd-timeline__date has-text-grey">July 21st, 2022</span>
</div>
</div>
</div>
@@ -129,14 +129,14 @@
<i class="fa fa-handshake"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Partnership with pyqtgraph</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Partnership with pyqtgraph</h2>
+ <p class="color-contrast-medium has-text-dark">
The <code>#pyqtgraph</code> channel is created for the Scientific Graphics and GUI
library pyqtgraph, joining <code>#black-formatter</code>.
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">May 19th, 2022</span>
+ <span class="cd-timeline__date has-text-grey">May 19th, 2022</span>
</div>
</div>
</div>
@@ -146,14 +146,14 @@
<i class="fa fa-robot"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Addition of @Sir Robin</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Addition of @Sir Robin</h2>
+ <p class="color-contrast-medium has-text-dark">
Our arsenal of bots grows! We add @Sir Robin to power and manage all of our future
events and to support the Events Team.
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Feb 21st, 2022</span>
+ <span class="cd-timeline__date has-text-grey">Feb 21st, 2022</span>
</div>
</div>
</div>
@@ -163,15 +163,15 @@
<i class="fa fa-question"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Trivia Night</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Trivia Night</h2>
+ <p class="color-contrast-medium has-text-dark">
How well do you know Python inside out? Members got to find out in a Trivia Night event.
Contestants were given questions about Python's internals, its development, and more.
To win, contestants had to get the most questions right while being fast to answer.
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Feb 12th, 2022</span>
+ <span class="cd-timeline__date has-text-grey">Feb 12th, 2022</span>
</div>
</div>
</div>
@@ -181,15 +181,15 @@
<img src="{% static "images/timeline/cd-icon-picture.svg" %}" alt="Picture">
</div>
- <div class="cd-timeline__content text-component">
- <h2>Creation of Events Team</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Creation of Events Team</h2>
+ <p class="color-contrast-medium has-text-dark">
We form the Events Team to organise and run future events. Led by Kat and comprised by
staff members, the goal of the team is to ultimately host more events in a more
sustainable way.
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Feb 9th, 2022</span>
+ <span class="cd-timeline__date has-text-grey">Feb 9th, 2022</span>
</div>
</div>
</div>
@@ -200,9 +200,9 @@
<i class="fa fa-code"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Deployment of Smarter Resources</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Deployment of Smarter Resources</h2>
+ <p class="color-contrast-medium has-text-dark">
We gave our resources pages some much needed love and
<a href="https://www.pythondiscord.com/resources/">
reorganised them into a single page</a>,
@@ -210,7 +210,7 @@
ones that relate to your interests, experience, learning style, and ability to pay!
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Feb 2nd, 2022</span>
+ <span class="cd-timeline__date has-text-grey">Feb 2nd, 2022</span>
</div>
</div>
</div>
@@ -220,14 +220,14 @@
<i class="fa fa-users"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>We hit 300 000 members!</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">We hit 300 000 members!</h2>
+ <p class="color-contrast-medium has-text-dark">
Thanks to an increasing growth rate, Python Discord's membership count doubled from
150,000 to 300,000 in less than a year!
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Jan 19, 2022</span>
+ <span class="cd-timeline__date has-text-grey">Jan 19, 2022</span>
</div>
</div>
</div>
@@ -237,9 +237,9 @@
<img src="{% static "images/timeline/cd-icon-picture.svg" %}" alt="Picture">
</div>
- <div class="cd-timeline__content text-component">
- <h2>We host the Python 3.10 Release Stream</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">We host the Python 3.10 Release Stream</h2>
+ <p class="color-contrast-medium has-text-dark">
Leon and Pablo Galindo, CPython Core Developer and Release Manager, host the Python 3.10
Release Stream, joined by other core devs Carol Willing, Irit Katriel, Łukasz Langa, and
Brandt Bucher. They talked in-depth about the new features introduced in 3.10, the
@@ -253,7 +253,7 @@
</div>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Oct 4th, 2021</span>
+ <span class="cd-timeline__date has-text-grey">Oct 4th, 2021</span>
</div>
</div>
</div>
@@ -263,15 +263,15 @@
<i class="fa fa-handshake"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Partnership with Black</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Partnership with Black</h2>
+ <p class="color-contrast-medium has-text-dark">
We partner with the uncompromising code formatter project, Black, who were looking for a
new home for their real-time chat. Python Discord ended up being that home, resulting in
the creation of the <code>#black-formatter</code> channel.
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">May 24th, 2021</span>
+ <span class="cd-timeline__date has-text-grey">May 24th, 2021</span>
</div>
</div>
</div>
@@ -281,9 +281,9 @@
<i class="fa fa-dice"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Summer Code Jam 2021 (CJ8)</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Summer Code Jam 2021 (CJ8)</h2>
+ <p class="color-contrast-medium has-text-dark">
We host the 8th now-annual Code Jam. Teams had to create a program with an text-based user
interface (TUI), all designed around the theme of “think inside the box.” Ultimately, 51
teams submitted projects.
@@ -293,7 +293,7 @@
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">July 9, 2021</span>
+ <span class="cd-timeline__date has-text-grey">July 9, 2021</span>
</div>
</div>
</div>
@@ -303,20 +303,20 @@
<i class="fa fa-palette"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Inaugural run of Pixels</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Inaugural run of Pixels</h2>
+ <p class="color-contrast-medium has-text-dark">
Inspired by the subreddit, r/place, Pixels was our collaborative canvas event held
between May 25 to June 14, providing a beginner-friendly API to paint pixels on a
virtual canvas.
</p>
- <p class="color-contrast-medium">
+ <p class="color-contrast-medium has-text-dark">
Later, we released <a href="https://blog.pythondiscord.com/pixels-summer-2021/">a blog post</a>
summarizing what happened, our motives, and some stories from during development.
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">May 24, 2021</span>
+ <span class="cd-timeline__date has-text-grey">May 24, 2021</span>
</div>
</div>
</div>
@@ -326,9 +326,9 @@
<img src="{% static "images/timeline/cd-icon-picture.svg" %}" alt="Picture">
</div>
- <div class="cd-timeline__content text-component">
- <h2>Owners become PSF Fellows</h2>
- <p class="color-contrast-medium">Joe, Leon, and Sebastiaan
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Owners become PSF Fellows</h2>
+ <p class="color-contrast-medium has-text-dark">Joe, Leon, and Sebastiaan
<a href="https://pyfound.blogspot.com/2021/04/python-software-foundation-fellow.html">
are recognized as Python Software Foundation Fellows
</a>
@@ -337,7 +337,7 @@
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">April 23, 2021</span>
+ <span class="cd-timeline__date has-text-grey">April 23, 2021</span>
</div>
</div>
</div>
@@ -347,9 +347,9 @@
<i class="fa fa-youtube-play"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Summer Code Jam 2020 Highlights</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Summer Code Jam 2020 Highlights</h2>
+ <p class="color-contrast-medium has-text-dark">
We release a new video to our YouTube showing the best projects from the Summer Code Jam 2020.
Better late than never!
</p>
@@ -361,7 +361,7 @@
</div>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Mar 21st, 2021</span>
+ <span class="cd-timeline__date has-text-grey">Mar 21st, 2021</span>
</div>
</div>
</div>
@@ -371,9 +371,9 @@
<i class="fa fa-comment"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>New feature: Weekly discussion channel</h2>
- <p class="color-contrast-medium">Every week (or two weeks), we'll be posting a new topic to discuss in a
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">New feature: Weekly discussion channel</h2>
+ <p class="color-contrast-medium has-text-dark">Every week (or two weeks), we'll be posting a new topic to discuss in a
channel called <b>#weekly-topic-discussion</b>. Our inaugural topic is a PyCon talk by Anthony Shaw called
<b>Wily Python: Writing simpler and more maintainable Python.</b></a>.
</p>
@@ -385,7 +385,7 @@
</div>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Mar 13th, 2021</span>
+ <span class="cd-timeline__date has-text-grey">Mar 13th, 2021</span>
</div>
</div>
</div>
@@ -395,9 +395,9 @@
<i class="fa fa-microphone"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>We're on the Teaching Python podcast!</h2>
- <p class="color-contrast-medium">Leon joins Sean and Kelly on the Teaching Python podcast to discuss how the pandemic has
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">We're on the Teaching Python podcast!</h2>
+ <p class="color-contrast-medium has-text-dark">Leon joins Sean and Kelly on the Teaching Python podcast to discuss how the pandemic has
changed the way we learn, and what role communities like Python Discord can play in this new world.
You can find the episode <a href="https://www.teachingpython.fm/63">at teachingpython.fm</a>.
</p>
@@ -407,7 +407,7 @@
></iframe>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Mar 13th, 2021</span>
+ <span class="cd-timeline__date has-text-grey">Mar 13th, 2021</span>
</div>
</div>
</div>
@@ -417,9 +417,9 @@
<i class="fa fa-microphone"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Leon Sandøy appears on Talk Python To Me</h2>
- <p class="color-contrast-medium">Leon goes on the Talk Python to Me podcast with Michael Kennedy
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Leon Sandøy appears on Talk Python To Me</h2>
+ <p class="color-contrast-medium has-text-dark">Leon goes on the Talk Python to Me podcast with Michael Kennedy
to discuss the history of Python Discord, the critical importance of culture, and how to run a massive
community. You can find the episode <a href="https://talkpython.fm/episodes/show/305/python-community-at-python-discord"> at talkpython.fm</a>.
</p>
@@ -429,7 +429,7 @@
</iframe>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Mar 1st, 2021</span>
+ <span class="cd-timeline__date has-text-grey">Mar 1st, 2021</span>
</div>
</div>
</div>
@@ -439,12 +439,12 @@
<i class="fa fa-users"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>We now have 150,000 members!</h2>
- <p class="color-contrast-medium">Our growth continues to accelerate.</p>
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">We now have 150,000 members!</h2>
+ <p class="color-contrast-medium has-text-dark">Our growth continues to accelerate.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Feb 18th, 2021</span>
+ <span class="cd-timeline__date has-text-grey">Feb 18th, 2021</span>
</div>
</div>
</div>
@@ -454,9 +454,9 @@
<i class="fa fa-music"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>We release The PEP 8 song</h2>
- <p class="color-contrast-medium">We release the PEP 8 song on our YouTube channel, which finds tens of
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">We release The PEP 8 song</h2>
+ <p class="color-contrast-medium has-text-dark">We release the PEP 8 song on our YouTube channel, which finds tens of
thousands of listeners!</p>
<div class="force-aspect-container">
@@ -466,7 +466,7 @@
</div>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">February 8th, 2021</span>
+ <span class="cd-timeline__date has-text-grey">February 8th, 2021</span>
</div>
</div>
</div>
@@ -476,9 +476,9 @@
<i class="fa fa-snowflake-o"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Advent of Code attracts hundreds of participants</h2>
- <p class="color-contrast-medium">
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Advent of Code attracts hundreds of participants</h2>
+ <p class="color-contrast-medium has-text-dark">
A total of 443 Python Discord members sign up to be part of
<a href="https://adventofcode.com/">Eric Wastl's excellent Advent of Code event</a>.
As always, we provide dedicated announcements, scoreboards, bot commands and channels for our members
@@ -487,7 +487,7 @@
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">December 1st - 25th, 2020</span>
+ <span class="cd-timeline__date has-text-grey">December 1st - 25th, 2020</span>
</div>
</div>
</div>
@@ -497,15 +497,15 @@
<i class="fa fa-wrench"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>We migrate all our infrastructure to Kubernetes</h2>
- <p class="color-contrast-medium">As our tech stack grows, we decide to migrate all our services over to a
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">We migrate all our infrastructure to Kubernetes</h2>
+ <p class="color-contrast-medium has-text-dark">As our tech stack grows, we decide to migrate all our services over to a
container orchestration paradigm via Kubernetes. This gives us better control and scalability.
<b>Joe Banks</b> takes on the role as DevOps Lead.
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Nov 29th, 2020</span>
+ <span class="cd-timeline__date has-text-grey">Nov 29th, 2020</span>
</div>
</div>
</div>
@@ -515,14 +515,14 @@
<i class="fa fa-users"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Python Discord hits 100,000 members!</h2>
- <p class="color-contrast-medium">Only six months after hitting 40,000 users, we hit 100,000 users. A
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Python Discord hits 100,000 members!</h2>
+ <p class="color-contrast-medium has-text-dark">Only six months after hitting 40,000 users, we hit 100,000 users. A
monumental milestone,
and one we're very proud of. To commemorate it, we create this timeline.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Oct 22nd, 2020</span>
+ <span class="cd-timeline__date has-text-grey">Oct 22nd, 2020</span>
</div>
</div>
</div>
@@ -532,8 +532,8 @@
<img src="{% static "images/timeline/cd-icon-picture.svg" %}" alt="Picture">
</div>
- <div class="cd-timeline__content text-component">
- <h2>Python Discord hosts the 2020 CPython Core Developer Q&A</h2>
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Python Discord hosts the 2020 CPython Core Developer Q&A</h2>
<div class="force-aspect-container">
<iframe class="force-aspect-content" src="https://www.youtube.com/embed/gXMdfBTcOfQ" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
@@ -541,7 +541,7 @@
</div>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Oct 21st, 2020</span>
+ <span class="cd-timeline__date has-text-grey">Oct 21st, 2020</span>
</div>
</div>
</div>
@@ -551,14 +551,14 @@
<i class="fa fa-handshake"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Python Discord is now the new home of the PyWeek event!</h2>
- <p class="color-contrast-medium">PyWeek, a game jam that has been running since 2005, joins Python
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Python Discord is now the new home of the PyWeek event!</h2>
+ <p class="color-contrast-medium has-text-dark">PyWeek, a game jam that has been running since 2005, joins Python
Discord as one of our official events. Find more information about PyWeek on <a
href="https://pyweek.org/">their official website</a>.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Aug 16th, 2020</span>
+ <span class="cd-timeline__date has-text-grey">Aug 16th, 2020</span>
</div>
</div>
</div>
@@ -568,9 +568,9 @@
<i class="fa fa-dice"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>PyDis summer code jam 2020 with the theme “Early Internet” and Django as the technology</h2>
- <p class="color-contrast-medium">Sponsored by the Django Software Foundation and JetBrains, the Summer
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">PyDis summer code jam 2020 with the theme “Early Internet” and Django as the technology</h2>
+ <p class="color-contrast-medium has-text-dark">Sponsored by the Django Software Foundation and JetBrains, the Summer
Code Jam for 2020 attracts hundreds of participants, and sees the creation of some fantastic
projects. Check them out in our judge stream below:</p>
@@ -581,7 +581,7 @@
</div>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Jul 31st, 2020</span>
+ <span class="cd-timeline__date has-text-grey">Jul 31st, 2020</span>
</div>
</div>
</div>
@@ -591,14 +591,14 @@
<i class="fa fa-chart-bar"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Python Discord Public Statistics are now live</h2>
- <p class="color-contrast-medium">After getting numerous requests to publish beautiful data on member
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Python Discord Public Statistics are now live</h2>
+ <p class="color-contrast-medium has-text-dark">After getting numerous requests to publish beautiful data on member
count and channel use, we create <a href="https://stats.pythondiscord.com/">stats.pythondiscord.com</a> for
all to enjoy.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Jun 4th, 2020</span>
+ <span class="cd-timeline__date has-text-grey">Jun 4th, 2020</span>
</div>
</div>
</div>
@@ -608,14 +608,14 @@
<i class="fa fa-handshake"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Python Discord is now listed on python.org/community</h2>
- <p class="color-contrast-medium">After working towards this goal for months, we finally work out an
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Python Discord is now listed on python.org/community</h2>
+ <p class="color-contrast-medium has-text-dark">After working towards this goal for months, we finally work out an
arrangement with the PSF that allows us to be listed on that most holiest of websites:
https://python.org/. <a href="https://youtu.be/yciX2meIkXI?t=3">There was much rejoicing.</a></p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">May 28th, 2020</span>
+ <span class="cd-timeline__date has-text-grey">May 28th, 2020</span>
</div>
</div>
</div>
@@ -625,14 +625,14 @@
<i class="fa fa-comments"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>ModMail is now live</h2>
- <p class="color-contrast-medium">Having originally planned to write our own ModMail bot from scratch, we
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">ModMail is now live</h2>
+ <p class="color-contrast-medium has-text-dark">Having originally planned to write our own ModMail bot from scratch, we
come across an exceptionally good <a href="https://github.com/kyb3r/modmail">ModMail bot by
kyb3r</a> and decide to just self-host that one instead.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">May 25th, 2020</span>
+ <span class="cd-timeline__date has-text-grey">May 25th, 2020</span>
</div>
</div>
</div>
@@ -642,9 +642,9 @@
<i class="fa fa-gamepad"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>PyDis Game Jam 2020 with the “Three of a Kind” theme and Arcade as the technology</h2>
- <p class="color-contrast-medium">The creator of Arcade, Paul Vincent Craven, joins us as a judge.
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">PyDis Game Jam 2020 with the “Three of a Kind” theme and Arcade as the technology</h2>
+ <p class="color-contrast-medium has-text-dark">The creator of Arcade, Paul Vincent Craven, joins us as a judge.
Several of the Code Jam participants also end up getting involved contributing to the Arcade
repository.</p>
@@ -655,7 +655,7 @@
</div>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Apr 17th, 2020</span>
+ <span class="cd-timeline__date has-text-grey">Apr 17th, 2020</span>
</div>
</div>
</div>
@@ -665,14 +665,14 @@
<i class="fa fa-users"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Python Discord hits 40,000 members, and is now bigger than Liechtenstein.</h2>
- <p class="color-contrast-medium"><img
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Python Discord hits 40,000 members, and is now bigger than Liechtenstein.</h2>
+ <p class="color-contrast-medium has-text-dark"><img
src="https://cdn.discordapp.com/attachments/354619224620138496/699666518476324954/unknown.png">
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Apr 14, 2020</span>
+ <span class="cd-timeline__date has-text-grey">Apr 14, 2020</span>
</div>
</div>
</div>
@@ -682,15 +682,15 @@
<i class="fa fa-comments"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>The new help channel system is live</h2>
- <p class="color-contrast-medium">We release our dynamic help-channel system, which allows you to claim
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">The new help channel system is live</h2>
+ <p class="color-contrast-medium has-text-dark">We release our dynamic help-channel system, which allows you to claim
your very own help channel instead of fighting over the static help channels. We release a <a
href="https://pythondiscord.com/pages/resources/guides/help-channels/">Help Channel Guide</a> to
help our members fully understand how the system works.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Apr 5th, 2020</span>
+ <span class="cd-timeline__date has-text-grey">Apr 5th, 2020</span>
</div>
</div>
</div>
@@ -700,9 +700,9 @@
<i class="fa fa-dice"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>PyDis sixth code jam with the theme “Ancient technology” and the technology Kivy</h2>
- <p class="color-contrast-medium">Our Code Jams are becoming an increasingly big deal, and the Kivy core
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">PyDis sixth code jam with the theme “Ancient technology” and the technology Kivy</h2>
+ <p class="color-contrast-medium has-text-dark">Our Code Jams are becoming an increasingly big deal, and the Kivy core
developers join us to judge the event and help out our members during the event. One of them,
@tshirtman, even joins our staff!</p>
@@ -713,7 +713,7 @@
</div>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Jan 17, 2020</span>
+ <span class="cd-timeline__date has-text-grey">Jan 17, 2020</span>
</div>
</div>
</div>
@@ -723,13 +723,13 @@
<i class="fa fa-users"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>PyDis hits 30,000 members</h2>
- <p class="color-contrast-medium">More than tripling in size since the year before, the community hits
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">PyDis hits 30,000 members</h2>
+ <p class="color-contrast-medium has-text-dark">More than tripling in size since the year before, the community hits
30000 users. At this point, we're probably the largest Python chat community on the planet.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Dec 22nd, 2019</span>
+ <span class="cd-timeline__date has-text-grey">Dec 22nd, 2019</span>
</div>
</div>
</div>
@@ -739,13 +739,13 @@
<img src={% static "images/timeline/cd-icon-picture.svg" %} alt="Picture">
</div>
- <div class="cd-timeline__content text-component">
- <h2>Sebastiaan Zeef becomes an owner</h2>
- <p class="color-contrast-medium">After being a long time active contributor to our projects and the driving
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Sebastiaan Zeef becomes an owner</h2>
+ <p class="color-contrast-medium has-text-dark">After being a long time active contributor to our projects and the driving
force behind many of our events, Sebastiaan Zeef joins the Owners Team alongside Joe & Leon.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Sept 22nd, 2019</span>
+ <span class="cd-timeline__date has-text-grey">Sept 22nd, 2019</span>
</div>
</div>
</div>
@@ -755,14 +755,14 @@
<i class="fa fa-scroll"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>The code of conduct is created</h2>
- <p class="color-contrast-medium">Inspired by the Adafruit, Rust and Django communities, an essential
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">The code of conduct is created</h2>
+ <p class="color-contrast-medium has-text-dark">Inspired by the Adafruit, Rust and Django communities, an essential
community pillar is created; Our <a href="https://pythondiscord.com/pages/code-of-conduct/">Code of
Conduct.</a></p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Oct 26th, 2019</span>
+ <span class="cd-timeline__date has-text-grey">Oct 26th, 2019</span>
</div>
</div>
</div>
@@ -772,14 +772,14 @@
<i class="fa fa-code"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>The Django rewrite of pythondiscord.com is now live!</h2>
- <p class="color-contrast-medium">The site is getting more and more complex, and it's time for a rewrite.
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">The Django rewrite of pythondiscord.com is now live!</h2>
+ <p class="color-contrast-medium has-text-dark">The site is getting more and more complex, and it's time for a rewrite.
We decide to go for a different stack, and build a website based on Django, DRF, Bulma and
PostgreSQL.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Sep 15, 2019</span>
+ <span class="cd-timeline__date has-text-grey">Sep 15, 2019</span>
</div>
</div>
</div>
@@ -789,8 +789,8 @@
<i class="fa fa-users"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>PyDis hits 15,000 members; the “hot ones special” video is released</h2>
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">PyDis hits 15,000 members; the “hot ones special” video is released</h2>
<div class="force-aspect-container">
<iframe class="force-aspect-content" src="https://www.youtube.com/embed/DIBXg8Qh7bA" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
@@ -798,7 +798,7 @@
</div>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Apr 8th, 2019</span>
+ <span class="cd-timeline__date has-text-grey">Apr 8th, 2019</span>
</div>
</div>
</div>
@@ -808,15 +808,15 @@
<i class="fa fa-code"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>django-simple-bulma is released on PyPi</h2>
- <p class="color-contrast-medium">Our very first package on PyPI, <a
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">django-simple-bulma is released on PyPi</h2>
+ <p class="color-contrast-medium has-text-dark">Our very first package on PyPI, <a
href="https://pypi.org/project/django-simple-bulma/">django-simple-bulma</a> is a package that
sets up the Bulma CSS framework for your Django application and lets you configure everything in
settings.py.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Dec 19th, 2018</span>
+ <span class="cd-timeline__date has-text-grey">Dec 19th, 2018</span>
</div>
</div>
</div>
@@ -826,13 +826,13 @@
<i class="fa fa-users"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>PyDis hits 10,000 members</h2>
- <p class="color-contrast-medium">We partner with RLBot, move from GitLab to GitHub, and start putting
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">PyDis hits 10,000 members</h2>
+ <p class="color-contrast-medium has-text-dark">We partner with RLBot, move from GitLab to GitHub, and start putting
together the first Advent of Code event.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Nov 24th, 2018</span>
+ <span class="cd-timeline__date has-text-grey">Nov 24th, 2018</span>
</div>
</div>
</div>
@@ -842,15 +842,15 @@
<i class="fa fa-dice"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>First Hacktoberfest PyDis event; @Sir Lancebot is created</h2>
- <p class="color-contrast-medium">We create a second bot for our community and fill it up with simple,
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">First Hacktoberfest PyDis event; @Sir Lancebot is created</h2>
+ <p class="color-contrast-medium has-text-dark">We create a second bot for our community and fill it up with simple,
fun and relatively easy issues. The idea is to create an approachable arena for our members to cut
their open-source teeth on, and to provide lots of help and hand-holding for those who get stuck.
We're training our members to be productive contributors in the open-source ecosystem.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Oct 1st, 2018</span>
+ <span class="cd-timeline__date has-text-grey">Oct 1st, 2018</span>
</div>
</div>
</div>
@@ -860,14 +860,14 @@
<i class="fa fa-handshake"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>PyDis is now partnered with Discord; the vanity URL discord.gg/python is created</h2>
- <p class="color-contrast-medium">After being rejected for their Partner program several times, we
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">PyDis is now partnered with Discord; the vanity URL discord.gg/python is created</h2>
+ <p class="color-contrast-medium has-text-dark">After being rejected for their Partner program several times, we
finally get approved. The recent partnership with the r/Python subreddit plays a significant role in
qualifying us for this partnership.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Jul 10th, 2018</span>
+ <span class="cd-timeline__date has-text-grey">Jul 10th, 2018</span>
</div>
</div>
</div>
@@ -877,14 +877,14 @@
<i class="fa fa-users"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>PyDis hits 5,000 members and partners with r/Python</h2>
- <p class="color-contrast-medium">As we continue to grow, we approach the r/Python subreddit and ask to
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">PyDis hits 5,000 members and partners with r/Python</h2>
+ <p class="color-contrast-medium has-text-dark">As we continue to grow, we approach the r/Python subreddit and ask to
become their official Discord community. They agree, and we become listed in their sidebar, giving
us yet another source of new members.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Jun 20th, 2018</span>
+ <span class="cd-timeline__date has-text-grey">Jun 20th, 2018</span>
</div>
</div>
</div>
@@ -894,16 +894,16 @@
<i class="fa fa-handshake"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Do You Even Python and PyDis merger</h2>
- <p class="color-contrast-medium">At this point in time, there are only two serious Python communities on
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Do You Even Python and PyDis merger</h2>
+ <p class="color-contrast-medium has-text-dark">At this point in time, there are only two serious Python communities on
Discord - Ours, and one called Do You Even Python. We approach the owners of DYEP with a bold
proposal - let's shut down their community, replace it with links to ours, and in return we will let
their staff join our staff. This gives us a big boost in members, and eventually leads to @eivl and
@Mr. Hemlock joining our Admin team</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Jun 9th, 2018</span>
+ <span class="cd-timeline__date has-text-grey">Jun 9th, 2018</span>
</div>
</div>
</div>
@@ -913,16 +913,16 @@
<i class="fa fa-scroll"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>The privacy policy is created</h2>
- <p class="color-contrast-medium">Since data privacy is quite important to us, we create a privacy page
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">The privacy policy is created</h2>
+ <p class="color-contrast-medium has-text-dark">Since data privacy is quite important to us, we create a privacy page
pretty much as soon as our new bot and site starts collecting some data. To this day, we keep <a
href="https://pythondiscord.com/pages/privacy/">our privacy policy</a> up to date with all
changes, and since April 2020 we've started doing <a
href="https://pythondiscord.notion.site/6784e3a9752444e89d19e65fd4510d8d">monthly data reviews</a>.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">May 21st, 2018</span>
+ <span class="cd-timeline__date has-text-grey">May 21st, 2018</span>
</div>
</div>
</div>
@@ -932,16 +932,16 @@
<i class="fa fa-dice"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>First code jam with the theme “snakes”</h2>
- <p class="color-contrast-medium">Our very first Code Jam attracts a handful of users who work in random
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">First code jam with the theme “snakes”</h2>
+ <p class="color-contrast-medium has-text-dark">Our very first Code Jam attracts a handful of users who work in random
teams of 2. We ask our participants to write a snake-themed Discord bot. Most of the code written
for this jam still lives on in Sir Lancebot, and you can play with it by using the
<code>.snakes</code> command. For more information on this event, see <a
href="https://pythondiscord.com/pages/code-jams/code-jam-1-snakes-bot/">the event page</a></p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Mar 23rd, 2018</span>
+ <span class="cd-timeline__date has-text-grey">Mar 23rd, 2018</span>
</div>
</div>
</div>
@@ -951,15 +951,15 @@
<i class="fa fa-users"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>PyDis hits 2,000 members; pythondiscord.com and @Python are live</h2>
- <p class="color-contrast-medium">The public moderation bot we're using at the time, Rowboat, announces
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">PyDis hits 2,000 members; pythondiscord.com and @Python are live</h2>
+ <p class="color-contrast-medium has-text-dark">The public moderation bot we're using at the time, Rowboat, announces
it will be shutting down. We decide that we'll write our own bot to handle moderation, so that we
can have more control over its features. We also buy a domain and start making a website in Flask.
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Mar 4th, 2018</span>
+ <span class="cd-timeline__date has-text-grey">Mar 4th, 2018</span>
</div>
</div>
</div>
@@ -969,14 +969,14 @@
<img src={% static "images/timeline/cd-icon-picture.svg" %} alt="Picture">
</div>
- <div class="cd-timeline__content text-component">
- <h2>Our logo is born. Thanks @Aperture!</h2>
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Our logo is born. Thanks @Aperture!</h2>
<p class="pydis-logo-banner"><img
src="https://raw.githubusercontent.com/python-discord/branding/main/logos/logo_banner/logo_site_banner.svg">
</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Feb 3rd, 2018</span>
+ <span class="cd-timeline__date has-text-grey">Feb 3rd, 2018</span>
</div>
</div>
</div>
@@ -986,14 +986,14 @@
<i class="fa fa-users"></i>
</div>
- <div class="cd-timeline__content text-component">
- <h2>Python Discord hits 1,000 members</h2>
- <p class="color-contrast-medium">Our main source of new users at this point is a post on Reddit that
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Python Discord hits 1,000 members</h2>
+ <p class="color-contrast-medium has-text-dark">Our main source of new users at this point is a post on Reddit that
happens to get very good SEO. We are one of the top 10 search engine hits for the search term
"python discord".</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Nov 10th, 2017</span>
+ <span class="cd-timeline__date has-text-grey">Nov 10th, 2017</span>
</div>
</div>
</div>
@@ -1003,14 +1003,14 @@
<img src="{% static "images/timeline/cd-icon-picture.svg" %}" alt="Picture">
</div>
- <div class="cd-timeline__content text-component">
- <h2>Python Discord is created</h2>
- <p class="color-contrast-medium"><strong>Joe Banks</strong> becomes one of the owners around 3 days after it
+ <div class="cd-timeline__content has-background-white-bis text-component">
+ <h2 class="has-text-dark">Python Discord is created</h2>
+ <p class="color-contrast-medium has-text-dark"><strong>Joe Banks</strong> becomes one of the owners around 3 days after it
is created, and <strong>Leon Sandøy</strong> (lemon) joins the owner team later in the year, when the community
has around 300 members.</p>
<div class="flex justify-between items-center">
- <span class="cd-timeline__date">Jan 8th, 2017</span>
+ <span class="cd-timeline__date has-text-grey">Jan 8th, 2017</span>
</div>
</div>
</div>
diff --git a/pydis_site/templates/resources/resource_box.html b/pydis_site/templates/resources/resource_box.html
index 5ca46296..9f771c6e 100644
--- a/pydis_site/templates/resources/resource_box.html
+++ b/pydis_site/templates/resources/resource_box.html
@@ -2,7 +2,7 @@
{% load to_kebabcase %}
{% load get_category_icon %}
-<div class="box resource-box {{ resource.css_classes }}" data-resource-name="{{ resource.name }}">
+<div class="box resource-box has-background-white {{ resource.css_classes }}" data-resource-name="{{ resource.name }}">
{% if 'title_url' in resource %}
<a href="{{ resource.title_url }}">
{% include "resources/resource_box_header.html" %}
diff --git a/pydis_site/templates/resources/resource_box_header.html b/pydis_site/templates/resources/resource_box_header.html
index dfbdd92f..1170598a 100644
--- a/pydis_site/templates/resources/resource_box_header.html
+++ b/pydis_site/templates/resources/resource_box_header.html
@@ -2,11 +2,25 @@
{# Icon section #}
{% if 'icon_image' in resource %}
- <img src="{{ resource.icon_image }}" alt="" style="height: {{ resource.icon_size|default:30 }}px;">
+ {% if 'icon_image_dark' in resource %}
+ <img class="light-image" src="{{ resource.icon_image }}" alt="" style="height: {{ resource.icon_size|default:30 }}px;">
+ <img class="dark-image" src="{{ resource.icon_image_dark }}" alt="" style="height: {{ resource.icon_size|default:30 }}px;">
+ {% else %}
+ <img src="{{ resource.icon_image }}" alt="" style="height: {{ resource.icon_size|default:30 }}px;">
+ {% endif %}
{% elif 'title_icon' in resource %}
- <span class="icon is-size-4 is-medium">
- <i class="{{ resource.title_icon|as_icon }} is-size-3 resource-icon has-icon-padding is-{{ resource.title_icon_color }}"></i>
- </span>
+ {% if 'title_icon_dark' in resource %}
+ <span class="icon is-size-4 is-medium light-image">
+ <i class="{{ resource.title_icon|as_icon }} is-size-3 resource-icon has-icon-padding is-{{ resource.title_icon_color }}"></i>
+ </span>
+ <span class="icon is-size-4 is-medium dark-image">
+ <i class="{{ resource.title_icon_dark|as_icon }} is-size-3 resource-icon has-icon-padding is-{{ resource.title_icon_color }}"></i>
+ </span>
+ {% else %}
+ <span class="icon is-size-4 is-medium">
+ <i class="{{ resource.title_icon|as_icon }} is-size-3 resource-icon has-icon-padding is-{{ resource.title_icon_color }}"></i>
+ </span>
+ {% endif %}
{% elif 'default_icon' in category_info %}
<span class="icon is-size-4 is-medium">
<i class="{{ category_info.default_icon|as_icon }} is-size-3 resource-icon has-icon-padding is-{{ category_info.default_icon_color }}"></i>
@@ -16,7 +30,12 @@
{# Title section #}
<span class="is-size-4 has-text-weight-bold">
{% if 'title_image' in resource %}
- <img src="{{ resource.title_image }}" alt="" style="height: 50px; {{ resource.title_image_style }}">
+ {% if 'title_image_dark' in resource %}
+ <img class="light-image" src="{{ resource.title_image }}" alt="" style="height: 50px; {{ resource.title_image_style }}">
+ <img class="dark-image" src="{{ resource.title_image_dark }}" alt="" style="height: 50px; {{ resource.title_image_style }}">
+ {% else %}
+ <img src="{{ resource.title_image }}" alt="" style="height: 50px; {{ resource.title_image_style }}">
+ {% endif %}
{% elif 'name' in resource %}
{{ resource.name }}
{% endif %}
diff --git a/pydis_site/templates/resources/resources.html b/pydis_site/templates/resources/resources.html
index 101f9965..a4fa551e 100644
--- a/pydis_site/templates/resources/resources.html
+++ b/pydis_site/templates/resources/resources.html
@@ -22,7 +22,7 @@
{% block content %}
{% include "base/navbar.html" %}
<input type="hidden" id="resource-type-input" value="{{ resource_type }}">
- <section class="section">
+ <section class="section has-text-danger">
<div class="columns is-variable is-6 is-centered">
{# Filtering toolbox #}
<div class="column filtering-column is-one-third">
@@ -40,11 +40,11 @@
{# Filter box tags #}
- <div class="card filter-tags">
+ <div class="card filter-tags is-white has-background-white">
<div class="is-flex ml-auto">
<div id="tag-pool">
{# A filter tag for when there are no filters active #}
- <span class="tag no-tags-selected is-secondary ml-2 mt-2">
+ <span class="tag no-tags-selected is-secondary ml-2 mt-2 has-background-white-ter">
<i class="fas fa-fw fa-ban mr-1"></i>
No filters selected
</span>
@@ -85,7 +85,7 @@
data-filter-name="{{ filter_name|to_kebabcase }}"
data-filter-item="{{ filter_item|to_kebabcase }}"
>
- <i class="{{ filter_item|title|get_category_icon }} mr-1"></i>
+ <i class="{{ filter_item|title|get_category_icon }} mr-1 is-danger"></i>
{{ filter_item|title }}
<button class="delete is-small is-danger has-background-danger-light"></button>
</span>
@@ -116,7 +116,7 @@
{# Filter checkboxes #}
{% for filter_name, filter_data in filters.items %}
- <div class="card filter-category-header">
+ <div class="card filter-category-header has-background-white">
<button type="button" class="card-header collapsible">
<span class="card-header-title subtitle is-6 my-2 ml-2">
<i class="fa-fw {{ filter_data.icon }} is-primary" aria-hidden="true"></i>&nbsp&nbsp{{ filter_name }}
@@ -138,7 +138,7 @@
{% endif %}
<div class="card-content">
{% for filter_item in filter_data.filters %}
- <a class="panel-block filter-panel">
+ <a class="panel-block filter-panel panel-primary">
<label class="checkbox">
<input
class="filter-checkbox"