Merge pull request 'ruby-2-7-rails-6-1' (#1) from ruby-2-7-rails-6-1 into master

Reviewed-on: https://code.snogrammer.com/snogrammer/rails_template/pulls/1
This commit is contained in:
snogrammer 2020-12-19 12:16:02 -07:00
commit 86ee5b3016
8017 changed files with 201442 additions and 1529 deletions

View File

@ -1,6 +1,5 @@
COMPOSE_PROJECT_NAME=app
DATABASE_URL=postgres://user:password@postgres:5432
FONTAWESOME_NPM_AUTH_TOKEN=TODO_CHANGE_ME
NODE_ENV=development
POSTGRES_USER=user
POSTGRES_PASSWORD=password

2
.gitignore vendored
View File

@ -33,3 +33,5 @@ yarn-debug.log*
.yarn-integrity
coverage
.env*

2
.npmrc
View File

@ -1,2 +0,0 @@
@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=${FONTAWESOME_NPM_AUTH_TOKEN}

View File

@ -1 +1 @@
2.6.5
2.7.2

View File

@ -1,7 +1,7 @@
# https://pkgs.alpinelinux.org/packages?name=ruby&branch=v3.11
FROM ruby:2.6.5-alpine3.11
FROM ruby:2.7-alpine3.11
ENV BUNDLER_VERSION=2.0.2
# ENV BUNDLER_VERSION=2.0.2
# Minimal requirements to run a Rails app
RUN apk add --no-cache --update build-base \
@ -21,7 +21,7 @@ COPY Gemfile* ./
# Bundler workaround
# https://stackoverflow.com/a/58102398
RUN gem update --system
RUN gem install bundler -v $BUNDLER_VERSION
RUN gem install bundler # -v $BUNDLER_VERSION
RUN bundle install --jobs 5 --retry 5
# Copy the application into the container

39
Gemfile
View File

@ -2,50 +2,51 @@
source 'https://rubygems.org'
ruby '2.6.5'
ruby '2.7.2'
gem 'bootsnap', '>= 1.4', require: false
gem 'jbuilder', '~> 2.9'
gem 'bootsnap', '>= 1.5', require: false
gem 'jbuilder', '~> 2.10'
gem 'lograge', '~> 0.11'
gem 'multi_json', '~> 1.14'
gem 'multi_json', '~> 1.15'
gem 'paranoia', '~> 2.4'
gem 'pg', '~> 1.2'
gem 'puma', '~> 4.2'
gem 'rails', '~> 6.0'
gem 'puma', '~> 5.1'
gem 'rails', '~> 6.1'
gem 'redis-rails', '~> 5.0'
gem 'responders', '~> 3.0'
gem 'sidekiq', '~> 6.0'
gem 'sidekiq', '~> 6.1'
gem 'simple_form', '~> 5.0'
gem 'validates_email_format_of', '~> 1.6'
gem 'webpacker', '~> 4.2'
gem 'webpacker', '~> 5.2'
# auth
gem 'activeadmin', '~> 2.6'
gem 'arctic_admin'
gem 'activeadmin', '~> 2.9'
gem 'arctic_admin', '~> 3.3'
gem 'devise', '~> 4.7'
# styles
gem 'bulma-rails', '~> 0.8.0'
gem 'font_awesome5_rails', '~> 1.1'
gem 'premailer-rails', '~> 1.11'
gem 'bulma-rails', '~> 0.9.1'
gem 'font_awesome5_rails', '~> 1.3'
gem 'premailer-rails', '~> 1.11'
gem 'sassc-rails', '~> 2.1' # @see https://github.com/cprodhomme/arctic_admin/issues/56#issue-453584917
group :development, :test do
gem 'factory_bot_rails', '~> 5.1'
gem 'faker', '~> 2.10'
gem 'factory_bot_rails', '~> 6.1'
gem 'faker', '~> 2.15'
gem 'pry-rails'
gem 'rspec-rails', '~> 3.9'
gem 'rspec-rails', '~> 4.0'
gem 'rubocop'
gem 'rubocop-rails'
end
group :development do
gem 'listen', '~> 3.2'
gem 'spring' # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'listen', '~> 3.3'
gem 'spring' # @see https://github.com/rails/spring
gem 'spring-watcher-listen', '~> 2.0'
end
group :test do
gem 'database_cleaner', '~> 1.7'
gem 'database_cleaner', '~> 1.8'
gem 'json_spec', '~> 1.1'
gem 'mock_redis', '~> 0.17'
gem 'rspec-sidekiq', '~> 3.0'

View File

@ -1,114 +1,117 @@
GEM
remote: https://rubygems.org/
specs:
actioncable (6.0.2.2)
actionpack (= 6.0.2.2)
actioncable (6.1.0)
actionpack (= 6.1.0)
activesupport (= 6.1.0)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (6.0.2.2)
actionpack (= 6.0.2.2)
activejob (= 6.0.2.2)
activerecord (= 6.0.2.2)
activestorage (= 6.0.2.2)
activesupport (= 6.0.2.2)
actionmailbox (6.1.0)
actionpack (= 6.1.0)
activejob (= 6.1.0)
activerecord (= 6.1.0)
activestorage (= 6.1.0)
activesupport (= 6.1.0)
mail (>= 2.7.1)
actionmailer (6.0.2.2)
actionpack (= 6.0.2.2)
actionview (= 6.0.2.2)
activejob (= 6.0.2.2)
actionmailer (6.1.0)
actionpack (= 6.1.0)
actionview (= 6.1.0)
activejob (= 6.1.0)
activesupport (= 6.1.0)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (6.0.2.2)
actionview (= 6.0.2.2)
activesupport (= 6.0.2.2)
rack (~> 2.0, >= 2.0.8)
actionpack (6.1.0)
actionview (= 6.1.0)
activesupport (= 6.1.0)
rack (~> 2.0, >= 2.0.9)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actiontext (6.0.2.2)
actionpack (= 6.0.2.2)
activerecord (= 6.0.2.2)
activestorage (= 6.0.2.2)
activesupport (= 6.0.2.2)
actiontext (6.1.0)
actionpack (= 6.1.0)
activerecord (= 6.1.0)
activestorage (= 6.1.0)
activesupport (= 6.1.0)
nokogiri (>= 1.8.5)
actionview (6.0.2.2)
activesupport (= 6.0.2.2)
actionview (6.1.0)
activesupport (= 6.1.0)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
activeadmin (2.6.1)
activeadmin (2.9.0)
arbre (~> 1.2, >= 1.2.1)
formtastic (~> 3.1)
formtastic (>= 3.1, < 5.0)
formtastic_i18n (~> 0.4)
inherited_resources (~> 1.7)
jquery-rails (~> 4.2)
kaminari (~> 1.0, >= 1.0.1)
railties (>= 5.2, < 6.1)
kaminari (~> 1.0, >= 1.2.1)
railties (>= 5.2, < 6.2)
ransack (~> 2.1, >= 2.1.1)
sassc-rails (~> 2.1)
sprockets (>= 3.0, < 4.1)
activejob (6.0.2.2)
activesupport (= 6.0.2.2)
activejob (6.1.0)
activesupport (= 6.1.0)
globalid (>= 0.3.6)
activemodel (6.0.2.2)
activesupport (= 6.0.2.2)
activerecord (6.0.2.2)
activemodel (= 6.0.2.2)
activesupport (= 6.0.2.2)
activestorage (6.0.2.2)
actionpack (= 6.0.2.2)
activejob (= 6.0.2.2)
activerecord (= 6.0.2.2)
activemodel (6.1.0)
activesupport (= 6.1.0)
activerecord (6.1.0)
activemodel (= 6.1.0)
activesupport (= 6.1.0)
activestorage (6.1.0)
actionpack (= 6.1.0)
activejob (= 6.1.0)
activerecord (= 6.1.0)
activesupport (= 6.1.0)
marcel (~> 0.3.1)
activesupport (6.0.2.2)
mimemagic (~> 0.3.2)
activesupport (6.1.0)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
zeitwerk (~> 2.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
arbre (1.2.1)
activesupport (>= 3.0.0)
arctic_admin (3.1.1)
arbre (1.4.0)
activesupport (>= 3.0.0, < 6.2)
ruby2_keywords (>= 0.0.2, < 1.0)
arctic_admin (3.3.0)
activeadmin (>= 1.1.0, < 3.0)
font-awesome-sass (~> 5.0)
jquery-rails
ast (2.4.0)
bcrypt (3.1.13)
bootsnap (1.4.6)
ast (2.4.1)
bcrypt (3.1.16)
bootsnap (1.5.1)
msgpack (~> 1.0)
builder (3.2.4)
bulma-rails (0.8.0)
bulma-rails (0.9.1)
sassc (~> 2.0)
coderay (1.1.2)
concurrent-ruby (1.1.6)
connection_pool (2.2.2)
coderay (1.1.3)
concurrent-ruby (1.1.7)
connection_pool (2.2.3)
crass (1.0.6)
css_parser (1.7.1)
addressable
database_cleaner (1.8.3)
devise (4.7.1)
database_cleaner (1.8.5)
devise (4.7.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
responders
warden (~> 1.2.3)
diff-lcs (1.3)
docile (1.3.2)
erubi (1.9.0)
factory_bot (5.1.1)
activesupport (>= 4.2.0)
factory_bot_rails (5.1.1)
factory_bot (~> 5.1.0)
railties (>= 4.2.0)
faker (2.10.2)
diff-lcs (1.4.4)
docile (1.3.3)
erubi (1.10.0)
factory_bot (6.1.0)
activesupport (>= 5.0.0)
factory_bot_rails (6.1.0)
factory_bot (~> 6.1.0)
railties (>= 5.0.0)
faker (2.15.1)
i18n (>= 1.6, < 2)
ffi (1.12.2)
font-awesome-sass (5.12.0)
ffi (1.14.0)
font-awesome-sass (5.15.1)
sassc (>= 1.11)
font_awesome5_rails (1.1.1)
font_awesome5_rails (1.3.0)
railties (>= 4.2)
formtastic (3.1.5)
actionpack (>= 3.2.13)
@ -119,36 +122,35 @@ GEM
actionpack (>= 4.1)
activesupport (>= 4.1)
htmlentities (4.3.4)
i18n (1.8.2)
i18n (1.8.5)
concurrent-ruby (~> 1.0)
inherited_resources (1.11.0)
actionpack (>= 5.0, < 6.1)
inherited_resources (1.12.0)
actionpack (>= 5.2, < 6.2)
has_scope (~> 0.6)
railties (>= 5.0, < 6.1)
railties (>= 5.2, < 6.2)
responders (>= 2, < 4)
jaro_winkler (1.5.4)
jbuilder (2.10.0)
jbuilder (2.10.1)
activesupport (>= 5.0.0)
jquery-rails (4.3.5)
jquery-rails (4.4.0)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
json_spec (1.1.5)
multi_json (~> 1.0)
rspec (>= 2.0, < 4.0)
kaminari (1.2.0)
kaminari (1.2.1)
activesupport (>= 4.1.0)
kaminari-actionview (= 1.2.0)
kaminari-activerecord (= 1.2.0)
kaminari-core (= 1.2.0)
kaminari-actionview (1.2.0)
kaminari-actionview (= 1.2.1)
kaminari-activerecord (= 1.2.1)
kaminari-core (= 1.2.1)
kaminari-actionview (1.2.1)
actionview
kaminari-core (= 1.2.0)
kaminari-activerecord (1.2.0)
kaminari-core (= 1.2.1)
kaminari-activerecord (1.2.1)
activerecord
kaminari-core (= 1.2.0)
kaminari-core (1.2.0)
listen (3.2.1)
kaminari-core (= 1.2.1)
kaminari-core (1.2.1)
listen (3.3.3)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
lograge (0.11.2)
@ -156,92 +158,87 @@ GEM
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
loofah (2.4.0)
loofah (2.8.0)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
mini_mime (>= 0.1.1)
marcel (0.3.3)
mimemagic (~> 0.3.2)
method_source (0.9.2)
mimemagic (0.3.4)
method_source (1.0.0)
mimemagic (0.3.5)
mini_mime (1.0.2)
mini_portile2 (2.4.0)
minitest (5.14.0)
mock_redis (0.22.0)
minitest (5.14.2)
mock_redis (0.26.0)
msgpack (1.3.3)
multi_json (1.14.1)
nio4r (2.5.2)
nokogiri (1.10.9)
multi_json (1.15.0)
nio4r (2.5.4)
nokogiri (1.10.10)
mini_portile2 (~> 2.4.0)
orm_adapter (0.5.0)
parallel (1.19.1)
paranoia (2.4.2)
activerecord (>= 4.0, < 6.1)
parser (2.7.0.4)
ast (~> 2.4.0)
parallel (1.20.1)
paranoia (2.4.3)
activerecord (>= 4.0, < 6.2)
parser (2.7.2.0)
ast (~> 2.4.1)
pg (1.2.3)
polyamorous (2.3.2)
activerecord (>= 5.2.1)
premailer (1.11.1)
premailer (1.14.2)
addressable
css_parser (>= 1.6.0)
htmlentities (>= 4.0.0)
premailer-rails (1.11.1)
actionmailer (>= 3)
premailer (~> 1.7, >= 1.7.9)
pry (0.12.2)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
pry (0.13.1)
coderay (~> 1.1)
method_source (~> 1.0)
pry-rails (0.3.9)
pry (>= 0.10.4)
public_suffix (4.0.4)
puma (4.3.3)
public_suffix (4.0.6)
puma (5.1.1)
nio4r (~> 2.0)
rack (2.2.2)
rack-protection (2.0.8.1)
rack
rack (2.2.3)
rack-proxy (0.6.5)
rack
rack-test (1.1.0)
rack (>= 1.0, < 3)
rails (6.0.2.2)
actioncable (= 6.0.2.2)
actionmailbox (= 6.0.2.2)
actionmailer (= 6.0.2.2)
actionpack (= 6.0.2.2)
actiontext (= 6.0.2.2)
actionview (= 6.0.2.2)
activejob (= 6.0.2.2)
activemodel (= 6.0.2.2)
activerecord (= 6.0.2.2)
activestorage (= 6.0.2.2)
activesupport (= 6.0.2.2)
bundler (>= 1.3.0)
railties (= 6.0.2.2)
rails (6.1.0)
actioncable (= 6.1.0)
actionmailbox (= 6.1.0)
actionmailer (= 6.1.0)
actionpack (= 6.1.0)
actiontext (= 6.1.0)
actionview (= 6.1.0)
activejob (= 6.1.0)
activemodel (= 6.1.0)
activerecord (= 6.1.0)
activestorage (= 6.1.0)
activesupport (= 6.1.0)
bundler (>= 1.15.0)
railties (= 6.1.0)
sprockets-rails (>= 2.0.0)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.3.0)
loofah (~> 2.3)
railties (6.0.2.2)
actionpack (= 6.0.2.2)
activesupport (= 6.0.2.2)
railties (6.1.0)
actionpack (= 6.1.0)
activesupport (= 6.1.0)
method_source
rake (>= 0.8.7)
thor (>= 0.20.3, < 2.0)
thor (~> 1.0)
rainbow (3.0.0)
rake (13.0.1)
ransack (2.3.2)
activerecord (>= 5.2.1)
activesupport (>= 5.2.1)
rake (13.0.2)
ransack (2.4.0)
activerecord (>= 5.2.4)
activesupport (>= 5.2.4)
i18n
polyamorous (= 2.3.2)
rb-fsevent (0.10.3)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
redis (4.1.3)
redis (4.2.5)
redis-actionpack (5.2.0)
actionpack (>= 5, < 7)
redis-rack (>= 2.1.0, < 3)
@ -249,58 +246,64 @@ GEM
redis-activesupport (5.2.0)
activesupport (>= 3, < 7)
redis-store (>= 1.3, < 2)
redis-rack (2.1.2)
redis-rack (2.1.3)
rack (>= 2.0.8, < 3)
redis-store (>= 1.2, < 2)
redis-rails (5.0.2)
redis-actionpack (>= 5.0, < 6)
redis-activesupport (>= 5.0, < 6)
redis-store (>= 1.2, < 2)
redis-store (1.8.2)
redis-store (1.9.0)
redis (>= 4, < 5)
regexp_parser (2.0.0)
request_store (1.5.0)
rack (>= 1.4)
responders (3.0.0)
responders (3.0.1)
actionpack (>= 5.0)
railties (>= 5.0)
rexml (3.2.4)
rspec (3.9.0)
rspec-core (~> 3.9.0)
rspec-expectations (~> 3.9.0)
rspec-mocks (~> 3.9.0)
rspec-core (3.9.1)
rspec-support (~> 3.9.1)
rspec-expectations (3.9.1)
rspec (3.10.0)
rspec-core (~> 3.10.0)
rspec-expectations (~> 3.10.0)
rspec-mocks (~> 3.10.0)
rspec-core (3.10.0)
rspec-support (~> 3.10.0)
rspec-expectations (3.10.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.9.0)
rspec-mocks (3.9.1)
rspec-support (~> 3.10.0)
rspec-mocks (3.10.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.9.0)
rspec-rails (3.9.1)
actionpack (>= 3.0)
activesupport (>= 3.0)
railties (>= 3.0)
rspec-core (~> 3.9.0)
rspec-expectations (~> 3.9.0)
rspec-mocks (~> 3.9.0)
rspec-support (~> 3.9.0)
rspec-sidekiq (3.0.3)
rspec-support (~> 3.10.0)
rspec-rails (4.0.1)
actionpack (>= 4.2)
activesupport (>= 4.2)
railties (>= 4.2)
rspec-core (~> 3.9)
rspec-expectations (~> 3.9)
rspec-mocks (~> 3.9)
rspec-support (~> 3.9)
rspec-sidekiq (3.1.0)
rspec-core (~> 3.0, >= 3.0.0)
sidekiq (>= 2.4.0)
rspec-support (3.9.2)
rubocop (0.80.1)
jaro_winkler (~> 1.5.1)
rspec-support (3.10.0)
rubocop (1.6.1)
parallel (~> 1.10)
parser (>= 2.7.0.1)
parser (>= 2.7.1.5)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml
rubocop-ast (>= 1.2.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 1.7)
rubocop-rails (2.4.2)
unicode-display_width (>= 1.4.0, < 2.0)
rubocop-ast (1.3.0)
parser (>= 2.7.1.5)
rubocop-rails (2.9.1)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 0.72.0)
rubocop (>= 0.90.0, < 2.0)
ruby-progressbar (1.10.1)
sassc (2.2.1)
ruby2_keywords (0.0.2)
sassc (2.4.0)
ffi (~> 1.9)
sassc-rails (2.1.2)
railties (>= 4.0.0)
@ -308,95 +311,99 @@ GEM
sprockets (> 3.0)
sprockets-rails
tilt
semantic_range (2.3.1)
shoulda-callback-matchers (1.1.4)
activesupport (>= 3)
shoulda-matchers (3.1.3)
activesupport (>= 4.0.0)
sidekiq (6.0.5)
sidekiq (6.1.2)
connection_pool (>= 2.2.2)
rack (~> 2.0)
rack-protection (>= 2.0.0)
redis (>= 4.1.0)
simple_form (5.0.2)
redis (>= 4.2.0)
simple_form (5.0.3)
actionpack (>= 5.0)
activemodel (>= 5.0)
simplecov (0.18.5)
simplecov (0.20.0)
docile (~> 1.1)
simplecov-html (~> 0.11)
simplecov-html (0.12.2)
spring (2.1.0)
simplecov_json_formatter (~> 0.1)
simplecov-html (0.12.3)
simplecov_json_formatter (0.1.2)
spring (2.1.1)
spring-watcher-listen (2.0.1)
listen (>= 2.7, < 4.0)
spring (>= 1.2, < 3.0)
sprockets (4.0.0)
sprockets (4.0.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.1)
sprockets-rails (3.2.2)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
thor (1.0.1)
thread_safe (0.3.6)
tilt (2.0.10)
tzinfo (1.2.6)
thread_safe (~> 0.1)
unicode-display_width (1.6.1)
tzinfo (2.0.4)
concurrent-ruby (~> 1.0)
unicode-display_width (1.7.0)
validates_email_format_of (1.6.3)
i18n
warden (1.2.8)
rack (>= 2.0.6)
webpacker (4.2.2)
activesupport (>= 4.2)
warden (1.2.9)
rack (>= 2.0.9)
webpacker (5.2.1)
activesupport (>= 5.2)
rack-proxy (>= 0.6.1)
railties (>= 4.2)
websocket-driver (0.7.1)
railties (>= 5.2)
semantic_range (>= 2.3.0)
websocket-driver (0.7.3)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.4)
zeitwerk (2.3.0)
websocket-extensions (0.1.5)
zeitwerk (2.4.2)
PLATFORMS
ruby
x86_64-darwin-18
x86_64-linux-musl
DEPENDENCIES
activeadmin (~> 2.6)
arctic_admin
bootsnap (>= 1.4)
bulma-rails (~> 0.8.0)
database_cleaner (~> 1.7)
activeadmin (~> 2.9)
arctic_admin (~> 3.3)
bootsnap (>= 1.5)
bulma-rails (~> 0.9.1)
database_cleaner (~> 1.8)
devise (~> 4.7)
factory_bot_rails (~> 5.1)
faker (~> 2.10)
font_awesome5_rails (~> 1.1)
jbuilder (~> 2.9)
factory_bot_rails (~> 6.1)
faker (~> 2.15)
font_awesome5_rails (~> 1.3)
jbuilder (~> 2.10)
json_spec (~> 1.1)
listen (~> 3.2)
listen (~> 3.3)
lograge (~> 0.11)
mock_redis (~> 0.17)
multi_json (~> 1.14)
multi_json (~> 1.15)
paranoia (~> 2.4)
pg (~> 1.2)
premailer-rails (~> 1.11)
pry-rails
puma (~> 4.2)
rails (~> 6.0)
puma (~> 5.1)
rails (~> 6.1)
redis-rails (~> 5.0)
responders (~> 3.0)
rspec-rails (~> 3.9)
rspec-rails (~> 4.0)
rspec-sidekiq (~> 3.0)
rubocop
rubocop-rails
sassc-rails (~> 2.1)
shoulda-callback-matchers (~> 1.1)
shoulda-matchers (~> 3.1)
sidekiq (~> 6.0)
sidekiq (~> 6.1)
simple_form (~> 5.0)
simplecov (~> 0.16)
spring
spring-watcher-listen (~> 2.0)
validates_email_format_of (~> 1.6)
webpacker (~> 4.2)
webpacker (~> 5.2)
RUBY VERSION
ruby 2.6.5p114
ruby 2.7.2p137
BUNDLED WITH
2.0.2
2.2.2

