Skip to content

Commit

Permalink
Release 2023.11.17 (#328)
Browse files Browse the repository at this point in the history
* Update README.md (#305)

* Update README.md

* Update README.md

* Update README.md

* Spacing

* feat(users): Integrate a mapping between batch numbers and campuses from scrapped data (#289)

* Migrate fork branch

* batch_map.csv added to assets

* removed size from City model

* added size to Batch model

* added city reference to Batch

* added association between Batch and City + removed size from City model

* Added batch_map to seed + gave uid to test users

* added automatic city_id distribution on save to User model

* added some changes by Aquaj to seed.rb and users/edit.erb

* refactor

* Removed batch from permitted parameters

* Removed city foreign_key from users

* Removed ignored_columns size from city and city_id from user

* Moved batch_map.csv to db/static

* Add kitt scrapper script (python) to db/scripts

* fix(cities): restore size column for cities table

* feat(batch_map): rewrite scrapper in ruby and change data to be user scoped including batch year

* fix(batch_map): refactor seed to avoid doing multiple request to the DB for the same City

* feat(batch_map): move scrapper to a Job with CRON on Dec 1st

* Disabled city update for users that have a batch

* fix(batch_map): rubocop offense

* Rename batch_map csv to kill_alumni csv

* Remove batch_year column migration

* Refactor current_user.batch to explicit #blank? and #present? booleans

* Add vanity_name column to cities

* Fix typo in Scraper

* Rename KittScraperJob kwargs

* Refactor KittScrapperJob with CSV headers

* Fix users without batches not able to choose a city since remove city from User

* Fix tests

* Readd disabled confitions in UserFormComponent

* fix(users): moved user city validation inside model

* Fix CityPoints spec

* Fix CityScores spec

* Fix spacing

* Clarify condition on disabled city input

* Remove cron for Kitt scraper

* Set vanity name before create

* Handle case when user has no batch and picks a city

* Fix display of scraper pages

---------

Co-authored-by: Louis Ramos <wjoenn@gmail.com>
Co-authored-by: Jérémie <jeremie.bonal@gmail.com>
Co-authored-by: pil0u <8350914+pil0u@users.noreply.github.com>

* Bump sentry-rails and sentry-ruby (#309)

Bumps [sentry-rails](https://github.com/getsentry/sentry-ruby) and [sentry-ruby](https://github.com/getsentry/sentry-ruby). These dependencies needed to be updated together.

Updates `sentry-rails` from 5.12.0 to 5.13.0
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](getsentry/sentry-ruby@5.12.0...5.13.0)

Updates `sentry-ruby` from 5.12.0 to 5.13.0
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](getsentry/sentry-ruby@5.12.0...5.13.0)

---
updated-dependencies:
- dependency-name: sentry-rails
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: sentry-ruby
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Double quotes everywhere (#311)

* Double quotes everywhere

* Encore

* Re-add the staging environment in Sentry (#313)

* Fix GithubStar achievement by doing nothing if the response code of the request is not 200 (#310)

* fix(users) rename leftover 'city' to 'campus' (#315)

* feat(users): enabled cookie based referral system (#291)

* Add #referrer and #referrees to User

* Add referrer code form to setup

* Add referrement code to settings page

* fix erblint

* fix(users) minor templating changes

* fix(users): refactored User::by_referral_code

* fix(users): disable self-referral

* fix(users): add find_by_referral_code to Rubocop::Rails::DynamicFindBy::Whitelist

* fix(users): referrer from ternary to ... unless ...

* feat(users): enabled cookie based referral system

* fix(users): apply review comments

* feat(users): display referrees in settings (#314)

* feat(users): update referral sentence in settings

* feat(users): add links to referrees in settings

* feat(users): add links for squad users

* refactor(users): remove #to_raw_links

* refactor(users): sanitize to safe_join

* Add margin and pluralize the user(s)

* Rename referree to referee

* Add instance variable, for readability + fix quotes

---------

Co-authored-by: pil0u <8350914+pil0u@users.noreply.github.com>

* Auto-assign a leaderboard to new users (#286)

* Add Louis and Aurélie as contributors

* Add private_leaderboard column to Users

* Assign the emptiest leaderboard to every new user

* Add AOC_ROOMS env variable in tests to allow user update

* Move the AOC_ROOMS env variable for the test environment into a dedicated .env.test file

* Naming

* Add guard clause if for some reason the private leaderboard is already associated to the user

* Create an Admin page, with links to useful tools (#312)

* Add an impersonate User action for admins

* Add an admin page from which you can login, but accessible only for admins. It contains link to admin tools: blazer, good_job and the impersonation tool

* Add useful heroku commands

* Add the possibility to impersonate via uid or aoc_id

* Spacing

* Spacing

* Slightly adjust finding logic + add false-positive to brakeman ignore file

* Rollback formatting

---------

Co-authored-by: Jérémie <jeremie.bonal@gmail.com>

* Update the Code of Conduct (#321)

* Rename to code of conduct with all letters in the footer

* Improved the wording, emphasised the importance of being respectful, friendly and positive

* Bump good_job from 3.21.0 to 3.21.1 (#323)

Bumps [good_job](https://github.com/bensheldon/good_job) from 3.21.0 to 3.21.1.
- [Release notes](https://github.com/bensheldon/good_job/releases)
- [Changelog](https://github.com/bensheldon/good_job/blob/main/CHANGELOG.md)
- [Commits](bensheldon/good_job@v3.21.0...v3.21.1)

---
updated-dependencies:
- dependency-name: good_job
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Slack account link (#316)

* Better handling of failures during omniauth signin

Fix nesting so custom defined `failure` actually exists on the
controller
+ rely on Devise `failure_message` which is better
implemented than our own error-message extractor
+ extract part of thelogic to  small private method that'll help us later

* Add Slack OpenID Omniauth strategy

* Add button to link account

* Add unlinking mechanism

* Rubocop

* Add spec for unlinking

* Add back controllers: config bc it's actually needed to set some internal attributes of OmniAuth

* Create helper to handle complex error-mocking logic for OmniAuth

* Add spec for omniauth slack callback

* Rubocop

* ERB Lint

* Rubocop Again

* Consistent notice before redirect

* Spacing

* Reorder methods and add slack_deep_link

* Add Font Awesome Slack icon (and remove the unused Plus)

* Remove margin from component

* Adjust style for the Slack integration section

* Slightly adjust the spacing in squad settings

* Move the Slack settings below the Squad settings

* Add handling of failed updates

* Add storage for Slack access-token as we might need it.

* Use fail_auth in #kitt Omniauth callback too.

* Rubocop

* Add Slack credentials and active record encryption key set in production

---------

Co-authored-by: pil0u <8350914+pil0u@users.noreply.github.com>

* fix(campus): rename view files and template references of city to campus (#324)

* fix(campus): rename view files and template references of city to campus

* fix(campus): tests

* feat(campus): further migrate cities to campuses

* fix(campus): update campus route path

* Fix the user show

* Show and order cities dropdown by vanity_name

* Form label

* Update campus show

* CityRowComponent -> CampusRowComponent

---------

Co-authored-by: pil0u <8350914+pil0u@users.noreply.github.com>

* Plug Batch info on Kitt callback and move back City on User to simplify validation logic. (#325)

* Plug Batch info on Kitt callback and move back City on User to simplify validation logic.

* Rubocop

* fix(users): revert some changes

* fix(users): undo everything from #289

* fix(users): use kitt city name instead of slug

* fix(users) last comments

* fix(users): remove empty city froms seed

* Wording + spacing

* Remove Testville

---------

Co-authored-by: Louis Ramos <louisramosdev@gmail.com>
Co-authored-by: pil0u <8350914+pil0u@users.noreply.github.com>

* Refresh the FAQ (#326)

* Update the wording of the existing FAQ

* Remove data notice in settings, it's already in the FAQ

* Reorder questions

* Remove horrendous spaces

* Remove CSV

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Louis Ramos <75388869+wJoenn@users.noreply.github.com>
Co-authored-by: Louis Ramos <wjoenn@gmail.com>
Co-authored-by: Jérémie <jeremie.bonal@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Louis Ramos <louisramosdev@gmail.com>
  • Loading branch information
6 people committed Nov 17, 2023
2 parents ed0dc63 + 5893f61 commit ac441af
Show file tree
Hide file tree
Showing 79 changed files with 23,952 additions and 562 deletions.
1 change: 1 addition & 0 deletions .env.test
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
AOC_ROOMS=9999999-abcdef,
22 changes: 11 additions & 11 deletions .erb-lint.yml
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
---
EnableDefaultLinters: true
exclude:
- '**/vendor/**/*'
- '**/___*' # Files to deprecate
- "**/vendor/**/*"
- "**/___*" # Files to deprecate

linters:
ErbSafety:
exclude:
- '**/app/components/header/nav_component.html.erb'
- '**/app/components/scores/city_row_component.html.erb'
- '**/app/components/scores/squad_row_component.html.erb'
- '**/app/components/scores/user_row_component.html.erb'
- '**/app/components/snippets/box_component.html.erb'
- '**/app/views/pages/setup.html.erb'
- "**/app/components/header/nav_component.html.erb"
- "**/app/components/scores/campus_row_component.html.erb"
- "**/app/components/scores/squad_row_component.html.erb"
- "**/app/components/scores/user_row_component.html.erb"
- "**/app/components/snippets/box_component.html.erb"
- "**/app/views/pages/setup.html.erb"

# Disable "String not translated" errors while passing the --enable-all-linters flag
HardCodedString:
exclude:
- '**/app/components/**/*'
- '**/app/components/*' # https://github.com/Shopify/erb-lint/issues/265
- '**/app/views/**/*'
- "**/app/components/**/*"
- "**/app/components/*" # https://github.com/Shopify/erb-lint/issues/265
- "**/app/views/**/*"

Rubocop:
enabled: true
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,10 @@ jobs:
bundle exec rails db:create RAILS_ENV=test
bundle exec rails db:migrate RAILS_ENV=test
env:
DATABASE_URL: 'postgres://test:password@localhost/application_test'
DATABASE_URL: "postgres://test:password@localhost/application_test"

- name: Run RSpec
run: |
bundle exec rspec
env:
DATABASE_URL: 'postgres://test:password@localhost/application_test'
DATABASE_URL: "postgres://test:password@localhost/application_test"
4 changes: 1 addition & 3 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,7 @@ Rails/DangerousColumnNames:
- "**/db/migrate/*"

Rails/DynamicFindBy:
AllowedMethods: [
"find_by_referral_code"
]
AllowedMethods: ["find_by_referral_code"]

Style/NumericPredicate:
EnforcedStyle: comparison
Expand Down
12 changes: 7 additions & 5 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,19 @@ gem "rails", "~> 7.1"
gem "blazer", "~> 3.0"
gem "bootsnap", require: false # Reduces boot times through caching; required in config/boot.rb
gem "devise", "~> 4.9"
gem "good_job", "~> 3.19"
gem "good_job", "~> 3.21"
gem "humanize", "~> 2.5"
gem "importmap-rails", "~> 1.2"
gem "jbuilder", "~> 2.11"
gem "omniauth-kitt", "~> 0.1"
gem "omniauth-rails_csrf_protection", "~> 1.0"
gem "omniauth-slack-openid"
gem "pg", "~> 1.5"
gem "puma", "~> 6.4"
gem "rouge", "~> 4.1"
gem "sentry-rails", "~> 5.11"
gem "sentry-ruby", "~> 5.11"
gem "sentry-rails", "~> 5.13"
gem "sentry-ruby", "~> 5.13"
gem "slack-ruby-client"
gem "sprockets-rails", "~> 3.4"
gem "stimulus-rails", "~> 1.2"
gem "strong_migrations", "~> 1.6"
Expand All @@ -31,6 +33,7 @@ group :development, :test do
gem "brakeman", "~> 6.0"
gem "bundler-audit", "~> 0.9"
gem "byebug", platforms: %i[mri mingw x64_mingw]
gem "dotenv-rails", "~> 2.8"
gem "erb_lint", "~> 0.5", require: false
gem "factory_bot_rails", "~> 6.2"
gem "rspec-rails", "~> 6.0"
Expand All @@ -43,13 +46,12 @@ group :development, :test do
end

group :development do
gem "dotenv-rails", "~> 2.8"
gem "listen", "~> 3.8"

# Display performance information such as SQL time and flame graphs for each request in your browser.
# Can be configured to work on production as well see: https://github.com/MiniProfiler/rack-mini-profiler/blob/master/README.md
gem "rack-mini-profiler", "~> 3.1"
gem "solargraph"
# Access an interactive console on exception pages or by calling 'console' anywhere in the code.
# Access an interactive console on exception pages or by calling "console" anywhere in the code.
gem "web-console", "~> 4.2"
end
52 changes: 35 additions & 17 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ GEM
public_suffix (>= 2.0.2, < 6.0)
ast (2.4.2)
backport (1.2.0)
base64 (0.1.1)
base64 (0.2.0)
bcrypt (3.1.19)
benchmark (0.2.1)
better_html (2.0.2)
Expand Down Expand Up @@ -122,7 +122,7 @@ GEM
dotenv-rails (2.8.1)
dotenv (= 2.8.1)
railties (>= 3.2)
drb (2.1.1)
drb (2.2.0)
ruby2_keywords
e2mmap (0.1.0)
erb_lint (0.5.0)
Expand All @@ -144,14 +144,20 @@ GEM
base64
faraday-net_http (>= 2.0, < 3.1)
ruby2_keywords (>= 0.0.4)
faraday-mashify (0.1.1)
faraday (~> 2.0)
hashie
faraday-multipart (1.0.4)
multipart-post (~> 2)
faraday-net_http (3.0.2)
ffi (1.16.3)
fugit (1.9.0)
et-orbi (~> 1, >= 1.2.7)
raabro (~> 1.4)
gli (2.21.1)
globalid (1.2.1)
activesupport (>= 6.1)
good_job (3.20.0)
good_job (3.21.1)
activejob (>= 6.0.0)
activerecord (>= 6.0.0)
concurrent-ruby (>= 1.0.2)
Expand All @@ -168,7 +174,7 @@ GEM
activesupport (>= 6.0.0)
railties (>= 6.0.0)
io-console (0.6.0)
irb (1.8.3)
irb (1.9.0)
rdoc
reline (>= 0.3.8)
jaro_winkler (1.5.6)
Expand All @@ -185,7 +191,7 @@ GEM
listen (3.8.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
loofah (2.21.4)
loofah (2.22.0)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.8.1)
Expand All @@ -199,7 +205,8 @@ GEM
minitest (5.20.0)
msgpack (1.7.2)
multi_xml (0.6.0)
mutex_m (0.1.2)
multipart-post (2.3.0)
mutex_m (0.2.0)
net-imap (0.4.2)
date
net-protocol
Expand Down Expand Up @@ -235,6 +242,9 @@ GEM
omniauth-rails_csrf_protection (1.0.1)
actionpack (>= 4.2)
omniauth (~> 2.0)
omniauth-slack-openid (1.2.0)
omniauth (~> 2)
omniauth-oauth2 (~> 1)
orm_adapter (0.5.0)
parallel (1.23.0)
parser (3.2.2.4)
Expand All @@ -247,7 +257,7 @@ GEM
puma (6.4.0)
nio4r (~> 2.0)
raabro (1.4.0)
racc (1.7.1)
racc (1.7.3)
rack (2.2.8)
rack-mini-profiler (3.1.1)
rack (>= 1.2.0)
Expand Down Expand Up @@ -295,10 +305,10 @@ GEM
rb-inotify (0.10.1)
ffi (~> 1.0)
rbs (2.8.4)
rdoc (6.5.0)
rdoc (6.6.0)
psych (>= 4.0.0)
regexp_parser (2.8.2)
reline (0.3.9)
reline (0.4.0)
io-console (~> 0.5)
responders (3.1.1)
actionpack (>= 5.2)
Expand Down Expand Up @@ -355,17 +365,23 @@ GEM
ruby-progressbar (1.13.0)
ruby2_keywords (0.0.5)
safely_block (0.4.0)
sentry-rails (5.12.0)
sentry-rails (5.13.0)
railties (>= 5.0)
sentry-ruby (~> 5.12.0)
sentry-ruby (5.12.0)
sentry-ruby (~> 5.13.0)
sentry-ruby (5.13.0)
concurrent-ruby (~> 1.0, >= 1.0.2)
simplecov (0.22.0)
docile (~> 1.1)
simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1)
simplecov-html (0.12.3)
simplecov_json_formatter (0.1.4)
slack-ruby-client (2.2.0)
faraday (>= 2.0)
faraday-mashify
faraday-multipart
gli
hashie
smart_properties (1.17.0)
snaky_hash (2.0.1)
hashie
Expand Down Expand Up @@ -395,7 +411,7 @@ GEM
sprockets (>= 3.0.0)
stimulus-rails (1.3.0)
railties (>= 6.0.0)
stringio (3.0.8)
stringio (3.0.9)
strong_migrations (1.6.4)
activerecord (>= 5.2)
tailwindcss-rails (2.0.32-arm64-darwin)
Expand All @@ -406,7 +422,7 @@ GEM
railties (>= 6.0.0)
thor (1.3.0)
tilt (2.3.0)
timeout (0.4.0)
timeout (0.4.1)
turbo-rails (1.5.0)
actionpack (>= 6.0.0)
activejob (>= 6.0.0)
Expand Down Expand Up @@ -454,13 +470,14 @@ DEPENDENCIES
dotenv-rails (~> 2.8)
erb_lint (~> 0.5)
factory_bot_rails (~> 6.2)
good_job (~> 3.19)
good_job (~> 3.21)
humanize (~> 2.5)
importmap-rails (~> 1.2)
jbuilder (~> 2.11)
listen (~> 3.8)
omniauth-kitt (~> 0.1)
omniauth-rails_csrf_protection (~> 1.0)
omniauth-slack-openid
pg (~> 1.5)
puma (~> 6.4)
rack-mini-profiler (~> 3.1)
Expand All @@ -471,9 +488,10 @@ DEPENDENCIES
rubocop-performance (~> 1.19)
rubocop-rails (~> 2.21)
rubocop-rspec (~> 2.24)
sentry-rails (~> 5.11)
sentry-ruby (~> 5.11)
sentry-rails (~> 5.13)
sentry-ruby (~> 5.13)
simplecov (~> 0.22.0)
slack-ruby-client
solargraph
sprockets-rails (~> 3.4)
stimulus-rails (~> 1.2)
Expand Down
33 changes: 14 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,49 +6,47 @@ Rails 7.1.1
```

Found a bug? Do not hesitate to [open an Issue](/../../issues/new).
Have a feature request? Let's discuss it [on Slack](slack://channel?team=T02NE0241&id=C02PN711H09).
Have a feature request? Let's discuss it [on Slack](slack://user?team=T02NE0241&id=URZ0F4TEF).

## Contribute

If you want to help me fix a bug or implement a new requested feature:
1. Make sure [an Issue exists](/../../issues) for it
2. Fork the project
3. Code the changes on your fork
4. Create a Pull Request here from your fork
2. Ask me questions
3. Fork the project
4. Code the changes on your fork
5. Create a Pull Request here from your fork

### CI with GitHub Action

Upon Pull Requests (open, push), CI scripts are automatically run:
- linters (RuboCop, ERBLint)
- security tools (brakeman, bundler-audit)
- tests (soon™)
- ~~auto-deploy ephemeral app (usually in 5 minutes, fails often)~~
- tests

Your PR should pass the linters, the security checks and the tests (soon™) to be merged.
~~The app is automatically deployed in a production-like environment with a fresh database where you can double-check your changes.~~
Your PR should pass the linters, the security checks and the tests to be reviewed.

### Run on your machine

1. Run `bin/setup` to install dependencies, create and seed the database
2. [Ask me](slack://user?team=T02NE0241&id=URZ0F4TEF) for the credentials key and add it to `config/master.key`, required for Kitt OAuth
2. Ask me for the credentials key and add it to `config/master.key`, required for Kitt OAuth
3. Create a `.env` root file and add these keys with their [appropriate values](#required-env-variables): `AOC_ROOMS`, `SESSION_COOKIE`
4. Run `bin/dev`

#### Required `ENV` variables

> **Warning**
> **Warning**
The `.env` file is used for development purposes only. It is _not_ versioned and never should.

- `AOC_ROOMS` is a comma-separated list of [private leaderboard](https://adventofcode.com/leaderboard/private) IDs that _you belong_ to (e.g. `9999999-a0b1c2d3,7777777-e4f56789`)
- `SESSION_COOKIE` is your own Advent of Code session cookie (valid ~ 1 month). You need to [log in](https://adventofcode.com/auth/login) to the platform, then retrieve the value of the `session` cookie (e.g. `436088a93cbdba07668e76df6d26c0dcb4ef3cbd5728069ffb647678ad38`)

#### Overmind

> **Note**
> **Note**
> Foreman is the default process manager through the `bin/dev` command. Overmind is an optional alternative.
Overmind is a process manager for Procfile-based applications like ours, based on `tmux`.
You can install the tool on your machine [following these instructions](https://github.com/DarthSim/overmind#installation).
Overmind is a process manager for Procfile-based applications like ours, based on `tmux`. You can install the tool on your machine [following these instructions](https://github.com/DarthSim/overmind#installation).

Add these lines to your local `.env` file:
``` zsh
Expand All @@ -67,13 +65,10 @@ sign_in(User.find_by(github_username: "your_username"))

Then, find the local IP address of the computer you launch the server from (ex: `192.168.1.14`) and open the app on your mobile browser from that IP (ex: `http://192.168.1.14:3000`)

## Advent of Code API hacking
## Advent of Code API

On `adventofcode.com`, a user can create one (and only one) private leaderboard. Up to 200 users can join it using the generated code. A first room was already generated from the generic account `lewagon-aoc`.
On `adventofcode.com`, a user can create one (and only one) private leaderboard. Up to 200 users can join it using a unique generated code.

A JSON object containing scores can be fetched from a `GET` request that needs a session cookie to succeed. We store this session cookie in the `SESSION_COOKIE` environment variable (valid ~ 1 month).

If this first room is filled and more than 200 people enter the contest, here is the "bypass" strategy:
1. Create a new private leaderboard on Advent of Code, from another account
2. Invite the `lewagon-aoc` account to that leaderboard
3. Append the new leaderboard code (format: `9999999-a0b1c2d3`) to the `AOC_ROOMS` environment variable, comma-separated
We use multiple private leaderboards to run the platform with more than 200 participants. We store their IDs in the `AOC_ROOMS` environment variable, comma-separated. One account joins all of them, and we use this account's `SESSION_COOKIE`.
Binary file modified app/assets/fonts/fa-brands-400.woff2
Binary file not shown.
4 changes: 4 additions & 0 deletions app/assets/stylesheets/application.tailwind.css
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@
@apply form-element cursor-pointer hover:text-wagon-red;
}

.button-slack {
@apply form-element cursor-pointer hover:text-aoc-atmospheric;
}

.calendar-tile {
@apply w-14 h-14 rounded-xl lg:w-20 lg:h-20 lg:rounded-2xl flex items-center justify-center border border-aoc-gray-darker hover:bg-hover;
}
Expand Down
Loading

0 comments on commit ac441af

Please sign in to comment.