View File

@ -12,10 +12,10 @@ This repo is a designed to be a Dockerized Rails 6 template:
## Setup
- `bundle`
- `Download latest copy of FontAwesome and replace vendor/fontawesome-pro/** (npm auth access has expired)`
- `yarn install --check-files`
- `Find/replace all TODO`
- `docker-compose up --build`
- `FONTAWESOME_NPM_AUTH_TOKEN=CHANGE_ME yarn add @fortawesome/fontawesome-pro`
### Dependencies
@ -56,7 +56,6 @@ To start the application using docker compose locally:
| `DB_MIN_CONNECTIONS` | Db Minimum Connections | 5
| `DB_SOCKET_TIMEOUT` | Db socket timeout | 5
| `DB_WAIT_QUEUE_TIMEOUT` | Db Wait queue timeout | 5
| `FONTAWESOME_NPM_AUTH_TOKEN` | FontAwesome Auth token | -
| `LOG_LEVEL` | Log level | warn
| `REDIS_URL` | Redis Url | redis://localhost:6379/0
| `SMTP_HOST` | Smpt address | `localhost`

View File

@ -8,7 +8,7 @@
// $sidebar-width: 242px;
// Active Admin's got SASS!
@import "active_admin/mixins";
// @import "active_admin/mixins";
@import "arctic_admin/base";
// Overriding any non-variable SASS must be done after the fact.

View File

@ -15,7 +15,7 @@
$primary-gradient: linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%);
@import "bulma"; // https://bulma.io/documentation/
@import "./devise";
@import "./shared/all";
html {
background-image: radial-gradient(circle at 13% 47%, rgba(140, 140, 140,0.03) 0%, rgba(140, 140, 140,0.03) 25%,transparent 25%, transparent 100%),radial-gradient(circle at 28% 63%, rgba(143, 143, 143,0.03) 0%, rgba(143, 143, 143,0.03) 16%,transparent 16%, transparent 100%),radial-gradient(circle at 81% 56%, rgba(65, 65, 65,0.03) 0%, rgba(65, 65, 65,0.03) 12%,transparent 12%, transparent 100%),radial-gradient(circle at 26% 48%, rgba(60, 60, 60,0.03) 0%, rgba(60, 60, 60,0.03) 6%,transparent 6%, transparent 100%),radial-gradient(circle at 97% 17%, rgba(150, 150, 150,0.03) 0%, rgba(150, 150, 150,0.03) 56%,transparent 56%, transparent 100%),radial-gradient(circle at 50% 100%, rgba(25, 25, 25,0.03) 0%, rgba(25, 25, 25,0.03) 36%,transparent 36%, transparent 100%),radial-gradient(circle at 55% 52%, rgba(69, 69, 69,0.03) 0%, rgba(69, 69, 69,0.03) 6%,transparent 6%, transparent 100%),linear-gradient(90deg, rgb(255,255,255),rgb(255,255,255));

View File

@ -1,15 +0,0 @@
#registrations, #passwords {
padding-top: $size-1;
}
#registrations-column {
background-color: $white;
padding: $size-6;
}
#registrations-column-form, #registrations-column-form-submit-button,
#registration-edit-account-deletion-container, #registrations-edit-passwords,
#registrations-edit-update-password, #passwords-column-form, #unlocks-column-form,
#confirmations-column-form {
padding: $size-3;
}

View File

@ -0,0 +1 @@
@import "./spacing";

View File

@ -0,0 +1,12 @@
.top-p__1 {
padding-top: $size-1;
}
.with-background-p__6 {
background-color: $white;
padding: $size-6;
}
.p__3 {
padding: $size-3;
}

View File

@ -1 +1,2 @@
require("./navbar")
require("./notification")

View File

@ -3,8 +3,6 @@
class User < ApplicationRecord
acts_as_paranoid
before
# Include default devise modules. Others available are:
# :omniauthable
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable,

View File

@ -1,6 +1,6 @@
<div class="container is-fluid" id="passwords">
<div class="container is-fluid top-p__1">
<div class="columns is-centered is-mobile">
<div id="registrations-column" class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop">
<div class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop with-background-p__6">
<section class="hero is-primary">
<div class="hero-body">
<div class="container">
@ -11,7 +11,7 @@
</div>
</section>
<div id="confirmations-column-form">
<div class="p__3">
<%= simple_form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f| %>
<div class="field">
<%= f.label :email, class: "label" %>
@ -33,7 +33,7 @@
</div>
<div class="field">
<p class="control" id="registrations-column-form-submit-button">
<p class="control p__3">
<%= f.button :submit, "Resend confirmation", class: "button is-primary is-fullwidth is-rounded" %>
</p>
</div>

View File

@ -1,6 +1,6 @@
<div class="container is-fluid" id="passwords">
<div class="container is-fluid top-p__1">
<div class="columns is-centered is-mobile">
<div id="registrations-column" class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop">
<div class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop with-background-p__6">
<section class="hero is-primary">
<div class="hero-body">
<div class="container">
@ -11,7 +11,7 @@
</div>
</section>
<div id="passwords-column-form">
<div class="p__3">
<%= simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %>
<%= f.input :reset_password_token, as: :hidden %>
<%= f.full_error :reset_password_token %>
@ -53,7 +53,7 @@
</div>
<div class="field">
<p class="control" id="registrations-column-form-submit-button">
<p class="control p__3">
<%= f.button :submit, "Update password", class: "button is-primary is-fullwidth is-rounded" %>
</p>
</div>

View File

@ -1,6 +1,6 @@
<div class="container is-fluid" id="passwords">
<div class="container is-fluid top-p__1">
<div class="columns is-centered is-mobile">
<div id="registrations-column" class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop">
<div class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop with-background-p__6">
<section class="hero is-primary">
<div class="hero-body">
<div class="container">
@ -11,7 +11,7 @@
</div>
</section>
<div id="passwords-column-form">
<div class="p__3">
<%= simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %>
<div class="field">
<%= f.label :email, class: "label" %>
@ -32,7 +32,7 @@
</div>
<div class="field">
<p class="control" id="registrations-column-form-submit-button">
<p class="control p__3">
<%= f.button :submit, "Reset password", class: "button is-primary is-fullwidth is-rounded" %>
</p>
</div>

View File

@ -1,6 +1,6 @@
<div class="container is-fluid" id="registrations" data-controller="notification">
<div class="container is-fluid top-p__1" data-controller="notification">
<div class="columns is-centered">
<div id="registrations-column" class="column is-four-fifths is-two-thirds-tablet is-half-desktop">
<div class="p__3 column is-four-fifths is-two-thirds-tablet is-half-desktop">
<section class="hero is-primary">
<div class="hero-body">
<div class="container">
@ -11,7 +11,7 @@
</div>
</section>
<div id="registrations-column-form">
<div class="p__3">
<% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
<div class="notification is-warning">
<button class="delete"></button>
@ -35,8 +35,8 @@
<%= f.full_error :email, class: "help is-danger" %>
</div>
<div id="registrations-edit-passwords">
<%= link_to "Change password", "#", id: "registration-edit-password-button", class: "button is-fullwidth is-rounded" %>
<div class="p__3">
<%= link_to "Change password", "#", id: "registration-edit-password-button", class: "p__3 button is-fullwidth is-rounded" %>
<div class="toggleable" id="registrations-edit-update-password">
<div class="notification">
@ -88,7 +88,7 @@
</div>
<div class="field">
<p class="control" id="registrations-column-form-submit-button">
<p class="control p__3">
<%= f.button :submit, "Update Account", class: "button is-primary is-fullwidth is-rounded" %>
</p>
</div>
@ -111,7 +111,7 @@
<div class="message-body">
<strong>Warning!</strong> Account deletion is permanant and can not be recovered.
<div class="is-centered" id="registration-edit-account-deletion-container">
<div class="is-centered p__3">
<%= link_to "Delete My Account", registration_path(resource_name),
data: { confirm: "Are you sure?" }, method: :delete,
class: "button is-danger is-two-thirds is-rounded" %>

View File

@ -1,6 +1,6 @@
<div class="container is-fluid" id="registrations">
<div class="container is-fluid top-p__1">
<div class="columns is-centered is-mobile">
<div id="registrations-column" class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop">
<div class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop with-background-p__6">
<section class="hero is-primary">
<div class="hero-body">
<div class="container">
@ -11,7 +11,7 @@
</div>
</section>
<div id="registrations-column-form">
<div class="p__3">
<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<div class="field">
<%= f.label :email, class: "label" %>
@ -58,7 +58,7 @@
</div>
<div class="field">
<p class="control" id="registrations-column-form-submit-button">
<p class="control p__3">
<%= f.button :submit, "Sign up", class: "button is-primary is-fullwidth is-rounded" %>
</p>
</div>

View File

@ -1,6 +1,6 @@
<div class="container is-fluid" id="registrations">
<div class="container is-fluid top-p__1">
<div class="columns is-centered">
<div id="registrations-column" class="column is-four-fifths is-two-thirds-tablet is-half-desktop">
<div class="column is-four-fifths is-two-thirds-tablet is-half-desktop with-background-p__6">
<section class="hero is-primary">
<div class="hero-body">
<div class="container">
@ -11,7 +11,7 @@
</div>
</section>
<div id="registrations-column-form">
<div class="p__3">
<%= simple_form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
<div class="field">
<%= f.label :email, class: "label" %>
@ -45,7 +45,7 @@
<%= f.label :remember_me, class: "checkbox" %>
<div class="field">
<p class="control" id="registrations-column-form-submit-button">
<p class="control p__3">
<%= f.button :submit, "Sign in", class: "button is-primary is-fullwidth is-rounded" %>
</p>
</div>

View File

@ -1,6 +1,6 @@
<div class="container is-fluid" id="passwords">
<div class="container is-fluid top-p__1">
<div class="columns is-centered is-mobile">
<div id="registrations-column" class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop">
<div class="column is-four-fifths-mobile is-two-thirds-tablet is-half-desktop with-background-p__6">
<section class="hero is-primary">
<div class="hero-body">
<div class="container">
@ -11,7 +11,7 @@
</div>
</section>
<div id="unlocks-column-form">
<div class="p__3">
<%= simple_form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f| %>
<div class="field">
<%= f.label :email, class: "label" %>
@ -32,7 +32,7 @@
</div>
<div class="field">
<p class="control" id="registrations-column-form-submit-button">
<p class="control p__3">
<%= f.button :submit, "Send unlock instructions", class: "button is-primary is-fullwidth is-rounded" %>
</p>
</div>

View File

@ -1,4 +1,4 @@
<div id="home-index">
<div class="home-index">
<section class="hero is-medium is-primary is-bold">
<div class="hero-body">
<div class="container">

View File

@ -56,9 +56,7 @@ module.exports = function(api) {
[
'@babel/plugin-transform-runtime',
{
helpers: false,
regenerator: true,
corejs: false
helpers: false
}
],
[

View File

@ -1,19 +1,18 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
ENV['RAILS_ENV'] ||= ENV['RACK_ENV'] || 'development'
ENV['NODE_ENV'] ||= 'development'
ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development"
ENV["NODE_ENV"] ||= "development"
require 'pathname'
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile',
Pathname.new(__FILE__).realpath)
require "pathname"
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
Pathname.new(__FILE__).realpath)
require 'bundler/setup'
require "bundler/setup"
require 'webpacker'
require 'webpacker/webpack_runner'
require "webpacker"
require "webpacker/webpack_runner"
APP_ROOT = File.expand_path('..', __dir__)
APP_ROOT = File.expand_path("..", __dir__)
Dir.chdir(APP_ROOT) do
Webpacker::WebpackRunner.run(ARGV)
end

View File

@ -1,19 +1,18 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
ENV['RAILS_ENV'] ||= ENV['RACK_ENV'] || 'development'
ENV['NODE_ENV'] ||= 'development'
ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development"
ENV["NODE_ENV"] ||= "development"
require 'pathname'
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile',
Pathname.new(__FILE__).realpath)
require "pathname"
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
Pathname.new(__FILE__).realpath)
require 'bundler/setup'
require "bundler/setup"
require 'webpacker'
require 'webpacker/dev_server_runner'
require "webpacker"
require "webpacker/dev_server_runner"
APP_ROOT = File.expand_path('..', __dir__)
APP_ROOT = File.expand_path("..", __dir__)
Dir.chdir(APP_ROOT) do
Webpacker::DevServerRunner.run(ARGV)
end

View File

@ -1,11 +1,3 @@
const { environment } = require('@rails/webpacker')
const webpack = require('webpack')
environment.plugins.prepend('Provide',
new webpack.ProvidePlugin({
$: 'jquery/src/jquery',
jQuery: 'jquery/src/jquery'
})
)
module.exports = environment

View File

@ -6,18 +6,17 @@ default: &default
public_root_path: public
public_output_path: packs
cache_path: tmp/cache/webpacker
check_yarn_integrity: false
webpack_compile_output: true
# Additional paths webpack should lookup modules
# ['app/assets', 'engine/foo/app/assets']
resolved_paths: []
additional_paths: []
# Reload manifest.json on all requests so we reload latest compiled packs
cache_manifest: false
# Extract and emit a css file
extract_css: true
extract_css: false
static_assets_extensions:
- .jpg
@ -50,22 +49,15 @@ default: &default
development:
<<: *default
compile: false
# Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules
# check_yarn_integrity: true
check_yarn_integrity: false
compile: true
# Reference: https://webpack.js.org/configuration/dev-server/
dev_server:
https: false
# Non-docker: localhost
host: webpacker
host: localhost
port: 3035
# Non-docker: localhost:3035
public: webpacker:3035
public: localhost:3035
hmr: false
# hmr: true
# Inline should be set to true if using HMR
inline: true
overlay: true
@ -77,7 +69,6 @@ development:
headers:
'Access-Control-Allow-Origin': '*'
watch_options:
poll: true
ignored: '**/node_modules/**'

View File

@ -2,8 +2,8 @@
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
# This file is the source Rails uses to define your schema when running `rails
# db:schema:load`. When creating a new database, `rails db:schema:load` tends to
# This file is the source Rails uses to define your schema when running `bin/rails
# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
# be faster and is potentially less error prone than running all of your
# migrations from scratch. Old migrations may fail to apply correctly if those
# migrations use external dependencies or application code.

View File

@ -1,4 +1,5 @@
version: "2.1"
---
version: "2.1"
services:
mailcatcher:
image: jeanberu/mailcatcher:0.6.5
@ -7,22 +8,22 @@ services:
- "1025:1025"
postgres:
image: "postgres:11.5-alpine"
image: "postgres:13-alpine"
environment:
POSTGRES_USER: "user"
POSTGRES_PASSWORD: "password"
ports:
- "5432:5432"
volumes:
- /usr/local/var/postgres/data:/var/lib/postgresql/data
- ./tmp/postgres/data:/var/lib/postgresql/data
redis:
image: redis:5.0-alpine
image: redis:6.0-alpine
command: redis-server
expose:
- "6379"
volumes:
- /usr/local/var/redis/data:/var/lib/redis/data
- ./tmp/redis/data:/var/lib/redis/data
healthcheck:
test: "redis-cli ping"
interval: 5s
@ -38,20 +39,20 @@ services:
volumes:
- .:/app
env_file:
- '.env.docker'
- ".env.docker"
webpacker:
build: .
environment:
- WEBPACKER_DEV_SERVER_HOST=0.0.0.0
env_file:
- '.env.docker'
- ".env.docker"
command: ./bin/webpack-dev-server
volumes:
- .:/app
ports:
- '3035:3035'
- '8080:8080'
- "3035:3035"
- "8080:8080"
app:
build: .
@ -68,4 +69,4 @@ services:
stdin_open: true
tty: true
env_file:
- '.env.docker'
- ".env.docker"

View File

@ -2,15 +2,16 @@
"name": "app",
"private": true,
"dependencies": {
"@fortawesome/fontawesome-pro/": "file:./vendor/fontawesome-pro",
"@rails/actioncable": "^6.0.0",
"@rails/ujs": "^6.0.0",
"@rails/webpacker": "4.2.2",
"@rails/webpacker": "5.2.1",
"jquery": "^3.4.1",
"stimulus": "^1.1.1",
"stimulus": "^2.0.0",
"turbolinks": "^5.2.0"
},
"version": "0.1.0",
"devDependencies": {
"webpack-dev-server": "^3.10.3"
"webpack-dev-server": "^3.11.0"
}
}

18
script/test Normal file → Executable file
View File

@ -8,10 +8,7 @@ set -e
# cd to project root
cd "$(dirname "$0")/.."
export PROJECT_NAME="app" RAILS_ENV="test" RACK_ENV="test"
printf "\n===> Setting $RAILS_ENV environment ...\n"
docker-compose run -e RAILS_ENV=$RAILS_ENV app rails db:environment:set
export PROJECT_NAME="app_test" RAILS_ENV="test" RACK_ENV="test"
# setup test database
printf "\n===> Migrating $RAILS_ENV database ...\n"
@ -24,17 +21,16 @@ printf "\n** **"
printf "\n** docker-compose run -e RAILS_ENV=$RAILS_ENV app rake db:create **"
printf "\n** **"
printf "\n*************************************************************"
printf "\n*************************************************************"
docker-compose run -e RAILS_ENV=$RAILS_ENV app rake db:drop db:create db:migrate
printf "\n*************************************************************\n"
# run tests
printf "\n===> Running tests ...\n"
docker-compose run -e RAILS_ENV=$RAILS_ENV app rails db:environment:set
printf "\n===> Running tests ...\n";
if [ -n "$1" ]; then
# pass arguments to test call. This is useful for calling a single test.
docker-compose --project-name=$PROJECT_NAME run -e RAILS_ENV=$RAILS_ENV --rm app rspec "$1"
docker-compose run -e RAILS_ENV=$RAILS_ENV app rspec "$1"
else
docker-compose --project-name=$PROJECT_NAME run -e RAILS_ENV=$RAILS_ENV --rm app rspec
docker-compose run -e RAILS_ENV=$RAILS_ENV app rspec
fi
docker-compose down

BIN
vendor/fontawesome-pro/.DS_Store vendored Normal file

Binary file not shown.

18
vendor/fontawesome-pro/LICENSE.txt vendored Normal file
View File

@ -0,0 +1,18 @@
Font Awesome Pro License
------------------------
Font Awesome Pro is commercial software that requires a paid license. Full
Font Awesome Pro license: https://fontawesome.com/license.
# Commercial License
The Font Awesome Pro commercial license allows you to pay for FA Pro once, own
it, and use it just about everywhere you'd like.
# Attribution
Attribution is not required by the Font Awesome Pro commercial license.
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**

3
vendor/fontawesome-pro/attribution.js vendored Normal file
View File

@ -0,0 +1,3 @@
console.log(`Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license (Commercial License)
`)

12788
vendor/fontawesome-pro/css/all.css vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

15
vendor/fontawesome-pro/css/brands.css vendored Normal file
View File

@ -0,0 +1,15 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: 400;
font-display: block;
src: url("../webfonts/fa-brands-400.eot");
src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); }
.fab {
font-family: 'Font Awesome 5 Brands';
font-weight: 400; }

View File

@ -0,0 +1,5 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands";font-weight:400}

5609
vendor/fontawesome-pro/css/duotone.css vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

7138
vendor/fontawesome-pro/css/fontawesome.css vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

15
vendor/fontawesome-pro/css/light.css vendored Normal file
View File

@ -0,0 +1,15 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 300;
font-display: block;
src: url("../webfonts/fa-light-300.eot");
src: url("../webfonts/fa-light-300.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-light-300.woff2") format("woff2"), url("../webfonts/fa-light-300.woff") format("woff"), url("../webfonts/fa-light-300.ttf") format("truetype"), url("../webfonts/fa-light-300.svg#fontawesome") format("svg"); }
.fal {
font-family: 'Font Awesome 5 Pro';
font-weight: 300; }

View File

@ -0,0 +1,5 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:300;font-display:block;src:url(../webfonts/fa-light-300.eot);src:url(../webfonts/fa-light-300.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-light-300.woff2) format("woff2"),url(../webfonts/fa-light-300.woff) format("woff"),url(../webfonts/fa-light-300.ttf) format("truetype"),url(../webfonts/fa-light-300.svg#fontawesome) format("svg")}.fal{font-family:"Font Awesome 5 Pro";font-weight:300}

15
vendor/fontawesome-pro/css/regular.css vendored Normal file
View File

@ -0,0 +1,15 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 400;
font-display: block;
src: url("../webfonts/fa-regular-400.eot");
src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); }
.far {
font-family: 'Font Awesome 5 Pro';
font-weight: 400; }

View File

@ -0,0 +1,5 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Pro";font-weight:400}

16
vendor/fontawesome-pro/css/solid.css vendored Normal file
View File

@ -0,0 +1,16 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 900;
font-display: block;
src: url("../webfonts/fa-solid-900.eot");
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }
.fa,
.fas {
font-family: 'Font Awesome 5 Pro';
font-weight: 900; }

View File

@ -0,0 +1,5 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Pro";font-weight:900}

View File

@ -0,0 +1,371 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
svg:not(:root).svg-inline--fa {
overflow: visible; }
.svg-inline--fa {
display: inline-block;
font-size: inherit;
height: 1em;
overflow: visible;
vertical-align: -.125em; }
.svg-inline--fa.fa-lg {
vertical-align: -.225em; }
.svg-inline--fa.fa-w-1 {
width: 0.0625em; }
.svg-inline--fa.fa-w-2 {
width: 0.125em; }
.svg-inline--fa.fa-w-3 {
width: 0.1875em; }
.svg-inline--fa.fa-w-4 {
width: 0.25em; }
.svg-inline--fa.fa-w-5 {
width: 0.3125em; }
.svg-inline--fa.fa-w-6 {
width: 0.375em; }
.svg-inline--fa.fa-w-7 {
width: 0.4375em; }
.svg-inline--fa.fa-w-8 {
width: 0.5em; }
.svg-inline--fa.fa-w-9 {
width: 0.5625em; }
.svg-inline--fa.fa-w-10 {
width: 0.625em; }
.svg-inline--fa.fa-w-11 {
width: 0.6875em; }
.svg-inline--fa.fa-w-12 {
width: 0.75em; }
.svg-inline--fa.fa-w-13 {
width: 0.8125em; }
.svg-inline--fa.fa-w-14 {
width: 0.875em; }
.svg-inline--fa.fa-w-15 {
width: 0.9375em; }
.svg-inline--fa.fa-w-16 {
width: 1em; }
.svg-inline--fa.fa-w-17 {
width: 1.0625em; }
.svg-inline--fa.fa-w-18 {
width: 1.125em; }
.svg-inline--fa.fa-w-19 {
width: 1.1875em; }
.svg-inline--fa.fa-w-20 {
width: 1.25em; }
.svg-inline--fa.fa-pull-left {
margin-right: .3em;
width: auto; }
.svg-inline--fa.fa-pull-right {
margin-left: .3em;
width: auto; }
.svg-inline--fa.fa-border {
height: 1.5em; }
.svg-inline--fa.fa-li {
width: 2em; }
.svg-inline--fa.fa-fw {
width: 1.25em; }
.fa-layers svg.svg-inline--fa {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.fa-layers {
display: inline-block;
height: 1em;
position: relative;
text-align: center;
vertical-align: -.125em;
width: 1em; }
.fa-layers svg.svg-inline--fa {
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-text, .fa-layers-counter {
display: inline-block;
position: absolute;
text-align: center; }
.fa-layers-text {
left: 50%;
top: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
-webkit-transform-origin: center center;
transform-origin: center center; }
.fa-layers-counter {
background-color: #ff253a;
border-radius: 1em;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: #fff;
height: 1.5em;
line-height: 1;
max-width: 5em;
min-width: 1.5em;
overflow: hidden;
padding: .25em;
right: 0;
text-overflow: ellipsis;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-bottom-right {
bottom: 0;
right: 0;
top: auto;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: bottom right;
transform-origin: bottom right; }
.fa-layers-bottom-left {
bottom: 0;
left: 0;
right: auto;
top: auto;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: bottom left;
transform-origin: bottom left; }
.fa-layers-top-right {
right: 0;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top right;
transform-origin: top right; }
.fa-layers-top-left {
left: 0;
right: auto;
top: 0;
-webkit-transform: scale(0.25);
transform: scale(0.25);
-webkit-transform-origin: top left;
transform-origin: top left; }
.fa-lg {
font-size: 1.33333em;
line-height: 0.75em;
vertical-align: -.0667em; }
.fa-xs {
font-size: .75em; }
.fa-sm {
font-size: .875em; }
.fa-1x {
font-size: 1em; }
.fa-2x {
font-size: 2em; }
.fa-3x {
font-size: 3em; }
.fa-4x {
font-size: 4em; }
.fa-5x {
font-size: 5em; }
.fa-6x {
font-size: 6em; }
.fa-7x {
font-size: 7em; }
.fa-8x {
font-size: 8em; }
.fa-9x {
font-size: 9em; }
.fa-10x {
font-size: 10em; }
.fa-fw {
text-align: center;
width: 1.25em; }
.fa-ul {
list-style-type: none;
margin-left: 2.5em;
padding-left: 0; }
.fa-ul > li {
position: relative; }
.fa-li {
left: -2em;
position: absolute;
text-align: center;
width: 2em;
line-height: inherit; }
.fa-border {
border: solid 0.08em #eee;
border-radius: .1em;
padding: .2em .25em .15em; }
.fa-pull-left {
float: left; }
.fa-pull-right {
float: right; }
.fa.fa-pull-left,
.fas.fa-pull-left,
.far.fa-pull-left,
.fal.fa-pull-left,
.fab.fa-pull-left {
margin-right: .3em; }
.fa.fa-pull-right,
.fas.fa-pull-right,
.far.fa-pull-right,
.fal.fa-pull-right,
.fab.fa-pull-right {
margin-left: .3em; }
.fa-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear; }
.fa-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8); }
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
.fa-rotate-90 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
-webkit-transform: rotate(90deg);
transform: rotate(90deg); }
.fa-rotate-180 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
-webkit-transform: rotate(180deg);
transform: rotate(180deg); }
.fa-rotate-270 {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
-webkit-transform: rotate(270deg);
transform: rotate(270deg); }
.fa-flip-horizontal {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
-webkit-transform: scale(-1, 1);
transform: scale(-1, 1); }
.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(1, -1);
transform: scale(1, -1); }
.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
-webkit-transform: scale(-1, -1);
transform: scale(-1, -1); }
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical,
:root .fa-flip-both {
-webkit-filter: none;
filter: none; }
.fa-stack {
display: inline-block;
height: 2em;
position: relative;
width: 2.5em; }
.fa-stack-1x,
.fa-stack-2x {
bottom: 0;
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0; }
.svg-inline--fa.fa-stack-1x {
height: 1em;
width: 1.25em; }
.svg-inline--fa.fa-stack-2x {
height: 2em;
width: 2.5em; }
.fa-inverse {
color: #fff; }
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px; }
.sr-only-focusable:active, .sr-only-focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto; }
.svg-inline--fa .fa-primary {
fill: var(--fa-primary-color, currentColor);
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.svg-inline--fa .fa-secondary {
fill: var(--fa-secondary-color, currentColor);
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.svg-inline--fa.fa-swap-opacity .fa-primary {
opacity: 0.4;
opacity: var(--fa-secondary-opacity, 0.4); }
.svg-inline--fa.fa-swap-opacity .fa-secondary {
opacity: 1;
opacity: var(--fa-primary-opacity, 1); }
.svg-inline--fa mask .fa-primary,
.svg-inline--fa mask .fa-secondary {
fill: black; }
.fad.fa-inverse {
color: #fff; }

File diff suppressed because one or more lines are too long

2172
vendor/fontawesome-pro/css/v4-shims.css vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

11029
vendor/fontawesome-pro/js/all.js vendored Normal file

File diff suppressed because one or more lines are too long

5
vendor/fontawesome-pro/js/all.min.js vendored Normal file

File diff suppressed because one or more lines are too long

586
vendor/fontawesome-pro/js/brands.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,998 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global['fontawesome-pro-conflict-detection'] = {})));
}(this, (function (exports) { 'use strict';
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
var ownKeys = Object.keys(source);
if (typeof Object.getOwnPropertySymbols === 'function') {
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
}));
}
ownKeys.forEach(function (key) {
_defineProperty(target, key, source[key]);
});
}
return target;
}
var _WINDOW = {};
var _DOCUMENT = {};
try {
if (typeof window !== 'undefined') _WINDOW = window;
if (typeof document !== 'undefined') _DOCUMENT = document;
} catch (e) {}
var _ref = _WINDOW.navigator || {},
_ref$userAgent = _ref.userAgent,
userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;
var WINDOW = _WINDOW;
var DOCUMENT = _DOCUMENT;
var IS_BROWSER = !!WINDOW.document;
var IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';
var IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');
var functions = [];
var listener = function listener() {
DOCUMENT.removeEventListener('DOMContentLoaded', listener);
loaded = 1;
functions.map(function (fn) {
return fn();
});
};
var loaded = false;
if (IS_DOM) {
loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);
if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);
}
function domready (fn) {
if (!IS_DOM) return;
loaded ? setTimeout(fn, 0) : functions.push(fn);
}
function report (_ref) {
var nodesTested = _ref.nodesTested,
nodesFound = _ref.nodesFound;
var timedOutTests = {};
for (var key in nodesFound) {
if (!(nodesTested.conflict[key] || nodesTested.noConflict[key])) {
timedOutTests[key] = nodesFound[key];
}
}
var conflictsCount = Object.keys(nodesTested.conflict).length;
if (conflictsCount > 0) {
console.info("%cConflict".concat(conflictsCount > 1 ? 's' : '', " found:"), 'color: darkred; font-size: large');
var data = {};
for (var _key in nodesTested.conflict) {
var item = nodesTested.conflict[_key];
data[_key] = {
'tagName': item.tagName,
'src/href': item.src || item.href || 'n/a',
'innerText excerpt': item.innerText && item.innerText !== '' ? item.innerText.slice(0, 200) + '...' : '(empty)'
};
}
console.table(data);
}
var noConflictsCount = Object.keys(nodesTested.noConflict).length;
if (noConflictsCount > 0) {
console.info("%cNo conflict".concat(noConflictsCount > 1 ? 's' : '', " found with ").concat(noConflictsCount == 1 ? 'this' : 'these', ":"), 'color: green; font-size: large');
var _data = {};
for (var _key2 in nodesTested.noConflict) {
var _item = nodesTested.noConflict[_key2];
_data[_key2] = {
'tagName': _item.tagName,
'src/href': _item.src || _item.href || 'n/a',
'innerText excerpt': _item.innerText && _item.innerText !== '' ? _item.innerText.slice(0, 200) + '...' : '(empty)'
};
}
console.table(_data);
}
var timeOutCount = Object.keys(timedOutTests).length;
if (timeOutCount > 0) {
console.info("%cLeftovers--we timed out before collecting test results for ".concat(timeOutCount == 1 ? 'this' : 'these', ":"), 'color: blue; font-size: large');
var _data2 = {};
for (var _key3 in timedOutTests) {
var _item2 = timedOutTests[_key3];
_data2[_key3] = {
'tagName': _item2.tagName,
'src/href': _item2.src || _item2.href || 'n/a',
'innerText excerpt': _item2.innerText && _item2.innerText !== '' ? _item2.innerText.slice(0, 200) + '...' : '(empty)'
};
}
console.table(_data2);
}
}
var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
function createCommonjsModule(fn, module) {
return module = { exports: {} }, fn(module, module.exports), module.exports;
}
var md5 = createCommonjsModule(function (module) {
(function ($) {
/**
* Add integers, wrapping at 2^32.
* This uses 16-bit operations internally to work around bugs in interpreters.
*
* @param {number} x First integer
* @param {number} y Second integer
* @returns {number} Sum
*/
function safeAdd(x, y) {
var lsw = (x & 0xffff) + (y & 0xffff);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return msw << 16 | lsw & 0xffff;
}
/**
* Bitwise rotate a 32-bit number to the left.
*
* @param {number} num 32-bit number
* @param {number} cnt Rotation count
* @returns {number} Rotated number
*/
function bitRotateLeft(num, cnt) {
return num << cnt | num >>> 32 - cnt;
}
/**
* Basic operation the algorithm uses.
*
* @param {number} q q
* @param {number} a a
* @param {number} b b
* @param {number} x x
* @param {number} s s
* @param {number} t t
* @returns {number} Result
*/
function md5cmn(q, a, b, x, s, t) {
return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
}
/**
* Basic operation the algorithm uses.
*
* @param {number} a a
* @param {number} b b
* @param {number} c c
* @param {number} d d
* @param {number} x x
* @param {number} s s
* @param {number} t t
* @returns {number} Result
*/
function md5ff(a, b, c, d, x, s, t) {
return md5cmn(b & c | ~b & d, a, b, x, s, t);
}
/**
* Basic operation the algorithm uses.
*
* @param {number} a a
* @param {number} b b
* @param {number} c c
* @param {number} d d
* @param {number} x x
* @param {number} s s
* @param {number} t t
* @returns {number} Result
*/
function md5gg(a, b, c, d, x, s, t) {
return md5cmn(b & d | c & ~d, a, b, x, s, t);
}
/**
* Basic operation the algorithm uses.
*
* @param {number} a a
* @param {number} b b
* @param {number} c c
* @param {number} d d
* @param {number} x x
* @param {number} s s
* @param {number} t t
* @returns {number} Result
*/
function md5hh(a, b, c, d, x, s, t) {
return md5cmn(b ^ c ^ d, a, b, x, s, t);
}
/**
* Basic operation the algorithm uses.
*
* @param {number} a a
* @param {number} b b
* @param {number} c c
* @param {number} d d
* @param {number} x x
* @param {number} s s
* @param {number} t t
* @returns {number} Result
*/
function md5ii(a, b, c, d, x, s, t) {
return md5cmn(c ^ (b | ~d), a, b, x, s, t);
}
/**
* Calculate the MD5 of an array of little-endian words, and a bit length.
*
* @param {Array} x Array of little-endian words
* @param {number} len Bit length
* @returns {Array<number>} MD5 Array
*/
function binlMD5(x, len) {
/* append padding */
x[len >> 5] |= 0x80 << len % 32;
x[(len + 64 >>> 9 << 4) + 14] = len;
var i;
var olda;
var oldb;
var oldc;
var oldd;
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
for (i = 0; i < x.length; i += 16) {
olda = a;
oldb = b;
oldc = c;
oldd = d;
a = md5ff(a, b, c, d, x[i], 7, -680876936);
d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
b = md5gg(b, c, d, a, x[i], 20, -373897302);
a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
d = md5hh(d, a, b, c, x[i], 11, -358537222);
c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
a = md5ii(a, b, c, d, x[i], 6, -198630844);
d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
a = safeAdd(a, olda);
b = safeAdd(b, oldb);
c = safeAdd(c, oldc);
d = safeAdd(d, oldd);
}
return [a, b, c, d];
}
/**
* Convert an array of little-endian words to a string
*
* @param {Array<number>} input MD5 Array
* @returns {string} MD5 string
*/
function binl2rstr(input) {
var i;
var output = '';
var length32 = input.length * 32;
for (i = 0; i < length32; i += 8) {
output += String.fromCharCode(input[i >> 5] >>> i % 32 & 0xff);
}
return output;
}
/**
* Convert a raw string to an array of little-endian words
* Characters >255 have their high-byte silently ignored.
*
* @param {string} input Raw input string
* @returns {Array<number>} Array of little-endian words
*/
function rstr2binl(input) {
var i;
var output = [];
output[(input.length >> 2) - 1] = undefined;
for (i = 0; i < output.length; i += 1) {
output[i] = 0;
}
var length8 = input.length * 8;
for (i = 0; i < length8; i += 8) {
output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32;
}
return output;
}
/**
* Calculate the MD5 of a raw string
*
* @param {string} s Input string
* @returns {string} Raw MD5 string
*/
function rstrMD5(s) {
return binl2rstr(binlMD5(rstr2binl(s), s.length * 8));
}
/**
* Calculates the HMAC-MD5 of a key and some data (raw strings)
*
* @param {string} key HMAC key
* @param {string} data Raw input string
* @returns {string} Raw MD5 string
*/
function rstrHMACMD5(key, data) {
var i;
var bkey = rstr2binl(key);
var ipad = [];
var opad = [];
var hash;
ipad[15] = opad[15] = undefined;
if (bkey.length > 16) {
bkey = binlMD5(bkey, key.length * 8);
}
for (i = 0; i < 16; i += 1) {
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5c5c5c5c;
}
hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));
}
/**
* Convert a raw string to a hex string
*
* @param {string} input Raw input string
* @returns {string} Hex encoded string
*/
function rstr2hex(input) {
var hexTab = '0123456789abcdef';
var output = '';
var x;
var i;
for (i = 0; i < input.length; i += 1) {
x = input.charCodeAt(i);
output += hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f);
}
return output;
}
/**
* Encode a string as UTF-8
*
* @param {string} input Input string
* @returns {string} UTF8 string
*/
function str2rstrUTF8(input) {
return unescape(encodeURIComponent(input));
}
/**
* Encodes input string as raw MD5 string
*
* @param {string} s Input string
* @returns {string} Raw MD5 string
*/
function rawMD5(s) {
return rstrMD5(str2rstrUTF8(s));
}
/**
* Encodes input string as Hex encoded string
*
* @param {string} s Input string
* @returns {string} Hex encoded string
*/
function hexMD5(s) {
return rstr2hex(rawMD5(s));
}
/**
* Calculates the raw HMAC-MD5 for the given key and data
*
* @param {string} k HMAC key
* @param {string} d Input string
* @returns {string} Raw MD5 string
*/
function rawHMACMD5(k, d) {
return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));
}
/**
* Calculates the Hex encoded HMAC-MD5 for the given key and data
*
* @param {string} k HMAC key
* @param {string} d Input string
* @returns {string} Raw MD5 string
*/
function hexHMACMD5(k, d) {
return rstr2hex(rawHMACMD5(k, d));
}
/**
* Calculates MD5 value for a given string.
* If a key is provided, calculates the HMAC-MD5 value.
* Returns a Hex encoded string unless the raw argument is given.
*
* @param {string} string Input string
* @param {string} [key] HMAC key
* @param {boolean} raw Raw oytput switch
* @returns {string} MD5 output
*/
function md5(string, key, raw) {
if (!key) {
if (!raw) {
return hexMD5(string);
}
return rawMD5(string);
}
if (!raw) {
return hexHMACMD5(key, string);
}
return rawHMACMD5(key, string);
}
if (module.exports) {
module.exports = md5;
} else {
$.md5 = md5;
}
})(commonjsGlobal);
});
function md5ForNode(node) {
if (null === node || 'object' !== _typeof(node)) return undefined;
if (node.src) {
return md5(node.src);
} else if (node.href) {
return md5(node.href);
} else if (node.innerText && '' !== node.innerText) {
// eslint-disable-line yoda
return md5(node.innerText);
} else {
return undefined;
}
}
var diagScriptId = 'fa-kits-diag';
var nodeUnderTestId = 'fa-kits-node-under-test';
var md5Attr = 'data-md5';
var detectionIgnoreAttr = 'data-fa-detection-ignore';
var timeoutAttr = 'data-fa-detection-timeout';
var resultsCollectionMaxWaitAttr = 'data-fa-detection-results-collection-max-wait';
var silenceErrors = function silenceErrors(e) {
e.preventDefault();
e.stopPropagation();
};
function pollUntil(_ref) {
var _ref$fn = _ref.fn,
fn = _ref$fn === void 0 ? function () {
return true;
} : _ref$fn,
_ref$initialDuration = _ref.initialDuration,
initialDuration = _ref$initialDuration === void 0 ? 1 : _ref$initialDuration,
_ref$maxDuration = _ref.maxDuration,
maxDuration = _ref$maxDuration === void 0 ? WINDOW.FontAwesomeDetection.timeout : _ref$maxDuration,
_ref$showProgress = _ref.showProgress,
showProgress = _ref$showProgress === void 0 ? false : _ref$showProgress,
progressIndicator = _ref.progressIndicator;
return new Promise(function (resolve, reject) {
// eslint-disable-line compat/compat
function poll(duration, cumulativeDuration) {
setTimeout(function () {
var result = fn();
if (showProgress) {
console.info(progressIndicator);
}
if (!!result) {
// eslint-disable-line no-extra-boolean-cast
resolve(result);
} else {
var nextDuration = 250;
var nextCumulativeDuration = nextDuration + cumulativeDuration;
if (nextCumulativeDuration <= maxDuration) {
poll(nextDuration, nextCumulativeDuration);
} else {
reject('timeout'); // eslint-disable-line prefer-promise-reject-errors
}
}
}, duration);
}
poll(initialDuration, 0);
});
}
function detectWebfontConflicts() {
var linkTags = Array.from(DOCUMENT.getElementsByTagName('link')).filter(function (t) {
return !t.hasAttribute(detectionIgnoreAttr);
});
var styleTags = Array.from(DOCUMENT.getElementsByTagName('style')).filter(function (t) {
if (t.hasAttribute(detectionIgnoreAttr)) {
return false;
} // If the browser has loaded the FA5 CSS, let's not test that <style> element.
// Its enough that we'll be testing for traces of the corresponding JS being loaded, and testing
// this <style> would only produce a false negative anyway.
if (WINDOW.FontAwesomeConfig && t.innerText.match(new RegExp("svg:not\\(:root\\)\\.".concat(WINDOW.FontAwesomeConfig.replacementClass)))) {
return false;
}
return true;
});
function runDiag(scriptOrLinkTag, md5) {
var diagFrame = DOCUMENT.createElement('iframe'); // Using "visibility: hidden; position: absolute" instead of "display: none;" because
// Firefox will not return the expected results for getComputedStyle if our iframe has display: none.
diagFrame.setAttribute('style', 'visibility: hidden; position: absolute; height: 0; width: 0;');
var testIconId = 'fa-test-icon-' + md5;
var iTag = DOCUMENT.createElement('i');
iTag.setAttribute('class', 'fa fa-coffee');
iTag.setAttribute('id', testIconId);
var diagScript = DOCUMENT.createElement('script');
diagScript.setAttribute('id', diagScriptId); // WARNING: this function will be toString()'d and assigned to innerText of the diag script
// element that we'll be putting into a diagnostic iframe.
// That means that this code won't compile until after the outer script has run and injected
// this code into the iframe. There are some compile time errors that might occur there.
// For example, using single line (double-slash) comments like this one inside that function
// will probably cause it to choke. Chrome will show an error like this:
// Uncaught SyntaxError: Unexpected end of input
var diagScriptFun = function diagScriptFun(nodeUnderTestId, testIconId, md5, parentOrigin) {
parent.FontAwesomeDetection.__pollUntil({
fn: function fn() {
var iEl = document.getElementById(testIconId);
var computedStyle = window.getComputedStyle(iEl);
var fontFamily = computedStyle.getPropertyValue('font-family');
if (!!fontFamily.match(/FontAwesome/) || !!fontFamily.match(/Font Awesome 5/)) {
return true;
} else {
return false;
}
}
}).then(function () {
var node = document.getElementById(nodeUnderTestId);
parent.postMessage({
type: 'fontawesome-conflict',
technology: 'webfont',
href: node.href,
innerText: node.innerText,
tagName: node.tagName,
md5: md5
}, parentOrigin);
}).catch(function (e) {
var node = document.getElementById(nodeUnderTestId);
if (e === 'timeout') {
parent.postMessage({
type: 'no-conflict',
technology: 'webfont',
href: node.src,
innerText: node.innerText,
tagName: node.tagName,
md5: md5
}, parentOrigin);
} else {
console.error(e);
}
});
};
var parentOrigin = WINDOW.location.origin === 'file://' ? '*' : WINDOW.location.origin;
diagScript.innerText = "(".concat(diagScriptFun.toString(), ")('").concat(nodeUnderTestId, "', '").concat(testIconId || 'foo', "', '").concat(md5, "', '").concat(parentOrigin, "');");
diagFrame.onload = function () {
diagFrame.contentWindow.addEventListener('error', silenceErrors, true);
diagFrame.contentDocument.head.appendChild(diagScript);
diagFrame.contentDocument.head.appendChild(scriptOrLinkTag);
diagFrame.contentDocument.body.appendChild(iTag);
};
domready(function () {
return DOCUMENT.body.appendChild(diagFrame);
});
}
var cssByMD5 = {};
for (var i = 0; i < linkTags.length; i++) {
var linkUnderTest = DOCUMENT.createElement('link');
linkUnderTest.setAttribute('id', nodeUnderTestId);
linkUnderTest.setAttribute('href', linkTags[i].href);
linkUnderTest.setAttribute('rel', linkTags[i].rel);
var md5ForLink = md5ForNode(linkTags[i]);
linkUnderTest.setAttribute(md5Attr, md5ForLink);
cssByMD5[md5ForLink] = linkTags[i];
runDiag(linkUnderTest, md5ForLink);
}
for (var _i = 0; _i < styleTags.length; _i++) {
var styleUnderTest = DOCUMENT.createElement('style');
styleUnderTest.setAttribute('id', nodeUnderTestId);
var md5ForStyle = md5ForNode(styleTags[_i]);
styleUnderTest.setAttribute(md5Attr, md5ForStyle);
styleUnderTest.innerText = styleTags[_i].innerText;
cssByMD5[md5ForStyle] = styleTags[_i];
runDiag(styleUnderTest, md5ForStyle);
}
return cssByMD5;
}
function detectSvgConflicts(currentScript) {
var scripts = Array.from(DOCUMENT.scripts).filter(function (t) {
return !t.hasAttribute(detectionIgnoreAttr) && t !== currentScript;
});
var scriptsByMD5 = {};
var _loop = function _loop(scriptIdx) {
var diagFrame = DOCUMENT.createElement('iframe');
diagFrame.setAttribute('style', 'display:none;');
var scriptUnderTest = DOCUMENT.createElement('script');
scriptUnderTest.setAttribute('id', nodeUnderTestId);
var md5ForScript = md5ForNode(scripts[scriptIdx]);
scriptUnderTest.setAttribute(md5Attr, md5ForScript);
scriptsByMD5[md5ForScript] = scripts[scriptIdx];
if (scripts[scriptIdx].src !== '') {
scriptUnderTest.src = scripts[scriptIdx].src;
}
if (scripts[scriptIdx].innerText !== '') {
scriptUnderTest.innerText = scripts[scriptIdx].innerText;
}
scriptUnderTest.async = true;
var diagScript = DOCUMENT.createElement('script');
diagScript.setAttribute('id', diagScriptId);
var parentOrigin = WINDOW.location.origin === 'file://' ? '*' : WINDOW.location.origin;
var diagScriptFun = function diagScriptFun(nodeUnderTestId, md5, parentOrigin) {
parent.FontAwesomeDetection.__pollUntil({
fn: function fn() {
return !!window.FontAwesomeConfig || !!window.FontAwesomeKitConfig;
}
}).then(function () {
var scriptNode = document.getElementById(nodeUnderTestId);
parent.postMessage({
type: 'fontawesome-conflict',
technology: 'js',
src: scriptNode.src,
innerText: scriptNode.innerText,
tagName: scriptNode.tagName,
md5: md5
}, parentOrigin);
}).catch(function (e) {
var scriptNode = document.getElementById(nodeUnderTestId);
if (e === 'timeout') {
parent.postMessage({
type: 'no-conflict',
src: scriptNode.src,
innerText: scriptNode.innerText,
tagName: scriptNode.tagName,
md5: md5
}, parentOrigin);
} else {
console.error(e);
}
});
};
diagScript.innerText = "(".concat(diagScriptFun.toString(), ")('").concat(nodeUnderTestId, "', '").concat(md5ForScript, "', '").concat(parentOrigin, "');");
diagFrame.onload = function () {
diagFrame.contentWindow.addEventListener('error', silenceErrors, true);
diagFrame.contentDocument.head.appendChild(diagScript);
diagFrame.contentDocument.head.appendChild(scriptUnderTest);
};
domready(function () {
return DOCUMENT.body.appendChild(diagFrame);
});
};
for (var scriptIdx = 0; scriptIdx < scripts.length; scriptIdx++) {
_loop(scriptIdx);
}
return scriptsByMD5;
}
function setDoneResults(_ref2) {
var nodesTested = _ref2.nodesTested,
nodesFound = _ref2.nodesFound;
WINDOW.FontAwesomeDetection = WINDOW.FontAwesomeDetection || {};
WINDOW.FontAwesomeDetection.nodesTested = nodesTested;
WINDOW.FontAwesomeDetection.nodesFound = nodesFound;
WINDOW.FontAwesomeDetection.detectionDone = true;
}
function conflictDetection() {
var report$$1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};
var nodesTested = {
conflict: {},
noConflict: {}
};
WINDOW.onmessage = function (e) {
if (WINDOW.location.origin === 'file://' || e.origin === WINDOW.location.origin) {
if (e && e.data) {
if (e.data.type === 'fontawesome-conflict') {
nodesTested.conflict[e.data.md5] = e.data;
} else if (e.data.type === 'no-conflict') {
nodesTested.noConflict[e.data.md5] = e.data;
}
}
}
};
var scriptsToTest = detectSvgConflicts(DOCUMENT.currentScript);
var cssToTest = detectWebfontConflicts();
var nodesFound = _objectSpread({}, scriptsToTest, cssToTest);
var testCount = Object.keys(scriptsToTest).length + Object.keys(cssToTest).length; // The resultsCollectionMaxWait allows for the time between when the tests running under
// child iframes call postMessage with their results, and when the parent window
// receives and handles those events with window.onmessage.
// Making it configurable allows us to test the scenario where this timeout is exceeded.
// Naming it something very different from "timeout" is to help avoid the potential ambiguity between
// these two timeout-related settings.
var masterTimeout = WINDOW.FontAwesomeDetection.timeout + WINDOW.FontAwesomeDetection.resultsCollectionMaxWait;
console.group('Font Awesome Detector');
if (testCount === 0) {
console.info('%cAll Good!', 'color: green; font-size: large');
console.info('We didn\'t find anything that needs testing for conflicts. Ergo, no conflicts.');
} else {
console.info("Testing ".concat(testCount, " possible conflicts."));
console.info("We'll wait about ".concat(Math.round(WINDOW.FontAwesomeDetection.timeout / 10) / 100, " seconds while testing these and\n") + "then up to another ".concat(Math.round(WINDOW.FontAwesomeDetection.resultsCollectionMaxWait / 10) / 100, " to allow the browser time\n") + "to accumulate the results. But we'll probably be outta here way before then.\n\n");
console.info("You can adjust those durations by assigning values to these attributes on the <script> element that loads this detection:");
console.info("\t%c".concat(timeoutAttr, "%c: milliseconds to wait for each test before deciding whether it's a conflict."), 'font-weight: bold;', 'font-size: normal;');
console.info("\t%c".concat(resultsCollectionMaxWaitAttr, "%c: milliseconds to wait for the browser to accumulate test results before giving up."), 'font-weight: bold;', 'font-size: normal;');
pollUntil({
// Give this overall timer a little extra cushion
maxDuration: masterTimeout,
showProgress: true,
progressIndicator: 'waiting...',
fn: function fn() {
return Object.keys(nodesTested.conflict).length + Object.keys(nodesTested.noConflict).length >= testCount;
}
}).then(function () {
console.info('DONE!');
setDoneResults({
nodesTested: nodesTested,
nodesFound: nodesFound
});
report$$1({
nodesTested: nodesTested,
nodesFound: nodesFound
});
console.groupEnd();
}).catch(function (e) {
if (e === 'timeout') {
console.info('TIME OUT! We waited until we got tired. Here\'s what we found:');
setDoneResults({
nodesTested: nodesTested,
nodesFound: nodesFound
});
report$$1({
nodesTested: nodesTested,
nodesFound: nodesFound
});
} else {
console.info('Whoops! We hit an error:', e);
console.info('Here\'s what we\'d found up until that error:');
setDoneResults({
nodesTested: nodesTested,
nodesFound: nodesFound
});
report$$1({
nodesTested: nodesTested,
nodesFound: nodesFound
});
}
console.groupEnd();
});
}
} // Allow clients to access, and in some cases, override some properties
var initialConfig = WINDOW.FontAwesomeDetection || {}; // These can be overridden
var _default = {
report: report,
timeout: +(DOCUMENT.currentScript.getAttribute(timeoutAttr) || "2000"),
resultsCollectionMaxWait: +(DOCUMENT.currentScript.getAttribute(resultsCollectionMaxWaitAttr) || "5000")
};
var _config = _objectSpread({}, _default, initialConfig, {
// These cannot be overridden
__pollUntil: pollUntil,
md5ForNode: md5ForNode,
detectionDone: false,
nodesTested: null,
nodesFound: null
});
WINDOW.FontAwesomeDetection = _config;
var PRODUCTION = function () {
try {
return process.env.NODE_ENV === 'production';
} catch (e) {
return false;
}
}();
function bunker(fn) {
try {
fn();
} catch (e) {
if (!PRODUCTION) {
throw e;
}
}
}
bunker(function () {
if (IS_BROWSER && IS_DOM) {
conflictDetection(window.FontAwesomeDetection.report);
}
});
exports.conflictDetection = conflictDetection;
Object.defineProperty(exports, '__esModule', { value: true });
})));

File diff suppressed because one or more lines are too long

1981
vendor/fontawesome-pro/js/duotone.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2539
vendor/fontawesome-pro/js/fontawesome.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1981
vendor/fontawesome-pro/js/light.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

1981
vendor/fontawesome-pro/js/regular.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

1981
vendor/fontawesome-pro/js/solid.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

68
vendor/fontawesome-pro/js/v4-shims.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,19 @@
// Animated Icons
// --------------------------
.@{fa-css-prefix}-spin {
animation: fa-spin 2s infinite linear;
}
.@{fa-css-prefix}-pulse {
animation: fa-spin 1s infinite steps(8);
}
@keyframes fa-spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}

View File

@ -0,0 +1,16 @@
// Bordered & Pulled
// -------------------------
.@{fa-css-prefix}-border {
border-radius: .1em;
border: solid .08em @fa-border-color;
padding: .2em .25em .15em;
}
.@{fa-css-prefix}-pull-left { float: left; }
.@{fa-css-prefix}-pull-right { float: right; }
.@{fa-css-prefix}, .fas, .far, .fal, .fab {
&.@{fa-css-prefix}-pull-left { margin-right: .3em; }
&.@{fa-css-prefix}-pull-right { margin-left: .3em; }
}

12
vendor/fontawesome-pro/less/_core.less vendored Normal file
View File

@ -0,0 +1,12 @@
// Base Class Definition
// -------------------------
.@{fa-css-prefix}, .fas, .far, .fal, .fad, .fab {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
}

View File

@ -0,0 +1,6 @@
// Fixed Width Icons
// -------------------------
.@{fa-css-prefix}-fw {
text-align: center;
width: (20em / 16);
}

2313
vendor/fontawesome-pro/less/_icons.less vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,27 @@
// Icon Sizes
// -------------------------
.larger(@factor) when (@factor > 0) {
.larger((@factor - 1));
.@{fa-css-prefix}-@{factor}x {
font-size: (@factor * 1em);
}
}
/* makes the font 33% larger relative to the icon container */
.@{fa-css-prefix}-lg {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -.0667em;
}
.@{fa-css-prefix}-xs {
font-size: .75em;
}
.@{fa-css-prefix}-sm {
font-size: .875em;
}
.larger(10);

18
vendor/fontawesome-pro/less/_list.less vendored Normal file
View File

@ -0,0 +1,18 @@
// List Icons
// -------------------------
.@{fa-css-prefix}-ul {
list-style-type: none;
margin-left: (@fa-li-width * 5/4);
padding-left: 0;
> li { position: relative; }
}
.@{fa-css-prefix}-li {
left: -@fa-li-width;
position: absolute;
text-align: center;
width: @fa-li-width;
line-height: inherit;
}

View File

@ -0,0 +1,56 @@
// Mixins
// --------------------------
.fa-icon() {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
font-weight: normal;
line-height: 1;
}
.fa-icon-rotate(@degrees, @rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})";
transform: rotate(@degrees);
}
.fa-icon-flip(@horiz, @vert, @rotation) {
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)";
transform: scale(@horiz, @vert);
}
// Only display content to screen readers. A la Bootstrap 4.
//
// See: http://a11yproject.com/posts/how-to-hide-content/
.sr-only() {
border: 0;
clip: rect(0,0,0,0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
// Use in conjunction with .sr-only to only display content when it's focused.
//
// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
//
// Credit: HTML5 Boilerplate
.sr-only-focusable() {
&:active,
&:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto;
}
}

View File

@ -0,0 +1,24 @@
// Rotated & Flipped Icons
// -------------------------
.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
.@{fa-css-prefix}-flip-both, .@{fa-css-prefix}-flip-horizontal.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(-1, -1, 2); }
// Hook for IE8-9
// -------------------------
:root {
.@{fa-css-prefix}-rotate-90,
.@{fa-css-prefix}-rotate-180,
.@{fa-css-prefix}-rotate-270,
.@{fa-css-prefix}-flip-horizontal,
.@{fa-css-prefix}-flip-vertical,
.@{fa-css-prefix}-flip-both {
filter: none;
}
}

View File

@ -0,0 +1,5 @@
// Screen Readers
// -------------------------
.sr-only { .sr-only(); }
.sr-only-focusable { .sr-only-focusable(); }

2066
vendor/fontawesome-pro/less/_shims.less vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,22 @@
// Stacked Icons
// -------------------------
.@{fa-css-prefix}-stack {
display: inline-block;
height: 2em;
line-height: 2em;
position: relative;
vertical-align: middle;
width: 2em;
}
.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
left: 0;
position: absolute;
text-align: center;
width: 100%;
}
.@{fa-css-prefix}-stack-1x { line-height: inherit; }
.@{fa-css-prefix}-stack-2x { font-size: 2em; }
.@{fa-css-prefix}-inverse { color: @fa-inverse; }

File diff suppressed because it is too large Load Diff

23
vendor/fontawesome-pro/less/brands.less vendored Normal file
View File

@ -0,0 +1,23 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: 400;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-brands-400.eot');
src: url('@{fa-font-path}/fa-brands-400.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-brands-400.woff2') format('woff2'),
url('@{fa-font-path}/fa-brands-400.woff') format('woff'),
url('@{fa-font-path}/fa-brands-400.ttf') format('truetype'),
url('@{fa-font-path}/fa-brands-400.svg#fontawesome') format('svg');
}
.fab {
font-family: 'Font Awesome 5 Brands';
font-weight: 400;
}

1918
vendor/fontawesome-pro/less/duotone.less vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,16 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import "_variables.less";
@import "_mixins.less";
@import "_core.less";
@import "_larger.less";
@import "_fixed-width.less";
@import "_list.less";
@import "_bordered-pulled.less";
@import "_animated.less";
@import "_rotated-flipped.less";
@import "_stacked.less";
@import "_icons.less";
@import "_screen-reader.less";

23
vendor/fontawesome-pro/less/light.less vendored Normal file
View File

@ -0,0 +1,23 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 300;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-light-300.eot');
src: url('@{fa-font-path}/fa-light-300.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-light-300.woff2') format('woff2'),
url('@{fa-font-path}/fa-light-300.woff') format('woff'),
url('@{fa-font-path}/fa-light-300.ttf') format('truetype'),
url('@{fa-font-path}/fa-light-300.svg#fontawesome') format('svg');
}
.fal {
font-family: 'Font Awesome 5 Pro';
font-weight: 300;
}

View File

@ -0,0 +1,23 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 400;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-regular-400.eot');
src: url('@{fa-font-path}/fa-regular-400.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-regular-400.woff2') format('woff2'),
url('@{fa-font-path}/fa-regular-400.woff') format('woff'),
url('@{fa-font-path}/fa-regular-400.ttf') format('truetype'),
url('@{fa-font-path}/fa-regular-400.svg#fontawesome') format('svg');
}
.far {
font-family: 'Font Awesome 5 Pro';
font-weight: 400;
}

24
vendor/fontawesome-pro/less/solid.less vendored Normal file
View File

@ -0,0 +1,24 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import "_variables.less";
@font-face {
font-family: 'Font Awesome 5 Pro';
font-style: normal;
font-weight: 900;
font-display: @fa-font-display;
src: url('@{fa-font-path}/fa-solid-900.eot');
src: url('@{fa-font-path}/fa-solid-900.eot?#iefix') format('embedded-opentype'),
url('@{fa-font-path}/fa-solid-900.woff2') format('woff2'),
url('@{fa-font-path}/fa-solid-900.woff') format('woff'),
url('@{fa-font-path}/fa-solid-900.ttf') format('truetype'),
url('@{fa-font-path}/fa-solid-900.svg#fontawesome') format('svg');
}
.fa,
.fas {
font-family: 'Font Awesome 5 Pro';
font-weight: 900;
}

View File

@ -0,0 +1,6 @@
/*!
* Font Awesome Pro 5.15.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license (Commercial License)
*/
@import '_variables.less';
@import '_shims.less';

File diff suppressed because it is too large Load Diff

41190
vendor/fontawesome-pro/metadata/icons.yml vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,298 @@
area-chart:
name: chart-area
arrow-circle-o-down:
name: arrow-alt-circle-down
prefix: far
arrow-circle-o-left:
name: arrow-alt-circle-left
prefix: far
arrow-circle-o-right:
name: arrow-alt-circle-right
prefix: far
arrow-circle-o-up:
name: arrow-alt-circle-up
prefix: far
arrows:
name: arrows-alt
arrows-alt:
name: expand-arrows-alt
arrows-h:
name: arrows-alt-h
arrows-v:
name: arrows-alt-v
bar-chart:
name: chart-bar
prefix: far
bitbucket-square:
name: bitbucket
prefix: fab
calendar:
name: calendar-alt
calendar-o:
name: calendar
prefix: far
caret-square-o-down:
name: caret-square-down
prefix: far
caret-square-o-left:
name: caret-square-left
prefix: far
caret-square-o-right:
name: caret-square-right
prefix: far
caret-square-o-up:
name: caret-square-up
prefix: far
cc:
name: closed-captioning
prefix: far
chain-broken:
name: unlink
circle-o-notch:
name: circle-notch
circle-thin:
name: circle
prefix: far
clipboard:
prefix: far
clone:
prefix: far
cloud-download:
name: cloud-download-alt
cloud-upload:
name: cloud-upload-alt
code-fork:
name: code-branch
comment-alt:
name: comment-dots
prefix: far
commenting:
name: comment-dots
compass:
prefix: far
compress:
name: compress-alt
copyright:
prefix: far
creative-commons:
prefix: fab
credit-card:
prefix: far
credit-card-alt:
name: credit-card
cutlery:
name: utensils
diamond:
name: gem
prefix: far
eercast:
name: sellcast
prefix: fab
eur:
name: euro-sign
exchange:
name: exchange-alt
expand:
name: expand-alt
external-link:
name: external-link-alt
external-link-square:
name: external-link-square-alt
eye:
prefix: far
eye-dropper:
name: eye-dropper
prefix: far
eye-slash:
prefix: far
eyedropper:
name: eye-dropper
facebook:
name: facebook-f
prefix: fab
facebook-official:
name: facebook
prefix: fab
file-text:
name: file-alt
files-o:
name: copy
prefix: far
floppy-o:
name: save
prefix: far
gbp:
name: pound-sign
glass:
name: glass-martini
google-plus:
name: google-plus-g
prefix: fab
google-plus-circle:
name: google-plus
prefix: fab
google-plus-official:
name: google-plus
prefix: fab
hand-o-down:
name: hand-point-down
prefix: far
hand-o-left:
name: hand-point-left
prefix: far
hand-o-right:
name: hand-point-right
prefix: far
hand-o-up:
name: hand-point-up
prefix: far
header:
name: heading
id-badge:
prefix: far
ils:
name: shekel-sign
inr:
name: rupee-sign
intersex:
name: transgender
jpy:
name: yen-sign
krw:
name: won-sign
level-down:
name: level-down-alt
level-up:
name: level-up-alt
life-ring:
prefix: far
line-chart:
name: chart-line
linkedin:
name: linkedin-in
prefix: fab
linkedin-square:
name: linkedin
prefix: fab
list-alt:
prefix: far
long-arrow-down:
name: long-arrow-alt-down
long-arrow-left:
name: long-arrow-alt-left
long-arrow-right:
name: long-arrow-alt-right
long-arrow-up:
name: long-arrow-alt-up
map-marker:
name: map-marker-alt
meanpath:
name: font-awesome
prefix: fab
mobile:
name: mobile-alt
money:
name: money-bill-alt
prefix: far
object-group:
prefix: far
object-ungroup:
prefix: far
paste:
prefix: far
pencil:
name: pencil-alt
pencil-square:
name: pen-square
pencil-square-o:
name: edit
prefix: far
picture:
name: image
pie-chart:
name: chart-pie
refresh:
name: sync
registered:
prefix: far
repeat:
name: redo
rub:
name: ruble-sign
scissors:
name: cut
shield:
name: shield-alt
sign-in:
name: sign-in-alt
sign-out:
name: sign-out-alt
sliders:
name: sliders-h
sort-alpha-asc:
name: sort-alpha-down
sort-alpha-desc:
name: sort-alpha-down-alt
sort-amount-asc:
name: sort-amount-down
sort-amount-desc:
name: sort-amount-down-alt
sort-asc:
name: sort-up
sort-desc:
name: sort-down
sort-numeric-asc:
name: sort-numeric-down
sort-numeric-desc:
name: sort-numeric-down-alt
spoon:
name: utensil-spoon
star-half-empty:
name: star-half
star-half-full:
name: star-half
support:
name: life-ring
prefix: far
tablet:
name: tablet-alt
tachometer:
name: tachometer-alt
television:
name: tv
thumb-tack:
name: thumbtack
thumbs-o-down:
name: thumbs-down
prefix: far
thumbs-o-up:
name: thumbs-up
prefix: far
ticket:
name: ticket-alt
trash:
name: trash-alt
trash-o:
name: trash-alt
prefix: far
try:
name: lira-sign
usd:
name: dollar-sign
video-camera:
name: video
vimeo:
name: vimeo-v
prefix: fab
volume-control-phone:
name: phone-volume
wheelchair-alt:
name: accessible-icon
prefix: fab
window-maximize:
prefix: far
window-restore:
prefix: far
youtube-play:
name: youtube
prefix: fab

View File

@ -0,0 +1,852 @@
accusoft:
icons:
- accusoft
label: Accusoft
url: 'https://www.accusoft.com'
administrator-technology:
icons:
- stream
label: Administrator Technology
url: 'https://administrator.de'
adversal:
icons:
- adversal
label: Adversal
url: 'https://www.adversal.com'
affiliatetheme:
icons:
- affiliatetheme
label: affiliatetheme
url: 'https://affiliatetheme.io/en'
algolia:
icons:
- algolia
label: Algolia
url: 'http://www.algolia.com'
amazon-web-services:
icons:
- aws
label: Amazon Web Services
url: 'https://aws.amazon.com'
amilia:
icons:
- amilia
label: Amilia
url: 'http://www.amilia.com'
angry-creative:
icons:
- angrycreative
label: Angry Creative
url: 'https://angrycreative.se'
app-signal:
icons:
- stroopwafel
label: AppSignal
url: 'https://appsignal.com'
apper-systems-ab:
icons:
- apper
label: Apper Systems AB
url: 'http://www.apper.com'
'asymmetrik,ltd':
icons:
- asymmetrik
label: 'Asymmetrik, Ltd.'
url: 'http://asymmetrik.com'
ausmed-education:
icons:
- user-nurse
label: Ausmed Education
url: 'https://www.ausmed.com.au'
avianex:
icons:
- avianex
label: avianex
url: 'https://www.avianex.de'
bi-mobject:
icons:
- bimobject
label: BIMobject
url: 'http://bimobject.com'
bity:
icons:
- bity
label: Bity
url: 'http://bity.com'
blackpulp-designs:
icons:
- pray
label: Blackpulp Designs
url: 'https://www.blackpulp.com'
blissbook:
icons:
- pen-fancy
label: Blissbook
url: 'https://blissbook.com'
büromöbel-experte-gmb-h &co-kg:
icons:
- buromobelexperte
label: Büromöbel-Experte GmbH & Co. KG.
url: 'https://www.bueromoebel-experte.de'
c-panel:
icons:
- cpanel
label: cPanel
url: 'http://cpanel.com'
centercode:
icons:
- centercode
label: Centercode
url: 'https://www.centercode.com'
cibltd:
icons:
- drum-steelpan
label: Comprehensive Insurance Brokers Limited
url: 'http://www.cibltd.com'
clear-blue-technologies:
icons:
- solar-panel
label: Clear Blue Technologies
url: 'http://www.clearbluetechnologies.com'
cloudflare:
icons:
- cloudflare
label: Cloudflare
url: 'https://www.cloudflare.com'
cloudscale-ch:
icons:
- cloudscale
label: cloudscale.ch
url: 'https://www.cloudscale.ch'
cloudsmith:
icons:
- cloudsmith
label: Cloudsmith
url: 'https://cloudsmith.io'
cloudversify:
icons:
- cloudversify
label: cloudversify
url: 'https://www.cloudversify.com'
cuttlefish:
icons:
- cuttlefish
label: Cuttlefish
url: 'http://wearecuttlefish.com'
cymedica:
icons:
- wave-square
label: CyMedica
url: 'https://www.cymedicaortho.com'
darren-wiebe:
icons:
- church
label: Darren Wiebe
deploy-dog:
icons:
- deploydog
label: deploy.dog
url: 'http://deploy.dog'
deskpro:
icons:
- deskpro
label: Deskpro
url: 'http://www.deskpro.com'
discourse:
icons:
- discourse
label: Discourse
url: 'https://discourse.org'
doc-hub:
icons:
- dochub
label: DocHub
url: 'https://dochub.com'
draft2-digital:
icons:
- draft2digital
label: Draft2Digital
url: 'http://draft2digital.com'
dyalog-apl:
icons:
- dyalog
label: Dyalog APL
url: 'http://www.dyalog.com'
econopublish:
icons:
- hat-cowboy-side
label: EconoPublish
url: 'https://www.econopublish.com'
firstdraft:
icons:
- firstdraft
label: firstdraft
url: 'http://www.firstdraft.com'
fleetplan:
icons:
- helicopter
label: FLEETPLAN
url: 'https://www.fleetplan.net'
getaroom:
icons:
- archway
- dumbbell
- hotel
- map-marked
- map-marked-alt
- monument
- spa
- swimmer
- swimming-pool
label: getaroom
url: 'https://www.getaroom.com'
git-kraken:
icons:
- gitkraken
label: GitKraken
url: 'https://www.gitkraken.com'
gofore:
icons:
- gofore
label: Gofore
url: 'http://gofore.com'
'gripfire,inc':
icons:
- gripfire
label: 'Gripfire, Inc.'
url: 'http://gripfire.io'
guilded:
icons:
- guilded
label: Guilded
url: 'https://www.guilded.gg'
harvard-medical-school:
icons:
- allergies
- ambulance
- band-aid
- briefcase-medical
- burn
- capsules
- diagnoses
- dna
- file-medical
- file-medical-alt
- first-aid
- heart
- heartbeat
- hospital
- hospital-alt
- hospital-symbol
- id-card-alt
- notes-medical
- pills
- plus
- prescription-bottle
- prescription-bottle-alt
- procedures
- smoking
- stethoscope
- syringe
- tablets
- thermometer
- user-md
- vial
- vials
- weight
- x-ray
label: Harvard Medical School
url: 'https://hms.harvard.edu'
hips:
icons:
- hips
label: Hips
url: 'https://hips.com'
hire-a-helper:
icons:
- archive
- blanket
- box-alt
- box-fragile
- box-full
- box-open
- box-up
- boxes-alt
- container-storage
- couch
- dolly
- dolly-empty
- fragile
- lamp
- loveseat
- people-carry
- person-carry
- person-dolly
- person-dolly-empty
- ramp-loading
- route
- sign
- suitcase
- tape
- truck-container
- truck-couch
- truck-loading
- truck-moving
- truck-ramp
- wine-glass
label: HireAHelper
url: 'https://www.hireahelper.com'
hive:
icons:
- hive
label: Hive Blockchain Network
url: 'https://hive.io'
hornbill:
icons:
- hornbill
label: Hornbill
url: 'https://www.hornbill.com'
hotjar:
icons:
- hotjar
label: Hotjar
url: 'https://www.hotjar.com'
hub-spot:
icons:
- hubspot
label: HubSpot
url: 'http://www.HubSpot.com'
in-site-systems:
icons:
- toolbox
label: InSite Systems
url: 'https://www.insitesystems.com'
innosoft:
icons:
- innosoft
label: Innosoft
url: 'https://innosoft.com.sa'
inspira-bvba:
icons:
- chess-knight
label: Inspira bvba
url: 'https://www.inspira.be'
instalod:
icons:
- instalod
label: InstaLOD
url: 'https://instalod.com'
joe-emison:
icons:
- blender-phone
label: Joe Emison
joget:
icons:
- joget
label: Joget
url: 'http://www.joget.org'
jon-galloway:
icons:
- crow
label: Jon Galloway
kevin-barone:
icons:
- file-contract
label: Kevin Barone
key-cdn:
icons:
- keycdn
label: KeyCDN
url: 'https://www.keycdn.com'
korvue:
icons:
- korvue
label: Korvue
url: 'https://korvue.com'
max-elman:
icons:
- frog
label: Max Elman
med-apps:
icons:
- medapps
label: MedApps
url: 'http://medapps.com.au'
medapps:
icons:
- book-medical
- book-user
- books-medical
- clinic-medical
- clipboard-user
- comment-alt-medical
- comment-medical
- crutch
- crutches
- disease
- files-medical
- head-side-brain
- head-side-medical
- hospital-user
- hospitals
- laptop-medical
- pager
- stretcher
- user-md-chat
- users-medical
- walker
label: MedApps
url: 'https://medapps.com.au'
megaport:
icons:
- megaport
label: Megaport
url: 'https://www.megaport.com'
mix:
icons:
- mix
label: Mix
url: 'http://mix.com'
mizuni:
icons:
- mizuni
label: Mizuni
url: 'http://www.mizuni.com'
mrt:
icons:
- medrt
label: MRT
url: 'https://medrt.co.jp'
mylogin-info:
icons:
- user-shield
label: mylogin.info
url: 'https://www.mylogin.info'
napster:
icons:
- napster
label: Napster
url: 'http://www.napster.com'
nimblr:
icons:
- nimblr
label: Nimblr
url: 'https://nimblr.ai'
nompse:
icons:
- chalkboard
- chalkboard-teacher
label: Nomp.se
url: 'https://nomp.se'
ns8:
icons:
- ns8
label: NS8
url: 'https://www.ns8.com'
nutritionix:
icons:
- nutritionix
label: Nutritionix
url: 'http://www.nutritionix.com'
octopus-deploy:
icons:
- octopus-deploy
label: Octopus Deploy
url: 'https://octopus.com'
page4-corporation:
icons:
- page4
label: page4 Corporation
url: 'https://en.page4.com'
pal-fed:
icons:
- palfed
label: PalFed
url: 'https://www.palfed.com'
patch-patrol:
icons:
- vest
- vest-patches
label: Patch Patrol
url: 'https://patchpatrol.com'
pcsg:
icons:
- horse-head
label: PCSG
url: 'https://www.pcsg.de'
perbyte:
icons:
- perbyte
label: PerByte
url: 'https://www.perbyte.com'
phabricator:
icons:
- phabricator
label: Phabricator
url: 'http://phacility.com'
promo-wizard:
icons:
- hat-wizard
label: Promo Wizard
url: 'https://promowizard.co.uk'
pulse-eight:
icons:
- volume-mute
label: Pulse-Eight
url: 'https://pulse-eight.com'
purely-interactive:
icons:
- kiwi-bird
label: Purely Interactive
url: 'https://www.purelyinteractive.ca'
pushed:
icons:
- pushed
label: Pushed
url: 'https://pushed.co'
quin-scape:
icons:
- quinscape
label: QuinScape
url: 'https://www.quinscape.de'
reacteurope:
icons:
- reacteurope
label: ReactEurope
url: 'https://www.react-europe.org'
readme-io:
icons:
- readme
label: Readme.io
url: 'http://readme.io'
red-river:
icons:
- red-river
label: red river
url: 'https://river.red'
replyd:
icons:
- replyd
label: replyd
resolving:
icons:
- resolving
label: Resolving
url: 'https://resolving.com'
rev-io:
icons:
- rev
label: Rev.io
url: 'https://rev.io'
rock-rms:
icons:
- rockrms
label: Rock RMS
url: 'http://rockrms.com'
rocket-chat:
icons:
- comment
- comment-alt
- comment-alt-check
- comment-alt-dots
- comment-alt-edit
- comment-alt-exclamation
- comment-alt-lines
- comment-alt-minus
- comment-alt-plus
- comment-alt-slash
- comment-alt-smile
- comment-alt-times
- comment-check
- comment-dots
- comment-edit
- comment-exclamation
- comment-lines
- comment-minus
- comment-plus
- comment-slash
- comment-smile
- comment-times
- comments
- comments-alt
- frown
- meh
- phone
- phone-plus
- phone-slash
- poo
- quote-left
- quote-right
- rocketchat
- smile
- smile-plus
- video
- video-plus
- video-slash
label: Rocket.Chat
url: 'https://rocket.chat'
rodney-oliver:
icons:
- folder-minus
- folder-plus
label: Rodney Oliver
schlix:
icons:
- schlix
label: SCHLIX
url: 'http://schlix.com'
search-eng-in:
icons:
- searchengin
label: SearchEng.in
url: 'http://searcheng.in'
service-stack:
icons:
- servicestack
label: ServiceStack
url: 'https://servicestack.net'
shawn-storie:
icons:
- teeth
- teeth-open
label: Shawn Storie
shopware:
icons:
- shopware
label: Shopware
url: 'https://shopware.de'
shp:
icons:
- school
label: SHP
url: 'http://shp.com'
silicon-barn-inc:
icons:
- project-diagram
label: Silicon Barn Inc
url: 'https://siliconbarn.com'
sistrix:
icons:
- sistrix
label: SISTRIX
url: 'https://www.sistrix.de'
smup:
icons:
- shoe-prints
label: Smup
url: 'https://www.atomsoftware.com.au'
speakap:
icons:
- speakap
label: Speakap
url: 'https://speakap.com'
stay-linked:
icons:
- barcode-alt
- barcode-read
- barcode-scan
- box
- box-check
- boxes
- clipboard-check
- clipboard-list
- conveyor-belt
- conveyor-belt-alt
- dolly
- dolly-empty
- dolly-flatbed
- dolly-flatbed-alt
- dolly-flatbed-empty
- forklift
- hand-holding-box
- hand-receiving
- inventory
- pallet
- pallet-alt
- scanner
- scanner-keyboard
- scanner-touchscreen
- shipping-fast
- shipping-timed
- tablet-rugged
- truck
- warehouse
- warehouse-alt
label: StayLinked
url: 'https://www.staylinked.com'
sticker-mule:
icons:
- sticker-mule
label: Sticker Mule
url: 'https://stickermule.com'
studio-vinari:
icons:
- studiovinari
label: Studio Vinari
url: 'https://studiovinari.com'
supple:
icons:
- ad
- analytics
- badge-check
- badge-dollar
- badge-percent
- bullhorn
- bullseye
- bullseye-arrow
- bullseye-pointer
- comment-alt-dollar
- comment-dollar
- comments-alt-dollar
- comments-dollar
- envelope-open-dollar
- envelope-open-text
- funnel-dollar
- gift-card
- lightbulb-dollar
- lightbulb-exclamation
- lightbulb-on
- lightbulb-slash
- mail-bulk
- megaphone
- poll
- poll-h
- search-dollar
- search-location
- supple
- user-crown
- users-crown
label: Supple
url: 'https://supple.com.au'
the-red-yeti:
icons:
- the-red-yeti
label: The Red Yeti
url: 'http://theredyeti.com'
the-us-sunnah-foundation:
icons:
- book-heart
- box-heart
- box-usd
- dollar-sign
- donate
- dove
- gift
- globe
- hand-heart
- hand-holding-heart
- hand-holding-seedling
- hand-holding-usd
- hand-holding-water
- hands-heart
- hands-helping
- hands-usd
- handshake
- handshake-alt
- heart
- heart-circle
- heart-square
- home-heart
- leaf
- leaf-heart
- parachute-box
- piggy-bank
- ribbon
- seedling
- usd-circle
- usd-square
label: The us-Sunnah Foundation
url: 'https://www.ussunnah.org'
themeco:
icons:
- themeco
label: Themeco
url: 'https://theme.co'
think-peaks:
icons:
- think-peaks
label: Think Peaks
url: 'https://thinkpeaks.com/'
typo3:
icons:
- typo3
label: Typo3
url: 'https://typo3.org'
uncharted:
icons:
- uncharted
label: Uncharted Software
url: 'https://uncharted.software'
uniregistry:
icons:
- uniregistry
label: Uniregistry
url: 'https://uniregistry.com'
us-sunnah-foundation:
icons:
- ussunnah
label: us-Sunnah Foundation
url: 'https://www.ussunnah.org'
vaadin:
icons:
- vaadin
label: Vaadin
url: 'http://vaadin.com'
via:
icons:
- car-crash
- draw-circle
- draw-polygon
- draw-square
- house-damage
- layer-group
- layer-minus
- layer-plus
- skull-crossbones
- user-injured
label: VIA Traffic Software Solutions
url: 'https://www.via.software'
victor-costan:
icons:
- otter
label: Staphany Park and Victor Costan
vnv:
icons:
- vnv
label: VNV
url: 'https://www.vnv.ch'
watchman-monitoring:
icons:
- watchman-monitoring
label: Watchman Monitoring
url: 'https://www.watchmanmonitoring.com'
weedable:
icons:
- bong
- cannabis
- hippo
- joint
- mortar-pestle
- prescription
label: Weedable
url: 'https://www.weedable.com'
whmcs:
icons:
- whmcs
label: WHMCS
url: 'https://www.whmcs.com'
wodu:
icons:
- wodu
label: Wodu Media
url: 'https://www.wodu.com'
workrails:
icons:
- briefcase
label: WorkRails
url: 'https://www.workrails.com'
wpressr:
icons:
- wpressr
label: wpressr
url: 'https://wpressr.com'

58
vendor/fontawesome-pro/package.json vendored Normal file
View File

@ -0,0 +1,58 @@
{
"description": "The iconic font, CSS, and SVG framework",
"keywords": [
"font",
"awesome",
"fontawesome",
"icon",
"svg",
"bootstrap"
],
"homepage": "https://fontawesome.com",
"bugs": {
"url": "http://github.com/FortAwesome/Font-Awesome/issues"
},
"author": {
"name": "Dave Gandy",
"email": "dave@fontawesome.com",
"web": "http://twitter.com/davegandy"
},
"contributors": [
{
"name": "Brian Talbot",
"web": "http://twitter.com/talbs"
},
{
"name": "Travis Chase",
"web": "http://twitter.com/supercodepoet"
},
{
"name": "Rob Madole",
"web": "http://twitter.com/robmadole"
},
{
"name": "Geremia Taglialatela",
"web": "http://twitter.com/gtagliala"
},
{
"name": "Mike Wilkerson",
"web": "http://twitter.com/mw77"
}
],
"repository": {
"type": "git",
"url": "https://github.com/FortAwesome/Font-Awesome"
},
"engines": {
"node": ">=6"
},
"dependencies": {},
"version": "5.15.1",
"name": "@fortawesome/fontawesome-pro",
"main": "js/fontawesome.js",
"style": "css/fontawesome.css",
"license": "UNLICENSED",
"scripts": {
"postinstall": "node attribution.js"
}
}

View File

@ -0,0 +1,20 @@
// Animated Icons
// --------------------------
.#{$fa-css-prefix}-spin {
animation: fa-spin 2s infinite linear;
}
.#{$fa-css-prefix}-pulse {
animation: fa-spin 1s infinite steps(8);
}
@keyframes fa-spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}

View File

@ -0,0 +1,20 @@
// Bordered & Pulled
// -------------------------
.#{$fa-css-prefix}-border {
border: solid .08em $fa-border-color;
border-radius: .1em;
padding: .2em .25em .15em;
}
.#{$fa-css-prefix}-pull-left { float: left; }
.#{$fa-css-prefix}-pull-right { float: right; }
.#{$fa-css-prefix},
.fas,
.far,
.fal,
.fab {
&.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
&.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
}

21
vendor/fontawesome-pro/scss/_core.scss vendored Normal file
View File

@ -0,0 +1,21 @@
// Base Class Definition
// -------------------------
.#{$fa-css-prefix},
.fas,
.far,
.fal,
.fad,
.fab {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
}
%fa-icon {
@include fa-icon;
}

View File

@ -0,0 +1,6 @@
// Fixed Width Icons
// -------------------------
.#{$fa-css-prefix}-fw {
text-align: center;
width: $fa-fw-width;
}

Some files were not shown because too many files have changed in this diff Show More